@x12i/ai-profiles 2.0.0 → 2.1.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 +150 -44
- package/dist/buildCatalogFromOpenRouterApi.d.ts.map +1 -1
- package/dist/buildCatalogFromOpenRouterApi.js +2 -2
- package/dist/buildCatalogFromOpenRouterApi.js.map +1 -1
- package/dist/buildResolvedProfile.d.ts.map +1 -1
- package/dist/buildResolvedProfile.js +7 -0
- package/dist/buildResolvedProfile.js.map +1 -1
- package/dist/costTiers.d.ts +4 -0
- package/dist/costTiers.d.ts.map +1 -0
- package/dist/costTiers.js +20 -0
- package/dist/costTiers.js.map +1 -0
- package/dist/data/models-catalog.json +10 -10
- package/dist/data/models-profiles.bak.json +2336 -0
- package/dist/data/models-profiles.json +202 -18
- package/dist/data/models-profiles.schema.json +29 -0
- package/dist/data/profiles-shortcuts.json +86 -34
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/isKnownProfileChoice.d.ts +6 -0
- package/dist/isKnownProfileChoice.d.ts.map +1 -0
- package/dist/isKnownProfileChoice.js +11 -0
- package/dist/isKnownProfileChoice.js.map +1 -0
- package/dist/listAIProfileChoices.d.ts +6 -0
- package/dist/listAIProfileChoices.d.ts.map +1 -0
- package/dist/listAIProfileChoices.js +50 -0
- package/dist/listAIProfileChoices.js.map +1 -0
- package/dist/listAIProfiles.d.ts.map +1 -1
- package/dist/listAIProfiles.js +23 -0
- package/dist/listAIProfiles.js.map +1 -1
- package/dist/modalityPolicy.d.ts +4 -1
- package/dist/modalityPolicy.d.ts.map +1 -1
- package/dist/modalityPolicy.js +82 -3
- package/dist/modalityPolicy.js.map +1 -1
- package/dist/modelInputFallback.d.ts.map +1 -1
- package/dist/modelInputFallback.js +12 -2
- package/dist/modelInputFallback.js.map +1 -1
- package/dist/modelsCatalog.d.ts +5 -0
- package/dist/modelsCatalog.d.ts.map +1 -1
- package/dist/modelsCatalog.js +32 -2
- package/dist/modelsCatalog.js.map +1 -1
- package/dist/profileChoiceKey.d.ts +35 -0
- package/dist/profileChoiceKey.d.ts.map +1 -0
- package/dist/profileChoiceKey.js +81 -0
- package/dist/profileChoiceKey.js.map +1 -0
- package/dist/profileDiscoveryMatch.d.ts +15 -0
- package/dist/profileDiscoveryMatch.d.ts.map +1 -0
- package/dist/profileDiscoveryMatch.js +17 -0
- package/dist/profileDiscoveryMatch.js.map +1 -0
- package/dist/resolveAIProfile.d.ts +4 -5
- package/dist/resolveAIProfile.d.ts.map +1 -1
- package/dist/resolveAIProfile.js +57 -82
- package/dist/resolveAIProfile.js.map +1 -1
- package/dist/resolveAIProfileByTags.d.ts +2 -2
- package/dist/resolveAIProfileByTags.d.ts.map +1 -1
- package/dist/resolveAIProfileByTags.js +28 -10
- package/dist/resolveAIProfileByTags.js.map +1 -1
- package/dist/resolveAIProfileWithCostAlternatives.d.ts +17 -0
- package/dist/resolveAIProfileWithCostAlternatives.d.ts.map +1 -0
- package/dist/resolveAIProfileWithCostAlternatives.js +129 -0
- package/dist/resolveAIProfileWithCostAlternatives.js.map +1 -0
- package/dist/resolveCatalogModel.d.ts +7 -0
- package/dist/resolveCatalogModel.d.ts.map +1 -0
- package/dist/resolveCatalogModel.js +34 -0
- package/dist/resolveCatalogModel.js.map +1 -0
- package/dist/resolveSecondaryModel.d.ts +6 -0
- package/dist/resolveSecondaryModel.d.ts.map +1 -0
- package/dist/resolveSecondaryModel.js +91 -0
- package/dist/resolveSecondaryModel.js.map +1 -0
- package/dist/secondaryModel.d.ts +37 -0
- package/dist/secondaryModel.d.ts.map +1 -0
- package/dist/secondaryModel.js +160 -0
- package/dist/secondaryModel.js.map +1 -0
- package/dist/types.d.ts +145 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/validateProfileCatalogLinkage.d.ts.map +1 -1
- package/dist/validateProfileCatalogLinkage.js +2 -1
- package/dist/validateProfileCatalogLinkage.js.map +1 -1
- package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
- package/dist/validation/validateModelsProfilesJson.js +73 -9
- package/dist/validation/validateModelsProfilesJson.js.map +1 -1
- package/dist/vendorPolicy.d.ts.map +1 -1
- package/dist/vendorPolicy.js +1 -6
- package/dist/vendorPolicy.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -104,6 +104,94 @@ await resolveAIProfile("cyber", {
|
|
|
104
104
|
await listAIProfiles({ catalogLane: "image" }); // → vision only
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
+
### Cost tiers (optional)
|
|
108
|
+
|
|
109
|
+
If you want to restrict model selection by price, you can either set an explicit `costCapPer1M`, or use a named `costTier`.
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
import { resolveAIProfile } from "@x12i/ai-profiles";
|
|
113
|
+
|
|
114
|
+
// Tier-based (default tiers: tier1=$0.5/1M output, tier2=$3, tier3=$10, tier4=$30)
|
|
115
|
+
const cheapTier1 = await resolveAIProfile("balanced", {
|
|
116
|
+
catalogLane: "text",
|
|
117
|
+
costTier: "tier1",
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// Override tiers (per-tier caps can be maxOutput/maxInput/maxBlended)
|
|
121
|
+
const customTier = await resolveAIProfile("balanced", {
|
|
122
|
+
catalogLane: "text",
|
|
123
|
+
costTier: "budget",
|
|
124
|
+
costTiers: [{ key: "budget", cap: { maxOutput: 0.5 } }],
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// Explicit caps always win if both are provided
|
|
128
|
+
const explicitCap = await resolveAIProfile("balanced", {
|
|
129
|
+
catalogLane: "text",
|
|
130
|
+
costTier: "tier1",
|
|
131
|
+
costCapPer1M: { maxBlended: 2 },
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Alternatives by cost tier
|
|
136
|
+
|
|
137
|
+
When you want a profile’s “same intent, different price points”, use:
|
|
138
|
+
|
|
139
|
+
```ts
|
|
140
|
+
import { resolveAIProfileWithCostAlternatives } from "@x12i/ai-profiles";
|
|
141
|
+
|
|
142
|
+
const { primary, alternativesByCostTier } =
|
|
143
|
+
await resolveAIProfileWithCostAlternatives("deep", {
|
|
144
|
+
catalogLane: "text",
|
|
145
|
+
tiers: [
|
|
146
|
+
{ key: "tier1", cap: { maxOutput: 0.5 } },
|
|
147
|
+
{ key: "tier2", cap: { maxOutput: 3 } },
|
|
148
|
+
{ key: "tier3", cap: { maxOutput: 10 } },
|
|
149
|
+
],
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
// alternativesByCostTier: [{ tier, resolved|null, reason? }, ...]
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Focus filters (catalog-derived)
|
|
156
|
+
|
|
157
|
+
You can filter choices (and optionally profile listings) by catalog-derived capabilities.
|
|
158
|
+
|
|
159
|
+
```ts
|
|
160
|
+
import { listAIProfiles, resolveAIProfile } from "@x12i/ai-profiles";
|
|
161
|
+
|
|
162
|
+
// Preset focus filter
|
|
163
|
+
const reasoningModel = await resolveAIProfile("deep", {
|
|
164
|
+
catalogLane: "text",
|
|
165
|
+
focus: "reasoning",
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// Explicit capability filter
|
|
169
|
+
const structured = await resolveAIProfile("json", {
|
|
170
|
+
catalogLane: "text",
|
|
171
|
+
capabilityFilter: { structuredOutput: true },
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Filter profile discovery to profiles with at least one matching choice
|
|
175
|
+
const reasoningProfiles = await listAIProfiles({
|
|
176
|
+
source: "bundled",
|
|
177
|
+
focus: "reasoning",
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Reasoning model flag (always communicated)
|
|
182
|
+
|
|
183
|
+
Every resolved primary and secondary includes a stable boolean:
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
const resolved = await resolveAIProfile("cheap", {
|
|
187
|
+
catalogLane: "text",
|
|
188
|
+
includeSecondary: true,
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
resolved.modelSignals.isReasoningModel; // boolean
|
|
192
|
+
resolved.secondary?.modelSignals.isReasoningModel; // boolean
|
|
193
|
+
```
|
|
194
|
+
|
|
107
195
|
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.
|
|
108
196
|
|
|
109
197
|
## Install
|
|
@@ -126,10 +214,14 @@ npm install @x12i/ai-profiles
|
|
|
126
214
|
| `loadModelsCatalog(options?)` | No (async) | Unified models catalog (`auto` / `remote` / `bundled`, same cache pattern as profiles) |
|
|
127
215
|
| `loadBundledModelsCatalog()` | Yes | Package-shipped `models-catalog.json` only |
|
|
128
216
|
| `loadBundledModelsRegistry()` | Yes | Package-shipped `models-registry.json` (linkage index) |
|
|
129
|
-
| `
|
|
130
|
-
| `
|
|
217
|
+
| `listAIProfileChoices(options?)` | No (async) | List explicit `profile/choice` keys for strict pickers and stored config |
|
|
218
|
+
| `listAIShortcuts()` | Yes | Shortcut table: `{ key, profile, choice, description? }[]` |
|
|
219
|
+
| `isKnownProfileChoice(input)` | Yes (bundled only) | Whether input is a known `profile/choice` key or shortcut |
|
|
220
|
+
| `resolveAIProfile(input, options?)` | No (async) | Resolve an explicit `profile/choice` key (or shortcut) → model, pricing, runtime. Pass `includeSecondary: true` to attach `secondary`. |
|
|
221
|
+
| `resolveSecondaryModel(input, options?)` | No (async) | Resolve primary choice + optional companion `secondary` from profile `secondary` refs |
|
|
222
|
+
| `getSecondaryForResolvedProfile(resolved, registry, catalog?)` | Yes | Secondary for an already-resolved primary (no extra I/O when catalog is passed) |
|
|
223
|
+
| `listProfileSecondaries(profileKey, registry)` | Yes | List per-choice `secondary` declarations on a profile |
|
|
131
224
|
| `resolveAIProfileByTags(tags, options?)` | No (async) | Pick best profile by tag overlap (partial match OK), then resolve |
|
|
132
|
-
| `isKnownProfileOrShortcut(input)` | Yes (bundled only) | Whether input is a known primary key, shortcut, or alias |
|
|
133
225
|
| `scoreProfileTags` / `rankProfilesByTags` | Yes | Tag overlap scoring for discovery and custom UIs |
|
|
134
226
|
| `AIProfilesError` | — | Typed errors (`UNKNOWN_PROFILE`, …) |
|
|
135
227
|
|
|
@@ -139,6 +231,7 @@ Use these when callers pass **raw model ids or OpenRouter slugs**, not profile n
|
|
|
139
231
|
|
|
140
232
|
| Export | Sync? | Purpose |
|
|
141
233
|
|--------|-------|---------|
|
|
234
|
+
| `resolveCatalogModel(input, options?)` | No (async) | Resolve a model SKU or OpenRouter slug via `models-catalog.json` (strict; no profile intent) |
|
|
142
235
|
| `resolveModelIdentity(input, options?)` | Yes | Given a bare id or `vendor/slug`, return `{ provider, modelId, invocation? }` via bundled registry + catalog fallback |
|
|
143
236
|
| `buildModelInvocation(provider, modelId)` | Yes | `{ direct, openrouter }` endpoints for a provider hint + model string |
|
|
144
237
|
| `buildDirectInvocation(provider, modelId)` | Yes | Vendor-direct `{ provider, modelId }`; splits prefixed slugs for all vendors |
|
|
@@ -180,14 +273,19 @@ Validate with `src/data/models-profiles.schema.json`. Maintainer scripts: `npm r
|
|
|
180
273
|
|
|
181
274
|
```ts
|
|
182
275
|
import {
|
|
183
|
-
isKnownProfileOrShortcut,
|
|
184
276
|
listAIProfiles,
|
|
277
|
+
listAIProfileChoices,
|
|
185
278
|
listAIShortcuts,
|
|
279
|
+
isKnownProfileChoice,
|
|
186
280
|
resolveAIProfile,
|
|
281
|
+
resolveCatalogModel,
|
|
187
282
|
} from "@x12i/ai-profiles";
|
|
188
283
|
|
|
189
284
|
const profiles = await listAIProfiles();
|
|
190
|
-
const
|
|
285
|
+
const choices = await listAIProfileChoices();
|
|
286
|
+
|
|
287
|
+
// Strict lookup key: profile/choice
|
|
288
|
+
const model = await resolveAIProfile("cheap/default", { catalogLane: "text" });
|
|
191
289
|
|
|
192
290
|
console.log(model.profile); // canonical primary key: cheap
|
|
193
291
|
console.log(model.provider); // "openrouter" by default for remote profiles
|
|
@@ -199,6 +297,15 @@ console.log(model.requiredCapabilities); // profile intent
|
|
|
199
297
|
console.log(model.capabilities); // contextWindow, supportsTools, …
|
|
200
298
|
console.log(model.instructionTier);
|
|
201
299
|
console.log(model.backend);
|
|
300
|
+
|
|
301
|
+
// SKU lookup (catalog), not a profile
|
|
302
|
+
const sku = await resolveCatalogModel("google/gemini-2.5-flash-lite", {
|
|
303
|
+
source: "bundled",
|
|
304
|
+
useOpenRouter: false,
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
console.log(isKnownProfileChoice("cheap/default")); // true
|
|
308
|
+
console.log(isKnownProfileChoice("cheap")); // false
|
|
202
309
|
```
|
|
203
310
|
|
|
204
311
|
## Registry statistics
|
|
@@ -233,60 +340,54 @@ Each **profile** has exactly one **short primary key** (e.g. `balanced`, `cyber`
|
|
|
233
340
|
|
|
234
341
|
**Tags** are short (2–4 chars), many per profile (`cyb`, `eco`, `ds`, …). Each profile has a **unique tag set**. Use `listAIProfiles({ tags })` (sorted by best match) or `resolveAIProfileByTags(['cyb', 'eco'])` — partial overlap is OK; the profile with the most matching tags wins.
|
|
235
342
|
|
|
236
|
-
**Shortcuts** (`profiles-shortcuts.json`) are a second registry of intent names. A shortcut
|
|
343
|
+
**Shortcuts** (`profiles-shortcuts.json`) are a second registry of intent names. A shortcut is a **named binding** to a specific `profile/choice` (e.g. `cheapest` → `cheap/google_floor`, `final-answer` → `vol/final`).
|
|
237
344
|
|
|
238
|
-
Model SKU strings (e.g. `deepseek-v4-flash`, `google/gemini-2.5-flash-lite`) are **not** profiles
|
|
345
|
+
Model SKU strings (e.g. `deepseek-v4-flash`, `google/gemini-2.5-flash-lite`) are **not** profiles or shortcuts — resolve them via `resolveCatalogModel(...)`.
|
|
239
346
|
|
|
240
347
|
The same string can appear as both an alias and a shortcut. That is intentional.
|
|
241
348
|
|
|
242
|
-
### Resolution
|
|
349
|
+
### Resolution behavior (strict)
|
|
243
350
|
|
|
244
|
-
|
|
351
|
+
`resolveAIProfile(input)` accepts only:
|
|
245
352
|
|
|
246
|
-
1. **
|
|
247
|
-
2. **Shortcut** —
|
|
248
|
-
|
|
353
|
+
1. **Composite key** — `profile/choice` (e.g. `cheap/default`)
|
|
354
|
+
2. **Shortcut** — a shortcut key that pins a choice (all bundled shortcuts do)
|
|
355
|
+
|
|
356
|
+
Profile-only inputs and profile aliases are **discovery-only**; they are not valid for `resolveAIProfile`.
|
|
249
357
|
|
|
250
358
|
Input is normalized (trimmed, lowercased) before matching.
|
|
251
359
|
|
|
252
360
|
### Examples
|
|
253
361
|
|
|
254
362
|
```ts
|
|
255
|
-
//
|
|
256
|
-
await resolveAIProfile("balanced"
|
|
257
|
-
|
|
258
|
-
// Alias only (on cheap in bundled data)
|
|
259
|
-
await resolveAIProfile("cost-sensitive"); // profile: cheap, choice: default
|
|
260
|
-
|
|
261
|
-
// Alias shared with shortcut — shortcut wins if it pins a choice
|
|
262
|
-
await resolveAIProfile("default"); // profile: balanced (via default shortcut)
|
|
363
|
+
// Composite key
|
|
364
|
+
await resolveAIProfile("balanced/default", { catalogLane: "text" });
|
|
263
365
|
|
|
264
366
|
// Shortcut with explicit choice
|
|
265
|
-
await resolveAIProfile("cheapest"); //
|
|
367
|
+
await resolveAIProfile("cheapest", { catalogLane: "text" }); // cheap/google_floor
|
|
266
368
|
|
|
267
369
|
// Tag-based pick (partial overlap OK)
|
|
268
|
-
await resolveAIProfileByTags(["cyb", "eco", "ds"]); //
|
|
370
|
+
await resolveAIProfileByTags(["cyb", "eco", "ds"], { catalogLane: "text" }); // cyber/<auto>
|
|
269
371
|
|
|
270
372
|
// Model SKU → catalog, not a profile
|
|
271
|
-
await
|
|
373
|
+
await resolveCatalogModel("deepseek-v4-flash", { source: "bundled" }); // resolutionKind: "model"
|
|
272
374
|
```
|
|
273
375
|
|
|
274
376
|
`listAIProfiles()` returns each profile’s `aliases` so UIs can show friendly labels. `listAIShortcuts()` lists shortcut keys separately (not duplicated inside `listAIProfiles()`).
|
|
275
377
|
|
|
276
378
|
## Sync validation (bundled registry)
|
|
277
379
|
|
|
278
|
-
Use **`
|
|
380
|
+
Use **`isKnownProfileChoice(input)`** before run/execute or on first paint when the remote registry may not be loaded yet. It reads the **bundled** JSON only (no network, no in-memory cache race).
|
|
279
381
|
|
|
280
382
|
```ts
|
|
281
383
|
const canRun =
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
isKnownProfileOrShortcut(fallbackProfile);
|
|
384
|
+
isKnownProfileChoice(aiProfileKey) &&
|
|
385
|
+
isKnownProfileChoice(fallbackKey);
|
|
285
386
|
```
|
|
286
387
|
|
|
287
|
-
Accepts
|
|
388
|
+
Accepts **`profile/choice` keys** and **shortcuts**. Unknown strings return `false`.
|
|
288
389
|
|
|
289
|
-
After validation, call `resolveAIProfile` (usually `source: "auto"` or `"bundled"`) to get the canonical `resolved.profile`
|
|
390
|
+
After validation, call `resolveAIProfile` (usually `source: "auto"` or `"bundled"`) to get the canonical `resolved.profile` and the concrete model details.
|
|
290
391
|
|
|
291
392
|
### UI guidance
|
|
292
393
|
|
|
@@ -294,11 +395,11 @@ After validation, call `resolveAIProfile` (usually `source: "auto"` or `"bundled
|
|
|
294
395
|
- **Shortcut picker** (optional): `listAIShortcuts()` → use `key` as the value.
|
|
295
396
|
- **Stored config**: any accepted name (primary, alias, or shortcut) is valid; prefer primary keys for new data if you want one canonical form in your own schema.
|
|
296
397
|
|
|
297
|
-
##
|
|
398
|
+
## Pick a specific model implementation (choice)
|
|
298
399
|
|
|
299
400
|
```ts
|
|
300
|
-
const model = await resolveAIProfile("cheap", {
|
|
301
|
-
|
|
401
|
+
const model = await resolveAIProfile("cheap/anthropic_cheap", {
|
|
402
|
+
catalogLane: "text",
|
|
302
403
|
});
|
|
303
404
|
```
|
|
304
405
|
|
|
@@ -317,9 +418,9 @@ Supported today: **OpenRouter** and **vendor-direct**. Azure and AWS routing are
|
|
|
317
418
|
### OpenRouter (default)
|
|
318
419
|
|
|
319
420
|
```ts
|
|
320
|
-
const resolved = await resolveAIProfile("cheap");
|
|
421
|
+
const resolved = await resolveAIProfile("cheap/default", { catalogLane: "text" });
|
|
321
422
|
// or explicitly:
|
|
322
|
-
await resolveAIProfile("cheap", { useOpenRouter: true });
|
|
423
|
+
await resolveAIProfile("cheap/default", { catalogLane: "text", useOpenRouter: true });
|
|
323
424
|
|
|
324
425
|
// resolved.provider === "openrouter"
|
|
325
426
|
// resolved.modelId === "google/gemini-3.1-flash-lite"
|
|
@@ -337,7 +438,7 @@ Do **not** copy OpenRouter slugs into app config (`preActionModel`, env vars, et
|
|
|
337
438
|
|
|
338
439
|
```ts
|
|
339
440
|
// Good — profile pointer + resolver
|
|
340
|
-
const pre = await resolveAIProfile("cheap");
|
|
441
|
+
const pre = await resolveAIProfile("cheap/default", { catalogLane: "text" });
|
|
341
442
|
preActionModel: pre.modelId; // "google/gemini-2.5-flash-lite"
|
|
342
443
|
|
|
343
444
|
// Bad — stale transport slug from an old catalog page or doc
|
|
@@ -349,7 +450,10 @@ Use `assertStableOpenRouterSlug(slug)` before outbound OpenRouter calls when you
|
|
|
349
450
|
### Vendor-direct
|
|
350
451
|
|
|
351
452
|
```ts
|
|
352
|
-
const resolved = await resolveAIProfile("cheap", {
|
|
453
|
+
const resolved = await resolveAIProfile("cheap/default", {
|
|
454
|
+
catalogLane: "text",
|
|
455
|
+
useOpenRouter: false,
|
|
456
|
+
});
|
|
353
457
|
|
|
354
458
|
// resolved.provider === "google"
|
|
355
459
|
// resolved.modelId === "gemini-2.5-flash-lite"
|
|
@@ -372,9 +476,9 @@ When `useOpenRouter` is omitted from `resolveAIProfile`, the env value is used.
|
|
|
372
476
|
|
|
373
477
|
```ts
|
|
374
478
|
process.env.USE_OPENROUTER = "0";
|
|
375
|
-
await resolveAIProfile("cheap"); // vendor-direct
|
|
479
|
+
await resolveAIProfile("cheap/default", { catalogLane: "text" }); // vendor-direct
|
|
376
480
|
|
|
377
|
-
await resolveAIProfile("cheap", { useOpenRouter: true }); // still OpenRouter
|
|
481
|
+
await resolveAIProfile("cheap/default", { catalogLane: "text", useOpenRouter: true }); // still OpenRouter
|
|
378
482
|
```
|
|
379
483
|
|
|
380
484
|
Helper exports:
|
|
@@ -520,7 +624,8 @@ Top-level `provider` / `modelId` / `routing` remain the **active** path selected
|
|
|
520
624
|
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.
|
|
521
625
|
|
|
522
626
|
```ts
|
|
523
|
-
await resolveAIProfile("balanced", {
|
|
627
|
+
await resolveAIProfile("balanced/default", {
|
|
628
|
+
catalogLane: "text",
|
|
524
629
|
allowedProviders: ["google", "openai"],
|
|
525
630
|
preferLeadingVendors: true, // default
|
|
526
631
|
});
|
|
@@ -538,11 +643,12 @@ Supported values: `text`, `image`, `audio`, `video`, `file` (aligned with `model
|
|
|
538
643
|
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.
|
|
539
644
|
|
|
540
645
|
```ts
|
|
541
|
-
const resolved = await resolveAIProfile("vision");
|
|
646
|
+
const resolved = await resolveAIProfile("vision/default", { catalogLane: "image" });
|
|
542
647
|
// resolved.requiredModalities.input includes "image"
|
|
543
648
|
// resolved.modalities reflects the picked model from catalog
|
|
544
649
|
|
|
545
|
-
await resolveAIProfile("cheap", {
|
|
650
|
+
await resolveAIProfile("cheap/default", {
|
|
651
|
+
catalogLane: "text",
|
|
546
652
|
inputModalities: ["text", "image"], // override for this call
|
|
547
653
|
outputModalities: ["text"],
|
|
548
654
|
});
|
|
@@ -566,12 +672,12 @@ Restrict auto-pick to choices whose catalog pricing stays under a USD-per-1M-tok
|
|
|
566
672
|
|
|
567
673
|
```ts
|
|
568
674
|
// Both input and output rates must be <= $0.20 / 1M tokens
|
|
569
|
-
await resolveAIProfile("balanced", { costCapPer1M: 0.2 });
|
|
675
|
+
await resolveAIProfile("balanced/default", { catalogLane: "text", costCapPer1M: 0.2 });
|
|
570
676
|
|
|
571
677
|
// Finer control
|
|
572
|
-
await resolveAIProfile("cheap", {
|
|
678
|
+
await resolveAIProfile("cheap/minimax_cheap", {
|
|
679
|
+
catalogLane: "text",
|
|
573
680
|
costCapPer1M: { maxInput: 0.2, maxOutput: 2 },
|
|
574
|
-
choice: "minimax_cheap",
|
|
575
681
|
});
|
|
576
682
|
```
|
|
577
683
|
|
|
@@ -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":"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;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,6 +1,6 @@
|
|
|
1
1
|
import { OPENROUTER_MODELS_API_URL } from "./constants.js";
|
|
2
2
|
import { filterSupersededOpenRouterPreviewModels } from "./openRouterSlugPolicy.js";
|
|
3
|
-
import { MODELS_CATALOG_REMOTE_URL, normalizeModelsCatalog, } from "./modelsCatalog.js";
|
|
3
|
+
import { MODELS_CATALOG_REMOTE_URL, normalizeModelsCatalog, roundCatalogPricingUsd, } from "./modelsCatalog.js";
|
|
4
4
|
function perTokenToPerMillion(tokenPrice) {
|
|
5
5
|
if (tokenPrice === null || tokenPrice === undefined || tokenPrice === "") {
|
|
6
6
|
return undefined;
|
|
@@ -9,7 +9,7 @@ function perTokenToPerMillion(tokenPrice) {
|
|
|
9
9
|
if (!Number.isFinite(perToken)) {
|
|
10
10
|
return undefined;
|
|
11
11
|
}
|
|
12
|
-
return perToken * 1_000_000;
|
|
12
|
+
return roundCatalogPricingUsd(perToken * 1_000_000);
|
|
13
13
|
}
|
|
14
14
|
function inferFamily(modelId) {
|
|
15
15
|
const slash = modelId.indexOf("/");
|
|
@@ -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,GACvB,MAAM,oBAAoB,CAAC;AA4B5B,SAAS,oBAAoB,CAC3B,UAAqC;IAErC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"buildCatalogFromOpenRouterApi.js","sourceRoot":"","sources":["../src/buildCatalogFromOpenRouterApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CAmMnB"}
|
|
@@ -134,6 +134,12 @@ export function buildResolvedProfile(params) {
|
|
|
134
134
|
maxOutputTokens: limits.maxOutputTokens,
|
|
135
135
|
}
|
|
136
136
|
: undefined;
|
|
137
|
+
const modelSignals = {
|
|
138
|
+
isReasoningModel: Boolean(capabilities?.supportsReasoning),
|
|
139
|
+
supportsStructuredOutput: capabilities?.supportsJsonSchema,
|
|
140
|
+
supportsTools: capabilities?.supportsTools,
|
|
141
|
+
contextWindow: capabilities?.contextWindow ?? limits?.contextWindow,
|
|
142
|
+
};
|
|
137
143
|
const requiredModalities = resolveRequiredModalities(profile.profile, profile);
|
|
138
144
|
const modalities = getChoiceModalities(choice, catalog);
|
|
139
145
|
const resolved = {
|
|
@@ -156,6 +162,7 @@ export function buildResolvedProfile(params) {
|
|
|
156
162
|
...(choice.modelStatus !== undefined ? { modelStatus: choice.modelStatus } : {}),
|
|
157
163
|
...(limits !== undefined ? { limits } : {}),
|
|
158
164
|
...(capabilities !== undefined ? { capabilities } : {}),
|
|
165
|
+
modelSignals,
|
|
159
166
|
...(profile.requiredCapabilities !== undefined
|
|
160
167
|
? { requiredCapabilities: profile.requiredCapabilities }
|
|
161
168
|
: {}),
|
|
@@ -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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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CostCapPer1M, CostTierSpec } from "./types.js";
|
|
2
|
+
export declare const DEFAULT_COST_TIERS: CostTierSpec[];
|
|
3
|
+
export declare function resolveCostTierCap(costTier: string | undefined, overrideTiers?: CostTierSpec[]): CostCapPer1M | undefined;
|
|
4
|
+
//# sourceMappingURL=costTiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costTiers.d.ts","sourceRoot":"","sources":["../src/costTiers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D,eAAO,MAAM,kBAAkB,EAAE,YAAY,EAK5C,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,aAAa,CAAC,EAAE,YAAY,EAAE,GAC7B,YAAY,GAAG,SAAS,CAkB1B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { normalizeCostCap } from "./costPolicy.js";
|
|
2
|
+
export const DEFAULT_COST_TIERS = [
|
|
3
|
+
{ key: "tier1", label: "Ultra low", cap: { maxOutput: 0.5 } },
|
|
4
|
+
{ key: "tier2", label: "Low", cap: { maxOutput: 3 } },
|
|
5
|
+
{ key: "tier3", label: "Medium", cap: { maxOutput: 10 } },
|
|
6
|
+
{ key: "tier4", label: "High", cap: { maxOutput: 30 } },
|
|
7
|
+
];
|
|
8
|
+
export function resolveCostTierCap(costTier, overrideTiers) {
|
|
9
|
+
if (!costTier) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const tiers = (overrideTiers?.length ? overrideTiers : DEFAULT_COST_TIERS).filter((t) => typeof t?.key === "string" && t.key.trim() !== "");
|
|
13
|
+
const match = tiers.find((t) => t.key.trim().toLowerCase() === costTier.trim().toLowerCase());
|
|
14
|
+
if (!match) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
// Normalize ensures we only keep defined cap fields.
|
|
18
|
+
return normalizeCostCap(match.cap);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=costTiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costTiers.js","sourceRoot":"","sources":["../src/costTiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;IAC7D,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;IACrD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;IACzD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;CACxD,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAChC,QAA4B,EAC5B,aAA8B;IAE9B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAC/E,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CACzD,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CACpE,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,qDAAqD;IACrD,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"pricing": {
|
|
41
41
|
"input": 1,
|
|
42
42
|
"output": 2,
|
|
43
|
-
"cachedInput": 0.
|
|
43
|
+
"cachedInput": 0.2,
|
|
44
44
|
"webSearchPerRequest": 5000
|
|
45
45
|
},
|
|
46
46
|
"capabilities": {
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"input": 1.5,
|
|
93
93
|
"output": 9,
|
|
94
94
|
"cachedInput": 0.15,
|
|
95
|
-
"cacheWrite": 0.
|
|
95
|
+
"cacheWrite": 0.083333,
|
|
96
96
|
"imageInput": 1.5,
|
|
97
97
|
"audioInput": 3,
|
|
98
98
|
"internalReasoning": 9,
|
|
@@ -151,8 +151,8 @@
|
|
|
151
151
|
"pricing": {
|
|
152
152
|
"input": 0.25,
|
|
153
153
|
"output": 1.5,
|
|
154
|
-
"cachedInput": 0.
|
|
155
|
-
"cacheWrite": 0.
|
|
154
|
+
"cachedInput": 0.025,
|
|
155
|
+
"cacheWrite": 0.083333,
|
|
156
156
|
"imageInput": 0.25,
|
|
157
157
|
"audioInput": 0.5,
|
|
158
158
|
"internalReasoning": 1.5,
|
|
@@ -206,7 +206,7 @@
|
|
|
206
206
|
"pricing": {
|
|
207
207
|
"input": 1.25,
|
|
208
208
|
"output": 2.5,
|
|
209
|
-
"cachedInput": 0.
|
|
209
|
+
"cachedInput": 0.2,
|
|
210
210
|
"webSearchPerRequest": 5000
|
|
211
211
|
},
|
|
212
212
|
"capabilities": {
|
|
@@ -632,13 +632,13 @@
|
|
|
632
632
|
]
|
|
633
633
|
},
|
|
634
634
|
"pricing": {
|
|
635
|
-
"input": 0.
|
|
636
|
-
"output": 0.
|
|
635
|
+
"input": 0.1,
|
|
636
|
+
"output": 0.4,
|
|
637
637
|
"cachedInput": 0.01,
|
|
638
|
-
"cacheWrite": 0.
|
|
639
|
-
"imageInput": 0.
|
|
638
|
+
"cacheWrite": 0.083333,
|
|
639
|
+
"imageInput": 0.1,
|
|
640
640
|
"audioInput": 0.3,
|
|
641
|
-
"internalReasoning": 0.
|
|
641
|
+
"internalReasoning": 0.4,
|
|
642
642
|
"webSearchPerRequest": 14000
|
|
643
643
|
},
|
|
644
644
|
"capabilities": {
|