@hebo-ai/gateway 0.11.5 → 0.11.6

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 CHANGED
@@ -214,33 +214,33 @@ const modelsFromFamily = defineModelCatalog(
214
214
  Out-of-the-box model presets:
215
215
 
216
216
  - **Alibaba** — `@hebo-ai/gateway/models/alibaba`
217
- Qwen: `qwen` (`v3`, `v3.5`, `v3.6`, `v3.x`, `coder`, `vl`, `embedding`, `embeddings`, `latest`, `all`)
217
+ Qwen: `qwen` (`v3`, `v3.5`, `v3.6`, `v3.7`, `v3.x`, `coder`, `vl`, `embedding`, `embeddings`, `latest`, `all`)
218
218
 
219
219
  - **Amazon** — `@hebo-ai/gateway/models/amazon`
220
220
  Nova: `nova` (`v1`, `v2`, `v1.x`, `v2.x`, `latest`, `embeddings`, `all`)
221
221
 
222
222
  - **Anthropic** — `@hebo-ai/gateway/models/anthropic`
223
- Claude: `claude` (`v4.7`, `v4.6`, `v4.5`, `v4.1`, `v4`, `v3.7`, `v3.5`, `v3`, `v4.x`, `v3.x`, `haiku`, `sonnet`, `opus`, `latest`, `all`)
223
+ Claude: `claude` (`v4.8`, `v4.7`, `v4.6`, `v4.5`, `v4.1`, `v4`, `v3.7`, `v3.5`, `v3`, `v4.x`, `v3.x`, `fable`, `haiku`, `sonnet`, `opus`, `latest`, `all`)
224
224
 
225
225
  - **Cohere** — `@hebo-ai/gateway/models/cohere`
226
226
  Command: `command` (`A`, `R`, `latest`, `all`)
227
227
  Embed: `embed` (`v4`, `v3`, `latest`, `all`)
228
228
 
229
229
  - **DeepSeek** — `@hebo-ai/gateway/models/deepseek`
230
- DeepSeek: `deepseek` (`v3.2`, `latest`, `all`)
230
+ DeepSeek: `deepseek` (`v3.2`, `v4`, `v4.x`, `latest`, `all`)
231
231
 
232
232
  - **Google** — `@hebo-ai/gateway/models/google`
233
- Gemini: `gemini` (`v2.5`, `v3-preview`, `v2.x`, `v3.x`, `embeddings`, `latest`, `preview`, `all`)
233
+ Gemini: `gemini` (`v2.5`, `v3.5`, `v3-preview`, `v2.x`, `v3.x`, `embeddings`, `latest`, `preview`, `all`)
234
234
  Gemma: `gemma` (`v3`, `v4`, `v3.x`, `v4.x`, `latest`, `all`)
235
235
 
236
236
  - **Meta** — `@hebo-ai/gateway/models/meta`
237
237
  Llama: `llama` (`v3.1`, `v3.2`, `v3.3`, `v4`, `v3.x`, `v4.x`, `latest`, `all`)
238
238
 
239
239
  - **MiniMax** — `@hebo-ai/gateway/models/minimax`
240
- MiniMax: `minimax` (`v2`, `v2.x`, `latest`, `all`)
240
+ MiniMax: `minimax` (`v2`, `v3`, `v2.x`, `v3.x`, `latest`, `all`)
241
241
 
242
242
  - **Moonshot** — `@hebo-ai/gateway/models/moonshot`
243
- Kimi: `kimi` (`k2.5`, `k2.6`, `k2.x`, `latest`, `all`)
243
+ Kimi: `kimi` (`k2.5`, `k2.6`, `k2.7`, `k2.x`, `latest`, `all`)
244
244
 
245
245
  - **OpenAI** — `@hebo-ai/gateway/models/openai`
246
246
  GPT: `gpt` (`v5`, `v5.1`, `v5.2`, `v5.3`, `v5.4`, `v5.x`, `chat`, `codex`, `pro`, `latest`, `all`)
@@ -251,10 +251,10 @@ Out-of-the-box model presets:
251
251
  Voyage: `voyage` (`v2`, `v3`, `v3.5`, `v4`, `v2.x`, `v3.x`, `v4.x`, `latest`, `all`)
252
252
 
253
253
  - **xAI** — `@hebo-ai/gateway/models/xai`
254
- Grok: `grok` (`v4.1`, `v4.2`, `v4.3`, `latest`, `all`)
254
+ Grok: `grok` (`v4.1`, `v4.2`, `v4.3`, `v4.20`, `latest`, `all`)
255
255
 
256
256
  - **Z.ai** — `@hebo-ai/gateway/models/zai`
257
- GLM: `glm` (`v5`, `v5.1`, `v5.x`, `latest`, `all`)
257
+ GLM: `glm` (`v5`, `v5.1`, `v5.2`, `v5.x`, `latest`, `all`)
258
258
 
259
259
  #### User-defined Models
260
260
 
package/dist/lifecycle.js CHANGED
@@ -55,6 +55,8 @@ export const winterCgHandler = (run, config) => {
55
55
  requestId: ctx.requestId,
56
56
  err,
57
57
  });
