diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 1b6b0918b1e3..609279c5dcfc 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -404,17 +404,6 @@ export function variants(model: Provider.Model): Record { expect(result).toEqual({}) }) - test("deepseek returns empty object", () => { + test("deepseek with reasoning enabled returns WIDELY_SUPPORTED_EFFORTS via openai-compatible", () => { const model = createMockModel({ id: "deepseek/deepseek-chat", providerID: "deepseek", @@ -2082,16 +2082,19 @@ 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("deepseek without reasoning capability returns empty object", () => { const model = createMockModel({ - id: "minimax/minimax-model", - providerID: "minimax", + id: "deepseek/deepseek-chat", + providerID: "deepseek", + capabilities: { reasoning: false }, api: { - id: "minimax-model", - url: "https://api.minimax.com", + id: "deepseek-chat", + url: "https://api.deepseek.com", npm: "@ai-sdk/openai-compatible", }, }) @@ -2099,18 +2102,19 @@ describe("ProviderTransform.variants", () => { expect(result).toEqual({}) }) - test("glm returns empty object", () => { + test("glm with reasoning enabled returns WIDELY_SUPPORTED_EFFORTS via openai-compatible", () => { const model = createMockModel({ - id: "glm/glm-4", - providerID: "glm", + id: "zai-coding/glm-5.1", + providerID: "zai-coding", api: { - id: "glm-4", - url: "https://api.glm.com", + id: "glm-5.1", + url: "https://open.bigmodel.cn/api/paas/v4", npm: "@ai-sdk/openai-compatible", }, }) const result = ProviderTransform.variants(model) - expect(result).toEqual({}) + expect(Object.keys(result)).toEqual(["low", "medium", "high"]) + expect(result.medium).toEqual({ reasoningEffort: "medium" }) }) test("mistral returns empty object", () => { @@ -2804,12 +2808,14 @@ describe("ProviderTransform.variants", () => { reasoningConfig: { type: "adaptive", maxReasoningEffort: "xhigh", + display: "summarized", }, }) expect(result.max).toEqual({ reasoningConfig: { type: "adaptive", maxReasoningEffort: "max", + display: "summarized", }, }) })