ai 5.1.0-beta.2 → 5.1.0-beta.21

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,43 +20,45 @@ 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_provider17.AISDKError,
24
- APICallError: () => import_provider17.APICallError,
23
+ AISDKError: () => import_provider18.AISDKError,
24
+ APICallError: () => import_provider18.APICallError,
25
25
  AbstractChat: () => AbstractChat,
26
+ Agent: () => Agent,
26
27
  DefaultChatTransport: () => DefaultChatTransport,
27
28
  DownloadError: () => DownloadError,
28
- EmptyResponseBodyError: () => import_provider17.EmptyResponseBodyError,
29
+ EmptyResponseBodyError: () => import_provider18.EmptyResponseBodyError,
29
30
  Experimental_Agent: () => Agent,
30
31
  HttpChatTransport: () => HttpChatTransport,
31
32
  InvalidArgumentError: () => InvalidArgumentError,
32
33
  InvalidDataContentError: () => InvalidDataContentError,
33
34
  InvalidMessageRoleError: () => InvalidMessageRoleError,
34
- InvalidPromptError: () => import_provider17.InvalidPromptError,
35
- InvalidResponseDataError: () => import_provider17.InvalidResponseDataError,
35
+ InvalidPromptError: () => import_provider18.InvalidPromptError,
36
+ InvalidResponseDataError: () => import_provider18.InvalidResponseDataError,
36
37
  InvalidStreamPartError: () => InvalidStreamPartError,
37
38
  InvalidToolInputError: () => InvalidToolInputError,
38
- JSONParseError: () => import_provider17.JSONParseError,
39
+ JSONParseError: () => import_provider18.JSONParseError,
39
40
  JsonToSseTransformStream: () => JsonToSseTransformStream,
40
- LoadAPIKeyError: () => import_provider17.LoadAPIKeyError,
41
+ LoadAPIKeyError: () => import_provider18.LoadAPIKeyError,
41
42
  MCPClientError: () => MCPClientError,
42
43
  MessageConversionError: () => MessageConversionError,
43
- NoContentGeneratedError: () => import_provider17.NoContentGeneratedError,
44
+ NoContentGeneratedError: () => import_provider18.NoContentGeneratedError,
44
45
  NoImageGeneratedError: () => NoImageGeneratedError,
45
46
  NoObjectGeneratedError: () => NoObjectGeneratedError,
46
47
  NoOutputGeneratedError: () => NoOutputGeneratedError,
47
48
  NoOutputSpecifiedError: () => NoOutputSpecifiedError,
48
- NoSuchModelError: () => import_provider17.NoSuchModelError,
49
+ NoSpeechGeneratedError: () => NoSpeechGeneratedError,
50
+ NoSuchModelError: () => import_provider18.NoSuchModelError,
49
51
  NoSuchProviderError: () => NoSuchProviderError,
50
52
  NoSuchToolError: () => NoSuchToolError,
51
53
  Output: () => output_exports,
52
54
  RetryError: () => RetryError,
53
55
  SerialJobExecutor: () => SerialJobExecutor,
54
56
  TextStreamChatTransport: () => TextStreamChatTransport,
55
- TooManyEmbeddingValuesForCallError: () => import_provider17.TooManyEmbeddingValuesForCallError,
57
+ TooManyEmbeddingValuesForCallError: () => import_provider18.TooManyEmbeddingValuesForCallError,
56
58
  ToolCallRepairError: () => ToolCallRepairError,
57
- TypeValidationError: () => import_provider17.TypeValidationError,
59
+ TypeValidationError: () => import_provider18.TypeValidationError,
58
60
  UI_MESSAGE_STREAM_HEADERS: () => UI_MESSAGE_STREAM_HEADERS,
59
- UnsupportedFunctionalityError: () => import_provider17.UnsupportedFunctionalityError,
61
+ UnsupportedFunctionalityError: () => import_provider18.UnsupportedFunctionalityError,
60
62
  UnsupportedModelVersionError: () => UnsupportedModelVersionError,
61
63
  asSchema: () => import_provider_utils35.asSchema,
62
64
  assistantModelMessageSchema: () => assistantModelMessageSchema,
