diff --git a/src/config/claudeProviderPresets.ts b/src/config/claudeProviderPresets.ts index 2ed5dcd88..dc4779eea 100644 --- a/src/config/claudeProviderPresets.ts +++ b/src/config/claudeProviderPresets.ts @@ -324,6 +324,58 @@ export const providerPresets: ProviderPreset[] = [ icon: "minimax", iconColor: "#FF6B6B", }, + { + name: "MiniMax Highspeed", + websiteUrl: "https://platform.minimaxi.com", + apiKeyUrl: "https://platform.minimaxi.com/subscribe/coding-plan", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.minimaxi.com/anthropic", + ANTHROPIC_AUTH_TOKEN: "", + API_TIMEOUT_MS: "3000000", + CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1, + ANTHROPIC_MODEL: "MiniMax-M2.7-highspeed", + ANTHROPIC_DEFAULT_SONNET_MODEL: "MiniMax-M2.7-highspeed", + ANTHROPIC_DEFAULT_OPUS_MODEL: "MiniMax-M2.7-highspeed", + ANTHROPIC_DEFAULT_HAIKU_MODEL: "MiniMax-M2.7-highspeed", + }, + }, + category: "cn_official", + isPartner: true, + partnerPromotionKey: "minimax_cn", + theme: { + backgroundColor: "#f64551", + textColor: "#FFFFFF", + }, + icon: "minimax", + iconColor: "#FF6B6B", + }, + { + name: "MiniMax en Highspeed", + websiteUrl: "https://platform.minimax.io", + apiKeyUrl: "https://platform.minimax.io/subscribe/coding-plan", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.minimax.io/anthropic", + ANTHROPIC_AUTH_TOKEN: "", + API_TIMEOUT_MS: "3000000", + CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1, + ANTHROPIC_MODEL: "MiniMax-M2.7-highspeed", + ANTHROPIC_DEFAULT_SONNET_MODEL: "MiniMax-M2.7-highspeed", + ANTHROPIC_DEFAULT_OPUS_MODEL: "MiniMax-M2.7-highspeed", + ANTHROPIC_DEFAULT_HAIKU_MODEL: "MiniMax-M2.7-highspeed", + }, + }, + category: "cn_official", + isPartner: true, + partnerPromotionKey: "minimax_en", + theme: { + backgroundColor: "#f64551", + textColor: "#FFFFFF", + }, + icon: "minimax", + iconColor: "#FF6B6B", + }, { name: "DouBaoSeed", websiteUrl: "https://www.volcengine.com/product/doubao", diff --git a/tests/config/claudeProviderPresets.test.ts b/tests/config/claudeProviderPresets.test.ts index dc1f4397c..a20b4ccfb 100644 --- a/tests/config/claudeProviderPresets.test.ts +++ b/tests/config/claudeProviderPresets.test.ts @@ -1,6 +1,85 @@ import { describe, expect, it } from "vitest"; import { providerPresets } from "@/config/claudeProviderPresets"; +describe("MiniMax Provider Presets", () => { + const minimaxCn = providerPresets.find((p) => p.name === "MiniMax"); + const minimaxEn = providerPresets.find((p) => p.name === "MiniMax en"); + const minimaxCnHighspeed = providerPresets.find( + (p) => p.name === "MiniMax Highspeed", + ); + const minimaxEnHighspeed = providerPresets.find( + (p) => p.name === "MiniMax en Highspeed", + ); + + it("should include MiniMax (CN) preset", () => { + expect(minimaxCn).toBeDefined(); + }); + + it("should include MiniMax en preset", () => { + expect(minimaxEn).toBeDefined(); + }); + + it("should include MiniMax Highspeed (CN) preset", () => { + expect(minimaxCnHighspeed).toBeDefined(); + }); + + it("should include MiniMax en Highspeed preset", () => { + expect(minimaxEnHighspeed).toBeDefined(); + }); + + it("MiniMax (CN) should use MiniMax-M2.7 model", () => { + const env = (minimaxCn!.settingsConfig as any).env; + expect(env.ANTHROPIC_MODEL).toBe("MiniMax-M2.7"); + expect(env.ANTHROPIC_DEFAULT_SONNET_MODEL).toBe("MiniMax-M2.7"); + expect(env.ANTHROPIC_DEFAULT_OPUS_MODEL).toBe("MiniMax-M2.7"); + expect(env.ANTHROPIC_DEFAULT_HAIKU_MODEL).toBe("MiniMax-M2.7"); + }); + + it("MiniMax en should use MiniMax-M2.7 model", () => { + const env = (minimaxEn!.settingsConfig as any).env; + expect(env.ANTHROPIC_MODEL).toBe("MiniMax-M2.7"); + expect(env.ANTHROPIC_DEFAULT_HAIKU_MODEL).toBe("MiniMax-M2.7"); + }); + + it("MiniMax Highspeed (CN) should use MiniMax-M2.7-highspeed model", () => { + const env = (minimaxCnHighspeed!.settingsConfig as any).env; + expect(env.ANTHROPIC_MODEL).toBe("MiniMax-M2.7-highspeed"); + expect(env.ANTHROPIC_DEFAULT_SONNET_MODEL).toBe("MiniMax-M2.7-highspeed"); + expect(env.ANTHROPIC_DEFAULT_OPUS_MODEL).toBe("MiniMax-M2.7-highspeed"); + expect(env.ANTHROPIC_DEFAULT_HAIKU_MODEL).toBe("MiniMax-M2.7-highspeed"); + }); + + it("MiniMax en Highspeed should use MiniMax-M2.7-highspeed model", () => { + const env = (minimaxEnHighspeed!.settingsConfig as any).env; + expect(env.ANTHROPIC_MODEL).toBe("MiniMax-M2.7-highspeed"); + expect(env.ANTHROPIC_DEFAULT_HAIKU_MODEL).toBe("MiniMax-M2.7-highspeed"); + }); + + it("MiniMax Highspeed (CN) should use CN base URL", () => { + const env = (minimaxCnHighspeed!.settingsConfig as any).env; + expect(env.ANTHROPIC_BASE_URL).toBe("https://api.minimaxi.com/anthropic"); + }); + + it("MiniMax en Highspeed should use international base URL", () => { + const env = (minimaxEnHighspeed!.settingsConfig as any).env; + expect(env.ANTHROPIC_BASE_URL).toBe("https://api.minimax.io/anthropic"); + }); + + it("all MiniMax presets should have cn_official category", () => { + expect(minimaxCn!.category).toBe("cn_official"); + expect(minimaxEn!.category).toBe("cn_official"); + expect(minimaxCnHighspeed!.category).toBe("cn_official"); + expect(minimaxEnHighspeed!.category).toBe("cn_official"); + }); + + it("all MiniMax presets should be marked as partner", () => { + expect(minimaxCn!.isPartner).toBe(true); + expect(minimaxEn!.isPartner).toBe(true); + expect(minimaxCnHighspeed!.isPartner).toBe(true); + expect(minimaxEnHighspeed!.isPartner).toBe(true); + }); +}); + describe("AWS Bedrock Provider Presets", () => { const bedrockAksk = providerPresets.find( (p) => p.name === "AWS Bedrock (AKSK)",