From e277c01953bf127d9bf2f3402a8510db34ce0db1 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sat, 4 Apr 2026 23:22:54 +0900 Subject: [PATCH] test(providers): cover openrouter replay family --- extensions/openrouter/index.test.ts | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) 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);