ai 5.0.5 → 5.0.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/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,179 +192,354 @@ 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
293
- });
234
+ static isInstance(error) {
235
+ return import_provider5.AISDKError.hasMarker(error, marker5);
294
236
  }
295
- }
237
+ };
238
+ _a5 = symbol5;
296
239
 
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"
308
- });
309
- }
310
- if (maxRetries < 0) {
311
- throw new InvalidArgumentError({
312
- parameter: "maxRetries",
313
- value: maxRetries,
314
- message: "maxRetries must be >= 0"
315
- });
316
- }
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;
317
255
  }
318
- const maxRetriesResult = maxRetries != null ? maxRetries : 2;
319
- return {
320
- maxRetries: maxRetriesResult,
321
- retry: retryWithExponentialBackoffRespectingRetryHeaders({
322
- maxRetries: maxRetriesResult,
323
- abortSignal
324
- })
325
- };
326
- }
256
+ static isInstance(error) {
257
+ return import_provider6.AISDKError.hasMarker(error, marker6);
258
+ }
259
+ };
260
+ _a6 = symbol6;
327
261
 
328
- // src/prompt/convert-to-language-model-prompt.ts
329
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
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;
330
289
 
331
- // src/util/detect-media-type.ts
332
- var import_provider_utils2 = require("@ai-sdk/provider-utils");
333
- var imageMediaTypeSignatures = [
334
- {
335
- mediaType: "image/gif",
336
- bytesPrefix: [71, 73, 70],
337
- base64Prefix: "R0lG"
338
- },
339
- {
340
- mediaType: "image/png",
341
- bytesPrefix: [137, 80, 78, 71],
342
- base64Prefix: "iVBORw"
343
- },
344
- {
345
- mediaType: "image/jpeg",
346
- bytesPrefix: [255, 216],
347
- base64Prefix: "/9j/"
348
- },
349
- {
350
- mediaType: "image/webp",
351
- bytesPrefix: [82, 73, 70, 70],
352
- base64Prefix: "UklGRg"
353
- },
354
- {
355
- mediaType: "image/bmp",
356
- bytesPrefix: [66, 77],
357
- base64Prefix: "Qk"
358
- },
359
- {
360
- mediaType: "image/tiff",
361
- bytesPrefix: [73, 73, 42, 0],
362
- base64Prefix: "SUkqAA"
363
- },
364
- {
365
- mediaType: "image/tiff",
366
- bytesPrefix: [77, 77, 0, 42],
367
- base64Prefix: "TU0AKg"
368
- },
369
- {
370
- mediaType: "image/avif",
371
- bytesPrefix: [
372
- 0,
373
- 0,
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".`
342
+ });
343
+ this.version = options.version;
344
+ this.provider = options.provider;
345
+ this.modelId = options.modelId;
346
+ }
347
+ };
348
+
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
471
+ });
472
+ }
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
484
+ });
485
+ }
486
+ return model;
487
+ }
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;
495
+ }
496
+
497
+ // src/prompt/convert-to-language-model-prompt.ts
498
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
499
+
500
+ // src/util/detect-media-type.ts
501
+ var import_provider_utils = require("@ai-sdk/provider-utils");
502
+ var imageMediaTypeSignatures = [
503
+ {
504
+ mediaType: "image/gif",
505
+ bytesPrefix: [71, 73, 70],
506
+ base64Prefix: "R0lG"
507
+ },
508
+ {
509
+ mediaType: "image/png",
510
+ bytesPrefix: [137, 80, 78, 71],
511
+ base64Prefix: "iVBORw"
512
+ },
513
+ {
514
+ mediaType: "image/jpeg",
515
+ bytesPrefix: [255, 216],
516
+ base64Prefix: "/9j/"
517
+ },
518
+ {
519
+ mediaType: "image/webp",
520
+ bytesPrefix: [82, 73, 70, 70],
521
+ base64Prefix: "UklGRg"
522
+ },
523
+ {
524
+ mediaType: "image/bmp",
525
+ bytesPrefix: [66, 77],
526
+ base64Prefix: "Qk"
527
+ },
528
+ {
529
+ mediaType: "image/tiff",
530
+ bytesPrefix: [73, 73, 42, 0],
531
+ base64Prefix: "SUkqAA"
532
+ },
533
+ {
534
+ mediaType: "image/tiff",
535
+ bytesPrefix: [77, 77, 0, 42],
536
+ base64Prefix: "TU0AKg"
537
+ },
538
+ {
539
+ mediaType: "image/avif",
540
+ bytesPrefix: [
541
+ 0,
542
+ 0,
374
543
  0,
375
544
  32,
376
545
  102,
@@ -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.",
@@ -631,27 +752,6 @@ function convertDataContentToUint8Array(content) {
631
752
  throw new InvalidDataContentError({ content });
632
753
  }
633
754
 
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);
651
- }
652
- };
653
- _a6 = symbol6;
654
-
655
755
  // src/prompt/convert-to-language-model-prompt.ts
