diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 93a85598..e61d93dc 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- Fixed OpenCode Go GLM-5.2 metadata to expose `xhigh` reasoning and send `reasoning_effort: "max"` ([#5967](https://github.com/earendil-works/pi/issues/5967)). + ## [0.79.10] - 2026-06-22 ### Fixed diff --git a/packages/ai/scripts/generate-models.ts b/packages/ai/scripts/generate-models.ts index 3e85db82..4f9cc78d 100644 --- a/packages/ai/scripts/generate-models.ts +++ b/packages/ai/scripts/generate-models.ts @@ -164,6 +164,14 @@ const ZAI_GLM52_THINKING_LEVEL_MAP = { high: "high", xhigh: "max", } as const; +const OPENCODE_GO_GLM52_THINKING_LEVEL_MAP = { + off: null, + minimal: null, + low: null, + medium: null, + high: "high", + xhigh: "max", +} as const; const EAGER_TOOL_INPUT_STREAMING_UNSUPPORTED_ANTHROPIC_MODELS = new Set([ "github-copilot:claude-haiku-4.5", "github-copilot:claude-sonnet-4", @@ -380,6 +388,9 @@ function applyThinkingLevelMetadata(model: Model): void { if (model.provider === "fireworks" && model.id === "accounts/fireworks/models/glm-5p2") { mergeThinkingLevelMap(model, { off: "none", minimal: null, low: "high", medium: "high", xhigh: "max" }); } + if (model.provider === "opencode-go" && model.id === "glm-5.2") { + mergeThinkingLevelMap(model, OPENCODE_GO_GLM52_THINKING_LEVEL_MAP); + } if (model.provider === "opencode-go" && model.id === "kimi-k2.6") { // OpenCode Go exposes Kimi K2.6 thinking as on/off, not distinct effort tiers. mergeThinkingLevelMap(model, { minimal: null, low: null, medium: null }); diff --git a/packages/ai/src/models.generated.ts b/packages/ai/src/models.generated.ts index cfc69879..64325817 100644 --- a/packages/ai/src/models.generated.ts +++ b/packages/ai/src/models.generated.ts @@ -8594,6 +8594,7 @@ export const MODELS = { baseUrl: "https://opencode.ai/zen/go/v1", compat: {"maxTokensField":"max_tokens"}, reasoning: true, + thinkingLevelMap: {"off":null,"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"}, input: ["text"], cost: { input: 1.4,