@agentproto/model-catalog 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -21
- package/dist/access/index.d.ts +5 -5
- package/dist/audio/index.d.ts +1 -1
- package/dist/{audio-BzVF_wke.d.ts → audio-DcaMq62v.d.ts} +1 -0
- package/dist/{base-BNHcMifc.d.ts → base-BJo3zO1J.d.ts} +21 -1
- package/dist/{catalog-aQHd559b.d.ts → catalog-BXCENAMh.d.ts} +62 -1
- package/dist/{chunk-GH7PB5FB.mjs → chunk-2LUKUCDK.mjs} +3 -3
- package/dist/{chunk-GH7PB5FB.mjs.map → chunk-2LUKUCDK.mjs.map} +1 -1
- package/dist/{chunk-IORIAFK2.mjs → chunk-7FUGMXL4.mjs} +4 -4
- package/dist/{chunk-IORIAFK2.mjs.map → chunk-7FUGMXL4.mjs.map} +1 -1
- package/dist/chunk-O7TXHU5W.mjs +52 -0
- package/dist/chunk-O7TXHU5W.mjs.map +1 -0
- package/dist/{chunk-OHAMH3ZE.mjs → chunk-OCVWDFVT.mjs} +81 -47
- package/dist/chunk-OCVWDFVT.mjs.map +1 -0
- package/dist/{chunk-CINXNTU3.mjs → chunk-PNWSXXRU.mjs} +3 -3
- package/dist/{chunk-CINXNTU3.mjs.map → chunk-PNWSXXRU.mjs.map} +1 -1
- package/dist/{chunk-F7OEHYUI.mjs → chunk-XEYWCRAJ.mjs} +21 -4
- package/dist/chunk-XEYWCRAJ.mjs.map +1 -0
- package/dist/cost/index.mjs +4 -3
- package/dist/curation/index.d.ts +4 -4
- package/dist/curation/index.mjs +4 -3
- package/dist/{evaluate-DisH3H7u.d.ts → evaluate-BWuQauRR.d.ts} +2 -2
- package/dist/{index-D8nL3fPZ.d.ts → index-BgW4RQUV.d.ts} +3 -3
- package/dist/{index-BICjPG8H.d.ts → index-DL-GcOAF.d.ts} +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.mjs +7 -6
- package/dist/index.mjs.map +1 -1
- package/dist/llm/index.d.ts +2 -2
- package/dist/llm/index.mjs +2 -1
- package/dist/overlay/index.d.ts +3 -3
- package/dist/picker/index.d.ts +6 -6
- package/dist/route-identity/index.d.ts +157 -0
- package/dist/route-identity/index.mjs +177 -0
- package/dist/route-identity/index.mjs.map +1 -0
- package/dist/schema/index.d.ts +9 -2
- package/dist/schema/index.mjs +1 -1
- package/package.json +7 -2
- package/dist/chunk-F7OEHYUI.mjs.map +0 -1
- package/dist/chunk-OHAMH3ZE.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schema/base.ts","../src/schema/llm.ts","../src/schema/image.ts","../src/schema/video.ts","../src/schema/audio.ts","../src/schema/index.ts"],"names":["z"],"mappings":"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","file":"chunk-F7OEHYUI.mjs","sourcesContent":["import { z } from \"zod\"\n\n/**\n * Shared schema fragments for every model catalog entry.\n *\n * `baseEntryShape` is spread into per-kind schemas so each kind stays a\n * plain `z.object` — required by `z.discriminatedUnion`.\n *\n * Mirrors the pattern in\n * `packages/agencies/registry-client/src/types.ts` (`basePayloadShape`).\n */\n\nexport const ModelKindSchema = z.enum([\"llm\", \"image\", \"video\", \"audio\"])\nexport type ModelKind = z.infer<typeof ModelKindSchema>\n\nexport const LifecycleSchema = z.enum([\"stable\", \"preview\", \"deprecated\"])\nexport type Lifecycle = z.infer<typeof LifecycleSchema>\n\n/**\n * `catalogPriceTier` — the model's intrinsic cost bucket. Distinct from\n * `subscriptionPlanTier` (the user's billing level) and `modelPreset`\n * (an app's per-conversation UX picker). Always qualify when discussing\n * tiers — bare `priceTier` / `tier` is ambiguous in this codebase.\n */\nexport const CatalogPriceTierSchema = z.enum([\"low\", \"mid\", \"high\", \"premium\"])\nexport type CatalogPriceTier = z.infer<typeof CatalogPriceTierSchema>\n\nexport const NsfwPolicySchema = z.enum([\"filtered\", \"permissive\", \"strict\"])\nexport type NsfwPolicy = z.infer<typeof NsfwPolicySchema>\n\n/**\n * Canonical model-provider registry — the single source of truth for the\n * `provider` field on every catalog entry. Adding a model on a new\n * provider means adding it here first, so a typo or an un-onboarded\n * provider is a validation/build error rather than a silently-broken\n * entry. `CatalogVoiceProviderSchema` is the voice-callable subset.\n */\nexport const CatalogProviderSchema = z.enum([\n \"anthropic\",\n \"assemblyai\",\n \"deepgram\",\n \"elevenlabs\",\n \"gemini-live\",\n \"google\",\n \"minimax\",\n \"mistral\",\n \"moonshot\",\n \"openai\",\n \"openai-realtime\",\n \"openrouter\",\n \"replicate\",\n])\nexport type CatalogProvider = z.infer<typeof CatalogProviderSchema>\n\nexport const baseEntryShape = {\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string().default(\"\"),\n provider: CatalogProviderSchema,\n providerId: z.string().min(1),\n agentVisible: z.boolean().default(false),\n lifecycle: LifecycleSchema.default(\"stable\"),\n tags: z.array(z.string()).default([]),\n catalogPriceTier: CatalogPriceTierSchema.default(\"mid\"),\n nsfwPolicy: NsfwPolicySchema.default(\"filtered\"),\n regions: z.array(z.string()).optional(),\n aliases: z.array(z.string()).optional(),\n} as const\n","import { z } from \"zod\"\nimport { baseEntryShape } from \"./base.js\"\n\n/**\n * LLM pricing — token-based. Mirrors the historical `LLMPricing` shape in\n * `packages/core/src/config/llm-pricing.ts` so the existing\n * `calculateLLMCreditCost` formula carries over verbatim.\n */\nexport const LlmPricingSchema = z.object({\n inputPer1M: z.number().nonnegative(),\n outputPer1M: z.number().nonnegative(),\n creditInputPer1M: z.number().nonnegative(),\n creditOutputPer1M: z.number().nonnegative(),\n cacheReadMultiplier: z.number().nonnegative().optional(),\n cacheWriteMultiplier: z.number().nonnegative().optional(),\n // Router (how we call the model) vs vendor (who made it). See\n // `LLMPricing` in ../llm/catalog.ts for the contract.\n provider: z.string().optional(),\n vendor: z.string().optional(),\n})\nexport type LlmPricing = z.infer<typeof LlmPricingSchema>\n\nexport const LLMEntrySchema = z.object({\n ...baseEntryShape,\n kind: z.literal(\"llm\"),\n pricing: LlmPricingSchema,\n contextWindow: z.number().int().positive().optional(),\n})\nexport type LLMEntry = z.infer<typeof LLMEntrySchema>\n","import { z } from \"zod\"\nimport { baseEntryShape } from \"./base.js\"\n\nexport const ImageCapabilitiesSchema = z.object({\n generate: z.boolean(),\n edit: z.boolean(),\n upscale: z.boolean().optional(),\n})\nexport type ImageCapabilities = z.infer<typeof ImageCapabilitiesSchema>\n\nexport const ImageReferenceImagesSchema = z.object({\n supported: z.boolean(),\n fieldName: z.enum([\"image_input\", \"input_images\", \"input_image\", \"none\"]),\n maxCount: z.number().int().nonnegative(),\n singular: z.boolean(),\n})\nexport type ImageReferenceImages = z.infer<typeof ImageReferenceImagesSchema>\n\nexport const ImageAspectRatioSchema = z.object({\n supported: z.array(z.string()).min(1),\n default: z.string(),\n})\nexport type ImageAspectRatio = z.infer<typeof ImageAspectRatioSchema>\n\n/**\n * Pricing inputs for a model entry.\n *\n * Credit math is **derived at call time** by `computeCenticredits()` from\n * `baseCost × category-markup`. The catalog only carries the\n * production-cost input. An entry can opt out of the formula via\n * `overrideCreditCost` (strategic subsidy / partner pricing) — used\n * sparingly so a category-wide tune stays a one-line change in\n * `pricing/index.ts`.\n *\n * `costPerImage` / `costTier` / `creditCost` are deprecated but kept\n * readable so production data + admin UI keep parsing. New entries\n * should not set them.\n */\nexport const ImagePricingSchema = z.object({\n costPerImage: z.number().nonnegative().optional(),\n costTier: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n billingUnit: z.literal(\"per_image\"),\n baseCost: z.number().nonnegative(),\n /** @deprecated Derived at call time. Kept for back-compat. */\n creditCost: z.number().nonnegative().optional(),\n /**\n * Strategic per-model override. When set, bypasses the formula and\n * the user is charged this many credits per output regardless of\n * provider cost or category markup.\n */\n overrideCreditCost: z.number().nonnegative().optional(),\n})\nexport type ImagePricing = z.infer<typeof ImagePricingSchema>\n\nexport const ImageEntrySchema = z.object({\n ...baseEntryShape,\n kind: z.literal(\"image\"),\n capabilities: ImageCapabilitiesSchema,\n referenceImages: ImageReferenceImagesSchema,\n aspectRatio: ImageAspectRatioSchema,\n output: z.enum([\"string\", \"array\"]),\n pricing: ImagePricingSchema,\n triggerWord: z.string().optional(),\n})\nexport type ImageEntry = z.infer<typeof ImageEntrySchema>\n","import { z } from \"zod\"\nimport { baseEntryShape } from \"./base.js\"\n\nexport const VideoCapabilitiesSchema = z.object({\n textToVideo: z.boolean(),\n imageToVideo: z.boolean(),\n subjectReference: z.boolean(),\n audio: z.boolean(),\n})\nexport type VideoCapabilities = z.infer<typeof VideoCapabilitiesSchema>\n\nexport const VideoResolutionSchema = z.enum([\n \"480p\",\n \"540p\",\n \"720p\",\n \"1080p\",\n \"1440p\",\n \"4k\",\n])\nexport type VideoResolution = z.infer<typeof VideoResolutionSchema>\n\n/**\n * Mirrors `CostMultipliers` from `the app integration-core`. Keys are\n * stringified so JSON round-trips cleanly.\n */\nexport const VideoCostMultipliersSchema = z.object({\n resolution: z.record(z.string(), z.number().positive()).optional(),\n duration: z.record(z.string(), z.number().positive()).optional(),\n mode: z.record(z.string(), z.number().positive()).optional(),\n})\nexport type VideoCostMultipliers = z.infer<typeof VideoCostMultipliersSchema>\n\nexport const VideoPricingSchema = z.object({\n costPerClip: z.number().nonnegative().optional(),\n costTier: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n billingUnit: z.enum([\"per_clip\", \"per_second\"]),\n baseCost: z.number().nonnegative(),\n baseCostUnit: z.string(),\n /** Provider-cost multipliers (resolution / duration / mode). */\n multipliers: VideoCostMultipliersSchema.optional(),\n /** @deprecated Derived at call time. */\n creditCost: z.number().nonnegative().optional(),\n /**\n * @deprecated Use `multipliers` (provider-side) + per-category markup\n * in `pricing-registry`. The credit multipliers used to be a parallel\n * structure; now the formula re-applies `multipliers` to the derived\n * credit count automatically.\n */\n creditMultipliers: VideoCostMultipliersSchema.optional(),\n /** Strategic per-model override — bypasses the formula. */\n overrideCreditCost: z.number().nonnegative().optional(),\n})\nexport type VideoPricing = z.infer<typeof VideoPricingSchema>\n\nexport const VideoEntrySchema = z.object({\n ...baseEntryShape,\n kind: z.literal(\"video\"),\n capabilities: VideoCapabilitiesSchema,\n maxDuration: z.number().positive(),\n supportedResolutions: z.array(VideoResolutionSchema).min(1),\n supportedAspectRatios: z.array(z.string()).min(1),\n pricing: VideoPricingSchema,\n})\nexport type VideoEntry = z.infer<typeof VideoEntrySchema>\n","import { z } from \"zod\"\nimport { baseEntryShape } from \"./base.js\"\n\n// Single source of truth for audio model capabilities — mirrors (and is\n// re-used by) the runtime `AudioModelDefinition` in `audio/catalog.ts`.\n// Modality is multi-valued boolean flags (`tts`/`stt`/`s2s`) — a model may\n// do more than one; `s2s` is a speech↔speech engine (distinct from a\n// tts+llm+stt cascade). Transport (`streaming`) is a SEPARATE axis.\nexport const AudioCapabilitiesSchema = z.object({\n tts: z.boolean().optional(),\n stt: z.boolean().optional(),\n s2s: z.boolean().optional(),\n languages: z.array(z.string()),\n voiceCloning: z.boolean().optional(),\n streaming: z.boolean().optional(),\n timestamps: z.boolean().optional(),\n diarization: z.boolean().optional(),\n languageDetection: z.boolean().optional(),\n})\nexport type AudioCapabilities = z.infer<typeof AudioCapabilitiesSchema>\n\nexport const AudioPricingSchema = z.object({\n billingUnit: z.enum([\"per_character\", \"per_second\"]),\n baseCost: z.number().nonnegative(),\n baseCostUnit: z.string().optional(),\n /** @deprecated Derived at call time from `baseCost × category-markup`. */\n creditCost: z.number().nonnegative().optional(),\n /** Strategic per-model override — bypasses the formula. */\n overrideCreditCost: z.number().nonnegative().optional(),\n})\nexport type AudioPricing = z.infer<typeof AudioPricingSchema>\n\n// Voices are NOT per-model metadata — they live in the shared, provider-\n// neutral voice catalog (an app voice-catalog module,\n// `CatalogVoice`), referenced by id. The old per-entry `voice` placeholder\n// (+ its `VoiceMetadataSchema`) was never populated — removed.\nexport const AudioEntrySchema = z.object({\n ...baseEntryShape,\n kind: z.literal(\"audio\"),\n capabilities: AudioCapabilitiesSchema,\n pricing: AudioPricingSchema,\n supportedLocales: z.array(z.string()).optional(),\n})\nexport type AudioEntry = z.infer<typeof AudioEntrySchema>\n","import { z } from \"zod\"\nimport { LLMEntrySchema } from \"./llm.js\"\nimport { ImageEntrySchema } from \"./image.js\"\nimport { VideoEntrySchema } from \"./video.js\"\nimport { AudioEntrySchema } from \"./audio.js\"\n\nexport * from \"./base.js\"\nexport * from \"./llm.js\"\nexport * from \"./image.js\"\nexport * from \"./video.js\"\nexport * from \"./audio.js\"\nexport * from \"./voice.js\"\n\n/** Discriminated union over every kind. */\nexport const ModelEntrySchema = z.discriminatedUnion(\"kind\", [\n LLMEntrySchema,\n ImageEntrySchema,\n VideoEntrySchema,\n AudioEntrySchema,\n])\nexport type ModelEntry = z.infer<typeof ModelEntrySchema>\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|