Files
openclaw/extensions/mistral/model-definitions.test.ts
Steven Liekens 8d70f7e90f feat(mistral): add mistral-medium-3-5 model with reasoning support
- Add mistral-medium-3-5 to model catalog with reasoning: true
- Add compat support for reasoning in api.ts
- Update docs/providers/mistral.md

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-05-09 06:37:45 -04:00

68 lines
1.8 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
buildMistralCatalogModels,
buildMistralModelDefinition,
MISTRAL_DEFAULT_CONTEXT_WINDOW,
MISTRAL_DEFAULT_COST,
MISTRAL_DEFAULT_MAX_TOKENS,
MISTRAL_DEFAULT_MODEL_ID,
} from "./model-definitions.js";
describe("mistral model definitions", () => {
it("uses current Pi pricing for the bundled default model", () => {
expect(buildMistralModelDefinition()).toMatchObject({
id: MISTRAL_DEFAULT_MODEL_ID,
contextWindow: MISTRAL_DEFAULT_CONTEXT_WINDOW,
maxTokens: MISTRAL_DEFAULT_MAX_TOKENS,
cost: MISTRAL_DEFAULT_COST,
});
expect(MISTRAL_DEFAULT_COST).toEqual({
input: 0.5,
output: 1.5,
cacheRead: 0,
cacheWrite: 0,
});
});
it("publishes a curated set of current Mistral catalog models", () => {
expect(buildMistralCatalogModels()).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: "codestral-latest",
input: ["text"],
contextWindow: 256000,
maxTokens: 4096,
}),
expect.objectContaining({
id: "magistral-small",
reasoning: true,
input: ["text"],
contextWindow: 128000,
maxTokens: 40000,
}),
expect.objectContaining({
id: "mistral-medium-3-5",
reasoning: true,
input: ["text", "image"],
contextWindow: 262144,
maxTokens: 8192,
}),
expect.objectContaining({
id: "mistral-small-latest",
reasoning: true,
input: ["text", "image"],
contextWindow: 128000,
maxTokens: 16384,
}),
expect.objectContaining({
id: "pixtral-large-latest",
input: ["text", "image"],
contextWindow: 128000,
maxTokens: 32768,
}),
]),
);
});
});