@stll/ai-catalog 0.1.6 → 0.1.7
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/README.md +8 -0
- package/dist/index.d.ts +1030 -958
- package/dist/index.js +926 -847
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,1122 +1,1194 @@
|
|
|
1
1
|
import * as v from "valibot";
|
|
2
|
-
//#region src/
|
|
3
|
-
/**
|
|
4
|
-
* Hand-declared capabilities for offered models that models.dev does
|
|
5
|
-
* not cover. The capability generator
|
|
6
|
-
* (`packages/scripts/src/model-catalog-capabilities-gen.ts`) refuses
|
|
7
|
-
* an override for any model the upstream source covers, so manual
|
|
8
|
-
* data cannot shadow sourced data — this file can only ever fill
|
|
9
|
-
* genuine gaps, each with a dated justification.
|
|
10
|
-
*/
|
|
11
|
-
type CapabilityOverride = {
|
|
12
|
-
documentInput: boolean;
|
|
13
|
-
documentInputReason: string;
|
|
14
|
-
reasoningEfforts: readonly ReasoningEffort[] | null;
|
|
15
|
-
temperatureSupported: boolean;
|
|
16
|
-
/** Why the upstream source cannot answer for this model. Dated. */
|
|
17
|
-
reason: string;
|
|
18
|
-
};
|
|
19
|
-
declare const CAPABILITY_OVERRIDES: Partial<Record<OfferedBYOKModelId, CapabilityOverride>>;
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/document-input-overrides.d.ts
|
|
22
|
-
type DocumentInputOverride = {
|
|
23
|
-
/** Whether the model accepts a PDF/file content part. */
|
|
24
|
-
supported: boolean;
|
|
25
|
-
/** Why the live catalogue cannot answer correctly. Dated. */
|
|
26
|
-
reason: string;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Reviewed document-input corrections for models.dev records that exist but
|
|
30
|
-
* under-report the provider API's file-input support. The generator rejects an
|
|
31
|
-
* override once upstream agrees, so sourced data takes ownership automatically.
|
|
32
|
-
*/
|
|
33
|
-
declare const DOCUMENT_INPUT_OVERRIDES: Partial<Record<OfferedBYOKModelId, DocumentInputOverride>>;
|
|
34
|
-
//#endregion
|
|
35
|
-
//#region src/capabilities.gen.d.ts
|
|
36
|
-
/**
|
|
37
|
-
* Reasoning-effort values each offered model accepts, `null` when the
|
|
38
|
-
* model exposes no effort-style reasoning control. A missing `"none"`
|
|
39
|
-
* means the model's reasoning cannot be disabled; consumers must go
|
|
40
|
-
* through `resolveReasoningEffort`.
|
|
41
|
-
*/
|
|
42
|
-
declare const MODEL_REASONING_EFFORTS: {
|
|
43
|
-
readonly "gemini-3.8-flash": readonly ["low", "medium", "high"];
|
|
44
|
-
readonly "gemini-3.7-flash": readonly ["low", "medium", "high"];
|
|
45
|
-
readonly "gemini-3.6-flash": readonly ["minimal", "low", "medium", "high"];
|
|
46
|
-
readonly "gemini-3.5-flash-lite": readonly ["minimal", "low", "medium", "high"];
|
|
47
|
-
readonly "gemini-3.1-pro-preview": readonly ["low", "medium", "high"];
|
|
48
|
-
readonly "gemini-3.5-flash": readonly ["minimal", "low", "medium", "high"];
|
|
49
|
-
readonly "gemini-3.1-flash-lite": readonly ["minimal", "low", "medium", "high"];
|
|
50
|
-
readonly "openai/gpt-5.6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
51
|
-
readonly "openai/gpt-5.6-terra": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
52
|
-
readonly "google/gemini-3.8-flash": readonly ["low", "medium", "high"];
|
|
53
|
-
readonly "google/gemini-3.7-flash": readonly ["low", "medium", "high"];
|
|
54
|
-
readonly "google/gemini-3.6-flash": readonly ["minimal", "low", "medium", "high"];
|
|
55
|
-
readonly "google/gemini-3.5-flash-lite": readonly ["minimal", "low", "medium", "high"];
|
|
56
|
-
readonly "google/gemini-3.1-pro-preview": readonly ["low", "medium", "high"];
|
|
57
|
-
readonly "google/gemini-3.5-flash": readonly ["minimal", "low", "medium", "high"];
|
|
58
|
-
readonly "google/gemini-3.1-flash-lite": readonly ["none", "minimal", "low", "medium", "high"];
|
|
59
|
-
readonly "anthropic/claude-sonnet-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
60
|
-
readonly "anthropic/claude-opus-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
61
|
-
readonly "anthropic/claude-opus-4.8": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
62
|
-
readonly "anthropic/claude-sonnet-4.6": readonly ["none", "low", "medium", "high", "max"];
|
|
63
|
-
readonly "openai/gpt-5.5": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
64
|
-
readonly "openai/gpt-5.4-mini": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
65
|
-
readonly "gpt-5.6": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
66
|
-
readonly "gpt-5.6-terra": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
67
|
-
readonly "gpt-5.6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
68
|
-
readonly "gpt-5.5": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
69
|
-
readonly "gpt-5.4": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
70
|
-
readonly "gpt-5.4-mini": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
71
|
-
readonly "gpt-5.4-nano": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
72
|
-
readonly "gpt-5.2": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
73
|
-
readonly "claude-sonnet-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
74
|
-
readonly "claude-fable-5-1": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
75
|
-
readonly "claude-fable-5": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
76
|
-
readonly "claude-opus-5": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
77
|
-
readonly "claude-opus-4-8": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
78
|
-
readonly "claude-opus-4-7": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
79
|
-
readonly "claude-sonnet-4-6": readonly ["low", "medium", "high", "max"];
|
|
80
|
-
readonly "claude-opus-4-6": readonly ["low", "medium", "high", "max"];
|
|
81
|
-
readonly "claude-haiku-4-5-20251001": null;
|
|
82
|
-
readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": null;
|
|
83
|
-
readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": null;
|
|
84
|
-
readonly "us.amazon.nova-pro-v1:0": null;
|
|
85
|
-
readonly "us.amazon.nova-lite-v1:0": null;
|
|
86
|
-
readonly "us.amazon.nova-micro-v1:0": null;
|
|
87
|
-
readonly "openai.gpt-oss-120b-1:0": readonly ["low", "medium", "high"];
|
|
88
|
-
readonly "openai.gpt-oss-20b-1:0": readonly ["low", "medium", "high"];
|
|
89
|
-
readonly "us.deepseek.r1-v1:0": null;
|
|
90
|
-
readonly "mistral-large-latest": null;
|
|
91
|
-
readonly "mistral-medium-latest": readonly ["none", "high"];
|
|
92
|
-
readonly "mistral-small-latest": readonly ["none", "high"];
|
|
93
|
-
readonly "magistral-medium-latest": null;
|
|
94
|
-
readonly "magistral-small": null;
|
|
95
|
-
readonly "pixtral-large-latest": null;
|
|
96
|
-
};
|
|
97
|
-
/**
|
|
98
|
-
* Concrete provider-default effort where the upstream catalogue publishes
|
|
99
|
-
* one. OpenRouter is the source today; null means the provider does not expose
|
|
100
|
-
* a truthful named default, so clients must retain a separate Default choice.
|
|
101
|
-
*/
|
|
102
|
-
declare const MODEL_DEFAULT_REASONING_EFFORTS: {
|
|
103
|
-
readonly "gemini-3.8-flash": null;
|
|
104
|
-
readonly "gemini-3.7-flash": null;
|
|
105
|
-
readonly "gemini-3.6-flash": null;
|
|
106
|
-
readonly "gemini-3.5-flash-lite": null;
|
|
107
|
-
readonly "gemini-3.1-pro-preview": null;
|
|
108
|
-
readonly "gemini-3.5-flash": null;
|
|
109
|
-
readonly "gemini-3.1-flash-lite": null;
|
|
110
|
-
readonly "openai/gpt-5.6-luna": "medium";
|
|
111
|
-
readonly "openai/gpt-5.6-terra": "medium";
|
|
112
|
-
readonly "google/gemini-3.8-flash": "medium";
|
|
113
|
-
readonly "google/gemini-3.7-flash": "medium";
|
|
114
|
-
readonly "google/gemini-3.6-flash": "medium";
|
|
115
|
-
readonly "google/gemini-3.5-flash-lite": "minimal";
|
|
116
|
-
readonly "google/gemini-3.1-pro-preview": "medium";
|
|
117
|
-
readonly "google/gemini-3.5-flash": "medium";
|
|
118
|
-
readonly "google/gemini-3.1-flash-lite": "minimal";
|
|
119
|
-
readonly "anthropic/claude-sonnet-5": "high";
|
|
120
|
-
readonly "anthropic/claude-opus-5": "high";
|
|
121
|
-
readonly "anthropic/claude-opus-4.8": "high";
|
|
122
|
-
readonly "anthropic/claude-sonnet-4.6": "medium";
|
|
123
|
-
readonly "openai/gpt-5.5": "medium";
|
|
124
|
-
readonly "openai/gpt-5.4-mini": "medium";
|
|
125
|
-
readonly "gpt-5.6": null;
|
|
126
|
-
readonly "gpt-5.6-terra": null;
|
|
127
|
-
readonly "gpt-5.6-luna": null;
|
|
128
|
-
readonly "gpt-5.5": null;
|
|
129
|
-
readonly "gpt-5.4": null;
|
|
130
|
-
readonly "gpt-5.4-mini": null;
|
|
131
|
-
readonly "gpt-5.4-nano": null;
|
|
132
|
-
readonly "gpt-5.2": null;
|
|
133
|
-
readonly "claude-sonnet-5": null;
|
|
134
|
-
readonly "claude-fable-5-1": null;
|
|
135
|
-
readonly "claude-fable-5": null;
|
|
136
|
-
readonly "claude-opus-5": null;
|
|
137
|
-
readonly "claude-opus-4-8": null;
|
|
138
|
-
readonly "claude-opus-4-7": null;
|
|
139
|
-
readonly "claude-sonnet-4-6": null;
|
|
140
|
-
readonly "claude-opus-4-6": null;
|
|
141
|
-
readonly "claude-haiku-4-5-20251001": null;
|
|
142
|
-
readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": null;
|
|
143
|
-
readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": null;
|
|
144
|
-
readonly "us.amazon.nova-pro-v1:0": null;
|
|
145
|
-
readonly "us.amazon.nova-lite-v1:0": null;
|
|
146
|
-
readonly "us.amazon.nova-micro-v1:0": null;
|
|
147
|
-
readonly "openai.gpt-oss-120b-1:0": null;
|
|
148
|
-
readonly "openai.gpt-oss-20b-1:0": null;
|
|
149
|
-
readonly "us.deepseek.r1-v1:0": null;
|
|
150
|
-
readonly "mistral-large-latest": null;
|
|
151
|
-
readonly "mistral-medium-latest": null;
|
|
152
|
-
readonly "mistral-small-latest": null;
|
|
153
|
-
readonly "magistral-medium-latest": null;
|
|
154
|
-
readonly "magistral-small": null;
|
|
155
|
-
readonly "pixtral-large-latest": null;
|
|
156
|
-
};
|
|
157
|
-
/**
|
|
158
|
-
* Whether stella should emit a `temperature` sampling override.
|
|
159
|
-
* `"omit"` covers rejected, deprecated, and accepted-but-ignored
|
|
160
|
-
* parameters. Consumers must go through `shouldEmitTemperature`.
|
|
161
|
-
*/
|
|
162
|
-
declare const MODEL_TEMPERATURE_POLICIES: {
|
|
163
|
-
readonly "gemini-3.8-flash": "omit";
|
|
164
|
-
readonly "gemini-3.7-flash": "omit";
|
|
165
|
-
readonly "gemini-3.6-flash": "omit";
|
|
166
|
-
readonly "gemini-3.5-flash-lite": "omit";
|
|
167
|
-
readonly "gemini-3.1-pro-preview": "emit";
|
|
168
|
-
readonly "gemini-3.5-flash": "emit";
|
|
169
|
-
readonly "gemini-3.1-flash-lite": "emit";
|
|
170
|
-
readonly "openai/gpt-5.6-luna": "omit";
|
|
171
|
-
readonly "openai/gpt-5.6-terra": "omit";
|
|
172
|
-
readonly "google/gemini-3.8-flash": "omit";
|
|
173
|
-
readonly "google/gemini-3.7-flash": "omit";
|
|
174
|
-
readonly "google/gemini-3.6-flash": "omit";
|
|
175
|
-
readonly "google/gemini-3.5-flash-lite": "omit";
|
|
176
|
-
readonly "google/gemini-3.1-pro-preview": "emit";
|
|
177
|
-
readonly "google/gemini-3.5-flash": "emit";
|
|
178
|
-
readonly "google/gemini-3.1-flash-lite": "emit";
|
|
179
|
-
readonly "anthropic/claude-sonnet-5": "omit";
|
|
180
|
-
readonly "anthropic/claude-opus-5": "emit";
|
|
181
|
-
readonly "anthropic/claude-opus-4.8": "emit";
|
|
182
|
-
readonly "anthropic/claude-sonnet-4.6": "emit";
|
|
183
|
-
readonly "openai/gpt-5.5": "omit";
|
|
184
|
-
readonly "openai/gpt-5.4-mini": "omit";
|
|
185
|
-
readonly "gpt-5.6": "omit";
|
|
186
|
-
readonly "gpt-5.6-terra": "omit";
|
|
187
|
-
readonly "gpt-5.6-luna": "omit";
|
|
188
|
-
readonly "gpt-5.5": "omit";
|
|
189
|
-
readonly "gpt-5.4": "emit";
|
|
190
|
-
readonly "gpt-5.4-mini": "emit";
|
|
191
|
-
readonly "gpt-5.4-nano": "emit";
|
|
192
|
-
readonly "gpt-5.2": "emit";
|
|
193
|
-
readonly "claude-sonnet-5": "omit";
|
|
194
|
-
readonly "claude-fable-5-1": "omit";
|
|
195
|
-
readonly "claude-fable-5": "omit";
|
|
196
|
-
readonly "claude-opus-5": "omit";
|
|
197
|
-
readonly "claude-opus-4-8": "omit";
|
|
198
|
-
readonly "claude-opus-4-7": "omit";
|
|
199
|
-
readonly "claude-sonnet-4-6": "emit";
|
|
200
|
-
readonly "claude-opus-4-6": "emit";
|
|
201
|
-
readonly "claude-haiku-4-5-20251001": "emit";
|
|
202
|
-
readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "emit";
|
|
203
|
-
readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": "emit";
|
|
204
|
-
readonly "us.amazon.nova-pro-v1:0": "emit";
|
|
205
|
-
readonly "us.amazon.nova-lite-v1:0": "emit";
|
|
206
|
-
readonly "us.amazon.nova-micro-v1:0": "emit";
|
|
207
|
-
readonly "openai.gpt-oss-120b-1:0": "emit";
|
|
208
|
-
readonly "openai.gpt-oss-20b-1:0": "emit";
|
|
209
|
-
readonly "us.deepseek.r1-v1:0": "emit";
|
|
210
|
-
readonly "mistral-large-latest": "emit";
|
|
211
|
-
readonly "mistral-medium-latest": "emit";
|
|
212
|
-
readonly "mistral-small-latest": "emit";
|
|
213
|
-
readonly "magistral-medium-latest": "emit";
|
|
214
|
-
readonly "magistral-small": "emit";
|
|
215
|
-
readonly "pixtral-large-latest": "emit";
|
|
216
|
-
};
|
|
217
|
-
//#endregion
|
|
218
|
-
//#region src/index.d.ts
|
|
219
|
-
/**
|
|
220
|
-
* Logical model roles. Call sites declare *what* they need, not
|
|
221
|
-
* *which* model to use.
|
|
222
|
-
*
|
|
223
|
-
* - fast: classification, extraction, short generation
|
|
224
|
-
* - chat: conversational with tool use and streaming
|
|
225
|
-
* - reasoning: complex multi-step legal analysis
|
|
226
|
-
* - pdf: native PDF/image understanding
|
|
227
|
-
*/
|
|
228
|
-
declare const MODEL_ROLES: readonly ["fast", "chat", "reasoning", "pdf"];
|
|
229
|
-
type ModelRole = (typeof MODEL_ROLES)[number];
|
|
230
|
-
declare const TEMPERATURE_POLICIES: readonly ["emit", "omit"];
|
|
231
|
-
type TemperaturePolicy = (typeof TEMPERATURE_POLICIES)[number];
|
|
232
|
-
declare const AI_PROVIDERS: readonly ["google", "openrouter", "openai", "azure_foundry", "anthropic", "bedrock", "mistral", "openai_compatible", "huggingface"];
|
|
233
|
-
type AIProvider = (typeof AI_PROVIDERS)[number];
|
|
234
|
-
declare const AI_PROVIDER_ADAPTER_KIND: {
|
|
235
|
-
readonly google: "tanstack";
|
|
236
|
-
readonly openrouter: "tanstack";
|
|
237
|
-
readonly openai: "tanstack";
|
|
238
|
-
readonly azure_foundry: "custom";
|
|
239
|
-
readonly anthropic: "tanstack";
|
|
240
|
-
readonly bedrock: "tanstack";
|
|
241
|
-
readonly mistral: "tanstack";
|
|
242
|
-
readonly openai_compatible: "custom";
|
|
243
|
-
readonly huggingface: "custom";
|
|
244
|
-
};
|
|
245
|
-
type TanStackAIProvider = { [TProvider in AIProvider]: (typeof AI_PROVIDER_ADAPTER_KIND)[TProvider] extends "tanstack" ? TProvider : never; }[AIProvider];
|
|
246
|
-
declare const TANSTACK_AI_PROVIDERS: readonly ["google", "openrouter", "openai", "anthropic", "bedrock", "mistral"];
|
|
247
|
-
declare const MODEL_CATALOG_PROVIDER_KIND: {
|
|
248
|
-
readonly google: "first-party";
|
|
249
|
-
readonly openrouter: "aggregator";
|
|
250
|
-
readonly openai: "first-party";
|
|
251
|
-
readonly anthropic: "first-party";
|
|
252
|
-
readonly bedrock: "platform";
|
|
253
|
-
readonly mistral: "first-party";
|
|
254
|
-
};
|
|
255
|
-
/** Providers whose picker IDs map directly to public first-party catalogs. */
|
|
256
|
-
type FirstPartyModelProvider = { [TProvider in TanStackAIProvider]: (typeof MODEL_CATALOG_PROVIDER_KIND)[TProvider] extends "first-party" ? TProvider : never; }[TanStackAIProvider];
|
|
257
|
-
declare const FIRST_PARTY_MODEL_PROVIDER_VALUES: readonly ["google", "openai", "anthropic", "mistral"];
|
|
258
|
-
/**
|
|
259
|
-
* Runtime form of the first-party provider union. The conditional annotation
|
|
260
|
-
* makes adding a first-party policy without adding its discovery implementation
|
|
261
|
-
* a compile error.
|
|
262
|
-
*/
|
|
263
|
-
declare const FIRST_PARTY_MODEL_PROVIDERS: Exclude<FirstPartyModelProvider, (typeof FIRST_PARTY_MODEL_PROVIDER_VALUES)[number]> extends never ? typeof FIRST_PARTY_MODEL_PROVIDER_VALUES : never;
|
|
264
|
-
/**
|
|
265
|
-
* Per-role default model IDs for the BYOK-capable cloud providers.
|
|
266
|
-
* Shared between the instance default table (`DEFAULT_MODELS`) and the
|
|
267
|
-
* settings-UI default selection, so a default is defined exactly once.
|
|
268
|
-
*/
|
|
269
|
-
declare const BYOK_DEFAULT_MODELS: {
|
|
270
|
-
readonly google: {
|
|
271
|
-
readonly fast: "gemini-3.7-flash";
|
|
272
|
-
readonly chat: "gemini-3.7-flash";
|
|
273
|
-
readonly reasoning: "gemini-3.7-flash";
|
|
274
|
-
readonly pdf: "gemini-3.7-flash";
|
|
275
|
-
};
|
|
276
|
-
readonly openrouter: {
|
|
277
|
-
readonly fast: "openai/gpt-5.6-luna";
|
|
278
|
-
readonly chat: "openai/gpt-5.6-terra";
|
|
279
|
-
readonly reasoning: "openai/gpt-5.6-terra";
|
|
280
|
-
readonly pdf: "openai/gpt-5.6-terra";
|
|
281
|
-
};
|
|
282
|
-
readonly openai: {
|
|
283
|
-
readonly fast: "gpt-5.4-nano";
|
|
284
|
-
readonly chat: "gpt-5.4-mini";
|
|
285
|
-
readonly reasoning: "gpt-5.4";
|
|
286
|
-
readonly pdf: "gpt-5.4";
|
|
287
|
-
};
|
|
288
|
-
readonly anthropic: {
|
|
289
|
-
readonly fast: "claude-opus-5";
|
|
290
|
-
readonly chat: "claude-opus-5";
|
|
291
|
-
readonly reasoning: "claude-opus-5";
|
|
292
|
-
readonly pdf: "claude-opus-5";
|
|
293
|
-
};
|
|
294
|
-
readonly bedrock: {
|
|
295
|
-
readonly fast: "us.amazon.nova-micro-v1:0";
|
|
296
|
-
readonly chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
297
|
-
readonly reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
298
|
-
readonly pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
299
|
-
};
|
|
300
|
-
readonly mistral: {
|
|
301
|
-
readonly fast: "mistral-small-latest";
|
|
302
|
-
readonly chat: "mistral-medium-latest";
|
|
303
|
-
readonly reasoning: "magistral-medium-latest";
|
|
304
|
-
readonly pdf: "mistral-large-latest";
|
|
305
|
-
};
|
|
306
|
-
};
|
|
307
|
-
/**
|
|
308
|
-
* Instance-level default model IDs per provider. Extends the BYOK
|
|
309
|
-
* defaults with the providers that only the instance path uses
|
|
310
|
-
* (custom deployments and OpenAI-compatible endpoints).
|
|
311
|
-
*/
|
|
312
|
-
declare const DEFAULT_MODELS: {
|
|
313
|
-
readonly azure_foundry: {
|
|
314
|
-
readonly fast: "gpt-5.4-nano";
|
|
315
|
-
readonly chat: "gpt-5.4-mini";
|
|
316
|
-
readonly reasoning: "gpt-5.4";
|
|
317
|
-
readonly pdf: "gpt-5.4";
|
|
318
|
-
};
|
|
319
|
-
readonly openai_compatible: {
|
|
320
|
-
readonly fast: "default";
|
|
321
|
-
readonly chat: "default";
|
|
322
|
-
readonly reasoning: "default";
|
|
323
|
-
readonly pdf: "default";
|
|
324
|
-
};
|
|
325
|
-
readonly huggingface: {
|
|
326
|
-
readonly fast: "speakleash/Bielik-1.5B-v3.0-Instruct";
|
|
327
|
-
readonly chat: "speakleash/Bielik-11B-v2.3-Instruct";
|
|
328
|
-
readonly reasoning: "speakleash/Bielik-11B-v2.3-Instruct";
|
|
329
|
-
readonly pdf: "speakleash/Bielik-11B-v2.3-Instruct";
|
|
330
|
-
};
|
|
331
|
-
readonly google: {
|
|
332
|
-
readonly fast: "gemini-3.7-flash";
|
|
333
|
-
readonly chat: "gemini-3.7-flash";
|
|
334
|
-
readonly reasoning: "gemini-3.7-flash";
|
|
335
|
-
readonly pdf: "gemini-3.7-flash";
|
|
336
|
-
};
|
|
337
|
-
readonly openrouter: {
|
|
338
|
-
readonly fast: "openai/gpt-5.6-luna";
|
|
339
|
-
readonly chat: "openai/gpt-5.6-terra";
|
|
340
|
-
readonly reasoning: "openai/gpt-5.6-terra";
|
|
341
|
-
readonly pdf: "openai/gpt-5.6-terra";
|
|
342
|
-
};
|
|
343
|
-
readonly openai: {
|
|
344
|
-
readonly fast: "gpt-5.4-nano";
|
|
345
|
-
readonly chat: "gpt-5.4-mini";
|
|
346
|
-
readonly reasoning: "gpt-5.4";
|
|
347
|
-
readonly pdf: "gpt-5.4";
|
|
348
|
-
};
|
|
349
|
-
readonly anthropic: {
|
|
350
|
-
readonly fast: "claude-opus-5";
|
|
351
|
-
readonly chat: "claude-opus-5";
|
|
352
|
-
readonly reasoning: "claude-opus-5";
|
|
353
|
-
readonly pdf: "claude-opus-5";
|
|
354
|
-
};
|
|
355
|
-
readonly bedrock: {
|
|
356
|
-
readonly fast: "us.amazon.nova-micro-v1:0";
|
|
357
|
-
readonly chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
358
|
-
readonly reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
359
|
-
readonly pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
360
|
-
};
|
|
361
|
-
readonly mistral: {
|
|
362
|
-
readonly fast: "mistral-small-latest";
|
|
363
|
-
readonly chat: "mistral-medium-latest";
|
|
364
|
-
readonly reasoning: "magistral-medium-latest";
|
|
365
|
-
readonly pdf: "mistral-large-latest";
|
|
366
|
-
};
|
|
367
|
-
};
|
|
2
|
+
//#region src/model-rate.d.ts
|
|
368
3
|
/**
|
|
369
|
-
*
|
|
370
|
-
*
|
|
371
|
-
*
|
|
372
|
-
* accepts.
|
|
373
|
-
*
|
|
374
|
-
* Limited to providers the TanStack AI integration supports for BYOK.
|
|
375
|
-
* Providers without a first-class TanStack adapter path are intentionally
|
|
376
|
-
* not accepted at this boundary.
|
|
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.
|
|
377
7
|
*/
|
|
378
|
-
declare const
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
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;
|
|
394
24
|
};
|
|
395
25
|
/**
|
|
396
|
-
*
|
|
397
|
-
*
|
|
398
|
-
*
|
|
399
|
-
* creator's icon while their routing provider remains available separately.
|
|
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.
|
|
400
29
|
*/
|
|
401
|
-
|
|
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: {
|
|
402
45
|
readonly "gemini-3.8-flash": {
|
|
403
|
-
readonly
|
|
404
|
-
readonly
|
|
46
|
+
readonly kind: "flat";
|
|
47
|
+
readonly inputPerMTok: 75000;
|
|
48
|
+
readonly outputPerMTok: 375000;
|
|
49
|
+
readonly cachedInputPerMTok: 7500;
|
|
405
50
|
};
|
|
406
51
|
readonly "gemini-3.7-flash": {
|
|
407
|
-
readonly
|
|
408
|
-
readonly
|
|
52
|
+
readonly kind: "flat";
|
|
53
|
+
readonly inputPerMTok: 75000;
|
|
54
|
+
readonly outputPerMTok: 375000;
|
|
55
|
+
readonly cachedInputPerMTok: 7500;
|
|
409
56
|
};
|
|
410
57
|
readonly "gemini-3.6-flash": {
|
|
411
|
-
readonly
|
|
412
|
-
readonly
|
|
58
|
+
readonly kind: "flat";
|
|
59
|
+
readonly inputPerMTok: 75000;
|
|
60
|
+
readonly outputPerMTok: 375000;
|
|
61
|
+
readonly cachedInputPerMTok: 7500;
|
|
413
62
|
};
|
|
414
63
|
readonly "gemini-3.5-flash-lite": {
|
|
415
|
-
readonly
|
|
416
|
-
readonly
|
|
64
|
+
readonly kind: "flat";
|
|
65
|
+
readonly inputPerMTok: 30000;
|
|
66
|
+
readonly outputPerMTok: 250000;
|
|
67
|
+
readonly cachedInputPerMTok: 3000;
|
|
417
68
|
};
|
|
418
69
|
readonly "gemini-3.1-pro-preview": {
|
|
419
|
-
readonly
|
|
420
|
-
readonly
|
|
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
|
+
};
|
|
421
82
|
};
|
|
422
83
|
readonly "gemini-3.5-flash": {
|
|
423
|
-
readonly
|
|
424
|
-
readonly
|
|
84
|
+
readonly kind: "flat";
|
|
85
|
+
readonly inputPerMTok: 150000;
|
|
86
|
+
readonly outputPerMTok: 900000;
|
|
87
|
+
readonly cachedInputPerMTok: 15000;
|
|
425
88
|
};
|
|
426
89
|
readonly "gemini-3.1-flash-lite": {
|
|
427
|
-
readonly
|
|
428
|
-
readonly
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
readonly displayName: "Claude Sonnet 5";
|
|
432
|
-
readonly iconProvider: "anthropic";
|
|
433
|
-
};
|
|
434
|
-
readonly "claude-fable-5-1": {
|
|
435
|
-
readonly displayName: "Claude Fable 5.1";
|
|
436
|
-
readonly iconProvider: "anthropic";
|
|
437
|
-
};
|
|
438
|
-
readonly "claude-fable-5": {
|
|
439
|
-
readonly displayName: "Claude Fable 5";
|
|
440
|
-
readonly iconProvider: "anthropic";
|
|
441
|
-
};
|
|
442
|
-
readonly "claude-opus-5": {
|
|
443
|
-
readonly displayName: "Claude Opus 5";
|
|
444
|
-
readonly iconProvider: "anthropic";
|
|
445
|
-
};
|
|
446
|
-
readonly "claude-opus-4-8": {
|
|
447
|
-
readonly displayName: "Claude Opus 4.8";
|
|
448
|
-
readonly iconProvider: "anthropic";
|
|
449
|
-
};
|
|
450
|
-
readonly "claude-opus-4-7": {
|
|
451
|
-
readonly displayName: "Claude Opus 4.7";
|
|
452
|
-
readonly iconProvider: "anthropic";
|
|
453
|
-
};
|
|
454
|
-
readonly "claude-sonnet-4-6": {
|
|
455
|
-
readonly displayName: "Claude Sonnet 4.6";
|
|
456
|
-
readonly iconProvider: "anthropic";
|
|
457
|
-
};
|
|
458
|
-
readonly "claude-opus-4-6": {
|
|
459
|
-
readonly displayName: "Claude Opus 4.6";
|
|
460
|
-
readonly iconProvider: "anthropic";
|
|
461
|
-
};
|
|
462
|
-
readonly "claude-haiku-4-5-20251001": {
|
|
463
|
-
readonly displayName: "Claude Haiku 4.5";
|
|
464
|
-
readonly iconProvider: "anthropic";
|
|
90
|
+
readonly kind: "flat";
|
|
91
|
+
readonly inputPerMTok: 25000;
|
|
92
|
+
readonly outputPerMTok: 150000;
|
|
93
|
+
readonly cachedInputPerMTok: 2500;
|
|
465
94
|
};
|
|
466
95
|
readonly "gpt-5.6": {
|
|
467
|
-
readonly
|
|
468
|
-
readonly
|
|
96
|
+
readonly kind: "input-token-tiered";
|
|
97
|
+
readonly inputTokenThreshold: 272000;
|
|
98
|
+
readonly standard: {
|
|
99
|
+
readonly inputPerMTok: 400000;
|
|
100
|
+
readonly outputPerMTok: 2000000;
|
|
101
|
+
readonly cachedInputPerMTok: 40000;
|
|
102
|
+
readonly cachedWriteInputPerMTok: 500000;
|
|
103
|
+
};
|
|
104
|
+
readonly aboveThreshold: {
|
|
105
|
+
readonly inputPerMTok: 800000;
|
|
106
|
+
readonly outputPerMTok: 3000000;
|
|
107
|
+
readonly cachedInputPerMTok: 80000;
|
|
108
|
+
readonly cachedWriteInputPerMTok: 1000000;
|
|
109
|
+
};
|
|
469
110
|
};
|
|
470
111
|
readonly "gpt-5.6-terra": {
|
|
471
|
-
readonly
|
|
472
|
-
readonly
|
|
112
|
+
readonly kind: "input-token-tiered";
|
|
113
|
+
readonly inputTokenThreshold: 272000;
|
|
114
|
+
readonly standard: {
|
|
115
|
+
readonly inputPerMTok: 200000;
|
|
116
|
+
readonly outputPerMTok: 1200000;
|
|
117
|
+
readonly cachedInputPerMTok: 20000;
|
|
118
|
+
readonly cachedWriteInputPerMTok: 250000;
|
|
119
|
+
};
|
|
120
|
+
readonly aboveThreshold: {
|
|
121
|
+
readonly inputPerMTok: 400000;
|
|
122
|
+
readonly outputPerMTok: 1800000;
|
|
123
|
+
readonly cachedInputPerMTok: 40000;
|
|
124
|
+
readonly cachedWriteInputPerMTok: 500000;
|
|
125
|
+
};
|
|
473
126
|
};
|
|
474
127
|
readonly "gpt-5.6-luna": {
|
|
475
|
-
readonly
|
|
476
|
-
readonly
|
|
128
|
+
readonly kind: "input-token-tiered";
|
|
129
|
+
readonly inputTokenThreshold: 272000;
|
|
130
|
+
readonly standard: {
|
|
131
|
+
readonly inputPerMTok: 20000;
|
|
132
|
+
readonly outputPerMTok: 120000;
|
|
133
|
+
readonly cachedInputPerMTok: 2000;
|
|
134
|
+
readonly cachedWriteInputPerMTok: 25000;
|
|
135
|
+
};
|
|
136
|
+
readonly aboveThreshold: {
|
|
137
|
+
readonly inputPerMTok: 40000;
|
|
138
|
+
readonly outputPerMTok: 180000;
|
|
139
|
+
readonly cachedInputPerMTok: 4000;
|
|
140
|
+
readonly cachedWriteInputPerMTok: 50000;
|
|
141
|
+
};
|
|
477
142
|
};
|
|
478
143
|
readonly "gpt-5.5": {
|
|
479
|
-
readonly
|
|
480
|
-
readonly
|
|
144
|
+
readonly kind: "input-token-tiered";
|
|
145
|
+
readonly inputTokenThreshold: 272000;
|
|
146
|
+
readonly standard: {
|
|
147
|
+
readonly inputPerMTok: 500000;
|
|
148
|
+
readonly outputPerMTok: 3000000;
|
|
149
|
+
readonly cachedInputPerMTok: 50000;
|
|
150
|
+
};
|
|
151
|
+
readonly aboveThreshold: {
|
|
152
|
+
readonly inputPerMTok: 1000000;
|
|
153
|
+
readonly outputPerMTok: 4500000;
|
|
154
|
+
readonly cachedInputPerMTok: 100000;
|
|
155
|
+
};
|
|
481
156
|
};
|
|
482
157
|
readonly "gpt-5.4": {
|
|
483
|
-
readonly
|
|
484
|
-
readonly
|
|
158
|
+
readonly kind: "input-token-tiered";
|
|
159
|
+
readonly inputTokenThreshold: 272000;
|
|
160
|
+
readonly standard: {
|
|
161
|
+
readonly inputPerMTok: 250000;
|
|
162
|
+
readonly outputPerMTok: 1500000;
|
|
163
|
+
readonly cachedInputPerMTok: 25000;
|
|
164
|
+
};
|
|
165
|
+
readonly aboveThreshold: {
|
|
166
|
+
readonly inputPerMTok: 500000;
|
|
167
|
+
readonly outputPerMTok: 2250000;
|
|
168
|
+
readonly cachedInputPerMTok: 50000;
|
|
169
|
+
};
|
|
485
170
|
};
|
|
486
171
|
readonly "gpt-5.4-mini": {
|
|
487
|
-
readonly
|
|
488
|
-
readonly
|
|
172
|
+
readonly kind: "flat";
|
|
173
|
+
readonly inputPerMTok: 75000;
|
|
174
|
+
readonly outputPerMTok: 450000;
|
|
175
|
+
readonly cachedInputPerMTok: 7500;
|
|
489
176
|
};
|
|
490
177
|
readonly "gpt-5.4-nano": {
|
|
491
|
-
readonly
|
|
492
|
-
readonly
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
readonly displayName: "GPT-5.2";
|
|
496
|
-
readonly iconProvider: "openai";
|
|
497
|
-
};
|
|
498
|
-
readonly "openai/gpt-5.6-luna": {
|
|
499
|
-
readonly displayName: "GPT-5.6 Luna";
|
|
500
|
-
readonly iconProvider: "openai";
|
|
501
|
-
};
|
|
502
|
-
readonly "openai/gpt-5.6-terra": {
|
|
503
|
-
readonly displayName: "GPT-5.6 Terra";
|
|
504
|
-
readonly iconProvider: "openai";
|
|
505
|
-
};
|
|
506
|
-
readonly "google/gemini-3.8-flash": {
|
|
507
|
-
readonly displayName: "Gemini 3.8 Flash";
|
|
508
|
-
readonly iconProvider: "google";
|
|
509
|
-
};
|
|
510
|
-
readonly "google/gemini-3.7-flash": {
|
|
511
|
-
readonly displayName: "Gemini 3.7 Flash";
|
|
512
|
-
readonly iconProvider: "google";
|
|
513
|
-
};
|
|
514
|
-
readonly "google/gemini-3.6-flash": {
|
|
515
|
-
readonly displayName: "Gemini 3.6 Flash";
|
|
516
|
-
readonly iconProvider: "google";
|
|
178
|
+
readonly kind: "flat";
|
|
179
|
+
readonly inputPerMTok: 20000;
|
|
180
|
+
readonly outputPerMTok: 125000;
|
|
181
|
+
readonly cachedInputPerMTok: 2000;
|
|
517
182
|
};
|
|
518
|
-
readonly "
|
|
519
|
-
readonly
|
|
520
|
-
readonly
|
|
183
|
+
readonly "gpt-5.2": {
|
|
184
|
+
readonly kind: "flat";
|
|
185
|
+
readonly inputPerMTok: 175000;
|
|
186
|
+
readonly outputPerMTok: 1400000;
|
|
187
|
+
readonly cachedInputPerMTok: 17500;
|
|
521
188
|
};
|
|
522
|
-
readonly "
|
|
523
|
-
readonly
|
|
524
|
-
readonly
|
|
189
|
+
readonly "claude-sonnet-5": {
|
|
190
|
+
readonly kind: "flat";
|
|
191
|
+
readonly inputPerMTok: 200000;
|
|
192
|
+
readonly outputPerMTok: 1000000;
|
|
193
|
+
readonly cachedInputPerMTok: 20000;
|
|
194
|
+
readonly cachedWriteInputPerMTok: 250000;
|
|
525
195
|
};
|
|
526
|
-
readonly "
|
|
527
|
-
readonly
|
|
528
|
-
readonly
|
|
196
|
+
readonly "claude-fable-5-1": {
|
|
197
|
+
readonly kind: "flat";
|
|
198
|
+
readonly inputPerMTok: 1000000;
|
|
199
|
+
readonly outputPerMTok: 5000000;
|
|
200
|
+
readonly cachedInputPerMTok: 25000;
|
|
201
|
+
readonly cachedWriteInputPerMTok: 1250000;
|
|
529
202
|
};
|
|
530
|
-
readonly "
|
|
531
|
-
readonly
|
|
532
|
-
readonly
|
|
203
|
+
readonly "claude-fable-5": {
|
|
204
|
+
readonly kind: "flat";
|
|
205
|
+
readonly inputPerMTok: 1000000;
|
|
206
|
+
readonly outputPerMTok: 5000000;
|
|
207
|
+
readonly cachedInputPerMTok: 100000;
|
|
208
|
+
readonly cachedWriteInputPerMTok: 1250000;
|
|
533
209
|
};
|
|
534
|
-
readonly "
|
|
535
|
-
readonly
|
|
536
|
-
readonly
|
|
210
|
+
readonly "claude-opus-5": {
|
|
211
|
+
readonly kind: "flat";
|
|
212
|
+
readonly inputPerMTok: 500000;
|
|
213
|
+
readonly outputPerMTok: 2500000;
|
|
214
|
+
readonly cachedInputPerMTok: 50000;
|
|
215
|
+
readonly cachedWriteInputPerMTok: 625000;
|
|
537
216
|
};
|
|
538
|
-
readonly "
|
|
539
|
-
readonly
|
|
540
|
-
readonly
|
|
217
|
+
readonly "claude-opus-4-8": {
|
|
218
|
+
readonly kind: "flat";
|
|
219
|
+
readonly inputPerMTok: 500000;
|
|
220
|
+
readonly outputPerMTok: 2500000;
|
|
221
|
+
readonly cachedInputPerMTok: 50000;
|
|
222
|
+
readonly cachedWriteInputPerMTok: 625000;
|
|
541
223
|
};
|
|
542
|
-
readonly "
|
|
543
|
-
readonly
|
|
544
|
-
readonly
|
|
224
|
+
readonly "claude-opus-4-7": {
|
|
225
|
+
readonly kind: "flat";
|
|
226
|
+
readonly inputPerMTok: 500000;
|
|
227
|
+
readonly outputPerMTok: 2500000;
|
|
228
|
+
readonly cachedInputPerMTok: 50000;
|
|
229
|
+
readonly cachedWriteInputPerMTok: 625000;
|
|
545
230
|
};
|
|
546
|
-
readonly "
|
|
547
|
-
readonly
|
|
548
|
-
readonly
|
|
231
|
+
readonly "claude-sonnet-4-6": {
|
|
232
|
+
readonly kind: "flat";
|
|
233
|
+
readonly inputPerMTok: 300000;
|
|
234
|
+
readonly outputPerMTok: 1500000;
|
|
235
|
+
readonly cachedInputPerMTok: 30000;
|
|
236
|
+
readonly cachedWriteInputPerMTok: 375000;
|
|
549
237
|
};
|
|
550
|
-
readonly "
|
|
551
|
-
readonly
|
|
552
|
-
readonly
|
|
238
|
+
readonly "claude-opus-4-6": {
|
|
239
|
+
readonly kind: "flat";
|
|
240
|
+
readonly inputPerMTok: 500000;
|
|
241
|
+
readonly outputPerMTok: 2500000;
|
|
242
|
+
readonly cachedInputPerMTok: 50000;
|
|
243
|
+
readonly cachedWriteInputPerMTok: 625000;
|
|
553
244
|
};
|
|
554
|
-
readonly "
|
|
555
|
-
readonly
|
|
556
|
-
readonly
|
|
245
|
+
readonly "claude-haiku-4-5-20251001": {
|
|
246
|
+
readonly kind: "flat";
|
|
247
|
+
readonly inputPerMTok: 100000;
|
|
248
|
+
readonly outputPerMTok: 500000;
|
|
249
|
+
readonly cachedInputPerMTok: 10000;
|
|
250
|
+
readonly cachedWriteInputPerMTok: 125000;
|
|
557
251
|
};
|
|
558
252
|
readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": {
|
|
559
|
-
readonly
|
|
560
|
-
readonly
|
|
253
|
+
readonly kind: "flat";
|
|
254
|
+
readonly inputPerMTok: 300000;
|
|
255
|
+
readonly outputPerMTok: 1500000;
|
|
256
|
+
readonly cachedInputPerMTok: 30000;
|
|
257
|
+
readonly cachedWriteInputPerMTok: 375000;
|
|
561
258
|
};
|
|
562
259
|
readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": {
|
|
563
|
-
readonly
|
|
564
|
-
readonly
|
|
260
|
+
readonly kind: "flat";
|
|
261
|
+
readonly inputPerMTok: 100000;
|
|
262
|
+
readonly outputPerMTok: 500000;
|
|
263
|
+
readonly cachedInputPerMTok: 10000;
|
|
264
|
+
readonly cachedWriteInputPerMTok: 125000;
|
|
565
265
|
};
|
|
566
266
|
readonly "us.amazon.nova-pro-v1:0": {
|
|
567
|
-
readonly
|
|
568
|
-
readonly
|
|
267
|
+
readonly kind: "flat";
|
|
268
|
+
readonly inputPerMTok: 80000;
|
|
269
|
+
readonly outputPerMTok: 320000;
|
|
270
|
+
readonly cachedInputPerMTok: 20000;
|
|
569
271
|
};
|
|
570
272
|
readonly "us.amazon.nova-lite-v1:0": {
|
|
571
|
-
readonly
|
|
572
|
-
readonly
|
|
273
|
+
readonly kind: "flat";
|
|
274
|
+
readonly inputPerMTok: 6000;
|
|
275
|
+
readonly outputPerMTok: 24000;
|
|
276
|
+
readonly cachedInputPerMTok: 1500;
|
|
573
277
|
};
|
|
574
278
|
readonly "us.amazon.nova-micro-v1:0": {
|
|
575
|
-
readonly
|
|
576
|
-
readonly
|
|
279
|
+
readonly kind: "flat";
|
|
280
|
+
readonly inputPerMTok: 3500;
|
|
281
|
+
readonly outputPerMTok: 14000;
|
|
282
|
+
readonly cachedInputPerMTok: 875;
|
|
577
283
|
};
|
|
578
284
|
readonly "openai.gpt-oss-120b-1:0": {
|
|
579
|
-
readonly
|
|
580
|
-
readonly
|
|
285
|
+
readonly kind: "flat";
|
|
286
|
+
readonly inputPerMTok: 15000;
|
|
287
|
+
readonly outputPerMTok: 60000;
|
|
581
288
|
};
|
|
582
289
|
readonly "openai.gpt-oss-20b-1:0": {
|
|
583
|
-
readonly
|
|
584
|
-
readonly
|
|
290
|
+
readonly kind: "flat";
|
|
291
|
+
readonly inputPerMTok: 7000;
|
|
292
|
+
readonly outputPerMTok: 30000;
|
|
585
293
|
};
|
|
586
294
|
readonly "us.deepseek.r1-v1:0": {
|
|
587
|
-
readonly
|
|
588
|
-
readonly
|
|
295
|
+
readonly kind: "flat";
|
|
296
|
+
readonly inputPerMTok: 135000;
|
|
297
|
+
readonly outputPerMTok: 540000;
|
|
589
298
|
};
|
|
590
299
|
readonly "mistral-large-latest": {
|
|
591
|
-
readonly
|
|
592
|
-
readonly
|
|
300
|
+
readonly kind: "flat";
|
|
301
|
+
readonly inputPerMTok: 50000;
|
|
302
|
+
readonly outputPerMTok: 150000;
|
|
593
303
|
};
|
|
594
304
|
readonly "mistral-medium-latest": {
|
|
595
|
-
readonly
|
|
596
|
-
readonly
|
|
305
|
+
readonly kind: "flat";
|
|
306
|
+
readonly inputPerMTok: 150000;
|
|
307
|
+
readonly outputPerMTok: 750000;
|
|
597
308
|
};
|
|
598
309
|
readonly "mistral-small-latest": {
|
|
599
|
-
readonly
|
|
600
|
-
readonly
|
|
310
|
+
readonly kind: "flat";
|
|
311
|
+
readonly inputPerMTok: 15000;
|
|
312
|
+
readonly outputPerMTok: 60000;
|
|
601
313
|
};
|
|
602
314
|
readonly "magistral-medium-latest": {
|
|
603
|
-
readonly
|
|
604
|
-
readonly
|
|
315
|
+
readonly kind: "flat";
|
|
316
|
+
readonly inputPerMTok: 200000;
|
|
317
|
+
readonly outputPerMTok: 500000;
|
|
605
318
|
};
|
|
606
319
|
readonly "magistral-small": {
|
|
607
|
-
readonly
|
|
608
|
-
readonly
|
|
320
|
+
readonly kind: "flat";
|
|
321
|
+
readonly inputPerMTok: 50000;
|
|
322
|
+
readonly outputPerMTok: 150000;
|
|
609
323
|
};
|
|
610
324
|
readonly "pixtral-large-latest": {
|
|
611
|
-
readonly
|
|
612
|
-
readonly
|
|
325
|
+
readonly kind: "flat";
|
|
326
|
+
readonly inputPerMTok: 200000;
|
|
327
|
+
readonly outputPerMTok: 600000;
|
|
328
|
+
};
|
|
329
|
+
readonly "gemini-2.5-flash": {
|
|
330
|
+
readonly kind: "flat";
|
|
331
|
+
readonly inputPerMTok: 30000;
|
|
332
|
+
readonly outputPerMTok: 250000;
|
|
333
|
+
readonly cachedInputPerMTok: 3000;
|
|
334
|
+
};
|
|
335
|
+
readonly "gemini-2.5-pro": {
|
|
336
|
+
readonly kind: "input-token-tiered";
|
|
337
|
+
readonly inputTokenThreshold: 200000;
|
|
338
|
+
readonly standard: {
|
|
339
|
+
readonly inputPerMTok: 125000;
|
|
340
|
+
readonly outputPerMTok: 1000000;
|
|
341
|
+
readonly cachedInputPerMTok: 12500;
|
|
342
|
+
};
|
|
343
|
+
readonly aboveThreshold: {
|
|
344
|
+
readonly inputPerMTok: 250000;
|
|
345
|
+
readonly outputPerMTok: 1500000;
|
|
346
|
+
readonly cachedInputPerMTok: 25000;
|
|
347
|
+
};
|
|
348
|
+
};
|
|
349
|
+
readonly "gpt-4o-mini": {
|
|
350
|
+
readonly kind: "flat";
|
|
351
|
+
readonly inputPerMTok: 15000;
|
|
352
|
+
readonly outputPerMTok: 60000;
|
|
353
|
+
readonly cachedInputPerMTok: 7500;
|
|
354
|
+
};
|
|
355
|
+
readonly "gpt-4o": {
|
|
356
|
+
readonly kind: "flat";
|
|
357
|
+
readonly inputPerMTok: 250000;
|
|
358
|
+
readonly outputPerMTok: 1000000;
|
|
359
|
+
readonly cachedInputPerMTok: 125000;
|
|
613
360
|
};
|
|
614
361
|
};
|
|
615
|
-
|
|
362
|
+
//#endregion
|
|
363
|
+
//#region src/model-rate-policy.d.ts
|
|
364
|
+
declare const MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER: {
|
|
365
|
+
readonly google: "google";
|
|
366
|
+
readonly openai: "openai";
|
|
367
|
+
readonly anthropic: "anthropic";
|
|
368
|
+
readonly bedrock: "amazon-bedrock";
|
|
369
|
+
readonly mistral: "mistral";
|
|
370
|
+
};
|
|
371
|
+
type ModelsDevRateProvider = (typeof MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER)[keyof typeof MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER];
|
|
616
372
|
/**
|
|
617
|
-
*
|
|
618
|
-
*
|
|
619
|
-
*
|
|
373
|
+
* Explicit source coordinates for non-offered model IDs that remain valid in
|
|
374
|
+
* deployment overrides and usage attribution. Their numeric rates still come
|
|
375
|
+
* exclusively from models.dev.
|
|
620
376
|
*/
|
|
621
|
-
declare const
|
|
622
|
-
readonly
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
readonly
|
|
627
|
-
|
|
377
|
+
declare const RETAINED_MODELS_DEV_RATE_ENTRIES: {
|
|
378
|
+
readonly "gemini-2.5-flash": {
|
|
379
|
+
readonly modelId: "gemini-2.5-flash";
|
|
380
|
+
readonly provider: "google";
|
|
381
|
+
};
|
|
382
|
+
readonly "gemini-2.5-pro": {
|
|
383
|
+
readonly modelId: "gemini-2.5-pro";
|
|
384
|
+
readonly provider: "google";
|
|
385
|
+
};
|
|
386
|
+
readonly "gpt-4o-mini": {
|
|
387
|
+
readonly modelId: "gpt-4o-mini";
|
|
388
|
+
readonly provider: "openai";
|
|
389
|
+
};
|
|
390
|
+
readonly "gpt-4o": {
|
|
391
|
+
readonly modelId: "gpt-4o";
|
|
392
|
+
readonly provider: "openai";
|
|
393
|
+
};
|
|
628
394
|
};
|
|
629
|
-
declare const isBYOKProviderRoleSupported: ({ provider, role }: {
|
|
630
|
-
provider: BYOKProvider;
|
|
631
|
-
role: ModelRole;
|
|
632
|
-
}) => boolean;
|
|
633
|
-
declare const isBYOKModelRoleSupported: ({ provider, modelId, role }: {
|
|
634
|
-
provider: BYOKProvider;
|
|
635
|
-
modelId: string;
|
|
636
|
-
role: ModelRole;
|
|
637
|
-
}) => boolean;
|
|
638
395
|
/**
|
|
639
|
-
*
|
|
640
|
-
*
|
|
641
|
-
*
|
|
642
|
-
* for PDF-processing flows): it only asks "will the chat stream survive this
|
|
643
|
-
* attachment." The Mistral text adapter maps PDF `document` parts to
|
|
644
|
-
* `document_url`, so its
|
|
645
|
-
* vision models accept PDF attachments even though Mistral is deliberately not
|
|
646
|
-
* offered as a pdf-role provider. Mistral's `document_url` takes PDF but NOT
|
|
647
|
-
* textual documents (docx/txt/csv/md), so those still gate on
|
|
648
|
-
* `BYOK_DOCUMENT_INPUT_MODEL_OPTIONS` (which excludes Mistral). Superset
|
|
649
|
-
* invariant: every pdf-role document model also accepts a PDF chat attachment.
|
|
396
|
+
* Exact mappings where Stella uses a provider routing ID while models.dev
|
|
397
|
+
* publishes pricing under the corresponding base model ID. Generation rejects
|
|
398
|
+
* a mapping once models.dev begins publishing the Stella ID directly.
|
|
650
399
|
*/
|
|
651
|
-
declare const
|
|
652
|
-
readonly
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
400
|
+
declare const MODELS_DEV_RATE_SOURCE_ALIASES: {
|
|
401
|
+
readonly "us.amazon.nova-pro-v1:0": {
|
|
402
|
+
readonly modelId: "amazon.nova-pro-v1:0";
|
|
403
|
+
readonly provider: "amazon-bedrock";
|
|
404
|
+
readonly reason: string;
|
|
405
|
+
readonly sourceUrl: "https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html";
|
|
406
|
+
};
|
|
407
|
+
readonly "us.amazon.nova-lite-v1:0": {
|
|
408
|
+
readonly modelId: "amazon.nova-lite-v1:0";
|
|
409
|
+
readonly provider: "amazon-bedrock";
|
|
410
|
+
readonly reason: string;
|
|
411
|
+
readonly sourceUrl: "https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html";
|
|
412
|
+
};
|
|
413
|
+
readonly "us.amazon.nova-micro-v1:0": {
|
|
414
|
+
readonly modelId: "amazon.nova-micro-v1:0";
|
|
415
|
+
readonly provider: "amazon-bedrock";
|
|
416
|
+
readonly reason: string;
|
|
417
|
+
readonly sourceUrl: "https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html";
|
|
418
|
+
};
|
|
658
419
|
};
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
modelId: string;
|
|
662
|
-
}) => boolean;
|
|
420
|
+
//#endregion
|
|
421
|
+
//#region src/capabilities-overrides.d.ts
|
|
663
422
|
/**
|
|
664
|
-
*
|
|
665
|
-
*
|
|
666
|
-
*
|
|
667
|
-
*
|
|
668
|
-
*
|
|
669
|
-
*
|
|
670
|
-
* exposes no `document` input modality, so no Mistral model (not even
|
|
671
|
-
* the default) can serve the PDF role.
|
|
672
|
-
*
|
|
673
|
-
* Used to auto-heal org AI configs whose pinned model was removed by a
|
|
674
|
-
* catalog bump, so generation resolves to a supported model instead of
|
|
675
|
-
* 400-ing (or forwarding a retired id to the provider).
|
|
423
|
+
* Hand-declared capabilities for offered models that models.dev does
|
|
424
|
+
* not cover. The capability generator
|
|
425
|
+
* (`packages/scripts/src/model-catalog-capabilities-gen.ts`) refuses
|
|
426
|
+
* an override for any model the upstream source covers, so manual
|
|
427
|
+
* data cannot shadow sourced data — this file can only ever fill
|
|
428
|
+
* genuine gaps, each with a dated justification.
|
|
676
429
|
*/
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
430
|
+
type CapabilityOverride = {
|
|
431
|
+
documentInput: boolean;
|
|
432
|
+
documentInputReason: string;
|
|
433
|
+
reasoningEfforts: readonly ReasoningEffort[] | null;
|
|
434
|
+
temperatureSupported: boolean;
|
|
435
|
+
/** Why the upstream source cannot answer for this model. Dated. */
|
|
436
|
+
reason: string;
|
|
437
|
+
};
|
|
438
|
+
declare const CAPABILITY_OVERRIDES: Partial<Record<OfferedBYOKModelId, CapabilityOverride>>;
|
|
439
|
+
//#endregion
|
|
440
|
+
//#region src/document-input-overrides.d.ts
|
|
441
|
+
type DocumentInputOverride = {
|
|
442
|
+
/** Whether the model accepts a PDF/file content part. */
|
|
443
|
+
supported: boolean;
|
|
444
|
+
/** Why the live catalogue cannot answer correctly. Dated. */
|
|
445
|
+
reason: string;
|
|
446
|
+
};
|
|
682
447
|
/**
|
|
683
|
-
*
|
|
684
|
-
*
|
|
685
|
-
*
|
|
686
|
-
* offered above must appear here or it will 400 on the reasoning role.
|
|
448
|
+
* Reviewed document-input corrections for models.dev records that exist but
|
|
449
|
+
* under-report the provider API's file-input support. The generator rejects an
|
|
450
|
+
* override once upstream agrees, so sourced data takes ownership automatically.
|
|
687
451
|
*/
|
|
688
|
-
declare const
|
|
452
|
+
declare const DOCUMENT_INPUT_OVERRIDES: Partial<Record<OfferedBYOKModelId, DocumentInputOverride>>;
|
|
453
|
+
//#endregion
|
|
454
|
+
//#region src/capabilities.gen.d.ts
|
|
689
455
|
/**
|
|
690
|
-
*
|
|
691
|
-
*
|
|
692
|
-
*
|
|
693
|
-
*
|
|
456
|
+
* Reasoning-effort values each offered model accepts, `null` when the
|
|
457
|
+
* model exposes no effort-style reasoning control. A missing `"none"`
|
|
458
|
+
* means the model's reasoning cannot be disabled; consumers must go
|
|
459
|
+
* through `resolveReasoningEffort`.
|
|
694
460
|
*/
|
|
695
|
-
declare const
|
|
696
|
-
|
|
697
|
-
|
|
461
|
+
declare const MODEL_REASONING_EFFORTS: {
|
|
462
|
+
readonly "gemini-3.8-flash": readonly ["low", "medium", "high"];
|
|
463
|
+
readonly "gemini-3.7-flash": readonly ["low", "medium", "high"];
|
|
464
|
+
readonly "gemini-3.6-flash": readonly ["minimal", "low", "medium", "high"];
|
|
465
|
+
readonly "gemini-3.5-flash-lite": readonly ["minimal", "low", "medium", "high"];
|
|
466
|
+
readonly "gemini-3.1-pro-preview": readonly ["low", "medium", "high"];
|
|
467
|
+
readonly "gemini-3.5-flash": readonly ["minimal", "low", "medium", "high"];
|
|
468
|
+
readonly "gemini-3.1-flash-lite": readonly ["minimal", "low", "medium", "high"];
|
|
469
|
+
readonly "openai/gpt-5.6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
470
|
+
readonly "openai/gpt-5.6-terra": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
471
|
+
readonly "google/gemini-3.8-flash": readonly ["low", "medium", "high"];
|
|
472
|
+
readonly "google/gemini-3.7-flash": readonly ["low", "medium", "high"];
|
|
473
|
+
readonly "google/gemini-3.6-flash": readonly ["minimal", "low", "medium", "high"];
|
|
474
|
+
readonly "google/gemini-3.5-flash-lite": readonly ["minimal", "low", "medium", "high"];
|
|
475
|
+
readonly "google/gemini-3.1-pro-preview": readonly ["low", "medium", "high"];
|
|
476
|
+
readonly "google/gemini-3.5-flash": readonly ["minimal", "low", "medium", "high"];
|
|
477
|
+
readonly "google/gemini-3.1-flash-lite": readonly ["none", "minimal", "low", "medium", "high"];
|
|
478
|
+
readonly "anthropic/claude-sonnet-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
479
|
+
readonly "anthropic/claude-opus-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
480
|
+
readonly "anthropic/claude-opus-4.8": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
481
|
+
readonly "anthropic/claude-sonnet-4.6": readonly ["none", "low", "medium", "high", "max"];
|
|
482
|
+
readonly "openai/gpt-5.5": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
483
|
+
readonly "openai/gpt-5.4-mini": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
484
|
+
readonly "gpt-5.6": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
485
|
+
readonly "gpt-5.6-terra": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
486
|
+
readonly "gpt-5.6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
487
|
+
readonly "gpt-5.5": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
488
|
+
readonly "gpt-5.4": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
489
|
+
readonly "gpt-5.4-mini": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
490
|
+
readonly "gpt-5.4-nano": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
491
|
+
readonly "gpt-5.2": readonly ["none", "low", "medium", "high", "xhigh"];
|
|
492
|
+
readonly "claude-sonnet-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
|
|
493
|
+
readonly "claude-fable-5-1": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
494
|
+
readonly "claude-fable-5": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
495
|
+
readonly "claude-opus-5": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
496
|
+
readonly "claude-opus-4-8": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
497
|
+
readonly "claude-opus-4-7": readonly ["low", "medium", "high", "xhigh", "max"];
|
|
498
|
+
readonly "claude-sonnet-4-6": readonly ["low", "medium", "high", "max"];
|
|
499
|
+
readonly "claude-opus-4-6": readonly ["low", "medium", "high", "max"];
|
|
500
|
+
readonly "claude-haiku-4-5-20251001": null;
|
|
501
|
+
readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": null;
|
|
502
|
+
readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": null;
|
|
503
|
+
readonly "us.amazon.nova-pro-v1:0": null;
|
|
504
|
+
readonly "us.amazon.nova-lite-v1:0": null;
|
|
505
|
+
readonly "us.amazon.nova-micro-v1:0": null;
|
|
506
|
+
readonly "openai.gpt-oss-120b-1:0": readonly ["low", "medium", "high"];
|
|
507
|
+
readonly "openai.gpt-oss-20b-1:0": readonly ["low", "medium", "high"];
|
|
508
|
+
readonly "us.deepseek.r1-v1:0": null;
|
|
509
|
+
readonly "mistral-large-latest": null;
|
|
510
|
+
readonly "mistral-medium-latest": readonly ["none", "high"];
|
|
511
|
+
readonly "mistral-small-latest": readonly ["none", "high"];
|
|
512
|
+
readonly "magistral-medium-latest": null;
|
|
513
|
+
readonly "magistral-small": null;
|
|
514
|
+
readonly "pixtral-large-latest": null;
|
|
515
|
+
};
|
|
698
516
|
/**
|
|
699
|
-
*
|
|
700
|
-
*
|
|
701
|
-
*
|
|
702
|
-
* (e.g. `"none"` to a model whose reasoning cannot be disabled) —
|
|
703
|
-
* that mistake now fails typecheck instead of 502-ing at runtime.
|
|
517
|
+
* Concrete provider-default effort where the upstream catalogue publishes
|
|
518
|
+
* one. OpenRouter is the source today; null means the provider does not expose
|
|
519
|
+
* a truthful named default, so clients must retain a separate Default choice.
|
|
704
520
|
*/
|
|
705
|
-
|
|
521
|
+
declare const MODEL_DEFAULT_REASONING_EFFORTS: {
|
|
522
|
+
readonly "gemini-3.8-flash": null;
|
|
523
|
+
readonly "gemini-3.7-flash": null;
|
|
524
|
+
readonly "gemini-3.6-flash": null;
|
|
525
|
+
readonly "gemini-3.5-flash-lite": null;
|
|
526
|
+
readonly "gemini-3.1-pro-preview": null;
|
|
527
|
+
readonly "gemini-3.5-flash": null;
|
|
528
|
+
readonly "gemini-3.1-flash-lite": null;
|
|
529
|
+
readonly "openai/gpt-5.6-luna": "medium";
|
|
530
|
+
readonly "openai/gpt-5.6-terra": "medium";
|
|
531
|
+
readonly "google/gemini-3.8-flash": "medium";
|
|
532
|
+
readonly "google/gemini-3.7-flash": "medium";
|
|
533
|
+
readonly "google/gemini-3.6-flash": "medium";
|
|
534
|
+
readonly "google/gemini-3.5-flash-lite": "minimal";
|
|
535
|
+
readonly "google/gemini-3.1-pro-preview": "medium";
|
|
536
|
+
readonly "google/gemini-3.5-flash": "medium";
|
|
537
|
+
readonly "google/gemini-3.1-flash-lite": "minimal";
|
|
538
|
+
readonly "anthropic/claude-sonnet-5": "high";
|
|
539
|
+
readonly "anthropic/claude-opus-5": "high";
|
|
540
|
+
readonly "anthropic/claude-opus-4.8": "high";
|
|
541
|
+
readonly "anthropic/claude-sonnet-4.6": "medium";
|
|
542
|
+
readonly "openai/gpt-5.5": "medium";
|
|
543
|
+
readonly "openai/gpt-5.4-mini": "medium";
|
|
544
|
+
readonly "gpt-5.6": null;
|
|
545
|
+
readonly "gpt-5.6-terra": null;
|
|
546
|
+
readonly "gpt-5.6-luna": null;
|
|
547
|
+
readonly "gpt-5.5": null;
|
|
548
|
+
readonly "gpt-5.4": null;
|
|
549
|
+
readonly "gpt-5.4-mini": null;
|
|
550
|
+
readonly "gpt-5.4-nano": null;
|
|
551
|
+
readonly "gpt-5.2": null;
|
|
552
|
+
readonly "claude-sonnet-5": null;
|
|
553
|
+
readonly "claude-fable-5-1": null;
|
|
554
|
+
readonly "claude-fable-5": null;
|
|
555
|
+
readonly "claude-opus-5": null;
|
|
556
|
+
readonly "claude-opus-4-8": null;
|
|
557
|
+
readonly "claude-opus-4-7": null;
|
|
558
|
+
readonly "claude-sonnet-4-6": null;
|
|
559
|
+
readonly "claude-opus-4-6": null;
|
|
560
|
+
readonly "claude-haiku-4-5-20251001": null;
|
|
561
|
+
readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": null;
|
|
562
|
+
readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": null;
|
|
563
|
+
readonly "us.amazon.nova-pro-v1:0": null;
|
|
564
|
+
readonly "us.amazon.nova-lite-v1:0": null;
|
|
565
|
+
readonly "us.amazon.nova-micro-v1:0": null;
|
|
566
|
+
readonly "openai.gpt-oss-120b-1:0": null;
|
|
567
|
+
readonly "openai.gpt-oss-20b-1:0": null;
|
|
568
|
+
readonly "us.deepseek.r1-v1:0": null;
|
|
569
|
+
readonly "mistral-large-latest": null;
|
|
570
|
+
readonly "mistral-medium-latest": null;
|
|
571
|
+
readonly "mistral-small-latest": null;
|
|
572
|
+
readonly "magistral-medium-latest": null;
|
|
573
|
+
readonly "magistral-small": null;
|
|
574
|
+
readonly "pixtral-large-latest": null;
|
|
575
|
+
};
|
|
706
576
|
/**
|
|
707
|
-
*
|
|
708
|
-
*
|
|
709
|
-
*
|
|
577
|
+
* Whether stella should emit a `temperature` sampling override.
|
|
578
|
+
* `"omit"` covers rejected, deprecated, and accepted-but-ignored
|
|
579
|
+
* parameters. Consumers must go through `shouldEmitTemperature`.
|
|
710
580
|
*/
|
|
581
|
+
declare const MODEL_TEMPERATURE_POLICIES: {
|
|
582
|
+
readonly "gemini-3.8-flash": "omit";
|
|
583
|
+
readonly "gemini-3.7-flash": "omit";
|
|
584
|
+
readonly "gemini-3.6-flash": "omit";
|
|
585
|
+
readonly "gemini-3.5-flash-lite": "omit";
|
|
586
|
+
readonly "gemini-3.1-pro-preview": "emit";
|
|
587
|
+
readonly "gemini-3.5-flash": "emit";
|
|
588
|
+
readonly "gemini-3.1-flash-lite": "emit";
|
|
589
|
+
readonly "openai/gpt-5.6-luna": "omit";
|
|
590
|
+
readonly "openai/gpt-5.6-terra": "omit";
|
|
591
|
+
readonly "google/gemini-3.8-flash": "omit";
|
|
592
|
+
readonly "google/gemini-3.7-flash": "omit";
|
|
593
|
+
readonly "google/gemini-3.6-flash": "omit";
|
|
594
|
+
readonly "google/gemini-3.5-flash-lite": "omit";
|
|
595
|
+
readonly "google/gemini-3.1-pro-preview": "emit";
|
|
596
|
+
readonly "google/gemini-3.5-flash": "emit";
|
|
597
|
+
readonly "google/gemini-3.1-flash-lite": "emit";
|
|
598
|
+
readonly "anthropic/claude-sonnet-5": "omit";
|
|
599
|
+
readonly "anthropic/claude-opus-5": "emit";
|
|
600
|
+
readonly "anthropic/claude-opus-4.8": "emit";
|
|
601
|
+
readonly "anthropic/claude-sonnet-4.6": "emit";
|
|
602
|
+
readonly "openai/gpt-5.5": "omit";
|
|
603
|
+
readonly "openai/gpt-5.4-mini": "omit";
|
|
604
|
+
readonly "gpt-5.6": "omit";
|
|
605
|
+
readonly "gpt-5.6-terra": "omit";
|
|
606
|
+
readonly "gpt-5.6-luna": "omit";
|
|
607
|
+
readonly "gpt-5.5": "omit";
|
|
608
|
+
readonly "gpt-5.4": "emit";
|
|
609
|
+
readonly "gpt-5.4-mini": "emit";
|
|
610
|
+
readonly "gpt-5.4-nano": "emit";
|
|
611
|
+
readonly "gpt-5.2": "emit";
|
|
612
|
+
readonly "claude-sonnet-5": "omit";
|
|
613
|
+
readonly "claude-fable-5-1": "omit";
|
|
614
|
+
readonly "claude-fable-5": "omit";
|
|
615
|
+
readonly "claude-opus-5": "omit";
|
|
616
|
+
readonly "claude-opus-4-8": "omit";
|
|
617
|
+
readonly "claude-opus-4-7": "omit";
|
|
618
|
+
readonly "claude-sonnet-4-6": "emit";
|
|
619
|
+
readonly "claude-opus-4-6": "emit";
|
|
620
|
+
readonly "claude-haiku-4-5-20251001": "emit";
|
|
621
|
+
readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "emit";
|
|
622
|
+
readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": "emit";
|
|
623
|
+
readonly "us.amazon.nova-pro-v1:0": "emit";
|
|
624
|
+
readonly "us.amazon.nova-lite-v1:0": "emit";
|
|
625
|
+
readonly "us.amazon.nova-micro-v1:0": "emit";
|
|
626
|
+
readonly "openai.gpt-oss-120b-1:0": "emit";
|
|
627
|
+
readonly "openai.gpt-oss-20b-1:0": "emit";
|
|
628
|
+
readonly "us.deepseek.r1-v1:0": "emit";
|
|
629
|
+
readonly "mistral-large-latest": "emit";
|
|
630
|
+
readonly "mistral-medium-latest": "emit";
|
|
631
|
+
readonly "mistral-small-latest": "emit";
|
|
632
|
+
readonly "magistral-medium-latest": "emit";
|
|
633
|
+
readonly "magistral-small": "emit";
|
|
634
|
+
readonly "pixtral-large-latest": "emit";
|
|
635
|
+
};
|
|
636
|
+
//#endregion
|
|
637
|
+
//#region src/index.d.ts
|
|
711
638
|
/**
|
|
712
|
-
*
|
|
713
|
-
*
|
|
714
|
-
*
|
|
715
|
-
*
|
|
716
|
-
*
|
|
639
|
+
* Logical model roles. Call sites declare *what* they need, not
|
|
640
|
+
* *which* model to use.
|
|
641
|
+
*
|
|
642
|
+
* - fast: classification, extraction, short generation
|
|
643
|
+
* - chat: conversational with tool use and streaming
|
|
644
|
+
* - reasoning: complex multi-step legal analysis
|
|
645
|
+
* - pdf: native PDF/image understanding
|
|
717
646
|
*/
|
|
718
|
-
declare const
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
readonly
|
|
726
|
-
readonly
|
|
727
|
-
readonly
|
|
647
|
+
declare const MODEL_ROLES: readonly ["fast", "chat", "reasoning", "pdf"];
|
|
648
|
+
type ModelRole = (typeof MODEL_ROLES)[number];
|
|
649
|
+
declare const TEMPERATURE_POLICIES: readonly ["emit", "omit"];
|
|
650
|
+
type TemperaturePolicy = (typeof TEMPERATURE_POLICIES)[number];
|
|
651
|
+
declare const AI_PROVIDERS: readonly ["google", "openrouter", "openai", "azure_foundry", "anthropic", "bedrock", "mistral", "openai_compatible", "huggingface"];
|
|
652
|
+
type AIProvider = (typeof AI_PROVIDERS)[number];
|
|
653
|
+
declare const AI_PROVIDER_ADAPTER_KIND: {
|
|
654
|
+
readonly google: "tanstack";
|
|
655
|
+
readonly openrouter: "tanstack";
|
|
656
|
+
readonly openai: "tanstack";
|
|
657
|
+
readonly azure_foundry: "custom";
|
|
658
|
+
readonly anthropic: "tanstack";
|
|
659
|
+
readonly bedrock: "tanstack";
|
|
660
|
+
readonly mistral: "tanstack";
|
|
661
|
+
readonly openai_compatible: "custom";
|
|
662
|
+
readonly huggingface: "custom";
|
|
728
663
|
};
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
readonly
|
|
664
|
+
type TanStackAIProvider = { [TProvider in AIProvider]: (typeof AI_PROVIDER_ADAPTER_KIND)[TProvider] extends "tanstack" ? TProvider : never; }[AIProvider];
|
|
665
|
+
declare const TANSTACK_AI_PROVIDERS: readonly ["google", "openrouter", "openai", "anthropic", "bedrock", "mistral"];
|
|
666
|
+
declare const MODEL_CATALOG_PROVIDER_KIND: {
|
|
667
|
+
readonly google: "first-party";
|
|
668
|
+
readonly openrouter: "aggregator";
|
|
669
|
+
readonly openai: "first-party";
|
|
670
|
+
readonly anthropic: "first-party";
|
|
671
|
+
readonly bedrock: "platform";
|
|
672
|
+
readonly mistral: "first-party";
|
|
733
673
|
};
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
* This is deliberately stricter than provider acceptance: deprecated
|
|
738
|
-
* parameters that are accepted but ignored resolve to `false`. Unknown ids
|
|
739
|
-
* also resolve to `false` (send nothing; provider default). Callers must
|
|
740
|
-
* never index `MODEL_TEMPERATURE_POLICIES` directly with
|
|
741
|
-
* a runtime string.
|
|
742
|
-
*/
|
|
743
|
-
declare const shouldEmitTemperature: (modelId: string) => boolean;
|
|
674
|
+
/** Providers whose picker IDs map directly to public first-party catalogs. */
|
|
675
|
+
type FirstPartyModelProvider = { [TProvider in TanStackAIProvider]: (typeof MODEL_CATALOG_PROVIDER_KIND)[TProvider] extends "first-party" ? TProvider : never; }[TanStackAIProvider];
|
|
676
|
+
declare const FIRST_PARTY_MODEL_PROVIDER_VALUES: readonly ["google", "openai", "anthropic", "mistral"];
|
|
744
677
|
/**
|
|
745
|
-
*
|
|
746
|
-
*
|
|
747
|
-
*
|
|
748
|
-
* directly with a runtime string.
|
|
678
|
+
* Runtime form of the first-party provider union. The conditional annotation
|
|
679
|
+
* makes adding a first-party policy without adding its discovery implementation
|
|
680
|
+
* a compile error.
|
|
749
681
|
*/
|
|
750
|
-
declare const
|
|
682
|
+
declare const FIRST_PARTY_MODEL_PROVIDERS: Exclude<FirstPartyModelProvider, (typeof FIRST_PARTY_MODEL_PROVIDER_VALUES)[number]> extends never ? typeof FIRST_PARTY_MODEL_PROVIDER_VALUES : never;
|
|
751
683
|
/**
|
|
752
|
-
*
|
|
753
|
-
*
|
|
684
|
+
* Per-role default model IDs for the BYOK-capable cloud providers.
|
|
685
|
+
* Shared between the instance default table (`DEFAULT_MODELS`) and the
|
|
686
|
+
* settings-UI default selection, so a default is defined exactly once.
|
|
754
687
|
*/
|
|
755
|
-
declare const
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
688
|
+
declare const BYOK_DEFAULT_MODELS: {
|
|
689
|
+
readonly google: {
|
|
690
|
+
readonly fast: "gemini-3.7-flash";
|
|
691
|
+
readonly chat: "gemini-3.7-flash";
|
|
692
|
+
readonly reasoning: "gemini-3.7-flash";
|
|
693
|
+
readonly pdf: "gemini-3.7-flash";
|
|
694
|
+
};
|
|
695
|
+
readonly openrouter: {
|
|
696
|
+
readonly fast: "openai/gpt-5.6-luna";
|
|
697
|
+
readonly chat: "openai/gpt-5.6-terra";
|
|
698
|
+
readonly reasoning: "openai/gpt-5.6-terra";
|
|
699
|
+
readonly pdf: "openai/gpt-5.6-terra";
|
|
700
|
+
};
|
|
701
|
+
readonly openai: {
|
|
702
|
+
readonly fast: "gpt-5.4-nano";
|
|
703
|
+
readonly chat: "gpt-5.4-mini";
|
|
704
|
+
readonly reasoning: "gpt-5.4";
|
|
705
|
+
readonly pdf: "gpt-5.4";
|
|
706
|
+
};
|
|
707
|
+
readonly anthropic: {
|
|
708
|
+
readonly fast: "claude-opus-5";
|
|
709
|
+
readonly chat: "claude-opus-5";
|
|
710
|
+
readonly reasoning: "claude-opus-5";
|
|
711
|
+
readonly pdf: "claude-opus-5";
|
|
712
|
+
};
|
|
713
|
+
readonly bedrock: {
|
|
714
|
+
readonly fast: "us.amazon.nova-micro-v1:0";
|
|
715
|
+
readonly chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
716
|
+
readonly reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
717
|
+
readonly pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
718
|
+
};
|
|
719
|
+
readonly mistral: {
|
|
720
|
+
readonly fast: "mistral-small-latest";
|
|
721
|
+
readonly chat: "mistral-medium-latest";
|
|
722
|
+
readonly reasoning: "magistral-medium-latest";
|
|
723
|
+
readonly pdf: "mistral-large-latest";
|
|
724
|
+
};
|
|
759
725
|
};
|
|
760
726
|
/**
|
|
761
|
-
*
|
|
762
|
-
*
|
|
763
|
-
*
|
|
764
|
-
* - Unknown model or no effort control → `null` (send no effort at
|
|
765
|
-
* all; the provider default is the only universally safe choice).
|
|
766
|
-
* - Requested value supported → returned unchanged.
|
|
767
|
-
* - Otherwise → the supported value nearest on `REASONING_EFFORTS`,
|
|
768
|
-
* preferring the weaker side on ties, so a "none" request against a
|
|
769
|
-
* reasoning-mandatory model degrades to its weakest tier instead of
|
|
770
|
-
* erroring, and requests above the model's ceiling clamp down to it.
|
|
727
|
+
* Instance-level default model IDs per provider. Extends the BYOK
|
|
728
|
+
* defaults with the providers that only the instance path uses
|
|
729
|
+
* (custom deployments and OpenAI-compatible endpoints).
|
|
771
730
|
*/
|
|
772
|
-
declare const
|
|
731
|
+
declare const DEFAULT_MODELS: {
|
|
732
|
+
readonly azure_foundry: {
|
|
733
|
+
readonly fast: "gpt-5.4-nano";
|
|
734
|
+
readonly chat: "gpt-5.4-mini";
|
|
735
|
+
readonly reasoning: "gpt-5.4";
|
|
736
|
+
readonly pdf: "gpt-5.4";
|
|
737
|
+
};
|
|
738
|
+
readonly openai_compatible: {
|
|
739
|
+
readonly fast: "default";
|
|
740
|
+
readonly chat: "default";
|
|
741
|
+
readonly reasoning: "default";
|
|
742
|
+
readonly pdf: "default";
|
|
743
|
+
};
|
|
744
|
+
readonly huggingface: {
|
|
745
|
+
readonly fast: "speakleash/Bielik-1.5B-v3.0-Instruct";
|
|
746
|
+
readonly chat: "speakleash/Bielik-11B-v2.3-Instruct";
|
|
747
|
+
readonly reasoning: "speakleash/Bielik-11B-v2.3-Instruct";
|
|
748
|
+
readonly pdf: "speakleash/Bielik-11B-v2.3-Instruct";
|
|
749
|
+
};
|
|
750
|
+
readonly google: {
|
|
751
|
+
readonly fast: "gemini-3.7-flash";
|
|
752
|
+
readonly chat: "gemini-3.7-flash";
|
|
753
|
+
readonly reasoning: "gemini-3.7-flash";
|
|
754
|
+
readonly pdf: "gemini-3.7-flash";
|
|
755
|
+
};
|
|
756
|
+
readonly openrouter: {
|
|
757
|
+
readonly fast: "openai/gpt-5.6-luna";
|
|
758
|
+
readonly chat: "openai/gpt-5.6-terra";
|
|
759
|
+
readonly reasoning: "openai/gpt-5.6-terra";
|
|
760
|
+
readonly pdf: "openai/gpt-5.6-terra";
|
|
761
|
+
};
|
|
762
|
+
readonly openai: {
|
|
763
|
+
readonly fast: "gpt-5.4-nano";
|
|
764
|
+
readonly chat: "gpt-5.4-mini";
|
|
765
|
+
readonly reasoning: "gpt-5.4";
|
|
766
|
+
readonly pdf: "gpt-5.4";
|
|
767
|
+
};
|
|
768
|
+
readonly anthropic: {
|
|
769
|
+
readonly fast: "claude-opus-5";
|
|
770
|
+
readonly chat: "claude-opus-5";
|
|
771
|
+
readonly reasoning: "claude-opus-5";
|
|
772
|
+
readonly pdf: "claude-opus-5";
|
|
773
|
+
};
|
|
774
|
+
readonly bedrock: {
|
|
775
|
+
readonly fast: "us.amazon.nova-micro-v1:0";
|
|
776
|
+
readonly chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
777
|
+
readonly reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
778
|
+
readonly pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
779
|
+
};
|
|
780
|
+
readonly mistral: {
|
|
781
|
+
readonly fast: "mistral-small-latest";
|
|
782
|
+
readonly chat: "mistral-medium-latest";
|
|
783
|
+
readonly reasoning: "magistral-medium-latest";
|
|
784
|
+
readonly pdf: "mistral-large-latest";
|
|
785
|
+
};
|
|
786
|
+
};
|
|
773
787
|
/**
|
|
774
|
-
*
|
|
788
|
+
* BYOK-offered model IDs per provider — the curated catalog users pick
|
|
789
|
+
* from in org settings, and the server-side allowlist the API enforces.
|
|
790
|
+
* The frontend list is not a security boundary; this is what the API
|
|
791
|
+
* accepts.
|
|
775
792
|
*
|
|
776
|
-
*
|
|
777
|
-
*
|
|
778
|
-
*
|
|
779
|
-
* `model-catalog-upstream` check validates that every offered
|
|
780
|
-
* first-party model has an entry and that entries stay mutually
|
|
781
|
-
* consistent with upstream catalog cost metadata, so a stale entry
|
|
782
|
-
* fails CI instead of silently mis-attributing usage.
|
|
793
|
+
* Limited to providers the TanStack AI integration supports for BYOK.
|
|
794
|
+
* Providers without a first-class TanStack adapter path are intentionally
|
|
795
|
+
* not accepted at this boundary.
|
|
783
796
|
*/
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
* provider offers a cache-read adjustment. Falls back to
|
|
792
|
-
* `inputPerMTok` when undefined.
|
|
793
|
-
*/
|
|
794
|
-
cachedInputPerMTok?: number;
|
|
797
|
+
declare const BYOK_MODEL_OPTIONS: {
|
|
798
|
+
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"];
|
|
799
|
+
readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-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"];
|
|
800
|
+
readonly openai: readonly ["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"];
|
|
801
|
+
readonly openrouter: readonly ["openai/gpt-5.6-luna", "openai/gpt-5.6-terra", "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", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
|
|
802
|
+
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", "us.deepseek.r1-v1:0"];
|
|
803
|
+
readonly mistral: readonly ["mistral-large-latest", "mistral-medium-latest", "mistral-small-latest", "magistral-medium-latest", "magistral-small", "pixtral-large-latest"];
|
|
795
804
|
};
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
*/
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
kind: "input-token-tiered";
|
|
805
|
-
/** The base tier applies at or below this total input-token count. */
|
|
806
|
-
inputTokenThreshold: number;
|
|
807
|
-
standard: ModelRateAmounts;
|
|
808
|
-
/** Applies to the entire request once input exceeds the threshold. */
|
|
809
|
-
aboveThreshold: ModelRateAmounts;
|
|
805
|
+
type BYOKProvider = keyof typeof BYOK_MODEL_OPTIONS;
|
|
806
|
+
type BYOKModelIdByProvider = { [TProvider in BYOKProvider]: (typeof BYOK_MODEL_OPTIONS)[TProvider][number]; };
|
|
807
|
+
type OfferedBYOKModelId = BYOKModelIdByProvider[BYOKProvider];
|
|
808
|
+
type ModelDisplayMetadata = {
|
|
809
|
+
/** Human-readable product name; model names are trademarks and stay untranslated. */
|
|
810
|
+
displayName: string;
|
|
811
|
+
/** Brand mark to show. This may differ from the routing provider. */
|
|
812
|
+
iconProvider: BYOKProvider;
|
|
810
813
|
};
|
|
811
|
-
declare const getStandardModelRate: (rate: ModelRate) => ModelRateAmounts;
|
|
812
|
-
declare const resolveModelRate: (rate: ModelRate, inputTokens: number) => ModelRateAmounts;
|
|
813
814
|
/**
|
|
814
|
-
*
|
|
815
|
-
*
|
|
816
|
-
*
|
|
817
|
-
*
|
|
818
|
-
* model IDs or the fallback rate.
|
|
815
|
+
* Presentation metadata for every offered model. Keeping this exhaustive beside
|
|
816
|
+
* the allowlist prevents a newly offered model from leaking a raw provider ID
|
|
817
|
+
* into user-facing pickers. OpenRouter entries deliberately carry their model
|
|
818
|
+
* creator's icon while their routing provider remains available separately.
|
|
819
819
|
*/
|
|
820
|
-
declare const
|
|
821
|
-
readonly "gemini-
|
|
822
|
-
readonly
|
|
823
|
-
readonly
|
|
824
|
-
readonly outputPerMTok: 250000;
|
|
825
|
-
readonly cachedInputPerMTok: 7500;
|
|
826
|
-
};
|
|
827
|
-
readonly "gemini-2.5-pro": {
|
|
828
|
-
readonly kind: "flat";
|
|
829
|
-
readonly inputPerMTok: 125000;
|
|
830
|
-
readonly outputPerMTok: 1000000;
|
|
831
|
-
readonly cachedInputPerMTok: 31250;
|
|
820
|
+
declare const MODEL_DISPLAY_METADATA: {
|
|
821
|
+
readonly "gemini-3.8-flash": {
|
|
822
|
+
readonly displayName: "Gemini 3.8 Flash";
|
|
823
|
+
readonly iconProvider: "google";
|
|
832
824
|
};
|
|
833
|
-
readonly "gemini-3.
|
|
834
|
-
readonly
|
|
835
|
-
readonly
|
|
836
|
-
readonly outputPerMTok: 150000;
|
|
837
|
-
readonly cachedInputPerMTok: 2500;
|
|
825
|
+
readonly "gemini-3.7-flash": {
|
|
826
|
+
readonly displayName: "Gemini 3.7 Flash";
|
|
827
|
+
readonly iconProvider: "google";
|
|
838
828
|
};
|
|
839
|
-
readonly "gemini-3.
|
|
840
|
-
readonly
|
|
841
|
-
readonly
|
|
842
|
-
readonly outputPerMTok: 900000;
|
|
843
|
-
readonly cachedInputPerMTok: 15000;
|
|
829
|
+
readonly "gemini-3.6-flash": {
|
|
830
|
+
readonly displayName: "Gemini 3.6 Flash";
|
|
831
|
+
readonly iconProvider: "google";
|
|
844
832
|
};
|
|
845
833
|
readonly "gemini-3.5-flash-lite": {
|
|
846
|
-
readonly
|
|
847
|
-
readonly
|
|
848
|
-
readonly outputPerMTok: 250000;
|
|
849
|
-
readonly cachedInputPerMTok: 3000;
|
|
834
|
+
readonly displayName: "Gemini 3.5 Flash Lite";
|
|
835
|
+
readonly iconProvider: "google";
|
|
850
836
|
};
|
|
851
|
-
readonly "gemini-3.
|
|
852
|
-
readonly
|
|
853
|
-
readonly
|
|
854
|
-
|
|
855
|
-
|
|
837
|
+
readonly "gemini-3.1-pro-preview": {
|
|
838
|
+
readonly displayName: "Gemini 3.1 Pro Preview";
|
|
839
|
+
readonly iconProvider: "google";
|
|
840
|
+
};
|
|
841
|
+
readonly "gemini-3.5-flash": {
|
|
842
|
+
readonly displayName: "Gemini 3.5 Flash";
|
|
843
|
+
readonly iconProvider: "google";
|
|
856
844
|
};
|
|
857
|
-
readonly "gemini-3.
|
|
858
|
-
readonly
|
|
859
|
-
readonly
|
|
860
|
-
readonly outputPerMTok: 375000;
|
|
861
|
-
readonly cachedInputPerMTok: 7500;
|
|
845
|
+
readonly "gemini-3.1-flash-lite": {
|
|
846
|
+
readonly displayName: "Gemini 3.1 Flash Lite";
|
|
847
|
+
readonly iconProvider: "google";
|
|
862
848
|
};
|
|
863
|
-
readonly "
|
|
864
|
-
readonly
|
|
865
|
-
readonly
|
|
866
|
-
readonly outputPerMTok: 375000;
|
|
867
|
-
readonly cachedInputPerMTok: 7500;
|
|
849
|
+
readonly "claude-sonnet-5": {
|
|
850
|
+
readonly displayName: "Claude Sonnet 5";
|
|
851
|
+
readonly iconProvider: "anthropic";
|
|
868
852
|
};
|
|
869
|
-
readonly "
|
|
870
|
-
readonly
|
|
871
|
-
readonly
|
|
872
|
-
readonly standard: {
|
|
873
|
-
readonly inputPerMTok: 200000;
|
|
874
|
-
readonly outputPerMTok: 1200000;
|
|
875
|
-
readonly cachedInputPerMTok: 20000;
|
|
876
|
-
};
|
|
877
|
-
readonly aboveThreshold: {
|
|
878
|
-
readonly inputPerMTok: 400000;
|
|
879
|
-
readonly outputPerMTok: 1800000;
|
|
880
|
-
readonly cachedInputPerMTok: 40000;
|
|
881
|
-
};
|
|
853
|
+
readonly "claude-fable-5-1": {
|
|
854
|
+
readonly displayName: "Claude Fable 5.1";
|
|
855
|
+
readonly iconProvider: "anthropic";
|
|
882
856
|
};
|
|
883
|
-
readonly "
|
|
884
|
-
readonly
|
|
885
|
-
readonly
|
|
886
|
-
readonly outputPerMTok: 60000;
|
|
887
|
-
readonly cachedInputPerMTok: 7500;
|
|
857
|
+
readonly "claude-fable-5": {
|
|
858
|
+
readonly displayName: "Claude Fable 5";
|
|
859
|
+
readonly iconProvider: "anthropic";
|
|
888
860
|
};
|
|
889
|
-
readonly "
|
|
890
|
-
readonly
|
|
891
|
-
readonly
|
|
892
|
-
readonly outputPerMTok: 1000000;
|
|
893
|
-
readonly cachedInputPerMTok: 125000;
|
|
861
|
+
readonly "claude-opus-5": {
|
|
862
|
+
readonly displayName: "Claude Opus 5";
|
|
863
|
+
readonly iconProvider: "anthropic";
|
|
894
864
|
};
|
|
895
|
-
readonly "
|
|
896
|
-
readonly
|
|
897
|
-
readonly
|
|
898
|
-
readonly outputPerMTok: 1400000;
|
|
899
|
-
readonly cachedInputPerMTok: 17500;
|
|
865
|
+
readonly "claude-opus-4-8": {
|
|
866
|
+
readonly displayName: "Claude Opus 4.8";
|
|
867
|
+
readonly iconProvider: "anthropic";
|
|
900
868
|
};
|
|
901
|
-
readonly "
|
|
902
|
-
readonly
|
|
903
|
-
readonly
|
|
904
|
-
readonly outputPerMTok: 125000;
|
|
905
|
-
readonly cachedInputPerMTok: 2000;
|
|
869
|
+
readonly "claude-opus-4-7": {
|
|
870
|
+
readonly displayName: "Claude Opus 4.7";
|
|
871
|
+
readonly iconProvider: "anthropic";
|
|
906
872
|
};
|
|
907
|
-
readonly "
|
|
908
|
-
readonly
|
|
909
|
-
readonly
|
|
910
|
-
readonly outputPerMTok: 450000;
|
|
911
|
-
readonly cachedInputPerMTok: 7500;
|
|
873
|
+
readonly "claude-sonnet-4-6": {
|
|
874
|
+
readonly displayName: "Claude Sonnet 4.6";
|
|
875
|
+
readonly iconProvider: "anthropic";
|
|
912
876
|
};
|
|
913
|
-
readonly "
|
|
914
|
-
readonly
|
|
915
|
-
readonly
|
|
916
|
-
readonly standard: {
|
|
917
|
-
readonly inputPerMTok: 250000;
|
|
918
|
-
readonly outputPerMTok: 1500000;
|
|
919
|
-
readonly cachedInputPerMTok: 25000;
|
|
920
|
-
};
|
|
921
|
-
readonly aboveThreshold: {
|
|
922
|
-
readonly inputPerMTok: 500000;
|
|
923
|
-
readonly outputPerMTok: 2250000;
|
|
924
|
-
readonly cachedInputPerMTok: 50000;
|
|
925
|
-
};
|
|
877
|
+
readonly "claude-opus-4-6": {
|
|
878
|
+
readonly displayName: "Claude Opus 4.6";
|
|
879
|
+
readonly iconProvider: "anthropic";
|
|
926
880
|
};
|
|
927
|
-
readonly "
|
|
928
|
-
readonly
|
|
929
|
-
readonly
|
|
930
|
-
readonly standard: {
|
|
931
|
-
readonly inputPerMTok: 500000;
|
|
932
|
-
readonly outputPerMTok: 3000000;
|
|
933
|
-
readonly cachedInputPerMTok: 50000;
|
|
934
|
-
};
|
|
935
|
-
readonly aboveThreshold: {
|
|
936
|
-
readonly inputPerMTok: 1000000;
|
|
937
|
-
readonly outputPerMTok: 4500000;
|
|
938
|
-
readonly cachedInputPerMTok: 100000;
|
|
939
|
-
};
|
|
881
|
+
readonly "claude-haiku-4-5-20251001": {
|
|
882
|
+
readonly displayName: "Claude Haiku 4.5";
|
|
883
|
+
readonly iconProvider: "anthropic";
|
|
940
884
|
};
|
|
941
885
|
readonly "gpt-5.6": {
|
|
942
|
-
readonly
|
|
943
|
-
readonly
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
};
|
|
949
|
-
readonly aboveThreshold: {
|
|
950
|
-
readonly inputPerMTok: 800000;
|
|
951
|
-
readonly outputPerMTok: 3000000;
|
|
952
|
-
readonly cachedInputPerMTok: 80000;
|
|
953
|
-
};
|
|
886
|
+
readonly displayName: "GPT-5.6 Sol";
|
|
887
|
+
readonly iconProvider: "openai";
|
|
888
|
+
};
|
|
889
|
+
readonly "gpt-5.6-terra": {
|
|
890
|
+
readonly displayName: "GPT-5.6 Terra";
|
|
891
|
+
readonly iconProvider: "openai";
|
|
954
892
|
};
|
|
955
893
|
readonly "gpt-5.6-luna": {
|
|
956
|
-
readonly
|
|
957
|
-
readonly
|
|
958
|
-
readonly standard: {
|
|
959
|
-
readonly inputPerMTok: 20000;
|
|
960
|
-
readonly outputPerMTok: 120000;
|
|
961
|
-
readonly cachedInputPerMTok: 2000;
|
|
962
|
-
};
|
|
963
|
-
readonly aboveThreshold: {
|
|
964
|
-
readonly inputPerMTok: 40000;
|
|
965
|
-
readonly outputPerMTok: 180000;
|
|
966
|
-
readonly cachedInputPerMTok: 4000;
|
|
967
|
-
};
|
|
894
|
+
readonly displayName: "GPT-5.6 Luna";
|
|
895
|
+
readonly iconProvider: "openai";
|
|
968
896
|
};
|
|
969
|
-
readonly "gpt-5.
|
|
970
|
-
readonly
|
|
971
|
-
readonly
|
|
972
|
-
readonly standard: {
|
|
973
|
-
readonly inputPerMTok: 200000;
|
|
974
|
-
readonly outputPerMTok: 1200000;
|
|
975
|
-
readonly cachedInputPerMTok: 20000;
|
|
976
|
-
};
|
|
977
|
-
readonly aboveThreshold: {
|
|
978
|
-
readonly inputPerMTok: 400000;
|
|
979
|
-
readonly outputPerMTok: 1800000;
|
|
980
|
-
readonly cachedInputPerMTok: 40000;
|
|
981
|
-
};
|
|
897
|
+
readonly "gpt-5.5": {
|
|
898
|
+
readonly displayName: "GPT-5.5";
|
|
899
|
+
readonly iconProvider: "openai";
|
|
982
900
|
};
|
|
983
|
-
readonly "
|
|
984
|
-
readonly
|
|
985
|
-
readonly
|
|
986
|
-
readonly outputPerMTok: 500000;
|
|
987
|
-
readonly cachedInputPerMTok: 10000;
|
|
901
|
+
readonly "gpt-5.4": {
|
|
902
|
+
readonly displayName: "GPT-5.4";
|
|
903
|
+
readonly iconProvider: "openai";
|
|
988
904
|
};
|
|
989
|
-
readonly "
|
|
990
|
-
readonly
|
|
991
|
-
readonly
|
|
992
|
-
readonly outputPerMTok: 1500000;
|
|
993
|
-
readonly cachedInputPerMTok: 30000;
|
|
905
|
+
readonly "gpt-5.4-mini": {
|
|
906
|
+
readonly displayName: "GPT-5.4 Mini";
|
|
907
|
+
readonly iconProvider: "openai";
|
|
994
908
|
};
|
|
995
|
-
readonly "
|
|
996
|
-
readonly
|
|
997
|
-
readonly
|
|
998
|
-
readonly outputPerMTok: 1000000;
|
|
999
|
-
readonly cachedInputPerMTok: 20000;
|
|
909
|
+
readonly "gpt-5.4-nano": {
|
|
910
|
+
readonly displayName: "GPT-5.4 Nano";
|
|
911
|
+
readonly iconProvider: "openai";
|
|
1000
912
|
};
|
|
1001
|
-
readonly "
|
|
1002
|
-
readonly
|
|
1003
|
-
readonly
|
|
1004
|
-
readonly outputPerMTok: 2500000;
|
|
1005
|
-
readonly cachedInputPerMTok: 50000;
|
|
913
|
+
readonly "gpt-5.2": {
|
|
914
|
+
readonly displayName: "GPT-5.2";
|
|
915
|
+
readonly iconProvider: "openai";
|
|
1006
916
|
};
|
|
1007
|
-
readonly "
|
|
1008
|
-
readonly
|
|
1009
|
-
readonly
|
|
1010
|
-
readonly outputPerMTok: 2500000;
|
|
1011
|
-
readonly cachedInputPerMTok: 50000;
|
|
917
|
+
readonly "openai/gpt-5.6-luna": {
|
|
918
|
+
readonly displayName: "GPT-5.6 Luna";
|
|
919
|
+
readonly iconProvider: "openai";
|
|
1012
920
|
};
|
|
1013
|
-
readonly "
|
|
1014
|
-
readonly
|
|
1015
|
-
readonly
|
|
1016
|
-
readonly outputPerMTok: 2500000;
|
|
1017
|
-
readonly cachedInputPerMTok: 50000;
|
|
921
|
+
readonly "openai/gpt-5.6-terra": {
|
|
922
|
+
readonly displayName: "GPT-5.6 Terra";
|
|
923
|
+
readonly iconProvider: "openai";
|
|
1018
924
|
};
|
|
1019
|
-
readonly "
|
|
1020
|
-
readonly
|
|
1021
|
-
readonly
|
|
1022
|
-
readonly outputPerMTok: 2500000;
|
|
1023
|
-
readonly cachedInputPerMTok: 50000;
|
|
925
|
+
readonly "google/gemini-3.8-flash": {
|
|
926
|
+
readonly displayName: "Gemini 3.8 Flash";
|
|
927
|
+
readonly iconProvider: "google";
|
|
1024
928
|
};
|
|
1025
|
-
readonly "
|
|
1026
|
-
readonly
|
|
1027
|
-
readonly
|
|
1028
|
-
readonly outputPerMTok: 5000000;
|
|
1029
|
-
readonly cachedInputPerMTok: 100000;
|
|
929
|
+
readonly "google/gemini-3.7-flash": {
|
|
930
|
+
readonly displayName: "Gemini 3.7 Flash";
|
|
931
|
+
readonly iconProvider: "google";
|
|
1030
932
|
};
|
|
1031
|
-
readonly "
|
|
1032
|
-
readonly
|
|
1033
|
-
readonly
|
|
1034
|
-
readonly outputPerMTok: 5000000;
|
|
1035
|
-
readonly cachedInputPerMTok: 25000;
|
|
933
|
+
readonly "google/gemini-3.6-flash": {
|
|
934
|
+
readonly displayName: "Gemini 3.6 Flash";
|
|
935
|
+
readonly iconProvider: "google";
|
|
1036
936
|
};
|
|
1037
|
-
readonly "
|
|
1038
|
-
readonly
|
|
1039
|
-
readonly
|
|
1040
|
-
readonly outputPerMTok: 60000;
|
|
937
|
+
readonly "google/gemini-3.5-flash-lite": {
|
|
938
|
+
readonly displayName: "Gemini 3.5 Flash Lite";
|
|
939
|
+
readonly iconProvider: "google";
|
|
1041
940
|
};
|
|
1042
|
-
readonly "
|
|
1043
|
-
readonly
|
|
1044
|
-
readonly
|
|
1045
|
-
readonly outputPerMTok: 150000;
|
|
941
|
+
readonly "google/gemini-3.1-pro-preview": {
|
|
942
|
+
readonly displayName: "Gemini 3.1 Pro Preview";
|
|
943
|
+
readonly iconProvider: "google";
|
|
1046
944
|
};
|
|
1047
|
-
readonly "
|
|
1048
|
-
readonly
|
|
1049
|
-
readonly
|
|
1050
|
-
readonly outputPerMTok: 750000;
|
|
945
|
+
readonly "google/gemini-3.5-flash": {
|
|
946
|
+
readonly displayName: "Gemini 3.5 Flash";
|
|
947
|
+
readonly iconProvider: "google";
|
|
1051
948
|
};
|
|
1052
|
-
readonly "
|
|
1053
|
-
readonly
|
|
1054
|
-
readonly
|
|
1055
|
-
|
|
949
|
+
readonly "google/gemini-3.1-flash-lite": {
|
|
950
|
+
readonly displayName: "Gemini 3.1 Flash Lite";
|
|
951
|
+
readonly iconProvider: "google";
|
|
952
|
+
};
|
|
953
|
+
readonly "anthropic/claude-sonnet-5": {
|
|
954
|
+
readonly displayName: "Claude Sonnet 5";
|
|
955
|
+
readonly iconProvider: "anthropic";
|
|
1056
956
|
};
|
|
1057
|
-
readonly "
|
|
1058
|
-
readonly
|
|
1059
|
-
readonly
|
|
1060
|
-
readonly outputPerMTok: 500000;
|
|
957
|
+
readonly "anthropic/claude-opus-5": {
|
|
958
|
+
readonly displayName: "Claude Opus 5";
|
|
959
|
+
readonly iconProvider: "anthropic";
|
|
1061
960
|
};
|
|
1062
|
-
readonly "
|
|
1063
|
-
readonly
|
|
1064
|
-
readonly
|
|
1065
|
-
readonly outputPerMTok: 150000;
|
|
961
|
+
readonly "anthropic/claude-opus-4.8": {
|
|
962
|
+
readonly displayName: "Claude Opus 4.8";
|
|
963
|
+
readonly iconProvider: "anthropic";
|
|
1066
964
|
};
|
|
1067
|
-
readonly "
|
|
1068
|
-
readonly
|
|
1069
|
-
readonly
|
|
1070
|
-
readonly outputPerMTok: 150000;
|
|
965
|
+
readonly "anthropic/claude-sonnet-4.6": {
|
|
966
|
+
readonly displayName: "Claude Sonnet 4.6";
|
|
967
|
+
readonly iconProvider: "anthropic";
|
|
1071
968
|
};
|
|
1072
|
-
readonly "
|
|
1073
|
-
readonly
|
|
1074
|
-
readonly
|
|
1075
|
-
|
|
969
|
+
readonly "openai/gpt-5.5": {
|
|
970
|
+
readonly displayName: "GPT-5.5";
|
|
971
|
+
readonly iconProvider: "openai";
|
|
972
|
+
};
|
|
973
|
+
readonly "openai/gpt-5.4-mini": {
|
|
974
|
+
readonly displayName: "GPT-5.4 Mini";
|
|
975
|
+
readonly iconProvider: "openai";
|
|
1076
976
|
};
|
|
1077
977
|
readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": {
|
|
1078
|
-
readonly
|
|
1079
|
-
readonly
|
|
1080
|
-
readonly outputPerMTok: 1500000;
|
|
1081
|
-
readonly cachedInputPerMTok: 30000;
|
|
978
|
+
readonly displayName: "Claude Sonnet 4.5";
|
|
979
|
+
readonly iconProvider: "anthropic";
|
|
1082
980
|
};
|
|
1083
981
|
readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": {
|
|
1084
|
-
readonly
|
|
1085
|
-
readonly
|
|
1086
|
-
readonly outputPerMTok: 500000;
|
|
1087
|
-
readonly cachedInputPerMTok: 10000;
|
|
982
|
+
readonly displayName: "Claude Haiku 4.5";
|
|
983
|
+
readonly iconProvider: "anthropic";
|
|
1088
984
|
};
|
|
1089
985
|
readonly "us.amazon.nova-pro-v1:0": {
|
|
1090
|
-
readonly
|
|
1091
|
-
readonly
|
|
1092
|
-
readonly outputPerMTok: 320000;
|
|
986
|
+
readonly displayName: "Amazon Nova Pro";
|
|
987
|
+
readonly iconProvider: "bedrock";
|
|
1093
988
|
};
|
|
1094
989
|
readonly "us.amazon.nova-lite-v1:0": {
|
|
1095
|
-
readonly
|
|
1096
|
-
readonly
|
|
1097
|
-
readonly outputPerMTok: 24000;
|
|
990
|
+
readonly displayName: "Amazon Nova Lite";
|
|
991
|
+
readonly iconProvider: "bedrock";
|
|
1098
992
|
};
|
|
1099
993
|
readonly "us.amazon.nova-micro-v1:0": {
|
|
1100
|
-
readonly
|
|
1101
|
-
readonly
|
|
1102
|
-
readonly outputPerMTok: 14000;
|
|
994
|
+
readonly displayName: "Amazon Nova Micro";
|
|
995
|
+
readonly iconProvider: "bedrock";
|
|
1103
996
|
};
|
|
1104
997
|
readonly "openai.gpt-oss-120b-1:0": {
|
|
1105
|
-
readonly
|
|
1106
|
-
readonly
|
|
1107
|
-
readonly outputPerMTok: 60000;
|
|
998
|
+
readonly displayName: "GPT OSS 120B";
|
|
999
|
+
readonly iconProvider: "openai";
|
|
1108
1000
|
};
|
|
1109
1001
|
readonly "openai.gpt-oss-20b-1:0": {
|
|
1110
|
-
readonly
|
|
1111
|
-
readonly
|
|
1112
|
-
readonly outputPerMTok: 30000;
|
|
1002
|
+
readonly displayName: "GPT OSS 20B";
|
|
1003
|
+
readonly iconProvider: "openai";
|
|
1113
1004
|
};
|
|
1114
1005
|
readonly "us.deepseek.r1-v1:0": {
|
|
1115
|
-
readonly
|
|
1116
|
-
readonly
|
|
1117
|
-
|
|
1006
|
+
readonly displayName: "DeepSeek R1";
|
|
1007
|
+
readonly iconProvider: "bedrock";
|
|
1008
|
+
};
|
|
1009
|
+
readonly "mistral-large-latest": {
|
|
1010
|
+
readonly displayName: "Mistral Large";
|
|
1011
|
+
readonly iconProvider: "mistral";
|
|
1012
|
+
};
|
|
1013
|
+
readonly "mistral-medium-latest": {
|
|
1014
|
+
readonly displayName: "Mistral Medium";
|
|
1015
|
+
readonly iconProvider: "mistral";
|
|
1016
|
+
};
|
|
1017
|
+
readonly "mistral-small-latest": {
|
|
1018
|
+
readonly displayName: "Mistral Small";
|
|
1019
|
+
readonly iconProvider: "mistral";
|
|
1020
|
+
};
|
|
1021
|
+
readonly "magistral-medium-latest": {
|
|
1022
|
+
readonly displayName: "Magistral Medium";
|
|
1023
|
+
readonly iconProvider: "mistral";
|
|
1024
|
+
};
|
|
1025
|
+
readonly "magistral-small": {
|
|
1026
|
+
readonly displayName: "Magistral Small";
|
|
1027
|
+
readonly iconProvider: "mistral";
|
|
1028
|
+
};
|
|
1029
|
+
readonly "pixtral-large-latest": {
|
|
1030
|
+
readonly displayName: "Pixtral Large";
|
|
1031
|
+
readonly iconProvider: "mistral";
|
|
1118
1032
|
};
|
|
1119
1033
|
};
|
|
1034
|
+
declare const getModelDisplayMetadata: (modelId: string) => ModelDisplayMetadata | null;
|
|
1035
|
+
/**
|
|
1036
|
+
* Offered models whose provider API accepts PDF/file content. Generated from
|
|
1037
|
+
* live models.dev input modalities plus dated, reviewed source corrections;
|
|
1038
|
+
* the nightly upstream check rejects drift.
|
|
1039
|
+
*/
|
|
1040
|
+
declare const BYOK_DOCUMENT_INPUT_MODEL_OPTIONS: {
|
|
1041
|
+
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"];
|
|
1042
|
+
readonly openrouter: readonly ["openai/gpt-5.6-luna", "openai/gpt-5.6-terra", "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", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
|
|
1043
|
+
readonly openai: readonly ["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"];
|
|
1044
|
+
readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-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"];
|
|
1045
|
+
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"];
|
|
1046
|
+
readonly mistral: readonly [];
|
|
1047
|
+
};
|
|
1048
|
+
declare const isBYOKProviderRoleSupported: ({ provider, role }: {
|
|
1049
|
+
provider: BYOKProvider;
|
|
1050
|
+
role: ModelRole;
|
|
1051
|
+
}) => boolean;
|
|
1052
|
+
declare const isBYOKModelRoleSupported: ({ provider, modelId, role }: {
|
|
1053
|
+
provider: BYOKProvider;
|
|
1054
|
+
modelId: string;
|
|
1055
|
+
role: ModelRole;
|
|
1056
|
+
}) => boolean;
|
|
1057
|
+
/**
|
|
1058
|
+
* Models whose provider adapter can receive a PDF `document` content part in a
|
|
1059
|
+
* chat turn without throwing. This is a narrower, runtime question than the
|
|
1060
|
+
* pdf ROLE (`BYOK_DOCUMENT_INPUT_MODEL_OPTIONS`, which curates model selection
|
|
1061
|
+
* for PDF-processing flows): it only asks "will the chat stream survive this
|
|
1062
|
+
* attachment." The Mistral text adapter maps PDF `document` parts to
|
|
1063
|
+
* `document_url`, so its
|
|
1064
|
+
* vision models accept PDF attachments even though Mistral is deliberately not
|
|
1065
|
+
* offered as a pdf-role provider. Mistral's `document_url` takes PDF but NOT
|
|
1066
|
+
* textual documents (docx/txt/csv/md), so those still gate on
|
|
1067
|
+
* `BYOK_DOCUMENT_INPUT_MODEL_OPTIONS` (which excludes Mistral). Superset
|
|
1068
|
+
* invariant: every pdf-role document model also accepts a PDF chat attachment.
|
|
1069
|
+
*/
|
|
1070
|
+
declare const CHAT_PDF_ATTACHMENT_MODEL_OPTIONS: {
|
|
1071
|
+
readonly mistral: readonly ["mistral-medium-latest", "mistral-small-latest", "pixtral-large-latest"];
|
|
1072
|
+
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"];
|
|
1073
|
+
readonly openrouter: readonly ["openai/gpt-5.6-luna", "openai/gpt-5.6-terra", "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", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
|
|
1074
|
+
readonly openai: readonly ["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"];
|
|
1075
|
+
readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-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"];
|
|
1076
|
+
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"];
|
|
1077
|
+
};
|
|
1078
|
+
declare const isChatPdfAttachmentModelSupported: ({ provider, modelId }: {
|
|
1079
|
+
provider: BYOKProvider;
|
|
1080
|
+
modelId: string;
|
|
1081
|
+
}) => boolean;
|
|
1082
|
+
/**
|
|
1083
|
+
* Resolve a model id that will actually work for this provider+role,
|
|
1084
|
+
* keeping the SAME provider. Returns the caller's model unchanged when
|
|
1085
|
+
* it is still offered; otherwise falls back to the provider's per-role
|
|
1086
|
+
* default (`BYOK_DEFAULT_MODELS`). Returns `null` only when the
|
|
1087
|
+
* provider has no valid model for the role at all — the sole case
|
|
1088
|
+
* today is `mistral` + `pdf`, because the TanStack Mistral adapter
|
|
1089
|
+
* exposes no `document` input modality, so no Mistral model (not even
|
|
1090
|
+
* the default) can serve the PDF role.
|
|
1091
|
+
*
|
|
1092
|
+
* Used to auto-heal org AI configs whose pinned model was removed by a
|
|
1093
|
+
* catalog bump, so generation resolves to a supported model instead of
|
|
1094
|
+
* 400-ing (or forwarding a retired id to the provider).
|
|
1095
|
+
*/
|
|
1096
|
+
declare const resolveWorkingBYOKModelForRole: ({ provider, modelId, role }: {
|
|
1097
|
+
provider: BYOKProvider;
|
|
1098
|
+
modelId: string;
|
|
1099
|
+
role: ModelRole;
|
|
1100
|
+
}) => string | null;
|
|
1101
|
+
/**
|
|
1102
|
+
* Anthropic models that use the adaptive-thinking request shape
|
|
1103
|
+
* (`thinking: { type: "adaptive" }`). Newer Claude models reject the
|
|
1104
|
+
* legacy budget-based form, so every Opus 4.6+/Sonnet 4.6/Fable entry
|
|
1105
|
+
* offered above must appear here or it will 400 on the reasoning role.
|
|
1106
|
+
*/
|
|
1107
|
+
declare const ANTHROPIC_ADAPTIVE_THINKING_MODELS: readonly ["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"];
|
|
1108
|
+
/**
|
|
1109
|
+
* Canonical reasoning-effort ladder, ordered weakest to strongest.
|
|
1110
|
+
* Union of every effort keyword the offered providers accept; no
|
|
1111
|
+
* single model accepts all of them, which is exactly why the
|
|
1112
|
+
* generated per-model `MODEL_REASONING_EFFORTS` exists.
|
|
1113
|
+
*/
|
|
1114
|
+
declare const REASONING_EFFORTS: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
1115
|
+
type ReasoningEffort = (typeof REASONING_EFFORTS)[number];
|
|
1116
|
+
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">]>;
|
|
1117
|
+
/**
|
|
1118
|
+
* A reasoning effort proven to be accepted by the model it targets.
|
|
1119
|
+
* Only `resolveReasoningEffort` can produce this type, so option
|
|
1120
|
+
* builders cannot hand a provider a literal effort the model rejects
|
|
1121
|
+
* (e.g. `"none"` to a model whose reasoning cannot be disabled) —
|
|
1122
|
+
* that mistake now fails typecheck instead of 502-ing at runtime.
|
|
1123
|
+
*/
|
|
1124
|
+
type ResolvedReasoningEffort = v.InferOutput<typeof resolvedReasoningEffortSchema>;
|
|
1125
|
+
/**
|
|
1126
|
+
* Per-provider model served when a user's included budget is exhausted
|
|
1127
|
+
* and no explicit selection overrides it. Falls back to each
|
|
1128
|
+
* provider's fast-role default; providers without a first-class
|
|
1129
|
+
* adapter path cannot serve the lane. Total over providers so a new
|
|
1130
|
+
* provider lands with an explicit decision.
|
|
1131
|
+
*/
|
|
1132
|
+
declare const FALLBACK_CHAT_MODEL_BY_PROVIDER: {
|
|
1133
|
+
readonly google: "gemini-3.7-flash";
|
|
1134
|
+
readonly openrouter: "openai/gpt-5.6-luna";
|
|
1135
|
+
readonly openai: "gpt-5.6-luna";
|
|
1136
|
+
readonly anthropic: "claude-opus-5";
|
|
1137
|
+
readonly bedrock: "us.amazon.nova-micro-v1:0";
|
|
1138
|
+
readonly mistral: "mistral-small-latest";
|
|
1139
|
+
readonly azure_foundry: null;
|
|
1140
|
+
readonly openai_compatible: null;
|
|
1141
|
+
readonly huggingface: null;
|
|
1142
|
+
};
|
|
1143
|
+
/**
|
|
1144
|
+
* Provider-native IDs that are exact aliases of an offered catalog ID.
|
|
1145
|
+
* Every metadata lookup normalizes here, so instance/dev overrides cannot
|
|
1146
|
+
* bypass rates or capabilities and duplicated alias rows cannot drift apart.
|
|
1147
|
+
*/
|
|
1148
|
+
declare const MODEL_CATALOG_ID_ALIASES: {
|
|
1149
|
+
readonly "gpt-5.6-sol": "gpt-5.6";
|
|
1150
|
+
readonly "claude-opus-4.8": "claude-opus-4-8";
|
|
1151
|
+
readonly "claude-sonnet-4.6": "claude-sonnet-4-6";
|
|
1152
|
+
};
|
|
1153
|
+
declare const normalizeModelCatalogId: (modelId: string) => string;
|
|
1154
|
+
/**
|
|
1155
|
+
* Whether stella should emit a `temperature` override for this model.
|
|
1156
|
+
* This is deliberately stricter than provider acceptance: deprecated
|
|
1157
|
+
* parameters that are accepted but ignored resolve to `false`. Unknown ids
|
|
1158
|
+
* also resolve to `false` (send nothing; provider default). Callers must
|
|
1159
|
+
* never index `MODEL_TEMPERATURE_POLICIES` directly with
|
|
1160
|
+
* a runtime string.
|
|
1161
|
+
*/
|
|
1162
|
+
declare const shouldEmitTemperature: (modelId: string) => boolean;
|
|
1163
|
+
/**
|
|
1164
|
+
* Declared reasoning-effort values for a model ID, or `null` when the
|
|
1165
|
+
* model has no effort control or is not catalogued (custom deployments,
|
|
1166
|
+
* env overrides). Callers must never index `MODEL_REASONING_EFFORTS`
|
|
1167
|
+
* directly with a runtime string.
|
|
1168
|
+
*/
|
|
1169
|
+
declare const getModelReasoningEfforts: (modelId: string) => readonly ReasoningEffort[] | null;
|
|
1170
|
+
/**
|
|
1171
|
+
* Concrete provider-default effort published for a model, or null when the
|
|
1172
|
+
* provider exposes no named default. Unknown ids also resolve to null.
|
|
1173
|
+
*/
|
|
1174
|
+
declare const getModelDefaultReasoningEffort: (modelId: string) => ReasoningEffort | null;
|
|
1175
|
+
type ResolveReasoningEffortOptions = {
|
|
1176
|
+
modelId: string;
|
|
1177
|
+
requested: ReasoningEffort;
|
|
1178
|
+
};
|
|
1179
|
+
/**
|
|
1180
|
+
* Clamp a requested reasoning effort into the target model's declared
|
|
1181
|
+
* capability.
|
|
1182
|
+
*
|
|
1183
|
+
* - Unknown model or no effort control → `null` (send no effort at
|
|
1184
|
+
* all; the provider default is the only universally safe choice).
|
|
1185
|
+
* - Requested value supported → returned unchanged.
|
|
1186
|
+
* - Otherwise → the supported value nearest on `REASONING_EFFORTS`,
|
|
1187
|
+
* preferring the weaker side on ties, so a "none" request against a
|
|
1188
|
+
* reasoning-mandatory model degrades to its weakest tier instead of
|
|
1189
|
+
* erroring, and requests above the model's ceiling clamp down to it.
|
|
1190
|
+
*/
|
|
1191
|
+
declare const resolveReasoningEffort: ({ modelId, requested }: ResolveReasoningEffortOptions) => ResolvedReasoningEffort | null;
|
|
1120
1192
|
declare const getModelRate: (modelId: string) => ModelRate | undefined;
|
|
1121
1193
|
/**
|
|
1122
1194
|
* Documented input context-window sizes (in tokens) per model ID.
|
|
@@ -1209,4 +1281,4 @@ declare const DEFAULT_CONTEXT_WINDOW_TOKENS = 128000;
|
|
|
1209
1281
|
*/
|
|
1210
1282
|
declare const getContextWindowTokens: (modelId: string) => number;
|
|
1211
1283
|
//#endregion
|
|
1212
|
-
export { AIProvider, AI_PROVIDERS, ANTHROPIC_ADAPTIVE_THINKING_MODELS, BYOKModelIdByProvider, BYOKProvider, BYOK_DEFAULT_MODELS, BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, BYOK_MODEL_OPTIONS, CAPABILITY_OVERRIDES, CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, CONTEXT_WINDOW_TOKENS, type CapabilityOverride, DEFAULT_CONTEXT_WINDOW_TOKENS, DEFAULT_MODELS, DOCUMENT_INPUT_OVERRIDES, type DocumentInputOverride, FALLBACK_CHAT_MODEL_BY_PROVIDER, FIRST_PARTY_MODEL_PROVIDERS, FirstPartyModelProvider, MODEL_CATALOG_ID_ALIASES, MODEL_CATALOG_PROVIDER_KIND, MODEL_DEFAULT_REASONING_EFFORTS, MODEL_DISPLAY_METADATA, MODEL_RATES, MODEL_REASONING_EFFORTS, MODEL_ROLES, MODEL_TEMPERATURE_POLICIES, ModelDisplayMetadata, ModelRate, ModelRateAmounts, ModelRole, OfferedBYOKModelId, REASONING_EFFORTS, ReasoningEffort, ResolveReasoningEffortOptions, ResolvedReasoningEffort, TANSTACK_AI_PROVIDERS, TEMPERATURE_POLICIES, TanStackAIProvider, TemperaturePolicy, getContextWindowTokens, getModelDefaultReasoningEffort, getModelDisplayMetadata, getModelRate, getModelReasoningEfforts, getStandardModelRate, isBYOKModelRoleSupported, isBYOKProviderRoleSupported, isChatPdfAttachmentModelSupported, normalizeModelCatalogId, resolveModelRate, resolveReasoningEffort, resolveWorkingBYOKModelForRole, shouldEmitTemperature };
|
|
1284
|
+
export { AIProvider, AI_PROVIDERS, ANTHROPIC_ADAPTIVE_THINKING_MODELS, BYOKModelIdByProvider, BYOKProvider, BYOK_DEFAULT_MODELS, BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, BYOK_MODEL_OPTIONS, CAPABILITY_OVERRIDES, CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, CONTEXT_WINDOW_TOKENS, type CapabilityOverride, DEFAULT_CONTEXT_WINDOW_TOKENS, DEFAULT_MODELS, DOCUMENT_INPUT_OVERRIDES, type DocumentInputOverride, FALLBACK_CHAT_MODEL_BY_PROVIDER, FIRST_PARTY_MODEL_PROVIDERS, FirstPartyModelProvider, MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER, MODELS_DEV_RATE_SOURCE_ALIASES, MODEL_CATALOG_ID_ALIASES, MODEL_CATALOG_PROVIDER_KIND, MODEL_DEFAULT_REASONING_EFFORTS, MODEL_DISPLAY_METADATA, MODEL_RATES, MODEL_RATE_UNITS_PER_USD, MODEL_REASONING_EFFORTS, MODEL_ROLES, MODEL_TEMPERATURE_POLICIES, ModelDisplayMetadata, type ModelRate, type ModelRateAmounts, ModelRole, type ModelsDevRateProvider, OfferedBYOKModelId, REASONING_EFFORTS, RETAINED_MODELS_DEV_RATE_ENTRIES, ReasoningEffort, ResolveReasoningEffortOptions, ResolvedReasoningEffort, TANSTACK_AI_PROVIDERS, TEMPERATURE_POLICIES, TanStackAIProvider, TemperaturePolicy, getContextWindowTokens, getModelDefaultReasoningEffort, getModelDisplayMetadata, getModelRate, getModelReasoningEfforts, getStandardModelRate, isBYOKModelRoleSupported, isBYOKProviderRoleSupported, isChatPdfAttachmentModelSupported, normalizeModelCatalogId, resolveModelRate, resolveReasoningEffort, resolveWorkingBYOKModelForRole, shouldEmitTemperature };
|