656
756
  async function convertToLanguageModelPrompt({
657
757
  prompt,
@@ -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
@@ -911,338 +1011,120 @@ function prepareCallSettings({
911
1011
  });
912
1012
  }
913
1013
  }
914
- if (topP != null) {
915
- if (typeof topP !== "number") {
916
- throw new InvalidArgumentError({
917
- parameter: "topP",
918
- value: topP,
919
- message: "topP must be a number"
920
- });
921
- }
922
- }
923
- if (topK != null) {
924
- if (typeof topK !== "number") {
925
- throw new InvalidArgumentError({
926
- parameter: "topK",
927
- value: topK,
928
- message: "topK must be a number"
929
- });
930
- }
931
- }
932
- if (presencePenalty != null) {
933
- if (typeof presencePenalty !== "number") {
934
- throw new InvalidArgumentError({
935
- parameter: "presencePenalty",
936
- value: presencePenalty,
937
- message: "presencePenalty must be a number"
938
- });
939
- }
940
- }
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;
1014
+ if (topP != null) {
1015
+ if (typeof topP !== "number") {
1016
+ throw new InvalidArgumentError({
1017
+ parameter: "topP",
1018
+ value: topP,
1019
+ message: "topP must be a number"
1020
+ });
1021
+ }
1220
1022
  }
1221
- static isInstance(error) {
1222
- return import_provider17.AISDKError.hasMarker(error, marker14);
1023
+ if (topK != null) {
1024
+ if (typeof topK !== "number") {
1025
+ throw new InvalidArgumentError({
1026
+ parameter: "topK",
1027
+ value: topK,
1028
+ message: "topK must be a number"
1029
+ });
1030
+ }
1223
1031
  }
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
1032
+ if (presencePenalty != null) {
1033
+ if (typeof presencePenalty !== "number") {
1034
+ throw new InvalidArgumentError({
1035
+ parameter: "presencePenalty",
1036
+ value: presencePenalty,
1037
+ message: "presencePenalty must be a number"
1235
1038
  });
1236
1039
  }
1237
- return model;
1238
1040
  }
1239
- const globalProvider = globalThis.AI_SDK_DEFAULT_PROVIDER;
1240
- return (globalProvider != null ? globalProvider : import_gateway.gateway).languageModel(model);
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
+ }
1049
+ }
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"
1056
+ });
1057
+ }
1058
+ }
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
@@ -1691,9 +1573,143 @@ function addLanguageModelUsage(usage1, usage2) {
1691
1573
  )
1692
1574
  };
1693
1575
  }
