From a324a9d927fef93b195d6060c4c74f6a678c163a Mon Sep 17 00:00:00 2001 From: Roo Code Date: Wed, 6 Aug 2025 18:01:51 +0000 Subject: [PATCH] fix: override Kimi-K2 context window to 131K to match OpenRouter advertised specs - OpenRouter API returns 63K for moonshotai/kimi-k2 but their website shows 131K - Added manual override in parseOpenRouterModel to set correct context window - Added test to verify the override works correctly Fixes #6759 --- .../fetchers/__tests__/openrouter.spec.ts | 25 +++++++++++++++++++ src/api/providers/fetchers/openrouter.ts | 6 +++++ 2 files changed, 31 insertions(+) diff --git a/src/api/providers/fetchers/__tests__/openrouter.spec.ts b/src/api/providers/fetchers/__tests__/openrouter.spec.ts index 44892d2024..2a19654dd7 100644 --- a/src/api/providers/fetchers/__tests__/openrouter.spec.ts +++ b/src/api/providers/fetchers/__tests__/openrouter.spec.ts @@ -332,5 +332,30 @@ describe("OpenRouter API", () => { expect(result.maxTokens).toBe(64000) expect(result.contextWindow).toBe(128000) }) + + it("overrides kimi-k2 model context window to 131K", () => { + const mockModel = { + name: "MoonshotAI: Kimi K2", + description: "Kimi K2 model", + context_length: 63000, // API returns 63K + max_completion_tokens: null, + pricing: { + prompt: "0.000003", + completion: "0.000015", + }, + } + + const result = parseOpenRouterModel({ + id: "moonshotai/kimi-k2", + model: mockModel, + modality: "text", + maxTokens: null, + }) + + // Should override to 131K (131072) instead of using the API's 63K + expect(result.contextWindow).toBe(131072) + // Max tokens should be calculated as 20% of context window + expect(result.maxTokens).toBe(Math.ceil(63000 * 0.2)) // Still uses original for maxTokens calculation + }) }) }) diff --git a/src/api/providers/fetchers/openrouter.ts b/src/api/providers/fetchers/openrouter.ts index be8fb26f7a..3072d6d99c 100644 --- a/src/api/providers/fetchers/openrouter.ts +++ b/src/api/providers/fetchers/openrouter.ts @@ -247,5 +247,11 @@ export const parseOpenRouterModel = ({ modelInfo.maxTokens = 32768 } + // Override kimi-k2 context window to match OpenRouter's advertised 131K + // The API returns 63K but the website shows 131K + if (id === "moonshotai/kimi-k2") { + modelInfo.contextWindow = 131072 + } + return modelInfo }