style: fix lint formatting
This commit is contained in:
@@ -66,7 +66,14 @@ describe("createClawdbotCodingTools", () => {
|
||||
|
||||
it("preserves action enums in normalized schemas", () => {
|
||||
const tools = createClawdbotCodingTools();
|
||||
const toolNames = ["browser", "canvas", "nodes", "cron", "gateway", "message"];
|
||||
const toolNames = [
|
||||
"browser",
|
||||
"canvas",
|
||||
"nodes",
|
||||
"cron",
|
||||
"gateway",
|
||||
"message",
|
||||
];
|
||||
|
||||
const collectActionValues = (
|
||||
schema: unknown,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Type } from "@sinclair/typebox";
|
||||
|
||||
import {
|
||||
sendMessage,
|
||||
sendPoll,
|
||||
type MessagePollResult,
|
||||
type MessageSendResult,
|
||||
sendMessage,
|
||||
sendPoll,
|
||||
} from "../../infra/outbound/message.js";
|
||||
import type { AnyAgentTool } from "./common.js";
|
||||
import {
|
||||
@@ -64,7 +64,9 @@ export function createMessageTool(): AnyAgentTool {
|
||||
const gifPlayback =
|
||||
typeof params.gifPlayback === "boolean" ? params.gifPlayback : false;
|
||||
const bestEffort =
|
||||
typeof params.bestEffort === "boolean" ? params.bestEffort : undefined;
|
||||
typeof params.bestEffort === "boolean"
|
||||
? params.bestEffort
|
||||
: undefined;
|
||||
|
||||
const result: MessageSendResult = await sendMessage({
|
||||
to,
|
||||
@@ -82,7 +84,9 @@ export function createMessageTool(): AnyAgentTool {
|
||||
|
||||
if (action === "poll") {
|
||||
const to = readStringParam(params, "to", { required: true });
|
||||
const question = readStringParam(params, "question", { required: true });
|
||||
const question = readStringParam(params, "question", {
|
||||
required: true,
|
||||
});
|
||||
const options =
|
||||
readStringArrayParam(params, "options", { required: true }) ?? [];
|
||||
const maxSelections = readNumberParam(params, "maxSelections", {
|
||||
|
||||
@@ -138,7 +138,9 @@ describe("gateway-cli coverage", () => {
|
||||
program.exitOverride();
|
||||
registerGatewayCli(program);
|
||||
|
||||
await program.parseAsync(["gateway", "discover", "--json"], { from: "user" });
|
||||
await program.parseAsync(["gateway", "discover", "--json"], {
|
||||
from: "user",
|
||||
});
|
||||
|
||||
expect(discoverGatewayBeacons).toHaveBeenCalledTimes(1);
|
||||
expect(runtimeLogs.join("\n")).toContain('"beacons"');
|
||||
|
||||
@@ -48,9 +48,12 @@ describe("cli program", () => {
|
||||
|
||||
it("runs message send with required options", async () => {
|
||||
const program = buildProgram();
|
||||
await program.parseAsync(["message", "send", "--to", "+1", "--message", "hi"], {
|
||||
from: "user",
|
||||
});
|
||||
await program.parseAsync(
|
||||
["message", "send", "--to", "+1", "--message", "hi"],
|
||||
{
|
||||
from: "user",
|
||||
},
|
||||
);
|
||||
expect(messageSendCommand).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import {
|
||||
import { configureCommand } from "../commands/configure.js";
|
||||
import { doctorCommand } from "../commands/doctor.js";
|
||||
import { healthCommand } from "../commands/health.js";
|
||||
import { onboardCommand } from "../commands/onboard.js";
|
||||
import { messagePollCommand, messageSendCommand } from "../commands/message.js";
|
||||
import { onboardCommand } from "../commands/onboard.js";
|
||||
import { sessionsCommand } from "../commands/sessions.js";
|
||||
import { setupCommand } from "../commands/setup.js";
|
||||
import { statusCommand } from "../commands/status.js";
|
||||
|
||||
@@ -9,10 +9,10 @@ import {
|
||||
formatOutboundDeliverySummary,
|
||||
} from "../infra/outbound/format.js";
|
||||
import {
|
||||
sendMessage,
|
||||
sendPoll,
|
||||
type MessagePollResult,
|
||||
type MessageSendResult,
|
||||
sendMessage,
|
||||
sendPoll,
|
||||
} from "../infra/outbound/message.js";
|
||||
import type { RuntimeEnv } from "../runtime.js";
|
||||
import { normalizeMessageProvider } from "../utils/message-provider.js";
|
||||
@@ -49,7 +49,11 @@ function parseIntOption(value: unknown, label: string): number | undefined {
|
||||
return parsed;
|
||||
}
|
||||
|
||||
function logSendDryRun(opts: MessageSendOpts, provider: string, runtime: RuntimeEnv) {
|
||||
function logSendDryRun(
|
||||
opts: MessageSendOpts,
|
||||
provider: string,
|
||||
runtime: RuntimeEnv,
|
||||
) {
|
||||
runtime.log(
|
||||
`[dry-run] would send via ${provider} -> ${opts.to}: ${opts.message}${
|
||||
opts.media ? ` (media ${opts.media})` : ""
|
||||
@@ -57,10 +61,7 @@ function logSendDryRun(opts: MessageSendOpts, provider: string, runtime: Runtime
|
||||
);
|
||||
}
|
||||
|
||||
function logPollDryRun(
|
||||
result: MessagePollResult,
|
||||
runtime: RuntimeEnv,
|
||||
) {
|
||||
function logPollDryRun(result: MessagePollResult, runtime: RuntimeEnv) {
|
||||
runtime.log(
|
||||
`[dry-run] would send poll via ${result.provider} -> ${result.to}:\n Question: ${result.question}\n Options: ${result.options.join(
|
||||
", ",
|
||||
|
||||
@@ -1,23 +1,70 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
|
||||
import type { runCommandWithTimeout } from "../process/exec.js";
|
||||
import { WIDE_AREA_DISCOVERY_DOMAIN } from "./widearea-dns.js";
|
||||
import { discoverGatewayBeacons } from "./bonjour-discovery.js";
|
||||
import { WIDE_AREA_DISCOVERY_DOMAIN } from "./widearea-dns.js";
|
||||
|
||||
describe("bonjour-discovery", () => {
|
||||
it("discovers beacons on darwin across local + wide-area domains", async () => {
|
||||
const calls: Array<{ argv: string[]; timeoutMs: number }> = [];
|
||||
|
||||
const run = vi.fn(async (argv: string[], options: { timeoutMs: number }) => {
|
||||
calls.push({ argv, timeoutMs: options.timeoutMs });
|
||||
const domain = argv[3] ?? "";
|
||||
const run = vi.fn(
|
||||
async (argv: string[], options: { timeoutMs: number }) => {
|
||||
calls.push({ argv, timeoutMs: options.timeoutMs });
|
||||
const domain = argv[3] ?? "";
|
||||
|
||||
if (argv[0] === "dns-sd" && argv[1] === "-B") {
|
||||
if (domain === "local.") {
|
||||
return {
|
||||
stdout: [
|
||||
"Add 2 3 local. _clawdbot-bridge._tcp. Studio Bridge",
|
||||
"Add 2 3 local. _clawdbot-bridge._tcp. Laptop Bridge",
|
||||
"",
|
||||
].join("\n"),
|
||||
stderr: "",
|
||||
code: 0,
|
||||
signal: null,
|
||||
killed: false,
|
||||
};
|
||||
}
|
||||
if (domain === WIDE_AREA_DISCOVERY_DOMAIN) {
|
||||
return {
|
||||
stdout: [
|
||||
`Add 2 3 ${WIDE_AREA_DISCOVERY_DOMAIN} _clawdbot-bridge._tcp. Tailnet Bridge`,
|
||||
"",
|
||||
].join("\n"),
|
||||
stderr: "",
|
||||
code: 0,
|
||||
signal: null,
|
||||
killed: false,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (argv[0] === "dns-sd" && argv[1] === "-L") {
|
||||
const instance = argv[2] ?? "";
|
||||
const host =
|
||||
instance === "Studio Bridge"
|
||||
? "studio.local"
|
||||
: instance === "Laptop Bridge"
|
||||
? "laptop.local"
|
||||
: "tailnet.local";
|
||||
const tailnetDns =
|
||||
instance === "Tailnet Bridge" ? "studio.tailnet.ts.net" : "";
|
||||
const txtParts = [
|
||||
"txtvers=1",
|
||||
`displayName=${instance.replace(" Bridge", "")}`,
|
||||
`lanHost=${host}`,
|
||||
"gatewayPort=18789",
|
||||
"bridgePort=18790",
|
||||
"sshPort=22",
|
||||
tailnetDns ? `tailnetDns=${tailnetDns}` : null,
|
||||
].filter((v): v is string => Boolean(v));
|
||||
|
||||
if (argv[0] === "dns-sd" && argv[1] === "-B") {
|
||||
if (domain === "local.") {
|
||||
return {
|
||||
stdout: [
|
||||
"Add 2 3 local. _clawdbot-bridge._tcp. Studio Bridge",
|
||||
"Add 2 3 local. _clawdbot-bridge._tcp. Laptop Bridge",
|
||||
`${instance}._clawdbot-bridge._tcp. can be reached at ${host}:18790`,
|
||||
txtParts.join(" "),
|
||||
"",
|
||||
].join("\n"),
|
||||
stderr: "",
|
||||
@@ -26,55 +73,10 @@ describe("bonjour-discovery", () => {
|
||||
killed: false,
|
||||
};
|
||||
}
|
||||
if (domain === WIDE_AREA_DISCOVERY_DOMAIN) {
|
||||
return {
|
||||
stdout: [
|
||||
`Add 2 3 ${WIDE_AREA_DISCOVERY_DOMAIN} _clawdbot-bridge._tcp. Tailnet Bridge`,
|
||||
"",
|
||||
].join("\n"),
|
||||
stderr: "",
|
||||
code: 0,
|
||||
signal: null,
|
||||
killed: false,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (argv[0] === "dns-sd" && argv[1] === "-L") {
|
||||
const instance = argv[2] ?? "";
|
||||
const host =
|
||||
instance === "Studio Bridge"
|
||||
? "studio.local"
|
||||
: instance === "Laptop Bridge"
|
||||
? "laptop.local"
|
||||
: "tailnet.local";
|
||||
const tailnetDns =
|
||||
instance === "Tailnet Bridge" ? "studio.tailnet.ts.net" : "";
|
||||
const txtParts = [
|
||||
"txtvers=1",
|
||||
`displayName=${instance.replace(" Bridge", "")}`,
|
||||
`lanHost=${host}`,
|
||||
"gatewayPort=18789",
|
||||
"bridgePort=18790",
|
||||
"sshPort=22",
|
||||
tailnetDns ? `tailnetDns=${tailnetDns}` : null,
|
||||
].filter((v): v is string => Boolean(v));
|
||||
|
||||
return {
|
||||
stdout: [
|
||||
`${instance}._clawdbot-bridge._tcp. can be reached at ${host}:18790`,
|
||||
txtParts.join(" "),
|
||||
"",
|
||||
].join("\n"),
|
||||
stderr: "",
|
||||
code: 0,
|
||||
signal: null,
|
||||
killed: false,
|
||||
};
|
||||
}
|
||||
|
||||
throw new Error(`unexpected argv: ${argv.join(" ")}`);
|
||||
});
|
||||
throw new Error(`unexpected argv: ${argv.join(" ")}`);
|
||||
},
|
||||
);
|
||||
|
||||
const beacons = await discoverGatewayBeacons({
|
||||
platform: "darwin",
|
||||
|
||||
Reference in New Issue
Block a user