@x12i/ai-profiles 4.2.1 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +54 -31
  2. package/dist/buildCatalogFromOpenRouterApi.d.ts +3 -1
  3. package/dist/buildCatalogFromOpenRouterApi.d.ts.map +1 -1
  4. package/dist/buildCatalogFromOpenRouterApi.js +11 -69
  5. package/dist/buildCatalogFromOpenRouterApi.js.map +1 -1
  6. package/dist/constants.d.ts +5 -3
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/constants.js +15 -2
  9. package/dist/constants.js.map +1 -1
  10. package/dist/data/models-catalog.json +5036 -2055
  11. package/dist/data/models-profiles.json +3442 -866
  12. package/dist/data/models-registry.json +4594 -2772
  13. package/dist/ensureRemoteOpenRouterBackend.d.ts +4 -0
  14. package/dist/ensureRemoteOpenRouterBackend.d.ts.map +1 -0
  15. package/dist/ensureRemoteOpenRouterBackend.js +33 -0
  16. package/dist/ensureRemoteOpenRouterBackend.js.map +1 -0
  17. package/dist/evidence/adapterTypes.d.ts +14 -0
  18. package/dist/evidence/adapterTypes.d.ts.map +1 -0
  19. package/dist/evidence/adapterTypes.js +2 -0
  20. package/dist/evidence/adapterTypes.js.map +1 -0
  21. package/dist/evidence/adapters.d.ts +28 -0
  22. package/dist/evidence/adapters.d.ts.map +1 -0
  23. package/dist/evidence/adapters.js +102 -0
  24. package/dist/evidence/adapters.js.map +1 -0
  25. package/dist/evidence/index.d.ts +13 -0
  26. package/dist/evidence/index.d.ts.map +1 -0
  27. package/dist/evidence/index.js +9 -0
  28. package/dist/evidence/index.js.map +1 -0
  29. package/dist/evidence/local/probes.d.ts +58 -0
  30. package/dist/evidence/local/probes.d.ts.map +1 -0
  31. package/dist/evidence/local/probes.js +210 -0
  32. package/dist/evidence/local/probes.js.map +1 -0
  33. package/dist/evidence/openRouter.d.ts +11 -0
  34. package/dist/evidence/openRouter.d.ts.map +1 -0
  35. package/dist/evidence/openRouter.js +80 -0
  36. package/dist/evidence/openRouter.js.map +1 -0
  37. package/dist/evidence/patch.d.ts +8 -0
  38. package/dist/evidence/patch.d.ts.map +1 -0
  39. package/dist/evidence/patch.js +50 -0
  40. package/dist/evidence/patch.js.map +1 -0
  41. package/dist/evidence/recommend.d.ts +20 -0
  42. package/dist/evidence/recommend.d.ts.map +1 -0
  43. package/dist/evidence/recommend.js +142 -0
  44. package/dist/evidence/recommend.js.map +1 -0
  45. package/dist/evidence/refreshModelEvidence.d.ts +25 -0
  46. package/dist/evidence/refreshModelEvidence.d.ts.map +1 -0
  47. package/dist/evidence/refreshModelEvidence.js +104 -0
  48. package/dist/evidence/refreshModelEvidence.js.map +1 -0
  49. package/dist/evidence/scoreModelForTask.d.ts +13 -0
  50. package/dist/evidence/scoreModelForTask.d.ts.map +1 -0
  51. package/dist/evidence/scoreModelForTask.js +137 -0
  52. package/dist/evidence/scoreModelForTask.js.map +1 -0
  53. package/dist/evidence/scoringConfig.d.ts +11 -0
  54. package/dist/evidence/scoringConfig.d.ts.map +1 -0
  55. package/dist/evidence/scoringConfig.js +259 -0
  56. package/dist/evidence/scoringConfig.js.map +1 -0
  57. package/dist/evidence/types.d.ts +218 -0
  58. package/dist/evidence/types.d.ts.map +1 -0
  59. package/dist/evidence/types.js +2 -0
  60. package/dist/evidence/types.js.map +1 -0
  61. package/dist/finalProfileModelMappingPatch.d.ts +31 -0
  62. package/dist/finalProfileModelMappingPatch.d.ts.map +1 -0
  63. package/dist/finalProfileModelMappingPatch.js +405 -0
  64. package/dist/finalProfileModelMappingPatch.js.map +1 -0
  65. package/dist/index.d.ts +15 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +10 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/inferModelFamily.d.ts +8 -0
  70. package/dist/inferModelFamily.d.ts.map +1 -0
  71. package/dist/inferModelFamily.js +242 -0
  72. package/dist/inferModelFamily.js.map +1 -0
  73. package/dist/isConcreteModelId.d.ts +25 -0
  74. package/dist/isConcreteModelId.d.ts.map +1 -0
  75. package/dist/isConcreteModelId.js +58 -0
  76. package/dist/isConcreteModelId.js.map +1 -0
  77. package/dist/modelIdentity.d.ts.map +1 -1
  78. package/dist/modelIdentity.js +2 -1
  79. package/dist/modelIdentity.js.map +1 -1
  80. package/dist/modelsCatalog.d.ts +2 -2
  81. package/dist/modelsCatalog.d.ts.map +1 -1
  82. package/dist/modelsCatalog.js +36 -34
  83. package/dist/modelsCatalog.js.map +1 -1
  84. package/dist/openRouterProviderMap.d.ts +57 -0
  85. package/dist/openRouterProviderMap.d.ts.map +1 -0
  86. package/dist/openRouterProviderMap.js +120 -0
  87. package/dist/openRouterProviderMap.js.map +1 -0
  88. package/dist/profileRegistryV3.d.ts.map +1 -1
  89. package/dist/profileRegistryV3.js +30 -23
  90. package/dist/profileRegistryV3.js.map +1 -1
  91. package/dist/resolveInstructionTierAndBackend.d.ts.map +1 -1
  92. package/dist/resolveInstructionTierAndBackend.js +18 -5
  93. package/dist/resolveInstructionTierAndBackend.js.map +1 -1
  94. package/dist/resolveLocalRuntime.d.ts +22 -0
  95. package/dist/resolveLocalRuntime.d.ts.map +1 -0
  96. package/dist/resolveLocalRuntime.js +60 -0
  97. package/dist/resolveLocalRuntime.js.map +1 -0
  98. package/dist/resolveModelRouting.d.ts.map +1 -1
  99. package/dist/resolveModelRouting.js +8 -1
  100. package/dist/resolveModelRouting.js.map +1 -1
  101. package/dist/sourceCatalogProviders.d.ts +9 -0
  102. package/dist/sourceCatalogProviders.d.ts.map +1 -0
  103. package/dist/sourceCatalogProviders.js +51 -0
  104. package/dist/sourceCatalogProviders.js.map +1 -0
  105. package/dist/toOptimixerModelProfile.d.ts +32 -0
  106. package/dist/toOptimixerModelProfile.d.ts.map +1 -0
  107. package/dist/toOptimixerModelProfile.js +32 -0
  108. package/dist/toOptimixerModelProfile.js.map +1 -0
  109. package/dist/types.d.ts +6 -2
  110. package/dist/types.d.ts.map +1 -1
  111. package/dist/validateFunctionalRouting.d.ts +14 -0
  112. package/dist/validateFunctionalRouting.d.ts.map +1 -0
  113. package/dist/validateFunctionalRouting.js +178 -0
  114. package/dist/validateFunctionalRouting.js.map +1 -0
  115. package/dist/validateProfileTransportPolicy.d.ts.map +1 -1
  116. package/dist/validateProfileTransportPolicy.js +19 -5
  117. package/dist/validateProfileTransportPolicy.js.map +1 -1
  118. package/dist/validation/openRouterAlignment.d.ts +1 -1
  119. package/dist/validation/openRouterAlignment.d.ts.map +1 -1
  120. package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
  121. package/dist/validation/validateModelsProfilesJson.js +6 -3
  122. package/dist/validation/validateModelsProfilesJson.js.map +1 -1
  123. package/dist/vendorModelId.d.ts +1 -1
  124. package/dist/vendorModelId.d.ts.map +1 -1
  125. package/dist/vendorModelId.js +4 -3
  126. package/dist/vendorModelId.js.map +1 -1
  127. package/package.json +2 -1
