@x12i/ai-profiles 1.6.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +96 -28
  2. package/dist/buildCatalogFromOpenRouterApi.d.ts.map +1 -1
  3. package/dist/buildCatalogFromOpenRouterApi.js +2 -1
  4. package/dist/buildCatalogFromOpenRouterApi.js.map +1 -1
  5. package/dist/buildModelsRegistry.d.ts +2 -0
  6. package/dist/buildModelsRegistry.d.ts.map +1 -1
  7. package/dist/buildModelsRegistry.js +5 -5
  8. package/dist/buildModelsRegistry.js.map +1 -1
  9. package/dist/buildResolvedProfile.d.ts +2 -1
  10. package/dist/buildResolvedProfile.d.ts.map +1 -1
  11. package/dist/buildResolvedProfile.js +18 -2
  12. package/dist/buildResolvedProfile.js.map +1 -1
  13. package/dist/catalogEnrichment.d.ts.map +1 -1
  14. package/dist/catalogEnrichment.js +13 -6
  15. package/dist/catalogEnrichment.js.map +1 -1
  16. package/dist/constants.d.ts +2 -0
  17. package/dist/constants.d.ts.map +1 -1
  18. package/dist/constants.js +8 -0
  19. package/dist/constants.js.map +1 -1
  20. package/dist/costPolicy.d.ts +7 -0
  21. package/dist/costPolicy.d.ts.map +1 -0
  22. package/dist/costPolicy.js +81 -0
  23. package/dist/costPolicy.js.map +1 -0
  24. package/dist/data/models-catalog.json +324 -1465
  25. package/dist/data/models-profiles.json +354 -420
  26. package/dist/data/models-profiles.schema.json +38 -11
  27. package/dist/data/models-registry.json +142 -841
  28. package/dist/data/profiles-shortcuts.json +49 -23
  29. package/dist/errors.d.ts +1 -1
  30. package/dist/errors.d.ts.map +1 -1
  31. package/dist/errors.js.map +1 -1
  32. package/dist/index.d.ts +8 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +7 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/modalityPolicy.d.ts +37 -0
  37. package/dist/modalityPolicy.d.ts.map +1 -0
  38. package/dist/modalityPolicy.js +200 -0
  39. package/dist/modalityPolicy.js.map +1 -0
  40. package/dist/modelIdentity.d.ts.map +1 -1
  41. package/dist/modelIdentity.js +9 -1
  42. package/dist/modelIdentity.js.map +1 -1
  43. package/dist/modelsCatalog.d.ts.map +1 -1
  44. package/dist/modelsCatalog.js +1 -0
  45. package/dist/modelsCatalog.js.map +1 -1
  46. package/dist/openRouterSlugPolicy.d.ts +20 -0
  47. package/dist/openRouterSlugPolicy.d.ts.map +1 -0
  48. package/dist/openRouterSlugPolicy.js +66 -0
  49. package/dist/openRouterSlugPolicy.js.map +1 -0
  50. package/dist/profileCatalogSupplement.d.ts.map +1 -1
  51. package/dist/profileCatalogSupplement.js +35 -44
  52. package/dist/profileCatalogSupplement.js.map +1 -1
  53. package/dist/profileRegistryV2.d.ts +8 -8
  54. package/dist/profileRegistryV2.d.ts.map +1 -1
  55. package/dist/profileRegistryV2.js +12 -70
  56. package/dist/profileRegistryV2.js.map +1 -1
  57. package/dist/profileRegistryV3.d.ts +3 -0
  58. package/dist/profileRegistryV3.d.ts.map +1 -1
  59. package/dist/profileRegistryV3.js +113 -103
  60. package/dist/profileRegistryV3.js.map +1 -1
  61. package/dist/resolveAIProfile.d.ts +1 -1
  62. package/dist/resolveAIProfile.d.ts.map +1 -1
  63. package/dist/resolveAIProfile.js +28 -4
  64. package/dist/resolveAIProfile.js.map +1 -1
  65. package/dist/resolveCatalogListing.d.ts +10 -0
  66. package/dist/resolveCatalogListing.d.ts.map +1 -0
  67. package/dist/resolveCatalogListing.js +59 -0
  68. package/dist/resolveCatalogListing.js.map +1 -0
  69. package/dist/resolveModelIdentity.d.ts.map +1 -1
  70. package/dist/resolveModelIdentity.js +1 -0
  71. package/dist/resolveModelIdentity.js.map +1 -1
  72. package/dist/resolveModelRouting.d.ts +2 -2
  73. package/dist/resolveModelRouting.d.ts.map +1 -1
  74. package/dist/resolveModelRouting.js +3 -3
  75. package/dist/resolveModelRouting.js.map +1 -1
  76. package/dist/types.d.ts +78 -10
  77. package/dist/types.d.ts.map +1 -1
  78. package/dist/validateProfileCatalogLinkage.d.ts +8 -0
  79. package/dist/validateProfileCatalogLinkage.d.ts.map +1 -0
  80. package/dist/validateProfileCatalogLinkage.js +212 -0
  81. package/dist/validateProfileCatalogLinkage.js.map +1 -0
  82. package/dist/validateProfileModalityCoverage.d.ts +9 -0
  83. package/dist/validateProfileModalityCoverage.d.ts.map +1 -0
  84. package/dist/validateProfileModalityCoverage.js +52 -0
  85. package/dist/validateProfileModalityCoverage.js.map +1 -0
  86. package/dist/validateProfileTransportPolicy.d.ts +8 -0
  87. package/dist/validateProfileTransportPolicy.d.ts.map +1 -0
  88. package/dist/validateProfileTransportPolicy.js +69 -0
  89. package/dist/validateProfileTransportPolicy.js.map +1 -0
  90. package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
  91. package/dist/validation/validateModelsProfilesJson.js +11 -7
  92. package/dist/validation/validateModelsProfilesJson.js.map +1 -1
  93. package/dist/vendorModelId.d.ts +4 -0
  94. package/dist/vendorModelId.d.ts.map +1 -0
  95. package/dist/vendorModelId.js +14 -0
  96. package/dist/vendorModelId.js.map +1 -0
  97. package/dist/vendorPolicy.d.ts.map +1 -1
  98. package/dist/vendorPolicy.js +1 -0
  99. package/dist/vendorPolicy.js.map +1 -1
  100. package/package.json +5 -4
package/README.md CHANGED
@@ -19,17 +19,17 @@ When a graph node or function asks for `deep`, it means: high reasoning effort,
19
19
  | Layer | Role | Example |
20
20
  |-------|------|---------|
21
21
  | **Profile** | Semantic intent (cost, speed, reasoning tier, output mode, agentic behavior) | `cheap`, `balanced`, `json`, `agentic` |
