@x12i/ai-profiles 1.4.0 → 1.6.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 (148) hide show
  1. package/README.md +237 -21
  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 +26 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +21 -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 +161 -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/resolveModelIdentity.d.ts +17 -0
  118. package/dist/resolveModelIdentity.d.ts.map +1 -0
  119. package/dist/resolveModelIdentity.js +107 -0
  120. package/dist/resolveModelIdentity.js.map +1 -0
  121. package/dist/resolveModelRouting.d.ts +2 -1
  122. package/dist/resolveModelRouting.d.ts.map +1 -1
  123. package/dist/resolveModelRouting.js +9 -10
  124. package/dist/resolveModelRouting.js.map +1 -1
  125. package/dist/types.d.ts +339 -4
  126. package/dist/types.d.ts.map +1 -1
  127. package/dist/types.js +10 -0
  128. package/dist/types.js.map +1 -1
  129. package/dist/validateProfileVendorCoverage.d.ts +12 -0
  130. package/dist/validateProfileVendorCoverage.d.ts.map +1 -0
  131. package/dist/validateProfileVendorCoverage.js +58 -0
  132. package/dist/validateProfileVendorCoverage.js.map +1 -0
  133. package/dist/validation/openRouterAlignment.d.ts +6 -15
  134. package/dist/validation/openRouterAlignment.d.ts.map +1 -1
  135. package/dist/validation/openRouterAlignment.js +9 -57
  136. package/dist/validation/openRouterAlignment.js.map +1 -1
  137. package/dist/validation/validateModelsCatalog.d.ts +3 -0
  138. package/dist/validation/validateModelsCatalog.d.ts.map +1 -0
  139. package/dist/validation/validateModelsCatalog.js +42 -0
  140. package/dist/validation/validateModelsCatalog.js.map +1 -0
  141. package/dist/validation/validateModelsProfilesJson.d.ts.map +1 -1
  142. package/dist/validation/validateModelsProfilesJson.js +38 -2
  143. package/dist/validation/validateModelsProfilesJson.js.map +1 -1
  144. package/dist/vendorPolicy.d.ts +20 -0
  145. package/dist/vendorPolicy.d.ts.map +1 -0
  146. package/dist/vendorPolicy.js +71 -0
  147. package/dist/vendorPolicy.js.map +1 -0
  148. package/package.json +12 -2
@@ -1,9 +1,49 @@
1
1
  {
2
- "schema": "x12i.ai-profiles.models-profiles",
3
- "generatedAt": "2026-05-27T00:00:00.000Z",
4
- "version": "1.2.0",
2
+ "schema": "x12i.ai-profiles.model-registry.v3",
3
+ "registryId": "models-profiles",
4
+ "generatedAt": "2026-05-29T00:00:00.000Z",
5
+ "lastVerifiedAt": "2026-05-29T21:03:52Z",
6
+ "version": "3.0.0",
5
7
  "currency": "USD",
6
8
  "pricingUnit": "1M_tokens",
9
+ "namingConvention": "lowerCamelCase",
10
+ "semantics": {
11
+ "provider": "Billing owner / vendor source of truth for the model SKU.",
12
+ "modelId": "Canonical vendor-native model identifier for direct API calls.",
13
+ "openRouterModelId": "OpenRouter transport slug; pricing and capabilities are resolved from models-catalog.json at runtime.",
14
+ "modelStatus": "verified = stable vendor SKU; predicted = forward-looking placeholder — not guaranteed callable.",
15
+ "requiredCapabilities": "Profile intent contract; concrete model picks remain suggestions until Optimixer selects dynamically.",
16
+ "deploymentType": "How the model is operated (proprietary API vs hosted open weights vs self-hosted)."
17
+ },
18
+ "sourceCatalog": {
19
+ "providers": [
20
+ {
21
+ "id": "openai",
22
+ "docsUrl": "https://platform.openai.com/docs/models"
23
+ },
24
+ {
25
+ "id": "anthropic",
26
+ "docsUrl": "https://docs.anthropic.com/en/docs/about-claude/models"
27
+ },
28
+ {
29
+ "id": "google",
30
+ "docsUrl": "https://ai.google.dev/gemini-api/docs/models"
31
+ },
32
+ {
33
+ "id": "deepseek",
34
+ "docsUrl": "https://api-docs.deepseek.com"
35
+ },
36
+ {
37
+ "id": "xai",
38
+ "docsUrl": "https://docs.x.ai/docs/models"
39
+ },
40
+ {
41
+ "id": "together",
42
+ "docsUrl": "https://docs.together.ai/docs/serverless-models"
43
+ }
44
+ ],
45
+ "modelsCatalogUrl": "https://open-assets.x12i.com/models-catalog.json"
46
+ },
7
47
  "profiles": {
8
48
  "cheap": {
9
49
  "profile": "cheap",
@@ -24,10 +64,6 @@
24
64
  "description": "The recommended cheap model for normal low-cost use.",
25
65
  "provider": "google",
26
66
  "modelId": "gemini-2.5-flash-lite",
27
- "pricing": {
28
- "input": 0.05,
29
- "output": 0.2
30
- },
31
67
  "runtime": {
32
68
  "instructionTier": "default",
33
69
  "backend": "openrouter",
@@ -35,7 +71,20 @@
35
71
  "toolPolicy": "none",
36
72
  "outputMode": "text"
37
73
  },
38
- "reason": "Very low-cost model for high-volume extraction, classification, routing, and simple transformations."
74
+ "reason": "Very low-cost model for high-volume extraction, classification, routing, and simple transformations.",
75
+ "api": {
76
+ "defaultTransport": "openrouter",
77
+ "vendorModelId": "gemini-2.5-flash-lite",
78
+ "openRouterModelId": "google/gemini-2.5-flash-lite"
79
+ },
80
+ "verification": {
81
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
82
+ "sourceRefs": [
83
+ "vendor:google",
84
+ "openrouter:catalog"
85
+ ]
86
+ },
87
+ "modelStatus": "verified"
39
88
  },
40
89
  "cost_floor": {
41
90
  "choice": "cost_floor",
@@ -43,42 +92,93 @@
43
92
  "description": "Use when the main requirement is minimum cost.",
44
93
  "provider": "google",
45
94
  "modelId": "gemini-2.5-flash-lite",
46
- "pricing": {
47
- "input": 0.05,
48
- "output": 0.2,
49
- "batchInput": 0.025,
50
- "batchOutput": 0.1
51
- },
52
95
  "runtime": {
53
96
  "reasoningEffort": "minimal",
54
97
  "executionMode": "batch",
55
98
  "toolPolicy": "none",
56
99
  "outputMode": "text"
57
100
  },
58
- "reason": "Best for background or bulk work where cost matters more than latency or reasoning quality."
101
+ "reason": "Best for background or bulk work where cost matters more than latency or reasoning quality.",
102
+ "api": {
103
+ "defaultTransport": "openrouter",
104
+ "vendorModelId": "gemini-2.5-flash-lite",
105
+ "openRouterModelId": "google/gemini-2.5-flash-lite"
106
+ },
107
+ "verification": {
108
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
109
+ "sourceRefs": [
110
+ "vendor:google",
111
+ "openrouter:catalog"
112
+ ]
113
+ },
114
+ "modelStatus": "verified"
59
115
  },
60
116
  "safer_provider": {
61
117
  "choice": "safer_provider",
62
118
  "displayName": "Cheap but Safer",
63
119
  "description": "Use when cheap is required, but you want a stronger instruction-following model.",
64
120
  "provider": "anthropic",
65
- "modelId": "claude-haiku-4.5",
66
- "pricing": {
67
- "input": 1,
68
- "cacheWrite5m": 1.25,
69
- "cacheWrite1h": 2,
70
- "cacheHit": 0.1,
71
- "output": 5,
72
- "batchInput": 0.5,
73
- "batchOutput": 2.5
74
- },
121
+ "modelId": "claude-haiku-4-5",
75
122
  "runtime": {
76
123
  "reasoningEffort": "low",
77
124
  "toolPolicy": "none",
78
125
  "outputMode": "text"
79
126
  },
80
- "reason": "More expensive than the cost-floor option, but better when instruction following and answer quality matter."
127
+ "reason": "More expensive than the cost-floor option, but better when instruction following and answer quality matter.",
128
+ "api": {
129
+ "defaultTransport": "openrouter",
130
+ "vendorModelId": "claude-haiku-4-5",
131
+ "openRouterModelId": "anthropic/claude-haiku-4.5"
132
+ },
133
+ "verification": {
134
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
135
+ "sourceRefs": [
136
+ "vendor:anthropic",
137
+ "openrouter:catalog"
138
+ ]
139
+ },
140
+ "modelStatus": "verified"
141
+ },
142
+ "absolute_floor": {
143
+ "choice": "absolute_floor",
144
+ "displayName": "DeepSeek V4 Flash",
145
+ "description": "Lowest-cost option for massive volume when even Flash-Lite tiers are too expensive.",
146
+ "provider": "deepseek",
147
+ "modelId": "deepseek-v4-flash",
148
+ "runtime": {
149
+ "instructionTier": "default",
150
+ "backend": "openrouter",
151
+ "reasoningEffort": "minimal",
152
+ "executionMode": "batch",
153
+ "toolPolicy": "none",
154
+ "outputMode": "text"
155
+ },
156
+ "reason": "2026 pricing floor for massive volume tasks where Google's Flash-Lite is still too costly.",
157
+ "api": {
158
+ "defaultTransport": "openrouter",
159
+ "vendorModelId": "deepseek-v4-flash",
160
+ "openRouterModelId": "deepseek/deepseek-v4-flash"
161
+ },
162
+ "verification": {
163
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
164
+ "sourceRefs": [
165
+ "vendor:deepseek",
166
+ "openrouter:catalog"
167
+ ]
168
+ },
169
+ "modelStatus": "predicted"
81
170
  }
171
+ },
172
+ "fallbackChoiceOrder": [
173
+ "default",
174
+ "cost_floor",
175
+ "safer_provider",
176
+ "absolute_floor"
177
+ ],
178
+ "requiredCapabilities": {
179
+ "cost": "low",
180
+ "reasoning": "minimal",
181
+ "context": "standard"
82
182
  }
83
183
  },