58
+ // On error we may not reach the handler's own ctx.otel flush, so flush here.
59
+ span.setAttributes(ctx.otel);
58
60
  span.recordError(err, true);
59
61
  }
60
62
  span.setAttributes({ "http.response.status_code_effective": realStatus });
@@ -191,6 +191,30 @@ export declare const qwen36MaxPreview: import("../../utils").Preset<"alibaba/qwe
191
191
  created: string;
192
192
  knowledge: string;
193
193
  }>;
194
+ export declare const qwen37Plus: import("../../utils").Preset<"alibaba/qwen3.7-plus", CatalogModel, {
195
+ modalities: {
196
+ input: readonly ["text", "image", "file"];
197
+ output: readonly ["text"];
198
+ };
199
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
200
+ providers: readonly ["alibaba"];
201
+ name: string;
202
+ context: number;
203
+ created: string;
204
+ knowledge: string;
205
+ }>;
206
+ export declare const qwen37Max: import("../../utils").Preset<"alibaba/qwen3.7-max", CatalogModel, {
207
+ modalities: {
208
+ input: readonly ["text"];
209
+ output: readonly ["text"];
210
+ };
211
+ capabilities: ("reasoning" | "temperature" | "tool_call" | "structured_output")[];
212
+ providers: readonly ["alibaba"];
213
+ name: string;
214
+ context: number;
215
+ created: string;
216
+ knowledge: string;
217
+ }>;
194
218
  export declare const qwen3CoderNext: import("../../utils").Preset<"alibaba/qwen3-coder-next", CatalogModel, {
195
219
  modalities: {
196
220
  input: readonly ["text", "file"];
@@ -246,9 +270,9 @@ export declare const qwen3Embedding8b: import("../../utils").Preset<"alibaba/qwe
246
270
  providers: readonly ["alibaba", "azure", "deepinfra"];
247
271
  }>;
248
272
  export declare const qwen: {
249
- readonly latest: readonly [import("../../utils").Preset<"alibaba/qwen3.6-plus", CatalogModel, {
273
+ readonly latest: readonly [import("../../utils").Preset<"alibaba/qwen3.7-plus", CatalogModel, {
250
274
  modalities: {
251
- input: readonly ["text", "image", "video", "file"];
275
+ input: readonly ["text", "image", "file"];
252
276
  output: readonly ["text"];
253
277
  };
254
278
  capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
@@ -257,34 +281,12 @@ export declare const qwen: {
257
281
  context: number;
258
282
  created: string;
259
283
  knowledge: string;
260
- }>, import("../../utils").Preset<"alibaba/qwen3.6-flash", CatalogModel, {
284
+ }>, import("../../utils").Preset<"alibaba/qwen3.7-max", CatalogModel, {
261
285
  modalities: {
262
- input: readonly ["text", "image", "video", "file"];
263
- output: readonly ["text"];
264
- };
265
- capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
266
- providers: readonly ["alibaba", "azure", "deepinfra"];
267
- name: string;
268
- context: number;
269
- created: string;
270
- knowledge: string;
271
- }>, import("../../utils").Preset<"alibaba/qwen3.6-27b", CatalogModel, {
272
- modalities: {
273
- input: readonly ["text", "image", "video", "file"];
274
- output: readonly ["text"];
275
- };
276
- capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
277
- providers: readonly ["alibaba"];
278
- name: string;
279
- context: number;
280
- created: string;
281
- knowledge: string;
282
- }>, import("../../utils").Preset<"alibaba/qwen3.6-max-preview", CatalogModel, {
283
- modalities: {
284
- input: readonly ["text", "image", "video", "file"];
286
+ input: readonly ["text"];
285
287
  output: readonly ["text"];
286
288
  };
287
- capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
289
+ capabilities: ("reasoning" | "temperature" | "tool_call" | "structured_output")[];
288
290
  providers: readonly ["alibaba"];
289
291
  name: string;
290
292
  context: number;
@@ -467,6 +469,28 @@ export declare const qwen: {
467
469
  context: number;
468
470
  created: string;
469
471
  knowledge: string;
472
+ }> | import("../../utils").Preset<"alibaba/qwen3.7-plus", CatalogModel, {
473
+ modalities: {
474
+ input: readonly ["text", "image", "file"];
475
+ output: readonly ["text"];
476
+ };
477
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
478
+ providers: readonly ["alibaba"];
479
+ name: string;
480
+ context: number;
481
+ created: string;
482
+ knowledge: string;
483
+ }> | import("../../utils").Preset<"alibaba/qwen3.7-max", CatalogModel, {
484
+ modalities: {
485
+ input: readonly ["text"];
486
+ output: readonly ["text"];
487
+ };
488
+ capabilities: ("reasoning" | "temperature" | "tool_call" | "structured_output")[];
489
+ providers: readonly ["alibaba"];
490
+ name: string;
491
+ context: number;
492
+ created: string;
493
+ knowledge: string;
470
494
  }> | import("../../utils").Preset<"alibaba/qwen3-coder-next", CatalogModel, {
471
495
  modalities: {
472
496
  input: readonly ["text", "file"];
@@ -693,6 +717,28 @@ export declare const qwen: {
693
717
  context: number;
694
718
  created: string;
695
719
  knowledge: string;
720
+ }>, import("../../utils").Preset<"alibaba/qwen3.7-plus", CatalogModel, {
721
+ modalities: {
722
+ input: readonly ["text", "image", "file"];
723
+ output: readonly ["text"];
724
+ };
725
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
726
+ providers: readonly ["alibaba"];
727
+ name: string;
728
+ context: number;
729
+ created: string;
730
+ knowledge: string;
731
+ }>, import("../../utils").Preset<"alibaba/qwen3.7-max", CatalogModel, {
732
+ modalities: {
733
+ input: readonly ["text"];
734
+ output: readonly ["text"];
735
+ };
736
+ capabilities: ("reasoning" | "temperature" | "tool_call" | "structured_output")[];
737
+ providers: readonly ["alibaba"];
738
+ name: string;
739
+ context: number;
740
+ created: string;
741
+ knowledge: string;
696
742
  }>];
697
743
  readonly embeddings: readonly [import("../../utils").Preset<"alibaba/qwen3-embedding-0.6b", CatalogModel, {
698
744
  name: string;
@@ -901,6 +947,29 @@ export declare const qwen: {
901
947
  created: string;
902
948
  knowledge: string;
903
949
  }>];
950
+ readonly "v3.7": readonly [import("../../utils").Preset<"alibaba/qwen3.7-plus", CatalogModel, {
951
+ modalities: {
952
+ input: readonly ["text", "image", "file"];
953
+ output: readonly ["text"];
954
+ };
955
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
956
+ providers: readonly ["alibaba"];
957
+ name: string;
958
+ context: number;
959
+ created: string;
960
+ knowledge: string;
961
+ }>, import("../../utils").Preset<"alibaba/qwen3.7-max", CatalogModel, {
962
+ modalities: {
963
+ input: readonly ["text"];
964
+ output: readonly ["text"];
965
+ };
966
+ capabilities: ("reasoning" | "temperature" | "tool_call" | "structured_output")[];
967
+ providers: readonly ["alibaba"];
968
+ name: string;
969
+ context: number;
970
+ created: string;
971
+ knowledge: string;
972
+ }>];
904
973
  readonly coder: readonly [import("../../utils").Preset<"alibaba/qwen3-coder-next", CatalogModel, {
905
974
  modalities: {
906
975
  input: readonly ["text", "file"];
@@ -202,6 +202,30 @@ export const qwen36MaxPreview = presetFor()("alibaba/qwen3.6-max-preview", {
202
202
  created: "2026-04-21",
203
203
  knowledge: "2025-04",
204
204
  });
205
+ export const qwen37Plus = presetFor()("alibaba/qwen3.7-plus", {
206
+ modalities: {
207
+ input: ["text", "image", "file"],
208
+ output: ["text"],
209
+ },
210
+ capabilities: ["attachments", "reasoning", "tool_call", "structured_output", "temperature"],
211
+ providers: ["alibaba"],
212
+ name: "Qwen3.7 Plus",
213
+ context: 1_000_000,
214
+ created: "2026-06-02",
215
+ knowledge: "2025-04",
216
+ });
217
+ export const qwen37Max = presetFor()("alibaba/qwen3.7-max", {
218
+ modalities: {
219
+ input: ["text"],
220
+ output: ["text"],
221
+ },
222
+ capabilities: ["reasoning", "tool_call", "structured_output", "temperature"],
223
+ providers: ["alibaba"],
224
+ name: "Qwen3.7 Max",
225
+ context: 1_000_000,
226
+ created: "2026-05-21",
227
+ knowledge: "2025-04",
228
+ });
205
229
  export const qwen3CoderNext = presetFor()("alibaba/qwen3-coder-next", {
206
230
  modalities: {
207
231
  input: ["text", "file"],
@@ -248,17 +272,18 @@ const qwenAtomic = {
248
272
  v3: [qwen3_235b, qwen3_32b],
249
273
  "v3.5": [qwen35Plus, qwen35Flash, qwen35_397b, qwen35_122b, qwen35_35b, qwen35_27b, qwen35_9b, qwen35_4b, qwen35_2b, qwen35_08b],
250
274
  "v3.6": [qwen36Plus, qwen36Flash, qwen36_27b, qwen36MaxPreview],
275
+ "v3.7": [qwen37Plus, qwen37Max],
251
276
  coder: [qwen3CoderNext],
252
277
  vl: [qwen3Vl235b],
253
278
  embedding: [qwen3Embedding06b, qwen3Embedding4b, qwen3Embedding8b],
254
279
  };
255
280
  const qwenGroups = {
256
- "v3.x": [...qwenAtomic["v3"], ...qwenAtomic["v3.5"], ...qwenAtomic["v3.6"]],
281
+ "v3.x": [...qwenAtomic["v3"], ...qwenAtomic["v3.5"], ...qwenAtomic["v3.6"], ...qwenAtomic["v3.7"]],
257
282
  embeddings: [...qwenAtomic["embedding"]],
258
283
  };
259
284
  export const qwen = {
260
285
  ...qwenAtomic,
261
286
  ...qwenGroups,
262
- latest: [...qwenAtomic["v3.6"]],
287
+ latest: [...qwenAtomic["v3.7"]],
263
288
  all: Object.values(qwenAtomic).flat(),
264
289
  };
@@ -6,13 +6,16 @@ const isClaude = (family, version) => {
6
6
  modelId.includes(`claude-${family}-${dashed}`);
7
7
  };
8
8
  const isClaude4 = (modelId) => modelId.includes("claude-") && modelId.includes("-4");
9
+ const isFable5 = (modelId) => modelId.includes("claude-fable-5");
10
+ const isClaude4OrFable = (modelId) => isClaude4(modelId) || isFable5(modelId);
11
+ const isOpus48 = isClaude("opus", "4.8");
9
12
  const isOpus47 = isClaude("opus", "4.7");
10
13
  const isOpus46 = isClaude("opus", "4.6");
11
14
  const isOpus45 = isClaude("opus", "4.5");
12
15
  const isOpus4 = isClaude("opus", "4");
13
16
  const isSonnet46 = isClaude("sonnet", "4.6");
14
17
  export function mapClaudeReasoningEffort(effort, modelId) {
15
- if (isOpus47(modelId)) {
18
+ if (isOpus48(modelId) || isOpus47(modelId) || isFable5(modelId)) {
16
19
  switch (effort) {
17
20
  case "none":
18
21
  case "minimal":
@@ -58,6 +61,10 @@ export function mapClaudeReasoningEffort(effort, modelId) {
58
61
  return undefined;
59
62
  }
60
63
  function getMaxOutputTokens(modelId) {
64
+ if (isOpus48(modelId))
65
+ return 128_000;
66
+ if (isFable5(modelId))
67
+ return 128_000;
61
68
  if (isOpus47(modelId))
62
69
  return 128_000;
63
70
  if (isOpus46(modelId))
@@ -89,10 +96,10 @@ export const claudeReasoningMiddleware = {
89
96
  target.thinking = { type: "disabled" };
90
97
  }
91
98
  else if (reasoning.effort) {
92
- if (isClaude4(modelId)) {
99
+ if (isClaude4OrFable(modelId)) {
93
100
  target.effort = mapClaudeReasoningEffort(reasoning.effort, modelId);
94
101
  }
95
- if (isOpus47(modelId)) {
102
+ if (isOpus48(modelId) || isOpus47(modelId) || isFable5(modelId)) {
96
103
  target.thinking = { type: "adaptive" };
97
104
  }
98
105
  else if (isOpus46(modelId)) {
@@ -152,6 +159,6 @@ export const claudePromptCachingMiddleware = {
152
159
  return params;
153
160
  },
154
161
  };
155
- modelMiddlewareMatcher.useForModel(["anthropic/claude-*3*7*", "anthropic/claude-*4*"], {
162
+ modelMiddlewareMatcher.useForModel(["anthropic/claude-*3*7*", "anthropic/claude-*4*", "anthropic/claude-fable-*"], {
156
163
  language: [claudeReasoningMiddleware, claudePromptCachingMiddleware],
157
164
  });
@@ -107,6 +107,30 @@ export declare const claudeOpus45: import("../../utils").Preset<"anthropic/claud
107
107
  context: number;
108
108
  providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
109
109
  }>;
110
+ export declare const claudeOpus48: import("../../utils").Preset<"anthropic/claude-opus-4.8", CatalogModel, {
111
+ name: string;
112
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
113
+ context: number;
114
+ created: string;
115
+ knowledge: string;
116
+ modalities: {
117
+ input: readonly ["text", "image", "pdf", "file"];
118
+ output: readonly ["text"];
119
+ };
120
+ providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
121
+ }>;
122
+ export declare const claudeFable5: import("../../utils").Preset<"anthropic/claude-fable-5", CatalogModel, {
123
+ name: string;
124
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
125
+ context: number;
126
+ created: string;
127
+ knowledge: string;
128
+ modalities: {
129
+ input: readonly ["text", "image", "pdf", "file"];
130
+ output: readonly ["text"];
131
+ };
132
+ providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
133
+ }>;
110
134
  export declare const claudeOpus47: import("../../utils").Preset<"anthropic/claude-opus-4.7", CatalogModel, {
111
135
  name: string;
112
136
  capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
@@ -156,7 +180,7 @@ export declare const claudeOpus4: import("../../utils").Preset<"anthropic/claude
156
180
  providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
157
181
  }>;
158
182
  export declare const claude: {
159
- readonly latest: readonly [import("../../utils").Preset<"anthropic/claude-opus-4.7", CatalogModel, {
183
+ readonly latest: readonly [import("../../utils").Preset<"anthropic/claude-opus-4.8", CatalogModel, {
160
184
  name: string;
161
185
  capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
162
186
  context: number;
@@ -167,27 +191,16 @@ export declare const claude: {
167
191
  output: readonly ["text"];
168
192
  };
169
193
  providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
170
- }>, import("../../utils").Preset<"anthropic/claude-sonnet-4.6", CatalogModel, {
194
+ }>, import("../../utils").Preset<"anthropic/claude-fable-5", CatalogModel, {
171
195
  name: string;
172
196
  capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
173
- created: string;
174
- knowledge: string;
175
- modalities: {
176
- input: readonly ["text", "image", "pdf", "file"];
177
- output: readonly ["text"];
178
- };
179
197
  context: number;
180
- providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
181
- }>, import("../../utils").Preset<"anthropic/claude-opus-4.6", CatalogModel, {
182
- name: string;
183
- capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
184
198
  created: string;
185
199
  knowledge: string;
186
200
  modalities: {
187
201
  input: readonly ["text", "image", "pdf", "file"];
188
202
  output: readonly ["text"];
189
203
  };
190
- context: number;
191
204
  providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
192
205
  }>];
193
206
  readonly all: (import("../../utils").Preset<"anthropic/claude-haiku-4.5", CatalogModel, {
@@ -289,6 +302,28 @@ export declare const claude: {
289
302
  };
290
303
  context: number;
291
304
  providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
305
+ }> | import("../../utils").Preset<"anthropic/claude-opus-4.8", CatalogModel, {
306
+ name: string;
307
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
308
+ context: number;
309
+ created: string;
310
+ knowledge: string;
311
+ modalities: {
312
+ input: readonly ["text", "image", "pdf", "file"];
313
+ output: readonly ["text"];
314
+ };
315
+ providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
316
+ }> | import("../../utils").Preset<"anthropic/claude-fable-5", CatalogModel, {
317
+ name: string;
318
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
319
+ context: number;
320
+ created: string;
321
+ knowledge: string;
322
+ modalities: {
323
+ input: readonly ["text", "image", "pdf", "file"];
324
+ output: readonly ["text"];
325
+ };
326
+ providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
292
327
  }> | import("../../utils").Preset<"anthropic/claude-opus-4.7", CatalogModel, {
293
328
  name: string;
294
329
  capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
@@ -334,7 +369,18 @@ export declare const claude: {
334
369
  context: number;
335
370
  providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
336
371
  }>)[];
337
- readonly "v4.x": readonly [import("../../utils").Preset<"anthropic/claude-opus-4.7", CatalogModel, {
372
+ readonly "v4.x": readonly [import("../../utils").Preset<"anthropic/claude-opus-4.8", CatalogModel, {
373
+ name: string;
374
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
375
+ context: number;
376
+ created: string;
377
+ knowledge: string;
378
+ modalities: {
379
+ input: readonly ["text", "image", "pdf", "file"];
380
+ output: readonly ["text"];
381
+ };
382
+ providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
383
+ }>, import("../../utils").Preset<"anthropic/claude-opus-4.7", CatalogModel, {
338
384
  name: string;
339
385
  capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
340
386
  context: number;
@@ -479,6 +525,18 @@ export declare const claude: {
479
525
  context: number;
480
526
  providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
481
527
  }>];
528
+ readonly "v4.8": readonly [import("../../utils").Preset<"anthropic/claude-opus-4.8", CatalogModel, {
529
+ name: string;
530
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
531
+ context: number;
532
+ created: string;
533
+ knowledge: string;
534
+ modalities: {
535
+ input: readonly ["text", "image", "pdf", "file"];
536
+ output: readonly ["text"];
537
+ };
538
+ providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
539
+ }>];
482
540
  readonly "v4.7": readonly [import("../../utils").Preset<"anthropic/claude-opus-4.7", CatalogModel, {
483
541
  name: string;
484
542
  capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
@@ -630,6 +688,18 @@ export declare const claude: {
630
688
  context: number;
631
689
  providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
632
690
  }>];
691
+ readonly fable: readonly [import("../../utils").Preset<"anthropic/claude-fable-5", CatalogModel, {
692
+ name: string;
693
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
694
+ context: number;
695
+ created: string;
696
+ knowledge: string;
697
+ modalities: {
698
+ input: readonly ["text", "image", "pdf", "file"];
699
+ output: readonly ["text"];
700
+ };
701
+ providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
702
+ }>];
633
703
  readonly haiku: readonly [import("../../utils").Preset<"anthropic/claude-haiku-4.5", CatalogModel, {
634
704
  name: string;
635
705
  capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
@@ -720,7 +790,18 @@ export declare const claude: {
720
790
  context: number;
721
791
  providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
722
792
  }>];
723
- readonly opus: readonly [import("../../utils").Preset<"anthropic/claude-opus-4.7", CatalogModel, {
793
+ readonly opus: readonly [import("../../utils").Preset<"anthropic/claude-opus-4.8", CatalogModel, {
794
+ name: string;
795
+ capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
796
+ context: number;
797
+ created: string;
798
+ knowledge: string;
799
+ modalities: {
800
+ input: readonly ["text", "image", "pdf", "file"];
801
+ output: readonly ["text"];
802
+ };
803
+ providers: readonly ["anthropic", "bedrock", "vertex", "azure"];
804
+ }>, import("../../utils").Preset<"anthropic/claude-opus-4.7", CatalogModel, {
724
805
  name: string;
725
806
  capabilities: ("reasoning" | "temperature" | "attachments" | "tool_call" | "structured_output")[];
726
807
  context: number;
@@ -87,6 +87,24 @@ export const claudeOpus45 = presetFor()("anthropic/claude-opus-4.5", {
87
87
  created: "2025-11-01",
88
88
  knowledge: "2025-05",
89
89
  });
90
+ export const claudeOpus48 = presetFor()("anthropic/claude-opus-4.8", {
91
+ ...CLAUDE_BASE,
92
+ ...CLAUDE_PDF_MODALITIES,
93
+ name: "Claude Opus 4.8",
94
+ capabilities: [...CLAUDE_BASE.capabilities, "reasoning"],
95
+ context: 1_000_000,
96
+ created: "2026-05-28",
97
+ knowledge: "2026-02",
98
+ });
99
+ export const claudeFable5 = presetFor()("anthropic/claude-fable-5", {
100
+ ...CLAUDE_BASE,
101
+ ...CLAUDE_PDF_MODALITIES,
102
+ name: "Claude Fable 5",
103
+ capabilities: [...CLAUDE_BASE.capabilities, "reasoning"],
104
+ context: 1_000_000,
105
+ created: "2026-06-09",
106
+ knowledge: "2026-01",
107
+ });
90
108
  export const claudeOpus47 = presetFor()("anthropic/claude-opus-4.7", {
91
109
  ...CLAUDE_BASE,
92
110
  ...CLAUDE_PDF_MODALITIES,
@@ -121,6 +139,7 @@ export const claudeOpus4 = presetFor()("anthropic/claude-opus-4", {
121
139
  knowledge: "2025-03",
122
140
  });
123
141
  const claudeAtomic = {
142
+ "v4.8": [claudeOpus48],
124
143
  "v4.7": [claudeOpus47],
125
144
  "v4.6": [claudeSonnet46, claudeOpus46],
126
145
  "v4.5": [claudeHaiku45, claudeSonnet45, claudeOpus45],
@@ -129,12 +148,14 @@ const claudeAtomic = {
129
148
  "v3.7": [claudeSonnet37],
130
149
  "v3.5": [claudeSonnet35, claudeHaiku35],
131
150
  v3: [claudeHaiku3],
151
+ fable: [claudeFable5],
132
152
  haiku: [claudeHaiku45, claudeHaiku35, claudeHaiku3],
133
153
  sonnet: [claudeSonnet46, claudeSonnet45, claudeSonnet4, claudeSonnet37, claudeSonnet35],
134
- opus: [claudeOpus47, claudeOpus46, claudeOpus45, claudeOpus41, claudeOpus4],
154
+ opus: [claudeOpus48, claudeOpus47, claudeOpus46, claudeOpus45, claudeOpus41, claudeOpus4],
135
155
  };
136
156
  const claudeGroups = {
137
157
  "v4.x": [
158
+ ...claudeAtomic["v4.8"],
138
159
  ...claudeAtomic["v4.7"],
139
160
  ...claudeAtomic["v4.6"],
140
161
  ...claudeAtomic["v4.5"],
@@ -146,6 +167,6 @@ const claudeGroups = {
146
167
  export const claude = {
147
168
  ...claudeAtomic,
148
169
  ...claudeGroups,
149
- latest: [...claudeAtomic["v4.7"], ...claudeAtomic["v4.6"]],
170
+ latest: [...claudeAtomic["v4.8"], ...claudeAtomic["fable"]],
150
171
  all: Object.values(claudeAtomic).flat(),
151
172
  };