@agentproto/model-catalog 0.2.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.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/dist/access/index.d.ts +30 -0
  4. package/dist/access/index.mjs +4 -0
  5. package/dist/access/index.mjs.map +1 -0
  6. package/dist/audio/index.d.ts +84 -0
  7. package/dist/audio/index.mjs +3 -0
  8. package/dist/audio/index.mjs.map +1 -0
  9. package/dist/audio-BzVF_wke.d.ts +92 -0
  10. package/dist/base-BNHcMifc.d.ts +109 -0
  11. package/dist/byok/index.d.ts +33 -0
  12. package/dist/byok/index.mjs +3 -0
  13. package/dist/byok/index.mjs.map +1 -0
  14. package/dist/catalog-aQHd559b.d.ts +594 -0
  15. package/dist/chunk-2LWYZOWB.mjs +643 -0
  16. package/dist/chunk-2LWYZOWB.mjs.map +1 -0
  17. package/dist/chunk-CINXNTU3.mjs +134 -0
  18. package/dist/chunk-CINXNTU3.mjs.map +1 -0
  19. package/dist/chunk-F7OEHYUI.mjs +187 -0
  20. package/dist/chunk-F7OEHYUI.mjs.map +1 -0
  21. package/dist/chunk-GH7PB5FB.mjs +183 -0
  22. package/dist/chunk-GH7PB5FB.mjs.map +1 -0
  23. package/dist/chunk-H6JUTF3U.mjs +33 -0
  24. package/dist/chunk-H6JUTF3U.mjs.map +1 -0
  25. package/dist/chunk-HEDDSOZF.mjs +47 -0
  26. package/dist/chunk-HEDDSOZF.mjs.map +1 -0
  27. package/dist/chunk-HRRG2RZO.mjs +116 -0
  28. package/dist/chunk-HRRG2RZO.mjs.map +1 -0
  29. package/dist/chunk-IJZ4XPO2.mjs +606 -0
  30. package/dist/chunk-IJZ4XPO2.mjs.map +1 -0
  31. package/dist/chunk-IORIAFK2.mjs +227 -0
  32. package/dist/chunk-IORIAFK2.mjs.map +1 -0
  33. package/dist/chunk-OHAMH3ZE.mjs +2629 -0
  34. package/dist/chunk-OHAMH3ZE.mjs.map +1 -0
  35. package/dist/chunk-QHELXPSL.mjs +85 -0
  36. package/dist/chunk-QHELXPSL.mjs.map +1 -0
  37. package/dist/chunk-SGJR6ZQH.mjs +1230 -0
  38. package/dist/chunk-SGJR6ZQH.mjs.map +1 -0
  39. package/dist/chunk-WRUWNKDB.mjs +521 -0
  40. package/dist/chunk-WRUWNKDB.mjs.map +1 -0
  41. package/dist/chunk-WTHHXXIK.mjs +366 -0
  42. package/dist/chunk-WTHHXXIK.mjs.map +1 -0
  43. package/dist/chunk-XFDXTFV3.mjs +28 -0
  44. package/dist/chunk-XFDXTFV3.mjs.map +1 -0
  45. package/dist/cost/index.d.ts +114 -0
  46. package/dist/cost/index.mjs +13 -0
  47. package/dist/cost/index.mjs.map +1 -0
  48. package/dist/curation/index.d.ts +98 -0
  49. package/dist/curation/index.mjs +13 -0
  50. package/dist/curation/index.mjs.map +1 -0
  51. package/dist/evaluate-DisH3H7u.d.ts +84 -0
  52. package/dist/image/index.d.ts +79 -0
  53. package/dist/image/index.mjs +3 -0
  54. package/dist/image/index.mjs.map +1 -0
  55. package/dist/index-BICjPG8H.d.ts +132 -0
  56. package/dist/index-D8nL3fPZ.d.ts +171 -0
  57. package/dist/index.d.ts +94 -0
  58. package/dist/index.mjs +33 -0
  59. package/dist/index.mjs.map +1 -0
  60. package/dist/llm/index.d.ts +48 -0
  61. package/dist/llm/index.mjs +4 -0
  62. package/dist/llm/index.mjs.map +1 -0
  63. package/dist/overlay/index.d.ts +67 -0
  64. package/dist/overlay/index.mjs +3 -0
  65. package/dist/overlay/index.mjs.map +1 -0
  66. package/dist/picker/index.d.ts +11 -0
  67. package/dist/picker/index.mjs +26 -0
  68. package/dist/picker/index.mjs.map +1 -0
  69. package/dist/pricing/index.d.ts +106 -0
  70. package/dist/pricing/index.mjs +3 -0
  71. package/dist/pricing/index.mjs.map +1 -0
  72. package/dist/providers/index.d.ts +78 -0
  73. package/dist/providers/index.mjs +237 -0
  74. package/dist/providers/index.mjs.map +1 -0
  75. package/dist/schema/index.d.ts +627 -0
  76. package/dist/schema/index.mjs +4 -0
  77. package/dist/schema/index.mjs.map +1 -0
  78. package/dist/schema/voice.d.ts +66 -0
  79. package/dist/schema/voice.mjs +3 -0
  80. package/dist/schema/voice.mjs.map +1 -0
  81. package/dist/video/index.d.ts +78 -0
  82. package/dist/video/index.mjs +3 -0
  83. package/dist/video/index.mjs.map +1 -0
  84. package/dist/voice/index.d.ts +1300 -0
  85. package/dist/voice/index.mjs +4 -0
  86. package/dist/voice/index.mjs.map +1 -0
  87. package/package.json +137 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/llm/openrouter-routes.generated.ts","../src/llm/catalog.ts","../src/llm/defaults.ts"],"names":[],"mappings":"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","file":"chunk-OHAMH3ZE.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","/**\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\"\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\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\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 // ── 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} 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 * 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","/**\n * Curated, SDK-ready LLM model ids.\n *\n * Centralizes the version-specific provider ids used at runtime so call\n * sites stop carrying string literals. Pricing for each is resolved\n * automatically through `MODEL_ALIASES` in `catalog.ts` (e.g.\n * `claude-sonnet-4-6` → `claude-sonnet-4-5`).\n *\n * Update one constant here when bumping the platform-wide default —\n * every workflow step and operator config picks up the new id with a\n * single rebuild.\n */\n\n/** Fast workhorse for content workflows (outline, post, sections). */\nexport const WORKFLOW_FAST_MODEL = \"claude-sonnet-4-6\" as const\n\n/** Premium tier for high-stakes generation (rarely used in workflows). */\nexport const WORKFLOW_PREMIUM_MODEL = \"claude-opus-4-6\" as const\n\n/** Cheap-and-quick for short outputs like titles. */\nexport const WORKFLOW_TINY_MODEL = \"claude-haiku-4-5-20251001\" as const\n\n/**\n * Models eligible for operator agents (an app). Keep in sync with the\n * agent-framework's model-provider config. The literal tuple drives the\n * `OperatorAgentModel` union type below.\n */\nexport const OPERATOR_AGENT_MODELS = [\n \"claude-opus-4-5\",\n \"claude-sonnet-4-5\",\n \"gemini-3.1-pro-preview\",\n] as const\n\nexport type OperatorAgentModel = (typeof OPERATOR_AGENT_MODELS)[number]\n\n/** Default operator model when no explicit choice is made. */\nexport const OPERATOR_DEFAULT_PREMIUM: OperatorAgentModel = \"claude-opus-4-5\"\nexport const OPERATOR_DEFAULT_STANDARD: OperatorAgentModel = \"claude-sonnet-4-5\"\nexport const OPERATOR_DEFAULT_GEMINI: OperatorAgentModel =\n \"gemini-3.1-pro-preview\"\n\n// ── Plan-tier → model lists ─────────────────────────────────────────────\n//\n// Catalog-canonical equivalent of agent-framework's `MODEL_TIERS`. Used\n// by per-app `AppPlanRegistry` files as the source list when a plan\n// surfaces \"all of the X tier\". Keeping this in the catalog keeps the\n// app registries declarative — they pick from `LLM_TIERS.plus` rather\n// than re-specifying ids.\n//\n// All ids resolve through `resolvePricing` (direct match → alias →\n// partial-prefix). Names are app-vocabulary-neutral; per-app registries\n// re-key as needed (`PaygoTier.nano` → `LLM_TIERS.nano`, etc.).\n\nexport const LLM_TIERS = {\n /** Cheap-and-quick. Single-model fallback. */\n nano: [\"mistral-small-creative-latest\"] as const,\n /** Low-cost, agentic-capable. Direct alt-providers. */\n mini: [\n \"MiniMax-M2.5\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2\",\n \"mistral-large-latest\",\n ] as const,\n /** Medium cost, fast inference + good general perf. OpenRouter-routed. */\n lite: [\n \"x-ai/grok-4-fast\",\n \"xiaomi/mimo-v2-flash\",\n \"google/gemini-3-flash-preview\",\n ] as const,\n /** High quality, premium features. Mix of direct + OpenRouter. */\n plus: [\n \"claude-sonnet-4-5\",\n \"gpt-4o\",\n \"kimi-k2.5\",\n \"deepseek/deepseek-v3.2\",\n ] as const,\n /** Top-tier, best performance. */\n pro: [\n \"claude-opus-4-5\",\n \"google/gemini-3.1-pro-preview\",\n \"kimi-k2-thinking\",\n ] as const,\n} as const\n\nexport type LlmTierName = keyof typeof LLM_TIERS\n"]}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * @agentproto/model-catalog v0.1.0
