fix(models): align minimax and zai defaults (#2445)
Update the coding-agent default model picks for ZAI, Cerebras, and MiniMax so new sessions prefer the current model lineup. Add the missing MiniMax-M2.1-highspeed direct provider entries and normalize MiniMax Anthropic-compatible context limits so the catalog matches the provider's supported model set.
This commit is contained in:
@@ -914,6 +914,46 @@ async function generateModels() {
|
||||
});
|
||||
}
|
||||
|
||||
const minimaxDirectProviders = ["minimax", "minimax-cn"] as const;
|
||||
const minimaxAnthropicIds = new Set([
|
||||
"MiniMax-M2",
|
||||
"MiniMax-M2.1",
|
||||
"MiniMax-M2.1-highspeed",
|
||||
"MiniMax-M2.5",
|
||||
"MiniMax-M2.5-highspeed",
|
||||
"MiniMax-M2.7",
|
||||
"MiniMax-M2.7-highspeed",
|
||||
]);
|
||||
|
||||
for (const candidate of allModels) {
|
||||
if (
|
||||
(candidate.provider === "minimax" || candidate.provider === "minimax-cn") &&
|
||||
minimaxAnthropicIds.has(candidate.id)
|
||||
) {
|
||||
candidate.contextWindow = 204800;
|
||||
candidate.maxTokens = 131072;
|
||||
}
|
||||
}
|
||||
|
||||
for (const provider of minimaxDirectProviders) {
|
||||
const baseModel = allModels.find((m) => m.provider === provider && m.id === "MiniMax-M2.1");
|
||||
if (!baseModel) continue;
|
||||
if (allModels.some((m) => m.provider === provider && m.id === "MiniMax-M2.1-highspeed")) continue;
|
||||
|
||||
allModels.push({
|
||||
...baseModel,
|
||||
id: "MiniMax-M2.1-highspeed",
|
||||
name: "MiniMax-M2.1-highspeed",
|
||||
cost: {
|
||||
...baseModel.cost,
|
||||
input: baseModel.cost.input * 2,
|
||||
output: baseModel.cost.output * 2,
|
||||
},
|
||||
contextWindow: 204800,
|
||||
maxTokens: 131072,
|
||||
});
|
||||
}
|
||||
|
||||
// OpenAI Codex (ChatGPT OAuth) models
|
||||
// NOTE: These are not fetched from models.dev; we keep a small, explicit list to avoid aliases.
|
||||
// Context window is based on observed server limits (400s above ~272k), not marketing numbers.
|
||||
|
||||
@@ -4512,8 +4512,8 @@ export const MODELS = {
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
},
|
||||
contextWindow: 196608,
|
||||
maxTokens: 128000,
|
||||
contextWindow: 204800,
|
||||
maxTokens: 131072,
|
||||
} satisfies Model<"anthropic-messages">,
|
||||
"MiniMax-M2.1": {
|
||||
id: "MiniMax-M2.1",
|
||||
@@ -4532,6 +4532,23 @@ export const MODELS = {
|
||||
contextWindow: 204800,
|
||||
maxTokens: 131072,
|
||||
} satisfies Model<"anthropic-messages">,
|
||||
"MiniMax-M2.1-highspeed": {
|
||||
id: "MiniMax-M2.1-highspeed",
|
||||
name: "MiniMax-M2.1-highspeed",
|
||||
api: "anthropic-messages",
|
||||
provider: "minimax",
|
||||
baseUrl: "https://api.minimax.io/anthropic",
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
cost: {
|
||||
input: 0.6,
|
||||
output: 2.4,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
},
|
||||
contextWindow: 204800,
|
||||
maxTokens: 131072,
|
||||
} satisfies Model<"anthropic-messages">,
|
||||
"MiniMax-M2.5": {
|
||||
id: "MiniMax-M2.5",
|
||||
name: "MiniMax-M2.5",
|
||||
@@ -4616,8 +4633,8 @@ export const MODELS = {
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
},
|
||||
contextWindow: 196608,
|
||||
maxTokens: 128000,
|
||||
contextWindow: 204800,
|
||||
maxTokens: 131072,
|
||||
} satisfies Model<"anthropic-messages">,
|
||||
"MiniMax-M2.1": {
|
||||
id: "MiniMax-M2.1",
|
||||
@@ -4636,6 +4653,23 @@ export const MODELS = {
|
||||
contextWindow: 204800,
|
||||
maxTokens: 131072,
|
||||
} satisfies Model<"anthropic-messages">,
|
||||
"MiniMax-M2.1-highspeed": {
|
||||
id: "MiniMax-M2.1-highspeed",
|
||||
name: "MiniMax-M2.1-highspeed",
|
||||
api: "anthropic-messages",
|
||||
provider: "minimax-cn",
|
||||
baseUrl: "https://api.minimaxi.com/anthropic",
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
cost: {
|
||||
input: 0.6,
|
||||
output: 2.4,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
},
|
||||
contextWindow: 204800,
|
||||
maxTokens: 131072,
|
||||
} satisfies Model<"anthropic-messages">,
|
||||
"MiniMax-M2.5": {
|
||||
id: "MiniMax-M2.5",
|
||||
name: "MiniMax-M2.5",
|
||||
|
||||
@@ -26,11 +26,11 @@ export const defaultModelPerProvider: Record<KnownProvider, string> = {
|
||||
"vercel-ai-gateway": "anthropic/claude-opus-4-6",
|
||||
xai: "grok-4-fast-non-reasoning",
|
||||
groq: "openai/gpt-oss-120b",
|
||||
cerebras: "zai-glm-4.6",
|
||||
zai: "glm-4.6",
|
||||
cerebras: "zai-glm-4.7",
|
||||
zai: "glm-5",
|
||||
mistral: "devstral-medium-latest",
|
||||
minimax: "MiniMax-M2.1",
|
||||
"minimax-cn": "MiniMax-M2.1",
|
||||
minimax: "MiniMax-M2.7",
|
||||
"minimax-cn": "MiniMax-M2.7",
|
||||
huggingface: "moonshotai/Kimi-K2.5",
|
||||
opencode: "claude-opus-4-6",
|
||||
"opencode-go": "kimi-k2.5",
|
||||
|
||||
@@ -378,6 +378,13 @@ describe("default model selection", () => {
|
||||
expect(defaultModelPerProvider["openai-codex"]).toBe("gpt-5.4");
|
||||
});
|
||||
|
||||
test("zai, minimax, and cerebras defaults track current models", () => {
|
||||
expect(defaultModelPerProvider.zai).toBe("glm-5");
|
||||
expect(defaultModelPerProvider.minimax).toBe("MiniMax-M2.7");
|
||||
expect(defaultModelPerProvider["minimax-cn"]).toBe("MiniMax-M2.7");
|
||||
expect(defaultModelPerProvider.cerebras).toBe("zai-glm-4.7");
|
||||
});
|
||||
|
||||
test("ai-gateway default is opus 4.6", () => {
|
||||
expect(defaultModelPerProvider["vercel-ai-gateway"]).toBe("anthropic/claude-opus-4-6");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user