@x12i/ai-profiles 3.2.1 → 3.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 (101) hide show
  1. package/README.md +95 -23
  2. package/dist/buildResolvedCatalogModel.d.ts +27 -0
  3. package/dist/buildResolvedCatalogModel.d.ts.map +1 -0
  4. package/dist/buildResolvedCatalogModel.js +179 -0
  5. package/dist/buildResolvedCatalogModel.js.map +1 -0
  6. package/dist/buildResolvedProfile.d.ts +4 -2
  7. package/dist/buildResolvedProfile.d.ts.map +1 -1
  8. package/dist/buildResolvedProfile.js +22 -6
  9. package/dist/buildResolvedProfile.js.map +1 -1
  10. package/dist/calculateInvokeCost.d.ts +57 -0
  11. package/dist/calculateInvokeCost.d.ts.map +1 -0
  12. package/dist/calculateInvokeCost.js +106 -0
  13. package/dist/calculateInvokeCost.js.map +1 -0
  14. package/dist/catalogEnrichment.d.ts +2 -2
  15. package/dist/catalogEnrichment.d.ts.map +1 -1
  16. package/dist/catalogEnrichment.js +16 -4
  17. package/dist/catalogEnrichment.js.map +1 -1
  18. package/dist/cost/computeInvokeCost.d.ts +33 -0
  19. package/dist/cost/computeInvokeCost.d.ts.map +1 -0
  20. package/dist/cost/computeInvokeCost.js +95 -0
  21. package/dist/cost/computeInvokeCost.js.map +1 -0
  22. package/dist/cost/constants.d.ts +7 -0
  23. package/dist/cost/constants.d.ts.map +1 -0
  24. package/dist/cost/constants.js +7 -0
  25. package/dist/cost/constants.js.map +1 -0
  26. package/dist/cost/invokePricingRecord.d.ts +55 -0
  27. package/dist/cost/invokePricingRecord.d.ts.map +1 -0
  28. package/dist/cost/invokePricingRecord.js +68 -0
  29. package/dist/cost/invokePricingRecord.js.map +1 -0
  30. package/dist/cost/reasoningWire.d.ts +13 -0
  31. package/dist/cost/reasoningWire.d.ts.map +1 -0
  32. package/dist/cost/reasoningWire.js +28 -0
  33. package/dist/cost/reasoningWire.js.map +1 -0
  34. package/dist/cost/resolveInvokePricing.d.ts +40 -0
  35. package/dist/cost/resolveInvokePricing.d.ts.map +1 -0
  36. package/dist/cost/resolveInvokePricing.js +170 -0
  37. package/dist/cost/resolveInvokePricing.js.map +1 -0
  38. package/dist/ensureConcreteModel.d.ts +2 -2
  39. package/dist/ensureConcreteModel.d.ts.map +1 -1
  40. package/dist/ensureConcreteModel.js +2 -2
  41. package/dist/ensureConcreteModel.js.map +1 -1
  42. package/dist/index.d.ts +10 -2
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +5 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/isReasoningModel.d.ts +2 -2
  47. package/dist/isReasoningModel.d.ts.map +1 -1
  48. package/dist/isReasoningModel.js +1 -1
  49. package/dist/isReasoningModel.js.map +1 -1
  50. package/dist/lookupBundledCatalogCaps.d.ts +11 -1
  51. package/dist/lookupBundledCatalogCaps.d.ts.map +1 -1
  52. package/dist/lookupBundledCatalogCaps.js +25 -11
  53. package/dist/lookupBundledCatalogCaps.js.map +1 -1
  54. package/dist/modelInputFallback.d.ts +2 -2
  55. package/dist/modelInputFallback.d.ts.map +1 -1
  56. package/dist/modelInputFallback.js +4 -3
  57. package/dist/modelInputFallback.js.map +1 -1
  58. package/dist/normalizeInvokeModel.d.ts +4 -4
  59. package/dist/normalizeInvokeModel.d.ts.map +1 -1
  60. package/dist/normalizeInvokeModel.js +11 -11
  61. package/dist/normalizeInvokeModel.js.map +1 -1
  62. package/dist/requireCatalogModel.d.ts +13 -3
  63. package/dist/requireCatalogModel.d.ts.map +1 -1
  64. package/dist/requireCatalogModel.js +139 -13
  65. package/dist/requireCatalogModel.js.map +1 -1
  66. package/dist/resolveAIProfile.d.ts.map +1 -1
  67. package/dist/resolveAIProfile.js +4 -2
  68. package/dist/resolveAIProfile.js.map +1 -1
  69. package/dist/resolveAIProfileWithCostAlternatives.js +2 -2
  70. package/dist/resolveAIProfileWithCostAlternatives.js.map +1 -1
  71. package/dist/resolveBundledCatalogModel.d.ts +8 -2
  72. package/dist/resolveBundledCatalogModel.d.ts.map +1 -1
  73. package/dist/resolveBundledCatalogModel.js +12 -12
  74. package/dist/resolveBundledCatalogModel.js.map +1 -1
  75. package/dist/resolveCatalogModel.d.ts.map +1 -1
  76. package/dist/resolveCatalogModel.js +17 -2
  77. package/dist/resolveCatalogModel.js.map +1 -1
  78. package/dist/resolveCatalogModelDetails.d.ts +18 -0
  79. package/dist/resolveCatalogModelDetails.d.ts.map +1 -0
  80. package/dist/resolveCatalogModelDetails.js +79 -0
  81. package/dist/resolveCatalogModelDetails.js.map +1 -0
  82. package/dist/resolveModelRouting.d.ts +11 -6
  83. package/dist/resolveModelRouting.d.ts.map +1 -1
  84. package/dist/resolveModelRouting.js +37 -19
  85. package/dist/resolveModelRouting.js.map +1 -1
  86. package/dist/resolveProfileInputCore.d.ts.map +1 -1
  87. package/dist/resolveProfileInputCore.js +3 -1
  88. package/dist/resolveProfileInputCore.js.map +1 -1
  89. package/dist/resolveSecondaryModel.d.ts +1 -1
  90. package/dist/resolveSecondaryModel.d.ts.map +1 -1
  91. package/dist/resolveSecondaryModel.js +3 -3
  92. package/dist/resolveSecondaryModel.js.map +1 -1
  93. package/dist/secondaryModel.d.ts +4 -4
  94. package/dist/secondaryModel.d.ts.map +1 -1
  95. package/dist/secondaryModel.js +2 -2
  96. package/dist/secondaryModel.js.map +1 -1
  97. package/dist/types.d.ts +82 -4
  98. package/dist/types.d.ts.map +1 -1
  99. package/dist/validateProfileCatalogLinkage.js +1 -1
  100. package/dist/validateProfileCatalogLinkage.js.map +1 -1
  101. package/package.json +2 -1
