diff --git a/src/agents/cli-runner/prepare.test-support.ts b/src/agents/cli-runner/prepare.test-support.ts index 44826387f761..91f57ad7e9b6 100644 --- a/src/agents/cli-runner/prepare.test-support.ts +++ b/src/agents/cli-runner/prepare.test-support.ts @@ -1,6 +1,7 @@ import "./prepare.js"; type CliRunnerPrepareTestApi = { + resetCliRunnerPrepareTestDeps(): void; setCliRunnerPrepareTestDeps(overrides: Record): void; }; @@ -13,3 +14,7 @@ function getTestApi(): CliRunnerPrepareTestApi { export function setCliRunnerPrepareTestDeps(overrides: Record): void { getTestApi().setCliRunnerPrepareTestDeps(overrides); } + +export function resetCliRunnerPrepareTestDeps(): void { + getTestApi().resetCliRunnerPrepareTestDeps(); +} diff --git a/src/agents/cli-runner/prepare.test.ts b/src/agents/cli-runner/prepare.test.ts index f68c64e06e5b..2772f5ab8082 100644 --- a/src/agents/cli-runner/prepare.test.ts +++ b/src/agents/cli-runner/prepare.test.ts @@ -62,7 +62,10 @@ import { import type { SandboxWorkspaceInfo } from "../sandbox/types.js"; import type { SystemAgentToolOptions } from "../tools/system-agent-tool.js"; import { prepareCliRunContext } from "./prepare.js"; -import { setCliRunnerPrepareTestDeps } from "./prepare.test-support.js"; +import { + resetCliRunnerPrepareTestDeps, + setCliRunnerPrepareTestDeps, +} from "./prepare.test-support.js"; import type { RunCliAgentParams } from "./types.js"; function registerTestContextEngine( @@ -401,6 +404,7 @@ describe("prepareCliRunContext", () => { afterEach(() => { cliBackendsTesting.resetDepsForTest(); + resetCliRunnerPrepareTestDeps(); resetCliAuthEpochTestDeps(); getRuntimeConfigMock.mockReset(); mockGetGlobalHookRunner.mockReset(); diff --git a/src/agents/cli-runner/prepare.ts b/src/agents/cli-runner/prepare.ts index 30e17814b09d..b5bb8c6b2dc0 100644 --- a/src/agents/cli-runner/prepare.ts +++ b/src/agents/cli-runner/prepare.ts @@ -171,7 +171,7 @@ type RunCliAgentPrepareParams = RunCliAgentParams & { systemAgentTool?: import("../tools/system-agent-tool.js").SystemAgentToolOptions; }; -const prepareDeps = { +const defaultPrepareDeps = { isWorkspaceBootstrapPending: isWorkspaceBootstrapPendingImpl, makeBootstrapWarn: makeBootstrapWarnImpl, resolveBootstrapContextForRun: resolveBootstrapContextForRunImpl, @@ -195,6 +195,7 @@ const prepareDeps = { readExternalCliBootstrapCredential, resolveApiKeyForProfile, }; +const prepareDeps = { ...defaultPrepareDeps }; function resolveReusableCliSessionId(reusableCliSession: CliReusableSession): string | undefined { return reusableCliSession.mode === "reuse" || reusableCliSession.mode === "reuse-with-drift" @@ -320,6 +321,11 @@ function setCliRunnerPrepareTestDeps(overrides: Partial): vo Object.assign(prepareDeps, overrides); } +/** Restores preparation dependencies after CLI runner tests. */ +function resetCliRunnerPrepareTestDeps(): void { + Object.assign(prepareDeps, defaultPrepareDeps); +} + /** Returns whether profile-owned prepared execution should skip local CLI epoch hashing. */ function shouldSkipLocalCliCredentialEpoch(params: { authEpochMode?: CliBackendAuthEpochMode; @@ -337,6 +343,7 @@ function shouldSkipLocalCliCredentialEpoch(params: { if (process.env.VITEST || process.env.NODE_ENV === "test") { (globalThis as Record)[Symbol.for("openclaw.cliRunnerPrepareTestApi")] = { + resetCliRunnerPrepareTestDeps, setCliRunnerPrepareTestDeps: (overrides: Record) => { setCliRunnerPrepareTestDeps(overrides as Partial); },