@shop-os/modelkit 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +166 -0
- package/README.md +16 -0
- package/dist/catalog.cjs +2239 -0
- package/dist/catalog.cjs.map +1 -0
- package/dist/catalog.d.cts +479 -0
- package/dist/catalog.d.ts +479 -0
- package/dist/catalog.js +2216 -0
- package/dist/catalog.js.map +1 -0
- package/dist/index.cjs +295 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +36 -2
- package/dist/index.d.ts +36 -2
- package/dist/index.js +295 -35
- package/dist/index.js.map +1 -1
- package/package.json +9 -3
package/dist/index.js
CHANGED
|
@@ -35,6 +35,23 @@ var Catalog = class _Catalog {
|
|
|
35
35
|
for (const model of models) this.add(model);
|
|
36
36
|
}
|
|
37
37
|
add(model) {
|
|
38
|
+
if (this.byId.has(model.id)) {
|
|
39
|
+
throw new Error(`Duplicate model id "${model.id}"`);
|
|
40
|
+
}
|
|
41
|
+
if (this.byAlias.has(model.id)) {
|
|
42
|
+
throw new Error(
|
|
43
|
+
`Model id "${model.id}" collides with an alias of "${this.byAlias.get(model.id)}"`
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
for (const alias of model.aliases) {
|
|
47
|
+
if (alias === model.id) {
|
|
48
|
+
throw new Error(`Alias "${alias}" collides with its own model id "${model.id}"`);
|
|
49
|
+
}
|
|
50
|
+
const existing = this.byAlias.get(alias);
|
|
51
|
+
if (existing !== void 0) {
|
|
52
|
+
throw new Error(`Duplicate alias "${alias}" (already maps to "${existing}")`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
38
55
|
this.byId.set(model.id, model);
|
|
39
56
|
this.byAlias.set(model.id, model.id);
|
|
40
57
|
for (const alias of model.aliases) this.byAlias.set(alias, model.id);
|
|
@@ -97,7 +114,7 @@ var GEMINI_RATIOS = [
|
|
|
97
114
|
"5:4",
|
|
98
115
|
"adaptive"
|
|
99
116
|
];
|
|
100
|
-
function geminiImage(id, label, aliases, sizes, display) {
|
|
117
|
+
function geminiImage(id, label, aliases, sizes, display, exposure) {
|
|
101
118
|
const model = {
|
|
102
119
|
id,
|
|
103
120
|
aliases,
|
|
@@ -106,13 +123,14 @@ function geminiImage(id, label, aliases, sizes, display) {
|
|
|
106
123
|
adapter: "google-image",
|
|
107
124
|
providerModelId: id,
|
|
108
125
|
lifecycle: "active",
|
|
126
|
+
exposure,
|
|
109
127
|
constraints: {
|
|
110
128
|
aspectRatios: [...GEMINI_RATIOS],
|
|
111
129
|
sizes,
|
|
112
130
|
supports: ["safetySettings", "temperature"]
|
|
113
131
|
},
|
|
114
132
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
115
|
-
usage: { ...IMAGE_USAGE },
|
|
133
|
+
usage: { ...IMAGE_USAGE, slug: "gemini" },
|
|
116
134
|
pricingKind: "image_size",
|
|
117
135
|
display,
|
|
118
136
|
capabilities: { ...IMAGE_GENERATE_EDIT }
|
|
@@ -120,14 +138,21 @@ function geminiImage(id, label, aliases, sizes, display) {
|
|
|
120
138
|
return model;
|
|
121
139
|
}
|
|
122
140
|
var IMAGE_MODELS = [
|
|
123
|
-
geminiImage(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
141
|
+
geminiImage(
|
|
142
|
+
"gemini-3-pro-image-preview",
|
|
143
|
+
"Nano Banana Pro",
|
|
144
|
+
["nb-pro"],
|
|
145
|
+
["1K", "2K", "4K"],
|
|
146
|
+
{
|
|
147
|
+
provider: "google",
|
|
148
|
+
description: "Create stunning, production-quality visuals with exceptional realism, detail, and typography. Best for campaigns, e-commerce, product photography, and hero creatives.",
|
|
149
|
+
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
|
|
150
|
+
},
|
|
151
|
+
"catalog"
|
|
152
|
+
),
|
|
128
153
|
geminiImage(
|
|
129
154
|
"gemini-3.1-flash-image-preview",
|
|
130
|
-
"Nano Banana
|
|
155
|
+
"Nano Banana 2",
|
|
131
156
|
["nb-2"],
|
|
132
157
|
// Flash 3.1 is the only Gemini image model with the 512 tier.
|
|
133
158
|
["512", "1K", "2K", "4K"],
|
|
@@ -135,35 +160,61 @@ var IMAGE_MODELS = [
|
|
|
135
160
|
provider: "google",
|
|
136
161
|
description: "Generate high-quality images at speed. Perfect for brainstorming, moodboards, concept testing, creative exploration, and large batch workflows.",
|
|
137
162
|
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
|
|
138
|
-
}
|
|
163
|
+
},
|
|
164
|
+
"catalog"
|
|
165
|
+
),
|
|
166
|
+
geminiImage(
|
|
167
|
+
"gemini-3.1-flash-lite-image",
|
|
168
|
+
"Nano Banana Lite",
|
|
169
|
+
["nb-lite"],
|
|
170
|
+
["1K"],
|
|
171
|
+
{
|
|
172
|
+
provider: "google",
|
|
173
|
+
description: "The fastest and most affordable image model. Ideal for rapid drafts, bulk exploration, and iterative concept testing at 1K resolution.",
|
|
174
|
+
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
|
|
175
|
+
},
|
|
176
|
+
"catalog"
|
|
139
177
|
),
|
|
140
|
-
geminiImage("gemini-3.1-flash-lite-image", "Nano Banana Lite", ["nb-lite"], ["1K"], {
|
|
141
|
-
provider: "google",
|
|
142
|
-
description: "The fastest and most affordable image model. Ideal for rapid drafts, bulk exploration, and iterative concept testing at 1K resolution.",
|
|
143
|
-
logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
|
|
144
|
-
}),
|
|
145
178
|
// trigger-workflows validates 1K only; pricing seeds 2K/4K rows so allow all three.
|
|
146
|
-
geminiImage(
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
179
|
+
geminiImage(
|
|
180
|
+
"gemini-2.5-flash-image",
|
|
181
|
+
"Gemini 2.5 Flash Image",
|
|
182
|
+
[],
|
|
183
|
+
["1K", "2K", "4K"],
|
|
184
|
+
{
|
|
185
|
+
provider: "google",
|
|
186
|
+
description: "Nano Banana (legacy Gemini 2.5 Flash Image) native image generation and editing model for high-volume, low-latency creative workflows."
|
|
187
|
+
},
|
|
188
|
+
"internal"
|
|
189
|
+
),
|
|
150
190
|
{
|
|
151
191
|
// Cowork "auto" lets OpenAI pick the size; the canonical equivalent is adaptive.
|
|
152
192
|
id: "gpt-image-2",
|
|
153
193
|
aliases: [],
|
|
154
|
-
label: "GPT
|
|
194
|
+
label: "GPT-image-2",
|
|
155
195
|
type: "image",
|
|
156
196
|
adapter: "openai-image",
|
|
157
197
|
providerModelId: "gpt-image-2",
|
|
158
198
|
lifecycle: "active",
|
|
199
|
+
exposure: "catalog",
|
|
159
200
|
constraints: {
|
|
201
|
+
exactSizes: {
|
|
202
|
+
"1:1": "1024x1024",
|
|
203
|
+
"3:2": "1536x1024",
|
|
204
|
+
"2:3": "1024x1536",
|
|
205
|
+
"16:9": "2048x1152",
|
|
206
|
+
"9:16": "1152x2048",
|
|
207
|
+
"4:5": "1024x1280",
|
|
208
|
+
"5:4": "1280x1024"
|
|
209
|
+
},
|
|
160
210
|
aspectRatios: ["1:1", "3:2", "2:3", "16:9", "9:16", "4:5", "5:4", "adaptive"],
|
|
161
211
|
sizes: ["1K", "2K", "4K"],
|
|
212
|
+
qualityOptions: ["auto", "low", "medium", "high"],
|
|
162
213
|
references: { images: 16 },
|
|
163
214
|
supports: ["quality", "count"]
|
|
164
215
|
},
|
|
165
216
|
defaults: { size: "1K", aspectRatio: "adaptive", quality: "auto" },
|
|
166
|
-
usage: { ...IMAGE_USAGE },
|
|
217
|
+
usage: { ...IMAGE_USAGE, slug: "gpt" },
|
|
167
218
|
pricingKind: "image_size",
|
|
168
219
|
display: {
|
|
169
220
|
provider: "openai",
|
|
@@ -181,9 +232,20 @@ var IMAGE_MODELS = [
|
|
|
181
232
|
adapter: "openai-image",
|
|
182
233
|
providerModelId: "gpt-image-2.5-sunburst",
|
|
183
234
|
lifecycle: "active",
|
|
235
|
+
exposure: "internal",
|
|
184
236
|
constraints: {
|
|
237
|
+
exactSizes: {
|
|
238
|
+
"1:1": "1024x1024",
|
|
239
|
+
"3:2": "1536x1024",
|
|
240
|
+
"2:3": "1024x1536",
|
|
241
|
+
"16:9": "2048x1152",
|
|
242
|
+
"9:16": "1152x2048",
|
|
243
|
+
"4:5": "1024x1280",
|
|
244
|
+
"5:4": "1280x1024"
|
|
245
|
+
},
|
|
185
246
|
aspectRatios: ["1:1", "3:2", "2:3", "16:9", "9:16", "4:5", "5:4", "adaptive"],
|
|
186
247
|
sizes: ["1K", "2K", "4K"],
|
|
248
|
+
qualityOptions: ["auto", "low", "medium", "high"],
|
|
187
249
|
references: { images: 16 },
|
|
188
250
|
supports: ["quality", "count"]
|
|
189
251
|
},
|
|
@@ -205,9 +267,20 @@ var IMAGE_MODELS = [
|
|
|
205
267
|
adapter: "openai-image",
|
|
206
268
|
providerModelId: "gpt-image-2.5-flare",
|
|
207
269
|
lifecycle: "active",
|
|
270
|
+
exposure: "internal",
|
|
208
271
|
constraints: {
|
|
272
|
+
exactSizes: {
|
|
273
|
+
"1:1": "1024x1024",
|
|
274
|
+
"3:2": "1536x1024",
|
|
275
|
+
"2:3": "1024x1536",
|
|
276
|
+
"16:9": "2048x1152",
|
|
277
|
+
"9:16": "1152x2048",
|
|
278
|
+
"4:5": "1024x1280",
|
|
279
|
+
"5:4": "1280x1024"
|
|
280
|
+
},
|
|
209
281
|
aspectRatios: ["1:1", "3:2", "2:3", "16:9", "9:16", "4:5", "5:4", "adaptive"],
|
|
210
282
|
sizes: ["1K", "2K", "4K"],
|
|
283
|
+
qualityOptions: ["auto", "low", "medium", "high"],
|
|
211
284
|
references: { images: 16 },
|
|
212
285
|
supports: ["quality", "count"]
|
|
213
286
|
},
|
|
@@ -223,12 +296,13 @@ var IMAGE_MODELS = [
|
|
|
223
296
|
{
|
|
224
297
|
// Cowork allows 7 ratios; trigger-workflows allows 9 (adds 3:2, 9:21, drops 4:5/5:4).
|
|
225
298
|
id: "muse-image-1.0",
|
|
226
|
-
aliases: [],
|
|
299
|
+
aliases: ["meta-muse"],
|
|
227
300
|
label: "Meta Muse",
|
|
228
301
|
type: "image",
|
|
229
302
|
adapter: "fal",
|
|
230
303
|
providerModelId: "muse-image-1.0",
|
|
231
304
|
lifecycle: "active",
|
|
305
|
+
exposure: "catalog",
|
|
232
306
|
constraints: {
|
|
233
307
|
aspectRatios: [
|
|
234
308
|
"21:9",
|
|
@@ -249,7 +323,7 @@ var IMAGE_MODELS = [
|
|
|
249
323
|
supports: ["count", "outputFormat"]
|
|
250
324
|
},
|
|
251
325
|
defaults: { size: "1K", aspectRatio: "1:1", outputFormat: "png", count: 1 },
|
|
252
|
-
usage: { ...IMAGE_USAGE },
|
|
326
|
+
usage: { ...IMAGE_USAGE, slug: "muse" },
|
|
253
327
|
pricingKind: "image_size",
|
|
254
328
|
display: {
|
|
255
329
|
provider: "meta",
|
|
@@ -266,6 +340,7 @@ var IMAGE_MODELS = [
|
|
|
266
340
|
adapter: "ark",
|
|
267
341
|
providerModelId: "dola-seedream-5-0-pro-260628",
|
|
268
342
|
lifecycle: "active",
|
|
343
|
+
exposure: "catalog",
|
|
269
344
|
constraints: {
|
|
270
345
|
aspectRatios: ["1:1", "4:3", "3:4", "16:9", "9:16", "3:2", "2:3", "21:9", "4:5", "5:4"],
|
|
271
346
|
sizes: ["1K", "2K"],
|
|
@@ -291,6 +366,7 @@ var IMAGE_MODELS = [
|
|
|
291
366
|
adapter: "ark",
|
|
292
367
|
providerModelId: "seedream-4-5-251128",
|
|
293
368
|
lifecycle: "active",
|
|
369
|
+
exposure: "internal",
|
|
294
370
|
constraints: {
|
|
295
371
|
// 97:30 has no Ark size spelling; the A+ flow pads inputs to 97:30 and
|
|
296
372
|
// omits the ratio instead. Advertise only sizes the adapter can send.
|
|
@@ -328,6 +404,7 @@ var IMAGE_MODELS = [
|
|
|
328
404
|
adapter: "prodia",
|
|
329
405
|
providerModelId: "flux-2-pro",
|
|
330
406
|
lifecycle: "active",
|
|
407
|
+
exposure: "catalog",
|
|
331
408
|
constraints: {
|
|
332
409
|
aspectRatios: ["1:1", "2:3", "3:2", "16:9", "9:16", "4:3", "3:4", "4:5", "5:4", "21:9"],
|
|
333
410
|
sizes: ["1K"],
|
|
@@ -354,6 +431,7 @@ var IMAGE_MODELS = [
|
|
|
354
431
|
adapter: "prodia",
|
|
355
432
|
providerModelId: "inference.gemini-3-pro.img2img.v1",
|
|
356
433
|
lifecycle: "active",
|
|
434
|
+
exposure: "internal",
|
|
357
435
|
constraints: {
|
|
358
436
|
aspectRatios: ["1:1", "2:3", "3:2", "4:3", "3:4", "4:5", "5:4", "9:16", "16:9", "21:9"],
|
|
359
437
|
sizes: ["1K", "2K", "4K"],
|
|
@@ -379,6 +457,7 @@ var IMAGE_MODELS = [
|
|
|
379
457
|
adapter: "prodia",
|
|
380
458
|
providerModelId: "inference.nano-banana.img2img.v2",
|
|
381
459
|
lifecycle: "active",
|
|
460
|
+
exposure: "internal",
|
|
382
461
|
constraints: {
|
|
383
462
|
aspectRatios: ["1:1", "2:3", "3:4", "4:3", "9:16", "16:9", "21:9"],
|
|
384
463
|
sizes: ["1K"],
|
|
@@ -405,6 +484,7 @@ var IMAGE_MODELS = [
|
|
|
405
484
|
adapter: "replicate",
|
|
406
485
|
providerModelId: "wan-video/wan-2.7-image-pro",
|
|
407
486
|
lifecycle: "active",
|
|
487
|
+
exposure: "internal",
|
|
408
488
|
constraints: {
|
|
409
489
|
aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4"],
|
|
410
490
|
sizes: ["1K", "2K", "4K"],
|
|
@@ -431,6 +511,7 @@ var IMAGE_MODELS = [
|
|
|
431
511
|
adapter: "replicate",
|
|
432
512
|
providerModelId: "qwen/qwen-image-2-pro",
|
|
433
513
|
lifecycle: "active",
|
|
514
|
+
exposure: "internal",
|
|
434
515
|
constraints: {
|
|
435
516
|
aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"],
|
|
436
517
|
sizes: [],
|
|
@@ -458,6 +539,7 @@ var IMAGE_MODELS = [
|
|
|
458
539
|
adapter: "replicate",
|
|
459
540
|
providerModelId: "qwen-edit-apps/qwen-image-edit-plus-lora-skin",
|
|
460
541
|
lifecycle: "active",
|
|
542
|
+
exposure: "internal",
|
|
461
543
|
constraints: {
|
|
462
544
|
aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4"],
|
|
463
545
|
sizes: [],
|
|
@@ -486,6 +568,7 @@ var OTHER_MODELS = [
|
|
|
486
568
|
adapter: "google-genai",
|
|
487
569
|
providerModelId: "lyria-3-clip-preview",
|
|
488
570
|
lifecycle: "active",
|
|
571
|
+
exposure: "catalog",
|
|
489
572
|
constraints: {
|
|
490
573
|
durations: [30],
|
|
491
574
|
references: { images: 10 },
|
|
@@ -497,7 +580,8 @@ var OTHER_MODELS = [
|
|
|
497
580
|
display: {
|
|
498
581
|
provider: "google",
|
|
499
582
|
description: "Google Lyria 3 Clip short music clips, loops, and previews; takes text and up to 10 image prompts and returns a fixed 30-second MP3 plus lyrics."
|
|
500
|
-
}
|
|
583
|
+
},
|
|
584
|
+
capabilities: {}
|
|
501
585
|
},
|
|
502
586
|
{
|
|
503
587
|
id: "lyria-3-pro-preview",
|
|
@@ -507,6 +591,7 @@ var OTHER_MODELS = [
|
|
|
507
591
|
adapter: "google-genai",
|
|
508
592
|
providerModelId: "lyria-3-pro-preview",
|
|
509
593
|
lifecycle: "active",
|
|
594
|
+
exposure: "catalog",
|
|
510
595
|
constraints: {
|
|
511
596
|
references: { images: 10 },
|
|
512
597
|
supports: []
|
|
@@ -517,7 +602,8 @@ var OTHER_MODELS = [
|
|
|
517
602
|
display: {
|
|
518
603
|
provider: "google",
|
|
519
604
|
description: "Google Lyria 3 Pro flagship music model for full-length songs with verses, choruses, and bridges; takes text and up to 10 image prompts and returns MP3 plus lyrics."
|
|
520
|
-
}
|
|
605
|
+
},
|
|
606
|
+
capabilities: {}
|
|
521
607
|
},
|
|
522
608
|
{
|
|
523
609
|
id: "google/lyria-2",
|
|
@@ -527,6 +613,7 @@ var OTHER_MODELS = [
|
|
|
527
613
|
adapter: "replicate",
|
|
528
614
|
providerModelId: "google/lyria-2",
|
|
529
615
|
lifecycle: "active",
|
|
616
|
+
exposure: "internal",
|
|
530
617
|
constraints: {
|
|
531
618
|
durations: [30],
|
|
532
619
|
supports: ["seed", "negativePrompt"]
|
|
@@ -537,7 +624,8 @@ var OTHER_MODELS = [
|
|
|
537
624
|
display: {
|
|
538
625
|
provider: "google",
|
|
539
626
|
description: "Lyria 2 music generation on Replicate; produces 30 seconds of 48 kHz stereo audio from a text prompt."
|
|
540
|
-
}
|
|
627
|
+
},
|
|
628
|
+
capabilities: {}
|
|
541
629
|
},
|
|
542
630
|
{
|
|
543
631
|
id: "mmaudio",
|
|
@@ -547,6 +635,7 @@ var OTHER_MODELS = [
|
|
|
547
635
|
adapter: "replicate",
|
|
548
636
|
providerModelId: "zsxkib/mmaudio:62871fb59889b2d7c13777f08deb3b36bdff88f7e1d53a50ad7694548a41b484",
|
|
549
637
|
lifecycle: "active",
|
|
638
|
+
exposure: "catalog",
|
|
550
639
|
constraints: {
|
|
551
640
|
durations: { min: 1, max: 30 },
|
|
552
641
|
requires: ["sourceVideo"],
|
|
@@ -558,7 +647,8 @@ var OTHER_MODELS = [
|
|
|
558
647
|
display: {
|
|
559
648
|
provider: "mmaudio",
|
|
560
649
|
description: "MMAudio V2 video-to-audio model on Replicate; takes a source video and prompt and synthesizes synchronized environmental, action, and speech-like audio."
|
|
561
|
-
}
|
|
650
|
+
},
|
|
651
|
+
capabilities: {}
|
|
562
652
|
},
|
|
563
653
|
{
|
|
564
654
|
id: "elevenlabs-music",
|
|
@@ -568,6 +658,7 @@ var OTHER_MODELS = [
|
|
|
568
658
|
adapter: "replicate",
|
|
569
659
|
providerModelId: "elevenlabs/music",
|
|
570
660
|
lifecycle: "active",
|
|
661
|
+
exposure: "internal",
|
|
571
662
|
constraints: {
|
|
572
663
|
durations: { min: 5, max: 300 },
|
|
573
664
|
supports: ["instrumental"]
|
|
@@ -579,7 +670,8 @@ var OTHER_MODELS = [
|
|
|
579
670
|
display: {
|
|
580
671
|
provider: "elevenlabs",
|
|
581
672
|
description: "ElevenLabs Music text-to-music on Replicate; generates full songs, instrumental or with vocals, up to 5 minutes long at up to 44.1 kHz."
|
|
582
|
-
}
|
|
673
|
+
},
|
|
674
|
+
capabilities: {}
|
|
583
675
|
},
|
|
584
676
|
{
|
|
585
677
|
id: "topaz",
|
|
@@ -589,6 +681,7 @@ var OTHER_MODELS = [
|
|
|
589
681
|
adapter: "replicate",
|
|
590
682
|
providerModelId: "topazlabs/image-upscale",
|
|
591
683
|
lifecycle: "active",
|
|
684
|
+
exposure: "catalog",
|
|
592
685
|
constraints: {
|
|
593
686
|
references: { images: 1 },
|
|
594
687
|
requires: ["references"],
|
|
@@ -611,6 +704,7 @@ var OTHER_MODELS = [
|
|
|
611
704
|
adapter: "prodia",
|
|
612
705
|
providerModelId: "inference.remove-background.v1",
|
|
613
706
|
lifecycle: "active",
|
|
707
|
+
exposure: "catalog",
|
|
614
708
|
constraints: {
|
|
615
709
|
references: { images: 1 },
|
|
616
710
|
requires: ["references"],
|
|
@@ -638,6 +732,7 @@ function text(id, label, providerModelId, extra) {
|
|
|
638
732
|
adapter: "ai-sdk-text",
|
|
639
733
|
providerModelId,
|
|
640
734
|
lifecycle: "active",
|
|
735
|
+
exposure: "internal",
|
|
641
736
|
constraints: { supports: [] },
|
|
642
737
|
defaults: {},
|
|
643
738
|
usage: { ...TEXT_USAGE },
|
|
@@ -645,39 +740,57 @@ function text(id, label, providerModelId, extra) {
|
|
|
645
740
|
...extra
|
|
646
741
|
};
|
|
647
742
|
}
|
|
743
|
+
var ANTHROPIC_THINKING = {
|
|
744
|
+
anthropic: { thinking: { type: "enabled", budgetTokens: 4e3 }, sendReasoning: true }
|
|
745
|
+
};
|
|
746
|
+
var ANTHROPIC_ADAPTIVE = {
|
|
747
|
+
anthropic: { thinking: { type: "adaptive", display: "summarized" }, sendReasoning: true }
|
|
748
|
+
};
|
|
749
|
+
var OPENAI_REASONING = { openai: { reasoningEffort: "medium", reasoningSummary: "auto" } };
|
|
750
|
+
var DEEPSEEK_THINKING = { deepseek: { thinking: { type: "enabled" } } };
|
|
648
751
|
var TEXT_MODELS = [
|
|
649
752
|
text("gpt-4o", "GPT-4o", "gpt-4o", {
|
|
753
|
+
exposure: "internal",
|
|
650
754
|
display: {
|
|
651
755
|
provider: "openai",
|
|
756
|
+
costTier: 2,
|
|
652
757
|
description: "OpenAI GPT-4o flagship multimodal model; text and image input, 128K-token context."
|
|
653
758
|
},
|
|
654
759
|
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
|
|
655
760
|
}),
|
|
656
761
|
text("gpt-4o-mini", "GPT-4o mini", "gpt-4o-mini", {
|
|
762
|
+
exposure: "internal",
|
|
657
763
|
display: {
|
|
658
764
|
provider: "openai",
|
|
765
|
+
costTier: 1,
|
|
659
766
|
description: "OpenAI GPT-4o mini fast, low-cost multimodal model; text and image input, 128K-token context."
|
|
660
767
|
},
|
|
661
768
|
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
|
|
662
769
|
}),
|
|
663
770
|
text("gpt-5.1", "GPT-5.1", "gpt-5.1", {
|
|
771
|
+
exposure: "catalog",
|
|
664
772
|
display: {
|
|
665
773
|
provider: "openai",
|
|
774
|
+
costTier: 3,
|
|
666
775
|
description: "OpenAI GPT-5.1 reasoning model for coding and agentic tasks; text and image input, 400K-token context."
|
|
667
776
|
},
|
|
668
777
|
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
|
|
669
778
|
}),
|
|
670
779
|
text("gpt-5.2", "GPT-5.2", "gpt-5.2", {
|
|
780
|
+
exposure: "catalog",
|
|
671
781
|
display: {
|
|
672
782
|
provider: "openai",
|
|
783
|
+
costTier: 3,
|
|
673
784
|
description: "OpenAI GPT-5.2 reasoning model for complex professional work; text and image input, 400K-token context."
|
|
674
785
|
},
|
|
675
786
|
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
|
|
676
787
|
}),
|
|
677
788
|
// 1.05M-token context: https://platform.openai.com/docs/models/gpt-5.4
|
|
678
789
|
text("gpt-5.4", "GPT-5.4", "gpt-5.4", {
|
|
790
|
+
exposure: "internal",
|
|
679
791
|
display: {
|
|
680
792
|
provider: "openai",
|
|
793
|
+
costTier: 3,
|
|
681
794
|
description: "OpenAI GPT-5.4 flagship reasoning model; text and image input, 1.05M-token context."
|
|
682
795
|
},
|
|
683
796
|
capabilities: {
|
|
@@ -689,16 +802,20 @@ var TEXT_MODELS = [
|
|
|
689
802
|
}),
|
|
690
803
|
// OpenAI never shipped gpt-5.1-mini or gpt-5.2-mini; callers that still send them get 5.4 mini.
|
|
691
804
|
text("gpt-5.4-mini", "GPT-5.4 mini", "gpt-5.4-mini", {
|
|
805
|
+
exposure: "catalog",
|
|
692
806
|
aliases: ["gpt-5.1-mini", "gpt-5.2-mini"],
|
|
693
807
|
display: {
|
|
694
808
|
provider: "openai",
|
|
809
|
+
costTier: 1,
|
|
695
810
|
description: "OpenAI GPT-5.4 mini efficient reasoning model for high-volume workloads; text and image input, 400K-token context."
|
|
696
811
|
},
|
|
697
812
|
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
|
|
698
813
|
}),
|
|
699
814
|
text("gpt-5.5", "GPT-5.5", "gpt-5.5", {
|
|
815
|
+
exposure: "catalog",
|
|
700
816
|
display: {
|
|
701
817
|
provider: "openai",
|
|
818
|
+
costTier: 3,
|
|
702
819
|
description: "OpenAI GPT-5.5 flagship reasoning model for the most complex professional and coding work; text and image input, 1.05M-token context."
|
|
703
820
|
},
|
|
704
821
|
capabilities: {
|
|
@@ -709,11 +826,15 @@ var TEXT_MODELS = [
|
|
|
709
826
|
}
|
|
710
827
|
}),
|
|
711
828
|
text("gpt-5.6-luna", "GPT-5.6 Luna", "gpt-5.6-luna", {
|
|
829
|
+
providerOptions: OPENAI_REASONING,
|
|
830
|
+
exposure: "catalog",
|
|
712
831
|
display: {
|
|
713
832
|
provider: "openai",
|
|
833
|
+
costTier: 1,
|
|
714
834
|
description: "OpenAI GPT-5.6 Luna cost-optimized tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
|
|
715
835
|
},
|
|
716
836
|
capabilities: {
|
|
837
|
+
reasoning: true,
|
|
717
838
|
vision: true,
|
|
718
839
|
tools: true,
|
|
719
840
|
structuredOutput: true,
|
|
@@ -721,11 +842,15 @@ var TEXT_MODELS = [
|
|
|
721
842
|
}
|
|
722
843
|
}),
|
|
723
844
|
text("gpt-5.6-terra", "GPT-5.6 Terra", "gpt-5.6-terra", {
|
|
845
|
+
providerOptions: OPENAI_REASONING,
|
|
846
|
+
exposure: "catalog",
|
|
724
847
|
display: {
|
|
725
848
|
provider: "openai",
|
|
849
|
+
costTier: 2,
|
|
726
850
|
description: "OpenAI GPT-5.6 Terra balanced tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
|
|
727
851
|
},
|
|
728
852
|
capabilities: {
|
|
853
|
+
reasoning: true,
|
|
729
854
|
vision: true,
|
|
730
855
|
tools: true,
|
|
731
856
|
structuredOutput: true,
|
|
@@ -733,11 +858,15 @@ var TEXT_MODELS = [
|
|
|
733
858
|
}
|
|
734
859
|
}),
|
|
735
860
|
text("gpt-5.6-sol", "GPT-5.6 Sol", "gpt-5.6-sol", {
|
|
861
|
+
providerOptions: OPENAI_REASONING,
|
|
862
|
+
exposure: "catalog",
|
|
736
863
|
display: {
|
|
737
864
|
provider: "openai",
|
|
865
|
+
costTier: 3,
|
|
738
866
|
description: "OpenAI GPT-5.6 Sol flagship tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
|
|
739
867
|
},
|
|
740
868
|
capabilities: {
|
|
869
|
+
reasoning: true,
|
|
741
870
|
vision: true,
|
|
742
871
|
tools: true,
|
|
743
872
|
structuredOutput: true,
|
|
@@ -746,15 +875,19 @@ var TEXT_MODELS = [
|
|
|
746
875
|
}),
|
|
747
876
|
// Library key "claude-sonnet-4.5" maps to the SDK id "claude-sonnet-4-5".
|
|
748
877
|
text("claude-sonnet-4-5", "Claude Sonnet 4.5", "claude-sonnet-4-5", {
|
|
878
|
+
exposure: "internal",
|
|
749
879
|
aliases: ["claude-sonnet-4.5", "claude-sonnet-4-5-20250929"],
|
|
750
880
|
display: {
|
|
751
881
|
provider: "anthropic",
|
|
882
|
+
costTier: 2,
|
|
752
883
|
description: "Anthropic Claude Sonnet 4.5 (legacy) balanced model; text and image input, 200K-token context."
|
|
753
884
|
},
|
|
754
885
|
capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 2e5 }
|
|
755
886
|
}),
|
|
756
887
|
// Anthropic retired the dated 4.0 ids; callers that still send them get 4.6.
|
|
757
888
|
text("claude-sonnet-4-6", "Claude Sonnet 4.6", "claude-sonnet-4-6", {
|
|
889
|
+
providerOptions: ANTHROPIC_THINKING,
|
|
890
|
+
exposure: "catalog",
|
|
758
891
|
aliases: [
|
|
759
892
|
"claude-sonnet-4.6",
|
|
760
893
|
"claude-sonnet-4",
|
|
@@ -763,9 +896,11 @@ var TEXT_MODELS = [
|
|
|
763
896
|
],
|
|
764
897
|
display: {
|
|
765
898
|
provider: "anthropic",
|
|
899
|
+
costTier: 2,
|
|
766
900
|
description: "Anthropic Claude Sonnet 4.6 (legacy) balanced model; text and image input, 1M-token context."
|
|
767
901
|
},
|
|
768
902
|
capabilities: {
|
|
903
|
+
reasoning: true,
|
|
769
904
|
vision: true,
|
|
770
905
|
tools: true,
|
|
771
906
|
structuredOutput: true,
|
|
@@ -773,11 +908,15 @@ var TEXT_MODELS = [
|
|
|
773
908
|
}
|
|
774
909
|
}),
|
|
775
910
|
text("claude-sonnet-5", "Claude Sonnet 5", "claude-sonnet-5", {
|
|
911
|
+
providerOptions: ANTHROPIC_ADAPTIVE,
|
|
912
|
+
exposure: "catalog",
|
|
776
913
|
display: {
|
|
777
914
|
provider: "anthropic",
|
|
915
|
+
costTier: 3,
|
|
778
916
|
description: "Anthropic Claude Sonnet 5 current balanced model; text and image input, 1M-token context."
|
|
779
917
|
},
|
|
780
918
|
capabilities: {
|
|
919
|
+
reasoning: true,
|
|
781
920
|
vision: true,
|
|
782
921
|
tools: true,
|
|
783
922
|
structuredOutput: true,
|
|
@@ -785,12 +924,16 @@ var TEXT_MODELS = [
|
|
|
785
924
|
}
|
|
786
925
|
}),
|
|
787
926
|
text("claude-opus-4-8", "Claude Opus 4.8", "claude-opus-4-8", {
|
|
927
|
+
providerOptions: ANTHROPIC_ADAPTIVE,
|
|
928
|
+
exposure: "catalog",
|
|
788
929
|
aliases: ["claude-opus-4.8", "claude-opus-4", "claude-opus-4.0", "claude-opus-4-20250514"],
|
|
789
930
|
display: {
|
|
790
931
|
provider: "anthropic",
|
|
932
|
+
costTier: 3,
|
|
791
933
|
description: "Anthropic Claude Opus 4.8 (legacy) frontier model; text and image input, 1M-token context."
|
|
792
934
|
},
|
|
793
935
|
capabilities: {
|
|
936
|
+
reasoning: true,
|
|
794
937
|
vision: true,
|
|
795
938
|
tools: true,
|
|
796
939
|
structuredOutput: true,
|
|
@@ -798,17 +941,28 @@ var TEXT_MODELS = [
|
|
|
798
941
|
}
|
|
799
942
|
}),
|
|
800
943
|
text("claude-haiku-4-5", "Claude Haiku 4.5", "claude-haiku-4-5", {
|
|
944
|
+
providerOptions: ANTHROPIC_THINKING,
|
|
945
|
+
exposure: "catalog",
|
|
801
946
|
aliases: ["claude-haiku-4.5", "claude-haiku-4-5-20251001", "claude-haiku-4"],
|
|
802
947
|
display: {
|
|
803
948
|
provider: "anthropic",
|
|
949
|
+
costTier: 1,
|
|
804
950
|
description: "Anthropic Claude Haiku 4.5 fast model with near-frontier intelligence; text and image input, 200K-token context."
|
|
805
951
|
},
|
|
806
|
-
capabilities: {
|
|
952
|
+
capabilities: {
|
|
953
|
+
reasoning: true,
|
|
954
|
+
vision: true,
|
|
955
|
+
tools: true,
|
|
956
|
+
structuredOutput: true,
|
|
957
|
+
contextWindow: 2e5
|
|
958
|
+
}
|
|
807
959
|
}),
|
|
808
960
|
text("claude-opus-5", "Claude Opus 5", "claude-opus-5", {
|
|
961
|
+
exposure: "internal",
|
|
809
962
|
aliases: ["claude-opus-5.0"],
|
|
810
963
|
display: {
|
|
811
964
|
provider: "anthropic",
|
|
965
|
+
costTier: 3,
|
|
812
966
|
description: "Anthropic Claude Opus 5 current frontier model for agentic coding and enterprise work; text and image input, 1M-token context."
|
|
813
967
|
},
|
|
814
968
|
capabilities: {
|
|
@@ -819,8 +973,10 @@ var TEXT_MODELS = [
|
|
|
819
973
|
}
|
|
820
974
|
}),
|
|
821
975
|
text("claude-fable-5", "Claude Fable 5", "claude-fable-5", {
|
|
976
|
+
exposure: "internal",
|
|
822
977
|
display: {
|
|
823
978
|
provider: "anthropic",
|
|
979
|
+
costTier: 3,
|
|
824
980
|
description: "Anthropic Claude Fable 5 (legacy) model for demanding reasoning and long-horizon agentic work; text and image input, 1M-token context."
|
|
825
981
|
},
|
|
826
982
|
capabilities: {
|
|
@@ -831,8 +987,10 @@ var TEXT_MODELS = [
|
|
|
831
987
|
}
|
|
832
988
|
}),
|
|
833
989
|
text("gemini-2.5-flash", "Gemini 2.5 Flash", "gemini-2.5-flash", {
|
|
990
|
+
exposure: "internal",
|
|
834
991
|
display: {
|
|
835
992
|
provider: "google",
|
|
993
|
+
costTier: 1,
|
|
836
994
|
description: "Google Gemini 2.5 Flash low-latency multimodal model for high-volume reasoning over text, images, video, and audio; 1M-token context."
|
|
837
995
|
},
|
|
838
996
|
capabilities: {
|
|
@@ -843,8 +1001,10 @@ var TEXT_MODELS = [
|
|
|
843
1001
|
}
|
|
844
1002
|
}),
|
|
845
1003
|
text("gemini-2.5-pro", "Gemini 2.5 Pro", "gemini-2.5-pro", {
|
|
1004
|
+
exposure: "internal",
|
|
846
1005
|
display: {
|
|
847
1006
|
provider: "google",
|
|
1007
|
+
costTier: 2,
|
|
848
1008
|
description: "Google Gemini 2.5 Pro thinking model for complex reasoning over code, math, and documents; text, image, video, audio, and PDF input, 1M-token context."
|
|
849
1009
|
},
|
|
850
1010
|
capabilities: {
|
|
@@ -855,8 +1015,10 @@ var TEXT_MODELS = [
|
|
|
855
1015
|
}
|
|
856
1016
|
}),
|
|
857
1017
|
text("gemini-3.1-pro-preview", "Gemini 3.1 Pro (preview)", "gemini-3.1-pro-preview", {
|
|
1018
|
+
exposure: "catalog",
|
|
858
1019
|
display: {
|
|
859
1020
|
provider: "google",
|
|
1021
|
+
costTier: 2,
|
|
860
1022
|
description: "Google Gemini 3.1 Pro preview reasoning model for software engineering, tool use, and reliable agentic workflows; 1M-token context."
|
|
861
1023
|
},
|
|
862
1024
|
capabilities: {
|
|
@@ -867,8 +1029,10 @@ var TEXT_MODELS = [
|
|
|
867
1029
|
}
|
|
868
1030
|
}),
|
|
869
1031
|
text("gemini-3.5-flash", "Gemini 3.5 Flash", "gemini-3.5-flash", {
|
|
1032
|
+
exposure: "catalog",
|
|
870
1033
|
display: {
|
|
871
1034
|
provider: "google",
|
|
1035
|
+
costTier: 1,
|
|
872
1036
|
description: "Google Gemini 3.5 Flash high-throughput model for frontier-level agentic tasks; text, image, video, audio, and PDF input, 1M-token context."
|
|
873
1037
|
},
|
|
874
1038
|
capabilities: {
|
|
@@ -879,8 +1043,10 @@ var TEXT_MODELS = [
|
|
|
879
1043
|
}
|
|
880
1044
|
}),
|
|
881
1045
|
text("gemini-3.6-flash", "Gemini 3.6 Flash", "gemini-3.6-flash", {
|
|
1046
|
+
exposure: "catalog",
|
|
882
1047
|
display: {
|
|
883
1048
|
provider: "google",
|
|
1049
|
+
costTier: 1,
|
|
884
1050
|
description: "Google Gemini 3.6 Flash general-purpose multimodal agentic model balancing speed and capability; 1M-token context."
|
|
885
1051
|
},
|
|
886
1052
|
capabilities: {
|
|
@@ -891,8 +1057,11 @@ var TEXT_MODELS = [
|
|
|
891
1057
|
}
|
|
892
1058
|
}),
|
|
893
1059
|
text("gemini-3.7-flash", "Gemini 3.7 Flash", "gemini-3.7-flash", {
|
|
1060
|
+
exposure: "catalog",
|
|
894
1061
|
display: {
|
|
895
1062
|
provider: "google",
|
|
1063
|
+
costTier: 1,
|
|
1064
|
+
recommended: true,
|
|
896
1065
|
description: "Google Gemini 3.7 Flash natively multimodal reasoning model for coding, agentic workflows, and multi-step execution; 1M-token context."
|
|
897
1066
|
},
|
|
898
1067
|
capabilities: {
|
|
@@ -903,8 +1072,10 @@ var TEXT_MODELS = [
|
|
|
903
1072
|
}
|
|
904
1073
|
}),
|
|
905
1074
|
text("gemini-3.8-flash", "Gemini 3.8 Flash", "gemini-3.8-flash", {
|
|
1075
|
+
exposure: "internal",
|
|
906
1076
|
display: {
|
|
907
1077
|
provider: "google",
|
|
1078
|
+
costTier: 1,
|
|
908
1079
|
description: "Google Gemini 3.8 Flash frontier model for long-horizon software engineering, autonomous agents, and enterprise workflows; 1M-token context."
|
|
909
1080
|
},
|
|
910
1081
|
capabilities: {
|
|
@@ -916,12 +1087,15 @@ var TEXT_MODELS = [
|
|
|
916
1087
|
}),
|
|
917
1088
|
// Renamed to gemini-3.6-flash in vibe-shared model-migration.ts.
|
|
918
1089
|
text("gemini-3-flash-preview", "Gemini 3 Flash (preview)", "gemini-3-flash-preview", {
|
|
1090
|
+
exposure: "internal",
|
|
919
1091
|
lifecycle: "deprecated",
|
|
920
1092
|
replacedBy: "gemini-3.6-flash"
|
|
921
1093
|
}),
|
|
922
1094
|
text("gemini-3.1-flash-lite", "Gemini 3.1 Flash Lite", "gemini-3.1-flash-lite", {
|
|
1095
|
+
exposure: "internal",
|
|
923
1096
|
display: {
|
|
924
1097
|
provider: "google",
|
|
1098
|
+
costTier: 1,
|
|
925
1099
|
description: "Google Gemini 3.1 Flash-Lite low-latency multimodal model for high-volume agentic, translation, and data-extraction tasks; 1M-token context."
|
|
926
1100
|
},
|
|
927
1101
|
capabilities: {
|
|
@@ -932,8 +1106,10 @@ var TEXT_MODELS = [
|
|
|
932
1106
|
}
|
|
933
1107
|
}),
|
|
934
1108
|
text("sonar", "Sonar", "sonar", {
|
|
1109
|
+
exposure: "internal",
|
|
935
1110
|
display: {
|
|
936
1111
|
provider: "perplexity",
|
|
1112
|
+
costTier: 1,
|
|
937
1113
|
description: "Perplexity Sonar lightweight web-grounded search model returning cited answers; 128K-token context."
|
|
938
1114
|
},
|
|
939
1115
|
capabilities: {
|
|
@@ -944,8 +1120,10 @@ var TEXT_MODELS = [
|
|
|
944
1120
|
}
|
|
945
1121
|
}),
|
|
946
1122
|
text("sonar-pro", "Sonar Pro", "sonar-pro", {
|
|
1123
|
+
exposure: "internal",
|
|
947
1124
|
display: {
|
|
948
1125
|
provider: "perplexity",
|
|
1126
|
+
costTier: 2,
|
|
949
1127
|
description: "Perplexity Sonar Pro advanced web-grounded search model for complex multi-step queries; 200K-token context."
|
|
950
1128
|
},
|
|
951
1129
|
capabilities: {
|
|
@@ -956,8 +1134,10 @@ var TEXT_MODELS = [
|
|
|
956
1134
|
}
|
|
957
1135
|
}),
|
|
958
1136
|
text("sonar-reasoning-pro", "Sonar Reasoning Pro", "sonar-reasoning-pro", {
|
|
1137
|
+
exposure: "internal",
|
|
959
1138
|
display: {
|
|
960
1139
|
provider: "perplexity",
|
|
1140
|
+
costTier: 2,
|
|
961
1141
|
description: "Perplexity Sonar Reasoning Pro chain-of-thought web-grounded search model for complex problem-solving; 128K-token context."
|
|
962
1142
|
},
|
|
963
1143
|
capabilities: {
|
|
@@ -967,12 +1147,21 @@ var TEXT_MODELS = [
|
|
|
967
1147
|
contextWindow: 128e3
|
|
968
1148
|
}
|
|
969
1149
|
}),
|
|
970
|
-
|
|
1150
|
+
// DeepSeek retired V4 Flash upstream and routes the old id to V4.1 Flash at
|
|
1151
|
+
// Flash rates (https://api-docs.deepseek.com/news/news260910/); the old id
|
|
1152
|
+
// stays an alias so stored selections keep resolving.
|
|
1153
|
+
text("deepseek-flash", "DeepSeek V4.1 Flash", "deepseek-flash", {
|
|
1154
|
+
providerOptions: DEEPSEEK_THINKING,
|
|
1155
|
+
aliases: ["deepseek-v4-flash"],
|
|
1156
|
+
exposure: "catalog",
|
|
971
1157
|
display: {
|
|
972
1158
|
provider: "deepseek",
|
|
973
|
-
|
|
1159
|
+
costTier: 1,
|
|
1160
|
+
recommended: true,
|
|
1161
|
+
description: "DeepSeek V4.1 Flash thinking/non-thinking model with vision, tool calls, and JSON output; 1M-token context and up to 384K output tokens."
|
|
974
1162
|
},
|
|
975
1163
|
capabilities: {
|
|
1164
|
+
reasoning: true,
|
|
976
1165
|
vision: true,
|
|
977
1166
|
tools: true,
|
|
978
1167
|
structuredOutput: true,
|
|
@@ -980,11 +1169,15 @@ var TEXT_MODELS = [
|
|
|
980
1169
|
}
|
|
981
1170
|
}),
|
|
982
1171
|
text("deepseek-v4-pro", "DeepSeek V4 Pro", "deepseek-v4-pro", {
|
|
1172
|
+
providerOptions: DEEPSEEK_THINKING,
|
|
1173
|
+
exposure: "catalog",
|
|
983
1174
|
display: {
|
|
984
1175
|
provider: "deepseek",
|
|
1176
|
+
costTier: 2,
|
|
985
1177
|
description: "DeepSeek V4 Pro thinking/non-thinking text model with tool calls and JSON output (no vision); 1M-token context and up to 384K output tokens."
|
|
986
1178
|
},
|
|
987
1179
|
capabilities: {
|
|
1180
|
+
reasoning: true,
|
|
988
1181
|
vision: false,
|
|
989
1182
|
tools: true,
|
|
990
1183
|
structuredOutput: true,
|
|
@@ -993,8 +1186,10 @@ var TEXT_MODELS = [
|
|
|
993
1186
|
}),
|
|
994
1187
|
// 1M-token context: https://docs.x.ai/docs/models/grok-4.3
|
|
995
1188
|
text("grok-4.3", "Grok 4.3", "grok-4.3", {
|
|
1189
|
+
exposure: "catalog",
|
|
996
1190
|
display: {
|
|
997
1191
|
provider: "xai",
|
|
1192
|
+
costTier: 2,
|
|
998
1193
|
description: "xAI Grok 4.3 reasoning model with tool calling and structured outputs; text and image input, 1M-token context."
|
|
999
1194
|
},
|
|
1000
1195
|
capabilities: {
|
|
@@ -1006,18 +1201,25 @@ var TEXT_MODELS = [
|
|
|
1006
1201
|
}),
|
|
1007
1202
|
// Moonshot retired kimi-k2.5 on 2026-08-31 and no longer publishes its specs.
|
|
1008
1203
|
text("kimi-k2.5", "Kimi K2.5", "kimi-k2.5", {
|
|
1204
|
+
defaults: { temperature: 1 },
|
|
1205
|
+
exposure: "catalog",
|
|
1009
1206
|
display: {
|
|
1010
1207
|
provider: "moonshot",
|
|
1208
|
+
costTier: 2,
|
|
1011
1209
|
description: "Moonshot Kimi K2.5; the provider retired the model on 2026-08-31 and calls now return a model-not-found error."
|
|
1012
1210
|
},
|
|
1013
1211
|
capabilities: {}
|
|
1014
1212
|
}),
|
|
1015
1213
|
text("kimi-k3", "Kimi K3", "kimi-k3", {
|
|
1214
|
+
defaults: { temperature: 1 },
|
|
1215
|
+
exposure: "catalog",
|
|
1016
1216
|
display: {
|
|
1017
1217
|
provider: "moonshot",
|
|
1218
|
+
costTier: 2,
|
|
1018
1219
|
description: "Moonshot Kimi K3 flagship model with native visual understanding and always-on thinking; text, image, and video input, 1M-token context."
|
|
1019
1220
|
},
|
|
1020
1221
|
capabilities: {
|
|
1222
|
+
reasoning: true,
|
|
1021
1223
|
vision: true,
|
|
1022
1224
|
tools: true,
|
|
1023
1225
|
structuredOutput: true,
|
|
@@ -1027,9 +1229,11 @@ var TEXT_MODELS = [
|
|
|
1027
1229
|
// Cowork calls the provider "MiniMax-M3"; the pricing key is lowercase.
|
|
1028
1230
|
// 1M-token context: https://platform.minimax.io/docs/api-reference/text-openai-api
|
|
1029
1231
|
text("minimax-m3", "MiniMax M3", "MiniMax-M3", {
|
|
1232
|
+
exposure: "catalog",
|
|
1030
1233
|
aliases: ["MiniMax-M3"],
|
|
1031
1234
|
display: {
|
|
1032
1235
|
provider: "minimax",
|
|
1236
|
+
costTier: 2,
|
|
1033
1237
|
description: "MiniMax M3 frontier multimodal model for agentic reasoning, tool use, and coding; text, image, and video input, 1M-token context."
|
|
1034
1238
|
},
|
|
1035
1239
|
capabilities: { vision: true, tools: true, contextWindow: 1e6 }
|
|
@@ -1061,6 +1265,7 @@ var VIDEO_MODELS = [
|
|
|
1061
1265
|
adapter: "google-genai",
|
|
1062
1266
|
providerModelId: "veo-3.1-generate-preview",
|
|
1063
1267
|
lifecycle: "active",
|
|
1268
|
+
exposure: "catalog",
|
|
1064
1269
|
constraints: {
|
|
1065
1270
|
aspectRatios: [...OMNI_RATIOS],
|
|
1066
1271
|
resolutions: ["720p", "1080p", "4k"],
|
|
@@ -1069,7 +1274,7 @@ var VIDEO_MODELS = [
|
|
|
1069
1274
|
supports: ["lastFrame"]
|
|
1070
1275
|
},
|
|
1071
1276
|
defaults: { durationSeconds: 8, resolution: "720p", aspectRatio: "16:9" },
|
|
1072
|
-
usage: { ...VIDEO_USAGE },
|
|
1277
|
+
usage: { ...VIDEO_USAGE, slug: "veo" },
|
|
1073
1278
|
pricingKind: "video_per_second",
|
|
1074
1279
|
display: {
|
|
1075
1280
|
provider: "google",
|
|
@@ -1090,6 +1295,7 @@ var VIDEO_MODELS = [
|
|
|
1090
1295
|
adapter: "google-genai",
|
|
1091
1296
|
providerModelId: "veo-3.1-fast-generate-preview",
|
|
1092
1297
|
lifecycle: "active",
|
|
1298
|
+
exposure: "internal",
|
|
1093
1299
|
constraints: {
|
|
1094
1300
|
aspectRatios: [...OMNI_RATIOS],
|
|
1095
1301
|
resolutions: ["720p", "1080p", "4k"],
|
|
@@ -1118,9 +1324,10 @@ var VIDEO_MODELS = [
|
|
|
1118
1324
|
adapter: "google-genai",
|
|
1119
1325
|
providerModelId: "veo-3.1-lite-generate-preview",
|
|
1120
1326
|
lifecycle: "active",
|
|
1327
|
+
exposure: "internal",
|
|
1121
1328
|
constraints: {
|
|
1122
1329
|
aspectRatios: [...OMNI_RATIOS],
|
|
1123
|
-
resolutions: ["720p", "1080p"
|
|
1330
|
+
resolutions: ["720p", "1080p"],
|
|
1124
1331
|
durations: [4, 8],
|
|
1125
1332
|
references: { images: 3 },
|
|
1126
1333
|
supports: ["lastFrame"]
|
|
@@ -1148,6 +1355,7 @@ var VIDEO_MODELS = [
|
|
|
1148
1355
|
adapter: "google-genai",
|
|
1149
1356
|
providerModelId: "gemini-omni-flash-preview",
|
|
1150
1357
|
lifecycle: "active",
|
|
1358
|
+
exposure: "catalog",
|
|
1151
1359
|
constraints: {
|
|
1152
1360
|
// 1.0 rejects `resolution`; it renders 720p. No defaults: the adapter
|
|
1153
1361
|
// sends ratio and duration only when the caller set them, so a
|
|
@@ -1158,7 +1366,7 @@ var VIDEO_MODELS = [
|
|
|
1158
1366
|
supports: []
|
|
1159
1367
|
},
|
|
1160
1368
|
defaults: {},
|
|
1161
|
-
usage: { ...VIDEO_USAGE },
|
|
1369
|
+
usage: { ...VIDEO_USAGE, slug: "gemini_omni" },
|
|
1162
1370
|
pricingKind: "video_per_second",
|
|
1163
1371
|
display: {
|
|
1164
1372
|
provider: "google",
|
|
@@ -1175,6 +1383,7 @@ var VIDEO_MODELS = [
|
|
|
1175
1383
|
adapter: "google-genai",
|
|
1176
1384
|
providerModelId: "gemini-omni-1.1-flash",
|
|
1177
1385
|
lifecycle: "active",
|
|
1386
|
+
exposure: "catalog",
|
|
1178
1387
|
constraints: {
|
|
1179
1388
|
aspectRatios: [...OMNI_RATIOS],
|
|
1180
1389
|
resolutions: ["360p", "720p", "1080p", "4k"],
|
|
@@ -1200,10 +1409,12 @@ var VIDEO_MODELS = [
|
|
|
1200
1409
|
adapter: "ark",
|
|
1201
1410
|
providerModelId: "dreamina-seedance-2-0-260128",
|
|
1202
1411
|
lifecycle: "active",
|
|
1412
|
+
exposure: "catalog",
|
|
1203
1413
|
constraints: {
|
|
1204
1414
|
aspectRatios: [...SEEDANCE_RATIOS],
|
|
1205
1415
|
resolutions: ["480p", "720p", "1080p", "4k"],
|
|
1206
1416
|
durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
1417
|
+
durationPresets: [4, 6, 8, 10, 12, 15],
|
|
1207
1418
|
references: { images: 9, videos: 3, audios: 3, audioOnly: false },
|
|
1208
1419
|
ratioIgnoredWith: ["firstFrame"],
|
|
1209
1420
|
supports: ["generateAudio", "seed", "lastFrame", "watermark"]
|
|
@@ -1214,7 +1425,7 @@ var VIDEO_MODELS = [
|
|
|
1214
1425
|
aspectRatio: "16:9",
|
|
1215
1426
|
generateAudio: true
|
|
1216
1427
|
},
|
|
1217
|
-
usage: { ...VIDEO_USAGE },
|
|
1428
|
+
usage: { ...VIDEO_USAGE, slug: "seedance2", providerLabel: "byteplus" },
|
|
1218
1429
|
pricingKind: "video_per_second",
|
|
1219
1430
|
display: {
|
|
1220
1431
|
provider: "bytedance",
|
|
@@ -1231,6 +1442,7 @@ var VIDEO_MODELS = [
|
|
|
1231
1442
|
adapter: "ark",
|
|
1232
1443
|
providerModelId: "dreamina-seedance-2-0-fast-260128",
|
|
1233
1444
|
lifecycle: "active",
|
|
1445
|
+
exposure: "catalog",
|
|
1234
1446
|
constraints: {
|
|
1235
1447
|
aspectRatios: [...SEEDANCE_RATIOS],
|
|
1236
1448
|
resolutions: ["480p", "720p"],
|
|
@@ -1262,6 +1474,7 @@ var VIDEO_MODELS = [
|
|
|
1262
1474
|
adapter: "ark",
|
|
1263
1475
|
providerModelId: "dreamina-seedance-2-5-260628",
|
|
1264
1476
|
lifecycle: "active",
|
|
1477
|
+
exposure: "catalog",
|
|
1265
1478
|
constraints: {
|
|
1266
1479
|
aspectRatios: [...SEEDANCE_RATIOS],
|
|
1267
1480
|
resolutions: ["480p", "720p", "1080p"],
|
|
@@ -1293,10 +1506,12 @@ var VIDEO_MODELS = [
|
|
|
1293
1506
|
adapter: "xai-video",
|
|
1294
1507
|
providerModelId: "grok-imagine-video",
|
|
1295
1508
|
lifecycle: "active",
|
|
1509
|
+
exposure: "catalog",
|
|
1296
1510
|
constraints: {
|
|
1297
1511
|
aspectRatios: [...GROK_RATIOS],
|
|
1298
1512
|
resolutions: ["480p", "720p"],
|
|
1299
1513
|
durations: { min: 1, max: 15 },
|
|
1514
|
+
durationPresets: [4, 6, 8, 10],
|
|
1300
1515
|
references: { images: 7 },
|
|
1301
1516
|
supports: []
|
|
1302
1517
|
},
|
|
@@ -1319,6 +1534,7 @@ var VIDEO_MODELS = [
|
|
|
1319
1534
|
adapter: "higgsfield",
|
|
1320
1535
|
providerModelId: "kling-video/v2.5-turbo/pro/image-to-video",
|
|
1321
1536
|
lifecycle: "active",
|
|
1537
|
+
exposure: "catalog",
|
|
1322
1538
|
constraints: {
|
|
1323
1539
|
aspectRatios: [...KLING_RATIOS],
|
|
1324
1540
|
durations: [5, 10],
|
|
@@ -1331,7 +1547,7 @@ var VIDEO_MODELS = [
|
|
|
1331
1547
|
cfgScale: 0.5,
|
|
1332
1548
|
negativePrompt: NEGATIVE_PROMPT
|
|
1333
1549
|
},
|
|
1334
|
-
usage: { ...VIDEO_USAGE },
|
|
1550
|
+
usage: { ...VIDEO_USAGE, slug: "grok" },
|
|
1335
1551
|
pricingKind: "video_per_second",
|
|
1336
1552
|
display: {
|
|
1337
1553
|
provider: "kuaishou",
|
|
@@ -1348,6 +1564,7 @@ var VIDEO_MODELS = [
|
|
|
1348
1564
|
adapter: "higgsfield",
|
|
1349
1565
|
providerModelId: "kling-video/v3.0/pro/image-to-video",
|
|
1350
1566
|
lifecycle: "active",
|
|
1567
|
+
exposure: "catalog",
|
|
1351
1568
|
constraints: {
|
|
1352
1569
|
aspectRatios: [...KLING_RATIOS],
|
|
1353
1570
|
durations: { min: 3, max: 15 },
|
|
@@ -1377,6 +1594,7 @@ var VIDEO_MODELS = [
|
|
|
1377
1594
|
adapter: "replicate",
|
|
1378
1595
|
providerModelId: "kwaivgi/kling-v3-omni-video",
|
|
1379
1596
|
lifecycle: "active",
|
|
1597
|
+
exposure: "catalog",
|
|
1380
1598
|
constraints: {
|
|
1381
1599
|
aspectRatios: [
|
|
1382
1600
|
"1:1",
|
|
@@ -1412,6 +1630,7 @@ var VIDEO_MODELS = [
|
|
|
1412
1630
|
adapter: "fal",
|
|
1413
1631
|
providerModelId: "minimax/h3",
|
|
1414
1632
|
lifecycle: "active",
|
|
1633
|
+
exposure: "catalog",
|
|
1415
1634
|
constraints: {
|
|
1416
1635
|
aspectRatios: [...H3_RATIOS],
|
|
1417
1636
|
resolutions: ["480p", "768p", "2k", "4k"],
|
|
@@ -1440,6 +1659,7 @@ var VIDEO_MODELS = [
|
|
|
1440
1659
|
adapter: "fal",
|
|
1441
1660
|
providerModelId: "minimax/h3-max",
|
|
1442
1661
|
lifecycle: "active",
|
|
1662
|
+
exposure: "catalog",
|
|
1443
1663
|
constraints: {
|
|
1444
1664
|
aspectRatios: [...H3_RATIOS],
|
|
1445
1665
|
resolutions: ["480p", "768p"],
|
|
@@ -1468,6 +1688,7 @@ var VIDEO_MODELS = [
|
|
|
1468
1688
|
adapter: "fal",
|
|
1469
1689
|
providerModelId: "minimax/h3/reference-to-video",
|
|
1470
1690
|
lifecycle: "active",
|
|
1691
|
+
exposure: "catalog",
|
|
1471
1692
|
constraints: {
|
|
1472
1693
|
aspectRatios: [...H3_REFERENCE_RATIOS],
|
|
1473
1694
|
resolutions: ["480p", "768p", "2k", "4k"],
|
|
@@ -1497,6 +1718,7 @@ var VIDEO_MODELS = [
|
|
|
1497
1718
|
adapter: "fal",
|
|
1498
1719
|
providerModelId: "minimax/h3-max/reference-to-video",
|
|
1499
1720
|
lifecycle: "active",
|
|
1721
|
+
exposure: "catalog",
|
|
1500
1722
|
constraints: {
|
|
1501
1723
|
aspectRatios: [...H3_REFERENCE_RATIOS],
|
|
1502
1724
|
resolutions: ["480p", "768p"],
|
|
@@ -1527,6 +1749,7 @@ var VIDEO_MODELS = [
|
|
|
1527
1749
|
adapter: "fal",
|
|
1528
1750
|
providerModelId: "fal-ai/kling-video/o1/video-to-video/reference",
|
|
1529
1751
|
lifecycle: "active",
|
|
1752
|
+
exposure: "internal",
|
|
1530
1753
|
constraints: {
|
|
1531
1754
|
aspectRatios: [...KLING_RATIOS],
|
|
1532
1755
|
durations: { min: 3, max: 10 },
|
|
@@ -1550,6 +1773,7 @@ var VIDEO_MODELS = [
|
|
|
1550
1773
|
adapter: "replicate",
|
|
1551
1774
|
providerModelId: "minimax/hailuo-02",
|
|
1552
1775
|
lifecycle: "active",
|
|
1776
|
+
exposure: "internal",
|
|
1553
1777
|
constraints: {
|
|
1554
1778
|
resolutions: ["768p"],
|
|
1555
1779
|
durations: [6, 10],
|
|
@@ -1572,6 +1796,7 @@ var VIDEO_MODELS = [
|
|
|
1572
1796
|
adapter: "higgsfield",
|
|
1573
1797
|
providerModelId: "dop-preview",
|
|
1574
1798
|
lifecycle: "active",
|
|
1799
|
+
exposure: "internal",
|
|
1575
1800
|
constraints: {
|
|
1576
1801
|
requires: ["firstFrame"],
|
|
1577
1802
|
supports: ["seed", "lastFrame"]
|
|
@@ -1773,6 +1998,40 @@ function resolveVideoOptions(model, request, onUnsupported = "error") {
|
|
|
1773
1998
|
model: model.id
|
|
1774
1999
|
});
|
|
1775
2000
|
}
|
|
2001
|
+
if (merged.sourceVideo !== void 0 && !model.capabilities?.acceptsSourceVideo) {
|
|
2002
|
+
if (onUnsupported === "error") {
|
|
2003
|
+
throw new ModelKitError({
|
|
2004
|
+
code: "unsupported_option",
|
|
2005
|
+
message: `${model.id} does not take a source video`,
|
|
2006
|
+
model: model.id
|
|
2007
|
+
});
|
|
2008
|
+
}
|
|
2009
|
+
warnings.push({
|
|
2010
|
+
code: "option_ignored",
|
|
2011
|
+
field: "sourceVideo",
|
|
2012
|
+
message: `${model.id} does not take a source video; dropped`
|
|
2013
|
+
});
|
|
2014
|
+
delete merged.sourceVideo;
|
|
2015
|
+
}
|
|
2016
|
+
const hasFrames = merged.firstFrame !== void 0 || merged.lastFrame !== void 0;
|
|
2017
|
+
const hasRefs = compact(merged.referenceImages).length + compact(merged.referenceVideos).length + compact(merged.referenceAudios).length > 0;
|
|
2018
|
+
if (hasFrames && hasRefs && model.capabilities?.framesExcludeReferences) {
|
|
2019
|
+
if (onUnsupported === "error") {
|
|
2020
|
+
throw new ModelKitError({
|
|
2021
|
+
code: "unsupported_option",
|
|
2022
|
+
message: `${model.id} takes frames or references, not both`,
|
|
2023
|
+
model: model.id
|
|
2024
|
+
});
|
|
2025
|
+
}
|
|
2026
|
+
warnings.push({
|
|
2027
|
+
code: "option_ignored",
|
|
2028
|
+
field: "referenceImages",
|
|
2029
|
+
message: `${model.id} takes frames or references, not both; references dropped`
|
|
2030
|
+
});
|
|
2031
|
+
delete merged.referenceImages;
|
|
2032
|
+
delete merged.referenceVideos;
|
|
2033
|
+
delete merged.referenceAudios;
|
|
2034
|
+
}
|
|
1776
2035
|
for (const input of c.ratioIgnoredWith ?? []) {
|
|
1777
2036
|
if (merged[input] !== void 0 && merged.aspectRatio !== void 0) {
|
|
1778
2037
|
if (request.aspectRatio !== void 0) {
|
|
@@ -2169,6 +2428,7 @@ function passthroughTextModel(model) {
|
|
|
2169
2428
|
adapter: "ai-sdk-text",
|
|
2170
2429
|
providerModelId: model.modelId,
|
|
2171
2430
|
lifecycle: "active",
|
|
2431
|
+
exposure: "internal",
|
|
2172
2432
|
constraints: {},
|
|
2173
2433
|
defaults: {},
|
|
2174
2434
|
usage: { unit: "tokens", modality: "TEXT" },
|