From a18481a39099cf7bcfaa2c1d087016f36d6eb18d Mon Sep 17 00:00:00 2001 From: adavila0703 Date: Tue, 5 May 2026 16:10:44 -0500 Subject: [PATCH] fix(opencode): default temperature for openai-compatible config models Config-defined @ai-sdk/openai-compatible models left capabilities.temperature false when unset, so LLM never sent temperature despite agent config. Fixes #25755 Co-authored-by: Cursor --- packages/opencode/src/provider/provider.ts | 5 ++++- packages/opencode/test/provider/provider.test.ts | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 939110e044fb..e929f80238b5 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -1205,7 +1205,10 @@ const layer: Layer.Layer< name, providerID: ProviderID.make(providerID), capabilities: { - temperature: model.temperature ?? existingModel?.capabilities.temperature ?? false, + temperature: + model.temperature ?? + existingModel?.capabilities.temperature ?? + (apiNpm === "@ai-sdk/openai-compatible" ? true : false), reasoning: model.reasoning ?? existingModel?.capabilities.reasoning ?? false, attachment: model.attachment ?? existingModel?.capabilities.attachment ?? false, toolcall: model.tool_call ?? existingModel?.capabilities.toolcall ?? true, diff --git a/packages/opencode/test/provider/provider.test.ts b/packages/opencode/test/provider/provider.test.ts index 924f42888b79..9070b1dd08be 100644 --- a/packages/opencode/test/provider/provider.test.ts +++ b/packages/opencode/test/provider/provider.test.ts @@ -308,6 +308,7 @@ test("custom provider with npm package", async () => { expect(providers[ProviderID.make("custom-provider")]).toBeDefined() expect(providers[ProviderID.make("custom-provider")].name).toBe("Custom Provider") expect(providers[ProviderID.make("custom-provider")].models["custom-model"]).toBeDefined() + expect(providers[ProviderID.make("custom-provider")].models["custom-model"].capabilities.temperature).toBe(true) }, }) })