@x12i/ai-profiles 1.4.0 → 1.5.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 (144) hide show
  1. package/README.md +186 -16
  2. package/dist/buildCatalogFromOpenRouterApi.d.ts +29 -0
  3. package/dist/buildCatalogFromOpenRouterApi.d.ts.map +1 -0
  4. package/dist/buildCatalogFromOpenRouterApi.js +113 -0
  5. package/dist/buildCatalogFromOpenRouterApi.js.map +1 -0
  6. package/dist/buildModelsRegistry.d.ts +25 -0
  7. package/dist/buildModelsRegistry.d.ts.map +1 -0
  8. package/dist/buildModelsRegistry.js +190 -0
  9. package/dist/buildModelsRegistry.js.map +1 -0
  10. package/dist/buildResolvedProfile.d.ts +3 -1
  11. package/dist/buildResolvedProfile.d.ts.map +1 -1
  12. package/dist/buildResolvedProfile.js +94 -11
  13. package/dist/buildResolvedProfile.js.map +1 -1
  14. package/dist/catalogEnrichment.d.ts +19 -0
  15. package/dist/catalogEnrichment.d.ts.map +1 -0
  16. package/dist/catalogEnrichment.js +87 -0
  17. package/dist/catalogEnrichment.js.map +1 -0
  18. package/dist/computeRegistryStatistics.d.ts +15 -0
  19. package/dist/computeRegistryStatistics.d.ts.map +1 -0
  20. package/dist/computeRegistryStatistics.js +168 -0
  21. package/dist/computeRegistryStatistics.js.map +1 -0
  22. package/dist/constants.d.ts +6 -0
  23. package/dist/constants.d.ts.map +1 -1
  24. package/dist/constants.js +10 -0
  25. package/dist/constants.js.map +1 -1
  26. package/dist/data/models-catalog.json +2219 -0
  27. package/dist/data/models-profiles.json +1361 -193
  28. package/dist/data/models-profiles.schema.json +130 -0
  29. package/dist/data/models-registry.json +1606 -0
  30. package/dist/data/openrouter-models-catalog.json +857 -0
  31. package/dist/data/profiles-shortcuts.json +101 -2
  32. package/dist/errors.d.ts +1 -1
  33. package/dist/errors.d.ts.map +1 -1
  34. package/dist/errors.js.map +1 -1
  35. package/dist/formatRegistryStatistics.d.ts +4 -0
  36. package/dist/formatRegistryStatistics.d.ts.map +1 -0
  37. package/dist/formatRegistryStatistics.js +34 -0
  38. package/dist/formatRegistryStatistics.js.map +1 -0
  39. package/dist/getAIRegistryStatistics.d.ts +11 -0
  40. package/dist/getAIRegistryStatistics.d.ts.map +1 -0
  41. package/dist/getAIRegistryStatistics.js +52 -0
  42. package/dist/getAIRegistryStatistics.js.map +1 -0
  43. package/dist/index.d.ts +22 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +19 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/listAIProfiles.d.ts +6 -0
  48. package/dist/listAIProfiles.d.ts.map +1 -1
  49. package/dist/listAIProfiles.js +6 -0
  50. package/dist/listAIProfiles.js.map +1 -1
  51. package/dist/loadModelsRegistry.d.ts +6 -0
  52. package/dist/loadModelsRegistry.d.ts.map +1 -0
  53. package/dist/loadModelsRegistry.js +43 -0
  54. package/dist/loadModelsRegistry.js.map +1 -0
  55. package/dist/loader/catalogMemoryCache.d.ts +12 -0
  56. package/dist/loader/catalogMemoryCache.d.ts.map +1 -0
  57. package/dist/loader/catalogMemoryCache.js +14 -0
  58. package/dist/loader/catalogMemoryCache.js.map +1 -0
  59. package/dist/loader/loadBundledModelsCatalog.d.ts +3 -0
  60. package/dist/loader/loadBundledModelsCatalog.d.ts.map +1 -0
  61. package/dist/loader/loadBundledModelsCatalog.js +20 -0
  62. package/dist/loader/loadBundledModelsCatalog.js.map +1 -0
  63. package/dist/loader/loadBundledModelsProfiles.d.ts +4 -0
  64. package/dist/loader/loadBundledModelsProfiles.d.ts.map +1 -0
  65. package/dist/loader/loadBundledModelsProfiles.js +14 -0
  66. package/dist/loader/loadBundledModelsProfiles.js.map +1 -0
  67. package/dist/loader/loadBundledRegistry.d.ts.map +1 -1
  68. package/dist/loader/loadBundledRegistry.js +2 -1
  69. package/dist/loader/loadBundledRegistry.js.map +1 -1
  70. package/dist/loader/loadModelsCatalog.d.ts +9 -0
  71. package/dist/loader/loadModelsCatalog.d.ts.map +1 -0
  72. package/dist/loader/loadModelsCatalog.js +72 -0
  73. package/dist/loader/loadModelsCatalog.js.map +1 -0
  74. package/dist/loader/loadModelsProfilesJson.d.ts +3 -0
  75. package/dist/loader/loadModelsProfilesJson.d.ts.map +1 -0
  76. package/dist/loader/loadModelsProfilesJson.js +18 -0
  77. package/dist/loader/loadModelsProfilesJson.js.map +1 -0
  78. package/dist/loader/loadRemoteModelsCatalog.d.ts +3 -0
  79. package/dist/loader/loadRemoteModelsCatalog.d.ts.map +1 -0
  80. package/dist/loader/loadRemoteModelsCatalog.js +23 -0
  81. package/dist/loader/loadRemoteModelsCatalog.js.map +1 -0
  82. package/dist/loader/loadRemoteModelsProfiles.d.ts +3 -0
  83. package/dist/loader/loadRemoteModelsProfiles.d.ts.map +1 -0
  84. package/dist/loader/loadRemoteModelsProfiles.js +21 -0
  85. package/dist/loader/loadRemoteModelsProfiles.js.map +1 -0
  86. package/dist/loader/loadRemoteRegistry.d.ts.map +1 -1
  87. package/dist/loader/loadRemoteRegistry.js +2 -1
  88. package/dist/loader/loadRemoteRegistry.js.map +1 -1
  89. package/dist/mergeCatalogSupplement.d.ts +4 -0
  90. package/dist/mergeCatalogSupplement.d.ts.map +1 -0
  91. package/dist/mergeCatalogSupplement.js +26 -0
  92. package/dist/mergeCatalogSupplement.js.map +1 -0
  93. package/dist/modelIdentity.d.ts +33 -0
  94. package/dist/modelIdentity.d.ts.map +1 -0
  95. package/dist/modelIdentity.js +150 -0
  96. package/dist/modelIdentity.js.map +1 -0
  97. package/dist/modelsCatalog.d.ts +21 -0
  98. package/dist/modelsCatalog.d.ts.map +1 -0
  99. package/dist/modelsCatalog.js +187 -0
  100. package/dist/modelsCatalog.js.map +1 -0
  101. package/dist/profileCatalogSupplement.d.ts +7 -0
  102. package/dist/profileCatalogSupplement.d.ts.map +1 -0
  103. package/dist/profileCatalogSupplement.js +292 -0
  104. package/dist/profileCatalogSupplement.js.map +1 -0
  105. package/dist/profileRegistryV2.d.ts +19 -0
  106. package/dist/profileRegistryV2.d.ts.map +1 -0
  107. package/dist/profileRegistryV2.js +257 -0
  108. package/dist/profileRegistryV2.js.map +1 -0
  109. package/dist/profileRegistryV3.d.ts +11 -0
  110. package/dist/profileRegistryV3.d.ts.map +1 -0
  111. package/dist/profileRegistryV3.js +526 -0
  112. package/dist/profileRegistryV3.js.map +1 -0
  113. package/dist/resolveAIProfile.d.ts +8 -0
  114. package/dist/resolveAIProfile.d.ts.map +1 -1
  115. package/dist/resolveAIProfile.js +62 -18
  116. package/dist/resolveAIProfile.js.map +1 -1
  117. package/dist/resolveModelRouting.d.ts +2 -1
  118. package/dist/resolveModelRouting.d.ts.map +1 -1
  119. package/dist/resolveModelRouting.js +9 -10
  120. package/dist/resolveModelRouting.js.map +1 -1
  121. package/dist/types.d.ts +339 -4
  122. package/dist/types.d.ts.map +1 -1
  123. package/dist/types.js +10 -0
  124. package/dist/types.js.map +1 -1
  125. package/dist/validateProfileVendorCoverage.d.ts +12 -0
  126. package/dist/validateProfileVendorCoverage.d.ts.map +1 -0
  127. package/dist/validateProfileVendorCoverage.js +58 -0
  128. package/dist/validateProfileVendorCoverage.js.map +1 -0
  129. package/dist/validation/openRouterAlignment.d.ts +6 -15
  130. package/dist/validation/openRouterAlignment.d.ts.map +1 -1
  131. package/dist/validation/openRouterAlignment.js +9 -57
  132. package/dist/validation/openRouterAlignment.js.map +1 -1
  133. package/dist/validation/validateModelsCatalog.d.ts +3 -0
  134. package/dist/validation/validateModelsCatalog.d.ts.map +1 -0
  135. package/dist/validation/validateModelsCatalog.js +42 -0
  136. package/dist/validation/validateModelsCatalog.js.map +1 -0
  137. package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
  138. package/dist/validation/validateModelsProfilesJson.js +38 -2
  139. package/dist/validation/validateModelsProfilesJson.js.map +1 -1
  140. package/dist/vendorPolicy.d.ts +20 -0
  141. package/dist/vendorPolicy.d.ts.map +1 -0
  142. package/dist/vendorPolicy.js +71 -0
  143. package/dist/vendorPolicy.js.map +1 -0
  144. package/package.json +12 -2
