diff --git a/packages/types/src/providers/anthropic.ts b/packages/types/src/providers/anthropic.ts index d0f1629ee94..304670bc922 100644 --- a/packages/types/src/providers/anthropic.ts +++ b/packages/types/src/providers/anthropic.ts @@ -8,7 +8,7 @@ export const anthropicDefaultModelId: AnthropicModelId = "claude-sonnet-4-202505 export const anthropicModels = { "claude-sonnet-4-20250514": { maxTokens: 64_000, // Overridden to 8k if `enableReasoningEffort` is false. - contextWindow: 200_000, + contextWindow: 1_000_000, // 1M token context window supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, @@ -20,7 +20,7 @@ export const anthropicModels = { }, "claude-opus-4-20250514": { maxTokens: 32_000, // Overridden to 8k if `enableReasoningEffort` is false. - contextWindow: 200_000, + contextWindow: 1_000_000, // 1M token context window supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, diff --git a/packages/types/src/providers/bedrock.ts b/packages/types/src/providers/bedrock.ts index 58e860dd94a..a4f3f6a5359 100644 --- a/packages/types/src/providers/bedrock.ts +++ b/packages/types/src/providers/bedrock.ts @@ -69,7 +69,7 @@ export const bedrockModels = { }, "anthropic.claude-sonnet-4-20250514-v1:0": { maxTokens: 8192, - contextWindow: 200_000, + contextWindow: 1_000_000, // 1M token context window supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, @@ -84,7 +84,7 @@ export const bedrockModels = { }, "anthropic.claude-opus-4-20250514-v1:0": { maxTokens: 8192, - contextWindow: 200_000, + contextWindow: 1_000_000, // 1M token context window supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, diff --git a/packages/types/src/providers/openrouter.ts b/packages/types/src/providers/openrouter.ts index bbdbc7e7328..ab4095da42b 100644 --- a/packages/types/src/providers/openrouter.ts +++ b/packages/types/src/providers/openrouter.ts @@ -5,7 +5,7 @@ export const openRouterDefaultModelId = "anthropic/claude-sonnet-4" export const openRouterDefaultModelInfo: ModelInfo = { maxTokens: 8192, - contextWindow: 200_000, + contextWindow: 1_000_000, // 1M token context window for Claude 4 Sonnet supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, diff --git a/packages/types/src/providers/vertex.ts b/packages/types/src/providers/vertex.ts index c405621f82d..70f7f7316fa 100644 --- a/packages/types/src/providers/vertex.ts +++ b/packages/types/src/providers/vertex.ts @@ -165,7 +165,7 @@ export const vertexModels = { }, "claude-sonnet-4@20250514": { maxTokens: 8192, - contextWindow: 200_000, + contextWindow: 1_000_000, // 1M token context window supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, @@ -177,7 +177,7 @@ export const vertexModels = { }, "claude-opus-4@20250514": { maxTokens: 8192, - contextWindow: 200_000, + contextWindow: 1_000_000, // 1M token context window supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, diff --git a/src/api/providers/fetchers/litellm.ts b/src/api/providers/fetchers/litellm.ts index 0891527406d..b52e2a2277a 100644 --- a/src/api/providers/fetchers/litellm.ts +++ b/src/api/providers/fetchers/litellm.ts @@ -51,9 +51,15 @@ export async function getLiteLLMModels(apiKey: string, baseUrl: string): Promise ) } + // Determine default context window based on model + let defaultContextWindow = 200000 + if (litellmModelName.includes("claude-sonnet-4") || litellmModelName.includes("claude-opus-4")) { + defaultContextWindow = 1000000 // 1M tokens for Claude 4 models + } + models[modelName] = { maxTokens: modelInfo.max_tokens || 8192, - contextWindow: modelInfo.max_input_tokens || 200000, + contextWindow: modelInfo.max_input_tokens || defaultContextWindow, supportsImages: Boolean(modelInfo.supports_vision), // litellm_params.model may have a prefix like openrouter/ supportsComputerUse, diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index 19c9a7c9fc2..3dbcc673ca7 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -2216,7 +2216,7 @@ describe("getTelemetryProperties", () => { mockCline.api = { getModel: vi.fn().mockReturnValue({ id: "claude-sonnet-4-20250514", - info: { contextWindow: 200000 }, + info: { contextWindow: 1000000 }, }), } })