ai 6.0.270 → 6.0.272

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
@@ -4,8 +4,8 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
6
  var __export = (target, all) => {
7
- for (var name22 in all)
8
- __defProp(target, name22, { get: all[name22], enumerable: true });
7
+ for (var name23 in all)
8
+ __defProp(target, name23, { get: all[name23], enumerable: true });
9
9
  };
10
10
  var __copyProps = (to, from, except, desc) => {
11
11
  if (from && typeof from === "object" || typeof from === "function") {
@@ -20,37 +20,37 @@ 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_provider22.AISDKError,
24
- APICallError: () => import_provider22.APICallError,
23
+ AISDKError: () => import_provider23.AISDKError,
24
+ APICallError: () => import_provider23.APICallError,
25
25
  AbstractChat: () => AbstractChat,
26
26
  DefaultChatTransport: () => DefaultChatTransport,
27
27
  DefaultGeneratedFile: () => DefaultGeneratedFile,
28
28
  DirectChatTransport: () => DirectChatTransport,
29
29
  DownloadError: () => import_provider_utils.DownloadError,
30
- EmptyResponseBodyError: () => import_provider22.EmptyResponseBodyError,
30
+ EmptyResponseBodyError: () => import_provider23.EmptyResponseBodyError,
31
31
  Experimental_Agent: () => ToolLoopAgent,
32
32
  HttpChatTransport: () => HttpChatTransport,
33
33
  InvalidArgumentError: () => InvalidArgumentError,
34
34
  InvalidDataContentError: () => InvalidDataContentError,
35
35
  InvalidMessageRoleError: () => InvalidMessageRoleError,
36
- InvalidPromptError: () => import_provider22.InvalidPromptError,
37
- InvalidResponseDataError: () => import_provider22.InvalidResponseDataError,
36
+ InvalidPromptError: () => import_provider23.InvalidPromptError,
37
+ InvalidResponseDataError: () => import_provider23.InvalidResponseDataError,
38
38
  InvalidStreamPartError: () => InvalidStreamPartError,
39
39
  InvalidToolApprovalError: () => InvalidToolApprovalError,
40
40
  InvalidToolApprovalSignatureError: () => InvalidToolApprovalSignatureError,
41
41
  InvalidToolInputError: () => InvalidToolInputError,
42
- JSONParseError: () => import_provider22.JSONParseError,
42
+ JSONParseError: () => import_provider23.JSONParseError,
43
43
  JsonToSseTransformStream: () => JsonToSseTransformStream,
44
- LoadAPIKeyError: () => import_provider22.LoadAPIKeyError,
45
- LoadSettingError: () => import_provider22.LoadSettingError,
44
+ LoadAPIKeyError: () => import_provider23.LoadAPIKeyError,
45
+ LoadSettingError: () => import_provider23.LoadSettingError,
46
46
  MessageConversionError: () => MessageConversionError,
47
47
  MissingToolResultsError: () => MissingToolResultsError,
48
- NoContentGeneratedError: () => import_provider22.NoContentGeneratedError,
48
+ NoContentGeneratedError: () => import_provider23.NoContentGeneratedError,
49
49
  NoImageGeneratedError: () => NoImageGeneratedError,
50
50
  NoObjectGeneratedError: () => NoObjectGeneratedError,
51
51
  NoOutputGeneratedError: () => NoOutputGeneratedError,
52
52
  NoSpeechGeneratedError: () => NoSpeechGeneratedError,
53
- NoSuchModelError: () => import_provider22.NoSuchModelError,
53
+ NoSuchModelError: () => import_provider23.NoSuchModelError,
54
54
  NoSuchProviderError: () => NoSuchProviderError,
55
55
  NoSuchToolError: () => NoSuchToolError,
56
56
  NoTranscriptGeneratedError: () => NoTranscriptGeneratedError,
@@ -59,14 +59,15 @@ __export(src_exports, {
59
59
  RetryError: () => RetryError,
60
60
  SerialJobExecutor: () => SerialJobExecutor,
61
61
  TextStreamChatTransport: () => TextStreamChatTransport,
62
- TooManyEmbeddingValuesForCallError: () => import_provider22.TooManyEmbeddingValuesForCallError,
62
+ TooManyEmbeddingValuesForCallError: () => import_provider23.TooManyEmbeddingValuesForCallError,
63
63
  ToolCallNotFoundForApprovalError: () => ToolCallNotFoundForApprovalError,
64
64
  ToolCallRepairError: () => ToolCallRepairError,
65
+ ToolChoiceViolationError: () => ToolChoiceViolationError,
65
66
  ToolLoopAgent: () => ToolLoopAgent,
66
- TypeValidationError: () => import_provider22.TypeValidationError,
67
+ TypeValidationError: () => import_provider23.TypeValidationError,
67
68
  UIMessageStreamError: () => UIMessageStreamError,
68
69
  UI_MESSAGE_STREAM_HEADERS: () => UI_MESSAGE_STREAM_HEADERS,
69
- UnsupportedFunctionalityError: () => import_provider22.UnsupportedFunctionalityError,
70
+ UnsupportedFunctionalityError: () => import_provider23.UnsupportedFunctionalityError,
70
71
  UnsupportedModelVersionError: () => UnsupportedModelVersionError,
71
72
  addToolInputExamplesMiddleware: () => addToolInputExamplesMiddleware,
72
73
  asSchema: () => import_provider_utils43.asSchema,
@@ -163,7 +164,7 @@ var import_provider_utils21 = require("@ai-sdk/provider-utils");
163
164
  var import_provider_utils16 = require("@ai-sdk/provider-utils");
164
165
 
165
166
  // src/error/index.ts
166
- var import_provider22 = require("@ai-sdk/provider");
167
+ var import_provider23 = require("@ai-sdk/provider");
167
168
 
168
169
  // src/error/invalid-argument-error.ts
169
170
  var import_provider = require("@ai-sdk/provider");
@@ -507,21 +508,28 @@ var NoSuchToolError = class extends import_provider14.AISDKError {
507
508
  };
508
509
  _a14 = symbol14;
509
510
 
510
- // src/error/tool-call-repair-error.ts
511
+ // src/error/tool-choice-violation-error.ts
511
512
  var import_provider15 = require("@ai-sdk/provider");
512
- var name15 = "AI_ToolCallRepairError";
513
+ var name15 = "AI_ToolChoiceViolationError";
513
514
  var marker15 = `vercel.ai.error.${name15}`;
514
515
  var symbol15 = Symbol.for(marker15);
515
516
  var _a15;
516
- var ToolCallRepairError = class extends import_provider15.AISDKError {
517
+ var ToolChoiceViolationError = class extends import_provider15.AISDKError {
517
518
  constructor({
518
- cause,
519
- originalError,
520
- message = `Error repairing tool call: ${(0, import_provider15.getErrorMessage)(cause)}`
519
+ toolChoice,
520
+ finishReason,
521
+ provider,
522
+ modelId,
523
+ content,
524
+ message = toolChoice.type === "required" ? "Model response did not contain a tool call even though tool choice was required." : `Model response did not contain a call to the required tool '${toolChoice.toolName}'.`
521
525
  }) {
522
- super({ name: name15, message, cause });
526
+ super({ name: name15, message });
523
527
  this[_a15] = true;
524
- this.originalError = originalError;
528
+ this.toolChoice = toolChoice;
529
+ this.finishReason = finishReason;
530
+ this.provider = provider;
531
+ this.modelId = modelId;
532
+ this.content = content;
525
533
  }
526
534
  static isInstance(error) {
527
535
  return import_provider15.AISDKError.hasMarker(error, marker15);
@@ -529,9 +537,31 @@ var ToolCallRepairError = class extends import_provider15.AISDKError {
529
537
  };
530
538
  _a15 = symbol15;
531
539
 
532
- // src/error/unsupported-model-version-error.ts
540
+ // src/error/tool-call-repair-error.ts
533
541
  var import_provider16 = require("@ai-sdk/provider");
534
- var UnsupportedModelVersionError = class extends import_provider16.AISDKError {
542
+ var name16 = "AI_ToolCallRepairError";
543
+ var marker16 = `vercel.ai.error.${name16}`;
544
+ var symbol16 = Symbol.for(marker16);
545
+ var _a16;
546
+ var ToolCallRepairError = class extends import_provider16.AISDKError {
547
+ constructor({
548
+ cause,
549
+ originalError,
550
+ message = `Error repairing tool call: ${(0, import_provider16.getErrorMessage)(cause)}`
551
+ }) {
552
+ super({ name: name16, message, cause });
553
+ this[_a16] = true;
554
+ this.originalError = originalError;
555
+ }
556
+ static isInstance(error) {
557
+ return import_provider16.AISDKError.hasMarker(error, marker16);
558
+ }
559
+ };
560
+ _a16 = symbol16;
561
+
562
+ // src/error/unsupported-model-version-error.ts
563
+ var import_provider17 = require("@ai-sdk/provider");
564
+ var UnsupportedModelVersionError = class extends import_provider17.AISDKError {
535
565
  constructor(options) {
536
566
  super({
537
567
  name: "AI_UnsupportedModelVersionError",
@@ -544,118 +574,118 @@ var UnsupportedModelVersionError = class extends import_provider16.AISDKError {
544
574
  };
545
575
 
546
576
  // src/error/ui-message-stream-error.ts
547
- var import_provider17 = require("@ai-sdk/provider");
548
- var name16 = "AI_UIMessageStreamError";
549
- var marker16 = `vercel.ai.error.${name16}`;
550
- var symbol16 = Symbol.for(marker16);
551
- var _a16;
552
- var UIMessageStreamError = class extends import_provider17.AISDKError {
577
+ var import_provider18 = require("@ai-sdk/provider");
578
+ var name17 = "AI_UIMessageStreamError";
579
+ var marker17 = `vercel.ai.error.${name17}`;
580
+ var symbol17 = Symbol.for(marker17);
581
+ var _a17;
582
+ var UIMessageStreamError = class extends import_provider18.AISDKError {
553
583
  constructor({
554
584
  chunkType,
555
585
  chunkId,
556
586
  message
557
587
  }) {
558
- super({ name: name16, message });
559
- this[_a16] = true;
588
+ super({ name: name17, message });
589
+ this[_a17] = true;
560
590
  this.chunkType = chunkType;
561
591
  this.chunkId = chunkId;
562
592
  }
563
593
  static isInstance(error) {
564
- return import_provider17.AISDKError.hasMarker(error, marker16);
594
+ return import_provider18.AISDKError.hasMarker(error, marker17);
565
595
  }
566
596
  };
567
- _a16 = symbol16;
597
+ _a17 = symbol17;
568
598
 
569
599
  // src/prompt/invalid-data-content-error.ts
570
- var import_provider18 = require("@ai-sdk/provider");
571
- var name17 = "AI_InvalidDataContentError";
572
- var marker17 = `vercel.ai.error.${name17}`;
573
- var symbol17 = Symbol.for(marker17);
574
- var _a17;
575
- var InvalidDataContentError = class extends import_provider18.AISDKError {
600
+ var import_provider19 = require("@ai-sdk/provider");
601
+ var name18 = "AI_InvalidDataContentError";
602
+ var marker18 = `vercel.ai.error.${name18}`;
603
+ var symbol18 = Symbol.for(marker18);
604
+ var _a18;
605
+ var InvalidDataContentError = class extends import_provider19.AISDKError {
576
606
  constructor({
577
607
  content,
578
608
  cause,
579
609
  message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
580
610
  }) {
581
- super({ name: name17, message, cause });
582
- this[_a17] = true;
611
+ super({ name: name18, message, cause });
612
+ this[_a18] = true;
583
613
  this.content = content;
584
614
  }
585
615
  static isInstance(error) {
586
- return import_provider18.AISDKError.hasMarker(error, marker17);
616
+ return import_provider19.AISDKError.hasMarker(error, marker18);
587
617
  }
588
618
  };
589
- _a17 = symbol17;
619
+ _a18 = symbol18;
590
620
 
591
621
  // src/prompt/invalid-message-role-error.ts
592
- var import_provider19 = require("@ai-sdk/provider");
593
- var name18 = "AI_InvalidMessageRoleError";
594
- var marker18 = `vercel.ai.error.${name18}`;
595
- var symbol18 = Symbol.for(marker18);
596
- var _a18;
597
- var InvalidMessageRoleError = class extends import_provider19.AISDKError {
622
+ var import_provider20 = require("@ai-sdk/provider");
623
+ var name19 = "AI_InvalidMessageRoleError";
624
+ var marker19 = `vercel.ai.error.${name19}`;
625
+ var symbol19 = Symbol.for(marker19);
626
+ var _a19;
627
+ var InvalidMessageRoleError = class extends import_provider20.AISDKError {
598
628
  constructor({
599
629
  role,
600
630
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
601
631
  }) {
602
- super({ name: name18, message });
603
- this[_a18] = true;
632
+ super({ name: name19, message });
633
+ this[_a19] = true;
604
634
  this.role = role;
605
635
  }
606
636
  static isInstance(error) {
607
- return import_provider19.AISDKError.hasMarker(error, marker18);
637
+ return import_provider20.AISDKError.hasMarker(error, marker19);
608
638
  }
609
639
  };
610
- _a18 = symbol18;
640
+ _a19 = symbol19;
611
641
 
612
642
  // src/prompt/message-conversion-error.ts
613
- var import_provider20 = require("@ai-sdk/provider");
614
- var name19 = "AI_MessageConversionError";
615
- var marker19 = `vercel.ai.error.${name19}`;
616
- var symbol19 = Symbol.for(marker19);
617
- var _a19;
618
- var MessageConversionError = class extends import_provider20.AISDKError {
643
+ var import_provider21 = require("@ai-sdk/provider");
644
+ var name20 = "AI_MessageConversionError";
645
+ var marker20 = `vercel.ai.error.${name20}`;
646
+ var symbol20 = Symbol.for(marker20);
647
+ var _a20;
648
+ var MessageConversionError = class extends import_provider21.AISDKError {
619
649
  constructor({
620
650
  originalMessage,
621
651
  message
622
652
  }) {
623
- super({ name: name19, message });
624
- this[_a19] = true;
653
+ super({ name: name20, message });
654
+ this[_a20] = true;
625
655
  this.originalMessage = originalMessage;
626
656
  }
627
657
  static isInstance(error) {
628
- return import_provider20.AISDKError.hasMarker(error, marker19);
658
+ return import_provider21.AISDKError.hasMarker(error, marker20);
629
659
  }
630
660
  };
631
- _a19 = symbol19;
661
+ _a20 = symbol20;
632
662
 
633
663
  // src/error/index.ts
634
664
  var import_provider_utils = require("@ai-sdk/provider-utils");
635
665
 
636
666
  // src/util/retry-error.ts
637
- var import_provider21 = require("@ai-sdk/provider");
638
- var name20 = "AI_RetryError";
639
- var marker20 = `vercel.ai.error.${name20}`;
640
- var symbol20 = Symbol.for(marker20);
641
- var _a20;
642
- var RetryError = class extends import_provider21.AISDKError {
667
+ var import_provider22 = require("@ai-sdk/provider");
668
+ var name21 = "AI_RetryError";
669
+ var marker21 = `vercel.ai.error.${name21}`;
670
+ var symbol21 = Symbol.for(marker21);
671
+ var _a21;
672
+ var RetryError = class extends import_provider22.AISDKError {
643
673
  constructor({
644
674
  message,
645
675
  reason,
646
676
  errors
647
677
  }) {
648
- super({ name: name20, message });
649
- this[_a20] = true;
678
+ super({ name: name21, message });
679
+ this[_a21] = true;
650
680
  this.reason = reason;
651
681
  this.errors = errors;
652
682
  this.lastError = errors[errors.length - 1];
653
683
  }
654
684
  static isInstance(error) {
655
- return import_provider21.AISDKError.hasMarker(error, marker20);
685
+ return import_provider22.AISDKError.hasMarker(error, marker21);
656
686
  }
657
687
  };
658
- _a20 = symbol20;
688
+ _a21 = symbol21;
659
689
 
660
690
  // src/util/as-array.ts
661
691
  function asArray(value) {
@@ -935,7 +965,7 @@ function resolveEmbeddingModel(model) {
935
965
  return getGlobalProvider().embeddingModel(model);
936
966
  }
937
967
  function resolveTranscriptionModel(model) {
938
- var _a22, _b;
968
+ var _a23, _b;
939
969
  if (typeof model !== "string") {
940
970
  if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
941
971
  const unsupportedModel = model;
@@ -947,10 +977,10 @@ function resolveTranscriptionModel(model) {
947
977
  }
948
978
  return asTranscriptionModelV3(model);
949
979
  }
950
- return (_b = (_a22 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a22, model);
980
+ return (_b = (_a23 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a23, model);
951
981
  }
952
982
  function resolveSpeechModel(model) {
953
- var _a22, _b;
983
+ var _a23, _b;
954
984
  if (typeof model !== "string") {
955
985
  if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
956
986
  const unsupportedModel = model;
@@ -962,7 +992,7 @@ function resolveSpeechModel(model) {
962
992
  }
963
993
  return asSpeechModelV3(model);
964
994
  }
965
- return (_b = (_a22 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a22, model);
995
+ return (_b = (_a23 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a23, model);
966
996
  }
967
997
  function resolveImageModel(model) {
968
998
  if (typeof model !== "string") {
@@ -1021,8 +1051,8 @@ function resolveRerankingModel(model) {
1021
1051
  return model;
1022
1052
  }
1023
1053
  function getGlobalProvider() {
1024
- var _a22;
1025
- return (_a22 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a22 : import_gateway.gateway;
1054
+ var _a23;
1055
+ return (_a23 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a23 : import_gateway.gateway;
1026
1056
  }
1027
1057
 
1028
1058
  // src/prompt/call-settings.ts
@@ -1304,7 +1334,7 @@ function detectMediaType({
1304
1334
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
1305
1335
 
1306
1336
  // src/version.ts
1307
- var VERSION = true ? "6.0.270" : "0.0.0-test";
1337
+ var VERSION = true ? "6.0.272" : "0.0.0-test";
1308
1338
 
1309
1339
  // src/util/download/download.ts
1310
1340
  var download = async ({
@@ -1312,7 +1342,7 @@ var download = async ({
1312
1342
  maxBytes,
1313
1343
  abortSignal
1314
1344
  }) => {
1315
- var _a22;
1345
+ var _a23;
1316
1346
  const urlText = url.toString();
1317
1347
  try {
1318
1348
  const headers = (0, import_provider_utils3.withUserAgentSuffix)(
@@ -1340,7 +1370,7 @@ var download = async ({
1340
1370
  });
1341
1371
  return {
1342
1372
  data,
1343
- mediaType: (_a22 = response.headers.get("content-type")) != null ? _a22 : void 0
1373
+ mediaType: (_a23 = response.headers.get("content-type")) != null ? _a23 : void 0
1344
1374
  };
1345
1375
  } catch (error) {
1346
1376
  if (import_provider_utils3.DownloadError.isInstance(error)) {
@@ -1394,7 +1424,7 @@ function mergeObjects(base, overrides) {
1394
1424
  }
1395
1425
 
1396
1426
  // src/prompt/data-content.ts
1397
- var import_provider23 = require("@ai-sdk/provider");
1427
+ var import_provider24 = require("@ai-sdk/provider");
1398
1428
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
1399
1429
  var import_v4 = require("zod/v4");
1400
1430
 
@@ -1422,8 +1452,8 @@ var dataContentSchema = import_v4.z.union([
1422
1452
  import_v4.z.custom(
1423
1453
  // Buffer might not be available in some environments such as CloudFlare:
1424
1454
  (value) => {
1425
- var _a22, _b;
1426
- return (_b = (_a22 = globalThis.Buffer) == null ? void 0 : _a22.isBuffer(value)) != null ? _b : false;
1455
+ var _a23, _b;
1456
+ return (_b = (_a23 = globalThis.Buffer) == null ? void 0 : _a23.isBuffer(value)) != null ? _b : false;
1427
1457
  },
1428
1458
  { message: "Must be a Buffer" }
1429
1459
  )
@@ -1446,7 +1476,7 @@ function convertToLanguageModelV3DataContent(content) {
1446
1476
  content.toString()
1447
1477
  );
1448
1478
  if (dataUrlMediaType == null || base64Content == null) {
1449
- throw new import_provider23.AISDKError({
1479
+ throw new import_provider24.AISDKError({
1450
1480
  name: "InvalidDataContentError",
1451
1481
  message: `Invalid data URL format in content ${content.toString()}`
1452
1482
  });
@@ -1737,7 +1767,7 @@ function convertToLanguageModelMessage({
1737
1767
  }
1738
1768
  }
1739
1769
  async function downloadAssets(messages, download2, supportedUrls) {
1740
- var _a22;
1770
+ var _a23;
1741
1771
  const downloadableFiles = [];
1742
1772
  for (const message of messages) {
1743
1773
  if (message.role === "user" && Array.isArray(message.content)) {
@@ -1745,7 +1775,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
1745
1775
  if (part.type === "image" || part.type === "file") {
1746
1776
  downloadableFiles.push({
1747
1777
  data: part.type === "image" ? part.image : part.data,
1748
- mediaType: (_a22 = part.mediaType) != null ? _a22 : part.type === "image" ? "image/*" : void 0
1778
+ mediaType: (_a23 = part.mediaType) != null ? _a23 : part.type === "image" ? "image/*" : void 0
1749
1779
  });
1750
1780
  }
1751
1781
  }
@@ -1797,7 +1827,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
1797
1827
  );
1798
1828
  }
1799
1829
  function convertPartToLanguageModelPart(part, downloadedAssets) {
1800
- var _a22;
1830
+ var _a23;
1801
1831
  if (part.type === "text") {
1802
1832
  return {
1803
1833
  type: "text",
@@ -1830,7 +1860,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1830
1860
  switch (type) {
1831
1861
  case "image": {
1832
1862
  if (data instanceof Uint8Array || typeof data === "string") {
1833
- mediaType = (_a22 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a22 : mediaType;
1863
+ mediaType = (_a23 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a23 : mediaType;
1834
1864
  }
1835
1865
  return {
1836
1866
  type: "file",
@@ -1865,14 +1895,14 @@ function mapToolResultOutput({
1865
1895
  return {
1866
1896
  type: "content",
1867
1897
  value: output.value.map((item) => {
1868
- var _a22, _b;
1898
+ var _a23, _b;
1869
1899
  if (item.type === "image-url") {
1870
1900
  const downloadedFile = downloadedAssets[new URL(item.url).toString()];
1871
1901
  if (downloadedFile) {
1872
1902
  return {
1873
1903
  type: "image-data",
1874
1904
  data: convertDataContentToBase64String(downloadedFile.data),
1875
- mediaType: (_a22 = downloadedFile.mediaType) != null ? _a22 : "image/*",
1905
+ mediaType: (_a23 = downloadedFile.mediaType) != null ? _a23 : "image/*",
1876
1906
  providerOptions: item.providerOptions
1877
1907
  };
1878
1908
  }
@@ -1910,7 +1940,7 @@ function mapToolResultOutput({
1910
1940
  }
1911
1941
 
1912
1942
  // src/prompt/create-tool-model-output.ts
1913
- var import_provider24 = require("@ai-sdk/provider");
1943
+ var import_provider25 = require("@ai-sdk/provider");
1914
1944
  async function createToolModelOutput({
1915
1945
  toolCallId,
1916
1946
  input,
@@ -1919,7 +1949,7 @@ async function createToolModelOutput({
1919
1949
  errorMode
1920
1950
  }) {
1921
1951
  if (errorMode === "text") {
1922
- return { type: "error-text", value: (0, import_provider24.getErrorMessage)(output) };
1952
+ return { type: "error-text", value: (0, import_provider25.getErrorMessage)(output) };
1923
1953
  } else if (errorMode === "json") {
1924
1954
  return { type: "error-json", value: toJSONValue(output) };
1925
1955
  }
@@ -2046,10 +2076,10 @@ async function prepareToolsAndToolChoice({
2046
2076
  };
2047
2077
  }
2048
2078
  const filteredTools = activeTools != null ? Object.entries(tools).filter(
2049
- ([name22]) => activeTools.includes(name22)
2079
+ ([name23]) => activeTools.includes(name23)
2050
2080
  ) : Object.entries(tools);
2051
2081
  const languageModelTools = [];
2052
- for (const [name22, tool2] of filteredTools) {
2082
+ for (const [name23, tool2] of filteredTools) {
2053
2083
  const toolType = tool2.type;
2054
2084
  switch (toolType) {
2055
2085
  case void 0:
@@ -2057,7 +2087,7 @@ async function prepareToolsAndToolChoice({
2057
2087
  case "function":
2058
2088
  languageModelTools.push({
2059
2089
  type: "function",
2060
- name: name22,
2090
+ name: name23,
2061
2091
  description: tool2.description,
2062
2092
  inputSchema: await (0, import_provider_utils6.asSchema)(tool2.inputSchema).jsonSchema,
2063
2093
  ...tool2.inputExamples != null ? { inputExamples: tool2.inputExamples } : {},
@@ -2068,7 +2098,7 @@ async function prepareToolsAndToolChoice({
2068
2098
  case "provider":
2069
2099
  languageModelTools.push({
2070
2100
  type: "provider",
2071
- name: name22,
2101
+ name: name23,
2072
2102
  id: tool2.id,
2073
2103
  args: tool2.args
2074
2104
  });
@@ -2086,7 +2116,7 @@ async function prepareToolsAndToolChoice({
2086
2116
  }
2087
2117
 
2088
2118
  // src/prompt/standardize-prompt.ts
2089
- var import_provider25 = require("@ai-sdk/provider");
2119
+ var import_provider26 = require("@ai-sdk/provider");
2090
2120
  var import_provider_utils7 = require("@ai-sdk/provider-utils");
2091
2121
  var import_v46 = require("zod/v4");
2092
2122
 
@@ -2304,19 +2334,19 @@ async function standardizePrompt({
2304
2334
  messages
2305
2335
  }) {
2306
2336
  if (prompt == null && messages == null) {
2307
- throw new import_provider25.InvalidPromptError({
2337
+ throw new import_provider26.InvalidPromptError({
2308
2338
  prompt,
2309
2339
  message: "prompt or messages must be defined"
2310
2340
  });
2311
2341
  }
2312
2342
  if (prompt != null && messages != null) {
2313
- throw new import_provider25.InvalidPromptError({
2343
+ throw new import_provider26.InvalidPromptError({
2314
2344
  prompt,
2315
2345
  message: "prompt and messages cannot be defined at the same time"
2316
2346
  });
2317
2347
  }
2318
2348
  if (typeof system !== "string" && !asArray(system).every((message) => message.role === "system")) {
2319
- throw new import_provider25.InvalidPromptError({
2349
+ throw new import_provider26.InvalidPromptError({
2320
2350
  prompt,
2321
2351
  message: "system must be a string, SystemModelMessage, or array of SystemModelMessage"
2322
2352
  });
@@ -2326,20 +2356,20 @@ async function standardizePrompt({
2326
2356
  } else if (prompt != null && Array.isArray(prompt)) {
2327
2357
  messages = prompt;
2328
2358
  } else if (messages == null) {
2329
- throw new import_provider25.InvalidPromptError({
2359
+ throw new import_provider26.InvalidPromptError({
2330
2360
  prompt,
2331
2361
  message: "prompt or messages must be defined"
2332
2362
  });
2333
2363
  }
2334
2364
  if (messages.length === 0) {
2335
- throw new import_provider25.InvalidPromptError({
2365
+ throw new import_provider26.InvalidPromptError({
2336
2366
  prompt,
2337
2367
  message: "messages must not be empty"
2338
2368
  });
2339
2369
  }
2340
2370
  if (messages.some((message) => message.role === "system")) {
2341
2371
  if (allowSystemInMessages === false) {
2342
- throw new import_provider25.InvalidPromptError({
2372
+ throw new import_provider26.InvalidPromptError({
2343
2373
  prompt,
2344
2374
  message: "System messages are not allowed in the prompt or messages fields. Use the system option instead."
2345
2375
  });
@@ -2355,7 +2385,7 @@ async function standardizePrompt({
2355
2385
  schema: import_v46.z.array(modelMessageSchema)
2356
2386
  });
2357
2387
  if (!validationResult.success) {
2358
- throw new import_provider25.InvalidPromptError({
2388
+ throw new import_provider26.InvalidPromptError({
2359
2389
  prompt,
2360
2390
  message: "The messages do not match the ModelMessage[] schema.",
2361
2391
  cause: validationResult.error
@@ -2366,14 +2396,14 @@ async function standardizePrompt({
2366
2396
 
2367
2397
  // src/prompt/wrap-gateway-error.ts
2368
2398
  var import_gateway2 = require("@ai-sdk/gateway");
2369
- var import_provider26 = require("@ai-sdk/provider");
2399
+ var import_provider27 = require("@ai-sdk/provider");
2370
2400
  function wrapGatewayError(error) {
2371
2401
  if (!import_gateway2.GatewayAuthenticationError.isInstance(error))
2372
2402
  return error;
2373
2403
  const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === "production";
2374
2404
  const moreInfoURL = "https://ai-sdk.dev/unauthenticated-ai-gateway";
2375
2405
  if (isProductionEnv) {
2376
- return new import_provider26.AISDKError({
2406
+ return new import_provider27.AISDKError({
2377
2407
  name: "GatewayError",
2378
2408
  message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`
2379
2409
  });
@@ -2414,7 +2444,7 @@ function getBaseTelemetryAttributes({
2414
2444
  telemetry,
2415
2445
  headers
2416
2446
  }) {
2417
- var _a22;
2447
+ var _a23;
2418
2448
  return {
2419
2449
  "ai.model.provider": model.provider,
2420
2450
  "ai.model.id": model.modelId,
@@ -2433,7 +2463,7 @@ function getBaseTelemetryAttributes({
2433
2463
  return attributes;
2434
2464
  }, {}),
2435
2465
  // add metadata as attributes:
2436
- ...Object.entries((_a22 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a22 : {}).reduce(
2466
+ ...Object.entries((_a23 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a23 : {}).reduce(
2437
2467
  (attributes, [key, value]) => {
2438
2468
  attributes[`ai.telemetry.metadata.${key}`] = value;
2439
2469
  return attributes;
@@ -2458,7 +2488,7 @@ var noopTracer = {
2458
2488
  startSpan() {
2459
2489
  return noopSpan;
2460
2490
  },
2461
- startActiveSpan(name22, arg1, arg2, arg3) {
2491
+ startActiveSpan(name23, arg1, arg2, arg3) {
2462
2492
  if (typeof arg1 === "function") {
2463
2493
  return arg1(noopSpan);
2464
2494
  }
@@ -2528,7 +2558,7 @@ function getTracer({
2528
2558
  // src/telemetry/record-span.ts
2529
2559
  var import_api2 = require("@opentelemetry/api");
2530
2560
  async function recordSpan({
2531
- name: name22,
2561
+ name: name23,
2532
2562
  tracer,
2533
2563
  attributes,
2534
2564
  fn,
@@ -2536,7 +2566,7 @@ async function recordSpan({
2536
2566
  endOnError = endWhenDone
2537
2567
  }) {
2538
2568
  return tracer.startActiveSpan(
2539
- name22,
2569
+ name23,
2540
2570
  { attributes: await attributes },
2541
2571
  async (span) => {
2542
2572
  const ctx = import_api2.context.active();
@@ -2666,15 +2696,15 @@ function registerTelemetryIntegration(integration) {
2666
2696
  globalThis.AI_SDK_TELEMETRY_INTEGRATIONS.push(integration);
2667
2697
  }
2668
2698
  function getGlobalTelemetryIntegrations() {
2669
- var _a22;
2670
- return (_a22 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a22 : [];
2699
+ var _a23;
2700
+ return (_a23 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a23 : [];
2671
2701
  }
2672
2702
 
2673
2703
  // src/telemetry/get-global-telemetry-integration.ts
2674
2704
  function bindTelemetryIntegration(integration) {
2675
- var _a22, _b, _c, _d, _e, _f;
2705
+ var _a23, _b, _c, _d, _e, _f;
2676
2706
  return {
2677
- onStart: (_a22 = integration.onStart) == null ? void 0 : _a22.bind(integration),
2707
+ onStart: (_a23 = integration.onStart) == null ? void 0 : _a23.bind(integration),
2678
2708
  onStepStart: (_b = integration.onStepStart) == null ? void 0 : _b.bind(integration),
2679
2709
  onToolCallStart: (_c = integration.onToolCallStart) == null ? void 0 : _c.bind(integration),
2680
2710
  onToolCallFinish: (_d = integration.onToolCallFinish) == null ? void 0 : _d.bind(integration),
@@ -2758,12 +2788,12 @@ function createNullLanguageModelUsage() {
2758
2788
  };
2759
2789
  }
2760
2790
  function addLanguageModelUsage(usage1, usage2) {
2761
- var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2791
+ var _a23, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2762
2792
  return {
2763
2793
  inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
2764
2794
  inputTokenDetails: {
2765
2795
  noCacheTokens: addTokenCounts(
2766
- (_a22 = usage1.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
2796
+ (_a23 = usage1.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
2767
2797
  (_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens
2768
2798
  ),
2769
2799
  cacheReadTokens: addTokenCounts(
@@ -2809,14 +2839,14 @@ function addImageModelUsage(usage1, usage2) {
2809
2839
  }
2810
2840
 
2811
2841
  // src/util/retry-with-exponential-backoff.ts
2812
- var import_provider27 = require("@ai-sdk/provider");
2842
+ var import_provider28 = require("@ai-sdk/provider");
2813
2843
  var import_gateway3 = require("@ai-sdk/gateway");
2814
2844
  var import_provider_utils8 = require("@ai-sdk/provider-utils");
2815
2845
  function getRetryDelayInMs({
2816
2846
  error,
2817
2847
  exponentialBackoffDelay
2818
2848
  }) {
2819
- const headers = import_provider27.APICallError.isInstance(error) ? error.responseHeaders : import_provider27.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
2849
+ const headers = import_provider28.APICallError.isInstance(error) ? error.responseHeaders : import_provider28.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
2820
2850
  if (!headers)
2821
2851
  return exponentialBackoffDelay;
2822
2852
  let ms;
@@ -2851,7 +2881,7 @@ var retryWithExponentialBackoffRespectingRetryHeaders = ({
2851
2881
  initialDelayInMs,
2852
2882
  backoffFactor,
2853
2883
  abortSignal,
2854
- shouldRetry: (error) => error instanceof Error && (import_provider27.APICallError.isInstance(error) && error.isRetryable === true || import_gateway3.GatewayError.isInstance(error) && error.isRetryable === true),
2884
+ shouldRetry: (error) => error instanceof Error && (import_provider28.APICallError.isInstance(error) && error.isRetryable === true || import_gateway3.GatewayError.isInstance(error) && error.isRetryable === true),
2855
2885
  getDelayInMs: ({ error, exponentialBackoffDelay }) => getRetryDelayInMs({
2856
2886
  error,
2857
2887
  exponentialBackoffDelay
@@ -2990,8 +3020,8 @@ var import_provider_utils9 = require("@ai-sdk/provider-utils");
2990
3020
 
2991
3021
  // src/util/now.ts
2992
3022
  function now() {
2993
- var _a22, _b;
2994
- return (_b = (_a22 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a22.now()) != null ? _b : Date.now();
3023
+ var _a23, _b;
3024
+ return (_b = (_a23 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a23.now()) != null ? _b : Date.now();
2995
3025
  }
2996
3026
 
2997
3027
  // src/generate-text/execute-tool-call.ts
@@ -3009,7 +3039,7 @@ async function executeToolCall({
3009
3039
  onToolCallStart,
3010
3040
  onToolCallFinish
3011
3041
  }) {
3012
- var _a22;
3042
+ var _a23;
3013
3043
  const { toolName, toolCallId, input } = toolCall;
3014
3044
  const tool2 = tools == null ? void 0 : tools[toolName];
3015
3045
  if ((tool2 == null ? void 0 : tool2.execute) == null) {
@@ -3035,7 +3065,7 @@ async function executeToolCall({
3035
3065
  telemetry
3036
3066
  }),
3037
3067
  ...Object.fromEntries(
3038
- Object.entries((_a22 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a22 : {}).map(([key, value]) => [
3068
+ Object.entries((_a23 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a23 : {}).map(([key, value]) => [
3039
3069
  `ai.telemetry.metadata.${key}`,
3040
3070
  value
3041
3071
  ])
@@ -3164,7 +3194,7 @@ function filterActiveTools({
3164
3194
  }
3165
3195
  return Object.fromEntries(
3166
3196
  Object.entries(tools).filter(
3167
- ([name22]) => activeTools.includes(name22)
3197
+ ([name23]) => activeTools.includes(name23)
3168
3198
  )
3169
3199
  );
3170
3200
  }
@@ -3327,7 +3357,7 @@ async function validateApprovedToolApprovals({
3327
3357
  experimental_context,
3328
3358
  toolApprovalSecret
3329
3359
  }) {
3330
- var _a22;
3360
+ var _a23;
3331
3361
  const approved = [];
3332
3362
  const denied = [];
3333
3363
  const invalid = [];
@@ -3389,7 +3419,7 @@ async function validateApprovedToolApprovals({
3389
3419
  approvalResponse: {
3390
3420
  ...approval.approvalResponse,
3391
3421
  approved: false,
3392
- reason: (_a22 = approval.approvalResponse.reason) != null ? _a22 : `Tool "${toolCall.toolName}" does not require approval`
3422
+ reason: (_a23 = approval.approvalResponse.reason) != null ? _a23 : `Tool "${toolCall.toolName}" does not require approval`
3393
3423
  }
3394
3424
  });
3395
3425
  }
@@ -3410,7 +3440,7 @@ __export(output_exports, {
3410
3440
  object: () => object,
3411
3441
  text: () => text
3412
3442
  });
3413
- var import_provider28 = require("@ai-sdk/provider");
3443
+ var import_provider29 = require("@ai-sdk/provider");
3414
3444
  var import_provider_utils14 = require("@ai-sdk/provider-utils");
3415
3445
 
3416
3446
  // src/util/parse-partial-json.ts
@@ -3785,7 +3815,7 @@ var text = () => ({
3785
3815
  });
3786
3816
  var object = ({
3787
3817
  schema: inputSchema,
3788
- name: name22,
3818
+ name: name23,
3789
3819
  description
3790
3820
  }) => {
3791
3821
  const schema = (0, import_provider_utils14.asSchema)(inputSchema);
@@ -3794,7 +3824,7 @@ var object = ({
3794
3824
  responseFormat: (0, import_provider_utils14.resolve)(schema.jsonSchema).then((jsonSchema2) => ({
3795
3825
  type: "json",
3796
3826
  schema: jsonSchema2,
3797
- ...name22 != null && { name: name22 },
3827
+ ...name23 != null && { name: name23 },
3798
3828
  ...description != null && { description }
3799
3829
  })),
3800
3830
  async parseCompleteOutput({ text: text2 }, context2) {
@@ -3848,7 +3878,7 @@ var object = ({
3848
3878
  };
3849
3879
  var array = ({
3850
3880
  element: inputElementSchema,
3851
- name: name22,
3881
+ name: name23,
3852
3882
  description
3853
3883
  }) => {
3854
3884
  const elementSchema = (0, import_provider_utils14.asSchema)(inputElementSchema);
@@ -3868,7 +3898,7 @@ var array = ({
3868
3898
  required: ["elements"],
3869
3899
  additionalProperties: false
3870
3900
  },
3871
- ...name22 != null && { name: name22 },
3901
+ ...name23 != null && { name: name23 },
3872
3902
  ...description != null && { description }
3873
3903
  };
3874
3904
  }),
@@ -3888,7 +3918,7 @@ var array = ({
3888
3918
  if (outerValue == null || typeof outerValue !== "object" || !("elements" in outerValue) || !Array.isArray(outerValue.elements)) {
3889
3919
  throw new NoObjectGeneratedError({
3890
3920
  message: "No object generated: response did not match schema.",
3891
- cause: new import_provider28.TypeValidationError({
3921
+ cause: new import_provider29.TypeValidationError({
3892
3922
  value: outerValue,
3893
3923
  cause: "response must be an object with an elements array"
3894
3924
  }),
@@ -3962,7 +3992,7 @@ var array = ({
3962
3992
  };
3963
3993
  var choice = ({
3964
3994
  options: choiceOptions,
3965
- name: name22,
3995
+ name: name23,
3966
3996
  description
3967
3997
  }) => {
3968
3998
  return {
@@ -3979,7 +4009,7 @@ var choice = ({
3979
4009
  required: ["result"],
3980
4010
  additionalProperties: false
3981
4011
  },
3982
- ...name22 != null && { name: name22 },
4012
+ ...name23 != null && { name: name23 },
3983
4013
  ...description != null && { description }
3984
4014
  }),
3985
4015
  async parseCompleteOutput({ text: text2 }, context2) {
@@ -3998,7 +4028,7 @@ var choice = ({
3998
4028
  if (outerValue == null || typeof outerValue !== "object" || !("result" in outerValue) || typeof outerValue.result !== "string" || !choiceOptions.includes(outerValue.result)) {
3999
4029
  throw new NoObjectGeneratedError({
4000
4030
  message: "No object generated: response did not match schema.",
4001
- cause: new import_provider28.TypeValidationError({
4031
+ cause: new import_provider29.TypeValidationError({
4002
4032
  value: outerValue,
4003
4033
  cause: "response must be an object that contains a choice value."
4004
4034
  }),
@@ -4040,14 +4070,14 @@ var choice = ({
4040
4070
  };
4041
4071
  };
4042
4072
  var json = ({
4043
- name: name22,
4073
+ name: name23,
4044
4074
  description
4045
4075
  } = {}) => {
4046
4076
  return {
4047
4077
  name: "json",
4048
4078
  responseFormat: Promise.resolve({
4049
4079
  type: "json",
4050
- ...name22 != null && { name: name22 },
4080
+ ...name23 != null && { name: name23 },
4051
4081
  ...description != null && { description }
4052
4082
  }),
4053
4083
  async parseCompleteOutput({ text: text2 }, context2) {
@@ -4218,9 +4248,9 @@ function prepareStepCallSettings({
4218
4248
  callSettings,
4219
4249
  stepSettings
4220
4250
  }) {
4221
- var _a22, _b, _c, _d, _e, _f, _g, _h;
4251
+ var _a23, _b, _c, _d, _e, _f, _g, _h;
4222
4252
  return prepareCallSettings({
4223
- maxOutputTokens: (_a22 = stepSettings == null ? void 0 : stepSettings.maxOutputTokens) != null ? _a22 : callSettings.maxOutputTokens,
4253
+ maxOutputTokens: (_a23 = stepSettings == null ? void 0 : stepSettings.maxOutputTokens) != null ? _a23 : callSettings.maxOutputTokens,
4224
4254
  temperature: (_b = stepSettings == null ? void 0 : stepSettings.temperature) != null ? _b : callSettings.temperature,
4225
4255
  topP: (_c = stepSettings == null ? void 0 : stepSettings.topP) != null ? _c : callSettings.topP,
4226
4256
  topK: (_d = stepSettings == null ? void 0 : stepSettings.topK) != null ? _d : callSettings.topK,
@@ -4314,8 +4344,8 @@ function isLoopFinished() {
4314
4344
  }
4315
4345
  function hasToolCall(toolName) {
4316
4346
  return ({ steps }) => {
4317
- var _a22, _b, _c;
4318
- return (_c = (_b = (_a22 = steps[steps.length - 1]) == null ? void 0 : _a22.toolCalls) == null ? void 0 : _b.some(
4347
+ var _a23, _b, _c;
4348
+ return (_c = (_b = (_a23 = steps[steps.length - 1]) == null ? void 0 : _a23.toolCalls) == null ? void 0 : _b.some(
4319
4349
  (toolCall) => toolCall.toolName === toolName
4320
4350
  )) != null ? _c : false;
4321
4351
  };
@@ -4645,7 +4675,7 @@ async function generateText({
4645
4675
  }),
4646
4676
  tracer,
4647
4677
  fn: async (span) => {
4648
- var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
4678
+ var _a23, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
4649
4679
  const initialMessages = initialPrompt.messages;
4650
4680
  const responseMessages = [];
4651
4681
  const {
@@ -4770,7 +4800,7 @@ async function generateText({
4770
4800
  experimental_context
4771
4801
  }));
4772
4802
  const stepModel = resolveLanguageModel(
4773
- (_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
4803
+ (_a23 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a23 : model
4774
4804
  );
4775
4805
  const stepModelInfo = {
4776
4806
  provider: stepModel.provider,
@@ -4870,7 +4900,7 @@ async function generateText({
4870
4900
  }),
4871
4901
  tracer,
4872
4902
  fn: async (span2) => {
4873
- var _a23, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
4903
+ var _a24, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
4874
4904
  const result = await stepModel.doGenerate({
4875
4905
  ...stepCallSettings,
4876
4906
  tools: stepTools,
@@ -4882,7 +4912,7 @@ async function generateText({
4882
4912
  headers: headersWithUserAgent
4883
4913
  });
4884
4914
  const responseData = {
4885
- id: (_b2 = (_a23 = result.response) == null ? void 0 : _a23.id) != null ? _b2 : generateId2(),
4915
+ id: (_b2 = (_a24 = result.response) == null ? void 0 : _a24.id) != null ? _b2 : generateId2(),
4886
4916
  timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : /* @__PURE__ */ new Date(),
4887
4917
  modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
4888
4918
  headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
@@ -4950,6 +4980,18 @@ async function generateText({
4950
4980
  })
4951
4981
  )
4952
4982
  );
4983
+ const enforcedToolChoice = (stepToolChoice == null ? void 0 : stepToolChoice.type) === "required" || (stepToolChoice == null ? void 0 : stepToolChoice.type) === "tool" ? stepToolChoice : void 0;
4984
+ if (enforcedToolChoice != null && !stepToolCalls.some(
4985
+ (toolCall) => enforcedToolChoice.type === "required" || toolCall.toolName === enforcedToolChoice.toolName
4986
+ )) {
4987
+ throw new ToolChoiceViolationError({
4988
+ toolChoice: enforcedToolChoice,
4989
+ finishReason: currentModelResponse.finishReason.unified,
4990
+ provider: stepModel.provider,
4991
+ modelId: stepModel.modelId,
4992
+ content: currentModelResponse.content
4993
+ });
4994
+ }
4953
4995
  const toolApprovalRequests = {};
4954
4996
  for (const toolCall of stepToolCalls) {
4955
4997
  if (toolCall.invalid) {
@@ -5470,7 +5512,7 @@ function asContent({
5470
5512
  }
5471
5513
 
5472
5514
  // src/generate-text/stream-text.ts
5473
- var import_provider29 = require("@ai-sdk/provider");
5515
+ var import_provider30 = require("@ai-sdk/provider");
5474
5516
  var import_provider_utils20 = require("@ai-sdk/provider-utils");
5475
5517
 
5476
5518
  // src/util/prepare-headers.ts
@@ -5867,7 +5909,7 @@ function processUIMessageStream({
5867
5909
  new TransformStream({
5868
5910
  async transform(chunk, controller) {
5869
5911
  await runUpdateMessageJob(async ({ state, write }) => {
5870
- var _a22, _b, _c, _d;
5912
+ var _a23, _b, _c, _d;
5871
5913
  function getCurrentStepParts() {
5872
5914
  const parts = state.message.parts;
5873
5915
  let currentStepStartIndex = parts.length - 1;
@@ -5904,7 +5946,7 @@ function processUIMessageStream({
5904
5946
  return toolInvocation;
5905
5947
  }
5906
5948
  function updateToolPart(options, existingPart) {
5907
- var _a23;
5949
+ var _a24;
5908
5950
  const part = existingPart != null ? existingPart : getCurrentStepParts().find(
5909
5951
  (part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
5910
5952
  );
@@ -5923,7 +5965,7 @@ function processUIMessageStream({
5923
5965
  if (options.toolMetadata !== void 0) {
5924
5966
  anyPart.toolMetadata = options.toolMetadata;
5925
5967
  }
5926
- anyPart.providerExecuted = (_a23 = anyOptions.providerExecuted) != null ? _a23 : part.providerExecuted;
5968
+ anyPart.providerExecuted = (_a24 = anyOptions.providerExecuted) != null ? _a24 : part.providerExecuted;
5927
5969
  const providerMetadata = anyOptions.providerMetadata;
5928
5970
  if (providerMetadata != null) {
5929
5971
  if (options.state === "output-available" || options.state === "output-error") {
@@ -5952,7 +5994,7 @@ function processUIMessageStream({
5952
5994
  }
5953
5995
  }
5954
5996
  function updateDynamicToolPart(options, existingPart) {
5955
- var _a23, _b2;
5997
+ var _a24, _b2;
5956
5998
  const part = existingPart != null ? existingPart : getCurrentStepParts().find(
5957
5999
  (part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
5958
6000
  );
@@ -5964,7 +6006,7 @@ function processUIMessageStream({
5964
6006
  anyPart.input = anyOptions.input;
5965
6007
  anyPart.output = anyOptions.output;
5966
6008
  anyPart.errorText = anyOptions.errorText;
5967
- anyPart.rawInput = (_a23 = anyOptions.rawInput) != null ? _a23 : anyPart.rawInput;
6009
+ anyPart.rawInput = (_a24 = anyOptions.rawInput) != null ? _a24 : anyPart.rawInput;
5968
6010
  anyPart.preliminary = anyOptions.preliminary;
5969
6011
  if (options.title !== void 0) {
5970
6012
  anyPart.title = options.title;
@@ -6039,7 +6081,7 @@ function processUIMessageStream({
6039
6081
  });
6040
6082
  }
6041
6083
  textPart.text += chunk.delta;
6042
- textPart.providerMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textPart.providerMetadata;
6084
+ textPart.providerMetadata = (_a23 = chunk.providerMetadata) != null ? _a23 : textPart.providerMetadata;
6043
6085
  write();
6044
6086
  break;
6045
6087
  }
@@ -6446,7 +6488,8 @@ function handleUIMessageStreamFinish({
6446
6488
  onStepFinish,
6447
6489
  onFinish,
6448
6490
  onError,
6449
- stream
6491
+ stream,
6492
+ getOutcome
6450
6493
  }) {
6451
6494
  let lastMessage = originalMessages == null ? void 0 : originalMessages[originalMessages.length - 1];
6452
6495
  if ((lastMessage == null ? void 0 : lastMessage.role) !== "assistant") {
@@ -6455,19 +6498,34 @@ function handleUIMessageStreamFinish({
6455
6498
  messageId = lastMessage.id;
6456
6499
  }
6457
6500
  let isAborted = false;
6501
+ let hasProcessingFailure = false;
6502
+ let processingError;
6503
+ const recordProcessingFailure = (error) => {
6504
+ hasProcessingFailure = true;
6505
+ processingError = error;
6506
+ };
6458
6507
  const idInjectedStream = stream.pipeThrough(
6459
6508
  new TransformStream({
6460
6509
  transform(chunk, controller) {
6461
- if (chunk.type === "start") {
6462
- const startChunk = chunk;
6463
- if (startChunk.messageId == null && messageId != null) {
6464
- startChunk.messageId = messageId;
6510
+ try {
6511
+ let outputChunk = chunk;
6512
+ if (chunk.type === "start") {
6513
+ const startChunk = chunk;
6514
+ if (startChunk.messageId == null && messageId != null) {
6515
+ outputChunk = {
6516
+ ...startChunk,
6517
+ messageId
6518
+ };
6519
+ }
6465
6520
  }
6521
+ if (chunk.type === "abort") {
6522
+ isAborted = true;
6523
+ }
6524
+ controller.enqueue(outputChunk);
6525
+ } catch (error) {
6526
+ recordProcessingFailure(error);
6527
+ throw error;
6466
6528
  }
6467
- if (chunk.type === "abort") {
6468
- isAborted = true;
6469
- }
6470
- controller.enqueue(chunk);
6471
6529
  }
6472
6530
  })
6473
6531
  );
@@ -6480,19 +6538,28 @@ function handleUIMessageStreamFinish({
6480
6538
  // will be overridden by the stream
6481
6539
  });
6482
6540
  const runUpdateMessageJob = async (job) => {
6483
- await job({ state, write: () => {
6484
- } });
6541
+ try {
6542
+ await job({ state, write: () => {
6543
+ } });
6544
+ } catch (error) {
6545
+ recordProcessingFailure(error);
6546
+ throw error;
6547
+ }
6485
6548
  };
6486
6549
  let finishCalled = false;
6487
6550
  const callOnFinish = async () => {
6551
+ var _a23;
6488
6552
  if (finishCalled || !onFinish) {
6489
6553
  return;
6490
6554
  }
6491
6555
  finishCalled = true;
6492
6556
  const isContinuation = state.message.id === (lastMessage == null ? void 0 : lastMessage.id);
6557
+ const declaredOutcome = (_a23 = getOutcome == null ? void 0 : getOutcome()) != null ? _a23 : { status: "unknown" };
6558
+ const outcome = hasProcessingFailure ? { status: "failed", error: processingError } : declaredOutcome.status === "unknown" && isAborted ? { status: "aborted" } : declaredOutcome;
6493
6559
  await onFinish({
6494
- isAborted,
6560
+ isAborted: isAborted || outcome.status === "aborted",
6495
6561
  isContinuation,
6562
+ outcome,
6496
6563
  responseMessage: state.message,
6497
6564
  messages: [
6498
6565
  ...isContinuation ? originalMessages.slice(0, -1) : originalMessages,
@@ -6516,7 +6583,13 @@ function handleUIMessageStreamFinish({
6516
6583
  ]
6517
6584
  });
6518
6585
  } catch (error) {
6519
- onError(error);
6586
+ try {
6587
+ onError(error);
6588
+ } catch (onErrorError) {
6589
+ recordProcessingFailure(onErrorError);
6590
+ await callOnFinish();
6591
+ throw onErrorError;
6592
+ }
6520
6593
  }
6521
6594
  };
6522
6595
  return processUIMessageStream({
@@ -6575,13 +6648,13 @@ function createAsyncIterableStream(source) {
6575
6648
  const reader = this.getReader();
6576
6649
  let finished = false;
6577
6650
  async function cleanup(cancelStream) {
6578
- var _a22;
6651
+ var _a23;
6579
6652
  if (finished)
6580
6653
  return;
6581
6654
  finished = true;
6582
6655
  try {
6583
6656
  if (cancelStream) {
6584
- await ((_a22 = reader.cancel) == null ? void 0 : _a22.call(reader));
6657
+ await ((_a23 = reader.cancel) == null ? void 0 : _a23.call(reader));
6585
6658
  }
6586
6659
  } finally {
6587
6660
  try {
@@ -6696,7 +6769,7 @@ function createStitchableStream() {
6696
6769
  controller == null ? void 0 : controller.close();
6697
6770
  };
6698
6771
  const processPull = async () => {
6699
- var _a22;
6772
+ var _a23;
6700
6773
  if (isCancelled) {
6701
6774
  return;
6702
6775
  }
@@ -6729,7 +6802,7 @@ function createStitchableStream() {
6729
6802
  if (isCancelled) {
6730
6803
  return;
6731
6804
  }
6732
- (_a22 = currentStream.onError) == null ? void 0 : _a22.call(currentStream, error);
6805
+ (_a23 = currentStream.onError) == null ? void 0 : _a23.call(currentStream, error);
6733
6806
  controller == null ? void 0 : controller.error(error);
6734
6807
  innerStreams.shift();
6735
6808
  terminate();
@@ -6753,9 +6826,9 @@ function createStitchableStream() {
6753
6826
  }
6754
6827
  }),
6755
6828
  addStream: (innerStream, callbacks) => {
6756
- var _a22;
6829
+ var _a23;
6757
6830
  if (isCancelled) {
6758
- (_a22 = callbacks == null ? void 0 : callbacks.onCancel) == null ? void 0 : _a22.call(callbacks);
6831
+ (_a23 = callbacks == null ? void 0 : callbacks.onCancel) == null ? void 0 : _a23.call(callbacks);
6759
6832
  void innerStream.cancel().catch(() => {
6760
6833
  });
6761
6834
  return;
@@ -7234,7 +7307,7 @@ function createOutputTransformStream(output) {
7234
7307
  }
7235
7308
  return new TransformStream({
7236
7309
  async transform(chunk, controller) {
7237
- var _a22;
7310
+ var _a23;
7238
7311
  if (chunk.type === "finish-step" && textChunk.length > 0) {
7239
7312
  publishTextChunk({ controller });
7240
7313
  }
@@ -7261,7 +7334,7 @@ function createOutputTransformStream(output) {
7261
7334
  }
7262
7335
  text2 += chunk.text;
7263
7336
  textChunk += chunk.text;
7264
- textProviderMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textProviderMetadata;
7337
+ textProviderMetadata = (_a23 = chunk.providerMetadata) != null ? _a23 : textProviderMetadata;
7265
7338
  if (chunk.text.length === 0 && chunk.providerMetadata != null) {
7266
7339
  controller.enqueue({ part: chunk, partialOutput: void 0 });
7267
7340
  return;
@@ -7367,7 +7440,7 @@ var DefaultStreamTextResult = class {
7367
7440
  let activeReasoningContent = createIdMap();
7368
7441
  const eventProcessor = new TransformStream({
7369
7442
  async transform(chunk, controller) {
7370
- var _a22, _b, _c, _d;
7443
+ var _a23, _b, _c, _d;
7371
7444
  controller.enqueue(chunk);
7372
7445
  const { part } = chunk;
7373
7446
  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") {
@@ -7407,7 +7480,7 @@ var DefaultStreamTextResult = class {
7407
7480
  return;
7408
7481
  }
7409
7482
  activeText.text += part.text;
7410
- activeText.providerMetadata = (_a22 = part.providerMetadata) != null ? _a22 : activeText.providerMetadata;
7483
+ activeText.providerMetadata = (_a23 = part.providerMetadata) != null ? _a23 : activeText.providerMetadata;
7411
7484
  }
7412
7485
  if (part.type === "text-end") {
7413
7486
  const activeText = activeTextContent[part.id];
@@ -7533,7 +7606,7 @@ var DefaultStreamTextResult = class {
7533
7606
  }
7534
7607
  },
7535
7608
  async flush(controller) {
7536
- var _a22, _b, _c, _d, _e, _f, _g;
7609
+ var _a23, _b, _c, _d, _e, _f, _g;
7537
7610
  try {
7538
7611
  if (recordedSteps.length === 0 || recordedNoOutputError != null) {
7539
7612
  const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : recordedNoOutputError != null ? recordedNoOutputError : new NoOutputGeneratedError({
@@ -7597,15 +7670,15 @@ var DefaultStreamTextResult = class {
7597
7670
  },
7598
7671
  "ai.response.toolCalls": {
7599
7672
  output: () => {
7600
- var _a23;
7601
- return ((_a23 = finalStep.toolCalls) == null ? void 0 : _a23.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
7673
+ var _a24;
7674
+ return ((_a24 = finalStep.toolCalls) == null ? void 0 : _a24.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
7602
7675
  }
7603
7676
  },
7604
7677
  "ai.response.providerMetadata": JSON.stringify(
7605
7678
  finalStep.providerMetadata
7606
7679
  ),
7607
7680
  "ai.usage.inputTokens": totalUsage.inputTokens,
7608
- "ai.usage.inputTokenDetails.noCacheTokens": (_a22 = totalUsage.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
7681
+ "ai.usage.inputTokenDetails.noCacheTokens": (_a23 = totalUsage.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
7609
7682
  "ai.usage.inputTokenDetails.cacheReadTokens": (_b = totalUsage.inputTokenDetails) == null ? void 0 : _b.cacheReadTokens,
7610
7683
  "ai.usage.inputTokenDetails.cacheWriteTokens": (_c = totalUsage.inputTokenDetails) == null ? void 0 : _c.cacheWriteTokens,
7611
7684
  "ai.usage.outputTokens": totalUsage.outputTokens,
@@ -7640,7 +7713,7 @@ var DefaultStreamTextResult = class {
7640
7713
  // The `reason` is usually of type DOMException, but it can also be of any type,
7641
7714
  // so we use getErrorMessage for serialization because it is already designed to accept values of the unknown type.
7642
7715
  // See: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason
7643
- ...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0, import_provider29.getErrorMessage)(abortSignal.reason) } : {}
7716
+ ...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0, import_provider30.getErrorMessage)(abortSignal.reason) } : {}
7644
7717
  });
7645
7718
  controller.close();
7646
7719
  }
@@ -7802,7 +7875,7 @@ var DefaultStreamTextResult = class {
7802
7875
  toolCallId: toolApproval.toolCall.toolCallId,
7803
7876
  toolName: toolApproval.toolCall.toolName,
7804
7877
  input: toolApproval.toolCall.input,
7805
- error: (0, import_provider29.getErrorMessage)(toolApproval.error),
7878
+ error: (0, import_provider30.getErrorMessage)(toolApproval.error),
7806
7879
  title: toolApproval.toolCall.title,
7807
7880
  ...toolApproval.toolCall.dynamic === true ? { dynamic: true } : {},
7808
7881
  ...toolApproval.toolCall.toolMetadata != null ? { toolMetadata: toolApproval.toolCall.toolMetadata } : {}
@@ -7895,7 +7968,7 @@ var DefaultStreamTextResult = class {
7895
7968
  responseMessages,
7896
7969
  usage
7897
7970
  }) {
7898
- var _a22, _b, _c, _d, _e, _f, _g, _h, _i;
7971
+ var _a23, _b, _c, _d, _e, _f, _g, _h, _i;
7899
7972
  const includeRawChunks2 = self.includeRawChunks;
7900
7973
  const stepTimeoutId = setAbortTimeout({
7901
7974
  abortController: stepAbortController,
@@ -7946,7 +8019,7 @@ var DefaultStreamTextResult = class {
7946
8019
  experimental_context
7947
8020
  }));
7948
8021
  const stepModel = resolveLanguageModel(
7949
- (_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
8022
+ (_a23 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a23 : model
7950
8023
  );
7951
8024
  const stepModelInfo = {
7952
8025
  provider: stepModel.provider,
@@ -8116,7 +8189,7 @@ var DefaultStreamTextResult = class {
8116
8189
  streamWithToolResults.pipeThrough(
8117
8190
  new TransformStream({
8118
8191
  async transform(chunk, controller) {
8119
- var _a23, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2;
8192
+ var _a24, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2;
8120
8193
  resetChunkTimeout();
8121
8194
  if (chunk.type === "stream-start") {
8122
8195
  warnings = chunk.warnings;
@@ -8155,7 +8228,7 @@ var DefaultStreamTextResult = class {
8155
8228
  case "text-end": {
8156
8229
  controller.enqueue({
8157
8230
  ...chunk,
8158
- id: (_a23 = textPartIds.get(chunk.id)) != null ? _a23 : chunk.id
8231
+ id: (_a24 = textPartIds.get(chunk.id)) != null ? _a24 : chunk.id
8159
8232
  });
8160
8233
  textPartIds.delete(chunk.id);
8161
8234
  break;
@@ -8302,7 +8375,7 @@ var DefaultStreamTextResult = class {
8302
8375
  },
8303
8376
  // invoke onFinish callback and resolve toolResults promise when the stream is about to close:
8304
8377
  async flush(controller) {
8305
- var _a23, _b2, _c2, _d2, _e2, _f2, _g2;
8378
+ var _a24, _b2, _c2, _d2, _e2, _f2, _g2;
8306
8379
  if (!hasReceivedTerminalChunk && !hasReceivedOutputChunk) {
8307
8380
  controller.enqueue({
8308
8381
  type: "error",
@@ -8329,7 +8402,7 @@ var DefaultStreamTextResult = class {
8329
8402
  "ai.response.model": stepResponse.modelId,
8330
8403
  "ai.response.timestamp": stepResponse.timestamp.toISOString(),
8331
8404
  "ai.usage.inputTokens": stepUsage.inputTokens,
8332
- "ai.usage.inputTokenDetails.noCacheTokens": (_a23 = stepUsage.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
8405
+ "ai.usage.inputTokenDetails.noCacheTokens": (_a24 = stepUsage.inputTokenDetails) == null ? void 0 : _a24.noCacheTokens,
8333
8406
  "ai.usage.inputTokenDetails.cacheReadTokens": (_b2 = stepUsage.inputTokenDetails) == null ? void 0 : _b2.cacheReadTokens,
8334
8407
  "ai.usage.inputTokenDetails.cacheWriteTokens": (_c2 = stepUsage.inputTokenDetails) == null ? void 0 : _c2.cacheWriteTokens,
8335
8408
  "ai.usage.outputTokens": stepUsage.outputTokens,
@@ -8606,19 +8679,19 @@ var DefaultStreamTextResult = class {
8606
8679
  this._steps.reject(error);
8607
8680
  }
8608
8681
  async consumeStream(options) {
8609
- var _a22;
8682
+ var _a23;
8610
8683
  try {
8611
8684
  await consumeStream({
8612
8685
  stream: this.fullStream,
8613
8686
  onError: (error) => {
8614
- var _a23;
8687
+ var _a24;
8615
8688
  this.rejectResultPromises(error);
8616
- (_a23 = options == null ? void 0 : options.onError) == null ? void 0 : _a23.call(options, error);
8689
+ (_a24 = options == null ? void 0 : options.onError) == null ? void 0 : _a24.call(options, error);
8617
8690
  }
8618
8691
  });
8619
8692
  } catch (error) {
8620
8693
  this.rejectResultPromises(error);
8621
- (_a22 = options == null ? void 0 : options.onError) == null ? void 0 : _a22.call(options, error);
8694
+ (_a23 = options == null ? void 0 : options.onError) == null ? void 0 : _a23.call(options, error);
8622
8695
  }
8623
8696
  }
8624
8697
  get experimental_partialOutputStream() {
@@ -8638,10 +8711,10 @@ var DefaultStreamTextResult = class {
8638
8711
  );
8639
8712
  }
8640
8713
  get elementStream() {
8641
- var _a22, _b, _c;
8642
- const transform = (_a22 = this.outputSpecification) == null ? void 0 : _a22.createElementStreamTransform();
8714
+ var _a23, _b, _c;
8715
+ const transform = (_a23 = this.outputSpecification) == null ? void 0 : _a23.createElementStreamTransform();
8643
8716
  if (transform == null) {
8644
- throw new import_provider29.UnsupportedFunctionalityError({
8717
+ throw new import_provider30.UnsupportedFunctionalityError({
8645
8718
  functionality: `element streams in ${(_c = (_b = this.outputSpecification) == null ? void 0 : _b.name) != null ? _c : "text"} mode`
8646
8719
  });
8647
8720
  }
@@ -8649,8 +8722,8 @@ var DefaultStreamTextResult = class {
8649
8722
  }
8650
8723
  get output() {
8651
8724
  return this.finalStep.then((step) => {
8652
- var _a22;
8653
- const output = (_a22 = this.outputSpecification) != null ? _a22 : text();
8725
+ var _a23;
8726
+ const output = (_a23 = this.outputSpecification) != null ? _a23 : text();
8654
8727
  return output.parseCompleteOutput(
8655
8728
  { text: step.text },
8656
8729
  {
@@ -8673,19 +8746,74 @@ var DefaultStreamTextResult = class {
8673
8746
  onError = () => "An error occurred."
8674
8747
  // prevent leaking server error details to the client by default
8675
8748
  } = {}) {
8749
+ let outcome = { status: "unknown" };
8750
+ let hasFatalFailure = false;
8751
+ const setSourceOutcome = (newOutcome) => {
8752
+ if (!hasFatalFailure && outcome.status !== "completed" && outcome.status !== "aborted" && newOutcome.status !== "unknown" && (outcome.status === "unknown" || newOutcome.status !== "failed")) {
8753
+ outcome = newOutcome;
8754
+ }
8755
+ };
8756
+ const failOutcome = (error) => {
8757
+ hasFatalFailure = true;
8758
+ outcome = { status: "failed", error };
8759
+ };
8676
8760
  const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
8677
8761
  originalMessages,
8678
8762
  responseMessageId: generateMessageId
8679
8763
  }) : void 0;
8680
8764
  const isDynamic = (part) => {
8681
- var _a22;
8682
- const tool2 = (_a22 = this.tools) == null ? void 0 : _a22[part.toolName];
8765
+ var _a23;
8766
+ const tool2 = (_a23 = this.tools) == null ? void 0 : _a23[part.toolName];
8683
8767
  if (tool2 == null) {
8684
8768
  return part.dynamic;
8685
8769
  }
8686
8770
  return (tool2 == null ? void 0 : tool2.type) === "dynamic" ? true : void 0;
8687
8771
  };
8688
- const baseStream = this.fullStream.pipeThrough(
8772
+ const trackFatalFailures = (stream) => {
8773
+ const reader = stream.getReader();
8774
+ let readerReleased = false;
8775
+ let streamCancelled = false;
8776
+ const releaseReader = () => {
8777
+ if (!readerReleased) {
8778
+ reader.releaseLock();
8779
+ readerReleased = true;
8780
+ }
8781
+ };
8782
+ return new ReadableStream({
8783
+ async pull(controller) {
8784
+ try {
8785
+ const { done, value } = await reader.read();
8786
+ if (done) {
8787
+ releaseReader();
8788
+ if (!streamCancelled) {
8789
+ controller.close();
8790
+ }
8791
+ } else {
8792
+ controller.enqueue(value);
8793
+ }
8794
+ } catch (error) {
8795
+ releaseReader();
8796
+ if (!streamCancelled) {
8797
+ failOutcome(error);
8798
+ controller.error(error);
8799
+ }
8800
+ }
8801
+ },
8802
+ async cancel(reason) {
8803
+ streamCancelled = true;
8804
+ if (readerReleased) {
8805
+ return;
8806
+ }
8807
+ try {
8808
+ await reader.cancel(reason);
8809
+ } finally {
8810
+ releaseReader();
8811
+ }
8812
+ }
8813
+ });
8814
+ };
8815
+ const sourceStream = trackFatalFailures(this.fullStream);
8816
+ const convertedStream = sourceStream.pipeThrough(
8689
8817
  new TransformStream({
8690
8818
  transform: async (part, controller) => {
8691
8819
  const messageMetadataValue = messageMetadata == null ? void 0 : messageMetadata({ part });
@@ -8922,16 +9050,25 @@ var DefaultStreamTextResult = class {
8922
9050
  messageMetadata: messageMetadataValue
8923
9051
  });
8924
9052
  }
9053
+ if (part.type === "finish") {
9054
+ setSourceOutcome({ status: "completed" });
9055
+ } else if (part.type === "abort") {
9056
+ setSourceOutcome({ status: "aborted" });
9057
+ } else if (part.type === "error") {
9058
+ setSourceOutcome({ status: "failed", error: part.error });
9059
+ }
8925
9060
  }
8926
9061
  })
8927
9062
  );
9063
+ const baseStream = trackFatalFailures(convertedStream);
8928
9064
  return createAsyncIterableStream(
8929
9065
  handleUIMessageStreamFinish({
8930
9066
  stream: baseStream,
8931
9067
  messageId: responseMessageId != null ? responseMessageId : generateMessageId == null ? void 0 : generateMessageId(),
8932
9068
  originalMessages,
8933
9069
  onFinish,
8934
- onError
9070
+ onError,
9071
+ getOutcome: () => outcome
8935
9072
  })
8936
9073
  );
8937
9074
  }
@@ -9024,7 +9161,7 @@ var ToolLoopAgent = class {
9024
9161
  return this.settings.tools;
9025
9162
  }
9026
9163
  async prepareCall(options) {
9027
- var _a22, _b, _c, _d;
9164
+ var _a23, _b, _c, _d;
9028
9165
  if (this.settings.callOptionsSchema != null && options.options !== void 0) {
9029
9166
  const validatedOptions = await (0, import_provider_utils21.validateTypes)({
9030
9167
  value: options.options,
@@ -9036,7 +9173,7 @@ var ToolLoopAgent = class {
9036
9173
  const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } = this.settings;
9037
9174
  const baseCallArgs = {
9038
9175
  ...settingsWithoutCallback,
9039
- stopWhen: (_a22 = this.settings.stopWhen) != null ? _a22 : stepCountIs(20),
9176
+ stopWhen: (_a23 = this.settings.stopWhen) != null ? _a23 : stepCountIs(20),
9040
9177
  ...options
9041
9178
  };
9042
9179
  const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(
@@ -9122,6 +9259,7 @@ function createUIMessageStream({
9122
9259
  }) {
9123
9260
  let controller;
9124
9261
  const ongoingStreamPromises = [];
9262
+ let outcome = { status: "unknown" };
9125
9263
  const stream = new ReadableStream({
9126
9264
  start(controllerArg) {
9127
9265
  controller = controllerArg;
@@ -9133,6 +9271,35 @@ function createUIMessageStream({
9133
9271
  } catch (error) {
9134
9272
  }
9135
9273
  }
9274
+ function setOutcome(newOutcome) {
9275
+ if (outcome.status === "unknown" && newOutcome.status !== "unknown") {
9276
+ outcome = newOutcome;
9277
+ }
9278
+ }
9279
+ function failOutcome(error) {
9280
+ outcome = { status: "failed", error };
9281
+ }
9282
+ function safeError(error) {
9283
+ try {
9284
+ controller.error(error);
9285
+ } catch (e) {
9286
+ }
9287
+ }
9288
+ function handleError(error) {
9289
+ failOutcome(error);
9290
+ let errorText;
9291
+ try {
9292
+ errorText = onError(error);
9293
+ } catch (onErrorError) {
9294
+ failOutcome(onErrorError);
9295
+ safeError(onErrorError);
9296
+ return;
9297
+ }
9298
+ safeEnqueue({
9299
+ type: "error",
9300
+ errorText
9301
+ });
9302
+ }
9136
9303
  try {
9137
9304
  const result = execute({
9138
9305
  writer: {
@@ -9150,38 +9317,29 @@ function createUIMessageStream({
9150
9317
  safeEnqueue(value);
9151
9318
  }
9152
9319
  })().catch((error) => {
9153
- safeEnqueue({
9154
- type: "error",
9155
- errorText: onError(error)
9156
- });
9320
+ handleError(error);
9157
9321
  })
9158
9322
  );
9159
9323
  },
9324
+ setOutcome,
9160
9325
  onError
9161
9326
  }
9162
9327
  });
9163
9328
  if (result) {
9164
9329
  ongoingStreamPromises.push(
9165
9330
  result.catch((error) => {
9166
- safeEnqueue({
9167
- type: "error",
9168
- errorText: onError(error)
9169
- });
9331
+ handleError(error);
9170
9332
  })
9171
9333
  );
9172
9334
  }
9173
9335
  } catch (error) {
9174
- safeEnqueue({
9175
- type: "error",
9176
- errorText: onError(error)
9177
- });
9336
+ handleError(error);
9178
9337
  }
9179
- const waitForStreams = new Promise(async (resolve3) => {
9338
+ const waitForStreams = (async () => {
9180
9339
  while (ongoingStreamPromises.length > 0) {
9181
9340
  await ongoingStreamPromises.shift();
9182
9341
  }
9183
- resolve3();
9184
- });
9342
+ })();
9185
9343
  waitForStreams.finally(() => {
9186
9344
  try {
9187
9345
  controller.close();
@@ -9194,7 +9352,8 @@ function createUIMessageStream({
9194
9352
  originalMessages,
9195
9353
  onStepFinish,
9196
9354
  onFinish,
9197
- onError
9355
+ onError,
9356
+ getOutcome: () => outcome
9198
9357
  });
9199
9358
  }
9200
9359
 
@@ -9226,7 +9385,7 @@ function readUIMessageStream({
9226
9385
  onError,
9227
9386
  terminateOnError = false
9228
9387
  }) {
9229
- var _a22;
9388
+ var _a23;
9230
9389
  let controller;
9231
9390
  let hasErrored = false;
9232
9391
  const outputStream = new ReadableStream({
@@ -9235,7 +9394,7 @@ function readUIMessageStream({
9235
9394
  }
9236
9395
  });
9237
9396
  const state = createStreamingUIMessageState({
9238
- messageId: (_a22 = message == null ? void 0 : message.id) != null ? _a22 : "",
9397
+ messageId: (_a23 = message == null ? void 0 : message.id) != null ? _a23 : "",
9239
9398
  lastMessage: message
9240
9399
  });
9241
9400
  const handleError = (error) => {
@@ -9302,7 +9461,7 @@ async function convertToModelMessages(messages, options) {
9302
9461
  modelMessages.push({
9303
9462
  role: "user",
9304
9463
  content: message.parts.map((part) => {
9305
- var _a22;
9464
+ var _a23;
9306
9465
  if (isTextUIPart(part)) {
9307
9466
  return {
9308
9467
  type: "text",
@@ -9320,7 +9479,7 @@ async function convertToModelMessages(messages, options) {
9320
9479
  };
9321
9480
  }
9322
9481
  if (isDataUIPart(part)) {
9323
- return (_a22 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a22.call(
9482
+ return (_a23 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a23.call(
9324
9483
  options,
9325
9484
  part
9326
9485
  );
@@ -9333,7 +9492,7 @@ async function convertToModelMessages(messages, options) {
9333
9492
  if (message.parts != null) {
9334
9493
  let block = [];
9335
9494
  async function processBlock() {
9336
- var _a22, _b, _c, _d, _e, _f, _g, _h;
9495
+ var _a23, _b, _c, _d, _e, _f, _g, _h;
9337
9496
  if (block.length === 0) {
9338
9497
  return;
9339
9498
  }
@@ -9366,7 +9525,7 @@ async function convertToModelMessages(messages, options) {
9366
9525
  type: "tool-call",
9367
9526
  toolCallId: part.toolCallId,
9368
9527
  toolName,
9369
- input: part.state === "output-error" ? (_a22 = part.input) != null ? _a22 : "rawInput" in part ? part.rawInput : void 0 : part.input,
9528
+ input: part.state === "output-error" ? (_a23 = part.input) != null ? _a23 : "rawInput" in part ? part.rawInput : void 0 : part.input,
9370
9529
  providerExecuted: part.providerExecuted,
9371
9530
  ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
9372
9531
  });
@@ -9416,8 +9575,8 @@ async function convertToModelMessages(messages, options) {
9416
9575
  }
9417
9576
  const toolParts = block.filter(
9418
9577
  (part) => {
9419
- var _a23;
9420
- return isToolUIPart(part) && (part.providerExecuted !== true || ((_a23 = part.approval) == null ? void 0 : _a23.approved) != null);
9578
+ var _a24;
9579
+ return isToolUIPart(part) && (part.providerExecuted !== true || ((_a24 = part.approval) == null ? void 0 : _a24.approved) != null);
9421
9580
  }
9422
9581
  );
9423
9582
  if (toolParts.length > 0) {
@@ -9505,13 +9664,24 @@ async function convertToModelMessages(messages, options) {
9505
9664
  }
9506
9665
 
9507
9666
  // src/ui/validate-ui-messages.ts
9508
- var import_provider30 = require("@ai-sdk/provider");
9667
+ var import_provider31 = require("@ai-sdk/provider");
9509
9668
  var import_provider_utils24 = require("@ai-sdk/provider-utils");
9510
9669
  var import_v48 = require("zod/v4");
9511
9670
  var toolMetadataSchema2 = import_v48.z.record(
9512
9671
  import_v48.z.string(),
9513
9672
  jsonValueSchema.optional()
9514
9673
  );
9674
+ function isEmptyObject(value) {
9675
+ return value != null && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length === 0;
9676
+ }
9677
+ function asDynamicToolPart(toolPart) {
9678
+ const { type, ...part } = toolPart;
9679
+ return {
9680
+ ...part,
9681
+ type: "dynamic-tool",
9682
+ toolName: type.slice(5)
9683
+ };
9684
+ }
9515
9685
  var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
9516
9686
  () => (0, import_provider_utils24.zodSchema)(
9517
9687
  import_v48.z.array(
@@ -9815,11 +9985,13 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
9815
9985
  ).nonempty("Messages array must not be empty")
9816
9986
  )
9817
9987
  );
9818
- async function safeValidateUIMessages({
9988
+ async function safeValidateUIMessagesInternal({
9819
9989
  messages,
9820
9990
  metadataSchema,
9821
9991
  dataSchemas,
9822
9992
  tools
9993
+ }, {
9994
+ convertMissingTerminalToolsToDynamic
9823
9995
  }) {
9824
9996
  try {
9825
9997
  if (messages == null) {
@@ -9848,7 +10020,8 @@ async function safeValidateUIMessages({
9848
10020
  });
9849
10021
  }
9850
10022
  }
9851
- if (dataSchemas || tools) {
10023
+ const shouldValidateToolParts = tools != null || convertMissingTerminalToolsToDynamic;
10024
+ if (dataSchemas || shouldValidateToolParts) {
9852
10025
  for (const [msgIdx, message] of validatedMessages.entries()) {
9853
10026
  for (const [partIdx, part] of message.parts.entries()) {
9854
10027
  if (dataSchemas && part.type.startsWith("data-")) {
@@ -9858,7 +10031,7 @@ async function safeValidateUIMessages({
9858
10031
  if (!dataSchema) {
9859
10032
  return {
9860
10033
  success: false,
9861
- error: new import_provider30.TypeValidationError({
10034
+ error: new import_provider31.TypeValidationError({
9862
10035
  value: dataPart.data,
9863
10036
  cause: `No data schema found for data part ${dataName}`,
9864
10037
  context: {
@@ -9879,17 +10052,23 @@ async function safeValidateUIMessages({
9879
10052
  }
9880
10053
  });
9881
10054
  }
9882
- if (tools && part.type.startsWith("tool-")) {
10055
+ if (shouldValidateToolParts && part.type.startsWith("tool-")) {
9883
10056
  const toolPart = part;
9884
10057
  const toolName = toolPart.type.slice(5);
9885
- const tool2 = tools[toolName];
9886
- if (!tool2 && (toolPart.state === "output-available" || toolPart.state === "output-error" || toolPart.state === "output-denied")) {
10058
+ const tool2 = tools == null ? void 0 : tools[toolName];
10059
+ const isTerminal = toolPart.state === "output-available" || toolPart.state === "output-error" || toolPart.state === "output-denied";
10060
+ if (!tool2 && isTerminal) {
10061
+ if (tools != null || convertMissingTerminalToolsToDynamic) {
10062
+ message.parts[partIdx] = asDynamicToolPart(
10063
+ toolPart
10064
+ );
10065
+ }
9887
10066
  continue;
9888
10067
  }
9889
10068
  if (!tool2) {
9890
10069
  return {
9891
10070
  success: false,
9892
- error: new import_provider30.TypeValidationError({
10071
+ error: new import_provider31.TypeValidationError({
9893
10072
  value: toolPart.input,
9894
10073
  cause: `No tool schema found for tool part ${toolName}`,
9895
10074
  context: {
@@ -9900,15 +10079,39 @@ async function safeValidateUIMessages({
9900
10079
  })
9901
10080
  };
9902
10081
  }
9903
- if (toolPart.state === "input-available") {
9904
- await (0, import_provider_utils24.validateTypes)({
10082
+ const inputValidationContext = {
10083
+ field: `messages[${msgIdx}].parts[${partIdx}].input`,
10084
+ entityName: toolName,
10085
+ entityId: toolPart.toolCallId
10086
+ };
10087
+ let convertToDynamic = false;
10088
+ if (toolPart.state === "output-error") {
10089
+ if (toolPart.input !== void 0) {
10090
+ const result = await (0, import_provider_utils24.safeValidateTypes)({
10091
+ value: toolPart.input,
10092
+ schema: tool2.inputSchema,
10093
+ context: inputValidationContext
10094
+ });
10095
+ convertToDynamic = !result.success;
10096
+ }
10097
+ } else if (toolPart.state === "output-available") {
10098
+ const result = await (0, import_provider_utils24.safeValidateTypes)({
9905
10099
  value: toolPart.input,
9906
10100
  schema: tool2.inputSchema,
9907
- context: {
9908
- field: `messages[${msgIdx}].parts[${partIdx}].input`,
9909
- entityName: toolName,
9910
- entityId: toolPart.toolCallId
10101
+ context: inputValidationContext
10102
+ });
10103
+ if (!result.success) {
10104
+ if (isEmptyObject(toolPart.input)) {
10105
+ convertToDynamic = true;
10106
+ } else {
10107
+ throw result.error;
9911
10108
  }
10109
+ }
10110
+ } else if (toolPart.state === "input-available" || toolPart.state === "approval-requested" || toolPart.state === "approval-responded" || toolPart.state === "output-denied") {
10111
+ await (0, import_provider_utils24.validateTypes)({
10112
+ value: toolPart.input,
10113
+ schema: tool2.inputSchema,
10114
+ context: inputValidationContext
9912
10115
  });
9913
10116
  }
9914
10117
  if (toolPart.state === "output-available" && tool2.outputSchema) {
@@ -9922,6 +10125,11 @@ async function safeValidateUIMessages({
9922
10125
  }
9923
10126
  });
9924
10127
  }
10128
+ if (convertToDynamic) {
10129
+ message.parts[partIdx] = asDynamicToolPart(
10130
+ toolPart
10131
+ );
10132
+ }
9925
10133
  }
9926
10134
  }
9927
10135
  }
@@ -9938,17 +10146,23 @@ async function safeValidateUIMessages({
9938
10146
  };
9939
10147
  }
9940
10148
  }
9941
- async function validateUIMessages({
9942
- messages,
9943
- metadataSchema,
9944
- dataSchemas,
9945
- tools
9946
- }) {
9947
- const response = await safeValidateUIMessages({
9948
- messages,
9949
- metadataSchema,
9950
- dataSchemas,
9951
- tools
10149
+ async function safeValidateUIMessages(options) {
10150
+ return safeValidateUIMessagesInternal(options, {
10151
+ convertMissingTerminalToolsToDynamic: false
10152
+ });
10153
+ }
10154
+ async function validateUIMessages(options) {
10155
+ const response = await safeValidateUIMessages(options);
10156
+ if (!response.success)
10157
+ throw response.error;
10158
+ return response.data;
10159
+ }
10160
+ async function validateUIMessagesForAgent(options) {
10161
+ const response = await safeValidateUIMessagesInternal(options, {
10162
+ // Agent tool sets can include ephemeral tools (for example, tools from a
10163
+ // disconnected MCP server), so terminal history is converted to dynamic
10164
+ // tool parts when those tools are no longer registered.
10165
+ convertMissingTerminalToolsToDynamic: true
9952
10166
  });
9953
10167
  if (!response.success)
9954
10168
  throw response.error;
@@ -9966,8 +10180,8 @@ async function createAgentUIStream({
9966
10180
  onStepFinish,
9967
10181
  ...uiMessageStreamOptions
9968
10182
  }) {
9969
- var _a22;
9970
- const validatedMessages = await validateUIMessages({
10183
+ var _a23;
10184
+ const validatedMessages = await validateUIMessagesForAgent({
9971
10185
  messages: uiMessages,
9972
10186
  tools: agent.tools
9973
10187
  });
@@ -9985,7 +10199,7 @@ async function createAgentUIStream({
9985
10199
  return result.toUIMessageStream({
9986
10200
  ...uiMessageStreamOptions,
9987
10201
  // TODO reading `originalMessages` is here for bc, always use `validatedMessages` in v7
9988
- originalMessages: (_a22 = uiMessageStreamOptions.originalMessages) != null ? _a22 : validatedMessages
10202
+ originalMessages: (_a23 = uiMessageStreamOptions.originalMessages) != null ? _a23 : validatedMessages
9989
10203
  });
9990
10204
  }
9991
10205
 
@@ -10083,7 +10297,7 @@ async function embed({
10083
10297
  }),
10084
10298
  tracer,
10085
10299
  fn: async (doEmbedSpan) => {
10086
- var _a22, _b;
10300
+ var _a23, _b;
10087
10301
  const modelResponse = await model.doEmbed({
10088
10302
  values: [value],
10089
10303
  abortSignal,
@@ -10091,7 +10305,7 @@ async function embed({
10091
10305
  providerOptions
10092
10306
  });
10093
10307
  const embedding2 = modelResponse.embeddings[0];
10094
- const usage2 = (_a22 = modelResponse.usage) != null ? _a22 : { tokens: NaN };
10308
+ const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
10095
10309
  doEmbedSpan.setAttributes(
10096
10310
  await selectTelemetryAttributes({
10097
10311
  telemetry,
@@ -10211,7 +10425,7 @@ async function embedMany({
10211
10425
  }),
10212
10426
  tracer,
10213
10427
  fn: async (span) => {
10214
- var _a22;
10428
+ var _a23;
10215
10429
  const [
10216
10430
  maxEmbeddingsPerCall,
10217
10431
  maxInputBytesPerCall,
@@ -10243,7 +10457,7 @@ async function embedMany({
10243
10457
  }),
10244
10458
  tracer,
10245
10459
  fn: async (doEmbedSpan) => {
10246
- var _a23, _b;
10460
+ var _a24, _b;
10247
10461
  const modelResponse = await model.doEmbed({
10248
10462
  values,
10249
10463
  abortSignal,
@@ -10251,7 +10465,7 @@ async function embedMany({
10251
10465
  providerOptions
10252
10466
  });
10253
10467
  const embeddings3 = modelResponse.embeddings;
10254
- const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
10468
+ const usage2 = (_a24 = modelResponse.usage) != null ? _a24 : { tokens: NaN };
10255
10469
  doEmbedSpan.setAttributes(
10256
10470
  await selectTelemetryAttributes({
10257
10471
  telemetry,
@@ -10336,7 +10550,7 @@ async function embedMany({
10336
10550
  }),
10337
10551
  tracer,
10338
10552
  fn: async (doEmbedSpan) => {
10339
- var _a23, _b;
10553
+ var _a24, _b;
10340
10554
  const modelResponse = await model.doEmbed({
10341
10555
  values: chunk,
10342
10556
  abortSignal,
@@ -10344,7 +10558,7 @@ async function embedMany({
10344
10558
  providerOptions
10345
10559
  });
10346
10560
  const embeddings2 = modelResponse.embeddings;
10347
- const usage = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
10561
+ const usage = (_a24 = modelResponse.usage) != null ? _a24 : { tokens: NaN };
10348
10562
  doEmbedSpan.setAttributes(
10349
10563
  await selectTelemetryAttributes({
10350
10564
  telemetry,
@@ -10383,7 +10597,7 @@ async function embedMany({
10383
10597
  result.providerMetadata
10384
10598
  )) {
10385
10599
  providerMetadata[providerName] = {
10386
- ...(_a22 = providerMetadata[providerName]) != null ? _a22 : {},
10600
+ ...(_a23 = providerMetadata[providerName]) != null ? _a23 : {},
10387
10601
  ...metadata
10388
10602
  };
10389
10603
  }
@@ -10475,7 +10689,7 @@ async function generateImage({
10475
10689
  abortSignal,
10476
10690
  headers
10477
10691
  }) {
10478
- var _a22, _b;
10692
+ var _a23, _b;
10479
10693
  const model = resolveImageModel(modelArg);
10480
10694
  const headersWithUserAgent = (0, import_provider_utils28.withUserAgentSuffix)(
10481
10695
  headers != null ? headers : {},
@@ -10485,7 +10699,7 @@ async function generateImage({
10485
10699
  maxRetries: maxRetriesArg,
10486
10700
  abortSignal
10487
10701
  });
10488
- const maxImagesPerCallWithDefault = (_a22 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a22 : 1;
10702
+ const maxImagesPerCallWithDefault = (_a23 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a23 : 1;
10489
10703
  const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
10490
10704
  const callImageCounts = Array.from({ length: callCount }, (_, i) => {
10491
10705
  if (i < callCount - 1) {
@@ -10526,13 +10740,13 @@ async function generateImage({
10526
10740
  images.push(
10527
10741
  ...result.images.map(
10528
10742
  (image) => {
10529
- var _a23;
10743
+ var _a24;
10530
10744
  return new DefaultGeneratedFile({
10531
10745
  data: image,
10532
- mediaType: (_a23 = detectMediaType({
10746
+ mediaType: (_a24 = detectMediaType({
10533
10747
  data: image,
10534
10748
  signatures: imageMediaTypeSignatures
10535
- })) != null ? _a23 : "image/png"
10749
+ })) != null ? _a24 : "image/png"
10536
10750
  });
10537
10751
  }
10538
10752
  )
@@ -10649,7 +10863,7 @@ var experimental_generateImage = generateImage;
10649
10863
  var import_provider_utils31 = require("@ai-sdk/provider-utils");
10650
10864
 
10651
10865
  // src/generate-object/output-strategy.ts
10652
- var import_provider31 = require("@ai-sdk/provider");
10866
+ var import_provider32 = require("@ai-sdk/provider");
10653
10867
  var import_provider_utils29 = require("@ai-sdk/provider-utils");
10654
10868
  var noSchemaOutputStrategy = {
10655
10869
  type: "no-schema",
@@ -10670,7 +10884,7 @@ var noSchemaOutputStrategy = {
10670
10884
  } : { success: true, value };
10671
10885
  },
10672
10886
  createElementStream() {
10673
- throw new import_provider31.UnsupportedFunctionalityError({
10887
+ throw new import_provider32.UnsupportedFunctionalityError({
10674
10888
  functionality: "element streams in no-schema mode"
10675
10889
  });
10676
10890
  }
@@ -10692,7 +10906,7 @@ var objectOutputStrategy = (schema) => ({
10692
10906
  return (0, import_provider_utils29.safeValidateTypes)({ value, schema });
10693
10907
  },
10694
10908
  createElementStream() {
10695
- throw new import_provider31.UnsupportedFunctionalityError({
10909
+ throw new import_provider32.UnsupportedFunctionalityError({
10696
10910
  functionality: "element streams in object mode"
10697
10911
  });
10698
10912
  }
@@ -10721,11 +10935,11 @@ var arrayOutputStrategy = (schema) => {
10721
10935
  isFirstDelta,
10722
10936
  isFinalDelta
10723
10937
  }) {
10724
- var _a22;
10725
- if (!(0, import_provider31.isJSONObject)(value) || !(0, import_provider31.isJSONArray)(value.elements)) {
10938
+ var _a23;
10939
+ if (!(0, import_provider32.isJSONObject)(value) || !(0, import_provider32.isJSONArray)(value.elements)) {
10726
10940
  return {
10727
10941
  success: false,
10728
- error: new import_provider31.TypeValidationError({
10942
+ error: new import_provider32.TypeValidationError({
10729
10943
  value,
10730
10944
  cause: "value must be an object that contains an array of elements"
10731
10945
  })
@@ -10744,7 +10958,7 @@ var arrayOutputStrategy = (schema) => {
10744
10958
  }
10745
10959
  resultArray.push(result.value);
10746
10960
  }
10747
- const publishedElementCount = (_a22 = latestObject == null ? void 0 : latestObject.length) != null ? _a22 : 0;
10961
+ const publishedElementCount = (_a23 = latestObject == null ? void 0 : latestObject.length) != null ? _a23 : 0;
10748
10962
  let textDelta = "";
10749
10963
  if (isFirstDelta) {
10750
10964
  textDelta += "[";
@@ -10765,10 +10979,10 @@ var arrayOutputStrategy = (schema) => {
10765
10979
  };
10766
10980
  },
10767
10981
  async validateFinalResult(value) {
10768
- if (!(0, import_provider31.isJSONObject)(value) || !(0, import_provider31.isJSONArray)(value.elements)) {
10982
+ if (!(0, import_provider32.isJSONObject)(value) || !(0, import_provider32.isJSONArray)(value.elements)) {
10769
10983
  return {
10770
10984
  success: false,
10771
- error: new import_provider31.TypeValidationError({
10985
+ error: new import_provider32.TypeValidationError({
10772
10986
  value,
10773
10987
  cause: "value must be an object that contains an array of elements"
10774
10988
  })
@@ -10833,10 +11047,10 @@ var enumOutputStrategy = (enumValues) => {
10833
11047
  additionalProperties: false
10834
11048
  }),
10835
11049
  async validateFinalResult(value) {
10836
- if (!(0, import_provider31.isJSONObject)(value) || typeof value.result !== "string") {
11050
+ if (!(0, import_provider32.isJSONObject)(value) || typeof value.result !== "string") {
10837
11051
  return {
10838
11052
  success: false,
10839
- error: new import_provider31.TypeValidationError({
11053
+ error: new import_provider32.TypeValidationError({
10840
11054
  value,
10841
11055
  cause: 'value must be an object that contains a string in the "result" property.'
10842
11056
  })
@@ -10845,17 +11059,17 @@ var enumOutputStrategy = (enumValues) => {
10845
11059
  const result = value.result;
10846
11060
  return enumValues.includes(result) ? { success: true, value: result } : {
10847
11061
  success: false,
10848
- error: new import_provider31.TypeValidationError({
11062
+ error: new import_provider32.TypeValidationError({
10849
11063
  value,
10850
11064
  cause: "value must be a string in the enum"
10851
11065
  })
10852
11066
  };
10853
11067
  },
10854
11068
  async validatePartialResult({ value, textDelta }) {
10855
- if (!(0, import_provider31.isJSONObject)(value) || typeof value.result !== "string") {
11069
+ if (!(0, import_provider32.isJSONObject)(value) || typeof value.result !== "string") {
10856
11070
  return {
10857
11071
  success: false,
10858
- error: new import_provider31.TypeValidationError({
11072
+ error: new import_provider32.TypeValidationError({
10859
11073
  value,
10860
11074
  cause: 'value must be an object that contains a string in the "result" property.'
10861
11075
  })
@@ -10868,7 +11082,7 @@ var enumOutputStrategy = (enumValues) => {
10868
11082
  if (value.result.length === 0 || possibleEnumValues.length === 0) {
10869
11083
  return {
10870
11084
  success: false,
10871
- error: new import_provider31.TypeValidationError({
11085
+ error: new import_provider32.TypeValidationError({
10872
11086
  value,
10873
11087
  cause: "value must be a string in the enum"
10874
11088
  })
@@ -10883,7 +11097,7 @@ var enumOutputStrategy = (enumValues) => {
10883
11097
  };
10884
11098
  },
10885
11099
  createElementStream() {
10886
- throw new import_provider31.UnsupportedFunctionalityError({
11100
+ throw new import_provider32.UnsupportedFunctionalityError({
10887
11101
  functionality: "element streams in enum mode"
10888
11102
  });
10889
11103
  }
@@ -10911,7 +11125,7 @@ function getOutputStrategy({
10911
11125
  }
10912
11126
 
10913
11127
  // src/generate-object/parse-and-validate-object-result.ts
10914
- var import_provider32 = require("@ai-sdk/provider");
11128
+ var import_provider33 = require("@ai-sdk/provider");
10915
11129
  var import_provider_utils30 = require("@ai-sdk/provider-utils");
10916
11130
  async function parseAndValidateObjectResult(result, outputStrategy, context2) {
10917
11131
  const parseResult = await (0, import_provider_utils30.safeParseJSON)({ text: result });
@@ -10949,7 +11163,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
10949
11163
  try {
10950
11164
  return await parseAndValidateObjectResult(result, outputStrategy, context2);
10951
11165
  } catch (error) {
10952
- if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider32.JSONParseError.isInstance(error.cause) || import_provider32.TypeValidationError.isInstance(error.cause))) {
11166
+ if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider33.JSONParseError.isInstance(error.cause) || import_provider33.TypeValidationError.isInstance(error.cause))) {
10953
11167
  const repairedText = await repairText({
10954
11168
  text: result,
10955
11169
  error: error.cause
@@ -11167,7 +11381,7 @@ async function generateObject(options) {
11167
11381
  }),
11168
11382
  tracer,
11169
11383
  fn: async (span) => {
11170
- var _a22;
11384
+ var _a23;
11171
11385
  let result;
11172
11386
  let finishReason;
11173
11387
  let usage;
@@ -11214,7 +11428,7 @@ async function generateObject(options) {
11214
11428
  }),
11215
11429
  tracer,
11216
11430
  fn: async (span2) => {
11217
- var _a23, _b, _c, _d, _e, _f, _g, _h;
11431
+ var _a24, _b, _c, _d, _e, _f, _g, _h;
11218
11432
  const result2 = await model.doGenerate({
11219
11433
  responseFormat: {
11220
11434
  type: "json",
@@ -11229,7 +11443,7 @@ async function generateObject(options) {
11229
11443
  headers: headersWithUserAgent
11230
11444
  });
11231
11445
  const responseData = {
11232
- id: (_b = (_a23 = result2.response) == null ? void 0 : _a23.id) != null ? _b : generateId2(),
11446
+ id: (_b = (_a24 = result2.response) == null ? void 0 : _a24.id) != null ? _b : generateId2(),
11233
11447
  timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
11234
11448
  modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
11235
11449
  headers: (_g = result2.response) == null ? void 0 : _g.headers,
@@ -11285,7 +11499,7 @@ async function generateObject(options) {
11285
11499
  usage = asLanguageModelUsage(generateResult.usage);
11286
11500
  warnings = generateResult.warnings;
11287
11501
  resultProviderMetadata = generateResult.providerMetadata;
11288
- request = (_a22 = generateResult.request) != null ? _a22 : {};
11502
+ request = (_a23 = generateResult.request) != null ? _a23 : {};
11289
11503
  response = generateResult.responseData;
11290
11504
  reasoning = generateResult.reasoning;
11291
11505
  logWarnings({
@@ -11348,9 +11562,9 @@ var DefaultGenerateObjectResult = class {
11348
11562
  this.reasoning = options.reasoning;
11349
11563
  }
11350
11564
  toJsonResponse(init) {
11351
- var _a22;
11565
+ var _a23;
11352
11566
  return new Response(JSON.stringify(this.object), {
11353
- status: (_a22 = init == null ? void 0 : init.status) != null ? _a22 : 200,
11567
+ status: (_a23 = init == null ? void 0 : init.status) != null ? _a23 : 200,
11354
11568
  headers: prepareHeaders(init == null ? void 0 : init.headers, {
11355
11569
  "content-type": "application/json; charset=utf-8"
11356
11570
  })
@@ -11481,8 +11695,8 @@ function simulateReadableStream({
11481
11695
  chunkDelayInMs = 0,
11482
11696
  _internal
11483
11697
  }) {
11484
- var _a22;
11485
- const delay = (_a22 = _internal == null ? void 0 : _internal.delay) != null ? _a22 : import_provider_utils32.delay;
11698
+ var _a23;
11699
+ const delay = (_a23 = _internal == null ? void 0 : _internal.delay) != null ? _a23 : import_provider_utils32.delay;
11486
11700
  let index = 0;
11487
11701
  return new ReadableStream({
11488
11702
  async pull(controller) {
@@ -11756,7 +11970,7 @@ var DefaultStreamObjectResult = class {
11756
11970
  const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
11757
11971
  new TransformStream({
11758
11972
  async transform(chunk, controller) {
11759
- var _a22, _b, _c;
11973
+ var _a23, _b, _c;
11760
11974
  if (typeof chunk === "object" && chunk.type === "stream-start") {
11761
11975
  warnings = chunk.warnings;
11762
11976
  return;
@@ -11806,7 +12020,7 @@ var DefaultStreamObjectResult = class {
11806
12020
  switch (chunk.type) {
11807
12021
  case "response-metadata": {
11808
12022
  fullResponse = {
11809
- id: (_a22 = chunk.id) != null ? _a22 : fullResponse.id,
12023
+ id: (_a23 = chunk.id) != null ? _a23 : fullResponse.id,
11810
12024
  timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
11811
12025
  modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
11812
12026
  };
@@ -12120,7 +12334,7 @@ async function generateSpeech({
12120
12334
  abortSignal,
12121
12335
  headers
12122
12336
  }) {
12123
- var _a22;
12337
+ var _a23;
12124
12338
  const resolvedModel = resolveSpeechModel(model);
12125
12339
  if (!resolvedModel) {
12126
12340
  throw new Error("Model could not be resolved");
@@ -12157,10 +12371,10 @@ async function generateSpeech({
12157
12371
  return new DefaultSpeechResult({
12158
12372
  audio: new DefaultGeneratedAudioFile({
12159
12373
  data: result.audio,
12160
- mediaType: (_a22 = detectMediaType({
12374
+ mediaType: (_a23 = detectMediaType({
12161
12375
  data: result.audio,
12162
12376
  signatures: audioMediaTypeSignatures
12163
- })) != null ? _a22 : "audio/mp3"
12377
+ })) != null ? _a23 : "audio/mp3"
12164
12378
  }),
12165
12379
  warnings: result.warnings,
12166
12380
  responses: [result.response],
@@ -12169,11 +12383,11 @@ async function generateSpeech({
12169
12383
  }
12170
12384
  var DefaultSpeechResult = class {
12171
12385
  constructor(options) {
12172
- var _a22;
12386
+ var _a23;
12173
12387
  this.audio = options.audio;
12174
12388
  this.warnings = options.warnings;
12175
12389
  this.responses = options.responses;
12176
- this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
12390
+ this.providerMetadata = (_a23 = options.providerMetadata) != null ? _a23 : {};
12177
12391
  }
12178
12392
  };
12179
12393
 
@@ -12273,7 +12487,7 @@ function pruneMessages({
12273
12487
 
12274
12488
  // src/generate-text/smooth-stream.ts
12275
12489
  var import_provider_utils35 = require("@ai-sdk/provider-utils");
12276
- var import_provider33 = require("@ai-sdk/provider");
12490
+ var import_provider34 = require("@ai-sdk/provider");
12277
12491
  var CHUNKING_REGEXPS = {
12278
12492
  word: /\S+\s+/m,
12279
12493
  line: /\n+/m
@@ -12312,7 +12526,7 @@ function smoothStream({
12312
12526
  } else {
12313
12527
  const chunkingRegex = typeof chunking === "string" ? CHUNKING_REGEXPS[chunking] : chunking instanceof RegExp ? chunking : void 0;
12314
12528
  if (chunkingRegex == null) {
12315
- throw new import_provider33.InvalidArgumentError({
12529
+ throw new import_provider34.InvalidArgumentError({
12316
12530
  argument: "chunking",
12317
12531
  message: `Chunking must be "word", "line", a RegExp, an Intl.Segmenter, or a ChunkDetector function. Received: ${chunking}`
12318
12532
  });
@@ -12391,7 +12605,7 @@ async function experimental_generateVideo({
12391
12605
  headers,
12392
12606
  download: downloadFn = defaultDownload
12393
12607
  }) {
12394
- var _a22, _b;
12608
+ var _a23, _b;
12395
12609
  const model = resolveVideoModel(modelArg);
12396
12610
  const headersWithUserAgent = (0, import_provider_utils36.withUserAgentSuffix)(
12397
12611
  headers != null ? headers : {},
@@ -12418,9 +12632,9 @@ async function experimental_generateVideo({
12418
12632
  message: "inputReferences were ignored because frameImages were provided; frameImages and inputReferences cannot be combined."
12419
12633
  });
12420
12634
  }
12421
- const firstFrameImage = (_a22 = normalizedFrameImages == null ? void 0 : normalizedFrameImages.find(
12635
+ const firstFrameImage = (_a23 = normalizedFrameImages == null ? void 0 : normalizedFrameImages.find(
12422
12636
  (frame) => frame.frameType === "first_frame"
12423
- )) == null ? void 0 : _a22.image;
12637
+ )) == null ? void 0 : _a23.image;
12424
12638
  if (image != null && firstFrameImage != null) {
12425
12639
  warnings.push({
12426
12640
  type: "other",
@@ -12564,8 +12778,8 @@ function normalizePrompt2(promptArg) {
12564
12778
  };
12565
12779
  }
12566
12780
  function detectFileMediaType(data, restrictToImages) {
12567
- var _a22;
12568
- const detected = restrictToImages ? detectMediaType({ data, signatures: imageMediaTypeSignatures }) : (_a22 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a22 : detectMediaType({ data, signatures: videoMediaTypeSignatures });
12781
+ var _a23;
12782
+ const detected = restrictToImages ? detectMediaType({ data, signatures: imageMediaTypeSignatures }) : (_a23 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a23 : detectMediaType({ data, signatures: videoMediaTypeSignatures });
12569
12783
  return detected != null ? detected : "image/png";
12570
12784
  }
12571
12785
  function normalizeImageData(dataContent, { restrictToImages = true } = {}) {
@@ -12659,8 +12873,8 @@ function stripMarkdownCodeFenceSuffix(text2) {
12659
12873
  return text2.replace(/\n?```\s*$/, "").trimEnd();
12660
12874
  }
12661
12875
  function extractJsonMiddleware(options) {
12662
- var _a22;
12663
- const transform = (_a22 = options == null ? void 0 : options.transform) != null ? _a22 : defaultTransform;
12876
+ var _a23;
12877
+ const transform = (_a23 = options == null ? void 0 : options.transform) != null ? _a23 : defaultTransform;
12664
12878
  const hasCustomTransform = (options == null ? void 0 : options.transform) !== void 0;
12665
12879
  return {
12666
12880
  specificationVersion: "v3",
@@ -13036,13 +13250,13 @@ function addToolInputExamplesMiddleware({
13036
13250
  return {
13037
13251
  specificationVersion: "v3",
13038
13252
  transformParams: async ({ params }) => {
13039
- var _a22;
13040
- if (!((_a22 = params.tools) == null ? void 0 : _a22.length)) {
13253
+ var _a23;
13254
+ if (!((_a23 = params.tools) == null ? void 0 : _a23.length)) {
13041
13255
  return params;
13042
13256
  }
13043
13257
  const transformedTools = params.tools.map((tool2) => {
13044
- var _a23;
13045
- if (tool2.type !== "function" || !((_a23 = tool2.inputExamples) == null ? void 0 : _a23.length)) {
13258
+ var _a24;
13259
+ if (tool2.type !== "function" || !((_a24 = tool2.inputExamples) == null ? void 0 : _a24.length)) {
13046
13260
  return tool2;
13047
13261
  }
13048
13262
  const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
@@ -13089,7 +13303,7 @@ var doWrap = ({
13089
13303
  modelId,
13090
13304
  providerId
13091
13305
  }) => {
13092
- var _a22, _b, _c;
13306
+ var _a23, _b, _c;
13093
13307
  async function doTransform({
13094
13308
  params,
13095
13309
  type
@@ -13098,7 +13312,7 @@ var doWrap = ({
13098
13312
  }
13099
13313
  return {
13100
13314
  specificationVersion: "v3",
13101
- provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
13315
+ provider: (_a23 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a23 : model.provider,
13102
13316
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
13103
13317
  supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
13104
13318
  async doGenerate(params) {
@@ -13146,7 +13360,7 @@ var doWrap2 = ({
13146
13360
  modelId,
13147
13361
  providerId
13148
13362
  }) => {
13149
- var _a22, _b, _c, _d;
13363
+ var _a23, _b, _c, _d;
13150
13364
  async function doTransform({
13151
13365
  params
13152
13366
  }) {
@@ -13154,7 +13368,7 @@ var doWrap2 = ({
13154
13368
  }
13155
13369
  return {
13156
13370
  specificationVersion: "v3",
13157
- provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
13371
+ provider: (_a23 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a23 : model.provider,
13158
13372
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
13159
13373
  maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
13160
13374
  [import_provider_utils37.EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL]: getEmbeddingModelMaxInputBytesPerCall(model),
@@ -13194,11 +13408,11 @@ var doWrap3 = ({
13194
13408
  modelId,
13195
13409
  providerId
13196
13410
  }) => {
13197
- var _a22, _b, _c;
13411
+ var _a23, _b, _c;
13198
13412
  async function doTransform({ params }) {
13199
13413
  return transformParams ? await transformParams({ params, model }) : params;
13200
13414
  }
13201
- const maxImagesPerCallRaw = (_a22 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a22 : model.maxImagesPerCall;
13415
+ const maxImagesPerCallRaw = (_a23 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a23 : model.maxImagesPerCall;
13202
13416
  const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;
13203
13417
  return {
13204
13418
  specificationVersion: "v3",
@@ -13263,7 +13477,7 @@ function wrapProvider({
13263
13477
  }
13264
13478
 
13265
13479
  // src/registry/custom-provider.ts
13266
- var import_provider34 = require("@ai-sdk/provider");
13480
+ var import_provider35 = require("@ai-sdk/provider");
13267
13481
  function customProvider({
13268
13482
  languageModels,
13269
13483
  embeddingModels,
@@ -13284,7 +13498,7 @@ function customProvider({
13284
13498
  if (fallbackProvider) {
13285
13499
  return fallbackProvider.languageModel(modelId);
13286
13500
  }
13287
- throw new import_provider34.NoSuchModelError({ modelId, modelType: "languageModel" });
13501
+ throw new import_provider35.NoSuchModelError({ modelId, modelType: "languageModel" });
13288
13502
  },
13289
13503
  embeddingModel(modelId) {
13290
13504
  if (embeddingModels != null && modelId in embeddingModels) {
@@ -13293,7 +13507,7 @@ function customProvider({
13293
13507
  if (fallbackProvider) {
13294
13508
  return fallbackProvider.embeddingModel(modelId);
13295
13509
  }
13296
- throw new import_provider34.NoSuchModelError({ modelId, modelType: "embeddingModel" });
13510
+ throw new import_provider35.NoSuchModelError({ modelId, modelType: "embeddingModel" });
13297
13511
  },
13298
13512
  imageModel(modelId) {
13299
13513
  if (imageModels != null && modelId in imageModels) {
@@ -13302,7 +13516,7 @@ function customProvider({
13302
13516
  if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
13303
13517
  return fallbackProvider.imageModel(modelId);
13304
13518
  }
13305
- throw new import_provider34.NoSuchModelError({ modelId, modelType: "imageModel" });
13519
+ throw new import_provider35.NoSuchModelError({ modelId, modelType: "imageModel" });
13306
13520
  },
13307
13521
  transcriptionModel(modelId) {
13308
13522
  if (transcriptionModels != null && modelId in transcriptionModels) {
@@ -13311,7 +13525,7 @@ function customProvider({
13311
13525
  if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {
13312
13526
  return fallbackProvider.transcriptionModel(modelId);
13313
13527
  }
13314
- throw new import_provider34.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
13528
+ throw new import_provider35.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
13315
13529
  },
13316
13530
  speechModel(modelId) {
13317
13531
  if (speechModels != null && modelId in speechModels) {
@@ -13320,7 +13534,7 @@ function customProvider({
13320
13534
  if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {
13321
13535
  return fallbackProvider.speechModel(modelId);
13322
13536
  }
13323
- throw new import_provider34.NoSuchModelError({ modelId, modelType: "speechModel" });
13537
+ throw new import_provider35.NoSuchModelError({ modelId, modelType: "speechModel" });
13324
13538
  },
13325
13539
  rerankingModel(modelId) {
13326
13540
  if (rerankingModels != null && modelId in rerankingModels) {
@@ -13329,7 +13543,7 @@ function customProvider({
13329
13543
  if (fallbackProvider == null ? void 0 : fallbackProvider.rerankingModel) {
13330
13544
  return fallbackProvider.rerankingModel(modelId);
13331
13545
  }
13332
- throw new import_provider34.NoSuchModelError({ modelId, modelType: "rerankingModel" });
13546
+ throw new import_provider35.NoSuchModelError({ modelId, modelType: "rerankingModel" });
13333
13547
  },
13334
13548
  videoModel(modelId) {
13335
13549
  if (videoModels != null && modelId in videoModels) {
@@ -13339,19 +13553,19 @@ function customProvider({
13339
13553
  if (videoModel) {
13340
13554
  return videoModel(modelId);
13341
13555
  }
13342
- throw new import_provider34.NoSuchModelError({ modelId, modelType: "videoModel" });
13556
+ throw new import_provider35.NoSuchModelError({ modelId, modelType: "videoModel" });
13343
13557
  }
13344
13558
  };
13345
13559
  }
13346
13560
  var experimental_customProvider = customProvider;
13347
13561
 
13348
13562
  // src/registry/no-such-provider-error.ts
13349
- var import_provider35 = require("@ai-sdk/provider");
13350
- var name21 = "AI_NoSuchProviderError";
13351
- var marker21 = `vercel.ai.error.${name21}`;
13352
- var symbol21 = Symbol.for(marker21);
13353
- var _a21;
13354
- var NoSuchProviderError = class extends import_provider35.NoSuchModelError {
13563
+ var import_provider36 = require("@ai-sdk/provider");
13564
+ var name22 = "AI_NoSuchProviderError";
13565
+ var marker22 = `vercel.ai.error.${name22}`;
13566
+ var symbol22 = Symbol.for(marker22);
13567
+ var _a22;
13568
+ var NoSuchProviderError = class extends import_provider36.NoSuchModelError {
13355
13569
  constructor({
13356
13570
  modelId,
13357
13571
  modelType,
@@ -13359,19 +13573,19 @@ var NoSuchProviderError = class extends import_provider35.NoSuchModelError {
13359
13573
  availableProviders,
13360
13574
  message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
13361
13575
  }) {
13362
- super({ errorName: name21, modelId, modelType, message });
13363
- this[_a21] = true;
13576
+ super({ errorName: name22, modelId, modelType, message });
13577
+ this[_a22] = true;
13364
13578
  this.providerId = providerId;
13365
13579
  this.availableProviders = availableProviders;
13366
13580
  }
13367
13581
  static isInstance(error) {
13368
- return import_provider35.AISDKError.hasMarker(error, marker21);
13582
+ return import_provider36.AISDKError.hasMarker(error, marker22);
13369
13583
  }
13370
13584
  };
13371
- _a21 = symbol21;
13585
+ _a22 = symbol22;
13372
13586
 
13373
13587
  // src/registry/provider-registry.ts
13374
- var import_provider36 = require("@ai-sdk/provider");
13588
+ var import_provider37 = require("@ai-sdk/provider");
13375
13589
  function createProviderRegistry(providers, {
13376
13590
  separator = ":",
13377
13591
  languageModelMiddleware,
@@ -13420,7 +13634,7 @@ var DefaultProviderRegistry = class {
13420
13634
  splitId(id, modelType) {
13421
13635
  const index = id.indexOf(this.separator);
13422
13636
  if (index === -1) {
13423
- throw new import_provider36.NoSuchModelError({
13637
+ throw new import_provider37.NoSuchModelError({
13424
13638
  modelId: id,
13425
13639
  modelType,
13426
13640
  message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
@@ -13429,14 +13643,14 @@ var DefaultProviderRegistry = class {
13429
13643
  return [id.slice(0, index), id.slice(index + this.separator.length)];
13430
13644
  }
13431
13645
  languageModel(id) {
13432
- var _a22, _b;
13646
+ var _a23, _b;
13433
13647
  const [providerId, modelId] = this.splitId(id, "languageModel");
13434
- let model = (_b = (_a22 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
13435
- _a22,
13648
+ let model = (_b = (_a23 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
13649
+ _a23,
13436
13650
  modelId
13437
13651
  );
13438
13652
  if (model == null) {
13439
- throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "languageModel" });
13653
+ throw new import_provider37.NoSuchModelError({ modelId: id, modelType: "languageModel" });
13440
13654
  }
13441
13655
  if (this.languageModelMiddleware != null) {
13442
13656
  model = wrapLanguageModel({
@@ -13447,12 +13661,12 @@ var DefaultProviderRegistry = class {
13447
13661
  return model;
13448
13662
  }
13449
13663
  embeddingModel(id) {
13450
- var _a22;
13664
+ var _a23;
13451
13665
  const [providerId, modelId] = this.splitId(id, "embeddingModel");
13452
13666
  const provider = this.getProvider(providerId, "embeddingModel");
13453
- const model = (_a22 = provider.embeddingModel) == null ? void 0 : _a22.call(provider, modelId);
13667
+ const model = (_a23 = provider.embeddingModel) == null ? void 0 : _a23.call(provider, modelId);
13454
13668
  if (model == null) {
13455
- throw new import_provider36.NoSuchModelError({
13669
+ throw new import_provider37.NoSuchModelError({
13456
13670
  modelId: id,
13457
13671
  modelType: "embeddingModel"
13458
13672
  });
@@ -13460,12 +13674,12 @@ var DefaultProviderRegistry = class {
13460
13674
  return model;
13461
13675
  }
13462
13676
  imageModel(id) {
13463
- var _a22;
13677
+ var _a23;
13464
13678
  const [providerId, modelId] = this.splitId(id, "imageModel");
13465
13679
  const provider = this.getProvider(providerId, "imageModel");
13466
- let model = (_a22 = provider.imageModel) == null ? void 0 : _a22.call(provider, modelId);
13680
+ let model = (_a23 = provider.imageModel) == null ? void 0 : _a23.call(provider, modelId);
13467
13681
  if (model == null) {
13468
- throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "imageModel" });
13682
+ throw new import_provider37.NoSuchModelError({ modelId: id, modelType: "imageModel" });
13469
13683
  }
13470
13684
  if (this.imageModelMiddleware != null) {
13471
13685
  model = wrapImageModel({
@@ -13476,12 +13690,12 @@ var DefaultProviderRegistry = class {
13476
13690
  return model;
13477
13691
  }
13478
13692
  transcriptionModel(id) {
13479
- var _a22;
13693
+ var _a23;
13480
13694
  const [providerId, modelId] = this.splitId(id, "transcriptionModel");
13481
13695
  const provider = this.getProvider(providerId, "transcriptionModel");
13482
- const model = (_a22 = provider.transcriptionModel) == null ? void 0 : _a22.call(provider, modelId);
13696
+ const model = (_a23 = provider.transcriptionModel) == null ? void 0 : _a23.call(provider, modelId);
13483
13697
  if (model == null) {
13484
- throw new import_provider36.NoSuchModelError({
13698
+ throw new import_provider37.NoSuchModelError({
13485
13699
  modelId: id,
13486
13700
  modelType: "transcriptionModel"
13487
13701
  });
@@ -13489,22 +13703,22 @@ var DefaultProviderRegistry = class {
13489
13703
  return model;
13490
13704
  }
13491
13705
  speechModel(id) {
13492
- var _a22;
13706
+ var _a23;
13493
13707
  const [providerId, modelId] = this.splitId(id, "speechModel");
13494
13708
  const provider = this.getProvider(providerId, "speechModel");
13495
- const model = (_a22 = provider.speechModel) == null ? void 0 : _a22.call(provider, modelId);
13709
+ const model = (_a23 = provider.speechModel) == null ? void 0 : _a23.call(provider, modelId);
13496
13710
  if (model == null) {
13497
- throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "speechModel" });
13711
+ throw new import_provider37.NoSuchModelError({ modelId: id, modelType: "speechModel" });
13498
13712
  }
13499
13713
  return model;
13500
13714
  }
13501
13715
  rerankingModel(id) {
13502
- var _a22;
13716
+ var _a23;
13503
13717
  const [providerId, modelId] = this.splitId(id, "rerankingModel");
13504
13718
  const provider = this.getProvider(providerId, "rerankingModel");
13505
- const model = (_a22 = provider.rerankingModel) == null ? void 0 : _a22.call(provider, modelId);
13719
+ const model = (_a23 = provider.rerankingModel) == null ? void 0 : _a23.call(provider, modelId);
13506
13720
  if (model == null) {
13507
- throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
13721
+ throw new import_provider37.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
13508
13722
  }
13509
13723
  return model;
13510
13724
  }
@@ -13560,7 +13774,7 @@ async function rerank({
13560
13774
  }),
13561
13775
  tracer,
13562
13776
  fn: async () => {
13563
- var _a22, _b;
13777
+ var _a23, _b;
13564
13778
  const { ranking, response, providerMetadata, warnings } = await retry(
13565
13779
  () => recordSpan({
13566
13780
  name: "ai.rerank.doRerank",
@@ -13624,7 +13838,7 @@ async function rerank({
13624
13838
  providerMetadata,
13625
13839
  response: {
13626
13840
  id: response == null ? void 0 : response.id,
13627
- timestamp: (_a22 = response == null ? void 0 : response.timestamp) != null ? _a22 : /* @__PURE__ */ new Date(),
13841
+ timestamp: (_a23 = response == null ? void 0 : response.timestamp) != null ? _a23 : /* @__PURE__ */ new Date(),
13628
13842
  modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
13629
13843
  headers: response == null ? void 0 : response.headers,
13630
13844
  body: response == null ? void 0 : response.body
@@ -13672,16 +13886,16 @@ async function transcribe({
13672
13886
  const audioData = audio instanceof URL ? (await downloadFn({ url: audio, abortSignal })).data : convertDataContentToUint8Array(audio);
13673
13887
  const result = await retry(
13674
13888
  () => {
13675
- var _a22;
13889
+ var _a23;
13676
13890
  return resolvedModel.doGenerate({
13677
13891
  audio: audioData,
13678
13892
  abortSignal,
13679
13893
  headers: headersWithUserAgent,
13680
13894
  providerOptions,
13681
- mediaType: (_a22 = detectMediaType({
13895
+ mediaType: (_a23 = detectMediaType({
13682
13896
  data: audioData,
13683
13897
  signatures: audioMediaTypeSignatures
13684
- })) != null ? _a22 : "audio/wav"
13898
+ })) != null ? _a23 : "audio/wav"
13685
13899
  });
13686
13900
  }
13687
13901
  );
@@ -13705,14 +13919,14 @@ async function transcribe({
13705
13919
  }
13706
13920
  var DefaultTranscriptionResult = class {
13707
13921
  constructor(options) {
13708
- var _a22;
13922
+ var _a23;
13709
13923
  this.text = options.text;
13710
13924
  this.segments = options.segments;
13711
13925
  this.language = options.language;
13712
13926
  this.durationInSeconds = options.durationInSeconds;
13713
13927
  this.warnings = options.warnings;
13714
13928
  this.responses = options.responses;
13715
- this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
13929
+ this.providerMetadata = (_a23 = options.providerMetadata) != null ? _a23 : {};
13716
13930
  }
13717
13931
  };
13718
13932
 
@@ -13751,7 +13965,7 @@ async function callCompletionApi({
13751
13965
  onError,
13752
13966
  fetch: fetch2 = getOriginalFetch()
13753
13967
  }) {
13754
- var _a22;
13968
+ var _a23;
13755
13969
  try {
13756
13970
  setLoading(true);
13757
13971
  setError(void 0);
@@ -13779,7 +13993,7 @@ async function callCompletionApi({
13779
13993
  });
13780
13994
  if (!response.ok) {
13781
13995
  throw new Error(
13782
- (_a22 = await response.text()) != null ? _a22 : "Failed to fetch the chat response."
13996
+ (_a23 = await response.text()) != null ? _a23 : "Failed to fetch the chat response."
13783
13997
  );
13784
13998
  }
13785
13999
  if (!response.body) {
@@ -13863,12 +14077,12 @@ async function convertFileListToFileUIParts(files) {
13863
14077
  }
13864
14078
  return Promise.all(
13865
14079
  Array.from(files).map(async (file) => {
13866
- const { name: name22, type } = file;
14080
+ const { name: name23, type } = file;
13867
14081
  const dataUrl = await new Promise((resolve3, reject) => {
13868
14082
  const reader = new FileReader();
13869
14083
  reader.onload = (readerEvent) => {
13870
- var _a22;
13871
- resolve3((_a22 = readerEvent.target) == null ? void 0 : _a22.result);
14084
+ var _a23;
14085
+ resolve3((_a23 = readerEvent.target) == null ? void 0 : _a23.result);
13872
14086
  };
13873
14087
  reader.onerror = (error) => reject(error);
13874
14088
  reader.readAsDataURL(file);
@@ -13876,7 +14090,7 @@ async function convertFileListToFileUIParts(files) {
13876
14090
  return {
13877
14091
  type: "file",
13878
14092
  mediaType: type,
13879
- filename: name22,
14093
+ filename: name23,
13880
14094
  url: dataUrl
13881
14095
  };
13882
14096
  })
@@ -13910,7 +14124,7 @@ var HttpChatTransport = class {
13910
14124
  abortSignal,
13911
14125
  ...options
13912
14126
  }) {
13913
- var _a22, _b, _c, _d, _e;
14127
+ var _a23, _b, _c, _d, _e;
13914
14128
  const resolvedBody = await (0, import_provider_utils40.resolve)(this.body);
13915
14129
  const resolvedHeaders = await (0, import_provider_utils40.resolve)(this.headers);
13916
14130
  const resolvedCredentials = await (0, import_provider_utils40.resolve)(this.credentials);
@@ -13918,7 +14132,7 @@ var HttpChatTransport = class {
13918
14132
  ...(0, import_provider_utils40.normalizeHeaders)(resolvedHeaders),
13919
14133
  ...(0, import_provider_utils40.normalizeHeaders)(options.headers)
13920
14134
  };
13921
- const preparedRequest = await ((_a22 = this.prepareSendMessagesRequest) == null ? void 0 : _a22.call(this, {
14135
+ const preparedRequest = await ((_a23 = this.prepareSendMessagesRequest) == null ? void 0 : _a23.call(this, {
13922
14136
  api: this.api,
13923
14137
  id: options.chatId,
13924
14138
  messages: options.messages,
@@ -13962,7 +14176,7 @@ var HttpChatTransport = class {
13962
14176
  return this.processResponseStream(response.body);
13963
14177
  }
13964
14178
  async reconnectToStream(options) {
13965
- var _a22, _b, _c, _d, _e;
14179
+ var _a23, _b, _c, _d, _e;
13966
14180
  const resolvedBody = await (0, import_provider_utils40.resolve)(this.body);
13967
14181
  const resolvedHeaders = await (0, import_provider_utils40.resolve)(this.headers);
13968
14182
  const resolvedCredentials = await (0, import_provider_utils40.resolve)(this.credentials);
@@ -13970,7 +14184,7 @@ var HttpChatTransport = class {
13970
14184
  ...(0, import_provider_utils40.normalizeHeaders)(resolvedHeaders),
13971
14185
  ...(0, import_provider_utils40.normalizeHeaders)(options.headers)
13972
14186
  };
13973
- const preparedRequest = await ((_a22 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a22.call(this, {
14187
+ const preparedRequest = await ((_a23 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a23.call(this, {
13974
14188
  api: this.api,
13975
14189
  id: options.chatId,
13976
14190
  body: { ...resolvedBody, ...options.body },
@@ -14050,11 +14264,11 @@ var AbstractChat = class {
14050
14264
  * If a messageId is provided, the message will be replaced.
14051
14265
  */
14052
14266
  this.sendMessage = async (message, options) => {
14053
- var _a22, _b, _c, _d;
14267
+ var _a23, _b, _c, _d;
14054
14268
  if (message == null) {
14055
14269
  await this.makeRequest({
14056
14270
  trigger: "submit-message",
14057
- messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
14271
+ messageId: (_a23 = this.lastMessage) == null ? void 0 : _a23.id,
14058
14272
  ...options
14059
14273
  });
14060
14274
  return;
@@ -14164,11 +14378,11 @@ var AbstractChat = class {
14164
14378
  }
14165
14379
  if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
14166
14380
  this.shouldSendAutomatically().then((shouldSend) => {
14167
- var _a22;
14381
+ var _a23;
14168
14382
  if (shouldSend) {
14169
14383
  this.makeRequest({
14170
14384
  trigger: "submit-message",
14171
- messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
14385
+ messageId: (_a23 = this.lastMessage) == null ? void 0 : _a23.id,
14172
14386
  ...options
14173
14387
  });
14174
14388
  }
@@ -14194,11 +14408,11 @@ var AbstractChat = class {
14194
14408
  }
14195
14409
  if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
14196
14410
  this.shouldSendAutomatically().then((shouldSend) => {
14197
- var _a22;
14411
+ var _a23;
14198
14412
  if (shouldSend) {
14199
14413
  this.makeRequest({
14200
14414
  trigger: "submit-message",
14201
- messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
14415
+ messageId: (_a23 = this.lastMessage) == null ? void 0 : _a23.id,
14202
14416
  ...options
14203
14417
  });
14204
14418
  }
@@ -14211,8 +14425,8 @@ var AbstractChat = class {
14211
14425
  * Abort the current request immediately, keep the generated tokens if any.
14212
14426
  */
14213
14427
  this.stop = async () => {
14214
- var _a22, _b;
14215
- (_a22 = this.activeResumeRequest) == null ? void 0 : _a22.abortController.abort();
14428
+ var _a23, _b;
14429
+ (_a23 = this.activeResumeRequest) == null ? void 0 : _a23.abortController.abort();
14216
14430
  (_b = this.activeResponse) == null ? void 0 : _b.abortController.abort();
14217
14431
  };
14218
14432
  this.id = id;
@@ -14277,11 +14491,11 @@ var AbstractChat = class {
14277
14491
  body,
14278
14492
  messageId
14279
14493
  }) {
14280
- var _a22, _b, _c;
14494
+ var _a23, _b, _c;
14281
14495
  const abortController = new AbortController();
14282
14496
  const activeResumeRequest = trigger === "resume-stream" ? { abortController } : void 0;
14283
14497
  if (activeResumeRequest) {
14284
- (_a22 = this.activeResumeRequest) == null ? void 0 : _a22.abortController.abort();
14498
+ (_a23 = this.activeResumeRequest) == null ? void 0 : _a23.abortController.abort();
14285
14499
  this.activeResumeRequest = activeResumeRequest;
14286
14500
  }
14287
14501
  const isCurrentRequest = () => activeResumeRequest == null || this.activeResumeRequest === activeResumeRequest;
@@ -14377,14 +14591,14 @@ var AbstractChat = class {
14377
14591
  return job({
14378
14592
  state: response.state,
14379
14593
  write: ({ updateStatus = true } = {}) => {
14380
- var _a23;
14594
+ var _a24;
14381
14595
  if (response.abortController.signal.aborted) {
14382
14596
  return;
14383
14597
  }
14384
14598
  if (updateStatus) {
14385
14599
  this.setStatus({ status: "streaming" });
14386
14600
  }
14387
- const replaceLastMessage = response.state.message.id === ((_a23 = this.lastMessage) == null ? void 0 : _a23.id);
14601
+ const replaceLastMessage = response.state.message.id === ((_a24 = this.lastMessage) == null ? void 0 : _a24.id);
14388
14602
  if (replaceLastMessage) {
14389
14603
  this.state.replaceMessage(
14390
14604
  this.state.messages.length - 1,
@@ -14488,7 +14702,7 @@ var DirectChatTransport = class {
14488
14702
  messages,
14489
14703
  abortSignal
14490
14704
  }) {
14491
- const validatedMessages = await validateUIMessages({
14705
+ const validatedMessages = await validateUIMessagesForAgent({
14492
14706
  messages,
14493
14707
  tools: this.agent.tools
14494
14708
  });
@@ -14635,6 +14849,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
14635
14849
  TooManyEmbeddingValuesForCallError,
14636
14850
  ToolCallNotFoundForApprovalError,
14637
14851
  ToolCallRepairError,
14852
+ ToolChoiceViolationError,
14638
14853
  ToolLoopAgent,
14639
14854
  TypeValidationError,
14640
14855
  UIMessageStreamError,