84
184
  "fast": {
@@ -98,12 +198,7 @@
98
198
  "displayName": "Fast Default",
99
199
  "description": "Recommended fast model for interactive UX.",
100
200
  "provider": "openai",
101
- "modelId": "gpt-5.4-mini",
102
- "pricing": {
103
- "input": 0.75,
104
- "cachedInput": 0.075,
105
- "output": 4.5
106
- },
201
+ "modelId": "gpt-4o-mini",
107
202
  "runtime": {
108
203
  "instructionTier": "default",
109
204
  "backend": "openrouter",
@@ -111,7 +206,20 @@
111
206
  "toolPolicy": "none",
112
207
  "outputMode": "text"
113
208
  },
114
- "reason": "Good balance of speed, capability, and structured behavior for real-time product usage."
209
+ "reason": "Good balance of speed, capability, and structured behavior for real-time product usage.",
210
+ "api": {
211
+ "defaultTransport": "openrouter",
212
+ "vendorModelId": "gpt-4o-mini",
213
+ "openRouterModelId": "openai/gpt-4o-mini"
214
+ },
215
+ "verification": {
216
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
217
+ "sourceRefs": [
218
+ "vendor:openai",
219
+ "openrouter:catalog"
220
+ ]
221
+ },
222
+ "modelStatus": "verified"
115
223
  },
116
224
  "cheaper_fast": {
117
225
  "choice": "cheaper_fast",
@@ -119,39 +227,92 @@
119
227
  "description": "Fast but more cost-sensitive.",
120
228
  "provider": "google",
121
229
  "modelId": "gemini-3.1-flash-lite",
122
- "pricing": {
123
- "input": 0.25,
124
- "output": 1.5,
125
- "batchInput": 0.125,
126
- "batchOutput": 0.75
127
- },
128
230
  "runtime": {
129
231
  "reasoningEffort": "low",
130
232
  "toolPolicy": "none",
131
233
  "outputMode": "text"
132
234
  },
133
- "reason": "Good when speed and cost are more important than highest reasoning quality."
235
+ "reason": "Good when speed and cost are more important than highest reasoning quality.",
236
+ "api": {
237
+ "defaultTransport": "openrouter",
238
+ "vendorModelId": "gemini-3.1-flash-lite",
239
+ "openRouterModelId": "google/gemini-3.1-flash-lite"
240
+ },
241
+ "verification": {
242
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
243
+ "sourceRefs": [
244
+ "vendor:google",
245
+ "openrouter:catalog"
246
+ ]
247
+ },
248
+ "modelStatus": "predicted"
134
249
  },
135
250
  "quality_fast": {
136
251
  "choice": "quality_fast",
137
252
  "displayName": "Quality Fast",
138
253
  "description": "Fast, but with stronger quality than the cheapest fast options.",
139
254
  "provider": "anthropic",
140
- "modelId": "claude-haiku-4.5",
141
- "pricing": {
142
- "input": 1,
143
- "cacheWrite5m": 1.25,
144
- "cacheWrite1h": 2,
145
- "cacheHit": 0.1,
146
- "output": 5
255
+ "modelId": "claude-haiku-4-5",
256
+ "runtime": {
257
+ "reasoningEffort": "low",
258
+ "toolPolicy": "none",
259
+ "outputMode": "text"
260
+ },
261
+ "reason": "Useful when you want fast Claude-family behavior for short tasks.",
262
+ "api": {
263
+ "defaultTransport": "openrouter",
264
+ "vendorModelId": "claude-haiku-4-5",
265
+ "openRouterModelId": "anthropic/claude-haiku-4.5"
266
+ },
267
+ "verification": {
268
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
269
+ "sourceRefs": [
270
+ "vendor:anthropic",
271
+ "openrouter:catalog"
272
+ ]
147
273
  },
274
+ "modelStatus": "verified"
275
+ },
276
+ "grok_fast": {
277
+ "choice": "grok_fast",
278
+ "displayName": "Grok 4.1 Fast",
279
+ "description": "Ultra-fast interactive model with a very large context window at low cost.",
280
+ "provider": "xai",
281
+ "modelId": "grok-build-0.1",
148
282
  "runtime": {
283
+ "instructionTier": "default",
284
+ "backend": "openrouter",
149
285
  "reasoningEffort": "low",
150
286
  "toolPolicy": "none",
151
287
  "outputMode": "text"
152
288
  },
153
- "reason": "Useful when you want fast Claude-family behavior for short tasks."
289
+ "reason": "Strong speed and 2M context at rock-bottom prices for interactive product UX.",
290
+ "api": {
291
+ "defaultTransport": "openrouter",
292
+ "vendorModelId": "grok-build-0.1",
293
+ "openRouterModelId": "x-ai/grok-build-0.1"
294
+ },
295
+ "verification": {
296
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
297
+ "sourceRefs": [
298
+ "vendor:xai",
299
+ "openrouter:catalog"
300
+ ]
301
+ },
302
+ "modelStatus": "verified"
154
303
  }
304
+ },
305
+ "fallbackChoiceOrder": [
306
+ "default",
307
+ "cheaper_fast",
308
+ "quality_fast",
309
+ "grok_fast"
310
+ ],
311
+ "requiredCapabilities": {
312
+ "speed": "high",
313
+ "cost": "low",
314
+ "reasoning": "low",
315
+ "latency": "low"
155
316
  }
156
317
  },
157
318
  "balanced": {
@@ -171,12 +332,7 @@
171
332
  "displayName": "Balanced Default",
172
333
  "description": "Recommended default for normal AI tasks.",
173
334
  "provider": "openai",
174
- "modelId": "gpt-5.4",
175
- "pricing": {
176
- "input": 2.5,
177
- "cachedInput": 0.25,
178
- "output": 15
179
- },
335
+ "modelId": "gpt-4.1",
180
336
  "runtime": {
181
337
  "instructionTier": "default",
182
338
  "backend": "openrouter",
@@ -184,27 +340,46 @@
184
340
  "toolPolicy": "none",
185
341
  "outputMode": "text"
186
342
  },
187
- "reason": "Good default for general graph execution, coding, product logic, and normal reasoning."
343
+ "reason": "Good default for general graph execution, coding, product logic, and normal reasoning.",
344
+ "api": {
345
+ "defaultTransport": "openrouter",
346
+ "vendorModelId": "gpt-4.1",
347
+ "openRouterModelId": "openai/gpt-4.1"
348
+ },
349
+ "verification": {
350
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
351
+ "sourceRefs": [
352
+ "vendor:openai",
353
+ "openrouter:catalog"
354
+ ]
355
+ },
356
+ "modelStatus": "verified"
188
357
  },
189
358
  "reasoning_balanced": {
190
359
  "choice": "reasoning_balanced",
191
360
  "displayName": "Reasoning Balanced",
192
361
  "description": "Balanced profile with stronger reasoning behavior.",
193
362
  "provider": "anthropic",
194
- "modelId": "claude-sonnet-4.6",
195
- "pricing": {
196
- "input": 3,
197
- "cacheWrite5m": 3.75,
198
- "cacheWrite1h": 6,
199
- "cacheHit": 0.3,
200
- "output": 15
201
- },
363
+ "modelId": "claude-sonnet-4-6",
202
364
  "runtime": {
203
365
  "reasoningEffort": "medium",
204
366
  "toolPolicy": "none",
205
367
  "outputMode": "text"
206
368
  },
207
- "reason": "Good when answer quality, writing quality, and reasoning are more important than raw cost."
369
+ "reason": "Good when answer quality, writing quality, and reasoning are more important than raw cost.",
370
+ "api": {
371
+ "defaultTransport": "openrouter",
372
+ "vendorModelId": "claude-sonnet-4-6",
373
+ "openRouterModelId": "anthropic/claude-sonnet-4.6"
374
+ },
375
+ "verification": {
376
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
377
+ "sourceRefs": [
378
+ "vendor:anthropic",
379
+ "openrouter:catalog"
380
+ ]
381
+ },
382
+ "modelStatus": "predicted"
208
383
  },
