From 16c949ed5f8bf30eeadefe80b950226194fe53a4 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Wed, 15 Apr 2026 00:28:47 +0100 Subject: [PATCH] test(agents): trim hot replay approval suites --- .../bash-tools.exec.approval-id.test.ts | 11 +- .../pi-embedded-runner-extraparams.test.ts | 122 ++++++++++-------- 2 files changed, 73 insertions(+), 60 deletions(-) diff --git a/src/agents/bash-tools.exec.approval-id.test.ts b/src/agents/bash-tools.exec.approval-id.test.ts index d27ce0b26c4..337191b5e48 100644 --- a/src/agents/bash-tools.exec.approval-id.test.ts +++ b/src/agents/bash-tools.exec.approval-id.test.ts @@ -4,7 +4,10 @@ import os from "node:os"; import path from "node:path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { clearConfigCache, clearRuntimeConfigSnapshot } from "../config/config.js"; +import { sendMessage } from "../infra/outbound/message.js"; import { buildSystemRunPreparePayload } from "../test-utils/system-run-prepare-payload.js"; +import { createExecTool } from "./bash-tools.exec.js"; +import { callGatewayTool } from "./tools/gateway.js"; vi.mock("./tools/gateway.js", () => ({ callGatewayTool: vi.fn(), @@ -22,10 +25,6 @@ vi.mock("../infra/outbound/message.js", () => ({ sendMessage: vi.fn(async () => ({ ok: true })), })); -let callGatewayTool: typeof import("./tools/gateway.js").callGatewayTool; -let createExecTool: typeof import("./bash-tools.exec.js").createExecTool; -let sendMessage: typeof import("../infra/outbound/message.js").sendMessage; - function buildPreparedSystemRunPayload(rawInvokeParams: unknown) { const invoke = (rawInvokeParams ?? {}) as { params?: { @@ -224,7 +223,6 @@ describe("exec approvals", () => { let previousDisableBundledPlugins: string | undefined; beforeEach(async () => { - vi.resetModules(); previousHome = process.env.HOME; previousUserProfile = process.env.USERPROFILE; previousBundledPluginsDir = process.env.OPENCLAW_BUNDLED_PLUGINS_DIR; @@ -235,9 +233,6 @@ describe("exec approvals", () => { process.env.USERPROFILE = tempDir; delete process.env.OPENCLAW_BUNDLED_PLUGINS_DIR; process.env.OPENCLAW_DISABLE_BUNDLED_PLUGINS = "1"; - ({ callGatewayTool } = await import("./tools/gateway.js")); - ({ createExecTool } = await import("./bash-tools.exec.js")); - ({ sendMessage } = await import("../infra/outbound/message.js")); vi.mocked(callGatewayTool).mockReset(); vi.mocked(sendMessage).mockClear(); }); diff --git a/src/agents/pi-embedded-runner-extraparams.test.ts b/src/agents/pi-embedded-runner-extraparams.test.ts index c3824dbab0b..cb1d931acc0 100644 --- a/src/agents/pi-embedded-runner-extraparams.test.ts +++ b/src/agents/pi-embedded-runner-extraparams.test.ts @@ -143,42 +143,7 @@ type WrapProviderStreamFnParams = Parameters< typeof import("../plugins/provider-hook-runtime.js").wrapProviderStreamFn >[0]; -function createTestOpenAIProviderWrapper( - params: WrapProviderStreamFnParams, - withDefaultTransport: boolean, -): StreamFn { - let streamFn = params.context.streamFn; - if (withDefaultTransport) { - streamFn = createOpenAIDefaultTransportWrapper(streamFn); - } - streamFn = createOpenAIAttributionHeadersWrapper(streamFn); - - if (resolveOpenAIFastMode(params.context.extraParams)) { - streamFn = createOpenAIFastModeWrapper(streamFn); - } - - const serviceTier = resolveOpenAIServiceTier(params.context.extraParams); - if (serviceTier) { - streamFn = createOpenAIServiceTierWrapper(streamFn, serviceTier); - } - - const textVerbosity = resolveOpenAITextVerbosity(params.context.extraParams); - if (textVerbosity) { - streamFn = createOpenAITextVerbosityWrapper(streamFn, textVerbosity); - } - - streamFn = createCodexNativeWebSearchWrapper(streamFn, { - config: params.context.config, - agentDir: params.context.agentDir, - }); - streamFn = createOpenAIStringContentWrapper(streamFn); - return createOpenAIResponsesContextManagementWrapper( - createOpenAIReasoningCompatibilityWrapper(streamFn), - params.context.extraParams, - ); -} - -beforeEach(() => { +function installFullProviderRuntimeDepsForTest() { extraParamsTesting.setProviderRuntimeDepsForTest({ prepareProviderExtraParams: (params) => { if (params.provider !== "openai-codex") { @@ -262,6 +227,57 @@ beforeEach(() => { return params.context.streamFn; }, }); +} + +function withMinimalProviderRuntimeDepsForTest(run: () => T): T { + extraParamsTesting.setProviderRuntimeDepsForTest({ + prepareProviderExtraParams: () => undefined, + wrapProviderStreamFn: (params) => params.context.streamFn, + }); + try { + return run(); + } finally { + installFullProviderRuntimeDepsForTest(); + } +} + +function createTestOpenAIProviderWrapper( + params: WrapProviderStreamFnParams, + withDefaultTransport: boolean, +): StreamFn { + let streamFn = params.context.streamFn; + if (withDefaultTransport) { + streamFn = createOpenAIDefaultTransportWrapper(streamFn); + } + streamFn = createOpenAIAttributionHeadersWrapper(streamFn); + + if (resolveOpenAIFastMode(params.context.extraParams)) { + streamFn = createOpenAIFastModeWrapper(streamFn); + } + + const serviceTier = resolveOpenAIServiceTier(params.context.extraParams); + if (serviceTier) { + streamFn = createOpenAIServiceTierWrapper(streamFn, serviceTier); + } + + const textVerbosity = resolveOpenAITextVerbosity(params.context.extraParams); + if (textVerbosity) { + streamFn = createOpenAITextVerbosityWrapper(streamFn, textVerbosity); + } + + streamFn = createCodexNativeWebSearchWrapper(streamFn, { + config: params.context.config, + agentDir: params.context.agentDir, + }); + streamFn = createOpenAIStringContentWrapper(streamFn); + return createOpenAIResponsesContextManagementWrapper( + createOpenAIReasoningCompatibilityWrapper(streamFn), + params.context.extraParams, + ); +} + +beforeEach(() => { + installFullProviderRuntimeDepsForTest(); }); afterEach(() => { @@ -362,22 +378,24 @@ describe("applyExtraParamsToAgent", () => { extraParamsOverride?: Record; payload?: Record; }) { - const payload = params.payload ?? {}; - const baseStreamFn: StreamFn = (model, _context, options) => { - options?.onPayload?.(payload, model); - return {} as ReturnType; - }; - const agent = { streamFn: baseStreamFn }; - applyExtraParamsToAgent( - agent, - params.cfg as Parameters[1], - params.applyProvider, - params.applyModelId, - params.extraParamsOverride, - ); - const context: Context = { messages: [] }; - void agent.streamFn?.(params.model, context, {}); - return payload; + return withMinimalProviderRuntimeDepsForTest(() => { + const payload = params.payload ?? {}; + const baseStreamFn: StreamFn = (model, _context, options) => { + options?.onPayload?.(payload, model); + return {} as ReturnType; + }; + const agent = { streamFn: baseStreamFn }; + applyExtraParamsToAgent( + agent, + params.cfg as Parameters[1], + params.applyProvider, + params.applyModelId, + params.extraParamsOverride, + ); + const context: Context = { messages: [] }; + void agent.streamFn?.(params.model, context, {}); + return payload; + }); } function runToolPayloadMutationCase(params: {