1694
- function addTokenCounts(tokenCount1, tokenCount2) {
1695
- return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);
1696
- }
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
1679
+ });
1680
+ }
1681
+ }
1682
+
1683
+ // src/util/prepare-retries.ts
1684
+ function prepareRetries({
1685
+ maxRetries,
1686
+ abortSignal
1687
+ }) {
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
+ });
1695
+ }
1696
+ if (maxRetries < 0) {
1697
+ throw new InvalidArgumentError({
1698
+ parameter: "maxRetries",
1699
+ value: maxRetries,
1700
+ message: "maxRetries must be >= 0"
1701
+ });
1702
+ }
1703
+ }
1704
+ const maxRetriesResult = maxRetries != null ? maxRetries : 2;
1705
+ return {
1706
+ maxRetries: maxRetriesResult,
1707
+ retry: retryWithExponentialBackoffRespectingRetryHeaders({
1708
+ maxRetries: maxRetriesResult,
1709
+ abortSignal
1710
+ })
1711
+ };
1712
+ }
1697
1713
 
1698
1714
  // src/generate-text/extract-content-text.ts
1699
1715
  function extractContentText(content) {
@@ -1749,38 +1765,50 @@ async function parseToolCall({
1749
1765
  system,
1750
1766
  messages
1751
1767
  }) {
1752
- if (tools == null) {
1753
- throw new NoSuchToolError({ toolName: toolCall.toolName });
1754
- }
1755
1768
  try {
1756
- return await doParseToolCall({ toolCall, tools });
1757
- } catch (error) {
1758
- if (repairToolCall == null || !(NoSuchToolError.isInstance(error) || InvalidToolInputError.isInstance(error))) {
1759
- throw error;
1769
+ if (tools == null) {
1770
+ throw new NoSuchToolError({ toolName: toolCall.toolName });
1760
1771
  }
1761
- let repairedToolCall = null;
1762
1772
  try {
1763
- repairedToolCall = await repairToolCall({
1764
- toolCall,
1765
- tools,
1766
- inputSchema: ({ toolName }) => {
1767
- const { inputSchema } = tools[toolName];
1768
- return (0, import_provider_utils8.asSchema)(inputSchema).jsonSchema;
1769
- },
1770
- system,
1771
- messages,
1772
- error
1773
- });
1774
- } catch (repairError) {
1775
- throw new ToolCallRepairError({
1776
- cause: repairError,
1777
- originalError: error
1778
- });
1779
- }
1780
- if (repairedToolCall == null) {
1781
- throw error;
1773
+ return await doParseToolCall({ toolCall, tools });
1774
+ } catch (error) {
1775
+ if (repairToolCall == null || !(NoSuchToolError.isInstance(error) || InvalidToolInputError.isInstance(error))) {
1776
+ throw error;
1777
+ }
1778
+ let repairedToolCall = null;
1779
+ try {
1780
+ repairedToolCall = await repairToolCall({
1781
+ toolCall,
1782
+ tools,
1783
+ inputSchema: ({ toolName }) => {
1784
+ const { inputSchema } = tools[toolName];
1785
+ return (0, import_provider_utils8.asSchema)(inputSchema).jsonSchema;
1786
+ },
1787
+ system,
1788
+ messages,
1789
+ error
1790
+ });
1791
+ } catch (repairError) {
1792
+ throw new ToolCallRepairError({
1793
+ cause: repairError,
1794
+ originalError: error
1795
+ });
1796
+ }
1797
+ if (repairedToolCall == null) {
1798
+ throw error;
1799
+ }
1800
+ return await doParseToolCall({ toolCall: repairedToolCall, tools });
1782
1801
  }
1783
- return await doParseToolCall({ toolCall: repairedToolCall, tools });
1802
+ } catch (error) {
1803
+ return {
1804
+ type: "tool-call",
1805
+ toolCallId: toolCall.toolCallId,
1806
+ toolName: toolCall.toolName,
1807
+ input: toolCall.input,
1808
+ dynamic: true,
1809
+ invalid: true,
1810
+ error
1811
+ };
1784
1812
  }
1785
1813
  }
1786
1814
  async function doParseToolCall({
@@ -2230,6 +2258,9 @@ async function generateText({
2230
2258
  )
2231
2259
  );
2232
2260
  for (const toolCall of stepToolCalls) {
2261
+ if (toolCall.invalid) {
2262
+ continue;
2263
+ }
2233
2264
  const tool3 = tools[toolCall.toolName];
2234
2265
  if ((tool3 == null ? void 0 : tool3.onInputAvailable) != null) {
2235
2266
  await tool3.onInputAvailable({
@@ -2241,18 +2272,38 @@ async function generateText({
2241
2272
  });
2242
2273
  }
2243
2274
  }
2275
+ const invalidToolCalls = stepToolCalls.filter(
2276
+ (toolCall) => toolCall.invalid && toolCall.dynamic
2277
+ );
2278
+ clientToolOutputs = [];
2279
+ for (const toolCall of invalidToolCalls) {
2280
+ clientToolOutputs.push({
2281
+ type: "tool-error",
2282
+ toolCallId: toolCall.toolCallId,
2283
+ toolName: toolCall.toolName,
2284
+ input: toolCall.input,
2285
+ error: (0, import_provider_utils9.getErrorMessage)(toolCall.error),
2286
+ dynamic: true
2287
+ });
2288
+ }
2244
2289
  clientToolCalls = stepToolCalls.filter(
2245
- (toolCall) => toolCall.providerExecuted !== true
2290
+ (toolCall) => !toolCall.providerExecuted
2246
2291
  );
2247
- clientToolOutputs = tools == null ? [] : await executeTools({
2248
- toolCalls: clientToolCalls,
2249
- tools,
2250
- tracer,
2251
- telemetry,
2252
- messages: stepInputMessages,
2253
- abortSignal,
2254
- experimental_context
2255
- });
2292
+ if (tools != null) {
2293
+ clientToolOutputs.push(
2294
+ ...await executeTools({
2295
+ toolCalls: clientToolCalls.filter(
2296
+ (toolCall) => !toolCall.invalid
2297
+ ),
2298
+ tools,
2299
+ tracer,
2300
+ telemetry,
2301
+ messages: stepInputMessages,
2302
+ abortSignal,
2303
+ experimental_context
2304
+ })
2305
+ );
2306
+ }
2256
2307
  const stepContent = asContent({
2257
2308
  content: currentModelResponse.content,
2258
2309
  toolCalls: stepToolCalls,
@@ -2744,6 +2795,16 @@ var uiMessageChunkSchema = import_v47.z.union([
2744
2795
  providerMetadata: providerMetadataSchema.optional(),
2745
2796
  dynamic: import_v47.z.boolean().optional()
2746
2797
  }),
2798
+ import_v47.z.strictObject({
2799
+ type: import_v47.z.literal("tool-input-error"),
2800
+ toolCallId: import_v47.z.string(),
2801
+ toolName: import_v47.z.string(),
2802
+ input: import_v47.z.unknown(),
2803
+ providerExecuted: import_v47.z.boolean().optional(),
2804
+ providerMetadata: providerMetadataSchema.optional(),
2805
+ dynamic: import_v47.z.boolean().optional(),
2806
+ errorText: import_v47.z.string()
2807
+ }),
2747
2808
  import_v47.z.strictObject({
2748
2809
  type: import_v47.z.literal("tool-output-available"),
2749
2810
  toolCallId: import_v47.z.string(),
@@ -3283,6 +3344,7 @@ function processUIMessageStream({
3283
3344
  anyPart.input = anyOptions.input;
3284
3345
  anyPart.output = anyOptions.output;
3285
3346
  anyPart.errorText = anyOptions.errorText;
3347
+ anyPart.rawInput = anyOptions.rawInput;
3286
3348
  anyPart.providerExecuted = (_a17 = anyOptions.providerExecuted) != null ? _a17 : part.providerExecuted;
3287
3349
  if (anyOptions.providerMetadata != null && part.state === "input-available") {
3288
3350
  part.callProviderMetadata = anyOptions.providerMetadata;
@@ -3294,6 +3356,7 @@ function processUIMessageStream({
3294
3356
  state: options.state,
3295
3357
  input: anyOptions.input,
3296
3358
  output: anyOptions.output,
3359
+ rawInput: anyOptions.rawInput,
3297
3360
  errorText: anyOptions.errorText,
3298
3361
  providerExecuted: anyOptions.providerExecuted,
3299
3362
  ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
@@ -3301,6 +3364,7 @@ function processUIMessageStream({
3301
3364
  }
3302
3365
  }
3303
3366
  function updateDynamicToolPart(options) {
3367
+ var _a17;
3304
3368
  const part = state.message.parts.find(
3305
3369
  (part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
3306
3370
  );
@@ -3312,6 +3376,7 @@ function processUIMessageStream({
3312
3376
  anyPart.input = anyOptions.input;
3313
3377
  anyPart.output = anyOptions.output;
3314
3378
  anyPart.errorText = anyOptions.errorText;
3379
+ anyPart.rawInput = (_a17 = anyOptions.rawInput) != null ? _a17 : anyPart.rawInput;
3315
3380
  if (anyOptions.providerMetadata != null && part.state === "input-available") {
3316
3381
  part.callProviderMetadata = anyOptions.providerMetadata;
3317
3382
  }
@@ -3505,6 +3570,31 @@ function processUIMessageStream({
3505
3570
  }
3506
3571
  break;
3507
3572
  }
3573
+ case "tool-input-error": {
3574
+ if (chunk.dynamic) {
3575
+ updateDynamicToolPart({
3576
+ toolCallId: chunk.toolCallId,
3577
+ toolName: chunk.toolName,
3578
+ state: "output-error",
3579
+ input: chunk.input,
3580
+ errorText: chunk.errorText,
3581
+ providerMetadata: chunk.providerMetadata
3582
+ });
3583
+ } else {
3584
+ updateToolPart({
3585
+ toolCallId: chunk.toolCallId,
3586
+ toolName: chunk.toolName,
3587
+ state: "output-error",
3588
+ input: void 0,
3589
+ rawInput: chunk.input,
3590
+ errorText: chunk.errorText,
3591
+ providerExecuted: chunk.providerExecuted,
3592
+ providerMetadata: chunk.providerMetadata
3593
+ });
3594
+ }
3595
+ write();
3596
+ break;
3597
+ }
3508
3598
  case "tool-output-available": {
3509
3599
  if (chunk.dynamic) {
3510
3600
  const toolInvocation = getDynamicToolInvocation(
@@ -3550,6 +3640,7 @@ function processUIMessageStream({
3550
3640
  toolName: getToolName(toolInvocation),
3551
3641
  state: "output-error",
3552
3642
  input: toolInvocation.input,
3643
+ rawInput: toolInvocation.rawInput,
3553
3644
  errorText: chunk.errorText
3554
3645
  });
3555
3646
  }
@@ -3888,12 +3979,6 @@ var DelayedPromise = class {
3888
3979
  }
3889
3980
  };
3890
3981
 
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
3982
  // src/util/filter-stream-errors.ts
3898
3983
  function filterStreamErrors(readable, onError) {
3899
3984
  return new ReadableStream({
@@ -3918,6 +4003,12 @@ function filterStreamErrors(readable, onError) {
3918
4003
  });
3919
4004
  }
3920
4005
 
4006
+ // src/util/now.ts
4007
+ function now() {
4008
+ var _a16, _b;
4009
+ return (_b = (_a16 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a16.now()) != null ? _b : Date.now();
4010
+ }
4011
+
3921
4012
  // src/generate-text/run-tools-transformation.ts
3922
4013
  var import_provider_utils12 = require("@ai-sdk/provider-utils");
3923
4014
  function runToolsTransformation({
@@ -3999,6 +4090,17 @@ function runToolsTransformation({
3999
4090
  messages
4000
4091
  });
4001
4092
  controller.enqueue(toolCall);
4093
+ if (toolCall.invalid) {
4094
+ toolResultsStreamController.enqueue({
4095
+ type: "tool-error",
4096
+ toolCallId: toolCall.toolCallId,
4097
+ toolName: toolCall.toolName,
4098
+ input: toolCall.input,
4099
+ error: (0, import_provider_utils12.getErrorMessage)(toolCall.error),
4100
+ dynamic: true
4101
+ });
4102
+ break;
4103
+ }
4002
4104
  const tool3 = tools[toolCall.toolName];
4003
4105
  toolInputs.set(toolCall.toolCallId, toolCall.input);
4004
4106
  if (tool3.onInputAvailable != null) {
@@ -4311,6 +4413,7 @@ var DefaultStreamTextResult = class {
4311
4413
  this._steps = new DelayedPromise();
4312
4414
  this.output = output;
4313
4415
  this.includeRawChunks = includeRawChunks;
4416
+ this.tools = tools;
4314
4417
  let stepFinish;
4315
4418
  let recordedContent = [];
4316
4419
  const recordedResponseMessages = [];
@@ -5119,6 +5222,13 @@ var DefaultStreamTextResult = class {
5119
5222
  originalMessages,
5120
5223
  responseMessageId: generateMessageId
5121
5224
  }) : void 0;
5225
+ const toolNamesByCallId = {};
5226
+ const isDynamic = (toolCallId) => {
5227
+ var _a16, _b;
5228
+ const toolName = toolNamesByCallId[toolCallId];
5229
+ const dynamic = ((_b = (_a16 = this.tools) == null ? void 0 : _a16[toolName]) == null ? void 0 : _b.type) === "dynamic";
5230
+ return dynamic ? true : void 0;
5231
+ };
5122
5232
  const baseStream = this.fullStream.pipeThrough(
5123
5233
  new TransformStream({
5124
5234
  transform: async (part, controller) => {
@@ -5208,12 +5318,14 @@ var DefaultStreamTextResult = class {
5208
5318
  break;
5209
5319
  }
5210
5320
  case "tool-input-start": {
5321
+ toolNamesByCallId[part.id] = part.toolName;
5322
+ const dynamic = isDynamic(part.id);
5211
5323
  controller.enqueue({
5212
5324
  type: "tool-input-start",
5213
5325
  toolCallId: part.id,
5214
5326
  toolName: part.toolName,
5215
5327
  ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
5216
- ...part.dynamic != null ? { dynamic: part.dynamic } : {}
5328
+ ...dynamic != null ? { dynamic } : {}
5217
5329
  });
5218
5330
  break;
5219
5331
  }
@@ -5226,34 +5338,51 @@ var DefaultStreamTextResult = class {
5226
5338
  break;
5227
5339
  }
5228
5340
  case "tool-call": {
5229
- controller.enqueue({
5230
- type: "tool-input-available",
5231
- toolCallId: part.toolCallId,
5232
- toolName: part.toolName,
5233
- input: part.input,
5234
- ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
5235
- ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
5236
- ...part.dynamic != null ? { dynamic: part.dynamic } : {}
5237
- });
5341
+ toolNamesByCallId[part.toolCallId] = part.toolName;
5342
+ const dynamic = isDynamic(part.toolCallId);
5343
+ if (part.invalid) {
5344
+ controller.enqueue({
5345
+ type: "tool-input-error",
5346
+ toolCallId: part.toolCallId,
5347
+ toolName: part.toolName,
5348
+ input: part.input,
5349
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
5350
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
5351
+ ...dynamic != null ? { dynamic } : {},
5352
+ errorText: onError(part.error)
5353
+ });
5354
+ } else {
5355
+ controller.enqueue({
5356
+ type: "tool-input-available",
5357
+ toolCallId: part.toolCallId,
5358
+ toolName: part.toolName,
5359
+ input: part.input,
5360
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
5361
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
5362
+ ...dynamic != null ? { dynamic } : {}
5363
+ });
5364
+ }
5238
5365
  break;
5239
5366
  }
5240
5367
  case "tool-result": {
5368
+ const dynamic = isDynamic(part.toolCallId);
5241
5369
  controller.enqueue({
5242
5370
  type: "tool-output-available",
5243
5371
  toolCallId: part.toolCallId,
5244
5372
  output: part.output,
5245
5373
  ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
5246
- ...part.dynamic != null ? { dynamic: part.dynamic } : {}
5374
+ ...dynamic != null ? { dynamic } : {}
5247
5375
  });
5248
5376
  break;
5249
5377
  }
5250
5378
  case "tool-error": {
5379
+ const dynamic = isDynamic(part.toolCallId);
5251
5380
  controller.enqueue({
5252
5381
  type: "tool-output-error",
5253
5382
  toolCallId: part.toolCallId,
5254
5383
  errorText: onError(part.error),
5255
5384
  ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
5256
- ...part.dynamic != null ? { dynamic: part.dynamic } : {}
5385
+ ...dynamic != null ? { dynamic } : {}
5257
5386
  });
5258
5387
  break;
5259
5388
  }
@@ -5410,7 +5539,7 @@ var Agent = class {
5410
5539
 
5411
5540
  // src/embed/embed.ts
5412
5541
  async function embed({
5413
- model,
5542
+ model: modelArg,
5414
5543
  value,
5415
5544
  providerOptions,
5416
5545
  maxRetries: maxRetriesArg,
@@ -5418,13 +5547,7 @@ async function embed({
5418
5547
  headers,
5419
5548
  experimental_telemetry: telemetry
5420
5549
  }) {
5421
- if (model.specificationVersion !== "v2") {
5422
- throw new UnsupportedModelVersionError({
5423
- version: model.specificationVersion,
5424
- provider: model.provider,
5425
- modelId: model.modelId
5426
- });
5427
- }
5550
+ const model = resolveEmbeddingModel(modelArg);
5428
5551
  const { maxRetries, retry } = prepareRetries({
5429
5552
  maxRetries: maxRetriesArg,
5430
5553
  abortSignal
@@ -5542,7 +5665,7 @@ function splitArray(array, chunkSize) {
5542
5665
 
5543
5666
  // src/embed/embed-many.ts
5544
5667
  async function embedMany({
5545
- model,
5668
+ model: modelArg,
5546
5669
  values,
5547
5670
  maxParallelCalls = Infinity,
5548
5671
  maxRetries: maxRetriesArg,
@@ -5551,13 +5674,7 @@ async function embedMany({
5551
5674
  providerOptions,
5552
5675
  experimental_telemetry: telemetry
5553
5676
  }) {
5554
- if (model.specificationVersion !== "v2") {
5555
- throw new UnsupportedModelVersionError({
5556
- version: model.specificationVersion,
5557
- provider: model.provider,
5558
- modelId: model.modelId
5559
- });
5560
- }
5677
+ const model = resolveEmbeddingModel(modelArg);
5561
5678
  const { maxRetries, retry } = prepareRetries({
5562
5679
  maxRetries: maxRetriesArg,
5563
5680
  abortSignal
@@ -6149,6 +6266,63 @@ function getOutputStrategy({
6149
6266
  }
6150
6267
  }
6151
6268
 
6269
+ // src/generate-object/parse-and-validate-object-result.ts
6270
+ var import_provider24 = require("@ai-sdk/provider");
6271
+ var import_provider_utils15 = require("@ai-sdk/provider-utils");
6272
+ async function parseAndValidateObjectResult(result, outputStrategy, context) {
6273
+ const parseResult = await (0, import_provider_utils15.safeParseJSON)({ text: result });
6274
+ if (!parseResult.success) {
6275
+ throw new NoObjectGeneratedError({
6276
+ message: "No object generated: could not parse the response.",
6277
+ cause: parseResult.error,
6278
+ text: result,
6279
+ response: context.response,
6280
+ usage: context.usage,
6281
+ finishReason: context.finishReason
6282
+ });
6283
+ }
6284
+ const validationResult = await outputStrategy.validateFinalResult(
6285
+ parseResult.value,
6286
+ {
6287
+ text: result,
6288
+ response: context.response,
6289
+ usage: context.usage
6290
+ }
6291
+ );
6292
+ if (!validationResult.success) {
6293
+ throw new NoObjectGeneratedError({
6294
+ message: "No object generated: response did not match schema.",
6295
+ cause: validationResult.error,
6296
+ text: result,
6297
+ response: context.response,
6298
+ usage: context.usage,
6299
+ finishReason: context.finishReason
6300
+ });
6301
+ }
6302
+ return validationResult.value;
6303
+ }
6304
+ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, repairText, context) {
6305
+ try {
6306
+ return await parseAndValidateObjectResult(result, outputStrategy, context);
6307
+ } catch (error) {
6308
+ if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider24.JSONParseError.isInstance(error.cause) || import_provider24.TypeValidationError.isInstance(error.cause))) {
6309
+ const repairedText = await repairText({
6310
+ text: result,
6311
+ error: error.cause
6312
+ });
6313
+ if (repairedText === null) {
6314
+ throw error;
6315
+ }
6316
+ return await parseAndValidateObjectResult(
6317
+ repairedText,
6318
+ outputStrategy,
6319
+ context
6320
+ );
6321
+ }
6322
+ throw error;
6323
+ }
6324
+ }
6325
+
6152
6326
  // src/generate-object/validate-object-generation-input.ts
6153
6327
  function validateObjectGenerationInput({
6154
6328
  output,
@@ -6267,63 +6441,6 @@ function validateObjectGenerationInput({
6267
6441
  }
6268
6442
  }
6269
6443
 
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
6444
  // src/generate-object/generate-object.ts
6328
6445
  var originalGenerateId3 = (0, import_provider_utils16.createIdGenerator)({ prefix: "aiobj", size: 24 });
6329
6446
  async function generateObject(options) {
@@ -9288,7 +9405,7 @@ function convertToModelMessages(messages, options) {
9288
9405
  case "assistant": {
9289
9406
  if (message.parts != null) {
9290
9407
  let processBlock2 = function() {
9291
- var _a16;
9408
+ var _a16, _b;
9292
9409
  if (block.length === 0) {
9293
9410
  return;
9294
9411
  }
@@ -9340,7 +9457,7 @@ function convertToModelMessages(messages, options) {
9340
9457
  type: "tool-call",
9341
9458
  toolCallId: part.toolCallId,
9342
9459
  toolName,
9343
- input: part.input,
9460
+ input: part.state === "output-error" ? (_a16 = part.input) != null ? _a16 : part.rawInput : part.input,
9344
9461
  providerExecuted: part.providerExecuted,
9345
9462
  ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
9346
9463
  });
@@ -9351,7 +9468,7 @@ function convertToModelMessages(messages, options) {
9351
9468
  toolName,
9352
9469
  output: createToolModelOutput({
9353
9470
  output: part.state === "output-error" ? part.errorText : part.output,
9354
- tool: (_a16 = options == null ? void 0 : options.tools) == null ? void 0 : _a16[toolName],
9471
+ tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],
9355
9472
  errorMode: part.state === "output-error" ? "json" : "none"
9356
9473
  })
9357
9474
  });