ai 5.0.5 → 5.0.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/dist/index.js CHANGED
@@ -20,31 +20,31 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
- AISDKError: () => import_provider18.AISDKError,
24
- APICallError: () => import_provider18.APICallError,
23
+ AISDKError: () => import_provider16.AISDKError,
24
+ APICallError: () => import_provider16.APICallError,
25
25
  AbstractChat: () => AbstractChat,
26
26
  DefaultChatTransport: () => DefaultChatTransport,
27
27
  DownloadError: () => DownloadError,
28
- EmptyResponseBodyError: () => import_provider18.EmptyResponseBodyError,
28
+ EmptyResponseBodyError: () => import_provider16.EmptyResponseBodyError,
29
29
  Experimental_Agent: () => Agent,
30
30
  HttpChatTransport: () => HttpChatTransport,
31
31
  InvalidArgumentError: () => InvalidArgumentError,
32
32
  InvalidDataContentError: () => InvalidDataContentError,
33
33
  InvalidMessageRoleError: () => InvalidMessageRoleError,
34
- InvalidPromptError: () => import_provider18.InvalidPromptError,
35
- InvalidResponseDataError: () => import_provider18.InvalidResponseDataError,
34
+ InvalidPromptError: () => import_provider16.InvalidPromptError,
35
+ InvalidResponseDataError: () => import_provider16.InvalidResponseDataError,
36
36
  InvalidStreamPartError: () => InvalidStreamPartError,
37
37
  InvalidToolInputError: () => InvalidToolInputError,
38
- JSONParseError: () => import_provider18.JSONParseError,
38
+ JSONParseError: () => import_provider16.JSONParseError,
39
39
  JsonToSseTransformStream: () => JsonToSseTransformStream,
40
- LoadAPIKeyError: () => import_provider18.LoadAPIKeyError,
40
+ LoadAPIKeyError: () => import_provider16.LoadAPIKeyError,
41
41
  MCPClientError: () => MCPClientError,
42
42
  MessageConversionError: () => MessageConversionError,
43
- NoContentGeneratedError: () => import_provider18.NoContentGeneratedError,
43
+ NoContentGeneratedError: () => import_provider16.NoContentGeneratedError,
44
44
  NoImageGeneratedError: () => NoImageGeneratedError,
45
45
  NoObjectGeneratedError: () => NoObjectGeneratedError,
46
46
  NoOutputSpecifiedError: () => NoOutputSpecifiedError,
47
- NoSuchModelError: () => import_provider18.NoSuchModelError,
47
+ NoSuchModelError: () => import_provider16.NoSuchModelError,
48
48
  NoSuchProviderError: () => NoSuchProviderError,
49
49
  NoSuchToolError: () => NoSuchToolError,
50
50
  Output: () => output_exports,
