From 3ef0d349c7498236d3c16ffad8e7a15fe5e426b3 Mon Sep 17 00:00:00 2001 From: Elon Azoulay Date: Sat, 18 Apr 2026 12:46:27 -0700 Subject: [PATCH] fix(opencode): restore reasoning variants for openai-compatible deepseek glm and minimax --- packages/opencode/src/provider/transform.ts | 9 ++++-- .../opencode/test/provider/transform.test.ts | 30 +++++++++++++++---- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 1b6b0918b1e3..acfa4c62fa29 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -413,8 +413,13 @@ export function variants(model: Provider.Model): Record { expect(result).toEqual({}) }) - test("deepseek returns empty object", () => { + test("deepseek openai-compatible models return reasoning variants", () => { const model = createMockModel({ id: "deepseek/deepseek-chat", providerID: "deepseek", @@ -2082,10 +2082,12 @@ describe("ProviderTransform.variants", () => { }, }) const result = ProviderTransform.variants(model) - expect(result).toEqual({}) + expect(Object.keys(result)).toEqual(["low", "medium", "high"]) + expect(result.low).toEqual({ reasoningEffort: "low" }) + expect(result.high).toEqual({ reasoningEffort: "high" }) }) - test("minimax returns empty object", () => { + test("minimax openai-compatible models return reasoning variants", () => { const model = createMockModel({ id: "minimax/minimax-model", providerID: "minimax", @@ -2096,10 +2098,12 @@ describe("ProviderTransform.variants", () => { }, }) const result = ProviderTransform.variants(model) - expect(result).toEqual({}) + expect(Object.keys(result)).toEqual(["low", "medium", "high"]) + expect(result.low).toEqual({ reasoningEffort: "low" }) + expect(result.high).toEqual({ reasoningEffort: "high" }) }) - test("glm returns empty object", () => { + test("glm openai-compatible models return reasoning variants", () => { const model = createMockModel({ id: "glm/glm-4", providerID: "glm", @@ -2110,6 +2114,22 @@ describe("ProviderTransform.variants", () => { }, }) const result = ProviderTransform.variants(model) + expect(Object.keys(result)).toEqual(["low", "medium", "high"]) + expect(result.low).toEqual({ reasoningEffort: "low" }) + expect(result.high).toEqual({ reasoningEffort: "high" }) + }) + + test("deepseek models still return empty object for non-compatible SDKs", () => { + const model = createMockModel({ + id: "deepseek/deepseek-chat", + providerID: "deepseek", + api: { + id: "deepseek-chat", + url: "https://api.deepinfra.com", + npm: "@ai-sdk/deepinfra", + }, + }) + const result = ProviderTransform.variants(model) expect(result).toEqual({}) })