diff --git a/open-sse/config/constants.js b/open-sse/config/constants.js index 900b974..78609d4 100644 --- a/open-sse/config/constants.js +++ b/open-sse/config/constants.js @@ -120,6 +120,14 @@ export const PROVIDERS = { "Anthropic-Beta": "claude-code-20250219,interleaved-thinking-2025-05-14" } }, + "minimax-cn": { + baseUrl: "https://api.minimaxi.com/anthropic/v1/messages", + format: "claude", + headers: { + "Anthropic-Version": "2023-06-01", + "Anthropic-Beta": "claude-code-20250219,interleaved-thinking-2025-05-14" + } + }, github: { baseUrl: "https://api.githubcopilot.com/chat/completions", // GitHub Copilot API endpoint for chat format: "openai", // GitHub Copilot uses OpenAI-compatible format diff --git a/open-sse/config/providerModels.js b/open-sse/config/providerModels.js index 95e1121..6c820f8 100644 --- a/open-sse/config/providerModels.js +++ b/open-sse/config/providerModels.js @@ -189,6 +189,7 @@ export const PROVIDER_ID_TO_ALIAS = { glm: "glm", kimi: "kimi", minimax: "minimax", + "minimax-cn": "minimax", }; export function getModelsByProviderId(providerId) { diff --git a/open-sse/executors/default.js b/open-sse/executors/default.js index f9d0a83..02a38af 100644 --- a/open-sse/executors/default.js +++ b/open-sse/executors/default.js @@ -23,6 +23,7 @@ export class DefaultExecutor extends BaseExecutor { case "glm": case "kimi": case "minimax": + case "minimax-cn": return `${this.config.baseUrl}?beta=true`; case "gemini": return `${this.config.baseUrl}/${model}:${stream ? "streamGenerateContent?alt=sse" : "generateContent"}`; @@ -44,6 +45,7 @@ export class DefaultExecutor extends BaseExecutor { case "glm": case "kimi": case "minimax": + case "minimax-cn": headers["x-api-key"] = credentials.apiKey; break; default: diff --git a/public/providers/minimax-cn.png b/public/providers/minimax-cn.png new file mode 100644 index 0000000..ac198ea Binary files /dev/null and b/public/providers/minimax-cn.png differ diff --git a/src/app/api/providers/[id]/test/route.js b/src/app/api/providers/[id]/test/route.js index 21bc6de..629752b 100644 --- a/src/app/api/providers/[id]/test/route.js +++ b/src/app/api/providers/[id]/test/route.js @@ -406,9 +406,14 @@ async function testApiKeyConnection(connection) { return { valid, error: valid ? null : "Invalid API key" }; } - case "minimax": { + case "minimax": + case "minimax-cn": { // MiniMax uses Claude-compatible API - const res = await fetch("https://api.minimax.io/anthropic/v1/messages", { + const minimaxEndpoints = { + minimax: "https://api.minimax.io/anthropic/v1/messages", + "minimax-cn": "https://api.minimaxi.com/anthropic/v1/messages", + }; + const res = await fetch(minimaxEndpoints[connection.provider], { method: "POST", headers: { "x-api-key": connection.apiKey, diff --git a/src/app/api/providers/validate/route.js b/src/app/api/providers/validate/route.js index d6c94ac..b26faaa 100644 --- a/src/app/api/providers/validate/route.js +++ b/src/app/api/providers/validate/route.js @@ -100,11 +100,13 @@ export async function POST(request) { case "glm": case "kimi": - case "minimax": { + case "minimax": + case "minimax-cn": { const claudeBaseUrls = { glm: "https://api.z.ai/api/anthropic/v1/messages", kimi: "https://api.kimi.com/coding/v1/messages", minimax: "https://api.minimax.io/anthropic/v1/messages", + "minimax-cn": "https://api.minimaxi.com/anthropic/v1/messages", }; const claudeRes = await fetch(claudeBaseUrls[provider], { method: "POST", diff --git a/src/shared/constants/config.js b/src/shared/constants/config.js index 357a197..524a09b 100644 --- a/src/shared/constants/config.js +++ b/src/shared/constants/config.js @@ -35,6 +35,7 @@ export const PROVIDER_ENDPOINTS = { glm: "https://api.z.ai/api/anthropic/v1/messages", kimi: "https://api.kimi.com/coding/v1/messages", minimax: "https://api.minimax.io/anthropic/v1/messages", + "minimax-cn": "https://api.minimaxi.com/anthropic/v1/messages", openai: "https://api.openai.com/v1/chat/completions", anthropic: "https://api.anthropic.com/v1/messages", gemini: "https://generativelanguage.googleapis.com/v1beta/models", diff --git a/src/shared/constants/providers.js b/src/shared/constants/providers.js index ed72c65..35687ff 100644 --- a/src/shared/constants/providers.js +++ b/src/shared/constants/providers.js @@ -18,6 +18,7 @@ export const APIKEY_PROVIDERS = { glm: { id: "glm", alias: "glm", name: "GLM Coding", icon: "code", color: "#2563EB", textIcon: "GL" }, kimi: { id: "kimi", alias: "kimi", name: "Kimi Coding", icon: "psychology", color: "#1E3A8A", textIcon: "KM" }, minimax: { id: "minimax", alias: "minimax", name: "Minimax Coding", icon: "memory", color: "#7C3AED", textIcon: "MM" }, + "minimax-cn": { id: "minimax-cn", alias: "minimax-cn", name: "Minimax Coding (China)", icon: "memory", color: "#DC2626", textIcon: "MC" }, openai: { id: "openai", alias: "openai", name: "OpenAI", icon: "auto_awesome", color: "#10A37F", textIcon: "OA" }, anthropic: { id: "anthropic", alias: "anthropic", name: "Anthropic", icon: "smart_toy", color: "#D97757", textIcon: "AN" }, gemini: { id: "gemini", alias: "gemini", name: "Gemini", icon: "diamond", color: "#4285F4", textIcon: "GE" },