feat(ai): refresh generated model catalogs

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
+1
View File
@@ -15,6 +15,7 @@
### Added ### 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 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. - 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.
@@ -72,6 +72,24 @@ export const AMAZON_BEDROCK_MODELS = {
contextWindow: 300000, contextWindow: 300000,
maxTokens: 8192, maxTokens: 8192,
} satisfies Model<"bedrock-converse-stream">, } 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": { "anthropic.claude-haiku-4-5-20251001-v1:0": {
id: "anthropic.claude-haiku-4-5-20251001-v1:0", id: "anthropic.claude-haiku-4-5-20251001-v1:0",
name: "Claude Haiku 4.5", name: "Claude Haiku 4.5",
@@ -4,6 +4,24 @@
import type { Model } from "../types.ts"; import type { Model } from "../types.ts";
export const CEREBRAS_MODELS = { 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": { "gpt-oss-120b": {
id: "gpt-oss-120b", id: "gpt-oss-120b",
name: "GPT OSS 120B", name: "GPT OSS 120B",
@@ -444,4 +444,42 @@ export const GITHUB_COPILOT_MODELS = {
contextWindow: 400000, contextWindow: 400000,
maxTokens: 128000, maxTokens: 128000,
} satisfies Model<"openai-responses">, } 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; } as const;
+4 -4
View File
@@ -365,9 +365,9 @@ export const NVIDIA_MODELS = {
contextWindow: 256000, contextWindow: 256000,
maxTokens: 16384, maxTokens: 16384,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"z-ai/glm-5.1": { "z-ai/glm-5.2": {
id: "z-ai/glm-5.1", id: "z-ai/glm-5.2",
name: "GLM-5.1", name: "GLM-5.2",
api: "openai-completions", api: "openai-completions",
provider: "nvidia", provider: "nvidia",
baseUrl: "https://integrate.api.nvidia.com/v1", baseUrl: "https://integrate.api.nvidia.com/v1",
@@ -381,7 +381,7 @@ export const NVIDIA_MODELS = {
cacheRead: 0, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 131072, contextWindow: 1000000,
maxTokens: 131072, maxTokens: 131072,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
} as const; } as const;
@@ -172,7 +172,7 @@ export const OPENCODE_GO_MODELS = {
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"minimax-m3": { "minimax-m3": {
id: "minimax-m3", id: "minimax-m3",
name: "MiniMax-M3 (3x usage)", name: "MiniMax-M3",
api: "anthropic-messages", api: "anthropic-messages",
provider: "opencode-go", provider: "opencode-go",
baseUrl: "https://opencode.ai/zen/go", baseUrl: "https://opencode.ai/zen/go",
@@ -22,6 +22,25 @@ export const OPENCODE_MODELS = {
contextWindow: 200000, contextWindow: 200000,
maxTokens: 32000, maxTokens: 32000,
} satisfies Model<"openai-completions">, } 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": { "claude-haiku-4-5": {
id: "claude-haiku-4-5", id: "claude-haiku-4-5",
name: "Claude Haiku 4.5", name: "Claude Haiku 4.5",
+77 -41
View File
@@ -613,8 +613,8 @@ export const OPENROUTER_MODELS = {
reasoning: false, reasoning: false,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.2, input: 0.24,
output: 0.77, output: 0.9,
cacheRead: 0.135, cacheRead: 0.135,
cacheWrite: 0, cacheWrite: 0,
}, },
@@ -740,13 +740,13 @@ export const OPENROUTER_MODELS = {
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"xhigh"}, thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"xhigh"},
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.098, input: 0.09,
output: 0.196, output: 0.18,
cacheRead: 0.02, cacheRead: 0.018,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 1048576, contextWindow: 1048576,
maxTokens: 4096, maxTokens: 16384,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"deepseek/deepseek-v4-pro": { "deepseek/deepseek-v4-pro": {
id: "deepseek/deepseek-v4-pro", id: "deepseek/deepseek-v4-pro",
@@ -1373,12 +1373,12 @@ export const OPENROUTER_MODELS = {
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.255, input: 0.255,
output: 1, output: 1.02,
cacheRead: 0.03, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 204800, contextWindow: 204800,
maxTokens: 196608, maxTokens: 131072,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"minimax/minimax-m2.1": { "minimax/minimax-m2.1": {
id: "minimax/minimax-m2.1", id: "minimax/minimax-m2.1",
@@ -1390,13 +1390,13 @@ export const OPENROUTER_MODELS = {
reasoning: true, reasoning: true,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.29, input: 0.3,
output: 0.95, output: 1.2,
cacheRead: 0.03, cacheRead: 0.03,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 204800, contextWindow: 204800,
maxTokens: 196608, maxTokens: 131072,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"minimax/minimax-m2.5": { "minimax/minimax-m2.5": {
id: "minimax/minimax-m2.5", id: "minimax/minimax-m2.5",
@@ -1806,11 +1806,11 @@ export const OPENROUTER_MODELS = {
cost: { cost: {
input: 0.6, input: 0.6,
output: 2.5, output: 2.5,
cacheRead: 0.6, cacheRead: 0.15,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 262144, contextWindow: 262144,
maxTokens: 262144, maxTokens: 100352,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"moonshotai/kimi-k2.5": { "moonshotai/kimi-k2.5": {
id: "moonshotai/kimi-k2.5", id: "moonshotai/kimi-k2.5",
@@ -1840,9 +1840,9 @@ export const OPENROUTER_MODELS = {
reasoning: true, reasoning: true,
input: ["text", "image"], input: ["text", "image"],
cost: { cost: {
input: 0.55, input: 0.66,
output: 3.2, output: 3.41,
cacheRead: 0.11, cacheRead: 0.14,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 262144, contextWindow: 262144,
@@ -1948,13 +1948,13 @@ export const OPENROUTER_MODELS = {
reasoning: true, reasoning: true,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.085, input: 0.08,
output: 0.4, output: 0.45,
cacheRead: 0, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 1000000, contextWindow: 1000000,
maxTokens: 16384, maxTokens: 4096,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"nvidia/nemotron-3-super-120b-a12b:free": { "nvidia/nemotron-3-super-120b-a12b:free": {
id: "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, contextWindow: 262144,
maxTokens: 32768, maxTokens: 32768,
} satisfies Model<"openai-completions">, } 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": { "poolside/laguna-xs.2": {
id: "poolside/laguna-xs.2", id: "poolside/laguna-xs.2",
name: "Poolside: Laguna XS.2", name: "Poolside: Laguna XS.2",
@@ -3364,13 +3400,13 @@ export const OPENROUTER_MODELS = {
reasoning: true, reasoning: true,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.08, input: 0.13,
output: 0.4, output: 1.56,
cacheRead: 0.08, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 131072, contextWindow: 131072,
maxTokens: 131072, maxTokens: 32768,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"qwen/qwen3-32b": { "qwen/qwen3-32b": {
id: "qwen/qwen3-32b", id: "qwen/qwen3-32b",
@@ -3400,9 +3436,9 @@ export const OPENROUTER_MODELS = {
reasoning: true, reasoning: true,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.05, input: 0.117,
output: 0.4, output: 0.455,
cacheRead: 0.05, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 131072, contextWindow: 131072,
@@ -3706,8 +3742,8 @@ export const OPENROUTER_MODELS = {
reasoning: false, reasoning: false,
input: ["text", "image"], input: ["text", "image"],
cost: { cost: {
input: 0.08, input: 0.117,
output: 0.5, output: 0.455,
cacheRead: 0, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
@@ -3888,7 +3924,7 @@ export const OPENROUTER_MODELS = {
cost: { cost: {
input: 0.285, input: 0.285,
output: 2.4, output: 2.4,
cacheRead: 0, cacheRead: 0.15,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 262144, contextWindow: 262144,
@@ -4426,13 +4462,13 @@ export const OPENROUTER_MODELS = {
reasoning: true, reasoning: true,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.975, input: 0.966,
output: 4.3, output: 3.036,
cacheRead: 0, cacheRead: 0.1794,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 202752, contextWindow: 202752,
maxTokens: 4096, maxTokens: 128000,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"z-ai/glm-5.2": { "z-ai/glm-5.2": {
id: "z-ai/glm-5.2", id: "z-ai/glm-5.2",
@@ -4445,13 +4481,13 @@ export const OPENROUTER_MODELS = {
thinkingLevelMap: {"xhigh":"xhigh"}, thinkingLevelMap: {"xhigh":"xhigh"},
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.93, input: 0.91,
output: 3, output: 2.86,
cacheRead: 0.18, cacheRead: 0.169,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 1048576, contextWindow: 1048576,
maxTokens: 32768, maxTokens: 128000,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"z-ai/glm-5v-turbo": { "z-ai/glm-5v-turbo": {
id: "z-ai/glm-5v-turbo", id: "z-ai/glm-5v-turbo",
@@ -4589,9 +4625,9 @@ export const OPENROUTER_MODELS = {
reasoning: true, reasoning: true,
input: ["text", "image"], input: ["text", "image"],
cost: { cost: {
input: 0.55, input: 0.66,
output: 3.2, output: 3.41,
cacheRead: 0.11, cacheRead: 0.14,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 262144, contextWindow: 262144,
+2 -2
View File
@@ -219,8 +219,8 @@ export const TOGETHER_MODELS = {
reasoning: false, reasoning: false,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.88, input: 1.04,
output: 0.88, output: 1.04,
cacheRead: 0, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
@@ -514,6 +514,25 @@ export const VERCEL_AI_GATEWAY_MODELS = {
contextWindow: 200000, contextWindow: 200000,
maxTokens: 8192, maxTokens: 8192,
} satisfies Model<"anthropic-messages">, } 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": { "anthropic/claude-haiku-4.5": {
id: "anthropic/claude-haiku-4.5", id: "anthropic/claude-haiku-4.5",
name: "Claude Haiku 4.5", name: "Claude Haiku 4.5",
@@ -3144,12 +3163,12 @@ export const VERCEL_AI_GATEWAY_MODELS = {
reasoning: true, reasoning: true,
input: ["text"], input: ["text"],
cost: { cost: {
input: 1.5, input: 1.4,
output: 4.5, output: 4.4,
cacheRead: 0.3, cacheRead: 0.26,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 1000000, contextWindow: 1040000,
maxTokens: 128000, maxTokens: 128000,
} satisfies Model<"anthropic-messages">, } satisfies Model<"anthropic-messages">,
"zai/glm-5.2-fast": { "zai/glm-5.2-fast": {