209
384
  "cost_balanced": {
210
385
  "choice": "cost_balanced",
@@ -212,20 +387,37 @@
212
387
  "description": "Balanced but more cost-conscious.",
213
388
  "provider": "google",
214
389
  "modelId": "gemini-3.5-flash",
215
- "pricing": {
216
- "input": 1.5,
217
- "cachedInput": 0.15,
218
- "output": 9,
219
- "batchInput": 0.75,
220
- "batchOutput": 4.5
221
- },
222
390
  "runtime": {
223
391
  "reasoningEffort": "medium",
224
392
  "toolPolicy": "none",
225
393
  "outputMode": "text"
226
394
  },
227
- "reason": "Good when you want a balanced model but need a lower-cost alternative."
395
+ "reason": "Good when you want a balanced model but need a lower-cost alternative.",
396
+ "api": {
397
+ "defaultTransport": "openrouter",
398
+ "vendorModelId": "gemini-3.5-flash",
399
+ "openRouterModelId": "google/gemini-3.5-flash"
400
+ },
401
+ "verification": {
402
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
403
+ "sourceRefs": [
404
+ "vendor:google",
405
+ "openrouter:catalog"
406
+ ]
407
+ },
408
+ "modelStatus": "predicted"
228
409
  }
410
+ },
411
+ "fallbackChoiceOrder": [
412
+ "default",
413
+ "reasoning_balanced",
414
+ "cost_balanced"
415
+ ],
416
+ "requiredCapabilities": {
417
+ "reasoning": "medium",
418
+ "coding": true,
419
+ "context": "standard",
420
+ "cost": "medium"
229
421
  }
230
422
  },
231
423
  "deep": {
@@ -246,14 +438,7 @@
246
438
  "displayName": "Deep Default",
247
439
  "description": "Recommended high-reasoning model.",
248
440
  "provider": "anthropic",
249
- "modelId": "claude-sonnet-4.6",
250
- "pricing": {
251
- "input": 3,
252
- "cacheWrite5m": 3.75,
253
- "cacheWrite1h": 6,
254
- "cacheHit": 0.3,
255
- "output": 15
256
- },
441
+ "modelId": "claude-sonnet-4-5",
257
442
  "runtime": {
258
443
  "instructionTier": "reasoning",
259
444
  "backend": "openrouter",
@@ -261,7 +446,20 @@
261
446
  "toolPolicy": "none",
262
447
  "outputMode": "text"
263
448
  },
264
- "reason": "Strong default for architecture, planning, code review, analysis, and complex workflows."
449
+ "reason": "Strong default for architecture, planning, code review, analysis, and complex workflows.",
450
+ "api": {
451
+ "defaultTransport": "openrouter",
452
+ "vendorModelId": "claude-sonnet-4-5",
453
+ "openRouterModelId": "anthropic/claude-sonnet-4.5"
454
+ },
455
+ "verification": {
456
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
457
+ "sourceRefs": [
458
+ "vendor:anthropic",
459
+ "openrouter:catalog"
460
+ ]
461
+ },
462
+ "modelStatus": "verified"
265
463
  },
266
464
  "openai_deep": {
267
465
  "choice": "openai_deep",
@@ -269,17 +467,25 @@
269
467
  "description": "OpenAI alternative for deep reasoning.",
270
468
  "provider": "openai",
271
469
  "modelId": "gpt-5.4",
272
- "pricing": {
273
- "input": 2.5,
274
- "cachedInput": 0.25,
275
- "output": 15
276
- },
277
470
  "runtime": {
278
471
  "reasoningEffort": "high",
279
472
  "toolPolicy": "none",
280
473
  "outputMode": "text"
281
474
  },
282
- "reason": "Strong alternative for coding, architecture, and product reasoning."
475
+ "reason": "Strong alternative for coding, architecture, and product reasoning.",
476
+ "api": {
477
+ "defaultTransport": "openrouter",
478
+ "vendorModelId": "gpt-5.4",
479
+ "openRouterModelId": "openai/gpt-5.4"
480
+ },
481
+ "verification": {
482
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
483
+ "sourceRefs": [
484
+ "vendor:openai",
485
+ "openrouter:catalog"
486
+ ]
487
+ },
488
+ "modelStatus": "predicted"
283
489
  },
284
490
  "long_context_deep": {
285
491
  "choice": "long_context_deep",
@@ -287,20 +493,95 @@
287
493
  "description": "Deep reasoning with strong long-context handling.",
288
494
  "provider": "google",
289
495
  "modelId": "gemini-3.5-flash",
290
- "pricing": {
291
- "input": 1.5,
292
- "cachedInput": 0.15,
293
- "output": 9,
294
- "batchInput": 0.75,
295
- "batchOutput": 4.5
496
+ "runtime": {
497
+ "reasoningEffort": "high",
498
+ "toolPolicy": "none",
499
+ "outputMode": "text"
500
+ },
501
+ "reason": "Good alternative when the task needs large-context reading and reasoning.",
502
+ "api": {
503
+ "defaultTransport": "openrouter",
504
+ "vendorModelId": "gemini-3.5-flash",
505
+ "openRouterModelId": "google/gemini-3.5-flash"
506
+ },
507
+ "verification": {
508
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
509
+ "sourceRefs": [
510
+ "vendor:google",
511
+ "openrouter:catalog"
512
+ ]
513
+ },
514
+ "modelStatus": "predicted"
515
+ },
516
+ "deepseek_pro": {
517
+ "choice": "deepseek_pro",
518
+ "displayName": "DeepSeek V4 Pro",
519
+ "description": "High-tier reasoning at a fraction of flagship OpenAI or Anthropic cost.",
520
+ "provider": "deepseek",
521
+ "modelId": "deepseek-v4-pro",
522
+ "runtime": {
523
+ "instructionTier": "reasoning",
524
+ "backend": "openrouter",
525
+ "reasoningEffort": "high",
526
+ "toolPolicy": "none",
527
+ "outputMode": "text"
528
+ },
529
+ "reason": "Flagship-class reasoning without Opus or GPT-5.5 pricing.",
530
+ "api": {
531
+ "defaultTransport": "openrouter",
532
+ "vendorModelId": "deepseek-v4-pro",
533
+ "openRouterModelId": "deepseek/deepseek-v4-pro"
296
534
  },
535
+ "verification": {
536
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
537
+ "sourceRefs": [
538
+ "vendor:deepseek",
539
+ "openrouter:catalog"
540
+ ]
541
+ },
542
+ "modelStatus": "predicted"
543
+ },
544
+ "grok_flagship": {
545
+ "choice": "grok_flagship",
546
+ "displayName": "Grok 4.3",
547
+ "description": "Premium alternative reasoning model with a 1M token context window.",
548
+ "provider": "xai",
549
+ "modelId": "grok-4.3",
297
550
  "runtime": {
551
+ "instructionTier": "reasoning",
552
+ "backend": "openrouter",
298
553
  "reasoningEffort": "high",
299
554
  "toolPolicy": "none",
300
555
  "outputMode": "text"
301
556
  },
302
- "reason": "Good alternative when the task needs large-context reading and reasoning."
557
+ "reason": "Alternative premium reasoning with very large context at moderate cost.",
558
+ "api": {
559
+ "defaultTransport": "openrouter",
560
+ "vendorModelId": "grok-4.3",
561
+ "openRouterModelId": "x-ai/grok-4.3"
562
+ },
563
+ "verification": {
564
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
565
+ "sourceRefs": [
566
+ "vendor:xai",
567
+ "openrouter:catalog"
568
+ ]
569
+ },
570
+ "modelStatus": "predicted"
303
571
  }
572
+ },
573
+ "fallbackChoiceOrder": [
574
+ "default",
575
+ "openai_deep",
576
+ "long_context_deep",
577
+ "deepseek_pro",
578
+ "grok_flagship"
579
+ ],
580
+ "requiredCapabilities": {
581
+ "reasoning": "high",
582
+ "coding": true,
583
+ "context": "large",
584
+ "quality": "high"
304
585
  }
305
586
  },
306
587
  "pro": {
@@ -322,11 +603,6 @@
322
603
  "description": "Recommended premium model.",
323
604
  "provider": "openai",
324
605
  "modelId": "gpt-5.5",
325
- "pricing": {
326
- "input": 5,
327
- "cachedInput": 0.5,
328
- "output": 30
329
- },
330
606
  "runtime": {
331
607
  "instructionTier": "default",
332
608
  "backend": "openrouter",
@@ -334,50 +610,83 @@
334
610
  "toolPolicy": "none",
335
611
  "outputMode": "text"
336
612
  },
337
- "reason": "Best for critical reasoning, hard coding, and professional-grade outputs."
613
+ "reason": "Best for critical reasoning, hard coding, and professional-grade outputs.",
614
+ "api": {
615
+ "defaultTransport": "openrouter",
616
+ "vendorModelId": "gpt-5.5",
617
+ "openRouterModelId": "openai/gpt-5.5"
618
+ },
619
+ "verification": {
620
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
621
+ "sourceRefs": [
622
+ "vendor:openai",
623
+ "openrouter:catalog"
624
+ ]
625
+ },
626
+ "modelStatus": "verified"
338
627
  },
