chore(models): tidy up alibaba-coding-plan and cursor provider (#2150)

Integrated into release/v3.8.0 — tidies up Alibaba Coding Plan and Cursor provider model catalogs
This commit is contained in:
backryun
2026-05-11 22:08:34 +09:00
committed by GitHub
parent fca89049c9
commit 6e2c5e2d4c
5 changed files with 89 additions and 107 deletions

View File

@@ -621,6 +621,44 @@ export const REGISTRY: Record<string, RegistryEntry> = {
{ 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<string, RegistryEntry> = {
{ 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<string, RegistryEntry> = {
{ 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<string, RegistryEntry> = {
{ 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<string, RegistryEntry> = {
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" },
],
},

View File

@@ -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) {

View File

@@ -394,14 +394,12 @@ const STATIC_MODEL_PROVIDERS: Record<string, () => 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: () =>

View File

@@ -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);

View File

@@ -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, {