package/README.md CHANGED
@@ -258,9 +258,16 @@ npm install @x12i/ai-profiles
258
258
  | `normalizeInvokeModel(input, options?)` | Yes | Idempotent gateway invoke tuple: strips `openrouter/` display slugs; rejects unresolved `profile/choice` aliases |
259
259
  | `resolveAndNormalizeInvokeModel(alias, options)` | No (async) | `resolveAIProfile` → `normalizeInvokeModel` for MAIN / handoff paths |
260
260
  | `resolveAndNormalizeBundledInvokeModel(alias, options)` | Yes | Bundled `resolveAIProfile` → `normalizeInvokeModel` (no network) |
261
- | `lookupBundledCatalogCaps({ provider, modelId })` | Yes | Sync `{ contextWindow, maxOutputTokens, supportsReasoning }` from bundled catalog |
261
+ | `calculateInvokeCost(input, options?)` | No (async) | Token → USD from catalog pricing (`costStatus: "priced" \| "unpriced"`) |
262
+ | `calculateInvokeCostSync(input, options?)` | Yes | Bundled offline cost calculator |
263
+ | `calculateInvokeCostFromRecord(record, options?)` | No (async) | Activix snake_case usage record → USD |
264
+ | `buildInvokePricingRecord(input)` | Yes | Build Activix-compatible invoke billing record |
265
+ | `lookupBundledCatalogCaps({ provider, modelId })` | Yes | Sync quick caps + pricing summary from bundled catalog |
266
+ | `lookupBundledCatalogModel(slug, options?)` | Yes | Sync rich catalog snapshot for a slug (pricing, reasoning, modalities); returns `undefined` on miss |
267
+ | `resolveBundledCatalogModelDetails(slug, options?)` | Yes | Same as above but throws `UNKNOWN_MODEL` on miss |
268
+ | `resolveCatalogModelDetails(slug, options?)` | No (async) | Rich catalog snapshot with optional remote catalog refresh |
262
269
  | `isReasoningModel(input, options?)` | Yes | `true`/`false` for supported inputs (throws `UNKNOWN_MODEL` on unknown concrete models) |
263
- | `resolveAIProfile(input, options?)` | No (async) | Resolve an explicit `profile/choice` key → model, pricing, runtime. Pass `includeSecondary: true` to attach `secondary`. |
270
+ | `resolveAIProfile(input, options?)` | No (async) | Resolve an explicit `profile/choice` key → model, pricing, runtime. Pass `includeSecondary: true` to attach `secondary`; `includeCatalog: true` to attach full `catalogModel`. |
264
271
  | `resolveSecondaryModel(input, options?)` | No (async) | Resolve primary choice + optional companion `secondary` from profile `secondary` refs |
265
272
  | `getSecondaryForResolvedProfile(resolved, registry, catalog?)` | Yes | Secondary for an already-resolved primary (no extra I/O when catalog is passed) |
266
273
  | `listProfileSecondaries(profileKey, registry)` | Yes | List per-choice `secondary` declarations on a profile |
@@ -291,8 +298,8 @@ Use these when callers pass **raw model ids or OpenRouter slugs**, not profile n
291
298
 
292
299
  | Export | Sync? | Purpose |
293
300
  |--------|-------|---------|
