feat(ai): refresh generated model catalogs
Some checks failed
CI / build-check-test (push) Has been cancelled

closes #6256
This commit is contained in:
Vegard Stikbakke 2026-07-04 06:27:58 +02:00
parent a1b336d73e
commit ee24a9ec54
10 changed files with 201 additions and 52 deletions

View file

@ -15,6 +15,7 @@
### Added
- Refreshed generated model catalogs from models.dev, adding newly listed models including Kimi K2.7 Code for GitHub Copilot and Fable 5 to several providers ([#6256](https://github.com/earendil-works/pi/issues/6256)).
- Added Claude Sonnet 5 to the GitHub Copilot model catalog ([#6200](https://github.com/earendil-works/pi/issues/6200)).
- Added zstd request-body compression for the OpenAI Codex Responses SSE transport. Requests are sent with `Content-Encoding: zstd` when Node/Bun zstd support is available; the WebSocket transport is unchanged.

View file

@ -72,6 +72,24 @@ export const AMAZON_BEDROCK_MODELS = {
contextWindow: 300000,
maxTokens: 8192,
} satisfies Model<"bedrock-converse-stream">,
"anthropic.claude-fable-5": {
id: "anthropic.claude-fable-5",
name: "Claude Fable 5",
api: "bedrock-converse-stream",
provider: "amazon-bedrock",
baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
reasoning: true,
thinkingLevelMap: {"off":null,"xhigh":"xhigh"},
input: ["text", "image"],
cost: {
input: 10,
output: 50,
cacheRead: 1,
cacheWrite: 12.5,
},
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"bedrock-converse-stream">,
"anthropic.claude-haiku-4-5-20251001-v1:0": {
id: "anthropic.claude-haiku-4-5-20251001-v1:0",
name: "Claude Haiku 4.5",

View file

@ -4,6 +4,24 @@
import type { Model } from "../types.ts";
export const CEREBRAS_MODELS = {
"gemma-4-31b": {
id: "gemma-4-31b",
name: "Gemma 4 31B IT",
api: "openai-completions",
provider: "cerebras",
baseUrl: "https://api.cerebras.ai/v1",
compat: {"supportsStore":false,"supportsDeveloperRole":false},
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.99,
output: 1.49,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 40960,
} satisfies Model<"openai-completions">,
"gpt-oss-120b": {
id: "gpt-oss-120b",
name: "GPT OSS 120B",

View file

@ -444,4 +444,42 @@ export const GITHUB_COPILOT_MODELS = {
contextWindow: 400000,
maxTokens: 128000,
} satisfies Model<"openai-responses">,
"kimi-k2.7-code": {
id: "kimi-k2.7-code",
name: "Kimi K2.7 Code",
api: "openai-completions",
provider: "github-copilot",
baseUrl: "https://api.individual.githubcopilot.com",
headers: {"User-Agent":"GitHubCopilotChat/0.35.0","Editor-Version":"vscode/1.107.0","Editor-Plugin-Version":"copilot-chat/0.35.0","Copilot-Integration-Id":"vscode-chat"},
compat: {"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.95,
output: 4,
cacheRead: 0.19,
cacheWrite: 0,
},
contextWindow: 256000,
maxTokens: 32000,
} satisfies Model<"openai-completions">,
"mai-code-1-flash-picker": {
id: "mai-code-1-flash-picker",
name: "MAI-Code-1-Flash",
api: "openai-completions",
provider: "github-copilot",
baseUrl: "https://api.individual.githubcopilot.com",
headers: {"User-Agent":"GitHubCopilotChat/0.35.0","Editor-Version":"vscode/1.107.0","Editor-Plugin-Version":"copilot-chat/0.35.0","Copilot-Integration-Id":"vscode-chat"},
compat: {"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false},
reasoning: true,
input: ["text"],
cost: {
input: 0.75,
output: 4.5,
cacheRead: 0.075,
cacheWrite: 0,
},
contextWindow: 256000,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
} as const;

View file

@ -365,9 +365,9 @@ export const NVIDIA_MODELS = {
contextWindow: 256000,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"z-ai/glm-5.1": {
id: "z-ai/glm-5.1",
name: "GLM-5.1",
"z-ai/glm-5.2": {
id: "z-ai/glm-5.2",
name: "GLM-5.2",
api: "openai-completions",
provider: "nvidia",
baseUrl: "https://integrate.api.nvidia.com/v1",
@ -381,7 +381,7 @@ export const NVIDIA_MODELS = {
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
contextWindow: 1000000,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
} as const;

View file

@ -172,7 +172,7 @@ export const OPENCODE_GO_MODELS = {
} satisfies Model<"openai-completions">,
"minimax-m3": {
id: "minimax-m3",
name: "MiniMax-M3 (3x usage)",
name: "MiniMax-M3",
api: "anthropic-messages",
provider: "opencode-go",
baseUrl: "https://opencode.ai/zen/go",

View file

@ -22,6 +22,25 @@ export const OPENCODE_MODELS = {
contextWindow: 200000,
maxTokens: 32000,
} satisfies Model<"openai-completions">,
"claude-fable-5": {
id: "claude-fable-5",
name: "Claude Fable 5",
api: "anthropic-messages",
provider: "opencode",
baseUrl: "https://opencode.ai/zen",
compat: {"forceAdaptiveThinking":true},
reasoning: true,
thinkingLevelMap: {"off":null,"xhigh":"xhigh"},
input: ["text", "image"],
cost: {
input: 10,
output: 50,
cacheRead: 1,
cacheWrite: 12.5,
},
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
"claude-haiku-4-5": {
id: "claude-haiku-4-5",
name: "Claude Haiku 4.5",

View file

@ -613,8 +613,8 @@ export const OPENROUTER_MODELS = {
reasoning: false,
input: ["text"],
cost: {
input: 0.2,
output: 0.77,
input: 0.24,
output: 0.9,
cacheRead: 0.135,
cacheWrite: 0,
},
@ -740,13 +740,13 @@ export const OPENROUTER_MODELS = {
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"xhigh"},
input: ["text"],
cost: {
input: 0.098,
output: 0.196,
cacheRead: 0.02,
input: 0.09,
output: 0.18,
cacheRead: 0.018,
cacheWrite: 0,
},
contextWindow: 1048576,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"deepseek/deepseek-v4-pro": {
id: "deepseek/deepseek-v4-pro",
@ -1373,12 +1373,12 @@ export const OPENROUTER_MODELS = {
input: ["text"],
cost: {
input: 0.255,
output: 1,
cacheRead: 0.03,
output: 1.02,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 204800,
maxTokens: 196608,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"minimax/minimax-m2.1": {
id: "minimax/minimax-m2.1",
@ -1390,13 +1390,13 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.29,
output: 0.95,
input: 0.3,
output: 1.2,
cacheRead: 0.03,
cacheWrite: 0,
},
contextWindow: 204800,
maxTokens: 196608,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"minimax/minimax-m2.5": {
id: "minimax/minimax-m2.5",
@ -1806,11 +1806,11 @@ export const OPENROUTER_MODELS = {
cost: {
input: 0.6,
output: 2.5,
cacheRead: 0.6,
cacheRead: 0.15,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 262144,
maxTokens: 100352,
} satisfies Model<"openai-completions">,
"moonshotai/kimi-k2.5": {
id: "moonshotai/kimi-k2.5",
@ -1840,9 +1840,9 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.55,
output: 3.2,
cacheRead: 0.11,
input: 0.66,
output: 3.41,
cacheRead: 0.14,
cacheWrite: 0,
},
contextWindow: 262144,
@ -1948,13 +1948,13 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.085,
output: 0.4,
input: 0.08,
output: 0.45,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 16384,
maxTokens: 4096,
} satisfies Model<"openai-completions">,
"nvidia/nemotron-3-super-120b-a12b:free": {
id: "nvidia/nemotron-3-super-120b-a12b:free",
@ -3120,6 +3120,42 @@ export const OPENROUTER_MODELS = {
contextWindow: 262144,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
"poolside/laguna-xs-2.1": {
id: "poolside/laguna-xs-2.1",
name: "Poolside: Laguna XS 2.1",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"openrouter"},
reasoning: true,
input: ["text"],
cost: {
input: 0.06,
output: 0.12,
cacheRead: 0.03,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
"poolside/laguna-xs-2.1:free": {
id: "poolside/laguna-xs-2.1:free",
name: "Poolside: Laguna XS 2.1 (free)",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"openrouter"},
reasoning: true,
input: ["text"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
"poolside/laguna-xs.2": {
id: "poolside/laguna-xs.2",
name: "Poolside: Laguna XS.2",
@ -3364,13 +3400,13 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.08,
output: 0.4,
cacheRead: 0.08,
input: 0.13,
output: 1.56,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 131072,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
"qwen/qwen3-32b": {
id: "qwen/qwen3-32b",
@ -3400,9 +3436,9 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.05,
output: 0.4,
cacheRead: 0.05,
input: 0.117,
output: 0.455,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
@ -3706,8 +3742,8 @@ export const OPENROUTER_MODELS = {
reasoning: false,
input: ["text", "image"],
cost: {
input: 0.08,
output: 0.5,
input: 0.117,
output: 0.455,
cacheRead: 0,
cacheWrite: 0,
},
@ -3888,7 +3924,7 @@ export const OPENROUTER_MODELS = {
cost: {
input: 0.285,
output: 2.4,
cacheRead: 0,
cacheRead: 0.15,
cacheWrite: 0,
},
contextWindow: 262144,
@ -4426,13 +4462,13 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.975,
output: 4.3,
cacheRead: 0,
input: 0.966,
output: 3.036,
cacheRead: 0.1794,
cacheWrite: 0,
},
contextWindow: 202752,
maxTokens: 4096,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"z-ai/glm-5.2": {
id: "z-ai/glm-5.2",
@ -4445,13 +4481,13 @@ export const OPENROUTER_MODELS = {
thinkingLevelMap: {"xhigh":"xhigh"},
input: ["text"],
cost: {
input: 0.93,
output: 3,
cacheRead: 0.18,
input: 0.91,
output: 2.86,
cacheRead: 0.169,
cacheWrite: 0,
},
contextWindow: 1048576,
maxTokens: 32768,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"z-ai/glm-5v-turbo": {
id: "z-ai/glm-5v-turbo",
@ -4589,9 +4625,9 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.55,
output: 3.2,
cacheRead: 0.11,
input: 0.66,
output: 3.41,
cacheRead: 0.14,
cacheWrite: 0,
},
contextWindow: 262144,

View file

@ -219,8 +219,8 @@ export const TOGETHER_MODELS = {
reasoning: false,
input: ["text"],
cost: {
input: 0.88,
output: 0.88,
input: 1.04,
output: 1.04,
cacheRead: 0,
cacheWrite: 0,
},

View file

@ -514,6 +514,25 @@ export const VERCEL_AI_GATEWAY_MODELS = {
contextWindow: 200000,
maxTokens: 8192,
} satisfies Model<"anthropic-messages">,
"anthropic/claude-fable-5": {
id: "anthropic/claude-fable-5",
name: "Claude Fable 5",
api: "anthropic-messages",
provider: "vercel-ai-gateway",
baseUrl: "https://ai-gateway.vercel.sh",
compat: {"forceAdaptiveThinking":true},
reasoning: true,
thinkingLevelMap: {"off":null,"xhigh":"xhigh"},
input: ["text", "image"],
cost: {
input: 10,
output: 50,
cacheRead: 1,
cacheWrite: 12.5,
},
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
"anthropic/claude-haiku-4.5": {
id: "anthropic/claude-haiku-4.5",
name: "Claude Haiku 4.5",
@ -3144,12 +3163,12 @@ export const VERCEL_AI_GATEWAY_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1.5,
output: 4.5,
cacheRead: 0.3,
input: 1.4,
output: 4.4,
cacheRead: 0.26,
cacheWrite: 0,
},
contextWindow: 1000000,
contextWindow: 1040000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
"zai/glm-5.2-fast": {