@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.
- package/README.md +54 -31
- package/dist/buildCatalogFromOpenRouterApi.d.ts +3 -1
- package/dist/buildCatalogFromOpenRouterApi.d.ts.map +1 -1
- package/dist/buildCatalogFromOpenRouterApi.js +11 -69
- package/dist/buildCatalogFromOpenRouterApi.js.map +1 -1
- package/dist/constants.d.ts +5 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +15 -2
- package/dist/constants.js.map +1 -1
- package/dist/data/models-catalog.json +5036 -2055
- package/dist/data/models-profiles.json +3442 -866
- package/dist/data/models-registry.json +4594 -2772
- package/dist/ensureRemoteOpenRouterBackend.d.ts +4 -0
- package/dist/ensureRemoteOpenRouterBackend.d.ts.map +1 -0
- package/dist/ensureRemoteOpenRouterBackend.js +33 -0
- package/dist/ensureRemoteOpenRouterBackend.js.map +1 -0
- package/dist/evidence/adapterTypes.d.ts +14 -0
- package/dist/evidence/adapterTypes.d.ts.map +1 -0
- package/dist/evidence/adapterTypes.js +2 -0
- package/dist/evidence/adapterTypes.js.map +1 -0
- package/dist/evidence/adapters.d.ts +28 -0
- package/dist/evidence/adapters.d.ts.map +1 -0
- package/dist/evidence/adapters.js +102 -0
- package/dist/evidence/adapters.js.map +1 -0
- package/dist/evidence/index.d.ts +13 -0
- package/dist/evidence/index.d.ts.map +1 -0
- package/dist/evidence/index.js +9 -0
- package/dist/evidence/index.js.map +1 -0
- package/dist/evidence/local/probes.d.ts +58 -0
- package/dist/evidence/local/probes.d.ts.map +1 -0
- package/dist/evidence/local/probes.js +210 -0
- package/dist/evidence/local/probes.js.map +1 -0
- package/dist/evidence/openRouter.d.ts +11 -0
- package/dist/evidence/openRouter.d.ts.map +1 -0
- package/dist/evidence/openRouter.js +80 -0
- package/dist/evidence/openRouter.js.map +1 -0
- package/dist/evidence/patch.d.ts +8 -0
- package/dist/evidence/patch.d.ts.map +1 -0
- package/dist/evidence/patch.js +50 -0
- package/dist/evidence/patch.js.map +1 -0
- package/dist/evidence/recommend.d.ts +20 -0
- package/dist/evidence/recommend.d.ts.map +1 -0
- package/dist/evidence/recommend.js +142 -0
- package/dist/evidence/recommend.js.map +1 -0
- package/dist/evidence/refreshModelEvidence.d.ts +25 -0
- package/dist/evidence/refreshModelEvidence.d.ts.map +1 -0
- package/dist/evidence/refreshModelEvidence.js +104 -0
- package/dist/evidence/refreshModelEvidence.js.map +1 -0
- package/dist/evidence/scoreModelForTask.d.ts +13 -0
- package/dist/evidence/scoreModelForTask.d.ts.map +1 -0
- package/dist/evidence/scoreModelForTask.js +137 -0
- package/dist/evidence/scoreModelForTask.js.map +1 -0
- package/dist/evidence/scoringConfig.d.ts +11 -0
- package/dist/evidence/scoringConfig.d.ts.map +1 -0
- package/dist/evidence/scoringConfig.js +259 -0
- package/dist/evidence/scoringConfig.js.map +1 -0
- package/dist/evidence/types.d.ts +218 -0
- package/dist/evidence/types.d.ts.map +1 -0
- package/dist/evidence/types.js +2 -0
- package/dist/evidence/types.js.map +1 -0
- package/dist/finalProfileModelMappingPatch.d.ts +31 -0
- package/dist/finalProfileModelMappingPatch.d.ts.map +1 -0
- package/dist/finalProfileModelMappingPatch.js +405 -0
- package/dist/finalProfileModelMappingPatch.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/inferModelFamily.d.ts +8 -0
- package/dist/inferModelFamily.d.ts.map +1 -0
- package/dist/inferModelFamily.js +242 -0
- package/dist/inferModelFamily.js.map +1 -0
- package/dist/isConcreteModelId.d.ts +25 -0
- package/dist/isConcreteModelId.d.ts.map +1 -0
- package/dist/isConcreteModelId.js +58 -0
- package/dist/isConcreteModelId.js.map +1 -0
- package/dist/modelIdentity.d.ts.map +1 -1
- package/dist/modelIdentity.js +2 -1
- package/dist/modelIdentity.js.map +1 -1
- package/dist/modelsCatalog.d.ts +2 -2
- package/dist/modelsCatalog.d.ts.map +1 -1
- package/dist/modelsCatalog.js +36 -34
- package/dist/modelsCatalog.js.map +1 -1
- package/dist/openRouterProviderMap.d.ts +57 -0
- package/dist/openRouterProviderMap.d.ts.map +1 -0
- package/dist/openRouterProviderMap.js +120 -0
- package/dist/openRouterProviderMap.js.map +1 -0
- package/dist/profileRegistryV3.d.ts.map +1 -1
- package/dist/profileRegistryV3.js +30 -23
- package/dist/profileRegistryV3.js.map +1 -1
- package/dist/resolveInstructionTierAndBackend.d.ts.map +1 -1
- package/dist/resolveInstructionTierAndBackend.js +18 -5
- package/dist/resolveInstructionTierAndBackend.js.map +1 -1
- package/dist/resolveLocalRuntime.d.ts +22 -0
- package/dist/resolveLocalRuntime.d.ts.map +1 -0
- package/dist/resolveLocalRuntime.js +60 -0
- package/dist/resolveLocalRuntime.js.map +1 -0
- package/dist/resolveModelRouting.d.ts.map +1 -1
- package/dist/resolveModelRouting.js +8 -1
- package/dist/resolveModelRouting.js.map +1 -1
- package/dist/sourceCatalogProviders.d.ts +9 -0
- package/dist/sourceCatalogProviders.d.ts.map +1 -0
- package/dist/sourceCatalogProviders.js +51 -0
- package/dist/sourceCatalogProviders.js.map +1 -0
- package/dist/toOptimixerModelProfile.d.ts +32 -0
- package/dist/toOptimixerModelProfile.d.ts.map +1 -0
- package/dist/toOptimixerModelProfile.js +32 -0
- package/dist/toOptimixerModelProfile.js.map +1 -0
- package/dist/types.d.ts +6 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/validateFunctionalRouting.d.ts +14 -0
- package/dist/validateFunctionalRouting.d.ts.map +1 -0
- package/dist/validateFunctionalRouting.js +178 -0
- package/dist/validateFunctionalRouting.js.map +1 -0
- package/dist/validateProfileTransportPolicy.d.ts.map +1 -1
- package/dist/validateProfileTransportPolicy.js +19 -5
- package/dist/validateProfileTransportPolicy.js.map +1 -1
- package/dist/validation/openRouterAlignment.d.ts +1 -1
- package/dist/validation/openRouterAlignment.d.ts.map +1 -1
- package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
- package/dist/validation/validateModelsProfilesJson.js +6 -3
- package/dist/validation/validateModelsProfilesJson.js.map +1 -1
- package/dist/vendorModelId.d.ts +1 -1
- package/dist/vendorModelId.d.ts.map +1 -1
- package/dist/vendorModelId.js +4 -3
- package/dist/vendorModelId.js.map +1 -1
- 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
|
-
> **
|
|
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** —
|
|
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
|
-
| `
|
|
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 (
|
|
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
|
|
126
|
-
| `listAIProfiles({ catalogLane: "
|
|
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: "
|
|
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: "
|
|
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
|
-
-
|
|
837
|
-
|
|
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.
|
|
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` | `
|
|
871
|
-
| `fast` | Remote | **`default`** | `default` | `gpt-5.
|
|
872
|
-
| `balanced` | Remote | **`default`** | `default` | `gpt-5.
|
|
873
|
-
| `deep` | Remote | **`reasoning`** | `default` | `claude-sonnet-
|
|
874
|
-
| `pro` | Remote | **`default`** | `default` | `gpt-5.
|
|
875
|
-
| `json` | Remote | **`default`** | `default` | `gpt-5.
|
|
876
|
-
| `agentic` | Remote | **`default`** | `default` | `claude-sonnet-
|
|
877
|
-
| `research` | Remote | **`reasoning`** | `default` | `claude-sonnet-
|
|
878
|
-
| `cyber` | Remote | **`
|
|
879
|
-
| `content` | Remote | **`default`** | `default` | `claude-
|
|
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
|
-
| `
|
|
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`, `
|
|
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.
|
|
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.
|
|
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.
|
|
901
|
-
resolved.invocation.openrouter // { provider: "openrouter", modelId: "openai/gpt-5.
|
|
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
|
|
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":"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,uCAAuC,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"buildCatalogFromOpenRouterApi.js","sourceRoot":"","sources":["../src/buildCatalogFromOpenRouterApi.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -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.
|
|
5
|
-
export declare const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.
|
|
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>;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -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,
|
|
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.
|
|
4
|
-
export const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.
|
|
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",
|
package/dist/constants.js.map
CHANGED
|
@@ -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,
|
|
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"}
|