@agentproto/model-catalog 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access/index.d.ts +5 -5
- package/dist/audio/index.d.ts +1 -1
- package/dist/{audio-DcaMq62v.d.ts → audio-BbeLA_4x.d.ts} +1 -0
- package/dist/{base-BJo3zO1J.d.ts → base-C4kz9Dxc.d.ts} +45 -1
- package/dist/{catalog-BXCENAMh.d.ts → catalog-BPDMuxzf.d.ts} +184 -2
- package/dist/{chunk-OCVWDFVT.mjs → chunk-FCPS2VGK.mjs} +258 -3
- package/dist/chunk-FCPS2VGK.mjs.map +1 -0
- package/dist/{chunk-7FUGMXL4.mjs → chunk-GCDMRPDR.mjs} +4 -4
- package/dist/{chunk-7FUGMXL4.mjs.map → chunk-GCDMRPDR.mjs.map} +1 -1
- package/dist/{chunk-2LUKUCDK.mjs → chunk-S74S3Q7Z.mjs} +3 -3
- package/dist/{chunk-2LUKUCDK.mjs.map → chunk-S74S3Q7Z.mjs.map} +1 -1
- package/dist/{chunk-XEYWCRAJ.mjs → chunk-TQSSXYY5.mjs} +9 -3
- package/dist/chunk-TQSSXYY5.mjs.map +1 -0
- package/dist/{chunk-PNWSXXRU.mjs → chunk-VIVKDMAT.mjs} +3 -3
- package/dist/{chunk-PNWSXXRU.mjs.map → chunk-VIVKDMAT.mjs.map} +1 -1
- package/dist/cost/index.mjs +3 -3
- package/dist/curation/index.d.ts +4 -4
- package/dist/curation/index.mjs +3 -3
- package/dist/{evaluate-BWuQauRR.d.ts → evaluate-CVzfLCd0.d.ts} +2 -2
- package/dist/{index-BgW4RQUV.d.ts → index-CgOxudo5.d.ts} +3 -3
- package/dist/{index-DL-GcOAF.d.ts → index-DSgqNd3Z.d.ts} +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.mjs +6 -6
- package/dist/llm/index.d.ts +2 -2
- package/dist/llm/index.mjs +1 -1
- package/dist/overlay/index.d.ts +3 -3
- package/dist/picker/index.d.ts +6 -6
- package/dist/route-identity/index.d.ts +3 -2
- package/dist/route-identity/index.mjs +3759 -1
- package/dist/route-identity/index.mjs.map +1 -1
- package/dist/schema/index.d.ts +9 -2
- package/dist/schema/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-OCVWDFVT.mjs.map +0 -1
- package/dist/chunk-XEYWCRAJ.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/llm/openrouter-routes.generated.ts","../src/llm/context-windows.generated.ts","../src/llm/catalog.ts"],"names":[],"mappings":"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","file":"chunk-FCPS2VGK.mjs","sourcesContent":["// AUTO-GENERATED by scripts/catalog-sync/sync-openrouter.ts on 2026-04-29T02:44:00.289Z.\n// Do not edit by hand — re-run `pnpm --filter @agentproto/catalog-sync sync:openrouter`.\n// Source: https://openrouter.ai/api/v1/models\n// Pricing carries provider USD only (inputPer1M / outputPer1M); credit\n// cost is computed at call time by `calculateLLMCreditCost` via the\n// formula path (`baseCost × text-markup / CC_USD_RATE`). The sync\n// script also no longer emits `creditInputPer1M` / `creditOutputPer1M`\n// — those override fields were removed in the cc-precision refactor.\n\nimport type { LLMPricing } from \"./catalog.js\"\n\nexport const OPENROUTER_ROUTES: Record<string, LLMPricing> = {\n \"~anthropic/claude-haiku-latest\": {\n inputPer1M: 1,\n outputPer1M: 5,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"~anthropic/claude-opus-latest\": {\n inputPer1M: 5,\n outputPer1M: 25,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"~anthropic/claude-sonnet-latest\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"~google/gemini-flash-latest\": {\n inputPer1M: 0.5,\n outputPer1M: 3,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"~google/gemini-pro-latest\": {\n inputPer1M: 2,\n outputPer1M: 12,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"~moonshotai/kimi-latest\": {\n inputPer1M: 0.7448,\n outputPer1M: 4.655,\n vendor: \"moonshotai\",\n provider: \"openrouter\",\n },\n \"~openai/gpt-latest\": {\n inputPer1M: 5,\n outputPer1M: 30,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"~openai/gpt-mini-latest\": {\n inputPer1M: 0.75,\n outputPer1M: 4.5,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"ai21/jamba-large-1.7\": {\n inputPer1M: 2,\n outputPer1M: 8,\n vendor: \"ai21\",\n provider: \"openrouter\",\n },\n \"aion-labs/aion-1.0\": {\n inputPer1M: 4,\n outputPer1M: 8,\n vendor: \"aion-labs\",\n provider: \"openrouter\",\n },\n \"aion-labs/aion-1.0-mini\": {\n inputPer1M: 0.7,\n outputPer1M: 1.4,\n vendor: \"aion-labs\",\n provider: \"openrouter\",\n },\n \"aion-labs/aion-2.0\": {\n inputPer1M: 0.8,\n outputPer1M: 1.6,\n vendor: \"aion-labs\",\n provider: \"openrouter\",\n },\n \"aion-labs/aion-rp-llama-3.1-8b\": {\n inputPer1M: 0.8,\n outputPer1M: 1.6,\n vendor: \"aion-labs\",\n provider: \"openrouter\",\n },\n \"alfredpros/codellama-7b-instruct-solidity\": {\n inputPer1M: 0.8,\n outputPer1M: 1.2,\n vendor: \"alfredpros\",\n provider: \"openrouter\",\n },\n \"alibaba/tongyi-deepresearch-30b-a3b\": {\n inputPer1M: 0.09,\n outputPer1M: 0.45,\n vendor: \"alibaba\",\n provider: \"openrouter\",\n },\n \"allenai/olmo-3-32b-think\": {\n inputPer1M: 0.15,\n outputPer1M: 0.5,\n vendor: \"allenai\",\n provider: \"openrouter\",\n },\n \"allenai/olmo-3.1-32b-instruct\": {\n inputPer1M: 0.2,\n outputPer1M: 0.6,\n vendor: \"allenai\",\n provider: \"openrouter\",\n },\n \"alpindale/goliath-120b\": {\n inputPer1M: 3.75,\n outputPer1M: 7.5,\n vendor: \"alpindale\",\n provider: \"openrouter\",\n },\n \"amazon/nova-2-lite-v1\": {\n inputPer1M: 0.3,\n outputPer1M: 2.5,\n vendor: \"amazon\",\n provider: \"openrouter\",\n },\n \"amazon/nova-lite-v1\": {\n inputPer1M: 0.06,\n outputPer1M: 0.24,\n vendor: \"amazon\",\n provider: \"openrouter\",\n },\n \"amazon/nova-micro-v1\": {\n inputPer1M: 0.035,\n outputPer1M: 0.14,\n vendor: \"amazon\",\n provider: \"openrouter\",\n },\n \"amazon/nova-premier-v1\": {\n inputPer1M: 2.5,\n outputPer1M: 12.5,\n vendor: \"amazon\",\n provider: \"openrouter\",\n },\n \"amazon/nova-pro-v1\": {\n inputPer1M: 0.8,\n outputPer1M: 3.2,\n vendor: \"amazon\",\n provider: \"openrouter\",\n },\n \"anthracite-org/magnum-v4-72b\": {\n inputPer1M: 3,\n outputPer1M: 5,\n vendor: \"anthracite-org\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-3-haiku\": {\n inputPer1M: 0.25,\n outputPer1M: 1.25,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-3.5-haiku\": {\n inputPer1M: 0.8,\n outputPer1M: 4,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-3.7-sonnet\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-3.7-sonnet:thinking\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-haiku-4.5\": {\n inputPer1M: 1,\n outputPer1M: 5,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-opus-4\": {\n inputPer1M: 15,\n outputPer1M: 75,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-opus-4.1\": {\n inputPer1M: 15,\n outputPer1M: 75,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-opus-4.5\": {\n inputPer1M: 5,\n outputPer1M: 25,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-opus-4.6\": {\n inputPer1M: 5,\n outputPer1M: 25,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-opus-4.6-fast\": {\n inputPer1M: 30,\n outputPer1M: 150,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-opus-4.7\": {\n inputPer1M: 5,\n outputPer1M: 25,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-sonnet-4\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-sonnet-4.5\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"anthropic/claude-sonnet-4.6\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"anthropic\",\n provider: \"openrouter\",\n },\n \"arcee-ai/coder-large\": {\n inputPer1M: 0.5,\n outputPer1M: 0.8,\n vendor: \"arcee-ai\",\n provider: \"openrouter\",\n },\n \"arcee-ai/maestro-reasoning\": {\n inputPer1M: 0.9,\n outputPer1M: 3.3,\n vendor: \"arcee-ai\",\n provider: \"openrouter\",\n },\n \"arcee-ai/spotlight\": {\n inputPer1M: 0.18,\n outputPer1M: 0.18,\n vendor: \"arcee-ai\",\n provider: \"openrouter\",\n },\n \"arcee-ai/trinity-large-preview\": {\n inputPer1M: 0.15,\n outputPer1M: 0.45,\n vendor: \"arcee-ai\",\n provider: \"openrouter\",\n },\n \"arcee-ai/trinity-large-thinking\": {\n inputPer1M: 0.22,\n outputPer1M: 0.85,\n vendor: \"arcee-ai\",\n provider: \"openrouter\",\n },\n \"arcee-ai/trinity-mini\": {\n inputPer1M: 0.045,\n outputPer1M: 0.15,\n vendor: \"arcee-ai\",\n provider: \"openrouter\",\n },\n \"arcee-ai/virtuoso-large\": {\n inputPer1M: 0.75,\n outputPer1M: 1.2,\n vendor: \"arcee-ai\",\n provider: \"openrouter\",\n },\n \"baidu/ernie-4.5-21b-a3b\": {\n inputPer1M: 0.07,\n outputPer1M: 0.28,\n vendor: \"baidu\",\n provider: \"openrouter\",\n },\n \"baidu/ernie-4.5-21b-a3b-thinking\": {\n inputPer1M: 0.07,\n outputPer1M: 0.28,\n vendor: \"baidu\",\n provider: \"openrouter\",\n },\n \"baidu/ernie-4.5-300b-a47b\": {\n inputPer1M: 0.28,\n outputPer1M: 1.1,\n vendor: \"baidu\",\n provider: \"openrouter\",\n },\n \"baidu/ernie-4.5-vl-28b-a3b\": {\n inputPer1M: 0.14,\n outputPer1M: 0.56,\n vendor: \"baidu\",\n provider: \"openrouter\",\n },\n \"baidu/ernie-4.5-vl-424b-a47b\": {\n inputPer1M: 0.42,\n outputPer1M: 1.25,\n vendor: \"baidu\",\n provider: \"openrouter\",\n },\n \"bytedance-seed/seed-1.6\": {\n inputPer1M: 0.25,\n outputPer1M: 2,\n vendor: \"bytedance-seed\",\n provider: \"openrouter\",\n },\n \"bytedance-seed/seed-1.6-flash\": {\n inputPer1M: 0.075,\n outputPer1M: 0.3,\n vendor: \"bytedance-seed\",\n provider: \"openrouter\",\n },\n \"bytedance-seed/seed-2.0-lite\": {\n inputPer1M: 0.25,\n outputPer1M: 2,\n vendor: \"bytedance-seed\",\n provider: \"openrouter\",\n },\n \"bytedance-seed/seed-2.0-mini\": {\n inputPer1M: 0.1,\n outputPer1M: 0.4,\n vendor: \"bytedance-seed\",\n provider: \"openrouter\",\n },\n \"bytedance/ui-tars-1.5-7b\": {\n inputPer1M: 0.1,\n outputPer1M: 0.2,\n vendor: \"bytedance\",\n provider: \"openrouter\",\n },\n \"cohere/command-a\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"cohere\",\n provider: \"openrouter\",\n },\n \"cohere/command-r-08-2024\": {\n inputPer1M: 0.15,\n outputPer1M: 0.6,\n vendor: \"cohere\",\n provider: \"openrouter\",\n },\n \"cohere/command-r-plus-08-2024\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"cohere\",\n provider: \"openrouter\",\n },\n \"cohere/command-r7b-12-2024\": {\n inputPer1M: 0.0375,\n outputPer1M: 0.15,\n vendor: \"cohere\",\n provider: \"openrouter\",\n },\n \"deepcogito/cogito-v2.1-671b\": {\n inputPer1M: 1.25,\n outputPer1M: 1.25,\n vendor: \"deepcogito\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-chat\": {\n inputPer1M: 0.32,\n outputPer1M: 0.89,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-chat-v3-0324\": {\n inputPer1M: 0.2,\n outputPer1M: 0.77,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-chat-v3.1\": {\n inputPer1M: 0.15,\n outputPer1M: 0.75,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-r1\": {\n inputPer1M: 0.7,\n outputPer1M: 2.5,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-r1-0528\": {\n inputPer1M: 0.5,\n outputPer1M: 2.15,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-r1-distill-llama-70b\": {\n inputPer1M: 0.7,\n outputPer1M: 0.8,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-r1-distill-qwen-32b\": {\n inputPer1M: 0.29,\n outputPer1M: 0.29,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-v3.1-terminus\": {\n inputPer1M: 0.21,\n outputPer1M: 0.79,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-v3.2\": {\n inputPer1M: 0.252,\n outputPer1M: 0.378,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-v3.2-exp\": {\n inputPer1M: 0.27,\n outputPer1M: 0.41,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-v3.2-speciale\": {\n inputPer1M: 0.4,\n outputPer1M: 1.2,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-v4-flash\": {\n inputPer1M: 0.14,\n outputPer1M: 0.28,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"deepseek/deepseek-v4-pro\": {\n inputPer1M: 0.435,\n outputPer1M: 0.87,\n vendor: \"deepseek\",\n provider: \"openrouter\",\n },\n \"essentialai/rnj-1-instruct\": {\n inputPer1M: 0.15,\n outputPer1M: 0.15,\n vendor: \"essentialai\",\n provider: \"openrouter\",\n },\n \"google/gemini-2.0-flash-001\": {\n inputPer1M: 0.1,\n outputPer1M: 0.4,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-2.0-flash-lite-001\": {\n inputPer1M: 0.075,\n outputPer1M: 0.3,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-2.5-flash\": {\n inputPer1M: 0.3,\n outputPer1M: 2.5,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-2.5-flash-image\": {\n inputPer1M: 0.3,\n outputPer1M: 2.5,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-2.5-flash-lite\": {\n inputPer1M: 0.1,\n outputPer1M: 0.4,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-2.5-flash-lite-preview-09-2025\": {\n inputPer1M: 0.1,\n outputPer1M: 0.4,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-2.5-pro\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-2.5-pro-preview\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-2.5-pro-preview-05-06\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-3-flash-preview\": {\n inputPer1M: 0.5,\n outputPer1M: 3,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-3-pro-image-preview\": {\n inputPer1M: 2,\n outputPer1M: 12,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-3.1-flash-image-preview\": {\n inputPer1M: 0.5,\n outputPer1M: 3,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-3.1-flash-lite-preview\": {\n inputPer1M: 0.25,\n outputPer1M: 1.5,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-3.1-pro-preview\": {\n inputPer1M: 2,\n outputPer1M: 12,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemini-3.1-pro-preview-customtools\": {\n inputPer1M: 2,\n outputPer1M: 12,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemma-2-27b-it\": {\n inputPer1M: 0.65,\n outputPer1M: 0.65,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemma-3-12b-it\": {\n inputPer1M: 0.04,\n outputPer1M: 0.13,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemma-3-27b-it\": {\n inputPer1M: 0.08,\n outputPer1M: 0.16,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemma-3-4b-it\": {\n inputPer1M: 0.04,\n outputPer1M: 0.08,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemma-3n-e4b-it\": {\n inputPer1M: 0.06,\n outputPer1M: 0.12,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemma-4-26b-a4b-it\": {\n inputPer1M: 0.06,\n outputPer1M: 0.33,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"google/gemma-4-31b-it\": {\n inputPer1M: 0.13,\n outputPer1M: 0.38,\n vendor: \"google\",\n provider: \"openrouter\",\n },\n \"gryphe/mythomax-l2-13b\": {\n inputPer1M: 0.06,\n outputPer1M: 0.06,\n vendor: \"gryphe\",\n provider: \"openrouter\",\n },\n \"ibm-granite/granite-4.0-h-micro\": {\n inputPer1M: 0.017,\n outputPer1M: 0.11,\n vendor: \"ibm-granite\",\n provider: \"openrouter\",\n },\n \"inception/mercury-2\": {\n inputPer1M: 0.25,\n outputPer1M: 0.75,\n vendor: \"inception\",\n provider: \"openrouter\",\n },\n \"inclusionai/ling-2.6-flash\": {\n inputPer1M: 0.08,\n outputPer1M: 0.24,\n vendor: \"inclusionai\",\n provider: \"openrouter\",\n },\n \"inflection/inflection-3-pi\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"inflection\",\n provider: \"openrouter\",\n },\n \"inflection/inflection-3-productivity\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"inflection\",\n provider: \"openrouter\",\n },\n \"kwaipilot/kat-coder-pro-v2\": {\n inputPer1M: 0.3,\n outputPer1M: 1.2,\n vendor: \"kwaipilot\",\n provider: \"openrouter\",\n },\n \"liquid/lfm-2-24b-a2b\": {\n inputPer1M: 0.03,\n outputPer1M: 0.12,\n vendor: \"liquid\",\n provider: \"openrouter\",\n },\n \"mancer/weaver\": {\n inputPer1M: 0.75,\n outputPer1M: 1,\n vendor: \"mancer\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-3-70b-instruct\": {\n inputPer1M: 0.51,\n outputPer1M: 0.74,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-3-8b-instruct\": {\n inputPer1M: 0.03,\n outputPer1M: 0.04,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-3.1-70b-instruct\": {\n inputPer1M: 0.4,\n outputPer1M: 0.4,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-3.1-8b-instruct\": {\n inputPer1M: 0.02,\n outputPer1M: 0.05,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-3.2-11b-vision-instruct\": {\n inputPer1M: 0.245,\n outputPer1M: 0.245,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-3.2-1b-instruct\": {\n inputPer1M: 0.027,\n outputPer1M: 0.2,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-3.2-3b-instruct\": {\n inputPer1M: 0.051,\n outputPer1M: 0.34,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-3.3-70b-instruct\": {\n inputPer1M: 0.1,\n outputPer1M: 0.32,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-4-maverick\": {\n inputPer1M: 0.15,\n outputPer1M: 0.6,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-4-scout\": {\n inputPer1M: 0.08,\n outputPer1M: 0.3,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-guard-3-8b\": {\n inputPer1M: 0.48,\n outputPer1M: 0.03,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"meta-llama/llama-guard-4-12b\": {\n inputPer1M: 0.18,\n outputPer1M: 0.18,\n vendor: \"meta-llama\",\n provider: \"openrouter\",\n },\n \"microsoft/phi-4\": {\n inputPer1M: 0.065,\n outputPer1M: 0.14,\n vendor: \"microsoft\",\n provider: \"openrouter\",\n },\n \"microsoft/wizardlm-2-8x22b\": {\n inputPer1M: 0.62,\n outputPer1M: 0.62,\n vendor: \"microsoft\",\n provider: \"openrouter\",\n },\n \"minimax/minimax-01\": {\n inputPer1M: 0.2,\n outputPer1M: 1.1,\n vendor: \"minimax\",\n provider: \"openrouter\",\n },\n \"minimax/minimax-m1\": {\n inputPer1M: 0.4,\n outputPer1M: 2.2,\n vendor: \"minimax\",\n provider: \"openrouter\",\n },\n \"minimax/minimax-m2\": {\n inputPer1M: 0.255,\n outputPer1M: 1,\n vendor: \"minimax\",\n provider: \"openrouter\",\n },\n \"minimax/minimax-m2-her\": {\n inputPer1M: 0.3,\n outputPer1M: 1.2,\n vendor: \"minimax\",\n provider: \"openrouter\",\n },\n \"minimax/minimax-m2.1\": {\n inputPer1M: 0.29,\n outputPer1M: 0.95,\n vendor: \"minimax\",\n provider: \"openrouter\",\n },\n \"minimax/minimax-m2.5\": {\n inputPer1M: 0.15,\n outputPer1M: 1.15,\n vendor: \"minimax\",\n provider: \"openrouter\",\n },\n \"minimax/minimax-m2.7\": {\n inputPer1M: 0.3,\n outputPer1M: 1.2,\n vendor: \"minimax\",\n provider: \"openrouter\",\n },\n \"mistralai/codestral-2508\": {\n inputPer1M: 0.3,\n outputPer1M: 0.9,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/devstral-2512\": {\n inputPer1M: 0.4,\n outputPer1M: 2,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/devstral-medium\": {\n inputPer1M: 0.4,\n outputPer1M: 2,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/devstral-small\": {\n inputPer1M: 0.1,\n outputPer1M: 0.3,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/ministral-14b-2512\": {\n inputPer1M: 0.2,\n outputPer1M: 0.2,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/ministral-3b-2512\": {\n inputPer1M: 0.1,\n outputPer1M: 0.1,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/ministral-8b-2512\": {\n inputPer1M: 0.15,\n outputPer1M: 0.15,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-7b-instruct-v0.1\": {\n inputPer1M: 0.11,\n outputPer1M: 0.19,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-large\": {\n inputPer1M: 2,\n outputPer1M: 6,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-large-2407\": {\n inputPer1M: 2,\n outputPer1M: 6,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-large-2411\": {\n inputPer1M: 2,\n outputPer1M: 6,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-large-2512\": {\n inputPer1M: 0.5,\n outputPer1M: 1.5,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-medium-3\": {\n inputPer1M: 0.4,\n outputPer1M: 2,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-medium-3.1\": {\n inputPer1M: 0.4,\n outputPer1M: 2,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-nemo\": {\n inputPer1M: 0.02,\n outputPer1M: 0.03,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-saba\": {\n inputPer1M: 0.2,\n outputPer1M: 0.6,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-small-24b-instruct-2501\": {\n inputPer1M: 0.05,\n outputPer1M: 0.08,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-small-2603\": {\n inputPer1M: 0.15,\n outputPer1M: 0.6,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-small-3.1-24b-instruct\": {\n inputPer1M: 0.35,\n outputPer1M: 0.56,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-small-3.2-24b-instruct\": {\n inputPer1M: 0.075,\n outputPer1M: 0.2,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mistral-small-creative\": {\n inputPer1M: 0.1,\n outputPer1M: 0.3,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mixtral-8x22b-instruct\": {\n inputPer1M: 2,\n outputPer1M: 6,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/mixtral-8x7b-instruct\": {\n inputPer1M: 0.54,\n outputPer1M: 0.54,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/pixtral-large-2411\": {\n inputPer1M: 2,\n outputPer1M: 6,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"mistralai/voxtral-small-24b-2507\": {\n inputPer1M: 0.1,\n outputPer1M: 0.3,\n vendor: \"mistralai\",\n provider: \"openrouter\",\n },\n \"moonshotai/kimi-k2\": {\n inputPer1M: 0.57,\n outputPer1M: 2.3,\n vendor: \"moonshotai\",\n provider: \"openrouter\",\n },\n \"moonshotai/kimi-k2-0905\": {\n inputPer1M: 0.4,\n outputPer1M: 2,\n vendor: \"moonshotai\",\n provider: \"openrouter\",\n },\n \"moonshotai/kimi-k2-thinking\": {\n inputPer1M: 0.6,\n outputPer1M: 2.5,\n vendor: \"moonshotai\",\n provider: \"openrouter\",\n },\n \"moonshotai/kimi-k2.5\": {\n inputPer1M: 0.44,\n outputPer1M: 2,\n vendor: \"moonshotai\",\n provider: \"openrouter\",\n },\n \"moonshotai/kimi-k2.6\": {\n inputPer1M: 0.7448,\n outputPer1M: 4.655,\n vendor: \"moonshotai\",\n provider: \"openrouter\",\n },\n \"morph/morph-v3-fast\": {\n inputPer1M: 0.8,\n outputPer1M: 1.2,\n vendor: \"morph\",\n provider: \"openrouter\",\n },\n \"morph/morph-v3-large\": {\n inputPer1M: 0.9,\n outputPer1M: 1.9,\n vendor: \"morph\",\n provider: \"openrouter\",\n },\n \"nex-agi/deepseek-v3.1-nex-n1\": {\n inputPer1M: 0.135,\n outputPer1M: 0.5,\n vendor: \"nex-agi\",\n provider: \"openrouter\",\n },\n \"nousresearch/hermes-2-pro-llama-3-8b\": {\n inputPer1M: 0.14,\n outputPer1M: 0.14,\n vendor: \"nousresearch\",\n provider: \"openrouter\",\n },\n \"nousresearch/hermes-3-llama-3.1-405b\": {\n inputPer1M: 1,\n outputPer1M: 1,\n vendor: \"nousresearch\",\n provider: \"openrouter\",\n },\n \"nousresearch/hermes-3-llama-3.1-70b\": {\n inputPer1M: 0.3,\n outputPer1M: 0.3,\n vendor: \"nousresearch\",\n provider: \"openrouter\",\n },\n \"nousresearch/hermes-4-405b\": {\n inputPer1M: 1,\n outputPer1M: 3,\n vendor: \"nousresearch\",\n provider: \"openrouter\",\n },\n \"nousresearch/hermes-4-70b\": {\n inputPer1M: 0.13,\n outputPer1M: 0.4,\n vendor: \"nousresearch\",\n provider: \"openrouter\",\n },\n \"nvidia/llama-3.1-nemotron-70b-instruct\": {\n inputPer1M: 1.2,\n outputPer1M: 1.2,\n vendor: \"nvidia\",\n provider: \"openrouter\",\n },\n \"nvidia/llama-3.3-nemotron-super-49b-v1.5\": {\n inputPer1M: 0.1,\n outputPer1M: 0.4,\n vendor: \"nvidia\",\n provider: \"openrouter\",\n },\n \"nvidia/nemotron-3-nano-30b-a3b\": {\n inputPer1M: 0.05,\n outputPer1M: 0.2,\n vendor: \"nvidia\",\n provider: \"openrouter\",\n },\n \"nvidia/nemotron-3-super-120b-a12b\": {\n inputPer1M: 0.09,\n outputPer1M: 0.45,\n vendor: \"nvidia\",\n provider: \"openrouter\",\n },\n \"nvidia/nemotron-nano-12b-v2-vl\": {\n inputPer1M: 0.2,\n outputPer1M: 0.6,\n vendor: \"nvidia\",\n provider: \"openrouter\",\n },\n \"nvidia/nemotron-nano-9b-v2\": {\n inputPer1M: 0.04,\n outputPer1M: 0.16,\n vendor: \"nvidia\",\n provider: \"openrouter\",\n },\n \"openai/gpt-3.5-turbo\": {\n inputPer1M: 0.5,\n outputPer1M: 1.5,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-3.5-turbo-0613\": {\n inputPer1M: 1,\n outputPer1M: 2,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-3.5-turbo-16k\": {\n inputPer1M: 3,\n outputPer1M: 4,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-3.5-turbo-instruct\": {\n inputPer1M: 1.5,\n outputPer1M: 2,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4\": {\n inputPer1M: 30,\n outputPer1M: 60,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4-0314\": {\n inputPer1M: 30,\n outputPer1M: 60,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4-1106-preview\": {\n inputPer1M: 10,\n outputPer1M: 30,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4-turbo\": {\n inputPer1M: 10,\n outputPer1M: 30,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4-turbo-preview\": {\n inputPer1M: 10,\n outputPer1M: 30,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4.1\": {\n inputPer1M: 2,\n outputPer1M: 8,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4.1-mini\": {\n inputPer1M: 0.4,\n outputPer1M: 1.6,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4.1-nano\": {\n inputPer1M: 0.1,\n outputPer1M: 0.4,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4o\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4o-2024-05-13\": {\n inputPer1M: 5,\n outputPer1M: 15,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4o-2024-08-06\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4o-2024-11-20\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4o-audio-preview\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4o-mini\": {\n inputPer1M: 0.15,\n outputPer1M: 0.6,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4o-mini-2024-07-18\": {\n inputPer1M: 0.15,\n outputPer1M: 0.6,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4o-mini-search-preview\": {\n inputPer1M: 0.15,\n outputPer1M: 0.6,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-4o-search-preview\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5-chat\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5-codex\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5-image\": {\n inputPer1M: 10,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5-image-mini\": {\n inputPer1M: 2.5,\n outputPer1M: 2,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5-mini\": {\n inputPer1M: 0.25,\n outputPer1M: 2,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5-nano\": {\n inputPer1M: 0.05,\n outputPer1M: 0.4,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5-pro\": {\n inputPer1M: 15,\n outputPer1M: 120,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.1\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.1-chat\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.1-codex\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.1-codex-max\": {\n inputPer1M: 1.25,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.1-codex-mini\": {\n inputPer1M: 0.25,\n outputPer1M: 2,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.2\": {\n inputPer1M: 1.75,\n outputPer1M: 14,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.2-chat\": {\n inputPer1M: 1.75,\n outputPer1M: 14,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.2-codex\": {\n inputPer1M: 1.75,\n outputPer1M: 14,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.2-pro\": {\n inputPer1M: 21,\n outputPer1M: 168,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.3-chat\": {\n inputPer1M: 1.75,\n outputPer1M: 14,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.3-codex\": {\n inputPer1M: 1.75,\n outputPer1M: 14,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.4\": {\n inputPer1M: 2.5,\n outputPer1M: 15,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.4-image-2\": {\n inputPer1M: 8,\n outputPer1M: 15,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.4-mini\": {\n inputPer1M: 0.75,\n outputPer1M: 4.5,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.4-nano\": {\n inputPer1M: 0.2,\n outputPer1M: 1.25,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.4-pro\": {\n inputPer1M: 30,\n outputPer1M: 180,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.5\": {\n inputPer1M: 5,\n outputPer1M: 30,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-5.5-pro\": {\n inputPer1M: 30,\n outputPer1M: 180,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-audio\": {\n inputPer1M: 2.5,\n outputPer1M: 10,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-audio-mini\": {\n inputPer1M: 0.6,\n outputPer1M: 2.4,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-oss-120b\": {\n inputPer1M: 0.039,\n outputPer1M: 0.19,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-oss-20b\": {\n inputPer1M: 0.03,\n outputPer1M: 0.14,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/gpt-oss-safeguard-20b\": {\n inputPer1M: 0.075,\n outputPer1M: 0.3,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o1\": {\n inputPer1M: 15,\n outputPer1M: 60,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o1-pro\": {\n inputPer1M: 150,\n outputPer1M: 600,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o3\": {\n inputPer1M: 2,\n outputPer1M: 8,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o3-deep-research\": {\n inputPer1M: 10,\n outputPer1M: 40,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o3-mini\": {\n inputPer1M: 1.1,\n outputPer1M: 4.4,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o3-mini-high\": {\n inputPer1M: 1.1,\n outputPer1M: 4.4,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o3-pro\": {\n inputPer1M: 20,\n outputPer1M: 80,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o4-mini\": {\n inputPer1M: 1.1,\n outputPer1M: 4.4,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o4-mini-deep-research\": {\n inputPer1M: 2,\n outputPer1M: 8,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openai/o4-mini-high\": {\n inputPer1M: 1.1,\n outputPer1M: 4.4,\n vendor: \"openai\",\n provider: \"openrouter\",\n },\n \"openrouter/auto\": {\n inputPer1M: -1000000,\n outputPer1M: -1000000,\n vendor: \"openrouter\",\n provider: \"openrouter\",\n },\n \"openrouter/bodybuilder\": {\n inputPer1M: -1000000,\n outputPer1M: -1000000,\n vendor: \"openrouter\",\n provider: \"openrouter\",\n },\n \"openrouter/pareto-code\": {\n inputPer1M: -1000000,\n outputPer1M: -1000000,\n vendor: \"openrouter\",\n provider: \"openrouter\",\n },\n \"perplexity/sonar\": {\n inputPer1M: 1,\n outputPer1M: 1,\n vendor: \"perplexity\",\n provider: \"openrouter\",\n },\n \"perplexity/sonar-deep-research\": {\n inputPer1M: 2,\n outputPer1M: 8,\n vendor: \"perplexity\",\n provider: \"openrouter\",\n },\n \"perplexity/sonar-pro\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"perplexity\",\n provider: \"openrouter\",\n },\n \"perplexity/sonar-pro-search\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"perplexity\",\n provider: \"openrouter\",\n },\n \"perplexity/sonar-reasoning-pro\": {\n inputPer1M: 2,\n outputPer1M: 8,\n vendor: \"perplexity\",\n provider: \"openrouter\",\n },\n \"prime-intellect/intellect-3\": {\n inputPer1M: 0.2,\n outputPer1M: 1.1,\n vendor: \"prime-intellect\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-2.5-72b-instruct\": {\n inputPer1M: 0.36,\n outputPer1M: 0.4,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-2.5-7b-instruct\": {\n inputPer1M: 0.04,\n outputPer1M: 0.1,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-2.5-coder-32b-instruct\": {\n inputPer1M: 0.66,\n outputPer1M: 1,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-max\": {\n inputPer1M: 1.04,\n outputPer1M: 4.16,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-plus\": {\n inputPer1M: 0.26,\n outputPer1M: 0.78,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-plus-2025-07-28\": {\n inputPer1M: 0.26,\n outputPer1M: 0.78,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-plus-2025-07-28:thinking\": {\n inputPer1M: 0.26,\n outputPer1M: 0.78,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-turbo\": {\n inputPer1M: 0.0325,\n outputPer1M: 0.13,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-vl-max\": {\n inputPer1M: 0.52,\n outputPer1M: 2.08,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen-vl-plus\": {\n inputPer1M: 0.1365,\n outputPer1M: 0.4095,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen2.5-vl-72b-instruct\": {\n inputPer1M: 0.25,\n outputPer1M: 0.75,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-14b\": {\n inputPer1M: 0.06,\n outputPer1M: 0.24,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-235b-a22b\": {\n inputPer1M: 0.455,\n outputPer1M: 1.82,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-235b-a22b-2507\": {\n inputPer1M: 0.071,\n outputPer1M: 0.1,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-235b-a22b-thinking-2507\": {\n inputPer1M: 0.1495,\n outputPer1M: 1.495,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-30b-a3b\": {\n inputPer1M: 0.08,\n outputPer1M: 0.28,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-30b-a3b-instruct-2507\": {\n inputPer1M: 0.09,\n outputPer1M: 0.3,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-30b-a3b-thinking-2507\": {\n inputPer1M: 0.08,\n outputPer1M: 0.4,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-32b\": {\n inputPer1M: 0.08,\n outputPer1M: 0.24,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-8b\": {\n inputPer1M: 0.05,\n outputPer1M: 0.4,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-coder\": {\n inputPer1M: 0.22,\n outputPer1M: 1.8,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-coder-30b-a3b-instruct\": {\n inputPer1M: 0.07,\n outputPer1M: 0.27,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-coder-flash\": {\n inputPer1M: 0.195,\n outputPer1M: 0.975,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-coder-next\": {\n inputPer1M: 0.14,\n outputPer1M: 0.8,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-coder-plus\": {\n inputPer1M: 0.65,\n outputPer1M: 3.25,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-max\": {\n inputPer1M: 0.78,\n outputPer1M: 3.9,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-max-thinking\": {\n inputPer1M: 0.78,\n outputPer1M: 3.9,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-next-80b-a3b-instruct\": {\n inputPer1M: 0.09,\n outputPer1M: 1.1,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-next-80b-a3b-thinking\": {\n inputPer1M: 0.0975,\n outputPer1M: 0.78,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-vl-235b-a22b-instruct\": {\n inputPer1M: 0.2,\n outputPer1M: 0.88,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-vl-235b-a22b-thinking\": {\n inputPer1M: 0.26,\n outputPer1M: 2.6,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-vl-30b-a3b-instruct\": {\n inputPer1M: 0.13,\n outputPer1M: 0.52,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-vl-30b-a3b-thinking\": {\n inputPer1M: 0.13,\n outputPer1M: 1.56,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-vl-32b-instruct\": {\n inputPer1M: 0.104,\n outputPer1M: 0.416,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-vl-8b-instruct\": {\n inputPer1M: 0.08,\n outputPer1M: 0.5,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3-vl-8b-thinking\": {\n inputPer1M: 0.117,\n outputPer1M: 1.365,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.5-122b-a10b\": {\n inputPer1M: 0.26,\n outputPer1M: 2.08,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.5-27b\": {\n inputPer1M: 0.195,\n outputPer1M: 1.56,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.5-35b-a3b\": {\n inputPer1M: 0.1625,\n outputPer1M: 1.3,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.5-397b-a17b\": {\n inputPer1M: 0.39,\n outputPer1M: 2.34,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.5-9b\": {\n inputPer1M: 0.1,\n outputPer1M: 0.15,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.5-flash-02-23\": {\n inputPer1M: 0.065,\n outputPer1M: 0.26,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.5-plus-02-15\": {\n inputPer1M: 0.26,\n outputPer1M: 1.56,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.5-plus-20260420\": {\n inputPer1M: 0.4,\n outputPer1M: 2.4,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.6-27b\": {\n inputPer1M: 0.325,\n outputPer1M: 3.25,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.6-35b-a3b\": {\n inputPer1M: 0.1612,\n outputPer1M: 0.9653,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.6-flash\": {\n inputPer1M: 0.25,\n outputPer1M: 1.5,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.6-max-preview\": {\n inputPer1M: 1.04,\n outputPer1M: 6.24,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"qwen/qwen3.6-plus\": {\n inputPer1M: 0.325,\n outputPer1M: 1.95,\n vendor: \"qwen\",\n provider: \"openrouter\",\n },\n \"rekaai/reka-edge\": {\n inputPer1M: 0.1,\n outputPer1M: 0.1,\n vendor: \"rekaai\",\n provider: \"openrouter\",\n },\n \"rekaai/reka-flash-3\": {\n inputPer1M: 0.1,\n outputPer1M: 0.2,\n vendor: \"rekaai\",\n provider: \"openrouter\",\n },\n \"relace/relace-apply-3\": {\n inputPer1M: 0.85,\n outputPer1M: 1.25,\n vendor: \"relace\",\n provider: \"openrouter\",\n },\n \"relace/relace-search\": {\n inputPer1M: 1,\n outputPer1M: 3,\n vendor: \"relace\",\n provider: \"openrouter\",\n },\n \"sao10k/l3-euryale-70b\": {\n inputPer1M: 1.48,\n outputPer1M: 1.48,\n vendor: \"sao10k\",\n provider: \"openrouter\",\n },\n \"sao10k/l3-lunaris-8b\": {\n inputPer1M: 0.04,\n outputPer1M: 0.05,\n vendor: \"sao10k\",\n provider: \"openrouter\",\n },\n \"sao10k/l3.1-70b-hanami-x1\": {\n inputPer1M: 3,\n outputPer1M: 3,\n vendor: \"sao10k\",\n provider: \"openrouter\",\n },\n \"sao10k/l3.1-euryale-70b\": {\n inputPer1M: 0.85,\n outputPer1M: 0.85,\n vendor: \"sao10k\",\n provider: \"openrouter\",\n },\n \"sao10k/l3.3-euryale-70b\": {\n inputPer1M: 0.65,\n outputPer1M: 0.75,\n vendor: \"sao10k\",\n provider: \"openrouter\",\n },\n \"stepfun/step-3.5-flash\": {\n inputPer1M: 0.1,\n outputPer1M: 0.3,\n vendor: \"stepfun\",\n provider: \"openrouter\",\n },\n \"switchpoint/router\": {\n inputPer1M: 0.85,\n outputPer1M: 3.4,\n vendor: \"switchpoint\",\n provider: \"openrouter\",\n },\n \"tencent/hunyuan-a13b-instruct\": {\n inputPer1M: 0.14,\n outputPer1M: 0.57,\n vendor: \"tencent\",\n provider: \"openrouter\",\n },\n \"thedrummer/cydonia-24b-v4.1\": {\n inputPer1M: 0.3,\n outputPer1M: 0.5,\n vendor: \"thedrummer\",\n provider: \"openrouter\",\n },\n \"thedrummer/rocinante-12b\": {\n inputPer1M: 0.17,\n outputPer1M: 0.43,\n vendor: \"thedrummer\",\n provider: \"openrouter\",\n },\n \"thedrummer/skyfall-36b-v2\": {\n inputPer1M: 0.55,\n outputPer1M: 0.8,\n vendor: \"thedrummer\",\n provider: \"openrouter\",\n },\n \"thedrummer/unslopnemo-12b\": {\n inputPer1M: 0.4,\n outputPer1M: 0.4,\n vendor: \"thedrummer\",\n provider: \"openrouter\",\n },\n \"tngtech/deepseek-r1t2-chimera\": {\n inputPer1M: 0.3,\n outputPer1M: 1.1,\n vendor: \"tngtech\",\n provider: \"openrouter\",\n },\n \"undi95/remm-slerp-l2-13b\": {\n inputPer1M: 0.45,\n outputPer1M: 0.65,\n vendor: \"undi95\",\n provider: \"openrouter\",\n },\n \"upstage/solar-pro-3\": {\n inputPer1M: 0.15,\n outputPer1M: 0.6,\n vendor: \"upstage\",\n provider: \"openrouter\",\n },\n \"writer/palmyra-x5\": {\n inputPer1M: 0.6,\n outputPer1M: 6,\n vendor: \"writer\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-3\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-3-beta\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-3-mini\": {\n inputPer1M: 0.3,\n outputPer1M: 0.5,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-3-mini-beta\": {\n inputPer1M: 0.3,\n outputPer1M: 0.5,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-4\": {\n inputPer1M: 3,\n outputPer1M: 15,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-4-fast\": {\n inputPer1M: 0.2,\n outputPer1M: 0.5,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-4.1-fast\": {\n inputPer1M: 0.2,\n outputPer1M: 0.5,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-4.20\": {\n inputPer1M: 2,\n outputPer1M: 6,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-4.20-multi-agent\": {\n inputPer1M: 2,\n outputPer1M: 6,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"x-ai/grok-code-fast-1\": {\n inputPer1M: 0.2,\n outputPer1M: 1.5,\n vendor: \"x-ai\",\n provider: \"openrouter\",\n },\n \"xiaomi/mimo-v2-flash\": {\n inputPer1M: 0.09,\n outputPer1M: 0.29,\n vendor: \"xiaomi\",\n provider: \"openrouter\",\n },\n \"xiaomi/mimo-v2-omni\": {\n inputPer1M: 0.4,\n outputPer1M: 2,\n vendor: \"xiaomi\",\n provider: \"openrouter\",\n },\n \"xiaomi/mimo-v2-pro\": {\n inputPer1M: 1,\n outputPer1M: 3,\n vendor: \"xiaomi\",\n provider: \"openrouter\",\n },\n \"xiaomi/mimo-v2.5\": {\n inputPer1M: 0.4,\n outputPer1M: 2,\n vendor: \"xiaomi\",\n provider: \"openrouter\",\n },\n \"xiaomi/mimo-v2.5-pro\": {\n inputPer1M: 1,\n outputPer1M: 3,\n vendor: \"xiaomi\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-4-32b\": {\n inputPer1M: 0.1,\n outputPer1M: 0.1,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-4.5\": {\n inputPer1M: 0.6,\n outputPer1M: 2.2,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-4.5-air\": {\n inputPer1M: 0.13,\n outputPer1M: 0.85,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-4.5v\": {\n inputPer1M: 0.6,\n outputPer1M: 1.8,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-4.6\": {\n inputPer1M: 0.39,\n outputPer1M: 1.9,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-4.6v\": {\n inputPer1M: 0.3,\n outputPer1M: 0.9,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-4.7\": {\n inputPer1M: 0.38,\n outputPer1M: 1.74,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-4.7-flash\": {\n inputPer1M: 0.06,\n outputPer1M: 0.4,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-5\": {\n inputPer1M: 0.6,\n outputPer1M: 2.08,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-5-turbo\": {\n inputPer1M: 1.2,\n outputPer1M: 4,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-5.1\": {\n inputPer1M: 1.05,\n outputPer1M: 3.5,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n \"z-ai/glm-5v-turbo\": {\n inputPer1M: 1.2,\n outputPer1M: 4,\n vendor: \"z-ai\",\n provider: \"openrouter\",\n },\n}\n\n/** Provider slugs treated as OpenRouter routes by the picker. */\nexport const OPENROUTER_PROVIDERS: readonly string[] = [\n \"ai21\",\n \"aion-labs\",\n \"alfredpros\",\n \"alibaba\",\n \"allenai\",\n \"alpindale\",\n \"amazon\",\n \"anthracite-org\",\n \"anthropic\",\n \"arcee-ai\",\n \"baidu\",\n \"bytedance\",\n \"bytedance-seed\",\n \"cohere\",\n \"deepcogito\",\n \"deepseek\",\n \"essentialai\",\n \"google\",\n \"gryphe\",\n \"ibm-granite\",\n \"inception\",\n \"inclusionai\",\n \"inflection\",\n \"kwaipilot\",\n \"liquid\",\n \"mancer\",\n \"meta-llama\",\n \"microsoft\",\n \"minimax\",\n \"mistralai\",\n \"moonshotai\",\n \"morph\",\n \"nex-agi\",\n \"nousresearch\",\n \"nvidia\",\n \"openai\",\n \"openrouter\",\n \"perplexity\",\n \"prime-intellect\",\n \"qwen\",\n \"rekaai\",\n \"relace\",\n \"sao10k\",\n \"stepfun\",\n \"switchpoint\",\n \"tencent\",\n \"thedrummer\",\n \"tngtech\",\n \"undi95\",\n \"upstage\",\n \"writer\",\n \"x-ai\",\n \"xiaomi\",\n \"z-ai\",\n \"~anthropic\",\n \"~google\",\n \"~moonshotai\",\n \"~openai\",\n]\n","// AUTO-GENERATED by @agentproto/catalog-sync (llm:context-windows).\n// Do not edit by hand — re-run `pnpm --filter @agentproto/catalog-sync generate --refresh`.\n// Sources: api.anthropic.com/v1/models, api.groq.com/openai/v1/models,\n// api.x.ai/v1/models, api.moonshot.ai/v1/models\n// Context window (max input tokens) + max output tokens per live model id.\n// NOT pricing — see LLM_PRICING_CATALOG / OPENROUTER_ROUTES in catalog.ts.\n\nexport interface ContextWindowEntry {\n contextWindow: number\n maxOutput?: number\n displayName?: string\n provider: \"anthropic\" | \"groq\" | \"xai\" | \"moonshot\"\n}\n\nexport const CONTEXT_WINDOWS: Record<string, ContextWindowEntry> = {\n \"allam-2-7b\": { contextWindow: 4096, maxOutput: 4096, provider: \"groq\" },\n \"canopylabs/orpheus-arabic-saudi\": { contextWindow: 4000, maxOutput: 50000, provider: \"groq\" },\n \"canopylabs/orpheus-v1-english\": { contextWindow: 4000, maxOutput: 50000, provider: \"groq\" },\n \"claude-fable-5\": { contextWindow: 1000000, maxOutput: 128000, displayName: \"Claude Fable 5\", provider: \"anthropic\" },\n \"claude-haiku-4-5-20251001\": { contextWindow: 200000, maxOutput: 64000, displayName: \"Claude Haiku 4.5\", provider: \"anthropic\" },\n \"claude-opus-4-1-20250805\": { contextWindow: 200000, maxOutput: 32000, displayName: \"Claude Opus 4.1\", provider: \"anthropic\" },\n \"claude-opus-4-5-20251101\": { contextWindow: 200000, maxOutput: 64000, displayName: \"Claude Opus 4.5\", provider: \"anthropic\" },\n \"claude-opus-4-6\": { contextWindow: 1000000, maxOutput: 128000, displayName: \"Claude Opus 4.6\", provider: \"anthropic\" },\n \"claude-opus-4-7\": { contextWindow: 1000000, maxOutput: 128000, displayName: \"Claude Opus 4.7\", provider: \"anthropic\" },\n \"claude-opus-4-8\": { contextWindow: 1000000, maxOutput: 128000, displayName: \"Claude Opus 4.8\", provider: \"anthropic\" },\n \"claude-sonnet-4-5-20250929\": { contextWindow: 1000000, maxOutput: 64000, displayName: \"Claude Sonnet 4.5\", provider: \"anthropic\" },\n \"claude-sonnet-4-6\": { contextWindow: 1000000, maxOutput: 128000, displayName: \"Claude Sonnet 4.6\", provider: \"anthropic\" },\n \"claude-sonnet-5\": { contextWindow: 1000000, maxOutput: 128000, displayName: \"Claude Sonnet 5\", provider: \"anthropic\" },\n \"grok-4.20-0309-non-reasoning\": { contextWindow: 1000000, provider: \"xai\" },\n \"grok-4.20-0309-reasoning\": { contextWindow: 1000000, provider: \"xai\" },\n \"grok-4.20-multi-agent-0309\": { contextWindow: 1000000, provider: \"xai\" },\n \"grok-4.3\": { contextWindow: 1000000, provider: \"xai\" },\n \"grok-4.5\": { contextWindow: 500000, provider: \"xai\" },\n \"grok-build-0.1\": { contextWindow: 256000, provider: \"xai\" },\n \"grok-imagine-image\": { contextWindow: 8000, provider: \"xai\" },\n \"grok-imagine-image-quality\": { contextWindow: 8000, provider: \"xai\" },\n \"groq/compound\": { contextWindow: 131072, maxOutput: 8192, provider: \"groq\" },\n \"groq/compound-mini\": { contextWindow: 131072, maxOutput: 8192, provider: \"groq\" },\n \"kimi-k2.5\": { contextWindow: 262144, provider: \"moonshot\" },\n \"kimi-k2.6\": { contextWindow: 262144, provider: \"moonshot\" },\n \"kimi-k2.7-code\": { contextWindow: 262144, provider: \"moonshot\" },\n \"kimi-k2.7-code-highspeed\": { contextWindow: 262144, provider: \"moonshot\" },\n \"kimi-k3\": { contextWindow: 1048576, provider: \"moonshot\" },\n \"llama-3.1-8b-instant\": { contextWindow: 131072, maxOutput: 131072, provider: \"groq\" },\n \"llama-3.3-70b-versatile\": { contextWindow: 131072, maxOutput: 32768, provider: \"groq\" },\n \"meta-llama/llama-4-scout-17b-16e-instruct\": { contextWindow: 131072, maxOutput: 8192, provider: \"groq\" },\n \"meta-llama/llama-prompt-guard-2-22m\": { contextWindow: 512, maxOutput: 512, provider: \"groq\" },\n \"meta-llama/llama-prompt-guard-2-86m\": { contextWindow: 512, maxOutput: 512, provider: \"groq\" },\n \"moonshot-v1-128k\": { contextWindow: 131072, provider: \"moonshot\" },\n \"moonshot-v1-128k-vision-preview\": { contextWindow: 131072, provider: \"moonshot\" },\n \"moonshot-v1-32k\": { contextWindow: 32768, provider: \"moonshot\" },\n \"moonshot-v1-32k-vision-preview\": { contextWindow: 32768, provider: \"moonshot\" },\n \"moonshot-v1-8k\": { contextWindow: 8192, provider: \"moonshot\" },\n \"moonshot-v1-8k-vision-preview\": { contextWindow: 8192, provider: \"moonshot\" },\n \"moonshot-v1-auto\": { contextWindow: 131072, provider: \"moonshot\" },\n \"openai/gpt-oss-120b\": { contextWindow: 131072, maxOutput: 65536, provider: \"groq\" },\n \"openai/gpt-oss-20b\": { contextWindow: 131072, maxOutput: 65536, provider: \"groq\" },\n \"openai/gpt-oss-safeguard-20b\": { contextWindow: 131072, maxOutput: 65536, provider: \"groq\" },\n \"qwen/qwen3-32b\": { contextWindow: 131072, maxOutput: 40960, provider: \"groq\" },\n \"qwen/qwen3.6-27b\": { contextWindow: 131072, maxOutput: 32768, provider: \"groq\" },\n \"whisper-large-v3\": { contextWindow: 448, maxOutput: 448, provider: \"groq\" },\n \"whisper-large-v3-turbo\": { contextWindow: 448, maxOutput: 448, provider: \"groq\" },\n}\n","/**\n * LLM Pricing Catalog — per-token costs for all LLM models.\n *\n * Migrated from `packages/core/src/config/llm-pricing.ts` (commit `eeb1acdc`\n * era). The original location now re-exports from here so every existing\n * consumer (orchestrator dynamic imports, agent-analytics) keeps working.\n *\n * Prices in USD per 1M tokens (input and output separated).\n * Credit costs are what we charge users (includes margin).\n */\n\nimport type { CatalogProvider } from \"../schema/base.js\"\n\nexport interface LLMPricing {\n /** Provider cost: $ per 1M input tokens */\n inputPer1M: number\n /** Provider cost: $ per 1M output tokens */\n outputPer1M: number\n /**\n * Strategic per-model centicredit override for input. Bypasses the\n * default `inputPer1M × text-markup / CC_USD_RATE` formula. Use only\n * for explicit loss-leader / promo models — formula path is\n * cost-plus-margin by construction and self-heals when providers\n * change rates.\n *\n * Unit: **centicredits per 1M input tokens** (1 displayed credit =\n * 100 cc). Example: `overrideCreditInputPer1M: 1000` charges 10\n * displayed credits per 1M input tokens.\n */\n overrideCreditInputPer1M?: number\n /** Same as `overrideCreditInputPer1M`, for output tokens. Unit: cc/1M. */\n overrideCreditOutputPer1M?: number\n /**\n * Provider-side discount for cache-read tokens (Anthropic prompt\n * caching: ~10% of base input). Default 1.0 — no cache discount —\n * for providers without prompt caching. Applies to BOTH the\n * provider-cost calculation AND the derived credit cost so the\n * margin holds for cached vs uncached tokens.\n */\n cacheReadMultiplier?: number\n /**\n * Provider-side premium for cache-creation tokens (Anthropic prompt\n * caching: ~125% of base input — slightly more than uncached, but\n * the savings come from subsequent reads). Default 1.0. Applies to\n * BOTH sides like `cacheReadMultiplier`.\n */\n cacheWriteMultiplier?: number\n /**\n * Router / SDK used to call the model. Same model can be reachable via\n * multiple providers — `claude-sonnet-4-5` is `provider: \"anthropic\"`\n * when called through the Anthropic SDK and `provider: \"openrouter\"`\n * when routed through OpenRouter. Distinct from `vendor`: this is HOW\n * we reach the model, not WHO made it.\n * - bare ids (`claude-sonnet-4-5`, `gpt-4o`, `gemini-2.5-flash`)\n * → `\"anthropic\" | \"openai\" | \"google\"` (direct providers)\n * - slash ids (`anthropic/claude-sonnet-4-5`, `qwen/qwen3-coder`)\n * → `\"openrouter\"` (always — the slash is the OpenRouter route\n * convention and the OpenRouter SDK is what runs them)\n *\n * The runtime can still pass an explicit `connectorUsed` to\n * `emitUsageEvent` — that wins over this default and covers the\n * edge case where a guild has multiple connectors and the\n * dispatcher routed to a non-default one.\n */\n provider?: CatalogProvider\n /**\n * Who authored / built the model. Permanent attribute, independent of\n * the router: `claude-sonnet-4-5` is always `vendor: \"anthropic\"`\n * regardless of whether `provider` is `\"anthropic\"` (direct) or\n * `\"openrouter\"` (proxied). Used for display labels, BYOK gating, and\n * analytics grouping. Examples: `anthropic`, `openai`, `google`,\n * `moonshot`, `mistralai`, `minimax`, `meta`, `qwen`, `deepseek`.\n */\n vendor?: string\n}\n\nimport { OPENROUTER_ROUTES } from \"./openrouter-routes.generated.js\"\nimport { pricingRegistry, CC_USD_RATE } from \"../pricing/index.js\"\nimport { CONTEXT_WINDOWS, type ContextWindowEntry } from \"./context-windows.generated.js\"\n\nexport const LLM_PRICING_CATALOG = {\n // ── Anthropic ──────────────────────────────────────────────────────────\n // Catalog keys MUST be valid Anthropic model ids — `resolveAlias` returns\n // the catalog key as the API model id, and Anthropic 404s on anything\n // that isn't a real published id (e.g. the bare `claude-sonnet-4`\n // collapsed every Sonnet 4.x request through to a not_found_error).\n \"claude-opus-4-5\": {\n inputPer1M: 15.0,\n outputPer1M: 75.0,\n cacheReadMultiplier: 0.1,\n cacheWriteMultiplier: 1.25,\n vendor: \"anthropic\",\n provider: \"anthropic\",\n },\n \"claude-sonnet-4-5\": {\n inputPer1M: 3.0,\n outputPer1M: 15.0,\n cacheReadMultiplier: 0.1,\n cacheWriteMultiplier: 1.25,\n vendor: \"anthropic\",\n provider: \"anthropic\",\n },\n \"claude-haiku-4-5\": {\n inputPer1M: 0.8,\n outputPer1M: 4.0,\n cacheReadMultiplier: 0.1,\n cacheWriteMultiplier: 1.25,\n vendor: \"anthropic\",\n provider: \"anthropic\",\n },\n // Latest-generation Anthropic ids the claude-code / claude-sdk adapters\n // advertise. Registered so `agentproto models` reports a $/Mtok figure and\n // a concrete provider — before these rows they resolved to provider\n // `unknown` (no pricing entry) and showed as runnable:false. Prices per 1M\n // tokens from platform.claude.com/docs/en/pricing.\n \"claude-opus-4-8\": {\n inputPer1M: 5.0,\n outputPer1M: 25.0,\n cacheReadMultiplier: 0.1,\n cacheWriteMultiplier: 1.25,\n vendor: \"anthropic\",\n provider: \"anthropic\",\n },\n \"claude-sonnet-5\": {\n inputPer1M: 3.0,\n outputPer1M: 15.0,\n cacheReadMultiplier: 0.1,\n cacheWriteMultiplier: 1.25,\n vendor: \"anthropic\",\n provider: \"anthropic\",\n },\n \"claude-fable-5\": {\n inputPer1M: 10.0,\n outputPer1M: 50.0,\n cacheReadMultiplier: 0.1,\n cacheWriteMultiplier: 1.25,\n vendor: \"anthropic\",\n provider: \"anthropic\",\n },\n\n // ── Google ─────────────────────────────────────────────────────────────\n // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)\n // — Flash text/image/video input $0.30/1M, output $2.50/1M, context-cache\n // $0.03/1M (audio input is $1.00/1M — not modeled). Cross-checked against\n // https://pricepertoken.com/pricing-page/model/google-gemini-2.5-flash.\n \"gemini-2.5-flash\": {\n inputPer1M: 0.3,\n outputPer1M: 2.5,\n // Context-cache $0.03/1M = 0.1× input (implicit caching, no write surcharge).\n cacheReadMultiplier: 0.1,\n vendor: \"google\",\n provider: \"google\",\n },\n // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)\n // — Pro ≤200k prompts: input $1.25/1M, output $10.00/1M, context-cache\n // $0.125/1M. (>200k tiers: $2.50 in / $15.00 out — not modeled.)\n \"gemini-2.5-pro\": {\n inputPer1M: 1.25,\n outputPer1M: 10.0,\n // Context-cache $0.125/1M = 0.1× input (≤200k tier).\n cacheReadMultiplier: 0.1,\n vendor: \"google\",\n provider: \"google\",\n },\n // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)\n // — Gemini 3.5 Flash input $1.50/1M, output $9.00/1M, context-cache\n // $0.15/1M. Cross-checked against https://devtk.ai/en/models/gemini-3-5-flash.\n \"gemini-3.5-flash\": {\n inputPer1M: 1.5,\n outputPer1M: 9.0,\n // Context-cache $0.15/1M = 0.1× input.\n cacheReadMultiplier: 0.1,\n vendor: \"google\",\n provider: \"google\",\n },\n // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)\n // — Flash-Lite text/image/video input $0.10/1M, output $0.40/1M, cache $0.01.\n \"gemini-2.5-flash-lite\": {\n inputPer1M: 0.1,\n outputPer1M: 0.4,\n // Context-cache $0.01/1M = 0.1× input.\n cacheReadMultiplier: 0.1,\n vendor: \"google\",\n provider: \"google\",\n },\n // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)\n // — Gemini 3.1 Pro Preview ≤200k prompts: input $2.00/1M, output $12.00/1M,\n // context-cache $0.20/1M. (>200k tiers: $4.00 in / $18.00 out — not modeled.)\n \"gemini-3.1-pro-preview\": {\n inputPer1M: 2.0,\n outputPer1M: 12.0,\n // Context-cache $0.20/1M = 0.1× input (≤200k tier).\n cacheReadMultiplier: 0.1,\n vendor: \"google\",\n provider: \"google\",\n },\n // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)\n // — Gemini 3 Flash Preview text/image/video input $0.50/1M, output $3.00/1M,\n // context-cache $0.05/1M.\n \"gemini-3-flash-preview\": {\n inputPer1M: 0.5,\n outputPer1M: 3.0,\n // Context-cache $0.05/1M = 0.1× input.\n cacheReadMultiplier: 0.1,\n vendor: \"google\",\n provider: \"google\",\n },\n // Source: https://ai.google.dev/gemini-api/docs/pricing (fetched 2026-05-29)\n // — Gemini 3.1 Flash-Lite text/image/video input $0.25/1M, output $1.50/1M,\n // context-cache $0.025/1M.\n \"gemini-3.1-flash-lite\": {\n inputPer1M: 0.25,\n outputPer1M: 1.5,\n // Context-cache $0.025/1M = 0.1× input.\n cacheReadMultiplier: 0.1,\n vendor: \"google\",\n provider: \"google\",\n },\n\n // ── OpenAI ─────────────────────────────────────────────────────────────\n // All OpenAI cacheReadMultiplier = 0.1 (cached input billed at 10% of base,\n // matching the per-model cached-input rates on the pricing table). No cache-\n // write premium (OpenAI prompt caching is automatic, no write surcharge).\n // Source: https://pricepertoken.com/pricing-page/provider/openai\n // (mirrors openai.com/api/pricing; fetched 2026-05-29 — openai.com 403s WebFetch).\n \"gpt-5.5\": {\n // $5.00 in / $0.50 cached / $30.00 out per 1M.\n inputPer1M: 5.0,\n outputPer1M: 30.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.5-pro\": {\n // $30.00 in / $180.00 out per 1M. No cached tier on pro.\n inputPer1M: 30.0,\n outputPer1M: 180.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.4\": {\n // $2.50 in / $0.25 cached / $15.00 out per 1M (production workhorse).\n inputPer1M: 2.5,\n outputPer1M: 15.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.4-mini\": {\n // $0.75 in / $0.075 cached / $4.50 out per 1M.\n inputPer1M: 0.75,\n outputPer1M: 4.5,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.4-nano\": {\n // $0.20 in / $0.02 cached / $1.25 out per 1M.\n inputPer1M: 0.2,\n outputPer1M: 1.25,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.4-pro\": {\n // $30.00 in / $180.00 out per 1M. No cached tier on pro.\n inputPer1M: 30.0,\n outputPer1M: 180.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.2\": {\n // $1.75 in / $0.175 cached / $14.00 out per 1M.\n inputPer1M: 1.75,\n outputPer1M: 14.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.1\": {\n // $1.25 in / $0.125 cached / $10.00 out per 1M.\n inputPer1M: 1.25,\n outputPer1M: 10.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5\": {\n // $1.25 in / $0.125 cached / $10.00 out per 1M (base GPT-5).\n inputPer1M: 1.25,\n outputPer1M: 10.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-4.1\": {\n inputPer1M: 2.0,\n outputPer1M: 8.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-4.1-mini\": {\n inputPer1M: 0.4,\n outputPer1M: 1.6,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // Source: pricepertoken.com/pricing-page/provider/openai (fetched 2026-05-29)\n // — gpt-4.1-nano $0.10 in / $0.025 cached / $0.40 out per 1M.\n \"gpt-4.1-nano\": {\n inputPer1M: 0.1,\n outputPer1M: 0.4,\n cacheReadMultiplier: 0.25,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-4o\": {\n inputPer1M: 2.5,\n outputPer1M: 10.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-4o-mini\": {\n inputPer1M: 0.15,\n outputPer1M: 0.6,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // ── OpenAI o-series (reasoning) ─────────────────────────────────────────\n // Source: pricepertoken.com/pricing-page/provider/openai (fetched 2026-05-29).\n o3: {\n // $2.00 in / $8.00 out per 1M.\n inputPer1M: 2.0,\n outputPer1M: 8.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"o4-mini\": {\n // $0.55 in / $0.275 cached / $2.20 out per 1M.\n inputPer1M: 0.55,\n outputPer1M: 2.2,\n cacheReadMultiplier: 0.5,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"o3-mini\": {\n // $0.55 in / $2.20 out per 1M (no cache discount listed).\n inputPer1M: 0.55,\n outputPer1M: 2.2,\n vendor: \"openai\",\n provider: \"openai\",\n },\n o1: {\n // $15.00 in / $7.50 cached / $60.00 out per 1M.\n inputPer1M: 15.0,\n outputPer1M: 60.0,\n cacheReadMultiplier: 0.5,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"o1-mini\": {\n // $0.55 in / $2.20 out per 1M.\n inputPer1M: 0.55,\n outputPer1M: 2.2,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // ── OpenAI GPT-5.6 series ──────────────────────────────────────────────\n // Source: OpenRouter pricing (fetched 2026-07-16)\n \"gpt-5.6-luna\": {\n // $1.00 in / $6.00 out per 1M. Cache read 0.1x.\n inputPer1M: 1.0,\n outputPer1M: 6.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.6-luna-pro\": {\n // $1.00 in / $6.00 out per 1M. Cache read 0.1x.\n inputPer1M: 1.0,\n outputPer1M: 6.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.6-terra\": {\n // $2.50 in / $15.00 out per 1M. Cache read 0.1x.\n inputPer1M: 2.5,\n outputPer1M: 15.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.6-terra-pro\": {\n // $2.50 in / $15.00 out per 1M. Cache read 0.1x.\n inputPer1M: 2.5,\n outputPer1M: 15.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.6-sol\": {\n // $5.00 in / $30.00 out per 1M. Cache read 0.1x.\n inputPer1M: 5.0,\n outputPer1M: 30.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.6-sol-pro\": {\n // $5.00 in / $30.00 out per 1M. Cache read 0.1x.\n inputPer1M: 5.0,\n outputPer1M: 30.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // ── OpenAI GPT-5 min/nano (lite variants) ──────────────────────────────\n \"gpt-5-mini\": {\n // $0.25 in / $2.00 out per 1M. Cache read 0.1x.\n inputPer1M: 0.25,\n outputPer1M: 2.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5-nano\": {\n // $0.05 in / $0.40 out per 1M. Cache read 0.1x.\n inputPer1M: 0.05,\n outputPer1M: 0.4,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // ── OpenAI GPT-5 codex (coding specialist) ─────────────────────────────\n \"gpt-5-codex\": {\n // $1.25 in / $10.00 out per 1M. Cache read 0.1x.\n inputPer1M: 1.25,\n outputPer1M: 10.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // ── OpenAI GPT-5 pro (reasoning-enhanced) ──────────────────────────────\n \"gpt-5-pro\": {\n // $15.00 in / $120.00 out per 1M. No cache discount.\n inputPer1M: 15.0,\n outputPer1M: 120.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // ── OpenAI GPT-5 image generation ──────────────────────────────────────\n \"gpt-5-image\": {\n // $10.00 in / $10.00 out (+ $40/1M image output). Cache read 0.125x.\n inputPer1M: 10.0,\n outputPer1M: 10.0,\n cacheReadMultiplier: 0.125,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5-image-mini\": {\n // $2.50 in / $2.00 out (+ $8/1M image output). Cache read 0.1x.\n inputPer1M: 2.5,\n outputPer1M: 2.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // ── OpenAI GPT audio (multimodal) ──────────────────────────────────────\n \"gpt-audio\": {\n // $2.50 in / $10.00 out (+ audio in $32/1M, audio out $64/1M).\n inputPer1M: 2.5,\n outputPer1M: 10.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-audio-mini\": {\n // $0.60 in / $2.40 out (+ audio in $0.60/1M, audio out $2.40/1M).\n inputPer1M: 0.6,\n outputPer1M: 2.4,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // ── OpenAI o-series (reasoning models) ─────────────────────────────────\n // Extended reasoning variants with cache support.\n \"o3-pro\": {\n // $20.00 in / $80.00 out per 1M. No cache discount.\n inputPer1M: 20.0,\n outputPer1M: 80.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"o3-deep-research\": {\n // $10.00 in / $40.00 out per 1M. Cache read 0.25x.\n inputPer1M: 10.0,\n outputPer1M: 40.0,\n cacheReadMultiplier: 0.25,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"o4-mini-high\": {\n // $1.10 in / $4.40 out per 1M. Cache read 0.25x.\n inputPer1M: 1.1,\n outputPer1M: 4.4,\n cacheReadMultiplier: 0.25,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"o4-mini-deep-research\": {\n // $2.00 in / $8.00 out per 1M. Cache read 0.25x.\n inputPer1M: 2.0,\n outputPer1M: 8.0,\n cacheReadMultiplier: 0.25,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"o1-pro\": {\n // $150.00 in / $600.00 out per 1M. No cache discount.\n inputPer1M: 150.0,\n outputPer1M: 600.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n // ── OpenAI GPT-5.1/5.2 codex (code specialist) ─────────────────────────\n \"gpt-5.1-codex\": {\n // $1.25 in / $10.00 out per 1M. Cache read 0.1x.\n inputPer1M: 1.25,\n outputPer1M: 10.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.1-codex-mini\": {\n // $0.25 in / $2.00 out per 1M. Cache read 0.1x.\n inputPer1M: 0.25,\n outputPer1M: 2.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.1-codex-max\": {\n // $1.25 in / $10.00 out per 1M. Cache read 0.1x.\n inputPer1M: 1.25,\n outputPer1M: 10.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.2-codex\": {\n // $1.75 in / $14.00 out per 1M. Cache read 0.1x.\n inputPer1M: 1.75,\n outputPer1M: 14.0,\n cacheReadMultiplier: 0.1,\n vendor: \"openai\",\n provider: \"openai\",\n },\n \"gpt-5.2-pro\": {\n // $21.00 in / $168.00 out per 1M. No cache discount.\n inputPer1M: 21.0,\n outputPer1M: 168.0,\n vendor: \"openai\",\n provider: \"openai\",\n },\n\n // ── MiniMax (direct SDK) ───────────────────────────────────────────────\n // Bare ids match what the MiniMax SDK expects on the wire (PascalCase\n // with optional minor version). OpenRouter equivalents under\n // `minimax/minimax-m2*` are separate entries auto-imported below; the\n // runtime connector picks which one to call based on the guild's\n // installed connectors.\n \"MiniMax-M2\": {\n inputPer1M: 0.2,\n outputPer1M: 1.0,\n cacheReadMultiplier: 0.15,\n cacheWriteMultiplier: 1.875,\n vendor: \"minimax\",\n provider: \"minimax\",\n },\n \"M2-her\": {\n inputPer1M: 0.2,\n outputPer1M: 1.0,\n cacheReadMultiplier: 0.15,\n cacheWriteMultiplier: 1.875,\n vendor: \"minimax\",\n provider: \"minimax\",\n },\n \"MiniMax-M2.1\": {\n inputPer1M: 0.3,\n outputPer1M: 1.2,\n cacheReadMultiplier: 0.1,\n cacheWriteMultiplier: 1.25,\n vendor: \"minimax\",\n provider: \"minimax\",\n },\n \"MiniMax-M2.5\": {\n inputPer1M: 0.3,\n outputPer1M: 1.2,\n cacheReadMultiplier: 0.1,\n cacheWriteMultiplier: 1.25,\n vendor: \"minimax\",\n provider: \"minimax\",\n },\n \"MiniMax-M2.7\": {\n inputPer1M: 0.3,\n outputPer1M: 1.2,\n vendor: \"minimax\",\n provider: \"minimax\",\n },\n\n // ── Moonshot (direct SDK) ─────────────────────────────────────────────\n \"kimi-k2.6\": {\n inputPer1M: 0.95,\n outputPer1M: 4.0,\n cacheReadMultiplier: 0.17,\n vendor: \"moonshot\",\n provider: \"moonshot\",\n },\n \"kimi-k2.5\": {\n inputPer1M: 0.6,\n outputPer1M: 3.0,\n cacheReadMultiplier: 0.17,\n vendor: \"moonshot\",\n provider: \"moonshot\",\n },\n \"kimi-k2-0905-preview\": {\n inputPer1M: 0.6,\n outputPer1M: 2.5,\n cacheReadMultiplier: 0.25,\n vendor: \"moonshot\",\n provider: \"moonshot\",\n },\n \"kimi-k2-turbo-preview\": {\n inputPer1M: 1.15,\n outputPer1M: 8.0,\n cacheReadMultiplier: 0.13,\n vendor: \"moonshot\",\n provider: \"moonshot\",\n },\n \"kimi-k2-thinking\": {\n inputPer1M: 0.6,\n outputPer1M: 2.5,\n cacheReadMultiplier: 0.25,\n vendor: \"moonshot\",\n provider: \"moonshot\",\n },\n \"kimi-k2-thinking-turbo\": {\n inputPer1M: 1.15,\n outputPer1M: 8.0,\n cacheReadMultiplier: 0.13,\n vendor: \"moonshot\",\n provider: \"moonshot\",\n },\n\n // ── xAI (direct SDK + proxy) ─────────────────────────────────────────\n // Source: https://docs.x.ai/docs/models (fetched 2026-07-14)\n // Pricing from API: prompt_text_token_price / completion_text_token_price\n // in units per 1 token. Converted to $ per 1M tokens.\n \"grok-4.5\": {\n // $2.00 in / $6.00 out per 1M (flagship).\n inputPer1M: 2.0,\n outputPer1M: 6.0,\n vendor: \"xai\",\n provider: \"xai\",\n },\n \"grok-4.20\": {\n // $1.25 in / $2.50 out per 1M (non-reasoning default).\n inputPer1M: 1.25,\n outputPer1M: 2.5,\n vendor: \"xai\",\n provider: \"xai\",\n },\n \"grok-4.20-reasoning\": {\n // Same pricing as grok-4.20, reasoning variant.\n inputPer1M: 1.25,\n outputPer1M: 2.5,\n vendor: \"xai\",\n provider: \"xai\",\n },\n \"grok-4.20-multi-agent\": {\n // Same pricing as grok-4.20.\n inputPer1M: 1.25,\n outputPer1M: 2.5,\n vendor: \"xai\",\n provider: \"xai\",\n },\n \"grok-4.3\": {\n // $1.25 in / $2.50 out per 1M (alias: grok-latest).\n inputPer1M: 1.25,\n outputPer1M: 2.5,\n vendor: \"xai\",\n provider: \"xai\",\n },\n \"grok-build-0.1\": {\n // $1.00 in / $2.00 out per 1M (code/fast variant, 256k context).\n inputPer1M: 1.0,\n outputPer1M: 2.0,\n vendor: \"xai\",\n provider: \"xai\",\n },\n\n // ── Mistral (direct SDK) ──────────────────────────────────────────────\n \"mistral-large-latest\": {\n inputPer1M: 0.5,\n outputPer1M: 1.5,\n vendor: \"mistral\",\n provider: \"mistral\",\n },\n \"mistral-small-creative-latest\": {\n inputPer1M: 0.1,\n outputPer1M: 0.3,\n vendor: \"mistral\",\n provider: \"mistral\",\n },\n \"mistral-small-2501\": {\n inputPer1M: 0.05,\n outputPer1M: 0.08,\n vendor: \"mistral\",\n provider: \"mistral\",\n },\n \"mistral-small-latest\": {\n inputPer1M: 0.06,\n outputPer1M: 0.18,\n cacheReadMultiplier: 0.5,\n vendor: \"mistral\",\n provider: \"mistral\",\n },\n\n // ── OpenRouter routes — generated by `scripts/catalog-sync` from\n // https://openrouter.ai/api/v1/models. Re-run\n // `pnpm --filter @agentproto/catalog-sync sync:openrouter`\n // to refresh.\n ...OPENROUTER_ROUTES,\n} satisfies Record<string, LLMPricing>\n\n/**\n * Every canonical catalog model id — derived straight from the pricing\n * map keys (`satisfies` above preserves the literal keys). Downstream\n * curation/config should constrain their ids to this so a typo or a\n * removed model is a build error, not a broken row at runtime.\n */\nexport type LlmModelId = keyof typeof LLM_PRICING_CATALOG\n\n// ── Aliases (map model IDs to catalog keys) ─────────────────────────────\n\nexport const MODEL_ALIASES = {\n // Anthropic — alias targets must be real Anthropic model ids since\n // `resolveAlias` feeds the result straight to the SDK.\n \"claude-opus-4-6\": \"claude-opus-4-5\",\n \"claude-sonnet-4-6\": \"claude-sonnet-4-5\",\n \"claude-4-opus\": \"claude-opus-4-5\",\n \"claude-4-sonnet\": \"claude-sonnet-4-5\",\n \"claude-3-5-haiku\": \"claude-haiku-4-5\",\n \"claude-haiku-4-5-20251001\": \"claude-haiku-4-5\",\n // Back-compat: configs persisted under the old (invalid) catalog keys\n // route to the renamed canonical keys instead of 404'ing at Anthropic.\n \"claude-opus-4\": \"claude-opus-4-5\",\n \"claude-sonnet-4\": \"claude-sonnet-4-5\",\n \"claude-haiku-3.5\": \"claude-haiku-4-5\",\n // Google — slash-prefixed forms collapse to the direct catalog keys.\n // Bare `gemini-3.1-pro-preview` / `gemini-3-flash-preview` /\n // `gemini-2.5-flash-lite` / `gemini-3.1-flash-lite` are now real catalog\n // entries with their own verified pricing (direct match wins over alias).\n \"gemini-3.1-flash-lite-preview\": \"gemini-3.1-flash-lite\",\n \"google/gemini-3.1-pro-preview\": \"gemini-3.1-pro-preview\",\n \"google/gemini-3.5-flash\": \"gemini-3.5-flash\",\n \"google/gemini-3-flash-preview\": \"gemini-3-flash-preview\",\n \"google/gemini-3.1-flash-lite\": \"gemini-3.1-flash-lite\",\n \"google/gemini-2.5-flash\": \"gemini-2.5-flash\",\n \"google/gemini-2.5-flash-lite\": \"gemini-2.5-flash-lite\",\n \"google/gemini-2.5-pro\": \"gemini-2.5-pro\",\n // OpenAI\n \"openai/gpt-4.1\": \"gpt-4.1\",\n \"openai/gpt-4.1-mini\": \"gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\": \"gpt-4.1-nano\",\n \"openai/gpt-5\": \"gpt-5\",\n \"openai/gpt-5.1\": \"gpt-5.1\",\n \"openai/gpt-5.2\": \"gpt-5.2\",\n \"openai/gpt-5.4\": \"gpt-5.4\",\n \"openai/gpt-5.4-mini\": \"gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\": \"gpt-5.4-nano\",\n \"openai/gpt-5.5\": \"gpt-5.5\",\n \"openai/o3\": \"o3\",\n \"openai/o4-mini\": \"o4-mini\",\n \"openai/o3-mini\": \"o3-mini\",\n \"openai/o1\": \"o1\",\n \"openai/o1-mini\": \"o1-mini\",\n // MiniMax — lowercase / OpenRouter forms collapse to direct.\n \"minimax-m2\": \"MiniMax-M2\",\n \"minimax-m2.1\": \"MiniMax-M2.1\",\n \"minimax-m2.5\": \"MiniMax-M2.5\",\n \"minimax-m2.7\": \"MiniMax-M2.7\",\n // Moonshot — friendly version aliases.\n \"kimi-k2\": \"kimi-k2.5\",\n \"moonshotai/kimi-k2.5\": \"kimi-k2.5\",\n \"moonshotai/kimi-k2.6\": \"kimi-k2.6\",\n // Mistral\n \"mistralai/mistral-large-latest\": \"mistral-large-latest\",\n \"mistralai/mistral-small-latest\": \"mistral-small-latest\",\n // xAI — alias grok-latest to grok-4.3 (current default).\n \"grok-latest\": \"grok-4.3\",\n} satisfies Record<string, string>\n\n/** Every alias id that resolves to a canonical model — the alias keys. */\nexport type LlmModelAlias = keyof typeof MODEL_ALIASES\n\n/** Any model id the catalog recognises — canonical key or alias. */\nexport type KnownLlmId = LlmModelId | LlmModelAlias\n\n// Typed wide views for dynamic (arbitrary-string) lookups. `satisfies`\n// drops the string index signature on the consts above, so the\n// resolution functions — which take untrusted `modelId: string` — index\n// through these instead of the literal-keyed originals.\nconst PRICING_BY_ID: Record<string, LLMPricing> = LLM_PRICING_CATALOG\nconst ALIAS_BY_ID: Record<string, string> = MODEL_ALIASES\n\n/**\n * Resolves a model id to its pricing entry. Tries direct match → alias →\n * partial-prefix match. Used both for cost computation and BYOK shadow\n * accounting; semantics are load-bearing for migration.\n */\nexport function resolvePricing(modelId: string): LLMPricing | undefined {\n // Direct match\n if (PRICING_BY_ID[modelId]) return PRICING_BY_ID[modelId]\n // Alias\n const alias = ALIAS_BY_ID[modelId]\n if (alias && PRICING_BY_ID[alias]) return PRICING_BY_ID[alias]\n // Partial match (e.g. \"claude-sonnet-4-6-20260301\" → \"claude-sonnet-4\")\n for (const key of Object.keys(PRICING_BY_ID)) {\n if (modelId.includes(key)) return PRICING_BY_ID[key]\n }\n return undefined\n}\n\n/**\n * Resolves a model id to its canonical catalog key (or the original id if no\n * match). Public surface for consumers that need the canonical id without\n * the pricing payload.\n */\nexport function resolveAlias(modelId: string): string {\n if (PRICING_BY_ID[modelId]) return modelId\n const alias = ALIAS_BY_ID[modelId]\n if (alias && PRICING_BY_ID[alias]) return alias\n for (const key of Object.keys(PRICING_BY_ID)) {\n if (modelId.includes(key)) return key\n }\n return modelId\n}\n\n/**\n * Resolves a model id to its live context window (max input tokens) and max\n * output tokens, sourced from `CONTEXT_WINDOWS`\n * (`packages/catalog-sync/src/generators/llm-context-windows.ts` — re-synced\n * from each provider's live `/v1/models` endpoint; never hand-maintain these\n * numbers). Covers Anthropic, Groq, xAI, and Moonshot — the providers that\n * publish this data live. Handles bare aliases the provider's own API doesn't\n * use (\"claude-haiku-4-5\" vs. the dated live id \"claude-haiku-4-5-20251001\")\n * via prefix match, then falls back through the pricing alias table for\n * older aliases. Returns undefined for ids no synced provider carries.\n */\nexport function resolveContextWindow(modelId: string): ContextWindowEntry | undefined {\n if (CONTEXT_WINDOWS[modelId]) return CONTEXT_WINDOWS[modelId]\n const datedMatch = Object.keys(CONTEXT_WINDOWS)\n .filter(key => key.startsWith(`${modelId}-2`))\n .sort((a, b) => a.length - b.length)[0]\n if (datedMatch) return CONTEXT_WINDOWS[datedMatch]\n const alias = ALIAS_BY_ID[modelId]\n if (alias && CONTEXT_WINDOWS[alias]) return CONTEXT_WINDOWS[alias]\n return undefined\n}\n\n/**\n * Resolve a model id to its DEFAULT provider — the single source of truth for\n * \"which SDK reaches this model when no per-model override is set\". Reads the\n * resolved catalog entry's `provider` field (direct id → alias → partial\n * prefix, same resolution as `resolvePricing`). Returns undefined for unknown\n * ids so callers can fall back to their own heuristic.\n *\n * This is the abstraction that decouples the provider from the model-id STRING:\n * instead of inferring \"claude-* → anthropic\" at each call site, the provider\n * is an explicit catalog attribute. A model reachable through more than one\n * provider (e.g. Claude via the direct Anthropic SDK vs. OpenRouter) is held as\n * distinct catalog entries — the bare id (`claude-haiku-4-5`, provider\n * `anthropic`) and the slash route (`anthropic/claude-haiku-4.5`, provider\n * `openrouter`) — each carrying its own `provider`.\n */\nexport function getModelProvider(modelId: string): CatalogProvider | undefined {\n return resolvePricing(modelId)?.provider\n}\n\n/**\n * The unified registry view of a model: canonical id, default provider, vendor,\n * and pricing — everything the routing + billing layers need from ONE lookup.\n * Returns undefined for unknown ids.\n */\nexport interface ModelRoute {\n /** Canonical catalog key (post-alias). */\n canonicalId: string\n /** Default provider — the SDK used when no per-model override is set. */\n provider?: CatalogProvider\n /** Model author/vendor (permanent; independent of the routing provider). */\n vendor?: string\n /** Billing pricing entry. */\n pricing: LLMPricing\n}\n\nexport function resolveModelRoute(modelId: string): ModelRoute | undefined {\n const pricing = resolvePricing(modelId)\n if (!pricing) return undefined\n return {\n canonicalId: resolveAlias(modelId),\n provider: pricing.provider,\n vendor: pricing.vendor,\n pricing,\n }\n}\n\n/**\n * Default fallback: roughly gemini-flash pricing (cheapest). Unknown\n * model ids resolve to this — the formula path then computes credit\n * cost from `inputPer1M`/`outputPer1M`, so unknown models always price\n * at default markup × cheap-model rates, never at zero.\n */\nexport const DEFAULT_PRICING: LLMPricing = {\n inputPer1M: 0.15,\n outputPer1M: 0.6,\n}\n\n// ── Calculator ──────────────────────────────────────────────────────────\n\nexport interface LLMCreditCostResult {\n /**\n * Total **centicredits** to charge — what `useAccountCredits` debits\n * directly (ledger column is cc). Reflects any per-model override or\n * per-app markup; never below `MIN_CREDITS_PER_TURN_CC`.\n *\n * Unit: cc (1 displayed credit = 100 cc). Format for display with\n * `displayCredits(cc) → cr`.\n */\n credits: number\n /**\n * What the *pure formula* would have charged (provider cost ×\n * text-markup), independent of per-model overrides. Surfaced so\n * `usage_events.calculated_credits` can record the formula-derived\n * value next to the override-applied debit — easy reconciliation\n * against Langfuse traces. Unit: cc.\n */\n calculatedCredits: number\n /** Breakdown of `credits` (each in cc). */\n inputCredits: number\n outputCredits: number\n cacheReadCredits: number\n cacheWriteCredits: number\n /** Production cost in USD (true provider cost, with cache multipliers applied). */\n productionCost: number\n /** Model pricing used */\n pricing: LLMPricing\n /** Whether fallback pricing was used */\n isFallback: boolean\n /** Markup actually applied. Same as `pricingRegistry.getMarkup(\"text\", appId)` when no override. */\n markup: number\n /** True when a per-model `overrideCredit*Per1M` field bypassed the formula. */\n hasOverride: boolean\n}\n\nexport interface LLMUsageBreakdown {\n /**\n * Input tokens that were NOT served from cache. With Anthropic prompt\n * caching, providers often report `inputTokens` already EXCLUDING\n * cached portions — pass the same number you'd pass to the legacy\n * 3-arg signature; cache fields are ADDED on top.\n */\n inputTokens: number\n outputTokens: number\n cacheReadInputTokens?: number\n cacheCreationInputTokens?: number\n}\n\nexport interface CalculateLLMCreditCostOptions {\n /**\n * App invoking the LLM. Routes per-app markup overrides registered\n * via `pricingRegistry.registerApp(appId, ...)`. When omitted, core\n * defaults apply.\n */\n appId?: string\n /**\n * Direct markup override (escape hatch for tests / one-off\n * reconciliation). When set, bypasses `pricingRegistry` for both\n * formula and `calculatedCredits` math. Takes precedence over\n * `appId`.\n */\n markupOverride?: number\n}\n\n/**\n * Env-time markup escape hatch. Honored only when no `appId` or\n * `markupOverride` is provided — i.e. the legacy global tune still\n * works while we migrate call sites onto the registry.\n *\n * Going forward, prefer `pricingRegistry.registerApp(appId, { markup:\n * { text: 2.0 } })` at boot — env-coupled markup makes tests flaky\n * and hides per-app drift.\n */\nconst ENV_MARKUP_OVERRIDE = process.env.LLM_PRICING_MARKUP\n ? Number(process.env.LLM_PRICING_MARKUP)\n : undefined\n/**\n * Minimum centicredits billed per LLM turn. 1 cc = 0.01 displayed\n * credit ≈ $0.0001. Picked over 1 displayed credit (the old floor) so\n * we don't over-charge tiny calls just because input + output each\n * round up.\n */\nconst MIN_CREDITS_PER_TURN_CC = 1\n\nexport function calculateLLMCreditCost(\n modelId: string,\n inputTokens: number,\n outputTokens: number\n): LLMCreditCostResult\nexport function calculateLLMCreditCost(\n modelId: string,\n usage: LLMUsageBreakdown,\n opts?: CalculateLLMCreditCostOptions\n): LLMCreditCostResult\nexport function calculateLLMCreditCost(\n modelId: string,\n inputOrUsage: number | LLMUsageBreakdown,\n outputTokensOrOpts?: number | CalculateLLMCreditCostOptions\n): LLMCreditCostResult {\n // Disambiguate the 2-arg vs 3-arg / opts overload.\n const usage: LLMUsageBreakdown =\n typeof inputOrUsage === \"number\"\n ? {\n inputTokens: inputOrUsage,\n outputTokens:\n typeof outputTokensOrOpts === \"number\" ? outputTokensOrOpts : 0,\n }\n : inputOrUsage\n const opts: CalculateLLMCreditCostOptions =\n typeof outputTokensOrOpts === \"object\" && outputTokensOrOpts !== null\n ? outputTokensOrOpts\n : {}\n\n const resolved = resolvePricing(modelId)\n const pricing = resolved ?? DEFAULT_PRICING\n const isFallback = !resolved\n const cacheRead = pricing.cacheReadMultiplier ?? 1.0\n const cacheWrite = pricing.cacheWriteMultiplier ?? 1.0\n\n const cacheReadIn = Math.max(0, usage.cacheReadInputTokens ?? 0)\n const cacheCreateIn = Math.max(0, usage.cacheCreationInputTokens ?? 0)\n\n // ── 1. Provider cost (USD) — single source of truth ──\n // Cache multipliers apply to BOTH the provider cost AND the derived\n // credit cost. Margin holds across cached vs uncached tokens because\n // `creditPerToken = providerCostPerToken × markup × cacheMultiplier`.\n const inputUsd = (usage.inputTokens / 1_000_000) * pricing.inputPer1M\n const cacheReadUsd =\n (cacheReadIn / 1_000_000) * pricing.inputPer1M * cacheRead\n const cacheWriteUsd =\n (cacheCreateIn / 1_000_000) * pricing.inputPer1M * cacheWrite\n const outputUsd = (usage.outputTokens / 1_000_000) * pricing.outputPer1M\n const productionCost = inputUsd + cacheReadUsd + cacheWriteUsd + outputUsd\n\n // ── 2. Markup resolution ──\n const markup =\n opts.markupOverride ??\n ENV_MARKUP_OVERRIDE ??\n pricingRegistry.getMarkup(\"text\", opts.appId)\n\n // ── 3. Pure-formula credit math in **centicredits** (no overrides —\n // always computed for analytics / Langfuse reconciliation). Per-\n // component ceil keeps token rounding stable; at 1-cc precision the\n // rounding overhead is negligible vs the cost.\n const formulaInputCredits = Math.ceil((inputUsd * markup) / CC_USD_RATE)\n const formulaCacheReadCredits = Math.ceil(\n (cacheReadUsd * markup) / CC_USD_RATE\n )\n const formulaCacheWriteCredits = Math.ceil(\n (cacheWriteUsd * markup) / CC_USD_RATE\n )\n const formulaOutputCredits = Math.ceil((outputUsd * markup) / CC_USD_RATE)\n const formulaSubtotal =\n formulaInputCredits +\n formulaCacheReadCredits +\n formulaCacheWriteCredits +\n formulaOutputCredits\n const calculatedCredits = Math.max(formulaSubtotal, MIN_CREDITS_PER_TURN_CC)\n\n // ── 4. Charged credits — honor explicit per-model centicredit\n // override (`overrideCredit*Per1M`). Use only for strategic\n // deviations (loss-leaders / promos). The default formula path is\n // cost-plus-margin by construction.\n const inputOverrideCc = pricing.overrideCreditInputPer1M\n const outputOverrideCc = pricing.overrideCreditOutputPer1M\n const hasOverride =\n inputOverrideCc !== undefined || outputOverrideCc !== undefined\n\n const inputCredits =\n inputOverrideCc !== undefined\n ? Math.ceil((usage.inputTokens / 1_000_000) * inputOverrideCc)\n : formulaInputCredits\n const cacheReadCredits =\n inputOverrideCc !== undefined\n ? Math.ceil((cacheReadIn / 1_000_000) * inputOverrideCc * cacheRead)\n : formulaCacheReadCredits\n const cacheWriteCredits =\n inputOverrideCc !== undefined\n ? Math.ceil((cacheCreateIn / 1_000_000) * inputOverrideCc * cacheWrite)\n : formulaCacheWriteCredits\n const outputCredits =\n outputOverrideCc !== undefined\n ? Math.ceil((usage.outputTokens / 1_000_000) * outputOverrideCc)\n : formulaOutputCredits\n\n const subtotal =\n inputCredits + cacheReadCredits + cacheWriteCredits + outputCredits\n const credits = Math.max(subtotal, MIN_CREDITS_PER_TURN_CC)\n\n return {\n credits,\n calculatedCredits,\n inputCredits,\n outputCredits,\n cacheReadCredits,\n cacheWriteCredits,\n productionCost,\n pricing,\n isFallback,\n markup,\n hasOverride,\n }\n}\n\n// ─── Cache stats ─────────────────────────────────────────────────────────\n\nexport interface CacheStats {\n /**\n * Cache hit rate as a 0..1 fraction of total input tokens (raw + cache\n * read + cache create). 0 means no cache activity, 1 means everything\n * read from cache, 0 for output-only calls. `null` when there were no\n * input tokens at all.\n */\n cacheHitRate: number | null\n /**\n * Provider USD we *saved* vs the same input billed at the uncached\n * rate. Cache reads at 0.1× save 0.9× of the input cost; cache writes\n * at 1.25× actually COST 0.25× more than uncached (negative savings).\n * Sum across both. Negative means cache-write overhead exceeded\n * cache-read savings (rare — usually means the prompt prefix was\n * cached on the first turn but never re-used).\n */\n providerCostSavedUsd: number\n /**\n * Centicredits the user *saved* vs the same input billed at the\n * uncached rate. Same sign convention as `providerCostSavedUsd`.\n * Unit: cc (format with `displayCredits(cc)` for UI).\n */\n creditsSaved: number\n /**\n * True iff the model carries cache multipliers in its pricing.\n * Useful for explaining \"this model doesn't support caching\" in UI.\n */\n cacheSupported: boolean\n}\n\n/**\n * Turn a credit-cost result into cache-utilisation stats. Pure compute.\n *\n * Use cases:\n * - \"Cache saved 87% on this call\" in a UI tooltip.\n * - Per-conversation dashboards: \"across this conversation, prompt\n * caching saved you $0.42 / 12 credits.\"\n * - Regression alarms — if cacheHitRate drops below an expected\n * threshold on a known-cacheable workload, something broke in\n * prompt-prefix stability.\n *\n * Returns `cacheSupported: false` for models without cache multipliers\n * (gpt-4o-mini, gemini, mistral) — all fields are zero in that case\n * (no cache activity is possible).\n */\nexport function getCacheStats(\n modelId: string,\n usage: LLMUsageBreakdown,\n opts?: CalculateLLMCreditCostOptions\n): CacheStats {\n const result = calculateLLMCreditCost(modelId, usage, opts)\n const cacheRead = result.pricing.cacheReadMultiplier ?? 1.0\n const cacheWrite = result.pricing.cacheWriteMultiplier ?? 1.0\n const cacheSupported =\n result.pricing.cacheReadMultiplier !== undefined ||\n result.pricing.cacheWriteMultiplier !== undefined\n\n const rawInput = Math.max(0, usage.inputTokens)\n const cacheReadIn = Math.max(0, usage.cacheReadInputTokens ?? 0)\n const cacheWriteIn = Math.max(0, usage.cacheCreationInputTokens ?? 0)\n const totalInput = rawInput + cacheReadIn + cacheWriteIn\n\n const cacheHitRate =\n totalInput === 0 ? null : (cacheReadIn + cacheWriteIn) / totalInput\n\n // What the cached tokens WOULD have cost at the uncached rate.\n // Savings = uncached cost − actual cost. Cache reads save (1-cacheRead)\n // of their token-equivalent input cost; cache writes save (1-cacheWrite),\n // which is negative for cacheWrite > 1.0.\n const uncachedCacheReadUsd =\n (cacheReadIn / 1_000_000) * result.pricing.inputPer1M\n const uncachedCacheWriteUsd =\n (cacheWriteIn / 1_000_000) * result.pricing.inputPer1M\n const actualCacheReadUsd = uncachedCacheReadUsd * cacheRead\n const actualCacheWriteUsd = uncachedCacheWriteUsd * cacheWrite\n\n const providerCostSavedUsd =\n uncachedCacheReadUsd -\n actualCacheReadUsd +\n (uncachedCacheWriteUsd - actualCacheWriteUsd)\n\n // Credit-side savings mirror provider-side: cache multiplier × markup\n // = total discount applied to the user's bill. All math in cc.\n const inputRateCc =\n result.pricing.overrideCreditInputPer1M ??\n Math.ceil((result.pricing.inputPer1M * result.markup) / CC_USD_RATE)\n const uncachedCacheReadCredits = (cacheReadIn / 1_000_000) * inputRateCc\n const uncachedCacheWriteCredits = (cacheWriteIn / 1_000_000) * inputRateCc\n const creditsSaved =\n uncachedCacheReadCredits -\n result.cacheReadCredits +\n (uncachedCacheWriteCredits - result.cacheWriteCredits)\n\n return {\n cacheHitRate,\n providerCostSavedUsd,\n creditsSaved,\n cacheSupported,\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getModel } from './chunk-
|
|
2
|
-
import { calculateLLMCreditCost } from './chunk-
|
|
1
|
+
import { getModel } from './chunk-S74S3Q7Z.mjs';
|
|
2
|
+
import { calculateLLMCreditCost } from './chunk-FCPS2VGK.mjs';
|
|
3
3
|
import { computeCenticredits, pricingRegistry } from './chunk-QHELXPSL.mjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -223,5 +223,5 @@ function calculateAudioCost(modelId, usage, opts) {
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
export { CostUsageKindMismatchError, UnknownModelError, calculateAudioCost, calculateCost, calculateImageCost, calculateLLMCost, calculateVideoCost };
|
|
226
|
-
//# sourceMappingURL=chunk-
|
|
227
|
-
//# sourceMappingURL=chunk-
|
|
226
|
+
//# sourceMappingURL=chunk-GCDMRPDR.mjs.map
|
|
227
|
+
//# sourceMappingURL=chunk-GCDMRPDR.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cost/index.ts"],"names":["resolved","baseCostUsd","credits","calculatedCredits","markup"],"mappings":"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","file":"chunk-7FUGMXL4.mjs","sourcesContent":["/**\n * Cost dispatcher — computes credit cost + production USD cost for any\n * model id, regardless of kind. Single entry point used by orchestrator,\n * billing audits, and (eventually) the metered MCP gen layer.\n *\n * Per-kind formulas:\n * - LLM → reuses `calculateLLMCreditCost` (token math + cache + markup)\n * - Image → `creditCost × numOutputs`\n * - Video → `creditCost × multipliers[resolution|duration|mode]`\n * - Audio → `creditCost × (characters or seconds)` per `billingUnit`\n */\n\nimport {\n calculateLLMCreditCost,\n type LLMCreditCostResult,\n} from \"../llm/index.js\"\nimport { getModel } from \"../registry/index.js\"\nimport { computeCenticredits, pricingRegistry } from \"../pricing/index.js\"\n\n/**\n * Voice metadata → default audio model the dispatcher bills through.\n *\n * Voices are render-targets, not priced units. A MiniMax voice can be\n * played through `minimax/speech-02-hd` OR `…-turbo`; an ElevenLabs\n * voice through any of their model tiers. We default to the cheapest\n * model per provider so a drive-by voice-id call doesn't over-bill.\n * Callers wanting HD / premium-tier pricing should pass the audio\n * model id directly with the voice as metadata — see\n * `text-to-speech.tool.ts` for the canonical pattern.\n *\n * Add a new provider here when a new voice catalog lands (e.g.\n * `ELEVENLABS_VOICES` if/when we surface their voice IDs).\n */\nconst VOICE_PROVIDER_DEFAULT_MODEL: Record<string, string> = {\n minimax: \"minimax/speech-02-turbo\",\n elevenlabs: \"elevenlabs/flash-v2.5\",\n}\n\nexport type CostUsage =\n | {\n kind: \"llm\"\n inputTokens: number\n outputTokens: number\n cacheReadInputTokens?: number\n cacheCreationInputTokens?: number\n }\n | { kind: \"image\"; numOutputs?: number }\n | {\n kind: \"video\"\n resolution?: string\n duration?: number\n mode?: string\n }\n | { kind: \"audio\"; characters?: number; seconds?: number }\n\nexport interface CostResult {\n kind: \"llm\" | \"image\" | \"video\" | \"audio\"\n modelId: string\n /** Canonical model id after alias resolution (LLM only; same as modelId for media) */\n canonicalId: string\n /**\n * Total **centicredits** to charge (1 displayed credit = 100 cc).\n * Honors per-model overrides. Feed straight into the ledger — the\n * `credit_transactions.credits` column stores cc, so no `× 100`\n * conversion at the call site. Format for display with\n * `displayCredits(cc) → cr`.\n */\n credits: number\n /**\n * Centicredits the pure formula (provider cost × category markup)\n * would have charged, independent of any per-model override. Equal\n * to `credits` when no override is in play. Surfaced so\n * reconciliation can diff \"what we did\" vs \"what the formula said\"\n * without recomputing — persisted to `usage_events.calculated_credits`.\n */\n calculatedCredits: number\n /** Production cost in USD (provider-side, before markup) */\n baseCostUsd: number\n /** Per-kind breakdown — inputCredits/outputCredits for LLM, etc. All in cc. */\n breakdown: Record<string, number>\n /** True iff fallback pricing was used (currently LLM-only) */\n isFallback: boolean\n /** Markup applied (1.0 = catalog rate as-is) */\n markup: number\n}\n\nexport class UnknownModelError extends Error {\n constructor(public readonly modelId: string) {\n super(`Unknown model id: \"${modelId}\"`)\n this.name = \"UnknownModelError\"\n }\n}\n\nexport class CostUsageKindMismatchError extends Error {\n constructor(\n public readonly modelId: string,\n public readonly expected: string,\n public readonly got: string\n ) {\n super(\n `Model \"${modelId}\" is kind \"${expected}\", but received usage of kind \"${got}\"`\n )\n this.name = \"CostUsageKindMismatchError\"\n }\n}\n\nexport interface CalculateCostOptions {\n /**\n * App that's invoking the model. Routes per-app markup overrides\n * registered via `pricingRegistry.registerApp(appId, ...)`. When\n * omitted, core defaults apply.\n */\n appId?: string\n}\n\n/**\n * Computes credit + USD cost for a model run.\n *\n * Throws `UnknownModelError` for ids not in any catalog (LLM has its own\n * fallback path inside `calculateLLMCreditCost` — this surface preserves\n * that for back-compat).\n *\n * Throws `CostUsageKindMismatchError` if `usage.kind` doesn't match the\n * resolved model's kind (data integrity guard).\n *\n * Image / video / audio credits are derived at call time via the\n * pricing registry (`provider_cost × category-markup`). LLM keeps its\n * own per-model markup table inside `calculateLLMCreditCost` —\n * collapsing that follows in W6b.\n */\nexport function calculateCost(\n modelId: string,\n usage: CostUsage,\n opts: CalculateCostOptions = {}\n): CostResult {\n // LLM has a fallback path that returns valid pricing even for unknown\n // ids (preserves the orchestrator's existing tolerance). Other kinds\n // throw for unknowns.\n if (usage.kind === \"llm\") {\n const llmResult: LLMCreditCostResult = calculateLLMCreditCost(modelId, {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n cacheReadInputTokens: usage.cacheReadInputTokens,\n cacheCreationInputTokens: usage.cacheCreationInputTokens,\n })\n const resolved = getModel(modelId)\n const canonicalId =\n resolved && resolved.kind === \"llm\" ? resolved.canonicalId : modelId\n return {\n kind: \"llm\",\n modelId,\n canonicalId,\n credits: llmResult.credits,\n calculatedCredits: llmResult.calculatedCredits,\n baseCostUsd: llmResult.productionCost,\n breakdown: {\n inputCredits: llmResult.inputCredits,\n outputCredits: llmResult.outputCredits,\n cacheReadCredits: llmResult.cacheReadCredits,\n cacheWriteCredits: llmResult.cacheWriteCredits,\n },\n isFallback: llmResult.isFallback,\n markup: llmResult.markup,\n }\n }\n\n const resolved = getModel(modelId)\n if (!resolved) throw new UnknownModelError(modelId)\n // `voice` is structurally audio for billing purposes (MiniMax voice\n // metadata billed via per-character output). Accept `audio` usage on\n // voice models so the per-kind branches below can pattern-match.\n const expectedUsageKind: CostUsage[\"kind\"] =\n resolved.kind === \"voice\" ? \"audio\" : resolved.kind\n if (expectedUsageKind !== usage.kind) {\n // Pass `expectedUsageKind` (not `resolved.kind`) so the error message\n // accurately says \"audio\" rather than \"voice\" when a voice model is\n // billed — the caller must supply audio usage, not voice usage.\n throw new CostUsageKindMismatchError(modelId, expectedUsageKind, usage.kind)\n }\n\n if (resolved.kind === \"image\") {\n // `usage.kind` is \"image\" here (guarded above) but TS won't cross-narrow\n // it from `resolved.kind`, so check explicitly before reading numOutputs.\n const numOutputs = Math.max(\n 1,\n usage.kind === \"image\" ? (usage.numOutputs ?? 1) : 1\n )\n const baseCostUsd = resolved.def.pricing.baseCost * numOutputs\n const perOutputCredits = computeCenticredits({\n baseCostUsd: resolved.def.pricing.baseCost,\n category: \"image\",\n overrideCreditCost: resolved.def.pricing.overrideCreditCost,\n appId: opts.appId,\n })\n const credits = perOutputCredits * numOutputs\n // Formula-only (ignores override) — for `usage_events.calculated_credits`.\n const formulaPerOutput = computeCenticredits({\n baseCostUsd: resolved.def.pricing.baseCost,\n category: \"image\",\n appId: opts.appId,\n })\n const calculatedCredits = formulaPerOutput * numOutputs\n const markup = pricingRegistry.getMarkup(\"image\", opts.appId)\n return {\n kind: \"image\",\n modelId,\n canonicalId: modelId,\n credits,\n calculatedCredits,\n baseCostUsd,\n breakdown: {\n perOutputCredits,\n numOutputs,\n },\n isFallback: false,\n markup,\n }\n }\n\n if (resolved.kind === \"video\") {\n if (usage.kind !== \"video\") {\n throw new CostUsageKindMismatchError(modelId, \"video\", usage.kind)\n }\n const pricing = resolved.def.pricing\n // Provider-side multipliers — re-applied to BOTH the provider cost\n // (what we pay) AND the derived credit cost (so margin holds).\n const mult = pricing.multipliers\n const resMult =\n usage.resolution && mult?.resolution\n ? (mult.resolution[usage.resolution] ?? 1.0)\n : 1.0\n const durMult =\n usage.duration && mult?.duration\n ? (mult.duration[usage.duration] ?? 1.0)\n : 1.0\n const modMult =\n usage.mode && mult?.mode ? (mult.mode[usage.mode] ?? 1.0) : 1.0\n const variantMultiplier = resMult * durMult * modMult\n const baseCostUsd = pricing.baseCost * variantMultiplier\n const perClipCredits = computeCenticredits({\n baseCostUsd: pricing.baseCost,\n category: \"video\",\n overrideCreditCost: pricing.overrideCreditCost,\n appId: opts.appId,\n })\n const credits = Math.ceil(perClipCredits * variantMultiplier)\n const formulaPerClip = computeCenticredits({\n baseCostUsd: pricing.baseCost,\n category: \"video\",\n appId: opts.appId,\n })\n const calculatedCredits = Math.ceil(formulaPerClip * variantMultiplier)\n const markup = pricingRegistry.getMarkup(\"video\", opts.appId)\n return {\n kind: \"video\",\n modelId,\n canonicalId: modelId,\n credits,\n calculatedCredits,\n baseCostUsd,\n breakdown: {\n perClipCredits,\n resolutionMultiplier: resMult,\n durationMultiplier: durMult,\n modeMultiplier: modMult,\n variantMultiplier,\n },\n isFallback: false,\n markup,\n }\n }\n\n // Audio (and voice, delegated as audio — see expectedUsageKind above).\n if (usage.kind !== \"audio\") {\n throw new CostUsageKindMismatchError(modelId, \"audio\", usage.kind)\n }\n\n if (resolved.kind === \"voice\") {\n // Voice rows are metadata; delegate to the provider's default audio model.\n const provider = resolved.voice.provider\n const delegateModelId = VOICE_PROVIDER_DEFAULT_MODEL[provider]\n if (!delegateModelId) throw new UnknownModelError(modelId)\n const delegateResult = calculateCost(delegateModelId, usage, opts)\n return {\n ...delegateResult,\n modelId,\n canonicalId: delegateModelId,\n }\n }\n\n // Only `audio` remains (llm returned at top; image/video/voice handled\n // above). Narrow explicitly so `.def` is type-safe.\n if (resolved.kind !== \"audio\") throw new UnknownModelError(modelId)\n const audioPricing = resolved.def.pricing\n // Map the provider's billing unit to a quantity of billable units.\n // The catalog DATA uses `per_1k_chars` (chars ÷ 1000) and `per_minute`\n // (whole minutes, rounded UP to match provider invoicing). `per_character`\n // / `per_second` are handled too so a future data migration to those units\n // keeps working. NOTE: do not switch on the zod enum value alone — the\n // audio schema enum is stale (`per_character|per_second`) while the data\n // still ships `per_1k_chars|per_minute`; trusting the enum bills 0.\n const billingUnit = audioPricing.billingUnit as string\n let quantity: number\n switch (billingUnit) {\n case \"per_1k_chars\":\n quantity = Math.max(0, usage.characters ?? 0) / 1000\n break\n case \"per_character\":\n quantity = Math.max(0, usage.characters ?? 0)\n break\n case \"per_minute\":\n quantity = Math.ceil(Math.max(0, usage.seconds ?? 0) / 60)\n break\n case \"per_second\":\n default:\n quantity = Math.max(0, usage.seconds ?? 0)\n break\n }\n const baseCostUsd = audioPricing.baseCost * quantity\n const perUnitCredits = computeCenticredits({\n baseCostUsd: audioPricing.baseCost,\n category: \"audio\",\n overrideCreditCost: audioPricing.overrideCreditCost,\n appId: opts.appId,\n })\n // Per-call floor (1 cc) so a non-empty call never rounds to 0; a genuinely\n // empty call (quantity 0, e.g. empty-string TTS) bills nothing.\n const credits =\n quantity > 0 ? Math.max(1, Math.ceil(perUnitCredits * quantity)) : 0\n const formulaPerUnit = computeCenticredits({\n baseCostUsd: audioPricing.baseCost,\n category: \"audio\",\n appId: opts.appId,\n })\n const calculatedCredits =\n quantity > 0 ? Math.max(1, Math.ceil(formulaPerUnit * quantity)) : 0\n const markup = pricingRegistry.getMarkup(\"audio\", opts.appId)\n return {\n kind: \"audio\",\n modelId,\n canonicalId: modelId,\n credits,\n calculatedCredits,\n baseCostUsd,\n breakdown: {\n perUnitCredits,\n quantity,\n },\n isFallback: false,\n markup,\n }\n}\n\n// Thin ergonomic wrappers around `calculateCost`. Two reasons they exist:\n// 1. Callers with a known kind don't want to construct the full union.\n// 2. The kind/usage union is a `calculateCost` implementation detail —\n// wrapper types are narrower and easier to read at call sites.\n\nexport function calculateLLMCost(\n modelId: string,\n usage: {\n inputTokens: number\n outputTokens: number\n cacheReadInputTokens?: number\n cacheCreationInputTokens?: number\n },\n opts?: CalculateCostOptions\n): CostResult {\n return calculateCost(modelId, { kind: \"llm\", ...usage }, opts)\n}\n\nexport function calculateImageCost(\n modelId: string,\n usage: { numOutputs?: number },\n opts?: CalculateCostOptions\n): CostResult {\n return calculateCost(modelId, { kind: \"image\", ...usage }, opts)\n}\n\nexport function calculateVideoCost(\n modelId: string,\n usage: { resolution?: string; duration?: number; mode?: string },\n opts?: CalculateCostOptions\n): CostResult {\n return calculateCost(modelId, { kind: \"video\", ...usage }, opts)\n}\n\nexport function calculateAudioCost(\n modelId: string,\n usage: { characters?: number; seconds?: number },\n opts?: CalculateCostOptions\n): CostResult {\n return calculateCost(modelId, { kind: \"audio\", ...usage }, opts)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cost/index.ts"],"names":["resolved","baseCostUsd","credits","calculatedCredits","markup"],"mappings":"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","file":"chunk-GCDMRPDR.mjs","sourcesContent":["/**\n * Cost dispatcher — computes credit cost + production USD cost for any\n * model id, regardless of kind. Single entry point used by orchestrator,\n * billing audits, and (eventually) the metered MCP gen layer.\n *\n * Per-kind formulas:\n * - LLM → reuses `calculateLLMCreditCost` (token math + cache + markup)\n * - Image → `creditCost × numOutputs`\n * - Video → `creditCost × multipliers[resolution|duration|mode]`\n * - Audio → `creditCost × (characters or seconds)` per `billingUnit`\n */\n\nimport {\n calculateLLMCreditCost,\n type LLMCreditCostResult,\n} from \"../llm/index.js\"\nimport { getModel } from \"../registry/index.js\"\nimport { computeCenticredits, pricingRegistry } from \"../pricing/index.js\"\n\n/**\n * Voice metadata → default audio model the dispatcher bills through.\n *\n * Voices are render-targets, not priced units. A MiniMax voice can be\n * played through `minimax/speech-02-hd` OR `…-turbo`; an ElevenLabs\n * voice through any of their model tiers. We default to the cheapest\n * model per provider so a drive-by voice-id call doesn't over-bill.\n * Callers wanting HD / premium-tier pricing should pass the audio\n * model id directly with the voice as metadata — see\n * `text-to-speech.tool.ts` for the canonical pattern.\n *\n * Add a new provider here when a new voice catalog lands (e.g.\n * `ELEVENLABS_VOICES` if/when we surface their voice IDs).\n */\nconst VOICE_PROVIDER_DEFAULT_MODEL: Record<string, string> = {\n minimax: \"minimax/speech-02-turbo\",\n elevenlabs: \"elevenlabs/flash-v2.5\",\n}\n\nexport type CostUsage =\n | {\n kind: \"llm\"\n inputTokens: number\n outputTokens: number\n cacheReadInputTokens?: number\n cacheCreationInputTokens?: number\n }\n | { kind: \"image\"; numOutputs?: number }\n | {\n kind: \"video\"\n resolution?: string\n duration?: number\n mode?: string\n }\n | { kind: \"audio\"; characters?: number; seconds?: number }\n\nexport interface CostResult {\n kind: \"llm\" | \"image\" | \"video\" | \"audio\"\n modelId: string\n /** Canonical model id after alias resolution (LLM only; same as modelId for media) */\n canonicalId: string\n /**\n * Total **centicredits** to charge (1 displayed credit = 100 cc).\n * Honors per-model overrides. Feed straight into the ledger — the\n * `credit_transactions.credits` column stores cc, so no `× 100`\n * conversion at the call site. Format for display with\n * `displayCredits(cc) → cr`.\n */\n credits: number\n /**\n * Centicredits the pure formula (provider cost × category markup)\n * would have charged, independent of any per-model override. Equal\n * to `credits` when no override is in play. Surfaced so\n * reconciliation can diff \"what we did\" vs \"what the formula said\"\n * without recomputing — persisted to `usage_events.calculated_credits`.\n */\n calculatedCredits: number\n /** Production cost in USD (provider-side, before markup) */\n baseCostUsd: number\n /** Per-kind breakdown — inputCredits/outputCredits for LLM, etc. All in cc. */\n breakdown: Record<string, number>\n /** True iff fallback pricing was used (currently LLM-only) */\n isFallback: boolean\n /** Markup applied (1.0 = catalog rate as-is) */\n markup: number\n}\n\nexport class UnknownModelError extends Error {\n constructor(public readonly modelId: string) {\n super(`Unknown model id: \"${modelId}\"`)\n this.name = \"UnknownModelError\"\n }\n}\n\nexport class CostUsageKindMismatchError extends Error {\n constructor(\n public readonly modelId: string,\n public readonly expected: string,\n public readonly got: string\n ) {\n super(\n `Model \"${modelId}\" is kind \"${expected}\", but received usage of kind \"${got}\"`\n )\n this.name = \"CostUsageKindMismatchError\"\n }\n}\n\nexport interface CalculateCostOptions {\n /**\n * App that's invoking the model. Routes per-app markup overrides\n * registered via `pricingRegistry.registerApp(appId, ...)`. When\n * omitted, core defaults apply.\n */\n appId?: string\n}\n\n/**\n * Computes credit + USD cost for a model run.\n *\n * Throws `UnknownModelError` for ids not in any catalog (LLM has its own\n * fallback path inside `calculateLLMCreditCost` — this surface preserves\n * that for back-compat).\n *\n * Throws `CostUsageKindMismatchError` if `usage.kind` doesn't match the\n * resolved model's kind (data integrity guard).\n *\n * Image / video / audio credits are derived at call time via the\n * pricing registry (`provider_cost × category-markup`). LLM keeps its\n * own per-model markup table inside `calculateLLMCreditCost` —\n * collapsing that follows in W6b.\n */\nexport function calculateCost(\n modelId: string,\n usage: CostUsage,\n opts: CalculateCostOptions = {}\n): CostResult {\n // LLM has a fallback path that returns valid pricing even for unknown\n // ids (preserves the orchestrator's existing tolerance). Other kinds\n // throw for unknowns.\n if (usage.kind === \"llm\") {\n const llmResult: LLMCreditCostResult = calculateLLMCreditCost(modelId, {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n cacheReadInputTokens: usage.cacheReadInputTokens,\n cacheCreationInputTokens: usage.cacheCreationInputTokens,\n })\n const resolved = getModel(modelId)\n const canonicalId =\n resolved && resolved.kind === \"llm\" ? resolved.canonicalId : modelId\n return {\n kind: \"llm\",\n modelId,\n canonicalId,\n credits: llmResult.credits,\n calculatedCredits: llmResult.calculatedCredits,\n baseCostUsd: llmResult.productionCost,\n breakdown: {\n inputCredits: llmResult.inputCredits,\n outputCredits: llmResult.outputCredits,\n cacheReadCredits: llmResult.cacheReadCredits,\n cacheWriteCredits: llmResult.cacheWriteCredits,\n },\n isFallback: llmResult.isFallback,\n markup: llmResult.markup,\n }\n }\n\n const resolved = getModel(modelId)\n if (!resolved) throw new UnknownModelError(modelId)\n // `voice` is structurally audio for billing purposes (MiniMax voice\n // metadata billed via per-character output). Accept `audio` usage on\n // voice models so the per-kind branches below can pattern-match.\n const expectedUsageKind: CostUsage[\"kind\"] =\n resolved.kind === \"voice\" ? \"audio\" : resolved.kind\n if (expectedUsageKind !== usage.kind) {\n // Pass `expectedUsageKind` (not `resolved.kind`) so the error message\n // accurately says \"audio\" rather than \"voice\" when a voice model is\n // billed — the caller must supply audio usage, not voice usage.\n throw new CostUsageKindMismatchError(modelId, expectedUsageKind, usage.kind)\n }\n\n if (resolved.kind === \"image\") {\n // `usage.kind` is \"image\" here (guarded above) but TS won't cross-narrow\n // it from `resolved.kind`, so check explicitly before reading numOutputs.\n const numOutputs = Math.max(\n 1,\n usage.kind === \"image\" ? (usage.numOutputs ?? 1) : 1\n )\n const baseCostUsd = resolved.def.pricing.baseCost * numOutputs\n const perOutputCredits = computeCenticredits({\n baseCostUsd: resolved.def.pricing.baseCost,\n category: \"image\",\n overrideCreditCost: resolved.def.pricing.overrideCreditCost,\n appId: opts.appId,\n })\n const credits = perOutputCredits * numOutputs\n // Formula-only (ignores override) — for `usage_events.calculated_credits`.\n const formulaPerOutput = computeCenticredits({\n baseCostUsd: resolved.def.pricing.baseCost,\n category: \"image\",\n appId: opts.appId,\n })\n const calculatedCredits = formulaPerOutput * numOutputs\n const markup = pricingRegistry.getMarkup(\"image\", opts.appId)\n return {\n kind: \"image\",\n modelId,\n canonicalId: modelId,\n credits,\n calculatedCredits,\n baseCostUsd,\n breakdown: {\n perOutputCredits,\n numOutputs,\n },\n isFallback: false,\n markup,\n }\n }\n\n if (resolved.kind === \"video\") {\n if (usage.kind !== \"video\") {\n throw new CostUsageKindMismatchError(modelId, \"video\", usage.kind)\n }\n const pricing = resolved.def.pricing\n // Provider-side multipliers — re-applied to BOTH the provider cost\n // (what we pay) AND the derived credit cost (so margin holds).\n const mult = pricing.multipliers\n const resMult =\n usage.resolution && mult?.resolution\n ? (mult.resolution[usage.resolution] ?? 1.0)\n : 1.0\n const durMult =\n usage.duration && mult?.duration\n ? (mult.duration[usage.duration] ?? 1.0)\n : 1.0\n const modMult =\n usage.mode && mult?.mode ? (mult.mode[usage.mode] ?? 1.0) : 1.0\n const variantMultiplier = resMult * durMult * modMult\n const baseCostUsd = pricing.baseCost * variantMultiplier\n const perClipCredits = computeCenticredits({\n baseCostUsd: pricing.baseCost,\n category: \"video\",\n overrideCreditCost: pricing.overrideCreditCost,\n appId: opts.appId,\n })\n const credits = Math.ceil(perClipCredits * variantMultiplier)\n const formulaPerClip = computeCenticredits({\n baseCostUsd: pricing.baseCost,\n category: \"video\",\n appId: opts.appId,\n })\n const calculatedCredits = Math.ceil(formulaPerClip * variantMultiplier)\n const markup = pricingRegistry.getMarkup(\"video\", opts.appId)\n return {\n kind: \"video\",\n modelId,\n canonicalId: modelId,\n credits,\n calculatedCredits,\n baseCostUsd,\n breakdown: {\n perClipCredits,\n resolutionMultiplier: resMult,\n durationMultiplier: durMult,\n modeMultiplier: modMult,\n variantMultiplier,\n },\n isFallback: false,\n markup,\n }\n }\n\n // Audio (and voice, delegated as audio — see expectedUsageKind above).\n if (usage.kind !== \"audio\") {\n throw new CostUsageKindMismatchError(modelId, \"audio\", usage.kind)\n }\n\n if (resolved.kind === \"voice\") {\n // Voice rows are metadata; delegate to the provider's default audio model.\n const provider = resolved.voice.provider\n const delegateModelId = VOICE_PROVIDER_DEFAULT_MODEL[provider]\n if (!delegateModelId) throw new UnknownModelError(modelId)\n const delegateResult = calculateCost(delegateModelId, usage, opts)\n return {\n ...delegateResult,\n modelId,\n canonicalId: delegateModelId,\n }\n }\n\n // Only `audio` remains (llm returned at top; image/video/voice handled\n // above). Narrow explicitly so `.def` is type-safe.\n if (resolved.kind !== \"audio\") throw new UnknownModelError(modelId)\n const audioPricing = resolved.def.pricing\n // Map the provider's billing unit to a quantity of billable units.\n // The catalog DATA uses `per_1k_chars` (chars ÷ 1000) and `per_minute`\n // (whole minutes, rounded UP to match provider invoicing). `per_character`\n // / `per_second` are handled too so a future data migration to those units\n // keeps working. NOTE: do not switch on the zod enum value alone — the\n // audio schema enum is stale (`per_character|per_second`) while the data\n // still ships `per_1k_chars|per_minute`; trusting the enum bills 0.\n const billingUnit = audioPricing.billingUnit as string\n let quantity: number\n switch (billingUnit) {\n case \"per_1k_chars\":\n quantity = Math.max(0, usage.characters ?? 0) / 1000\n break\n case \"per_character\":\n quantity = Math.max(0, usage.characters ?? 0)\n break\n case \"per_minute\":\n quantity = Math.ceil(Math.max(0, usage.seconds ?? 0) / 60)\n break\n case \"per_second\":\n default:\n quantity = Math.max(0, usage.seconds ?? 0)\n break\n }\n const baseCostUsd = audioPricing.baseCost * quantity\n const perUnitCredits = computeCenticredits({\n baseCostUsd: audioPricing.baseCost,\n category: \"audio\",\n overrideCreditCost: audioPricing.overrideCreditCost,\n appId: opts.appId,\n })\n // Per-call floor (1 cc) so a non-empty call never rounds to 0; a genuinely\n // empty call (quantity 0, e.g. empty-string TTS) bills nothing.\n const credits =\n quantity > 0 ? Math.max(1, Math.ceil(perUnitCredits * quantity)) : 0\n const formulaPerUnit = computeCenticredits({\n baseCostUsd: audioPricing.baseCost,\n category: \"audio\",\n appId: opts.appId,\n })\n const calculatedCredits =\n quantity > 0 ? Math.max(1, Math.ceil(formulaPerUnit * quantity)) : 0\n const markup = pricingRegistry.getMarkup(\"audio\", opts.appId)\n return {\n kind: \"audio\",\n modelId,\n canonicalId: modelId,\n credits,\n calculatedCredits,\n baseCostUsd,\n breakdown: {\n perUnitCredits,\n quantity,\n },\n isFallback: false,\n markup,\n }\n}\n\n// Thin ergonomic wrappers around `calculateCost`. Two reasons they exist:\n// 1. Callers with a known kind don't want to construct the full union.\n// 2. The kind/usage union is a `calculateCost` implementation detail —\n// wrapper types are narrower and easier to read at call sites.\n\nexport function calculateLLMCost(\n modelId: string,\n usage: {\n inputTokens: number\n outputTokens: number\n cacheReadInputTokens?: number\n cacheCreationInputTokens?: number\n },\n opts?: CalculateCostOptions\n): CostResult {\n return calculateCost(modelId, { kind: \"llm\", ...usage }, opts)\n}\n\nexport function calculateImageCost(\n modelId: string,\n usage: { numOutputs?: number },\n opts?: CalculateCostOptions\n): CostResult {\n return calculateCost(modelId, { kind: \"image\", ...usage }, opts)\n}\n\nexport function calculateVideoCost(\n modelId: string,\n usage: { resolution?: string; duration?: number; mode?: string },\n opts?: CalculateCostOptions\n): CostResult {\n return calculateCost(modelId, { kind: \"video\", ...usage }, opts)\n}\n\nexport function calculateAudioCost(\n modelId: string,\n usage: { characters?: number; seconds?: number },\n opts?: CalculateCostOptions\n): CostResult {\n return calculateCost(modelId, { kind: \"audio\", ...usage }, opts)\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { modelHasTag } from './chunk-WTHHXXIK.mjs';
|
|
2
2
|
import { getMergedOverlay } from './chunk-H6JUTF3U.mjs';
|
|
3
|
-
import { resolvePricing, resolveAlias, LLM_PRICING_CATALOG } from './chunk-
|
|
3
|
+
import { resolvePricing, resolveAlias, LLM_PRICING_CATALOG } from './chunk-FCPS2VGK.mjs';
|
|
4
4
|
import { IMAGE_MODEL_CATALOG } from './chunk-2LWYZOWB.mjs';
|
|
5
5
|
import { VIDEO_MODEL_CATALOG } from './chunk-IJZ4XPO2.mjs';
|
|
6
6
|
import { AUDIO_MODEL_CATALOG } from './chunk-WRUWNKDB.mjs';
|
|
@@ -179,5 +179,5 @@ function resolveAlias2(id) {
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
export { getModel, getModelsByProvider, getStaticModelProvider, isAgentVisible, listModels, resolveAlias2 as resolveAlias };
|
|
182
|
-
//# sourceMappingURL=chunk-
|
|
183
|
-
//# sourceMappingURL=chunk-
|
|
182
|
+
//# sourceMappingURL=chunk-S74S3Q7Z.mjs.map
|
|
183
|
+
//# sourceMappingURL=chunk-S74S3Q7Z.mjs.map
|