ai 5.0.0-canary.5 → 5.0.0-canary.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/index.d.mts +168 -448
  3. package/dist/index.d.ts +168 -448
  4. package/dist/index.js +289 -303
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +205 -219
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/internal/index.d.mts +259 -311
  9. package/dist/internal/index.d.ts +259 -311
  10. package/dist/internal/index.js +139 -155
  11. package/dist/internal/index.js.map +1 -1
  12. package/dist/internal/index.mjs +129 -145
  13. package/dist/internal/index.mjs.map +1 -1
  14. package/dist/mcp-stdio/index.js.map +1 -0
  15. package/dist/mcp-stdio/index.mjs.map +1 -0
  16. package/dist/test/index.js.map +1 -0
  17. package/dist/test/index.mjs.map +1 -0
  18. package/package.json +15 -18
  19. package/mcp-stdio/create-child-process.test.ts +0 -92
  20. package/mcp-stdio/create-child-process.ts +0 -21
  21. package/mcp-stdio/dist/index.js.map +0 -1
  22. package/mcp-stdio/dist/index.mjs.map +0 -1
  23. package/mcp-stdio/get-environment.test.ts +0 -13
  24. package/mcp-stdio/get-environment.ts +0 -43
  25. package/mcp-stdio/index.ts +0 -4
  26. package/mcp-stdio/mcp-stdio-transport.test.ts +0 -262
  27. package/mcp-stdio/mcp-stdio-transport.ts +0 -157
  28. package/test/dist/index.js.map +0 -1
  29. package/test/dist/index.mjs.map +0 -1
  30. /package/{mcp-stdio/dist → dist/mcp-stdio}/index.d.mts +0 -0
  31. /package/{mcp-stdio/dist → dist/mcp-stdio}/index.d.ts +0 -0
  32. /package/{mcp-stdio/dist → dist/mcp-stdio}/index.js +0 -0
  33. /package/{mcp-stdio/dist → dist/mcp-stdio}/index.mjs +0 -0
  34. /package/{test/dist → dist/test}/index.d.mts +0 -0
  35. /package/{test/dist → dist/test}/index.d.ts +0 -0
  36. /package/{test/dist → dist/test}/index.js +0 -0
  37. /package/{test/dist → dist/test}/index.mjs +0 -0
