diff --git a/src/agents/clawdbot-tools.agents.test.ts b/src/agents/clawdbot-tools.agents.test.ts index a53b6a152..225779595 100644 --- a/src/agents/clawdbot-tools.agents.test.ts +++ b/src/agents/clawdbot-tools.agents.test.ts @@ -73,9 +73,11 @@ describe("agents_list", () => { if (!tool) throw new Error("missing agents_list tool"); const result = await tool.execute("call2", {}); - const agents = (result.details as { - agents?: Array<{ id: string }>; - }).agents; + const agents = ( + result.details as { + agents?: Array<{ id: string }>; + } + ).agents; expect(agents?.map((agent) => agent.id)).toEqual(["main", "research"]); }); @@ -111,9 +113,11 @@ describe("agents_list", () => { expect(result.details).toMatchObject({ allowAny: true, }); - const agents = (result.details as { - agents?: Array<{ id: string }>; - }).agents; + const agents = ( + result.details as { + agents?: Array<{ id: string }>; + } + ).agents; expect(agents?.map((agent) => agent.id)).toEqual([ "main", "coder", @@ -144,9 +148,11 @@ describe("agents_list", () => { if (!tool) throw new Error("missing agents_list tool"); const result = await tool.execute("call4", {}); - const agents = (result.details as { - agents?: Array<{ id: string; configured: boolean }>; - }).agents; + const agents = ( + result.details as { + agents?: Array<{ id: string; configured: boolean }>; + } + ).agents; expect(agents?.map((agent) => agent.id)).toEqual(["main", "research"]); const research = agents?.find((agent) => agent.id === "research"); expect(research?.configured).toBe(false); diff --git a/src/agents/clawdbot-tools.ts b/src/agents/clawdbot-tools.ts index 6292dd67c..9e90ba98c 100644 --- a/src/agents/clawdbot-tools.ts +++ b/src/agents/clawdbot-tools.ts @@ -1,7 +1,7 @@ import type { ClawdbotConfig } from "../config/config.js"; +import { createAgentsListTool } from "./tools/agents-list-tool.js"; import { createBrowserTool } from "./tools/browser-tool.js"; import { createCanvasTool } from "./tools/canvas-tool.js"; -import { createAgentsListTool } from "./tools/agents-list-tool.js"; import type { AnyAgentTool } from "./tools/common.js"; import { createCronTool } from "./tools/cron-tool.js"; import { createDiscordTool } from "./tools/discord-tool.js"; diff --git a/src/agents/tools/agent-step.ts b/src/agents/tools/agent-step.ts index 1da62189a..84d5fdff8 100644 --- a/src/agents/tools/agent-step.ts +++ b/src/agents/tools/agent-step.ts @@ -28,14 +28,14 @@ export async function runAgentStep(params: { const stepIdem = crypto.randomUUID(); const response = (await callGateway({ method: "agent", - params: { - message: params.message, - sessionKey: params.sessionKey, - idempotencyKey: stepIdem, - deliver: false, - lane: params.lane ?? "nested", - extraSystemPrompt: params.extraSystemPrompt, - }, + params: { + message: params.message, + sessionKey: params.sessionKey, + idempotencyKey: stepIdem, + deliver: false, + lane: params.lane ?? "nested", + extraSystemPrompt: params.extraSystemPrompt, + }, timeoutMs: 10_000, })) as { runId?: string; acceptedAt?: number }; diff --git a/src/commands/agent.ts b/src/commands/agent.ts index 4ce3e9d1e..da3902a1a 100644 --- a/src/commands/agent.ts +++ b/src/commands/agent.ts @@ -1,4 +1,8 @@ import crypto from "node:crypto"; +import { + resolveAgentDir, + resolveAgentWorkspaceDir, +} from "../agents/agent-scope.js"; import { ensureAuthProfileStore } from "../agents/auth-profiles.js"; import { lookupContextTokens } from "../agents/context.js"; import { @@ -18,13 +22,7 @@ import { runEmbeddedPiAgent } from "../agents/pi-embedded.js"; import { buildWorkspaceSkillSnapshot } from "../agents/skills.js"; import { resolveAgentTimeoutMs } from "../agents/timeout.js"; import { hasNonzeroUsage } from "../agents/usage.js"; -import { - resolveAgentDir, - resolveAgentWorkspaceDir, -} from "../agents/agent-scope.js"; -import { - ensureAgentWorkspace, -} from "../agents/workspace.js"; +import { ensureAgentWorkspace } from "../agents/workspace.js"; import type { MsgContext } from "../auto-reply/templating.js"; import { normalizeThinkLevel, @@ -183,9 +181,7 @@ export async function agentCommand( const cfg = loadConfig(); const agentCfg = cfg.agent; - const sessionAgentId = resolveAgentIdFromSessionKey( - opts.sessionKey?.trim(), - ); + const sessionAgentId = resolveAgentIdFromSessionKey(opts.sessionKey?.trim()); const workspaceDirRaw = resolveAgentWorkspaceDir(cfg, sessionAgentId); const agentDir = resolveAgentDir(cfg, sessionAgentId); const workspace = await ensureAgentWorkspace({ diff --git a/src/config/merge-config.ts b/src/config/merge-config.ts index 1e78d0cb6..622e814bf 100644 --- a/src/config/merge-config.ts +++ b/src/config/merge-config.ts @@ -10,7 +10,7 @@ export function mergeConfigSection>( patch: Partial, options: MergeSectionOptions = {}, ): T { - const next: Record = { ...(base ?? {}) }; + const next: Record = { ...(base ?? undefined) }; for (const [key, value] of Object.entries(patch) as [keyof T, T[keyof T]][]) { if (value === undefined) { if (options.unsetOnUndefined?.includes(key)) { diff --git a/src/telegram/send.ts b/src/telegram/send.ts index 4d4d4b1b3..d15fa0616 100644 --- a/src/telegram/send.ts +++ b/src/telegram/send.ts @@ -115,7 +115,8 @@ export async function sendMessageTelegram( const fetchImpl = resolveTelegramFetch(); const api = opts.api ?? - new Bot(token, fetchImpl ? { client: { fetch: fetchImpl } } : undefined).api; + new Bot(token, fetchImpl ? { client: { fetch: fetchImpl } } : undefined) + .api; const mediaUrl = opts.mediaUrl?.trim(); // Build optional params for forum topics and reply threading. @@ -272,7 +273,8 @@ export async function reactMessageTelegram( const fetchImpl = resolveTelegramFetch(); const api = opts.api ?? - new Bot(token, fetchImpl ? { client: { fetch: fetchImpl } } : undefined).api; + new Bot(token, fetchImpl ? { client: { fetch: fetchImpl } } : undefined) + .api; const request = createTelegramRetryRunner({ retry: opts.retry, configRetry: account.config.retry,