From ee24a9ec54a9602d55dc7ac767c270cec806c291 Mon Sep 17 00:00:00 2001 From: Vegard Stikbakke Date: Sat, 4 Jul 2026 06:27:58 +0200 Subject: [PATCH] feat(ai): refresh generated model catalogs closes #6256 --- packages/ai/CHANGELOG.md | 1 + .../ai/src/providers/amazon-bedrock.models.ts | 18 +++ packages/ai/src/providers/cerebras.models.ts | 18 +++ .../ai/src/providers/github-copilot.models.ts | 38 ++++++ packages/ai/src/providers/nvidia.models.ts | 8 +- .../ai/src/providers/opencode-go.models.ts | 2 +- packages/ai/src/providers/opencode.models.ts | 19 +++ .../ai/src/providers/openrouter.models.ts | 118 ++++++++++++------ packages/ai/src/providers/together.models.ts | 4 +- .../src/providers/vercel-ai-gateway.models.ts | 27 +++- 10 files changed, 201 insertions(+), 52 deletions(-) diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index ad32ea8c..760f349a 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -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. diff --git a/packages/ai/src/providers/amazon-bedrock.models.ts b/packages/ai/src/providers/amazon-bedrock.models.ts index 4c47ca40..6a8ca04a 100644 --- a/packages/ai/src/providers/amazon-bedrock.models.ts +++ b/packages/ai/src/providers/amazon-bedrock.models.ts @@ -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", diff --git a/packages/ai/src/providers/cerebras.models.ts b/packages/ai/src/providers/cerebras.models.ts index 53c4151c..24c35bae 100644 --- a/packages/ai/src/providers/cerebras.models.ts +++ b/packages/ai/src/providers/cerebras.models.ts @@ -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", diff --git a/packages/ai/src/providers/github-copilot.models.ts b/packages/ai/src/providers/github-copilot.models.ts index a81ad11d..21cb6411 100644 --- a/packages/ai/src/providers/github-copilot.models.ts +++ b/packages/ai/src/providers/github-copilot.models.ts @@ -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; diff --git a/packages/ai/src/providers/nvidia.models.ts b/packages/ai/src/providers/nvidia.models.ts index 9884e74f..45bfc373 100644 --- a/packages/ai/src/providers/nvidia.models.ts +++ b/packages/ai/src/providers/nvidia.models.ts @@ -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; diff --git a/packages/ai/src/providers/opencode-go.models.ts b/packages/ai/src/providers/opencode-go.models.ts index 954e7902..3f899b9b 100644 --- a/packages/ai/src/providers/opencode-go.models.ts +++ b/packages/ai/src/providers/opencode-go.models.ts @@ -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", diff --git a/packages/ai/src/providers/opencode.models.ts b/packages/ai/src/providers/opencode.models.ts index c311ef57..b4963e55 100644 --- a/packages/ai/src/providers/opencode.models.ts +++ b/packages/ai/src/providers/opencode.models.ts @@ -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", diff --git a/packages/ai/src/providers/openrouter.models.ts b/packages/ai/src/providers/openrouter.models.ts index 55a544bb..9fa4a8a8 100644 --- a/packages/ai/src/providers/openrouter.models.ts +++ b/packages/ai/src/providers/openrouter.models.ts @@ -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, diff --git a/packages/ai/src/providers/together.models.ts b/packages/ai/src/providers/together.models.ts index 5d1e0238..09869593 100644 --- a/packages/ai/src/providers/together.models.ts +++ b/packages/ai/src/providers/together.models.ts @@ -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, }, diff --git a/packages/ai/src/providers/vercel-ai-gateway.models.ts b/packages/ai/src/providers/vercel-ai-gateway.models.ts index 21a23082..53f48bb3 100644 --- a/packages/ai/src/providers/vercel-ai-gateway.models.ts +++ b/packages/ai/src/providers/vercel-ai-gateway.models.ts @@ -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": {