@@ -41,12 +41,14 @@ __export(internal_exports, {
41
41
  module.exports = __toCommonJS(internal_exports);
42
42
 
43
43
  // core/prompt/standardize-prompt.ts
44
- var import_provider3 = require("@ai-sdk/provider");
44
+ var import_provider4 = require("@ai-sdk/provider");
45
45
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
46
46
  var import_zod7 = require("zod");
47
47
 
48
48
  // core/prompt/data-content.ts
49
+ var import_provider2 = require("@ai-sdk/provider");
49
50
  var import_provider_utils = require("@ai-sdk/provider-utils");
51
+ var import_zod = require("zod");
50
52
 
51
53
  // core/prompt/invalid-data-content-error.ts
52
54
  var import_provider = require("@ai-sdk/provider");
@@ -70,8 +72,23 @@ var InvalidDataContentError = class extends import_provider.AISDKError {
70
72
  };
71
73
  _a = symbol;
72
74
 
75
+ // core/prompt/split-data-url.ts
76
+ function splitDataUrl(dataUrl) {
77
+ try {
78
+ const [header, base64Content] = dataUrl.split(",");
79
+ return {
80
+ mediaType: header.split(";")[0].split(":")[1],
81
+ base64Content
82
+ };
83
+ } catch (error) {
84
+ return {
85
+ mediaType: void 0,
86
+ base64Content: void 0
87
+ };
88
+ }
89
+ }
90
+
73
91
  // core/prompt/data-content.ts
74
- var import_zod = require("zod");
75
92
  var dataContentSchema = import_zod.z.union([
76
93
  import_zod.z.string(),
77
94
  import_zod.z.instanceof(Uint8Array),
@@ -85,14 +102,32 @@ var dataContentSchema = import_zod.z.union([
85
102
  { message: "Must be a Buffer" }
86
103
  )
87
104
  ]);
88
- function convertDataContentToBase64String(content) {
89
- if (typeof content === "string") {
90
- return content;
105
+ function convertToLanguageModelV2DataContent(content) {
106
+ if (content instanceof Uint8Array) {
107
+ return { data: content, mediaType: void 0 };
91
108
  }
92
109
  if (content instanceof ArrayBuffer) {
93
- return (0, import_provider_utils.convertUint8ArrayToBase64)(new Uint8Array(content));
110
+ return { data: new Uint8Array(content), mediaType: void 0 };
111
+ }
112
+ if (typeof content === "string") {
113
+ try {
114
+ content = new URL(content);
115
+ } catch (error) {
116
+ }
94
117
  }
95
- return (0, import_provider_utils.convertUint8ArrayToBase64)(content);
118
+ if (content instanceof URL && content.protocol === "data:") {
119
+ const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(
120
+ content.toString()
121
+ );
122
+ if (dataUrlMediaType == null || base64Content == null) {
123
+ throw new import_provider2.AISDKError({
124
+ name: "InvalidDataContentError",
125
+ message: `Invalid data URL format in content ${content.toString()}`
126
+ });
127
+ }
128
+ return { data: base64Content, mediaType: dataUrlMediaType };
129
+ }
130
+ return { data: content, mediaType: void 0 };
96
131
  }
97
132
  function convertDataContentToUint8Array(content) {
98
133
  if (content instanceof Uint8Array) {
@@ -200,12 +235,12 @@ function attachmentsToParts(attachments) {
200
235
  }
201
236
 
202
237
  // core/prompt/message-conversion-error.ts
203
- var import_provider2 = require("@ai-sdk/provider");
238
+ var import_provider3 = require("@ai-sdk/provider");
204
239
  var name2 = "AI_MessageConversionError";
205
240
  var marker2 = `vercel.ai.error.${name2}`;
206
241
  var symbol2 = Symbol.for(marker2);
207
242
  var _a2;
208
- var MessageConversionError = class extends import_provider2.AISDKError {
243
+ var MessageConversionError = class extends import_provider3.AISDKError {
209
244
  constructor({
210
245
  originalMessage,
211
246
  message
@@ -215,7 +250,7 @@ var MessageConversionError = class extends import_provider2.AISDKError {
215
250
  this.originalMessage = originalMessage;
216
251
  }
217
252
  static isInstance(error) {
218
- return import_provider2.AISDKError.hasMarker(error, marker2);
253
+ return import_provider3.AISDKError.hasMarker(error, marker2);
219
254
  }
220
255
  };
221
256
  _a2 = symbol2;
@@ -489,7 +524,7 @@ function detectSingleMessageCharacteristics(message) {
489
524
  "experimental_attachments" in message)) {
490
525
  return "has-ui-specific-parts";
491
526
  } else if (typeof message === "object" && message !== null && "content" in message && (Array.isArray(message.content) || // Core messages can have array content
492
- "experimental_providerMetadata" in message || "providerOptions" in message)) {
527
+ "providerOptions" in message)) {
493
528
  return "has-core-specific-parts";
494
529
  } else if (typeof message === "object" && message !== null && "role" in message && "content" in message && typeof message.content === "string" && ["system", "user", "assistant", "tool"].includes(message.role)) {
495
530
  return "message";
@@ -543,16 +578,14 @@ var toolResultContentSchema = import_zod4.z.array(
543
578
  var textPartSchema = import_zod5.z.object({
544
579
  type: import_zod5.z.literal("text"),
545
580
  text: import_zod5.z.string(),
546
- providerOptions: providerMetadataSchema.optional(),
547
- experimental_providerMetadata: providerMetadataSchema.optional()
581
+ providerOptions: providerMetadataSchema.optional()
548
582
  });
549
583
  var imagePartSchema = import_zod5.z.object({
550
584
  type: import_zod5.z.literal("image"),
551
585
  image: import_zod5.z.union([dataContentSchema, import_zod5.z.instanceof(URL)]),
552
586
  mediaType: import_zod5.z.string().optional(),
553
587
  mimeType: import_zod5.z.string().optional(),
554
- providerOptions: providerMetadataSchema.optional(),
555
- experimental_providerMetadata: providerMetadataSchema.optional()
588
+ providerOptions: providerMetadataSchema.optional()
556
589
  });
557
590
  var filePartSchema = import_zod5.z.object({
558
591
  type: import_zod5.z.literal("file"),
@@ -560,28 +593,24 @@ var filePartSchema = import_zod5.z.object({
560
593
  filename: import_zod5.z.string().optional(),
561
594
  mediaType: import_zod5.z.string(),
562
595
  mimeType: import_zod5.z.string().optional(),
563
- providerOptions: providerMetadataSchema.optional(),
564
- experimental_providerMetadata: providerMetadataSchema.optional()
596
+ providerOptions: providerMetadataSchema.optional()
565
597
  });
566
598
  var reasoningPartSchema = import_zod5.z.object({
567
599
  type: import_zod5.z.literal("reasoning"),
568
600
  text: import_zod5.z.string(),
569
- providerOptions: providerMetadataSchema.optional(),
570
- experimental_providerMetadata: providerMetadataSchema.optional()
601
+ providerOptions: providerMetadataSchema.optional()
571
602
  });
572
603
  var redactedReasoningPartSchema = import_zod5.z.object({
573
604
  type: import_zod5.z.literal("redacted-reasoning"),
574
605
  data: import_zod5.z.string(),
575
- providerOptions: providerMetadataSchema.optional(),
576
- experimental_providerMetadata: providerMetadataSchema.optional()
606
+ providerOptions: providerMetadataSchema.optional()
577
607
  });
578
608
  var toolCallPartSchema = import_zod5.z.object({
579
609
  type: import_zod5.z.literal("tool-call"),
580
610
  toolCallId: import_zod5.z.string(),
581
611
  toolName: import_zod5.z.string(),
582
612
  args: import_zod5.z.unknown(),
583
- providerOptions: providerMetadataSchema.optional(),
584
- experimental_providerMetadata: providerMetadataSchema.optional()
613
+ providerOptions: providerMetadataSchema.optional()
585
614
  });
586
615
  var toolResultPartSchema = import_zod5.z.object({
587
616
  type: import_zod5.z.literal("tool-result"),
@@ -590,16 +619,14 @@ var toolResultPartSchema = import_zod5.z.object({
590
619
  result: import_zod5.z.unknown(),
591
620
  content: toolResultContentSchema.optional(),
592
621
  isError: import_zod5.z.boolean().optional(),
593
- providerOptions: providerMetadataSchema.optional(),
594
- experimental_providerMetadata: providerMetadataSchema.optional()
622
+ providerOptions: providerMetadataSchema.optional()
595
623
  });
596
624
 
597
625
  // core/prompt/message.ts
598
626
  var coreSystemMessageSchema = import_zod6.z.object({
599
627
  role: import_zod6.z.literal("system"),
600
628
  content: import_zod6.z.string(),
601
- providerOptions: providerMetadataSchema.optional(),
602
- experimental_providerMetadata: providerMetadataSchema.optional()
629
+ providerOptions: providerMetadataSchema.optional()
603
630
  });
604
631
  var coreUserMessageSchema = import_zod6.z.object({
605
632
  role: import_zod6.z.literal("user"),
@@ -607,8 +634,7 @@ var coreUserMessageSchema = import_zod6.z.object({
607
634
  import_zod6.z.string(),
608
635
  import_zod6.z.array(import_zod6.z.union([textPartSchema, imagePartSchema, filePartSchema]))
609
636
  ]),
610
- providerOptions: providerMetadataSchema.optional(),
611
- experimental_providerMetadata: providerMetadataSchema.optional()
637
+ providerOptions: providerMetadataSchema.optional()
612
638
  });
613
639
  var coreAssistantMessageSchema = import_zod6.z.object({
614
640
  role: import_zod6.z.literal("assistant"),
@@ -624,14 +650,12 @@ var coreAssistantMessageSchema = import_zod6.z.object({
624
650
  ])
625
651
  )
626
652
  ]),
627
- providerOptions: providerMetadataSchema.optional(),
628
- experimental_providerMetadata: providerMetadataSchema.optional()
653
+ providerOptions: providerMetadataSchema.optional()
629
654
  });
630
655
  var coreToolMessageSchema = import_zod6.z.object({
631
656
  role: import_zod6.z.literal("tool"),
632
657
  content: import_zod6.z.array(toolResultPartSchema),
633
- providerOptions: providerMetadataSchema.optional(),
634
- experimental_providerMetadata: providerMetadataSchema.optional()
658
+ providerOptions: providerMetadataSchema.optional()
635
659
  });
636
660
  var coreMessageSchema = import_zod6.z.union([
637
661
  coreSystemMessageSchema,
@@ -646,26 +670,26 @@ function standardizePrompt({
646
670
  tools
647
671
  }) {
648
672
  if (prompt.prompt == null && prompt.messages == null) {
649
- throw new import_provider3.InvalidPromptError({
673
+ throw new import_provider4.InvalidPromptError({
650
674
  prompt,
651
675
  message: "prompt or messages must be defined"
652
676
  });
653
677
  }
654
678
  if (prompt.prompt != null && prompt.messages != null) {
655
- throw new import_provider3.InvalidPromptError({
679
+ throw new import_provider4.InvalidPromptError({
656
680
  prompt,
657
681
  message: "prompt and messages cannot be defined at the same time"
658
682
  });
659
683
  }
660
684
  if (prompt.system != null && typeof prompt.system !== "string") {
661
- throw new import_provider3.InvalidPromptError({
685
+ throw new import_provider4.InvalidPromptError({
662
686
  prompt,
663
687
  message: "system must be a string"
664
688
  });
665
689
  }
666
690
  if (prompt.prompt != null) {
667
691
  if (typeof prompt.prompt !== "string") {
668
- throw new import_provider3.InvalidPromptError({
692
+ throw new import_provider4.InvalidPromptError({
669
693
  prompt,
670
694
  message: "prompt must be a string"
671
695
  });
@@ -684,7 +708,7 @@ function standardizePrompt({
684
708
  if (prompt.messages != null) {
685
709
  const promptType = detectPromptType(prompt.messages);
686
710
  if (promptType === "other") {
687
- throw new import_provider3.InvalidPromptError({
711
+ throw new import_provider4.InvalidPromptError({
688
712
  prompt,
689
713
  message: "messages must be an array of CoreMessage or UIMessage"
690
714
  });
@@ -693,7 +717,7 @@ function standardizePrompt({
693
717
  tools
694
718
  }) : prompt.messages;
695
719
  if (messages.length === 0) {
696
- throw new import_provider3.InvalidPromptError({
720
+ throw new import_provider4.InvalidPromptError({
697
721
  prompt,
698
722
  message: "messages must not be empty"
699
723
  });
@@ -703,7 +727,7 @@ function standardizePrompt({
703
727
  schema: import_zod7.z.array(coreMessageSchema)
704
728
  });
705
729
  if (!validationResult.success) {
706
- throw new import_provider3.InvalidPromptError({
730
+ throw new import_provider4.InvalidPromptError({
707
731
  prompt,
708
732
  message: "messages must be an array of CoreMessage or UIMessage",
709
733
  cause: validationResult.error
@@ -762,7 +786,10 @@ function isSchema(value) {
762
786
  return typeof value === "object" && value !== null && schemaSymbol in value && value[schemaSymbol] === true && "jsonSchema" in value && "validate" in value;
763
787
  }
764
788
  function asSchema(schema) {
765
- return isSchema(schema) ? schema : zodSchema(schema);
789
+ return schema == null ? jsonSchema({
790
+ properties: {},
791
+ additionalProperties: false
792
+ }) : isSchema(schema) ? schema : zodSchema(schema);
766
793
  }
767
794
 
768
795
  // core/util/is-non-empty-object.ts
@@ -815,12 +842,12 @@ function prepareToolsAndToolChoice({
815
842
  }
816
843
 
817
844
  // errors/invalid-argument-error.ts
818
- var import_provider4 = require("@ai-sdk/provider");
845
+ var import_provider5 = require("@ai-sdk/provider");
819
846
  var name3 = "AI_InvalidArgumentError";
820
847
  var marker3 = `vercel.ai.error.${name3}`;
821
848
  var symbol3 = Symbol.for(marker3);
822
849
  var _a3;
823
- var InvalidArgumentError = class extends import_provider4.AISDKError {
850
+ var InvalidArgumentError = class extends import_provider5.AISDKError {
824
851
  constructor({
825
852
  parameter,
826
853
  value,
@@ -835,22 +862,22 @@ var InvalidArgumentError = class extends import_provider4.AISDKError {
835
862
  this.value = value;
836
863
  }
837
864
  static isInstance(error) {
838
- return import_provider4.AISDKError.hasMarker(error, marker3);
865
+ return import_provider5.AISDKError.hasMarker(error, marker3);
839
866
  }
840
867
  };
841
868
  _a3 = symbol3;
842
869
 
843
870
  // util/retry-with-exponential-backoff.ts
844
- var import_provider6 = require("@ai-sdk/provider");
871
+ var import_provider7 = require("@ai-sdk/provider");
845
872
  var import_provider_utils5 = require("@ai-sdk/provider-utils");
846
873
 
847
874
  // util/retry-error.ts
848
- var import_provider5 = require("@ai-sdk/provider");
875
+ var import_provider6 = require("@ai-sdk/provider");
849
876
  var name4 = "AI_RetryError";
850
877
  var marker4 = `vercel.ai.error.${name4}`;
851
878
  var symbol4 = Symbol.for(marker4);
852
879
  var _a4;
853
- var RetryError = class extends import_provider5.AISDKError {
880
+ var RetryError = class extends import_provider6.AISDKError {
854
881
  constructor({
855
882
  message,
856
883
  reason,
@@ -863,7 +890,7 @@ var RetryError = class extends import_provider5.AISDKError {
863
890
  this.lastError = errors[errors.length - 1];
864
891
  }
865
892
  static isInstance(error) {
866
- return import_provider5.AISDKError.hasMarker(error, marker4);
893
+ return import_provider6.AISDKError.hasMarker(error, marker4);
867
894
  }
868
895
  };
869
896
  _a4 = symbol4;
@@ -902,7 +929,7 @@ async function _retryWithExponentialBackoff(f, {
902
929
  errors: newErrors
903
930
  });
904
931
  }
905
- if (error instanceof Error && import_provider6.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
932
+ if (error instanceof Error && import_provider7.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
906
933
  await (0, import_provider_utils5.delay)(delayInMs);
907
934
  return _retryWithExponentialBackoff(
908
935
  f,
@@ -950,7 +977,7 @@ function prepareRetries({
950
977
 
951
978
  // core/prompt/prepare-call-settings.ts
952
979
  function prepareCallSettings({
953
- maxTokens,
980
+ maxOutputTokens,
954
981
  temperature,
955
982
  topP,
956
983
  topK,
@@ -959,19 +986,19 @@ function prepareCallSettings({
959
986
  stopSequences,
960
987
  seed
961
988
  }) {
962
- if (maxTokens != null) {
963
- if (!Number.isInteger(maxTokens)) {
989
+ if (maxOutputTokens != null) {
990
+ if (!Number.isInteger(maxOutputTokens)) {
964
991
  throw new InvalidArgumentError({
965
- parameter: "maxTokens",
966
- value: maxTokens,
967
- message: "maxTokens must be an integer"
992
+ parameter: "maxOutputTokens",
993
+ value: maxOutputTokens,
994
+ message: "maxOutputTokens must be an integer"
968
995
  });
969
996
  }
970
- if (maxTokens < 1) {
997
+ if (maxOutputTokens < 1) {
971
998
  throw new InvalidArgumentError({
972
- parameter: "maxTokens",
973
- value: maxTokens,
974
- message: "maxTokens must be >= 1"
999
+ parameter: "maxOutputTokens",
1000
+ value: maxOutputTokens,
1001
+ message: "maxOutputTokens must be >= 1"
975
1002
  });
976
1003
  }
977
1004
  }
@@ -1030,7 +1057,7 @@ function prepareCallSettings({
1030
1057
  }
1031
1058
  }
1032
1059
  return {
1033
- maxTokens,
1060
+ maxOutputTokens,
1034
1061
  // TODO v5 remove default 0 for temperature
1035
1062
  temperature: temperature != null ? temperature : 0,
1036
1063
  topP,
@@ -1042,16 +1069,13 @@ function prepareCallSettings({
1042
1069
  };
1043
1070
  }
1044
1071
 
1045
- // core/prompt/convert-to-language-model-prompt.ts
1046
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
1047
-
1048
1072
  // util/download-error.ts
1049
- var import_provider7 = require("@ai-sdk/provider");
1073
+ var import_provider8 = require("@ai-sdk/provider");
1050
1074
  var name5 = "AI_DownloadError";
1051
1075
  var marker5 = `vercel.ai.error.${name5}`;
1052
1076
  var symbol5 = Symbol.for(marker5);
1053
1077
  var _a5;
1054
- var DownloadError = class extends import_provider7.AISDKError {
1078
+ var DownloadError = class extends import_provider8.AISDKError {
1055
1079
  constructor({
1056
1080
  url,
1057
1081
  statusCode,
@@ -1066,7 +1090,7 @@ var DownloadError = class extends import_provider7.AISDKError {
1066
1090
  this.statusText = statusText;
1067
1091
  }
1068
1092
  static isInstance(error) {
1069
- return import_provider7.AISDKError.hasMarker(error, marker5);
1093
+ return import_provider8.AISDKError.hasMarker(error, marker5);
1070
1094
  }
1071
1095
  };
1072
1096
  _a5 = symbol5;
@@ -1183,12 +1207,12 @@ function detectMediaType({
1183
1207
  }
1184
1208
 
1185
1209
  // core/prompt/invalid-message-role-error.ts
1186
- var import_provider8 = require("@ai-sdk/provider");
1210
+ var import_provider9 = require("@ai-sdk/provider");
1187
1211
  var name6 = "AI_InvalidMessageRoleError";
1188
1212
  var marker6 = `vercel.ai.error.${name6}`;
1189
1213
  var symbol6 = Symbol.for(marker6);
1190
1214
  var _a6;
1191
- var InvalidMessageRoleError = class extends import_provider8.AISDKError {
1215
+ var InvalidMessageRoleError = class extends import_provider9.AISDKError {
1192
1216
  constructor({
1193
1217
  role,
1194
1218
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
@@ -1198,27 +1222,11 @@ var InvalidMessageRoleError = class extends import_provider8.AISDKError {
1198
1222
  this.role = role;
1199
1223
  }
1200
1224
  static isInstance(error) {
1201
- return import_provider8.AISDKError.hasMarker(error, marker6);
1225
+ return import_provider9.AISDKError.hasMarker(error, marker6);
1202
1226
  }
1203
1227
  };
1204
1228
  _a6 = symbol6;
1205
1229
 
1206
- // core/prompt/split-data-url.ts
1207
- function splitDataUrl(dataUrl) {
1208
- try {
1209
- const [header, base64Content] = dataUrl.split(",");
1210
- return {
1211
- mediaType: header.split(";")[0].split(":")[1],
1212
- base64Content
1213
- };
1214
- } catch (error) {
1215
- return {
1216
- mediaType: void 0,
1217
- base64Content: void 0
1218
- };
1219
- }
1220
- }
1221
-
1222
1230
  // core/prompt/convert-to-language-model-prompt.ts
1223
1231
  async function convertToLanguageModelPrompt({
1224
1232
  prompt,
@@ -1240,14 +1248,13 @@ async function convertToLanguageModelPrompt({
1240
1248
  ];
1241
1249
  }
1242
1250
  function convertToLanguageModelMessage(message, downloadedAssets) {
1243
- var _a7, _b, _c, _d, _e, _f;
1244
1251
  const role = message.role;
1245
1252
  switch (role) {
1246
1253
  case "system": {
1247
1254
  return {
1248
1255
  role: "system",
1249
1256
  content: message.content,
1250
- providerOptions: (_a7 = message.providerOptions) != null ? _a7 : message.experimental_providerMetadata
1257
+ providerOptions: message.providerOptions
1251
1258
  };
1252
1259
  }
1253
1260
  case "user": {
@@ -1255,13 +1262,13 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
1255
1262
  return {
1256
1263
  role: "user",
1257
1264
  content: [{ type: "text", text: message.content }],
1258
- providerOptions: (_b = message.providerOptions) != null ? _b : message.experimental_providerMetadata
1265
+ providerOptions: message.providerOptions
1259
1266
  };
1260
1267
  }
1261
1268
  return {
1262
1269
  role: "user",
1263
1270
  content: message.content.map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== "text" || part.text !== ""),
1264
- providerOptions: (_c = message.providerOptions) != null ? _c : message.experimental_providerMetadata
1271
+ providerOptions: message.providerOptions
1265
1272
  };
1266
1273
  }
1267
1274
  case "assistant": {
@@ -1269,7 +1276,7 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
1269
1276
  return {
1270
1277
  role: "assistant",
1271
1278
  content: [{ type: "text", text: message.content }],
1272
- providerOptions: (_d = message.providerOptions) != null ? _d : message.experimental_providerMetadata
1279
+ providerOptions: message.providerOptions
1273
1280
  };
1274
1281
  }
1275
1282
  return {
@@ -1278,15 +1285,18 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
1278
1285
  // remove empty text parts:
1279
1286
  (part) => part.type !== "text" || part.text !== ""
1280
1287
  ).map((part) => {
1281
- var _a8, _b2;
1282
- const providerOptions = (_a8 = part.providerOptions) != null ? _a8 : part.experimental_providerMetadata;
1288
+ var _a7;
1289
+ const providerOptions = part.providerOptions;
1283
1290
  switch (part.type) {
1284
1291
  case "file": {
1292
+ const { data, mediaType } = convertToLanguageModelV2DataContent(
1293
+ part.data
1294
+ );
1285
1295
  return {
1286
1296
  type: "file",
1287
- data: part.data instanceof URL ? part.data : convertDataContentToBase64String(part.data),
1297
+ data,
1288
1298
  filename: part.filename,
1289
- mediaType: (_b2 = part.mediaType) != null ? _b2 : part.mimeType,
1299
+ mediaType: (_a7 = mediaType != null ? mediaType : part.mediaType) != null ? _a7 : part.mimeType,
1290
1300
  providerOptions
1291
1301
  };
1292
1302
  }
@@ -1323,25 +1333,22 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
1323
1333
  }
1324
1334
  }
1325
1335
  }),
1326
- providerOptions: (_e = message.providerOptions) != null ? _e : message.experimental_providerMetadata
1336
+ providerOptions: message.providerOptions
1327
1337
  };
1328
1338
  }
1329
1339
  case "tool": {
1330
1340
  return {
1331
1341
  role: "tool",
1332
- content: message.content.map((part) => {
1333
- var _a8;
1334
- return {
1335
- type: "tool-result",
1336
- toolCallId: part.toolCallId,
1337
- toolName: part.toolName,
1338
- result: part.result,
1339
- content: part.experimental_content,
1340
- isError: part.isError,
1341
- providerOptions: (_a8 = part.providerOptions) != null ? _a8 : part.experimental_providerMetadata
1342
- };
1343
- }),
1344
- providerOptions: (_f = message.providerOptions) != null ? _f : message.experimental_providerMetadata
1342
+ content: message.content.map((part) => ({
1343
+ type: "tool-result",
1344
+ toolCallId: part.toolCallId,
1345
+ toolName: part.toolName,
1346
+ result: part.result,
1347
+ content: part.experimental_content,
1348
+ isError: part.isError,
1349
+ providerOptions: part.providerOptions
1350
+ })),
1351
+ providerOptions: message.providerOptions
1345
1352
  };
1346
1353
  }
1347
1354
  default: {
@@ -1374,71 +1381,48 @@ async function downloadAssets(messages, downloadImplementation, modelSupportsIma
1374
1381
  );
1375
1382
  }
1376
1383
  function convertPartToLanguageModelPart(part, downloadedAssets) {
1377
- var _a7, _b, _c, _d, _e;
1384
+ var _a7, _b, _c;
1378
1385
  if (part.type === "text") {
1379
1386
  return {
1380
1387
  type: "text",
1381
1388
  text: part.text,
1382
- providerOptions: (_a7 = part.providerOptions) != null ? _a7 : part.experimental_providerMetadata
1389
+ providerOptions: part.providerOptions
1383
1390
  };
1384
1391
  }
1385
- let mediaType = (_b = part.mediaType) != null ? _b : part.mimeType;
1386
- let data;
1387
- let content;
1388
- let normalizedData;
1392
+ let originalData;
1389
1393
  const type = part.type;
1390
1394
  switch (type) {
1391
1395
  case "image":
1392
- data = part.image;
1396
+ originalData = part.image;
1393
1397
  break;
1394
1398
  case "file":
1395
- data = part.data;
1399
+ originalData = part.data;
1396
1400
  break;
1397
1401
  default:
1398
1402
  throw new Error(`Unsupported part type: ${type}`);
1399
1403
  }
1400
- try {
1401
- content = typeof data === "string" ? new URL(data) : data;
1402
- } catch (error) {
1403
- content = data;
1404
- }
1405
- if (content instanceof URL) {
1406
- if (content.protocol === "data:") {
1407
- const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(
1408
- content.toString()
1409
- );
1410
- if (dataUrlMediaType == null || base64Content == null) {
1411
- throw new Error(`Invalid data URL format in part ${type}`);
1412
- }
1413
- mediaType = dataUrlMediaType;
1414
- normalizedData = convertDataContentToUint8Array(base64Content);
1415
- } else {
1416
- const downloadedFile = downloadedAssets[content.toString()];
1417
- if (downloadedFile) {
1418
- normalizedData = downloadedFile.data;
1419
- mediaType != null ? mediaType : mediaType = downloadedFile.mediaType;
1420
- } else {
1421
- normalizedData = content;
1422
- }
1404
+ const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);
1405
+ let mediaType = (_a7 = convertedMediaType != null ? convertedMediaType : part.mediaType) != null ? _a7 : part.mimeType;
1406
+ let data = convertedData;
1407
+ if (data instanceof URL) {
1408
+ const downloadedFile = downloadedAssets[data.toString()];
1409
+ if (downloadedFile) {
1410
+ data = downloadedFile.data;
1411
+ mediaType = (_b = downloadedFile.mediaType) != null ? _b : mediaType;
1423
1412
  }
1424
- } else {
1425
- normalizedData = convertDataContentToUint8Array(content);
1426
1413
  }
1427
1414
  switch (type) {
1428
1415
  case "image": {
1429
- if (normalizedData instanceof Uint8Array) {
1430
- mediaType = (_c = detectMediaType({
1431
- data: normalizedData,
1432
- signatures: imageMediaTypeSignatures
1433
- })) != null ? _c : mediaType;
1416
+ if (data instanceof Uint8Array || typeof data === "string") {
1417
+ mediaType = (_c = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _c : mediaType;
1434
1418
  }
1435
1419
  return {
1436
1420
  type: "file",
1437
1421
  mediaType: mediaType != null ? mediaType : "image/*",
1438
1422
  // any image
1439
1423
  filename: void 0,
1440
- data: normalizedData instanceof Uint8Array ? (0, import_provider_utils6.convertUint8ArrayToBase64)(normalizedData) : normalizedData,
1441
- providerOptions: (_d = part.providerOptions) != null ? _d : part.experimental_providerMetadata
1424
+ data,
1425
+ providerOptions: part.providerOptions
1442
1426
  };
1443
1427
  }
1444
1428
  case "file": {
@@ -1449,8 +1433,8 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1449
1433
  type: "file",
1450
1434
  mediaType,
1451
1435
  filename: part.filename,
1452
- data: normalizedData instanceof Uint8Array ? convertDataContentToBase64String(normalizedData) : normalizedData,
1453
- providerOptions: (_e = part.providerOptions) != null ? _e : part.experimental_providerMetadata
1436
+ data,
1437
+ providerOptions: part.providerOptions
1454
1438
  };
1455
1439
  }
1456
1440
  }
@@ -1458,13 +1442,13 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1458
1442
 
1459
1443
  // core/types/usage.ts
1460
1444
  function calculateLanguageModelUsage({
1461
- promptTokens,
1462
- completionTokens
1445
+ inputTokens,
1446
+ outputTokens
1463
1447
  }) {
1464
1448
  return {
1465
- promptTokens,
1466
- completionTokens,
1467
- totalTokens: promptTokens + completionTokens
1449
+ promptTokens: inputTokens != null ? inputTokens : NaN,
1450
+ completionTokens: outputTokens != null ? outputTokens : NaN,
1451
+ totalTokens: (inputTokens != null ? inputTokens : 0) + (outputTokens != null ? outputTokens : 0)
1468
1452
  };
1469
1453
  }
1470
1454