339
628
  "claude_pro": {
340
629
  "choice": "claude_pro",
341
630
  "displayName": "Claude Pro",
342
631
  "description": "Premium Claude alternative.",
343
632
  "provider": "anthropic",
344
- "modelId": "claude-opus-4.7",
345
- "pricing": {
346
- "input": 5,
347
- "cacheWrite5m": 6.25,
348
- "cacheWrite1h": 10,
349
- "cacheHit": 0.5,
350
- "output": 25,
351
- "batchInput": 2.5,
352
- "batchOutput": 12.5
353
- },
633
+ "modelId": "claude-opus-4-8",
354
634
  "runtime": {
355
635
  "reasoningEffort": "max",
356
636
  "toolPolicy": "none",
357
637
  "outputMode": "text"
358
638
  },
359
- "reason": "Best Claude-family option for premium reasoning and writing."
639
+ "reason": "Best Claude-family option for premium reasoning and writing.",
640
+ "api": {
641
+ "defaultTransport": "openrouter",
642
+ "vendorModelId": "claude-opus-4-8",
643
+ "openRouterModelId": "anthropic/claude-opus-4.8"
644
+ },
645
+ "verification": {
646
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
647
+ "sourceRefs": [
648
+ "vendor:anthropic",
649
+ "openrouter:catalog"
650
+ ]
651
+ },
652
+ "modelStatus": "predicted"
360
653
  },
361
654
  "cost_pro": {
362
655
  "choice": "cost_pro",
363
656
  "displayName": "Cost-Aware Pro",
364
657
  "description": "Premium-like behavior with lower cost.",
365
658
  "provider": "anthropic",
366
- "modelId": "claude-sonnet-4.6",
367
- "pricing": {
368
- "input": 3,
369
- "cacheWrite5m": 3.75,
370
- "cacheWrite1h": 6,
371
- "cacheHit": 0.3,
372
- "output": 15
373
- },
659
+ "modelId": "claude-sonnet-4-6",
374
660
  "runtime": {
375
661
  "reasoningEffort": "high",
376
662
  "toolPolicy": "none",
377
663
  "outputMode": "text"
378
664
  },
379
- "reason": "Good when pro-level quality is desired but Opus/GPT-5.5 cost is too high."
665
+ "reason": "Good when pro-level quality is desired but Opus/GPT-5.5 cost is too high.",
666
+ "api": {
667
+ "defaultTransport": "openrouter",
668
+ "vendorModelId": "claude-sonnet-4-6",
669
+ "openRouterModelId": "anthropic/claude-sonnet-4.6"
670
+ },
671
+ "verification": {
672
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
673
+ "sourceRefs": [
674
+ "vendor:anthropic",
675
+ "openrouter:catalog"
676
+ ]
677
+ },
678
+ "modelStatus": "predicted"
380
679
  }
680
+ },
681
+ "fallbackChoiceOrder": [
682
+ "default",
683
+ "claude_pro",
684
+ "cost_pro"
685
+ ],
686
+ "requiredCapabilities": {
687
+ "reasoning": "high",
688
+ "quality": "premium",
689
+ "context": "large"
381
690
  }
382
691
  },
383
692
  "json": {
@@ -402,12 +711,7 @@
402
711
  "displayName": "JSON Default",
403
712
  "description": "Recommended structured-output model.",
404
713
  "provider": "openai",
405
- "modelId": "gpt-5.4-mini",
406
- "pricing": {
407
- "input": 0.75,
408
- "cachedInput": 0.075,
409
- "output": 4.5
410
- },
714
+ "modelId": "gpt-4o-mini",
411
715
  "runtime": {
412
716
  "instructionTier": "default",
413
717
  "backend": "openrouter",
@@ -416,7 +720,20 @@
416
720
  "outputMode": "schema",
417
721
  "temperature": 0
418
722
  },
419
- "reason": "Good default for reliable JSON/schema output at reasonable cost."
723
+ "reason": "Good default for reliable JSON/schema output at reasonable cost.",
724
+ "api": {
725
+ "defaultTransport": "openrouter",
726
+ "vendorModelId": "gpt-4o-mini",
727
+ "openRouterModelId": "openai/gpt-4o-mini"
728
+ },
729
+ "verification": {
730
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
731
+ "sourceRefs": [
732
+ "vendor:openai",
733
+ "openrouter:catalog"
734
+ ]
735
+ },
736
+ "modelStatus": "verified"
420
737
  },
421
738
  "cheap_json": {
422
739
  "choice": "cheap_json",
@@ -424,41 +741,64 @@
424
741
  "description": "Lower-cost structured-output option.",
425
742
  "provider": "google",
426
743
  "modelId": "gemini-3.1-flash-lite",
427
- "pricing": {
428
- "input": 0.25,
429
- "output": 1.5,
430
- "batchInput": 0.125,
431
- "batchOutput": 0.75
432
- },
433
744
  "runtime": {
434
745
  "reasoningEffort": "minimal",
435
746
  "toolPolicy": "none",
436
747
  "outputMode": "schema",
437
748
  "temperature": 0
438
749
  },
439
- "reason": "Good for high-volume extraction/classification where low cost matters."
750
+ "reason": "Good for high-volume extraction/classification where low cost matters.",
751
+ "api": {
752
+ "defaultTransport": "openrouter",
753
+ "vendorModelId": "gemini-3.1-flash-lite",
754
+ "openRouterModelId": "google/gemini-3.1-flash-lite"
755
+ },
756
+ "verification": {
757
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
758
+ "sourceRefs": [
759
+ "vendor:google",
760
+ "openrouter:catalog"
761
+ ]
762
+ },
763
+ "modelStatus": "predicted"
440
764
  },
441
765
  "quality_json": {
442
766
  "choice": "quality_json",
443
767
  "displayName": "Quality JSON",
444
768
  "description": "Structured output with stronger reasoning.",
445
769
  "provider": "anthropic",
446
- "modelId": "claude-sonnet-4.6",
447
- "pricing": {
448
- "input": 3,
449
- "cacheWrite5m": 3.75,
450
- "cacheWrite1h": 6,
451
- "cacheHit": 0.3,
452
- "output": 15
453
- },
770
+ "modelId": "claude-sonnet-4-6",
454
771
  "runtime": {
455
772
  "reasoningEffort": "medium",
456
773
  "toolPolicy": "none",
457
774
  "outputMode": "schema",
458
775
  "temperature": 0
459
776
  },
460
- "reason": "Better for complex extraction where reasoning and interpretation are needed."
777
+ "reason": "Better for complex extraction where reasoning and interpretation are needed.",
778
+ "api": {
779
+ "defaultTransport": "openrouter",
780
+ "vendorModelId": "claude-sonnet-4-6",
781
+ "openRouterModelId": "anthropic/claude-sonnet-4.6"
782
+ },
783
+ "verification": {
784
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
785
+ "sourceRefs": [
786
+ "vendor:anthropic",
787
+ "openrouter:catalog"
788
+ ]
789
+ },
790
+ "modelStatus": "predicted"
461
791
  }
792
+ },
793
+ "fallbackChoiceOrder": [
794
+ "default",
795
+ "cheap_json",
796
+ "quality_json"
797
+ ],
798
+ "requiredCapabilities": {
799
+ "structuredOutput": true,
800
+ "reasoning": "low",
801
+ "supportsJsonSchema": true
462
802
  }
463
803
  },
464
804
  "agentic": {
@@ -482,14 +822,7 @@
482
822
  "displayName": "Agentic Default",
483
823
  "description": "Recommended model for agentic execution.",
484
824
  "provider": "anthropic",
485
- "modelId": "claude-sonnet-4.6",
486
- "pricing": {
487
- "input": 3,
488
- "cacheWrite5m": 3.75,
489
- "cacheWrite1h": 6,
490
- "cacheHit": 0.3,
491
- "output": 15
492
- },
825
+ "modelId": "claude-sonnet-4-5",
493
826
  "runtime": {
494
827
  "instructionTier": "default",
495
828
  "backend": "openrouter",
@@ -497,7 +830,20 @@
497
830
  "toolPolicy": "write-with-approval",
498
831
  "outputMode": "text"
499
832
  },
500
- "reason": "Strong default for multi-step planning, tool use, and agent workflows."
833
+ "reason": "Strong default for multi-step planning, tool use, and agent workflows.",
834
+ "api": {
835
+ "defaultTransport": "openrouter",
836
+ "vendorModelId": "claude-sonnet-4-5",
837
+ "openRouterModelId": "anthropic/claude-sonnet-4.5"
838
+ },
839
+ "verification": {
840
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
841
+ "sourceRefs": [
842
+ "vendor:anthropic",
843
+ "openrouter:catalog"
844
+ ]
845
+ },
846
+ "modelStatus": "verified"
501
847
  },
502
848
  "openai_agentic": {
503
849
  "choice": "openai_agentic",
@@ -505,17 +851,25 @@
505
851
  "description": "OpenAI alternative for agentic execution.",
506
852
  "provider": "openai",
507
853
  "modelId": "gpt-5.4",
508
- "pricing": {
509
- "input": 2.5,
510
- "cachedInput": 0.25,
511
- "output": 15
512
- },
513
854
  "runtime": {
514
855
  "reasoningEffort": "high",
515
856
  "toolPolicy": "write-with-approval",
516
857
  "outputMode": "text"
517
858
  },
518
- "reason": "Good for coding agents, product workflows, and tool orchestration."
859
+ "reason": "Good for coding agents, product workflows, and tool orchestration.",
860
+ "api": {
861
+ "defaultTransport": "openrouter",
862
+ "vendorModelId": "gpt-5.4",
863
+ "openRouterModelId": "openai/gpt-5.4"
864
+ },
865
+ "verification": {
866
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
867
+ "sourceRefs": [
868
+ "vendor:openai",
869
+ "openrouter:catalog"
870
+ ]
871
+ },
872
+ "modelStatus": "predicted"
519
873
  },