package/README.md CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  Resolve AI profile names into concrete model choices. The package ships JSON in `src/data/` as the offline fallback. By default, registry data is fetched from public assets, validated, and cached in memory.
4
4
 
5
- > **v3.2** adds **`normalizeInvokeModel`**, **`resolveAndNormalizeInvokeModel`**, and **`resolveAndNormalizeBundledInvokeModel`** for gateway invoke wire shape. Downstream repos should pin **`"@x12i/ai-profiles": "^3.2.0"`**.
5
+ > **v4.4** ships production routing (OpenRouter default + vendor-direct), product-line `*-latest-model` vendor routes, Gemini-backed google lanes, and **unversioned** open-assets URLs. Pin **`"@x12i/ai-profiles": "^4.4.0"`**. Upload `models-profiles.json` / `models-catalog.json` to open-assets **without** `.v4` / `.v2` suffixes.
6
+ >
7
+ > **v4.3** adds **`isConcreteModelId`**, **`isModelProfileReference`**, and **`toOptimixerModelProfile`** so consumers do not invent concrete-vs-profile or reasoning heuristics.
8
+ >
9
+ > **v3.2** adds **`normalizeInvokeModel`**, **`resolveAndNormalizeInvokeModel`**, and **`resolveAndNormalizeBundledInvokeModel`** for gateway invoke wire shape.
6
10
  >
