diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 0d6c4a707ac..ae493eaa0d9 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -73,7 +73,7 @@ export namespace Provider { options: { headers: { "anthropic-beta": - "claude-code-20250219,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14", + "claude-code-20250219,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,adaptive-thinking-2026-01-28,context-1m-2025-08-07", }, }, } diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index b4f1aaca4d5..bca9fe17a83 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -447,8 +447,33 @@ export namespace ProviderTransform { case "@ai-sdk/anthropic": // https://v5.ai-sdk.dev/providers/ai-sdk-providers/anthropic - case "@ai-sdk/google-vertex/anthropic": + case "@ai-sdk/google-vertex/anthropic": { // https://v5.ai-sdk.dev/providers/ai-sdk-providers/google-vertex#anthropic-provider + const modelId = model.id || "" + const isOpus46 = + modelId.includes("claude-opus-4.6") || + modelId.includes("claude-opus-4-6") || + modelId.includes("claude-opus-4.6") + + if (isOpus46) { + // Opus 4.6 uses adaptive thinking with effort levels + return { + high: { + thinking: { + type: "enabled", + effort: "high", + }, + }, + max: { + thinking: { + type: "enabled", + effort: "max", + }, + }, + } + } + + // Older models use manual thinking with budgetTokens return { high: { thinking: { @@ -463,6 +488,7 @@ export namespace ProviderTransform { }, }, } + } case "@ai-sdk/amazon-bedrock": // https://v5.ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock