From 7c609d7a3e69a1ad5017d4287f96018ce9e6f69b Mon Sep 17 00:00:00 2001 From: Blade096 <46746496+Blade096@users.noreply.github.com> Date: Fri, 6 Feb 2026 15:10:57 +0700 Subject: [PATCH] feat(providers): add Minimax Coding (China) provider - Add minimax-cn provider with China endpoint (api.minimaxi.com) - Add provider icon and configuration - Add validation and test support - Add API configuration in open-sse Co-authored-by: Blade096 <46746496+Blade096@users.noreply.github.com> Co-authored-by: Sisyphus Co-authored-by: Cursor --- open-sse/config/constants.js | 8 ++++++++ open-sse/config/providerModels.js | 1 + open-sse/executors/default.js | 2 ++ public/providers/minimax-cn.png | Bin 0 -> 12225 bytes src/app/api/providers/[id]/test/route.js | 9 +++++++-- src/app/api/providers/validate/route.js | 4 +++- src/shared/constants/config.js | 1 + src/shared/constants/providers.js | 1 + 8 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 public/providers/minimax-cn.png 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 0000000000000000000000000000000000000000..ac198eaf9cfb745d3ae250ee3fd1b02bf1cd0db9 GIT binary patch literal 12225 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