@@ -52,9 +52,9 @@ __export(src_exports, {
52
52
  SerialJobExecutor: () => SerialJobExecutor,
53
53
  TextStreamChatTransport: () => TextStreamChatTransport,
54
54
  ToolCallRepairError: () => ToolCallRepairError,
55
- TypeValidationError: () => import_provider18.TypeValidationError,
55
+ TypeValidationError: () => import_provider16.TypeValidationError,
56
56
  UI_MESSAGE_STREAM_HEADERS: () => UI_MESSAGE_STREAM_HEADERS,
57
- UnsupportedFunctionalityError: () => import_provider18.UnsupportedFunctionalityError,
57
+ UnsupportedFunctionalityError: () => import_provider16.UnsupportedFunctionalityError,
58
58
  UnsupportedModelVersionError: () => UnsupportedModelVersionError,
59
59
  asSchema: () => import_provider_utils28.asSchema,
60
60
  assistantModelMessageSchema: () => assistantModelMessageSchema,
@@ -139,10 +139,11 @@ var NoOutputSpecifiedError = class extends import_provider.AISDKError {
139
139
  };
140
140
  _a = symbol;
141
141
 
142
- // src/util/as-array.ts
143
- function asArray(value) {
144
- return value === void 0 ? [] : Array.isArray(value) ? value : [value];
145
- }
142
+ // src/model/resolve-model.ts
143
+ var import_gateway = require("@ai-sdk/gateway");
144
+
145
+ // src/error/index.ts
146
+ var import_provider16 = require("@ai-sdk/provider");
146
147
 
147
148
  // src/error/invalid-argument-error.ts
148
149
  var import_provider2 = require("@ai-sdk/provider");
@@ -170,27 +171,20 @@ var InvalidArgumentError = class extends import_provider2.AISDKError {
170
171
  };
171
172
  _a2 = symbol2;
172
173
 
173
- // src/util/retry-with-exponential-backoff.ts
174
- var import_provider4 = require("@ai-sdk/provider");
175
- var import_provider_utils = require("@ai-sdk/provider-utils");
176
-
177
- // src/util/retry-error.ts
174
+ // src/error/invalid-stream-part-error.ts
178
175
  var import_provider3 = require("@ai-sdk/provider");
179
- var name3 = "AI_RetryError";
176
+ var name3 = "AI_InvalidStreamPartError";
180
177
  var marker3 = `vercel.ai.error.${name3}`;
181
178
  var symbol3 = Symbol.for(marker3);
182
179
  var _a3;
183
- var RetryError = class extends import_provider3.AISDKError {
180
+ var InvalidStreamPartError = class extends import_provider3.AISDKError {
184
181
  constructor({
185
- message,
186
- reason,
187
- errors
182
+ chunk,
183
+ message
188
184
  }) {
189
185
  super({ name: name3, message });
190
186
  this[_a3] = true;
191
- this.reason = reason;
192
- this.errors = errors;
193
- this.lastError = errors[errors.length - 1];
187
+ this.chunk = chunk;
194
188
  }
195
189
  static isInstance(error) {
196
190
  return import_provider3.AISDKError.hasMarker(error, marker3);
@@ -198,138 +192,313 @@ var RetryError = class extends import_provider3.AISDKError {
198
192
  };
199
193
  _a3 = symbol3;
200
194
 
201
- // src/util/retry-with-exponential-backoff.ts
202
- function getRetryDelayInMs({
203
- error,
204
- exponentialBackoffDelay
205
- }) {
206
- const headers = error.responseHeaders;
207
- if (!headers)
208
- return exponentialBackoffDelay;
209
- let ms;
210
- const retryAfterMs = headers["retry-after-ms"];
211
- if (retryAfterMs) {
212
- const timeoutMs = parseFloat(retryAfterMs);
213
- if (!Number.isNaN(timeoutMs)) {
214
- ms = timeoutMs;
215
- }
195
+ // src/error/invalid-tool-input-error.ts
196
+ var import_provider4 = require("@ai-sdk/provider");
197
+ var name4 = "AI_InvalidToolInputError";
198
+ var marker4 = `vercel.ai.error.${name4}`;
199
+ var symbol4 = Symbol.for(marker4);
200
+ var _a4;
201
+ var InvalidToolInputError = class extends import_provider4.AISDKError {
202
+ constructor({
203
+ toolInput,
204
+ toolName,
205
+ cause,
206
+ message = `Invalid input for tool ${toolName}: ${(0, import_provider4.getErrorMessage)(cause)}`
207
+ }) {
208
+ super({ name: name4, message, cause });
209
+ this[_a4] = true;
210
+ this.toolInput = toolInput;
211
+ this.toolName = toolName;
216
212
  }
217
- const retryAfter = headers["retry-after"];
218
- if (retryAfter && ms === void 0) {
219
- const timeoutSeconds = parseFloat(retryAfter);
220
- if (!Number.isNaN(timeoutSeconds)) {
221
- ms = timeoutSeconds * 1e3;
222
- } else {
223
- ms = Date.parse(retryAfter) - Date.now();
224
- }
213
+ static isInstance(error) {
214
+ return import_provider4.AISDKError.hasMarker(error, marker4);
225
215
  }
226
- if (ms != null && !Number.isNaN(ms) && 0 <= ms && (ms < 60 * 1e3 || ms < exponentialBackoffDelay)) {
227
- return ms;
216
+ };
217
+ _a4 = symbol4;
218
+
219
+ // src/error/mcp-client-error.ts
220
+ var import_provider5 = require("@ai-sdk/provider");
221
+ var name5 = "AI_MCPClientError";
222
+ var marker5 = `vercel.ai.error.${name5}`;
223
+ var symbol5 = Symbol.for(marker5);
224
+ var _a5;
225
+ var MCPClientError = class extends import_provider5.AISDKError {
226
+ constructor({
227
+ name: name16 = "MCPClientError",
228
+ message,
229
+ cause
230
+ }) {
231
+ super({ name: name16, message, cause });
232
+ this[_a5] = true;
228
233
  }
229
- return exponentialBackoffDelay;
230
- }
231
- var retryWithExponentialBackoffRespectingRetryHeaders = ({
232
- maxRetries = 2,
233
- initialDelayInMs = 2e3,
234
- backoffFactor = 2,
235
- abortSignal
236
- } = {}) => async (f) => _retryWithExponentialBackoff(f, {
237
- maxRetries,
238
- delayInMs: initialDelayInMs,
239
- backoffFactor,
240
- abortSignal
241
- });
242
- async function _retryWithExponentialBackoff(f, {
243
- maxRetries,
244
- delayInMs,
245
- backoffFactor,
246
- abortSignal
247
- }, errors = []) {
248
- try {
249
- return await f();
250
- } catch (error) {
251
- if ((0, import_provider_utils.isAbortError)(error)) {
252
- throw error;
253
- }
254
- if (maxRetries === 0) {
255
- throw error;
256
- }
257
- const errorMessage = (0, import_provider_utils.getErrorMessage)(error);
258
- const newErrors = [...errors, error];
259
- const tryNumber = newErrors.length;
260
- if (tryNumber > maxRetries) {
261
- throw new RetryError({
262
- message: `Failed after ${tryNumber} attempts. Last error: ${errorMessage}`,
263
- reason: "maxRetriesExceeded",
264
- errors: newErrors
265
- });
266
- }
267
- if (error instanceof Error && import_provider4.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
268
- await (0, import_provider_utils.delay)(
269
- getRetryDelayInMs({
270
- error,
271
- exponentialBackoffDelay: delayInMs
272
- }),
273
- { abortSignal }
274
- );
275
- return _retryWithExponentialBackoff(
276
- f,
277
- {
278
- maxRetries,
279
- delayInMs: backoffFactor * delayInMs,
280
- backoffFactor,
281
- abortSignal
282
- },
283
- newErrors
284
- );
285
- }
286
- if (tryNumber === 1) {
287
- throw error;
288
- }
289
- throw new RetryError({
290
- message: `Failed after ${tryNumber} attempts with non-retryable error: '${errorMessage}'`,
291
- reason: "errorNotRetryable",
292
- errors: newErrors
234
+ static isInstance(error) {
235
+ return import_provider5.AISDKError.hasMarker(error, marker5);
236
+ }
237
+ };
238
+ _a5 = symbol5;
239
+
240
+ // src/error/no-image-generated-error.ts
241
+ var import_provider6 = require("@ai-sdk/provider");
242
+ var name6 = "AI_NoImageGeneratedError";
243
+ var marker6 = `vercel.ai.error.${name6}`;
244
+ var symbol6 = Symbol.for(marker6);
245
+ var _a6;
246
+ var NoImageGeneratedError = class extends import_provider6.AISDKError {
247
+ constructor({
248
+ message = "No image generated.",
249
+ cause,
250
+ responses
251
+ }) {
252
+ super({ name: name6, message, cause });
253
+ this[_a6] = true;
254
+ this.responses = responses;
255
+ }
256
+ static isInstance(error) {
257
+ return import_provider6.AISDKError.hasMarker(error, marker6);
258
+ }
259
+ };
260
+ _a6 = symbol6;
261
+
262
+ // src/error/no-object-generated-error.ts
263
+ var import_provider7 = require("@ai-sdk/provider");
264
+ var name7 = "AI_NoObjectGeneratedError";
265
+ var marker7 = `vercel.ai.error.${name7}`;
266
+ var symbol7 = Symbol.for(marker7);
267
+ var _a7;
268
+ var NoObjectGeneratedError = class extends import_provider7.AISDKError {
269
+ constructor({
270
+ message = "No object generated.",
271
+ cause,
272
+ text: text2,
273
+ response,
274
+ usage,
275
+ finishReason
276
+ }) {
277
+ super({ name: name7, message, cause });
278
+ this[_a7] = true;
279
+ this.text = text2;
280
+ this.response = response;
281
+ this.usage = usage;
282
+ this.finishReason = finishReason;
283
+ }
284
+ static isInstance(error) {
285
+ return import_provider7.AISDKError.hasMarker(error, marker7);
286
+ }
287
+ };
288
+ _a7 = symbol7;
289
+
290
+ // src/error/no-such-tool-error.ts
291
+ var import_provider8 = require("@ai-sdk/provider");
292
+ var name8 = "AI_NoSuchToolError";
293
+ var marker8 = `vercel.ai.error.${name8}`;
294
+ var symbol8 = Symbol.for(marker8);
295
+ var _a8;
296
+ var NoSuchToolError = class extends import_provider8.AISDKError {
297
+ constructor({
298
+ toolName,
299
+ availableTools = void 0,
300
+ message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
301
+ }) {
302
+ super({ name: name8, message });
303
+ this[_a8] = true;
304
+ this.toolName = toolName;
305
+ this.availableTools = availableTools;
306
+ }
307
+ static isInstance(error) {
308
+ return import_provider8.AISDKError.hasMarker(error, marker8);
309
+ }
310
+ };
311
+ _a8 = symbol8;
312
+
313
+ // src/error/tool-call-repair-error.ts
314
+ var import_provider9 = require("@ai-sdk/provider");
315
+ var name9 = "AI_ToolCallRepairError";
316
+ var marker9 = `vercel.ai.error.${name9}`;
317
+ var symbol9 = Symbol.for(marker9);
318
+ var _a9;
319
+ var ToolCallRepairError = class extends import_provider9.AISDKError {
320
+ constructor({
321
+ cause,
322
+ originalError,
323
+ message = `Error repairing tool call: ${(0, import_provider9.getErrorMessage)(cause)}`
324
+ }) {
325
+ super({ name: name9, message, cause });
326
+ this[_a9] = true;
327
+ this.originalError = originalError;
328
+ }
329
+ static isInstance(error) {
330
+ return import_provider9.AISDKError.hasMarker(error, marker9);
331
+ }
332
+ };
333
+ _a9 = symbol9;
334
+
335
+ // src/error/unsupported-model-version-error.ts
336
+ var import_provider10 = require("@ai-sdk/provider");
337
+ var UnsupportedModelVersionError = class extends import_provider10.AISDKError {
338
+ constructor(options) {
339
+ super({
340
+ name: "AI_UnsupportedModelVersionError",
341
+ message: `Unsupported model version ${options.version} for provider "${options.provider}" and model "${options.modelId}". AI SDK 5 only supports models that implement specification version "v2".`
293
342
  });
343
+ this.version = options.version;
344
+ this.provider = options.provider;
345
+ this.modelId = options.modelId;
294
346
  }
295
- }
347
+ };
296
348
 
297
- // src/util/prepare-retries.ts
298
- function prepareRetries({
299
- maxRetries,
300
- abortSignal
301
- }) {
302
- if (maxRetries != null) {
303
- if (!Number.isInteger(maxRetries)) {
304
- throw new InvalidArgumentError({
305
- parameter: "maxRetries",
306
- value: maxRetries,
307
- message: "maxRetries must be an integer"
349
+ // src/prompt/invalid-data-content-error.ts
350
+ var import_provider11 = require("@ai-sdk/provider");
351
+ var name10 = "AI_InvalidDataContentError";
352
+ var marker10 = `vercel.ai.error.${name10}`;
353
+ var symbol10 = Symbol.for(marker10);
354
+ var _a10;
355
+ var InvalidDataContentError = class extends import_provider11.AISDKError {
356
+ constructor({
357
+ content,
358
+ cause,
359
+ message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
360
+ }) {
361
+ super({ name: name10, message, cause });
362
+ this[_a10] = true;
363
+ this.content = content;
364
+ }
365
+ static isInstance(error) {
366
+ return import_provider11.AISDKError.hasMarker(error, marker10);
367
+ }
368
+ };
369
+ _a10 = symbol10;
370
+
371
+ // src/prompt/invalid-message-role-error.ts
372
+ var import_provider12 = require("@ai-sdk/provider");
373
+ var name11 = "AI_InvalidMessageRoleError";
374
+ var marker11 = `vercel.ai.error.${name11}`;
375
+ var symbol11 = Symbol.for(marker11);
376
+ var _a11;
377
+ var InvalidMessageRoleError = class extends import_provider12.AISDKError {
378
+ constructor({
379
+ role,
380
+ message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
381
+ }) {
382
+ super({ name: name11, message });
383
+ this[_a11] = true;
384
+ this.role = role;
385
+ }
386
+ static isInstance(error) {
387
+ return import_provider12.AISDKError.hasMarker(error, marker11);
388
+ }
389
+ };
390
+ _a11 = symbol11;
391
+
392
+ // src/prompt/message-conversion-error.ts
393
+ var import_provider13 = require("@ai-sdk/provider");
394
+ var name12 = "AI_MessageConversionError";
395
+ var marker12 = `vercel.ai.error.${name12}`;
396
+ var symbol12 = Symbol.for(marker12);
397
+ var _a12;
398
+ var MessageConversionError = class extends import_provider13.AISDKError {
399
+ constructor({
400
+ originalMessage,
401
+ message
402
+ }) {
403
+ super({ name: name12, message });
404
+ this[_a12] = true;
405
+ this.originalMessage = originalMessage;
406
+ }
407
+ static isInstance(error) {
408
+ return import_provider13.AISDKError.hasMarker(error, marker12);
409
+ }
410
+ };
411
+ _a12 = symbol12;
412
+
413
+ // src/util/download-error.ts
414
+ var import_provider14 = require("@ai-sdk/provider");
415
+ var name13 = "AI_DownloadError";
416
+ var marker13 = `vercel.ai.error.${name13}`;
417
+ var symbol13 = Symbol.for(marker13);
418
+ var _a13;
419
+ var DownloadError = class extends import_provider14.AISDKError {
420
+ constructor({
421
+ url,
422
+ statusCode,
423
+ statusText,
424
+ cause,
425
+ message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
426
+ }) {
427
+ super({ name: name13, message, cause });
428
+ this[_a13] = true;
429
+ this.url = url;
430
+ this.statusCode = statusCode;
431
+ this.statusText = statusText;
432
+ }
433
+ static isInstance(error) {
434
+ return import_provider14.AISDKError.hasMarker(error, marker13);
435
+ }
436
+ };
437
+ _a13 = symbol13;
438
+
439
+ // src/util/retry-error.ts
440
+ var import_provider15 = require("@ai-sdk/provider");
441
+ var name14 = "AI_RetryError";
442
+ var marker14 = `vercel.ai.error.${name14}`;
443
+ var symbol14 = Symbol.for(marker14);
444
+ var _a14;
445
+ var RetryError = class extends import_provider15.AISDKError {
446
+ constructor({
447
+ message,
448
+ reason,
449
+ errors
450
+ }) {
451
+ super({ name: name14, message });
452
+ this[_a14] = true;
453
+ this.reason = reason;
454
+ this.errors = errors;
455
+ this.lastError = errors[errors.length - 1];
456
+ }
457
+ static isInstance(error) {
458
+ return import_provider15.AISDKError.hasMarker(error, marker14);
459
+ }
460
+ };
461
+ _a14 = symbol14;
462
+
463
+ // src/model/resolve-model.ts
464
+ function resolveLanguageModel(model) {
465
+ if (typeof model !== "string") {
466
+ if (model.specificationVersion !== "v2") {
467
+ throw new UnsupportedModelVersionError({
468
+ version: model.specificationVersion,
469
+ provider: model.provider,
470
+ modelId: model.modelId
308
471
  });
309
472
  }
310
- if (maxRetries < 0) {
311
- throw new InvalidArgumentError({
312
- parameter: "maxRetries",
313
- value: maxRetries,
314
- message: "maxRetries must be >= 0"
473
+ return model;
474
+ }
475
+ return getGlobalProvider().languageModel(model);
476
+ }
477
+ function resolveEmbeddingModel(model) {
478
+ if (typeof model !== "string") {
479
+ if (model.specificationVersion !== "v2") {
480
+ throw new UnsupportedModelVersionError({
481
+ version: model.specificationVersion,
482
+ provider: model.provider,
483
+ modelId: model.modelId
315
484
  });
316
485
  }
486
+ return model;
317
487
  }
318
- const maxRetriesResult = maxRetries != null ? maxRetries : 2;
319
- return {
320
- maxRetries: maxRetriesResult,
321
- retry: retryWithExponentialBackoffRespectingRetryHeaders({
322
- maxRetries: maxRetriesResult,
323
- abortSignal
324
- })
325
- };
488
+ return getGlobalProvider().textEmbeddingModel(
489
+ model
490
+ );
491
+ }
492
+ function getGlobalProvider() {
493
+ var _a16;
494
+ return (_a16 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a16 : import_gateway.gateway;
326
495
  }
327
496
 
328
497
  // src/prompt/convert-to-language-model-prompt.ts
329
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
498
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
330
499
 
331
500
  // src/util/detect-media-type.ts
332
- var import_provider_utils2 = require("@ai-sdk/provider-utils");
501
+ var import_provider_utils = require("@ai-sdk/provider-utils");
333
502
  var imageMediaTypeSignatures = [
334
503
  {
335
504
  mediaType: "image/gif",
@@ -441,7 +610,7 @@ var audioMediaTypeSignatures = [
441
610
  }
442
611
  ];
443
612
  var stripID3 = (data) => {
444
- const bytes = typeof data === "string" ? (0, import_provider_utils2.convertBase64ToUint8Array)(data) : data;
613
+ const bytes = typeof data === "string" ? (0, import_provider_utils.convertBase64ToUint8Array)(data) : data;
445
614
  const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;
446
615
  return bytes.slice(id3Size + 10);
447
616
  };
@@ -466,32 +635,6 @@ function detectMediaType({
466
635
  return void 0;
467
636
  }
468
637
 
469
- // src/util/download-error.ts
470
- var import_provider5 = require("@ai-sdk/provider");
471
- var name4 = "AI_DownloadError";
472
- var marker4 = `vercel.ai.error.${name4}`;
473
- var symbol4 = Symbol.for(marker4);
474
- var _a4;
475
- var DownloadError = class extends import_provider5.AISDKError {
476
- constructor({
477
- url,
478
- statusCode,
479
- statusText,
480
- cause,
481
- message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
482
- }) {
483
- super({ name: name4, message, cause });
484
- this[_a4] = true;
485
- this.url = url;
486
- this.statusCode = statusCode;
487
- this.statusText = statusText;
488
- }
489
- static isInstance(error) {
490
- return import_provider5.AISDKError.hasMarker(error, marker4);
491
- }
492
- };
493
- _a4 = symbol4;
494
-
495
638
  // src/util/download.ts
496
639
  async function download({ url }) {
497
640
  var _a16;
@@ -518,32 +661,10 @@ async function download({ url }) {
518
661
  }
519
662
 
520
663
  // src/prompt/data-content.ts
521
- var import_provider7 = require("@ai-sdk/provider");
522
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
664
+ var import_provider17 = require("@ai-sdk/provider");
665
+ var import_provider_utils2 = require("@ai-sdk/provider-utils");
523
666
  var import_v4 = require("zod/v4");
524
667
 
525
- // src/prompt/invalid-data-content-error.ts
526
- var import_provider6 = require("@ai-sdk/provider");
527
- var name5 = "AI_InvalidDataContentError";
528
- var marker5 = `vercel.ai.error.${name5}`;
529
- var symbol5 = Symbol.for(marker5);
530
- var _a5;
531
- var InvalidDataContentError = class extends import_provider6.AISDKError {
532
- constructor({
533
- content,
534
- cause,
535
- message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
536
- }) {
537
- super({ name: name5, message, cause });
538
- this[_a5] = true;
539
- this.content = content;
540
- }
541
- static isInstance(error) {
542
- return import_provider6.AISDKError.hasMarker(error, marker5);
543
- }
544
- };
545
- _a5 = symbol5;
546
-
547
668
  // src/prompt/split-data-url.ts
548
669
  function splitDataUrl(dataUrl) {
549
670
  try {
@@ -592,7 +713,7 @@ function convertToLanguageModelV2DataContent(content) {
592
713
  content.toString()
593
714
  );
594
715
  if (dataUrlMediaType == null || base64Content == null) {
595
- throw new import_provider7.AISDKError({
716
+ throw new import_provider17.AISDKError({
596
717
  name: "InvalidDataContentError",
597
718
  message: `Invalid data URL format in content ${content.toString()}`
598
719
  });
@@ -606,9 +727,9 @@ function convertDataContentToBase64String(content) {
606
727
  return content;
607
728
  }
608
729
  if (content instanceof ArrayBuffer) {
609
- return (0, import_provider_utils3.convertUint8ArrayToBase64)(new Uint8Array(content));
730
+ return (0, import_provider_utils2.convertUint8ArrayToBase64)(new Uint8Array(content));
610
731
  }
611
- return (0, import_provider_utils3.convertUint8ArrayToBase64)(content);
732
+ return (0, import_provider_utils2.convertUint8ArrayToBase64)(content);
612
733
  }
613
734
  function convertDataContentToUint8Array(content) {
614
735
  if (content instanceof Uint8Array) {
@@ -616,7 +737,7 @@ function convertDataContentToUint8Array(content) {
616
737
  }
617
738
  if (typeof content === "string") {
618
739
  try {
619
- return (0, import_provider_utils3.convertBase64ToUint8Array)(content);
740
+ return (0, import_provider_utils2.convertBase64ToUint8Array)(content);
620
741
  } catch (error) {
621
742
  throw new InvalidDataContentError({
622
743
  message: "Invalid data content. Content string is not a base64-encoded media.",
@@ -625,32 +746,11 @@ function convertDataContentToUint8Array(content) {
625
746
  });
626
747
  }
627
748
  }
628
- if (content instanceof ArrayBuffer) {
629
- return new Uint8Array(content);
630
- }
631
- throw new InvalidDataContentError({ content });
632
- }
633
-
634
- // src/prompt/invalid-message-role-error.ts
635
- var import_provider8 = require("@ai-sdk/provider");
636
- var name6 = "AI_InvalidMessageRoleError";
637
- var marker6 = `vercel.ai.error.${name6}`;
638
- var symbol6 = Symbol.for(marker6);
639
- var _a6;
640
- var InvalidMessageRoleError = class extends import_provider8.AISDKError {
641
- constructor({
642
- role,
643
- message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
644
- }) {
645
- super({ name: name6, message });
646
- this[_a6] = true;
647
- this.role = role;
648
- }
649
- static isInstance(error) {
650
- return import_provider8.AISDKError.hasMarker(error, marker6);
749
+ if (content instanceof ArrayBuffer) {
750
+ return new Uint8Array(content);
651
751
  }
652
- };
653
- _a6 = symbol6;
752
+ throw new InvalidDataContentError({ content });
753
+ }
654
754
 
655
755
  // src/prompt/convert-to-language-model-prompt.ts
656
756
  async function convertToLanguageModelPrompt({
@@ -799,7 +899,7 @@ async function downloadAssets(messages, downloadImplementation, supportedUrls) {
799
899
  }
800
900
  return { mediaType, data };
801
901
  }).filter(
802
- (part) => part.data instanceof URL && part.mediaType != null && !(0, import_provider_utils4.isUrlSupported)({
902
+ (part) => part.data instanceof URL && part.mediaType != null && !(0, import_provider_utils3.isUrlSupported)({
803
903
  url: part.data.toString(),
804
904
  mediaType: part.mediaType,
805
905
  supportedUrls
@@ -938,311 +1038,93 @@ function prepareCallSettings({
938
1038
  });
939
1039
  }
940
1040
  }
941
- if (frequencyPenalty != null) {
942
- if (typeof frequencyPenalty !== "number") {
943
- throw new InvalidArgumentError({
944
- parameter: "frequencyPenalty",
945
- value: frequencyPenalty,
946
- message: "frequencyPenalty must be a number"
947
- });
948
- }
949
- }
950
- if (seed != null) {
951
- if (!Number.isInteger(seed)) {
952
- throw new InvalidArgumentError({
953
- parameter: "seed",
954
- value: seed,
955
- message: "seed must be an integer"
956
- });
957
- }
958
- }
959
- return {
960
- maxOutputTokens,
961
- temperature,
962
- topP,
963
- topK,
964
- presencePenalty,
965
- frequencyPenalty,
966
- stopSequences,
967
- seed
968
- };
969
- }
970
-
971
- // src/prompt/prepare-tools-and-tool-choice.ts
972
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
973
-
974
- // src/util/is-non-empty-object.ts
975
- function isNonEmptyObject(object2) {
976
- return object2 != null && Object.keys(object2).length > 0;
977
- }
978
-
979
- // src/prompt/prepare-tools-and-tool-choice.ts
980
- function prepareToolsAndToolChoice({
981
- tools,
982
- toolChoice,
983
- activeTools
984
- }) {
985
- if (!isNonEmptyObject(tools)) {
986
- return {
987
- tools: void 0,
988
- toolChoice: void 0
989
- };
990
- }
991
- const filteredTools = activeTools != null ? Object.entries(tools).filter(
992
- ([name16]) => activeTools.includes(name16)
993
- ) : Object.entries(tools);
994
- return {
995
- tools: filteredTools.map(([name16, tool3]) => {
996
- const toolType = tool3.type;
997
- switch (toolType) {
998
- case void 0:
999
- case "dynamic":
1000
- case "function":
1001
- return {
1002
- type: "function",
1003
- name: name16,
1004
- description: tool3.description,
1005
- inputSchema: (0, import_provider_utils5.asSchema)(tool3.inputSchema).jsonSchema,
1006
- providerOptions: tool3.providerOptions
1007
- };
1008
- case "provider-defined":
1009
- return {
1010
- type: "provider-defined",
1011
- name: name16,
1012
- id: tool3.id,
1013
- args: tool3.args
1014
- };
1015
- default: {
1016
- const exhaustiveCheck = toolType;
1017
- throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);
1018
- }
1019
- }
1020
- }),
1021
- toolChoice: toolChoice == null ? { type: "auto" } : typeof toolChoice === "string" ? { type: toolChoice } : { type: "tool", toolName: toolChoice.toolName }
1022
- };
1023
- }
1024
-
1025
- // src/prompt/resolve-language-model.ts
1026
- var import_gateway = require("@ai-sdk/gateway");
1027
-
1028
- // src/error/index.ts
1029
- var import_provider18 = require("@ai-sdk/provider");
1030
-
1031
- // src/error/invalid-stream-part-error.ts
1032
- var import_provider9 = require("@ai-sdk/provider");
1033
- var name7 = "AI_InvalidStreamPartError";
1034
- var marker7 = `vercel.ai.error.${name7}`;
1035
- var symbol7 = Symbol.for(marker7);
1036
- var _a7;
1037
- var InvalidStreamPartError = class extends import_provider9.AISDKError {
1038
- constructor({
1039
- chunk,
1040
- message
1041
- }) {
1042
- super({ name: name7, message });
1043
- this[_a7] = true;
1044
- this.chunk = chunk;
1045
- }
1046
- static isInstance(error) {
1047
- return import_provider9.AISDKError.hasMarker(error, marker7);
1048
- }
1049
- };
1050
- _a7 = symbol7;
1051
-
1052
- // src/error/invalid-tool-input-error.ts
1053
- var import_provider10 = require("@ai-sdk/provider");
1054
- var name8 = "AI_InvalidToolInputError";
1055
- var marker8 = `vercel.ai.error.${name8}`;
1056
- var symbol8 = Symbol.for(marker8);
1057
- var _a8;
1058
- var InvalidToolInputError = class extends import_provider10.AISDKError {
1059
- constructor({
1060
- toolInput,
1061
- toolName,
1062
- cause,
1063
- message = `Invalid input for tool ${toolName}: ${(0, import_provider10.getErrorMessage)(cause)}`
1064
- }) {
1065
- super({ name: name8, message, cause });
1066
- this[_a8] = true;
1067
- this.toolInput = toolInput;
1068
- this.toolName = toolName;
1069
- }
1070
- static isInstance(error) {
1071
- return import_provider10.AISDKError.hasMarker(error, marker8);
1072
- }
1073
- };
1074
- _a8 = symbol8;
1075
-
1076
- // src/error/mcp-client-error.ts
1077
- var import_provider11 = require("@ai-sdk/provider");
1078
- var name9 = "AI_MCPClientError";
1079
- var marker9 = `vercel.ai.error.${name9}`;
1080
- var symbol9 = Symbol.for(marker9);
1081
- var _a9;
1082
- var MCPClientError = class extends import_provider11.AISDKError {
1083
- constructor({
1084
- name: name16 = "MCPClientError",
1085
- message,
1086
- cause
1087
- }) {
1088
- super({ name: name16, message, cause });
1089
- this[_a9] = true;
1090
- }
1091
- static isInstance(error) {
1092
- return import_provider11.AISDKError.hasMarker(error, marker9);
1093
- }
1094
- };
1095
- _a9 = symbol9;
1096
-
1097
- // src/error/no-image-generated-error.ts
1098
- var import_provider12 = require("@ai-sdk/provider");
1099
- var name10 = "AI_NoImageGeneratedError";
1100
- var marker10 = `vercel.ai.error.${name10}`;
1101
- var symbol10 = Symbol.for(marker10);
1102
- var _a10;
1103
- var NoImageGeneratedError = class extends import_provider12.AISDKError {
1104
- constructor({
1105
- message = "No image generated.",
1106
- cause,
1107
- responses
1108
- }) {
1109
- super({ name: name10, message, cause });
1110
- this[_a10] = true;
1111
- this.responses = responses;
1112
- }
1113
- static isInstance(error) {
1114
- return import_provider12.AISDKError.hasMarker(error, marker10);
1115
- }
1116
- };
1117
- _a10 = symbol10;
1118
-
1119
- // src/error/no-object-generated-error.ts
1120
- var import_provider13 = require("@ai-sdk/provider");
1121
- var name11 = "AI_NoObjectGeneratedError";
1122
- var marker11 = `vercel.ai.error.${name11}`;
1123
- var symbol11 = Symbol.for(marker11);
1124
- var _a11;
1125
- var NoObjectGeneratedError = class extends import_provider13.AISDKError {
1126
- constructor({
1127
- message = "No object generated.",
1128
- cause,
1129
- text: text2,
1130
- response,
1131
- usage,
1132
- finishReason
1133
- }) {
1134
- super({ name: name11, message, cause });
1135
- this[_a11] = true;
1136
- this.text = text2;
1137
- this.response = response;
1138
- this.usage = usage;
1139
- this.finishReason = finishReason;
1140
- }
1141
- static isInstance(error) {
1142
- return import_provider13.AISDKError.hasMarker(error, marker11);
1143
- }
1144
- };
1145
- _a11 = symbol11;
1146
-
1147
- // src/error/no-such-tool-error.ts
1148
- var import_provider14 = require("@ai-sdk/provider");
1149
- var name12 = "AI_NoSuchToolError";
1150
- var marker12 = `vercel.ai.error.${name12}`;
1151
- var symbol12 = Symbol.for(marker12);
1152
- var _a12;
1153
- var NoSuchToolError = class extends import_provider14.AISDKError {
1154
- constructor({
1155
- toolName,
1156
- availableTools = void 0,
1157
- message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
1158
- }) {
1159
- super({ name: name12, message });
1160
- this[_a12] = true;
1161
- this.toolName = toolName;
1162
- this.availableTools = availableTools;
1163
- }
1164
- static isInstance(error) {
1165
- return import_provider14.AISDKError.hasMarker(error, marker12);
1166
- }
1167
- };
1168
- _a12 = symbol12;
1169
-
1170
- // src/error/tool-call-repair-error.ts
1171
- var import_provider15 = require("@ai-sdk/provider");
1172
- var name13 = "AI_ToolCallRepairError";
1173
- var marker13 = `vercel.ai.error.${name13}`;
1174
- var symbol13 = Symbol.for(marker13);
1175
- var _a13;
1176
- var ToolCallRepairError = class extends import_provider15.AISDKError {
1177
- constructor({
1178
- cause,
1179
- originalError,
1180
- message = `Error repairing tool call: ${(0, import_provider15.getErrorMessage)(cause)}`
1181
- }) {
1182
- super({ name: name13, message, cause });
1183
- this[_a13] = true;
1184
- this.originalError = originalError;
1185
- }
1186
- static isInstance(error) {
1187
- return import_provider15.AISDKError.hasMarker(error, marker13);
1188
- }
1189
- };
1190
- _a13 = symbol13;
1191
-
1192
- // src/error/unsupported-model-version-error.ts
1193
- var import_provider16 = require("@ai-sdk/provider");
1194
- var UnsupportedModelVersionError = class extends import_provider16.AISDKError {
1195
- constructor(options) {
1196
- super({
1197
- name: "AI_UnsupportedModelVersionError",
1198
- message: `Unsupported model version ${options.version} for provider "${options.provider}" and model "${options.modelId}". AI SDK 5 only supports models that implement specification version "v2".`
1199
- });
1200
- this.version = options.version;
1201
- this.provider = options.provider;
1202
- this.modelId = options.modelId;
1203
- }
1204
- };
1205
-
1206
- // src/prompt/message-conversion-error.ts
1207
- var import_provider17 = require("@ai-sdk/provider");
1208
- var name14 = "AI_MessageConversionError";
1209
- var marker14 = `vercel.ai.error.${name14}`;
1210
- var symbol14 = Symbol.for(marker14);
1211
- var _a14;
1212
- var MessageConversionError = class extends import_provider17.AISDKError {
1213
- constructor({
1214
- originalMessage,
1215
- message
1216
- }) {
1217
- super({ name: name14, message });
1218
- this[_a14] = true;
1219
- this.originalMessage = originalMessage;
1220
- }
1221
- static isInstance(error) {
1222
- return import_provider17.AISDKError.hasMarker(error, marker14);
1041
+ if (frequencyPenalty != null) {
1042
+ if (typeof frequencyPenalty !== "number") {
1043
+ throw new InvalidArgumentError({
1044
+ parameter: "frequencyPenalty",
1045
+ value: frequencyPenalty,
1046
+ message: "frequencyPenalty must be a number"
1047
+ });
1048
+ }
1223
1049
  }
1224
- };
1225
- _a14 = symbol14;
1226
-
1227
- // src/prompt/resolve-language-model.ts
1228
- function resolveLanguageModel(model) {
1229
- if (typeof model !== "string") {
1230
- if (model.specificationVersion !== "v2") {
1231
- throw new UnsupportedModelVersionError({
1232
- version: model.specificationVersion,
1233
- provider: model.provider,
1234
- modelId: model.modelId
1050
+ if (seed != null) {
1051
+ if (!Number.isInteger(seed)) {
1052
+ throw new InvalidArgumentError({
1053
+ parameter: "seed",
1054
+ value: seed,
1055
+ message: "seed must be an integer"
1235
1056
  });
1236
1057
  }
1237
- return model;
1238
1058
  }
1239
- const globalProvider = globalThis.AI_SDK_DEFAULT_PROVIDER;
1240
- return (globalProvider != null ? globalProvider : import_gateway.gateway).languageModel(model);
1059
+ return {
1060
+ maxOutputTokens,
1061
+ temperature,
1062
+ topP,
1063
+ topK,
1064
+ presencePenalty,
1065
+ frequencyPenalty,
1066
+ stopSequences,
1067
+ seed
1068
+ };
1069
+ }
1070
+
1071
+ // src/prompt/prepare-tools-and-tool-choice.ts
1072
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
1073
+
1074
+ // src/util/is-non-empty-object.ts
1075
+ function isNonEmptyObject(object2) {
1076
+ return object2 != null && Object.keys(object2).length > 0;
1077
+ }
1078
+
1079
+ // src/prompt/prepare-tools-and-tool-choice.ts
1080
+ function prepareToolsAndToolChoice({
1081
+ tools,
1082
+ toolChoice,
1083
+ activeTools
1084
+ }) {
1085
+ if (!isNonEmptyObject(tools)) {
1086
+ return {
1087
+ tools: void 0,
1088
+ toolChoice: void 0
1089
+ };
1090
+ }
1091
+ const filteredTools = activeTools != null ? Object.entries(tools).filter(
1092
+ ([name16]) => activeTools.includes(name16)
1093
+ ) : Object.entries(tools);
1094
+ return {
1095
+ tools: filteredTools.map(([name16, tool3]) => {
1096
+ const toolType = tool3.type;
1097
+ switch (toolType) {
1098
+ case void 0:
1099
+ case "dynamic":
1100
+ case "function":
1101
+ return {
1102
+ type: "function",
1103
+ name: name16,
1104
+ description: tool3.description,
1105
+ inputSchema: (0, import_provider_utils4.asSchema)(tool3.inputSchema).jsonSchema,
1106
+ providerOptions: tool3.providerOptions
1107
+ };
1108
+ case "provider-defined":
1109
+ return {
1110
+ type: "provider-defined",
1111
+ name: name16,
1112
+ id: tool3.id,
1113
+ args: tool3.args
1114
+ };
1115
+ default: {
1116
+ const exhaustiveCheck = toolType;
1117
+ throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);
1118
+ }
1119
+ }
1120
+ }),
1121
+ toolChoice: toolChoice == null ? { type: "auto" } : typeof toolChoice === "string" ? { type: toolChoice } : { type: "tool", toolName: toolChoice.toolName }
1122
+ };
1241
1123
  }
1242
1124
 
1243
1125
  // src/prompt/standardize-prompt.ts
1244
- var import_provider19 = require("@ai-sdk/provider");
1245
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
1126
+ var import_provider18 = require("@ai-sdk/provider");
1127
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
1246
1128
  var import_v46 = require("zod/v4");
1247
1129
 
1248
1130
  // src/prompt/message.ts
@@ -1397,19 +1279,19 @@ var coreMessageSchema = modelMessageSchema;
1397
1279
  // src/prompt/standardize-prompt.ts
1398
1280
  async function standardizePrompt(prompt) {
1399
1281
  if (prompt.prompt == null && prompt.messages == null) {
1400
- throw new import_provider19.InvalidPromptError({
1282
+ throw new import_provider18.InvalidPromptError({
1401
1283
  prompt,
1402
1284
  message: "prompt or messages must be defined"
1403
1285
  });
1404
1286
  }
1405
1287
  if (prompt.prompt != null && prompt.messages != null) {
1406
- throw new import_provider19.InvalidPromptError({
1288
+ throw new import_provider18.InvalidPromptError({
1407
1289
  prompt,
1408
1290
  message: "prompt and messages cannot be defined at the same time"
1409
1291
  });
1410
1292
  }
1411
1293
  if (prompt.system != null && typeof prompt.system !== "string") {
1412
- throw new import_provider19.InvalidPromptError({
1294
+ throw new import_provider18.InvalidPromptError({
1413
1295
  prompt,
1414
1296
  message: "system must be a string"
1415
1297
  });
@@ -1422,23 +1304,23 @@ async function standardizePrompt(prompt) {
1422
1304
  } else if (prompt.messages != null) {
1423
1305
  messages = prompt.messages;
1424
1306
  } else {
1425
- throw new import_provider19.InvalidPromptError({
1307
+ throw new import_provider18.InvalidPromptError({
1426
1308
  prompt,
1427
1309
  message: "prompt or messages must be defined"
1428
1310
  });
1429
1311
  }
1430
1312
  if (messages.length === 0) {
1431
- throw new import_provider19.InvalidPromptError({
1313
+ throw new import_provider18.InvalidPromptError({
1432
1314
  prompt,
1433
1315
  message: "messages must not be empty"
1434
1316
  });
1435
1317
  }
1436
- const validationResult = await (0, import_provider_utils6.safeValidateTypes)({
1318
+ const validationResult = await (0, import_provider_utils5.safeValidateTypes)({
1437
1319
  value: messages,
1438
1320
  schema: import_v46.z.array(modelMessageSchema)
1439
1321
  });
1440
1322
  if (!validationResult.success) {
1441
- throw new import_provider19.InvalidPromptError({
1323
+ throw new import_provider18.InvalidPromptError({
1442
1324
  prompt,
1443
1325
  message: "The messages must be a ModelMessage[]. If you have passed a UIMessage[], you can use convertToModelMessages to convert them.",
1444
1326
  cause: validationResult.error
@@ -1452,10 +1334,10 @@ async function standardizePrompt(prompt) {
1452
1334
 
1453
1335
  // src/prompt/wrap-gateway-error.ts
1454
1336
  var import_gateway2 = require("@ai-sdk/gateway");
1455
- var import_provider20 = require("@ai-sdk/provider");
1337
+ var import_provider19 = require("@ai-sdk/provider");
1456
1338
  function wrapGatewayError(error) {
1457
1339
  if (import_gateway2.GatewayAuthenticationError.isInstance(error) || import_gateway2.GatewayModelNotFoundError.isInstance(error)) {
1458
- return new import_provider20.AISDKError({
1340
+ return new import_provider19.AISDKError({
1459
1341
  name: "GatewayError",
1460
1342
  message: "Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @ai-sdk/openai, or register a different global default provider.",
1461
1343
  cause: error
@@ -1612,88 +1494,222 @@ function recordSpan({
1612
1494
  }
1613
1495
  throw error;
1614
1496
  }
1615
- });
1616
- }
1617
- function recordErrorOnSpan(span, error) {
1618
- if (error instanceof Error) {
1619
- span.recordException({
1620
- name: error.name,
1621
- message: error.message,
1622
- stack: error.stack
1623
- });
1624
- span.setStatus({
1625
- code: import_api2.SpanStatusCode.ERROR,
1626
- message: error.message
1497
+ });
1498
+ }
1499
+ function recordErrorOnSpan(span, error) {
1500
+ if (error instanceof Error) {
1501
+ span.recordException({
1502
+ name: error.name,
1503
+ message: error.message,
1504
+ stack: error.stack
1505
+ });
1506
+ span.setStatus({
1507
+ code: import_api2.SpanStatusCode.ERROR,
1508
+ message: error.message
1509
+ });
1510
+ } else {
1511
+ span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
1512
+ }
1513
+ }
1514
+
1515
+ // src/telemetry/select-telemetry-attributes.ts
1516
+ function selectTelemetryAttributes({
1517
+ telemetry,
1518
+ attributes
1519
+ }) {
1520
+ if ((telemetry == null ? void 0 : telemetry.isEnabled) !== true) {
1521
+ return {};
1522
+ }
1523
+ return Object.entries(attributes).reduce((attributes2, [key, value]) => {
1524
+ if (value == null) {
1525
+ return attributes2;
1526
+ }
1527
+ if (typeof value === "object" && "input" in value && typeof value.input === "function") {
1528
+ if ((telemetry == null ? void 0 : telemetry.recordInputs) === false) {
1529
+ return attributes2;
1530
+ }
1531
+ const result = value.input();
1532
+ return result == null ? attributes2 : { ...attributes2, [key]: result };
1533
+ }
1534
+ if (typeof value === "object" && "output" in value && typeof value.output === "function") {
1535
+ if ((telemetry == null ? void 0 : telemetry.recordOutputs) === false) {
1536
+ return attributes2;
1537
+ }
1538
+ const result = value.output();
1539
+ return result == null ? attributes2 : { ...attributes2, [key]: result };
1540
+ }
1541
+ return { ...attributes2, [key]: value };
1542
+ }, {});
1543
+ }
1544
+
1545
+ // src/telemetry/stringify-for-telemetry.ts
1546
+ function stringifyForTelemetry(prompt) {
1547
+ return JSON.stringify(
1548
+ prompt.map((message) => ({
1549
+ ...message,
1550
+ content: typeof message.content === "string" ? message.content : message.content.map(
1551
+ (part) => part.type === "file" ? {
1552
+ ...part,
1553
+ data: part.data instanceof Uint8Array ? convertDataContentToBase64String(part.data) : part.data
1554
+ } : part
1555
+ )
1556
+ }))
1557
+ );
1558
+ }
1559
+
1560
+ // src/types/usage.ts
1561
+ function addLanguageModelUsage(usage1, usage2) {
1562
+ return {
1563
+ inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
1564
+ outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
1565
+ totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
1566
+ reasoningTokens: addTokenCounts(
1567
+ usage1.reasoningTokens,
1568
+ usage2.reasoningTokens
1569
+ ),
1570
+ cachedInputTokens: addTokenCounts(
1571
+ usage1.cachedInputTokens,
1572
+ usage2.cachedInputTokens
1573
+ )
1574
+ };
1575
+ }
1576
+ function addTokenCounts(tokenCount1, tokenCount2) {
1577
+ return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);
1578
+ }
1579
+
1580
+ // src/util/as-array.ts
1581
+ function asArray(value) {
1582
+ return value === void 0 ? [] : Array.isArray(value) ? value : [value];
1583
+ }
1584
+
1585
+ // src/util/retry-with-exponential-backoff.ts
1586
+ var import_provider20 = require("@ai-sdk/provider");
1587
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
1588
+ function getRetryDelayInMs({
1589
+ error,
1590
+ exponentialBackoffDelay
1591
+ }) {
1592
+ const headers = error.responseHeaders;
1593
+ if (!headers)
1594
+ return exponentialBackoffDelay;
1595
+ let ms;
1596
+ const retryAfterMs = headers["retry-after-ms"];
1597
+ if (retryAfterMs) {
1598
+ const timeoutMs = parseFloat(retryAfterMs);
1599
+ if (!Number.isNaN(timeoutMs)) {
1600
+ ms = timeoutMs;
1601
+ }
1602
+ }
1603
+ const retryAfter = headers["retry-after"];
1604
+ if (retryAfter && ms === void 0) {
1605
+ const timeoutSeconds = parseFloat(retryAfter);
1606
+ if (!Number.isNaN(timeoutSeconds)) {
1607
+ ms = timeoutSeconds * 1e3;
1608
+ } else {
1609
+ ms = Date.parse(retryAfter) - Date.now();
1610
+ }
1611
+ }
1612
+ if (ms != null && !Number.isNaN(ms) && 0 <= ms && (ms < 60 * 1e3 || ms < exponentialBackoffDelay)) {
1613
+ return ms;
1614
+ }
1615
+ return exponentialBackoffDelay;
1616
+ }
1617
+ var retryWithExponentialBackoffRespectingRetryHeaders = ({
1618
+ maxRetries = 2,
1619
+ initialDelayInMs = 2e3,
1620
+ backoffFactor = 2,
1621
+ abortSignal
1622
+ } = {}) => async (f) => _retryWithExponentialBackoff(f, {
1623
+ maxRetries,
1624
+ delayInMs: initialDelayInMs,
1625
+ backoffFactor,
1626
+ abortSignal
1627
+ });
1628
+ async function _retryWithExponentialBackoff(f, {
1629
+ maxRetries,
1630
+ delayInMs,
1631
+ backoffFactor,
1632
+ abortSignal
1633
+ }, errors = []) {
1634
+ try {
1635
+ return await f();
1636
+ } catch (error) {
1637
+ if ((0, import_provider_utils6.isAbortError)(error)) {
1638
+ throw error;
1639
+ }
1640
+ if (maxRetries === 0) {
1641
+ throw error;
1642
+ }
1643
+ const errorMessage = (0, import_provider_utils6.getErrorMessage)(error);
1644
+ const newErrors = [...errors, error];
1645
+ const tryNumber = newErrors.length;
1646
+ if (tryNumber > maxRetries) {
1647
+ throw new RetryError({
1648
+ message: `Failed after ${tryNumber} attempts. Last error: ${errorMessage}`,
1649
+ reason: "maxRetriesExceeded",
1650
+ errors: newErrors
1651
+ });
1652
+ }
1653
+ if (error instanceof Error && import_provider20.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
1654
+ await (0, import_provider_utils6.delay)(
1655
+ getRetryDelayInMs({
1656
+ error,
1657
+ exponentialBackoffDelay: delayInMs
1658
+ }),
1659
+ { abortSignal }
1660
+ );
1661
+ return _retryWithExponentialBackoff(
1662
+ f,
1663
+ {
1664
+ maxRetries,
1665
+ delayInMs: backoffFactor * delayInMs,
1666
+ backoffFactor,
1667
+ abortSignal
1668
+ },
1669
+ newErrors
1670
+ );
1671
+ }
1672
+ if (tryNumber === 1) {
1673
+ throw error;
1674
+ }
1675
+ throw new RetryError({
1676
+ message: `Failed after ${tryNumber} attempts with non-retryable error: '${errorMessage}'`,
1677
+ reason: "errorNotRetryable",
1678
+ errors: newErrors
1627
1679
  });
1628
- } else {
1629
- span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
1630
1680
  }
1631
1681
  }
1632
1682
 
1633
- // src/telemetry/select-telemetry-attributes.ts
1634
- function selectTelemetryAttributes({
1635
- telemetry,
1636
- attributes
1683
+ // src/util/prepare-retries.ts
1684
+ function prepareRetries({
1685
+ maxRetries,
1686
+ abortSignal
1637
1687
  }) {
1638
- if ((telemetry == null ? void 0 : telemetry.isEnabled) !== true) {
1639
- return {};
1640
- }
1641
- return Object.entries(attributes).reduce((attributes2, [key, value]) => {
1642
- if (value == null) {
1643
- return attributes2;
1644
- }
1645
- if (typeof value === "object" && "input" in value && typeof value.input === "function") {
1646
- if ((telemetry == null ? void 0 : telemetry.recordInputs) === false) {
1647
- return attributes2;
1648
- }
1649
- const result = value.input();
1650
- return result == null ? attributes2 : { ...attributes2, [key]: result };
1688
+ if (maxRetries != null) {
1689
+ if (!Number.isInteger(maxRetries)) {
1690
+ throw new InvalidArgumentError({
1691
+ parameter: "maxRetries",
1692
+ value: maxRetries,
1693
+ message: "maxRetries must be an integer"
1694
+ });
1651
1695
  }
1652
- if (typeof value === "object" && "output" in value && typeof value.output === "function") {
1653
- if ((telemetry == null ? void 0 : telemetry.recordOutputs) === false) {
1654
- return attributes2;
1655
- }
1656
- const result = value.output();
1657
- return result == null ? attributes2 : { ...attributes2, [key]: result };
1696
+ if (maxRetries < 0) {
1697
+ throw new InvalidArgumentError({
1698
+ parameter: "maxRetries",
1699
+ value: maxRetries,
1700
+ message: "maxRetries must be >= 0"
1701
+ });
1658
1702
  }
1659
- return { ...attributes2, [key]: value };
1660
- }, {});
1661
- }
1662
-
1663
- // src/telemetry/stringify-for-telemetry.ts
1664
- function stringifyForTelemetry(prompt) {
1665
- return JSON.stringify(
1666
- prompt.map((message) => ({
1667
- ...message,
1668
- content: typeof message.content === "string" ? message.content : message.content.map(
1669
- (part) => part.type === "file" ? {
1670
- ...part,
1671
- data: part.data instanceof Uint8Array ? convertDataContentToBase64String(part.data) : part.data
1672
- } : part
1673
- )
1674
- }))
1675
- );
1676
- }
1677
-
1678
- // src/types/usage.ts
1679
- function addLanguageModelUsage(usage1, usage2) {
1703
+ }
1704
+ const maxRetriesResult = maxRetries != null ? maxRetries : 2;
1680
1705
  return {
1681
- inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
1682
- outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
1683
- totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
1684
- reasoningTokens: addTokenCounts(
1685
- usage1.reasoningTokens,
1686
- usage2.reasoningTokens
1687
- ),
1688
- cachedInputTokens: addTokenCounts(
1689
- usage1.cachedInputTokens,
1690
- usage2.cachedInputTokens
1691
- )
1706
+ maxRetries: maxRetriesResult,
1707
+ retry: retryWithExponentialBackoffRespectingRetryHeaders({
1708
+ maxRetries: maxRetriesResult,
1709
+ abortSignal
1710
+ })
1692
1711
  };
1693
1712
  }
1694
- function addTokenCounts(tokenCount1, tokenCount2) {
1695
- return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);
1696
- }
1697
1713
 
1698
1714
  // src/generate-text/extract-content-text.ts
1699
1715
  function extractContentText(content) {
@@ -3888,12 +3904,6 @@ var DelayedPromise = class {
3888
3904
  }
3889
3905
  };
3890
3906
 
3891
- // src/util/now.ts
3892
- function now() {
3893
- var _a16, _b;
3894
- return (_b = (_a16 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a16.now()) != null ? _b : Date.now();
3895
- }
3896
-
3897
3907
  // src/util/filter-stream-errors.ts
3898
3908
  function filterStreamErrors(readable, onError) {
3899
3909
  return new ReadableStream({
@@ -3918,6 +3928,12 @@ function filterStreamErrors(readable, onError) {
3918
3928
  });
3919
3929
  }
3920
3930
 
3931
+ // src/util/now.ts
3932
+ function now() {
3933
+ var _a16, _b;
3934
+ return (_b = (_a16 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a16.now()) != null ? _b : Date.now();
3935
+ }
3936
+
3921
3937
  // src/generate-text/run-tools-transformation.ts
3922
3938
  var import_provider_utils12 = require("@ai-sdk/provider-utils");
3923
3939
  function runToolsTransformation({
@@ -5410,7 +5426,7 @@ var Agent = class {
5410
5426
 
5411
5427
  // src/embed/embed.ts
5412
5428
  async function embed({
5413
- model,
5429
+ model: modelArg,
5414
5430
  value,
5415
5431
  providerOptions,
5416
5432
  maxRetries: maxRetriesArg,
@@ -5418,13 +5434,7 @@ async function embed({
5418
5434
  headers,
5419
5435
  experimental_telemetry: telemetry
5420
5436
  }) {
5421
- if (model.specificationVersion !== "v2") {
5422
- throw new UnsupportedModelVersionError({
5423
- version: model.specificationVersion,
5424
- provider: model.provider,
5425
- modelId: model.modelId
5426
- });
5427
- }
5437
+ const model = resolveEmbeddingModel(modelArg);
5428
5438
  const { maxRetries, retry } = prepareRetries({
5429
5439
  maxRetries: maxRetriesArg,
5430
5440
  abortSignal
@@ -5542,7 +5552,7 @@ function splitArray(array, chunkSize) {
5542
5552
 
5543
5553
  // src/embed/embed-many.ts
5544
5554
  async function embedMany({
5545
- model,
5555
+ model: modelArg,
5546
5556
  values,
5547
5557
  maxParallelCalls = Infinity,
5548
5558
  maxRetries: maxRetriesArg,
@@ -5551,13 +5561,7 @@ async function embedMany({
5551
5561
  providerOptions,
5552
5562
  experimental_telemetry: telemetry
5553
5563
  }) {
5554
- if (model.specificationVersion !== "v2") {
5555
- throw new UnsupportedModelVersionError({
5556
- version: model.specificationVersion,
5557
- provider: model.provider,
5558
- modelId: model.modelId
5559
- });
5560
- }
5564
+ const model = resolveEmbeddingModel(modelArg);
5561
5565
  const { maxRetries, retry } = prepareRetries({
5562
5566
  maxRetries: maxRetriesArg,
5563
5567
  abortSignal
@@ -6149,6 +6153,63 @@ function getOutputStrategy({
6149
6153
  }
6150
6154
  }
6151
6155
 
6156
+ // src/generate-object/parse-and-validate-object-result.ts
6157
+ var import_provider24 = require("@ai-sdk/provider");
6158
+ var import_provider_utils15 = require("@ai-sdk/provider-utils");
6159
+ async function parseAndValidateObjectResult(result, outputStrategy, context) {
6160
+ const parseResult = await (0, import_provider_utils15.safeParseJSON)({ text: result });
6161
+ if (!parseResult.success) {
6162
+ throw new NoObjectGeneratedError({
6163
+ message: "No object generated: could not parse the response.",
6164
+ cause: parseResult.error,
6165
+ text: result,
6166
+ response: context.response,
6167
+ usage: context.usage,
6168
+ finishReason: context.finishReason
6169
+ });
6170
+ }
6171
+ const validationResult = await outputStrategy.validateFinalResult(
6172
+ parseResult.value,
6173
+ {
6174
+ text: result,
6175
+ response: context.response,
6176
+ usage: context.usage
6177
+ }
6178
+ );
6179
+ if (!validationResult.success) {
6180
+ throw new NoObjectGeneratedError({
6181
+ message: "No object generated: response did not match schema.",
6182
+ cause: validationResult.error,
6183
+ text: result,
6184
+ response: context.response,
6185
+ usage: context.usage,
6186
+ finishReason: context.finishReason
6187
+ });
6188
+ }
6189
+ return validationResult.value;
6190
+ }
6191
+ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, repairText, context) {
6192
+ try {
6193
+ return await parseAndValidateObjectResult(result, outputStrategy, context);
6194
+ } catch (error) {
6195
+ if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider24.JSONParseError.isInstance(error.cause) || import_provider24.TypeValidationError.isInstance(error.cause))) {
6196
+ const repairedText = await repairText({
6197
+ text: result,
6198
+ error: error.cause
6199
+ });
6200
+ if (repairedText === null) {
6201
+ throw error;
6202
+ }
6203
+ return await parseAndValidateObjectResult(
6204
+ repairedText,
6205
+ outputStrategy,
6206
+ context
6207
+ );
6208
+ }
6209
+ throw error;
6210
+ }
6211
+ }
6212
+
6152
6213
  // src/generate-object/validate-object-generation-input.ts
6153
6214
  function validateObjectGenerationInput({
6154
6215
  output,
@@ -6267,63 +6328,6 @@ function validateObjectGenerationInput({
6267
6328
  }
6268
6329
  }
6269
6330
 
6270
- // src/generate-object/parse-and-validate-object-result.ts
6271
- var import_provider24 = require("@ai-sdk/provider");
6272
- var import_provider_utils15 = require("@ai-sdk/provider-utils");
6273
- async function parseAndValidateObjectResult(result, outputStrategy, context) {
6274
- const parseResult = await (0, import_provider_utils15.safeParseJSON)({ text: result });
6275
- if (!parseResult.success) {
6276
- throw new NoObjectGeneratedError({
6277
- message: "No object generated: could not parse the response.",
6278
- cause: parseResult.error,
6279
- text: result,
6280
- response: context.response,
6281
- usage: context.usage,
6282
- finishReason: context.finishReason
6283
- });
6284
- }
6285
- const validationResult = await outputStrategy.validateFinalResult(
6286
- parseResult.value,
6287
- {
6288
- text: result,
6289
- response: context.response,
6290
- usage: context.usage
6291
- }
6292
- );
6293
- if (!validationResult.success) {
6294
- throw new NoObjectGeneratedError({
6295
- message: "No object generated: response did not match schema.",
6296
- cause: validationResult.error,
6297
- text: result,
6298
- response: context.response,
6299
- usage: context.usage,
6300
- finishReason: context.finishReason
6301
- });
6302
- }
6303
- return validationResult.value;
6304
- }
6305
- async function parseAndValidateObjectResultWithRepair(result, outputStrategy, repairText, context) {
6306
- try {
6307
- return await parseAndValidateObjectResult(result, outputStrategy, context);
6308
- } catch (error) {
6309
- if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider24.JSONParseError.isInstance(error.cause) || import_provider24.TypeValidationError.isInstance(error.cause))) {
6310
- const repairedText = await repairText({
6311
- text: result,
6312
- error: error.cause
6313
- });
6314
- if (repairedText === null) {
6315
- throw error;
6316
- }
6317
- return await parseAndValidateObjectResult(
6318
- repairedText,
6319
- outputStrategy,
6320
- context
6321
- );
6322
- }
6323
- throw error;
6324
- }
6325
- }
6326
-
6327
6331
  // src/generate-object/generate-object.ts
6328
6332
  var originalGenerateId3 = (0, import_provider_utils16.createIdGenerator)({ prefix: "aiobj", size: 24 });
6329
6333
  async function generateObject(options) {