520
874
  "cheap_agentic": {
521
875
  "choice": "cheap_agentic",
@@ -523,18 +877,37 @@
523
877
  "description": "Lower-cost tool-use profile.",
524
878
  "provider": "google",
525
879
  "modelId": "gemini-3.5-flash",
526
- "pricing": {
527
- "input": 1.5,
528
- "cachedInput": 0.15,
529
- "output": 9
530
- },
531
880
  "runtime": {
532
881
  "reasoningEffort": "medium",
533
882
  "toolPolicy": "write-with-approval",
534
883
  "outputMode": "text"
535
884
  },
536
- "reason": "Good when the agentic workload is moderate and cost matters."
885
+ "reason": "Good when the agentic workload is moderate and cost matters.",
886
+ "api": {
887
+ "defaultTransport": "openrouter",
888
+ "vendorModelId": "gemini-3.5-flash",
889
+ "openRouterModelId": "google/gemini-3.5-flash"
890
+ },
891
+ "verification": {
892
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
893
+ "sourceRefs": [
894
+ "vendor:google",
895
+ "openrouter:catalog"
896
+ ]
897
+ },
898
+ "modelStatus": "predicted"
537
899
  }
900
+ },
901
+ "fallbackChoiceOrder": [
902
+ "default",
903
+ "openai_agentic",
904
+ "cheap_agentic"
905
+ ],
906
+ "requiredCapabilities": {
907
+ "reasoning": "medium",
908
+ "coding": true,
909
+ "supportsTools": true,
910
+ "context": "large"
538
911
  }
539
912
  },
540
913
  "research": {
@@ -560,14 +933,7 @@
560
933
  "displayName": "Research Default",
561
934
  "description": "Recommended research model.",
562
935
  "provider": "anthropic",
563
- "modelId": "claude-sonnet-4.6",
564
- "pricing": {
565
- "input": 3,
566
- "cacheWrite5m": 3.75,
567
- "cacheWrite1h": 6,
568
- "cacheHit": 0.3,
569
- "output": 15
570
- },
936
+ "modelId": "claude-sonnet-4-5",
571
937
  "runtime": {
572
938
  "instructionTier": "reasoning",
573
939
  "backend": "openrouter",
@@ -578,7 +944,20 @@
578
944
  "allowWeb": true,
579
945
  "allowFileSearch": true
580
946
  },
581
- "reason": "Strong default for reading, comparing sources, and synthesizing long-context information."
947
+ "reason": "Strong default for reading, comparing sources, and synthesizing long-context information.",
948
+ "api": {
949
+ "defaultTransport": "openrouter",
950
+ "vendorModelId": "claude-sonnet-4-5",
951
+ "openRouterModelId": "anthropic/claude-sonnet-4.5"
952
+ },
953
+ "verification": {
954
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
955
+ "sourceRefs": [
956
+ "vendor:anthropic",
957
+ "openrouter:catalog"
958
+ ]
959
+ },
960
+ "modelStatus": "verified"
582
961
  },
583
962
  "premium_research": {
584
963
  "choice": "premium_research",
@@ -586,11 +965,6 @@
586
965
  "description": "Higher-quality research profile.",
587
966
  "provider": "openai",
588
967
  "modelId": "gpt-5.5",
589
- "pricing": {
590
- "input": 5,
591
- "cachedInput": 0.5,
592
- "output": 30
593
- },
594
968
  "runtime": {
595
969
  "reasoningEffort": "max",
596
970
  "toolPolicy": "read-only",
@@ -599,7 +973,20 @@
599
973
  "allowWeb": true,
600
974
  "allowFileSearch": true
601
975
  },
602
- "reason": "Good when research quality matters more than cost."
976
+ "reason": "Good when research quality matters more than cost.",
977
+ "api": {
978
+ "defaultTransport": "openrouter",
979
+ "vendorModelId": "gpt-5.5",
980
+ "openRouterModelId": "openai/gpt-5.5"
981
+ },
982
+ "verification": {
983
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
984
+ "sourceRefs": [
985
+ "vendor:openai",
986
+ "openrouter:catalog"
987
+ ]
988
+ },
989
+ "modelStatus": "verified"
603
990
  },
