diff options
| author | Ruben De Smet <[email protected]> | 2026-04-29 23:26:24 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-29 16:26:24 -0500 |
| commit | 639e27c3ce3164480ef6abbb5775285ea0f51aa4 (patch) | |
| tree | 30962919182db728d6eb746451d602626970ee29 | |
| parent | 1124ae17b4b6d9a5f5bbf94213de67a85fcf97ec (diff) | |
| download | opencode-639e27c3ce3164480ef6abbb5775285ea0f51aa4.tar.gz opencode-639e27c3ce3164480ef6abbb5775285ea0f51aa4.zip | |
feat: add Mistral Medium 3.5 with reasoning support (#24996)
| -rw-r--r-- | packages/opencode/src/provider/transform.ts | 5 | ||||
| -rw-r--r-- | packages/opencode/test/provider/transform.test.ts | 19 |
2 files changed, 21 insertions, 3 deletions
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index a8f2fcf30..b52c94cc0 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -760,9 +760,10 @@ export function variants(model: Provider.Model): Record<string, Record<string, a // https://v5.ai-sdk.dev/providers/ai-sdk-providers/mistral // https://docs.mistral.ai/capabilities/reasoning/adjustable if (!model.capabilities.reasoning) return {} - // Only Mistral Small 4 supports reasoning (mistral-small-2603, mistral-small-latest) + // Only Mistral Small 4 and Medium 3.5 support reasoning + const MISTRAL_REASONING_IDS = ["mistral-small-2603", "mistral-small-latest", "mistral-medium-3.5"] const mistralId = model.api.id.toLowerCase() - if (!mistralId.includes("mistral-small-2603") && !mistralId.includes("mistral-small-latest")) return {} + if (!MISTRAL_REASONING_IDS.some((id) => mistralId.includes(id))) return {} return { high: { reasoningEffort: "high" }, } diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index c4831fa82..a12165b4f 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -2257,7 +2257,7 @@ describe("ProviderTransform.variants", () => { expect(result).toEqual({}) }) - test("mistral with reasoning returns variants", () => { + test("mistral models with reasoning support return variants", () => { const model = createMockModel({ id: "mistral/mistral-small-latest", providerID: "mistral", @@ -2274,6 +2274,23 @@ describe("ProviderTransform.variants", () => { }) }) + test("mistral-medium-3.5 with reasoning returns variants", () => { + const model = createMockModel({ + id: "mistral/mistral-medium-3.5", + providerID: "mistral", + api: { + id: "mistral-medium-3.5", + url: "https://api.mistral.com", + npm: "@ai-sdk/mistral", + }, + capabilities: { reasoning: true }, + }) + const result = ProviderTransform.variants(model) + expect(result).toEqual({ + high: { reasoningEffort: "high" }, + }) + }) + test("mistral without reasoning returns empty object", () => { const model = createMockModel({ id: "mistral/mistral-large", |
