From e7066b99972129114fb223c6cde40f3127599ae6 Mon Sep 17 00:00:00 2001 From: kaitranntt Date: Wed, 24 Dec 2025 18:32:07 -0500 Subject: [PATCH] feat(api): add Minimax, DeepSeek, Qwen provider presets Add three new Anthropic-compatible API providers as presets: - Minimax: M2.1/M2.1-lightning/M2 models with 1M context - DeepSeek: V3.2 and R1 reasoning model (128K context) - Qwen: Alibaba Cloud qwen3-coder-plus (256K context) Closes #123 --- README.md | 3 +++ src/api/services/provider-presets.ts | 33 +++++++++++++++++++++++ src/commands/api-command.ts | 7 ++++- ui/src/lib/provider-presets.ts | 39 ++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bcc539aa..a380165f 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,9 @@ The dashboard provides visual management for all account types: | **GLM** | API Key | `ccs glm` | Cost-optimized execution | | **Kimi** | API Key | `ccs kimi` | Long-context, thinking mode | | **Azure Foundry** | API Key | `ccs foundry` | Claude via Microsoft Azure | +| **Minimax** | API Key | `ccs minimax` | M2 series, 1M context | +| **DeepSeek** | API Key | `ccs deepseek` | V3.2 and R1 reasoning | +| **Qwen** | API Key | `ccs qwen` | Alibaba Cloud, qwen3-coder | **OpenRouter Integration** (v7.0.0): CCS v7.0.0 adds OpenRouter with interactive model picker, dynamic discovery, and tier mapping (opus/sonnet/haiku). Create via `ccs api create --preset openrouter` or dashboard. diff --git a/src/api/services/provider-presets.ts b/src/api/services/provider-presets.ts index fa34b0e3..85964f0e 100644 --- a/src/api/services/provider-presets.ts +++ b/src/api/services/provider-presets.ts @@ -98,6 +98,39 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [ apiKeyHint: 'Create resource at ai.azure.com, get API key from Keys tab', category: 'alternative', }, + { + id: 'minimax', + name: 'Minimax', + description: 'M2.1/M2.1-lightning/M2 - multilang coding (1M context)', + baseUrl: 'https://api.minimax.io/anthropic', + defaultProfileName: 'minimax', + defaultModel: 'MiniMax-M2.1', + apiKeyPlaceholder: 'YOUR_MINIMAX_API_KEY', + apiKeyHint: 'Get your API key at platform.minimax.io', + category: 'alternative', + }, + { + id: 'deepseek', + name: 'DeepSeek', + description: 'V3.2 and R1 reasoning model (128K context)', + baseUrl: 'https://api.deepseek.com/anthropic', + defaultProfileName: 'deepseek', + defaultModel: 'deepseek-chat', + apiKeyPlaceholder: 'sk-...', + apiKeyHint: 'Get your API key at platform.deepseek.com', + category: 'alternative', + }, + { + id: 'qwen', + name: 'Qwen', + description: 'Alibaba Cloud - qwen3-coder-plus (256K context)', + baseUrl: 'https://dashscope-intl.aliyuncs.com/apps/anthropic', + defaultProfileName: 'qwen', + defaultModel: 'qwen3-coder-plus', + apiKeyPlaceholder: 'sk-...', + apiKeyHint: 'Get your API key from Alibaba Cloud Model Studio', + category: 'alternative', + }, ]; /** Get preset by ID */ diff --git a/src/commands/api-command.ts b/src/commands/api-command.ts index 076eeb6c..06dfa95f 100644 --- a/src/commands/api-command.ts +++ b/src/commands/api-command.ts @@ -426,7 +426,7 @@ async function showHelp(): Promise { console.log(''); console.log(subheader('Options')); console.log( - ` ${color('--preset ', 'command')} Use provider preset (openrouter, glm, glmt, kimi, foundry)` + ` ${color('--preset ', 'command')} Use provider preset (openrouter, glm, glmt, kimi, foundry, minimax, deepseek, qwen)` ); console.log(` ${color('--base-url ', 'command')} API base URL (create)`); console.log(` ${color('--api-key ', 'command')} API key (create)`); @@ -442,6 +442,11 @@ async function showHelp(): Promise { console.log(` ${color('glmt', 'command')} GLMT - GLM with Thinking mode`); console.log(` ${color('kimi', 'command')} Kimi - Moonshot AI reasoning model`); console.log(` ${color('foundry', 'command')} Azure Foundry - Claude via Microsoft Azure`); + console.log(` ${color('minimax', 'command')} Minimax - M2 series with 1M context`); + console.log(` ${color('deepseek', 'command')} DeepSeek - V3.2 and R1 reasoning (128K)`); + console.log( + ` ${color('qwen', 'command')} Qwen - Alibaba Cloud qwen3-coder-plus (256K)` + ); console.log(''); console.log(subheader('Examples')); console.log(` ${dim('# Interactive wizard')}`); diff --git a/ui/src/lib/provider-presets.ts b/ui/src/lib/provider-presets.ts index b9b7375b..facac46d 100644 --- a/ui/src/lib/provider-presets.ts +++ b/ui/src/lib/provider-presets.ts @@ -93,6 +93,45 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [ apiKeyHint: 'Create resource at ai.azure.com, get API key from Keys tab', category: 'alternative', }, + { + id: 'minimax', + name: 'Minimax', + description: 'M2.1/M2.1-lightning/M2 - multilang coding (1M context)', + baseUrl: 'https://api.minimax.io/anthropic', + defaultProfileName: 'minimax', + badge: '1M context', + defaultModel: 'MiniMax-M2.1', + requiresApiKey: true, + apiKeyPlaceholder: 'YOUR_MINIMAX_API_KEY', + apiKeyHint: 'Get your API key at platform.minimax.io', + category: 'alternative', + }, + { + id: 'deepseek', + name: 'DeepSeek', + description: 'V3.2 and R1 reasoning model (128K context)', + baseUrl: 'https://api.deepseek.com/anthropic', + defaultProfileName: 'deepseek', + badge: 'Reasoning', + defaultModel: 'deepseek-chat', + requiresApiKey: true, + apiKeyPlaceholder: 'sk-...', + apiKeyHint: 'Get your API key at platform.deepseek.com', + category: 'alternative', + }, + { + id: 'qwen', + name: 'Qwen', + description: 'Alibaba Cloud - qwen3-coder-plus (256K context)', + baseUrl: 'https://dashscope-intl.aliyuncs.com/apps/anthropic', + defaultProfileName: 'qwen', + badge: 'Alibaba', + defaultModel: 'qwen3-coder-plus', + requiresApiKey: true, + apiKeyPlaceholder: 'sk-...', + apiKeyHint: 'Get your API key from Alibaba Cloud Model Studio', + category: 'alternative', + }, ]; /** Get presets by category */