294
- | `resolveUseOpenRouter(explicit?)` | Yes | Resolve OpenRouter vs vendor-direct routing (option → env → default) |
295
- | `applyModelRouting(choice, backend, useOpenRouter, catalog?)` | Yes | Turn a registry choice into invoke-time `{ provider, modelId, routing }` (same rules as `resolveAIProfile`) |
301
+ | `resolvePreferOpenRouter(explicit?)` | Yes | Resolve OpenRouter vs vendor-direct routing (option → env → default) |
302
+ | `applyModelRouting(choice, backend, preferOpenRouter, catalog?)` | Yes | Turn a registry choice into invoke-time `{ provider, modelId, routing }` (same rules as `resolveAIProfile`) |
296
303
  | `normalizeGatewayWireId(input)` | Yes | `openrouter/openai/gpt-5.5` → `{ provider: "openrouter", modelId: "openai/gpt-5.5" }` (profile keys like `cheap/default` are not gateway wires) |
297
304
  | `validateBundledProfileVendorCoverage(options?)` | Yes | Advisory report of leading-vendor coverage per profile |
298
305
  | `validateBundledProfileModalityCoverage(options?)` | Yes | Advisory report of profile choice vs required input/output media |
@@ -402,7 +409,7 @@ console.log(model.backend);
402
409
  // SKU lookup (catalog), not a profile
403
410
  const sku = await resolveCatalogModel("google/gemini-2.5-flash-lite", {
404
411
  source: "bundled",
405
- useOpenRouter: false,
412
+ preferOpenRouter: false,
406
413
  });
407
414
 
408
415
  console.log(isKnownProfileChoice("cheap/default")); // true
@@ -513,14 +520,14 @@ normalizeInvokeModel({ model: "cheap/default" }); // same error
513
520
  // Profile/choice → resolve, then normalize (gateway catalog-lookup tuple)
514
521
  await resolveAndNormalizeInvokeModel("cyber/deep_forensics", {
515
522
  catalogLane: "text",
516
- useOpenRouter: true,
523
+ preferOpenRouter: true,
517
524
  });
518
525
  // → { provider: "openrouter", model: "deepseek/deepseek-v4-pro", routing: "openrouter", ... }
519
526
 
520
527
  // Sync bundled variant (tests, predict paths)
521
528
  resolveAndNormalizeBundledInvokeModel("cyber/deep_forensics", {
522
529
  catalogLane: "text",
523
- useOpenRouter: true,
530
+ preferOpenRouter: true,
524
531
  });
525
532
  ```
526
533
 
@@ -567,8 +574,8 @@ Remote profiles (anything that is not `local` / on-device) can be resolved for *
567
574
 
568
575
  ### Resolution priority
569
576
 
570
- 1. **`options.useOpenRouter`** when passed to `resolveAIProfile`
571
- 2. **`USE_OPENROUTER`** in `.env` / process env
577
+ 1. **`options.preferOpenRouter`** when passed to `resolveAIProfile`
578
+ 2. **`PREFER_OPENROUTER`** in `.env` / process env
572
579
  3. **Default: `true`** (OpenRouter)
573
580
 
574
581
  Supported today: **OpenRouter** and **vendor-direct**. Azure and AWS routing are not supported yet.
@@ -578,7 +585,7 @@ Supported today: **OpenRouter** and **vendor-direct**. Azure and AWS routing are
578
585
  ```ts
579
586
  const resolved = await resolveAIProfile("cheap/default", { catalogLane: "text" });
580
587
  // or explicitly:
581
- await resolveAIProfile("cheap/default", { catalogLane: "text", useOpenRouter: true });
588
+ await resolveAIProfile("cheap/default", { catalogLane: "text", preferOpenRouter: true });
582
589
 
583
590
  // resolved.provider === "openrouter"
584
591
  // resolved.modelId === "google/gemini-3.1-flash-lite"
