From 2a2a9902d91fc59bbe21df62351ec9f4cf03f6ed Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 2 Mar 2026 14:24:26 +0000 Subject: [PATCH] test(perf): merge isolated-agent model precedence cases --- ....uses-last-non-empty-agent-text-as.test.ts | 90 +++++++++---------- 1 file changed, 42 insertions(+), 48 deletions(-) diff --git a/src/cron/isolated-agent.uses-last-non-empty-agent-text-as.test.ts b/src/cron/isolated-agent.uses-last-non-empty-agent-text-as.test.ts index 3a4e9d91cd2..ce3bb69ac8f 100644 --- a/src/cron/isolated-agent.uses-last-non-empty-agent-text-as.test.ts +++ b/src/cron/isolated-agent.uses-last-non-empty-agent-text-as.test.ts @@ -46,7 +46,7 @@ function mockEmbeddedOk() { } function expectEmbeddedProviderModel(expected: { provider: string; model: string }) { - const call = vi.mocked(runEmbeddedPiAgent).mock.calls[0]?.[0] as { + const call = vi.mocked(runEmbeddedPiAgent).mock.calls.at(-1)?.[0] as { provider?: string; model?: string; }; @@ -321,71 +321,65 @@ describe("runCronIsolatedAgentTurn", () => { }); }); - it("uses model override when provided", async () => { + it("applies model overrides with correct precedence", async () => { await withTempHome(async (home) => { - const { res } = await runCronTurn(home, { - jobPayload: { + let res = ( + await runCronTurn(home, { + jobPayload: { + kind: "agentTurn", + message: DEFAULT_MESSAGE, + model: "openai/gpt-4.1-mini", + }, + }) + ).res; + expect(res.status).toBe("ok"); + expectEmbeddedProviderModel({ provider: "openai", model: "gpt-4.1-mini" }); + + vi.clearAllMocks(); + res = ( + await runTurnWithStoredModelOverride(home, { kind: "agentTurn", message: DEFAULT_MESSAGE, - model: "openai/gpt-4.1-mini", - }, - }); - + deliver: false, + }) + ).res; expect(res.status).toBe("ok"); expectEmbeddedProviderModel({ provider: "openai", model: "gpt-4.1-mini" }); - }); - }); - - it("uses stored session override when no job model override is provided", async () => { - await withTempHome(async (home) => { - const { res } = await runTurnWithStoredModelOverride(home, { - kind: "agentTurn", - message: DEFAULT_MESSAGE, - deliver: false, - }); - - expect(res.status).toBe("ok"); - expectEmbeddedProviderModel({ provider: "openai", model: "gpt-4.1-mini" }); - }); - }); - - it("prefers job model override over stored session override", async () => { - await withTempHome(async (home) => { - const { res } = await runTurnWithStoredModelOverride(home, { - kind: "agentTurn", - message: DEFAULT_MESSAGE, - model: "anthropic/claude-opus-4-5", - deliver: false, - }); + vi.clearAllMocks(); + res = ( + await runTurnWithStoredModelOverride(home, { + kind: "agentTurn", + message: DEFAULT_MESSAGE, + model: "anthropic/claude-opus-4-5", + deliver: false, + }) + ).res; expect(res.status).toBe("ok"); expectEmbeddedProviderModel({ provider: "anthropic", model: "claude-opus-4-5" }); }); }); - it("uses hooks.gmail.model for Gmail hook sessions", async () => { + it("uses hooks.gmail.model and keeps precedence over stored session override", async () => { await withTempHome(async (home) => { - const { res } = await runGmailHookTurn(home); - + let res = (await runGmailHookTurn(home)).res; expect(res.status).toBe("ok"); expectEmbeddedProviderModel({ provider: "openrouter", model: GMAIL_MODEL.replace("openrouter/", ""), }); - }); - }); - - it("keeps hooks.gmail.model precedence over stored session override", async () => { - await withTempHome(async (home) => { - const { res } = await runGmailHookTurn(home, { - "agent:main:hook:gmail:msg-1": { - sessionId: "existing-gmail-session", - updatedAt: Date.now(), - providerOverride: "anthropic", - modelOverride: "claude-opus-4-5", - }, - }); + vi.clearAllMocks(); + res = ( + await runGmailHookTurn(home, { + "agent:main:hook:gmail:msg-1": { + sessionId: "existing-gmail-session", + updatedAt: Date.now(), + providerOverride: "anthropic", + modelOverride: "claude-opus-4-5", + }, + }) + ).res; expect(res.status).toBe("ok"); expectEmbeddedProviderModel({ provider: "openrouter",