3
+ * Unified model catalog: LLM, image, video, audio entries + cost dispatcher + picker.
4
+ * Zod-only OSS core; @agstudio/model-catalog layers billing/access/BYOK on top.
5
+ */
6
+
7
+ // src/pricing/index.ts
8
+ var CREDIT_USD_RATE = 0.0108;
9
+ var CC_USD_RATE = CREDIT_USD_RATE / 100;
10
+ var DEFAULT_PRICING_MARKUP = {
11
+ image: 1.5,
12
+ video: 1.6,
13
+ audio: 1.5,
14
+ text: 2,
15
+ search: 2
16
+ };
17
+ var DEFAULT_PRICING_FLOORS = {
18
+ image: 1,
19
+ video: 1,
20
+ audio: 1,
21
+ text: 1,
22
+ search: 1
23
+ };
24
+ var PricingRegistry = class {
25
+ apps = /* @__PURE__ */ new Map();
26
+ registerApp(appId, overrides) {
27
+ this.apps.set(appId, overrides);
28
+ }
29
+ unregisterApp(appId) {
30
+ this.apps.delete(appId);
31
+ }
32
+ /**
33
+ * Remove all registered app overrides, restoring core defaults.
34
+ * Call in `afterEach` hooks to prevent cross-test contamination
35
+ * (the singleton persists across tests in the same Vitest worker).
36
+ */
37
+ reset() {
38
+ this.apps.clear();
39
+ }
40
+ getMarkup(category, appId) {
41
+ if (appId) {
42
+ const app = this.apps.get(appId);
43
+ const m = app?.markup[category];
44
+ if (m !== void 0) return m;
45
+ }
46
+ return DEFAULT_PRICING_MARKUP[category];
47
+ }
48
+ getFloor(category, appId) {
49
+ if (appId) {
50
+ const app = this.apps.get(appId);
51
+ const f = app?.floor[category];
52
+ if (f !== void 0) return f;
53
+ }
54
+ return DEFAULT_PRICING_FLOORS[category];
55
+ }
56
+ /** Resolve the full PricingMarkup for an app (with defaults filled in). */
57
+ resolve(appId) {
58
+ const markup = { ...DEFAULT_PRICING_MARKUP };
59
+ const floor = { ...DEFAULT_PRICING_FLOORS };
60
+ if (appId) {
61
+ const app = this.apps.get(appId);
62
+ if (app) {
63
+ Object.assign(markup, app.markup);
64
+ Object.assign(floor, app.floor);
65
+ }
66
+ }
67
+ return { markup, floor };
68
+ }
69
+ };
70
+ var pricingRegistry = new PricingRegistry();
71
+ function computeCenticredits(args) {
72
+ if (typeof args.overrideCreditCost === "number") {
73
+ return Math.max(
74
+ pricingRegistry.getFloor(args.category, args.appId),
75
+ args.overrideCreditCost
76
+ );
77
+ }
78
+ const markup = pricingRegistry.getMarkup(args.category, args.appId);
79
+ const floor = pricingRegistry.getFloor(args.category, args.appId);
80
+ return Math.max(floor, Math.ceil(args.baseCostUsd * markup / CC_USD_RATE));
81
+ }
82
+
83
+ export { CC_USD_RATE, CREDIT_USD_RATE, DEFAULT_PRICING_FLOORS, DEFAULT_PRICING_MARKUP, computeCenticredits, pricingRegistry };
84
+ //# sourceMappingURL=chunk-QHELXPSL.mjs.map
85
+ //# sourceMappingURL=chunk-QHELXPSL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pricing/index.ts"],"names":[],"mappings":"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","file":"chunk-QHELXPSL.mjs","sourcesContent":["/**\n * Pricing registry — single source of truth for the formula that turns\n * a provider's USD cost into centicredits charged to the user.\n *\n * centicredits = max(floor_cc, ceil(baseCost × markup / CC_USD_RATE))\n *\n * Unit: **centicredits (cc)** throughout. 1 displayed credit = 100 cc.\n * Internal ledger column (`credit_transactions.credits`) stores cc, so\n * dispatcher output flows straight into the ledger with no per-call\n * `× 100` conversion. UI surfaces format cc → displayed credits at the\n * render boundary via `displayCredits(cc) → cr`.\n *\n * Why a registry (not constants):\n * - The DEFAULTS work across apps. Most consumers (image gen, STT,\n * etc.) need exactly the same markup ratios regardless of which\n * app called them.\n * - But apps want overrides — one app might want a lower video markup\n * during a promo, another a higher one because their\n * users skew heavier. `registerApp(appId, { video: 1.8 })` slots\n * in without changing the catalog or the cost dispatcher.\n * - Per-model `overrideCreditCost` is the third lever — a specific\n * model can opt out of the formula entirely for strategic reasons\n * (subsidized adoption, partner pricing).\n *\n * Lever priority (highest to lowest):\n * 1. `model.overrideCreditCost` — explicit cc-per-call, catalog entry\n * 2. app-scoped markup — `registerApp(appId, partial)`\n * 3. core default markup — `DEFAULT_PRICING_MARKUP`\n *\n * Currency: all provider rates are USD. 1 displayed credit = €0.01\n * retail ≈ $0.0108. Multi-currency selling prices live in per-app\n * plans-data — the markup formula itself stays USD-anchored.\n */\n\n/**\n * Conversion: USD ↔ displayed credit. 1 displayed credit = €0.01\n * retail at pack rate. Prefer `CC_USD_RATE` for credit math — it\n * matches the cc unit the dispatcher emits.\n */\nexport const CREDIT_USD_RATE = 0.0108\n/**\n * USD per centicredit. 1 cc = 1/100 of a displayed credit, so\n * `CC_USD_RATE = CREDIT_USD_RATE / 100`. Pre-computed once so the hot\n * `× markup / CC_USD_RATE` divide doesn't repeat the constant math.\n */\nexport const CC_USD_RATE = CREDIT_USD_RATE / 100\n\nexport type PricingCategory = \"image\" | \"video\" | \"audio\" | \"text\" | \"search\"\n\nexport interface PricingMarkup {\n /** Per-category markup applied to `baseCost` before USD→cc conversion. */\n markup: Partial<Record<PricingCategory, number>>\n /**\n * Minimum centicredits debited per action (protects against\n * fractional rounding). Default 1 cc = 0.01 displayed credit.\n */\n floor: Partial<Record<PricingCategory, number>>\n}\n\n/**\n * Core defaults — what every app gets if it doesn't register\n * overrides. Tuned for ~50%+ gross margin at pack-rate revenue.\n *\n * Adjusting these affects EVERY app — don't tweak without coordinating\n * across apps. Per-app drift goes through\n * `registerApp()`.\n */\nexport const DEFAULT_PRICING_MARKUP: Required<PricingMarkup[\"markup\"]> = {\n image: 1.5,\n video: 1.6,\n audio: 1.5,\n text: 2.0,\n search: 2.0,\n}\n\nexport const DEFAULT_PRICING_FLOORS: Required<PricingMarkup[\"floor\"]> = {\n image: 1,\n video: 1,\n audio: 1,\n text: 1,\n search: 1,\n}\n\n/**\n * Registry of app-scoped pricing overrides. Defaults flow through when\n * an app doesn't register; partial overrides merge per-category.\n */\nclass PricingRegistry {\n private apps = new Map<string, PricingMarkup>()\n\n registerApp(appId: string, overrides: PricingMarkup): void {\n this.apps.set(appId, overrides)\n }\n\n unregisterApp(appId: string): void {\n this.apps.delete(appId)\n }\n\n /**\n * Remove all registered app overrides, restoring core defaults.\n * Call in `afterEach` hooks to prevent cross-test contamination\n * (the singleton persists across tests in the same Vitest worker).\n */\n reset(): void {\n this.apps.clear()\n }\n\n getMarkup(category: PricingCategory, appId?: string): number {\n if (appId) {\n const app = this.apps.get(appId)\n const m = app?.markup[category]\n if (m !== undefined) return m\n }\n return DEFAULT_PRICING_MARKUP[category]\n }\n\n getFloor(category: PricingCategory, appId?: string): number {\n if (appId) {\n const app = this.apps.get(appId)\n const f = app?.floor[category]\n if (f !== undefined) return f\n }\n return DEFAULT_PRICING_FLOORS[category]\n }\n\n /** Resolve the full PricingMarkup for an app (with defaults filled in). */\n resolve(appId?: string): Required<PricingMarkup> {\n const markup = { ...DEFAULT_PRICING_MARKUP }\n const floor = { ...DEFAULT_PRICING_FLOORS }\n if (appId) {\n const app = this.apps.get(appId)\n if (app) {\n Object.assign(markup, app.markup)\n Object.assign(floor, app.floor)\n }\n }\n return { markup, floor }\n }\n}\n\nexport const pricingRegistry = new PricingRegistry()\n\n/**\n * Formula — turn provider USD cost into **centicredits**.\n *\n * Honors (in priority): `overrideCreditCost` → app markup → default\n * markup. Always applies the floor (in cc).\n *\n * Returns: cc per call (e.g. 53 cc = 0.53 displayed credits).\n */\nexport function computeCenticredits(args: {\n baseCostUsd: number\n category: PricingCategory\n /**\n * Per-model centicredit override. When set, bypasses the formula —\n * use for strategic deviations (subsidized adoption, partner\n * pricing). Unit: cc per call.\n */\n overrideCreditCost?: number\n appId?: string\n}): number {\n if (typeof args.overrideCreditCost === \"number\") {\n return Math.max(\n pricingRegistry.getFloor(args.category, args.appId),\n args.overrideCreditCost\n )\n }\n const markup = pricingRegistry.getMarkup(args.category, args.appId)\n const floor = pricingRegistry.getFloor(args.category, args.appId)\n return Math.max(floor, Math.ceil((args.baseCostUsd * markup) / CC_USD_RATE))\n}\n"]}