import { describe, expect, it } from "vitest"; import { makeIsolatedAgentTurnJob, makeIsolatedAgentTurnParams, setupRunCronIsolatedAgentTurnSuite, } from "./run.suite-helpers.js"; import { loadRunCronIsolatedAgentTurn, resolveAgentModelFallbacksOverrideMock, runWithModelFallbackMock, } from "./run.test-harness.js"; const runCronIsolatedAgentTurn = await loadRunCronIsolatedAgentTurn(); // ---------- tests ---------- describe("runCronIsolatedAgentTurn — payload.fallbacks", () => { setupRunCronIsolatedAgentTurnSuite(); it.each([ { name: "passes payload.fallbacks as fallbacksOverride when defined", payload: { kind: "agentTurn", message: "test", fallbacks: ["anthropic/claude-sonnet-4-6", "openai/gpt-5"], }, expectedFallbacks: ["anthropic/claude-sonnet-4-6", "openai/gpt-5"], }, { name: "falls back to agent-level fallbacks when payload.fallbacks is undefined", payload: { kind: "agentTurn", message: "test" }, agentFallbacks: ["openai/gpt-4o"], expectedFallbacks: ["openai/gpt-4o"], }, { name: "payload.fallbacks=[] disables fallbacks even when agent config has them", payload: { kind: "agentTurn", message: "test", fallbacks: [] }, agentFallbacks: ["openai/gpt-4o"], expectedFallbacks: [], }, ])("$name", async ({ payload, agentFallbacks, expectedFallbacks }) => { if (agentFallbacks) { resolveAgentModelFallbacksOverrideMock.mockReturnValue(agentFallbacks); } const result = await runCronIsolatedAgentTurn( makeIsolatedAgentTurnParams({ job: makeIsolatedAgentTurnJob({ payload }), }), ); expect(result.status).toBe("ok"); expect(runWithModelFallbackMock).toHaveBeenCalledOnce(); expect(runWithModelFallbackMock.mock.calls[0][0].fallbacksOverride).toEqual(expectedFallbacks); }); });