604
991
  "long_context_research": {
605
992
  "choice": "long_context_research",
@@ -607,13 +994,6 @@
607
994
  "description": "Research profile optimized for large context.",
608
995
  "provider": "google",
609
996
  "modelId": "gemini-3.5-flash",
610
- "pricing": {
611
- "input": 1.5,
612
- "cachedInput": 0.15,
613
- "output": 9,
614
- "batchInput": 0.75,
615
- "batchOutput": 4.5
616
- },
617
997
  "runtime": {
618
998
  "reasoningEffort": "high",
619
999
  "toolPolicy": "read-only",
@@ -622,8 +1002,490 @@
622
1002
  "allowWeb": true,
623
1003
  "allowFileSearch": true
624
1004
  },
625
- "reason": "Good when research requires very large context windows."
1005
+ "reason": "Good when research requires very large context windows.",
1006
+ "api": {
1007
+ "defaultTransport": "openrouter",
1008
+ "vendorModelId": "gemini-3.5-flash",
1009
+ "openRouterModelId": "google/gemini-3.5-flash"
1010
+ },
1011
+ "verification": {
1012
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1013
+ "sourceRefs": [
1014
+ "vendor:google",
1015
+ "openrouter:catalog"
1016
+ ]
1017
+ },
1018
+ "modelStatus": "predicted"
1019
+ }
1020
+ },
1021
+ "fallbackChoiceOrder": [
1022
+ "default",
1023
+ "premium_research",
1024
+ "long_context_research"
1025
+ ],
1026
+ "requiredCapabilities": {
1027
+ "reasoning": "high",
1028
+ "context": "large",
1029
+ "quality": "high"
1030
+ }
1031
+ },
1032
+ "cyber": {
1033
+ "profile": "cyber",
1034
+ "displayName": "Cyber & Risk Analysis",
1035
+ "description": "Model selection tuned for threat analysis, TPRM, contract verification, and log parsing.",
1036
+ "category": "security",
1037
+ "aliases": [
1038
+ "security",
1039
+ "threat-intel",
1040
+ "risk",
1041
+ "audit"
1042
+ ],
1043
+ "defaultChoice": "default",
1044
+ "choices": {
1045
+ "default": {
1046
+ "choice": "default",
1047
+ "displayName": "Verification Default",
1048
+ "description": "Balanced reasoning for policy review and contract verification.",
1049
+ "provider": "anthropic",
1050
+ "modelId": "claude-sonnet-4-5",
1051
+ "runtime": {
1052
+ "instructionTier": "reasoning",
1053
+ "backend": "openrouter",
1054
+ "reasoningEffort": "high",
1055
+ "toolPolicy": "read-only",
1056
+ "outputMode": "text"
1057
+ },
1058
+ "reason": "Nuanced reasoning for loopholes, fraud indicators, and subtle contract risks.",
1059
+ "api": {
1060
+ "defaultTransport": "openrouter",
1061
+ "vendorModelId": "claude-sonnet-4-5",
1062
+ "openRouterModelId": "anthropic/claude-sonnet-4.5"
1063
+ },
1064
+ "verification": {
1065
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1066
+ "sourceRefs": [
1067
+ "vendor:anthropic",
1068
+ "openrouter:catalog"
1069
+ ]
1070
+ },
1071
+ "modelStatus": "verified"
1072
+ },
1073
+ "log_analysis": {
1074
+ "choice": "log_analysis",
1075
+ "displayName": "Bulk Log Parser",
1076
+ "description": "High-volume, large-context analysis for server logs or network traffic.",
1077
+ "provider": "google",
1078
+ "modelId": "gemini-3.5-flash",
1079
+ "runtime": {
1080
+ "reasoningEffort": "medium",
1081
+ "toolPolicy": "none",
1082
+ "outputMode": "schema"
1083
+ },
1084
+ "reason": "Massive context for raw security logs and structured JSON alerts at lower cost.",
1085
+ "api": {
1086
+ "defaultTransport": "openrouter",
1087
+ "vendorModelId": "gemini-3.5-flash",
1088
+ "openRouterModelId": "google/gemini-3.5-flash"
1089
+ },
1090
+ "verification": {
1091
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1092
+ "sourceRefs": [
1093
+ "vendor:google",
1094
+ "openrouter:catalog"
1095
+ ]
1096
+ },
1097
+ "modelStatus": "predicted"
1098
+ },
1099
+ "deep_forensics": {
1100
+ "choice": "deep_forensics",
1101
+ "displayName": "Deep Forensics",
1102
+ "description": "Maximum reasoning for vulnerability hunting and code auditing.",
1103
+ "provider": "openai",
1104
+ "modelId": "gpt-5.5",
1105
+ "runtime": {
1106
+ "instructionTier": "reasoning",
1107
+ "backend": "openrouter",
1108
+ "reasoningEffort": "max",
1109
+ "toolPolicy": "read-only",
1110
+ "outputMode": "text"
1111
+ },
1112
+ "reason": "Top-tier reliability for complex logic flaws in code or architecture.",
1113
+ "api": {
1114
+ "defaultTransport": "openrouter",
1115
+ "vendorModelId": "gpt-5.5",
1116
+ "openRouterModelId": "openai/gpt-5.5"
1117
+ },
1118
+ "verification": {
1119
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1120
+ "sourceRefs": [
1121
+ "vendor:openai",
1122
+ "openrouter:catalog"
1123
+ ]
1124
+ },
1125
+ "modelStatus": "verified"
1126
+ }
1127
+ },
1128
+ "fallbackChoiceOrder": [
1129
+ "default",
1130
+ "log_analysis",
1131
+ "deep_forensics"
1132
+ ],
1133
+ "requiredCapabilities": {
1134
+ "reasoning": "high",
1135
+ "coding": true,
1136
+ "context": "large"
1137
+ }
1138
+ },
1139
+ "content": {
1140
+ "profile": "content",
1141
+ "displayName": "Content Generation",
1142
+ "description": "Model selection optimized for prose, marketing, and programmatic SEO.",
1143
+ "category": "creative",
1144
+ "aliases": [
1145
+ "writing",
1146
+ "creative",
1147
+ "seo",
1148
+ "copy"
1149
+ ],
1150
+ "defaultChoice": "default",
1151
+ "choices": {
1152
+ "default": {
1153
+ "choice": "default",
1154
+ "displayName": "Prose Default",
1155
+ "description": "Standard high-quality writing.",
1156
+ "provider": "anthropic",
1157
+ "modelId": "claude-sonnet-4-5",
1158
+ "runtime": {
1159
+ "instructionTier": "default",
1160
+ "backend": "openrouter",
1161
+ "reasoningEffort": "medium",
1162
+ "toolPolicy": "none",
1163
+ "outputMode": "text"
1164
+ },
1165
+ "reason": "Natural, least AI-sounding prose for marketing and long-form copy.",
1166
+ "api": {
1167
+ "defaultTransport": "openrouter",
1168
+ "vendorModelId": "claude-sonnet-4-5",
1169
+ "openRouterModelId": "anthropic/claude-sonnet-4.5"
1170
+ },
1171
+ "verification": {
1172
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1173
+ "sourceRefs": [
1174
+ "vendor:anthropic",
1175
+ "openrouter:catalog"
1176
+ ]
1177
+ },
1178
+ "modelStatus": "verified"
1179
+ },
1180
+ "pseo_bulk": {
1181
+ "choice": "pseo_bulk",
1182
+ "displayName": "Programmatic SEO",
1183
+ "description": "High-speed, low-cost generation for verticalized landing pages.",
1184
+ "provider": "google",
1185
+ "modelId": "gemini-3.1-flash-lite",
1186
+ "runtime": {
1187
+ "reasoningEffort": "low",
1188
+ "executionMode": "batch",
1189
+ "toolPolicy": "none",
1190
+ "outputMode": "schema"
1191
+ },
1192
+ "reason": "Hundreds of persona-led pages need cost efficiency and structured front-matter output.",
1193
+ "api": {
1194
+ "defaultTransport": "openrouter",
1195
+ "vendorModelId": "gemini-3.1-flash-lite",
1196
+ "openRouterModelId": "google/gemini-3.1-flash-lite"
1197
+ },
1198
+ "verification": {
1199
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1200
+ "sourceRefs": [
1201
+ "vendor:google",
1202
+ "openrouter:catalog"
1203
+ ]
1204
+ },
1205
+ "modelStatus": "predicted"
1206
+ },
1207
+ "brand_voice": {
1208
+ "choice": "brand_voice",
1209
+ "displayName": "Premium Copy",
1210
+ "description": "Highest-quality creative writing for hero sections and manifestos.",
1211
+ "provider": "anthropic",
1212
+ "modelId": "claude-opus-4-8",
1213
+ "runtime": {
1214
+ "reasoningEffort": "high",
1215
+ "toolPolicy": "none",
1216
+ "outputMode": "text"
1217
+ },
1218
+ "reason": "When brand voice, tone, and persuasive copywriting are paramount.",
1219
+ "api": {
1220
+ "defaultTransport": "openrouter",
1221
+ "vendorModelId": "claude-opus-4-8",
1222
+ "openRouterModelId": "anthropic/claude-opus-4.8"
1223
+ },
1224
+ "verification": {
1225
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1226
+ "sourceRefs": [
1227
+ "vendor:anthropic",
1228
+ "openrouter:catalog"
1229
+ ]
1230
+ },
1231
+ "modelStatus": "predicted"
1232
+ }
1233
+ },
1234
+ "fallbackChoiceOrder": [
1235
+ "default",
1236
+ "pseo_bulk",
1237
+ "brand_voice"
1238
+ ],
1239
+ "requiredCapabilities": {
1240
+ "reasoning": "medium",
1241
+ "context": "standard",
1242
+ "quality": "high"
1243
+ }
1244
+ },
1245
+ "summarization": {
1246
+ "profile": "summarization",
1247
+ "displayName": "Summarization",
1248
+ "description": "Optimized for information compression and document triage.",
1249
+ "category": "analysis",
1250
+ "aliases": [
1251
+ "triage",
1252
+ "digest",
1253
+ "tl-dr"
1254
+ ],
1255
+ "defaultChoice": "default",
1256
+ "choices": {
1257
+ "default": {
1258
+ "choice": "default",
1259
+ "displayName": "Fast Digest",
1260
+ "description": "Quickly summarizes standard documents and meeting transcripts.",
1261
+ "provider": "anthropic",
1262
+ "modelId": "claude-haiku-4-5",
1263
+ "runtime": {
1264
+ "instructionTier": "default",
1265
+ "backend": "openrouter",
1266
+ "reasoningEffort": "low",
1267
+ "toolPolicy": "none",
1268
+ "outputMode": "text"
1269
+ },
1270
+ "reason": "Fast and capable at reading comprehension and triage summaries.",
1271
+ "api": {
1272
+ "defaultTransport": "openrouter",
1273
+ "vendorModelId": "claude-haiku-4-5",
1274
+ "openRouterModelId": "anthropic/claude-haiku-4.5"
1275
+ },
1276
+ "verification": {
1277
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1278
+ "sourceRefs": [
1279
+ "vendor:anthropic",
1280
+ "openrouter:catalog"
1281
+ ]
1282
+ },
1283
+ "modelStatus": "verified"
1284
+ },
1285
+ "mega_context": {
1286
+ "choice": "mega_context",
1287
+ "displayName": "Mega Context Summarization",
1288
+ "description": "Compressing entire repositories, books, or multi-year document histories.",
1289
+ "provider": "google",
1290
+ "modelId": "gemini-2.5-pro",
1291
+ "runtime": {
1292
+ "reasoningEffort": "high",
1293
+ "toolPolicy": "none",
1294
+ "outputMode": "text"
1295
+ },
1296
+ "reason": "When input exceeds ~200k tokens, Pro-tier long context handles needle-in-haystack retrieval best.",
1297
+ "api": {
1298
+ "defaultTransport": "openrouter",
1299
+ "vendorModelId": "gemini-2.5-pro",
1300
+ "openRouterModelId": "google/gemini-2.5-pro"
1301
+ },
1302
+ "verification": {
1303
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1304
+ "sourceRefs": [
1305
+ "vendor:google",
1306
+ "openrouter:catalog"
1307
+ ]
1308
+ },
1309
+ "modelStatus": "verified"
1310
+ }
1311
+ },
1312
+ "fallbackChoiceOrder": [
1313
+ "default",
1314
+ "mega_context"
1315
+ ],
1316
+ "requiredCapabilities": {
1317
+ "reasoning": "low",
1318
+ "cost": "low",
1319
+ "context": "large"
1320
+ }
1321
+ },
1322
+ "vision": {
1323
+ "profile": "vision",
1324
+ "displayName": "Vision & Multimodal",
1325
+ "description": "Model selection for image analysis, OCR, and spatial reasoning.",
1326
+ "category": "multimodal",
1327
+ "aliases": [
1328
+ "image",
1329
+ "ocr",
1330
+ "visual"
1331
+ ],
1332
+ "defaultChoice": "default",
1333
+ "choices": {
1334
+ "default": {
1335
+ "choice": "default",
1336
+ "displayName": "Vision Default",
1337
+ "description": "General-purpose image understanding.",
1338
+ "provider": "openai",
1339
+ "modelId": "gpt-4.1",
1340
+ "runtime": {
1341
+ "instructionTier": "default",
1342
+ "backend": "openrouter",
1343
+ "reasoningEffort": "medium",
1344
+ "toolPolicy": "none",
1345
+ "outputMode": "text"
1346
+ },
1347
+ "reason": "Strong spatial reasoning and chart interpretation.",
1348
+ "api": {
1349
+ "defaultTransport": "openrouter",
1350
+ "vendorModelId": "gpt-4.1",
1351
+ "openRouterModelId": "openai/gpt-4.1"
1352
+ },
1353
+ "verification": {
1354
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1355
+ "sourceRefs": [
1356
+ "vendor:openai",
1357
+ "openrouter:catalog"
1358
+ ]
1359
+ },
1360
+ "modelStatus": "verified"
1361
+ },
1362
+ "document_ocr": {
1363
+ "choice": "document_ocr",
1364
+ "displayName": "Document OCR",
1365
+ "description": "Extracting text and structure from scanned documents and PDFs.",
1366
+ "provider": "anthropic",
1367
+ "modelId": "claude-sonnet-4-6",
1368
+ "runtime": {
1369
+ "reasoningEffort": "medium",
1370
+ "toolPolicy": "none",
1371
+ "outputMode": "schema"
1372
+ },
1373
+ "reason": "Maintains document hierarchy and outputs extracted data to strict JSON schemas.",
1374
+ "api": {
1375
+ "defaultTransport": "openrouter",
1376
+ "vendorModelId": "claude-sonnet-4-6",
1377
+ "openRouterModelId": "anthropic/claude-sonnet-4.6"
1378
+ },
1379
+ "verification": {
1380
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1381
+ "sourceRefs": [
1382
+ "vendor:anthropic",
1383
+ "openrouter:catalog"
1384
+ ]
1385
+ },
1386
+ "modelStatus": "predicted"
1387
+ }
1388
+ },
1389
+ "fallbackChoiceOrder": [
1390
+ "default",
1391
+ "document_ocr"
1392
+ ],
1393
+ "requiredCapabilities": {
1394
+ "reasoning": "medium",
1395
+ "supportsVision": true,
1396
+ "context": "large"
1397
+ }
1398
+ },
1399
+ "open_weights": {
1400
+ "profile": "open_weights",
1401
+ "displayName": "Open Weights Ecosystem",
1402
+ "description": "Hosted open-source models as a hedge against proprietary lock-in, with pathways to self-hosting.",
1403
+ "category": "resilience",
1404
+ "aliases": [
1405
+ "llama",
1406
+ "qwen",
1407
+ "mistral",
1408
+ "self-hostable"
1409
+ ],
1410
+ "defaultChoice": "default",
1411
+ "choices": {
1412
+ "default": {
1413
+ "choice": "default",
1414
+ "displayName": "Llama 3.3 70B",
1415
+ "description": "Standard open-weights workhorse with a clear self-hosting path when compliance requires it.",
1416
+ "provider": "together",
1417
+ "modelId": "meta-llama/Llama-3.3-70B-Instruct-Turbo",
1418
+ "runtime": {
1419
+ "instructionTier": "default",
1420
+ "backend": "openrouter",
1421
+ "reasoningEffort": "medium",
1422
+ "toolPolicy": "none",
1423
+ "outputMode": "text"
1424
+ },
1425
+ "metadata": {
1426
+ "openRouter": "vendor-direct"
1427
+ },
1428
+ "reason": "Direct pathway to self-hosting if privacy or vendor independence is required.",
1429
+ "api": {
1430
+ "defaultTransport": "direct",
1431
+ "vendorModelId": "meta-llama/Llama-3.3-70B-Instruct-Turbo",
1432
+ "openRouterModelId": null
1433
+ },
1434
+ "verification": {
1435
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1436
+ "sourceRefs": [
1437
+ "vendor:together",
1438
+ "openrouter:catalog"
1439
+ ]
1440
+ },
1441
+ "modelStatus": "verified",
1442
+ "deploymentType": "openWeightsHosted"
1443
+ },
1444
+ "multilingual_code": {
1445
+ "choice": "multilingual_code",
1446
+ "displayName": "Qwen 2.5 72B",
1447
+ "description": "Strong open-weights option for coding and non-English workloads.",
1448
+ "provider": "together",
1449
+ "modelId": "Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
1450
+ "runtime": {
1451
+ "instructionTier": "default",
1452
+ "backend": "openrouter",
1453
+ "reasoningEffort": "high",
1454
+ "toolPolicy": "none",
1455
+ "outputMode": "text"
1456
+ },
1457
+ "metadata": {
1458
+ "openRouter": "vendor-direct"
1459
+ },
1460
+ "reason": "Top-tier Chinese open-weights model; exceptionally strong at coding and multilingual tasks.",
1461
+ "api": {
1462
+ "defaultTransport": "direct",
1463
+ "vendorModelId": "Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
1464
+ "openRouterModelId": null
1465
+ },
1466
+ "verification": {
1467
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1468
+ "sourceRefs": [
1469
+ "vendor:together",
1470
+ "openrouter:catalog"
1471
+ ]
1472
+ },
1473
+ "modelStatus": "verified",
1474
+ "deploymentType": "openWeightsHosted"
626
1475
  }
1476
+ },
1477
+ "fallbackChoiceOrder": [
1478
+ "default",
1479
+ "multilingual_code"
1480
+ ],
1481
+ "requiredCapabilities": {
1482
+ "reasoning": "medium",
1483
+ "coding": true,
1484
+ "cost": "medium"
1485
+ },
1486
+ "deploymentType": "openWeightsHosted",
1487
+ "metadata": {
1488
+ "deploymentStrategy": "openWeightsHosted"
627
1489
  }
628
1490
  },
