mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-10-25 17:22:27 +08:00
chore(presets): refresh preset models to the latest vendor lineups
Move first-party, sponsor and relay presets to current model IDs so a pasted Key works without editing the model list. - Claude: opus/sonnet 5 -> 5.5, haiku 4.5 -> 5.5, fable 5 -> 5.1 - GPT: gpt-5.6-sol / gpt-6-sol -> gpt-6.1-sol; add gpt-6-astra/luna - Gemini 3.6 Flash -> 3.8 Flash, 3.1 Pro preview -> 4 Argon; Grok 4.5 -> 4.7; GLM 5.1/5.2 -> 5.3 (+5.3 Flash); DeepSeek V4 Flash -> V4.1 Flash; Doubao 2.1 Pro 260628 -> 260915; StepFun Step Plan -> step-5-preview; add Kimi K3.1 Pro, Qwen3.8 Max, MiniMax M3.1 Flash where the site serves them - Drop retired models: NVIDIA moonshotai/kimi-k3 (EOL 2026-10-15, now kimi-k2.6 without unverified Codex reasoning levels), MiMo V2.5 / V2.5 Pro, Claude Sonnet 4.5, MiniMax M2.7 on Tencent Token Plan Enterprise Pro - Relay presets follow each site's own ID spelling and catalog; DIT.ai, BuyToken and hao.ai are left as configured from their docs; Soshow, SiliconFlow CN, OpenCode Zen and the Ark rolling alias stay - MoArk Codex keeps the tested Kimi-K2.7-Code; K3.1 Pro and Qwen3.8 Max stay out of its Codex catalog until their levels are verified Tests updated to the new IDs; cross-app invariants unchanged.
This commit is contained in:
1 parent
28a2ebc0eb
commit
50a9d103d3
29 files changed
+2803
-1786
No files matched your search
@@ -355,7 +355,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
isPartner: true,
|
||||
@@ -572,9 +572,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "direct",
|
||||
apiFormat: "anthropic",
|
||||
modelRoutes: mappedRoutes(
|
||||
"anthropic/claude-sonnet-5",
|
||||
"anthropic/claude-opus-5",
|
||||
"anthropic/claude-haiku-4.5",
|
||||
"anthropic/claude-sonnet-5.5",
|
||||
"anthropic/claude-opus-5.5",
|
||||
"anthropic/claude-haiku-5.5",
|
||||
true,
|
||||
),
|
||||
isPartner: true,
|
||||
@@ -592,7 +592,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: ["https://api.88api.ai", "https://88api.ai"],
|
||||
@@ -687,9 +687,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "proxy",
|
||||
apiFormat: "anthropic",
|
||||
modelRoutes: brandedRoutes(
|
||||
"deepseek/deepseek-v4-flash-0731",
|
||||
"deepseek/deepseek-v4-flash-0731",
|
||||
"deepseek/deepseek-v4-flash-0731",
|
||||
"deepseek/deepseek-v4.1-flash",
|
||||
"deepseek/deepseek-v4.1-flash",
|
||||
"deepseek/deepseek-v4.1-flash",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: ["https://api.ppio.com/anthropic"],
|
||||
@@ -787,9 +787,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "proxy",
|
||||
apiFormat: "anthropic",
|
||||
modelRoutes: brandedRoutes(
|
||||
"doubao-seed-2-1-pro-260628",
|
||||
"doubao-seed-2-1-pro-260628",
|
||||
"doubao-seed-2-1-pro-260628",
|
||||
"doubao-seed-2-1-pro-260915",
|
||||
"doubao-seed-2-1-pro-260915",
|
||||
"doubao-seed-2-1-pro-260915",
|
||||
),
|
||||
isPartner: true,
|
||||
partnerPromotionKey: "doubaoseed",
|
||||
@@ -930,12 +930,12 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
baseUrl: "https://soleapi.com",
|
||||
mode: "direct",
|
||||
apiFormat: "anthropic",
|
||||
// 上游 Haiku 模型 ID 带日期后缀,与角色路由 ID claude-haiku-4-5 不同,
|
||||
// 上游模型 ID 与角色路由 ID(claude-sonnet-5 / claude-haiku-4-5)不同,
|
||||
// 故用 mappedRoutes 显式映射而非 passthroughRoutes。
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5",
|
||||
"claude-opus-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: ["https://soleapi.com"],
|
||||
@@ -1201,9 +1201,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "proxy",
|
||||
apiFormat: "gemini_native",
|
||||
modelRoutes: brandedRoutes(
|
||||
"gemini-3.6-flash",
|
||||
"gemini-3.6-flash",
|
||||
"gemini-3.6-flash",
|
||||
"gemini-3.8-flash",
|
||||
"gemini-3.8-flash",
|
||||
"gemini-3.8-flash",
|
||||
),
|
||||
endpointCandidates: ["https://generativelanguage.googleapis.com"],
|
||||
icon: "gemini",
|
||||
@@ -1248,7 +1248,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
apiFormat: "openai_responses",
|
||||
providerType: "xai_oauth",
|
||||
requiresOAuth: true,
|
||||
modelRoutes: brandedRoutes("grok-4.5", "grok-4.5", "grok-4.5"),
|
||||
modelRoutes: brandedRoutes("grok-4.7", "grok-4.7", "grok-4.7"),
|
||||
icon: "xai",
|
||||
iconColor: "#000000",
|
||||
},
|
||||
@@ -1287,9 +1287,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
// 记 1048576)。[1m] 只是 Claude Desktop 本地标记,匹配前会被剥掉,
|
||||
// 不会随请求发往上游
|
||||
modelRoutes: brandedRoutes(
|
||||
"deepseek-v4-flash",
|
||||
"deepseek-v4-flash",
|
||||
"deepseek-v4-flash",
|
||||
"deepseek-v4.1-flash",
|
||||
"deepseek-v4.1-flash",
|
||||
"deepseek-v4.1-flash",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: ["https://opencode.ai/zen/go"],
|
||||
@@ -1638,9 +1638,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "proxy",
|
||||
apiFormat: "anthropic",
|
||||
modelRoutes: brandedRoutes(
|
||||
"step-3.5-flash-2603",
|
||||
"step-3.5-flash-2603",
|
||||
"step-3.5-flash-2603",
|
||||
"step-5-preview",
|
||||
"step-5-preview",
|
||||
"step-5-preview",
|
||||
),
|
||||
endpointCandidates: ["https://api.stepfun.com/step_plan"],
|
||||
icon: "stepfun",
|
||||
@@ -1796,9 +1796,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "direct",
|
||||
apiFormat: "anthropic",
|
||||
modelRoutes: mappedRoutes(
|
||||
"anthropic/claude-sonnet-5",
|
||||
"anthropic/claude-opus-5",
|
||||
"anthropic/claude-haiku-4.5",
|
||||
"anthropic/claude-sonnet-5.5",
|
||||
"anthropic/claude-opus-5.5",
|
||||
"anthropic/claude-haiku-5.5",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: ["https://open.cherryin.net"],
|
||||
@@ -1837,9 +1837,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "proxy",
|
||||
apiFormat: "anthropic",
|
||||
modelRoutes: mappedRoutes(
|
||||
"anthropic/claude-sonnet-5",
|
||||
"anthropic/claude-opus-5",
|
||||
"anthropic/claude-haiku-4.5",
|
||||
"anthropic/claude-sonnet-5.5",
|
||||
"anthropic/claude-opus-5.5",
|
||||
"anthropic/claude-haiku-5.5",
|
||||
true,
|
||||
),
|
||||
icon: "openrouter",
|
||||
@@ -1854,9 +1854,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "proxy",
|
||||
apiFormat: "anthropic",
|
||||
modelRoutes: mappedRoutes(
|
||||
"anthropic/claude-sonnet-5",
|
||||
"anthropic/claude-opus-5",
|
||||
"anthropic/claude-haiku-4.5",
|
||||
"anthropic/claude-sonnet-5-5",
|
||||
"anthropic/claude-opus-5-5",
|
||||
"anthropic/claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: ["https://api.therouter.ai"],
|
||||
@@ -1892,9 +1892,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "proxy",
|
||||
apiFormat: "anthropic",
|
||||
modelRoutes: brandedRoutes(
|
||||
"zai-org/glm-5.1",
|
||||
"zai-org/glm-5.1",
|
||||
"zai-org/glm-5.1",
|
||||
"zai-org/glm-5.3",
|
||||
"zai-org/glm-5.3",
|
||||
"zai-org/glm-5.3-flash",
|
||||
),
|
||||
endpointCandidates: ["https://api.novita.ai/anthropic"],
|
||||
icon: "novita",
|
||||
@@ -2032,8 +2032,8 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: [
|
||||
{
|
||||
routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.sonnet,
|
||||
upstreamModel: "deepseek-ai/DeepSeek-V4-Flash-0731",
|
||||
labelOverride: "deepseek-ai/DeepSeek-V4-Flash-0731",
|
||||
upstreamModel: "deepseek-ai/DeepSeek-V4.1-Flash-1017",
|
||||
labelOverride: "deepseek-ai/DeepSeek-V4.1-Flash-1017",
|
||||
supports1m: true,
|
||||
},
|
||||
{
|
||||
@@ -2288,10 +2288,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "proxy",
|
||||
apiFormat: "openai_chat",
|
||||
modelRoutes: brandedRoutes(
|
||||
"moonshotai/kimi-k3",
|
||||
"moonshotai/kimi-k3",
|
||||
"moonshotai/kimi-k3",
|
||||
true,
|
||||
"moonshotai/kimi-k2.6",
|
||||
"moonshotai/kimi-k2.6",
|
||||
"moonshotai/kimi-k2.6",
|
||||
),
|
||||
icon: "nvidia",
|
||||
iconColor: "#000000",
|
||||
@@ -2356,7 +2355,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: [
|
||||
{
|
||||
routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.fable,
|
||||
upstreamModel: "claude-fable-5",
|
||||
upstreamModel: "claude-fable-5-1",
|
||||
supports1m: true,
|
||||
},
|
||||
],
|
||||
@@ -2372,12 +2371,12 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
baseUrl: "https://api.aicodewith.ai",
|
||||
mode: "proxy",
|
||||
apiFormat: "anthropic",
|
||||
// 上游 Haiku 模型 ID 带日期后缀,与角色路由 ID claude-haiku-4-5 不同,
|
||||
// 上游模型 ID 与角色路由 ID(claude-sonnet-5 / claude-haiku-4-5)不同,
|
||||
// 故用 mappedRoutes 显式映射而非 passthroughRoutes。
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5",
|
||||
"claude-opus-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: ["https://api.aicodewith.ai"],
|
||||
@@ -2395,7 +2394,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: [
|
||||
@@ -2418,7 +2417,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: ["https://api.ikuncode.ai", "https://api.ikuncode.cc"],
|
||||
@@ -2435,7 +2434,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: ["https://www.runtoken.ai", "https://fast.runtoken.ai"],
|
||||
@@ -2452,7 +2451,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
icon: "botcf",
|
||||
@@ -2467,9 +2466,9 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
mode: "direct",
|
||||
apiFormat: "anthropic",
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5",
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
endpointCandidates: [
|
||||
@@ -2490,7 +2489,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
icon: "tokenflux",
|
||||
@@ -2506,7 +2505,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
icon: "nekocode",
|
||||
@@ -2522,7 +2521,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||||
modelRoutes: mappedRoutes(
|
||||
"claude-sonnet-5-5",
|
||||
"claude-opus-5-5",
|
||||
"claude-haiku-4-5-20251001",
|
||||
"claude-haiku-5-5",
|
||||
true,
|
||||
),
|
||||
icon: "aicoming",
|
||||
|
||||
@@ -541,10 +541,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://router.shengsuanyun.com/api",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "anthropic/claude-sonnet-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "anthropic/claude-haiku-4.5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "anthropic/claude-opus-5",
|
||||
ANTHROPIC_MODEL: "anthropic/claude-sonnet-5.5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "anthropic/claude-haiku-5.5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-5.5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "anthropic/claude-opus-5.5",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -662,10 +662,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://api.ppio.com/anthropic",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "deepseek/deepseek-v4-flash-0731[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek/deepseek-v4-flash-0731[1M]",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek/deepseek-v4-flash-0731[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek/deepseek-v4-flash-0731[1M]",
|
||||
ANTHROPIC_MODEL: "deepseek/deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek/deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek/deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek/deepseek-v4.1-flash[1M]",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -775,10 +775,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://ark.cn-beijing.volces.com/api/compatible",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "doubao-seed-2-1-pro-260628",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "doubao-seed-2-1-pro-260628",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "doubao-seed-2-1-pro-260628",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "doubao-seed-2-1-pro-260628",
|
||||
ANTHROPIC_MODEL: "doubao-seed-2-1-pro-260915",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "doubao-seed-2-1-pro-260915",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "doubao-seed-2-1-pro-260915",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "doubao-seed-2-1-pro-260915",
|
||||
},
|
||||
},
|
||||
category: "cn_official",
|
||||
@@ -1196,10 +1196,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://api.atlascloud.ai",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "zai-org/glm-5.1",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "zai-org/glm-5.1",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "zai-org/glm-5.1",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "zai-org/glm-5.1",
|
||||
ANTHROPIC_MODEL: "zai-org/glm-5.3",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "zai-org/glm-5.3-flash",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "zai-org/glm-5.3",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "zai-org/glm-5.3",
|
||||
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: "1",
|
||||
},
|
||||
},
|
||||
@@ -1235,10 +1235,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://generativelanguage.googleapis.com",
|
||||
ANTHROPIC_API_KEY: "",
|
||||
ANTHROPIC_MODEL: "gemini-3.6-flash",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "gemini-3.6-flash",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "gemini-3.6-flash",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "gemini-3.6-flash",
|
||||
ANTHROPIC_MODEL: "gemini-3.8-flash",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "gemini-3.8-flash",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "gemini-3.8-flash",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
category: "third_party",
|
||||
@@ -1282,10 +1282,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://opencode.ai/zen/go",
|
||||
ANTHROPIC_API_KEY: "",
|
||||
ANTHROPIC_MODEL: "deepseek-v4-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek-v4-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek-v4-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek-v4-flash[1M]",
|
||||
ANTHROPIC_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
},
|
||||
},
|
||||
category: "third_party",
|
||||
@@ -1308,7 +1308,7 @@ export const providerPresets: ProviderPreset[] = [
|
||||
ANTHROPIC_BASE_URL: "https://opencode.ai/zen",
|
||||
ANTHROPIC_API_KEY: "",
|
||||
ANTHROPIC_MODEL: "claude-sonnet-5-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "claude-haiku-4-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "claude-haiku-5-5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "claude-sonnet-5-5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "claude-opus-5-5",
|
||||
},
|
||||
@@ -1739,10 +1739,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://api.stepfun.com/step_plan",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "step-3.5-flash-2603",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "step-3.5-flash-2603",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "step-3.5-flash-2603",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "step-3.5-flash-2603",
|
||||
ANTHROPIC_MODEL: "step-5-preview",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "step-5-preview",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "step-5-preview",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "step-5-preview",
|
||||
},
|
||||
},
|
||||
category: "cn_official",
|
||||
@@ -1943,10 +1943,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://open.cherryin.net",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "anthropic/claude-sonnet-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "anthropic/claude-haiku-4.5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "anthropic/claude-opus-5",
|
||||
ANTHROPIC_MODEL: "anthropic/claude-sonnet-5.5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "anthropic/claude-haiku-5.5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-5.5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "anthropic/claude-opus-5.5",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -1990,10 +1990,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://openrouter.ai/api",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "anthropic/claude-sonnet-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "anthropic/claude-haiku-4.5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "anthropic/claude-opus-5",
|
||||
ANTHROPIC_MODEL: "anthropic/claude-sonnet-5.5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "anthropic/claude-haiku-5.5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-5.5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "anthropic/claude-opus-5.5",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -2009,10 +2009,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
ANTHROPIC_BASE_URL: "https://api.therouter.ai",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_API_KEY: "",
|
||||
ANTHROPIC_MODEL: "anthropic/claude-sonnet-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "anthropic/claude-haiku-4.5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "anthropic/claude-opus-5",
|
||||
ANTHROPIC_MODEL: "anthropic/claude-sonnet-5-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "anthropic/claude-haiku-5-5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-5-5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "anthropic/claude-opus-5-5",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -2052,10 +2052,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://api.novita.ai/anthropic",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "zai-org/glm-5.1",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "zai-org/glm-5.1",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "zai-org/glm-5.1",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "zai-org/glm-5.1",
|
||||
ANTHROPIC_MODEL: "zai-org/glm-5.3",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "zai-org/glm-5.3-flash",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "zai-org/glm-5.3",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "zai-org/glm-5.3",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -2263,7 +2263,7 @@ export const providerPresets: ProviderPreset[] = [
|
||||
// 官方 Claude Code 接入文档(docs.deepinfra.com/integrations/anthropic.md,
|
||||
// 2026-10-14 核对):base 为 /anthropic、不带 /v1,Bearer 与 x-api-key 都
|
||||
// 收,默认的 AUTH_TOKEN 即可。档位与 ANTHROPIC_MODEL 照抄官方表:opus
|
||||
// V4 Pro 0813、sonnet/主循环 V4 Flash 0731、haiku Ling-3.0-flash;不带日期
|
||||
// V4 Pro 0813、sonnet/主循环 V4.1 Flash 1017(官方表仍写 V4 Flash 0731,已按站点现价目表上调)、haiku Ling-3.0-flash;不带日期
|
||||
// 的 V4 Pro/Flash 是已被取代的早期预览,不用。官方另写的 fable、子代理与
|
||||
// 最大输出变量照仓库惯例不加。/anthropic/v1/models 404,通用候选剥掉
|
||||
// /anthropic 后的 /v1/models 公开可读,不覆写 modelsUrl
|
||||
@@ -2271,10 +2271,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://api.deepinfra.com/anthropic",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "deepseek-ai/DeepSeek-V4-Flash-0731[1M]",
|
||||
ANTHROPIC_MODEL: "deepseek-ai/DeepSeek-V4.1-Flash-1017[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "inclusionAI/Ling-3.0-flash",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL:
|
||||
"deepseek-ai/DeepSeek-V4-Flash-0731[1M]",
|
||||
"deepseek-ai/DeepSeek-V4.1-Flash-1017[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek-ai/DeepSeek-V4-Pro-0813[1M]",
|
||||
},
|
||||
},
|
||||
@@ -2687,11 +2687,11 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
// The proxy enforces both this origin and the Responses wire format.
|
||||
ANTHROPIC_BASE_URL: "https://api.x.ai/v1",
|
||||
ANTHROPIC_MODEL: "grok-4.5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "grok-4.5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "grok-4.5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "grok-4.5",
|
||||
// Claude Code falls back to 200K for non-Claude model ids; grok-4.5
|
||||
ANTHROPIC_MODEL: "grok-4.7",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "grok-4.7",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "grok-4.7",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "grok-4.7",
|
||||
// Claude Code falls back to 200K for non-Claude model ids; grok-4.7
|
||||
// has a 500K window (same as grok_config::DEFAULT_CONTEXT_WINDOW).
|
||||
CLAUDE_CODE_MAX_CONTEXT_TOKENS: "500000",
|
||||
},
|
||||
@@ -2711,10 +2711,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://integrate.api.nvidia.com",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "moonshotai/kimi-k3[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "moonshotai/kimi-k3[1M]",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "moonshotai/kimi-k3[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "moonshotai/kimi-k3[1M]",
|
||||
ANTHROPIC_MODEL: "moonshotai/kimi-k2.6",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "moonshotai/kimi-k2.6",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "moonshotai/kimi-k2.6",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "moonshotai/kimi-k2.6",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -2730,10 +2730,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://cc-api.pipellm.ai",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "claude-opus-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "claude-haiku-4-5-20251001",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "claude-sonnet-5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "claude-opus-5",
|
||||
ANTHROPIC_MODEL: "claude-opus-5-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "claude-haiku-5-5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "claude-sonnet-5-5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "claude-opus-5-5",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -2859,10 +2859,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
env: {
|
||||
ANTHROPIC_BASE_URL: "https://api.jiekou.ai/anthropic",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "claude-fable-5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "claude-fable-5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "claude-fable-5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "claude-fable-5",
|
||||
ANTHROPIC_MODEL: "claude-fable-5-1",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "claude-fable-5-1",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "claude-fable-5-1",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "claude-fable-5-1",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -2917,10 +2917,10 @@ export const providerPresets: ProviderPreset[] = [
|
||||
// 官方文档(CC Switch 快速配置)指定 Claude Code 走 Anthropic 原生入口
|
||||
ANTHROPIC_BASE_URL: "https://moark.com/anthropic",
|
||||
ANTHROPIC_AUTH_TOKEN: "",
|
||||
ANTHROPIC_MODEL: "deepseek-v4-flash-0731[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek-v4-flash-0731[1M]",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek-v4-flash-0731[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek-v4-flash-0731[1M]",
|
||||
ANTHROPIC_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
},
|
||||
},
|
||||
category: "aggregator",
|
||||
|
||||
+172
-173
@@ -445,7 +445,7 @@ export const codexProviderPresets: CodexProviderPreset[] = [
|
||||
config: generateThirdPartyConfig(
|
||||
"packycode",
|
||||
"https://www.packyapi.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://www.packyapi.ai/v1",
|
||||
@@ -464,8 +464,8 @@ export const codexProviderPresets: CodexProviderPreset[] = [
|
||||
category: "third_party",
|
||||
auth: generateThirdPartyAuth(""),
|
||||
config: `model_provider = "custom"
|
||||
model = "gpt-5.6-sol"
|
||||
review_model = "gpt-5.6-sol"
|
||||
model = "gpt-6.1-sol"
|
||||
review_model = "gpt-6.1-sol"
|
||||
model_reasoning_effort = "high"
|
||||
disable_response_storage = true
|
||||
|
||||
@@ -488,7 +488,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"aicodemirror",
|
||||
"https://api.aicodemirror.ai/api/codex/backend-api/codex",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://api.aicodemirror.ai/api/codex/backend-api/codex",
|
||||
@@ -507,7 +507,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"patewayai",
|
||||
"https://api.pateway.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://api.pateway.ai/v1"],
|
||||
isPartner: true,
|
||||
@@ -541,7 +541,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"fenno",
|
||||
"https://api.fenno.ai",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://api.fenno.ai"],
|
||||
isPartner: true,
|
||||
@@ -557,7 +557,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"runapi",
|
||||
"https://runapi.host/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://runapi.host/v1", "https://runapi.co/v1"],
|
||||
isPartner: true,
|
||||
@@ -573,7 +573,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"openmodel",
|
||||
"https://api.openmodel.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
isPartner: true,
|
||||
partnerPromotionKey: "openmodel",
|
||||
@@ -588,7 +588,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"grooroute_pro",
|
||||
"https://grooroute.pro/v1",
|
||||
"gpt-6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://grooroute.pro/v1",
|
||||
@@ -636,11 +636,12 @@ requires_openai_auth = true`,
|
||||
category: "aggregator",
|
||||
auth: generateThirdPartyAuth(""),
|
||||
// gpt-5.6-sol 支持 /v1/responses,令牌选 codex 或 default 分组
|
||||
// (gpt.ge/models/gpt-5.6-sol,2026-10-23)
|
||||
// (gpt.ge/models/gpt-5.6-sol,2026-10-23);默认已上调 gpt-6.1-sol
|
||||
// (2026-10-24 按官方阵容,站点目录需 Key 才可见,未实测)
|
||||
config: generateThirdPartyConfig(
|
||||
"vapi",
|
||||
"https://api.gpt.ge/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
// 备用线路取自 gpt.ge/api/status 的 api_list(2026-10-23)
|
||||
endpointCandidates: [
|
||||
@@ -730,7 +731,9 @@ requires_openai_auth = true`,
|
||||
// (文档给的完整端点 .../chat/completions),故 apiFormat=openai_chat 走
|
||||
// 本地路由转换,与国内 Token Plan 预设同款。阵容与窗口按 FluxA 产品页模型表
|
||||
// (glm-5.2 500k ≠ 国内版千帆平台 1M,国际 team 部署口径,勿按国内预设
|
||||
// "修正");标注 Coming soon 的 deepseek-v4-pro-0813 / glm-5.3 不收。
|
||||
// "修正");标注 Coming soon 的 deepseek-v4-pro-0813 不收;
|
||||
// 2026-10-24 产品页已列 glm-5.3 / deepseek-v4.1-flash,新增为前置行(窗口取站点调研值,
|
||||
// 未经 Key 实测),旧型号仍保留。
|
||||
// Kimi K2.6 是定稿赞助文案点名的模型,FluxA 产品页模型表与百度国际站
|
||||
// team 文档都没列它:id / 窗口取 FluxA baidu-ai-cloud 模型目录(categories
|
||||
// 只有 text)与国内 Token Plan 预设(262144)双重印证,非臆造。
|
||||
@@ -757,6 +760,12 @@ requires_openai_auth = true`,
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text"],
|
||||
},
|
||||
{
|
||||
model: "deepseek-v4.1-flash",
|
||||
displayName: "DeepSeek V4.1 Flash",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text"],
|
||||
},
|
||||
{
|
||||
model: "deepseek-v4-flash-0731",
|
||||
displayName: "DeepSeek V4 Flash 0731",
|
||||
@@ -775,6 +784,12 @@ requires_openai_auth = true`,
|
||||
contextWindow: 131072,
|
||||
inputModalities: ["text"],
|
||||
},
|
||||
{
|
||||
model: "glm-5.3",
|
||||
displayName: "GLM-5.3",
|
||||
contextWindow: 1000000,
|
||||
inputModalities: ["text"],
|
||||
},
|
||||
{
|
||||
model: "glm-5.2",
|
||||
displayName: "GLM-5.2",
|
||||
@@ -813,7 +828,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"aigocode",
|
||||
"https://api.aigocode.dev",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://api.aigocode.dev",
|
||||
@@ -852,7 +867,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"aicoding",
|
||||
"https://api.aicoding.inc",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://api.aicoding.inc"],
|
||||
isPartner: true,
|
||||
@@ -869,7 +884,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"subrouter",
|
||||
"https://subrouter.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://subrouter.ai/v1"],
|
||||
isPartner: true,
|
||||
@@ -885,7 +900,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"shengsuanyun",
|
||||
"https://router.shengsuanyun.com/api/v1",
|
||||
"openai/gpt-5.6-sol",
|
||||
"openai/gpt-6.1-sol",
|
||||
),
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
@@ -901,7 +916,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"88api",
|
||||
"https://api.88api.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://api.88api.ai/v1", "https://88api.ai/v1"],
|
||||
isPartner: true,
|
||||
@@ -915,8 +930,8 @@ requires_openai_auth = true`,
|
||||
category: "third_party",
|
||||
auth: generateThirdPartyAuth(""),
|
||||
config: `model_provider = "custom"
|
||||
model = "gpt-5.6-sol"
|
||||
review_model = "gpt-5.6-sol"
|
||||
model = "gpt-6.1-sol"
|
||||
review_model = "gpt-6.1-sol"
|
||||
model_reasoning_effort = "high"
|
||||
disable_response_storage = true
|
||||
|
||||
@@ -944,7 +959,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"9527code",
|
||||
"https://9527.codes/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://9527.codes/v1",
|
||||
@@ -964,7 +979,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"code0",
|
||||
"https://code0.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://code0.ai/v1"],
|
||||
icon: "code0",
|
||||
@@ -979,7 +994,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"teamorouter",
|
||||
"https://api.teamorouter.cn/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://api.teamorouter.cn/v1",
|
||||
@@ -997,14 +1012,14 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"ppio",
|
||||
"https://api.ppio.com/openai/v1",
|
||||
"deepseek/deepseek-v4-flash-0731",
|
||||
"deepseek/deepseek-v4.1-flash",
|
||||
),
|
||||
endpointCandidates: ["https://api.ppio.com/openai/v1"],
|
||||
apiFormat: "openai_chat",
|
||||
modelCatalog: modelCatalog([
|
||||
{
|
||||
model: "deepseek/deepseek-v4-flash-0731",
|
||||
displayName: "Deepseek V4 Flash 0731",
|
||||
model: "deepseek/deepseek-v4.1-flash",
|
||||
displayName: "DeepSeek V4.1 Flash",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text"],
|
||||
},
|
||||
@@ -1031,7 +1046,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"claudecn",
|
||||
"https://claudecn.top/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
isPartner: true,
|
||||
partnerPromotionKey: "claudecn",
|
||||
@@ -1163,7 +1178,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"doubaoseed",
|
||||
"https://ark.cn-beijing.volces.com/api/v3",
|
||||
"doubao-seed-2-1-pro-260628",
|
||||
"doubao-seed-2-1-pro-260915",
|
||||
),
|
||||
endpointCandidates: ["https://ark.cn-beijing.volces.com/api/v3"],
|
||||
// 火山方舟主数据面 /api/v3 原生支持 Responses API(/api/v3/responses),无需路由接管转换
|
||||
@@ -1172,7 +1187,7 @@ requires_openai_auth = true`,
|
||||
// 让 Codex 直连显示模型并避免 custom 工具被网关拒绝
|
||||
modelCatalog: modelCatalog([
|
||||
{
|
||||
model: "doubao-seed-2-1-pro-260628",
|
||||
model: "doubao-seed-2-1-pro-260915",
|
||||
displayName: "Doubao Seed 2.1 Pro",
|
||||
contextWindow: 262144,
|
||||
// 方舟深度思考文档(82379/1449737)7 值枚举中本模型无限制的通用四档;
|
||||
@@ -1269,7 +1284,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"a6api",
|
||||
"https://api.a6api.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://api.a6api.com/v1"],
|
||||
isPartner: true,
|
||||
@@ -1288,7 +1303,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"compshare",
|
||||
"https://api.modelverse.cn/v1",
|
||||
"gpt-6-astra",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://api.modelverse.cn/v1"],
|
||||
category: "aggregator",
|
||||
@@ -1309,7 +1324,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"compshare_coding",
|
||||
"https://cp.compshare.cn/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://cp.compshare.cn/v1"],
|
||||
category: "aggregator",
|
||||
@@ -1342,7 +1357,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"sssaicode",
|
||||
"https://node-hk.sssaicodeapi.com/api/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://node-hk.sssaicodeapi.com/api/v1",
|
||||
@@ -1364,7 +1379,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"soleapi",
|
||||
"https://soleapi.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://soleapi.com/v1"],
|
||||
isPartner: true,
|
||||
@@ -1379,7 +1394,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"micu",
|
||||
"https://www.micuapi.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://www.micuapi.ai/v1"],
|
||||
category: "third_party",
|
||||
@@ -1396,7 +1411,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"rightcode",
|
||||
"https://www.rightapi.ai/codex/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -1412,7 +1427,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"cubence",
|
||||
"https://api.cubence.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://api.cubence.com/v1",
|
||||
@@ -1434,7 +1449,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"crazyrouter",
|
||||
"https://cn.crazyrouter.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://cn.crazyrouter.com/v1"],
|
||||
isPartner: true,
|
||||
@@ -1450,7 +1465,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"dmxapi",
|
||||
"https://www.dmxapi.cn/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://www.dmxapi.cn/v1"],
|
||||
isPartner: true, // 合作伙伴
|
||||
@@ -1466,8 +1481,8 @@ requires_openai_auth = true`,
|
||||
category: "third_party",
|
||||
auth: generateThirdPartyAuth(""),
|
||||
config: `model_provider = "custom"
|
||||
model = "gpt-5.6-sol"
|
||||
review_model = "gpt-5.6-sol"
|
||||
model = "gpt-6.1-sol"
|
||||
review_model = "gpt-6.1-sol"
|
||||
model_reasoning_effort = "high"
|
||||
disable_response_storage = true
|
||||
|
||||
@@ -1493,8 +1508,8 @@ requires_openai_auth = true`,
|
||||
category: "third_party",
|
||||
auth: generateThirdPartyAuth(""),
|
||||
config: `model_provider = "custom"
|
||||
model = "gpt-5.6-sol"
|
||||
review_model = "gpt-5.6-sol"
|
||||
model = "gpt-6.1-sol"
|
||||
review_model = "gpt-6.1-sol"
|
||||
model_reasoning_effort = "high"
|
||||
disable_response_storage = true
|
||||
model_verbosity = "high"
|
||||
@@ -1518,7 +1533,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"xycai",
|
||||
"https://apicdn.xycai.us/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://apicdn.xycai.us/v1",
|
||||
@@ -1536,11 +1551,12 @@ requires_openai_auth = true`,
|
||||
category: "aggregator",
|
||||
auth: generateThirdPartyAuth(""),
|
||||
// 官方 Codex 文档(docs.modelflare.dev/guides/clients/codex,2026-10-15
|
||||
// 核对):base 为 /v1、wire_api = "responses"、默认 gpt-5.6-sol
|
||||
// 核对):base 为 /v1、wire_api = "responses"、默认 gpt-5.6-sol;
|
||||
// 目录(modelflare.dev/api/pricing,2026-10-24)已有 gpt-6.1-sol,默认随之上调
|
||||
config: generateThirdPartyConfig(
|
||||
"modelflare",
|
||||
"https://modelflare.dev/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://modelflare.dev/v1",
|
||||
@@ -1561,7 +1577,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"alltokens",
|
||||
"https://alltokens.cc/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
isPartner: true,
|
||||
partnerPromotionKey: "alltokens",
|
||||
@@ -1579,7 +1595,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"alltokens_si",
|
||||
"https://alltokens.si/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
isPartner: true,
|
||||
partnerPromotionKey: "alltokens_si",
|
||||
@@ -1596,7 +1612,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"tuzi",
|
||||
"https://api.tu-zi.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://api.tu-zi.com/v1",
|
||||
@@ -1615,7 +1631,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"amux",
|
||||
"https://api.amux.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://api.amux.ai/v1"],
|
||||
icon: "amux",
|
||||
@@ -1627,7 +1643,7 @@ requires_openai_auth = true`,
|
||||
category: "aggregator",
|
||||
auth: generateThirdPartyAuth(""),
|
||||
config: `model_provider = "custom"
|
||||
model = "zai-org/glm-5.2"
|
||||
model = "zai-org/glm-5.3"
|
||||
disable_response_storage = true
|
||||
|
||||
[model_providers.custom]
|
||||
@@ -1638,11 +1654,11 @@ requires_openai_auth = true`,
|
||||
endpointCandidates: ["https://api.atlascloud.ai/v1"],
|
||||
apiFormat: "openai_chat",
|
||||
modelCatalog: modelCatalog([
|
||||
// Coding Plan 当前收录的最新 GLM 是 5.2(2026-09-10);按量目录的
|
||||
// 5.3 不在套餐内。窗口来自 https://api.atlascloud.ai/v1/models。
|
||||
// 2026-10-24 公开目录 https://api.atlascloud.ai/v1/models 已有 GLM-5.3,
|
||||
// 默认由 5.2 上调(Coding Plan 是否同步收录 5.3 未经 Key 实测)。
|
||||
{
|
||||
model: "zai-org/glm-5.2",
|
||||
displayName: "GLM 5.2",
|
||||
model: "zai-org/glm-5.3",
|
||||
displayName: "GLM 5.3",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text"],
|
||||
reasoningLevels: ["high"],
|
||||
@@ -1670,7 +1686,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"soshow",
|
||||
"https://maas.so-show.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
icon: "soshow",
|
||||
},
|
||||
@@ -2611,12 +2627,6 @@ requires_openai_auth = true`,
|
||||
contextWindow: 262144,
|
||||
reasoningLevels: ["none", "high"],
|
||||
},
|
||||
{
|
||||
model: "minimax-m2.7",
|
||||
displayName: "MiniMax M2.7",
|
||||
contextWindow: 200000,
|
||||
reasoningLevels: ["high"],
|
||||
},
|
||||
{
|
||||
model: "minimax-m3",
|
||||
displayName: "MiniMax M3",
|
||||
@@ -3383,26 +3393,6 @@ requires_openai_auth = true`,
|
||||
reasoningLevels: ["none", "low", "medium", "high"],
|
||||
defaultReasoningLevel: "low",
|
||||
},
|
||||
{
|
||||
model: "mimo-v2.5-pro",
|
||||
displayName: "MiMo V2.5 Pro",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text"],
|
||||
supportsParallelToolCalls: false,
|
||||
baseInstructions: MIMO_CODEX_BASE_INSTRUCTIONS,
|
||||
reasoningLevels: ["none", "low", "medium", "high"],
|
||||
defaultReasoningLevel: "low",
|
||||
},
|
||||
{
|
||||
model: "mimo-v2.5",
|
||||
displayName: "MiMo V2.5",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text", "image"],
|
||||
supportsParallelToolCalls: false,
|
||||
baseInstructions: MIMO_CODEX_BASE_INSTRUCTIONS,
|
||||
reasoningLevels: ["none", "low", "medium", "high"],
|
||||
defaultReasoningLevel: "low",
|
||||
},
|
||||
]),
|
||||
category: "cn_official",
|
||||
icon: "xiaomimimo",
|
||||
@@ -3447,26 +3437,6 @@ requires_openai_auth = true`,
|
||||
reasoningLevels: ["none", "low", "medium", "high"],
|
||||
defaultReasoningLevel: "low",
|
||||
},
|
||||
{
|
||||
model: "mimo-v2.5-pro",
|
||||
displayName: "MiMo V2.5 Pro",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text"],
|
||||
supportsParallelToolCalls: false,
|
||||
baseInstructions: MIMO_CODEX_BASE_INSTRUCTIONS,
|
||||
reasoningLevels: ["none", "low", "medium", "high"],
|
||||
defaultReasoningLevel: "low",
|
||||
},
|
||||
{
|
||||
model: "mimo-v2.5",
|
||||
displayName: "MiMo V2.5",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text", "image"],
|
||||
supportsParallelToolCalls: false,
|
||||
baseInstructions: MIMO_CODEX_BASE_INSTRUCTIONS,
|
||||
reasoningLevels: ["none", "low", "medium", "high"],
|
||||
defaultReasoningLevel: "low",
|
||||
},
|
||||
]),
|
||||
category: "cn_official",
|
||||
icon: "xiaomimimo",
|
||||
@@ -3516,15 +3486,24 @@ requires_openai_auth = true`,
|
||||
reasoningLevels: ["low", "high", "max"],
|
||||
defaultReasoningLevel: "high",
|
||||
},
|
||||
// V4.1 Flash 不支持 low(传了按默认档处理)
|
||||
// V4.1 Flash 不支持 low(传了按默认档处理);1017 是 2026-10-17 的新版
|
||||
//(models.dev baseten,1M 窗口)
|
||||
{
|
||||
model: "deepseek-ai/DeepSeek-V4.1-Flash",
|
||||
displayName: "DeepSeek V4.1 Flash",
|
||||
model: "deepseek-ai/DeepSeek-V4.1-Flash-1017",
|
||||
displayName: "DeepSeek V4.1 Flash 1017",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text", "image"],
|
||||
reasoningLevels: ["none", "high", "max"],
|
||||
defaultReasoningLevel: "high",
|
||||
},
|
||||
{
|
||||
model: "zai-org/GLM-5.3-Fast",
|
||||
displayName: "GLM-5.3 Fast",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text", "image"],
|
||||
reasoningLevels: ["low", "high", "max"],
|
||||
defaultReasoningLevel: "high",
|
||||
},
|
||||
]),
|
||||
// 思考开关是嵌套的 chat_template_args.enable_thinking,与顶层
|
||||
// enable_thinking 对不上,不声明开关;effort 按 OpenAPI 枚举
|
||||
@@ -3657,31 +3636,20 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"nvidia",
|
||||
"https://integrate.api.nvidia.com/v1",
|
||||
"moonshotai/kimi-k3",
|
||||
"moonshotai/kimi-k2.6",
|
||||
),
|
||||
endpointCandidates: ["https://integrate.api.nvidia.com/v1"],
|
||||
apiFormat: "openai_chat",
|
||||
modelCatalog: modelCatalog([
|
||||
{
|
||||
model: "moonshotai/kimi-k3",
|
||||
displayName: "Kimi K3",
|
||||
contextWindow: 1048576,
|
||||
// NIM 上 moonshotai/kimi-k3 已于 2026-10-15 下线(410),K2.6 是现存唯一 Kimi;
|
||||
// K2.6 在 NIM 的思考参数未实测,档位与 codexChatReasoning 先不声明
|
||||
model: "moonshotai/kimi-k2.6",
|
||||
displayName: "Kimi K2.6",
|
||||
contextWindow: 262144,
|
||||
inputModalities: ["text", "image"],
|
||||
reasoningLevels: ["low", "high", "max"],
|
||||
defaultReasoningLevel: "high",
|
||||
},
|
||||
]),
|
||||
// NIM K3 始终思考,只接受 reasoning_effort: low/high/max,无 thinking:
|
||||
// https://docs.api.nvidia.com/nim/re/reference/moonshotai-kimi-k3-infer
|
||||
// API 未传 effort 时默认 max;此预设显式 high,与 config.toml 保持一致。
|
||||
codexChatReasoning: {
|
||||
supportsThinking: false,
|
||||
supportsEffort: true,
|
||||
thinkingParam: "none",
|
||||
effortParam: "reasoning_effort",
|
||||
effortValueMode: "passthrough",
|
||||
outputFormat: "reasoning_content",
|
||||
},
|
||||
category: "aggregator",
|
||||
icon: "nvidia",
|
||||
iconColor: "#000000",
|
||||
@@ -3998,7 +3966,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"deepinfra",
|
||||
"https://api.deepinfra.com/v1",
|
||||
"deepseek-ai/DeepSeek-V4-Flash-0731",
|
||||
"deepseek-ai/DeepSeek-V4.1-Flash-1017",
|
||||
),
|
||||
endpointCandidates: ["https://api.deepinfra.com/v1"],
|
||||
// 文档列了 function / web_search / namespace 工具,没写 custom 工具:
|
||||
@@ -4007,14 +3975,14 @@ requires_openai_auth = true`,
|
||||
apiFormat: "openai_responses",
|
||||
// 平台没有逐模型档位声明(docs.deepinfra.com/chat/reasoning.md 只给通用
|
||||
// 枚举),退回厂商官方档位:DeepSeek 同 DeepSeek 直连预设,Kimi K3、
|
||||
// GLM-5.3 同各自官方预设,均为 low/high/max。GLM-5.2 档位口径不一,暂不
|
||||
// 填。每档都含 high,与 config 的 model_reasoning_effort = "high" 一致,
|
||||
// GLM-5.3 同各自官方预设,均为 low/high/max。GLM-5.2 已于 2026-10-24 从目录移除
|
||||
// (公开 /v1/openai/models 已有 GLM-5.3)。每档都含 high,与 config 的 model_reasoning_effort = "high" 一致,
|
||||
// 无需 defaultReasoningLevel。窗口取 https://api.deepinfra.com/models/<id>
|
||||
// 同日元数据。首行 = 默认模型,须与 config 的 model 一致
|
||||
modelCatalog: modelCatalog([
|
||||
{
|
||||
model: "deepseek-ai/DeepSeek-V4-Flash-0731",
|
||||
displayName: "DeepSeek V4 Flash 0731",
|
||||
model: "deepseek-ai/DeepSeek-V4.1-Flash-1017",
|
||||
displayName: "DeepSeek V4.1 Flash 1017",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text"],
|
||||
reasoningLevels: ["low", "high", "max"],
|
||||
@@ -4041,10 +4009,11 @@ requires_openai_auth = true`,
|
||||
reasoningLevels: ["low", "high", "max"],
|
||||
},
|
||||
{
|
||||
model: "zai-org/GLM-5.2",
|
||||
displayName: "GLM-5.2",
|
||||
model: "zai-org/GLM-5.3-Flash",
|
||||
displayName: "GLM-5.3 Flash",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text"],
|
||||
inputModalities: ["text", "image"],
|
||||
reasoningLevels: ["low", "high", "max"],
|
||||
},
|
||||
]),
|
||||
category: "aggregator",
|
||||
@@ -4183,6 +4152,20 @@ requires_openai_auth = true`,
|
||||
inputModalities: ["text"],
|
||||
reasoningLevels: ["high"],
|
||||
},
|
||||
{
|
||||
model: "deepseek-ai/DeepSeek-V4.1-Flash",
|
||||
displayName: "DeepSeek V4.1 Flash",
|
||||
contextWindow: 1048000,
|
||||
inputModalities: ["text", "image"],
|
||||
reasoningLevels: ["high"],
|
||||
},
|
||||
{
|
||||
model: "MiniMaxAI/MiniMax-M3.1-Flash",
|
||||
displayName: "MiniMax M3.1 Flash",
|
||||
contextWindow: 1049000,
|
||||
inputModalities: ["text"],
|
||||
reasoningLevels: ["high"],
|
||||
},
|
||||
]),
|
||||
category: "aggregator",
|
||||
icon: "nebius",
|
||||
@@ -4394,6 +4377,13 @@ requires_openai_auth = true`,
|
||||
inputModalities: ["text"],
|
||||
reasoningLevels: ["high"],
|
||||
},
|
||||
{
|
||||
model: "deepseek-ai/DeepSeek-V4.1-Flash-1017:baseten",
|
||||
displayName: "DeepSeek V4.1 Flash 1017 (Baseten)",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text"],
|
||||
reasoningLevels: ["high"],
|
||||
},
|
||||
]),
|
||||
// 平台不按模型声明思考开关与 effort 语义:照 Novita,不下发推理控制参数
|
||||
codexChatReasoning: {
|
||||
@@ -4585,8 +4575,8 @@ requires_openai_auth = true`,
|
||||
defaultReasoningLevel: "high",
|
||||
},
|
||||
{
|
||||
model: "kimi-k3",
|
||||
displayName: "Kimi K3",
|
||||
model: "kimi-k3.1-pro",
|
||||
displayName: "Kimi K3.1 Pro",
|
||||
contextWindow: 1048576,
|
||||
inputModalities: ["text", "image"],
|
||||
reasoningLevels: ["max"],
|
||||
@@ -4598,14 +4588,14 @@ requires_openai_auth = true`,
|
||||
reasoningLevels: ["high", "max"],
|
||||
},
|
||||
{
|
||||
model: "deepseek-v4-flash",
|
||||
displayName: "DeepSeek V4 Flash",
|
||||
model: "deepseek-v4.1-flash",
|
||||
displayName: "DeepSeek V4.1 Flash",
|
||||
contextWindow: 1048576,
|
||||
reasoningLevels: ["low", "high", "max"],
|
||||
},
|
||||
{
|
||||
model: "mimo-v2.5-pro",
|
||||
displayName: "MiMo V2.5 Pro",
|
||||
model: "mimo-v2.6-pro",
|
||||
displayName: "MiMo V2.6 Pro",
|
||||
contextWindow: 1048576,
|
||||
},
|
||||
]),
|
||||
@@ -4642,7 +4632,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"aihubmix",
|
||||
"https://aihubmix.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://aihubmix.com/v1",
|
||||
@@ -4659,7 +4649,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"cherryin",
|
||||
"https://open.cherryin.net/v1",
|
||||
"openai/gpt-5.6-sol",
|
||||
"openai/gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://open.cherryin.net/v1"],
|
||||
category: "aggregator",
|
||||
@@ -4674,7 +4664,7 @@ requires_openai_auth = true`,
|
||||
config: generateThirdPartyConfig(
|
||||
"relaxycode",
|
||||
"https://www.relaxycode.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6-astra",
|
||||
),
|
||||
icon: "relaxcode",
|
||||
},
|
||||
@@ -4686,7 +4676,7 @@ requires_openai_auth = true`,
|
||||
OPENAI_API_KEY: "",
|
||||
},
|
||||
config: `model_provider = "custom"
|
||||
model = "gpt-5.6-sol"
|
||||
model = "gpt-6.1-sol"
|
||||
model_reasoning_effort = "high"
|
||||
disable_response_storage = true
|
||||
|
||||
@@ -4710,7 +4700,7 @@ model_auto_compact_token_limit = 9000000`,
|
||||
OPENAI_API_KEY: "",
|
||||
},
|
||||
config: `model_provider = "custom"
|
||||
model = "gpt-5.6-sol"
|
||||
model = "gpt-6.1-sol"
|
||||
model_reasoning_effort = "medium"
|
||||
disable_response_storage = true
|
||||
|
||||
@@ -4731,7 +4721,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"openrouter",
|
||||
"https://openrouter.ai/api/v1",
|
||||
"gpt-5.6-sol",
|
||||
"openai/gpt-6.1-sol",
|
||||
),
|
||||
category: "aggregator",
|
||||
icon: "openrouter",
|
||||
@@ -4745,7 +4735,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"therouter",
|
||||
"https://api.therouter.ai/v1",
|
||||
"openai/gpt-5.3-codex",
|
||||
"openai/gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://api.therouter.ai/v1"],
|
||||
category: "aggregator",
|
||||
@@ -4759,14 +4749,14 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"jiekou",
|
||||
"https://api.jiekou.ai/openai/v1",
|
||||
"claude-fable-5",
|
||||
"claude-fable-5-1",
|
||||
),
|
||||
endpointCandidates: ["https://api.jiekou.ai/openai/v1"],
|
||||
apiFormat: "openai_chat",
|
||||
modelCatalog: modelCatalog([
|
||||
{
|
||||
model: "claude-fable-5",
|
||||
displayName: "Claude Fable 5",
|
||||
model: "claude-fable-5-1",
|
||||
displayName: "Claude Fable 5.1",
|
||||
contextWindow: 1000000,
|
||||
inputModalities: ["text", "image"],
|
||||
},
|
||||
@@ -4784,7 +4774,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"aicodewith",
|
||||
"https://api.aicodewith.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: ["https://api.aicodewith.ai/v1"],
|
||||
category: "aggregator",
|
||||
@@ -4822,6 +4812,16 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
displayName: "Qwen 3.8 Flash",
|
||||
contextWindow: 1000000,
|
||||
},
|
||||
{
|
||||
model: "moonshotai/Kimi-K3.1-Pro",
|
||||
displayName: "Kimi K3.1 Pro",
|
||||
contextWindow: 1048576,
|
||||
},
|
||||
{
|
||||
model: "zai-org/GLM-5.3",
|
||||
displayName: "GLM-5.3",
|
||||
contextWindow: 1000000,
|
||||
},
|
||||
]),
|
||||
category: "third_party",
|
||||
icon: "commandcode",
|
||||
@@ -4835,7 +4835,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"moark",
|
||||
"https://moark.com/v1",
|
||||
"deepseek-v4-flash-0731",
|
||||
"deepseek-v4.1-flash",
|
||||
),
|
||||
endpointCandidates: ["https://moark.com/v1"],
|
||||
// 显式写出协议,让预设自身信息完整、不必依赖表单推导:表单在预设缺少
|
||||
@@ -4864,16 +4864,20 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
// qwen3-coder-plus 只有单档 none,默认随之回落 none。
|
||||
// 首行 = 默认模型,须与 config 的 model 一致。
|
||||
modelCatalog: modelCatalog([
|
||||
// 2026-10-24 公开目录(ai.gitee.com/v1/models)起:flash 换 V4.1、Pro 用带
|
||||
// 日期的 0813、qwen3-coder-plus 已不在目录。kimi-k3.1-pro / qwen3.8-max 的档位
|
||||
// 平台未自证,官方档位又与 model_reasoning_effort = "high" 不兼容,先不进 Codex
|
||||
// 目录,Kimi 保留仍在目录、档位已实测的 K2.7 Code;flash 沿用 DeepSeek 官方 low/high/max
|
||||
{
|
||||
model: "deepseek-v4-flash-0731",
|
||||
displayName: "DeepSeek V4 Flash",
|
||||
model: "deepseek-v4.1-flash",
|
||||
displayName: "DeepSeek V4.1 Flash",
|
||||
contextWindow: 1000000,
|
||||
inputModalities: ["text"],
|
||||
reasoningLevels: ["low", "high", "max"],
|
||||
},
|
||||
{
|
||||
model: "DeepSeek-V4-Pro",
|
||||
displayName: "DeepSeek V4 Pro",
|
||||
model: "DeepSeek-V4-Pro-0813",
|
||||
displayName: "DeepSeek V4 Pro 0813",
|
||||
contextWindow: 1000000,
|
||||
inputModalities: ["text"],
|
||||
// MoArk 400 明文:'low', 'medium', 'high', 'xhigh', 'max'
|
||||
@@ -4887,6 +4891,14 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
// MoArk 400 明文:none or low or medium or high or xhigh or max
|
||||
reasoningLevels: ["none", "low", "medium", "high", "xhigh", "max"],
|
||||
},
|
||||
{
|
||||
model: "GLM-5.3-Flash",
|
||||
displayName: "GLM-5.3 Flash",
|
||||
contextWindow: 1000000,
|
||||
inputModalities: ["text", "image"],
|
||||
// 平台未自证,退回智谱官方 Codex 目录的 low/high/max
|
||||
reasoningLevels: ["low", "high", "max"],
|
||||
},
|
||||
{
|
||||
model: "Kimi-K2.7-Code",
|
||||
displayName: "Kimi K2.7 Code",
|
||||
@@ -4895,19 +4907,6 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
// MoArk 400 明文:'none', 'minimal', 'low', 'medium', 'high', 'xhigh'
|
||||
reasoningLevels: ["none", "minimal", "low", "medium", "high", "xhigh"],
|
||||
},
|
||||
{
|
||||
model: "qwen3-coder-plus",
|
||||
displayName: "Qwen3 Coder Plus",
|
||||
contextWindow: 1000000,
|
||||
inputModalities: ["text"],
|
||||
// 实测 effort 完全不生效(none 与 ultra 的 reasoning_tokens 同为 0)。
|
||||
// 不能留空:留空等于沿用原生模板的 none/high 两档、默认 high,Codex 仍会
|
||||
// 给出一个不改变任何行为的"关闭/开启思考"选择器。声明单档 none 让
|
||||
// apply_codex_reasoning_level_override 生成单档、默认回落 none;Codex 在
|
||||
// 只有一个普通档位时直接应用、不显示选择界面。(空数组同样走保留模板的
|
||||
// 早退分支,解决不了。)
|
||||
reasoningLevels: ["none"],
|
||||
},
|
||||
]),
|
||||
category: "aggregator",
|
||||
icon: "moark",
|
||||
@@ -4923,7 +4922,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"soruxgpt",
|
||||
"https://ai.soruxgpt.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://ai.soruxgpt.com/v1",
|
||||
@@ -4944,7 +4943,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"soruxgpt_coding",
|
||||
"https://app.soruxgpt.com/api/codex",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://app.soruxgpt.com/api/codex",
|
||||
@@ -4962,7 +4961,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"ikuncode",
|
||||
"https://api.ikuncode.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://api.ikuncode.ai/v1",
|
||||
@@ -4979,7 +4978,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"runtoken",
|
||||
"https://www.runtoken.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://www.runtoken.ai/v1",
|
||||
@@ -4996,7 +4995,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"botcf",
|
||||
"https://botcf.com/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
icon: "botcf",
|
||||
},
|
||||
@@ -5010,7 +5009,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"yylx",
|
||||
"https://app.yylx.io/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
endpointCandidates: [
|
||||
"https://app.yylx.io/v1",
|
||||
@@ -5028,7 +5027,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"tokenflux",
|
||||
"https://tokenflux.dev/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
icon: "tokenflux",
|
||||
},
|
||||
@@ -5041,7 +5040,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"nekocode",
|
||||
"https://nekoapi.ai/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
icon: "nekocode",
|
||||
},
|
||||
@@ -5054,7 +5053,7 @@ base_url = "https://cc-api.pipellm.ai/v1"`,
|
||||
config: generateThirdPartyConfig(
|
||||
"aicoming",
|
||||
"https://api.aicoming.top/v1",
|
||||
"gpt-5.6-sol",
|
||||
"gpt-6.1-sol",
|
||||
),
|
||||
icon: "aicoming",
|
||||
},
|
||||
|
||||
@@ -60,11 +60,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://www.packyapi.ai",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://www.packyapi.ai",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "PackyCode",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -85,11 +85,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://apinebula.ai",
|
||||
GEMINI_API_KEY: "",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://apinebula.ai",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "APINebula",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -104,11 +104,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.aicodemirror.ai/api/gemini",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.aicodemirror.ai/api/gemini",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "AICodeMirror",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -124,11 +124,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.openmodel.ai",
|
||||
GEMINI_MODEL: "gemini-3.1-pro-preview",
|
||||
GEMINI_MODEL: "gemini-4-argon",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.openmodel.ai",
|
||||
model: "gemini-3.1-pro-preview",
|
||||
model: "gemini-4-argon",
|
||||
description: "OpenModel",
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
@@ -193,11 +193,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://router.shengsuanyun.com/api",
|
||||
GEMINI_MODEL: "google/gemini-3.6-flash",
|
||||
GEMINI_MODEL: "google/gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://router.shengsuanyun.com/api",
|
||||
model: "google/gemini-3.6-flash",
|
||||
model: "google/gemini-3.8-flash",
|
||||
description: "Shengsuanyun",
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
@@ -211,11 +211,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.aigocode.dev",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.aigocode.dev",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "AIGoCode",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -235,11 +235,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.qnaigc.com/bypass/vertex",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.qnaigc.com/bypass/vertex",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "Qiniu",
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
@@ -257,11 +257,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.aicoding.inc",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.aicoding.inc",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "AICoding",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -277,11 +277,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://subrouter.ai/v1beta",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://subrouter.ai/v1beta",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "SubRouter",
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
@@ -317,11 +317,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.apikey.fan",
|
||||
GEMINI_API_KEY: "",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.apikey.fan",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "APIKEY.FUN",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -341,11 +341,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://9527.codes",
|
||||
GEMINI_API_KEY: "",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://9527.codes",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "9527CODE",
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
@@ -364,11 +364,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://code0.ai",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://code0.ai",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "Code0",
|
||||
category: "aggregator",
|
||||
icon: "code0",
|
||||
@@ -380,11 +380,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.a6api.com",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.a6api.com",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "A6API",
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
@@ -398,11 +398,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://node-hk.sssaicodeapi.com/api",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://node-hk.sssaicodeapi.com/api",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "SSSAiCode",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -442,11 +442,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.cubence.com",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.cubence.com",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "Cubence",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -467,11 +467,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://cn.crazyrouter.com",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://cn.crazyrouter.com",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "CrazyRouter",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -488,11 +488,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://sudocode.us",
|
||||
GEMINI_API_KEY: "",
|
||||
GEMINI_MODEL: "gemini-3.1-flash-lite",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://sudocode.us",
|
||||
model: "gemini-3.1-flash-lite",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "SudoCode.us",
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
@@ -507,11 +507,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://apicdn.xycai.us",
|
||||
GEMINI_API_KEY: "",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://apicdn.xycai.us",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "XycAi",
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
@@ -531,11 +531,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://modelflare.dev",
|
||||
GEMINI_API_KEY: "",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://modelflare.dev",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "Modelflare",
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
@@ -619,7 +619,7 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://e-flowcode.cc",
|
||||
GEMINI_API_KEY: "",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
config: {
|
||||
general: {
|
||||
@@ -639,7 +639,7 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
},
|
||||
},
|
||||
baseURL: "https://e-flowcode.cc",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "E-FlowCode",
|
||||
category: "third_party",
|
||||
endpointCandidates: ["https://e-flowcode.cc"],
|
||||
@@ -654,11 +654,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://open.cherryin.net",
|
||||
GEMINI_API_KEY: "",
|
||||
GEMINI_MODEL: "google/gemini-3.6-flash",
|
||||
GEMINI_MODEL: "google/gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://open.cherryin.net",
|
||||
model: "google/gemini-3.6-flash",
|
||||
model: "google/gemini-3.8-flash",
|
||||
description: "CherryIN",
|
||||
category: "aggregator",
|
||||
endpointCandidates: ["https://open.cherryin.net"],
|
||||
@@ -671,11 +671,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://openrouter.ai/api",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://openrouter.ai/api",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "OpenRouter",
|
||||
category: "aggregator",
|
||||
icon: "openrouter",
|
||||
@@ -688,11 +688,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.therouter.ai",
|
||||
GEMINI_MODEL: "gemini-3.6-flash",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.therouter.ai",
|
||||
model: "gemini-3.6-flash",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "TheRouter",
|
||||
category: "aggregator",
|
||||
endpointCandidates: ["https://api.therouter.ai"],
|
||||
@@ -705,11 +705,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.aicodewith.ai/gemini_cli",
|
||||
GEMINI_MODEL: "gemini-3.1-pro-preview",
|
||||
GEMINI_MODEL: "gemini-4-argon",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.aicodewith.ai/gemini_cli",
|
||||
model: "gemini-3.1-pro-preview",
|
||||
model: "gemini-4-argon",
|
||||
description: "AICodeWith",
|
||||
category: "aggregator",
|
||||
endpointCandidates: ["https://api.aicodewith.ai/gemini_cli"],
|
||||
@@ -723,11 +723,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://ai.soruxgpt.com",
|
||||
GEMINI_MODEL: "gemini-3.1-pro-preview",
|
||||
GEMINI_MODEL: "gemini-4-argon",
|
||||
},
|
||||
},
|
||||
baseURL: "https://ai.soruxgpt.com",
|
||||
model: "gemini-3.1-pro-preview",
|
||||
model: "gemini-4-argon",
|
||||
description: "SoruxGPT",
|
||||
category: "aggregator",
|
||||
endpointCandidates: [
|
||||
@@ -746,11 +746,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.ikuncode.ai",
|
||||
GEMINI_MODEL: "gemini-3.1-pro-preview",
|
||||
GEMINI_MODEL: "gemini-4-argon",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.ikuncode.ai",
|
||||
model: "gemini-3.1-pro-preview",
|
||||
model: "gemini-4-argon",
|
||||
description: "IKunCode",
|
||||
category: "aggregator",
|
||||
endpointCandidates: ["https://api.ikuncode.ai", "https://api.ikuncode.cc"],
|
||||
@@ -763,11 +763,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://www.runtoken.ai",
|
||||
GEMINI_MODEL: "gemini-3.1-pro-preview",
|
||||
GEMINI_MODEL: "gemini-4-argon",
|
||||
},
|
||||
},
|
||||
baseURL: "https://www.runtoken.ai",
|
||||
model: "gemini-3.1-pro-preview",
|
||||
model: "gemini-4-argon",
|
||||
description: "RunToken",
|
||||
category: "aggregator",
|
||||
endpointCandidates: ["https://www.runtoken.ai", "https://fast.runtoken.ai"],
|
||||
@@ -781,11 +781,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://app.yylx.io",
|
||||
GEMINI_MODEL: "gemini-3.1-pro-preview",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://app.yylx.io",
|
||||
model: "gemini-3.1-pro-preview",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "YYLX",
|
||||
category: "aggregator",
|
||||
endpointCandidates: [
|
||||
@@ -802,11 +802,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://tokenflux.dev",
|
||||
GEMINI_MODEL: "gemini-3.1-pro",
|
||||
GEMINI_MODEL: "gemini-3.8-flash",
|
||||
},
|
||||
},
|
||||
baseURL: "https://tokenflux.dev",
|
||||
model: "gemini-3.1-pro",
|
||||
model: "gemini-3.8-flash",
|
||||
description: "TokenFlux",
|
||||
category: "aggregator",
|
||||
icon: "tokenflux",
|
||||
@@ -818,11 +818,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
|
||||
settingsConfig: {
|
||||
env: {
|
||||
GOOGLE_GEMINI_BASE_URL: "https://api.aicoming.top",
|
||||
GEMINI_MODEL: "gemini-3.1-pro-preview",
|
||||
GEMINI_MODEL: "gemini-4-argon",
|
||||
},
|
||||
},
|
||||
baseURL: "https://api.aicoming.top",
|
||||
model: "gemini-3.1-pro-preview",
|
||||
model: "gemini-4-argon",
|
||||
description: "AIComing",
|
||||
category: "aggregator",
|
||||
icon: "aicoming",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* - OpenCode Go 上游自 2026-08 起已提供 grok-4.5,但暂仍不收录:
|
||||
* 订阅制网关是否纳入 Grok 预设属产品决策,收录前需单独评估。
|
||||
* - 只收聚合站与第三方中转站,默认模型统一为 grok-4.5;
|
||||
* OpenRouter 系命名空间的路由站用 "x-ai/grok-4.5"。
|
||||
* OpenRouter 系命名空间的路由站用 "x-ai/grok-4.7"。
|
||||
*
|
||||
* config 字段沿用 Codex 风格 TOML 作为载体:Grok 表单只从中提取
|
||||
* base_url / model / wire_api 三个字段(extractCodex* 工具),再重建
|
||||
@@ -58,7 +58,7 @@ export const grokBuildOfficialPreset: GrokBuildProviderPreset = {
|
||||
};
|
||||
|
||||
/** OpenRouter 系命名空间路由站的 Grok 模型 id */
|
||||
const OPENROUTER_STYLE_GROK_MODEL = "x-ai/grok-4.5";
|
||||
const OPENROUTER_STYLE_GROK_MODEL = "x-ai/grok-4.7";
|
||||
|
||||
const grokAuth = (): Record<string, any> => ({ OPENAI_API_KEY: "" });
|
||||
|
||||
@@ -663,7 +663,7 @@ export const grokBuildProviderPresets: GrokBuildProviderPreset[] = [
|
||||
websiteUrl: "https://x.ai/api",
|
||||
apiKeyUrl: "https://console.x.ai",
|
||||
auth: grokAuth(),
|
||||
config: grokPresetConfig("xAI (Grok)", "https://api.x.ai/v1"),
|
||||
config: grokPresetConfig("xAI (Grok)", "https://api.x.ai/v1", "grok-4.7"),
|
||||
endpointCandidates: ["https://api.x.ai/v1"],
|
||||
apiFormat: "openai_responses",
|
||||
category: "third_party",
|
||||
@@ -759,7 +759,8 @@ export const grokBuildProviderPresets: GrokBuildProviderPreset[] = [
|
||||
config: grokPresetConfig(
|
||||
"TheRouter",
|
||||
"https://api.therouter.ai/v1",
|
||||
OPENROUTER_STYLE_GROK_MODEL,
|
||||
// TheRouter 的 xAI 前缀是 xai/(不是 x-ai/)
|
||||
"xai/grok-4.7",
|
||||
),
|
||||
endpointCandidates: ["https://api.therouter.ai/v1"],
|
||||
category: "aggregator",
|
||||
|
||||
+573
-265
File diff suppressed because it is too large.
Load diff
@@ -17,8 +17,8 @@ const allJieKouPresetGroups = [
|
||||
["Hermes", hermesProviderPresets],
|
||||
] as const;
|
||||
|
||||
const defaultModelId = "claude-fable-5";
|
||||
const defaultModelName = "Claude Fable 5";
|
||||
const defaultModelId = "claude-fable-5-1";
|
||||
const defaultModelName = "Claude Fable 5.1";
|
||||
const anthropicBaseUrl = "https://api.jiekou.ai/anthropic";
|
||||
const openAiBaseUrl = "https://api.jiekou.ai/openai/v1";
|
||||
const brandDetails = {
|
||||
@@ -128,9 +128,10 @@ describe("JieKou AI provider presets", () => {
|
||||
},
|
||||
});
|
||||
expect(Object.keys(preset.settingsConfig.models)).toEqual([
|
||||
defaultModelId,
|
||||
"claude-opus-5-5",
|
||||
"claude-fable-5-1",
|
||||
"claude-sonnet-5-5",
|
||||
"claude-haiku-5-5",
|
||||
defaultModelId,
|
||||
]);
|
||||
expect(`${preset.settingsConfig.options.baseURL}/chat/completions`).toBe(
|
||||
"https://api.jiekou.ai/openai/v1/chat/completions",
|
||||
@@ -153,7 +154,7 @@ describe("JieKou AI provider presets", () => {
|
||||
input: ["text", "image"],
|
||||
contextWindow: 1000000,
|
||||
maxTokens: 128000,
|
||||
cost: { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
|
||||
cost: { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 },
|
||||
}),
|
||||
]),
|
||||
},
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -318,6 +318,15 @@ export const piModelCatalog = {
|
||||
maxTokens: 131_072,
|
||||
},
|
||||
},
|
||||
"moonshotai/kimi-k3.1-pro": {
|
||||
capabilities: {
|
||||
name: "Kimi K3.1 Pro",
|
||||
reasoning: true,
|
||||
input: ["text", "image"],
|
||||
contextWindow: 1_048_576,
|
||||
maxTokens: 131_072,
|
||||
},
|
||||
},
|
||||
"openai/gpt-5": {
|
||||
capabilities: {
|
||||
name: "GPT-5",
|
||||
@@ -800,6 +809,15 @@ export const piModelCatalog = {
|
||||
maxTokens: 128000,
|
||||
},
|
||||
},
|
||||
"openai/gpt-6.1-sol": {
|
||||
capabilities: {
|
||||
name: "GPT-6.1 Sol",
|
||||
reasoning: true,
|
||||
input: ["text", "image"],
|
||||
contextWindow: 272000,
|
||||
maxTokens: 128000,
|
||||
},
|
||||
},
|
||||
"openai/gpt-6-sol": {
|
||||
capabilities: {
|
||||
name: "GPT-6 Sol",
|
||||
|
||||
+269
-224
@@ -241,13 +241,12 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
@@ -267,8 +266,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
}),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
],
|
||||
@@ -289,11 +288,11 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -339,8 +338,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -360,16 +359,15 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
@@ -391,9 +389,10 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -474,6 +473,7 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -501,6 +501,13 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
id: "deepseek-v4-pro-0813",
|
||||
contextWindow: 1_048_576,
|
||||
}),
|
||||
// V4.1 Flash 1017 为较新的带日期构建,窗口与最大输出取站点目录
|
||||
piModel("deepseek/deepseek-flash", {
|
||||
id: "deepseek-v4.1-flash-1017",
|
||||
name: "DeepSeek V4.1 Flash 1017",
|
||||
contextWindow: 1_000_000,
|
||||
maxTokens: 384_000,
|
||||
}),
|
||||
// V4.1 Flash 平台标注可看图,目录里的 V4 Flash 只收文本
|
||||
piModel("deepseek/deepseek-v4-flash", {
|
||||
id: "deepseek-v4.1-flash",
|
||||
@@ -547,12 +554,12 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
id: "deepseek-v4-flash-0731",
|
||||
name: "DeepSeek V4 Flash 0731",
|
||||
}),
|
||||
piModel("deepseek/deepseek-v4-flash", { id: "deepseek-v4-flash" }),
|
||||
piModel("deepseek/deepseek-flash", { id: "deepseek-v4.1-flash" }),
|
||||
piModel("deepseek/deepseek-v3.2", { id: "deepseek-v3.2" }),
|
||||
piModel("zai/glm-5.2", { id: "glm-5.2" }),
|
||||
piModel("zai/glm-5.3", { id: "glm-5.3" }),
|
||||
piModel("zai/glm-5.1", { id: "glm-5.1" }),
|
||||
piModel("zai/glm-5", { id: "glm-5" }),
|
||||
piModel("moonshotai/kimi-k2.6", { id: "kimi-k2.6" }),
|
||||
piModel("moonshotai/kimi-k3", { id: "kimi-k3" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -571,12 +578,13 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "third_party",
|
||||
@@ -621,11 +629,11 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -646,8 +654,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
}),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
],
|
||||
@@ -669,15 +677,12 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "anthropic/claude-opus-5",
|
||||
}),
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "anthropic/claude-sonnet-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "anthropic/claude-opus-5.5",
|
||||
}),
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "anthropic/claude-sonnet-5.5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", {
|
||||
id: "anthropic/claude-fable-5.1",
|
||||
}),
|
||||
@@ -701,8 +706,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
@@ -723,15 +728,16 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "third_party",
|
||||
@@ -750,16 +756,15 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
@@ -779,8 +784,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
}),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
],
|
||||
@@ -800,6 +805,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-6.1-sol", { id: "gpt-6.1-sol" }),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
}),
|
||||
@@ -823,14 +830,16 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
{
|
||||
...piModel("deepseek/deepseek-v4-flash", {
|
||||
id: "deepseek/deepseek-v4-flash-0731",
|
||||
name: "Deepseek V4 Flash 0731",
|
||||
id: "deepseek/deepseek-v4.1-flash",
|
||||
name: "DeepSeek V4.1 Flash",
|
||||
contextWindow: 1_048_576,
|
||||
maxTokens: 393_216,
|
||||
thinkingProfile: "deepseekV4",
|
||||
}),
|
||||
compat: { ...DEEPSEEK_THINKING_COMPAT },
|
||||
},
|
||||
piModel("moonshotai/kimi-k3.1-pro", { id: "moonshotai/kimi-k3.1-pro" }),
|
||||
piModel("zai/glm-5.3", { id: "zai-org/glm-5.3" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -850,16 +859,15 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
@@ -961,7 +969,7 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("volcengine/doubao-seed-2.1-pro", {
|
||||
id: "doubao-seed-2-1-pro-260628",
|
||||
id: "doubao-seed-2-1-pro-260915",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -982,8 +990,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
}),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
],
|
||||
@@ -1004,9 +1012,11 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-6.1-sol", { id: "gpt-6.1-sol" }),
|
||||
piModel("openai/gpt-6-astra", {
|
||||
id: "gpt-6-astra",
|
||||
}),
|
||||
piModel("openai/gpt-6-luna", { id: "gpt-6-luna" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -1025,11 +1035,11 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -1050,14 +1060,14 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-haiku-4.5-20251001", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -1077,12 +1087,13 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "third_party",
|
||||
@@ -1102,8 +1113,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-responses",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -1124,11 +1135,11 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -1149,11 +1160,11 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
@@ -1175,11 +1186,11 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -1201,12 +1212,12 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-responses",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
}),
|
||||
piModel("openai/gpt-6-sol", { id: "gpt-6-sol" }),
|
||||
piModel("openai/gpt-6-luna", { id: "gpt-6-luna" }),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
piModel("openai/gpt-6-luna", { id: "gpt-6-luna" }),
|
||||
],
|
||||
},
|
||||
category: "third_party",
|
||||
@@ -1226,8 +1237,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-responses",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
}),
|
||||
piModel("openai/gpt-6-sol", { id: "gpt-6-sol" }),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
@@ -1251,9 +1262,9 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-responses",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", { id: "gpt-5.6-sol" }),
|
||||
piModel("openai/gpt-6-sol", { id: "gpt-6-sol" }),
|
||||
piModel("openai/gpt-6.1-sol", { id: "gpt-6.1-sol" }),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
piModel("openai/gpt-6-luna", { id: "gpt-6-luna" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -1274,9 +1285,9 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-responses",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", { id: "gpt-5.6-sol" }),
|
||||
piModel("openai/gpt-6-sol", { id: "gpt-6-sol" }),
|
||||
piModel("openai/gpt-6.1-sol", { id: "gpt-6.1-sol" }),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
piModel("openai/gpt-6-luna", { id: "gpt-6-luna" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -1298,8 +1309,7 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", { id: "gpt-5.6-sol" }),
|
||||
piModel("openai/gpt-6-sol", { id: "gpt-6-sol" }),
|
||||
piModel("openai/gpt-6.1-sol", { id: "gpt-6.1-sol" }),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
],
|
||||
},
|
||||
@@ -1319,8 +1329,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
}),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
],
|
||||
@@ -1339,10 +1349,9 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("zai/glm-5.1", {
|
||||
id: "zai-org/glm-5.1",
|
||||
name: "GLM 5.1",
|
||||
}),
|
||||
piModel("zai/glm-5.3", { id: "zai-org/glm-5.3" }),
|
||||
piModel("zai/glm-5.3-flash", { id: "zai-org/glm-5.3-flash" }),
|
||||
piModel("moonshotai/kimi-k3", { id: "moonshotai/kimi-k3" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -1842,18 +1851,6 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
{
|
||||
...piModel("xiaomi/mimo-v2.5-pro", {
|
||||
id: "mimo-v2.5-pro",
|
||||
}),
|
||||
compat: { ...XIAOMI_THINKING_COMPAT },
|
||||
},
|
||||
{
|
||||
...piModel("xiaomi/mimo-v2.5", {
|
||||
id: "mimo-v2.5",
|
||||
}),
|
||||
compat: { ...XIAOMI_THINKING_COMPAT },
|
||||
},
|
||||
{
|
||||
...piModel("xiaomi/mimo-v2.6-pro", { id: "mimo-v2.6-pro" }),
|
||||
compat: XIAOMI_THINKING_COMPAT,
|
||||
@@ -1887,12 +1884,6 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("xiaomi/mimo-v2.5-pro", {
|
||||
id: "mimo-v2.5-pro",
|
||||
}),
|
||||
piModel("xiaomi/mimo-v2.5", {
|
||||
id: "mimo-v2.5",
|
||||
}),
|
||||
{
|
||||
...piModel("xiaomi/mimo-v2.6-pro", { id: "mimo-v2.6-pro" }),
|
||||
compat: XIAOMI_THINKING_COMPAT,
|
||||
@@ -1919,16 +1910,19 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
apiKey: "",
|
||||
models: [
|
||||
{
|
||||
...piModel("zai/glm-5.2", {
|
||||
id: "glm-5.2",
|
||||
name: "GLM 5.2",
|
||||
...piModel("zai/glm-5.3", {
|
||||
id: "glm-5.3",
|
||||
thinkingProfile: "openCodeGoGlm52",
|
||||
}),
|
||||
compat: { ...OPENAI_COMPLETIONS_COMPAT },
|
||||
},
|
||||
{
|
||||
...piModel("moonshotai/kimi-k2.7-code", {
|
||||
id: "kimi-k2.7-code",
|
||||
...piModel("zai/glm-5.3-flash", { id: "glm-5.3-flash" }),
|
||||
compat: { ...OPENAI_COMPLETIONS_COMPAT },
|
||||
},
|
||||
{
|
||||
...piModel("moonshotai/kimi-k3.1-pro", {
|
||||
id: "kimi-k3.1-pro",
|
||||
}),
|
||||
compat: { ...OPENAI_COMPLETIONS_COMPAT },
|
||||
},
|
||||
@@ -1940,15 +1934,25 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
compat: { ...DEEPSEEK_THINKING_COMPAT },
|
||||
},
|
||||
{
|
||||
...piModel("deepseek/deepseek-v4-flash", {
|
||||
id: "deepseek-v4-flash",
|
||||
...piModel("deepseek/deepseek-flash", {
|
||||
id: "deepseek-v4.1-flash",
|
||||
thinkingProfile: "deepseekV4",
|
||||
}),
|
||||
compat: { ...DEEPSEEK_THINKING_COMPAT },
|
||||
},
|
||||
{
|
||||
...piModel("xiaomi/mimo-v2.5-pro", {
|
||||
id: "mimo-v2.5-pro",
|
||||
...piModel("xiaomi/mimo-v2.6-pro", {
|
||||
id: "mimo-v2.6-pro",
|
||||
}),
|
||||
compat: { ...OPENAI_COMPLETIONS_COMPAT },
|
||||
},
|
||||
{
|
||||
...piModel("qwen/qwen3.8-max", { id: "qwen3.8-max" }),
|
||||
compat: { ...OPENAI_COMPLETIONS_COMPAT },
|
||||
},
|
||||
{
|
||||
...piModel("minimax/minimax-m3.1-flash", {
|
||||
id: "minimax-m3.1-flash",
|
||||
}),
|
||||
compat: { ...OPENAI_COMPLETIONS_COMPAT },
|
||||
},
|
||||
@@ -1970,13 +1974,13 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-haiku-5.5", { id: "claude-haiku-5-5" }),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
@@ -1995,11 +1999,11 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "anthropic/claude-sonnet-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "anthropic/claude-opus-5.5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "anthropic/claude-opus-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "anthropic/claude-sonnet-5.5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", {
|
||||
id: "anthropic/claude-fable-5.1",
|
||||
@@ -2020,15 +2024,15 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "anthropic/claude-sonnet-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "anthropic/claude-opus-5",
|
||||
}),
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "anthropic/claude-opus-5.5",
|
||||
}),
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "anthropic/claude-sonnet-5.5",
|
||||
}),
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "anthropic/claude-haiku-5.5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", {
|
||||
id: "anthropic/claude-fable-5.1",
|
||||
}),
|
||||
@@ -2049,20 +2053,23 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "anthropic/claude-sonnet-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "anthropic/claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("openai/gpt-5.3-codex", {
|
||||
id: "openai/gpt-5.3-codex",
|
||||
piModel("anthropic/claude-fable-5.1", {
|
||||
id: "anthropic/claude-fable-5-1",
|
||||
}),
|
||||
piModel("openai/gpt-5.2", {
|
||||
id: "openai/gpt-5.2",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "openai/gpt-6.1-sol",
|
||||
}),
|
||||
piModel("google/gemini-3.6-flash", {
|
||||
id: "google/gemini-3.6-flash",
|
||||
piModel("openai/gpt-6-astra", {
|
||||
id: "openai/gpt-6-astra",
|
||||
}),
|
||||
piModel("qwen/qwen3-coder-480b", {
|
||||
id: "qwen/qwen3-coder-480b",
|
||||
piModel("google/gemini-3.8-flash", {
|
||||
id: "google/gemini-3.8-flash",
|
||||
}),
|
||||
piModel("qwen/qwen3.8-max", {
|
||||
id: "qwen/qwen3.8-max",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -2100,10 +2107,17 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
maxTokens: 262_144,
|
||||
}),
|
||||
piModel("deepseek/deepseek-flash", {
|
||||
id: "deepseek-ai/DeepSeek-V4.1-Flash",
|
||||
id: "deepseek-ai/DeepSeek-V4.1-Flash-1017",
|
||||
name: "DeepSeek V4.1 Flash 1017",
|
||||
contextWindow: 1_048_576,
|
||||
maxTokens: 262_144,
|
||||
}),
|
||||
piModel("zai/glm-5.3", {
|
||||
id: "zai-org/GLM-5.3-Fast",
|
||||
name: "GLM-5.3 Fast",
|
||||
input: ["text", "image"],
|
||||
maxTokens: 262_144,
|
||||
}),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -2120,12 +2134,17 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("zai/glm-5.1", {
|
||||
id: "zai-org/glm-5.1",
|
||||
}),
|
||||
piModel("zai/glm-5.3", { id: "zai-org/glm-5.3" }),
|
||||
piModel("zai/glm-5.3-flash", { id: "zai-org/glm-5.3-flash" }),
|
||||
piModel("moonshotai/kimi-k3", { id: "moonshotai/kimi-k3" }),
|
||||
piModel("moonshotai/kimi-k3.1-pro", { id: "moonshotai/kimi-k3.1-pro" }),
|
||||
piModel("deepseek/deepseek-flash", {
|
||||
id: "deepseek/deepseek-v4.1-flash",
|
||||
}),
|
||||
piModel("minimax/minimax-m3.1-flash", {
|
||||
id: "minimax/minimax-m3.1-flash",
|
||||
}),
|
||||
piModel("qwen/qwen3.8-max", { id: "qwen/qwen3.8-max" }),
|
||||
piModel("xiaomi/mimo-v2.6-pro", { id: "xiaomimimo/mimo-v2.6-pro" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -2143,8 +2162,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("moonshotai/kimi-k3", {
|
||||
id: "moonshotai/kimi-k3",
|
||||
piModel("moonshotai/kimi-k2.6", {
|
||||
id: "moonshotai/kimi-k2.6",
|
||||
}),
|
||||
piModel("zai/glm-5.3", { id: "z-ai/glm-5.3" }),
|
||||
piModel("zai/glm-5.3-flash", { id: "z-ai/glm-5.3-flash" }),
|
||||
@@ -2311,8 +2330,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
{
|
||||
...piModel("deepseek/deepseek-v4-flash", {
|
||||
id: "deepseek-ai/DeepSeek-V4-Flash-0731",
|
||||
name: "DeepSeek V4 Flash 0731",
|
||||
id: "deepseek-ai/DeepSeek-V4.1-Flash-1017",
|
||||
name: "DeepSeek V4.1 Flash 1017",
|
||||
contextWindow: 1_048_576,
|
||||
thinkingProfile: "deepseekV4",
|
||||
}),
|
||||
@@ -2333,11 +2352,7 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
thinkingProfile: "kimi3",
|
||||
}),
|
||||
piModel("zai/glm-5.3", { id: "zai-org/GLM-5.3" }),
|
||||
piModel("zai/glm-5.2", {
|
||||
id: "zai-org/GLM-5.2",
|
||||
contextWindow: 1_048_576,
|
||||
maxTokens: 163_840,
|
||||
}),
|
||||
piModel("zai/glm-5.3-flash", { id: "zai-org/GLM-5.3-Flash" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -2366,10 +2381,17 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "anthropic/claude-sonnet-5.5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", {
|
||||
id: "anthropic/claude-fable-5.1",
|
||||
}),
|
||||
piModel("openai/gpt-6-astra", {
|
||||
id: "openai/gpt-6-astra",
|
||||
contextWindow: 1_050_000,
|
||||
}),
|
||||
piModel("openai/gpt-6-luna", {
|
||||
id: "openai/gpt-6-luna",
|
||||
contextWindow: 1_050_000,
|
||||
}),
|
||||
piModel("google/gemini-3.8-flash", {
|
||||
id: "google/gemini-3.8-flash",
|
||||
contextWindow: 1_000_000,
|
||||
@@ -2408,6 +2430,13 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
id: "moonshotai/Kimi-K3",
|
||||
contextWindow: 1_024_000,
|
||||
}),
|
||||
piModel("deepseek/deepseek-flash", {
|
||||
id: "deepseek-ai/DeepSeek-V4.1-Flash",
|
||||
}),
|
||||
piModel("minimax/minimax-m3", { id: "MiniMaxAI/MiniMax-M3" }),
|
||||
piModel("minimax/minimax-m3.1-flash", {
|
||||
id: "MiniMaxAI/MiniMax-M3.1-Flash",
|
||||
}),
|
||||
piModel("moonshotai/kimi-k2.7-code", {
|
||||
id: "moonshotai/Kimi-K2.7-Code",
|
||||
input: ["text"],
|
||||
@@ -2538,6 +2567,12 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
piModel("zai/glm-5.3", { id: "zai-org/GLM-5.3:baseten" }),
|
||||
piModel("zai/glm-5.3-flash", { id: "zai-org/GLM-5.3-Flash:baseten" }),
|
||||
piModel("moonshotai/kimi-k3", { id: "moonshotai/Kimi-K3:baseten" }),
|
||||
piModel("deepseek/deepseek-flash", {
|
||||
id: "deepseek-ai/DeepSeek-V4.1-Flash-1017:baseten",
|
||||
name: "DeepSeek V4.1 Flash 1017",
|
||||
contextWindow: 1_048_576,
|
||||
maxTokens: 262_144,
|
||||
}),
|
||||
piModel("deepseek/deepseek-v4-pro", {
|
||||
id: "deepseek-ai/DeepSeek-V4-Pro-0813:baseten",
|
||||
contextWindow: 1_048_576,
|
||||
@@ -2586,16 +2621,16 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
name: "claude-opus-5",
|
||||
}),
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
name: "claude-sonnet-5",
|
||||
}),
|
||||
piModel("anthropic/claude-haiku-4.5-20251001", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
name: "claude-haiku-4-5-20251001",
|
||||
}),
|
||||
],
|
||||
@@ -2614,8 +2649,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-responses",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.6-sol", {
|
||||
id: "gpt-5.6-sol",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
name: "gpt-5.6-sol",
|
||||
}),
|
||||
piModel("openai/gpt-6-sol", { id: "gpt-6-sol" }),
|
||||
@@ -2637,16 +2672,15 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "openai-responses",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("openai/gpt-5.2-codex", {
|
||||
id: "gpt-5.2-codex",
|
||||
piModel("openai/gpt-6.1-sol", {
|
||||
id: "gpt-6.1-sol",
|
||||
name: "gpt-5.2-codex",
|
||||
}),
|
||||
piModel("openai/gpt-5.3-codex", {
|
||||
id: "gpt-5.3-codex",
|
||||
piModel("openai/gpt-6-sol", { id: "gpt-6-sol" }),
|
||||
piModel("openai/gpt-6-astra", {
|
||||
id: "gpt-6-astra",
|
||||
name: "gpt-5.3-codex",
|
||||
}),
|
||||
piModel("openai/gpt-6-sol", { id: "gpt-6-sol" }),
|
||||
piModel("openai/gpt-6-astra", { id: "gpt-6-astra" }),
|
||||
],
|
||||
},
|
||||
category: "third_party",
|
||||
@@ -2807,7 +2841,6 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
thinkingProfile: "offUnsupported",
|
||||
}),
|
||||
piModel("moonshotai/kimi-k2.6", { id: "kimi-k2.6" }),
|
||||
piModel("minimax/minimax-m2.7", { id: "minimax-m2.7" }),
|
||||
piModel("minimax/minimax-m3", { id: "minimax-m3" }),
|
||||
{
|
||||
...piModel("deepseek/deepseek-v4-flash", {
|
||||
@@ -3193,15 +3226,16 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
api: "anthropic-messages",
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5", {
|
||||
id: "claude-opus-5",
|
||||
piModel("anthropic/claude-opus-5.5", {
|
||||
id: "claude-opus-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-sonnet-5", {
|
||||
id: "claude-sonnet-5",
|
||||
piModel("anthropic/claude-sonnet-5.5", {
|
||||
id: "claude-sonnet-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -3219,13 +3253,17 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
apiKey: "",
|
||||
// 聚合网关,上游思考档位语义未逐一核对,交给 Pi 原生默认行为({})
|
||||
models: [
|
||||
piModel("deepseek/deepseek-v4-flash", {
|
||||
id: "deepseek-v4-flash-0731",
|
||||
piModel("deepseek/deepseek-flash", {
|
||||
id: "deepseek-v4.1-flash",
|
||||
}),
|
||||
piModel("deepseek/deepseek-v4-pro", { id: "DeepSeek-V4-Pro" }),
|
||||
piModel("deepseek/deepseek-v4-pro", { id: "DeepSeek-V4-Pro-0813" }),
|
||||
piModel("zai/glm-5.3", { id: "GLM-5.3" }),
|
||||
piModel("moonshotai/kimi-k2.7-code", { id: "Kimi-K2.7-Code" }),
|
||||
piModel("qwen/qwen3-coder-plus", { id: "qwen3-coder-plus" }),
|
||||
piModel("zai/glm-5.3-flash", { id: "GLM-5.3-Flash" }),
|
||||
piModel("moonshotai/kimi-k3.1-pro", { id: "kimi-k3.1-pro" }),
|
||||
piModel("qwen/qwen3.8-max", { id: "qwen3.8-max" }),
|
||||
piModel("qwen/qwen3.8-flash", { id: "qwen3.8-flash" }),
|
||||
piModel("minimax/minimax-m3", { id: "MiniMax-M3" }),
|
||||
piModel("stepfun/step-3.7-flash", { id: "Step-3.7-Flash" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -3244,9 +3282,10 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -3265,9 +3304,10 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -3286,9 +3326,10 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -3307,9 +3348,10 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -3328,10 +3370,11 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
apiKey: "",
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5", { id: "claude-sonnet-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -3350,9 +3393,10 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
@@ -3374,8 +3418,8 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
],
|
||||
},
|
||||
@@ -3395,9 +3439,10 @@ const piProviderPresetDefinitions: PiProviderPreset[] = [
|
||||
models: [
|
||||
piModel("anthropic/claude-opus-5.5", { id: "claude-opus-5-5" }),
|
||||
piModel("anthropic/claude-sonnet-5.5", { id: "claude-sonnet-5-5" }),
|
||||
piModel("anthropic/claude-haiku-4.5", {
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
piModel("anthropic/claude-haiku-5.5", {
|
||||
id: "claude-haiku-5-5",
|
||||
}),
|
||||
piModel("anthropic/claude-fable-5.1", { id: "claude-fable-5-1" }),
|
||||
],
|
||||
},
|
||||
category: "aggregator",
|
||||
|
||||
@@ -317,6 +317,11 @@ export const piThinkingBindings: readonly PiThinkingBinding[] = [
|
||||
api: "openai-responses",
|
||||
profileId: "openaiResponsesGpt6Astra",
|
||||
},
|
||||
{
|
||||
catalogKey: "openai/gpt-6.1-sol",
|
||||
api: "openai-responses",
|
||||
profileId: "openaiResponsesGpt56",
|
||||
},
|
||||
{
|
||||
catalogKey: "openai/gpt-6-sol",
|
||||
api: "openai-responses",
|
||||
|
||||
@@ -19,8 +19,8 @@ const ppioPresetCollections = [
|
||||
["Pi", piProviderPresets],
|
||||
] as const;
|
||||
|
||||
const ppioModelId = "deepseek/deepseek-v4-flash-0731";
|
||||
const ppioModelName = "Deepseek V4 Flash 0731";
|
||||
const ppioModelId = "deepseek/deepseek-v4.1-flash";
|
||||
const ppioModelName = "DeepSeek V4.1 Flash";
|
||||
const ppioAnthropicEndpoint = "https://api.ppio.com/anthropic";
|
||||
const ppioOpenAiEndpoint = "https://api.ppio.com/openai/v1";
|
||||
const ppioChatCompletionsEndpoint = `${ppioOpenAiEndpoint}/chat/completions`;
|
||||
@@ -132,7 +132,12 @@ describe("PPIO provider presets", () => {
|
||||
apiKey: { label: "API Key", placeholder: "", editorValue: "" },
|
||||
},
|
||||
});
|
||||
expect(Object.keys(opencode.settingsConfig.models)).toEqual([ppioModelId]);
|
||||
expect(Object.keys(opencode.settingsConfig.models)).toEqual([
|
||||
ppioModelId,
|
||||
"moonshotai/kimi-k3.1-pro",
|
||||
"zai-org/glm-5.3",
|
||||
"deepseek/deepseek-v4-pro",
|
||||
]);
|
||||
expect(`${opencode.settingsConfig.options.baseURL}/chat/completions`).toBe(
|
||||
ppioChatCompletionsEndpoint,
|
||||
);
|
||||
@@ -146,17 +151,6 @@ describe("PPIO provider presets", () => {
|
||||
baseUrl: ppioOpenAiEndpoint,
|
||||
apiKey: "",
|
||||
api: "openai-completions",
|
||||
models: [
|
||||
{
|
||||
id: ppioModelId,
|
||||
name: ppioModelName,
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
contextWindow: 1048576,
|
||||
maxTokens: 393216,
|
||||
cost: { input: 0.14, output: 0.29, cacheRead: 0.03 },
|
||||
},
|
||||
],
|
||||
},
|
||||
templateValues: {
|
||||
apiKey: { label: "API Key", placeholder: "sk-...", editorValue: "" },
|
||||
@@ -166,6 +160,27 @@ describe("PPIO provider presets", () => {
|
||||
modelCatalog: { [`ppio/${ppioModelId}`]: { alias: ppioModelName } },
|
||||
},
|
||||
});
|
||||
expect(
|
||||
(openclaw.settingsConfig.models ?? []).map((model) => model.id),
|
||||
).toEqual([
|
||||
ppioModelId,
|
||||
"moonshotai/kimi-k3.1-pro",
|
||||
"zai-org/glm-5.3",
|
||||
"deepseek/deepseek-v4-pro",
|
||||
"xiaomimimo/mimo-v2.6-pro",
|
||||
"qwen/qwen3.8-max",
|
||||
"minimax/minimax-m3.1-flash",
|
||||
"stepfun/step-5-preview",
|
||||
]);
|
||||
expect(openclaw.settingsConfig.models?.[0]).toMatchObject({
|
||||
id: ppioModelId,
|
||||
name: ppioModelName,
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
contextWindow: 1048576,
|
||||
maxTokens: 393216,
|
||||
cost: { input: 0.14, output: 0.29, cacheRead: 0.03 },
|
||||
});
|
||||
expect(`${openclaw.settingsConfig.baseUrl}/chat/completions`).toBe(
|
||||
ppioChatCompletionsEndpoint,
|
||||
);
|
||||
@@ -186,6 +201,17 @@ describe("PPIO provider presets", () => {
|
||||
name: ppioModelName,
|
||||
context_length: 1048576,
|
||||
},
|
||||
{
|
||||
id: "moonshotai/kimi-k3.1-pro",
|
||||
name: "Kimi K3.1 Pro",
|
||||
context_length: 1048576,
|
||||
},
|
||||
{ id: "zai-org/glm-5.3", name: "GLM-5.3", context_length: 1000000 },
|
||||
{
|
||||
id: "deepseek/deepseek-v4-pro",
|
||||
name: "DeepSeek V4 Pro",
|
||||
context_length: 1000000,
|
||||
},
|
||||
],
|
||||
},
|
||||
suggestedDefaults: {
|
||||
@@ -207,30 +233,33 @@ describe("PPIO provider presets", () => {
|
||||
baseUrl: ppioOpenAiEndpoint,
|
||||
api: "openai-completions",
|
||||
apiKey: "",
|
||||
models: [
|
||||
{
|
||||
id: ppioModelId,
|
||||
name: ppioModelName,
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
contextWindow: 1048576,
|
||||
maxTokens: 393216,
|
||||
thinkingLevelMap: {
|
||||
minimal: null,
|
||||
low: null,
|
||||
medium: null,
|
||||
high: "high",
|
||||
max: "max",
|
||||
},
|
||||
compat: {
|
||||
supportsStore: false,
|
||||
supportsDeveloperRole: false,
|
||||
maxTokensField: "max_tokens",
|
||||
requiresReasoningContentOnAssistantMessages: true,
|
||||
thinkingFormat: "deepseek",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
expect(pi.settingsConfig.models.map((model) => model.id)).toEqual([
|
||||
ppioModelId,
|
||||
"moonshotai/kimi-k3.1-pro",
|
||||
"zai-org/glm-5.3",
|
||||
]);
|
||||
expect(pi.settingsConfig.models[0]).toMatchObject({
|
||||
id: ppioModelId,
|
||||
name: ppioModelName,
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
contextWindow: 1048576,
|
||||
maxTokens: 393216,
|
||||
thinkingLevelMap: {
|
||||
minimal: null,
|
||||
low: null,
|
||||
medium: null,
|
||||
high: "high",
|
||||
max: "max",
|
||||
},
|
||||
compat: {
|
||||
supportsStore: false,
|
||||
supportsDeveloperRole: false,
|
||||
maxTokensField: "max_tokens",
|
||||
requiresReasoningContentOnAssistantMessages: true,
|
||||
thinkingFormat: "deepseek",
|
||||
},
|
||||
});
|
||||
expect(`${pi.settingsConfig.baseUrl}/chat/completions`).toBe(
|
||||
|
||||
@@ -137,10 +137,10 @@ exports[`ProviderForm 预设新增行金标 > claude > Nvidia 1`] = `
|
||||
"env": {
|
||||
"ANTHROPIC_AUTH_TOKEN": "sk-golden-test",
|
||||
"ANTHROPIC_BASE_URL": "https://integrate.api.nvidia.com",
|
||||
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "moonshotai/kimi-k3[1M]",
|
||||
"ANTHROPIC_DEFAULT_OPUS_MODEL": "moonshotai/kimi-k3[1M]",
|
||||
"ANTHROPIC_DEFAULT_SONNET_MODEL": "moonshotai/kimi-k3[1M]",
|
||||
"ANTHROPIC_MODEL": "moonshotai/kimi-k3[1M]",
|
||||
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "moonshotai/kimi-k2.6",
|
||||
"ANTHROPIC_DEFAULT_OPUS_MODEL": "moonshotai/kimi-k2.6",
|
||||
"ANTHROPIC_DEFAULT_SONNET_MODEL": "moonshotai/kimi-k2.6",
|
||||
"ANTHROPIC_MODEL": "moonshotai/kimi-k2.6",
|
||||
"CLAUDE_CODE_AUTO_MODE_SERVER": "0",
|
||||
},
|
||||
},
|
||||
@@ -198,7 +198,7 @@ exports[`ProviderForm 预设新增行金标 > codex > E-FlowCode 1`] = `
|
||||
"OPENAI_API_KEY": "sk-golden-test",
|
||||
},
|
||||
"config": "model_provider = "custom"
|
||||
model = "gpt-5.6-sol"
|
||||
model = "gpt-6.1-sol"
|
||||
model_reasoning_effort = "high"
|
||||
disable_response_storage = true
|
||||
|
||||
@@ -225,14 +225,6 @@ exports[`ProviderForm 预设新增行金标 > codex > Nvidia 1`] = `
|
||||
"iconColor": "#000000",
|
||||
"meta": {
|
||||
"apiFormat": "openai_chat",
|
||||
"codexChatReasoning": {
|
||||
"effortParam": "reasoning_effort",
|
||||
"effortValueMode": "passthrough",
|
||||
"outputFormat": "reasoning_content",
|
||||
"supportsEffort": true,
|
||||
"supportsThinking": true,
|
||||
"thinkingParam": "none",
|
||||
},
|
||||
"endpointAutoSelect": true,
|
||||
},
|
||||
"name": "Nvidia",
|
||||
@@ -244,7 +236,7 @@ exports[`ProviderForm 预设新增行金标 > codex > Nvidia 1`] = `
|
||||
"OPENAI_API_KEY": "sk-golden-test",
|
||||
},
|
||||
"config": "model_provider = "custom"
|
||||
model = "moonshotai/kimi-k3"
|
||||
model = "moonshotai/kimi-k2.6"
|
||||
model_reasoning_effort = "high"
|
||||
disable_response_storage = true
|
||||
|
||||
@@ -256,19 +248,13 @@ requires_openai_auth = true",
|
||||
"modelCatalog": {
|
||||
"models": [
|
||||
{
|
||||
"contextWindow": 1048576,
|
||||
"defaultReasoningLevel": "high",
|
||||
"displayName": "Kimi K3",
|
||||
"contextWindow": 262144,
|
||||
"displayName": "Kimi K2.6",
|
||||
"inputModalities": [
|
||||
"text",
|
||||
"image",
|
||||
],
|
||||
"model": "moonshotai/kimi-k3",
|
||||
"reasoningLevels": [
|
||||
"low",
|
||||
"high",
|
||||
"max",
|
||||
],
|
||||
"model": "moonshotai/kimi-k2.6",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -64,10 +64,10 @@ describe("OpenCode Go Provider Preset", () => {
|
||||
expect(env).toMatchObject({
|
||||
ANTHROPIC_BASE_URL: "https://opencode.ai/zen/go",
|
||||
ANTHROPIC_API_KEY: "",
|
||||
ANTHROPIC_MODEL: "deepseek-v4-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek-v4-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek-v4-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek-v4-flash[1M]",
|
||||
ANTHROPIC_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek-v4.1-flash[1M]",
|
||||
});
|
||||
// /messages 只认 x-api-key,Bearer 被网关静默忽略——勿换回 AUTH_TOKEN
|
||||
expect(env).not.toHaveProperty("ANTHROPIC_AUTH_TOKEN");
|
||||
|
||||
@@ -87,7 +87,7 @@ const expectedChatPresets = new Map<
|
||||
"AtlasCloud",
|
||||
{
|
||||
baseUrl: "https://api.atlascloud.ai/v1",
|
||||
contextWindows: { "zai-org/glm-5.2": 1048576 },
|
||||
contextWindows: { "zai-org/glm-5.3": 1048576 },
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -101,7 +101,7 @@ const expectedChatPresets = new Map<
|
||||
"Nvidia",
|
||||
{
|
||||
baseUrl: "https://integrate.api.nvidia.com/v1",
|
||||
contextWindows: { "moonshotai/kimi-k3": 1048576 },
|
||||
contextWindows: { "moonshotai/kimi-k2.6": 262144 },
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -111,10 +111,10 @@ const expectedChatPresets = new Map<
|
||||
contextWindows: {
|
||||
"glm-5.3": 1000000,
|
||||
"glm-5.3-flash": 1000000,
|
||||
"kimi-k3": 1048576,
|
||||
"kimi-k3.1-pro": 1048576,
|
||||
"deepseek-v4-pro": 1048576,
|
||||
"deepseek-v4-flash": 1048576,
|
||||
"mimo-v2.5-pro": 1048576,
|
||||
"deepseek-v4.1-flash": 1048576,
|
||||
"mimo-v2.6-pro": 1048576,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -222,7 +222,7 @@ describe("Codex Chat provider presets", () => {
|
||||
["BytePlus", { contextWindows: { "ark-code-latest": 256000 } }],
|
||||
[
|
||||
"Volcengine Doubao",
|
||||
{ contextWindows: { "doubao-seed-2-1-pro-260628": 262144 } },
|
||||
{ contextWindows: { "doubao-seed-2-1-pro-260915": 262144 } },
|
||||
],
|
||||
[
|
||||
"千问AI平台",
|
||||
@@ -280,8 +280,6 @@ describe("Codex Chat provider presets", () => {
|
||||
"Xiaomi MiMo",
|
||||
{
|
||||
contextWindows: {
|
||||
"mimo-v2.5-pro": 1048576,
|
||||
"mimo-v2.5": 1048576,
|
||||
"mimo-v2.6-pro": 1048576,
|
||||
"mimo-v2.6-flash": 1048576,
|
||||
"mimo-v2.6-pro-ultraspeed": 1048576,
|
||||
@@ -292,8 +290,6 @@ describe("Codex Chat provider presets", () => {
|
||||
"Xiaomi MiMo Token Plan (China)",
|
||||
{
|
||||
contextWindows: {
|
||||
"mimo-v2.5-pro": 1048576,
|
||||
"mimo-v2.5": 1048576,
|
||||
"mimo-v2.6-pro": 1048576,
|
||||
"mimo-v2.6-flash": 1048576,
|
||||
},
|
||||
@@ -381,7 +377,7 @@ describe("Codex Chat provider presets", () => {
|
||||
|
||||
it("ships per-model reasoningLevels for OpenCode Go mirroring models.dev", () => {
|
||||
// Zen 网关的合法 effort 档位是逐模型的(models.dev reasoning_options,
|
||||
// 2026-09-10):统一并集映射会把 high 发给仅声明 max 的 kimi-k3,
|
||||
// 2026-09-10):统一并集映射会把 high 发给仅声明 max 的 kimi-k3.1-pro(原 kimi-k3),
|
||||
// 此测试锁住逐模型表,防回退。
|
||||
const preset = codexProviderPresets.find(
|
||||
(item) => item.name === "OpenCode Go",
|
||||
@@ -399,10 +395,10 @@ describe("Codex Chat provider presets", () => {
|
||||
).toEqual({
|
||||
"glm-5.3": ["low", "high", "max"],
|
||||
"glm-5.3-flash": ["low", "high", "max"],
|
||||
"kimi-k3": ["max"],
|
||||
"kimi-k3.1-pro": ["max"],
|
||||
"deepseek-v4-pro": ["high", "max"],
|
||||
"deepseek-v4-flash": ["low", "high", "max"],
|
||||
"mimo-v2.5-pro": null,
|
||||
"deepseek-v4.1-flash": ["low", "high", "max"],
|
||||
"mimo-v2.6-pro": null,
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -44,7 +44,7 @@ describe("Codex preset pre-filled reasoning levels", () => {
|
||||
// 方舟深度思考文档:本模型无限制的通用四档(minimal=关思考直接回答)
|
||||
[
|
||||
"Volcengine Doubao",
|
||||
"doubao-seed-2-1-pro-260628",
|
||||
"doubao-seed-2-1-pro-260915",
|
||||
["minimal", "low", "medium", "high"],
|
||||
],
|
||||
// 混元官方枚举 low/high;hy3 开源 chat template 对其他值直接 raise
|
||||
@@ -101,17 +101,22 @@ describe("Codex preset pre-filled reasoning levels", () => {
|
||||
"MiniMax-M3.1-Flash",
|
||||
["low", "medium", "high", "xhigh", "max"],
|
||||
],
|
||||
["Xiaomi MiMo", "mimo-v2.5-pro", ["none", "low", "medium", "high"], "low"],
|
||||
["Xiaomi MiMo", "mimo-v2.5", ["none", "low", "medium", "high"], "low"],
|
||||
["Xiaomi MiMo", "mimo-v2.6-pro", ["none", "low", "medium", "high"], "low"],
|
||||
[
|
||||
"Xiaomi MiMo Token Plan (China)",
|
||||
"mimo-v2.5-pro",
|
||||
"Xiaomi MiMo",
|
||||
"mimo-v2.6-flash",
|
||||
["none", "low", "medium", "high"],
|
||||
"low",
|
||||
],
|
||||
[
|
||||
"Xiaomi MiMo Token Plan (China)",
|
||||
"mimo-v2.5",
|
||||
"mimo-v2.6-pro",
|
||||
["none", "low", "medium", "high"],
|
||||
"low",
|
||||
],
|
||||
[
|
||||
"Xiaomi MiMo Token Plan (China)",
|
||||
"mimo-v2.6-flash",
|
||||
["none", "low", "medium", "high"],
|
||||
"low",
|
||||
],
|
||||
@@ -130,10 +135,8 @@ describe("Codex preset pre-filled reasoning levels", () => {
|
||||
// SiliconFlow .cn:平台仅 high/max,显式 high 与预设配置一致。
|
||||
["SiliconFlow", "deepseek-ai/DeepSeek-V4-Flash", ["high", "max"], "high"],
|
||||
// 聚合平台尚未确认新 GLM 的开关/effort;单档不下发推理控制参数。
|
||||
["AtlasCloud", "zai-org/glm-5.2", ["high"]],
|
||||
["AtlasCloud", "zai-org/glm-5.3", ["high"]],
|
||||
["Novita AI", "zai-org/glm-5.3", ["high"]],
|
||||
// NIM K3 的官方枚举;显式 high 与预设配置一致。
|
||||
["Nvidia", "moonshotai/kimi-k3", ["low", "high", "max"], "high"],
|
||||
// Groq gpt-oss(Chat 路由):平台声明的 reasoning_effort 枚举
|
||||
// low/medium/high(console.groq.com/docs/reasoning,2026-10-14),含 high,
|
||||
// 无需显式默认
|
||||
@@ -189,13 +192,13 @@ describe("Codex preset pre-filled reasoning levels", () => {
|
||||
["Kimi For Coding", "k3-256k", ["low", "high", "max"], "high"],
|
||||
// OpenCode Go(Zen 网关):opencode 客户端 variants() 严格按各模型在
|
||||
// models.dev 的 reasoning_options 声明发 reasoning_effort(provider/
|
||||
// transform.ts)——GLM5.3 两款有 low/high/max,Kimi K3 仅 max。
|
||||
// transform.ts)——GLM5.3 两款有 low/high/max,Kimi K3.1 Pro 仅 max。
|
||||
// 代理转换层按同一张表逐模型钳制;GLM 默认 high 与预设配置一致。
|
||||
["OpenCode Go", "glm-5.3", ["low", "high", "max"], "high"],
|
||||
["OpenCode Go", "glm-5.3-flash", ["low", "high", "max"], "high"],
|
||||
["OpenCode Go", "kimi-k3", ["max"]],
|
||||
["OpenCode Go", "kimi-k3.1-pro", ["max"]],
|
||||
["OpenCode Go", "deepseek-v4-pro", ["high", "max"]],
|
||||
["OpenCode Go", "deepseek-v4-flash", ["low", "high", "max"]],
|
||||
["OpenCode Go", "deepseek-v4.1-flash", ["low", "high", "max"]],
|
||||
// 千问官方 Codex 页只发布一份 model-catalog.local.json,且该元数据段落
|
||||
// 位于套餐分页之前(help.aliyun.com/zh/model-studio/codex,2026-09-08
|
||||
// 核对):qwen3.8-max 档位 low/medium/xhigh、默认 xhigh(≠ 模板回落的
|
||||
@@ -242,7 +245,7 @@ describe("Codex preset pre-filled reasoning levels", () => {
|
||||
["Baseten", "zai-org/GLM-5.3-Flash", ["low", "high", "max"], "high"],
|
||||
[
|
||||
"Baseten",
|
||||
"deepseek-ai/DeepSeek-V4.1-Flash",
|
||||
"deepseek-ai/DeepSeek-V4.1-Flash-1017",
|
||||
["none", "high", "max"],
|
||||
"high",
|
||||
],
|
||||
@@ -264,7 +267,7 @@ describe("Codex preset pre-filled reasoning levels", () => {
|
||||
// 同 DeepSeek / Kimi / Zhipu GLM 直连预设
|
||||
[
|
||||
"DeepInfra",
|
||||
"deepseek-ai/DeepSeek-V4-Flash-0731",
|
||||
"deepseek-ai/DeepSeek-V4.1-Flash-1017",
|
||||
["low", "high", "max"],
|
||||
],
|
||||
["DeepInfra", "deepseek-ai/DeepSeek-V4-Pro-0813", ["low", "high", "max"]],
|
||||
@@ -352,7 +355,7 @@ describe("Codex preset pre-filled reasoning levels", () => {
|
||||
// 无表不发 reasoning_effort)。ModelScope 是否透传思考字段未证实,不造
|
||||
// 两态假开关。
|
||||
const UNFILLED: Array<[string, string]> = [
|
||||
["OpenCode Go", "mimo-v2.5-pro"],
|
||||
["OpenCode Go", "mimo-v2.6-pro"],
|
||||
["ModelScope", "ZhipuAI/GLM-5.2"],
|
||||
// StepFun 无后缀 3.5-flash:官方未暴露 effort,单一常开思考态
|
||||
["StepFun", "step-3.5-flash"],
|
||||
@@ -362,8 +365,8 @@ describe("Codex preset pre-filled reasoning levels", () => {
|
||||
["Baidu Qianfan Token Plan", "deepseek-v4-flash-0731"],
|
||||
["Baidu Qianfan Token Plan", "glm-5.2"],
|
||||
["Baidu Qianfan Token Plan", "kimi-k2.6"],
|
||||
// DeepInfra GLM-5.2:平台未声明、各处口径不一,未实测前不造档位
|
||||
["DeepInfra", "zai-org/GLM-5.2"],
|
||||
// DeepInfra GLM-5.2 曾在此列(平台未声明、各处口径不一);2026-10-24
|
||||
// 已从 DeepInfra 目录移除,不再断言
|
||||
// Mistral AI:开推理后流式 content 为分块数组、转换层暂不解析,且
|
||||
// 现有 effortValueMode 发不出 "none",第一版不下发推理参数、不填档位
|
||||
["Mistral AI", "mistral-medium-3-5"],
|
||||
|
||||
@@ -37,6 +37,8 @@ describe("Command Code provider presets", () => {
|
||||
"deepseek/deepseek-v4.1-flash",
|
||||
"z-ai/glm-5.3-flash",
|
||||
"Qwen/Qwen3.8-Flash",
|
||||
"moonshotai/Kimi-K3.1-Pro",
|
||||
"zai-org/GLM-5.3",
|
||||
]);
|
||||
expect(
|
||||
preset?.modelCatalog?.some((model) => model.model.includes("claude")),
|
||||
|
||||
@@ -6,7 +6,7 @@ import { openclawProviderPresets } from "@/config/openclawProviderPresets";
|
||||
// contextWindow,二者必须一致。曾出现 OpenClaw 写成 128000、Codex 写成 262144 的
|
||||
// 漂移,导致 OpenClaw 用户拿到过小的上下文窗口、长上下文提前压缩/截断。
|
||||
describe("Volcengine Doubao preset consistency across apps", () => {
|
||||
const DOUBAO_MODEL_ID = "doubao-seed-2-1-pro-260628";
|
||||
const DOUBAO_MODEL_ID = "doubao-seed-2-1-pro-260915";
|
||||
const EXPECTED_CONTEXT_WINDOW = 262144;
|
||||
|
||||
it("keeps the doubao context window in sync between OpenClaw and Codex", () => {
|
||||
|
||||
@@ -23,7 +23,7 @@ describe("Xiaomi MiMo Token Plan presets", () => {
|
||||
"xiaomi-mimo-token-plan/mimo-v2.6-pro",
|
||||
);
|
||||
expect(tokenPlan?.suggestedDefaults?.modelCatalog).toHaveProperty(
|
||||
"xiaomi-mimo-token-plan/mimo-v2.5",
|
||||
"xiaomi-mimo-token-plan/mimo-v2.6-flash",
|
||||
);
|
||||
});
|
||||
|
||||
@@ -41,7 +41,7 @@ describe("Xiaomi MiMo Token Plan presets", () => {
|
||||
|
||||
expect(rebased.model?.primary).toBe("my-mimo-plan/mimo-v2.6-pro");
|
||||
expect(rebased.modelCatalog).toHaveProperty("my-mimo-plan/mimo-v2.6-pro");
|
||||
expect(rebased.modelCatalog).toHaveProperty("my-mimo-plan/mimo-v2.5");
|
||||
expect(rebased.modelCatalog).toHaveProperty("my-mimo-plan/mimo-v2.6-flash");
|
||||
expect(rebased.modelCatalog).not.toHaveProperty(
|
||||
"xiaomi-mimo-token-plan/mimo-v2.6-pro",
|
||||
);
|
||||
|
||||
@@ -10,7 +10,7 @@ import { getIcon, hasIcon } from "@/icons/extracted";
|
||||
|
||||
const WEBSITE_URL = "https://moark.com";
|
||||
const API_KEY_URL = "https://moark.com/dashboard/tokens";
|
||||
const DEFAULT_MODEL = "deepseek-v4-flash-0731";
|
||||
const DEFAULT_MODEL = "deepseek-v4.1-flash";
|
||||
|
||||
describe("MoArk (模力方舟) provider presets", () => {
|
||||
it("uses the Anthropic-native root endpoint for Claude Code", () => {
|
||||
@@ -45,7 +45,7 @@ describe("MoArk (模力方舟) provider presets", () => {
|
||||
expect(preset?.endpointCandidates).toEqual(["https://moark.com/v1"]);
|
||||
expect(preset?.icon).toBe("moark");
|
||||
expect(preset?.auth).toEqual({ OPENAI_API_KEY: "" });
|
||||
expect(preset?.config).toContain('model = "deepseek-v4-flash-0731"');
|
||||
expect(preset?.config).toContain('model = "deepseek-v4.1-flash"');
|
||||
expect(preset?.config).toContain('base_url = "https://moark.com/v1"');
|
||||
expect(preset?.config).toContain('wire_api = "responses"');
|
||||
});
|
||||
@@ -59,10 +59,10 @@ describe("MoArk (模力方舟) provider presets", () => {
|
||||
// 缺 modelCatalog 时 Codex 退回通用元数据,/model 只会列出默认模型。
|
||||
expect(catalog.map((model) => model.model)).toEqual([
|
||||
DEFAULT_MODEL,
|
||||
"DeepSeek-V4-Pro",
|
||||
"DeepSeek-V4-Pro-0813",
|
||||
"GLM-5.3",
|
||||
"GLM-5.3-Flash",
|
||||
"Kimi-K2.7-Code",
|
||||
"qwen3-coder-plus",
|
||||
]);
|
||||
|
||||
// 目录首行 = 默认模型,必须与 config.toml 的 model 一致。
|
||||
@@ -77,10 +77,9 @@ describe("MoArk (模力方舟) provider presets", () => {
|
||||
"text",
|
||||
);
|
||||
}
|
||||
// Kimi K2.7 Code 与 OpenClaw 预设一致地支持图像输入。
|
||||
// Kimi K2.7 Code 支持图像输入。
|
||||
expect(
|
||||
catalog.find((model) => model.model === "Kimi-K2.7-Code")
|
||||
?.inputModalities,
|
||||
catalog.find((model) => model.model === "Kimi-K2.7-Code")?.inputModalities,
|
||||
).toEqual(["text", "image"]);
|
||||
});
|
||||
|
||||
@@ -130,7 +129,7 @@ describe("MoArk (模力方舟) provider presets", () => {
|
||||
|
||||
// 实测自 https://moark.com/v1/responses:非法 reasoning_effort 触发的 400
|
||||
// 里厂商给出的明文枚举。
|
||||
expect(levels["DeepSeek-V4-Pro"]).toEqual([
|
||||
expect(levels["DeepSeek-V4-Pro-0813"]).toEqual([
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
@@ -153,21 +152,19 @@ describe("MoArk (模力方舟) provider presets", () => {
|
||||
"high",
|
||||
"xhigh",
|
||||
]);
|
||||
// 2026-10-24 目录刷新:qwen3-coder-plus 已下架;kimi-k3.1-pro / qwen3.8-max
|
||||
// 的档位平台未自证、官方档位与 model_reasoning_effort = "high" 不兼容,
|
||||
// 暂不进 Codex 目录(Pi / OpenCode / OpenClaw 预设照常收录)。
|
||||
// MoArk 不校验该字段,退回 DeepSeek 官方目录的档位。
|
||||
expect(levels[DEFAULT_MODEL]).toEqual(["low", "high", "max"]);
|
||||
// MoArk 对 qwen3-coder-plus 完全不兑现 effort(none 与 ultra 的
|
||||
// reasoning_tokens 同为 0)。留空不等于"没有档位":后端会把未填写理解为沿用
|
||||
// 原生模板的 none/high 两档、默认 high,Codex 仍会给出一个不改变任何行为的
|
||||
// 选择器,所以要显式声明单档 none。
|
||||
expect(levels["qwen3-coder-plus"]).toEqual(["none"]);
|
||||
// 留空不等于"没有档位":后端会把未填写理解为沿用原生模板的 none/high 两档、
|
||||
// 默认 high,Codex 会给出未经平台证实的选择器。
|
||||
|
||||
// 只有单档时 Codex 直接应用、不显示选择界面;四款支持思考的模型必须保留多档
|
||||
// 只有单档时 Codex 直接应用、不显示选择界面;支持思考的模型必须保留多档
|
||||
// 且每档都含 high,后端才会保留模板默认 high,与 config 的
|
||||
// model_reasoning_effort = "high" 一致。
|
||||
const thinkingModels = (preset?.modelCatalog ?? []).filter(
|
||||
(model) => model.model !== "qwen3-coder-plus",
|
||||
);
|
||||
expect(thinkingModels).toHaveLength(4);
|
||||
// model_reasoning_effort = "high" 一致。目录里五款模型都支持思考。
|
||||
const thinkingModels = preset?.modelCatalog ?? [];
|
||||
expect(thinkingModels).toHaveLength(5);
|
||||
for (const model of thinkingModels) {
|
||||
expect(model.reasoningLevels, `${model.model} keeps high`).toContain(
|
||||
"high",
|
||||
@@ -197,10 +194,11 @@ describe("MoArk (模力方舟) provider presets", () => {
|
||||
expect(modelIds).toEqual(
|
||||
expect.arrayContaining([
|
||||
DEFAULT_MODEL,
|
||||
"DeepSeek-V4-Pro",
|
||||
"DeepSeek-V4-Pro-0813",
|
||||
"GLM-5.3",
|
||||
"Kimi-K2.7-Code",
|
||||
"qwen3-coder-plus",
|
||||
"GLM-5.3-Flash",
|
||||
"kimi-k3.1-pro",
|
||||
"qwen3.8-max",
|
||||
]),
|
||||
);
|
||||
});
|
||||
@@ -221,20 +219,22 @@ describe("MoArk (模力方舟) provider presets", () => {
|
||||
"https://api.moark.com/v1",
|
||||
);
|
||||
expect(models).toHaveProperty(DEFAULT_MODEL);
|
||||
expect(models).toHaveProperty("Kimi-K2.7-Code");
|
||||
expect(models[DEFAULT_MODEL]?.name).toBe("DeepSeek V4 Flash");
|
||||
expect(models).toHaveProperty("kimi-k3.1-pro");
|
||||
expect(models[DEFAULT_MODEL]?.name).toBe("DeepSeek V4.1 Flash");
|
||||
|
||||
// OpenCode only offers thinking variants for models flagged as reasoning;
|
||||
// Qwen3 Coder Plus has no thinking mode and stays unflagged.
|
||||
// OpenCode only offers thinking variants for models flagged as reasoning.
|
||||
// The former non-thinking Qwen3 Coder Plus (left unflagged) was replaced by
|
||||
// Qwen3.8 Max, which thinks, so every listed model is flagged now.
|
||||
for (const id of [
|
||||
DEFAULT_MODEL,
|
||||
"DeepSeek-V4-Pro",
|
||||
"DeepSeek-V4-Pro-0813",
|
||||
"GLM-5.3",
|
||||
"Kimi-K2.7-Code",
|
||||
"GLM-5.3-Flash",
|
||||
"kimi-k3.1-pro",
|
||||
"qwen3.8-max",
|
||||
]) {
|
||||
expect(models[id]?.reasoning, `${id} reasoning`).toBe(true);
|
||||
}
|
||||
expect(models["qwen3-coder-plus"]?.reasoning).toBeUndefined();
|
||||
});
|
||||
|
||||
it("uses the OpenAI Completions endpoint for OpenClaw", () => {
|
||||
@@ -255,9 +255,9 @@ describe("MoArk (模力方舟) provider presets", () => {
|
||||
expect(modelIds).toEqual(
|
||||
expect.arrayContaining([
|
||||
DEFAULT_MODEL,
|
||||
"DeepSeek-V4-Pro",
|
||||
"DeepSeek-V4-Pro-0813",
|
||||
"GLM-5.3",
|
||||
"Kimi-K2.7-Code",
|
||||
"kimi-k3.1-pro",
|
||||
]),
|
||||
);
|
||||
expect(preset?.suggestedDefaults?.model).toEqual({
|
||||
@@ -277,7 +277,7 @@ describe("MoArk (模力方舟) provider presets", () => {
|
||||
// OpenCode treats a missing limit as 0 and then skips auto-compaction
|
||||
// (`isOverflow` returns false when `limit.context === 0`), so every model
|
||||
// of a custom provider key must carry explicit capacity numbers.
|
||||
expect(Object.keys(models)).toHaveLength(5);
|
||||
expect(Object.keys(models)).toHaveLength(6);
|
||||
for (const [id, model] of Object.entries(models)) {
|
||||
expect(model.limit?.context, `${id} limit.context`).toBeGreaterThan(0);
|
||||
expect(model.limit?.output, `${id} limit.output`).toBeGreaterThan(0);
|
||||
|
||||
@@ -88,11 +88,11 @@ describe("AWS Bedrock OpenCode Provider Presets", () => {
|
||||
|
||||
for (const preset of presets) {
|
||||
expect(preset).toBeDefined();
|
||||
expect(preset!.settingsConfig.models["mimo-v2.5-pro"]).toMatchObject({
|
||||
expect(preset!.settingsConfig.models["mimo-v2.6-pro"]).toMatchObject({
|
||||
limit: { context: 1048576, output: 131072 },
|
||||
modalities: { input: ["text"], output: ["text"] },
|
||||
modalities: { input: ["text", "image"], output: ["text"] },
|
||||
});
|
||||
expect(preset!.settingsConfig.models["mimo-v2.5"]).toMatchObject({
|
||||
expect(preset!.settingsConfig.models["mimo-v2.6-flash"]).toMatchObject({
|
||||
limit: { context: 1048576, output: 131072 },
|
||||
modalities: { input: ["text", "image"], output: ["text"] },
|
||||
});
|
||||
|
||||
@@ -157,10 +157,10 @@ describe("Pi provider presets", () => {
|
||||
supportsDeveloperRole: false,
|
||||
maxTokensField: "max_tokens",
|
||||
};
|
||||
expect(model("OpenCode Go", "glm-5.2").compat).toEqual(openCodeBase);
|
||||
expect(model("OpenCode Go", "kimi-k2.7-code").compat).toEqual(openCodeBase);
|
||||
expect(model("OpenCode Go", "mimo-v2.5-pro").compat).toEqual(openCodeBase);
|
||||
for (const id of ["deepseek-v4-pro", "deepseek-v4-flash"]) {
|
||||
expect(model("OpenCode Go", "glm-5.3").compat).toEqual(openCodeBase);
|
||||
expect(model("OpenCode Go", "kimi-k3.1-pro").compat).toEqual(openCodeBase);
|
||||
expect(model("OpenCode Go", "mimo-v2.6-pro").compat).toEqual(openCodeBase);
|
||||
for (const id of ["deepseek-v4-pro", "deepseek-v4.1-flash"]) {
|
||||
expect(model("OpenCode Go", id).compat).toEqual({
|
||||
...openCodeBase,
|
||||
requiresReasoningContentOnAssistantMessages: true,
|
||||
@@ -168,7 +168,7 @@ describe("Pi provider presets", () => {
|
||||
});
|
||||
}
|
||||
|
||||
for (const id of ["mimo-v2.5-pro", "mimo-v2.5"]) {
|
||||
for (const id of ["mimo-v2.6-pro", "mimo-v2.6-flash"]) {
|
||||
expect(model("Xiaomi MiMo", id).compat).toEqual({
|
||||
requiresReasoningContentOnAssistantMessages: true,
|
||||
thinkingFormat: "deepseek",
|
||||
|
||||
@@ -83,7 +83,7 @@ describe("Pi thinking profiles", () => {
|
||||
}),
|
||||
expect.objectContaining({
|
||||
preset: "OpenCode Go",
|
||||
modelId: "glm-5.2",
|
||||
modelId: "glm-5.3",
|
||||
profileId: "openCodeGoGlm52",
|
||||
}),
|
||||
expect.objectContaining({
|
||||
|
||||
@@ -40,7 +40,7 @@ describe("SubRouter provider presets", () => {
|
||||
expect(preset?.endpointCandidates).toEqual(["https://subrouter.ai/v1"]);
|
||||
expect(preset?.auth).toEqual({ OPENAI_API_KEY: "" });
|
||||
expect(preset?.config).toContain('name = "subrouter"');
|
||||
expect(preset?.config).toContain('model = "gpt-5.6-sol"');
|
||||
expect(preset?.config).toContain('model = "gpt-6.1-sol"');
|
||||
expect(preset?.config).toContain('base_url = "https://subrouter.ai/v1"');
|
||||
expect(preset?.config).toContain('wire_api = "responses"');
|
||||
});
|
||||
@@ -53,11 +53,11 @@ describe("SubRouter provider presets", () => {
|
||||
expect(preset).toBeDefined();
|
||||
expect(preset?.baseURL).toBe("https://subrouter.ai/v1beta");
|
||||
expect(preset?.endpointCandidates).toEqual(["https://subrouter.ai/v1beta"]);
|
||||
expect(preset?.model).toBe("gemini-3.6-flash");
|
||||
expect(preset?.model).toBe("gemini-3.8-flash");
|
||||
|
||||
const env = (preset?.settingsConfig as { env: Record<string, string> }).env;
|
||||
expect(env.GOOGLE_GEMINI_BASE_URL).toBe("https://subrouter.ai/v1beta");
|
||||
expect(env.GEMINI_MODEL).toBe("gemini-3.6-flash");
|
||||
expect(env.GEMINI_MODEL).toBe("gemini-3.8-flash");
|
||||
});
|
||||
|
||||
it("uses OpenAI-compatible config for OpenCode", () => {
|
||||
@@ -71,7 +71,7 @@ describe("SubRouter provider presets", () => {
|
||||
"https://subrouter.ai/v1",
|
||||
);
|
||||
expect(preset?.settingsConfig.options?.apiKey).toBe("");
|
||||
expect(preset?.settingsConfig.models).toHaveProperty("gpt-5.6-sol");
|
||||
expect(preset?.settingsConfig.models).toHaveProperty("gpt-6.1-sol");
|
||||
});
|
||||
|
||||
it("uses OpenAI completions config for OpenClaw without hardcoded pricing", () => {
|
||||
@@ -84,13 +84,13 @@ describe("SubRouter provider presets", () => {
|
||||
expect(preset?.settingsConfig.baseUrl).toBe("https://subrouter.ai/v1");
|
||||
expect(preset?.settingsConfig.api).toBe("openai-completions");
|
||||
expect(model).toMatchObject({
|
||||
id: "gpt-5.6-sol",
|
||||
name: "GPT-5.6 Sol",
|
||||
id: "gpt-6.1-sol",
|
||||
name: "GPT-6.1 Sol",
|
||||
contextWindow: 272000,
|
||||
});
|
||||
expect(model).not.toHaveProperty("cost");
|
||||
expect(preset?.suggestedDefaults?.model).toEqual({
|
||||
primary: "subrouter/gpt-5.6-sol",
|
||||
primary: "subrouter/gpt-6.1-sol",
|
||||
});
|
||||
});
|
||||
|
||||
@@ -107,7 +107,7 @@ describe("SubRouter provider presets", () => {
|
||||
api_mode: "chat_completions",
|
||||
});
|
||||
expect(preset?.suggestedDefaults?.model).toEqual({
|
||||
default: "gpt-5.6-sol",
|
||||
default: "gpt-6.1-sol",
|
||||
provider: "subrouter",
|
||||
});
|
||||
});
|
||||
|
||||
@@ -21,10 +21,10 @@ describe("TheRouter OpenCode and OpenClaw presets", () => {
|
||||
"https://api.therouter.ai/v1",
|
||||
);
|
||||
expect(preset?.settingsConfig.options?.setCacheKey).toBe(true);
|
||||
expect(models).toHaveProperty("openai/gpt-5.3-codex");
|
||||
expect(models).toHaveProperty("anthropic/claude-sonnet-5");
|
||||
expect(models).toHaveProperty("google/gemini-3.6-flash");
|
||||
expect(models["google/gemini-3.6-flash"]?.name).toBe("Gemini 3.6 Flash");
|
||||
expect(models).toHaveProperty("openai/gpt-6.1-sol");
|
||||
expect(models).toHaveProperty("anthropic/claude-sonnet-5-5");
|
||||
expect(models).toHaveProperty("google/gemini-3.8-flash");
|
||||
expect(models["google/gemini-3.8-flash"]?.name).toBe("Gemini 3.8 Flash");
|
||||
});
|
||||
|
||||
it("uses OpenAI completions config for OpenClaw", () => {
|
||||
@@ -42,23 +42,23 @@ describe("TheRouter OpenCode and OpenClaw presets", () => {
|
||||
expect(preset?.settingsConfig.api).toBe("openai-completions");
|
||||
expect(modelIds).toEqual(
|
||||
expect.arrayContaining([
|
||||
"anthropic/claude-sonnet-5",
|
||||
"openai/gpt-5.3-codex",
|
||||
"openai/gpt-5.2",
|
||||
"google/gemini-3.6-flash",
|
||||
"anthropic/claude-sonnet-5-5",
|
||||
"openai/gpt-6.1-sol",
|
||||
"openai/gpt-6-astra",
|
||||
"google/gemini-3.8-flash",
|
||||
]),
|
||||
);
|
||||
expect(
|
||||
openClawModels.find((model) => model.id === "google/gemini-3.6-flash"),
|
||||
openClawModels.find((model) => model.id === "google/gemini-3.8-flash"),
|
||||
).toMatchObject({
|
||||
name: "Gemini 3.6 Flash",
|
||||
name: "Gemini 3.8 Flash",
|
||||
cost: { input: 1.5, output: 9, cacheRead: 0.15 },
|
||||
});
|
||||
expect(preset?.suggestedDefaults?.model).toEqual({
|
||||
primary: "therouter/anthropic/claude-sonnet-5",
|
||||
primary: "therouter/anthropic/claude-sonnet-5-5",
|
||||
fallbacks: [
|
||||
"therouter/openai/gpt-5.2",
|
||||
"therouter/google/gemini-3.6-flash",
|
||||
"therouter/openai/gpt-6-astra",
|
||||
"therouter/google/gemini-3.8-flash",
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
@@ -17,14 +17,14 @@ describe("TheRouter provider presets", () => {
|
||||
expect(env.ANTHROPIC_BASE_URL).toBe("https://api.therouter.ai");
|
||||
expect(env.ANTHROPIC_AUTH_TOKEN).toBe("");
|
||||
expect(env.ANTHROPIC_API_KEY).toBe("");
|
||||
expect(env.ANTHROPIC_MODEL).toBe("anthropic/claude-sonnet-5");
|
||||
expect(env.ANTHROPIC_MODEL).toBe("anthropic/claude-sonnet-5-5");
|
||||
expect(env.ANTHROPIC_DEFAULT_HAIKU_MODEL).toBe(
|
||||
"anthropic/claude-haiku-4.5",
|
||||
"anthropic/claude-haiku-5-5",
|
||||
);
|
||||
expect(env.ANTHROPIC_DEFAULT_SONNET_MODEL).toBe(
|
||||
"anthropic/claude-sonnet-5",
|
||||
"anthropic/claude-sonnet-5-5",
|
||||
);
|
||||
expect(env.ANTHROPIC_DEFAULT_OPUS_MODEL).toBe("anthropic/claude-opus-5");
|
||||
expect(env.ANTHROPIC_DEFAULT_OPUS_MODEL).toBe("anthropic/claude-opus-5-5");
|
||||
});
|
||||
|
||||
it("uses the OpenAI-compatible v1 endpoint for Codex", () => {
|
||||
@@ -41,7 +41,7 @@ describe("TheRouter provider presets", () => {
|
||||
expect(preset?.config).toContain('model_provider = "custom"');
|
||||
expect(preset?.config).toContain("[model_providers.custom]");
|
||||
expect(preset?.config).toContain('name = "therouter"');
|
||||
expect(preset?.config).toContain('model = "openai/gpt-5.3-codex"');
|
||||
expect(preset?.config).toContain('model = "openai/gpt-6.1-sol"');
|
||||
expect(preset?.config).not.toContain("goals = true");
|
||||
expect(preset?.config).toContain(
|
||||
'base_url = "https://api.therouter.ai/v1"',
|
||||
@@ -60,10 +60,10 @@ describe("TheRouter provider presets", () => {
|
||||
expect(preset?.category).toBe("aggregator");
|
||||
expect(preset?.endpointCandidates).toEqual(["https://api.therouter.ai"]);
|
||||
expect(preset?.baseURL).toBe("https://api.therouter.ai");
|
||||
expect(preset?.model).toBe("gemini-3.6-flash");
|
||||
expect(preset?.model).toBe("gemini-3.8-flash");
|
||||
|
||||
const env = (preset?.settingsConfig as { env: Record<string, string> }).env;
|
||||
expect(env.GOOGLE_GEMINI_BASE_URL).toBe("https://api.therouter.ai");
|
||||
expect(env.GEMINI_MODEL).toBe("gemini-3.6-flash");
|
||||
expect(env.GEMINI_MODEL).toBe("gemini-3.8-flash");
|
||||
});
|
||||
});
|
||||
@@ -123,7 +123,6 @@ const products = [
|
||||
"kimi-k2.7-code",
|
||||
"kimi-k2.7-code-highspeed",
|
||||
"kimi-k2.6",
|
||||
"minimax-m2.7",
|
||||
"minimax-m3",
|
||||
"deepseek-v4-flash",
|
||||
"deepseek-v4-pro",
|
||||
@@ -470,9 +469,10 @@ describe("Tencent Token Plan provider presets", () => {
|
||||
// 全部真 Key 实测(2026-08-31):
|
||||
// - glm-5.3 始终思考且档位严格枚举 low/high/max(medium/xhigh 会 400)
|
||||
// - kimi-k2.7-code(-highspeed) 仅接受 thinking:enabled
|
||||
// - minimax-m2.7 与国内 auto 关思考被静默忽略 → 不列 none
|
||||
// - 国内 auto 关思考被静默忽略 → 不列 none
|
||||
// - 其余模型 thinking 开关真实生效 → 两态 none/high
|
||||
// - minimax-m2.5 官方已除名且平台计划下线(2026-09-07 从全部 app 移除),不再断言
|
||||
// - minimax-m2.7 平台标注 2026-11-17 下线,2026-10-24 从企业版移除
|
||||
const epro = codexProviderPresets.find(
|
||||
(item) => item.name === "Tencent Token Plan Enterprise Pro",
|
||||
);
|
||||
@@ -482,7 +482,6 @@ describe("Tencent Token Plan provider presets", () => {
|
||||
expect(levels("glm-5.3")).toEqual(["low", "high", "max"]);
|
||||
expect(levels("kimi-k2.7-code")).toEqual(["high"]);
|
||||
expect(levels("kimi-k2.7-code-highspeed")).toEqual(["high"]);
|
||||
expect(levels("minimax-m2.7")).toEqual(["high"]);
|
||||
expect(levels("auto")).toEqual(["high"]); // 国内 auto 忽略关思考
|
||||
expect(levels("glm-5.2")).toEqual(["none", "high"]);
|
||||
expect(levels("kimi-k2.6")).toEqual(["none", "high"]);
|
||||
|
||||
@@ -21,10 +21,10 @@ describe("xAI OAuth provider presets", () => {
|
||||
});
|
||||
expect((preset!.settingsConfig as any).env).toMatchObject({
|
||||
ANTHROPIC_BASE_URL: "https://api.x.ai/v1",
|
||||
ANTHROPIC_MODEL: "grok-4.5",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "grok-4.5",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "grok-4.5",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "grok-4.5",
|
||||
ANTHROPIC_MODEL: "grok-4.7",
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: "grok-4.7",
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: "grok-4.7",
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: "grok-4.7",
|
||||
});
|
||||
expect((preset!.settingsConfig as any).env).not.toHaveProperty(
|
||||
"ANTHROPIC_API_KEY",
|
||||
@@ -49,7 +49,7 @@ describe("xAI OAuth provider presets", () => {
|
||||
});
|
||||
expect(preset!.modelRoutes).toEqual([
|
||||
expect.objectContaining({
|
||||
upstreamModel: "grok-4.5",
|
||||
upstreamModel: "grok-4.7",
|
||||
supports1m: false,
|
||||
}),
|
||||
]);
|
||||
|
||||
Reference in new issue
Block a user