pi 1.0.2: bump @earendil-works/pi-ai + pi-agent-core 0.87.1 → 1.0.2

All imports and Agent seams survive (verified pre-bump). Fallouts, all
catalog drift handled by the documented refresh path:
- sync-pricing.ts: catalog schema v6 keys are type-qualified (chat:id);
  price chat models only, strip the prefix so PRICES keys stay provider:id
- prices.ts regenerated (1537 keys); auth-keys gains the typesafe provider
- test pins: glm-5.3-flash contextWindow 1048576→1048575, cacheRead
  0.05→0.03 (activity-feed, model-catalog, render-activity-dock, usage)

Inherited free: at-capacity retry, unfinished-tool-call error handling,
model samplingParams no longer dropped on direct stream().
This commit is contained in:
amosblomqvist
2026-10-04 19:50:20 +03:00
parent 5653a394ac
commit 02e7840b2f
9 changed files with 252 additions and 200 deletions
+72 -77
View File
@@ -8,8 +8,8 @@
"name": "learning-harness",
"version": "0.2.0",
"dependencies": {
"@earendil-works/pi-agent-core": "^0.87.1",
"@earendil-works/pi-ai": "^0.87.1",
"@earendil-works/pi-agent-core": "^1.0.2",
"@earendil-works/pi-ai": "^1.0.2",
"@mozilla/readability": "^0.6.0",
"@radix-ui/react-use-controllable-state": "^1.2.6",
"@rive-app/react-webgl2": "^4.32.1",
@@ -98,9 +98,9 @@
}
},
"node_modules/@anthropic-ai/sdk": {
"version": "0.124.0",
"resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.124.0.tgz",
"integrity": "sha512-cN5O8i9UVxHeOQAzj/XjshWXG8KiibJDw9OGpH2Z/eR3n/RBxdoLxDJOcfqAJWvjaMDFfHTBADU04hWRJVkDyA==",
"version": "0.129.0",
"resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.129.0.tgz",
"integrity": "sha512-MH7LB20kNpGLUpPTe2OG5XvL/KhX8HUO9XyBaFjgFk6TLS4Xjt0VPIuMKywe7POKKPslX+QxSlVok9e+8kG5Nw==",
"license": "MIT",
"dependencies": {
"json-schema-to-ts": "^3.1.1",
@@ -480,59 +480,33 @@
"integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==",
"license": "Apache-2.0"
},
"node_modules/@earendil-works/chord": {
"version": "0.87.1",
"resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-0.87.1.tgz",
"integrity": "sha512-bg7IkJGFcEaMqqYgOGUiq5Ky9RghpRfrlZ8I/v/1b4bBZ02A7t3E+6uhPRbadwWb/kWsnVFbZsqOKRN4a3LLCg==",
"license": "MIT",
"dependencies": {
"esbuild": "0.28.2"
},
"engines": {
"node": ">=22.19.0"
}
},
"node_modules/@earendil-works/pi-agent-core": {
"version": "0.87.1",
"resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.87.1.tgz",
"integrity": "sha512-Zev3B0HK7YS5A4EZQ2XnEqiJuirx6QBiltJ+LpmjV5a/+2IU0cfKtIfnkNkORK707XOvKBY2WRtk7cAwHpbh2Q==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-1.0.2.tgz",
"integrity": "sha512-VRfewY1R5mbedJzlm01PxdCmqU8QrSXjXXhV50bp6rvVuT8YYQv1inTXRY4YzssmGAYpkC2rXipJKP5BpBFXew==",
"license": "MIT",
"dependencies": {
"@earendil-works/chord": "^0.87.1",
"@earendil-works/pi-ai": "^0.87.1",
"@earendil-works/pi-telemetry": "^0.87.1",
"diff": "8.0.4",
"ignore": "7.0.8",
"typebox": "1.3.27",
"yaml": "2.9.0"
"@earendil-works/pi-ai": "^1.0.2",
"typebox": "1.3.27"
},
"engines": {
"node": ">=22.19.0"
}
},
"node_modules/@earendil-works/pi-agent-core/node_modules/ignore": {
"version": "7.0.8",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.8.tgz",
"integrity": "sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q==",
"license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/@earendil-works/pi-ai": {
"version": "0.87.1",
"resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.87.1.tgz",
"integrity": "sha512-X/3PfQBnnoeVdO9Cv8zHghUMglzlgNZYGNzoPnbRoGnHl3Rw3TlA2UKSUB7BRHUOxMryHXYa8dnjWZlbRheDZA==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.2.tgz",
"integrity": "sha512-JP59xGlSAQ/HhQ6EHN5qmneBlWfDyu6FPPryAvAaSo8A38ubAsEpS9YisCM5Jbbns0srrDffLZonE0OXorHI5A==",
"license": "MIT",
"dependencies": {
"@anthropic-ai/sdk": "0.124.0",
"@anthropic-ai/sdk": "0.129.0",
"@aws-sdk/client-bedrock-runtime": "3.1127.0",
"@earendil-works/pi-telemetry": "^0.87.1",
"@earendil-works/pi-telemetry": "^1.0.2",
"@google/genai": "2.21.0",
"@smithy/node-http-handler": "4.12.1",
"http-proxy-agent": "9.1.0",
"https-proxy-agent": "9.1.0",
"openai": "6.40.0",
"openai": "7.19.0",
"partial-json": "0.1.7",
"typebox": "1.3.27"
},
@@ -581,9 +555,9 @@
}
},
"node_modules/@earendil-works/pi-telemetry": {
"version": "0.87.1",
"resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-0.87.1.tgz",
"integrity": "sha512-MC6TRQH5lgMXpcN+Vku2WMI2T8BsiUPzMQHGo81uqFZD3/9O79WWJAysEDGuzduP6R4tvtgwMLwmqIxynM10JQ==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.0.2.tgz",
"integrity": "sha512-Ev5h9TE8nEXHCfRKhWj0qpUFhQgVqNteS95vsM2KNGRGm533vOO2ruDPaEwImBKPMBKXy4omz3D6V2cm41gLOQ==",
"license": "MIT",
"engines": {
"node": ">=22.19.0"
@@ -943,6 +917,7 @@
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -959,6 +934,7 @@
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -975,6 +951,7 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -991,6 +968,7 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1007,6 +985,7 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1023,6 +1002,7 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1039,6 +1019,7 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1055,6 +1036,7 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1071,6 +1053,7 @@
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1087,6 +1070,7 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1103,6 +1087,7 @@
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1119,6 +1104,7 @@
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1135,6 +1121,7 @@
"cpu": [
"mips64el"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1151,6 +1138,7 @@
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1167,6 +1155,7 @@
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1183,6 +1172,7 @@
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1199,6 +1189,7 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1215,6 +1206,7 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1231,6 +1223,7 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1247,6 +1240,7 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1263,6 +1257,7 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1279,6 +1274,7 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1295,6 +1291,7 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1311,6 +1308,7 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1327,6 +1325,7 @@
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -1343,6 +1342,7 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4497,9 +4497,9 @@
}
},
"node_modules/@smithy/core": {
"version": "3.35.0",
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.35.0.tgz",
"integrity": "sha512-zRMhfkByhT2snNdr1si24vJitU6Cr9ix2MikUfWmkAgp4jrNP0GcKSP5YvwQ+TlI8AZXER5QOGJn3JsVtSD9/A==",
"version": "3.35.1",
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.35.1.tgz",
"integrity": "sha512-i4YPS4B6ts7bjn7UwLnGjiZdprOvHvgGobFZsYK3GIY3E5hIqtj0rReU69BcTpGp+fvtraSNXeG1l+jtJvF55w==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.19.0",
@@ -8156,15 +8156,6 @@
"integrity": "sha512-gCcO42XCHKEs7Ag0S7aGYsnJ7hlgrO3qderYqeiY0Eqk+0GFfuvT13IA0hHreJTa2KCdDVyGMeOhdMNmrrTjVg==",
"license": "BSD-3-Clause"
},
"node_modules/diff": {
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
"integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
},
"node_modules/dir-compare": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz",
@@ -8944,6 +8935,7 @@
"version": "0.28.2",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz",
"integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"bin": {
@@ -13705,15 +13697,34 @@
}
},
"node_modules/openai": {
"version": "6.40.0",
"resolved": "https://registry.npmjs.org/openai/-/openai-6.40.0.tgz",
"integrity": "sha512-MWtTjd/gQt4jpbji61NTgFWJLoY/PdRJ6wG9/ZDRMYNMlBKrCrSlkLI+KgHP1vR1qT6LKSAyAqIxno6lcK9JiA==",
"version": "7.19.0",
"resolved": "https://registry.npmjs.org/openai/-/openai-7.19.0.tgz",
"integrity": "sha512-MX2s3u2L5racTO0CC/SWpCOasJQBCJrqLKXK+l82cAhdeF8mPMBEe/gxMm0ZFa2xpKpOFLRjxv5afYEZbBXmbQ==",
"license": "Apache-2.0",
"engines": {
"node": ">=22.0.0"
},
"peerDependencies": {
"ws": "^8.18.0",
"@aws-sdk/credential-provider-node": ">=3.972.0 <4",
"@smithy/hash-node": ">=4.3.0 <5",
"@smithy/signature-v4": ">=5.4.0 <6",
"undici": ">=5 <9",
"ws": "^8.21.0",
"zod": "^3.25 || ^4.0"
},
"peerDependenciesMeta": {
"@aws-sdk/credential-provider-node": {
"optional": true
},
"@smithy/hash-node": {
"optional": true
},
"@smithy/signature-v4": {
"optional": true
},
"undici": {
"optional": true
},
"ws": {
"optional": true
},
@@ -16314,7 +16325,6 @@
"version": "7.29.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz",
"integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==",
"dev": true,
"license": "MIT",
"optional": true,
"engines": {
@@ -16907,21 +16917,6 @@
"dev": true,
"license": "ISC"
},
"node_modules/yaml": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
"integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
"license": "ISC",
"bin": {
"yaml": "bin.mjs"
},
"engines": {
"node": ">= 14.6"
},
"funding": {
"url": "https://github.com/sponsors/eemeli"
}
},
"node_modules/yargs": {
"version": "18.1.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz",
+2 -2
View File
@@ -17,8 +17,8 @@
"desktop:dist": "next build && node scripts/build-server.mjs && electron-builder --mac --arm64"
},
"dependencies": {
"@earendil-works/pi-agent-core": "^0.87.1",
"@earendil-works/pi-ai": "^0.87.1",
"@earendil-works/pi-agent-core": "^1.0.2",
"@earendil-works/pi-ai": "^1.0.2",
"@mozilla/readability": "^0.6.0",
"@radix-ui/react-use-controllable-state": "^1.2.6",
"@rive-app/react-webgl2": "^4.32.1",
+11 -1
View File
@@ -36,6 +36,8 @@ const OUT = path.join(import.meta.dirname, "..", "src", "core", "prices.ts");
interface CatalogModel {
id: string;
name: string;
/** pi-ai 1.0 (catalog schema v6): every entry is type-tagged. */
type?: "chat" | "image" | "classifier";
cost: { input: number; output: number; cacheRead: number; cacheWrite: number };
}
@@ -53,13 +55,21 @@ export function buildPrices(): Map<string, CatalogModel["cost"]> {
>;
for (const models of Object.values(catalog)) {
for (const [id, m] of Object.entries(models)) {
// pi-ai 1.0 (catalog schema v6): keys are type-qualified
// ("chat:<id>", "image:<id>", "classifier:<id>") and entries
// carry their own `type`. We price CHAT models only — our
// usage records are chat — and keys stay "provider:id"
// (owner format, 2026-09-20): strip the chat: prefix, skip the
// rest.
if (m.type && m.type !== "chat") continue;
const plainId = id.startsWith("chat:") ? id.slice("chat:".length) : id;
// A catalog entry without pricing data gets no key at all
// (cost renders "—", never zero).
if (!m.cost) continue;
// First writer wins (an id can appear under two apis within one
// file with identical pricing; cross-file collisions cannot
// happen — keys are provider-qualified).
priced.set(`${provider}:${id}`, m.cost);
priced.set(`${provider}:${plainId}`, m.cost);
}
}
}
+1
View File
@@ -111,6 +111,7 @@ export const AUTH_PROVIDER_KEYS: readonly AuthProviderInfo[] = [
{ id: "qwen-token-plan-individual", envVar: "QWEN_TOKEN_PLAN_API_KEY", label: "Qwen Token Plan Individual" },
{ id: "radius", envVar: "RADIUS_API_KEY", label: "Radius" },
{ id: "together", envVar: "TOGETHER_API_KEY", label: "Together" },
{ id: "typesafe", envVar: "TYPESAFE_API_KEY", label: "TypeSafe" },
{ id: "vercel-ai-gateway", envVar: "AI_GATEWAY_API_KEY", label: "Vercel AI Gateway" },
{ id: "xai", envVar: "XAI_API_KEY", label: "xAI" },
{ id: "xiaomi", envVar: "XIAOMI_API_KEY", label: "Xiaomi" },
+153 -110
View File
@@ -38,7 +38,8 @@ export interface ModelPrice {
* Refresh: bump @earendil-works/pi-ai, then npx tsx scripts/sync-pricing.ts
* (reads pi-ai's shipped catalogs — the same source the engine and the
* picker use). Forgetting the re-run is exactly how models go unpriced
* (deepseek-v4.1-flash, 2026-09-29). */
* (deepseek-v4.1-flash, 2026-09-29) — the drift-guard test
* (tests/prices-sync.test.ts) fails the gates until you do. */
export const PRICES: Record<string, ModelPrice> = {
"amazon-bedrock:amazon.nova-2-lite-v1:0": { input: 0.33, output: 2.75, cacheRead: 0.0825, cacheWrite: 0.33 },
"amazon-bedrock:amazon.nova-lite-v1:0": { input: 0.06, output: 0.24, cacheRead: 0.015, cacheWrite: 0.06 },
@@ -56,6 +57,7 @@ export const PRICES: Record<string, ModelPrice> = {
"amazon-bedrock:anthropic.claude-sonnet-4-5-20250929-v1:0": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"amazon-bedrock:anthropic.claude-sonnet-4-6": { input: 3.3, output: 16.5, cacheRead: 0.33, cacheWrite: 4.125 },
"amazon-bedrock:anthropic.claude-sonnet-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"amazon-bedrock:anthropic.claude-sonnet-5-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"amazon-bedrock:apac.amazon.nova-lite-v1:0": { input: 0.063, output: 0.252, cacheRead: 0.01575, cacheWrite: 0.063 },
"amazon-bedrock:apac.amazon.nova-micro-v1:0": { input: 0.037, output: 0.148, cacheRead: 0.00925, cacheWrite: 0.037 },
"amazon-bedrock:apac.amazon.nova-pro-v1:0": { input: 0.84, output: 3.36, cacheRead: 0.21, cacheWrite: 0.84 },
@@ -103,14 +105,23 @@ export const PRICES: Record<string, ModelPrice> = {
"amazon-bedrock:global.anthropic.claude-sonnet-4-5-20250929-v1:0": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"amazon-bedrock:global.anthropic.claude-sonnet-4-6": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"amazon-bedrock:global.anthropic.claude-sonnet-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"amazon-bedrock:global.anthropic.claude-sonnet-5-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"amazon-bedrock:global.moonshotai.kimi-k3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"amazon-bedrock:global.openai.gpt-5.6-luna": { input: 0.2, output: 1.2, cacheRead: 0.02, cacheWrite: 0.25 },
"amazon-bedrock:global.openai.gpt-5.6-sol": { input: 4, output: 20, cacheRead: 0.4, cacheWrite: 5 },
"amazon-bedrock:global.openai.gpt-5.6-terra": { input: 2, output: 12, cacheRead: 0.2, cacheWrite: 2.5 },
"amazon-bedrock:global.openai.gpt-6-astra": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"amazon-bedrock:global.openai.gpt-6-luna": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"amazon-bedrock:global.openai.gpt-6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"amazon-bedrock:global.openai.gpt-6.1-sol": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"amazon-bedrock:global.xai.grok-4.6": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"amazon-bedrock:global.xai.grok-4.7": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"amazon-bedrock:google.gemma-4-26b-a4b": { input: 0.13, output: 0.4, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:google.gemma-4-31b": { input: 0.14, output: 0.4, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:google.gemma-4-e2b": { input: 0.04, output: 0.08, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:in.anthropic.claude-haiku-4-5-20251001-v1:0": { input: 1.1, output: 5.5, cacheRead: 0.11, cacheWrite: 1.375 },
"amazon-bedrock:in.anthropic.claude-opus-5": { input: 5.5, output: 27.5, cacheRead: 0.55, cacheWrite: 6.875 },
"amazon-bedrock:in.anthropic.claude-sonnet-5": { input: 2.2, output: 11, cacheRead: 0.22, cacheWrite: 2.75 },
"amazon-bedrock:in.openai.gpt-5.6-luna": { input: 0.22, output: 1.32, cacheRead: 0.022, cacheWrite: 0.275 },
"amazon-bedrock:in.openai.gpt-5.6-terra": { input: 2.2, output: 13.2, cacheRead: 0.22, cacheWrite: 2.75 },
"amazon-bedrock:jp.amazon.nova-2-lite-v1:0": { input: 0.396, output: 3.311, cacheRead: 0.099, cacheWrite: 0.396 },
@@ -151,6 +162,9 @@ export const PRICES: Record<string, ModelPrice> = {
"amazon-bedrock:openai.gpt-5.6-sol": { input: 4.4, output: 22, cacheRead: 0.44, cacheWrite: 5.5 },
"amazon-bedrock:openai.gpt-5.6-terra": { input: 2.2, output: 13.2, cacheRead: 0.22, cacheWrite: 2.75 },
"amazon-bedrock:openai.gpt-6-astra": { input: 11, output: 55, cacheRead: 1.1, cacheWrite: 13.75 },
"amazon-bedrock:openai.gpt-6-luna": { input: 0.11, output: 0.55, cacheRead: 0.011, cacheWrite: 0.1375 },
"amazon-bedrock:openai.gpt-6-sol": { input: 2.2, output: 11, cacheRead: 0.22, cacheWrite: 2.75 },
"amazon-bedrock:openai.gpt-6.1-sol": { input: 2.2, output: 11, cacheRead: 0.11, cacheWrite: 2.75 },
"amazon-bedrock:openai.gpt-oss-120b": { input: 0.15, output: 0.6, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:openai.gpt-oss-120b-1:0": { input: 0.15, output: 0.6, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:openai.gpt-oss-20b": { input: 0.07, output: 0.3, cacheRead: 0, cacheWrite: 0 },
@@ -191,13 +205,18 @@ export const PRICES: Record<string, ModelPrice> = {
"amazon-bedrock:us.meta.llama4-maverick-17b-instruct-v1:0": { input: 0.24, output: 0.97, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:us.meta.llama4-scout-17b-instruct-v1:0": { input: 0.17, output: 0.66, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:us.mistral.pixtral-large-2502-v1:0": { input: 2, output: 6, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:us.moonshotai.kimi-k3": { input: 3.3, output: 16.5, cacheRead: 0.33, cacheWrite: 4.125 },
"amazon-bedrock:us.openai.gpt-5.6-luna": { input: 0.22, output: 1.32, cacheRead: 0.022, cacheWrite: 0.275 },
"amazon-bedrock:us.openai.gpt-5.6-sol": { input: 4.4, output: 22, cacheRead: 0.44, cacheWrite: 5.5 },
"amazon-bedrock:us.openai.gpt-5.6-terra": { input: 2.2, output: 13.2, cacheRead: 0.22, cacheWrite: 2.75 },
"amazon-bedrock:us.openai.gpt-6-astra": { input: 11, output: 55, cacheRead: 1.1, cacheWrite: 13.75 },
"amazon-bedrock:us.openai.gpt-6-luna": { input: 0.11, output: 0.55, cacheRead: 0.011, cacheWrite: 0.1375 },
"amazon-bedrock:us.openai.gpt-6-sol": { input: 2.2, output: 11, cacheRead: 0.22, cacheWrite: 2.75 },
"amazon-bedrock:us.openai.gpt-6.1-sol": { input: 2.2, output: 11, cacheRead: 0.11, cacheWrite: 2.75 },
"amazon-bedrock:us.writer.palmyra-x4-v1:0": { input: 2.5, output: 10, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:us.writer.palmyra-x5-v1:0": { input: 0.6, output: 6, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:us.xai.grok-4.6": { input: 2.2, output: 6.6, cacheRead: 0.55, cacheWrite: 0 },
"amazon-bedrock:us.xai.grok-4.7": { input: 2.2, output: 6.6, cacheRead: 0.55, cacheWrite: 0 },
"amazon-bedrock:writer.palmyra-x4-v1:0": { input: 2.5, output: 10, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:writer.palmyra-x5-v1:0": { input: 0.6, output: 6, cacheRead: 0, cacheWrite: 0 },
"amazon-bedrock:xai.grok-4.3": { input: 1.25, output: 2.5, cacheRead: 0.2, cacheWrite: 0 },
@@ -223,6 +242,7 @@ export const PRICES: Record<string, ModelPrice> = {
"anthropic:claude-sonnet-4-5-20250929": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"anthropic:claude-sonnet-4-6": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"anthropic:claude-sonnet-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"anthropic:claude-sonnet-5-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"azure-openai-responses:gpt-4": { input: 30, output: 60, cacheRead: 0, cacheWrite: 0 },
"azure-openai-responses:gpt-4-turbo": { input: 10, output: 30, cacheRead: 0, cacheWrite: 0 },
"azure-openai-responses:gpt-4.1": { input: 2, output: 8, cacheRead: 0.5, cacheWrite: 0 },
@@ -257,6 +277,9 @@ export const PRICES: Record<string, ModelPrice> = {
"azure-openai-responses:gpt-6-astra": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"azure-openai-responses:gpt-6-luna": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"azure-openai-responses:gpt-6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"azure-openai-responses:gpt-6.1-sol": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"azure-openai-responses:gpt-daybreak-blue-latest": { input: 4, output: 20, cacheRead: 0.4, cacheWrite: 5 },
"azure-openai-responses:gpt-daybreak-red-latest": { input: 12.5, output: 75, cacheRead: 1.25, cacheWrite: 15.625 },
"azure-openai-responses:gpt-realtime-2.1": { input: 4, output: 24, cacheRead: 0.4, cacheWrite: 0 },
"azure-openai-responses:o1": { input: 15, output: 60, cacheRead: 7.5, cacheWrite: 0 },
"azure-openai-responses:o1-pro": { input: 150, output: 600, cacheRead: 0, cacheWrite: 0 },
@@ -268,6 +291,7 @@ export const PRICES: Record<string, ModelPrice> = {
"baseten:deepseek-ai/DeepSeek-V4-Pro": { input: 1.74, output: 3.48, cacheRead: 0.145, cacheWrite: 0 },
"baseten:deepseek-ai/DeepSeek-V4-Pro-0813": { input: 1.32, output: 3.96, cacheRead: 0, cacheWrite: 0 },
"baseten:deepseek-ai/DeepSeek-V4.1-Flash": { input: 0.3, output: 1.2, cacheRead: 0.03, cacheWrite: 0 },
"baseten:deepseek-ai/DeepSeek-V4.1-Flash-Fast": { input: 0.6, output: 2.4, cacheRead: 0, cacheWrite: 0 },
"baseten:moonshotai/Kimi-K2.5": { input: 0.6, output: 3, cacheRead: 0.12, cacheWrite: 0 },
"baseten:moonshotai/Kimi-K2.6": { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
"baseten:moonshotai/Kimi-K2.7-Code": { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
@@ -286,17 +310,18 @@ export const PRICES: Record<string, ModelPrice> = {
"baseten:zai-org/GLM-5.3-Fast": { input: 2.1, output: 6.6, cacheRead: 0, cacheWrite: 0 },
"baseten:zai-org/GLM-5.3-Flash": { input: 0.15, output: 0.5, cacheRead: 0, cacheWrite: 0 },
"cerebras:gpt-oss-120b": { input: 0.35, output: 0.75, cacheRead: 0, cacheWrite: 0 },
"cerebras:qwen-3.8-27b": { input: 0.99, output: 1.49, cacheRead: 0, cacheWrite: 0 },
"cerebras:qwen-3.8-27b": { input: 0.99, output: 1.49, cacheRead: 0.99, cacheWrite: 0 },
"cloudflare-ai-gateway:claude-fable-5": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"cloudflare-ai-gateway:claude-fable-5.1": { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 },
"cloudflare-ai-gateway:claude-haiku-4.5": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
"cloudflare-ai-gateway:claude-opus-4.5": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"cloudflare-ai-gateway:claude-opus-4.6": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"cloudflare-ai-gateway:claude-opus-4.7": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"cloudflare-ai-gateway:claude-opus-4.8": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"cloudflare-ai-gateway:claude-fable-5-1": { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 },
"cloudflare-ai-gateway:claude-haiku-4-5": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
"cloudflare-ai-gateway:claude-opus-4-5": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"cloudflare-ai-gateway:claude-opus-4-6": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"cloudflare-ai-gateway:claude-opus-4-7": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"cloudflare-ai-gateway:claude-opus-4-8": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"cloudflare-ai-gateway:claude-opus-5": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"cloudflare-ai-gateway:claude-sonnet-4.5": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"cloudflare-ai-gateway:claude-sonnet-4.6": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"cloudflare-ai-gateway:claude-opus-5-5": { input: 4, output: 20, cacheRead: 0.2, cacheWrite: 5 },
"cloudflare-ai-gateway:claude-sonnet-4-5": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"cloudflare-ai-gateway:claude-sonnet-4-6": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"cloudflare-ai-gateway:claude-sonnet-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"cloudflare-ai-gateway:gpt-4.1": { input: 2, output: 8, cacheRead: 0.5, cacheWrite: 0 },
"cloudflare-ai-gateway:gpt-4.1-mini": { input: 0.4, output: 1.6, cacheRead: 0.1, cacheWrite: 0 },
@@ -317,12 +342,14 @@ export const PRICES: Record<string, ModelPrice> = {
"cloudflare-ai-gateway:gpt-5.6-sol": { input: 4, output: 20, cacheRead: 0.4, cacheWrite: 5 },
"cloudflare-ai-gateway:gpt-5.6-terra": { input: 2, output: 12, cacheRead: 0.2, cacheWrite: 2.5 },
"cloudflare-ai-gateway:gpt-6-astra": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"cloudflare-ai-gateway:gpt-6-luna": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"cloudflare-ai-gateway:gpt-6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"cloudflare-ai-gateway:o3": { input: 2, output: 8, cacheRead: 0.5, cacheWrite: 0 },
"cloudflare-ai-gateway:o3-mini": { input: 1.1, output: 4.4, cacheRead: 0.55, cacheWrite: 0 },
"cloudflare-ai-gateway:o4-mini": { input: 1.1, output: 4.4, cacheRead: 0.275, cacheWrite: 0 },
"cloudflare-ai-gateway:workers-ai/@cf/deepseek-ai/deepseek-v4-flash-0731": { input: 0.44, output: 1.32, cacheRead: 0.014, cacheWrite: 0 },
"cloudflare-ai-gateway:workers-ai/@cf/deepseek-ai/deepseek-v4-pro-0813": { input: 1.32, output: 3.96, cacheRead: 0.044, cacheWrite: 0 },
"cloudflare-ai-gateway:workers-ai/@cf/google/gemma-4-26b-a4b-it": { input: 0.1, output: 0.3, cacheRead: 0, cacheWrite: 0 },
"cloudflare-ai-gateway:workers-ai/@cf/google/gemma-4-26b-a4b-it": { input: 0.1, output: 0.3, cacheRead: 0.05, cacheWrite: 0 },
"cloudflare-ai-gateway:workers-ai/@cf/ibm-granite/granite-4.0-h-micro": { input: 0.017, output: 0.112, cacheRead: 0, cacheWrite: 0 },
"cloudflare-ai-gateway:workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast": { input: 0.293, output: 2.253, cacheRead: 0, cacheWrite: 0 },
"cloudflare-ai-gateway:workers-ai/@cf/meta/llama-4-scout-17b-16e-instruct": { input: 0.27, output: 0.85, cacheRead: 0, cacheWrite: 0 },
@@ -340,7 +367,7 @@ export const PRICES: Record<string, ModelPrice> = {
"cloudflare-ai-gateway:workers-ai/@cf/zai-org/glm-5.3-flash": { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 },
"cloudflare-workers-ai:@cf/deepseek-ai/deepseek-v4-flash-0731": { input: 0.44, output: 1.32, cacheRead: 0.014, cacheWrite: 0 },
"cloudflare-workers-ai:@cf/deepseek-ai/deepseek-v4-pro-0813": { input: 1.32, output: 3.96, cacheRead: 0.044, cacheWrite: 0 },
"cloudflare-workers-ai:@cf/google/gemma-4-26b-a4b-it": { input: 0.1, output: 0.3, cacheRead: 0, cacheWrite: 0 },
"cloudflare-workers-ai:@cf/google/gemma-4-26b-a4b-it": { input: 0.1, output: 0.3, cacheRead: 0.05, cacheWrite: 0 },
"cloudflare-workers-ai:@cf/ibm-granite/granite-4.0-h-micro": { input: 0.017, output: 0.112, cacheRead: 0, cacheWrite: 0 },
"cloudflare-workers-ai:@cf/meta/llama-3.3-70b-instruct-fp8-fast": { input: 0.293, output: 2.253, cacheRead: 0, cacheWrite: 0 },
"cloudflare-workers-ai:@cf/meta/llama-4-scout-17b-16e-instruct": { input: 0.27, output: 0.85, cacheRead: 0, cacheWrite: 0 },
@@ -358,30 +385,19 @@ export const PRICES: Record<string, ModelPrice> = {
"cloudflare-workers-ai:@cf/zai-org/glm-5.3-flash": { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 },
"deepseek:deepseek-flash": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"deepseek:deepseek-v4-pro": { input: 1.32, output: 3.96, cacheRead: 0.044, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/deepseek-v4-flash-0731": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/deepseek-v4-flash-vision-exp": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/deepseek-v4-pro": { input: 1.2, output: 1.2, cacheRead: 0.6, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/deepseek-v4-pro-0813": { input: 1.32, output: 3.96, cacheRead: 0.044, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/deepseek-v4p1-flash": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/glm-5p2": { input: 1.4, output: 4.4, cacheRead: 0.14, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/deepseek-v4p1-flash": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/ember-1": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/glm-5p3": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/glm-5p3-flash": { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/gpt-oss-120b": { input: 0.15, output: 0.6, cacheRead: 0.015, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/inkling": { input: 1, output: 4.05, cacheRead: 0.17, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/kimi-k2p6": { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/kimi-k2p7-code": { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/kimi-k3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/minimax-m2p7": { input: 1.2, output: 1.2, cacheRead: 0.6, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/minimax-m3": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/muse-glimmer-30b": { input: 0.35, output: 1.5, cacheRead: 0.04, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/nemotron-3-ultra-nvfp4": { input: 0.6, output: 2.4, cacheRead: 0.12, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b": { input: 0.05, output: 0.2, cacheRead: 0.01, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/qwen3p7-plus": { input: 0.4, output: 1.6, cacheRead: 0.08, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/qwen3p8-2p4t-a95b": { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 0 },
"fireworks:accounts/fireworks/models/qwen3p8-max": { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 0 },
"fireworks:accounts/fireworks/routers/deepseek-flash-latest": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
"fireworks:accounts/fireworks/routers/deepseek-pro-latest": { input: 1.32, output: 3.96, cacheRead: 0.044, cacheWrite: 0 },
"fireworks:accounts/fireworks/routers/glm-5p2-fast": { input: 2.1, output: 6.6, cacheRead: 0.21, cacheWrite: 0 },
"fireworks:accounts/fireworks/routers/deepseek-flash-latest": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"fireworks:accounts/fireworks/routers/glm-5p3-fast": { input: 2.1, output: 6.6, cacheRead: 0.39, cacheWrite: 0 },
"fireworks:accounts/fireworks/routers/glm-fast-latest": { input: 2.1, output: 6.6, cacheRead: 0.39, cacheWrite: 0 },
"fireworks:accounts/fireworks/routers/glm-flash-latest": { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 },
@@ -400,6 +416,7 @@ export const PRICES: Record<string, ModelPrice> = {
"github-copilot:claude-opus-5.5": { input: 4, output: 20, cacheRead: 0.2, cacheWrite: 5 },
"github-copilot:claude-sonnet-4.6": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"github-copilot:claude-sonnet-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"github-copilot:claude-sonnet-5.5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"github-copilot:gemini-3.5-flash": { input: 1.5, output: 9, cacheRead: 0.15, cacheWrite: 0 },
"github-copilot:gemini-3.6-flash": { input: 0.75, output: 3.75, cacheRead: 0.075, cacheWrite: 0 },
"github-copilot:gemini-3.7-flash": { input: 0.75, output: 3.75, cacheRead: 0.075, cacheWrite: 0 },
@@ -416,6 +433,7 @@ export const PRICES: Record<string, ModelPrice> = {
"github-copilot:gpt-6-astra": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"github-copilot:gpt-6-luna": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"github-copilot:gpt-6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"github-copilot:gpt-6.1-sol": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"github-copilot:grok-4.5": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"github-copilot:grok-4.6": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"github-copilot:grok-4.7": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
@@ -566,7 +584,6 @@ export const PRICES: Record<string, ModelPrice> = {
"mistral:devstral-small-2507": { input: 0.1, output: 0.3, cacheRead: 0.01, cacheWrite: 0 },
"mistral:labs-devstral-small-2512": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"mistral:magistral-medium-latest": { input: 2, output: 5, cacheRead: 0.2, cacheWrite: 0 },
"mistral:magistral-small": { input: 0.5, output: 1.5, cacheRead: 0.05, cacheWrite: 0 },
"mistral:ministral-3b-latest": { input: 0.04, output: 0.04, cacheRead: 0.004, cacheWrite: 0 },
"mistral:ministral-8b-latest": { input: 0.1, output: 0.1, cacheRead: 0.01, cacheWrite: 0 },
"mistral:mistral-large-2411": { input: 2, output: 6, cacheRead: 0.2, cacheWrite: 0 },
@@ -598,6 +615,8 @@ export const PRICES: Record<string, ModelPrice> = {
"moonshotai:kimi-k2.7-code": { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 },
"moonshotai:kimi-k2.7-code-highspeed": { input: 1.9, output: 8, cacheRead: 0.38, cacheWrite: 0 },
"moonshotai:kimi-k3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"nvidia:deepseek-ai/deepseek-v4.1-flash": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"nvidia:google/diffusiongemma-26b-a4b-it": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"nvidia:google/gemma-3-12b-it": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"nvidia:google/gemma-3-4b-it": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"nvidia:meta/llama-3.2-11b-vision-instruct": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
@@ -625,6 +644,7 @@ export const PRICES: Record<string, ModelPrice> = {
"openai-codex:gpt-6-astra": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"openai-codex:gpt-6-luna": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"openai-codex:gpt-6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"openai-codex:gpt-6.1-sol": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"openai:gpt-4": { input: 30, output: 60, cacheRead: 0, cacheWrite: 0 },
"openai:gpt-4-turbo": { input: 10, output: 30, cacheRead: 0, cacheWrite: 0 },
"openai:gpt-4.1": { input: 2, output: 8, cacheRead: 0.5, cacheWrite: 0 },
@@ -659,6 +679,9 @@ export const PRICES: Record<string, ModelPrice> = {
"openai:gpt-6-astra": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"openai:gpt-6-luna": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"openai:gpt-6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"openai:gpt-6.1-sol": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"openai:gpt-daybreak-blue-latest": { input: 4, output: 20, cacheRead: 0.4, cacheWrite: 5 },
"openai:gpt-daybreak-red-latest": { input: 12.5, output: 75, cacheRead: 1.25, cacheWrite: 15.625 },
"openai:gpt-realtime-2.1": { input: 4, output: 24, cacheRead: 0.4, cacheWrite: 0 },
"openai:o1": { input: 15, output: 60, cacheRead: 7.5, cacheWrite: 0 },
"openai:o1-pro": { input: 150, output: 600, cacheRead: 0, cacheWrite: 0 },
@@ -670,19 +693,19 @@ export const PRICES: Record<string, ModelPrice> = {
"opencode-go:deepseek-v4-flash-vision-exp": { input: 0.15, output: 0.6, cacheRead: 0.003, cacheWrite: 0 },
"opencode-go:deepseek-v4-pro": { input: 0.66, output: 1.98, cacheRead: 0.022, cacheWrite: 0 },
"opencode-go:deepseek-v4.1-flash": { input: 0.15, output: 0.6, cacheRead: 0.003, cacheWrite: 0 },
"opencode-go:glm-5.1": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
"opencode-go:glm-5.2": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
"opencode-go:glm-5.3": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
"opencode-go:glm-5.3-flash": { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 },
"opencode-go:gpt-5.6-luna": { input: 0.2, output: 1.2, cacheRead: 0.02, cacheWrite: 0.25 },
"opencode-go:gpt-6-luna": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"opencode-go:grok-4.6": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"opencode-go:grok-4.7": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"opencode-go:hy3": { input: 0.14, output: 0.58, cacheRead: 0.035, cacheWrite: 0 },
"opencode-go:hy4-preview": { input: 0.834, output: 2.501, cacheRead: 0.042, cacheWrite: 0 },
"opencode-go:kimi-k2.6": { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
"opencode-go:kimi-k2.7-code": { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 },
"opencode-go:kimi-k3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"opencode-go:longcat-2.0": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"opencode-go:longcat-2.5-preview-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode-go:mimo-v2.5": { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 },
"opencode-go:mimo-v2.5-pro": { input: 0.435, output: 0.87, cacheRead: 0.003625, cacheWrite: 0 },
"opencode-go:mimo-v2.6-flash": { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 },
@@ -691,11 +714,10 @@ export const PRICES: Record<string, ModelPrice> = {
"opencode-go:minimax-m3": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
"opencode-go:muse-spark-1.2-contributor": { input: 0.1, output: 0.2, cacheRead: 0.002, cacheWrite: 0 },
"opencode-go:muse-spark-1.3-contributor": { input: 0.1, output: 0.2, cacheRead: 0.002, cacheWrite: 0 },
"opencode-go:qwen3.6-plus": { input: 0.5, output: 3, cacheRead: 0.05, cacheWrite: 0.625 },
"opencode-go:qwen3.7-max": { input: 2.5, output: 7.5, cacheRead: 0.5, cacheWrite: 3.125 },
"opencode-go:qwen3.7-plus": { input: 0.4, output: 1.6, cacheRead: 0.04, cacheWrite: 0.5 },
"opencode-go:qwen3.8-flash": { input: 0.15, output: 0.47, cacheRead: 0.016, cacheWrite: 0.2 },
"opencode-go:qwen3.8-max": { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 2.5 },
"opencode-go:space-bunny-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode:big-pickle": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode:claude-fable-5": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"opencode:claude-fable-5-1": { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 },
@@ -710,10 +732,12 @@ export const PRICES: Record<string, ModelPrice> = {
"opencode:claude-sonnet-4-5": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"opencode:claude-sonnet-4-6": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"opencode:claude-sonnet-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"opencode:claude-sonnet-5-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"opencode:deepseek-v4-flash": { input: 0.14, output: 0.28, cacheRead: 0.028, cacheWrite: 0 },
"opencode:deepseek-v4-flash-vision-exp": { input: 0.14, output: 0.28, cacheRead: 0.028, cacheWrite: 0 },
"opencode:deepseek-v4-pro": { input: 1.74, output: 3.84, cacheRead: 0.145, cacheWrite: 0 },
"opencode:deepseek-v4.1-flash": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"opencode:fledge-alpha-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode:gemini-3-flash": { input: 0.5, output: 3, cacheRead: 0.05, cacheWrite: 0 },
"opencode:gemini-3.1-pro": { input: 2, output: 12, cacheRead: 0.2, cacheWrite: 0 },
"opencode:gemini-3.5-flash": { input: 1.5, output: 9, cacheRead: 0.15, cacheWrite: 0 },
@@ -748,20 +772,23 @@ export const PRICES: Record<string, ModelPrice> = {
"opencode:gpt-6-astra": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"opencode:gpt-6-luna": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"opencode:gpt-6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"opencode:gpt-6.1-sol": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"opencode:grok-4.5": { input: 2, output: 6, cacheRead: 0.3, cacheWrite: 0 },
"opencode:grok-4.6": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"opencode:grok-4.7": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"opencode:grok-build-0.1": { input: 1, output: 2, cacheRead: 0.2, cacheWrite: 0 },
"opencode:kimi-k2.5": { input: 0.6, output: 3, cacheRead: 0.08, cacheWrite: 0 },
"opencode:kimi-k2.6": { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
"opencode:kimi-k2.7-code": { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 },
"opencode:kimi-k3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"opencode:ling-3.0-flash-fin-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode:ling-3.1-flash-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode:longcat-2.5-preview-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode:mimo-v2.6-flash-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode:minimax-m2.5": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
"opencode:minimax-m2.7": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
"opencode:minimax-m3": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
"opencode:muse-spark-1.2": { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 },
"opencode:muse-spark-1.2-contributor-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode:muse-spark-1.3": { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 },
"opencode:muse-spark-1.3-contributor-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"opencode:nemotron-3-ultra-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
@@ -769,33 +796,36 @@ export const PRICES: Record<string, ModelPrice> = {
"opencode:qwen3.5-plus": { input: 0.2, output: 1.2, cacheRead: 0.02, cacheWrite: 0.25 },
"opencode:qwen3.6-plus": { input: 0.5, output: 3, cacheRead: 0.05, cacheWrite: 0.625 },
"opencode:qwen3.8-flash": { input: 0.15, output: 0.47, cacheRead: 0.016, cacheWrite: 0.2 },
"opencode:qwen3.8-max": { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 2.5 },
"opencode:space-bunny-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:~anthropic/claude-fable-latest": { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 },
"openrouter:~anthropic/claude-haiku-latest": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
"openrouter:~anthropic/claude-opus-latest": { input: 4, output: 20, cacheRead: 0.2, cacheWrite: 5 },
"openrouter:~anthropic/claude-sonnet-latest": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"openrouter:~deepseek/deepseek-flash-latest": { input: 0.12, output: 0.48, cacheRead: 0.0036, cacheWrite: 0 },
"openrouter:~deepseek/deepseek-pro-latest": { input: 0.39996, output: 1.19988, cacheRead: 0.012726, cacheWrite: 0 },
"openrouter:~deepseek/deepseek-v4-flash-latest": { input: 0.03, output: 0.8, cacheRead: 0.008, cacheWrite: 0 },
"openrouter:~deepseek/deepseek-flash-latest": { input: 0.003, output: 2.4, cacheRead: 0.003, cacheWrite: 0 },
"openrouter:~deepseek/deepseek-pro-latest": { input: 0.176, output: 4.2, cacheRead: 0.16, cacheWrite: 0 },
"openrouter:~deepseek/deepseek-v4-flash-latest": { input: 0.0152, output: 1.28, cacheRead: 0.0137, cacheWrite: 0 },
"openrouter:~google/gemini-flash-latest": { input: 0.75, output: 3.75, cacheRead: 0.075, cacheWrite: 0.041667 },
"openrouter:~google/gemini-pro-latest": { input: 2, output: 12, cacheRead: 0.2, cacheWrite: 0.375 },
"openrouter:~moonshotai/kimi-latest": { input: 1.4989, output: 10.758, cacheRead: 0.3, cacheWrite: 0 },
"openrouter:~moonshotai/kimi-latest": { input: 0.3992, output: 13, cacheRead: 0.3, cacheWrite: 0 },
"openrouter:~openai/gpt-astra-latest": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"openrouter:~openai/gpt-luna-latest": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"openrouter:~openai/gpt-mini-latest": { input: 0.75, output: 4.5, cacheRead: 0.075, cacheWrite: 0 },
"openrouter:~openai/gpt-sol-latest": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"openrouter:~openai/gpt-sol-latest": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"openrouter:~openai/gpt-terra-latest": { input: 2, output: 12, cacheRead: 0.2, cacheWrite: 2.5 },
"openrouter:~x-ai/grok-latest": { input: 1.6, output: 4.8, cacheRead: 0.4, cacheWrite: 0 },
"openrouter:~z-ai/glm-flash-latest": { input: 0.075, output: 0.25, cacheRead: 0.015, cacheWrite: 0 },
"openrouter:~z-ai/glm-latest": { input: 0.6538, output: 2.0548, cacheRead: 0.12142, cacheWrite: 0 },
"openrouter:~x-ai/grok-latest": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"openrouter:~z-ai/glm-flash-latest": { input: 0.024, output: 0.5, cacheRead: 0.0216, cacheWrite: 0 },
"openrouter:~z-ai/glm-latest": { input: 0.075, output: 4.4, cacheRead: 0.065, cacheWrite: 0 },
"openrouter:aion-labs/aion-2.0": { input: 0.8, output: 1.6, cacheRead: 0.2, cacheWrite: 0 },
"openrouter:aion-labs/aion-3.0": { input: 3, output: 6, cacheRead: 0.75, cacheWrite: 0 },
"openrouter:aion-labs/aion-3.0-mini": { input: 0.7, output: 1.4, cacheRead: 0.18, cacheWrite: 0 },
"openrouter:aion-labs/aion-3.5": { input: 3, output: 6, cacheRead: 0.75, cacheWrite: 0 },
"openrouter:aion-labs/aion-3.5-mini": { input: 0.7, output: 1.4, cacheRead: 0.18, cacheWrite: 0 },
"openrouter:amazon/nova-2-lite-v1": { input: 0.3, output: 2.5, cacheRead: 0, cacheWrite: 0 },
"openrouter:amazon/nova-lite-v1": { input: 0.06, output: 0.24, cacheRead: 0, cacheWrite: 0 },
"openrouter:amazon/nova-micro-v1": { input: 0.035, output: 0.14, cacheRead: 0, cacheWrite: 0 },
"openrouter:amazon/nova-premier-v1": { input: 2.5, output: 12.5, cacheRead: 0.625, cacheWrite: 0 },
"openrouter:amazon/nova-pro-v1": { input: 0.8, output: 3.2, cacheRead: 0, cacheWrite: 0 },
"openrouter:anthropic/claude-3-haiku": { input: 0.25, output: 1.25, cacheRead: 0.03, cacheWrite: 0.3 },
"openrouter:anthropic/claude-fable-5": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"openrouter:anthropic/claude-fable-5:batch": { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"openrouter:anthropic/claude-fable-5.1": { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 },
@@ -823,6 +853,9 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:anthropic/claude-sonnet-4.6:batch": { input: 1.5, output: 7.5, cacheRead: 0.15, cacheWrite: 1.875 },
"openrouter:anthropic/claude-sonnet-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"openrouter:anthropic/claude-sonnet-5:batch": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
"openrouter:anthropic/claude-sonnet-5.5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"openrouter:anthropic/claude-sonnet-5.5:batch": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
"openrouter:apodex/apodex-1.1-mini:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:arcee-ai/trinity-large-thinking": { input: 0.25, output: 0.8, cacheRead: 0.06, cacheWrite: 0 },
"openrouter:auto": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:bytedance-seed/seed-1.6": { input: 0.25, output: 2, cacheRead: 0, cacheWrite: 0 },
@@ -831,25 +864,27 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:bytedance-seed/seed-2.0-code": { input: 0.5, output: 3, cacheRead: 0, cacheWrite: 0 },
"openrouter:bytedance-seed/seed-2.0-lite": { input: 0.25, output: 2, cacheRead: 0, cacheWrite: 0 },
"openrouter:bytedance-seed/seed-2.0-mini": { input: 0.1, output: 0.4, cacheRead: 0, cacheWrite: 0 },
"openrouter:cohere/command-a-plus": { input: 0.3, output: 1.5, cacheRead: 0.15, cacheWrite: 0 },
"openrouter:cohere/command-r-08-2024": { input: 0.15, output: 0.6, cacheRead: 0, cacheWrite: 0 },
"openrouter:cohere/command-r-plus-08-2024": { input: 2.5, output: 10, cacheRead: 0, cacheWrite: 0 },
"openrouter:cohere/north-mini-code:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:deepseek/deepseek-chat": { input: 0.32, output: 0.89, cacheRead: 0, cacheWrite: 0 },
"openrouter:deepseek/deepseek-chat": { input: 0.2574, output: 1.0287, cacheRead: 0, cacheWrite: 0 },
"openrouter:deepseek/deepseek-chat-v3-0324": { input: 0.25, output: 1, cacheRead: 0, cacheWrite: 0 },
"openrouter:deepseek/deepseek-chat-v3.1": { input: 0.25, output: 0.95, cacheRead: 0.13, cacheWrite: 0 },
"openrouter:deepseek/deepseek-r1": { input: 0.7, output: 2.5, cacheRead: 0, cacheWrite: 0 },
"openrouter:deepseek/deepseek-r1-0528": { input: 0.5, output: 2.15, cacheRead: 0.35, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v3.1-terminus": { input: 0.27, output: 1, cacheRead: 0.135, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v3.2": { input: 0.269, output: 0.4, cacheRead: 0.1345, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v3.1-terminus": { input: 0.27, output: 1, cacheRead: 0, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v3.2": { input: 0.28, output: 0.42, cacheRead: 0.028, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v3.2-exp": { input: 0.27, output: 0.41, cacheRead: 0, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-flash": { input: 0.049, output: 0.098, cacheRead: 0.0098, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-flash-0731": { input: 0.04, output: 0.64, cacheRead: 0.016, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-flash-vision-exp": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-pro": { input: 0.895578, output: 1.791156, cacheRead: 0.074632, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-pro-0813": { input: 0.66, output: 1.98, cacheRead: 0.022, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4.1-flash": { input: 0.15, output: 0.6, cacheRead: 0.003, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-flash": { input: 0.028, output: 0.056, cacheRead: 0.0056, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-flash-0731": { input: 0.0152, output: 1.28, cacheRead: 0.0137, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-flash-vision-exp": { input: 0.2156, output: 0.6468, cacheRead: 0.00686, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-pro": { input: 0.2088, output: 0.4176, cacheRead: 0.0174, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4-pro-0813": { input: 0.22, output: 4.2, cacheRead: 0.17, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4.1-flash": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"openrouter:deepseek/deepseek-v4.1-flash:batch": { input: 0.112, output: 0.336, cacheRead: 0.00336, cacheWrite: 0 },
"openrouter:dots-studio/dots-3-note-preview:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:fireworks/ember-1": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"openrouter:google/gemini-2.5-flash": { input: 0.3, output: 2.5, cacheRead: 0.03, cacheWrite: 0.083333 },
"openrouter:google/gemini-2.5-flash-lite": { input: 0.1, output: 0.4, cacheRead: 0.01, cacheWrite: 0.083333 },
"openrouter:google/gemini-2.5-flash-lite:batch": { input: 0.05, output: 0.2, cacheRead: 0.01, cacheWrite: 0 },
@@ -878,7 +913,7 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:google/gemini-3.8-flash:batch": { input: 0.375, output: 1.875, cacheRead: 0.0375, cacheWrite: 0.041667 },
"openrouter:google/gemma-3-12b-it": { input: 0.05, output: 0.15, cacheRead: 0, cacheWrite: 0 },
"openrouter:google/gemma-3-27b-it": { input: 0.08, output: 0.45, cacheRead: 0.04, cacheWrite: 0 },
"openrouter:google/gemma-4-26b-a4b-it": { input: 0.09, output: 0.3, cacheRead: 0.05, cacheWrite: 0 },
"openrouter:google/gemma-4-26b-a4b-it": { input: 0.0675, output: 0.225, cacheRead: 0.0375, cacheWrite: 0 },
"openrouter:google/gemma-4-26b-a4b-it:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:google/gemma-4-31b-it": { input: 0.09, output: 0.34, cacheRead: 0.05, cacheWrite: 0 },
"openrouter:google/gemma-4-31b-it:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
@@ -886,30 +921,29 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:inception/mercury-2": { input: 0.25, output: 0.75, cacheRead: 0.025, cacheWrite: 0 },
"openrouter:inception/mercury-2.5": { input: 0.04, output: 0.15, cacheRead: 0.004, cacheWrite: 0 },
"openrouter:inclusionai/ling-3.0-flash": { input: 0.021, output: 0.063, cacheRead: 0.0042, cacheWrite: 0 },
"openrouter:inclusionai/ling-3.0-flash-fin": { input: 0.06, output: 0.18, cacheRead: 0.012, cacheWrite: 0 },
"openrouter:inclusionai/ling-3.0-flash-fin:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:inclusionai/ling-3.0-flash-fin": { input: 0.042, output: 0.1232, cacheRead: 0.0084, cacheWrite: 0 },
"openrouter:inclusionai/ling-3.0-flash-sante:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:inclusionai/ling-3.0-flash-vl": { input: 0.06, output: 0.18, cacheRead: 0.012, cacheWrite: 0 },
"openrouter:inclusionai/ling-3.0-flash-vl:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:inclusionai/ling-3.0-flash-vl": { input: 0.021, output: 0.0616, cacheRead: 0.0042, cacheWrite: 0 },
"openrouter:inclusionai/ling-3.1-flash": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:kwaipilot/kat-coder-pro-v2.5": { input: 0.74, output: 2.96, cacheRead: 0.15, cacheWrite: 0 },
"openrouter:liquid/lfm-2.5-2.6b:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:meituan/longcat-2.0": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"openrouter:meta-llama/llama-3.1-70b-instruct": { input: 0.4, output: 0.4, cacheRead: 0, cacheWrite: 0 },
"openrouter:meta-llama/llama-3.1-8b-instruct": { input: 0.05, output: 0.08, cacheRead: 0.025, cacheWrite: 0 },
"openrouter:meta-llama/llama-3.3-70b-instruct": { input: 0.1, output: 0.32, cacheRead: 0, cacheWrite: 0 },
"openrouter:meta-llama/llama-3.3-70b-instruct": { input: 0.22, output: 0.5, cacheRead: 0.11, cacheWrite: 0 },
"openrouter:meta-llama/llama-4-maverick": { input: 0.1875, output: 0.6525, cacheRead: 0, cacheWrite: 0 },
"openrouter:meta-llama/llama-4-scout": { input: 0.1, output: 0.3, cacheRead: 0, cacheWrite: 0 },
"openrouter:meta/muse-glimmer-30b": { input: 0.3, output: 1.2, cacheRead: 0.04, cacheWrite: 0 },
"openrouter:meta/muse-glimmer-30b": { input: 0.35, output: 1.5, cacheRead: 0.04, cacheWrite: 0 },
"openrouter:meta/muse-spark-1.1": { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 },
"openrouter:meta/muse-spark-1.2": { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 },
"openrouter:meta/muse-spark-1.2-contributor": { input: 0.1, output: 0.2, cacheRead: 0.002, cacheWrite: 0 },
"openrouter:meta/muse-spark-1.3": { input: 1.25, output: 4.25, cacheRead: 0.15, cacheWrite: 0 },
"openrouter:meta/muse-spark-1.3-contributor": { input: 0.1, output: 0.2, cacheRead: 0.002, cacheWrite: 0 },
"openrouter:minimax/minimax-m1": { input: 0.4, output: 2.2, cacheRead: 0, cacheWrite: 0 },
"openrouter:minimax/minimax-m2": { input: 0.255, output: 1.02, cacheRead: 0, cacheWrite: 0 },
"openrouter:minimax/minimax-m1": { input: 0.55, output: 2.2, cacheRead: 0, cacheWrite: 0 },
"openrouter:minimax/minimax-m2": { input: 0.3, output: 1.2, cacheRead: 0, cacheWrite: 0 },
"openrouter:minimax/minimax-m2.1": { input: 0.3, output: 1.2, cacheRead: 0.03, cacheWrite: 0 },
"openrouter:minimax/minimax-m2.5": { input: 0.27, output: 1.08, cacheRead: 0.027, cacheWrite: 0 },
"openrouter:minimax/minimax-m2.7": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
"openrouter:minimax/minimax-m2.7": { input: 0.21, output: 0.84, cacheRead: 0.042, cacheWrite: 0 },
"openrouter:minimax/minimax-m3": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
"openrouter:mistralai/codestral-2508": { input: 0.3, output: 0.9, cacheRead: 0.03, cacheWrite: 0 },
"openrouter:mistralai/codestral-2508:batch": { input: 0.15, output: 0.45, cacheRead: 0.015, cacheWrite: 0 },
@@ -920,6 +954,7 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:mistralai/ministral-8b-2512:batch": { input: 0.075, output: 0.075, cacheRead: 0.0075, cacheWrite: 0 },
"openrouter:mistralai/mistral-large": { input: 2, output: 6, cacheRead: 0.2, cacheWrite: 0 },
"openrouter:mistralai/mistral-large-2407": { input: 2, output: 6, cacheRead: 0.2, cacheWrite: 0 },
"openrouter:mistralai/mistral-large-2512": { input: 0.5, output: 1.5, cacheRead: 0.05, cacheWrite: 0 },
"openrouter:mistralai/mistral-large-2512:batch": { input: 0.25, output: 0.75, cacheRead: 0.025, cacheWrite: 0 },
"openrouter:mistralai/mistral-medium-3": { input: 0.4, output: 2, cacheRead: 0.04, cacheWrite: 0 },
"openrouter:mistralai/mistral-medium-3-5": { input: 1.5, output: 7.5, cacheRead: 0, cacheWrite: 0 },
@@ -936,22 +971,20 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:mistralai/voxtral-small-24b-2507": { input: 0.1, output: 0.3, cacheRead: 0.01, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k2": { input: 0.57, output: 2.3, cacheRead: 0, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k2-0905": { input: 0.6, output: 2.5, cacheRead: 0, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k2-thinking": { input: 0.6, output: 2.5, cacheRead: 0.15, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k2-thinking": { input: 0.6, output: 2.5, cacheRead: 0, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k2.5": { input: 0.41, output: 2.06, cacheRead: 0.07, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k2.6": { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k2.7-code": { input: 0.7062, output: 3.3, cacheRead: 0.18, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k2.7-code": { input: 0.6712, output: 3.35, cacheRead: 0.18, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k3": { input: 0.499, output: 13, cacheRead: 0.49, cacheWrite: 0 },
"openrouter:moonshotai/kimi-k3:batch": { input: 2.28, output: 11.4, cacheRead: 0.228, cacheWrite: 0 },
"openrouter:nex-agi/nex-n2.5-mini:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:nex-agi/nex-n2.5-pro": { input: 0.075, output: 0.25, cacheRead: 0.015, cacheWrite: 0 },
"openrouter:nex-agi/nex-n2.5-pro:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3-nano-30b-a3b": { input: 0.05, output: 0.2, cacheRead: 0.03, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3-super-120b-a12b": { input: 0.08, output: 0.45, cacheRead: 0, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3-super-120b-a12b:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3-ultra-550b-a55b": { input: 0.6, output: 2.4, cacheRead: 0.12, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3-ultra-550b-a55b": { input: 0.5, output: 2.2, cacheRead: 0.1, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3-ultra-550b-a55b:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3.5-lightning": { input: 0.07, output: 0.2, cacheRead: 0.04, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3.5-lightning": { input: 0.0595, output: 0.17, cacheRead: 0.02975, cacheWrite: 0 },
"openrouter:nvidia/nemotron-3.5-lightning:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:openai/gpt-3.5-turbo": { input: 0.5, output: 1.5, cacheRead: 0, cacheWrite: 0 },
"openrouter:openai/gpt-3.5-turbo-0613": { input: 1, output: 2, cacheRead: 0, cacheWrite: 0 },
@@ -1011,7 +1044,7 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:openai/gpt-5.6-luna-pro:batch": { input: 0.1, output: 0.6, cacheRead: 0.01, cacheWrite: 0 },
"openrouter:openai/gpt-5.6-luna:batch": { input: 0.1, output: 0.6, cacheRead: 0.01, cacheWrite: 0 },
"openrouter:openai/gpt-5.6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"openrouter:openai/gpt-5.6-sol-pro": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"openrouter:openai/gpt-5.6-sol-pro": { input: 4, output: 20, cacheRead: 0.4, cacheWrite: 5 },
"openrouter:openai/gpt-5.6-sol-pro:batch": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
"openrouter:openai/gpt-5.6-sol:batch": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
"openrouter:openai/gpt-5.6-terra": { input: 2, output: 12, cacheRead: 0.2, cacheWrite: 2.5 },
@@ -1030,11 +1063,14 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:openai/gpt-6-sol-pro": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"openrouter:openai/gpt-6-sol-pro:batch": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
"openrouter:openai/gpt-6-sol:batch": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
"openrouter:openai/gpt-6.1-sol": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"openrouter:openai/gpt-6.1-sol-pro": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"openrouter:openai/gpt-audio": { input: 2.5, output: 10, cacheRead: 0, cacheWrite: 0 },
"openrouter:openai/gpt-audio-mini": { input: 0.6, output: 2.4, cacheRead: 0, cacheWrite: 0 },
"openrouter:openai/gpt-chat-latest": { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 0 },
"openrouter:openai/gpt-oss-120b": { input: 0.15, output: 0.6, cacheRead: 0.075, cacheWrite: 0 },
"openrouter:openai/gpt-oss-20b": { input: 0.018, output: 0.09, cacheRead: 0, cacheWrite: 0 },
"openrouter:openai/gpt-oss-120b": { input: 0.037, output: 0.17, cacheRead: 0, cacheWrite: 0 },
"openrouter:openai/gpt-oss-120b:batch": { input: 0.0296, output: 0.136, cacheRead: 0, cacheWrite: 0 },
"openrouter:openai/gpt-oss-20b": { input: 0.018, output: 0.09, cacheRead: 0.009, cacheWrite: 0 },
"openrouter:openai/gpt-oss-20b:batch": { input: 0.024, output: 0.112, cacheRead: 0, cacheWrite: 0 },
"openrouter:openai/gpt-oss-safeguard-20b": { input: 0.075, output: 0.3, cacheRead: 0.0375, cacheWrite: 0 },
"openrouter:openai/o1": { input: 15, output: 60, cacheRead: 7.5, cacheWrite: 0 },
@@ -1051,11 +1087,12 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:openrouter/auto-beta": { input: -1000000, output: -1000000, cacheRead: 0, cacheWrite: 0 },
"openrouter:openrouter/free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:openrouter/fusion": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:perceptron/perceptron-mk1.5": { input: 0.15, output: 1.5, cacheRead: 0, cacheWrite: 0 },
"openrouter:poolside/laguna-s-2.1": { input: 0.09, output: 0.18, cacheRead: 0.009, cacheWrite: 0 },
"openrouter:poolside/laguna-s-2.1:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:poolside/laguna-xs-2.1": { input: 0.06, output: 0.12, cacheRead: 0.03, cacheWrite: 0 },
"openrouter:poolside/laguna-xs-2.1:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:prism-ml/ternary-bonsai-2-27b": { input: 0.075, output: 0.5, cacheRead: 0, cacheWrite: 0 },
"openrouter:prism-ml/ternary-bonsai-2-27b": { input: 0.075, output: 0.5, cacheRead: 0.0375, cacheWrite: 0 },
"openrouter:qwen/qwen-2.5-72b-instruct": { input: 0.36, output: 0.4, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen-2.5-7b-instruct": { input: 0.1, output: 0.2, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen-plus": { input: 0.26, output: 0.78, cacheRead: 0.052, cacheWrite: 0.325 },
@@ -1076,24 +1113,24 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:qwen/qwen3-coder-plus": { input: 0.65, output: 3.25, cacheRead: 0.13, cacheWrite: 0.8125 },
"openrouter:qwen/qwen3-max": { input: 0.78, output: 3.9, cacheRead: 0.156, cacheWrite: 0.975 },
"openrouter:qwen/qwen3-max-thinking": { input: 0.78, output: 3.9, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3-next-80b-a3b-instruct": { input: 0.09, output: 1.1, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3-next-80b-a3b-instruct": { input: 0.1, output: 1.1, cacheRead: 0.07, cacheWrite: 0 },
"openrouter:qwen/qwen3-next-80b-a3b-thinking": { input: 0.15, output: 1.2, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3-vl-235b-a22b-instruct": { input: 0.21, output: 1.9, cacheRead: 0.1, cacheWrite: 0 },
"openrouter:qwen/qwen3-vl-235b-a22b-thinking": { input: 0.4, output: 4, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3-vl-30b-a3b-instruct": { input: 0.13, output: 0.52, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3-vl-30b-a3b-instruct": { input: 0.15, output: 0.6, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3-vl-30b-a3b-thinking": { input: 0.2, output: 2.4, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3-vl-32b-instruct": { input: 0.104, output: 0.416, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3-vl-8b-instruct": { input: 0.117, output: 0.455, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3-vl-8b-thinking": { input: 0.18, output: 2.1, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3.5-122b-a10b": { input: 0.26, output: 2.08, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3.5-27b": { input: 0.195, output: 1.56, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3.5-35b-a3b": { input: 0.3125, output: 1.25, cacheRead: 0.15625, cacheWrite: 0 },
"openrouter:qwen/qwen3.5-35b-a3b": { input: 0.15, output: 1, cacheRead: 0.05, cacheWrite: 0 },
"openrouter:qwen/qwen3.5-397b-a17b": { input: 0.55, output: 3.5, cacheRead: 0.225, cacheWrite: 0 },
"openrouter:qwen/qwen3.5-9b": { input: 0.1, output: 0.15, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3.5-flash-02-23": { input: 0.065, output: 0.26, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3.5-plus-02-15": { input: 0.26, output: 1.56, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3.5-plus-20260420": { input: 0.3, output: 1.8, cacheRead: 0, cacheWrite: 0.375 },
"openrouter:qwen/qwen3.6-27b": { input: 0.32, output: 2.7, cacheRead: 0.15, cacheWrite: 0 },
"openrouter:qwen/qwen3.6-27b": { input: 0.32, output: 3.2, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3.6-35b-a3b": { input: 0.15, output: 1, cacheRead: 0.05, cacheWrite: 0 },
"openrouter:qwen/qwen3.6-flash": { input: 0.1875, output: 1.125, cacheRead: 0, cacheWrite: 0.234375 },
"openrouter:qwen/qwen3.6-max-preview": { input: 1.027, output: 6.162, cacheRead: 0, cacheWrite: 1.28375 },
@@ -1106,6 +1143,7 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:qwen/qwen3.8-27b:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:qwen/qwen3.8-flash": { input: 0.15, output: 0.47, cacheRead: 0.016, cacheWrite: 0.2 },
"openrouter:qwen/qwen3.8-max-0902": { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 2.5 },
"openrouter:qwen/qwen3.8-max-prime": { input: 4, output: 12, cacheRead: 0.5, cacheWrite: 0 },
"openrouter:qwen/qwen3.8-omni-flash": { input: 0.15, output: 0.47, cacheRead: 0.016, cacheWrite: 0 },
"openrouter:rekaai/reka-edge": { input: 0.1, output: 0.1, cacheRead: 0, cacheWrite: 0 },
"openrouter:relace/relace-search": { input: 1, output: 3, cacheRead: 0, cacheWrite: 0 },
@@ -1114,16 +1152,20 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:sakana/fugu-ultra-v2": { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 0 },
"openrouter:sakana/sakana-namazu": { input: 0.95, output: 4, cacheRead: 0.15, cacheWrite: 0 },
"openrouter:sao10k/l3.1-euryale-70b": { input: 0.85, output: 0.85, cacheRead: 0, cacheWrite: 0 },
"openrouter:stealth/space-bunny-alpha": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:stepfun/step-3.5-flash": { input: 0.1, output: 0.3, cacheRead: 0, cacheWrite: 0 },
"openrouter:stepfun/step-3.7-flash": { input: 0.2, output: 1.15, cacheRead: 0.04, cacheWrite: 0 },
"openrouter:tencent/hy3": { input: 0.0825, output: 0.33, cacheRead: 0.020625, cacheWrite: 0 },
"openrouter:tencent/hy3": { input: 0.132, output: 0.528, cacheRead: 0.033, cacheWrite: 0 },
"openrouter:tencent/hy3-preview": { input: 0.18, output: 0.6, cacheRead: 0.06, cacheWrite: 0 },
"openrouter:tencent/hy4-preview": { input: 0.834, output: 2.501, cacheRead: 0.042, cacheWrite: 0 },
"openrouter:thinkingmachines/inkling": { input: 1, output: 4.05, cacheRead: 0.17, cacheWrite: 0 },
"openrouter:thinkingmachines/inkling": { input: 0.95, output: 4.05, cacheRead: 0.16, cacheWrite: 0 },
"openrouter:thinkingmachines/inkling-small": { input: 0.45, output: 1.2, cacheRead: 0.1, cacheWrite: 0 },
"openrouter:thinkingmachines/inkling-small:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:thinkingmachines/inkling:free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"openrouter:typesafe/jev-router": { input: -1000000, output: -1000000, cacheRead: 0, cacheWrite: 0 },
"openrouter:unbiased/pareto": { input: 2.5, output: 7.5, cacheRead: 0.25, cacheWrite: 0 },
"openrouter:unbiased/pareto-26.10-preview": { input: 0.8, output: 3.2, cacheRead: 0.03, cacheWrite: 0 },
"openrouter:upstage/solar-mini4": { input: 0.05, output: 0.2, cacheRead: 0.005, cacheWrite: 0 },
"openrouter:upstage/solar-pro-3": { input: 0.15, output: 0.6, cacheRead: 0.015, cacheWrite: 0 },
"openrouter:upstage/solar-pro4": { input: 0.09, output: 0.36, cacheRead: 0.018, cacheWrite: 0 },
"openrouter:x-ai/grok-4.20": { input: 1.25, output: 2.5, cacheRead: 0.2, cacheWrite: 0 },
@@ -1131,7 +1173,7 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:x-ai/grok-4.3:batch": { input: 1, output: 2, cacheRead: 0.16, cacheWrite: 0 },
"openrouter:x-ai/grok-4.5": { input: 2, output: 6, cacheRead: 0.3, cacheWrite: 0 },
"openrouter:x-ai/grok-4.6": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"openrouter:x-ai/grok-4.7": { input: 1.6, output: 4.8, cacheRead: 0.4, cacheWrite: 0 },
"openrouter:x-ai/grok-4.7": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"openrouter:x-ai/grok-build-0.1": { input: 1, output: 2, cacheRead: 0.2, cacheWrite: 0 },
"openrouter:xiaomi/mimo-v2.5": { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 },
"openrouter:xiaomi/mimo-v2.5-pro": { input: 0.435, output: 0.87, cacheRead: 0.0036, cacheWrite: 0 },
@@ -1142,18 +1184,19 @@ export const PRICES: Record<string, ModelPrice> = {
"openrouter:z-ai/glm-4.5-air": { input: 0.13, output: 0.85, cacheRead: 0.025, cacheWrite: 0 },
"openrouter:z-ai/glm-4.5v": { input: 0.6, output: 1.8, cacheRead: 0.11, cacheWrite: 0 },
"openrouter:z-ai/glm-4.6": { input: 0.43, output: 1.75, cacheRead: 0.08, cacheWrite: 0 },
"openrouter:z-ai/glm-4.6v": { input: 0.3, output: 0.9, cacheRead: 0.055, cacheWrite: 0 },
"openrouter:z-ai/glm-4.7": { input: 0.4, output: 1.75, cacheRead: 0.08, cacheWrite: 0 },
"openrouter:z-ai/glm-4.6v": { input: 0.3, output: 0.9, cacheRead: 0.05, cacheWrite: 0 },
"openrouter:z-ai/glm-4.7": { input: 0.6, output: 2.2, cacheRead: 0.11, cacheWrite: 0 },
"openrouter:z-ai/glm-4.7-flash": { input: 0.0605, output: 0.4, cacheRead: 0, cacheWrite: 0 },
"openrouter:z-ai/glm-5": { input: 0.6, output: 1.9, cacheRead: 0.119, cacheWrite: 0 },
"openrouter:z-ai/glm-5-turbo": { input: 1.2, output: 4, cacheRead: 0.24, cacheWrite: 0 },
"openrouter:z-ai/glm-5.1": { input: 0.966, output: 3.036, cacheRead: 0.1794, cacheWrite: 0 },
"openrouter:z-ai/glm-5.2": { input: 0.6496, output: 2.0416, cacheRead: 0.12064, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3": { input: 0.6538, output: 2.0548, cacheRead: 0.12142, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3-flash": { input: 0.15, output: 0.5, cacheRead: 0.05, cacheWrite: 0 },
"openrouter:z-ai/glm-5.1": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
"openrouter:z-ai/glm-5.2": { input: 0.3, output: 3.49, cacheRead: 0.26, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3": { input: 1.4, output: 4.4, cacheRead: 0.14, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3-flash": { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3-flash:batch": { input: 0.06, output: 0.2, cacheRead: 0.012, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3-flashx": { input: 0.37, output: 1.25, cacheRead: 0.075, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3:batch": { input: 0.72, output: 2.4, cacheRead: 0.12, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3-flashx": { input: 0.37, output: 1.25, cacheRead: 0.09, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3-prime": { input: 2.8, output: 8.8, cacheRead: 0.56, cacheWrite: 0 },
"openrouter:z-ai/glm-5.3:batch": { input: 0.45, output: 2, cacheRead: 0.1, cacheWrite: 0 },
"openrouter:z-ai/glm-5v-turbo": { input: 1.2, output: 4, cacheRead: 0.24, cacheWrite: 0 },
"qwen-token-plan-cn:deepseek-v3.2": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"qwen-token-plan-cn:deepseek-v4-flash": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
@@ -1205,7 +1248,7 @@ export const PRICES: Record<string, ModelPrice> = {
"qwen-token-plan:qwen3.8-flash": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"qwen-token-plan:qwen3.8-max": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"radius:balanced": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"radius:cheap": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
"radius:cheap": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"radius:claude-fable-5": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"radius:claude-fable-5-1": { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 },
"radius:claude-haiku-4-5": { input: 1, output: 5, cacheRead: 0.1, cacheWrite: 1.25 },
@@ -1215,10 +1258,8 @@ export const PRICES: Record<string, ModelPrice> = {
"radius:claude-opus-5-5": { input: 4, output: 20, cacheRead: 0.2, cacheWrite: 5 },
"radius:claude-sonnet-4-5": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"radius:claude-sonnet-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"radius:deepseek-v4-flash": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
"radius:deepseek-v4-pro": { input: 1.32, output: 3.96, cacheRead: 0.044, cacheWrite: 0 },
"radius:deepseek-v4.1-flash": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
"radius:glm-5.2": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
"radius:claude-sonnet-5-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"radius:deepseek-v4.1-flash": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"radius:glm-5.3": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
"radius:glm-5.3-flash": { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 },
"radius:gpt-5.3-codex": { input: 1.75, output: 14, cacheRead: 0.175, cacheWrite: 0 },
@@ -1231,23 +1272,18 @@ export const PRICES: Record<string, ModelPrice> = {
"radius:gpt-6-astra": { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
"radius:gpt-6-luna": { input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125 },
"radius:gpt-6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"radius:kimi-k2.7-code": { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 },
"radius:grok-4.7": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"radius:kimi-k3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"radius:precise": { input: 4, output: 20, cacheRead: 0.4, cacheWrite: 5 },
"together:deepseek-ai/DeepSeek-V4-Flash-0731": { input: 0.14, output: 0.28, cacheRead: 0.03, cacheWrite: 0 },
"together:deepseek-ai/DeepSeek-V4-Pro": { input: 1.74, output: 3.48, cacheRead: 0.2, cacheWrite: 0 },
"together:deepseek-ai/DeepSeek-V4-Pro-0813": { input: 1.32, output: 3.96, cacheRead: 0.13, cacheWrite: 0 },
"together:deepseek-ai/DeepSeek-V4.1-Flash": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"together:google/gemma-4-31B-it": { input: 0.39, output: 0.97, cacheRead: 0, cacheWrite: 0 },
"together:meta-llama/Llama-3.3-70B-Instruct-Turbo": { input: 1.04, output: 1.04, cacheRead: 0, cacheWrite: 0 },
"together:MiniMaxAI/MiniMax-M2.7": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
"together:MiniMaxAI/MiniMax-M3": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
"together:moonshotai/Kimi-K2.6": { input: 1.2, output: 4.5, cacheRead: 0.2, cacheWrite: 0 },
"together:moonshotai/Kimi-K2.7-Code": { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 },
"together:moonshotai/Kimi-K3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"together:nvidia/nemotron-3-ultra-550b-a55b": { input: 0.6, output: 3.6, cacheRead: 0.2, cacheWrite: 0 },
"together:openai/gpt-oss-120b": { input: 0.15, output: 0.6, cacheRead: 0, cacheWrite: 0 },
"together:openai/gpt-oss-20b": { input: 0.05, output: 0.2, cacheRead: 0, cacheWrite: 0 },
"together:Qwen/Qwen2.5-7B-Instruct-Turbo": { input: 0.3, output: 0.3, cacheRead: 0, cacheWrite: 0 },
"together:Qwen/Qwen3.5-9B": { input: 0.17, output: 0.25, cacheRead: 0, cacheWrite: 0 },
"together:Qwen/Qwen3.6-Plus": { input: 0.5, output: 3, cacheRead: 0, cacheWrite: 0 },
@@ -1275,7 +1311,7 @@ export const PRICES: Record<string, ModelPrice> = {
"vercel-ai-gateway:alibaba/qwen3-vl-instruct": { input: 0.4, output: 1.6, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:alibaba/qwen3-vl-thinking": { input: 0.4, output: 4, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:alibaba/qwen3.5-flash": { input: 0.1, output: 0.4, cacheRead: 0.01, cacheWrite: 0.125 },
"vercel-ai-gateway:alibaba/qwen3.5-plus": { input: 0.4, output: 2.5, cacheRead: 0.04, cacheWrite: 0.5 },
"vercel-ai-gateway:alibaba/qwen3.5-plus": { input: 0.4, output: 2.4, cacheRead: 0.04, cacheWrite: 0.5 },
"vercel-ai-gateway:alibaba/qwen3.6-27b": { input: 0.6, output: 3.6, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:alibaba/qwen3.6-plus": { input: 0.5, output: 3, cacheRead: 0.05, cacheWrite: 0.625 },
"vercel-ai-gateway:alibaba/qwen3.7-flash": { input: 0.03, output: 0.13, cacheRead: 0.006, cacheWrite: 0.038 },
@@ -1286,6 +1322,7 @@ export const PRICES: Record<string, ModelPrice> = {
"vercel-ai-gateway:alibaba/qwen3.8-flash": { input: 0.15, output: 0.47, cacheRead: 0.016, cacheWrite: 0.2 },
"vercel-ai-gateway:alibaba/qwen3.8-max": { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 0 },
"vercel-ai-gateway:alibaba/qwen3.8-max-0902": { input: 2, output: 6, cacheRead: 0.25, cacheWrite: 2.5 },
"vercel-ai-gateway:alibaba/qwen3.8-max-prime": { input: 4, output: 12, cacheRead: 0.5, cacheWrite: 5 },
"vercel-ai-gateway:alibaba/qwen3.8-omni-flash": { input: 0.15, output: 0.47, cacheRead: 0.016, cacheWrite: 0 },
"vercel-ai-gateway:amazon/nova-2-lite": { input: 0.3, output: 2.5, cacheRead: 0.075, cacheWrite: 0 },
"vercel-ai-gateway:amazon/nova-lite": { input: 0.06, output: 0.24, cacheRead: 0, cacheWrite: 0 },
@@ -1309,6 +1346,7 @@ export const PRICES: Record<string, ModelPrice> = {
"vercel-ai-gateway:anthropic/claude-sonnet-4.5": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"vercel-ai-gateway:anthropic/claude-sonnet-4.6": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"vercel-ai-gateway:anthropic/claude-sonnet-5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"vercel-ai-gateway:anthropic/claude-sonnet-5.5": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"vercel-ai-gateway:arcee-ai/trinity-large-thinking": { input: 0.25, output: 0.9, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:bytedance/seed-1.6": { input: 0.25, output: 2, cacheRead: 0.05, cacheWrite: 0 },
"vercel-ai-gateway:bytedance/seed-1.8": { input: 0.25, output: 2, cacheRead: 0.05, cacheWrite: 0 },
@@ -1321,10 +1359,12 @@ export const PRICES: Record<string, ModelPrice> = {
"vercel-ai-gateway:deepseek/deepseek-v3.2-thinking": { input: 0.62, output: 1.85, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:deepseek/deepseek-v4-flash": { input: 0.13, output: 0.26, cacheRead: 0.028, cacheWrite: 0 },
"vercel-ai-gateway:deepseek/deepseek-v4-flash-0731": { input: 0.076, output: 0.153, cacheRead: 0.014, cacheWrite: 0 },
"vercel-ai-gateway:deepseek/deepseek-v4-flash-vision-exp": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
"vercel-ai-gateway:deepseek/deepseek-v4-flash-vision-exp": { input: 0.2156, output: 0.6468, cacheRead: 0.0068, cacheWrite: 0 },
"vercel-ai-gateway:deepseek/deepseek-v4-pro": { input: 0.66, output: 1.98, cacheRead: 0.022, cacheWrite: 0 },
"vercel-ai-gateway:deepseek/deepseek-v4-pro-0813": { input: 0.66, output: 1.98, cacheRead: 0.066, cacheWrite: 0 },
"vercel-ai-gateway:deepseek/deepseek-v4.1-flash": { input: 0.3, output: 1.2, cacheRead: 0.007, cacheWrite: 0 },
"vercel-ai-gateway:deepseek/deepseek-v4.1-flash-fast": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"vercel-ai-gateway:fireworks/ember-1": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"vercel-ai-gateway:google/gemini-2.5-flash": { input: 0.3, output: 2.5, cacheRead: 0.03, cacheWrite: 0 },
"vercel-ai-gateway:google/gemini-2.5-flash-lite": { input: 0.1, output: 0.4, cacheRead: 0.01, cacheWrite: 0 },
"vercel-ai-gateway:google/gemini-2.5-pro": { input: 1.25, output: 10, cacheRead: 0.125, cacheWrite: 0 },
@@ -1342,13 +1382,14 @@ export const PRICES: Record<string, ModelPrice> = {
"vercel-ai-gateway:inception/mercury-2.5": { input: 0.04, output: 0.15, cacheRead: 0.004, cacheWrite: 0 },
"vercel-ai-gateway:inception/mercury-coder-small": { input: 0.25, output: 1, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.0-flash": { input: 0.021, output: 0.063, cacheRead: 0.0042, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.0-flash-fin": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.0-flash-fin-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.0-flash-fin": { input: 0.075, output: 0.22, cacheRead: 0.015, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.0-flash-sante": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.0-flash-sante-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.0-flash-vl": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.0-flash-vl-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.0-flash-vl": { input: 0.075, output: 0.22, cacheRead: 0.015, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.1-flash": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:inclusionai/ling-3.1-flash-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:interfaze/interfaze-beta": { input: 1.5, output: 3.5, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:meituan/longcat-2.5-preview": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
"vercel-ai-gateway:meta/llama-3.1-70b": { input: 0.72, output: 0.72, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:meta/llama-3.1-8b": { input: 0.22, output: 0.22, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:meta/llama-3.3-70b": { input: 0.72, output: 0.72, cacheRead: 0, cacheWrite: 0 },
@@ -1381,7 +1422,7 @@ export const PRICES: Record<string, ModelPrice> = {
"vercel-ai-gateway:moonshotai/kimi-k2-thinking": { input: 0.47, output: 2, cacheRead: 0.141, cacheWrite: 0 },
"vercel-ai-gateway:moonshotai/kimi-k2.5": { input: 0.6, output: 3, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:moonshotai/kimi-k2.6": { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
"vercel-ai-gateway:moonshotai/kimi-k2.7-code": { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
"vercel-ai-gateway:moonshotai/kimi-k2.7-code": { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 },
"vercel-ai-gateway:moonshotai/kimi-k2.7-code-highspeed": { input: 1.9, output: 8, cacheRead: 0.38, cacheWrite: 0 },
"vercel-ai-gateway:moonshotai/kimi-k3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
"vercel-ai-gateway:moonshotai/kimi-k3-fast": { input: 4.5, output: 22.5, cacheRead: 0.45, cacheWrite: 0 },
@@ -1442,7 +1483,9 @@ export const PRICES: Record<string, ModelPrice> = {
"vercel-ai-gateway:openai/gpt-6-luna-fast": { input: 0.2, output: 1, cacheRead: 0.02, cacheWrite: 0.25 },
"vercel-ai-gateway:openai/gpt-6-sol": { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
"vercel-ai-gateway:openai/gpt-6-sol-fast": { input: 4, output: 20, cacheRead: 0.4, cacheWrite: 5 },
"vercel-ai-gateway:openai/gpt-oss-120b": { input: 0.1, output: 0.5, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:openai/gpt-6.1-sol": { input: 2, output: 10, cacheRead: 0.1, cacheWrite: 2.5 },
"vercel-ai-gateway:openai/gpt-6.1-sol-fast": { input: 4, output: 20, cacheRead: 0.2, cacheWrite: 5 },
"vercel-ai-gateway:openai/gpt-oss-120b": { input: 0.1, output: 0.5, cacheRead: 0.1, cacheWrite: 0 },
"vercel-ai-gateway:openai/gpt-oss-20b": { input: 0.03, output: 0.14, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:openai/gpt-oss-safeguard-120b": { input: 0.15, output: 0.6, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:openai/gpt-oss-safeguard-20b": { input: 0.07, output: 0.2, cacheRead: 0, cacheWrite: 0 },
@@ -1472,31 +1515,31 @@ export const PRICES: Record<string, ModelPrice> = {
"vercel-ai-gateway:spacexai/grok-4.3": { input: 1.25, output: 2.5, cacheRead: 0.2, cacheWrite: 0 },
"vercel-ai-gateway:spacexai/grok-4.5": { input: 2, output: 6, cacheRead: 0.3, cacheWrite: 0 },
"vercel-ai-gateway:spacexai/grok-4.6": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"vercel-ai-gateway:spacexai/grok-4.7": { input: 1.2, output: 3.6, cacheRead: 0.3, cacheWrite: 0 },
"vercel-ai-gateway:spacexai/grok-4.7": { input: 2, output: 6, cacheRead: 0.5, cacheWrite: 0 },
"vercel-ai-gateway:spacexai/grok-build-0.1": { input: 1, output: 2, cacheRead: 0.2, cacheWrite: 0 },
"vercel-ai-gateway:stepfun/step-3.5-flash": { input: 0.09, output: 0.3, cacheRead: 0.02, cacheWrite: 0 },
"vercel-ai-gateway:stepfun/step-3.7-flash": { input: 0.2, output: 1.15, cacheRead: 0.04, cacheWrite: 0 },
"vercel-ai-gateway:tencent/hy3": { input: 0.14, output: 0.58, cacheRead: 0.035, cacheWrite: 0 },
"vercel-ai-gateway:tencent/hy4-preview": { input: 0.834, output: 2.501, cacheRead: 0.042, cacheWrite: 0 },
"vercel-ai-gateway:thinkingmachines/inkling": { input: 1, output: 4.05, cacheRead: 0.17, cacheWrite: 0 },
"vercel-ai-gateway:thinkingmachines/inkling-small": { input: 0.5, output: 1.2, cacheRead: 0.1, cacheWrite: 0 },
"vercel-ai-gateway:thinkingmachines/inkling-small": { input: 0.45, output: 1.2, cacheRead: 0.1, cacheWrite: 0 },
"vercel-ai-gateway:xiaomi/mimo-v2.5": { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 },
"vercel-ai-gateway:xiaomi/mimo-v2.5-pro": { input: 0.435, output: 0.87, cacheRead: 0.0036, cacheWrite: 0 },
"vercel-ai-gateway:xiaomi/mimo-v2.6-flash": { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 },
"vercel-ai-gateway:xiaomi/mimo-v2.6-flash": { input: 0.04, output: 1.28, cacheRead: 0.04, cacheWrite: 0 },
"vercel-ai-gateway:xiaomi/mimo-v2.6-pro": { input: 0.435, output: 0.87, cacheRead: 0.0036, cacheWrite: 0 },
"vercel-ai-gateway:xiaomi/mimo-v2.6-pro-ultraspeed": { input: 4.35, output: 8.7, cacheRead: 0.036, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-4.5": { input: 0.6, output: 2.2, cacheRead: 0.11, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-4.5-air": { input: 0.2, output: 1.1, cacheRead: 0.03, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-4.5v": { input: 0.6, output: 1.8, cacheRead: 0.11, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-4.6": { input: 0.6, output: 2.2, cacheRead: 0.11, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-4.7": { input: 0.6, output: 2.2, cacheRead: 0.12, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-4.7": { input: 0.6, output: 2.2, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-4.7-flash": { input: 0.07, output: 0.4, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-4.7-flashx": { input: 0.06, output: 0.4, cacheRead: 0.01, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-5": { input: 1, output: 3.2, cacheRead: 0, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-5-turbo": { input: 1.2, output: 4, cacheRead: 0.24, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-5.1": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-5.2": { input: 0.8, output: 2.55, cacheRead: 0.16, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-5.2-fast": { input: 2.1, output: 6.6, cacheRead: 0.21, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-5.2-fast": { input: 2.8, output: 8.8, cacheRead: 0.56, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-5.3": { input: 1.4, output: 4.4, cacheRead: 0.14, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-5.3-fast": { input: 2.1, output: 6.6, cacheRead: 0.21, cacheWrite: 0 },
"vercel-ai-gateway:zai/glm-5.3-flash": { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 },
+3 -1
View File
@@ -85,7 +85,9 @@ test("activityFeed: contextLimit is the server's live-catalog join (owner amendm
const feed = activityFeed();
const knownJob = feed.jobs.find((j) => j.id === known.id)!;
assert.equal(knownJob.contextLimit, 1_048_576, "pi's catalog, joined server-side onto the feed");
// pi 1.0.2's catalog: glm-5.3-flash contextWindow 1_048_575 (was
// 1_048_576 at 0.87.1 — upstream models.dev refresh).
assert.equal(knownJob.contextLimit, 1_048_575, "pi's catalog, joined server-side onto the feed");
const unknownJob = feed.jobs.find((j) => j.id === unknown.id)!;
assert.equal(unknownJob.contextLimit, null, "missing from the live catalog → null, never a guessed window");
const bareJob = feed.jobs.find((j) => j.id === bare.id)!;
+3 -3
View File
@@ -66,9 +66,9 @@ describe("the model catalog projection", () => {
assert.ok(glm, "glm-5.3-flash in catalog");
assert.deepEqual(glm!.supportedLevels, ["low", "high", "max"]);
assert.deepEqual(glm!.input, ["text", "image"]);
// pi's current glm price (0.87.1 raised it back to 0.15/0.5 — the
// 0.85.x catalog had temporarily listed 0.075/0.25/0.015)
assert.deepEqual(glm!.cost, { input: 0.15, output: 0.5, cacheRead: 0.05, cacheWrite: 0 });
// pi's current glm price (pi 1.0.2 catalog refresh: cacheRead
// corrected 0.05 → 0.03; input/output unchanged since 0.87.1)
assert.deepEqual(glm!.cost, { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 });
// model slots wave: the providers surface + the resolved slot pins
const openrouter = providers.find((p) => p.id === "openrouter");
assert.ok(openrouter && openrouter.keyPresent, "openrouter federated (key pinned above)");
+4 -3
View File
@@ -70,9 +70,10 @@ describe("activity dock pure layer", () => {
},
});
const blob = toBlobs({ jobs: [priced], extractions: [] })[0]!;
// (10000-5000)/1e6*0.15 + 5000/1e6*0.05 + 1000/1e6*0.5 = 0.0015
// (pi-ai catalog prices — glm-5.3-flash drifted in pi-ai 0.87.1)
assert.ok(blob.cost !== null && blob.cost > 0.0014 && blob.cost < 0.0016);
// (10000-5000)/1e6*0.15 + 5000/1e6*0.03 + 1000/1e6*0.5 = 0.0014
// (pi-ai catalog prices — glm-5.3-flash cacheRead corrected
// 0.05 → 0.03 in the pi 1.0.2 catalog refresh)
assert.ok(blob.cost !== null && blob.cost > 0.0013 && blob.cost < 0.0015);
const absent = toBlobs({ jobs: [job()], extractions: [] })[0]!;
assert.equal(absent.cost, null);
});
+3 -3
View File
@@ -42,10 +42,10 @@ test("sumSteps folds steps; absent stays absent until a value appears", () => {
test("callCost: glm-5.3-flash math — fresh input, cached read, output", () => {
const cost = callCost(call({ inputTokens: 100_000, outputTokens: 20_000, cacheReadTokens: 10_000 }), "openrouter:z-ai/glm-5.3-flash");
assert.ok(cost !== null);
// fresh 90k @ $0.15/M + cached 10k @ $0.05/M + output 20k @ $0.5/M
// fresh 90k @ $0.15/M + cached 10k @ $0.03/M + output 20k @ $0.5/M
// (pi-ai catalog prices — regenerated tables, scripts/sync-pricing;
// prices drifted in pi-ai 0.87.1, owner's cost fix 2026-09-29)
assert.ok(Math.abs(cost! - (0.0135 + 0.0005 + 0.01)) < 1e-9);
// glm-5.3-flash cacheRead corrected 0.05 → 0.03 in pi 1.0.2)
assert.ok(Math.abs(cost! - (0.0135 + 0.0003 + 0.01)) < 1e-9);
});
test("callCost: cache writes bill at the cacheWrite rate", () => {