@@ -103,6 +105,7 @@ __export(src_exports, {
103
105
  jsonSchema: () => import_provider_utils35.jsonSchema,
104
106
  lastAssistantMessageIsCompleteWithToolCalls: () => lastAssistantMessageIsCompleteWithToolCalls,
105
107
  modelMessageSchema: () => modelMessageSchema,
108
+ parseJsonEventStream: () => import_provider_utils35.parseJsonEventStream,
106
109
  parsePartialJson: () => parsePartialJson,
107
110
  pipeTextStreamToResponse: () => pipeTextStreamToResponse,
108
111
  pipeUIMessageStreamToResponse: () => pipeUIMessageStreamToResponse,
@@ -117,6 +120,7 @@ __export(src_exports, {
117
120
  systemModelMessageSchema: () => systemModelMessageSchema,
118
121
  tool: () => import_provider_utils35.tool,
119
122
  toolModelMessageSchema: () => toolModelMessageSchema,
123
+ uiMessageChunkSchema: () => uiMessageChunkSchema,
120
124
  userModelMessageSchema: () => userModelMessageSchema,
121
125
  validateUIMessages: () => validateUIMessages,
122
126
  wrapLanguageModel: () => wrapLanguageModel,
@@ -202,7 +206,7 @@ var logWarnings = (warnings) => {
202
206
  var import_gateway = require("@ai-sdk/gateway");
203
207
 
204
208
  // src/error/index.ts
205
- var import_provider17 = require("@ai-sdk/provider");
209
+ var import_provider18 = require("@ai-sdk/provider");
206
210
 
207
211
  // src/error/invalid-argument-error.ts
208
212
  var import_provider2 = require("@ai-sdk/provider");
@@ -367,13 +371,25 @@ var NoOutputGeneratedError = class extends import_provider8.AISDKError {
367
371
  };
368
372
  _a8 = symbol8;
369
373
 
370
- // src/error/no-such-tool-error.ts
374
+ // src/error/no-speech-generated-error.ts
371
375
  var import_provider9 = require("@ai-sdk/provider");
376
+ var NoSpeechGeneratedError = class extends import_provider9.AISDKError {
377
+ constructor(options) {
378
+ super({
379
+ name: "AI_NoSpeechGeneratedError",
380
+ message: "No speech audio generated."
381
+ });
382
+ this.responses = options.responses;
383
+ }
384
+ };
385
+
386
+ // src/error/no-such-tool-error.ts
387
+ var import_provider10 = require("@ai-sdk/provider");
372
388
  var name9 = "AI_NoSuchToolError";
373
389
  var marker9 = `vercel.ai.error.${name9}`;
374
390
  var symbol9 = Symbol.for(marker9);
375
391
  var _a9;
376
- var NoSuchToolError = class extends import_provider9.AISDKError {
392
+ var NoSuchToolError = class extends import_provider10.AISDKError {
377
393
  constructor({
378
394
  toolName,
379
395
  availableTools = void 0,
@@ -385,36 +401,36 @@ var NoSuchToolError = class extends import_provider9.AISDKError {
385
401
  this.availableTools = availableTools;
386
402
  }
387
403
  static isInstance(error) {
388
- return import_provider9.AISDKError.hasMarker(error, marker9);
404
+ return import_provider10.AISDKError.hasMarker(error, marker9);
389
405
  }
390
406
  };
391
407
  _a9 = symbol9;
392
408
 
393
409
  // src/error/tool-call-repair-error.ts
394
- var import_provider10 = require("@ai-sdk/provider");
410
+ var import_provider11 = require("@ai-sdk/provider");
395
411
  var name10 = "AI_ToolCallRepairError";
396
412
  var marker10 = `vercel.ai.error.${name10}`;
397
413
  var symbol10 = Symbol.for(marker10);
398
414
  var _a10;
399
- var ToolCallRepairError = class extends import_provider10.AISDKError {
415
+ var ToolCallRepairError = class extends import_provider11.AISDKError {
400
416
  constructor({
401
417
  cause,
402
418
  originalError,
403
- message = `Error repairing tool call: ${(0, import_provider10.getErrorMessage)(cause)}`
419
+ message = `Error repairing tool call: ${(0, import_provider11.getErrorMessage)(cause)}`
404
420
  }) {
405
421
  super({ name: name10, message, cause });
406
422
  this[_a10] = true;
407
423
  this.originalError = originalError;
408
424
  }
409
425
  static isInstance(error) {
410
- return import_provider10.AISDKError.hasMarker(error, marker10);
426
+ return import_provider11.AISDKError.hasMarker(error, marker10);
411
427
  }
412
428
  };
413
429
  _a10 = symbol10;
414
430
 
415
431
  // src/error/unsupported-model-version-error.ts
416
- var import_provider11 = require("@ai-sdk/provider");
417
- var UnsupportedModelVersionError = class extends import_provider11.AISDKError {
432
+ var import_provider12 = require("@ai-sdk/provider");
433
+ var UnsupportedModelVersionError = class extends import_provider12.AISDKError {
418
434
  constructor(options) {
419
435
  super({
420
436
  name: "AI_UnsupportedModelVersionError",
@@ -427,12 +443,12 @@ var UnsupportedModelVersionError = class extends import_provider11.AISDKError {
427
443
  };
428
444
 
429
445
  // src/prompt/invalid-data-content-error.ts
430
- var import_provider12 = require("@ai-sdk/provider");
446
+ var import_provider13 = require("@ai-sdk/provider");
431
447
  var name11 = "AI_InvalidDataContentError";
432
448
  var marker11 = `vercel.ai.error.${name11}`;
433
449
  var symbol11 = Symbol.for(marker11);
434
450
  var _a11;
435
- var InvalidDataContentError = class extends import_provider12.AISDKError {
451
+ var InvalidDataContentError = class extends import_provider13.AISDKError {
436
452
  constructor({
437
453
  content,
438
454
  cause,
@@ -443,18 +459,18 @@ var InvalidDataContentError = class extends import_provider12.AISDKError {
443
459
  this.content = content;
444
460
  }
445
461
  static isInstance(error) {
446
- return import_provider12.AISDKError.hasMarker(error, marker11);
462
+ return import_provider13.AISDKError.hasMarker(error, marker11);
447
463
  }
448
464
  };
449
465
  _a11 = symbol11;
450
466
 
451
467
  // src/prompt/invalid-message-role-error.ts
452
- var import_provider13 = require("@ai-sdk/provider");
468
+ var import_provider14 = require("@ai-sdk/provider");
453
469
  var name12 = "AI_InvalidMessageRoleError";
454
470
  var marker12 = `vercel.ai.error.${name12}`;
455
471
  var symbol12 = Symbol.for(marker12);
456
472
  var _a12;
457
- var InvalidMessageRoleError = class extends import_provider13.AISDKError {
473
+ var InvalidMessageRoleError = class extends import_provider14.AISDKError {
458
474
  constructor({
459
475
  role,
460
476
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
@@ -464,18 +480,18 @@ var InvalidMessageRoleError = class extends import_provider13.AISDKError {
464
480
  this.role = role;
465
481
  }
466
482
  static isInstance(error) {
467
- return import_provider13.AISDKError.hasMarker(error, marker12);
483
+ return import_provider14.AISDKError.hasMarker(error, marker12);
468
484
  }
469
485
  };
470
486
  _a12 = symbol12;
471
487
 
472
488
  // src/prompt/message-conversion-error.ts
473
- var import_provider14 = require("@ai-sdk/provider");
489
+ var import_provider15 = require("@ai-sdk/provider");
474
490
  var name13 = "AI_MessageConversionError";
475
491
  var marker13 = `vercel.ai.error.${name13}`;
476
492
  var symbol13 = Symbol.for(marker13);
477
493
  var _a13;
478
- var MessageConversionError = class extends import_provider14.AISDKError {
494
+ var MessageConversionError = class extends import_provider15.AISDKError {
479
495
  constructor({
480
496
  originalMessage,
481
497
  message
@@ -485,18 +501,18 @@ var MessageConversionError = class extends import_provider14.AISDKError {
485
501
  this.originalMessage = originalMessage;
486
502
  }
487
503
  static isInstance(error) {
488
- return import_provider14.AISDKError.hasMarker(error, marker13);
504
+ return import_provider15.AISDKError.hasMarker(error, marker13);
489
505
  }
490
506
  };
491
507
  _a13 = symbol13;
492
508
 
493
509
  // src/util/download/download-error.ts
494
- var import_provider15 = require("@ai-sdk/provider");
510
+ var import_provider16 = require("@ai-sdk/provider");
495
511
  var name14 = "AI_DownloadError";
496
512
  var marker14 = `vercel.ai.error.${name14}`;
497
513
  var symbol14 = Symbol.for(marker14);
498
514
  var _a14;
499
- var DownloadError = class extends import_provider15.AISDKError {
515
+ var DownloadError = class extends import_provider16.AISDKError {
500
516
  constructor({
501
517
  url,
502
518
  statusCode,
@@ -511,18 +527,18 @@ var DownloadError = class extends import_provider15.AISDKError {
511
527
  this.statusText = statusText;
512
528
  }
513
529
  static isInstance(error) {
514
- return import_provider15.AISDKError.hasMarker(error, marker14);
530
+ return import_provider16.AISDKError.hasMarker(error, marker14);
515
531
  }
516
532
  };
517
533
  _a14 = symbol14;
518
534
 
519
535
  // src/util/retry-error.ts
520
- var import_provider16 = require("@ai-sdk/provider");
536
+ var import_provider17 = require("@ai-sdk/provider");
521
537
  var name15 = "AI_RetryError";
522
538
  var marker15 = `vercel.ai.error.${name15}`;
523
539
  var symbol15 = Symbol.for(marker15);
524
540
  var _a15;
525
- var RetryError = class extends import_provider16.AISDKError {
541
+ var RetryError = class extends import_provider17.AISDKError {
526
542
  constructor({
527
543
  message,
528
544
  reason,
@@ -535,34 +551,60 @@ var RetryError = class extends import_provider16.AISDKError {
535
551
  this.lastError = errors[errors.length - 1];
536
552
  }
537
553
  static isInstance(error) {
538
- return import_provider16.AISDKError.hasMarker(error, marker15);
554
+ return import_provider17.AISDKError.hasMarker(error, marker15);
539
555
  }
540
556
  };
541
557
  _a15 = symbol15;
542
558
 
543
559
  // src/model/resolve-model.ts
560
+ function transformToV3LanguageModel(model) {
561
+ return new Proxy(model, {
562
+ get(target, prop) {
563
+ if (prop === "specificationVersion")
564
+ return "v3";
565
+ return target[prop];
566
+ }
567
+ });
568
+ }
569
+ function transformToV3EmbeddingModel(model) {
570
+ return new Proxy(model, {
571
+ get(target, prop) {
572
+ if (prop === "specificationVersion")
573
+ return "v3";
574
+ return target[prop];
575
+ }
576
+ });
577
+ }
544
578
  function resolveLanguageModel(model) {
545
579
  if (typeof model !== "string") {
546
- if (model.specificationVersion !== "v2") {
580
+ if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
581
+ const unsupportedModel = model;
547
582
  throw new UnsupportedModelVersionError({
548
- version: model.specificationVersion,
549
- provider: model.provider,
550
- modelId: model.modelId
583
+ version: unsupportedModel.specificationVersion,
584
+ provider: unsupportedModel.provider,
585
+ modelId: unsupportedModel.modelId
551
586
  });
552
587
  }
588
+ if (model.specificationVersion === "v2") {
589
+ return transformToV3LanguageModel(model);
590
+ }
553
591
  return model;
554
592
  }
555
593
  return getGlobalProvider().languageModel(model);
556
594
  }
557
595
  function resolveEmbeddingModel(model) {
558
596
  if (typeof model !== "string") {
559
- if (model.specificationVersion !== "v2") {
597
+ if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
598
+ const unsupportedModel = model;
560
599
  throw new UnsupportedModelVersionError({
561
- version: model.specificationVersion,
562
- provider: model.provider,
563
- modelId: model.modelId
600
+ version: unsupportedModel.specificationVersion,
601
+ provider: unsupportedModel.provider,
602
+ modelId: unsupportedModel.modelId
564
603
  });
565
604
  }
605
+ if (model.specificationVersion === "v2") {
606
+ return transformToV3EmbeddingModel(model);
607
+ }
566
608
  return model;
567
609
  }
568
610
  return getGlobalProvider().textEmbeddingModel(
@@ -766,7 +808,7 @@ function detectMediaType({
766
808
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
767
809
 
768
810
  // src/version.ts
769
- var VERSION = true ? "5.1.0-beta.2" : "0.0.0-test";
811
+ var VERSION = true ? "5.1.0-beta.21" : "0.0.0-test";
770
812
 
771
813
  // src/util/download/download.ts
772
814
  var download = async ({ url }) => {
@@ -807,7 +849,7 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
807
849
  );
808
850
 
809
851
  // src/prompt/data-content.ts
810
- var import_provider18 = require("@ai-sdk/provider");
852
+ var import_provider19 = require("@ai-sdk/provider");
811
853
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
812
854
  var import_v4 = require("zod/v4");
813
855
 
@@ -841,7 +883,7 @@ var dataContentSchema = import_v4.z.union([
841
883
  { message: "Must be a Buffer" }
842
884
  )
843
885
  ]);
844
- function convertToLanguageModelV2DataContent(content) {
886
+ function convertToLanguageModelV3DataContent(content) {
845
887
  if (content instanceof Uint8Array) {
846
888
  return { data: content, mediaType: void 0 };
847
889
  }
@@ -859,7 +901,7 @@ function convertToLanguageModelV2DataContent(content) {
859
901
  content.toString()
860
902
  );
861
903
  if (dataUrlMediaType == null || base64Content == null) {
862
- throw new import_provider18.AISDKError({
904
+ throw new import_provider19.AISDKError({
863
905
  name: "InvalidDataContentError",
864
906
  message: `Invalid data URL format in content ${content.toString()}`
865
907
  });
@@ -960,7 +1002,7 @@ function convertToLanguageModelMessage({
960
1002
  const providerOptions = part.providerOptions;
961
1003
  switch (part.type) {
962
1004
  case "file": {
963
- const { data, mediaType } = convertToLanguageModelV2DataContent(
1005
+ const { data, mediaType } = convertToLanguageModelV3DataContent(
964
1006
  part.data
965
1007
  );
966
1008
  return {
@@ -1056,12 +1098,12 @@ async function downloadAssets(messages, download2, supportedUrls) {
1056
1098
  }));
1057
1099
  const downloadedFiles = await download2(plannedDownloads);
1058
1100
  return Object.fromEntries(
1059
- downloadedFiles.filter(
1060
- (downloadedFile) => (downloadedFile == null ? void 0 : downloadedFile.data) != null
1061
- ).map(({ data, mediaType }, index) => [
1062
- plannedDownloads[index].url.toString(),
1063
- { data, mediaType }
1064
- ])
1101
+ downloadedFiles.map(
1102
+ (file, index) => file == null ? null : [
1103
+ plannedDownloads[index].url.toString(),
1104
+ { data: file.data, mediaType: file.mediaType }
1105
+ ]
1106
+ ).filter((file) => file != null)
1065
1107
  );
1066
1108
  }
1067
1109
  function convertPartToLanguageModelPart(part, downloadedAssets) {
@@ -1085,7 +1127,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1085
1127
  default:
1086
1128
  throw new Error(`Unsupported part type: ${type}`);
1087
1129
  }
1088
- const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);
1130
+ const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV3DataContent(originalData);
1089
1131
  let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;
1090
1132
  let data = convertedData;
1091
1133
  if (data instanceof URL) {
@@ -1272,7 +1314,7 @@ function prepareToolsAndToolChoice({
1272
1314
  }
1273
1315
 
1274
1316
  // src/prompt/standardize-prompt.ts
1275
- var import_provider19 = require("@ai-sdk/provider");
1317
+ var import_provider20 = require("@ai-sdk/provider");
1276
1318
  var import_provider_utils6 = require("@ai-sdk/provider-utils");
1277
1319
  var import_v46 = require("zod/v4");
1278
1320
 
@@ -1428,19 +1470,19 @@ var coreMessageSchema = modelMessageSchema;
1428
1470
  // src/prompt/standardize-prompt.ts
1429
1471
  async function standardizePrompt(prompt) {
1430
1472
  if (prompt.prompt == null && prompt.messages == null) {
1431
- throw new import_provider19.InvalidPromptError({
1473
+ throw new import_provider20.InvalidPromptError({
1432
1474
  prompt,
1433
1475
  message: "prompt or messages must be defined"
1434
1476
  });
1435
1477
  }
1436
1478
  if (prompt.prompt != null && prompt.messages != null) {
1437
- throw new import_provider19.InvalidPromptError({
1479
+ throw new import_provider20.InvalidPromptError({
1438
1480
  prompt,
1439
1481
  message: "prompt and messages cannot be defined at the same time"
1440
1482
  });
1441
1483
  }
1442
1484
  if (prompt.system != null && typeof prompt.system !== "string") {
1443
- throw new import_provider19.InvalidPromptError({
1485
+ throw new import_provider20.InvalidPromptError({
1444
1486
  prompt,
1445
1487
  message: "system must be a string"
1446
1488
  });
@@ -1453,13 +1495,13 @@ async function standardizePrompt(prompt) {
1453
1495
  } else if (prompt.messages != null) {
1454
1496
  messages = prompt.messages;
1455
1497
  } else {
1456
- throw new import_provider19.InvalidPromptError({
1498
+ throw new import_provider20.InvalidPromptError({
1457
1499
  prompt,
1458
1500
  message: "prompt or messages must be defined"
1459
1501
  });
1460
1502
  }
1461
1503
  if (messages.length === 0) {
1462
- throw new import_provider19.InvalidPromptError({
1504
+ throw new import_provider20.InvalidPromptError({
1463
1505
  prompt,
1464
1506
  message: "messages must not be empty"
1465
1507
  });
@@ -1469,7 +1511,7 @@ async function standardizePrompt(prompt) {
1469
1511
  schema: import_v46.z.array(modelMessageSchema)
1470
1512
  });
1471
1513
  if (!validationResult.success) {
1472
- throw new import_provider19.InvalidPromptError({
1514
+ throw new import_provider20.InvalidPromptError({
1473
1515
  prompt,
1474
1516
  message: "The messages must be a ModelMessage[]. If you have passed a UIMessage[], you can use convertToModelMessages to convert them.",
1475
1517
  cause: validationResult.error
@@ -1483,10 +1525,10 @@ async function standardizePrompt(prompt) {
1483
1525
 
1484
1526
  // src/prompt/wrap-gateway-error.ts
1485
1527
  var import_gateway2 = require("@ai-sdk/gateway");
1486
- var import_provider20 = require("@ai-sdk/provider");
1528
+ var import_provider21 = require("@ai-sdk/provider");
1487
1529
  function wrapGatewayError(error) {
1488
1530
  if (import_gateway2.GatewayAuthenticationError.isInstance(error) || import_gateway2.GatewayModelNotFoundError.isInstance(error)) {
1489
- return new import_provider20.AISDKError({
1531
+ return new import_provider21.AISDKError({
1490
1532
  name: "GatewayError",
1491
1533
  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.",
1492
1534
  cause: error
@@ -1732,7 +1774,7 @@ function asArray(value) {
1732
1774
  }
1733
1775
 
1734
1776
  // src/util/retry-with-exponential-backoff.ts
1735
- var import_provider21 = require("@ai-sdk/provider");
1777
+ var import_provider22 = require("@ai-sdk/provider");
1736
1778
  var import_provider_utils7 = require("@ai-sdk/provider-utils");
1737
1779
  function getRetryDelayInMs({
1738
1780
  error,
@@ -1799,7 +1841,7 @@ async function _retryWithExponentialBackoff(f, {
1799
1841
  errors: newErrors
1800
1842
  });
1801
1843
  }
1802
- if (error instanceof Error && import_provider21.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
1844
+ if (error instanceof Error && import_provider22.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
1803
1845
  await (0, import_provider_utils7.delay)(
1804
1846
  getRetryDelayInMs({
1805
1847
  error,
@@ -2083,14 +2125,14 @@ async function isStopConditionMet({
2083
2125
  }
2084
2126
 
2085
2127
  // src/prompt/create-tool-model-output.ts
2086
- var import_provider22 = require("@ai-sdk/provider");
2128
+ var import_provider23 = require("@ai-sdk/provider");
2087
2129
  function createToolModelOutput({
2088
2130
  output,
2089
2131
  tool: tool3,
2090
2132
  errorMode
2091
2133
  }) {
2092
2134
  if (errorMode === "text") {
2093
- return { type: "error-text", value: (0, import_provider22.getErrorMessage)(output) };
2135
+ return { type: "error-text", value: (0, import_provider23.getErrorMessage)(output) };
2094
2136
  } else if (errorMode === "json") {
2095
2137
  return { type: "error-json", value: toJSONValue(output) };
2096
2138
  }
@@ -2779,7 +2821,7 @@ function asContent({
2779
2821
  }
2780
2822
 
2781
2823
  // src/generate-text/stream-text.ts
2782
- var import_provider23 = require("@ai-sdk/provider");
2824
+ var import_provider24 = require("@ai-sdk/provider");
2783
2825
  var import_provider_utils14 = require("@ai-sdk/provider-utils");
2784
2826
 
2785
2827
  // src/util/prepare-headers.ts
@@ -2988,11 +3030,6 @@ var uiMessageChunkSchema = import_v47.z.union([
2988
3030
  providerExecuted: import_v47.z.boolean().optional(),
2989
3031
  dynamic: import_v47.z.boolean().optional()
2990
3032
  }),
2991
- import_v47.z.strictObject({
2992
- type: import_v47.z.literal("reasoning"),
2993
- text: import_v47.z.string(),
2994
- providerMetadata: providerMetadataSchema.optional()
2995
- }),
2996
3033
  import_v47.z.strictObject({
2997
3034
  type: import_v47.z.literal("reasoning-start"),
2998
3035
  id: import_v47.z.string(),
@@ -3009,9 +3046,6 @@ var uiMessageChunkSchema = import_v47.z.union([
3009
3046
  id: import_v47.z.string(),
3010
3047
  providerMetadata: providerMetadataSchema.optional()
3011
3048
  }),
3012
- import_v47.z.strictObject({
3013
- type: import_v47.z.literal("reasoning-part-finish")
3014
- }),
3015
3049
  import_v47.z.strictObject({
3016
3050
  type: import_v47.z.literal("source-url"),
3017
3051
  sourceId: import_v47.z.string(),
@@ -3034,7 +3068,10 @@ var uiMessageChunkSchema = import_v47.z.union([
3034
3068
  providerMetadata: providerMetadataSchema.optional()
3035
3069
  }),
3036
3070
  import_v47.z.strictObject({
3037
- type: import_v47.z.string().startsWith("data-"),
3071
+ type: import_v47.z.custom(
3072
+ (value) => typeof value === "string" && value.startsWith("data-"),
3073
+ { message: 'Type must start with "data-"' }
3074
+ ),
3038
3075
  id: import_v47.z.string().optional(),
3039
3076
  data: import_v47.z.unknown(),
3040
3077
  transient: import_v47.z.boolean().optional()
@@ -4659,7 +4696,7 @@ var DefaultStreamTextResult = class {
4659
4696
  let activeReasoningContent = {};
4660
4697
  const eventProcessor = new TransformStream({
4661
4698
  async transform(chunk, controller) {
4662
- var _a17, _b, _c;
4699
+ var _a17, _b, _c, _d;
4663
4700
  controller.enqueue(chunk);
4664
4701
  const { part } = chunk;
4665
4702
  if (part.type === "text-delta" || part.type === "reasoning-delta" || part.type === "source" || part.type === "tool-call" || part.type === "tool-result" || part.type === "tool-input-start" || part.type === "tool-input-delta" || part.type === "raw") {
@@ -4692,6 +4729,18 @@ var DefaultStreamTextResult = class {
4692
4729
  activeText.providerMetadata = (_a17 = part.providerMetadata) != null ? _a17 : activeText.providerMetadata;
4693
4730
  }
4694
4731
  if (part.type === "text-end") {
4732
+ const activeText = activeTextContent[part.id];
4733
+ if (activeText == null) {
4734
+ controller.enqueue({
4735
+ part: {
4736
+ type: "error",
4737
+ error: `text part ${part.id} not found`
4738
+ },
4739
+ partialOutput: void 0
4740
+ });
4741
+ return;
4742
+ }
4743
+ activeText.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeText.providerMetadata;
4695
4744
  delete activeTextContent[part.id];
4696
4745
  }
4697
4746
  if (part.type === "reasoning-start") {
@@ -4715,7 +4764,7 @@ var DefaultStreamTextResult = class {
4715
4764
  return;
4716
4765
  }
4717
4766
  activeReasoning.text += part.text;
4718
- activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;
4767
+ activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4719
4768
  }
4720
4769
  if (part.type === "reasoning-end") {
4721
4770
  const activeReasoning = activeReasoningContent[part.id];
@@ -4729,7 +4778,7 @@ var DefaultStreamTextResult = class {
4729
4778
  });
4730
4779
  return;
4731
4780
  }
4732
- activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4781
+ activeReasoning.providerMetadata = (_d = part.providerMetadata) != null ? _d : activeReasoning.providerMetadata;
4733
4782
  delete activeReasoningContent[part.id];
4734
4783
  }
4735
4784
  if (part.type === "file") {
@@ -5478,7 +5527,7 @@ var DefaultStreamTextResult = class {
5478
5527
  sendSources = false,
5479
5528
  sendStart = true,
5480
5529
  sendFinish = true,
5481
- onError = import_provider23.getErrorMessage
5530
+ onError = import_provider24.getErrorMessage
5482
5531
  } = {}) {
5483
5532
  const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
5484
5533
  originalMessages,
@@ -5981,14 +6030,33 @@ var Agent = class {
5981
6030
  constructor(settings) {
5982
6031
  this.settings = settings;
5983
6032
  }
6033
+ /**
6034
+ * The name of the agent.
6035
+ */
6036
+ get name() {
6037
+ return this.settings.name;
6038
+ }
6039
+ /**
6040
+ * The tools that the agent can use.
6041
+ */
5984
6042
  get tools() {
5985
6043
  return this.settings.tools;
5986
6044
  }
5987
6045
  async generate(options) {
5988
- return generateText({ ...this.settings, ...options });
6046
+ var _a17;
6047
+ return generateText({
6048
+ ...this.settings,
6049
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
6050
+ ...options
6051
+ });
5989
6052
  }
5990
6053
  stream(options) {
5991
- return streamText({ ...this.settings, ...options });
6054
+ var _a17;
6055
+ return streamText({
6056
+ ...this.settings,
6057
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
6058
+ ...options
6059
+ });
5992
6060
  }
5993
6061
  /**
5994
6062
  * Creates a response object that streams UI messages to the client.
@@ -6384,7 +6452,7 @@ async function generateImage({
6384
6452
  headers
6385
6453
  }) {
6386
6454
  var _a17, _b;
6387
- if (model.specificationVersion !== "v2") {
6455
+ if (model.specificationVersion !== "v3") {
6388
6456
  throw new UnsupportedModelVersionError({
6389
6457
  version: model.specificationVersion,
6390
6458
  provider: model.provider,
@@ -6498,7 +6566,7 @@ function extractReasoningContent(content) {
6498
6566
  }
6499
6567
 
6500
6568
  // src/generate-object/output-strategy.ts
6501
- var import_provider24 = require("@ai-sdk/provider");
6569
+ var import_provider25 = require("@ai-sdk/provider");
6502
6570
  var import_provider_utils18 = require("@ai-sdk/provider-utils");
6503
6571
  var noSchemaOutputStrategy = {
6504
6572
  type: "no-schema",
@@ -6519,7 +6587,7 @@ var noSchemaOutputStrategy = {
6519
6587
  } : { success: true, value };
6520
6588
  },
6521
6589
  createElementStream() {
6522
- throw new import_provider24.UnsupportedFunctionalityError({
6590
+ throw new import_provider25.UnsupportedFunctionalityError({
6523
6591
  functionality: "element streams in no-schema mode"
6524
6592
  });
6525
6593
  }
@@ -6541,7 +6609,7 @@ var objectOutputStrategy = (schema) => ({
6541
6609
  return (0, import_provider_utils18.safeValidateTypes)({ value, schema });
6542
6610
  },
6543
6611
  createElementStream() {
6544
- throw new import_provider24.UnsupportedFunctionalityError({
6612
+ throw new import_provider25.UnsupportedFunctionalityError({
6545
6613
  functionality: "element streams in object mode"
6546
6614
  });
6547
6615
  }
@@ -6569,10 +6637,10 @@ var arrayOutputStrategy = (schema) => {
6569
6637
  isFinalDelta
6570
6638
  }) {
6571
6639
  var _a17;
6572
- if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
6640
+ if (!(0, import_provider25.isJSONObject)(value) || !(0, import_provider25.isJSONArray)(value.elements)) {
6573
6641
  return {
6574
6642
  success: false,
6575
- error: new import_provider24.TypeValidationError({
6643
+ error: new import_provider25.TypeValidationError({
6576
6644
  value,
6577
6645
  cause: "value must be an object that contains an array of elements"
6578
6646
  })
@@ -6612,10 +6680,10 @@ var arrayOutputStrategy = (schema) => {
6612
6680
  };
6613
6681
  },
6614
6682
  async validateFinalResult(value) {
6615
- if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
6683
+ if (!(0, import_provider25.isJSONObject)(value) || !(0, import_provider25.isJSONArray)(value.elements)) {
6616
6684
  return {
6617
6685
  success: false,
6618
- error: new import_provider24.TypeValidationError({
6686
+ error: new import_provider25.TypeValidationError({
6619
6687
  value,
6620
6688
  cause: "value must be an object that contains an array of elements"
6621
6689
  })
@@ -6678,10 +6746,10 @@ var enumOutputStrategy = (enumValues) => {
6678
6746
  additionalProperties: false
6679
6747
  },
6680
6748
  async validateFinalResult(value) {
6681
- if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
6749
+ if (!(0, import_provider25.isJSONObject)(value) || typeof value.result !== "string") {
6682
6750
  return {
6683
6751
  success: false,
6684
- error: new import_provider24.TypeValidationError({
6752
+ error: new import_provider25.TypeValidationError({
6685
6753
  value,
6686
6754
  cause: 'value must be an object that contains a string in the "result" property.'
6687
6755
  })
@@ -6690,17 +6758,17 @@ var enumOutputStrategy = (enumValues) => {
6690
6758
  const result = value.result;
6691
6759
  return enumValues.includes(result) ? { success: true, value: result } : {
6692
6760
  success: false,
6693
- error: new import_provider24.TypeValidationError({
6761
+ error: new import_provider25.TypeValidationError({
6694
6762
  value,
6695
6763
  cause: "value must be a string in the enum"
6696
6764
  })
6697
6765
  };
6698
6766
  },
6699
6767
  async validatePartialResult({ value, textDelta }) {
6700
- if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
6768
+ if (!(0, import_provider25.isJSONObject)(value) || typeof value.result !== "string") {
6701
6769
  return {
6702
6770
  success: false,
6703
- error: new import_provider24.TypeValidationError({
6771
+ error: new import_provider25.TypeValidationError({
6704
6772
  value,
6705
6773
  cause: 'value must be an object that contains a string in the "result" property.'
6706
6774
  })
@@ -6713,7 +6781,7 @@ var enumOutputStrategy = (enumValues) => {
6713
6781
  if (value.result.length === 0 || possibleEnumValues.length === 0) {
6714
6782
  return {
6715
6783
  success: false,
6716
- error: new import_provider24.TypeValidationError({
6784
+ error: new import_provider25.TypeValidationError({
6717
6785
  value,
6718
6786
  cause: "value must be a string in the enum"
6719
6787
  })
@@ -6728,7 +6796,7 @@ var enumOutputStrategy = (enumValues) => {
6728
6796
  };
6729
6797
  },
6730
6798
  createElementStream() {
6731
- throw new import_provider24.UnsupportedFunctionalityError({
6799
+ throw new import_provider25.UnsupportedFunctionalityError({
6732
6800
  functionality: "element streams in enum mode"
6733
6801
  });
6734
6802
  }
@@ -6756,7 +6824,7 @@ function getOutputStrategy({
6756
6824
  }
6757
6825
 
6758
6826
  // src/generate-object/parse-and-validate-object-result.ts
6759
- var import_provider25 = require("@ai-sdk/provider");
6827
+ var import_provider26 = require("@ai-sdk/provider");
6760
6828
  var import_provider_utils19 = require("@ai-sdk/provider-utils");
6761
6829
  async function parseAndValidateObjectResult(result, outputStrategy, context) {
6762
6830
  const parseResult = await (0, import_provider_utils19.safeParseJSON)({ text: result });
@@ -6794,7 +6862,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
6794
6862
  try {
6795
6863
  return await parseAndValidateObjectResult(result, outputStrategy, context);
6796
6864
  } catch (error) {
6797
- if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider25.JSONParseError.isInstance(error.cause) || import_provider25.TypeValidationError.isInstance(error.cause))) {
6865
+ if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider26.JSONParseError.isInstance(error.cause) || import_provider26.TypeValidationError.isInstance(error.cause))) {
6798
6866
  const repairedText = await repairText({
6799
6867
  text: result,
6800
6868
  error: error.cause
@@ -7851,18 +7919,6 @@ var DefaultStreamObjectResult = class {
7851
7919
  // src/generate-speech/generate-speech.ts
7852
7920
  var import_provider_utils23 = require("@ai-sdk/provider-utils");
7853
7921
 
7854
- // src/error/no-speech-generated-error.ts
7855
- var import_provider26 = require("@ai-sdk/provider");
7856
- var NoSpeechGeneratedError = class extends import_provider26.AISDKError {
7857
- constructor(options) {
7858
- super({
7859
- name: "AI_NoSpeechGeneratedError",
7860
- message: "No speech audio generated."
7861
- });
7862
- this.responses = options.responses;
7863
- }
7864
- };
7865
-
7866
7922
  // src/generate-speech/generated-audio-file.ts
7867
7923
  var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
7868
7924
  constructor({
@@ -8114,7 +8170,7 @@ function defaultSettingsMiddleware({
8114
8170
  settings
8115
8171
  }) {
8116
8172
  return {
8117
- middlewareVersion: "v2",
8173
+ middlewareVersion: "v3",
8118
8174
  transformParams: async ({ params }) => {
8119
8175
  return mergeObjects(settings, params);
8120
8176
  }
@@ -8148,7 +8204,7 @@ function extractReasoningMiddleware({
8148
8204
  const openingTag = `<${tagName}>`;
8149
8205
  const closingTag = `</${tagName}>`;
8150
8206
  return {
8151
- middlewareVersion: "v2",
8207
+ middlewareVersion: "v3",
8152
8208
  wrapGenerate: async ({ doGenerate }) => {
8153
8209
  const { content, ...rest } = await doGenerate();
8154
8210
  const transformedContent = [];
@@ -8294,7 +8350,7 @@ function extractReasoningMiddleware({
8294
8350
  // src/middleware/simulate-streaming-middleware.ts
8295
8351
  function simulateStreamingMiddleware() {
8296
8352
  return {
8297
- middlewareVersion: "v2",
8353
+ middlewareVersion: "v3",
8298
8354
  wrapStream: async ({ doGenerate }) => {
8299
8355
  const result = await doGenerate();
8300
8356
  let id = 0;
@@ -8391,7 +8447,7 @@ var doWrap = ({
8391
8447
  return transformParams ? await transformParams({ params, type, model }) : params;
8392
8448
  }
8393
8449
  return {
8394
- specificationVersion: "v2",
8450
+ specificationVersion: "v3",
8395
8451
  provider: (_a17 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a17 : model.provider,
8396
8452
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
8397
8453
  supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
@@ -9724,9 +9780,11 @@ var AbstractChat = class {
9724
9780
  }
9725
9781
  };
9726
9782
  this.addToolResult = async ({
9783
+ state = "output-available",
9727
9784
  tool: tool3,
9728
9785
  toolCallId,
9729
- output
9786
+ output,
9787
+ errorText
9730
9788
  }) => this.jobExecutor.run(async () => {
9731
9789
  var _a17, _b;
9732
9790
  const messages = this.state.messages;
@@ -9734,16 +9792,16 @@ var AbstractChat = class {
9734
9792
  this.state.replaceMessage(messages.length - 1, {
9735
9793
  ...lastMessage,
9736
9794
  parts: lastMessage.parts.map(
9737
- (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: "output-available", output } : part
9795
+ (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part
9738
9796
  )
9739
9797
  });
9740
9798
  if (this.activeResponse) {
9741
9799
  this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
9742
9800
  (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {
9743
9801
  ...part,
9744
- state: "output-available",
9802
+ state,
9745
9803
  output,
9746
- errorText: void 0
9804
+ errorText
9747
9805
  } : part
9748
9806
  );
9749
9807
  }
@@ -9952,7 +10010,9 @@ function lastAssistantMessageIsCompleteWithToolCalls({
9952
10010
  return part.type === "step-start" ? index : lastIndex;
9953
10011
  }, -1);
9954
10012
  const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart);
9955
- return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === "output-available");
10013
+ return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
10014
+ (part) => part.state === "output-available" || part.state === "output-error"
10015
+ );
9956
10016
  }
9957
10017
 
9958
10018
  // src/ui/transform-text-to-ui-message-stream.ts
@@ -10390,6 +10450,7 @@ function readUIMessageStream({
10390
10450
  AISDKError,
10391
10451
  APICallError,
10392
10452
  AbstractChat,
10453
+ Agent,
10393
10454
  DefaultChatTransport,
10394
10455
  DownloadError,
10395
10456
  EmptyResponseBodyError,
@@ -10412,6 +10473,7 @@ function readUIMessageStream({
10412
10473
  NoObjectGeneratedError,
10413
10474
  NoOutputGeneratedError,
10414
10475
  NoOutputSpecifiedError,
10476
+ NoSpeechGeneratedError,
10415
10477
  NoSuchModelError,
10416
10478
  NoSuchProviderError,
10417
10479
  NoSuchToolError,
@@ -10470,6 +10532,7 @@ function readUIMessageStream({
10470
10532
  jsonSchema,
10471
10533
  lastAssistantMessageIsCompleteWithToolCalls,
10472
10534
  modelMessageSchema,
10535
+ parseJsonEventStream,
10473
10536
  parsePartialJson,
10474
10537
  pipeTextStreamToResponse,
10475
10538
  pipeUIMessageStreamToResponse,
@@ -10484,6 +10547,7 @@ function readUIMessageStream({
10484
10547
  systemModelMessageSchema,
10485
10548
  tool,
10486
10549
  toolModelMessageSchema,
10550
+ uiMessageChunkSchema,
10487
10551
  userModelMessageSchema,
10488
10552
  validateUIMessages,
10489
10553
  wrapLanguageModel,