@@ -0,0 +1,257 @@
1
+ import { buildOpenRouterModelId } from "./modelIdentity.js";
2
+ /** Vendor-native model ID corrections (dotted → dashed Anthropic, stale SKUs, etc.). */
3
+ export const VENDOR_MODEL_ID_FIXES = {
4
+ "claude-haiku-4.5": "claude-haiku-4-5",
5
+ "claude-sonnet-4.6": "claude-sonnet-4-6",
6
+ "claude-opus-4.7": "claude-opus-4-8",
7
+ "grok-4.1-fast": "grok-build-0.1",
8
+ "gemini-4.0-pro": "gemini-2.5-pro",
9
+ "meta-llama/Llama-3.3-70b-instruct": "meta-llama/Llama-3.3-70B-Instruct-Turbo",
10
+ "qwen/qwen-2.5-72b-instruct": "Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
11
+ };
12
+ export function fixVendorModelId(modelId) {
13
+ return VENDOR_MODEL_ID_FIXES[modelId] ?? modelId;
14
+ }
15
+ export function openRouterSlugFor(provider, vendorModelId) {
16
+ if (provider === "local")
17
+ return null;
18
+ if (provider === "together")
19
+ return null;
20
+ if (provider === "xai") {
21
+ return vendorModelId.startsWith("grok-")
22
+ ? `x-ai/${vendorModelId}`
23
+ : buildOpenRouterModelId(provider, vendorModelId);
24
+ }
25
+ return buildOpenRouterModelId(provider, vendorModelId);
26
+ }
27
+ function isV2Pricing(pricing) {
28
+ return (pricing !== undefined &&
29
+ typeof pricing === "object" &&
30
+ "billingModel" in pricing);
31
+ }
32
+ function migrateFlatPricing(flat, provider) {
33
+ if (!flat) {
34
+ if (provider === "local") {
35
+ return {
36
+ billingModel: "self_hosted",
37
+ currency: "USD",
38
+ unit: "1M_tokens",
39
+ priceStatus: "standard",
40
+ notes: "Self-hosted; no per-token cloud billing.",
41
+ };
42
+ }
43
+ return undefined;
44
+ }
45
+ const pricing = {
46
+ billingModel: "token",
47
+ currency: "USD",
48
+ unit: "1M_tokens",
49
+ priceStatus: "standard",
50
+ standard: {
51
+ input: flat.input,
52
+ output: flat.output,
53
+ cachedInput: flat.cachedInput,
54
+ },
55
+ };
56
+ if (flat.batchInput !== undefined ||
57
+ flat.batchOutput !== undefined) {
58
+ pricing.batch = {
59
+ input: flat.batchInput,
60
+ output: flat.batchOutput,
61
+ };
62
+ }
63
+ if (flat.cacheWrite5m !== undefined ||
64
+ flat.cacheWrite1h !== undefined ||
65
+ flat.cacheHit !== undefined) {
66
+ pricing.cache = {
67
+ write5m: flat.cacheWrite5m,
68
+ write1h: flat.cacheWrite1h,
69
+ hit: flat.cacheHit,
70
+ };
71
+ }
72
+ if (flat.inputBelow200k !== undefined ||
73
+ flat.inputAbove200k !== undefined) {
74
+ pricing.notes =
75
+ "Tiered context pricing; standard rates reflect ≤200k token tier where applicable.";
76
+ pricing.standard = {
77
+ ...pricing.standard,
78
+ input: flat.inputBelow200k ?? flat.input,
79
+ output: flat.outputBelow200k ?? flat.output,
80
+ };
81
+ }
82
+ if (flat.notes) {
83
+ pricing.notes = [pricing.notes, flat.notes].filter(Boolean).join(" ");
84
+ }
85
+ return pricing;
86
+ }
87
+ /** Flatten v2 pricing for {@link ResolvedAIProfile} and legacy consumers. */
88
+ export function flattenChoicePricing(pricing) {
89
+ if (!pricing || pricing.billingModel === "self_hosted") {
90
+ return undefined;
91
+ }
92
+ const flat = {
93
+ input: pricing.standard?.input,
94
+ output: pricing.standard?.output,
95
+ cachedInput: pricing.standard?.cachedInput,
96
+ batchInput: pricing.batch?.input,
97
+ batchOutput: pricing.batch?.output,
98
+ cacheWrite5m: pricing.cache?.write5m,
99
+ cacheWrite1h: pricing.cache?.write1h,
100
+ cacheHit: pricing.cache?.hit,
101
+ notes: pricing.notes,
102
+ };
103
+ if (pricing.futureStandard) {
104
+ const promo = `Promotional through ${pricing.futureStandard.validUntil ?? "see provider"}: input ${pricing.futureStandard.input}, output ${pricing.futureStandard.output}.`;
105
+ flat.notes = [flat.notes, promo].filter(Boolean).join(" ");
106
+ }
107
+ return flat;
108
+ }
109
+ export function isModelsProfilesV2(value) {
110
+ return value.schema === "x12i.ai-profiles.model-registry.v2";
111
+ }
112
+ export function getChoiceApi(choice) {
113
+ return choice.api;
114
+ }
115
+ export function getChoiceVendorModelId(choice) {
116
+ const api = getChoiceApi(choice);
117
+ return api?.vendorModelId ?? fixVendorModelId(choice.modelId);
118
+ }
119
+ export function buildModelInvocationFromChoice(choice) {
120
+ const vendorModelId = getChoiceVendorModelId(choice);
121
+ const provider = choice.provider;
122
+ if (provider === "local") {
123
+ return {
124
+ direct: { provider: "local", modelId: vendorModelId },
125
+ openrouter: null,
126
+ };
127
+ }
128
+ if (vendorModelId.startsWith("funcx:") ||
129
+ vendorModelId.startsWith("Xenova/")) {
130
+ return {
131
+ direct: { provider: "local", modelId: vendorModelId },
132
+ openrouter: null,
133
+ };
134
+ }
135
+ const openRouterModelId = getChoiceOpenRouterModelId(choice);
136
+ return {
137
+ direct: { provider, modelId: vendorModelId },
138
+ openrouter: openRouterModelId
139
+ ? { provider: "openrouter", modelId: openRouterModelId }
140
+ : null,
141
+ };
142
+ }
143
+ export function getChoiceOpenRouterModelId(choice) {
144
+ const api = getChoiceApi(choice);
145
+ if (api?.openRouterModelId === null)
146
+ return null;
147
+ if (api?.openRouterModelId)
148
+ return api.openRouterModelId;
149
+ if (choice.metadata?.openRouter === "vendor-direct")
150
+ return null;
151
+ return openRouterSlugFor(choice.provider, getChoiceVendorModelId(choice));
152
+ }
153
+ export function getChoicePricing(choice) {
154
+ if (isV2Pricing(choice.pricing)) {
155
+ return flattenChoicePricing(choice.pricing);
156
+ }
157
+ return choice.pricing;
158
+ }
159
+ export function defaultFallbackOrder(profile) {
160
+ if (profile.fallbackChoiceOrder?.length) {
161
+ return profile.fallbackChoiceOrder;
162
+ }
163
+ return [
164
+ profile.defaultChoice,
165
+ ...Object.keys(profile.choices).filter((k) => k !== profile.defaultChoice),
166
+ ];
167
+ }
168
+ export function migrateModelsProfilesToV2(input, options) {
169
+ const lastVerifiedAt = options?.lastVerifiedAt ?? new Date().toISOString().replace(/\.\d{3}Z$/, "Z");
170
+ const profiles = {};
171
+ for (const [profileKey, profile] of Object.entries(input.profiles)) {
172
+ const choices = {};
173
+ for (const [choiceKey, choice] of Object.entries(profile.choices)) {
174
+ const vendorModelId = fixVendorModelId(choice.modelId);
175
+ const isVendorDirect = choice.metadata?.openRouter === "vendor-direct" ||
176
+ choice.provider === "together";
177
+ const orSlug = isVendorDirect
178
+ ? null
179
+ : openRouterSlugFor(choice.provider, vendorModelId);
180
+ const defaultTransport = choice.provider === "local"
181
+ ? "direct"
182
+ : isVendorDirect
183
+ ? "direct"
184
+ : (choice.runtime?.backend ?? "openrouter") === "openrouter"
185
+ ? "openrouter"
186
+ : "direct";
187
+ const { pricing: _legacyPricing, ...choiceRest } = choice;
188
+ const migratedPricing = migrateFlatPricing(isV2Pricing(choice.pricing)
189
+ ? flattenChoicePricing(choice.pricing)
190
+ : _legacyPricing, choice.provider);
191
+ choices[choiceKey] = {
192
+ ...choiceRest,
193
+ modelId: vendorModelId,
194
+ api: {
195
+ defaultTransport,
196
+ vendorModelId,
197
+ openRouterModelId: orSlug,
198
+ },
199
+ pricing: migratedPricing,
200
+ verification: {
201
+ lastVerifiedAt,
202
+ sourceRefs: [`vendor:${choice.provider}`, "openrouter:catalog"],
203
+ },
204
+ };
205
+ if (choice.provider === "local" && choices[choiceKey].metadata) {
206
+ const meta = { ...choices[choiceKey].metadata };
207
+ if (choiceKey === "transformersjs_default" &&
208
+ meta.defaultModelId !== vendorModelId) {
209
+ meta.defaultModelId = vendorModelId;
210
+ }
211
+ choices[choiceKey].metadata = meta;
212
+ }
213
+ }
214
+ if (profileKey === "deep" && choices.deepseek_pro?.pricing && isV2Pricing(choices.deepseek_pro.pricing)) {
215
+ choices.deepseek_pro.pricing.futureStandard = {
216
+ input: 0.14,
217
+ output: 0.28,
218
+ validUntil: "2026-05-31T15:59:00Z",
219
+ notes: "DeepSeek V4 Pro promotional pricing per provider docs.",
220
+ };
221
+ choices.deepseek_pro.pricing.priceStatus = "promotional";
222
+ }
223
+ profiles[profileKey] = {
224
+ ...profile,
225
+ choices,
226
+ fallbackChoiceOrder: defaultFallbackOrder(profile),
227
+ };
228
+ }
229
+ return {
230
+ schema: "x12i.ai-profiles.model-registry.v2",
231
+ registryId: "models-profiles",
232
+ generatedAt: input.generatedAt ?? lastVerifiedAt,
233
+ lastVerifiedAt,
234
+ version: "2.0.0",
235
+ currency: "USD",
236
+ pricingUnit: "1M_tokens",
237
+ namingConvention: "lowerCamelCase",
238
+ semantics: {
239
+ provider: "Billing owner / vendor source of truth for the model SKU.",
240
+ modelId: "Canonical vendor-native model identifier for direct API calls.",
241
+ openRouterModelId: "Optional OpenRouter transport slug; use api.openRouterModelId at runtime when routing via OpenRouter.",
242
+ },
243
+ sourceCatalog: {
244
+ providers: [
245
+ { id: "openai", docsUrl: "https://platform.openai.com/docs/models" },
246
+ { id: "anthropic", docsUrl: "https://docs.anthropic.com/en/docs/about-claude/models" },
247
+ { id: "google", docsUrl: "https://ai.google.dev/gemini-api/docs/models" },
248
+ { id: "deepseek", docsUrl: "https://api-docs.deepseek.com" },
249
+ { id: "xai", docsUrl: "https://docs.x.ai/docs/models" },
250
+ { id: "together", docsUrl: "https://docs.together.ai/docs/serverless-models" },
251
+ ],
252
+ modelsCatalogUrl: "https://open-assets.x12i.com/openrouter-models-catalog.json",
253
+ },
254
+ profiles,
255
+ };
256
+ }
257
+ //# sourceMappingURL=profileRegistryV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileRegistryV2.js","sourceRoot":"","sources":["../src/profileRegistryV2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { AIProfileChoice, AIModelPricing, ModelsProfilesJson } from "./types.js";
2
+ import { getChoicePricing } from "./profileRegistryV2.js";
3
+ export declare const PREDICTED_VENDOR_MODEL_IDS: Set<string>;
4
+ export declare function isModelsProfilesV3(value: ModelsProfilesJson): boolean;
5
+ export declare function migrateModelsProfilesToV3(input: ModelsProfilesJson, options?: {
6
+ lastVerifiedAt?: string;
7
+ }): ModelsProfilesJson;
8
+ export declare function applyVerifiedProfileDefaults(input: ModelsProfilesJson): ModelsProfilesJson;
9
+ /** Resolve pricing: catalog-first at runtime; embedded profile pricing is legacy fallback only. */
10
+ export declare function resolveChoicePricing(choice: AIProfileChoice, catalogPricing?: AIModelPricing): ReturnType<typeof getChoicePricing>;
11
+ //# sourceMappingURL=profileRegistryV3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileRegistryV3.d.ts","sourceRoot":"","sources":["../src/profileRegistryV3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EAGd,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAGL,gBAAgB,EAEjB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,0BAA0B,aAYrC,CAAC;AAiYH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAErE;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC,kBAAkB,CAgFpB;AA8DD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,kBAAkB,GACxB,kBAAkB,CAqBpB;AAED,mGAAmG;AACnG,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,cAAc,GAC9B,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAKrC"}