From 02e7840b2f8bd9211db7a132e319469de979dce7 Mon Sep 17 00:00:00 2001 From: amosblomqvist Date: Sun, 4 Oct 2026 19:50:20 +0300 Subject: [PATCH] =?UTF-8?q?pi=201.0.2:=20bump=20@earendil-works/pi-ai=20+?= =?UTF-8?q?=20pi-agent-core=200.87.1=20=E2=86=92=201.0.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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(). --- package-lock.json | 149 ++++++++-------- package.json | 4 +- scripts/sync-pricing.ts | 12 +- src/core/auth-keys.ts | 1 + src/core/prices.ts | 263 ++++++++++++++++------------ tests/activity-feed.test.ts | 4 +- tests/model-catalog.test.ts | 6 +- tests/render-activity-dock.test.tsx | 7 +- tests/usage.test.ts | 6 +- 9 files changed, 252 insertions(+), 200 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2c80e4f..fbab39d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index 34920d7..4a991f1 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/scripts/sync-pricing.ts b/scripts/sync-pricing.ts index fcda67e..9625ec8 100644 --- a/scripts/sync-pricing.ts +++ b/scripts/sync-pricing.ts @@ -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 { >; 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:", "image:", "classifier:") 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); } } } diff --git a/src/core/auth-keys.ts b/src/core/auth-keys.ts index 8d84bd2..d6d4285 100644 --- a/src/core/auth-keys.ts +++ b/src/core/auth-keys.ts @@ -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" }, diff --git a/src/core/prices.ts b/src/core/prices.ts index 874c87b..eca9337 100644 --- a/src/core/prices.ts +++ b/src/core/prices.ts @@ -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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 = { "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 }, diff --git a/tests/activity-feed.test.ts b/tests/activity-feed.test.ts index eaa3e12..0cfe96c 100644 --- a/tests/activity-feed.test.ts +++ b/tests/activity-feed.test.ts @@ -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)!; diff --git a/tests/model-catalog.test.ts b/tests/model-catalog.test.ts index 24d1366..d28f4d4 100644 --- a/tests/model-catalog.test.ts +++ b/tests/model-catalog.test.ts @@ -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)"); diff --git a/tests/render-activity-dock.test.tsx b/tests/render-activity-dock.test.tsx index 05680fd..a0182f4 100644 --- a/tests/render-activity-dock.test.tsx +++ b/tests/render-activity-dock.test.tsx @@ -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); }); diff --git a/tests/usage.test.ts b/tests/usage.test.ts index 353def8..91d27c5 100644 --- a/tests/usage.test.ts +++ b/tests/usage.test.ts @@ -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", () => {