@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,187 @@
1
+ import { REMOTE_MODELS_CATALOG_URL } from "./constants.js";
2
+ /** Canonical remote catalog asset (same host pattern as models-profiles.json). */
3
+ export const MODELS_CATALOG_REMOTE_URL = REMOTE_MODELS_CATALOG_URL;
4
+ /** @deprecated Legacy filename on open-assets; prefer {@link MODELS_CATALOG_REMOTE_URL}. */
5
+ export const LEGACY_OPENROUTER_CATALOG_REMOTE_URL = "https://open-assets.x12i.com/openrouter-models-catalog.json";
6
+ export const MODELS_CATALOG_FILENAME = "models-catalog.json";
7
+ export const MODELS_CATALOG_SCHEMA = "x12i.ai-profiles.models-catalog";
8
+ const LEGACY_OPENROUTER_SCHEMA = "x12i.openrouter-models.catalog";
9
+ const DIRECT_PROVIDERS = [
10
+ "openai",
11
+ "anthropic",
12
+ "google",
13
+ "deepseek",
14
+ "xai",
15
+ "together",
16
+ "mistral",
17
+ "groq",
18
+ ];
19
+ function normalizeKey(value) {
20
+ return value.trim().toLowerCase();
21
+ }
22
+ /** Derive vendor-direct identity from an OpenRouter slug (`qwen/qwen3.7-max` → custom + qwen3.7-max). */
23
+ export function parseDirectFromOpenRouterSlug(slug, family) {
24
+ const trimmed = slug.trim();
25
+ if (!trimmed.includes("/")) {
26
+ return { provider: "openrouter", modelId: trimmed };
27
+ }
28
+ const slashIndex = trimmed.indexOf("/");
29
+ let prefix = trimmed.slice(0, slashIndex).toLowerCase();
30
+ const bare = trimmed.slice(slashIndex + 1);
31
+ if (prefix.startsWith("~")) {
32
+ prefix = prefix.slice(1);
33
+ }
34
+ if (prefix === "x-ai") {
35
+ return { provider: "xai", modelId: bare };
36
+ }
37
+ if (DIRECT_PROVIDERS.includes(prefix)) {
38
+ return { provider: prefix, modelId: bare };
39
+ }
40
+ if (prefix === "openrouter") {
41
+ return { provider: "openrouter", modelId: bare };
42
+ }
43
+ return {
44
+ provider: "custom",
45
+ modelId: bare,
46
+ vendorNamespace: family ?? prefix,
47
+ };
48
+ }
49
+ function buildOpenRouterSlice(orModelId, entry) {
50
+ return {
51
+ provider: "openrouter",
52
+ modelId: orModelId,
53
+ canonicalSlug: entry.canonicalSlug,
54
+ status: entry.status,
55
+ modalities: entry.modalities,
56
+ pricing: entry.pricing,
57
+ capabilities: entry.capabilities,
58
+ contextWindow: entry.contextWindow,
59
+ maxCompletionTokens: entry.maxCompletionTokens,
60
+ knowledgeCutoff: entry.knowledgeCutoff,
61
+ };
62
+ }
63
+ function legacyEntryToCatalogModel(entry) {
64
+ const orModelId = entry.modelId?.trim() ?? "";
65
+ const direct = parseDirectFromOpenRouterSlug(orModelId, entry.family);
66
+ const openrouter = buildOpenRouterSlice(orModelId, entry);
67
+ return {
68
+ direct,
69
+ openrouter,
70
+ displayName: entry.displayName,
71
+ family: entry.family,
72
+ status: entry.status,
73
+ modalities: entry.modalities,
74
+ contextWindow: entry.contextWindow,
75
+ maxCompletionTokens: entry.maxCompletionTokens,
76
+ knowledgeCutoff: entry.knowledgeCutoff,
77
+ };
78
+ }
79
+ function upgradeCatalogEntry(raw) {
80
+ const openrouterRaw = (raw.openrouter ?? {});
81
+ const legacyVendor = raw.vendor;
82
+ const legacyDirect = raw.direct;
83
+ let direct = legacyDirect ?? legacyVendor;
84
+ const orModelId = openrouterRaw.modelId ??
85
+ raw.modelId ??
86
+ "";
87
+ let openrouter = openrouterRaw.modelId !== undefined
88
+ ? {
89
+ provider: "openrouter",
90
+ modelId: String(openrouterRaw.modelId),
91
+ canonicalSlug: openrouterRaw.canonicalSlug,
92
+ status: openrouterRaw.status,
93
+ modalities: openrouterRaw.modalities,
94
+ pricing: openrouterRaw.pricing,
95
+ capabilities: openrouterRaw.capabilities,
96
+ contextWindow: openrouterRaw.contextWindow,
97
+ maxCompletionTokens: openrouterRaw.maxCompletionTokens,
98
+ knowledgeCutoff: openrouterRaw.knowledgeCutoff,
99
+ }
100
+ : undefined;
101
+ if (!openrouter && orModelId) {
102
+ openrouter = buildOpenRouterSlice(orModelId, raw);
103
+ }
104
+ if (!openrouter) {
105
+ throw new Error("catalog entry missing openrouter modelId");
106
+ }
107
+ if (!openrouter.provider) {
108
+ openrouter.provider = "openrouter";
109
+ }
110
+ if (!direct || direct.provider === "openrouter") {
111
+ direct = parseDirectFromOpenRouterSlug(openrouter.modelId, raw.family);
112
+ }
113
+ return {
114
+ direct,
115
+ openrouter,
116
+ displayName: raw.displayName,
117
+ family: raw.family,
118
+ status: raw.status,
119
+ modalities: raw.modalities,
120
+ contextWindow: raw.contextWindow,
121
+ maxCompletionTokens: raw.maxCompletionTokens,
122
+ knowledgeCutoff: raw.knowledgeCutoff,
123
+ };
124
+ }
125
+ /** Normalize legacy OpenRouter-only catalog or pass through unified catalog. */
126
+ export function normalizeModelsCatalog(raw) {
127
+ if (!raw || typeof raw !== "object") {
128
+ throw new Error("models catalog must be an object");
129
+ }
130
+ const doc = raw;
131
+ if (doc.schema === MODELS_CATALOG_SCHEMA) {
132
+ const models = doc.models.map((entry) => upgradeCatalogEntry(entry));
133
+ return {
134
+ ...doc,
135
+ models,
136
+ };
137
+ }
138
+ if (doc.schema === LEGACY_OPENROUTER_SCHEMA || Array.isArray(doc.models)) {
139
+ const legacy = doc;
140
+ const openrouterSource = legacy.source ?? {};
141
+ return {
142
+ schema: MODELS_CATALOG_SCHEMA,
143
+ version: legacy.version ?? "1.0.0",
144
+ generatedAt: legacy.generatedAt ?? new Date().toISOString(),
145
+ currency: "USD",
146
+ pricingUnit: "1M_tokens",
147
+ sources: {
148
+ openrouter: {
149
+ catalogUrl: openrouterSource.catalogUrl ??
150
+ MODELS_CATALOG_REMOTE_URL,
151
+ pricingUrl: openrouterSource.pricingUrl,
152
+ verifiedAt: openrouterSource.verifiedAt,
153
+ normalization: openrouterSource.normalization,
154
+ },
155
+ },
156
+ notes: legacy.notes,
157
+ models: (legacy.models ?? []).map(legacyEntryToCatalogModel),
158
+ };
159
+ }
160
+ throw new Error(`Unsupported models catalog schema: ${String(doc.schema)}`);
161
+ }
162
+ export function buildModelsCatalogIndex(catalog) {
163
+ const index = new Map();
164
+ for (const entry of catalog.models) {
165
+ const or = entry.openrouter;
166
+ const direct = entry.direct;
167
+ const record = {
168
+ openRouterModelId: or.modelId,
169
+ canonicalSlug: or.canonicalSlug,
170
+ directProvider: direct.provider,
171
+ directModelId: direct.modelId,
172
+ };
173
+ index.set(normalizeKey(or.modelId), record);
174
+ if (or.canonicalSlug?.trim()) {
175
+ index.set(normalizeKey(or.canonicalSlug), record);
176
+ }
177
+ index.set(normalizeKey(`${direct.provider}/${direct.modelId}`), record);
178
+ index.set(normalizeKey(direct.modelId), record);
179
+ if (direct.vendorNamespace) {
180
+ index.set(normalizeKey(`${direct.vendorNamespace}/${direct.modelId}`), record);
181
+ }
182
+ }
183
+ return index;
184
+ }
185
+ /** @deprecated Use {@link buildModelsCatalogIndex} */
186
+ export const buildOpenRouterCatalogIndex = buildModelsCatalogIndex;
187
+ //# sourceMappingURL=modelsCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelsCatalog.js","sourceRoot":"","sources":["../src/modelsCatalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CatalogModelEntry } from "./types.js";
2
+ /**
3
+ * Catalog rows for every vendor SKU referenced in models-profiles.json.
4
+ * Merged into models-catalog.json by `npm run registry:finish`.
5
+ */
6
+ export declare const PROFILE_CATALOG_SUPPLEMENT: CatalogModelEntry[];
7
+ //# sourceMappingURL=profileCatalogSupplement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileCatalogSupplement.d.ts","sourceRoot":"","sources":["../src/profileCatalogSupplement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,EA8RzD,CAAC"}
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Catalog rows for every vendor SKU referenced in models-profiles.json.
3
+ * Merged into models-catalog.json by `npm run registry:finish`.
4
+ */
5
+ export const PROFILE_CATALOG_SUPPLEMENT = [
6
+ {
7
+ direct: { provider: "openai", modelId: "gpt-5.4" },
8
+ openrouter: {
9
+ provider: "openrouter",
10
+ modelId: "openai/gpt-5.4",
11
+ status: "active",
12
+ modalities: { input: ["text", "image", "file"], output: ["text"] },
13
+ pricing: { input: 2.5, output: 15, cachedInput: 0.25 },
14
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
15
+ contextWindow: 1050000,
16
+ maxCompletionTokens: 128000,
17
+ },
18
+ displayName: "OpenAI: GPT-5.4",
19
+ family: "gpt",
20
+ status: "active",
21
+ contextWindow: 1050000,
22
+ maxCompletionTokens: 128000,
23
+ },
24
+ {
25
+ direct: { provider: "openai", modelId: "gpt-5.4-mini" },
26
+ openrouter: {
27
+ provider: "openrouter",
28
+ modelId: "openai/gpt-5.4-mini",
29
+ status: "active",
30
+ modalities: { input: ["text", "image", "file"], output: ["text"] },
31
+ pricing: { input: 0.75, output: 4.5, cachedInput: 0.075 },
32
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
33
+ contextWindow: 400000,
34
+ maxCompletionTokens: 128000,
35
+ },
36
+ displayName: "OpenAI: GPT-5.4 Mini",
37
+ family: "gpt",
38
+ status: "active",
39
+ contextWindow: 400000,
40
+ maxCompletionTokens: 128000,
41
+ },
42
+ {
43
+ direct: { provider: "openai", modelId: "gpt-4o-mini" },
44
+ openrouter: {
45
+ provider: "openrouter",
46
+ modelId: "openai/gpt-4o-mini",
47
+ status: "active",
48
+ modalities: { input: ["text", "image"], output: ["text"] },
49
+ pricing: { input: 0.15, output: 0.6, cachedInput: 0.075 },
50
+ capabilities: { reasoning: false, toolCalling: true, structuredOutputs: true },
51
+ contextWindow: 128000,
52
+ maxCompletionTokens: 16384,
53
+ },
54
+ displayName: "OpenAI: GPT-4o Mini",
55
+ family: "gpt",
56
+ status: "active",
57
+ contextWindow: 128000,
58
+ maxCompletionTokens: 16384,
59
+ },
60
+ {
61
+ direct: { provider: "anthropic", modelId: "claude-sonnet-4-6" },
62
+ openrouter: {
63
+ provider: "openrouter",
64
+ modelId: "anthropic/claude-sonnet-4.6",
65
+ status: "active",
66
+ modalities: { input: ["text", "image"], output: ["text"] },
67
+ pricing: {
68
+ input: 3,
69
+ output: 15,
70
+ cachedInput: 0.3,
71
+ cacheWrite: 3.75,
72
+ },
73
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
74
+ contextWindow: 200000,
75
+ maxCompletionTokens: 8192,
76
+ },
77
+ displayName: "Anthropic: Claude Sonnet 4.6",
78
+ family: "claude",
79
+ status: "active",
80
+ contextWindow: 200000,
81
+ maxCompletionTokens: 8192,
82
+ },
83
+ {
84
+ direct: { provider: "anthropic", modelId: "claude-opus-4-8" },
85
+ openrouter: {
86
+ provider: "openrouter",
87
+ modelId: "anthropic/claude-opus-4.8",
88
+ status: "active",
89
+ modalities: { input: ["text", "image"], output: ["text"] },
90
+ pricing: {
91
+ input: 15,
92
+ output: 75,
93
+ cachedInput: 1.5,
94
+ cacheWrite: 18.75,
95
+ },
96
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
97
+ contextWindow: 200000,
98
+ maxCompletionTokens: 8192,
99
+ },
100
+ displayName: "Anthropic: Claude Opus 4.8",
101
+ family: "claude",
102
+ status: "active",
103
+ contextWindow: 200000,
104
+ maxCompletionTokens: 8192,
105
+ },
106
+ {
107
+ direct: { provider: "anthropic", modelId: "claude-opus-4-5" },
108
+ openrouter: {
109
+ provider: "openrouter",
110
+ modelId: "anthropic/claude-opus-4.5",
111
+ status: "active",
112
+ modalities: { input: ["text", "image"], output: ["text"] },
113
+ pricing: {
114
+ input: 15,
115
+ output: 75,
116
+ cachedInput: 1.5,
117
+ cacheWrite: 18.75,
118
+ },
119
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
120
+ contextWindow: 200000,
121
+ maxCompletionTokens: 8192,
122
+ },
123
+ displayName: "Anthropic: Claude Opus 4.5",
124
+ family: "claude",
125
+ status: "active",
126
+ contextWindow: 200000,
127
+ maxCompletionTokens: 8192,
128
+ },
129
+ {
130
+ direct: { provider: "google", modelId: "gemini-2.5-pro" },
131
+ openrouter: {
132
+ provider: "openrouter",
133
+ modelId: "google/gemini-2.5-pro",
134
+ status: "active",
135
+ modalities: { input: ["text", "image", "video", "file"], output: ["text"] },
136
+ pricing: {
137
+ input: 1.25,
138
+ output: 10,
139
+ cachedInput: 0.125,
140
+ batchInput: 0.625,
141
+ batchOutput: 5,
142
+ },
143
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
144
+ contextWindow: 1048576,
145
+ maxCompletionTokens: 65536,
146
+ },
147
+ displayName: "Google: Gemini 2.5 Pro",
148
+ family: "gemini",
149
+ status: "active",
150
+ contextWindow: 1048576,
151
+ maxCompletionTokens: 65536,
152
+ },
153
+ {
154
+ direct: { provider: "google", modelId: "gemini-2.5-flash-lite" },
155
+ openrouter: {
156
+ provider: "openrouter",
157
+ modelId: "google/gemini-2.5-flash-lite",
158
+ status: "active",
159
+ modalities: { input: ["text", "image"], output: ["text"] },
160
+ pricing: {
161
+ input: 0.05,
162
+ output: 0.2,
163
+ cachedInput: 0.01,
164
+ batchInput: 0.025,
165
+ batchOutput: 0.1,
166
+ },
167
+ capabilities: { reasoning: false, toolCalling: true, structuredOutputs: true },
168
+ contextWindow: 1048576,
169
+ maxCompletionTokens: 65536,
170
+ },
171
+ displayName: "Google: Gemini 2.5 Flash Lite",
172
+ family: "gemini",
173
+ status: "active",
174
+ contextWindow: 1048576,
175
+ maxCompletionTokens: 65536,
176
+ },
177
+ {
178
+ direct: { provider: "anthropic", modelId: "claude-haiku-4-5" },
179
+ openrouter: {
180
+ provider: "openrouter",
181
+ modelId: "anthropic/claude-haiku-4.5",
182
+ status: "active",
183
+ modalities: { input: ["text", "image"], output: ["text"] },
184
+ pricing: { input: 0.8, output: 4, cachedInput: 0.08 },
185
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
186
+ contextWindow: 200000,
187
+ maxCompletionTokens: 8192,
188
+ },
189
+ displayName: "Anthropic: Claude Haiku 4.5",
190
+ family: "claude",
191
+ status: "active",
192
+ contextWindow: 200000,
193
+ maxCompletionTokens: 8192,
194
+ },
195
+ {
196
+ direct: { provider: "anthropic", modelId: "claude-sonnet-4-5" },
197
+ openrouter: {
198
+ provider: "openrouter",
199
+ modelId: "anthropic/claude-sonnet-4.5",
200
+ status: "active",
201
+ modalities: { input: ["text", "image"], output: ["text"] },
202
+ pricing: { input: 3, output: 15, cachedInput: 0.3, cacheWrite: 3.75 },
203
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
204
+ contextWindow: 200000,
205
+ maxCompletionTokens: 8192,
206
+ },
207
+ displayName: "Anthropic: Claude Sonnet 4.5",
208
+ family: "claude",
209
+ status: "active",
210
+ contextWindow: 200000,
211
+ maxCompletionTokens: 8192,
212
+ },
213
+ {
214
+ direct: { provider: "openai", modelId: "gpt-4.1" },
215
+ openrouter: {
216
+ provider: "openrouter",
217
+ modelId: "openai/gpt-4.1",
218
+ status: "active",
219
+ modalities: { input: ["text", "image"], output: ["text"] },
220
+ pricing: { input: 2, output: 8, cachedInput: 0.5 },
221
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
222
+ contextWindow: 1047576,
223
+ maxCompletionTokens: 32768,
224
+ },
225
+ displayName: "OpenAI: GPT-4.1",
226
+ family: "gpt",
227
+ status: "active",
228
+ contextWindow: 1047576,
229
+ maxCompletionTokens: 32768,
230
+ },
231
+ {
232
+ direct: { provider: "deepseek", modelId: "deepseek-chat" },
233
+ openrouter: {
234
+ provider: "openrouter",
235
+ modelId: "deepseek/deepseek-chat",
236
+ status: "active",
237
+ modalities: { input: ["text"], output: ["text"] },
238
+ pricing: { input: 0.27, output: 1.1 },
239
+ capabilities: { reasoning: false, toolCalling: true, structuredOutputs: true },
240
+ contextWindow: 65536,
241
+ maxCompletionTokens: 8192,
242
+ },
243
+ displayName: "DeepSeek: Chat",
244
+ family: "deepseek",
245
+ status: "active",
246
+ contextWindow: 65536,
247
+ maxCompletionTokens: 8192,
248
+ },
249
+ {
250
+ direct: {
251
+ provider: "together",
252
+ modelId: "meta-llama/Llama-3.3-70B-Instruct-Turbo",
253
+ },
254
+ openrouter: {
255
+ provider: "openrouter",
256
+ modelId: "meta-llama/llama-3.3-70b-instruct-turbo",
257
+ status: "active",
258
+ modalities: { input: ["text"], output: ["text"] },
259
+ pricing: { input: 0.88, output: 0.88 },
260
+ capabilities: { reasoning: false, toolCalling: true, structuredOutputs: true },
261
+ contextWindow: 131072,
262
+ maxCompletionTokens: 8192,
263
+ },
264
+ displayName: "Meta: Llama 3.3 70B Instruct Turbo",
265
+ family: "llama",
266
+ status: "active",
267
+ contextWindow: 131072,
268
+ maxCompletionTokens: 8192,
269
+ },
270
+ {
271
+ direct: {
272
+ provider: "together",
273
+ modelId: "Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
274
+ },
275
+ openrouter: {
276
+ provider: "openrouter",
277
+ modelId: "qwen/qwen3-235b-a22b-instruct-2507-tput",
278
+ status: "active",
279
+ modalities: { input: ["text"], output: ["text"] },
280
+ pricing: { input: 1.2, output: 1.2 },
281
+ capabilities: { reasoning: true, toolCalling: true, structuredOutputs: true },
282
+ contextWindow: 131072,
283
+ maxCompletionTokens: 8192,
284
+ },
285
+ displayName: "Qwen3 235B A22B Instruct",
286
+ family: "qwen",
287
+ status: "active",
288
+ contextWindow: 131072,
289
+ maxCompletionTokens: 8192,
290
+ },
291
+ ];
292
+ //# sourceMappingURL=profileCatalogSupplement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileCatalogSupplement.js","sourceRoot":"","sources":["../src/profileCatalogSupplement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { AIProfileChoice, AIProfileDefinition, AIModelPricing, ModelsProfilesJson, ProfileChoiceApi, ProfileChoicePricingV2 } from "./types.js";
2
+ export type { ProfileChoiceApi, ProfileChoicePricingV2, };
3
+ /** Vendor-native model ID corrections (dotted → dashed Anthropic, stale SKUs, etc.). */
4
+ export declare const VENDOR_MODEL_ID_FIXES: Record<string, string>;
5
+ export declare function fixVendorModelId(modelId: string): string;
6
+ export declare function openRouterSlugFor(provider: string, vendorModelId: string): string | null;
7
+ /** Flatten v2 pricing for {@link ResolvedAIProfile} and legacy consumers. */
8
+ export declare function flattenChoicePricing(pricing?: ProfileChoicePricingV2): AIModelPricing | undefined;
9
+ export declare function isModelsProfilesV2(value: ModelsProfilesJson): boolean;
10
+ export declare function getChoiceApi(choice: AIProfileChoice): ProfileChoiceApi | undefined;
11
+ export declare function getChoiceVendorModelId(choice: AIProfileChoice): string;
12
+ export declare function buildModelInvocationFromChoice(choice: AIProfileChoice): import("./modelIdentity.js").ModelInvocation;
13
+ export declare function getChoiceOpenRouterModelId(choice: AIProfileChoice): string | null;
14
+ export declare function getChoicePricing(choice: AIProfileChoice): AIModelPricing | undefined;
15
+ export declare function defaultFallbackOrder(profile: AIProfileDefinition): string[];
16
+ export declare function migrateModelsProfilesToV2(input: ModelsProfilesJson, options?: {
17
+ lastVerifiedAt?: string;
18
+ }): ModelsProfilesJson;
19
+ //# sourceMappingURL=profileRegistryV2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileRegistryV2.d.ts","sourceRoot":"","sources":["../src/profileRegistryV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,cAAc,EAEd,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,gBAAgB,EAChB,sBAAsB,GACvB,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQxD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWxF;AAmFD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,cAAc,GAAG,SAAS,CAuB5B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAErE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS,CAElF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAGtE;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,eAAe,GACtB,OAAO,oBAAoB,EAAE,eAAe,CA6B9C;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAMjF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,GAAG,SAAS,CAKpF;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,mBAAmB,GAC3B,MAAM,EAAE,CAQV;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC,kBAAkB,CA2GpB"}