style: fix lint formatting

This commit is contained in:
Peter Steinberger
2026-01-09 07:52:28 +01:00
parent 37cbcc97d3
commit 185727c696
7 changed files with 92 additions and 73 deletions

View File

@@ -66,7 +66,14 @@ describe("createClawdbotCodingTools", () => {
it("preserves action enums in normalized schemas", () => { it("preserves action enums in normalized schemas", () => {
const tools = createClawdbotCodingTools(); const tools = createClawdbotCodingTools();
const toolNames = ["browser", "canvas", "nodes", "cron", "gateway", "message"]; const toolNames = [
"browser",
"canvas",
"nodes",
"cron",
"gateway",
"message",
];
const collectActionValues = ( const collectActionValues = (
schema: unknown, schema: unknown,

View File

@@ -1,10 +1,10 @@
import { Type } from "@sinclair/typebox"; import { Type } from "@sinclair/typebox";
import { import {
sendMessage,
sendPoll,
type MessagePollResult, type MessagePollResult,
type MessageSendResult, type MessageSendResult,
sendMessage,
sendPoll,
} from "../../infra/outbound/message.js"; } from "../../infra/outbound/message.js";
import type { AnyAgentTool } from "./common.js"; import type { AnyAgentTool } from "./common.js";
import { import {
@@ -64,7 +64,9 @@ export function createMessageTool(): AnyAgentTool {
const gifPlayback = const gifPlayback =
typeof params.gifPlayback === "boolean" ? params.gifPlayback : false; typeof params.gifPlayback === "boolean" ? params.gifPlayback : false;
const bestEffort = const bestEffort =
typeof params.bestEffort === "boolean" ? params.bestEffort : undefined; typeof params.bestEffort === "boolean"
? params.bestEffort
: undefined;
const result: MessageSendResult = await sendMessage({ const result: MessageSendResult = await sendMessage({
to, to,
@@ -82,7 +84,9 @@ export function createMessageTool(): AnyAgentTool {
if (action === "poll") { if (action === "poll") {
const to = readStringParam(params, "to", { required: true }); const to = readStringParam(params, "to", { required: true });
const question = readStringParam(params, "question", { required: true }); const question = readStringParam(params, "question", {
required: true,
});
const options = const options =
readStringArrayParam(params, "options", { required: true }) ?? []; readStringArrayParam(params, "options", { required: true }) ?? [];
const maxSelections = readNumberParam(params, "maxSelections", { const maxSelections = readNumberParam(params, "maxSelections", {

View File

@@ -138,7 +138,9 @@ describe("gateway-cli coverage", () => {
program.exitOverride(); program.exitOverride();
registerGatewayCli(program); registerGatewayCli(program);
await program.parseAsync(["gateway", "discover", "--json"], { from: "user" }); await program.parseAsync(["gateway", "discover", "--json"], {
from: "user",
});
expect(discoverGatewayBeacons).toHaveBeenCalledTimes(1); expect(discoverGatewayBeacons).toHaveBeenCalledTimes(1);
expect(runtimeLogs.join("\n")).toContain('"beacons"'); expect(runtimeLogs.join("\n")).toContain('"beacons"');

View File

@@ -48,9 +48,12 @@ describe("cli program", () => {
it("runs message send with required options", async () => { it("runs message send with required options", async () => {
const program = buildProgram(); const program = buildProgram();
await program.parseAsync(["message", "send", "--to", "+1", "--message", "hi"], { await program.parseAsync(
from: "user", ["message", "send", "--to", "+1", "--message", "hi"],
}); {
from: "user",
},
);
expect(messageSendCommand).toHaveBeenCalled(); expect(messageSendCommand).toHaveBeenCalled();
}); });

View File

@@ -8,8 +8,8 @@ import {
import { configureCommand } from "../commands/configure.js"; import { configureCommand } from "../commands/configure.js";
import { doctorCommand } from "../commands/doctor.js"; import { doctorCommand } from "../commands/doctor.js";
import { healthCommand } from "../commands/health.js"; import { healthCommand } from "../commands/health.js";
import { onboardCommand } from "../commands/onboard.js";
import { messagePollCommand, messageSendCommand } from "../commands/message.js"; import { messagePollCommand, messageSendCommand } from "../commands/message.js";
import { onboardCommand } from "../commands/onboard.js";
import { sessionsCommand } from "../commands/sessions.js"; import { sessionsCommand } from "../commands/sessions.js";
import { setupCommand } from "../commands/setup.js"; import { setupCommand } from "../commands/setup.js";
import { statusCommand } from "../commands/status.js"; import { statusCommand } from "../commands/status.js";

View File

@@ -9,10 +9,10 @@ import {
formatOutboundDeliverySummary, formatOutboundDeliverySummary,
} from "../infra/outbound/format.js"; } from "../infra/outbound/format.js";
import { import {
sendMessage,
sendPoll,
type MessagePollResult, type MessagePollResult,
type MessageSendResult, type MessageSendResult,
sendMessage,
sendPoll,
} from "../infra/outbound/message.js"; } from "../infra/outbound/message.js";
import type { RuntimeEnv } from "../runtime.js"; import type { RuntimeEnv } from "../runtime.js";
import { normalizeMessageProvider } from "../utils/message-provider.js"; import { normalizeMessageProvider } from "../utils/message-provider.js";
@@ -49,7 +49,11 @@ function parseIntOption(value: unknown, label: string): number | undefined {
return parsed; return parsed;
} }
function logSendDryRun(opts: MessageSendOpts, provider: string, runtime: RuntimeEnv) { function logSendDryRun(
opts: MessageSendOpts,
provider: string,
runtime: RuntimeEnv,
) {
runtime.log( runtime.log(
`[dry-run] would send via ${provider} -> ${opts.to}: ${opts.message}${ `[dry-run] would send via ${provider} -> ${opts.to}: ${opts.message}${
opts.media ? ` (media ${opts.media})` : "" opts.media ? ` (media ${opts.media})` : ""
@@ -57,10 +61,7 @@ function logSendDryRun(opts: MessageSendOpts, provider: string, runtime: Runtime
); );
} }
function logPollDryRun( function logPollDryRun(result: MessagePollResult, runtime: RuntimeEnv) {
result: MessagePollResult,
runtime: RuntimeEnv,
) {
runtime.log( runtime.log(
`[dry-run] would send poll via ${result.provider} -> ${result.to}:\n Question: ${result.question}\n Options: ${result.options.join( `[dry-run] would send poll via ${result.provider} -> ${result.to}:\n Question: ${result.question}\n Options: ${result.options.join(
", ", ", ",

View File

@@ -1,23 +1,70 @@
import { describe, expect, it, vi } from "vitest"; import { describe, expect, it, vi } from "vitest";
import type { runCommandWithTimeout } from "../process/exec.js"; import type { runCommandWithTimeout } from "../process/exec.js";
import { WIDE_AREA_DISCOVERY_DOMAIN } from "./widearea-dns.js";
import { discoverGatewayBeacons } from "./bonjour-discovery.js"; import { discoverGatewayBeacons } from "./bonjour-discovery.js";
import { WIDE_AREA_DISCOVERY_DOMAIN } from "./widearea-dns.js";
describe("bonjour-discovery", () => { describe("bonjour-discovery", () => {
it("discovers beacons on darwin across local + wide-area domains", async () => { it("discovers beacons on darwin across local + wide-area domains", async () => {
const calls: Array<{ argv: string[]; timeoutMs: number }> = []; const calls: Array<{ argv: string[]; timeoutMs: number }> = [];
const run = vi.fn(async (argv: string[], options: { timeoutMs: number }) => { const run = vi.fn(
calls.push({ argv, timeoutMs: options.timeoutMs }); async (argv: string[], options: { timeoutMs: number }) => {
const domain = argv[3] ?? ""; 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 { return {
stdout: [ stdout: [
"Add 2 3 local. _clawdbot-bridge._tcp. Studio Bridge", `${instance}._clawdbot-bridge._tcp. can be reached at ${host}:18790`,
"Add 2 3 local. _clawdbot-bridge._tcp. Laptop Bridge", txtParts.join(" "),
"", "",
].join("\n"), ].join("\n"),
stderr: "", stderr: "",
@@ -26,55 +73,10 @@ describe("bonjour-discovery", () => {
killed: false, 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") { throw new Error(`unexpected argv: ${argv.join(" ")}`);
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(" ")}`);
});
const beacons = await discoverGatewayBeacons({ const beacons = await discoverGatewayBeacons({
platform: "darwin", platform: "darwin",