629
1491
  "local": {
@@ -659,8 +1521,22 @@
659
1521
  "envThreads": "LLAMA_CPP_THREADS",
660
1522
  "envContextSize": "LLAMA_CPP_CONTEXT_SIZE",
661
1523
  "defaultModelPath": "./models/model.gguf",
662
- "optionalDep": "node-llama-cpp"
663
- }
1524
+ "optionalDep": "node-llama-cpp",
1525
+ "billingModel": "self_hosted"
1526
+ },
1527
+ "api": {
1528
+ "defaultTransport": "direct",
1529
+ "vendorModelId": "funcx:llama-cpp:gguf",
1530
+ "openRouterModelId": null
1531
+ },
1532
+ "verification": {
1533
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1534
+ "sourceRefs": [
1535
+ "vendor:local",
1536
+ "openrouter:catalog"
1537
+ ]
1538
+ },
1539
+ "modelStatus": "verified"
664
1540
  },
665
1541
  "transformersjs_default": {
666
1542
  "choice": "transformersjs_default",
@@ -681,13 +1557,305 @@
681
1557
  "funcxBackend": "transformersjs",
682
1558
  "envModelId": "TRANSFORMERS_JS_MODEL_ID",
683
1559
  "envCacheDir": "TRANSFORMERS_JS_CACHE_DIR",
684
- "defaultModelId": "Xenova/tiny-random-Gpt2",
1560
+ "defaultModelId": "Xenova/distilbart-cnn-6-6",
685
1561
  "documentedExampleModelId": "Xenova/distilbart-cnn-6-6",
686
1562
  "optionalDep": "@huggingface/transformers",
687
- "device": "cpu"
688
- }
1563
+ "device": "cpu",
1564
+ "billingModel": "self_hosted"
1565
+ },
1566
+ "api": {
1567
+ "defaultTransport": "direct",
1568
+ "vendorModelId": "Xenova/distilbart-cnn-6-6",
1569
+ "openRouterModelId": null
1570
+ },
1571
+ "verification": {
1572
+ "lastVerifiedAt": "2026-05-29T17:08:03Z",
1573
+ "sourceRefs": [
1574
+ "vendor:local",
1575
+ "openrouter:catalog"
1576
+ ]
1577
+ },
1578
+ "modelStatus": "verified"
689
1579
  }
1580
+ },
1581
+ "fallbackChoiceOrder": [
1582
+ "llama_cpp_gguf",
1583
+ "transformersjs_default"
1584
+ ],
1585
+ "requiredCapabilities": {
1586
+ "reasoning": "minimal",
1587
+ "cost": "low"
690
1588
  }
