From c9d73469c3534e58106995936c557b1904c780d3 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 23 Jan 2026 18:31:47 +0000 Subject: [PATCH] test: stub heavy tools in agent tests --- src/agents/clawdbot-gateway-tool.test.ts | 1 + src/agents/clawdbot-tools.agents.test.ts | 1 + src/agents/clawdbot-tools.camera.test.ts | 1 + .../clawdbot-tools.session-status.test.ts | 1 + src/agents/clawdbot-tools.sessions.test.ts | 4 +-- ...ws-cross-agent-spawning-configured.test.ts | 1 + ...ounces-agent-wait-lifecycle-events.test.ts | 1 + ...-spawn-applies-model-child-session.test.ts | 1 + ...n-normalizes-allowlisted-agent-ids.test.ts | 1 + ...n-prefers-per-agent-subagent-model.test.ts | 1 + ...resolves-main-announce-target-from.test.ts | 1 + ...aliases-schemas-without-dropping-b.test.ts | 1 + ...aliases-schemas-without-dropping-d.test.ts | 1 + ...aliases-schemas-without-dropping-f.test.ts | 1 + ...e-aliases-schemas-without-dropping.test.ts | 1 + src/agents/test-helpers/fast-coding-tools.ts | 22 ++++++++++++++ src/agents/test-helpers/fast-core-tools.ts | 30 +++++++++++++++++++ 17 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 src/agents/test-helpers/fast-coding-tools.ts create mode 100644 src/agents/test-helpers/fast-core-tools.ts diff --git a/src/agents/clawdbot-gateway-tool.test.ts b/src/agents/clawdbot-gateway-tool.test.ts index a3dfa8309..0a283198c 100644 --- a/src/agents/clawdbot-gateway-tool.test.ts +++ b/src/agents/clawdbot-gateway-tool.test.ts @@ -3,6 +3,7 @@ import os from "node:os"; import path from "node:path"; import { describe, expect, it, vi } from "vitest"; +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; vi.mock("./tools/gateway.js", () => ({ diff --git a/src/agents/clawdbot-tools.agents.test.ts b/src/agents/clawdbot-tools.agents.test.ts index 5936c196c..0ae300bfb 100644 --- a/src/agents/clawdbot-tools.agents.test.ts +++ b/src/agents/clawdbot-tools.agents.test.ts @@ -16,6 +16,7 @@ vi.mock("../config/config.js", async (importOriginal) => { }; }); +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; describe("agents_list", () => { diff --git a/src/agents/clawdbot-tools.camera.test.ts b/src/agents/clawdbot-tools.camera.test.ts index 4347bacfa..c652e60d3 100644 --- a/src/agents/clawdbot-tools.camera.test.ts +++ b/src/agents/clawdbot-tools.camera.test.ts @@ -10,6 +10,7 @@ vi.mock("../media/image-ops.js", () => ({ resizeToJpeg: vi.fn(async () => Buffer.from("jpeg")), })); +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; describe("nodes camera_snap", () => { diff --git a/src/agents/clawdbot-tools.session-status.test.ts b/src/agents/clawdbot-tools.session-status.test.ts index c361f59d6..94ee3e8b4 100644 --- a/src/agents/clawdbot-tools.session-status.test.ts +++ b/src/agents/clawdbot-tools.session-status.test.ts @@ -75,6 +75,7 @@ vi.mock("../infra/provider-usage.js", () => ({ formatUsageSummaryLine: () => null, })); +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; describe("session_status tool", () => { diff --git a/src/agents/clawdbot-tools.sessions.test.ts b/src/agents/clawdbot-tools.sessions.test.ts index bf57c73cf..c7964b75b 100644 --- a/src/agents/clawdbot-tools.sessions.test.ts +++ b/src/agents/clawdbot-tools.sessions.test.ts @@ -4,9 +4,6 @@ const callGatewayMock = vi.fn(); vi.mock("../gateway/call.js", () => ({ callGateway: (opts: unknown) => callGatewayMock(opts), })); -vi.mock("../plugins/tools.js", () => ({ - resolvePluginTools: () => [], -})); vi.mock("../config/config.js", async (importOriginal) => { const actual = await importOriginal(); @@ -23,6 +20,7 @@ vi.mock("../config/config.js", async (importOriginal) => { }; }); +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; const waitForCalls = async (getCount: () => number, count: number, timeoutMs = 2000) => { diff --git a/src/agents/clawdbot-tools.subagents.sessions-spawn-allows-cross-agent-spawning-configured.test.ts b/src/agents/clawdbot-tools.subagents.sessions-spawn-allows-cross-agent-spawning-configured.test.ts index 3733348d9..740e987ea 100644 --- a/src/agents/clawdbot-tools.subagents.sessions-spawn-allows-cross-agent-spawning-configured.test.ts +++ b/src/agents/clawdbot-tools.subagents.sessions-spawn-allows-cross-agent-spawning-configured.test.ts @@ -21,6 +21,7 @@ vi.mock("../config/config.js", async (importOriginal) => { }; }); +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; import { resetSubagentRegistryForTests } from "./subagent-registry.js"; diff --git a/src/agents/clawdbot-tools.subagents.sessions-spawn-announces-agent-wait-lifecycle-events.test.ts b/src/agents/clawdbot-tools.subagents.sessions-spawn-announces-agent-wait-lifecycle-events.test.ts index 814e021d8..27aff8c47 100644 --- a/src/agents/clawdbot-tools.subagents.sessions-spawn-announces-agent-wait-lifecycle-events.test.ts +++ b/src/agents/clawdbot-tools.subagents.sessions-spawn-announces-agent-wait-lifecycle-events.test.ts @@ -21,6 +21,7 @@ vi.mock("../config/config.js", async (importOriginal) => { }; }); +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; import { resetSubagentRegistryForTests } from "./subagent-registry.js"; diff --git a/src/agents/clawdbot-tools.subagents.sessions-spawn-applies-model-child-session.test.ts b/src/agents/clawdbot-tools.subagents.sessions-spawn-applies-model-child-session.test.ts index 2eea23bf0..f9bd6a499 100644 --- a/src/agents/clawdbot-tools.subagents.sessions-spawn-applies-model-child-session.test.ts +++ b/src/agents/clawdbot-tools.subagents.sessions-spawn-applies-model-child-session.test.ts @@ -21,6 +21,7 @@ vi.mock("../config/config.js", async (importOriginal) => { }; }); +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; import { resetSubagentRegistryForTests } from "./subagent-registry.js"; diff --git a/src/agents/clawdbot-tools.subagents.sessions-spawn-normalizes-allowlisted-agent-ids.test.ts b/src/agents/clawdbot-tools.subagents.sessions-spawn-normalizes-allowlisted-agent-ids.test.ts index b1b5b413b..3dbfb02b4 100644 --- a/src/agents/clawdbot-tools.subagents.sessions-spawn-normalizes-allowlisted-agent-ids.test.ts +++ b/src/agents/clawdbot-tools.subagents.sessions-spawn-normalizes-allowlisted-agent-ids.test.ts @@ -22,6 +22,7 @@ vi.mock("../config/config.js", async (importOriginal) => { }); import { emitAgentEvent } from "../infra/agent-events.js"; +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; import { resetSubagentRegistryForTests } from "./subagent-registry.js"; diff --git a/src/agents/clawdbot-tools.subagents.sessions-spawn-prefers-per-agent-subagent-model.test.ts b/src/agents/clawdbot-tools.subagents.sessions-spawn-prefers-per-agent-subagent-model.test.ts index c1afd211b..653384675 100644 --- a/src/agents/clawdbot-tools.subagents.sessions-spawn-prefers-per-agent-subagent-model.test.ts +++ b/src/agents/clawdbot-tools.subagents.sessions-spawn-prefers-per-agent-subagent-model.test.ts @@ -21,6 +21,7 @@ vi.mock("../config/config.js", async (importOriginal) => { }; }); +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; import { resetSubagentRegistryForTests } from "./subagent-registry.js"; diff --git a/src/agents/clawdbot-tools.subagents.sessions-spawn-resolves-main-announce-target-from.test.ts b/src/agents/clawdbot-tools.subagents.sessions-spawn-resolves-main-announce-target-from.test.ts index 8a094fb6d..18f5ab26b 100644 --- a/src/agents/clawdbot-tools.subagents.sessions-spawn-resolves-main-announce-target-from.test.ts +++ b/src/agents/clawdbot-tools.subagents.sessions-spawn-resolves-main-announce-target-from.test.ts @@ -22,6 +22,7 @@ vi.mock("../config/config.js", async (importOriginal) => { }); import { emitAgentEvent } from "../infra/agent-events.js"; +import "./test-helpers/fast-core-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; import { resetSubagentRegistryForTests } from "./subagent-registry.js"; diff --git a/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-b.test.ts b/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-b.test.ts index e440ecaeb..e332c13eb 100644 --- a/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-b.test.ts +++ b/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-b.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from "vitest"; import type { ClawdbotConfig } from "../config/config.js"; +import "./test-helpers/fast-coding-tools.js"; import { createClawdbotCodingTools } from "./pi-tools.js"; const defaultTools = createClawdbotCodingTools(); diff --git a/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-d.test.ts b/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-d.test.ts index f493164cd..bd13aa25c 100644 --- a/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-d.test.ts +++ b/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-d.test.ts @@ -3,6 +3,7 @@ import os from "node:os"; import path from "node:path"; import sharp from "sharp"; import { describe, expect, it } from "vitest"; +import "./test-helpers/fast-coding-tools.js"; import { createClawdbotCodingTools } from "./pi-tools.js"; const defaultTools = createClawdbotCodingTools(); diff --git a/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-f.test.ts b/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-f.test.ts index 35549a4d3..ed557b922 100644 --- a/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-f.test.ts +++ b/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping-f.test.ts @@ -2,6 +2,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { describe, expect, it } from "vitest"; +import "./test-helpers/fast-coding-tools.js"; import { createClawdbotCodingTools } from "./pi-tools.js"; describe("createClawdbotCodingTools", () => { diff --git a/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping.test.ts b/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping.test.ts index 8cb3a3522..221222338 100644 --- a/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping.test.ts +++ b/src/agents/pi-tools.create-clawdbot-coding-tools.adds-claude-style-aliases-schemas-without-dropping.test.ts @@ -3,6 +3,7 @@ import os from "node:os"; import path from "node:path"; import type { AgentTool } from "@mariozechner/pi-agent-core"; import { describe, expect, it, vi } from "vitest"; +import "./test-helpers/fast-coding-tools.js"; import { createClawdbotTools } from "./clawdbot-tools.js"; import { __testing, createClawdbotCodingTools } from "./pi-tools.js"; import { createSandboxedReadTool } from "./pi-tools.read.js"; diff --git a/src/agents/test-helpers/fast-coding-tools.ts b/src/agents/test-helpers/fast-coding-tools.ts new file mode 100644 index 000000000..99b4ab351 --- /dev/null +++ b/src/agents/test-helpers/fast-coding-tools.ts @@ -0,0 +1,22 @@ +import { vi } from "vitest"; + +const stubTool = (name: string) => ({ + name, + description: `${name} stub`, + parameters: { type: "object", properties: {} }, + execute: vi.fn(), +}); + +vi.mock("../tools/image-tool.js", () => ({ + createImageTool: () => stubTool("image"), +})); + +vi.mock("../tools/web-tools.js", () => ({ + createWebSearchTool: () => null, + createWebFetchTool: () => null, +})); + +vi.mock("../../plugins/tools.js", () => ({ + resolvePluginTools: () => [], + getPluginToolMeta: () => undefined, +})); diff --git a/src/agents/test-helpers/fast-core-tools.ts b/src/agents/test-helpers/fast-core-tools.ts new file mode 100644 index 000000000..d459c8276 --- /dev/null +++ b/src/agents/test-helpers/fast-core-tools.ts @@ -0,0 +1,30 @@ +import { vi } from "vitest"; + +const stubTool = (name: string) => ({ + name, + description: `${name} stub`, + parameters: { type: "object", properties: {} }, + execute: vi.fn(), +}); + +vi.mock("../tools/browser-tool.js", () => ({ + createBrowserTool: () => stubTool("browser"), +})); + +vi.mock("../tools/canvas-tool.js", () => ({ + createCanvasTool: () => stubTool("canvas"), +})); + +vi.mock("../tools/image-tool.js", () => ({ + createImageTool: () => stubTool("image"), +})); + +vi.mock("../tools/web-tools.js", () => ({ + createWebSearchTool: () => null, + createWebFetchTool: () => null, +})); + +vi.mock("../../plugins/tools.js", () => ({ + resolvePluginTools: () => [], + getPluginToolMeta: () => undefined, +}));