From 480ad4dfe2b3478f6bc1388cd5fd684e3e57eccb Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Wed, 15 Oct 2025 12:41:12 -0500 Subject: [PATCH 1/5] feat(models): add Claude Haiku 4.5 dated IDs; remove undated alias --- packages/types/src/providers/anthropic.ts | 13 +++++++++++++ packages/types/src/providers/bedrock.ts | 13 +++++++++++++ packages/types/src/providers/vertex.ts | 11 +++++++++++ src/api/providers/anthropic.ts | 2 ++ 4 files changed, 39 insertions(+) diff --git a/packages/types/src/providers/anthropic.ts b/packages/types/src/providers/anthropic.ts index 759ebdea555..356cdf0a026 100644 --- a/packages/types/src/providers/anthropic.ts +++ b/packages/types/src/providers/anthropic.ts @@ -139,6 +139,19 @@ export const anthropicModels = { cacheWritesPrice: 0.3, cacheReadsPrice: 0.03, }, + "claude-haiku-4-5-20251001": { + maxTokens: 64_000, + contextWindow: 200_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 1.0, + outputPrice: 5.0, + cacheWritesPrice: 1.25, + cacheReadsPrice: 0.1, + supportsReasoningBudget: true, + description: + "Claude Haiku 4.5 delivers near-frontier intelligence at lightning speeds with extended thinking, vision, and multilingual support.", + }, } as const satisfies Record export const ANTHROPIC_DEFAULT_MAX_TOKENS = 8192 diff --git a/packages/types/src/providers/bedrock.ts b/packages/types/src/providers/bedrock.ts index 87e62e10458..ecafbbbf54d 100644 --- a/packages/types/src/providers/bedrock.ts +++ b/packages/types/src/providers/bedrock.ts @@ -169,6 +169,19 @@ export const bedrockModels = { maxCachePoints: 4, cachableFields: ["system", "messages", "tools"], }, + "anthropic.claude-haiku-4-5-20251001-v1:0": { + maxTokens: 8192, + contextWindow: 200_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 1.0, + outputPrice: 5.0, + cacheWritesPrice: 1.25, // 5m cache writes + cacheReadsPrice: 0.1, // cache hits / refreshes + minTokensPerCachePoint: 2048, + maxCachePoints: 4, + cachableFields: ["system", "messages", "tools"], + }, "anthropic.claude-3-5-sonnet-20240620-v1:0": { maxTokens: 8192, contextWindow: 200_000, diff --git a/packages/types/src/providers/vertex.ts b/packages/types/src/providers/vertex.ts index f03d0b58052..199b139ddd3 100644 --- a/packages/types/src/providers/vertex.ts +++ b/packages/types/src/providers/vertex.ts @@ -187,6 +187,17 @@ export const vertexModels = { cacheReadsPrice: 0.3, supportsReasoningBudget: true, }, + "claude-haiku-4-5@20251001": { + maxTokens: 8192, + contextWindow: 200_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 1.0, + outputPrice: 5.0, + cacheWritesPrice: 1.25, + cacheReadsPrice: 0.1, + supportsReasoningBudget: true, + }, "claude-opus-4-1@20250805": { maxTokens: 8192, contextWindow: 200_000, diff --git a/src/api/providers/anthropic.ts b/src/api/providers/anthropic.ts index 3fb60c0e4fd..b2e158eca53 100644 --- a/src/api/providers/anthropic.ts +++ b/src/api/providers/anthropic.ts @@ -62,6 +62,7 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa case "claude-3-5-sonnet-20241022": case "claude-3-5-haiku-20241022": case "claude-3-opus-20240229": + case "claude-haiku-4-5-20251001": case "claude-3-haiku-20240307": { /** * The latest message will be the new user message, one before @@ -122,6 +123,7 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa case "claude-3-5-sonnet-20241022": case "claude-3-5-haiku-20241022": case "claude-3-opus-20240229": + case "claude-haiku-4-5-20251001": case "claude-3-haiku-20240307": betas.push("prompt-caching-2024-07-31") return { headers: { "anthropic-beta": betas.join(",") } } From 076e22a5facd7b9ff8b9047a2984d6eb0ecfb194 Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Wed, 15 Oct 2025 12:50:01 -0500 Subject: [PATCH 2/5] feat(claude-code): add claude-haiku-4-5-20251001 model --- packages/types/src/providers/claude-code.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/types/src/providers/claude-code.ts b/packages/types/src/providers/claude-code.ts index 29afc688867..d0b0f680af9 100644 --- a/packages/types/src/providers/claude-code.ts +++ b/packages/types/src/providers/claude-code.ts @@ -105,4 +105,12 @@ export const claudeCodeModels = { supportsReasoningBudget: false, requiredReasoningBudget: false, }, + "claude-haiku-4-5-20251001": { + ...anthropicModels["claude-haiku-4-5-20251001"], + supportsImages: false, + supportsPromptCache: true, // Claude Code does report cache tokens + supportsReasoningEffort: false, + supportsReasoningBudget: false, + requiredReasoningBudget: false, + }, } as const satisfies Record From e965e00d74789b3eb91c972173954f55e372a4e0 Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Wed, 15 Oct 2025 12:55:17 -0500 Subject: [PATCH 3/5] fix(bedrock): add supportsReasoningBudget for claude-haiku-4-5-20251001 --- packages/types/src/providers/bedrock.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/types/src/providers/bedrock.ts b/packages/types/src/providers/bedrock.ts index ecafbbbf54d..251757cad85 100644 --- a/packages/types/src/providers/bedrock.ts +++ b/packages/types/src/providers/bedrock.ts @@ -174,6 +174,7 @@ export const bedrockModels = { contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, + supportsReasoningBudget: true, inputPrice: 1.0, outputPrice: 5.0, cacheWritesPrice: 1.25, // 5m cache writes From 7d93904cbf0926b743e933ce04976156e5818f6b Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Wed, 15 Oct 2025 13:11:21 -0500 Subject: [PATCH 4/5] feat(openrouter): add support for reasoning budget in Claude Haiku 4.5 --- packages/types/src/providers/openrouter.ts | 1 + src/api/providers/fetchers/openrouter.ts | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/packages/types/src/providers/openrouter.ts b/packages/types/src/providers/openrouter.ts index dde6730e52e..97f36a0c2b2 100644 --- a/packages/types/src/providers/openrouter.ts +++ b/packages/types/src/providers/openrouter.ts @@ -84,6 +84,7 @@ export const OPEN_ROUTER_REASONING_BUDGET_MODELS = new Set([ "anthropic/claude-opus-4.1", "anthropic/claude-sonnet-4", "anthropic/claude-sonnet-4.5", + "anthropic/claude-haiku-4.5", "google/gemini-2.5-pro-preview", "google/gemini-2.5-pro", "google/gemini-2.5-flash-preview-05-20", diff --git a/src/api/providers/fetchers/openrouter.ts b/src/api/providers/fetchers/openrouter.ts index 7e3dd7609f0..fa0f0954cd9 100644 --- a/src/api/providers/fetchers/openrouter.ts +++ b/src/api/providers/fetchers/openrouter.ts @@ -253,6 +253,13 @@ export const parseOpenRouterModel = ({ modelInfo.maxTokens = anthropicModels["claude-opus-4-1-20250805"].maxTokens } + // Ensure correct reasoning handling for Claude Haiku 4.5 on OpenRouter + // Use budget control and disable effort-based reasoning fallback + if (id === "anthropic/claude-haiku-4.5") { + modelInfo.supportsReasoningBudget = true + modelInfo.supportsReasoningEffort = false + } + // Set horizon-alpha model to 32k max tokens if (id === "openrouter/horizon-alpha") { modelInfo.maxTokens = 32768 From 2ca8f15cc1c71be89d116627a36509667d7e79e9 Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Wed, 15 Oct 2025 14:24:18 -0500 Subject: [PATCH 5/5] test(openrouter): update expected reasoning budget models; feat: add overrides for anthropic/claude-haiku-4.5 --- src/api/providers/fetchers/__tests__/openrouter.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/api/providers/fetchers/__tests__/openrouter.spec.ts b/src/api/providers/fetchers/__tests__/openrouter.spec.ts index c5380958226..993cd4c23de 100644 --- a/src/api/providers/fetchers/__tests__/openrouter.spec.ts +++ b/src/api/providers/fetchers/__tests__/openrouter.spec.ts @@ -137,6 +137,7 @@ describe("OpenRouter API", () => { "google/gemini-2.5-pro", "anthropic/claude-opus-4.1", // Not yet available in OpenRouter API "anthropic/claude-sonnet-4.5", // Not yet available in OpenRouter API + "anthropic/claude-haiku-4.5", // Not yet available in OpenRouter API ]) const expectedReasoningBudgetModels = Array.from(OPEN_ROUTER_REASONING_BUDGET_MODELS)