diff --git a/extensions/openrouter/index.test.ts b/extensions/openrouter/index.test.ts index 8f13f27d8a6..ff633d3f9d5 100644 --- a/extensions/openrouter/index.test.ts +++ b/extensions/openrouter/index.test.ts @@ -3,6 +3,45 @@ import { registerSingleProviderPlugin } from "../../test/helpers/plugins/plugin- import openrouterPlugin from "./index.js"; describe("openrouter provider hooks", () => { + it("owns passthrough-gemini replay policy for Gemini-backed models", async () => { + const provider = await registerSingleProviderPlugin(openrouterPlugin); + + expect( + provider.buildReplayPolicy?.({ + provider: "openrouter", + modelApi: "openai-completions", + modelId: "gemini-2.5-pro", + } as never), + ).toMatchObject({ + applyAssistantFirstOrderingFix: false, + validateGeminiTurns: false, + validateAnthropicTurns: false, + sanitizeThoughtSignatures: { + allowBase64Only: true, + includeCamelCase: true, + }, + }); + + expect( + provider.buildReplayPolicy?.({ + provider: "openrouter", + modelApi: "openai-completions", + modelId: "openai/gpt-5.4", + } as never), + ).toMatchObject({ + applyAssistantFirstOrderingFix: false, + validateGeminiTurns: false, + validateAnthropicTurns: false, + }); + expect( + provider.buildReplayPolicy?.({ + provider: "openrouter", + modelApi: "openai-completions", + modelId: "openai/gpt-5.4", + } as never), + ).not.toHaveProperty("sanitizeThoughtSignatures"); + }); + it("owns native reasoning output mode", async () => { const provider = await registerSingleProviderPlugin(openrouterPlugin);