@stll/ai-catalog 0.4.0 → 0.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.
@@ -0,0 +1,1721 @@
1
+ import * as v from "valibot";
2
+ //#region src/model-rate.d.ts
3
+ /**
4
+ * models.dev publishes USD prices per one million tokens. Stella stores the
5
+ * same rates as integer ledger units so usage arithmetic never depends on
6
+ * floating point values.
7
+ */
8
+ declare const MODEL_RATE_UNITS_PER_USD = 100000;
9
+ type ModelRateAmounts = {
10
+ /** Normalized ledger units per 1M input tokens. */
11
+ inputPerMTok: number;
12
+ /** Normalized ledger units per 1M output tokens. */
13
+ outputPerMTok: number;
14
+ /**
15
+ * Normalized ledger units per 1M cached input tokens, when the provider
16
+ * offers a cache-read adjustment. Falls back to `inputPerMTok` when absent.
17
+ */
18
+ cachedInputPerMTok?: number;
19
+ /**
20
+ * Normalized ledger units per 1M tokens written to a prompt cache. Falls
21
+ * back to `inputPerMTok` when absent.
22
+ */
23
+ cachedWriteInputPerMTok?: number;
24
+ };
25
+ /**
26
+ * A discriminated rate schedule. Consumers resolve the schedule from the
27
+ * request's total input tokens before reading any prices, so a model with a
28
+ * long-context premium cannot accidentally be metered at its base rate.
29
+ */
30
+ type ModelRate = ({
31
+ kind: "flat";
32
+ } & ModelRateAmounts) | {
33
+ kind: "input-token-tiered";
34
+ /** The base tier applies at or below this total input-token count. */
35
+ inputTokenThreshold: number;
36
+ standard: ModelRateAmounts;
37
+ /** Applies to the entire request once input exceeds the threshold. */
38
+ aboveThreshold: ModelRateAmounts;
39
+ };
40
+ declare const getStandardModelRate: (rate: ModelRate) => ModelRateAmounts;
41
+ declare const resolveModelRate: (rate: ModelRate, inputTokens: number) => ModelRateAmounts;
42
+ //#endregion
43
+ //#region src/model-rates.gen.d.ts
44
+ declare const MODEL_RATES: {
45
+ readonly "gemini-3.8-flash": {
46
+ readonly kind: "flat";
47
+ readonly inputPerMTok: 75000;
48
+ readonly outputPerMTok: 375000;
49
+ readonly cachedInputPerMTok: 7500;
50
+ };
51
+ readonly "gemini-3.7-flash": {
52
+ readonly kind: "flat";
53
+ readonly inputPerMTok: 75000;
54
+ readonly outputPerMTok: 375000;
55
+ readonly cachedInputPerMTok: 7500;
56
+ };
57
+ readonly "gemini-3.6-flash": {
58
+ readonly kind: "flat";
59
+ readonly inputPerMTok: 75000;
60
+ readonly outputPerMTok: 375000;
61
+ readonly cachedInputPerMTok: 7500;
62
+ };
63
+ readonly "gemini-3.5-flash-lite": {
64
+ readonly kind: "flat";
65
+ readonly inputPerMTok: 30000;
66
+ readonly outputPerMTok: 250000;
67
+ readonly cachedInputPerMTok: 3000;
68
+ };
69
+ readonly "gemini-3.1-pro-preview": {
70
+ readonly kind: "input-token-tiered";
71
+ readonly inputTokenThreshold: 200000;
72
+ readonly standard: {
73
+ readonly inputPerMTok: 200000;
74
+ readonly outputPerMTok: 1200000;
75
+ readonly cachedInputPerMTok: 20000;
76
+ };
77
+ readonly aboveThreshold: {
78
+ readonly inputPerMTok: 400000;
79
+ readonly outputPerMTok: 1800000;
80
+ readonly cachedInputPerMTok: 40000;
81
+ };
82
+ };
83
+ readonly "gemini-3.5-flash": {
84
+ readonly kind: "flat";
85
+ readonly inputPerMTok: 150000;
86
+ readonly outputPerMTok: 900000;
87
+ readonly cachedInputPerMTok: 15000;
88
+ };
89
+ readonly "gemini-3.1-flash-lite": {
90
+ readonly kind: "flat";
91
+ readonly inputPerMTok: 25000;
92
+ readonly outputPerMTok: 150000;
93
+ readonly cachedInputPerMTok: 2500;
94
+ };
95
+ readonly "gpt-6.1-sol": {
96
+ readonly kind: "input-token-tiered";
97
+ readonly inputTokenThreshold: 272000;
98
+ readonly standard: {
99
+ readonly inputPerMTok: 200000;
100
+ readonly outputPerMTok: 1000000;
101
+ readonly cachedInputPerMTok: 10000;
102
+ readonly cachedWriteInputPerMTok: 250000;
103
+ };
104
+ readonly aboveThreshold: {
105
+ readonly inputPerMTok: 400000;
106
+ readonly outputPerMTok: 1500000;
107
+ readonly cachedInputPerMTok: 20000;
108
+ readonly cachedWriteInputPerMTok: 500000;
109
+ };
110
+ };
111
+ readonly "gpt-6-astra": {
112
+ readonly kind: "input-token-tiered";
113
+ readonly inputTokenThreshold: 272000;
114
+ readonly standard: {
115
+ readonly inputPerMTok: 1000000;
116
+ readonly outputPerMTok: 5000000;
117
+ readonly cachedInputPerMTok: 100000;
118
+ readonly cachedWriteInputPerMTok: 1250000;
119
+ };
120
+ readonly aboveThreshold: {
121
+ readonly inputPerMTok: 2000000;
122
+ readonly outputPerMTok: 7500000;
123
+ readonly cachedInputPerMTok: 200000;
124
+ readonly cachedWriteInputPerMTok: 2500000;
125
+ };
126
+ };
127
+ readonly "gpt-6-sol": {
128
+ readonly kind: "input-token-tiered";
129
+ readonly inputTokenThreshold: 272000;
130
+ readonly standard: {
131
+ readonly inputPerMTok: 200000;
132
+ readonly outputPerMTok: 1000000;
133
+ readonly cachedInputPerMTok: 20000;
134
+ readonly cachedWriteInputPerMTok: 250000;
135
+ };
136
+ readonly aboveThreshold: {
137
+ readonly inputPerMTok: 400000;
138
+ readonly outputPerMTok: 1500000;
139
+ readonly cachedInputPerMTok: 40000;
140
+ readonly cachedWriteInputPerMTok: 500000;
141
+ };
142
+ };
143
+ readonly "gpt-6-luna": {
144
+ readonly kind: "input-token-tiered";
145
+ readonly inputTokenThreshold: 272000;
146
+ readonly standard: {
147
+ readonly inputPerMTok: 10000;
148
+ readonly outputPerMTok: 50000;
149
+ readonly cachedInputPerMTok: 1000;
150
+ readonly cachedWriteInputPerMTok: 12500;
151
+ };
152
+ readonly aboveThreshold: {
153
+ readonly inputPerMTok: 20000;
154
+ readonly outputPerMTok: 75000;
155
+ readonly cachedInputPerMTok: 2000;
156
+ readonly cachedWriteInputPerMTok: 25000;
157
+ };
158
+ };
159
+ readonly "gpt-5.6": {
160
+ readonly kind: "input-token-tiered";
161
+ readonly inputTokenThreshold: 272000;
162
+ readonly standard: {
163
+ readonly inputPerMTok: 400000;
164
+ readonly outputPerMTok: 2000000;
165
+ readonly cachedInputPerMTok: 40000;
166
+ readonly cachedWriteInputPerMTok: 500000;
167
+ };
168
+ readonly aboveThreshold: {
169
+ readonly inputPerMTok: 800000;
170
+ readonly outputPerMTok: 3000000;
171
+ readonly cachedInputPerMTok: 80000;
172
+ readonly cachedWriteInputPerMTok: 1000000;
173
+ };
174
+ };
175
+ readonly "gpt-5.6-terra": {
176
+ readonly kind: "input-token-tiered";
177
+ readonly inputTokenThreshold: 272000;
178
+ readonly standard: {
179
+ readonly inputPerMTok: 200000;
180
+ readonly outputPerMTok: 1200000;
181
+ readonly cachedInputPerMTok: 20000;
182
+ readonly cachedWriteInputPerMTok: 250000;
183
+ };
184
+ readonly aboveThreshold: {
185
+ readonly inputPerMTok: 400000;
186
+ readonly outputPerMTok: 1800000;
187
+ readonly cachedInputPerMTok: 40000;
188
+ readonly cachedWriteInputPerMTok: 500000;
189
+ };
190
+ };
191
+ readonly "gpt-5.6-luna": {
192
+ readonly kind: "input-token-tiered";
193
+ readonly inputTokenThreshold: 272000;
194
+ readonly standard: {
195
+ readonly inputPerMTok: 20000;
196
+ readonly outputPerMTok: 120000;
197
+ readonly cachedInputPerMTok: 2000;
198
+ readonly cachedWriteInputPerMTok: 25000;
199
+ };
200
+ readonly aboveThreshold: {
201
+ readonly inputPerMTok: 40000;
202
+ readonly outputPerMTok: 180000;
203
+ readonly cachedInputPerMTok: 4000;
204
+ readonly cachedWriteInputPerMTok: 50000;
205
+ };
206
+ };
207
+ readonly "gpt-5.5": {
208
+ readonly kind: "input-token-tiered";
209
+ readonly inputTokenThreshold: 272000;
210
+ readonly standard: {
211
+ readonly inputPerMTok: 500000;
212
+ readonly outputPerMTok: 3000000;
213
+ readonly cachedInputPerMTok: 50000;
214
+ };
215
+ readonly aboveThreshold: {
216
+ readonly inputPerMTok: 1000000;
217
+ readonly outputPerMTok: 4500000;
218
+ readonly cachedInputPerMTok: 100000;
219
+ };
220
+ };
221
+ readonly "gpt-5.4": {
222
+ readonly kind: "input-token-tiered";
223
+ readonly inputTokenThreshold: 272000;
224
+ readonly standard: {
225
+ readonly inputPerMTok: 250000;
226
+ readonly outputPerMTok: 1500000;
227
+ readonly cachedInputPerMTok: 25000;
228
+ };
229
+ readonly aboveThreshold: {
230
+ readonly inputPerMTok: 500000;
231
+ readonly outputPerMTok: 2250000;
232
+ readonly cachedInputPerMTok: 50000;
233
+ };
234
+ };
235
+ readonly "gpt-5.4-mini": {
236
+ readonly kind: "flat";
237
+ readonly inputPerMTok: 75000;
238
+ readonly outputPerMTok: 450000;
239
+ readonly cachedInputPerMTok: 7500;
240
+ };
241
+ readonly "gpt-5.4-nano": {
242
+ readonly kind: "flat";
243
+ readonly inputPerMTok: 20000;
244
+ readonly outputPerMTok: 125000;
245
+ readonly cachedInputPerMTok: 2000;
246
+ };
247
+ readonly "gpt-5.2": {
248
+ readonly kind: "flat";
249
+ readonly inputPerMTok: 175000;
250
+ readonly outputPerMTok: 1400000;
251
+ readonly cachedInputPerMTok: 17500;
252
+ };
253
+ readonly "claude-sonnet-5-5": {
254
+ readonly kind: "flat";
255
+ readonly inputPerMTok: 200000;
256
+ readonly outputPerMTok: 1000000;
257
+ readonly cachedInputPerMTok: 20000;
258
+ readonly cachedWriteInputPerMTok: 250000;
259
+ };
260
+ readonly "claude-sonnet-5": {
261
+ readonly kind: "flat";
262
+ readonly inputPerMTok: 200000;
263
+ readonly outputPerMTok: 1000000;
264
+ readonly cachedInputPerMTok: 20000;
265
+ readonly cachedWriteInputPerMTok: 250000;
266
+ };
267
+ readonly "claude-fable-5-1": {
268
+ readonly kind: "flat";
269
+ readonly inputPerMTok: 1000000;
270
+ readonly outputPerMTok: 5000000;
271
+ readonly cachedInputPerMTok: 25000;
272
+ readonly cachedWriteInputPerMTok: 1250000;
273
+ };
274
+ readonly "claude-fable-5": {
275
+ readonly kind: "flat";
276
+ readonly inputPerMTok: 1000000;
277
+ readonly outputPerMTok: 5000000;
278
+ readonly cachedInputPerMTok: 100000;
279
+ readonly cachedWriteInputPerMTok: 1250000;
280
+ };
281
+ readonly "claude-opus-5-5": {
282
+ readonly kind: "flat";
283
+ readonly inputPerMTok: 400000;
284
+ readonly outputPerMTok: 2000000;
285
+ readonly cachedInputPerMTok: 20000;
286
+ readonly cachedWriteInputPerMTok: 500000;
287
+ };
288
+ readonly "claude-opus-5": {
289
+ readonly kind: "flat";
290
+ readonly inputPerMTok: 500000;
291
+ readonly outputPerMTok: 2500000;
292
+ readonly cachedInputPerMTok: 50000;
293
+ readonly cachedWriteInputPerMTok: 625000;
294
+ };
295
+ readonly "claude-opus-4-8": {
296
+ readonly kind: "flat";
297
+ readonly inputPerMTok: 500000;
298
+ readonly outputPerMTok: 2500000;
299
+ readonly cachedInputPerMTok: 50000;
300
+ readonly cachedWriteInputPerMTok: 625000;
301
+ };
302
+ readonly "claude-opus-4-7": {
303
+ readonly kind: "flat";
304
+ readonly inputPerMTok: 500000;
305
+ readonly outputPerMTok: 2500000;
306
+ readonly cachedInputPerMTok: 50000;
307
+ readonly cachedWriteInputPerMTok: 625000;
308
+ };
309
+ readonly "claude-sonnet-4-6": {
310
+ readonly kind: "flat";
311
+ readonly inputPerMTok: 300000;
312
+ readonly outputPerMTok: 1500000;
313
+ readonly cachedInputPerMTok: 30000;
314
+ readonly cachedWriteInputPerMTok: 375000;
315
+ };
316
+ readonly "claude-opus-4-6": {
317
+ readonly kind: "flat";
318
+ readonly inputPerMTok: 500000;
319
+ readonly outputPerMTok: 2500000;
320
+ readonly cachedInputPerMTok: 50000;
321
+ readonly cachedWriteInputPerMTok: 625000;
322
+ };
323
+ readonly "claude-haiku-4-5-20251001": {
324
+ readonly kind: "flat";
325
+ readonly inputPerMTok: 100000;
326
+ readonly outputPerMTok: 500000;
327
+ readonly cachedInputPerMTok: 10000;
328
+ readonly cachedWriteInputPerMTok: 125000;
329
+ };
330
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": {
331
+ readonly kind: "flat";
332
+ readonly inputPerMTok: 330000;
333
+ readonly outputPerMTok: 1650000;
334
+ readonly cachedInputPerMTok: 33000;
335
+ readonly cachedWriteInputPerMTok: 412500;
336
+ };
337
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": {
338
+ readonly kind: "flat";
339
+ readonly inputPerMTok: 110000;
340
+ readonly outputPerMTok: 550000;
341
+ readonly cachedInputPerMTok: 11000;
342
+ readonly cachedWriteInputPerMTok: 137500;
343
+ };
344
+ readonly "us.amazon.nova-pro-v1:0": {
345
+ readonly kind: "flat";
346
+ readonly inputPerMTok: 80000;
347
+ readonly outputPerMTok: 320000;
348
+ readonly cachedInputPerMTok: 20000;
349
+ readonly cachedWriteInputPerMTok: 80000;
350
+ };
351
+ readonly "us.amazon.nova-lite-v1:0": {
352
+ readonly kind: "flat";
353
+ readonly inputPerMTok: 6000;
354
+ readonly outputPerMTok: 24000;
355
+ readonly cachedInputPerMTok: 1500;
356
+ readonly cachedWriteInputPerMTok: 6000;
357
+ };
358
+ readonly "us.amazon.nova-micro-v1:0": {
359
+ readonly kind: "flat";
360
+ readonly inputPerMTok: 3500;
361
+ readonly outputPerMTok: 14000;
362
+ readonly cachedInputPerMTok: 875;
363
+ readonly cachedWriteInputPerMTok: 3500;
364
+ };
365
+ readonly "openai.gpt-oss-120b-1:0": {
366
+ readonly kind: "flat";
367
+ readonly inputPerMTok: 15000;
368
+ readonly outputPerMTok: 60000;
369
+ };
370
+ readonly "openai.gpt-oss-20b-1:0": {
371
+ readonly kind: "flat";
372
+ readonly inputPerMTok: 7000;
373
+ readonly outputPerMTok: 30000;
374
+ };
375
+ readonly "mistral-large-4": {
376
+ readonly kind: "flat";
377
+ readonly inputPerMTok: 68000;
378
+ readonly outputPerMTok: 209000;
379
+ readonly cachedInputPerMTok: 7000;
380
+ };
381
+ readonly "mistral-large-latest": {
382
+ readonly kind: "flat";
383
+ readonly inputPerMTok: 50000;
384
+ readonly outputPerMTok: 150000;
385
+ readonly cachedInputPerMTok: 5000;
386
+ };
387
+ readonly "mistral-medium-latest": {
388
+ readonly kind: "flat";
389
+ readonly inputPerMTok: 150000;
390
+ readonly outputPerMTok: 750000;
391
+ readonly cachedInputPerMTok: 15000;
392
+ };
393
+ readonly "mistral-small-latest": {
394
+ readonly kind: "flat";
395
+ readonly inputPerMTok: 15000;
396
+ readonly outputPerMTok: 60000;
397
+ readonly cachedInputPerMTok: 1500;
398
+ };
399
+ readonly "gemini-2.5-flash": {
400
+ readonly kind: "flat";
401
+ readonly inputPerMTok: 30000;
402
+ readonly outputPerMTok: 250000;
403
+ readonly cachedInputPerMTok: 3000;
404
+ };
405
+ readonly "gemini-2.5-pro": {
406
+ readonly kind: "input-token-tiered";
407
+ readonly inputTokenThreshold: 200000;
408
+ readonly standard: {
409
+ readonly inputPerMTok: 125000;
410
+ readonly outputPerMTok: 1000000;
411
+ readonly cachedInputPerMTok: 12500;
412
+ };
413
+ readonly aboveThreshold: {
414
+ readonly inputPerMTok: 250000;
415
+ readonly outputPerMTok: 1500000;
416
+ readonly cachedInputPerMTok: 25000;
417
+ };
418
+ };
419
+ readonly "gpt-4o-mini": {
420
+ readonly kind: "flat";
421
+ readonly inputPerMTok: 15000;
422
+ readonly outputPerMTok: 60000;
423
+ readonly cachedInputPerMTok: 7500;
424
+ };
425
+ readonly "gpt-4o": {
426
+ readonly kind: "flat";
427
+ readonly inputPerMTok: 250000;
428
+ readonly outputPerMTok: 1000000;
429
+ readonly cachedInputPerMTok: 125000;
430
+ };
431
+ readonly "us.deepseek.r1-v1:0": {
432
+ readonly kind: "flat";
433
+ readonly inputPerMTok: 135000;
434
+ readonly outputPerMTok: 540000;
435
+ };
436
+ };
437
+ //#endregion
438
+ //#region src/model-rate-policy.d.ts
439
+ declare const MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER: {
440
+ readonly google: "google";
441
+ readonly openai: "openai";
442
+ readonly anthropic: "anthropic";
443
+ readonly bedrock: "amazon-bedrock";
444
+ readonly mistral: "mistral";
445
+ };
446
+ type ModelsDevRateProvider = (typeof MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER)[keyof typeof MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER];
447
+ /**
448
+ * Explicit source coordinates for non-offered model IDs that remain valid in
449
+ * deployment overrides and usage attribution. Their numeric rates still come
450
+ * exclusively from models.dev.
451
+ */
452
+ declare const RETAINED_MODELS_DEV_RATE_ENTRIES: {
453
+ readonly "gemini-2.5-flash": {
454
+ readonly modelId: "gemini-2.5-flash";
455
+ readonly provider: "google";
456
+ };
457
+ readonly "gemini-2.5-pro": {
458
+ readonly modelId: "gemini-2.5-pro";
459
+ readonly provider: "google";
460
+ };
461
+ readonly "gpt-4o-mini": {
462
+ readonly modelId: "gpt-4o-mini";
463
+ readonly provider: "openai";
464
+ };
465
+ readonly "gpt-4o": {
466
+ readonly modelId: "gpt-4o";
467
+ readonly provider: "openai";
468
+ };
469
+ readonly "us.deepseek.r1-v1:0": {
470
+ readonly modelId: "us.deepseek.r1-v1:0";
471
+ readonly provider: "amazon-bedrock";
472
+ };
473
+ };
474
+ /**
475
+ * Exact mappings where Stella uses a provider routing ID while models.dev
476
+ * publishes pricing under the corresponding base model ID. Generation rejects
477
+ * a mapping once models.dev begins publishing the Stella ID directly, so the
478
+ * map is empty whenever upstream covers every offered ID.
479
+ */
480
+ declare const MODELS_DEV_RATE_SOURCE_ALIASES: {};
481
+ //#endregion
482
+ //#region src/capabilities-overrides.d.ts
483
+ /**
484
+ * Hand-declared capabilities for offered models that models.dev does
485
+ * not cover. The capability generator
486
+ * (`packages/scripts/src/model-catalog-capabilities-gen.ts`) refuses
487
+ * an override for any model the upstream source covers, so manual
488
+ * data cannot shadow sourced data — this file can only ever fill
489
+ * genuine gaps, each with a dated justification.
490
+ */
491
+ type CapabilityOverride = {
492
+ documentInput: boolean;
493
+ documentInputReason: string;
494
+ reasoningEfforts: readonly ReasoningEffort[] | null;
495
+ /** The most output tokens one response may carry, from the provider docs. */
496
+ outputTokens: number;
497
+ temperatureSupported: boolean;
498
+ /**
499
+ * Every role sends tool definitions or structured output, so an
500
+ * offered model must accept tools.
501
+ */
502
+ toolCalling: true;
503
+ /** Why the upstream source cannot answer for this model. Dated. */
504
+ reason: string;
505
+ };
506
+ declare const CAPABILITY_OVERRIDES: Partial<Record<OfferedBYOKModelId, CapabilityOverride>>;
507
+ type ImageInputOverride = {
508
+ supported: boolean;
509
+ /** Dated correction with an official provider documentation URL. */
510
+ reason: string;
511
+ };
512
+ type ImageInputOverrides = { [TProvider in BYOKProvider]?: Partial<Record<BYOKModelIdByProvider[TProvider], ImageInputOverride>>; };
513
+ /** Only official provider documentation may override input-modality evidence. */
514
+ declare const IMAGE_INPUT_OVERRIDES: ImageInputOverrides;
515
+ //#endregion
516
+ //#region src/document-input-overrides.d.ts
517
+ type DocumentInputOverride = {
518
+ /** Whether the model accepts a PDF/file content part. */
519
+ supported: boolean;
520
+ /** Why the live catalogue cannot answer correctly. Dated. */
521
+ reason: string;
522
+ };
523
+ /**
524
+ * Reviewed document-input corrections for models.dev records that exist but
525
+ * under-report the provider API's file-input support. The generator rejects an
526
+ * override once upstream agrees, so sourced data takes ownership automatically.
527
+ */
528
+ declare const DOCUMENT_INPUT_OVERRIDES: Partial<Record<OfferedBYOKModelId, DocumentInputOverride>>;
529
+ //#endregion
530
+ //#region src/capabilities.gen.d.ts
531
+ /** Every offered provider/model pair has explicit image-input evidence. */
532
+ declare const MODEL_IMAGE_INPUT_CAPABILITIES: {
533
+ readonly google: {
534
+ readonly "gemini-3.8-flash": "supported";
535
+ readonly "gemini-3.7-flash": "supported";
536
+ readonly "gemini-3.6-flash": "supported";
537
+ readonly "gemini-3.5-flash-lite": "supported";
538
+ readonly "gemini-3.1-pro-preview": "supported";
539
+ readonly "gemini-3.5-flash": "supported";
540
+ readonly "gemini-3.1-flash-lite": "supported";
541
+ };
542
+ readonly openrouter: {
543
+ readonly "openai/gpt-6.1-sol": "supported";
544
+ readonly "openai/gpt-6-astra": "supported";
545
+ readonly "openai/gpt-6-sol": "supported";
546
+ readonly "openai/gpt-6-luna": "supported";
547
+ readonly "openai/gpt-5.6-sol": "supported";
548
+ readonly "openai/gpt-5.6-terra": "supported";
549
+ readonly "openai/gpt-5.6-luna": "supported";
550
+ readonly "google/gemini-3.8-flash": "supported";
551
+ readonly "google/gemini-3.7-flash": "supported";
552
+ readonly "google/gemini-3.6-flash": "supported";
553
+ readonly "google/gemini-3.5-flash-lite": "supported";
554
+ readonly "google/gemini-3.1-pro-preview": "supported";
555
+ readonly "google/gemini-3.5-flash": "supported";
556
+ readonly "google/gemini-3.1-flash-lite": "supported";
557
+ readonly "anthropic/claude-sonnet-5.5": "supported";
558
+ readonly "anthropic/claude-sonnet-5": "supported";
559
+ readonly "anthropic/claude-opus-5": "supported";
560
+ readonly "anthropic/claude-opus-4.8": "supported";
561
+ readonly "anthropic/claude-sonnet-4.6": "supported";
562
+ readonly "openai/gpt-5.5": "supported";
563
+ readonly "openai/gpt-5.4-mini": "supported";
564
+ };
565
+ readonly openai: {
566
+ readonly "gpt-6.1-sol": "supported";
567
+ readonly "gpt-6-astra": "supported";
568
+ readonly "gpt-6-sol": "supported";
569
+ readonly "gpt-6-luna": "supported";
570
+ readonly "gpt-5.6": "supported";
571
+ readonly "gpt-5.6-terra": "supported";
572
+ readonly "gpt-5.6-luna": "supported";
573
+ readonly "gpt-5.5": "supported";
574
+ readonly "gpt-5.4": "supported";
575
+ readonly "gpt-5.4-mini": "supported";
576
+ readonly "gpt-5.4-nano": "supported";
577
+ readonly "gpt-5.2": "supported";
578
+ };
579
+ readonly anthropic: {
580
+ readonly "claude-sonnet-5-5": "supported";
581
+ readonly "claude-sonnet-5": "supported";
582
+ readonly "claude-fable-5-1": "supported";
583
+ readonly "claude-fable-5": "supported";
584
+ readonly "claude-opus-5-5": "supported";
585
+ readonly "claude-opus-5": "supported";
586
+ readonly "claude-opus-4-8": "supported";
587
+ readonly "claude-opus-4-7": "supported";
588
+ readonly "claude-sonnet-4-6": "supported";
589
+ readonly "claude-opus-4-6": "supported";
590
+ readonly "claude-haiku-4-5-20251001": "supported";
591
+ };
592
+ readonly bedrock: {
593
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "supported";
594
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": "supported";
595
+ readonly "us.amazon.nova-pro-v1:0": "supported";
596
+ readonly "us.amazon.nova-lite-v1:0": "supported";
597
+ readonly "us.amazon.nova-micro-v1:0": "unsupported";
598
+ readonly "openai.gpt-oss-120b-1:0": "unsupported";
599
+ readonly "openai.gpt-oss-20b-1:0": "unsupported";
600
+ };
601
+ readonly mistral: {
602
+ readonly "mistral-large-4": "supported";
603
+ readonly "mistral-large-latest": "supported";
604
+ readonly "mistral-medium-latest": "supported";
605
+ readonly "mistral-small-latest": "supported";
606
+ };
607
+ };
608
+ /**
609
+ * Reasoning-effort values each offered model accepts, `null` when the
610
+ * model exposes no effort-style reasoning control. A missing `"none"`
611
+ * means the model's reasoning cannot be disabled; consumers must go
612
+ * through `resolveReasoningEffort`.
613
+ */
614
+ declare const MODEL_REASONING_EFFORTS: {
615
+ readonly "gemini-3.8-flash": readonly ["low", "medium", "high"];
616
+ readonly "gemini-3.7-flash": readonly ["low", "medium", "high"];
617
+ readonly "gemini-3.6-flash": readonly ["minimal", "low", "medium", "high"];
618
+ readonly "gemini-3.5-flash-lite": readonly ["minimal", "low", "medium", "high"];
619
+ readonly "gemini-3.1-pro-preview": readonly ["low", "medium", "high"];
620
+ readonly "gemini-3.5-flash": readonly ["minimal", "low", "medium", "high"];
621
+ readonly "gemini-3.1-flash-lite": readonly ["minimal", "low", "medium", "high"];
622
+ readonly "openai/gpt-6.1-sol": readonly ["low", "medium", "high", "xhigh", "max"];
623
+ readonly "openai/gpt-6-astra": readonly ["low", "medium", "high", "xhigh", "max"];
624
+ readonly "openai/gpt-6-sol": readonly ["none", "low", "medium", "high", "xhigh", "max"];
625
+ readonly "openai/gpt-6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
626
+ readonly "openai/gpt-5.6-sol": readonly ["none", "low", "medium", "high", "xhigh", "max"];
627
+ readonly "openai/gpt-5.6-terra": readonly ["none", "low", "medium", "high", "xhigh", "max"];
628
+ readonly "openai/gpt-5.6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
629
+ readonly "google/gemini-3.8-flash": readonly ["low", "medium", "high"];
630
+ readonly "google/gemini-3.7-flash": readonly ["low", "medium", "high"];
631
+ readonly "google/gemini-3.6-flash": readonly ["minimal", "low", "medium", "high"];
632
+ readonly "google/gemini-3.5-flash-lite": readonly ["minimal", "low", "medium", "high"];
633
+ readonly "google/gemini-3.1-pro-preview": readonly ["low", "medium", "high"];
634
+ readonly "google/gemini-3.5-flash": readonly ["minimal", "low", "medium", "high"];
635
+ readonly "google/gemini-3.1-flash-lite": readonly ["none", "minimal", "low", "medium", "high"];
636
+ readonly "anthropic/claude-sonnet-5.5": readonly ["low", "medium", "high", "xhigh", "max"];
637
+ readonly "anthropic/claude-sonnet-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
638
+ readonly "anthropic/claude-opus-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
639
+ readonly "anthropic/claude-opus-4.8": readonly ["none", "low", "medium", "high", "xhigh", "max"];
640
+ readonly "anthropic/claude-sonnet-4.6": readonly ["none", "low", "medium", "high", "max"];
641
+ readonly "openai/gpt-5.5": readonly ["none", "low", "medium", "high", "xhigh"];
642
+ readonly "openai/gpt-5.4-mini": readonly ["none", "low", "medium", "high", "xhigh"];
643
+ readonly "gpt-6.1-sol": readonly ["low", "medium", "high", "xhigh", "max"];
644
+ readonly "gpt-6-astra": readonly ["low", "medium", "high", "xhigh", "max"];
645
+ readonly "gpt-6-sol": readonly ["none", "low", "medium", "high", "xhigh", "max"];
646
+ readonly "gpt-6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
647
+ readonly "gpt-5.6": readonly ["none", "low", "medium", "high", "xhigh", "max"];
648
+ readonly "gpt-5.6-terra": readonly ["none", "low", "medium", "high", "xhigh", "max"];
649
+ readonly "gpt-5.6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
650
+ readonly "gpt-5.5": readonly ["none", "low", "medium", "high", "xhigh"];
651
+ readonly "gpt-5.4": readonly ["none", "low", "medium", "high", "xhigh"];
652
+ readonly "gpt-5.4-mini": readonly ["none", "low", "medium", "high", "xhigh"];
653
+ readonly "gpt-5.4-nano": readonly ["none", "low", "medium", "high", "xhigh"];
654
+ readonly "gpt-5.2": readonly ["none", "low", "medium", "high", "xhigh"];
655
+ readonly "claude-sonnet-5-5": readonly ["low", "medium", "high", "xhigh", "max"];
656
+ readonly "claude-sonnet-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
657
+ readonly "claude-fable-5-1": readonly ["low", "medium", "high", "xhigh", "max"];
658
+ readonly "claude-fable-5": readonly ["low", "medium", "high", "xhigh", "max"];
659
+ readonly "claude-opus-5-5": readonly ["low", "medium", "high", "xhigh", "max"];
660
+ readonly "claude-opus-5": readonly ["low", "medium", "high", "xhigh", "max"];
661
+ readonly "claude-opus-4-8": readonly ["low", "medium", "high", "xhigh", "max"];
662
+ readonly "claude-opus-4-7": readonly ["low", "medium", "high", "xhigh", "max"];
663
+ readonly "claude-sonnet-4-6": readonly ["low", "medium", "high", "max"];
664
+ readonly "claude-opus-4-6": readonly ["low", "medium", "high", "max"];
665
+ readonly "claude-haiku-4-5-20251001": null;
666
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": null;
667
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": null;
668
+ readonly "us.amazon.nova-pro-v1:0": null;
669
+ readonly "us.amazon.nova-lite-v1:0": null;
670
+ readonly "us.amazon.nova-micro-v1:0": null;
671
+ readonly "openai.gpt-oss-120b-1:0": readonly ["low", "medium", "high"];
672
+ readonly "openai.gpt-oss-20b-1:0": readonly ["low", "medium", "high"];
673
+ readonly "mistral-large-4": readonly ["none", "high"];
674
+ readonly "mistral-large-latest": null;
675
+ readonly "mistral-medium-latest": readonly ["none", "high"];
676
+ readonly "mistral-small-latest": readonly ["none", "high"];
677
+ };
678
+ /**
679
+ * Concrete provider-default effort where the upstream catalogue publishes
680
+ * one. OpenRouter is the source today; null means the provider does not expose
681
+ * a truthful named default, so clients must retain a separate Default choice.
682
+ */
683
+ declare const MODEL_DEFAULT_REASONING_EFFORTS: {
684
+ readonly "gemini-3.8-flash": null;
685
+ readonly "gemini-3.7-flash": null;
686
+ readonly "gemini-3.6-flash": null;
687
+ readonly "gemini-3.5-flash-lite": null;
688
+ readonly "gemini-3.1-pro-preview": null;
689
+ readonly "gemini-3.5-flash": null;
690
+ readonly "gemini-3.1-flash-lite": null;
691
+ readonly "openai/gpt-6.1-sol": "medium";
692
+ readonly "openai/gpt-6-astra": "medium";
693
+ readonly "openai/gpt-6-sol": "medium";
694
+ readonly "openai/gpt-6-luna": "medium";
695
+ readonly "openai/gpt-5.6-sol": "medium";
696
+ readonly "openai/gpt-5.6-terra": "medium";
697
+ readonly "openai/gpt-5.6-luna": "medium";
698
+ readonly "google/gemini-3.8-flash": "medium";
699
+ readonly "google/gemini-3.7-flash": "medium";
700
+ readonly "google/gemini-3.6-flash": "medium";
701
+ readonly "google/gemini-3.5-flash-lite": "minimal";
702
+ readonly "google/gemini-3.1-pro-preview": "medium";
703
+ readonly "google/gemini-3.5-flash": "medium";
704
+ readonly "google/gemini-3.1-flash-lite": "minimal";
705
+ readonly "anthropic/claude-sonnet-5.5": "high";
706
+ readonly "anthropic/claude-sonnet-5": "high";
707
+ readonly "anthropic/claude-opus-5": "high";
708
+ readonly "anthropic/claude-opus-4.8": "high";
709
+ readonly "anthropic/claude-sonnet-4.6": "medium";
710
+ readonly "openai/gpt-5.5": "medium";
711
+ readonly "openai/gpt-5.4-mini": "medium";
712
+ readonly "gpt-6.1-sol": null;
713
+ readonly "gpt-6-astra": null;
714
+ readonly "gpt-6-sol": null;
715
+ readonly "gpt-6-luna": null;
716
+ readonly "gpt-5.6": null;
717
+ readonly "gpt-5.6-terra": null;
718
+ readonly "gpt-5.6-luna": null;
719
+ readonly "gpt-5.5": null;
720
+ readonly "gpt-5.4": null;
721
+ readonly "gpt-5.4-mini": null;
722
+ readonly "gpt-5.4-nano": null;
723
+ readonly "gpt-5.2": null;
724
+ readonly "claude-sonnet-5-5": null;
725
+ readonly "claude-sonnet-5": null;
726
+ readonly "claude-fable-5-1": null;
727
+ readonly "claude-fable-5": null;
728
+ readonly "claude-opus-5-5": null;
729
+ readonly "claude-opus-5": null;
730
+ readonly "claude-opus-4-8": null;
731
+ readonly "claude-opus-4-7": null;
732
+ readonly "claude-sonnet-4-6": null;
733
+ readonly "claude-opus-4-6": null;
734
+ readonly "claude-haiku-4-5-20251001": null;
735
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": null;
736
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": null;
737
+ readonly "us.amazon.nova-pro-v1:0": null;
738
+ readonly "us.amazon.nova-lite-v1:0": null;
739
+ readonly "us.amazon.nova-micro-v1:0": null;
740
+ readonly "openai.gpt-oss-120b-1:0": null;
741
+ readonly "openai.gpt-oss-20b-1:0": null;
742
+ readonly "mistral-large-4": null;
743
+ readonly "mistral-large-latest": null;
744
+ readonly "mistral-medium-latest": null;
745
+ readonly "mistral-small-latest": null;
746
+ };
747
+ /**
748
+ * Whether stella should emit a `temperature` sampling override.
749
+ * `"omit"` covers rejected, deprecated, and accepted-but-ignored
750
+ * parameters. Consumers must go through `shouldEmitTemperature`.
751
+ */
752
+ declare const MODEL_TEMPERATURE_POLICIES: {
753
+ readonly "gemini-3.8-flash": "omit";
754
+ readonly "gemini-3.7-flash": "omit";
755
+ readonly "gemini-3.6-flash": "omit";
756
+ readonly "gemini-3.5-flash-lite": "omit";
757
+ readonly "gemini-3.1-pro-preview": "emit";
758
+ readonly "gemini-3.5-flash": "emit";
759
+ readonly "gemini-3.1-flash-lite": "emit";
760
+ readonly "openai/gpt-6.1-sol": "omit";
761
+ readonly "openai/gpt-6-astra": "omit";
762
+ readonly "openai/gpt-6-sol": "omit";
763
+ readonly "openai/gpt-6-luna": "omit";
764
+ readonly "openai/gpt-5.6-sol": "omit";
765
+ readonly "openai/gpt-5.6-terra": "omit";
766
+ readonly "openai/gpt-5.6-luna": "omit";
767
+ readonly "google/gemini-3.8-flash": "omit";
768
+ readonly "google/gemini-3.7-flash": "omit";
769
+ readonly "google/gemini-3.6-flash": "omit";
770
+ readonly "google/gemini-3.5-flash-lite": "omit";
771
+ readonly "google/gemini-3.1-pro-preview": "emit";
772
+ readonly "google/gemini-3.5-flash": "emit";
773
+ readonly "google/gemini-3.1-flash-lite": "emit";
774
+ readonly "anthropic/claude-sonnet-5.5": "emit";
775
+ readonly "anthropic/claude-sonnet-5": "omit";
776
+ readonly "anthropic/claude-opus-5": "emit";
777
+ readonly "anthropic/claude-opus-4.8": "emit";
778
+ readonly "anthropic/claude-sonnet-4.6": "emit";
779
+ readonly "openai/gpt-5.5": "omit";
780
+ readonly "openai/gpt-5.4-mini": "omit";
781
+ readonly "gpt-6.1-sol": "omit";
782
+ readonly "gpt-6-astra": "omit";
783
+ readonly "gpt-6-sol": "omit";
784
+ readonly "gpt-6-luna": "omit";
785
+ readonly "gpt-5.6": "omit";
786
+ readonly "gpt-5.6-terra": "omit";
787
+ readonly "gpt-5.6-luna": "omit";
788
+ readonly "gpt-5.5": "omit";
789
+ readonly "gpt-5.4": "emit";
790
+ readonly "gpt-5.4-mini": "emit";
791
+ readonly "gpt-5.4-nano": "emit";
792
+ readonly "gpt-5.2": "emit";
793
+ readonly "claude-sonnet-5-5": "omit";
794
+ readonly "claude-sonnet-5": "omit";
795
+ readonly "claude-fable-5-1": "omit";
796
+ readonly "claude-fable-5": "omit";
797
+ readonly "claude-opus-5-5": "omit";
798
+ readonly "claude-opus-5": "omit";
799
+ readonly "claude-opus-4-8": "omit";
800
+ readonly "claude-opus-4-7": "omit";
801
+ readonly "claude-sonnet-4-6": "emit";
802
+ readonly "claude-opus-4-6": "emit";
803
+ readonly "claude-haiku-4-5-20251001": "emit";
804
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "emit";
805
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": "emit";
806
+ readonly "us.amazon.nova-pro-v1:0": "emit";
807
+ readonly "us.amazon.nova-lite-v1:0": "emit";
808
+ readonly "us.amazon.nova-micro-v1:0": "emit";
809
+ readonly "openai.gpt-oss-120b-1:0": "emit";
810
+ readonly "openai.gpt-oss-20b-1:0": "emit";
811
+ readonly "mistral-large-4": "emit";
812
+ readonly "mistral-large-latest": "emit";
813
+ readonly "mistral-medium-latest": "emit";
814
+ readonly "mistral-small-latest": "emit";
815
+ };
816
+ /**
817
+ * The most output tokens one response of each offered model may carry
818
+ * (models.dev `limit.output`). Consumers must go through
819
+ * `getOutputTokenLimit`.
820
+ */
821
+ declare const MODEL_OUTPUT_TOKEN_LIMITS: {
822
+ readonly "gemini-3.8-flash": 65536;
823
+ readonly "gemini-3.7-flash": 65536;
824
+ readonly "gemini-3.6-flash": 65536;
825
+ readonly "gemini-3.5-flash-lite": 65536;
826
+ readonly "gemini-3.1-pro-preview": 65536;
827
+ readonly "gemini-3.5-flash": 65536;
828
+ readonly "gemini-3.1-flash-lite": 65536;
829
+ readonly "openai/gpt-6.1-sol": 128000;
830
+ readonly "openai/gpt-6-astra": 128000;
831
+ readonly "openai/gpt-6-sol": 128000;
832
+ readonly "openai/gpt-6-luna": 128000;
833
+ readonly "openai/gpt-5.6-sol": 128000;
834
+ readonly "openai/gpt-5.6-terra": 128000;
835
+ readonly "openai/gpt-5.6-luna": 128000;
836
+ readonly "google/gemini-3.8-flash": 65536;
837
+ readonly "google/gemini-3.7-flash": 65536;
838
+ readonly "google/gemini-3.6-flash": 65536;
839
+ readonly "google/gemini-3.5-flash-lite": 65536;
840
+ readonly "google/gemini-3.1-pro-preview": 65536;
841
+ readonly "google/gemini-3.5-flash": 65536;
842
+ readonly "google/gemini-3.1-flash-lite": 65536;
843
+ readonly "anthropic/claude-sonnet-5.5": 128000;
844
+ readonly "anthropic/claude-sonnet-5": 128000;
845
+ readonly "anthropic/claude-opus-5": 128000;
846
+ readonly "anthropic/claude-opus-4.8": 128000;
847
+ readonly "anthropic/claude-sonnet-4.6": 128000;
848
+ readonly "openai/gpt-5.5": 128000;
849
+ readonly "openai/gpt-5.4-mini": 128000;
850
+ readonly "gpt-6.1-sol": 128000;
851
+ readonly "gpt-6-astra": 128000;
852
+ readonly "gpt-6-sol": 128000;
853
+ readonly "gpt-6-luna": 128000;
854
+ readonly "gpt-5.6": 128000;
855
+ readonly "gpt-5.6-terra": 128000;
856
+ readonly "gpt-5.6-luna": 128000;
857
+ readonly "gpt-5.5": 128000;
858
+ readonly "gpt-5.4": 128000;
859
+ readonly "gpt-5.4-mini": 128000;
860
+ readonly "gpt-5.4-nano": 128000;
861
+ readonly "gpt-5.2": 128000;
862
+ readonly "claude-sonnet-5-5": 128000;
863
+ readonly "claude-sonnet-5": 128000;
864
+ readonly "claude-fable-5-1": 128000;
865
+ readonly "claude-fable-5": 128000;
866
+ readonly "claude-opus-5-5": 128000;
867
+ readonly "claude-opus-5": 128000;
868
+ readonly "claude-opus-4-8": 128000;
869
+ readonly "claude-opus-4-7": 128000;
870
+ readonly "claude-sonnet-4-6": 128000;
871
+ readonly "claude-opus-4-6": 128000;
872
+ readonly "claude-haiku-4-5-20251001": 64000;
873
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": 64000;
874
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": 64000;
875
+ readonly "us.amazon.nova-pro-v1:0": 10000;
876
+ readonly "us.amazon.nova-lite-v1:0": 10000;
877
+ readonly "us.amazon.nova-micro-v1:0": 10000;
878
+ readonly "openai.gpt-oss-120b-1:0": 128000;
879
+ readonly "openai.gpt-oss-20b-1:0": 128000;
880
+ readonly "mistral-large-4": 262144;
881
+ readonly "mistral-large-latest": 262144;
882
+ readonly "mistral-medium-latest": 262144;
883
+ readonly "mistral-small-latest": 256000;
884
+ };
885
+ //#endregion
886
+ //#region src/index.d.ts
887
+ /**
888
+ * Logical model roles. Call sites declare *what* they need, not
889
+ * *which* model to use.
890
+ *
891
+ * - fast: classification, extraction, short generation
892
+ * - chat: conversational with tool use and streaming
893
+ * - reasoning: complex multi-step legal analysis
894
+ * - pdf: native PDF/image understanding
895
+ */
896
+ declare const MODEL_ROLES: readonly ["fast", "chat", "reasoning", "pdf"];
897
+ type ModelRole = (typeof MODEL_ROLES)[number];
898
+ declare const TEMPERATURE_POLICIES: readonly ["emit", "omit"];
899
+ type TemperaturePolicy = (typeof TEMPERATURE_POLICIES)[number];
900
+ declare const IMAGE_INPUT_CAPABILITIES: readonly ["supported", "unsupported", "unknown"];
901
+ type ImageInputCapability = (typeof IMAGE_INPUT_CAPABILITIES)[number];
902
+ declare const STREAMING_TOOL_USE_SUPPORTS: readonly ["supported", "unsupported"];
903
+ type StreamingToolUseSupport = (typeof STREAMING_TOOL_USE_SUPPORTS)[number];
904
+ declare const AI_PROVIDERS: readonly ["google", "openrouter", "openai", "azure_foundry", "anthropic", "bedrock", "mistral", "openai_compatible", "huggingface"];
905
+ type AIProvider = (typeof AI_PROVIDERS)[number];
906
+ declare const AI_PROVIDER_ADAPTER_KIND: {
907
+ readonly google: "tanstack";
908
+ readonly openrouter: "tanstack";
909
+ readonly openai: "tanstack";
910
+ readonly azure_foundry: "custom";
911
+ readonly anthropic: "tanstack";
912
+ readonly bedrock: "tanstack";
913
+ readonly mistral: "tanstack";
914
+ readonly openai_compatible: "custom";
915
+ readonly huggingface: "custom";
916
+ };
917
+ type TanStackAIProvider = { [TProvider in AIProvider]: (typeof AI_PROVIDER_ADAPTER_KIND)[TProvider] extends "tanstack" ? TProvider : never; }[AIProvider];
918
+ declare const TANSTACK_AI_PROVIDERS: readonly ["google", "openrouter", "openai", "anthropic", "bedrock", "mistral"];
919
+ declare const MODEL_CATALOG_PROVIDER_KIND: {
920
+ readonly google: "first-party";
921
+ readonly openrouter: "aggregator";
922
+ readonly openai: "first-party";
923
+ readonly anthropic: "first-party";
924
+ readonly bedrock: "platform";
925
+ readonly mistral: "first-party";
926
+ };
927
+ /** Providers whose picker IDs map directly to public first-party catalogs. */
928
+ type FirstPartyModelProvider = { [TProvider in TanStackAIProvider]: (typeof MODEL_CATALOG_PROVIDER_KIND)[TProvider] extends "first-party" ? TProvider : never; }[TanStackAIProvider];
929
+ declare const FIRST_PARTY_MODEL_PROVIDER_VALUES: readonly ["google", "openai", "anthropic", "mistral"];
930
+ /**
931
+ * Runtime form of the first-party provider union. The conditional annotation
932
+ * makes adding a first-party policy without adding its discovery implementation
933
+ * a compile error.
934
+ */
935
+ declare const FIRST_PARTY_MODEL_PROVIDERS: Exclude<FirstPartyModelProvider, (typeof FIRST_PARTY_MODEL_PROVIDER_VALUES)[number]> extends never ? typeof FIRST_PARTY_MODEL_PROVIDER_VALUES : never;
936
+ /**
937
+ * Per-role default model IDs for the BYOK-capable cloud providers.
938
+ * Shared between the instance default table (`DEFAULT_MODELS`) and the
939
+ * settings-UI default selection, so a default is defined exactly once.
940
+ */
941
+ declare const BYOK_DEFAULT_MODELS: {
942
+ readonly google: {
943
+ readonly fast: "gemini-3.8-flash";
944
+ readonly chat: "gemini-3.8-flash";
945
+ readonly reasoning: "gemini-3.8-flash";
946
+ readonly pdf: "gemini-3.8-flash";
947
+ };
948
+ readonly openrouter: {
949
+ readonly fast: "openai/gpt-6-luna";
950
+ readonly chat: "openai/gpt-6-sol";
951
+ readonly reasoning: "openai/gpt-6-sol";
952
+ readonly pdf: "openai/gpt-6-sol";
953
+ };
954
+ readonly openai: {
955
+ readonly fast: "gpt-6-luna";
956
+ readonly chat: "gpt-6-sol";
957
+ readonly reasoning: "gpt-6-sol";
958
+ readonly pdf: "gpt-6-sol";
959
+ };
960
+ readonly anthropic: {
961
+ readonly fast: "claude-opus-5-5";
962
+ readonly chat: "claude-opus-5-5";
963
+ readonly reasoning: "claude-opus-5-5";
964
+ readonly pdf: "claude-opus-5-5";
965
+ };
966
+ readonly bedrock: {
967
+ readonly fast: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
968
+ readonly chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
969
+ readonly reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
970
+ readonly pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
971
+ };
972
+ readonly mistral: {
973
+ readonly fast: "mistral-small-latest";
974
+ readonly chat: "mistral-medium-latest";
975
+ readonly reasoning: "mistral-medium-latest";
976
+ readonly pdf: "mistral-large-latest";
977
+ };
978
+ };
979
+ /**
980
+ * Instance-level default model IDs per provider. Extends the BYOK
981
+ * defaults with the providers that only the instance path uses
982
+ * (custom deployments and OpenAI-compatible endpoints).
983
+ */
984
+ declare const DEFAULT_MODELS: {
985
+ readonly azure_foundry: {
986
+ readonly fast: "gpt-5.6-luna";
987
+ readonly chat: "gpt-5.6-terra";
988
+ readonly reasoning: "gpt-5.6-terra";
989
+ readonly pdf: "gpt-5.6-terra";
990
+ };
991
+ readonly openai_compatible: {
992
+ readonly fast: "default";
993
+ readonly chat: "default";
994
+ readonly reasoning: "default";
995
+ readonly pdf: "default";
996
+ };
997
+ readonly huggingface: {
998
+ readonly fast: "speakleash/Bielik-1.5B-v3.0-Instruct";
999
+ readonly chat: "speakleash/Bielik-11B-v2.3-Instruct";
1000
+ readonly reasoning: "speakleash/Bielik-11B-v2.3-Instruct";
1001
+ readonly pdf: "speakleash/Bielik-11B-v2.3-Instruct";
1002
+ };
1003
+ readonly google: {
1004
+ readonly fast: "gemini-3.8-flash";
1005
+ readonly chat: "gemini-3.8-flash";
1006
+ readonly reasoning: "gemini-3.8-flash";
1007
+ readonly pdf: "gemini-3.8-flash";
1008
+ };
1009
+ readonly openrouter: {
1010
+ readonly fast: "openai/gpt-6-luna";
1011
+ readonly chat: "openai/gpt-6-sol";
1012
+ readonly reasoning: "openai/gpt-6-sol";
1013
+ readonly pdf: "openai/gpt-6-sol";
1014
+ };
1015
+ readonly openai: {
1016
+ readonly fast: "gpt-6-luna";
1017
+ readonly chat: "gpt-6-sol";
1018
+ readonly reasoning: "gpt-6-sol";
1019
+ readonly pdf: "gpt-6-sol";
1020
+ };
1021
+ readonly anthropic: {
1022
+ readonly fast: "claude-opus-5-5";
1023
+ readonly chat: "claude-opus-5-5";
1024
+ readonly reasoning: "claude-opus-5-5";
1025
+ readonly pdf: "claude-opus-5-5";
1026
+ };
1027
+ readonly bedrock: {
1028
+ readonly fast: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
1029
+ readonly chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
1030
+ readonly reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
1031
+ readonly pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
1032
+ };
1033
+ readonly mistral: {
1034
+ readonly fast: "mistral-small-latest";
1035
+ readonly chat: "mistral-medium-latest";
1036
+ readonly reasoning: "mistral-medium-latest";
1037
+ readonly pdf: "mistral-large-latest";
1038
+ };
1039
+ };
1040
+ /**
1041
+ * BYOK-offered model IDs per provider — the curated catalog users pick
1042
+ * from in org settings, and the server-side allowlist the API enforces.
1043
+ * The frontend list is not a security boundary; this is what the API
1044
+ * accepts.
1045
+ *
1046
+ * Limited to providers the TanStack AI integration supports for BYOK.
1047
+ * Providers without a first-class TanStack adapter path are intentionally
1048
+ * not accepted at this boundary.
1049
+ */
1050
+ declare const BYOK_MODEL_OPTIONS: {
1051
+ readonly google: readonly ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3.1-pro-preview", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
1052
+ readonly anthropic: readonly ["claude-sonnet-5-5", "claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
1053
+ readonly openai: readonly [...("gpt-6.1-sol" | "gpt-6-astra" | "gpt-6-sol" | "gpt-6-luna" | "gpt-5.6" | "gpt-5.6-terra" | "gpt-5.6-luna")[], "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
1054
+ readonly openrouter: readonly [...("openai/gpt-6.1-sol" | "openai/gpt-6-astra" | "openai/gpt-6-sol" | "openai/gpt-6-luna" | "openai/gpt-5.6-sol" | "openai/gpt-5.6-terra" | "openai/gpt-5.6-luna")[], "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5.5", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
1055
+ readonly bedrock: readonly ["us.anthropic.claude-sonnet-4-5-20250929-v1:0", "us.anthropic.claude-haiku-4-5-20251001-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0", "us.amazon.nova-micro-v1:0", "openai.gpt-oss-120b-1:0", "openai.gpt-oss-20b-1:0"];
1056
+ readonly mistral: readonly ["mistral-large-4", "mistral-large-latest", "mistral-medium-latest", "mistral-small-latest"];
1057
+ };
1058
+ type BYOKProvider = keyof typeof BYOK_MODEL_OPTIONS;
1059
+ type BYOKModelIdByProvider = { [TProvider in BYOKProvider]: (typeof BYOK_MODEL_OPTIONS)[TProvider][number]; };
1060
+ type OfferedBYOKModelId = BYOKModelIdByProvider[BYOKProvider];
1061
+ type ModelDisplayMetadata = {
1062
+ /** Human-readable product name; model names are trademarks and stay untranslated. */
1063
+ displayName: string;
1064
+ /** Brand mark to show. This may differ from the routing provider. */
1065
+ iconProvider: BYOKProvider;
1066
+ /**
1067
+ * A newer model of the same line, preferably on the same route. A superseded
1068
+ * model stays selectable but is never recommended.
1069
+ */
1070
+ supersededBy?: string;
1071
+ };
1072
+ /**
1073
+ * The chat model picker's Recommended section: a reviewed, curated list of
1074
+ * the latest generation per maker. Benchmarks inform ordering and hints but
1075
+ * never pick these. Every route to a listed model qualifies; a listed model
1076
+ * must not be superseded (model-lineage.test.ts).
1077
+ */
1078
+ declare const RECOMMENDED_CHAT_MODELS: readonly ["claude-opus-5-5", "gpt-6.1-sol", "gpt-6-luna", "gemini-3.8-flash"];
1079
+ /**
1080
+ * Presentation metadata for every offered model. Keeping this exhaustive beside
1081
+ * the allowlist prevents a newly offered model from leaking a raw provider ID
1082
+ * into user-facing pickers. OpenRouter entries deliberately carry their model
1083
+ * creator's icon while their routing provider remains available separately.
1084
+ */
1085
+ declare const MODEL_DISPLAY_METADATA: {
1086
+ readonly "gemini-3.8-flash": {
1087
+ readonly displayName: "Gemini 3.8 Flash";
1088
+ readonly iconProvider: "google";
1089
+ };
1090
+ readonly "gemini-3.7-flash": {
1091
+ readonly displayName: "Gemini 3.7 Flash";
1092
+ readonly iconProvider: "google";
1093
+ readonly supersededBy: "gemini-3.8-flash";
1094
+ };
1095
+ readonly "gemini-3.6-flash": {
1096
+ readonly displayName: "Gemini 3.6 Flash";
1097
+ readonly iconProvider: "google";
1098
+ readonly supersededBy: "gemini-3.8-flash";
1099
+ };
1100
+ readonly "gemini-3.5-flash-lite": {
1101
+ readonly displayName: "Gemini 3.5 Flash Lite";
1102
+ readonly iconProvider: "google";
1103
+ };
1104
+ readonly "gemini-3.1-pro-preview": {
1105
+ readonly displayName: "Gemini 3.1 Pro Preview";
1106
+ readonly iconProvider: "google";
1107
+ };
1108
+ readonly "gemini-3.5-flash": {
1109
+ readonly displayName: "Gemini 3.5 Flash";
1110
+ readonly iconProvider: "google";
1111
+ readonly supersededBy: "gemini-3.8-flash";
1112
+ };
1113
+ readonly "gemini-3.1-flash-lite": {
1114
+ readonly displayName: "Gemini 3.1 Flash Lite";
1115
+ readonly iconProvider: "google";
1116
+ readonly supersededBy: "gemini-3.5-flash-lite";
1117
+ };
1118
+ readonly "claude-sonnet-5-5": {
1119
+ readonly displayName: "Claude Sonnet 5.5";
1120
+ readonly iconProvider: "anthropic";
1121
+ };
1122
+ readonly "claude-sonnet-5": {
1123
+ readonly displayName: "Claude Sonnet 5";
1124
+ readonly iconProvider: "anthropic";
1125
+ readonly supersededBy: "claude-sonnet-5-5";
1126
+ };
1127
+ readonly "claude-fable-5-1": {
1128
+ readonly displayName: "Claude Fable 5.1";
1129
+ readonly iconProvider: "anthropic";
1130
+ };
1131
+ readonly "claude-fable-5": {
1132
+ readonly displayName: "Claude Fable 5";
1133
+ readonly iconProvider: "anthropic";
1134
+ readonly supersededBy: "claude-fable-5-1";
1135
+ };
1136
+ readonly "claude-opus-5-5": {
1137
+ readonly displayName: "Claude Opus 5.5";
1138
+ readonly iconProvider: "anthropic";
1139
+ };
1140
+ readonly "claude-opus-5": {
1141
+ readonly displayName: "Claude Opus 5";
1142
+ readonly iconProvider: "anthropic";
1143
+ readonly supersededBy: "claude-opus-5-5";
1144
+ };
1145
+ readonly "claude-opus-4-8": {
1146
+ readonly displayName: "Claude Opus 4.8";
1147
+ readonly iconProvider: "anthropic";
1148
+ readonly supersededBy: "claude-opus-5-5";
1149
+ };
1150
+ readonly "claude-opus-4-7": {
1151
+ readonly displayName: "Claude Opus 4.7";
1152
+ readonly iconProvider: "anthropic";
1153
+ readonly supersededBy: "claude-opus-5-5";
1154
+ };
1155
+ readonly "claude-sonnet-4-6": {
1156
+ readonly displayName: "Claude Sonnet 4.6";
1157
+ readonly iconProvider: "anthropic";
1158
+ readonly supersededBy: "claude-sonnet-5-5";
1159
+ };
1160
+ readonly "claude-opus-4-6": {
1161
+ readonly displayName: "Claude Opus 4.6";
1162
+ readonly iconProvider: "anthropic";
1163
+ readonly supersededBy: "claude-opus-5-5";
1164
+ };
1165
+ readonly "claude-haiku-4-5-20251001": {
1166
+ readonly displayName: "Claude Haiku 4.5";
1167
+ readonly iconProvider: "anthropic";
1168
+ };
1169
+ readonly "gpt-6.1-sol": {
1170
+ readonly displayName: "GPT-6.1 Sol";
1171
+ readonly iconProvider: "openai";
1172
+ };
1173
+ readonly "gpt-6-astra": {
1174
+ readonly displayName: "GPT-6 Astra";
1175
+ readonly iconProvider: "openai";
1176
+ };
1177
+ readonly "gpt-6-sol": {
1178
+ readonly displayName: "GPT-6 Sol";
1179
+ readonly iconProvider: "openai";
1180
+ readonly supersededBy: "gpt-6.1-sol";
1181
+ };
1182
+ readonly "gpt-6-luna": {
1183
+ readonly displayName: "GPT-6 Luna";
1184
+ readonly iconProvider: "openai";
1185
+ };
1186
+ readonly "gpt-5.6": {
1187
+ readonly displayName: "GPT-5.6 Sol";
1188
+ readonly iconProvider: "openai";
1189
+ readonly supersededBy: "gpt-6.1-sol";
1190
+ };
1191
+ readonly "gpt-5.6-terra": {
1192
+ readonly displayName: "GPT-5.6 Terra";
1193
+ readonly iconProvider: "openai";
1194
+ };
1195
+ readonly "gpt-5.6-luna": {
1196
+ readonly displayName: "GPT-5.6 Luna";
1197
+ readonly iconProvider: "openai";
1198
+ readonly supersededBy: "gpt-6-luna";
1199
+ };
1200
+ readonly "gpt-5.5": {
1201
+ readonly displayName: "GPT-5.5";
1202
+ readonly iconProvider: "openai";
1203
+ };
1204
+ readonly "gpt-5.4": {
1205
+ readonly displayName: "GPT-5.4";
1206
+ readonly iconProvider: "openai";
1207
+ readonly supersededBy: "gpt-5.5";
1208
+ };
1209
+ readonly "gpt-5.4-mini": {
1210
+ readonly displayName: "GPT-5.4 Mini";
1211
+ readonly iconProvider: "openai";
1212
+ };
1213
+ readonly "gpt-5.4-nano": {
1214
+ readonly displayName: "GPT-5.4 Nano";
1215
+ readonly iconProvider: "openai";
1216
+ };
1217
+ readonly "gpt-5.2": {
1218
+ readonly displayName: "GPT-5.2";
1219
+ readonly iconProvider: "openai";
1220
+ readonly supersededBy: "gpt-5.5";
1221
+ };
1222
+ readonly "openai/gpt-6.1-sol": {
1223
+ readonly displayName: "GPT-6.1 Sol";
1224
+ readonly iconProvider: "openai";
1225
+ };
1226
+ readonly "openai/gpt-6-astra": {
1227
+ readonly displayName: "GPT-6 Astra";
1228
+ readonly iconProvider: "openai";
1229
+ };
1230
+ readonly "openai/gpt-6-sol": {
1231
+ readonly displayName: "GPT-6 Sol";
1232
+ readonly iconProvider: "openai";
1233
+ readonly supersededBy: "openai/gpt-6.1-sol";
1234
+ };
1235
+ readonly "openai/gpt-6-luna": {
1236
+ readonly displayName: "GPT-6 Luna";
1237
+ readonly iconProvider: "openai";
1238
+ };
1239
+ readonly "openai/gpt-5.6-sol": {
1240
+ readonly displayName: "GPT-5.6 Sol";
1241
+ readonly iconProvider: "openai";
1242
+ readonly supersededBy: "openai/gpt-6.1-sol";
1243
+ };
1244
+ readonly "openai/gpt-5.6-luna": {
1245
+ readonly displayName: "GPT-5.6 Luna";
1246
+ readonly iconProvider: "openai";
1247
+ readonly supersededBy: "openai/gpt-6-luna";
1248
+ };
1249
+ readonly "openai/gpt-5.6-terra": {
1250
+ readonly displayName: "GPT-5.6 Terra";
1251
+ readonly iconProvider: "openai";
1252
+ };
1253
+ readonly "google/gemini-3.8-flash": {
1254
+ readonly displayName: "Gemini 3.8 Flash";
1255
+ readonly iconProvider: "google";
1256
+ };
1257
+ readonly "google/gemini-3.7-flash": {
1258
+ readonly displayName: "Gemini 3.7 Flash";
1259
+ readonly iconProvider: "google";
1260
+ readonly supersededBy: "google/gemini-3.8-flash";
1261
+ };
1262
+ readonly "google/gemini-3.6-flash": {
1263
+ readonly displayName: "Gemini 3.6 Flash";
1264
+ readonly iconProvider: "google";
1265
+ readonly supersededBy: "google/gemini-3.8-flash";
1266
+ };
1267
+ readonly "google/gemini-3.5-flash-lite": {
1268
+ readonly displayName: "Gemini 3.5 Flash Lite";
1269
+ readonly iconProvider: "google";
1270
+ };
1271
+ readonly "google/gemini-3.1-pro-preview": {
1272
+ readonly displayName: "Gemini 3.1 Pro Preview";
1273
+ readonly iconProvider: "google";
1274
+ };
1275
+ readonly "google/gemini-3.5-flash": {
1276
+ readonly displayName: "Gemini 3.5 Flash";
1277
+ readonly iconProvider: "google";
1278
+ readonly supersededBy: "google/gemini-3.8-flash";
1279
+ };
1280
+ readonly "google/gemini-3.1-flash-lite": {
1281
+ readonly displayName: "Gemini 3.1 Flash Lite";
1282
+ readonly iconProvider: "google";
1283
+ readonly supersededBy: "google/gemini-3.5-flash-lite";
1284
+ };
1285
+ readonly "anthropic/claude-sonnet-5.5": {
1286
+ readonly displayName: "Claude Sonnet 5.5";
1287
+ readonly iconProvider: "anthropic";
1288
+ };
1289
+ readonly "anthropic/claude-sonnet-5": {
1290
+ readonly displayName: "Claude Sonnet 5";
1291
+ readonly iconProvider: "anthropic";
1292
+ readonly supersededBy: "anthropic/claude-sonnet-5.5";
1293
+ };
1294
+ readonly "anthropic/claude-opus-5": {
1295
+ readonly displayName: "Claude Opus 5";
1296
+ readonly iconProvider: "anthropic";
1297
+ readonly supersededBy: "claude-opus-5-5";
1298
+ };
1299
+ readonly "anthropic/claude-opus-4.8": {
1300
+ readonly displayName: "Claude Opus 4.8";
1301
+ readonly iconProvider: "anthropic";
1302
+ readonly supersededBy: "claude-opus-5-5";
1303
+ };
1304
+ readonly "anthropic/claude-sonnet-4.6": {
1305
+ readonly displayName: "Claude Sonnet 4.6";
1306
+ readonly iconProvider: "anthropic";
1307
+ readonly supersededBy: "anthropic/claude-sonnet-5.5";
1308
+ };
1309
+ readonly "openai/gpt-5.5": {
1310
+ readonly displayName: "GPT-5.5";
1311
+ readonly iconProvider: "openai";
1312
+ };
1313
+ readonly "openai/gpt-5.4-mini": {
1314
+ readonly displayName: "GPT-5.4 Mini";
1315
+ readonly iconProvider: "openai";
1316
+ };
1317
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": {
1318
+ readonly displayName: "Claude Sonnet 4.5";
1319
+ readonly iconProvider: "anthropic";
1320
+ readonly supersededBy: "claude-sonnet-5-5";
1321
+ };
1322
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": {
1323
+ readonly displayName: "Claude Haiku 4.5";
1324
+ readonly iconProvider: "anthropic";
1325
+ };
1326
+ readonly "us.amazon.nova-pro-v1:0": {
1327
+ readonly displayName: "Amazon Nova Pro";
1328
+ readonly iconProvider: "bedrock";
1329
+ };
1330
+ readonly "us.amazon.nova-lite-v1:0": {
1331
+ readonly displayName: "Amazon Nova Lite";
1332
+ readonly iconProvider: "bedrock";
1333
+ };
1334
+ readonly "us.amazon.nova-micro-v1:0": {
1335
+ readonly displayName: "Amazon Nova Micro";
1336
+ readonly iconProvider: "bedrock";
1337
+ };
1338
+ readonly "openai.gpt-oss-120b-1:0": {
1339
+ readonly displayName: "GPT OSS 120B";
1340
+ readonly iconProvider: "openai";
1341
+ };
1342
+ readonly "openai.gpt-oss-20b-1:0": {
1343
+ readonly displayName: "GPT OSS 20B";
1344
+ readonly iconProvider: "openai";
1345
+ };
1346
+ readonly "mistral-large-4": {
1347
+ readonly displayName: "Mistral Large 4";
1348
+ readonly iconProvider: "mistral";
1349
+ };
1350
+ readonly "mistral-large-latest": {
1351
+ readonly displayName: "Mistral Large";
1352
+ readonly iconProvider: "mistral";
1353
+ };
1354
+ readonly "mistral-medium-latest": {
1355
+ readonly displayName: "Mistral Medium";
1356
+ readonly iconProvider: "mistral";
1357
+ };
1358
+ readonly "mistral-small-latest": {
1359
+ readonly displayName: "Mistral Small";
1360
+ readonly iconProvider: "mistral";
1361
+ };
1362
+ };
1363
+ declare const getModelDisplayMetadata: (modelId: string) => ModelDisplayMetadata | null;
1364
+ /**
1365
+ * Offered models whose provider API accepts PDF/file content. Generated from
1366
+ * live models.dev input modalities plus dated, reviewed source corrections;
1367
+ * the nightly upstream check rejects drift.
1368
+ */
1369
+ declare const BYOK_DOCUMENT_INPUT_MODEL_OPTIONS: {
1370
+ readonly google: readonly ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3.1-pro-preview", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
1371
+ readonly openrouter: readonly ["openai/gpt-6.1-sol", "openai/gpt-6-astra", "openai/gpt-6-sol", "openai/gpt-6-luna", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra", "openai/gpt-5.6-luna", "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5.5", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
1372
+ readonly openai: readonly ["gpt-6.1-sol", "gpt-6-astra", "gpt-6-sol", "gpt-6-luna", "gpt-5.6", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
1373
+ readonly anthropic: readonly ["claude-sonnet-5-5", "claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
1374
+ readonly bedrock: readonly ["us.anthropic.claude-sonnet-4-5-20250929-v1:0", "us.anthropic.claude-haiku-4-5-20251001-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0"];
1375
+ readonly mistral: readonly [];
1376
+ };
1377
+ /** Unoffered IDs have no entry; offered IDs explicitly include unknown. */
1378
+ declare const getModelImageInputCapability: ({ provider, modelId }: {
1379
+ provider: BYOKProvider;
1380
+ modelId: string;
1381
+ }) => ImageInputCapability | undefined;
1382
+ declare const isBYOKProviderRoleSupported: ({ provider, role }: {
1383
+ provider: BYOKProvider;
1384
+ role: ModelRole;
1385
+ }) => boolean;
1386
+ declare const isBYOKModelRoleSupported: ({ provider, modelId, role }: {
1387
+ provider: BYOKProvider;
1388
+ modelId: string;
1389
+ role: ModelRole;
1390
+ }) => boolean;
1391
+ /**
1392
+ * Models whose provider adapter can receive a PDF `document` content part in a
1393
+ * chat turn without throwing. This is a narrower, runtime question than the
1394
+ * pdf ROLE (`BYOK_DOCUMENT_INPUT_MODEL_OPTIONS`, which curates model selection
1395
+ * for PDF-processing flows): it only asks "will the chat stream survive this
1396
+ * attachment." The Mistral text adapter maps PDF `document` parts to
1397
+ * `document_url`, so its
1398
+ * vision models accept PDF attachments even though Mistral is deliberately not
1399
+ * offered as a pdf-role provider. Mistral's `document_url` takes PDF but NOT
1400
+ * textual documents (docx/txt/csv/md), so those still gate on
1401
+ * `BYOK_DOCUMENT_INPUT_MODEL_OPTIONS` (which excludes Mistral). Superset
1402
+ * invariant: every pdf-role document model also accepts a PDF chat attachment.
1403
+ */
1404
+ declare const CHAT_PDF_ATTACHMENT_MODEL_OPTIONS: {
1405
+ readonly mistral: readonly ["mistral-medium-latest", "mistral-small-latest"];
1406
+ readonly google: readonly ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3.1-pro-preview", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
1407
+ readonly openrouter: readonly ["openai/gpt-6.1-sol", "openai/gpt-6-astra", "openai/gpt-6-sol", "openai/gpt-6-luna", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra", "openai/gpt-5.6-luna", "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5.5", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
1408
+ readonly openai: readonly ["gpt-6.1-sol", "gpt-6-astra", "gpt-6-sol", "gpt-6-luna", "gpt-5.6", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
1409
+ readonly anthropic: readonly ["claude-sonnet-5-5", "claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
1410
+ readonly bedrock: readonly ["us.anthropic.claude-sonnet-4-5-20250929-v1:0", "us.anthropic.claude-haiku-4-5-20251001-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0"];
1411
+ };
1412
+ declare const isChatPdfAttachmentModelSupported: ({ provider, modelId }: {
1413
+ provider: BYOKProvider;
1414
+ modelId: string;
1415
+ }) => boolean;
1416
+ /**
1417
+ * Resolve a model id that will actually work for this provider+role,
1418
+ * keeping the SAME provider. Returns the caller's model unchanged when
1419
+ * it is still offered; otherwise falls back to the provider's per-role
1420
+ * default (`BYOK_DEFAULT_MODELS`). Returns `null` only when the
1421
+ * provider has no valid model for the role at all — the sole case
1422
+ * today is `mistral` + `pdf`, because the TanStack Mistral adapter
1423
+ * exposes no `document` input modality, so no Mistral model (not even
1424
+ * the default) can serve the PDF role.
1425
+ *
1426
+ * Used to auto-heal org AI configs whose pinned model was removed by a
1427
+ * catalog bump, so generation resolves to a supported model instead of
1428
+ * 400-ing (or forwarding a retired id to the provider).
1429
+ */
1430
+ declare const resolveWorkingBYOKModelForRole: ({ provider, modelId, role }: {
1431
+ provider: BYOKProvider;
1432
+ modelId: string;
1433
+ role: ModelRole;
1434
+ }) => string | null;
1435
+ /**
1436
+ * Anthropic models that use the adaptive-thinking request shape
1437
+ * (`thinking: { type: "adaptive" }`). Newer Claude models reject the
1438
+ * legacy budget-based form, so every Opus 4.6+/Sonnet 4.6/Fable entry
1439
+ * offered above must appear here or it will 400 on the reasoning role.
1440
+ */
1441
+ declare const ANTHROPIC_ADAPTIVE_THINKING_MODELS: readonly ["claude-sonnet-5-5", "claude-sonnet-5", "claude-opus-5", "claude-sonnet-4-6", "claude-opus-4-6", "claude-opus-4-7", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1", "claude-opus-5-5"];
1442
+ /**
1443
+ * Canonical reasoning-effort ladder, ordered weakest to strongest.
1444
+ * Union of every effort keyword the offered providers accept; no
1445
+ * single model accepts all of them, which is exactly why the
1446
+ * generated per-model `MODEL_REASONING_EFFORTS` exists.
1447
+ */
1448
+ declare const REASONING_EFFORTS: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max"];
1449
+ type ReasoningEffort = (typeof REASONING_EFFORTS)[number];
1450
+ declare const resolvedReasoningEffortSchema: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max"], undefined>, v.BrandAction<"none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max", "ResolvedReasoningEffort">]>;
1451
+ /**
1452
+ * A reasoning effort proven to be accepted by the model it targets.
1453
+ * Only `resolveReasoningEffort` can produce this type, so option
1454
+ * builders cannot hand a provider a literal effort the model rejects
1455
+ * (e.g. `"none"` to a model whose reasoning cannot be disabled) —
1456
+ * that mistake now fails typecheck instead of 502-ing at runtime.
1457
+ */
1458
+ type ResolvedReasoningEffort = v.InferOutput<typeof resolvedReasoningEffortSchema>;
1459
+ /**
1460
+ * Per-provider model served when a user's included budget is exhausted
1461
+ * and no explicit selection overrides it. Falls back to each
1462
+ * provider's fast-role default; providers without a first-class
1463
+ * adapter path cannot serve the lane. Total over providers so a new
1464
+ * provider lands with an explicit decision.
1465
+ */
1466
+ declare const FALLBACK_CHAT_MODEL_BY_PROVIDER: {
1467
+ readonly google: "gemini-3.8-flash";
1468
+ readonly openrouter: "openai/gpt-6-luna";
1469
+ readonly openai: "gpt-6-luna";
1470
+ readonly anthropic: "claude-opus-5-5";
1471
+ readonly bedrock: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
1472
+ readonly mistral: "mistral-small-latest";
1473
+ readonly azure_foundry: null;
1474
+ readonly openai_compatible: null;
1475
+ readonly huggingface: null;
1476
+ };
1477
+ /**
1478
+ * Provider-native IDs that are exact aliases of an offered catalog ID.
1479
+ * Every metadata lookup normalizes here, so instance/dev overrides cannot
1480
+ * bypass rates or capabilities and duplicated alias rows cannot drift apart.
1481
+ */
1482
+ declare const MODEL_CATALOG_ID_ALIASES: {
1483
+ readonly "gpt-5.6-sol": "gpt-5.6";
1484
+ readonly "claude-opus-4.8": "claude-opus-4-8";
1485
+ readonly "claude-sonnet-5.5": "claude-sonnet-5-5";
1486
+ readonly "claude-sonnet-4.6": "claude-sonnet-4-6";
1487
+ };
1488
+ declare const normalizeModelCatalogId: (modelId: string) => string;
1489
+ /**
1490
+ * Whether stella should emit a `temperature` override for this model.
1491
+ * This is deliberately stricter than provider acceptance: deprecated
1492
+ * parameters that are accepted but ignored resolve to `false`. Unknown ids
1493
+ * also resolve to `false` (send nothing; provider default). Callers must
1494
+ * never index `MODEL_TEMPERATURE_POLICIES` directly with
1495
+ * a runtime string.
1496
+ */
1497
+ declare const shouldEmitTemperature: (modelId: string) => boolean;
1498
+ /**
1499
+ * The most output tokens one response of `modelId` may carry, from the
1500
+ * catalog. `undefined` for an id the catalog does not list (a deployment
1501
+ * override, a dev model): the catalog knows nothing about it, so callers leave
1502
+ * the allowance to the provider rather than guess one. Callers must never
1503
+ * index `MODEL_OUTPUT_TOKEN_LIMITS` directly with a runtime string.
1504
+ */
1505
+ declare const getOutputTokenLimit: (modelId: string) => number | undefined;
1506
+ /**
1507
+ * Whether a model accepts tool use on a streaming request.
1508
+ *
1509
+ * Every tool-carrying request stella sends is a stream, and structured
1510
+ * output is a forced tool call, so `"unsupported"` withdraws both: the
1511
+ * provider answers such a request with a fatal stream error rather than a
1512
+ * degraded result. models.dev does not publish this, so the map is
1513
+ * hand-declared here rather than in the generated `capabilities.gen.ts`,
1514
+ * and it is total over the offered catalog: a new model forces a decision.
1515
+ *
1516
+ * Consumers must go through `supportsStreamingToolUse`.
1517
+ */
1518
+ declare const MODEL_STREAMING_TOOL_USE: {
1519
+ readonly "gemini-3.8-flash": "supported";
1520
+ readonly "gemini-3.7-flash": "supported";
1521
+ readonly "gemini-3.6-flash": "supported";
1522
+ readonly "gemini-3.5-flash-lite": "supported";
1523
+ readonly "gemini-3.1-pro-preview": "supported";
1524
+ readonly "gemini-3.5-flash": "supported";
1525
+ readonly "gemini-3.1-flash-lite": "supported";
1526
+ readonly "openai/gpt-6.1-sol": "supported";
1527
+ readonly "openai/gpt-6-astra": "supported";
1528
+ readonly "openai/gpt-6-sol": "supported";
1529
+ readonly "openai/gpt-6-luna": "supported";
1530
+ readonly "openai/gpt-5.6-sol": "supported";
1531
+ readonly "openai/gpt-5.6-terra": "supported";
1532
+ readonly "openai/gpt-5.6-luna": "supported";
1533
+ readonly "google/gemini-3.8-flash": "supported";
1534
+ readonly "google/gemini-3.7-flash": "supported";
1535
+ readonly "google/gemini-3.6-flash": "supported";
1536
+ readonly "google/gemini-3.5-flash-lite": "supported";
1537
+ readonly "google/gemini-3.1-pro-preview": "supported";
1538
+ readonly "google/gemini-3.5-flash": "supported";
1539
+ readonly "google/gemini-3.1-flash-lite": "supported";
1540
+ readonly "anthropic/claude-sonnet-5.5": "supported";
1541
+ readonly "anthropic/claude-sonnet-5": "supported";
1542
+ readonly "anthropic/claude-opus-5": "supported";
1543
+ readonly "anthropic/claude-opus-4.8": "supported";
1544
+ readonly "anthropic/claude-sonnet-4.6": "supported";
1545
+ readonly "openai/gpt-5.5": "supported";
1546
+ readonly "openai/gpt-5.4-mini": "supported";
1547
+ readonly "gpt-6.1-sol": "supported";
1548
+ readonly "gpt-6-astra": "supported";
1549
+ readonly "gpt-6-sol": "supported";
1550
+ readonly "gpt-6-luna": "supported";
1551
+ readonly "gpt-5.6": "supported";
1552
+ readonly "gpt-5.6-terra": "supported";
1553
+ readonly "gpt-5.6-luna": "supported";
1554
+ readonly "gpt-5.5": "supported";
1555
+ readonly "gpt-5.4": "supported";
1556
+ readonly "gpt-5.4-mini": "supported";
1557
+ readonly "gpt-5.4-nano": "supported";
1558
+ readonly "gpt-5.2": "supported";
1559
+ readonly "claude-sonnet-5-5": "supported";
1560
+ readonly "claude-sonnet-5": "supported";
1561
+ readonly "claude-fable-5-1": "supported";
1562
+ readonly "claude-fable-5": "supported";
1563
+ readonly "claude-opus-5-5": "supported";
1564
+ readonly "claude-opus-5": "supported";
1565
+ readonly "claude-opus-4-8": "supported";
1566
+ readonly "claude-opus-4-7": "supported";
1567
+ readonly "claude-sonnet-4-6": "supported";
1568
+ readonly "claude-opus-4-6": "supported";
1569
+ readonly "claude-haiku-4-5-20251001": "supported";
1570
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "supported";
1571
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": "supported";
1572
+ readonly "us.amazon.nova-pro-v1:0": "supported";
1573
+ readonly "us.amazon.nova-lite-v1:0": "supported";
1574
+ readonly "us.amazon.nova-micro-v1:0": "supported";
1575
+ readonly "openai.gpt-oss-120b-1:0": "supported";
1576
+ readonly "openai.gpt-oss-20b-1:0": "supported";
1577
+ readonly "mistral-large-4": "supported";
1578
+ readonly "mistral-large-latest": "supported";
1579
+ readonly "mistral-medium-latest": "supported";
1580
+ readonly "mistral-small-latest": "supported";
1581
+ };
1582
+ /**
1583
+ * Whether stella may send tools (or a structured-output schema) to this
1584
+ * model on a streaming request. Unlisted ids resolve to `true`: custom
1585
+ * deployments and env overrides are overwhelmingly tool-capable, and
1586
+ * withdrawing tools from an uncatalogued model would silently strip the
1587
+ * agent loop rather than fail where it can be seen.
1588
+ */
1589
+ declare const supportsStreamingToolUse: (modelId: string) => boolean;
1590
+ /**
1591
+ * Declared reasoning-effort values for a model ID, or `null` when the
1592
+ * model has no effort control or is not catalogued (custom deployments,
1593
+ * env overrides). Callers must never index `MODEL_REASONING_EFFORTS`
1594
+ * directly with a runtime string.
1595
+ */
1596
+ declare const getModelReasoningEfforts: (modelId: string) => readonly ReasoningEffort[] | null;
1597
+ /**
1598
+ * Concrete provider-default effort published for a model, or null when the
1599
+ * provider exposes no named default. Unknown ids also resolve to null.
1600
+ */
1601
+ declare const getModelDefaultReasoningEffort: (modelId: string) => ReasoningEffort | null;
1602
+ type ResolveReasoningEffortOptions = {
1603
+ modelId: string;
1604
+ requested: ReasoningEffort;
1605
+ };
1606
+ /**
1607
+ * Clamp a requested reasoning effort into the target model's declared
1608
+ * capability.
1609
+ *
1610
+ * - Unknown model or no effort control → `null` (send no effort at
1611
+ * all; the provider default is the only universally safe choice).
1612
+ * - Requested value supported → returned unchanged.
1613
+ * - Otherwise → the supported value nearest on `REASONING_EFFORTS`,
1614
+ * preferring the weaker side on ties, so a "none" request against a
1615
+ * reasoning-mandatory model degrades to its weakest tier instead of
1616
+ * erroring, and requests above the model's ceiling clamp down to it.
1617
+ */
1618
+ declare const resolveReasoningEffort: ({ modelId, requested }: ResolveReasoningEffortOptions) => ResolvedReasoningEffort | null;
1619
+ declare const getModelRate: (modelId: string) => ModelRate | undefined;
1620
+ /**
1621
+ * Documented input context-window sizes (in tokens) per model ID.
1622
+ *
1623
+ * Keys are the canonical model IDs stella resolves for the provider
1624
+ * adapters (the same forms used in `MODEL_RATES`, `BYOK_MODEL_OPTIONS`,
1625
+ * and `DEFAULT_MODELS`, including OpenRouter provider-prefixed slugs and
1626
+ * AWS Bedrock IDs). Values are the providers' publicly documented input
1627
+ * windows; where a provider offers a larger beta window we intentionally
1628
+ * take the conservative default (e.g. Claude's standard 200K rather than
1629
+ * the 1M beta) so context budgeting never overpromises.
1630
+ *
1631
+ * Consumers must go through `getContextWindowTokens`, which falls back to
1632
+ * `DEFAULT_CONTEXT_WINDOW_TOKENS` for any unlisted ID. Unlike
1633
+ * `MODEL_RATES`, the nightly `model-catalog-upstream` check does not
1634
+ * validate this map, so an unknown model degrades to the conservative
1635
+ * default rather than failing CI.
1636
+ */
1637
+ declare const CONTEXT_WINDOW_TOKENS: {
1638
+ readonly "gemini-2.5-flash": 1048576;
1639
+ readonly "gemini-2.5-pro": 1048576;
1640
+ readonly "gemini-3.1-flash-lite": 1048576;
1641
+ readonly "gemini-3.5-flash": 1048576;
1642
+ readonly "gemini-3.5-flash-lite": 1048576;
1643
+ readonly "gemini-3.6-flash": 1048576;
1644
+ readonly "gemini-3.7-flash": 1048576;
1645
+ readonly "gemini-3.8-flash": 1048576;
1646
+ readonly "gemini-3.1-pro-preview": 1048576;
1647
+ readonly "gpt-4o-mini": 128000;
1648
+ readonly "gpt-4o": 128000;
1649
+ readonly "gpt-5.2": 400000;
1650
+ readonly "gpt-5.4-nano": 400000;
1651
+ readonly "gpt-5.4-mini": 400000;
1652
+ readonly "gpt-5.4": 400000;
1653
+ readonly "gpt-5.5": 400000;
1654
+ readonly "gpt-6.1-sol": 922000;
1655
+ readonly "gpt-6-astra": 922000;
1656
+ readonly "gpt-6-sol": 922000;
1657
+ readonly "gpt-6-luna": 922000;
1658
+ readonly "gpt-5.6": 922000;
1659
+ readonly "gpt-5.6-luna": 922000;
1660
+ readonly "gpt-5.6-terra": 922000;
1661
+ readonly "claude-haiku-4-5-20251001": 200000;
1662
+ readonly "claude-sonnet-4-6": 200000;
1663
+ readonly "claude-sonnet-5": 1000000;
1664
+ readonly "claude-sonnet-5-5": 1000000;
1665
+ readonly "claude-opus-4-6": 200000;
1666
+ readonly "claude-opus-4-7": 200000;
1667
+ readonly "claude-opus-4-8": 200000;
1668
+ readonly "claude-opus-5": 1000000;
1669
+ readonly "claude-opus-5-5": 1000000;
1670
+ readonly "claude-fable-5": 200000;
1671
+ readonly "claude-fable-5-1": 1000000;
1672
+ readonly "mistral-small-latest": 128000;
1673
+ readonly "mistral-large-4": 524288;
1674
+ readonly "mistral-large-latest": 128000;
1675
+ readonly "mistral-medium-latest": 128000;
1676
+ readonly "mistral-medium-3-5": 128000;
1677
+ readonly "magistral-small-latest": 128000;
1678
+ readonly "google/gemini-3.8-flash": 1048576;
1679
+ readonly "google/gemini-3.7-flash": 1048576;
1680
+ readonly "google/gemini-3.6-flash": 1048576;
1681
+ readonly "google/gemini-3.5-flash-lite": 1048576;
1682
+ readonly "google/gemini-3.1-pro-preview": 1048576;
1683
+ readonly "google/gemini-3.5-flash": 1048576;
1684
+ readonly "google/gemini-3.1-flash-lite": 1048576;
1685
+ readonly "anthropic/claude-sonnet-5.5": 1000000;
1686
+ readonly "anthropic/claude-sonnet-5": 1000000;
1687
+ readonly "anthropic/claude-opus-5": 1000000;
1688
+ readonly "anthropic/claude-opus-4.8": 200000;
1689
+ readonly "anthropic/claude-sonnet-4.6": 200000;
1690
+ readonly "openai/gpt-6.1-sol": 922000;
1691
+ readonly "openai/gpt-6-astra": 922000;
1692
+ readonly "openai/gpt-6-sol": 922000;
1693
+ readonly "openai/gpt-6-luna": 922000;
1694
+ readonly "openai/gpt-5.6-sol": 922000;
1695
+ readonly "openai/gpt-5.6-luna": 922000;
1696
+ readonly "openai/gpt-5.6-terra": 922000;
1697
+ readonly "openai/gpt-5.5": 400000;
1698
+ readonly "openai/gpt-5.4-mini": 400000;
1699
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": 200000;
1700
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": 200000;
1701
+ readonly "us.amazon.nova-pro-v1:0": 300000;
1702
+ readonly "us.amazon.nova-lite-v1:0": 300000;
1703
+ readonly "us.amazon.nova-micro-v1:0": 128000;
1704
+ readonly "openai.gpt-oss-120b-1:0": 128000;
1705
+ readonly "openai.gpt-oss-20b-1:0": 128000;
1706
+ readonly "us.deepseek.r1-v1:0": 128000;
1707
+ };
1708
+ /**
1709
+ * Conservative window assumed for any model ID absent from
1710
+ * `CONTEXT_WINDOW_TOKENS` (custom deployments, OpenAI-compatible
1711
+ * endpoints, brand-new IDs not yet catalogued).
1712
+ */
1713
+ declare const DEFAULT_CONTEXT_WINDOW_TOKENS = 128000;
1714
+ /**
1715
+ * Documented input context window for a model ID, or the conservative
1716
+ * default for unlisted IDs. Callers must never index
1717
+ * `CONTEXT_WINDOW_TOKENS` directly.
1718
+ */
1719
+ declare const getContextWindowTokens: (modelId: string) => number;
1720
+ //#endregion
1721
+ export { MODEL_IMAGE_INPUT_CAPABILITIES as $, ResolvedReasoningEffort as A, getModelImageInputCapability as B, ModelDisplayMetadata as C, RECOMMENDED_CHAT_MODELS as D, REASONING_EFFORTS as E, TanStackAIProvider as F, isBYOKProviderRoleSupported as G, getModelReasoningEfforts as H, TemperaturePolicy as I, resolveReasoningEffort as J, isChatPdfAttachmentModelSupported as K, getContextWindowTokens as L, StreamingToolUseSupport as M, TANSTACK_AI_PROVIDERS as N, ReasoningEffort as O, TEMPERATURE_POLICIES as P, MODEL_DEFAULT_REASONING_EFFORTS as Q, getModelDefaultReasoningEffort as R, MODEL_STREAMING_TOOL_USE as S, OfferedBYOKModelId as T, getOutputTokenLimit as U, getModelRate as V, isBYOKModelRoleSupported as W, shouldEmitTemperature as X, resolveWorkingBYOKModelForRole as Y, supportsStreamingToolUse as Z, ImageInputCapability as _, ModelRateAmounts as _t, BYOKProvider as a, CAPABILITY_OVERRIDES as at, MODEL_DISPLAY_METADATA as b, BYOK_MODEL_OPTIONS as c, ImageInputOverride as ct, DEFAULT_CONTEXT_WINDOW_TOKENS as d, MODELS_DEV_RATE_SOURCE_ALIASES as dt, MODEL_OUTPUT_TOKEN_LIMITS as et, DEFAULT_MODELS as f, ModelsDevRateProvider as ft, IMAGE_INPUT_CAPABILITIES as g, ModelRate as gt, FirstPartyModelProvider as h, MODEL_RATE_UNITS_PER_USD as ht, BYOKModelIdByProvider as i, DocumentInputOverride as it, STREAMING_TOOL_USE_SUPPORTS as j, ResolveReasoningEffortOptions as k, CHAT_PDF_ATTACHMENT_MODEL_OPTIONS as l, ImageInputOverrides as lt, FIRST_PARTY_MODEL_PROVIDERS as m, MODEL_RATES as mt, AI_PROVIDERS as n, MODEL_TEMPERATURE_POLICIES as nt, BYOK_DEFAULT_MODELS as o, CapabilityOverride as ot, FALLBACK_CHAT_MODEL_BY_PROVIDER as p, RETAINED_MODELS_DEV_RATE_ENTRIES as pt, normalizeModelCatalogId as q, ANTHROPIC_ADAPTIVE_THINKING_MODELS as r, DOCUMENT_INPUT_OVERRIDES as rt, BYOK_DOCUMENT_INPUT_MODEL_OPTIONS as s, IMAGE_INPUT_OVERRIDES as st, AIProvider as t, MODEL_REASONING_EFFORTS as tt, CONTEXT_WINDOW_TOKENS as u, MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER as ut, MODEL_CATALOG_ID_ALIASES as v, getStandardModelRate as vt, ModelRole as w, MODEL_ROLES as x, MODEL_CATALOG_PROVIDER_KIND as y, resolveModelRate as yt, getModelDisplayMetadata as z };