From 154581c5797f10615c8a732f6b02253b7ed76758 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Thu, 20 Nov 2025 16:54:19 +0000 Subject: [PATCH] fix: update Claude Sonnet 4.5 model name to claude-sonnet-4-5-20250929 - Changed model ID from claude-sonnet-4.5 to claude-sonnet-4-5-20250929 in OpenRouter provider - Updated all references in test files to match new model ID format - Fixes compatibility issues with URLs that do not recognize the dot notation Fixes #9434 --- packages/types/src/providers/openrouter.ts | 6 +++--- src/api/providers/__tests__/openrouter.spec.ts | 4 ++-- .../ui/hooks/__tests__/useSelectedModel.spec.ts | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/types/src/providers/openrouter.ts b/packages/types/src/providers/openrouter.ts index 22285fe6f5..64a3caf550 100644 --- a/packages/types/src/providers/openrouter.ts +++ b/packages/types/src/providers/openrouter.ts @@ -1,7 +1,7 @@ import type { ModelInfo } from "../model.js" // https://openrouter.ai/models?order=newest&supported_parameters=tools -export const openRouterDefaultModelId = "anthropic/claude-sonnet-4.5" +export const openRouterDefaultModelId = "anthropic/claude-sonnet-4-5-20250929" export const openRouterDefaultModelInfo: ModelInfo = { maxTokens: 8192, @@ -38,7 +38,7 @@ export const OPEN_ROUTER_PROMPT_CACHING_MODELS = new Set([ "anthropic/claude-3.7-sonnet:beta", "anthropic/claude-3.7-sonnet:thinking", "anthropic/claude-sonnet-4", - "anthropic/claude-sonnet-4.5", + "anthropic/claude-sonnet-4-5-20250929", "anthropic/claude-opus-4", "anthropic/claude-opus-4.1", "anthropic/claude-haiku-4.5", @@ -71,7 +71,7 @@ export const OPEN_ROUTER_REASONING_BUDGET_MODELS = new Set([ "anthropic/claude-opus-4", "anthropic/claude-opus-4.1", "anthropic/claude-sonnet-4", - "anthropic/claude-sonnet-4.5", + "anthropic/claude-sonnet-4-5-20250929", "anthropic/claude-haiku-4.5", "google/gemini-2.5-pro-preview", "google/gemini-2.5-pro", diff --git a/src/api/providers/__tests__/openrouter.spec.ts b/src/api/providers/__tests__/openrouter.spec.ts index 118be755d7..1bf3d35733 100644 --- a/src/api/providers/__tests__/openrouter.spec.ts +++ b/src/api/providers/__tests__/openrouter.spec.ts @@ -28,7 +28,7 @@ vitest.mock("../fetchers/modelCache", () => ({ description: "Claude 3.7 Sonnet", thinking: false, }, - "anthropic/claude-sonnet-4.5": { + "anthropic/claude-sonnet-4-5-20250929": { maxTokens: 8192, contextWindow: 200000, supportsImages: true, @@ -96,7 +96,7 @@ describe("OpenRouterHandler", () => { it("returns default model info when options are not provided", async () => { const handler = new OpenRouterHandler({}) const result = await handler.fetchModel() - expect(result.id).toBe("anthropic/claude-sonnet-4.5") + expect(result.id).toBe("anthropic/claude-sonnet-4-5-20250929") expect(result.info.supportsPromptCache).toBe(true) expect(result.info.supportsNativeTools).toBe(true) }) diff --git a/webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts b/webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts index 945b8aa63b..39e715293a 100644 --- a/webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts +++ b/webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts @@ -107,7 +107,7 @@ describe("useSelectedModel", () => { mockUseRouterModels.mockReturnValue({ data: { openrouter: { - "anthropic/claude-sonnet-4.5": { + "anthropic/claude-sonnet-4-5-20250929": { maxTokens: 8192, contextWindow: 200_000, supportsImages: true, @@ -146,7 +146,7 @@ describe("useSelectedModel", () => { const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper }) // Should fall back to provider default since "test-model" doesn't exist - expect(result.current.id).toBe("anthropic/claude-sonnet-4.5") + expect(result.current.id).toBe("anthropic/claude-sonnet-4-5-20250929") // Should still use specific provider info for the default model if specified expect(result.current.info).toEqual({ ...{ @@ -273,7 +273,7 @@ describe("useSelectedModel", () => { mockUseRouterModels.mockReturnValue({ data: { openrouter: { - "anthropic/claude-sonnet-4.5": { + "anthropic/claude-sonnet-4-5-20250929": { // Default model - using correct default model name maxTokens: 8192, contextWindow: 200_000, @@ -311,7 +311,7 @@ describe("useSelectedModel", () => { const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper }) // Should fall back to provider default since "non-existent-model" doesn't exist - expect(result.current.id).toBe("anthropic/claude-sonnet-4.5") + expect(result.current.id).toBe("anthropic/claude-sonnet-4-5-20250929") // Should use base model info since provider doesn't exist expect(result.current.info).toEqual({ maxTokens: 8192,