@@ -614,7 +621,7 @@ Use `assertStableOpenRouterSlug(slug)` before outbound OpenRouter calls when you
614
621
  ```ts
615
622
  const resolved = await resolveAIProfile("cheap/default", {
616
623
  catalogLane: "text",
617
- useOpenRouter: false,
624
+ preferOpenRouter: false,
618
625
  });
619
626
 
620
627
  // resolved.provider === "google"
@@ -625,36 +632,101 @@ const resolved = await resolveAIProfile("cheap/default", {
625
632
 
626
633
  Use this when calling OpenAI, Anthropic, Google, etc. APIs directly instead of through OpenRouter.
627
634
 
635
+ ### Rich catalog data (pricing, reasoning, modalities)
636
+
637
+ Use the right entry point for your input shape:
638
+
639
+ | Input | Function | Returns |
640
+ |-------|----------|---------|
641
+ | OpenRouter / vendor slug | `resolveCatalogModelDetails(slug)` or sync `lookupBundledCatalogModel(slug)` | `ResolvedCatalogModel` |
642
+ | `profile/choice` | `resolveAIProfile(key, { catalogLane, includeCatalog: true })` | `ResolvedAIProfile` + `catalogModel` |
643
+ | Post-resolve slug check | `requireCatalogModel(slug, { includeDetails: true })` | presence + optional `catalogModel` |
644
+
645
+ ```ts
646
+ // Slug → full catalog enrichment
647
+ const model = await resolveCatalogModelDetails("google/gemini-2.5-flash-lite", {
648
+ source: "bundled",
649
+ });
650
+ model.pricing?.input; // flattened per-1M rates
651
+ model.catalogPricing?.imageInput; // raw OpenRouter pricing slice
652
+ model.contextWindow; // e.g. 1048576
653
+ model.maxCompletionTokens; // e.g. 65536 (catalog maxCompletionTokens)
654
+ model.limits?.maxOutputTokens; // same as maxCompletionTokens
655
+ model.modelSignals.isReasoningModel; // true
656
+ model.modelSignals.maxOutputTokens; // same as maxCompletionTokens
657
+ model.catalogCapabilities?.toolCalling; // true
658
+ model.invocation.openrouter?.modelId; // "google/gemini-2.5-flash-lite"
659
+ model.capabilities?.supportsOpenRouterReasoningParam; // gateway reasoning.effort
660
+ ```
661
+
662
+ ### Invoke cost (Activix / FuncX)
663
+
664
+ ```ts
665
+ import { calculateInvokeCost, buildInvokePricingRecord } from "@x12i/ai-profiles";
666
+
667
+ const cost = await calculateInvokeCost(
668
+ {
669
+ model: "cheap/default",
670
+ tokens: { prompt: 1000, completion: 500 },
671
+ },
672
+ { catalogLane: "text", bundledOnly: true, includeBreakdown: true },
673
+ );
674
+ // cost.costUsd, cost.costStatus: "priced", cost.breakdown
675
+
676
+ // Profile/choice catalog validation
677
+ const required = await requireCatalogModel("cheap/default", {
678
+ catalogLane: "text",
679
+ resolveProfileKeys: true,
680
+ bundledOnly: true,
681
+ });
682
+ // required.found, required.modelId, required.profileChoice
683
+ ```
684
+
685
+ See `.docs/AI-PROFILES-ACTIVIX-COST-CONTRACT.md` for Activix migration wire.
686
+
687
+ **Catalog SOT:** do not use ai-tools' small OpenRouter index for invoke gating — use `requireCatalogModel` / `validateBundledProfileCatalogLinkage` on this package (`npm run validate:linkage`).
688
+
689
+ ```ts
690
+ // Profile → same enrichment on catalogModel
691
+ const resolved = await resolveAIProfile("cheap/default", {
692
+ catalogLane: "text",
693
+ includeCatalog: true,
694
+ includeCatalogEntry: true, // attach full models-catalog.json row
695
+ });
696
+ resolved.catalogModel?.pricing;
697
+ resolved.catalogModel?.catalogEntry;
698
+ ```
699
+
628
700
  ### Env fallback
629
701
 
630
702
  Set in `.env` or the process environment:
631
703
 
632
704
  ```env
633
- USE_OPENROUTER=1 # or true, yes, on → OpenRouter
634
- USE_OPENROUTER=0 # or false, no, off → vendor-direct
705
+ PREFER_OPENROUTER=1 # or true, yes, on → OpenRouter
706
+ PREFER_OPENROUTER=0 # or false, no, off → vendor-direct
635
707
  ```
636
708
 
637
- When `useOpenRouter` is omitted from `resolveAIProfile`, the env value is used. An explicit option always wins over env.
709
+ When `preferOpenRouter` is omitted from `resolveAIProfile`, the env value is used. An explicit option always wins over env.
638
710
 
639
711
  ```ts
640
- process.env.USE_OPENROUTER = "0";
712
+ process.env.PREFER_OPENROUTER = "0";
641
713
  await resolveAIProfile("cheap/default", { catalogLane: "text" }); // vendor-direct
642
714
 
643
- await resolveAIProfile("cheap/default", { catalogLane: "text", useOpenRouter: true }); // still OpenRouter
715
+ await resolveAIProfile("cheap/default", { catalogLane: "text", preferOpenRouter: true }); // still OpenRouter
644
716
  ```
645
717
 
646
718
  Helper exports:
647
719
 
648
720
  ```ts
649
721
  import {
650
- resolveUseOpenRouter,
722
+ resolvePreferOpenRouter,
651
723
  buildOpenRouterModelId,
652
724
  buildModelInvocation,
653
725
  resolveModelIdentity,
654
726
  } from "@x12i/ai-profiles";
655
727
 
656
- resolveUseOpenRouter(); // true by default
657
- resolveUseOpenRouter(false); // explicit override
728
+ resolvePreferOpenRouter(); // true by default
729
+ resolvePreferOpenRouter(false); // explicit override
658
730
 
659
731
  buildOpenRouterModelId("openai", "gpt-5.4"); // "openai/gpt-5.4"
660
732
 