22
- | **Choice** | Implementation option within that profile (provider, model, batch vs sync, cost/quality trade-off) | `default`, `cost_floor`, `safer_provider` |
22
+ | **Choice** | Implementation option within that profile (provider, model, batch vs sync, cost/quality trade-off) | `default`, `google_floor`, `anthropic_cheap` |
23
23
 
24
24
  Every profile has a **`defaultChoice`** (recommended) and typically **two alternatives** so operators can tune without changing task code:
25
25
 
26
26
  - **Provider diversity** — Anthropic (writing/reasoning), OpenAI (code/instruction following), Google (cost, long context) within the same profile.
27
- - **Cost flexibility** — e.g. `balanced` + `cost_balanced` vs `reasoning_balanced` for the same “normal work” intent.
28
- - **Capability variants** — e.g. `long_context_deep` when the constraint is window size, not reasoning tier alone.
29
- - **Execution mode** — e.g. `cheap` + `cost_floor` with `executionMode: batch` for background bulk work.
27
+ - **Cost flexibility** — e.g. `balanced` + `google_balanced` vs `anthropic_balanced` for the same “normal work” intent.
28
+ - **Capability variants** — e.g. `google_deep` when the constraint is window size, not reasoning tier alone.
29
+ - **Execution mode** — e.g. `cheap` + `google_floor` with `executionMode: batch` for background bulk work.
30
30
  - **Resilience** — swap choice or fall back within the same profile when a provider is down or rate-limited.
31
31
 
32
- **Shortcuts** (`profiles-shortcuts.json`) are named entry points that may pin a profile and optionally a choice (e.g. `cheapest` → `cheap` + `cost_floor`). **Aliases** on each profile are alternate names for the same profile (e.g. `economy` → `cheap`).
32
+ **Shortcuts** (`profiles-shortcuts.json`) are named entry points that may pin a profile and optionally a choice (e.g. `cheapest` → `cheap` + `google_floor`). **Aliases** on each profile are alternate names for the same profile (e.g. `economy` → `cheap`).
33
33
 
34
34
  Tasks should declare **requirements** (`profile` + optional `choice`), not model names. Profiles are the vocabulary; choices are how that vocabulary is implemented under different constraints.
35
35
 
@@ -54,8 +54,7 @@ Profiles are grouped by **what kind of work** they represent—not only by price
54
54
  | `coding` | engineering | Software engineering: implementation, refactors, reviews, debugging. |
55
55
  | `extraction` | extraction | NER, classification, taxonomy mapping, entity extraction, document labeling. |
56
56
  | `routing` | routing | Intent classification, record routing, workflow branching (cheapest viable). |
57
- | `open_weights` | resilience | Hosted open-source models (Llama, Qwen) as vendor hedge and self-host path (`deploymentType: openWeightsHosted`). |
58
- | `local` | local | On-device / offline CPU inference (privacy, edge, dev without API keys). |
57
+ | `local` | local | **CPU only** — on-device / offline inference (llama.cpp GGUF, Transformers.js). **No OpenRouter.** |
59
58
 
60
59
  ### Typical choices per profile
61
60
 
@@ -63,22 +62,23 @@ Each profile’s `choices` in `models-profiles.json` follow a consistent pattern
63
62
 
64
63
  | Profile | Choices (bundled) | What the variants optimize |
65
64
  |---------|-------------------|------------------------------|
66
- | `cheap` | `default`, `cost_floor`, `safer_provider`, `absolute_floor` | Normal cheap vs batch floor vs safer Haiku vs DeepSeek V4 Flash volume floor |
67
- | `fast` | `default`, `cheaper_fast`, `quality_fast`, `grok_fast` | Interactive default vs lower cost vs stronger quality vs Grok 4.1 Fast (2M context) |
68
- | `balanced` | `default`, `reasoning_balanced`, `cost_balanced` | General default vs stronger reasoning vs lower cost |
69
- | `deep` | `default`, `openai_deep`, `long_context_deep`, `deepseek_pro`, `grok_flagship` | High reasoning default vs OpenAI vs long context vs cost-efficient DeepSeek vs Grok 4.3 |
70
- | `pro` | `default`, `claude_pro`, `cost_pro` | Premium default vs Claude premium vs Sonnet-level “pro-like” at lower cost |
71
- | `json` | `default`, `cheap_json`, `quality_json` | Reliable schema output vs volume/cost vs complex extraction needing reasoning |
72
- | `agentic` | `default`, `openai_agentic`, `cheap_agentic` | Agent default vs OpenAI orchestration vs lower-cost moderate agents |
73
- | `research` | `default`, `premium_research`, `long_context_research` | Synthesis default vs highest quality vs very large context |
65
+ | `cheap` | `default`, `google_floor`, `anthropic_cheap`, `deepseek_cheap`, `minimax_cheap` | Normal cheap vs batch floor vs safer Haiku vs DeepSeek volume floor vs MiniMax M2.5 |
66
+ | `fast` | `default`, `google_fast`, `anthropic_fast`, `grok_fast`, `minimax_fast` | Interactive default vs lower cost vs stronger quality vs Grok vs MiniMax M2 |
67
+ | `balanced` | `default`, `anthropic_balanced`, `google_balanced`, `minimax_balanced` | General default vs stronger reasoning vs lower cost vs MiniMax M2.5 |
68
+ | `deep` | `default`, `openai_deep`, `google_deep`, `deepseek_pro`, `grok_flagship`, `minimax_deep` | High reasoning default vs OpenAI vs long context vs DeepSeek vs Grok vs MiniMax M2.7 |
69
+ | `pro` | `default`, `claude_pro`, `anthropic_pro` | Premium default vs Claude premium vs Sonnet-level “pro-like” at lower cost |
70
+ | `json` | `default`, `google_json`, `anthropic_json` | Reliable schema output vs volume/cost vs complex extraction needing reasoning |
71
+ | `agentic` | `default`, `openai_agentic`, `google_agentic`, `minimax_agentic` | Agent default vs OpenAI orchestration vs lower-cost moderate agents vs MiniMax |
72
+ | `research` | `default`, `openai_research`, `google_research` | Synthesis default vs highest quality vs very large context |
74
73
  | `cyber` | `default`, `log_analysis`, `deep_forensics` | Policy/contract review vs bulk log JSON vs max forensics |
75
74
  | `content` | `default`, `pseo_bulk`, `brand_voice` | Natural prose vs batch pSEO schema vs premium copy |
76
75
  | `summarization` | `default`, `mega_context` | Fast digest (Haiku) vs multi-hundred-k token compression |
77
76
  | `vision` | `default`, `document_ocr` | General multimodal vs schema OCR from scans/PDFs |