7
11
  > **v3.0** removes legacy resolution inputs: shortcuts, bare profiles, and aliases. Only four resolution forms are accepted — `profile/choice`, vendor slug, gateway wire, and `{ provider, modelId }`. See [CHANGELOG.md](CHANGELOG.md).
8
12
  >
@@ -49,6 +53,17 @@ Graph JSON, studio defaults, and run overrides store **profile slot strings only
49
53
 
50
54
  Canonical storage form is **`profile/choice`** (separator `/`). Use **`formatProfileChoiceKey(profile, choice)`** when writing slots and **`isKnownProfileInput(input)`** (or **`isKnownProfileChoice`** / **`matchStrictProfileInput`**) before persist or execute. Always include the choice segment — even for the profile default (`cheap/default`, not bare `cheap`).
51
55
 
56
+ **Classification SSOT (do not re-implement in consumers):**
57
+
58
+ | Question | API |
59
+ |----------|-----|
60
+ | Is this a profile-side authoring ref? | `isModelProfileReference(value)` (or strict `isKnownProfileInput` for `profile/choice` only) |
61
+ | Is this a concrete catalog model? | `isConcreteModelId(value)` |
62
+ | Reasoning capability? | `isReasoningModel(value)` / `resolved.modelSignals.isReasoningModel` |
63
+ | Optimixer `{ provider, model, reasoning }`? | `toOptimixerModelProfile(wire)` |
64
+
65
+ Never classify concrete models via vendor keywords (`gpt-`, `claude`, `gemini`) or `looksLike*` helpers — gaps belong upstream in this package.
66
+
52
67
  ```json
53
68
  "modelConfig": {
54
69
  "cases": [
@@ -85,12 +100,10 @@ Profiles are grouped by **what kind of work** they represent—not only by price
85
100
  | `content` | creative | Prose, marketing copy, programmatic SEO, brand voice. |
86
101
  | `sum` | analysis | Document triage, digests, compressing very large corpora. |
87
102
  | `vol` | agent | Volume/economic agent lane (Flash default, Pro for hard/final). |
88
- | `vision` | vision | Image input; `catalogLane: "image"`. |
89
- | `vision` | multimodal | Image understanding, OCR, charts, scanned PDF structure extraction. |
90
103
  | `coding` | engineering | Software engineering: implementation, refactors, reviews, debugging. |
91
104
  | `extraction` | extraction | NER, classification, taxonomy mapping, entity extraction, document labeling. |
92
105
  | `routing` | routing | Intent classification, record routing, workflow branching (cheapest viable). |
93
- | `local` | local | **CPU only** — on-device / offline inference (llama.cpp GGUF, Transformers.js). **No OpenRouter.** |
106
+ | `local` | local | **CPU only** — runtime adapters (llama.cpp, Ollama, LM Studio, vLLM, Transformers.js, ONNX). **No OpenRouter.** |
94
107
 
95
108
  ### Typical choices per profile
96
109
 
@@ -110,20 +123,21 @@ Each profile’s `choices` in `models-profiles.json` follow a consistent pattern
110
123
  | `content` | `default`, `pseo_bulk`, `brand_voice` | Natural prose vs batch pSEO schema vs premium copy |
111
124
  | `sum` | `default`, `mega_context` | Fast digest (Haiku) vs multi-hundred-k token compression |
112
125
  | `vol` | `default`, `flash`, `pro`, `final` | Volume/economic agent lane (Flash default, Pro for hard/final) |
113
- | `vision` | `default`, `document_ocr` | General multimodal vs schema OCR from scans/PDFs |
114
- | `local` | `llama_cpp_gguf`, `transformersjs_default` | **CPU / offline** — GGUF via llama.cpp vs Hugging Face Transformers.js (no cloud LLM) |
126
+ | `local` | `llama_cpp_gguf`, `ollama`, `lmstudio_openai`, `vllm_openai`, `transformersjs_text`, `onnx_runtime` | **CPU / offline adapters** — env-probed local runtimes (no cloud LLM) |
115
127
 
116
128
  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.
117
129
 
130
+ Vendor-family profiles (`openai`, `claude`, `google`, `grok`, `deepseek`, …) also expose **`default` / `cheapest` / `best`** plus product-line **`<family>-latest-model`** choices (e.g. `google/flash-lite-latest-model`). Those choice *names* are aliases; `modelId` is always a **concrete** pinned SKU refreshed from the catalog.
131
+
118
132
  ### OpenRouter-only and catalog lanes
119
133
 
120
- Not every profile is OpenRouter-backed: **`local`** is CPU/self-hosted only (2 choices, no catalog entry). All other bundled profile choices (59/61) map to an entry in `models-catalog.json` with an active OpenRouter slug.
134
+ Not every profile is OpenRouter-backed: **`local`** is CPU/self-hosted only (no catalog entry). All other bundled remote choices map to an entry in `models-catalog.json` with an active OpenRouter slug.
121
135
 
122
136
  | Option | Purpose |
123
137
  |--------|---------|
124
138
  | `requireOpenRouterCatalog: true` | Fail resolution if the chosen model is not in the catalog with an active OpenRouter id (use for production paths that must not call vendor-direct guesses). |
125
- | `catalogLane: "text" \| "image" \| …` | Only resolve profiles declared for that OpenRouter browser lane. Tier profiles (`cheap`, `cyber`, `vol`, …) are **`text`**; **`vision`** is **`image`**. Lanes without profiles yet (`embeddings`, `rerank`, `speech`, `transcription`, …) can be added when you introduce lane-specific profiles. |
126
- | `listAIProfiles({ catalogLane: "image" })` | List only lane-matching profiles. |
139
+ | `catalogLane: "text" \| "image" \| …` | Only resolve profiles declared for that OpenRouter browser lane. Tier profiles (`cheap`, `cyber`, `vol`, …) are **`text`**. Lanes without profiles yet (`image`, `embeddings`, `rerank`, `speech`, `transcription`, …) can be added when you introduce lane-specific profiles. |
140
+ | `listAIProfiles({ catalogLane: "text" })` | List only lane-matching profiles. |
127
141
 
128
142
  ```ts
