@namzu/zen 1.0.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.
package/dist/models.js ADDED
@@ -0,0 +1,1170 @@
1
+ /*
2
+ * Snapshot: 2026-09-07. Routes and prices come from Zen's own docs:
3
+ * https://github.com/anomalyco/opencode/blob/ecbc6ccac85b3e8087b6445e584318419b9e2b34/packages/web/src/content/docs/zen.mdx
4
+ * https://github.com/anomalyco/opencode/blob/ecbc6ccac85b3e8087b6445e584318419b9e2b34/packages/web/src/content/docs/go.mdx
5
+ * Limits, tool support, modalities and effort options come from the matching
6
+ * provider entries (including their base_model inheritance) in models.dev:
7
+ * https://github.com/anomalyco/models.dev/tree/1a84fdd72ad6c7f507af96aafbcc59a2f818f9fd/providers/opencode
8
+ * https://github.com/anomalyco/models.dev/tree/1a84fdd72ad6c7f507af96aafbcc59a2f818f9fd/providers/opencode-go
9
+ *
10
+ * Prices are estimates, not invoices: context tiers, cache, Go peak/off-peak
11
+ * rates, subscription allowances and promotions can change the effective cost.
12
+ * Go DeepSeek entries use off-peak prices. GPT 5.6 Sol includes the documented
13
+ * 50% promotion through 2026-09-18. PDF input is the SDK's document modality;
14
+ * audio/video are omitted because the SDK does not expose those input kinds.
15
+ *
16
+ * Promotional free models with documented routes and complete metadata are
17
+ * included at their advertised zero price; the service enforces access limits.
18
+ * Anonymous admission is explicit rather than inferred from price. OpenCode's
19
+ * own loader uses the public sentinel when credentials are absent:
20
+ * https://github.com/anomalyco/opencode/blob/16747470f976aca3d362ad730bcd3fe82ecc2c9a/packages/opencode/src/provider/provider.ts#L185
21
+ * Deprecated models are omitted. Unknown IDs have no inferred protocol or limits.
22
+ * MiniMax and Qwen demonstrate why routes must be recorded per service/model.
23
+ */
24
+ function freezeModels(models) {
25
+ for (const model of models) {
26
+ if (model.inputModalities)
27
+ Object.freeze(model.inputModalities);
28
+ if (model.effortLevels)
29
+ Object.freeze(model.effortLevels);
30
+ Object.freeze(model);
31
+ }
32
+ return Object.freeze(models);
33
+ }
34
+ const ZEN_MODELS = freezeModels([
35
+ {
36
+ id: 'gpt-6-astra',
37
+ name: 'GPT 6 Astra',
38
+ protocol: 'responses',
39
+ contextWindow: 1050000,
40
+ maxOutputTokens: 128000,
41
+ inputModalities: ['text', 'image', 'document'],
42
+ inputPrice: 10.0,
43
+ outputPrice: 50.0,
44
+ supportsToolUse: true,
45
+ supportsStreaming: true,
46
+ effortLevels: ['low', 'medium', 'high', 'xhigh', 'max'],
47
+ },
48
+ {
49
+ id: 'gpt-5.6-sol',
50
+ name: 'GPT 5.6 Sol',
51
+ protocol: 'responses',
52
+ contextWindow: 1050000,
53
+ maxOutputTokens: 128000,
54
+ inputModalities: ['text', 'image', 'document'],
55
+ inputPrice: 2.0,
56
+ outputPrice: 10.0,
57
+ supportsToolUse: true,
58
+ supportsStreaming: true,
59
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh', 'max'],
60
+ },
61
+ {
62
+ id: 'gpt-5.6-terra',
63
+ name: 'GPT 5.6 Terra',
64
+ protocol: 'responses',
65
+ contextWindow: 1050000,
66
+ maxOutputTokens: 128000,
67
+ inputModalities: ['text', 'image', 'document'],
68
+ inputPrice: 2.0,
69
+ outputPrice: 12.0,
70
+ supportsToolUse: true,
71
+ supportsStreaming: true,
72
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh', 'max'],
73
+ },
74
+ {
75
+ id: 'gpt-5.6-luna',
76
+ name: 'GPT 5.6 Luna',
77
+ protocol: 'responses',
78
+ contextWindow: 1050000,
79
+ maxOutputTokens: 128000,
80
+ inputModalities: ['text', 'image', 'document'],
81
+ inputPrice: 0.2,
82
+ outputPrice: 1.2,
83
+ supportsToolUse: true,
84
+ supportsStreaming: true,
85
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh', 'max'],
86
+ },
87
+ {
88
+ id: 'gpt-5.5',
89
+ name: 'GPT 5.5',
90
+ protocol: 'responses',
91
+ contextWindow: 1050000,
92
+ maxOutputTokens: 128000,
93
+ inputModalities: ['text', 'image', 'document'],
94
+ inputPrice: 5.0,
95
+ outputPrice: 30.0,
96
+ supportsToolUse: true,
97
+ supportsStreaming: true,
98
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh'],
99
+ },
100
+ {
101
+ id: 'gpt-5.5-pro',
102
+ name: 'GPT 5.5 Pro',
103
+ protocol: 'responses',
104
+ contextWindow: 1050000,
105
+ maxOutputTokens: 128000,
106
+ inputModalities: ['text', 'image', 'document'],
107
+ inputPrice: 30.0,
108
+ outputPrice: 180.0,
109
+ supportsToolUse: true,
110
+ supportsStreaming: true,
111
+ effortLevels: ['medium', 'high', 'xhigh'],
112
+ },
113
+ {
114
+ id: 'gpt-5.4',
115
+ name: 'GPT 5.4',
116
+ protocol: 'responses',
117
+ contextWindow: 1050000,
118
+ maxOutputTokens: 128000,
119
+ inputModalities: ['text', 'image', 'document'],
120
+ inputPrice: 2.5,
121
+ outputPrice: 15.0,
122
+ supportsToolUse: true,
123
+ supportsStreaming: true,
124
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh'],
125
+ },
126
+ {
127
+ id: 'gpt-5.4-pro',
128
+ name: 'GPT 5.4 Pro',
129
+ protocol: 'responses',
130
+ contextWindow: 1050000,
131
+ maxOutputTokens: 128000,
132
+ inputModalities: ['text', 'image', 'document'],
133
+ inputPrice: 30.0,
134
+ outputPrice: 180.0,
135
+ supportsToolUse: true,
136
+ supportsStreaming: true,
137
+ effortLevels: ['medium', 'high', 'xhigh'],
138
+ },
139
+ {
140
+ id: 'gpt-5.4-mini',
141
+ name: 'GPT 5.4 Mini',
142
+ protocol: 'responses',
143
+ contextWindow: 400000,
144
+ maxOutputTokens: 128000,
145
+ inputModalities: ['text', 'image', 'document'],
146
+ inputPrice: 0.75,
147
+ outputPrice: 4.5,
148
+ supportsToolUse: true,
149
+ supportsStreaming: true,
150
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh'],
151
+ },
152
+ {
153
+ id: 'gpt-5.4-nano',
154
+ name: 'GPT 5.4 Nano',
155
+ protocol: 'responses',
156
+ contextWindow: 400000,
157
+ maxOutputTokens: 128000,
158
+ inputModalities: ['text', 'image', 'document'],
159
+ inputPrice: 0.2,
160
+ outputPrice: 1.25,
161
+ supportsToolUse: true,
162
+ supportsStreaming: true,
163
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh'],
164
+ },
165
+ {
166
+ id: 'gpt-5.3-codex',
167
+ name: 'GPT 5.3 Codex',
168
+ protocol: 'responses',
169
+ contextWindow: 400000,
170
+ maxOutputTokens: 128000,
171
+ inputModalities: ['text', 'image', 'document'],
172
+ inputPrice: 1.75,
173
+ outputPrice: 14.0,
174
+ supportsToolUse: true,
175
+ supportsStreaming: true,
176
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh'],
177
+ },
178
+ {
179
+ id: 'gpt-5.3-codex-spark',
180
+ name: 'GPT 5.3 Codex Spark',
181
+ protocol: 'responses',
182
+ contextWindow: 128000,
183
+ maxOutputTokens: 128000,
184
+ inputModalities: ['text'],
185
+ inputPrice: 1.75,
186
+ outputPrice: 14.0,
187
+ supportsToolUse: true,
188
+ supportsStreaming: true,
189
+ effortLevels: ['low', 'medium', 'high', 'xhigh'],
190
+ },
191
+ {
192
+ id: 'gpt-5.2',
193
+ name: 'GPT 5.2',
194
+ protocol: 'responses',
195
+ contextWindow: 400000,
196
+ maxOutputTokens: 128000,
197
+ inputModalities: ['text', 'image'],
198
+ inputPrice: 1.75,
199
+ outputPrice: 14.0,
200
+ supportsToolUse: true,
201
+ supportsStreaming: true,
202
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh'],
203
+ },
204
+ {
205
+ id: 'gpt-5.1',
206
+ name: 'GPT 5.1',
207
+ protocol: 'responses',
208
+ contextWindow: 400000,
209
+ maxOutputTokens: 128000,
210
+ inputModalities: ['text', 'image'],
211
+ inputPrice: 1.07,
212
+ outputPrice: 8.5,
213
+ supportsToolUse: true,
214
+ supportsStreaming: true,
215
+ effortLevels: ['none', 'low', 'medium', 'high'],
216
+ },
217
+ {
218
+ id: 'gpt-5',
219
+ name: 'GPT 5',
220
+ protocol: 'responses',
221
+ contextWindow: 400000,
222
+ maxOutputTokens: 128000,
223
+ inputModalities: ['text', 'image'],
224
+ inputPrice: 1.07,
225
+ outputPrice: 8.5,
226
+ supportsToolUse: true,
227
+ supportsStreaming: true,
228
+ effortLevels: ['minimal', 'low', 'medium', 'high'],
229
+ },
230
+ {
231
+ id: 'gpt-5-nano',
232
+ name: 'GPT 5 Nano',
233
+ protocol: 'responses',
234
+ contextWindow: 400000,
235
+ maxOutputTokens: 128000,
236
+ inputModalities: ['text', 'image'],
237
+ inputPrice: 0.05,
238
+ outputPrice: 0.4,
239
+ supportsToolUse: true,
240
+ supportsStreaming: true,
241
+ effortLevels: ['minimal', 'low', 'medium', 'high'],
242
+ },
243
+ {
244
+ id: 'claude-fable-5-1',
245
+ name: 'Claude Fable 5.1',
246
+ protocol: 'messages',
247
+ contextWindow: 1000000,
248
+ maxOutputTokens: 128000,
249
+ inputModalities: ['text', 'image', 'document'],
250
+ inputPrice: 10.0,
251
+ outputPrice: 50.0,
252
+ supportsToolUse: true,
253
+ supportsStreaming: true,
254
+ effortLevels: ['low', 'medium', 'high', 'xhigh', 'max'],
255
+ },
256
+ {
257
+ id: 'claude-fable-5',
258
+ name: 'Claude Fable 5',
259
+ protocol: 'messages',
260
+ contextWindow: 1000000,
261
+ maxOutputTokens: 128000,
262
+ inputModalities: ['text', 'image', 'document'],
263
+ inputPrice: 10.0,
264
+ outputPrice: 50.0,
265
+ supportsToolUse: true,
266
+ supportsStreaming: true,
267
+ effortLevels: ['low', 'medium', 'high', 'xhigh', 'max'],
268
+ },
269
+ {
270
+ id: 'claude-opus-5',
271
+ name: 'Claude Opus 5',
272
+ protocol: 'messages',
273
+ contextWindow: 1000000,
274
+ maxOutputTokens: 128000,
275
+ inputModalities: ['text', 'image', 'document'],
276
+ inputPrice: 5.0,
277
+ outputPrice: 25.0,
278
+ supportsToolUse: true,
279
+ supportsStreaming: true,
280
+ effortLevels: ['low', 'medium', 'high', 'xhigh', 'max'],
281
+ },
282
+ {
283
+ id: 'claude-opus-4-8',
284
+ name: 'Claude Opus 4.8',
285
+ protocol: 'messages',
286
+ contextWindow: 1000000,
287
+ maxOutputTokens: 128000,
288
+ inputModalities: ['text', 'image', 'document'],
289
+ inputPrice: 5.0,
290
+ outputPrice: 25.0,
291
+ supportsToolUse: true,
292
+ supportsStreaming: true,
293
+ effortLevels: ['low', 'medium', 'high', 'xhigh', 'max'],
294
+ },
295
+ {
296
+ id: 'claude-opus-4-7',
297
+ name: 'Claude Opus 4.7',
298
+ protocol: 'messages',
299
+ contextWindow: 1000000,
300
+ maxOutputTokens: 128000,
301
+ inputModalities: ['text', 'image', 'document'],
302
+ inputPrice: 5.0,
303
+ outputPrice: 25.0,
304
+ supportsToolUse: true,
305
+ supportsStreaming: true,
306
+ effortLevels: ['low', 'medium', 'high', 'xhigh', 'max'],
307
+ },
308
+ {
309
+ id: 'claude-opus-4-6',
310
+ name: 'Claude Opus 4.6',
311
+ protocol: 'messages',
312
+ contextWindow: 1000000,
313
+ maxOutputTokens: 128000,
314
+ inputModalities: ['text', 'image', 'document'],
315
+ inputPrice: 5.0,
316
+ outputPrice: 25.0,
317
+ supportsToolUse: true,
318
+ supportsStreaming: true,
319
+ effortLevels: ['low', 'medium', 'high', 'max'],
320
+ },
321
+ {
322
+ id: 'claude-opus-4-5',
323
+ name: 'Claude Opus 4.5',
324
+ protocol: 'messages',
325
+ contextWindow: 200000,
326
+ maxOutputTokens: 64000,
327
+ inputModalities: ['text', 'image', 'document'],
328
+ inputPrice: 5.0,
329
+ outputPrice: 25.0,
330
+ supportsToolUse: true,
331
+ supportsStreaming: true,
332
+ effortLevels: ['low', 'medium', 'high'],
333
+ },
334
+ {
335
+ id: 'claude-sonnet-5',
336
+ name: 'Claude Sonnet 5',
337
+ protocol: 'messages',
338
+ contextWindow: 1000000,
339
+ maxOutputTokens: 128000,
340
+ inputModalities: ['text', 'image', 'document'],
341
+ inputPrice: 2.0,
342
+ outputPrice: 10.0,
343
+ supportsToolUse: true,
344
+ supportsStreaming: true,
345
+ effortLevels: ['low', 'medium', 'high', 'xhigh', 'max'],
346
+ },
347
+ {
348
+ id: 'claude-sonnet-4-6',
349
+ name: 'Claude Sonnet 4.6',
350
+ protocol: 'messages',
351
+ contextWindow: 1000000,
352
+ maxOutputTokens: 64000,
353
+ inputModalities: ['text', 'image', 'document'],
354
+ inputPrice: 3.0,
355
+ outputPrice: 15.0,
356
+ supportsToolUse: true,
357
+ supportsStreaming: true,
358
+ effortLevels: ['low', 'medium', 'high', 'max'],
359
+ },
360
+ {
361
+ id: 'claude-sonnet-4-5',
362
+ name: 'Claude Sonnet 4.5',
363
+ protocol: 'messages',
364
+ contextWindow: 1000000,
365
+ maxOutputTokens: 64000,
366
+ inputModalities: ['text', 'image', 'document'],
367
+ inputPrice: 3.0,
368
+ outputPrice: 15.0,
369
+ supportsToolUse: true,
370
+ supportsStreaming: true,
371
+ effortLevels: [],
372
+ },
373
+ {
374
+ id: 'claude-haiku-4-5',
375
+ name: 'Claude Haiku 4.5',
376
+ protocol: 'messages',
377
+ contextWindow: 200000,
378
+ maxOutputTokens: 64000,
379
+ inputModalities: ['text', 'image', 'document'],
380
+ inputPrice: 1.0,
381
+ outputPrice: 5.0,
382
+ supportsToolUse: true,
383
+ supportsStreaming: true,
384
+ effortLevels: [],
385
+ },
386
+ {
387
+ id: 'gemini-3.8-flash',
388
+ name: 'Gemini 3.8 Flash',
389
+ protocol: 'google',
390
+ contextWindow: 1048576,
391
+ maxOutputTokens: 65536,
392
+ inputModalities: ['text', 'image', 'document'],
393
+ inputPrice: 1.5,
394
+ outputPrice: 7.5,
395
+ supportsToolUse: true,
396
+ supportsStreaming: true,
397
+ effortLevels: ['low', 'medium', 'high'],
398
+ },
399
+ {
400
+ id: 'gemini-3.7-flash',
401
+ name: 'Gemini 3.7 Flash',
402
+ protocol: 'google',
403
+ contextWindow: 1048576,
404
+ maxOutputTokens: 65536,
405
+ inputModalities: ['text', 'image', 'document'],
406
+ inputPrice: 1.5,
407
+ outputPrice: 7.5,
408
+ supportsToolUse: true,
409
+ supportsStreaming: true,
410
+ effortLevels: ['low', 'medium', 'high'],
411
+ },
412
+ {
413
+ id: 'gemini-3.6-flash',
414
+ name: 'Gemini 3.6 Flash',
415
+ protocol: 'google',
416
+ contextWindow: 1048576,
417
+ maxOutputTokens: 65536,
418
+ inputModalities: ['text', 'image', 'document'],
419
+ inputPrice: 1.5,
420
+ outputPrice: 7.5,
421
+ supportsToolUse: true,
422
+ supportsStreaming: true,
423
+ effortLevels: ['minimal', 'low', 'medium', 'high'],
424
+ },
425
+ {
426
+ id: 'gemini-3.5-flash',
427
+ name: 'Gemini 3.5 Flash',
428
+ protocol: 'google',
429
+ contextWindow: 1048576,
430
+ maxOutputTokens: 65536,
431
+ inputModalities: ['text', 'image', 'document'],
432
+ inputPrice: 1.5,
433
+ outputPrice: 9.0,
434
+ supportsToolUse: true,
435
+ supportsStreaming: true,
436
+ effortLevels: ['minimal', 'low', 'medium', 'high'],
437
+ },
438
+ {
439
+ id: 'gemini-3.5-flash-lite',
440
+ name: 'Gemini 3.5 Flash Lite',
441
+ protocol: 'google',
442
+ contextWindow: 1048576,
443
+ maxOutputTokens: 65536,
444
+ inputModalities: ['text', 'image', 'document'],
445
+ inputPrice: 0.3,
446
+ outputPrice: 2.5,
447
+ supportsToolUse: true,
448
+ supportsStreaming: true,
449
+ effortLevels: ['minimal', 'low', 'medium', 'high'],
450
+ },
451
+ {
452
+ id: 'gemini-3.1-pro',
453
+ name: 'Gemini 3.1 Pro',
454
+ protocol: 'google',
455
+ contextWindow: 1048576,
456
+ maxOutputTokens: 65536,
457
+ inputModalities: ['text', 'image', 'document'],
458
+ inputPrice: 2.0,
459
+ outputPrice: 12.0,
460
+ supportsToolUse: true,
461
+ supportsStreaming: true,
462
+ effortLevels: ['low', 'medium', 'high'],
463
+ },
464
+ {
465
+ id: 'gemini-3-flash',
466
+ name: 'Gemini 3 Flash',
467
+ protocol: 'google',
468
+ contextWindow: 1048576,
469
+ maxOutputTokens: 65536,
470
+ inputModalities: ['text', 'image', 'document'],
471
+ inputPrice: 0.5,
472
+ outputPrice: 3.0,
473
+ supportsToolUse: true,
474
+ supportsStreaming: true,
475
+ effortLevels: ['minimal', 'low', 'medium', 'high'],
476
+ },
477
+ {
478
+ id: 'grok-4.6',
479
+ name: 'Grok 4.6',
480
+ protocol: 'responses',
481
+ contextWindow: 500000,
482
+ maxOutputTokens: 500000,
483
+ inputModalities: ['text', 'image'],
484
+ inputPrice: 2.0,
485
+ outputPrice: 6.0,
486
+ supportsToolUse: true,
487
+ supportsStreaming: true,
488
+ effortLevels: ['low', 'medium', 'high', 'xhigh'],
489
+ },
490
+ {
491
+ id: 'grok-4.5',
492
+ name: 'Grok 4.5',
493
+ protocol: 'responses',
494
+ contextWindow: 500000,
495
+ maxOutputTokens: 500000,
496
+ inputModalities: ['text', 'image'],
497
+ inputPrice: 2.0,
498
+ outputPrice: 6.0,
499
+ supportsToolUse: true,
500
+ supportsStreaming: true,
501
+ effortLevels: ['low', 'medium', 'high'],
502
+ },
503
+ {
504
+ id: 'grok-build-0.1',
505
+ name: 'Grok Build 0.1',
506
+ protocol: 'responses',
507
+ contextWindow: 256000,
508
+ maxOutputTokens: 256000,
509
+ inputModalities: ['text', 'image', 'document'],
510
+ inputPrice: 1.0,
511
+ outputPrice: 2.0,
512
+ supportsToolUse: true,
513
+ supportsStreaming: true,
514
+ effortLevels: [],
515
+ },
516
+ {
517
+ id: 'muse-spark-1.3',
518
+ name: 'Muse Spark 1.3',
519
+ protocol: 'responses',
520
+ contextWindow: 1048576,
521
+ maxOutputTokens: 131072,
522
+ inputModalities: ['text', 'image', 'document'],
523
+ inputPrice: 1.25,
524
+ outputPrice: 4.25,
525
+ supportsToolUse: true,
526
+ supportsStreaming: true,
527
+ effortLevels: ['minimal', 'low', 'medium', 'high', 'xhigh', 'max'],
528
+ },
529
+ {
530
+ id: 'muse-spark-1.2',
531
+ name: 'Muse Spark 1.2',
532
+ protocol: 'responses',
533
+ contextWindow: 1048576,
534
+ maxOutputTokens: 131072,
535
+ inputModalities: ['text', 'image', 'document'],
536
+ inputPrice: 1.25,
537
+ outputPrice: 4.25,
538
+ supportsToolUse: true,
539
+ supportsStreaming: true,
540
+ effortLevels: ['minimal', 'low', 'medium', 'high', 'xhigh'],
541
+ },
542
+ {
543
+ id: 'qwen3.6-plus',
544
+ name: 'Qwen3.6 Plus',
545
+ protocol: 'messages',
546
+ contextWindow: 262144,
547
+ maxOutputTokens: 65536,
548
+ inputModalities: ['text', 'image'],
549
+ inputPrice: 0.5,
550
+ outputPrice: 3.0,
551
+ supportsToolUse: true,
552
+ supportsStreaming: true,
553
+ effortLevels: [],
554
+ },
555
+ {
556
+ id: 'qwen3.5-plus',
557
+ name: 'Qwen3.5 Plus',
558
+ protocol: 'messages',
559
+ contextWindow: 262144,
560
+ maxOutputTokens: 65536,
561
+ inputModalities: ['text', 'image'],
562
+ inputPrice: 0.2,
563
+ outputPrice: 1.2,
564
+ supportsToolUse: true,
565
+ supportsStreaming: true,
566
+ effortLevels: [],
567
+ },
568
+ {
569
+ id: 'deepseek-v4-pro',
570
+ name: 'DeepSeek V4 Pro',
571
+ protocol: 'chat',
572
+ contextWindow: 1000000,
573
+ maxOutputTokens: 384000,
574
+ inputModalities: ['text'],
575
+ inputPrice: 1.74,
576
+ outputPrice: 3.48,
577
+ supportsToolUse: true,
578
+ supportsStreaming: true,
579
+ effortLevels: ['high', 'max'],
580
+ },
581
+ {
582
+ id: 'deepseek-v4-flash',
583
+ name: 'DeepSeek V4 Flash',
584
+ protocol: 'chat',
585
+ contextWindow: 1000000,
586
+ maxOutputTokens: 384000,
587
+ inputModalities: ['text'],
588
+ inputPrice: 0.14,
589
+ outputPrice: 0.28,
590
+ supportsToolUse: true,
591
+ supportsStreaming: true,
592
+ effortLevels: ['low', 'high', 'max'],
593
+ },
594
+ {
595
+ id: 'deepseek-v4-flash-vision-exp',
596
+ name: 'DeepSeek V4 Flash Vision Exp',
597
+ protocol: 'chat',
598
+ contextWindow: 1000000,
599
+ maxOutputTokens: 384000,
600
+ inputModalities: ['text', 'image'],
601
+ inputPrice: 0.14,
602
+ outputPrice: 0.28,
603
+ supportsToolUse: true,
604
+ supportsStreaming: true,
605
+ effortLevels: ['low', 'high', 'max'],
606
+ },
607
+ {
608
+ id: 'minimax-m3',
609
+ name: 'MiniMax M3',
610
+ protocol: 'chat',
611
+ contextWindow: 512000,
612
+ maxOutputTokens: 128000,
613
+ inputModalities: ['text', 'image'],
614
+ inputPrice: 0.3,
615
+ outputPrice: 1.2,
616
+ supportsToolUse: true,
617
+ supportsStreaming: true,
618
+ effortLevels: [],
619
+ },
620
+ {
621
+ id: 'minimax-m2.7',
622
+ name: 'MiniMax M2.7',
623
+ protocol: 'chat',
624
+ contextWindow: 204800,
625
+ maxOutputTokens: 131072,
626
+ inputModalities: ['text'],
627
+ inputPrice: 0.3,
628
+ outputPrice: 1.2,
629
+ supportsToolUse: true,
630
+ supportsStreaming: true,
631
+ effortLevels: [],
632
+ },
633
+ {
634
+ id: 'glm-5.3-flash',
635
+ name: 'GLM 5.3 Flash',
636
+ protocol: 'chat',
637
+ contextWindow: 1000000,
638
+ maxOutputTokens: 131072,
639
+ inputModalities: ['text', 'image', 'document'],
640
+ inputPrice: 0.15,
641
+ outputPrice: 0.5,
642
+ supportsToolUse: true,
643
+ supportsStreaming: true,
644
+ effortLevels: ['low', 'high', 'max'],
645
+ },
646
+ {
647
+ id: 'glm-5.3',
648
+ name: 'GLM 5.3',
649
+ protocol: 'chat',
650
+ contextWindow: 1000000,
651
+ maxOutputTokens: 131072,
652
+ inputModalities: ['text'],
653
+ inputPrice: 1.4,
654
+ outputPrice: 4.4,
655
+ supportsToolUse: true,
656
+ supportsStreaming: true,
657
+ effortLevels: ['low', 'high', 'max'],
658
+ },
659
+ {
660
+ id: 'glm-5.2',
661
+ name: 'GLM 5.2',
662
+ protocol: 'chat',
663
+ contextWindow: 1000000,
664
+ maxOutputTokens: 131072,
665
+ inputModalities: ['text'],
666
+ inputPrice: 1.4,
667
+ outputPrice: 4.4,
668
+ supportsToolUse: true,
669
+ supportsStreaming: true,
670
+ effortLevels: ['high', 'max'],
671
+ },
672
+ {
673
+ id: 'glm-5.1',
674
+ name: 'GLM 5.1',
675
+ protocol: 'chat',
676
+ contextWindow: 204800,
677
+ maxOutputTokens: 131072,
678
+ inputModalities: ['text'],
679
+ inputPrice: 1.4,
680
+ outputPrice: 4.4,
681
+ supportsToolUse: true,
682
+ supportsStreaming: true,
683
+ effortLevels: [],
684
+ },
685
+ {
686
+ id: 'kimi-k2.6',
687
+ name: 'Kimi K2.6',
688
+ protocol: 'chat',
689
+ contextWindow: 262144,
690
+ maxOutputTokens: 65536,
691
+ inputModalities: ['text', 'image'],
692
+ inputPrice: 0.95,
693
+ outputPrice: 4.0,
694
+ supportsToolUse: true,
695
+ supportsStreaming: true,
696
+ effortLevels: [],
697
+ },
698
+ {
699
+ id: 'kimi-k2.7-code',
700
+ name: 'Kimi K2.7 Code',
701
+ protocol: 'chat',
702
+ contextWindow: 262144,
703
+ maxOutputTokens: 262144,
704
+ inputModalities: ['text', 'image'],
705
+ inputPrice: 0.95,
706
+ outputPrice: 4.0,
707
+ supportsToolUse: true,
708
+ supportsStreaming: true,
709
+ effortLevels: [],
710
+ },
711
+ {
712
+ id: 'kimi-k3',
713
+ name: 'Kimi K3',
714
+ protocol: 'chat',
715
+ contextWindow: 1048576,
716
+ maxOutputTokens: 131072,
717
+ inputModalities: ['text', 'image'],
718
+ inputPrice: 3.0,
719
+ outputPrice: 15.0,
720
+ supportsToolUse: true,
721
+ supportsStreaming: true,
722
+ effortLevels: ['max'],
723
+ },
724
+ {
725
+ id: 'big-pickle',
726
+ supportsAnonymousAccess: true,
727
+ name: 'Big Pickle',
728
+ protocol: 'chat',
729
+ contextWindow: 200000,
730
+ maxOutputTokens: 32000,
731
+ inputModalities: ['text'],
732
+ inputPrice: 0,
733
+ outputPrice: 0,
734
+ supportsToolUse: true,
735
+ supportsStreaming: true,
736
+ effortLevels: [],
737
+ },
738
+ {
739
+ id: 'mimo-v2.5-free',
740
+ supportsAnonymousAccess: true,
741
+ name: 'MiMo-V2.5 Free',
742
+ protocol: 'chat',
743
+ contextWindow: 200000,
744
+ maxOutputTokens: 32000,
745
+ inputModalities: ['text', 'image'],
746
+ inputPrice: 0,
747
+ outputPrice: 0,
748
+ supportsToolUse: true,
749
+ supportsStreaming: true,
750
+ effortLevels: [],
751
+ },
752
+ {
753
+ id: 'ling-3.0-flash-fin-free',
754
+ supportsAnonymousAccess: true,
755
+ name: 'Ling 3.0 Flash Fin Free',
756
+ protocol: 'chat',
757
+ contextWindow: 262144,
758
+ maxOutputTokens: 32768,
759
+ inputModalities: ['text'],
760
+ inputPrice: 0,
761
+ outputPrice: 0,
762
+ supportsToolUse: true,
763
+ supportsStreaming: true,
764
+ effortLevels: [],
765
+ },
766
+ {
767
+ id: 'nemotron-3-ultra-free',
768
+ supportsAnonymousAccess: true,
769
+ name: 'Nemotron 3 Ultra Free',
770
+ protocol: 'chat',
771
+ contextWindow: 1000000,
772
+ maxOutputTokens: 128000,
773
+ inputModalities: ['text'],
774
+ inputPrice: 0,
775
+ outputPrice: 0,
776
+ supportsToolUse: true,
777
+ supportsStreaming: true,
778
+ effortLevels: [],
779
+ },
780
+ {
781
+ id: 'nemotron-3.5-lightning-free',
782
+ supportsAnonymousAccess: true,
783
+ name: 'Nemotron 3.5 Lightning Free',
784
+ protocol: 'chat',
785
+ contextWindow: 262144,
786
+ maxOutputTokens: 262144,
787
+ inputModalities: ['text'],
788
+ inputPrice: 0,
789
+ outputPrice: 0,
790
+ supportsToolUse: true,
791
+ supportsStreaming: true,
792
+ effortLevels: [],
793
+ },
794
+ {
795
+ id: 'muse-spark-1.3-contributor-free',
796
+ supportsAnonymousAccess: true,
797
+ name: 'Muse Spark 1.3 Contributor Free',
798
+ protocol: 'responses',
799
+ contextWindow: 1048576,
800
+ maxOutputTokens: 131072,
801
+ inputModalities: ['text', 'image', 'document'],
802
+ inputPrice: 0,
803
+ outputPrice: 0,
804
+ supportsToolUse: true,
805
+ supportsStreaming: true,
806
+ effortLevels: ['minimal', 'low', 'medium', 'high', 'xhigh'],
807
+ },
808
+ ]);
809
+ const GO_MODELS = freezeModels([
810
+ {
811
+ id: 'grok-4.6',
812
+ name: 'Grok 4.6',
813
+ protocol: 'responses',
814
+ contextWindow: 500000,
815
+ maxOutputTokens: 500000,
816
+ inputModalities: ['text', 'image'],
817
+ inputPrice: 2.0,
818
+ outputPrice: 6.0,
819
+ supportsToolUse: true,
820
+ supportsStreaming: true,
821
+ effortLevels: ['low', 'medium', 'high', 'xhigh'],
822
+ },
823
+ {
824
+ id: 'gpt-5.6-luna',
825
+ name: 'GPT 5.6 Luna',
826
+ protocol: 'responses',
827
+ contextWindow: 1050000,
828
+ maxOutputTokens: 128000,
829
+ inputModalities: ['text', 'image', 'document'],
830
+ inputPrice: 0.2,
831
+ outputPrice: 1.2,
832
+ supportsToolUse: true,
833
+ supportsStreaming: true,
834
+ effortLevels: ['none', 'low', 'medium', 'high', 'xhigh', 'max'],
835
+ },
836
+ {
837
+ id: 'glm-5.3-flash',
838
+ name: 'GLM-5.3-Flash',
839
+ protocol: 'chat',
840
+ contextWindow: 1000000,
841
+ maxOutputTokens: 131072,
842
+ inputModalities: ['text', 'image', 'document'],
843
+ inputPrice: 0.15,
844
+ outputPrice: 0.5,
845
+ supportsToolUse: true,
846
+ supportsStreaming: true,
847
+ effortLevels: ['low', 'high', 'max'],
848
+ },
849
+ {
850
+ id: 'glm-5.3',
851
+ name: 'GLM-5.3',
852
+ protocol: 'chat',
853
+ contextWindow: 1000000,
854
+ maxOutputTokens: 131072,
855
+ inputModalities: ['text'],
856
+ inputPrice: 1.4,
857
+ outputPrice: 4.4,
858
+ supportsToolUse: true,
859
+ supportsStreaming: true,
860
+ effortLevels: ['low', 'high', 'max'],
861
+ },
862
+ {
863
+ id: 'glm-5.2',
864
+ name: 'GLM-5.2',
865
+ protocol: 'chat',
866
+ contextWindow: 1000000,
867
+ maxOutputTokens: 131072,
868
+ inputModalities: ['text'],
869
+ inputPrice: 1.4,
870
+ outputPrice: 4.4,
871
+ supportsToolUse: true,
872
+ supportsStreaming: true,
873
+ effortLevels: ['high', 'max'],
874
+ },
875
+ {
876
+ id: 'glm-5.1',
877
+ name: 'GLM-5.1',
878
+ protocol: 'chat',
879
+ contextWindow: 202752,
880
+ maxOutputTokens: 32768,
881
+ inputModalities: ['text'],
882
+ inputPrice: 1.4,
883
+ outputPrice: 4.4,
884
+ supportsToolUse: true,
885
+ supportsStreaming: true,
886
+ effortLevels: [],
887
+ },
888
+ {
889
+ id: 'kimi-k3',
890
+ name: 'Kimi K3',
891
+ protocol: 'chat',
892
+ contextWindow: 1048576,
893
+ maxOutputTokens: 131072,
894
+ inputModalities: ['text', 'image'],
895
+ inputPrice: 3.0,
896
+ outputPrice: 15.0,
897
+ supportsToolUse: true,
898
+ supportsStreaming: true,
899
+ effortLevels: ['max'],
900
+ },
901
+ {
902
+ id: 'kimi-k2.7-code',
903
+ name: 'Kimi K2.7 Code',
904
+ protocol: 'chat',
905
+ contextWindow: 262144,
906
+ maxOutputTokens: 262144,
907
+ inputModalities: ['text', 'image'],
908
+ inputPrice: 0.95,
909
+ outputPrice: 4.0,
910
+ supportsToolUse: true,
911
+ supportsStreaming: true,
912
+ effortLevels: [],
913
+ },
914
+ {
915
+ id: 'kimi-k2.6',
916
+ name: 'Kimi K2.6',
917
+ protocol: 'chat',
918
+ contextWindow: 262144,
919
+ maxOutputTokens: 65536,
920
+ inputModalities: ['text', 'image'],
921
+ inputPrice: 0.95,
922
+ outputPrice: 4.0,
923
+ supportsToolUse: true,
924
+ supportsStreaming: true,
925
+ effortLevels: [],
926
+ },
927
+ {
928
+ id: 'longcat-2.0',
929
+ name: 'LongCat-2.0',
930
+ protocol: 'chat',
931
+ contextWindow: 1000000,
932
+ maxOutputTokens: 131072,
933
+ inputModalities: ['text'],
934
+ inputPrice: 0.3,
935
+ outputPrice: 1.2,
936
+ supportsToolUse: true,
937
+ supportsStreaming: true,
938
+ effortLevels: [],
939
+ },
940
+ {
941
+ id: 'deepseek-v4-pro',
942
+ name: 'DeepSeek V4 Pro',
943
+ protocol: 'chat',
944
+ contextWindow: 1000000,
945
+ maxOutputTokens: 384000,
946
+ inputModalities: ['text'],
947
+ inputPrice: 0.66,
948
+ outputPrice: 1.98,
949
+ supportsToolUse: true,
950
+ supportsStreaming: true,
951
+ effortLevels: ['high', 'max'],
952
+ },
953
+ {
954
+ id: 'deepseek-v4-flash',
955
+ name: 'DeepSeek V4 Flash',
956
+ protocol: 'chat',
957
+ contextWindow: 1000000,
958
+ maxOutputTokens: 384000,
959
+ inputModalities: ['text'],
960
+ inputPrice: 0.22,
961
+ outputPrice: 0.66,
962
+ supportsToolUse: true,
963
+ supportsStreaming: true,
964
+ effortLevels: ['low', 'high', 'max'],
965
+ },
966
+ {
967
+ id: 'deepseek-v4-flash-vision-exp',
968
+ name: 'DeepSeek V4 Flash Vision Exp',
969
+ protocol: 'chat',
970
+ contextWindow: 1000000,
971
+ maxOutputTokens: 384000,
972
+ inputModalities: ['text', 'image'],
973
+ inputPrice: 0.22,
974
+ outputPrice: 0.66,
975
+ supportsToolUse: true,
976
+ supportsStreaming: true,
977
+ effortLevels: ['low', 'high', 'max'],
978
+ },
979
+ {
980
+ id: 'mimo-v2.5',
981
+ name: 'MiMo-V2.5',
982
+ protocol: 'chat',
983
+ contextWindow: 1000000,
984
+ maxOutputTokens: 128000,
985
+ inputModalities: ['text', 'image'],
986
+ inputPrice: 0.14,
987
+ outputPrice: 0.28,
988
+ supportsToolUse: true,
989
+ supportsStreaming: true,
990
+ effortLevels: [],
991
+ },
992
+ {
993
+ id: 'mimo-v2.5-pro',
994
+ name: 'MiMo-V2.5-Pro',
995
+ protocol: 'chat',
996
+ contextWindow: 1048576,
997
+ maxOutputTokens: 128000,
998
+ inputModalities: ['text'],
999
+ inputPrice: 0.435,
1000
+ outputPrice: 0.87,
1001
+ supportsToolUse: true,
1002
+ supportsStreaming: true,
1003
+ effortLevels: [],
1004
+ },
1005
+ {
1006
+ id: 'minimax-m3',
1007
+ name: 'MiniMax M3',
1008
+ protocol: 'messages',
1009
+ contextWindow: 1000000,
1010
+ maxOutputTokens: 131072,
1011
+ inputModalities: ['text', 'image'],
1012
+ inputPrice: 0.3,
1013
+ outputPrice: 1.2,
1014
+ supportsToolUse: true,
1015
+ supportsStreaming: true,
1016
+ effortLevels: [],
1017
+ },
1018
+ {
1019
+ id: 'minimax-m2.7',
1020
+ name: 'MiniMax M2.7',
1021
+ protocol: 'messages',
1022
+ contextWindow: 204800,
1023
+ maxOutputTokens: 131072,
1024
+ inputModalities: ['text'],
1025
+ inputPrice: 0.3,
1026
+ outputPrice: 1.2,
1027
+ supportsToolUse: true,
1028
+ supportsStreaming: true,
1029
+ effortLevels: [],
1030
+ },
1031
+ {
1032
+ id: 'muse-spark-1.3-contributor',
1033
+ name: 'Muse Spark 1.3 Contributor',
1034
+ protocol: 'responses',
1035
+ contextWindow: 1048576,
1036
+ maxOutputTokens: 131072,
1037
+ inputModalities: ['text', 'image', 'document'],
1038
+ inputPrice: 0.1,
1039
+ outputPrice: 0.2,
1040
+ supportsToolUse: true,
1041
+ supportsStreaming: true,
1042
+ effortLevels: ['minimal', 'low', 'medium', 'high', 'xhigh'],
1043
+ },
1044
+ {
1045
+ id: 'muse-spark-1.2-contributor',
1046
+ name: 'Muse Spark 1.2 Contributor',
1047
+ protocol: 'responses',
1048
+ contextWindow: 1048576,
1049
+ maxOutputTokens: 131072,
1050
+ inputModalities: ['text', 'image', 'document'],
1051
+ inputPrice: 0.1,
1052
+ outputPrice: 0.2,
1053
+ supportsToolUse: true,
1054
+ supportsStreaming: true,
1055
+ effortLevels: ['minimal', 'low', 'medium', 'high', 'xhigh'],
1056
+ },
1057
+ {
1058
+ id: 'qwen3.8-max',
1059
+ name: 'Qwen3.8 Max',
1060
+ protocol: 'messages',
1061
+ contextWindow: 1000000,
1062
+ maxOutputTokens: 131072,
1063
+ inputModalities: ['text', 'image'],
1064
+ inputPrice: 2.0,
1065
+ outputPrice: 6.0,
1066
+ supportsToolUse: true,
1067
+ supportsStreaming: true,
1068
+ effortLevels: ['low', 'medium', 'xhigh'],
1069
+ },
1070
+ {
1071
+ id: 'qwen3.8-flash',
1072
+ name: 'Qwen3.8 Flash',
1073
+ protocol: 'messages',
1074
+ contextWindow: 1000000,
1075
+ maxOutputTokens: 131072,
1076
+ inputModalities: ['text', 'image'],
1077
+ inputPrice: 0.15,
1078
+ outputPrice: 0.47,
1079
+ supportsToolUse: true,
1080
+ supportsStreaming: true,
1081
+ effortLevels: ['low', 'medium', 'xhigh'],
1082
+ },
1083
+ {
1084
+ id: 'qwen3.7-max',
1085
+ name: 'Qwen3.7 Max',
1086
+ protocol: 'messages',
1087
+ contextWindow: 1000000,
1088
+ maxOutputTokens: 65536,
1089
+ inputModalities: ['text'],
1090
+ inputPrice: 2.5,
1091
+ outputPrice: 7.5,
1092
+ supportsToolUse: true,
1093
+ supportsStreaming: true,
1094
+ effortLevels: [],
1095
+ },
1096
+ {
1097
+ id: 'qwen3.7-plus',
1098
+ name: 'Qwen3.7 Plus',
1099
+ protocol: 'messages',
1100
+ contextWindow: 1000000,
1101
+ maxOutputTokens: 65536,
1102
+ inputModalities: ['text', 'image'],
1103
+ inputPrice: 0.4,
1104
+ outputPrice: 1.6,
1105
+ supportsToolUse: true,
1106
+ supportsStreaming: true,
1107
+ effortLevels: [],
1108
+ },
1109
+ {
1110
+ id: 'qwen3.6-plus',
1111
+ name: 'Qwen3.6 Plus',
1112
+ protocol: 'messages',
1113
+ contextWindow: 1000000,
1114
+ maxOutputTokens: 65536,
1115
+ inputModalities: ['text', 'image'],
1116
+ inputPrice: 0.5,
1117
+ outputPrice: 3.0,
1118
+ supportsToolUse: true,
1119
+ supportsStreaming: true,
1120
+ effortLevels: [],
1121
+ },
1122
+ {
1123
+ id: 'hy4-preview',
1124
+ name: 'Hy4 preview',
1125
+ protocol: 'chat',
1126
+ contextWindow: 1024000,
1127
+ maxOutputTokens: 64000,
1128
+ inputModalities: ['text'],
1129
+ inputPrice: 0.834,
1130
+ outputPrice: 2.501,
1131
+ supportsToolUse: true,
1132
+ supportsStreaming: true,
1133
+ effortLevels: ['none', 'high'],
1134
+ },
1135
+ {
1136
+ id: 'hy3',
1137
+ name: 'Hy3',
1138
+ protocol: 'chat',
1139
+ contextWindow: 256000,
1140
+ maxOutputTokens: 128000,
1141
+ inputModalities: ['text'],
1142
+ inputPrice: 0.14,
1143
+ outputPrice: 0.58,
1144
+ supportsToolUse: true,
1145
+ supportsStreaming: true,
1146
+ effortLevels: ['none', 'low', 'high'],
1147
+ },
1148
+ {
1149
+ id: 'omen-alpha',
1150
+ name: 'Omen Alpha',
1151
+ protocol: 'chat',
1152
+ contextWindow: 500000,
1153
+ maxOutputTokens: 128000,
1154
+ inputModalities: ['text', 'image'],
1155
+ inputPrice: 0.2,
1156
+ outputPrice: 0.66,
1157
+ supportsToolUse: true,
1158
+ supportsStreaming: true,
1159
+ effortLevels: ['low', 'high'],
1160
+ },
1161
+ ]);
1162
+ /** Supported metadata; actual account availability is established by live discovery. */
1163
+ export function getZenModels(service) {
1164
+ return service === 'zen' ? ZEN_MODELS : GO_MODELS;
1165
+ }
1166
+ /** Exact wire ID lookup. Zen CLI prefixes and unknown IDs are not guessed. */
1167
+ export function findZenModel(service, id) {
1168
+ return getZenModels(service).find((model) => model.id === id);
1169
+ }
1170
+ //# sourceMappingURL=models.js.map