78
- | `open_weights` | `default`, `multilingual_code` | Llama 3.3 70B vs Qwen 2.5 72B (coding / multilingual) |
79
- | `local` | `llama_cpp_gguf`, `transformersjs_default` | GGUF via llama.cpp vs Hugging Face Transformers.js on CPU |
77
+ | `local` | `llama_cpp_gguf`, `transformersjs_default` | **CPU / offline** — GGUF via llama.cpp vs Hugging Face Transformers.js (no cloud LLM) |
80
78
 
81
- Bundled **shortcuts** that pin a choice include `cheapest`, `absolute-floor`, `grok-fast`, `deepseek-pro`, `qwen`, `cheap-json`, `audit`, `pseo`, `ocr`, and FuncX-style `weak` / `normal` / `strong` / `ultra` (see [Profile matrix](#profile-matrix-funcx-contract)).
79
+ Bundled **shortcuts** that pin a choice include `cheapest`, `absolute-floor`, `grok-fast`, `deepseek-pro`, `minimax-coding`, `google-balanced`, `cheap-json`, `audit`, `pseo`, `ocr`, and FuncX-style `weak` / `normal` / `strong` / `ultra` (see [Profile matrix](#profile-matrix-funcx-contract)).
80
+
81
+ Every **remote** profile choice must resolve to an active OpenRouter catalog id. Profiles without OpenRouter support are not included (use vendor APIs outside this registry, or add catalog coverage first). The only exception is the **`local`** profile, which is explicitly CPU / self-hosted.
82
82
 
83
83
  Registry fields on each choice—`runtime` (`reasoningEffort`, `toolPolicy`, `outputMode`, `instructionTier`, `backend`), `modelStatus` (`verified` | `predicted`), `api` (vendor + OpenRouter slugs), and `reason`—document *why* that model backs the choice. **Pricing and capabilities** come from `models-catalog.json` at resolve time. Profile-level `requiredCapabilities` describes intent for future dynamic selection (Optimixer). Consumers use `resolveAIProfile` to materialize the merged result.
84
84
 
@@ -131,7 +131,9 @@ Use these when callers pass **raw model ids or OpenRouter slugs**, not profile n
131
131
  |--------|-------|---------|
132
132
  | `resolveUseOpenRouter(explicit?)` | Yes | Resolve OpenRouter vs vendor-direct routing (option → env → default) |
133
133
  | `validateBundledProfileVendorCoverage(options?)` | Yes | Advisory report of leading-vendor coverage per profile |
134
+ | `validateBundledProfileModalityCoverage(options?)` | Yes | Advisory report of profile choice vs required input/output media |
134
135
  | `isProfileVendorTrimReady(profile, allowedProviders)` | Yes | Whether auto-pick can satisfy a vendor filter |
136
+ | `isProfileModalityCoverageReady(profileKey)` | Yes | Whether a profile has at least one modality-compatible choice |
135
137
  | `listFaultyProfileChoices()` | Yes | Profile choices with faulty OpenRouter catalog linkage |
136
138
  | `buildModelsRegistry`, `verifyOpenRouterAlignment`, … | Yes | Catalog/registry build and alignment (see scripts below) |
137
139
 
@@ -144,7 +146,7 @@ Registry JSON lives in four bundled assets:
144
146
  | `models-registry.json` | `x12i.ai-profiles.models-registry` | Built linkage index: vendor keys, OpenRouter slugs, `invocation` pairs |
145
147
  | `profiles-shortcuts.json` | `x12i.ai-profiles.shortcuts` | Named entry points |
146
148
 
147
- **v3 contract:** `modelId` is **vendor-native** (e.g. `claude-sonnet-4-5`). OpenRouter slugs live under `choice.api.openRouterModelId`. `resolveAIProfile` merges catalog data into `resolved.pricing`, `resolved.limits`, and `resolved.capabilities`. Default choices use **verified** SKUs; forward-looking models remain as alternates with `modelStatus: predicted`.
149
+ **v3 contract:** Each profile choice stores only `provider` + **vendor-native** `modelId` as a pointer into `models-catalog.json`, which owns the `direct` and `openrouter` listings. Never embed `api`, `defaultTransport`, or OpenRouter slugs on profile choices. `resolveAIProfile` picks transport via env/options and merges catalog pricing, limits, and capabilities — the client-facing shape is unchanged. Run `npm run registry:finish` to strip legacy fields, verify linkage, and rebuild `models-registry.json`.
148
150
 
149
151
  Validate with `src/data/models-profiles.schema.json`. Maintainer scripts: `npm run migrate:profiles-v3`, `npm run registry:finish` (catalog supplement + verified defaults + linkage rebuild).
150
152
 
@@ -203,7 +205,7 @@ CLI (after build): `npm run stats` (text) or `npm run stats:json`.
203
205
 
204
206
  Each **profile** has exactly one **primary key** (e.g. `balanced`, `cheap`) and **many aliases** — alternate strings that mean the same profile. Data is in `models-profiles.json` under each profile’s `aliases` array.
205
207
 
206
- **Shortcuts** (`profiles-shortcuts.json`) are a second registry of names. A shortcut points at a profile and may pin a specific **choice** (e.g. `cheapest` → `cheap` + `cost_floor`).
208
+ **Shortcuts** (`profiles-shortcuts.json`) are a second registry of names. A shortcut points at a profile and may pin a specific **choice** (e.g. `cheapest` → `cheap` + `google_floor`).
207
209
 
208
210
  The same string can appear as both an alias and a shortcut. That is intentional.
209
211
 
@@ -230,7 +232,7 @@ await resolveAIProfile("cost-sensitive"); // profile: cheap, choice: default
230
232
  await resolveAIProfile("default"); // profile: balanced (via default shortcut)
231
233
 
232
234
  // Shortcut with explicit choice
233
- await resolveAIProfile("cheapest"); // profile: cheap, choice: cost_floor
235
+ await resolveAIProfile("cheapest"); // profile: cheap, choice: google_floor
234
236
  ```
235
237
 
236
238
  `listAIProfiles()` returns each profile’s `aliases` so UIs can show friendly labels. `listAIShortcuts()` lists shortcut keys separately (not duplicated inside `listAIProfiles()`).
@@ -260,7 +262,7 @@ After validation, call `resolveAIProfile` (usually `source: "auto"` or `"bundled
260
262
 
261
263
  ```ts
262
264
  const model = await resolveAIProfile("cheap", {
263
- choice: "safer_provider",
265
+ choice: "anthropic_cheap",
264
266
  });
265
267
  ```
266
268
 
@@ -284,7 +286,7 @@ const resolved = await resolveAIProfile("cheap");
284
286
  await resolveAIProfile("cheap", { useOpenRouter: true });
285
287
 
286
288
  // resolved.provider === "openrouter"
287
- // resolved.modelId === "google/gemini-2.5-flash-lite"
289
+ // resolved.modelId === "google/gemini-3.1-flash-lite"
288
290
  // resolved.routing === "openrouter"
289
291
  // resolved.backend === "openrouter"
290
292
  ```
@@ -293,6 +295,21 @@ Registry choices store vendor-native ids (e.g. `gpt-5.4`, `gemini-2.5-flash-lite
293
295
 
294
296
  This applies to **primary keys, aliases, and shortcuts** — any input that resolves to a remote profile choice.
295
297
 
298
+ ### Avoid hardcoded OpenRouter slugs (especially dated previews)
299
+
300
+ Do **not** copy OpenRouter slugs into app config (`preActionModel`, env vars, etc.) and do **not** use `canonicalSlug` from the catalog for API calls. OpenRouter retires dated preview ids (e.g. `google/gemini-2.5-flash-lite-preview-06-17`) while stable ids remain (`google/gemini-2.5-flash-lite`).
301
+
302
+ ```ts
303
+ // Good — profile pointer + resolver
304
+ const pre = await resolveAIProfile("cheap");
305
+ preActionModel: pre.modelId; // "google/gemini-2.5-flash-lite"
306
+
307
+ // Bad — stale transport slug from an old catalog page or doc
308
+ preActionModel: "google/gemini-2.5-flash-lite-preview-06-17";
309
+ ```
310
+
311
+ Use `assertStableOpenRouterSlug(slug)` before outbound OpenRouter calls when you must accept external slug strings. Run `npm run verify:openrouter:live` in CI to catch catalog drift.
312
+
296
313
  ### Vendor-direct
297
314
 
298
315
  ```ts
@@ -436,8 +453,7 @@ Default choice per profile (vendor-native ids in registry; OpenRouter slugs when
436
453
  | `content` | Remote | **`default`** | `default` | `claude-sonnet-4.6` |
437
454
  | `summarization` | Remote | **`default`** | `default` | `claude-haiku-4.5` |
438
455
  | `vision` | Remote | **`default`** | `default` | `gpt-5.4` |
439
- | `open_weights` | Remote | **`default`** | `default` | `meta-llama/Llama-3.3-70b-instruct` |
440
- | `local` | CPU | **`cpu`** | `llama_cpp_gguf` | `funcx:llama-cpp:gguf` |
456
+ | `local` | CPU (no OpenRouter) | **`cpu`** | `llama_cpp_gguf` | `funcx:llama-cpp:gguf` |
441
457
  | `local` | CPU | **`cpu`** | `transformersjs_default` | `Xenova/distilbart-cnn-6-6` |
442
458
 
443
459
  FuncX mode shortcuts (bundled): `weak` → local, `normal` → balanced, `strong` → pro, `ultra` → deep, `default` → balanced.
@@ -465,7 +481,7 @@ Top-level `provider` / `modelId` / `routing` remain the **active** path selected
465
481
 
466
482
  ### Vendor trimming
467
483
 
468
- Restrict resolution to specific vendors (auto-picks within the profile when the default is outside the set). **Leading vendors** (`openai`, `anthropic`, `google`, `deepseek`, `xai`) are **preferred** during auto-pick, not forced — explicit `choice` still honors `together` and other providers.
484
+ Restrict resolution to specific vendors (auto-picks within the profile when the default is outside the set). **Leading vendors** (`openai`, `anthropic`, `google`, `deepseek`, `minimax`, `xai`) are **preferred** during auto-pick, not forced — explicit `choice` still honors `together` and other providers.
469
485
 
470
486
  ```ts
471
487
  await resolveAIProfile("balanced", {
@@ -474,6 +490,57 @@ await resolveAIProfile("balanced", {
474
490
  });
475
491
  ```
476
492
 
493
+ ### Modality filtering (input / output media)
494
+
495
+ Every profile declares **required input and output media** in `requiredCapabilities`:
496
+
497
+ - Most profiles: `inputModalities: ["text"]`, `outputModalities: ["text"]`
498
+ - `vision`: `inputModalities: ["text", "image"]`, `outputModalities: ["text"]`
499
+
500
+ Supported values: `text`, `image`, `audio`, `video`, `file` (aligned with `models-catalog.json`).
501
+
502
+ During resolution, choices whose catalog modalities do not satisfy the contract are **excluded**. A text-only model cannot be picked for `vision`; a vision-capable model can still serve text profiles.
503
+
504
+ ```ts
505
+ const resolved = await resolveAIProfile("vision");
506
+ // resolved.requiredModalities.input includes "image"
507
+ // resolved.modalities reflects the picked model from catalog
508
+
509
+ await resolveAIProfile("cheap", {
510
+ inputModalities: ["text", "image"], // override for this call
511
+ outputModalities: ["text"],
512
+ });
513
+ ```
514
+
515
+ Override at resolve time with `inputModalities` / `outputModalities`. Incompatible explicit `choice` values throw `NO_MODALITY_MATCH`.
516
+
517
+ Registry maintenance:
518
+
519
+ ```ts
520
+ import { validateBundledProfileModalityCoverage } from "@x12i/ai-profiles";
521
+
522
+ validateBundledProfileModalityCoverage(); // { ok, profiles[] } with mismatches
523
+ ```
524
+
525
+ `npm run catalog:build` writes `MODALITY_MISMATCH` rows to `reports/fault-report.json`.
526
+
527
+ ### Cost cap filtering
528
+
529
+ Restrict auto-pick to choices whose catalog pricing stays under a USD-per-1M-token ceiling:
530
+
531
+ ```ts
532
+ // Both input and output rates must be <= $0.20 / 1M tokens
533
+ await resolveAIProfile("balanced", { costCapPer1M: 0.2 });
534
+
535
+ // Finer control
536
+ await resolveAIProfile("cheap", {
537
+ costCapPer1M: { maxInput: 0.2, maxOutput: 2 },
538
+ choice: "minimax_cheap",
539
+ });
540
+ ```
541
+
542
+ When the default choice exceeds the cap, resolution auto-picks the next compatible alternative (respecting fallback order and vendor preferences). Explicit `choice` values over the cap throw `NO_COST_CAP_MATCH`. Local/self-hosted choices are treated as zero cost.
543
+
477
544
  ### Keeping models aligned over time
478
545
 
479
546
  Bundled linkage lives in `src/data/models-registry.json`, built from `models-profiles.json` and `src/data/models-catalog.json`.
@@ -496,8 +563,9 @@ npm run registry:finish # merge profile catalog supplement, verified def
496
563
  npm run catalog:sync # pull catalog, rebuild models-registry.json, verify
497
564
  npm run catalog:pull # fetch open-assets catalog into src/data/
498
565
  npm run catalog:build # rebuild models-registry.json + reports/fault-report.json
499
- npm run verify:openrouter # alias for catalog:verify (fails on faulty OR linkage only)
500
- npm run verify:openrouter:live # legacy script vs live catalog
566
+ npm run verify:openrouter # bundled catalog + resolved slug policy (offline-safe)
567
+ npm run verify:openrouter:live # above + live OpenRouter API id check (needs network; retries 3x)
568
+ npm run catalog:verify # registry build / fault report from sync-models-registry
501
569
  ```
502
570
 
503
571
  With the seed catalog (&lt;50 models), choices not yet listed are marked `catalog-miss` in the registry (warnings in `reports/fault-report.json`, not CI failures). A full catalog promotes true `faulty` rows for slug mismatches.
@@ -1 +1 @@
1
- {"version":3,"file":"buildCatalogFromOpenRouterApi.d.ts","sourceRoot":"","sources":["../src/buildCatalogFromOpenRouterApi.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiC,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE;QACb,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,kBAAkB,EAAE,CAAC;CAC5B,CAAC;AA8FF,mGAAmG;AACnG,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,2BAA2B,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB;AAED,0DAA0D;AAC1D,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,2BAA2B,GACpC,iBAAiB,CAoBnB"}
1
+ {"version":3,"file":"buildCatalogFromOpenRouterApi.d.ts","sourceRoot":"","sources":["../src/buildCatalogFromOpenRouterApi.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiC,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE;QACb,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,kBAAkB,EAAE,CAAC;CAC5B,CAAC;AA8FF,mGAAmG;AACnG,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,2BAA2B,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBzB;AAED,0DAA0D;AAC1D,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,2BAA2B,GACpC,iBAAiB,CAoBnB"}
@@ -1,4 +1,5 @@
1
1
  import { OPENROUTER_MODELS_API_URL } from "./constants.js";
2
+ import { filterSupersededOpenRouterPreviewModels } from "./openRouterSlugPolicy.js";
2
3
  import { MODELS_CATALOG_REMOTE_URL, normalizeModelsCatalog, } from "./modelsCatalog.js";
3
4
  function perTokenToPerMillion(tokenPrice) {
4
5
  if (tokenPrice === null || tokenPrice === undefined || tokenPrice === "") {
@@ -72,7 +73,7 @@ function mapLegacyEntry(model) {
72
73
  }
73
74
  /** Build the legacy OpenRouter-only catalog document (fed into {@link normalizeModelsCatalog}). */
74
75
  export function buildLegacyCatalogFromOpenRouterApi(response) {
75
- const models = (response.data ?? []).filter((m) => m?.id?.trim());
76
+ const models = filterSupersededOpenRouterPreviewModels((response.data ?? []).filter((m) => m?.id?.trim()));
76
77
  return {
77
78
  schema: "x12i.openrouter-models.catalog",
78
79
  version: "1.0.0",
@@ -1 +1 @@
1
- {"version":3,"file":"buildCatalogFromOpenRouterApi.js","sourceRoot":"","sources":["../src/buildCatalogFromOpenRouterApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildCatalogFromOpenRouterApi.js","sourceRoot":"","sources":["../src/buildCatalogFromOpenRouterApi.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { ModelRegistryEntry, ModelsProfilesJson, ModelsRegistryJson, ModelsCatalogJson } from "./types.js";
2
2
  import { validateProfileVendorCoverage } from "./validateProfileVendorCoverage.js";
3
+ import { validateProfileModalityCoverage } from "./validateProfileModalityCoverage.js";
3
4
  export interface FaultyProfileChoice {
4
5
  profile: string;
5
6
  choice: string;
@@ -19,6 +20,7 @@ export interface ModelsRegistryBuildResult {
19
20
  faulty: FaultyProfileChoice[];
20
21
  catalogMiss: CatalogMissChoice[];
21
22
  vendorWarnings: ReturnType<typeof validateProfileVendorCoverage>;
23
+ modalityWarnings: ReturnType<typeof validateProfileModalityCoverage>;
22
24
  }
23
25
  export declare function buildModelsRegistry(profiles: ModelsProfilesJson, catalog: ModelsCatalogJson | unknown): ModelsRegistryBuildResult;
24
26
  export declare function listFaultyFromRegistry(registry: ModelsRegistryJson): FaultyProfileChoice[];
@@ -1 +1 @@
1
- {"version":3,"file":"buildModelsRegistry.d.ts","sourceRoot":"","sources":["../src/buildModelsRegistry.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,cAAc,EAAE,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC;CAClE;AAgBD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,iBAAiB,GAAG,OAAO,GACnC,yBAAyB,CA6J3B;AAmBD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,kBAAkB,GAC3B,mBAAmB,EAAE,CAoBvB"}
1
+ {"version":3,"file":"buildModelsRegistry.d.ts","sourceRoot":"","sources":["../src/buildModelsRegistry.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,cAAc,EAAE,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC;IACjE,gBAAgB,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC;CACtE;AAgBD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,iBAAiB,GAAG,OAAO,GACnC,yBAAyB,CA4J3B;AAmBD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,kBAAkB,GAC3B,mBAAmB,EAAE,CAoBvB"}
@@ -2,6 +2,7 @@ import { buildModelsCatalogIndex, normalizeModelsCatalog } from "./modelsCatalog
2
2
  import { buildRegistryKey, matchOpenRouterCatalog, shouldCheckOpenRouterAlignment, } from "./modelIdentity.js";
3
3
  import { buildModelInvocationFromChoice, getChoiceVendorModelId, } from "./profileRegistryV2.js";
4
4
  import { validateProfileVendorCoverage } from "./validateProfileVendorCoverage.js";
5
+ import { validateProfileModalityCoverage } from "./validateProfileModalityCoverage.js";
5
6
  const SEED_CATALOG_MODEL_THRESHOLD = 50;
6
7
  function isSeedCatalog(catalog) {
7
8
  return catalog.models.length < SEED_CATALOG_MODEL_THRESHOLD;
@@ -23,7 +24,7 @@ export function buildModelsRegistry(profiles, catalog) {
23
24
  const referencedOrIds = new Set();
24
25
  for (const [profileKey, profile] of Object.entries(profiles.profiles)) {
25
26
  for (const [choiceKey, choice] of Object.entries(profile.choices)) {
26
- const invocation = buildModelInvocationFromChoice(choice);
27
+ const invocation = buildModelInvocationFromChoice(choice, normalizedCatalog);
27
28
  const registryKey = buildRegistryKey(choice.provider, getChoiceVendorModelId(choice));
28
29
  const ref = { profile: profileKey, choice: choiceKey };
29
30
  if (choice.provider === "local") {
@@ -63,10 +64,6 @@ export function buildModelsRegistry(profiles, catalog) {
63
64
  canonicalSlug: match.canonicalSlug,
64
65
  matchMethod: match.matchMethod,
65
66
  };
66
- invocation.openrouter = {
67
- provider: "openrouter",
68
- modelId: match.openRouterModelId,
69
- };
70
67
  }
71
68
  else if (seedCatalog) {
72
69
  linkage = { status: "catalog-miss", exemptReason: "seed-catalog" };
@@ -154,6 +151,9 @@ export function buildModelsRegistry(profiles, catalog) {
154
151
  faulty,
155
152
  catalogMiss,
156
153
  vendorWarnings: validateProfileVendorCoverage(profiles),
154
+ modalityWarnings: validateProfileModalityCoverage(profiles, {
155
+ catalog: normalizedCatalog,
156
+ }),
157
157
  };
158
158
  }
159
159
  function mergeRegistryEntry(models, entry) {
@@ -1 +1 @@
1
- {"version":3,"file":"buildModelsRegistry.js","sourceRoot":"","sources":["../src/buildModelsRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildModelsRegistry.js","sourceRoot":"","sources":["../src/buildModelsRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AA0BvF,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,SAAS,aAAa,CAAC,OAA0B;IAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,4BAA4B,CAAC;AAC9D,CAAC;AAED,SAAS,YAAY,CAAC,QAA4B;IAChD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAA4B,EAC5B,OAAoC;IAEpC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAChE,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,MAAM,UAAU,GAAG,8BAA8B,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YAC7E,MAAM,WAAW,GAAG,gBAAgB,CAClC,MAAM,CAAC,QAAQ,EACf,sBAAsB,CAAC,MAAM,CAAC,CAC/B,CAAC;YACF,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAEvD,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAuB;oBAChC,WAAW;oBACX,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,UAAU;oBACV,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE;oBACrD,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE;iBACjC,CAAC;gBACF,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,8BAA8B,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,OAAsC,CAAC;YAC3C,IAAI,IAAI,GAA+B,QAAQ,CAAC;YAEhD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,GAAG;oBACR,MAAM,EAAE,SAAS;oBACjB,YAAY,EACV,MAAM,CAAC,QAAQ,EAAE,UAAU,KAAK,eAAe;wBAC7C,CAAC,CAAC,eAAe;wBACjB,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,uBAAuB;4BACxC,CAAC,CAAC,yBAAyB;4BAC3B,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,KAAK,YAAY;gCACxC,CAAC,CAAC,wBAAwB;gCAC1B,CAAC,CAAC,QAAQ;iBACnB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,sBAAsB,CAClC,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,EACd,YAAY,CACb,CAAC;gBAEF,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBAC7C,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC3D,OAAO,GAAG;wBACR,MAAM,EAAE,SAAS;wBACjB,mBAAmB,EAAE,KAAK,CAAC,iBAAiB;wBAC5C,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,WAAW,EAAE,KAAK,CAAC,WAAW;qBAC/B,CAAC;gBACJ,CAAC;qBAAM,IAAI,WAAW,EAAE,CAAC;oBACvB,OAAO,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;oBACnE,WAAW,CAAC,IAAI,CAAC;wBACf,OAAO,EAAE,UAAU;wBACnB,MAAM,EAAE,SAAS;wBACjB,WAAW;wBACX,UAAU;wBACV,UAAU,EAAE,KAAK,CAAC,UAAU;qBAC7B,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,QAAQ,CAAC;oBAChB,OAAO,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC;wBACV,OAAO,EAAE,UAAU;wBACnB,MAAM,EAAE,SAAS;wBACjB,WAAW;wBACX,UAAU;wBACV,UAAU,EAAE,KAAK,CAAC,UAAU;qBAC7B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,kBAAkB,CAAC,MAAM,EAAE;gBACzB,WAAW;gBACX,IAAI;gBACJ,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,UAAU;gBACV,OAAO;gBACP,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,SAAS;QAEhD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,CAAC,KAAK,CAAC;YAAE,SAAS;QAE5B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QAEnC,MAAM,CAAC,KAAK,CAAC,GAAG;YACd,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,MAAM;YACd,UAAU,EAAE;gBACV,MAAM;gBACN,UAAU,EAAE;oBACV,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,OAAO;iBACzC;aACF;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,SAAS;gBACjB,mBAAmB,EAAE,OAAO;gBAC5B,aAAa,EAAE,YAAY,CAAC,UAAU,EAAE,aAAa;aACtD;YACD,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAuB;QACnC,MAAM,EAAE,kCAAkC;QAC1C,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,MAAM,EAAE;YACN,iBAAiB,EAAE;gBACjB,MAAM,EAAE,iBAAiB,CAAC,MAAM;gBAChC,OAAO,EAAE,iBAAiB,CAAC,OAAO;gBAClC,WAAW,EAAE,iBAAiB,CAAC,WAAW;gBAC1C,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM;aAC5C;YACD,cAAc,EAAE;gBACd,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC;aACpC;SACF;QACD,MAAM;KACP,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,MAAM;QACN,WAAW;QACX,cAAc,EAAE,6BAA6B,CAAC,QAAQ,CAAC;QACvD,gBAAgB,EAAE,+BAA+B,CAAC,QAAQ,EAAE;YAC1D,OAAO,EAAE,iBAAiB;SAC3B,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,MAA0C,EAC1C,KAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QAClC,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;QACzB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAA4B;IAE5B,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS;QAEhD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;oBACrC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;oBACvC,CAAC,CAAC,EAAE;aACP,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AIProfileChoice, AIProfileDefinition, AIProfileShortcut, AIProfileWarning, AIProfilesRegistry, ModelsCatalogJson, ResolvedAIProfile } from "./types.js";
1
+ import type { AIProfileChoice, AIProfileDefinition, AIProfileShortcut, AIProfileWarning, AIProfilesRegistry, CostCapPer1M, ModelsCatalogJson, ResolvedAIProfile } from "./types.js";
2
2
  interface BuildResolvedProfileInput {
3
3
  input: string;
4
4
  shortcutKey?: string;
@@ -10,6 +10,7 @@ interface BuildResolvedProfileInput {
10
10
  loaderWarnings?: AIProfileWarning[];
11
11
  useOpenRouter?: boolean;
12
12
  catalog?: ModelsCatalogJson;
13
+ costCapApplied?: CostCapPer1M;
13
14
  }
14
15
  export declare function buildResolvedProfile(params: BuildResolvedProfileInput): ResolvedAIProfile;
15
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"buildResolvedProfile.d.ts","sourceRoot":"","sources":["../src/buildResolvedProfile.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAElB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,UAAU,yBAAyB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AA8CD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,yBAAyB,GAChC,iBAAiB,CAwKnB"}
1
+ {"version":3,"file":"buildResolvedProfile.d.ts","sourceRoot":"","sources":["../src/buildResolvedProfile.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EAEZ,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,UAAU,yBAAyB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,cAAc,CAAC,EAAE,YAAY,CAAC;CAC/B;AA8CD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,yBAAyB,GAChC,iBAAiB,CAyLnB"}
@@ -1,9 +1,11 @@
1
1
  import { DEFAULT_CACHE_TTL_MS, DEFAULT_RUNTIME_DEFAULTS } from "./constants.js";
2
2
  import { enrichChoiceFromCatalog } from "./catalogEnrichment.js";
3
+ import { getChoiceModalities, resolveRequiredModalities, } from "./modalityPolicy.js";
3
4
  import { getMemoryCache } from "./loader/memoryCache.js";
4
5
  import { loadBundledModelsCatalog } from "./loader/loadBundledModelsCatalog.js";
5
6
  import { lookupInvocationForChoice, loadBundledModelsRegistry } from "./loadModelsRegistry.js";
6
7
  import { buildModelInvocationFromChoice } from "./profileRegistryV2.js";
8
+ import { resolveChoiceInvocation } from "./resolveCatalogListing.js";
7
9
  import { resolveChoicePricing } from "./profileRegistryV3.js";
8
10
  import { resolveBackend, resolveInstructionTier, } from "./resolveInstructionTierAndBackend.js";
9
11
  import { applyModelRouting, resolveUseOpenRouter, } from "./resolveModelRouting.js";
@@ -37,6 +39,7 @@ function loadCatalogForEnrichment(catalog) {
37
39
  }
38
40
  export function buildResolvedProfile(params) {
39
41
  const { input, shortcutKey, profile, choice, shortcut, registry, loaderWarnings = [], useOpenRouter: explicitUseOpenRouter, catalog: catalogInput, } = params;
42
+ const costCapApplied = params.costCapApplied;
40
43
  const warnings = [...loaderWarnings];
41
44
  const cache = getMemoryCache();
42
45
  const cacheLoadedAt = cache?.loadedAt ?? Date.parse(registry.loadedAt);
@@ -59,6 +62,12 @@ export function buildResolvedProfile(params) {
59
62
  message: `Model '${choice.provider}/${choice.modelId}' is marked predicted and may not be callable yet.`,
60
63
  });
61
64
  }
65
+ if (profile.profile === "local" || choice.provider === "local") {
66
+ warnings.push({
67
+ code: "CPU_LOCAL_PROFILE",
68
+ message: "This profile runs on-device CPU only (no OpenRouter / no cloud LLM). Ensure FuncX env paths and optional deps are configured.",
69
+ });
70
+ }
62
71
  const mergedRuntime = {
63
72
  ...DEFAULT_RUNTIME_DEFAULTS,
64
73
  ...(profile.runtime ?? {}),
@@ -67,8 +76,8 @@ export function buildResolvedProfile(params) {
67
76
  const instructionTier = resolveInstructionTier(profile, mergedRuntime.instructionTier);
68
77
  const resolvedBackend = resolveBackend(profile, choice, mergedRuntime.backend);
69
78
  const useOpenRouter = resolveUseOpenRouter(explicitUseOpenRouter);
70
- const routed = applyModelRouting(choice, resolvedBackend, useOpenRouter);
71
79
  const catalog = loadCatalogForEnrichment(catalogInput);
80
+ const routed = applyModelRouting(choice, resolvedBackend, useOpenRouter, catalog);
72
81
  const enriched = catalog
73
82
  ? enrichChoiceFromCatalog(catalog, choice, {
74
83
  provider: routed.provider,
@@ -89,7 +98,9 @@ export function buildResolvedProfile(params) {
89
98
  message: `Pricing is missing for choice '${choice.choice}' on profile '${profile.profile}'.`,
90
99
  });
91
100
  }
92
- const invocation = resolveInvocation(profile.profile, params.choiceKey, choice);
101
+ const invocation = (catalog
102
+ ? resolveChoiceInvocation(choice, catalog)
103
+ : undefined) ?? resolveInvocation(profile.profile, params.choiceKey, choice);
93
104
  if (!invocation.openrouter && useOpenRouter) {
94
105
  try {
95
106
  const modelsRegistry = loadBundledModelsRegistry();
@@ -123,6 +134,8 @@ export function buildResolvedProfile(params) {
123
134
  maxOutputTokens: limits.maxOutputTokens,
124
135
  }
125
136
  : undefined;
137
+ const requiredModalities = resolveRequiredModalities(profile.profile, profile);
138
+ const modalities = getChoiceModalities(choice, catalog);
126
139
  const resolved = {
127
140
  input,
128
141
  profile: profile.profile,
@@ -144,6 +157,9 @@ export function buildResolvedProfile(params) {
144
157
  ...(profile.requiredCapabilities !== undefined
145
158
  ? { requiredCapabilities: profile.requiredCapabilities }
146
159
  : {}),
160
+ modalities,
161
+ requiredModalities,
162
+ ...(costCapApplied ? { costCapApplied } : {}),
147
163
  runtime,
148
164
  invocation,
149
165
  ...(choice.metadata !== undefined ? { metadata: choice.metadata } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"buildResolvedProfile.js","sourceRoot":"","sources":["../src/buildResolvedProfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildResolvedProfile.js","sourceRoot":"","sources":["../src/buildResolvedProfile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalogEnrichment.d.ts","sourceRoot":"","sources":["../src/catalogEnrichment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,EAGjB,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AA8BpB,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,GACvB,cAAc,GAAG,SAAS,CAiB5B;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,iBAAiB,GACvB,mBAAmB,CAMrB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,iBAAiB,GACvB,yBAAyB,CAO3B;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE;IACN,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,GACA,iBAAiB,GAAG,SAAS,CA6B/B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjD;IACD,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,YAAY,CAAC,EAAE,yBAAyB,CAAC;IACzC,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,CAqBA"}
1
+ {"version":3,"file":"catalogEnrichment.d.ts","sourceRoot":"","sources":["../src/catalogEnrichment.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,EAGjB,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAwCpB,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,GACvB,cAAc,GAAG,SAAS,CAiB5B;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,iBAAiB,GACvB,mBAAmB,CAMrB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,iBAAiB,GACvB,yBAAyB,CAO3B;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE;IACN,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,GACA,iBAAiB,GAAG,SAAS,CA6B/B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjD;IACD,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,YAAY,CAAC,EAAE,yBAAyB,CAAC;IACzC,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,CAiBA"}
@@ -1,4 +1,5 @@
1
1
  import { buildModelsCatalogIndex } from "./modelsCatalog.js";
2
+ import { normalizeModalityContract } from "./modalityPolicy.js";
2
3
  import { getChoiceOpenRouterModelId, getChoiceVendorModelId } from "./profileRegistryV2.js";
3
4
  function normalizeKey(value) {
4
5
  return value.trim().toLowerCase();
@@ -7,6 +8,9 @@ function modalitiesIncludeImage(modalities) {
7
8
  return modalities?.input?.includes("image") ?? false;
8
9
  }
9
10
  function capabilitiesFromSlice(caps, modalities, pricing) {
11
+ const normalizedModalities = modalities
12
+ ? normalizeModalityContract(modalities)
13
+ : undefined;
10
14
  return {
11
15
  supportsVision: modalitiesIncludeImage(modalities),
12
16
  supportsTools: caps?.toolCalling,
@@ -15,6 +19,12 @@ function capabilitiesFromSlice(caps, modalities, pricing) {
15
19
  supportsCaching: pricing?.cachedInput !== undefined || pricing?.cacheWrite !== undefined,
16
20
  supportsBatch: pricing?.batchInput !== undefined || pricing?.batchOutput !== undefined,
17
21
  supportsStreaming: true,
22
+ ...(normalizedModalities
23
+ ? {
24
+ inputModalities: normalizedModalities.input,
25
+ outputModalities: normalizedModalities.output,
26
+ }
27
+ : {}),
18
28
  };
19
29
  }
20
30
  export function pricingFromCatalogEntry(entry) {
@@ -66,13 +76,10 @@ export function findCatalogModelEntry(catalog, params) {
66
76
  normalizeKey(model.direct.modelId) === normalizeKey(params.modelId));
67
77
  }
68
78
  export function enrichChoiceFromCatalog(catalog, choice, routed) {
69
- const provider = routed?.provider ?? choice.provider;
70
- const modelId = routed?.modelId ?? getChoiceVendorModelId(choice);
71
- const openRouterModelId = getChoiceOpenRouterModelId(choice);
72
79
  const entry = findCatalogModelEntry(catalog, {
73
- provider,
74
- modelId,
75
- openRouterModelId,
80
+ provider: choice.provider,
81
+ modelId: getChoiceVendorModelId(choice),
82
+ openRouterModelId: getChoiceOpenRouterModelId(choice, catalog),
76
83
  });
77
84
  if (!entry) {
78
85
  return {};
@@ -1 +1 @@
1
- {"version":3,"file":"catalogEnrichment.js","sourceRoot":"","sources":["../src/catalogEnrichment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalogEnrichment.js","sourceRoot":"","sources":["../src/catalogEnrichment.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,7 @@ export declare const MODELS_PROFILES_SCHEMAS: readonly ["x12i.ai-profiles.models
13
13
  export declare const PROFILES_SHORTCUTS_SCHEMA: "x12i.ai-profiles.shortcuts";
14
14
  export declare const INSTRUCTION_TIERS: readonly ["default", "cpu", "reasoning"];
15
15
  export declare const AI_PROFILE_BACKENDS: readonly ["openrouter", "llama-cpp", "transformersjs", "custom"];
16
+ /** Canonical media types for model input/output (aligned with OpenRouter catalog). */
17
+ export declare const MODEL_MODALITIES: readonly ["text", "image", "audio", "video", "file"];
16
18
  export declare const DEFAULT_RUNTIME_DEFAULTS: Required<AIRuntimeDefaults>;
17
19
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,oBAAoB,QAAsB,CAAC;AACxD,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,eAAO,MAAM,0BAA0B,sDACc,CAAC;AAEtD,eAAO,MAAM,6BAA6B,yDACc,CAAC;AAEzD,eAAO,MAAM,yBAAyB,qDACc,CAAC;AAErD,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,wCACC,CAAC;AAExC,eAAO,MAAM,sBAAsB,EAAG,kCAA2C,CAAC;AAClF,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAChD,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAEhD,eAAO,MAAM,uBAAuB,2HAI1B,CAAC;AACX,eAAO,MAAM,yBAAyB,EAAG,4BAAqC,CAAC;AAE/E,eAAO,MAAM,iBAAiB,0CAA2C,CAAC;AAE1E,eAAO,MAAM,mBAAmB,kEAKtB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,iBAAiB,CAahE,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,oBAAoB,QAAsB,CAAC;AACxD,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,eAAO,MAAM,0BAA0B,sDACc,CAAC;AAEtD,eAAO,MAAM,6BAA6B,yDACc,CAAC;AAEzD,eAAO,MAAM,yBAAyB,qDACc,CAAC;AAErD,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,wCACC,CAAC;AAExC,eAAO,MAAM,sBAAsB,EAAG,kCAA2C,CAAC;AAClF,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAChD,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAEhD,eAAO,MAAM,uBAAuB,2HAI1B,CAAC;AACX,eAAO,MAAM,yBAAyB,EAAG,4BAAqC,CAAC;AAE/E,eAAO,MAAM,iBAAiB,0CAA2C,CAAC;AAE1E,eAAO,MAAM,mBAAmB,kEAKtB,CAAC;AAEX,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,sDAMnB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,iBAAiB,CAahE,CAAC"}
package/dist/constants.js CHANGED
@@ -21,6 +21,14 @@ export const AI_PROFILE_BACKENDS = [
21
21
  "transformersjs",
22
22
  "custom",
23
23
  ];
24
+ /** Canonical media types for model input/output (aligned with OpenRouter catalog). */
25
+ export const MODEL_MODALITIES = [
26
+ "text",
27
+ "image",
28
+ "audio",
29
+ "video",
30
+ "file",
31
+ ];
24
32
  export const DEFAULT_RUNTIME_DEFAULTS = {
25
33
  reasoningEffort: "medium",
26
34
  outputMode: "text",
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,MAAM,CAAC,MAAM,0BAA0B,GACrC,mDAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,6BAA6B,GACxC,sDAAsD,CAAC;AAEzD,MAAM,CAAC,MAAM,yBAAyB,GACpC,kDAAkD,CAAC;AAErD,oFAAoF;AACpF,MAAM,CAAC,MAAM,yBAAyB,GACpC,qCAAqC,CAAC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,kCAA2C,CAAC;AAClF,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAChD,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAEhD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,sBAAsB;IACtB,yBAAyB;IACzB,yBAAyB;CACjB,CAAC;AACX,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAAqC,CAAC;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAgC;IACnE,eAAe,EAAE,QAAQ;IACzB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,KAAK;IACvB,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,YAAY;CACtB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,MAAM,CAAC,MAAM,0BAA0B,GACrC,mDAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,6BAA6B,GACxC,sDAAsD,CAAC;AAEzD,MAAM,CAAC,MAAM,yBAAyB,GACpC,kDAAkD,CAAC;AAErD,oFAAoF;AACpF,MAAM,CAAC,MAAM,yBAAyB,GACpC,qCAAqC,CAAC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,kCAA2C,CAAC;AAClF,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAChD,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAEhD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,sBAAsB;IACtB,yBAAyB;IACzB,yBAAyB;CACjB,CAAC;AACX,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAAqC,CAAC;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,QAAQ;CACA,CAAC;AAEX,sFAAsF;AACtF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;CACE,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAgC;IACnE,eAAe,EAAE,QAAQ;IACzB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,KAAK;IACvB,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,YAAY;CACtB,CAAC"}