@@ -731,14 +803,14 @@ const post = await resolveAIProfile(slots.postActionModel, { catalogLane: "text"
731
803
  // Gateway handoff: resolve + normalize invoke tuple
732
804
  const mainInvoke = await resolveAndNormalizeInvokeModel(slots.skillModel, {
733
805
  catalogLane: "text",
734
- useOpenRouter: true,
806
+ preferOpenRouter: true,
735
807
  });
736
808
  // mainInvoke → { provider: "openrouter", model: "openai/gpt-5.4", routing: "openrouter", ... }
737
809
  ```
738
810
 
739
811
  ## Profile matrix (FuncX contract)
740
812
 
741
- Default choice per profile (vendor-native ids in registry; OpenRouter slugs when `useOpenRouter` is true):
813
+ Default choice per profile (vendor-native ids in registry; OpenRouter slugs when `preferOpenRouter` is true):
742
814
 
743
815
  | Profile | Inference | Instruction tier | Default choice | Example model |
744
816
  |---------|-----------|------------------|----------------|---------------|
@@ -767,7 +839,7 @@ Remote profile choices in `models-profiles.json` use vendor-native `modelId` val
767
839
  - `modelId`: full slug such as `openai/gpt-5.4`
768
840
  - `routing`: `"openrouter"`
769
841
 
770
- Pass `useOpenRouter: false` (or `USE_OPENROUTER=0`) to get vendor-native `provider` + `modelId` for direct API calls.
842
+ Pass `preferOpenRouter: false` (or `PREFER_OPENROUTER=0`) to get vendor-native `provider` + `modelId` for direct API calls.
771
843
 
772
844
  Every resolved profile includes **`invocation`** with both call shapes:
773
845
 
@@ -776,7 +848,7 @@ resolved.invocation.direct // { provider: "openai", modelId: "gpt-5.4" }
776
848
  resolved.invocation.openrouter // { provider: "openrouter", modelId: "openai/gpt-5.4" } | null
777
849
  ```
778
850
 
779
- Top-level `provider` / `modelId` / `routing` remain the **active** path selected by `useOpenRouter`.
851
+ Top-level `provider` / `modelId` / `routing` remain the **active** path selected by `preferOpenRouter`.
780
852
 
781
853
  ### Vendor trimming
782
854
 
@@ -0,0 +1,27 @@
1
+ import type { ModelInputFallbackMatch } from "./modelInputFallback.js";
2
+ import type { AIProfileChoice, AIProfileDefinition, AIProfileWarning, ModelsCatalogJson, PreferOpenRouterInput, ResolvedCatalogModel } from "./types.js";
3
+ export declare function buildResolvedCatalogModelFromMatch(params: {
4
+ input: string;
5
+ match: ModelInputFallbackMatch;
6
+ preferOpenRouter?: PreferOpenRouterInput;
7
+ includeCatalogEntry?: boolean;
8
+ profileChoice?: {
9
+ profile: string;
10
+ choice: string;
11
+ };
12
+ matchConfidence?: ResolvedCatalogModel["matchConfidence"];
13
+ loaderWarnings?: AIProfileWarning[];
14
+ }): ResolvedCatalogModel;
15
+ export declare function buildResolvedCatalogModelFromChoice(params: {
16
+ input: string;
17
+ choice: AIProfileChoice;
18
+ catalog: ModelsCatalogJson;
19
+ profile?: AIProfileDefinition;
20
+ preferOpenRouter?: PreferOpenRouterInput;
21
+ includeCatalogEntry?: boolean;
22
+ profileChoice?: {
23
+ profile: string;
24
+ choice: string;
25
+ };
26
+ }): ResolvedCatalogModel;
27
+ //# sourceMappingURL=buildResolvedCatalogModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildResolvedCatalogModel.d.ts","sourceRoot":"","sources":["../src/buildResolvedCatalogModel.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AA+GpB,wBAAgB,kCAAkC,CAAC,MAAM,EAAE;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,uBAAuB,CAAC;IAC/B,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,eAAe,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACrC,GAAG,oBAAoB,CAqBvB;AAED,wBAAgB,mCAAmC,CAAC,MAAM,EAAE;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD,GAAG,oBAAoB,CAyFvB"}
@@ -0,0 +1,179 @@
1
+ import { capabilitiesFromCatalogEntry, enrichChoiceFromCatalog, limitsFromCatalogEntry, pricingFromCatalogEntry, } from "./catalogEnrichment.js";
2
+ import { getBundledRegistry } from "./bundledRegistry.js";
3
+ import { resolveChoiceInvocation } from "./resolveCatalogListing.js";
4
+ import { inferCatalogLaneFromEntry } from "./profileCatalogLane.js";
5
+ import { normalizeModalityContract } from "./modalityPolicy.js";
6
+ import { resolveBackend } from "./resolveInstructionTierAndBackend.js";
7
+ import { applyModelRouting, resolvePreferOpenRouter } from "./resolveModelRouting.js";
8
+ import { getChoiceVendorModelId } from "./profileRegistryV2.js";
9
+ function modelSignalsFromCapabilities(capabilities, limits) {
10
+ return {
11
+ isReasoningModel: Boolean(capabilities?.supportsReasoning),
12
+ supportsStructuredOutput: capabilities?.supportsJsonSchema,
13
+ supportsTools: capabilities?.supportsTools,
14
+ contextWindow: capabilities?.contextWindow ?? limits?.contextWindow,
15
+ maxOutputTokens: capabilities?.maxOutputTokens ?? limits?.maxOutputTokens,
16
+ };
17
+ }
18
+ function topLevelLimits(limits, capabilities) {
19
+ const contextWindow = limits?.contextWindow ?? capabilities?.contextWindow;
20
+ const maxCompletionTokens = limits?.maxOutputTokens ?? capabilities?.maxOutputTokens;
21
+ return {
22
+ ...(contextWindow !== undefined ? { contextWindow } : {}),
23
+ ...(maxCompletionTokens !== undefined
24
+ ? { maxCompletionTokens }
25
+ : {}),
26
+ };
27
+ }
28
+ function pricingWithRegistryUnits(pricing) {
29
+ if (!pricing) {
30
+ return undefined;
31
+ }
32
+ const registry = getBundledRegistry();
33
+ return {
34
+ ...pricing,
35
+ currency: registry.currency,
36
+ unit: registry.pricingUnit,
37
+ };
38
+ }
39
+ function catalogModelFromEntry(params) {
40
+ const entry = params.entry;
41
+ const rawModalities = entry?.modalities ?? entry?.openrouter.modalities ?? undefined;
42
+ const modalities = normalizeModalityContract(rawModalities);
43
+ const limits = entry ? limitsFromCatalogEntry(entry) : undefined;
44
+ const capabilities = entry ? capabilitiesFromCatalogEntry(entry) : undefined;
45
+ const resolvedLimits = topLevelLimits(limits, capabilities);
46
+ return {
47
+ input: params.input,
48
+ provider: params.provider,
49
+ modelId: params.modelId,
50
+ routing: params.routing,
51
+ invocation: params.invocation,
52
+ ...(entry?.displayName ? { displayName: entry.displayName } : {}),
53
+ ...(entry?.family ? { family: entry.family } : {}),
54
+ ...(entry?.status || entry?.openrouter.status
55
+ ? { status: entry?.status ?? entry?.openrouter.status }
56
+ : {}),
57
+ ...(entry?.knowledgeCutoff || entry?.openrouter.knowledgeCutoff
58
+ ? {
59
+ knowledgeCutoff: entry?.knowledgeCutoff ?? entry?.openrouter.knowledgeCutoff,
60
+ }
61
+ : {}),
62
+ catalogLane: entry ? inferCatalogLaneFromEntry(entry) : "text",
63
+ ...(entry?.openrouter.modelId
64
+ ? { openRouterModelId: entry.openrouter.modelId }
65
+ : {}),
66
+ ...(entry?.openrouter.canonicalSlug
67
+ ? { canonicalSlug: entry.openrouter.canonicalSlug }
68
+ : {}),
69
+ pricing: pricingWithRegistryUnits(entry ? pricingFromCatalogEntry(entry) : undefined),
70
+ ...(entry?.openrouter.pricing
71
+ ? { catalogPricing: entry.openrouter.pricing }
72
+ : {}),
73
+ ...resolvedLimits,
74
+ ...(limits ? { limits } : {}),
75
+ ...(capabilities ? { capabilities } : {}),
76
+ ...(entry?.openrouter.capabilities
77
+ ? { catalogCapabilities: entry.openrouter.capabilities }
78
+ : {}),
79
+ modalities,
80
+ modelSignals: modelSignalsFromCapabilities(capabilities, limits),
81
+ ...(params.profileChoice ? { profileChoice: params.profileChoice } : {}),
82
+ ...(params.includeCatalogEntry && entry ? { catalogEntry: entry } : {}),
83
+ ...(params.matchConfidence ? { matchConfidence: params.matchConfidence } : {}),
84
+ ...(params.loaderWarnings && params.loaderWarnings.length > 0
85
+ ? { warnings: params.loaderWarnings }
86
+ : {}),
87
+ };
88
+ }
89
+ export function buildResolvedCatalogModelFromMatch(params) {
90
+ const preferOpenRouter = resolvePreferOpenRouter(params.preferOpenRouter);
91
+ const endpoint = preferOpenRouter && params.match.invocation.openrouter
92
+ ? params.match.invocation.openrouter
93
+ : params.match.invocation.direct;
94
+ const routing = endpoint.provider === "openrouter" ? "openrouter" : "direct";
95
+ return catalogModelFromEntry({
96
+ input: params.input,
97
+ entry: params.match.entry,
98
+ invocation: params.match.invocation,
99
+ provider: endpoint.provider,
100
+ modelId: endpoint.modelId,
101
+ routing,
102
+ includeCatalogEntry: params.includeCatalogEntry,
103
+ profileChoice: params.profileChoice,
104
+ matchConfidence: params.matchConfidence,
105
+ loaderWarnings: params.loaderWarnings,
106
+ });
107
+ }
108
+ export function buildResolvedCatalogModelFromChoice(params) {
109
+ const preferOpenRouter = resolvePreferOpenRouter(params.preferOpenRouter);
110
+ const mergedRuntimeBackend = params.choice.runtime?.backend ?? params.profile?.runtime?.backend;
111
+ const resolvedBackend = params.profile
112
+ ? resolveBackend(params.profile, params.choice, mergedRuntimeBackend)
113
+ : (mergedRuntimeBackend ?? "openrouter");
114
+ const routed = applyModelRouting(params.choice, resolvedBackend, preferOpenRouter, params.catalog);
115
+ const instructionTier = params.choice.runtime?.instructionTier ??
116
+ params.profile?.runtime?.instructionTier;
117
+ const enriched = enrichChoiceFromCatalog(params.catalog, params.choice, {
118
+ provider: routed.provider,
119
+ modelId: routed.modelId,
120
+ }, instructionTier);
121
+ const invocation = resolveChoiceInvocation(params.choice, params.catalog);
122
+ const entry = enriched.catalogEntry;
123
+ const rawModalities = entry?.modalities ?? entry?.openrouter.modalities ?? undefined;
124
+ const modalities = normalizeModalityContract(rawModalities);
125
+ const limits = enriched.limits ?? params.choice.limits;
126
+ const capabilities = enriched.capabilities
127
+ ? {
128
+ ...enriched.capabilities,
129
+ contextWindow: limits?.contextWindow ?? enriched.capabilities.contextWindow,
130
+ maxOutputTokens: limits?.maxOutputTokens ?? enriched.capabilities.maxOutputTokens,
131
+ }
132
+ : limits
133
+ ? {
134
+ contextWindow: limits.contextWindow,
135
+ maxOutputTokens: limits.maxOutputTokens,
136
+ }
137
+ : undefined;
138
+ return {
139
+ input: params.input,
140
+ provider: routed.provider,
141
+ modelId: routed.modelId,
142
+ routing: routed.routing,
143
+ invocation,
144
+ ...(entry?.displayName ? { displayName: entry.displayName } : {}),
145
+ ...(entry?.family ? { family: entry.family } : {}),
146
+ ...(entry?.status || entry?.openrouter.status
147
+ ? { status: entry?.status ?? entry?.openrouter.status }
148
+ : {}),
149
+ ...(entry?.knowledgeCutoff || entry?.openrouter.knowledgeCutoff
150
+ ? {
151
+ knowledgeCutoff: entry?.knowledgeCutoff ?? entry?.openrouter.knowledgeCutoff,
152
+ }
153
+ : {}),
154
+ catalogLane: entry
155
+ ? inferCatalogLaneFromEntry(entry)
156
+ : (params.profile?.catalogLane ?? "text"),
157
+ openRouterModelId: invocation.openrouter?.modelId ??
158
+ entry?.openrouter.modelId ??
159
+ `${params.choice.provider}/${getChoiceVendorModelId(params.choice)}`,
160
+ ...(entry?.openrouter.canonicalSlug
161
+ ? { canonicalSlug: entry.openrouter.canonicalSlug }
162
+ : {}),
163
+ pricing: pricingWithRegistryUnits(enriched.pricing),
164
+ ...(entry?.openrouter.pricing
165
+ ? { catalogPricing: entry.openrouter.pricing }
166
+ : {}),
167
+ ...topLevelLimits(limits, capabilities),
168
+ ...(limits ? { limits } : {}),
169
+ ...(capabilities ? { capabilities } : {}),
170
+ ...(entry?.openrouter.capabilities
171
+ ? { catalogCapabilities: entry.openrouter.capabilities }
172
+ : {}),
173
+ modalities,
174
+ modelSignals: modelSignalsFromCapabilities(capabilities, limits),
175
+ ...(params.profileChoice ? { profileChoice: params.profileChoice } : {}),
176
+ ...(params.includeCatalogEntry && entry ? { catalogEntry: entry } : {}),
177
+ };
178
+ }
179
+ //# sourceMappingURL=buildResolvedCatalogModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildResolvedCatalogModel.js","sourceRoot":"","sources":["../src/buildResolvedCatalogModel.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AIProfileChoice, AIProfileDefinition, AIProfileWarning, AIProfilesRegistry, CostCapPer1M, ModelsCatalogJson, ResolvedAIProfile } from "./types.js";
1
+ import type { AIProfileChoice, AIProfileDefinition, AIProfileWarning, AIProfilesRegistry, CostCapPer1M, ModelsCatalogJson, PreferOpenRouterInput, ResolvedAIProfile } from "./types.js";
2
2
  interface BuildResolvedProfileInput {
3
3
  input: string;
4
4
  profile: AIProfileDefinition;
@@ -6,9 +6,11 @@ interface BuildResolvedProfileInput {
6
6
  choiceKey: string;
7
7
  registry: AIProfilesRegistry;
8
8
  loaderWarnings?: AIProfileWarning[];
9
- useOpenRouter?: boolean;
9
+ preferOpenRouter?: PreferOpenRouterInput;
10
10
  catalog?: ModelsCatalogJson;
11
11
  costCapApplied?: CostCapPer1M;
12
+ includeCatalog?: boolean;
13
+ includeCatalogEntry?: boolean;
12
14
  }
13
15
  export declare function buildResolvedProfile(params: BuildResolvedProfileInput): ResolvedAIProfile;
14
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"buildResolvedProfile.d.ts","sourceRoot":"","sources":["../src/buildResolvedProfile.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EAEZ,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,UAAU,yBAAyB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,cAAc,CAAC,EAAE,YAAY,CAAC;CAC/B;AA8CD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,yBAAyB,GAChC,iBAAiB,CAyLnB"}
1
+ {"version":3,"file":"buildResolvedProfile.d.ts","sourceRoot":"","sources":["../src/buildResolvedProfile.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EAEZ,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,UAAU,yBAAyB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AA8CD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,yBAAyB,GAChC,iBAAiB,CA8MnB"}
@@ -1,3 +1,4 @@
1
+ import { buildResolvedCatalogModelFromChoice } from "./buildResolvedCatalogModel.js";
1
2
  import { DEFAULT_CACHE_TTL_MS, DEFAULT_RUNTIME_DEFAULTS } from "./constants.js";
2
3
  import { enrichChoiceFromCatalog } from "./catalogEnrichment.js";
3
4
  import { getChoiceModalities, resolveRequiredModalities, } from "./modalityPolicy.js";
@@ -8,7 +9,7 @@ import { buildModelInvocationFromChoice } from "./profileRegistryV2.js";
8
9
  import { resolveChoiceInvocation } from "./resolveCatalogListing.js";
9
10
  import { resolveChoicePricing } from "./profileRegistryV3.js";
10
11
  import { resolveBackend, resolveInstructionTier, } from "./resolveInstructionTierAndBackend.js";
11
- import { applyModelRouting, resolveUseOpenRouter, } from "./resolveModelRouting.js";
12
+ import { applyModelRouting, resolvePreferOpenRouter, } from "./resolveModelRouting.js";
12
13
  function resolveInvocation(profileKey, choiceKey, choice) {
13
14
  try {
14
15
  const modelsRegistry = loadBundledModelsRegistry();
@@ -38,7 +39,7 @@ function loadCatalogForEnrichment(catalog) {
38
39
  }
39
40
  }
40
41
  export function buildResolvedProfile(params) {
41
- const { input, profile, choice, registry, loaderWarnings = [], useOpenRouter: explicitUseOpenRouter, catalog: catalogInput, } = params;
42
+ const { input, profile, choice, registry, loaderWarnings = [], preferOpenRouter: explicitPreferOpenRouter, catalog: catalogInput, } = params;
42
43
  const costCapApplied = params.costCapApplied;
43
44
  const warnings = [...loaderWarnings];
44
45
  const cache = getMemoryCache();
@@ -75,14 +76,14 @@ export function buildResolvedProfile(params) {
75
76
  };
76
77
  const instructionTier = resolveInstructionTier(profile, mergedRuntime.instructionTier);
77
78
  const resolvedBackend = resolveBackend(profile, choice, mergedRuntime.backend);
78
- const useOpenRouter = resolveUseOpenRouter(explicitUseOpenRouter);
79
+ const preferOpenRouter = resolvePreferOpenRouter(explicitPreferOpenRouter);
79
80
  const catalog = loadCatalogForEnrichment(catalogInput);
80
- const routed = applyModelRouting(choice, resolvedBackend, useOpenRouter, catalog);
81
+ const routed = applyModelRouting(choice, resolvedBackend, preferOpenRouter, catalog);
81
82
  const enriched = catalog
82
83
  ? enrichChoiceFromCatalog(catalog, choice, {
83
84
  provider: routed.provider,
84
85
  modelId: routed.modelId,
85
- })
86
+ }, instructionTier)
86
87
  : {};
87
88
  const flatPricing = resolveChoicePricing(choice, enriched.pricing);
88
89
  const pricing = flatPricing
@@ -101,7 +102,7 @@ export function buildResolvedProfile(params) {
101
102
  const invocation = (catalog
102
103
  ? resolveChoiceInvocation(choice, catalog)
103
104
  : undefined) ?? resolveInvocation(profile.profile, params.choiceKey, choice);
104
- if (!invocation.openrouter && useOpenRouter) {
105
+ if (!invocation.openrouter && preferOpenRouter) {
105
106
  try {
106
107
  const modelsRegistry = loadBundledModelsRegistry();
107
108
  const entry = Object.values(modelsRegistry.models).find((model) => model.usage.profileChoices.some((ref) => ref.profile === profile.profile && ref.choice === choice.choice));
@@ -139,6 +140,7 @@ export function buildResolvedProfile(params) {
139
140
  supportsStructuredOutput: capabilities?.supportsJsonSchema,
140
141
  supportsTools: capabilities?.supportsTools,
141
142
  contextWindow: capabilities?.contextWindow ?? limits?.contextWindow,
143
+ maxOutputTokens: capabilities?.maxOutputTokens ?? limits?.maxOutputTokens,
142
144
  };
143
145
  const requiredModalities = resolveRequiredModalities(profile.profile, profile);
144
146
  const modalities = getChoiceModalities(choice, catalog);
@@ -183,6 +185,20 @@ export function buildResolvedProfile(params) {
183
185
  if (warnings.length > 0) {
184
186
  resolved.warnings = warnings;
185
187
  }
188
+ if (params.includeCatalog && catalog) {
189
+ resolved.catalogModel = buildResolvedCatalogModelFromChoice({
190
+ input,
191
+ choice,
192
+ catalog,
193
+ profile,
194
+ preferOpenRouter: explicitPreferOpenRouter,
195
+ includeCatalogEntry: params.includeCatalogEntry,
196
+ profileChoice: {
197
+ profile: profile.profile,
198
+ choice: params.choiceKey,
199
+ },
200
+ });
201
+ }
186
202
  return resolved;
187
203
  }
188
204
  //# sourceMappingURL=buildResolvedProfile.js.map
@@ -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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"}