diff --git a/open-sse/config/providerRegistry.ts b/open-sse/config/providerRegistry.ts index 299494d1ca..d5982f751c 100644 --- a/open-sse/config/providerRegistry.ts +++ b/open-sse/config/providerRegistry.ts @@ -621,6 +621,44 @@ export const REGISTRY: Record = { { id: "auto", name: "Auto (Server Picks)" }, { id: "composer-2-fast", name: "Composer 2 Fast" }, { id: "composer-2", name: "Composer 2" }, + // + { id: "gpt-5.5-none", name: "GPT 5.5 None" }, + { id: "gpt-5.5-none-fast", name: "GPT 5.5 None Fast" }, + { id: "gpt-5.5-low", name: "GPT 5.5 Low" }, + { id: "gpt-5.5-low-fast", name: "GPT 5.5 Low Fast" }, + { id: "gpt-5.5-medium", name: "GPT 5.5 Medium" }, + { id: "gpt-5.5-medium-fast", name: "GPT 5.5 Medium Fast" }, + { id: "gpt-5.5-high", name: "GPT 5.5 High" }, + { id: "gpt-5.5-high-fast", name: "GPT 5.5 High Fast" }, + { id: "gpt-5.5-extra-high", name: "GPT 5.5 Extra High" }, + { id: "gpt-5.5-extra-high-fast", name: "GPT 5.5 Extra High Fast" }, + // + { id: "gpt-5.4-low", name: "GPT 5.4 Low" }, + { id: "gpt-5.4-low-fast", name: "GPT 5.4 Low Fast" }, + { id: "gpt-5.4-medium", name: "GPT 5.4 Medium" }, + { id: "gpt-5.4-medium-fast", name: "GPT 5.4 Medium Fast" }, + { id: "gpt-5.4-high", name: "GPT 5.4 High" }, + { id: "gpt-5.4-high-fast", name: "GPT 5.4 High Fast" }, + { id: "gpt-5.4-xhigh", name: "GPT 5.4 XHigh" }, + { id: "gpt-5.4-xhigh-fast", name: "GPT 5.4 XHigh Fast" }, + // + { id: "gpt-5.4-mini-none", name: "GPT 5.4 Mini None" }, + { id: "gpt-5.4-mini-low", name: "GPT 5.4 Mini Low" }, + { id: "gpt-5.4-mini-medium", name: "GPT 5.4 Mini Medium" }, + { id: "gpt-5.4-mini-high", name: "GPT 5.4 Mini High" }, + { id: "gpt-5.4-mini-xhigh", name: "GPT 5.4 Mini XHigh" }, + // + { id: "gpt-5.4-nano-none", name: "GPT 5.4 Nano None" }, + { id: "gpt-5.4-nano-low", name: "GPT 5.4 Nano Low" }, + { id: "gpt-5.4-nano-medium", name: "GPT 5.4 Nano Medium" }, + { id: "gpt-5.4-nano-high", name: "GPT 5.4 Nano High" }, + { id: "gpt-5.4-nano-xhigh", name: "GPT 5.4 Nano XHigh" }, + // + { id: "gpt-5.3-codex-spark-preview-low", name: "GPT 5.3 Codex Spark Preview Low" }, + { id: "gpt-5.3-codex-spark-preview", name: "GPT 5.3 Codex Spark Preview" }, + { id: "gpt-5.3-codex-spark-preview-high", name: "GPT 5.3 Codex Spark Preview High" }, + { id: "gpt-5.3-codex-spark-preview-xhigh", name: "GPT 5.3 Codex Spark Preview XHigh" }, + // { id: "gpt-5.3-codex-low", name: "GPT 5.3 Codex Low" }, { id: "gpt-5.3-codex-low-fast", name: "GPT 5.3 Codex Low Fast" }, { id: "gpt-5.3-codex", name: "GPT 5.3 Codex" }, @@ -629,95 +667,47 @@ export const REGISTRY: Record = { { id: "gpt-5.3-codex-high-fast", name: "GPT 5.3 Codex High Fast" }, { id: "gpt-5.3-codex-xhigh", name: "GPT 5.3 Codex XHigh" }, { id: "gpt-5.3-codex-xhigh-fast", name: "GPT 5.3 Codex XHigh Fast" }, - { id: "gpt-5.2", name: "GPT 5.2" }, - { id: "gpt-5.3-codex-spark-preview-low", name: "GPT 5.3 Codex Spark Preview Low" }, - { id: "gpt-5.3-codex-spark-preview", name: "GPT 5.3 Codex Spark Preview" }, - { id: "gpt-5.3-codex-spark-preview-high", name: "GPT 5.3 Codex Spark Preview High" }, - { id: "gpt-5.3-codex-spark-preview-xhigh", name: "GPT 5.3 Codex Spark Preview XHigh" }, - { id: "gpt-5.2-codex-low", name: "GPT 5.2 Codex Low" }, - { id: "gpt-5.2-codex-low-fast", name: "GPT 5.2 Codex Low Fast" }, - { id: "gpt-5.2-codex", name: "GPT 5.2 Codex" }, - { id: "gpt-5.2-codex-fast", name: "GPT 5.2 Codex Fast" }, - { id: "gpt-5.2-codex-high", name: "GPT 5.2 Codex High" }, - { id: "gpt-5.2-codex-high-fast", name: "GPT 5.2 Codex High Fast" }, - { id: "gpt-5.2-codex-xhigh", name: "GPT 5.2 Codex XHigh" }, - { id: "gpt-5.2-codex-xhigh-fast", name: "GPT 5.2 Codex XHigh Fast" }, - { id: "gpt-5.1-codex-max-low", name: "GPT 5.1 Codex Max Low" }, - { id: "gpt-5.1-codex-max-low-fast", name: "GPT 5.1 Codex Max Low Fast" }, - { id: "gpt-5.1-codex-max-medium", name: "GPT 5.1 Codex Max Medium" }, - { id: "gpt-5.1-codex-max-medium-fast", name: "GPT 5.1 Codex Max Medium Fast" }, - { id: "gpt-5.1-codex-max-high", name: "GPT 5.1 Codex Max High" }, - { id: "gpt-5.1-codex-max-high-fast", name: "GPT 5.1 Codex Max High Fast" }, - { id: "gpt-5.1-codex-max-xhigh", name: "GPT 5.1 Codex Max XHigh" }, - { id: "gpt-5.1-codex-max-xhigh-fast", name: "GPT 5.1 Codex Max XHigh Fast" }, - { id: "gpt-5.5-high", name: "GPT 5.5 High" }, - { id: "gpt-5.5-high-fast", name: "GPT 5.5 High Fast" }, - { id: "claude-opus-4-7-thinking-high", name: "Claude Opus 4.7 Thinking High" }, - { id: "gpt-5.4-high", name: "GPT 5.4 High" }, - { id: "gpt-5.4-high-fast", name: "GPT 5.4 High Fast" }, - { id: "claude-4.6-opus-high-thinking", name: "Claude 4.6 Opus High Thinking" }, - { id: "claude-4.6-opus-high-thinking-fast", name: "Claude 4.6 Opus High Thinking Fast" }, - { id: "claude-4.6-sonnet-medium", name: "Claude 4.6 Sonnet Medium" }, - { id: "claude-4.6-sonnet-medium-thinking", name: "Claude 4.6 Sonnet Medium Thinking" }, - { id: "gpt-5.5-none", name: "GPT 5.5 None" }, - { id: "gpt-5.5-none-fast", name: "GPT 5.5 None Fast" }, - { id: "gpt-5.5-low", name: "GPT 5.5 Low" }, - { id: "gpt-5.5-low-fast", name: "GPT 5.5 Low Fast" }, - { id: "gpt-5.5-medium", name: "GPT 5.5 Medium" }, - { id: "gpt-5.5-medium-fast", name: "GPT 5.5 Medium Fast" }, - { id: "gpt-5.5-extra-high", name: "GPT 5.5 Extra High" }, - { id: "gpt-5.5-extra-high-fast", name: "GPT 5.5 Extra High Fast" }, - { id: "claude-opus-4-7-low", name: "Claude Opus 4.7 Low" }, - { id: "claude-opus-4-7-medium", name: "Claude Opus 4.7 Medium" }, - { id: "claude-opus-4-7-high", name: "Claude Opus 4.7 High" }, - { id: "claude-opus-4-7-xhigh", name: "Claude Opus 4.7 XHigh" }, - { id: "claude-opus-4-7-max", name: "Claude Opus 4.7 Max" }, - { id: "claude-opus-4-7-thinking-low", name: "Claude Opus 4.7 Thinking Low" }, - { id: "claude-opus-4-7-thinking-medium", name: "Claude Opus 4.7 Thinking Medium" }, - { id: "claude-opus-4-7-thinking-xhigh", name: "Claude Opus 4.7 Thinking XHigh" }, - { id: "claude-opus-4-7-thinking-max", name: "Claude Opus 4.7 Thinking Max" }, - { id: "gpt-5.4-low", name: "GPT 5.4 Low" }, - { id: "gpt-5.4-medium", name: "GPT 5.4 Medium" }, - { id: "gpt-5.4-medium-fast", name: "GPT 5.4 Medium Fast" }, - { id: "gpt-5.4-xhigh", name: "GPT 5.4 XHigh" }, - { id: "gpt-5.4-xhigh-fast", name: "GPT 5.4 XHigh Fast" }, - { id: "claude-4.6-opus-high", name: "Claude 4.6 Opus High" }, - { id: "claude-4.6-opus-max", name: "Claude 4.6 Opus Max" }, - { id: "claude-4.6-opus-max-thinking", name: "Claude 4.6 Opus Max Thinking" }, - { id: "claude-4.6-opus-max-thinking-fast", name: "Claude 4.6 Opus Max Thinking Fast" }, - { id: "claude-4.5-opus-high", name: "Claude 4.5 Opus High" }, - { id: "claude-4.5-opus-high-thinking", name: "Claude 4.5 Opus High Thinking" }, + // { id: "gpt-5.2-low", name: "GPT 5.2 Low" }, { id: "gpt-5.2-low-fast", name: "GPT 5.2 Low Fast" }, + { id: "gpt-5.2", name: "GPT 5.2" }, { id: "gpt-5.2-fast", name: "GPT 5.2 Fast" }, { id: "gpt-5.2-high", name: "GPT 5.2 High" }, { id: "gpt-5.2-high-fast", name: "GPT 5.2 High Fast" }, { id: "gpt-5.2-xhigh", name: "GPT 5.2 XHigh" }, { id: "gpt-5.2-xhigh-fast", name: "GPT 5.2 XHigh Fast" }, - { id: "gemini-3.1-pro", name: "Gemini 3.1 Pro" }, - { id: "gpt-5.4-mini-none", name: "GPT 5.4 Mini None" }, - { id: "gpt-5.4-mini-low", name: "GPT 5.4 Mini Low" }, - { id: "gpt-5.4-mini-medium", name: "GPT 5.4 Mini Medium" }, - { id: "gpt-5.4-mini-high", name: "GPT 5.4 Mini High" }, - { id: "gpt-5.4-mini-xhigh", name: "GPT 5.4 Mini XHigh" }, - { id: "gpt-5.4-nano-none", name: "GPT 5.4 Nano None" }, - { id: "gpt-5.4-nano-low", name: "GPT 5.4 Nano Low" }, - { id: "gpt-5.4-nano-medium", name: "GPT 5.4 Nano Medium" }, - { id: "gpt-5.4-nano-high", name: "GPT 5.4 Nano High" }, - { id: "gpt-5.4-nano-xhigh", name: "GPT 5.4 Nano XHigh" }, - { id: "grok-4.3", name: "Grok 4.3" }, + // + { id: "claude-opus-4-7-low", name: "Claude Opus 4.7 Low" }, + { id: "claude-opus-4-7-medium", name: "Claude Opus 4.7 Medium" }, + { id: "claude-opus-4-7-high", name: "Claude Opus 4.7 High" }, + { id: "claude-opus-4-7-xhigh", name: "Claude Opus 4.7 XHigh" }, + { id: "claude-opus-4-7-max", name: "Claude Opus 4.7 Max" }, + + { id: "claude-opus-4-7-thinking-low", name: "Claude Opus 4.7 Thinking Low" }, + { id: "claude-opus-4-7-thinking-medium", name: "Claude Opus 4.7 Thinking Medium" }, + { id: "claude-opus-4-7-thinking-high", name: "Claude Opus 4.7 Thinking High" }, + { id: "claude-opus-4-7-thinking-xhigh", name: "Claude Opus 4.7 Thinking XHigh" }, + { id: "claude-opus-4-7-thinking-max", name: "Claude Opus 4.7 Thinking Max" }, + // + { id: "claude-4.6-opus-high", name: "Claude 4.6 Opus High" }, + { id: "claude-4.6-opus-high-thinking", name: "Claude 4.6 Opus High Thinking" }, + { id: "claude-4.6-opus-high-thinking-fast", name: "Claude 4.6 Opus High Thinking Fast" }, + { id: "claude-4.6-opus-max", name: "Claude 4.6 Opus Max" }, + { id: "claude-4.6-opus-max-thinking", name: "Claude 4.6 Opus Max Thinking" }, + { id: "claude-4.6-opus-max-thinking-fast", name: "Claude 4.6 Opus Max Thinking Fast" }, + // + { id: "claude-4.6-sonnet-medium", name: "Claude 4.6 Sonnet Medium" }, + { id: "claude-4.6-sonnet-medium-thinking", name: "Claude 4.6 Sonnet Medium Thinking" }, + // { id: "claude-4.5-sonnet", name: "Claude 4.5 Sonnet" }, { id: "claude-4.5-sonnet-thinking", name: "Claude 4.5 Sonnet Thinking" }, - { id: "gpt-5.1-low", name: "GPT 5.1 Low" }, - { id: "gpt-5.1", name: "GPT 5.1" }, - { id: "gpt-5.1-high", name: "GPT 5.1 High" }, + // + { id: "gemini-3.1-pro", name: "Gemini 3.1 Pro" }, + // { id: "gemini-3-flash", name: "Gemini 3 Flash" }, - { id: "gpt-5.1-codex-mini-low", name: "GPT 5.1 Codex Mini Low" }, - { id: "gpt-5.1-codex-mini", name: "GPT 5.1 Codex Mini" }, - { id: "gpt-5.1-codex-mini-high", name: "GPT 5.1 Codex Mini High" }, - { id: "claude-4-sonnet", name: "Claude 4 Sonnet" }, - { id: "claude-4-sonnet-thinking", name: "Claude 4 Sonnet Thinking" }, - { id: "gpt-5-mini", name: "GPT 5 Mini" }, + // + { id: "grok-4.3", name: "Grok 4.3" }, + // { id: "kimi-k2.5", name: "Kimi K2.5" }, ], }, @@ -738,7 +728,7 @@ export const REGISTRY: Record = { { id: "gpt-5.4-mini", name: "GPT-5.4 Mini" }, { id: "gpt-5.4-nano", name: "GPT-5.4 Nano" }, { id: "gpt-4.1", name: "GPT-4.1" }, - { id: "gpt-4o", name: "GPT-4o" }, + { id: "gpt-4o-2024-11-20", name: "GPT-4o" }, { id: "o3", name: "O3", unsupportedParams: REASONING_UNSUPPORTED }, ], }, @@ -809,8 +799,7 @@ export const REGISTRY: Record = { { id: "big-pickle", name: "Big Pickle" }, { id: "gpt-5-nano", name: "GPT 5 Nano", contextLength: 400000 }, { id: "minimax-m2.5-free", name: "MiniMax M2.5 Free", contextLength: 204800 }, - { id: "hy3-preview-free", name: "Hy3 Preview Free", contextLength: 256000 }, - { id: "ling-2.6-flash-free", name: "Ling 2.6 Flash Free", contextLength: 262000 }, + { id: "ling-2.6-1t-free", name: "Ling 2.6 Free", contextLength: 262000 }, { id: "trinity-large-preview-free", name: "Trinity Large Preview Free", @@ -935,23 +924,20 @@ export const REGISTRY: Record = { alias: "bcp", format: "claude", executor: "default", - baseUrl: "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1/messages", + baseUrl: "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1", chatPath: "/messages", - urlSuffix: "?beta=true", authType: "apikey", authHeader: "x-api-key", headers: { "Anthropic-Version": ANTHROPIC_VERSION_HEADER, }, models: [ - { id: "qwen3.5-plus", name: "Qwen3.5 Plus" }, - { id: "qwen3-max-2026-01-23", name: "Qwen3 Max (2026-01-23)" }, - { id: "qwen3-coder-next", name: "Qwen3 Coder Next" }, - { id: "qwen3-coder-plus", name: "Qwen3 Coder Plus" }, - { id: "MiniMax-M2.5", name: "MiniMax M2.5" }, + { id: "qwen3.6-plus", name: "Qwen3.6 Plus(vision)" }, + { id: "qwen3.5-plus", name: "Qwen3.5 Plus(vision)" }, + { id: "qwen3-max-2026-01-23", name: "Qwen3 Max" }, + { id: "kimi-k2.5", name: "Kimi K2.5(vision)" }, { id: "glm-5", name: "GLM 5" }, - { id: "glm-4.7", name: "GLM 4.7" }, - { id: "kimi-k2.5", name: "Kimi K2.5" }, + { id: "MiniMax-M2.5", name: "MiniMax M2.5" }, ], }, diff --git a/open-sse/executors/default.ts b/open-sse/executors/default.ts index 83dd52309a..728fa9de02 100644 --- a/open-sse/executors/default.ts +++ b/open-sse/executors/default.ts @@ -31,7 +31,7 @@ function normalizeBaseUrl(baseUrl) { function normalizeBailianMessagesUrl(baseUrl) { const normalized = normalizeBaseUrl(baseUrl).replace(/\?beta=true$/, ""); const messagesUrl = normalized.endsWith("/messages") ? normalized : `${normalized}/messages`; - return `${messagesUrl}?beta=true`; + return messagesUrl; } function normalizeHerokuChatUrl(baseUrl) { diff --git a/src/app/api/providers/[id]/models/route.ts b/src/app/api/providers/[id]/models/route.ts index 4ee7e835ae..71dd9583ef 100755 --- a/src/app/api/providers/[id]/models/route.ts +++ b/src/app/api/providers/[id]/models/route.ts @@ -394,14 +394,12 @@ const STATIC_MODEL_PROVIDERS: Record Array<{ id: string; name: str { id: "sonar-deep-research", name: "Sonar Deep Research (Expert Analysis)" }, ], "bailian-coding-plan": () => [ - { id: "qwen3.5-plus", name: "Qwen3.5 Plus" }, - { id: "qwen3-max-2026-01-23", name: "Qwen3 Max (2026-01-23)" }, - { id: "qwen3-coder-next", name: "Qwen3 Coder Next" }, - { id: "qwen3-coder-plus", name: "Qwen3 Coder Plus" }, - { id: "MiniMax-M2.5", name: "MiniMax M2.5" }, + { id: "qwen3.6-plus", name: "Qwen3.6 Plus(vision)" }, + { id: "qwen3.5-plus", name: "Qwen3.5 Plus(vision)" }, + { id: "qwen3-max-2026-01-23", name: "Qwen3 Max" }, + { id: "kimi-k2.5", name: "Kimi K2.5(vision)" }, { id: "glm-5", name: "GLM 5" }, - { id: "glm-4.7", name: "GLM 4.7" }, - { id: "kimi-k2.5", name: "Kimi K2.5" }, + { id: "MiniMax-M2.5", name: "MiniMax M2.5" }, ], gitlab: () => [{ id: "gitlab-duo-code-suggestions", name: "GitLab Duo Code Suggestions" }], nlpcloud: () => diff --git a/tests/unit/bailian-coding-plan-provider.test.ts b/tests/unit/bailian-coding-plan-provider.test.ts index 4897ab343d..217458d32a 100644 --- a/tests/unit/bailian-coding-plan-provider.test.ts +++ b/tests/unit/bailian-coding-plan-provider.test.ts @@ -206,12 +206,12 @@ test("updateProviderConnectionSchema accepts http protocol", () => { const { getStaticModelsForProvider } = await import("../../src/app/api/providers/[id]/models/route.ts"); -test("getStaticModelsForProvider returns 8 models for bailian-coding-plan", () => { +test("getStaticModelsForProvider returns 6 models for bailian-coding-plan", () => { const models = getStaticModelsForProvider("bailian-coding-plan"); assert.ok(models, "Should return models for bailian-coding-plan"); assert.ok(Array.isArray(models), "Should return an array"); - assert.equal(models.length, 8, "Should return exactly 8 models"); + assert.equal(models.length, 6, "Should return exactly 6 models"); }); test("getStaticModelsForProvider returns correct model IDs for bailian-coding-plan", () => { @@ -223,14 +223,12 @@ test("getStaticModelsForProvider returns correct model IDs for bailian-coding-pl } const expectedIds = [ + "qwen3.6-plus", "qwen3.5-plus", "qwen3-max-2026-01-23", - "qwen3-coder-next", - "qwen3-coder-plus", - "MiniMax-M2.5", - "glm-5", - "glm-4.7", "kimi-k2.5", + "glm-5", + "MiniMax-M2.5", ]; const actualIds = models.map((m) => m.id); diff --git a/tests/unit/executor-default-base.test.ts b/tests/unit/executor-default-base.test.ts index 055a35955a..7beb678262 100644 --- a/tests/unit/executor-default-base.test.ts +++ b/tests/unit/executor-default-base.test.ts @@ -178,7 +178,7 @@ test("DefaultExecutor.buildUrl normalizes configurable chat-openai-compat base U baseUrl: "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1", }, }), - "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1/messages?beta=true" + "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1/messages" ); assert.equal( heroku.buildUrl("claude-4-sonnet", true, 0, {