diff --git a/extensions/llm-task/src/llm-task-tool.test.ts b/extensions/llm-task/src/llm-task-tool.test.ts index 0a41f0f4bad..8bec7aeebb1 100644 --- a/extensions/llm-task/src/llm-task-tool.test.ts +++ b/extensions/llm-task/src/llm-task-tool.test.ts @@ -36,45 +36,14 @@ vi.mock("ajv", () => ({ }, })); -vi.mock("../api.js", () => ({ - formatXHighModelHint: () => "provider models that advertise xhigh reasoning", - normalizeThinkLevel: (raw?: string | null) => { - if (!raw) { - return undefined; - } - const key = raw.trim().toLowerCase(); - const collapsed = key.replace(/[\s_-]+/g, ""); - if (collapsed === "adaptive" || collapsed === "auto") { - return "adaptive"; - } - if (collapsed === "xhigh" || collapsed === "extrahigh") { - return "xhigh"; - } - if (["off"].includes(key)) { - return "off"; - } - if (["on", "enable", "enabled"].includes(key)) { - return "low"; - } - if (["min", "minimal", "think"].includes(key)) { - return "minimal"; - } - if (["low", "thinkhard", "think-hard", "think_hard"].includes(key)) { - return "low"; - } - if (["mid", "med", "medium", "thinkharder", "think-harder", "harder"].includes(key)) { - return "medium"; - } - if ( - ["high", "ultra", "ultrathink", "think-hard", "thinkhardest", "highest", "max"].includes(key) - ) { - return "high"; - } - return undefined; - }, - resolvePreferredOpenClawTmpDir: () => "/tmp", - supportsXHighThinking: () => false, -})); +vi.mock("../api.js", async (importOriginal) => { + const actual = await importOriginal(); + return { + ...actual, + resolvePreferredOpenClawTmpDir: () => "/tmp", + supportsXHighThinking: () => false, + }; +}); import { createLlmTaskTool } from "./llm-task-tool.js"; diff --git a/src/auto-reply/reply.block-streaming.test.ts b/src/auto-reply/reply.block-streaming.test.ts index 1a1aebf1cfc..6d11725f1f7 100644 --- a/src/auto-reply/reply.block-streaming.test.ts +++ b/src/auto-reply/reply.block-streaming.test.ts @@ -1,5 +1,6 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; +import { createMockTypingController } from "./reply/reply.test-helpers.js"; import type { MsgContext } from "./templating.js"; const mocks = vi.hoisted(() => ({ @@ -62,16 +63,7 @@ vi.mock("./reply/stage-sandbox-media.js", () => ({ stageSandboxMedia: vi.fn(async () => undefined), })); vi.mock("./reply/typing.js", () => ({ - createTypingController: vi.fn(() => ({ - onReplyStart: async () => undefined, - startTypingLoop: async () => undefined, - startTypingOnText: async () => undefined, - refreshTypingTtl: () => undefined, - isActive: () => false, - markRunComplete: () => undefined, - markDispatchIdle: () => undefined, - cleanup: () => undefined, - })), + createTypingController: vi.fn(() => createMockTypingController()), })); vi.mock("./reply/get-reply-directives.js", () => ({ diff --git a/src/auto-reply/reply/get-reply.test-mocks.ts b/src/auto-reply/reply/get-reply.test-mocks.ts index 3db691d3fec..c10c70daf4b 100644 --- a/src/auto-reply/reply/get-reply.test-mocks.ts +++ b/src/auto-reply/reply/get-reply.test-mocks.ts @@ -1,4 +1,5 @@ import { vi } from "vitest"; +import { createMockTypingController } from "./reply.test-helpers.js"; export function registerGetReplyCommonMocks(): void { vi.mock("../../agents/agent-scope.js", async (importOriginal) => { @@ -57,15 +58,6 @@ export function registerGetReplyCommonMocks(): void { stageSandboxMedia: vi.fn(async () => undefined), })); vi.mock("./typing.js", () => ({ - createTypingController: vi.fn(() => ({ - onReplyStart: async () => undefined, - startTypingLoop: async () => undefined, - startTypingOnText: async () => undefined, - refreshTypingTtl: () => undefined, - isActive: () => false, - markRunComplete: () => undefined, - markDispatchIdle: () => undefined, - cleanup: () => undefined, - })), + createTypingController: vi.fn(() => createMockTypingController()), })); } diff --git a/src/auto-reply/reply/reply.test-helpers.ts b/src/auto-reply/reply/reply.test-helpers.ts new file mode 100644 index 00000000000..05704bd5af8 --- /dev/null +++ b/src/auto-reply/reply/reply.test-helpers.ts @@ -0,0 +1,12 @@ +export function createMockTypingController() { + return { + onReplyStart: async () => undefined, + startTypingLoop: async () => undefined, + startTypingOnText: async () => undefined, + refreshTypingTtl: () => undefined, + isActive: () => false, + markRunComplete: () => undefined, + markDispatchIdle: () => undefined, + cleanup: () => undefined, + }; +}