1589
+ },
1590
+ "coding": {
1591
+ "profile": "coding",
1592
+ "displayName": "Coding",
1593
+ "description": "Model selection optimized for software engineering: implementation, refactors, reviews, and debugging.",
1594
+ "category": "engineering",
1595
+ "aliases": [
1596
+ "dev",
1597
+ "developer",
1598
+ "software",
1599
+ "programming",
1600
+ "code"
1601
+ ],
1602
+ "defaultChoice": "default",
1603
+ "requiredCapabilities": {
1604
+ "reasoning": "high",
1605
+ "coding": true,
1606
+ "context": "large",
1607
+ "quality": "high"
1608
+ },
1609
+ "choices": {
1610
+ "default": {
1611
+ "choice": "default",
1612
+ "displayName": "Coding Default",
1613
+ "description": "Recommended model for general coding work.",
1614
+ "provider": "anthropic",
1615
+ "modelId": "claude-sonnet-4-5",
1616
+ "modelStatus": "verified",
1617
+ "runtime": {
1618
+ "instructionTier": "default",
1619
+ "backend": "openrouter",
1620
+ "reasoningEffort": "high",
1621
+ "toolPolicy": "read-only",
1622
+ "outputMode": "text"
1623
+ },
1624
+ "reason": "Strong instruction following and code quality for everyday engineering tasks.",
1625
+ "api": {
1626
+ "defaultTransport": "openrouter",
1627
+ "vendorModelId": "claude-sonnet-4-5",
1628
+ "openRouterModelId": "anthropic/claude-sonnet-4.5"
1629
+ },
1630
+ "verification": {
1631
+ "lastVerifiedAt": "2026-05-29T20:57:08Z",
1632
+ "sourceRefs": [
1633
+ "vendor:anthropic",
1634
+ "openrouter:catalog"
1635
+ ]
1636
+ }
1637
+ },
1638
+ "openai_coding": {
1639
+ "choice": "openai_coding",
1640
+ "displayName": "OpenAI Coding",
1641
+ "description": "OpenAI alternative for coding workloads.",
1642
+ "provider": "openai",
1643
+ "modelId": "gpt-4.1",
1644
+ "modelStatus": "verified",
1645
+ "runtime": {
1646
+ "reasoningEffort": "high",
1647
+ "toolPolicy": "read-only",
1648
+ "outputMode": "text"
1649
+ },
1650
+ "reason": "Solid alternative for multi-file edits and API-heavy codebases.",
1651
+ "api": {
1652
+ "defaultTransport": "openrouter",
1653
+ "vendorModelId": "gpt-4.1",
1654
+ "openRouterModelId": "openai/gpt-4.1"
1655
+ },
1656
+ "verification": {
1657
+ "lastVerifiedAt": "2026-05-29T20:57:08Z",
1658
+ "sourceRefs": [
1659
+ "vendor:openai",
1660
+ "openrouter:catalog"
1661
+ ]
1662
+ }
1663
+ },
1664
+ "cost_coding": {
1665
+ "choice": "cost_coding",
1666
+ "displayName": "Budget Coding",
1667
+ "description": "Lower-cost coding option for simpler changes.",
1668
+ "provider": "deepseek",
1669
+ "modelId": "deepseek-chat",
1670
+ "modelStatus": "verified",
1671
+ "runtime": {
1672
+ "reasoningEffort": "medium",
1673
+ "toolPolicy": "read-only",
1674
+ "outputMode": "text"
1675
+ },
1676
+ "reason": "Cost-effective for smaller patches, tests, and boilerplate generation.",
1677
+ "api": {
1678
+ "defaultTransport": "openrouter",
1679
+ "vendorModelId": "deepseek-chat",
1680
+ "openRouterModelId": "deepseek/deepseek-chat"
1681
+ },
1682
+ "verification": {
1683
+ "lastVerifiedAt": "2026-05-29T20:57:08Z",
1684
+ "sourceRefs": [
1685
+ "vendor:deepseek",
1686
+ "openrouter:catalog"
1687
+ ]
1688
+ }
1689
+ }
1690
+ },
1691
+ "fallbackChoiceOrder": [
1692
+ "default",
1693
+ "openai_coding",
1694
+ "cost_coding"
1695
+ ]
1696
+ },
1697
+ "extraction": {
1698
+ "profile": "extraction",
1699
+ "displayName": "Extraction",
1700
+ "description": "Model selection for NER, classification, taxonomy mapping, entity extraction, and document labeling.",
1701
+ "category": "extraction",
1702
+ "aliases": [
1703
+ "ner",
1704
+ "classify",
1705
+ "labeling",
1706
+ "entity-extraction",
1707
+ "parse"
1708
+ ],
1709
+ "defaultChoice": "default",
1710
+ "requiredCapabilities": {
1711
+ "structuredOutput": true,
1712
+ "reasoning": "minimal",
1713
+ "cost": "low",
1714
+ "supportsJsonSchema": true
1715
+ },
1716
+ "runtime": {
1717
+ "outputMode": "json",
1718
+ "temperature": 0
1719
+ },
1720
+ "choices": {
1721
+ "default": {
1722
+ "choice": "default",
1723
+ "displayName": "Extraction Default",
1724
+ "description": "Fast, low-cost extraction for high-volume labeling pipelines.",
1725
+ "provider": "google",
1726
+ "modelId": "gemini-2.5-flash-lite",
1727
+ "modelStatus": "verified",
1728
+ "runtime": {
1729
+ "reasoningEffort": "minimal",
1730
+ "toolPolicy": "none",
1731
+ "outputMode": "json",
1732
+ "temperature": 0
1733
+ },
1734
+ "reason": "Optimized for bulk extraction where latency and cost dominate.",
1735
+ "api": {
1736
+ "defaultTransport": "openrouter",
1737
+ "vendorModelId": "gemini-2.5-flash-lite",
1738
+ "openRouterModelId": "google/gemini-2.5-flash-lite"
1739
+ },
1740
+ "verification": {
1741
+ "lastVerifiedAt": "2026-05-29T20:57:08Z",
1742
+ "sourceRefs": [
1743
+ "vendor:google",
1744
+ "openrouter:catalog"
1745
+ ]
1746
+ }
1747
+ },
1748
+ "quality_extraction": {
1749
+ "choice": "quality_extraction",
1750
+ "displayName": "Quality Extraction",
1751
+ "description": "Higher-quality extraction when ambiguity or long documents matter.",
1752
+ "provider": "anthropic",
1753
+ "modelId": "claude-haiku-4-5",
1754
+ "modelStatus": "verified",
1755
+ "runtime": {
1756
+ "reasoningEffort": "low",
1757
+ "toolPolicy": "none",
1758
+ "outputMode": "json",
1759
+ "temperature": 0
1760
+ },
1761
+ "reason": "Better entity boundaries and taxonomy consistency on messy inputs.",
1762
+ "api": {
1763
+ "defaultTransport": "openrouter",
1764
+ "vendorModelId": "claude-haiku-4-5",
1765
+ "openRouterModelId": "anthropic/claude-haiku-4.5"
1766
+ },
1767
+ "verification": {
1768
+ "lastVerifiedAt": "2026-05-29T20:57:08Z",
1769
+ "sourceRefs": [
1770
+ "vendor:anthropic",
1771
+ "openrouter:catalog"
1772
+ ]
1773
+ }
1774
+ }
1775
+ },
1776
+ "fallbackChoiceOrder": [
1777
+ "default",
1778
+ "quality_extraction"
1779
+ ]
1780
+ },
1781
+ "routing": {
1782
+ "profile": "routing",
1783
+ "displayName": "Routing",
1784
+ "description": "Ultra-low-cost models for intent classification, record routing, and workflow branching.",
1785
+ "category": "routing",
1786
+ "aliases": [
1787
+ "router",
1788
+ "classifier",
1789
+ "intent",
1790
+ "branch",
1791
+ "triage"
1792
+ ],
1793
+ "defaultChoice": "default",
1794
+ "requiredCapabilities": {
1795
+ "reasoning": "minimal",
1796
+ "cost": "low",
1797
+ "latency": "low"
1798
+ },
1799
+ "choices": {
1800
+ "default": {
1801
+ "choice": "default",
1802
+ "displayName": "Routing Default",
1803
+ "description": "Cheapest reliable option for high-volume routing decisions.",
1804
+ "provider": "google",
1805
+ "modelId": "gemini-2.5-flash-lite",
1806
+ "modelStatus": "verified",
1807
+ "runtime": {
1808
+ "reasoningEffort": "minimal",
1809
+ "toolPolicy": "none",
1810
+ "outputMode": "json",
1811
+ "temperature": 0
1812
+ },
1813
+ "reason": "Minimize spend on per-request routing and orchestration gates.",
1814
+ "api": {
1815
+ "defaultTransport": "openrouter",
1816
+ "vendorModelId": "gemini-2.5-flash-lite",
1817
+ "openRouterModelId": "google/gemini-2.5-flash-lite"
1818
+ },
1819
+ "verification": {
1820
+ "lastVerifiedAt": "2026-05-29T20:57:08Z",
1821
+ "sourceRefs": [
1822
+ "vendor:google",
1823
+ "openrouter:catalog"
1824
+ ]
1825
+ }
1826
+ },
1827
+ "safer_routing": {
1828
+ "choice": "safer_routing",
1829
+ "displayName": "Safer Routing",
1830
+ "description": "Slightly higher cost when routing mistakes are expensive.",
1831
+ "provider": "anthropic",
1832
+ "modelId": "claude-haiku-4-5",
1833
+ "modelStatus": "verified",
1834
+ "runtime": {
1835
+ "reasoningEffort": "low",
1836
+ "toolPolicy": "none",
1837
+ "outputMode": "json",
1838
+ "temperature": 0
1839
+ },
1840
+ "reason": "Better instruction adherence for multi-label or nested routing trees.",
1841
+ "api": {
1842
+ "defaultTransport": "openrouter",
1843
+ "vendorModelId": "claude-haiku-4-5",
1844
+ "openRouterModelId": "anthropic/claude-haiku-4.5"
1845
+ },
1846
+ "verification": {
1847
+ "lastVerifiedAt": "2026-05-29T20:57:08Z",
1848
+ "sourceRefs": [
1849
+ "vendor:anthropic",
1850
+ "openrouter:catalog"
1851
+ ]
1852
+ }
1853
+ }
1854
+ },
1855
+ "fallbackChoiceOrder": [
1856
+ "default",
1857
+ "safer_routing"
1858
+ ]
691
1859
  }
692
1860
  }
693
- }
1861
+ }