129
143
  await resolveAIProfile("cyber/default", {
@@ -131,7 +145,7 @@ await resolveAIProfile("cyber/default", {
131
145
  requireOpenRouterCatalog: true,
132
146
  });
133
147
 
134
- await listAIProfiles({ catalogLane: "image" }); // → vision only
148
+ await listAIProfiles({ catalogLane: "text" });
135
149
  ```
136
150
 
137
151
  ### Cost tiers (optional)
@@ -251,6 +265,9 @@ npm install @x12i/ai-profiles
251
265
  | `isKnownProfileChoice(input)` | Yes (bundled only) | Whether input is a known valid `profile/choice` key |
252
266
  | `isKnownProfileInput(input)` | Yes (bundled only) | Profile-intent gate: known `profile/choice` → `true`; concrete model ids → `false` |
253
267
  | `isKnownProfileOrShortcut(input)` | Yes (bundled only) | Alias of `isKnownProfileInput` (shortcuts are not supported) |
268
+ | `isModelProfileReference(input)` | Yes (bundled only) | Authoring gate: known `profile/choice`, bare profile key, or legacy `profile@choice` |
269
+ | `isConcreteModelId(input)` | Yes (bundled only) | Catalog-backed concrete model gate (no vendor-keyword heuristics) |
270
+ | `toOptimixerModelProfile(input)` | Yes (bundled only) | `{ provider, model, reasoning }` from catalog wire (optional profile resolve) |
254
271
  | `isKnownProfileChoiceInput(registry, input)` | Yes | Same as above with an explicit registry |
255
272
  | `getBundledRegistry()` | Yes | Sync bundled profiles registry (no network) |
256
273
  | `resolveBundledAIProfile(input, options)` | Yes | Strict `profile/choice` → model, pricing, runtime (`source: "bundled"`) |
@@ -349,7 +366,7 @@ import {
349
366
  // 4. { provider, modelId } → catalog
350
367
 
351
368
  ensureConcreteModel("cheap/default");
352
- // → { provider: "openrouter", modelId: "google/gemini-2.5-flash-lite", profileChoice: { profile: "cheap", choice: "default" } }
369
+ // → { provider: "openrouter", modelId: "deepseek/deepseek-v4-flash", profileChoice: { profile: "cheap", choice: "default" } }
353
370
 
354
371
  ensureConcreteModel("google/gemini-2.5-flash-lite");
355
372
  // → { provider: "openrouter", modelId: "google/gemini-2.5-flash-lite", matchConfidence: "exact" }
@@ -833,8 +850,12 @@ The `version` field in the JSON files (and `registryVersion` on resolved output)
833
850
 
834
851
  ## Remote assets
835
852
 
836
- - `https://open-assets.x12i.com/models-profiles.v4.json`
837
- - `https://open-assets.x12i.com/models-catalog.v2.json`
853
+ Upload the bundled JSON files **as-is** (no filename version suffix):
854
+
855
+ - `https://open-assets.x12i.com/models-profiles.json`
856
+ - `https://open-assets.x12i.com/models-catalog.json`
857
+
858
+ Older `.v4` / `.v2` URLs are intentionally retired — point every consumer at the unversioned paths above.
838
859
 
839
860
  ## Integration example
840
861
 
@@ -858,7 +879,7 @@ const mainInvoke = await resolveAndNormalizeInvokeModel(slots.skillModel, {
858
879
  catalogLane: "text",
859
880
  preferOpenRouter: true,
860
881
  });
861
- // mainInvoke → { provider: "openrouter", model: "openai/gpt-5.4", routing: "openrouter", ... }
882
+ // mainInvoke → { provider: "openrouter", model: "openai/gpt-5.6-terra", routing: "openrouter", ... }
862
883
  ```
863
884
 
864
885
  ## Profile matrix (FuncX contract)
@@ -867,29 +888,31 @@ Default choice per profile (vendor-native ids in registry; OpenRouter slugs when
867
888
 
868
889
  | Profile | Inference | Instruction tier | Default choice | Example model |
869
890
  |---------|-----------|------------------|----------------|---------------|
870
- | `cheap` | Remote | **`default`** | `default` | `gemini-2.5-flash-lite` |
871
- | `fast` | Remote | **`default`** | `default` | `gpt-5.4-mini` |
872
- | `balanced` | Remote | **`default`** | `default` | `gpt-5.4` |
873
- | `deep` | Remote | **`reasoning`** | `default` | `claude-sonnet-4.6` |
874
- | `pro` | Remote | **`default`** | `default` | `gpt-5.5` |
875
- | `json` | Remote | **`default`** | `default` | `gpt-5.4-mini` (schema output) |
876
- | `agentic` | Remote | **`default`** | `default` | `claude-sonnet-4.6` |
877
- | `research` | Remote | **`reasoning`** | `default` | `claude-sonnet-4.6` |
878
- | `cyber` | Remote | **`reasoning`** | `default` | `claude-sonnet-4.6` |
879
- | `content` | Remote | **`default`** | `default` | `claude-sonnet-4.6` |
891
+ | `cheap` | Remote | **`default`** | `default` | `deepseek-v4-flash` |
892
+ | `fast` | Remote | **`default`** | `default` | `gpt-5.6-luna` |
893
+ | `balanced` | Remote | **`default`** | `default` | `gpt-5.6-terra` |
894
+ | `deep` | Remote | **`reasoning`** | `default` | `claude-sonnet-5` |
895
+ | `pro` | Remote | **`default`** | `default` | `gpt-5.6-sol-pro` |
896
+ | `json` | Remote | **`default`** | `default` | `gpt-5.6-luna` (schema output) |
897
+ | `agentic` | Remote | **`default`** | `default` | `claude-sonnet-5` |
898
+ | `research` | Remote | **`reasoning`** | `default` | `claude-sonnet-5` |
899
+ | `cyber` | Remote | **`default`** | `default` | `deepseek-v4-flash` |
900
+ | `content` | Remote | **`default`** | `default` | `claude-fable-5` |
880
901
  | `sum` | Remote | **`default`** | `default` | `claude-haiku-4.5` |
881
- | `vision` | Remote | **`default`** | `default` | `gpt-5.4` |
902
+ | `vol` | Remote | **`default`** | `default` | `deepseek-v4-flash` |
903
+ | `routing` | Remote | **`default`** | `default` | `gemini-2.5-flash-lite` |
904
+ | `extraction` | Remote | **`default`** | `default` | `gemini-2.5-flash-lite` |
905
+ | `coding` | Remote | **`default`** | `default` | `deepseek-v4-flash` |
882
906
  | `local` | CPU (no OpenRouter) | **`cpu`** | `llama_cpp_gguf` | `funcx:llama-cpp:gguf` |
883
- | `local` | CPU | **`cpu`** | `transformersjs_default` | `Xenova/distilbart-cnn-6-6` |
884
907
 
885
- Local CPU choices expose FuncX env keys in `resolved.metadata` (e.g. `LLAMA_CPP_MODEL_PATH`, `TRANSFORMERS_JS_MODEL_ID`).
908
+ Local CPU choices expose FuncX / runtime env keys in `resolved.metadata` (e.g. `LLAMA_CPP_MODEL_PATH`, `OLLAMA_MODEL`, `VLLM_BASE_URL`).
886
909
 
887
910
  ### OpenRouter model ids
888
911
 
889
- Remote profile choices in `models-profiles.json` use vendor-native `modelId` values (e.g. `gpt-5.4`, `gemini-2.5-flash-lite`). By default, `resolveAIProfile` returns OpenRouter-ready output:
912
+ Remote profile choices in `models-profiles.json` use vendor-native `modelId` values (e.g. `gpt-5.6-sol-pro`, `gemini-2.5-flash-lite`). By default, `resolveAIProfile` returns OpenRouter-ready output:
890
913
 
891
914
  - `provider`: `"openrouter"`
892
- - `modelId`: full slug such as `openai/gpt-5.4`
915
+ - `modelId`: full slug such as `openai/gpt-5.6-sol-pro` (with correct OpenRouter prefixes, e.g. `x-ai/…`)
893
916
  - `routing`: `"openrouter"`
894
917
 
895
918
  Pass `preferOpenRouter: false` (or `PREFER_OPENROUTER=0`) to get vendor-native `provider` + `modelId` for direct API calls.
@@ -897,8 +920,8 @@ Pass `preferOpenRouter: false` (or `PREFER_OPENROUTER=0`) to get vendor-native `
897
920
  Every resolved profile includes **`invocation`** with both call shapes:
898
921
 
899
922
  ```ts
900
- resolved.invocation.direct // { provider: "openai", modelId: "gpt-5.4" }
901
- resolved.invocation.openrouter // { provider: "openrouter", modelId: "openai/gpt-5.4" } | null
923
+ resolved.invocation.direct // { provider: "openai", modelId: "gpt-5.6-sol-pro" }
924
+ resolved.invocation.openrouter // { provider: "openrouter", modelId: "openai/gpt-5.6-sol-pro" } | null
902
925
  ```
903
926
 
904
927
  Top-level `provider` / `modelId` / `routing` remain the **active** path selected by `preferOpenRouter`.
@@ -26,7 +26,9 @@ export type TextOnlyCatalogOptions = {
26
26
  /** Include `:free` tier OpenRouter SKUs (default false). */
27
27
  includeFree?: boolean;
28
28
  };
29
- /** True when the model is a text chat SKU (text output; no audio/video; not image generation). */
29
+ /** True when the model is a text-chat SKU (text output only; not image/audio/video generation).
30
+ * Multimodal *input* (image/audio/video/file) is allowed — required for Gemini and similar.
31
+ */
30
32
  export declare function isTextOnlyOpenRouterModel(model: OpenRouterApiModel): boolean;
31
33
  export declare function filterTextOnlyOpenRouterModels(models: OpenRouterApiModel[], options?: TextOnlyCatalogOptions): OpenRouterApiModel[];
32
34
  /** Build the legacy OpenRouter-only catalog document (fed into {@link normalizeModelsCatalog}). */
@@ -1 +1 @@
1
- {"version":3,"file":"buildCatalogFromOpenRouterApi.d.ts","sourceRoot":"","sources":["../src/buildCatalogFromOpenRouterApi.ts"],"names":[],"mappings":"AAOA,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;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,kGAAkG;AAClG,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAuB5E;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,kBAAkB,EAAE,EAC5B,OAAO,GAAE,sBAA2B,GACnC,kBAAkB,EAAE,CAYtB;AAkKD,mGAAmG;AACnG,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,GAAE,sBAA2B,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBzB;AAED,2EAA2E;AAC3E,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,GAAE,sBAA2B,GACnC,iBAAiB,CAqBnB;AAED,0EAA0E;AAC1E,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,2BAA2B,GACpC,iBAAiB,CAEnB"}
1
+ {"version":3,"file":"buildCatalogFromOpenRouterApi.d.ts","sourceRoot":"","sources":["../src/buildCatalogFromOpenRouterApi.ts"],"names":[],"mappings":"AASA,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;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAmB5E;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,kBAAkB,EAAE,EAC5B,OAAO,GAAE,sBAA2B,GACnC,kBAAkB,EAAE,CAYtB;AA0GD,mGAAmG;AACnG,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,GAAE,sBAA2B,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBzB;AAED,2EAA2E;AAC3E,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,2BAA2B,EACrC,OAAO,GAAE,sBAA2B,GACnC,iBAAiB,CAqBnB;AAED,0EAA0E;AAC1E,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,2BAA2B,GACpC,iBAAiB,CAEnB"}
@@ -1,18 +1,19 @@
1
1
  import { OPENROUTER_MODELS_API_URL } from "./constants.js";
2
+ import { inferModelFamily } from "./inferModelFamily.js";
2
3
  import { filterSupersededOpenRouterPreviewModels } from "./openRouterSlugPolicy.js";
3
4
  import { MODELS_CATALOG_REMOTE_URL, normalizeModelsCatalog, roundCatalogPricingUsd, } from "./modelsCatalog.js";
4
- /** True when the model is a text chat SKU (text output; no audio/video; not image generation). */
5
+ import { normalizeOpenRouterProviderPrefix } from "./openRouterProviderMap.js";
6
+ /** True when the model is a text-chat SKU (text output only; not image/audio/video generation).
7
+ * Multimodal *input* (image/audio/video/file) is allowed — required for Gemini and similar.
8
+ */
5
9
  export function isTextOnlyOpenRouterModel(model) {
6
- const input = model.architecture?.input_modalities ?? ["text"];
7
10
  const output = model.architecture?.output_modalities ?? ["text"];
8
11
  const modality = model.architecture?.modality ?? "";
9
12
  const textOnlyOutput = output.every((m) => m.toLowerCase() === "text");
10
13
  if (!textOnlyOutput) {
11
14
  return false;
12
15
  }
13
- if (input.some((m) => ["audio", "video"].includes(m.toLowerCase()))) {
14
- return false;
15
- }
16
+ // Exclude generation / media-output architectures even when listed oddly.
16
17
  if (/->\s*image|->\s*audio|->\s*video/i.test(modality)) {
17
18
  return false;
18
19
  }
@@ -54,68 +55,6 @@ function inferFamily(modelId) {
54
55
  }
55
56
  return prefix || undefined;
56
57
  }
57
- function inferModelFamily(provider, vendorModelId) {
58
- const p = (provider ?? "").toLowerCase();
59
- const id = vendorModelId.toLowerCase();
60
- if (p === "openai") {
61
- // - "o*" reasoning line (o1/o3/o4…)
62
- // - "mini" (gpt-*-mini)
63
- // - "nano" (gpt-*-nano)
64
- // - fallback "gpt" for everything else
65
- if (/^o\d/.test(id) || /^o\d-/.test(id) || /^o[34]-/.test(id)) {
66
- return "o";
67
- }
68
- if (/\bmini\b/.test(id) || /-mini($|-)/.test(id)) {
69
- return "mini";
70
- }
71
- if (/\bnano\b/.test(id) || /-nano($|-)/.test(id)) {
72
- return "nano";
73
- }
74
- return "gpt";
75
- }
76
- if (p === "anthropic") {
77
- if (id.includes("sonnet"))
78
- return "sonnet";
79
- if (id.includes("opus"))
80
- return "opus";
81
- if (id.includes("haiku"))
82
- return "haiku";
83
- if (id.includes("fable"))
84
- return "fable";
85
- return undefined;
86
- }
87
- if (p === "google") {
88
- if (id.includes("flash"))
89
- return "flash";
90
- if (id.includes("pro"))
91
- return "pro";
92
- if (id.startsWith("gemma"))
93
- return "gemma";
94
- return undefined;
95
- }
96
- if (p === "deepseek") {
97
- if (id.startsWith("deepseek-r1"))
98
- return "reasoner";
99
- if (id.startsWith("deepseek-chat"))
100
- return "chat";
101
- if (id.startsWith("deepseek-v"))
102
- return "chat";
103
- return undefined;
104
- }
105
- if (p === "minimax") {
106
- if (id === "minimax-01" || id.endsWith("-01"))
107
- return "legacy";
108
- if (id.startsWith("minimax-m"))
109
- return "m";
110
- return undefined;
111
- }
112
- if (p === "xai") {
113
- if (id.startsWith("grok"))
114
- return "grok";
115
- return undefined;
116
- }
117
- return undefined;
118
- }
119
58
  function mapModalities(model) {
120
59
  const input = model.architecture?.input_modalities ?? ["text"];
121
60
  const output = model.architecture?.output_modalities ?? ["text"];
@@ -142,14 +81,17 @@ function inferCapabilities(supported) {
142
81
  }
143
82
  function mapLegacyEntry(model) {
144
83
  const pricing = model.pricing ?? {};
145
- const provider = inferFamily(model.id);
84
+ const rawPrefix = inferFamily(model.id);
85
+ const provider = rawPrefix
86
+ ? normalizeOpenRouterProviderPrefix(rawPrefix)
87
+ : undefined;
146
88
  const slash = model.id.indexOf("/");
147
89
  const vendorModelId = slash > 0 ? model.id.slice(slash + 1) : model.id;
148
90
  return {
149
91
  modelId: model.id,
150
92
  canonicalSlug: model.canonical_slug,
151
93
  displayName: model.name,
152
- family: provider,
94
+ family: provider ?? rawPrefix,
153
95
  modelFamily: inferModelFamily(provider, vendorModelId),
154
96
  status: model.expiration_date ? "deprecated" : "active",
155
97
  releasedAt: typeof model.created === "number" && Number.isFinite(model.created)
@@ -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,8 +1,8 @@
1
1
  import type { AIRuntimeDefaults } from "./types.js";
2
2
  export declare const DEFAULT_CACHE_TTL_MS: number;
3
3
  export declare const DEFAULT_FETCH_TIMEOUT_MS = 5000;
4
- export declare const REMOTE_MODELS_PROFILES_URL = "https://open-assets.x12i.com/models-profiles.v4.json";
5
- export declare const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.v2.json";
4
+ export declare const REMOTE_MODELS_PROFILES_URL = "https://open-assets.x12i.com/models-profiles.json";
5
+ export declare const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.json";
6
6
  /** Public OpenRouter model list (used by maintainers to regenerate the catalog). */
7
7
  export declare const OPENROUTER_MODELS_API_URL = "https://openrouter.ai/api/v1/models";
8
8
  export declare const MODELS_PROFILES_SCHEMA_V3: "x12i.ai-profiles.model-registry.v3";
@@ -10,7 +10,9 @@ export declare const MODELS_PROFILES_SCHEMA_V4: "x12i.ai-profiles.model-registry
10
10
  /** Bundled/remote loaders accept v4 only (v3 kept for reference / historical migrations). */
11
11
  export declare const MODELS_PROFILES_SCHEMAS: readonly ["x12i.ai-profiles.model-registry.v4"];
12
12
  export declare const INSTRUCTION_TIERS: readonly ["default", "cpu", "reasoning"];
13
- export declare const AI_PROFILE_BACKENDS: readonly ["openrouter", "llama-cpp", "transformersjs", "custom"];
13
+ export declare const AI_PROFILE_BACKENDS: readonly ["openrouter", "llama-cpp", "ollama", "lmstudio", "vllm", "transformersjs", "onnxruntime", "custom"];
14
+ /** Local-only backends (never OpenRouter). */
15
+ export declare const LOCAL_PROFILE_BACKENDS: readonly ["llama-cpp", "ollama", "lmstudio", "vllm", "transformersjs", "onnxruntime"];
14
16
  /** Canonical media types for model input/output (aligned with OpenRouter catalog). */
15
17
  export declare const MODEL_MODALITIES: readonly ["text", "image", "audio", "video", "file"];
16
18
  export declare const DEFAULT_RUNTIME_DEFAULTS: Required<AIRuntimeDefaults>;
@@ -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,yDACiB,CAAC;AAEzD,eAAO,MAAM,yBAAyB,wDACiB,CAAC;AAExD,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,wCACC,CAAC;AAExC,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAEhD,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAEhD,6FAA6F;AAC7F,eAAO,MAAM,uBAAuB,iDAAuC,CAAC;AAC5E,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"}
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,yBAAyB,qDACc,CAAC;AAErD,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,wCACC,CAAC;AAExC,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAEhD,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAEhD,6FAA6F;AAC7F,eAAO,MAAM,uBAAuB,iDAAuC,CAAC;AAC5E,eAAO,MAAM,iBAAiB,0CAA2C,CAAC;AAE1E,eAAO,MAAM,mBAAmB,+GAStB,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,sBAAsB,uFAOzB,CAAC;AAEX,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,sDAMnB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,iBAAiB,CAahE,CAAC"}
package/dist/constants.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export const DEFAULT_CACHE_TTL_MS = 24 * 60 * 60 * 1000;
2
2
  export const DEFAULT_FETCH_TIMEOUT_MS = 5000;
3
- export const REMOTE_MODELS_PROFILES_URL = "https://open-assets.x12i.com/models-profiles.v4.json";
4
- export const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.v2.json";
3
+ export const REMOTE_MODELS_PROFILES_URL = "https://open-assets.x12i.com/models-profiles.json";
4
+ export const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.json";
5
5
  /** Public OpenRouter model list (used by maintainers to regenerate the catalog). */
6
6
  export const OPENROUTER_MODELS_API_URL = "https://openrouter.ai/api/v1/models";
7
7
  export const MODELS_PROFILES_SCHEMA_V3 = "x12i.ai-profiles.model-registry.v3";
@@ -12,9 +12,22 @@ export const INSTRUCTION_TIERS = ["default", "cpu", "reasoning"];
12
12
  export const AI_PROFILE_BACKENDS = [
13
13
  "openrouter",
14
14
  "llama-cpp",
15
+ "ollama",
16
+ "lmstudio",
17
+ "vllm",
15
18
  "transformersjs",
19
+ "onnxruntime",
16
20
  "custom",
17
21
  ];
22
+ /** Local-only backends (never OpenRouter). */
23
+ export const LOCAL_PROFILE_BACKENDS = [
24
+ "llama-cpp",
25
+ "ollama",
26
+ "lmstudio",
27
+ "vllm",
28
+ "transformersjs",
29
+ "onnxruntime",
30
+ ];
18
31
  /** Canonical media types for model input/output (aligned with OpenRouter catalog). */
19
32
  export const MODEL_MODALITIES = [
20
33
  "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,sDAAsD,CAAC;AAEzD,MAAM,CAAC,MAAM,yBAAyB,GACpC,qDAAqD,CAAC;AAExD,oFAAoF;AACpF,MAAM,CAAC,MAAM,yBAAyB,GACpC,qCAAqC,CAAC;AAExC,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAEhD,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAEhD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,yBAAyB,CAAU,CAAC;AAC5E,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"}
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,yBAAyB,GACpC,kDAAkD,CAAC;AAErD,oFAAoF;AACpF,MAAM,CAAC,MAAM,yBAAyB,GACpC,qCAAqC,CAAC;AAExC,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAEhD,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAEhD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,yBAAyB,CAAU,CAAC;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,UAAU;IACV,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,QAAQ;CACA,CAAC;AAEX,8CAA8C;AAC9C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW;IACX,QAAQ;IACR,UAAU;IACV,MAAM;IACN,gBAAgB;IAChB,aAAa;CACL,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"}