ai 5.0.284 → 5.0.286

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.
@@ -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 name4 in all)
8
- __defProp(target, name4, { get: all[name4], enumerable: true });
7
+ for (var name5 in all)
8
+ __defProp(target, name5, { get: all[name5], enumerable: true });
9
9
  };
10
10
  var __copyProps = (to, from, except, desc) => {
11
11
  if (from && typeof from === "object" || typeof from === "function") {
@@ -163,7 +163,7 @@ function detectMediaType({
163
163
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
164
164
 
165
165
  // src/version.ts
166
- var VERSION = true ? "5.0.284" : "0.0.0-test";
166
+ var VERSION = true ? "5.0.286" : "0.0.0-test";
167
167
 
168
168
  // src/util/download/download.ts
169
169
  var download = async ({
@@ -171,7 +171,7 @@ var download = async ({
171
171
  maxBytes,
172
172
  abortSignal
173
173
  }) => {
174
- var _a4;
174
+ var _a5;
175
175
  const urlText = url.toString();
176
176
  try {
177
177
  const headers = (0, import_provider_utils2.withUserAgentSuffix)(
@@ -199,7 +199,7 @@ var download = async ({
199
199
  });
200
200
  return {
201
201
  data,
202
- mediaType: (_a4 = response.headers.get("content-type")) != null ? _a4 : void 0
202
+ mediaType: (_a5 = response.headers.get("content-type")) != null ? _a5 : void 0
203
203
  };
204
204
  } catch (error) {
205
205
  if (import_provider_utils2.DownloadError.isInstance(error)) {
@@ -217,10 +217,32 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
217
217
  );
218
218
 
219
219
  // src/prompt/data-content.ts
220
- var import_provider = require("@ai-sdk/provider");
220
+ var import_provider2 = require("@ai-sdk/provider");
221
221
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
222
222
  var import_v4 = require("zod/v4");
223
223
 
224
+ // src/prompt/invalid-data-content-error.ts
225
+ var import_provider = require("@ai-sdk/provider");
226
+ var name = "AI_InvalidDataContentError";
227
+ var marker = `vercel.ai.error.${name}`;
228
+ var symbol = Symbol.for(marker);
229
+ var _a;
230
+ var InvalidDataContentError = class extends import_provider.AISDKError {
231
+ constructor({
232
+ content,
233
+ cause,
234
+ message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
235
+ }) {
236
+ super({ name, message, cause });
237
+ this[_a] = true;
238
+ this.content = content;
239
+ }
240
+ static isInstance(error) {
241
+ return import_provider.AISDKError.hasMarker(error, marker);
242
+ }
243
+ };
244
+ _a = symbol;
245
+
224
246
  // src/prompt/split-data-url.ts
225
247
  function splitDataUrl(dataUrl) {
226
248
  try {
@@ -240,22 +262,25 @@ function splitDataUrl(dataUrl) {
240
262
  // src/prompt/data-content.ts
241
263
  var dataContentSchema = import_v4.z.union([
242
264
  import_v4.z.string(),
243
- import_v4.z.instanceof(Uint8Array),
244
- import_v4.z.instanceof(ArrayBuffer),
265
+ import_v4.z.custom(import_provider_utils3.isUint8Array, { message: "Must be a Uint8Array" }),
266
+ import_v4.z.custom(import_provider_utils3.isArrayBuffer, { message: "Must be an ArrayBuffer" }),
245
267
  import_v4.z.custom(
246
268
  // Buffer might not be available in some environments such as CloudFlare:
247
269
  (value) => {
248
- var _a4, _b;
249
- return (_b = (_a4 = globalThis.Buffer) == null ? void 0 : _a4.isBuffer(value)) != null ? _b : false;
270
+ var _a5, _b;
271
+ return (_b = (_a5 = globalThis.Buffer) == null ? void 0 : _a5.isBuffer(value)) != null ? _b : false;
250
272
  },
251
273
  { message: "Must be a Buffer" }
252
274
  )
253
275
  ]);
254
276
  function convertToLanguageModelV2DataContent(content) {
255
- if (content instanceof Uint8Array) {
256
- return { data: content, mediaType: void 0 };
277
+ if ((0, import_provider_utils3.isUint8Array)(content)) {
278
+ return {
279
+ data: convertDataContentToUint8Array(content),
280
+ mediaType: void 0
281
+ };
257
282
  }
258
- if (content instanceof ArrayBuffer) {
283
+ if ((0, import_provider_utils3.isArrayBuffer)(content)) {
259
284
  return { data: new Uint8Array(content), mediaType: void 0 };
260
285
  }
261
286
  if (typeof content === "string") {
@@ -269,7 +294,7 @@ function convertToLanguageModelV2DataContent(content) {
269
294
  content.toString()
270
295
  );
271
296
  if (dataUrlMediaType == null || base64Content == null) {
272
- throw new import_provider.AISDKError({
297
+ throw new import_provider2.AISDKError({
273
298
  name: "InvalidDataContentError",
274
299
  message: `Invalid data URL format in content ${content.toString()}`
275
300
  });
@@ -278,27 +303,51 @@ function convertToLanguageModelV2DataContent(content) {
278
303
  }
279
304
  return { data: content, mediaType: void 0 };
280
305
  }
306
+ function convertDataContentToUint8Array(content) {
307
+ if ((0, import_provider_utils3.isUint8Array)(content)) {
308
+ if (content instanceof Uint8Array) {
309
+ return content;
310
+ }
311
+ const { buffer, byteOffset, byteLength } = content;
312
+ return new Uint8Array(buffer, byteOffset, byteLength);
313
+ }
314
+ if (typeof content === "string") {
315
+ try {
316
+ return (0, import_provider_utils3.convertBase64ToUint8Array)(content);
317
+ } catch (error) {
318
+ throw new InvalidDataContentError({
319
+ message: "Invalid data content. Content string is not a base64-encoded media.",
320
+ content,
321
+ cause: error
322
+ });
323
+ }
324
+ }
325
+ if ((0, import_provider_utils3.isArrayBuffer)(content)) {
326
+ return new Uint8Array(content);
327
+ }
328
+ throw new InvalidDataContentError({ content });
329
+ }
281
330
 
282
331
  // src/prompt/invalid-message-role-error.ts
283
- var import_provider2 = require("@ai-sdk/provider");
284
- var name = "AI_InvalidMessageRoleError";
285
- var marker = `vercel.ai.error.${name}`;
286
- var symbol = Symbol.for(marker);
287
- var _a;
288
- var InvalidMessageRoleError = class extends import_provider2.AISDKError {
332
+ var import_provider3 = require("@ai-sdk/provider");
333
+ var name2 = "AI_InvalidMessageRoleError";
334
+ var marker2 = `vercel.ai.error.${name2}`;
335
+ var symbol2 = Symbol.for(marker2);
336
+ var _a2;
337
+ var InvalidMessageRoleError = class extends import_provider3.AISDKError {
289
338
  constructor({
290
339
  role,
291
340
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
292
341
  }) {
293
- super({ name, message });
294
- this[_a] = true;
342
+ super({ name: name2, message });
343
+ this[_a2] = true;
295
344
  this.role = role;
296
345
  }
297
346
  static isInstance(error) {
298
- return import_provider2.AISDKError.hasMarker(error, marker);
347
+ return import_provider3.AISDKError.hasMarker(error, marker2);
299
348
  }
300
349
  };
301
- _a = symbol;
350
+ _a2 = symbol2;
302
351
 
303
352
  // src/prompt/convert-to-language-model-prompt.ts
304
353
  async function convertToLanguageModelPrompt({
@@ -438,8 +487,8 @@ async function downloadAssets(messages, download2, supportedUrls) {
438
487
  ).flat().filter(
439
488
  (part) => part.type === "image" || part.type === "file"
440
489
  ).map((part) => {
441
- var _a4;
442
- const mediaType = (_a4 = part.mediaType) != null ? _a4 : part.type === "image" ? "image/*" : void 0;
490
+ var _a5;
491
+ const mediaType = (_a5 = part.mediaType) != null ? _a5 : part.type === "image" ? "image/*" : void 0;
443
492
  let data = part.type === "image" ? part.image : part.data;
444
493
  if (typeof data === "string") {
445
494
  try {
@@ -472,7 +521,7 @@ function getOriginalUrl(originalData, convertedData) {
472
521
  return typeof originalData === "string" && convertedData instanceof URL && convertedData.toString() !== originalData ? originalData : void 0;
473
522
  }
474
523
  function convertPartToLanguageModelPart(part, downloadedAssets) {
475
- var _a4;
524
+ var _a5;
476
525
  if (part.type === "text") {
477
526
  return {
478
527
  type: "text",
@@ -507,7 +556,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
507
556
  switch (type) {
508
557
  case "image": {
509
558
  if (data instanceof Uint8Array || typeof data === "string") {
510
- mediaType = (_a4 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a4 : mediaType;
559
+ mediaType = (_a5 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a5 : mediaType;
511
560
  }
512
561
  return {
513
562
  type: "file",
@@ -552,14 +601,15 @@ function prepareToolsAndToolChoice({
552
601
  if (!isNonEmptyObject(tools)) {
553
602
  return {
554
603
  tools: void 0,
555
- toolChoice: void 0
604
+ // Providers can configure native tools without SDK tools.
605
+ toolChoice: toolChoice === "none" ? { type: "none" } : void 0
556
606
  };
557
607
  }
558
608
  const filteredTools = activeTools != null ? Object.entries(tools).filter(
559
- ([name4]) => activeTools.includes(name4)
609
+ ([name5]) => activeTools.includes(name5)
560
610
  ) : Object.entries(tools);
561
611
  return {
562
- tools: filteredTools.map(([name4, tool]) => {
612
+ tools: filteredTools.map(([name5, tool]) => {
563
613
  const toolType = tool.type;
564
614
  switch (toolType) {
565
615
  case void 0:
@@ -567,7 +617,7 @@ function prepareToolsAndToolChoice({
567
617
  case "function":
568
618
  return {
569
619
  type: "function",
570
- name: name4,
620
+ name: name5,
571
621
  description: tool.description,
572
622
  inputSchema: (0, import_provider_utils5.asSchema)(tool.inputSchema).jsonSchema,
573
623
  providerOptions: tool.providerOptions
@@ -575,7 +625,7 @@ function prepareToolsAndToolChoice({
575
625
  case "provider-defined":
576
626
  return {
577
627
  type: "provider-defined",
578
- name: name4,
628
+ name: name5,
579
629
  id: tool.id,
580
630
  args: tool.args
581
631
  };
@@ -590,7 +640,7 @@ function prepareToolsAndToolChoice({
590
640
  }
591
641
 
592
642
  // src/prompt/standardize-prompt.ts
593
- var import_provider3 = require("@ai-sdk/provider");
643
+ var import_provider4 = require("@ai-sdk/provider");
594
644
  var import_provider_utils6 = require("@ai-sdk/provider-utils");
595
645
  var import_v46 = require("zod/v4");
596
646
 
@@ -746,19 +796,19 @@ async function standardizePrompt({
746
796
  messages
747
797
  }) {
748
798
  if (prompt == null && messages == null) {
749
- throw new import_provider3.InvalidPromptError({
799
+ throw new import_provider4.InvalidPromptError({
750
800
  prompt,
751
801
  message: "prompt or messages must be defined"
752
802
  });
753
803
  }
754
804
  if (prompt != null && messages != null) {
755
- throw new import_provider3.InvalidPromptError({
805
+ throw new import_provider4.InvalidPromptError({
756
806
  prompt,
757
807
  message: "prompt and messages cannot be defined at the same time"
758
808
  });
759
809
  }
760
810
  if (system != null && typeof system !== "string") {
761
- throw new import_provider3.InvalidPromptError({
811
+ throw new import_provider4.InvalidPromptError({
762
812
  prompt,
763
813
  message: "system must be a string"
764
814
  });
@@ -768,20 +818,20 @@ async function standardizePrompt({
768
818
  } else if (prompt != null && Array.isArray(prompt)) {
769
819
  messages = prompt;
770
820
  } else if (messages == null) {
771
- throw new import_provider3.InvalidPromptError({
821
+ throw new import_provider4.InvalidPromptError({
772
822
  prompt,
773
823
  message: "prompt or messages must be defined"
774
824
  });
775
825
  }
776
826
  if (messages.length === 0) {
777
- throw new import_provider3.InvalidPromptError({
827
+ throw new import_provider4.InvalidPromptError({
778
828
  prompt,
779
829
  message: "messages must not be empty"
780
830
  });
781
831
  }
782
832
  if (messages.some((message) => message.role === "system")) {
783
833
  if (allowSystemInMessages === false) {
784
- throw new import_provider3.InvalidPromptError({
834
+ throw new import_provider4.InvalidPromptError({
785
835
  prompt,
786
836
  message: "System messages are not allowed in the prompt or messages fields. Use the system option instead."
787
837
  });
@@ -797,7 +847,7 @@ async function standardizePrompt({
797
847
  schema: import_v46.z.array(modelMessageSchema)
798
848
  });
799
849
  if (!validationResult.success) {
800
- throw new import_provider3.InvalidPromptError({
850
+ throw new import_provider4.InvalidPromptError({
801
851
  prompt,
802
852
  message: "The messages must be a ModelMessage[]. If you have passed a UIMessage[], you can use convertToModelMessages to convert them.",
803
853
  cause: validationResult.error
@@ -807,30 +857,30 @@ async function standardizePrompt({
807
857
  }
808
858
 
809
859
  // src/error/invalid-argument-error.ts
810
- var import_provider4 = require("@ai-sdk/provider");
811
- var name2 = "AI_InvalidArgumentError";
812
- var marker2 = `vercel.ai.error.${name2}`;
813
- var symbol2 = Symbol.for(marker2);
814
- var _a2;
815
- var InvalidArgumentError = class extends import_provider4.AISDKError {
860
+ var import_provider5 = require("@ai-sdk/provider");
861
+ var name3 = "AI_InvalidArgumentError";
862
+ var marker3 = `vercel.ai.error.${name3}`;
863
+ var symbol3 = Symbol.for(marker3);
864
+ var _a3;
865
+ var InvalidArgumentError = class extends import_provider5.AISDKError {
816
866
  constructor({
817
867
  parameter,
818
868
  value,
819
869
  message
820
870
  }) {
821
871
  super({
822
- name: name2,
872
+ name: name3,
823
873
  message: `Invalid argument for parameter ${parameter}: ${message}`
824
874
  });
825
- this[_a2] = true;
875
+ this[_a3] = true;
826
876
  this.parameter = parameter;
827
877
  this.value = value;
828
878
  }
829
879
  static isInstance(error) {
830
- return import_provider4.AISDKError.hasMarker(error, marker2);
880
+ return import_provider5.AISDKError.hasMarker(error, marker3);
831
881
  }
832
882
  };
833
- _a2 = symbol2;
883
+ _a3 = symbol3;
834
884
 
835
885
  // src/prompt/prepare-call-settings.ts
836
886
  function prepareCallSettings({
@@ -926,40 +976,40 @@ function prepareCallSettings({
926
976
  }
927
977
 
928
978
  // src/util/retry-with-exponential-backoff.ts
929
- var import_provider6 = require("@ai-sdk/provider");
979
+ var import_provider7 = require("@ai-sdk/provider");
930
980
  var import_gateway = require("@ai-sdk/gateway");
931
981
  var import_provider_utils7 = require("@ai-sdk/provider-utils");
932
982
 
933
983
  // src/util/retry-error.ts
934
- var import_provider5 = require("@ai-sdk/provider");
935
- var name3 = "AI_RetryError";
936
- var marker3 = `vercel.ai.error.${name3}`;
937
- var symbol3 = Symbol.for(marker3);
938
- var _a3;
939
- var RetryError = class extends import_provider5.AISDKError {
984
+ var import_provider6 = require("@ai-sdk/provider");
985
+ var name4 = "AI_RetryError";
986
+ var marker4 = `vercel.ai.error.${name4}`;
987
+ var symbol4 = Symbol.for(marker4);
988
+ var _a4;
989
+ var RetryError = class extends import_provider6.AISDKError {
940
990
  constructor({
941
991
  message,
942
992
  reason,
943
993
  errors
944
994
  }) {
945
- super({ name: name3, message });
946
- this[_a3] = true;
995
+ super({ name: name4, message });
996
+ this[_a4] = true;
947
997
  this.reason = reason;
948
998
  this.errors = errors;
949
999
  this.lastError = errors[errors.length - 1];
950
1000
  }
951
1001
  static isInstance(error) {
952
- return import_provider5.AISDKError.hasMarker(error, marker3);
1002
+ return import_provider6.AISDKError.hasMarker(error, marker4);
953
1003
  }
954
1004
  };
955
- _a3 = symbol3;
1005
+ _a4 = symbol4;
956
1006
 
957
1007
  // src/util/retry-with-exponential-backoff.ts
958
1008
  function getRetryDelayInMs({
959
1009
  error,
960
1010
  exponentialBackoffDelay
961
1011
  }) {
962
- const headers = import_provider6.APICallError.isInstance(error) ? error.responseHeaders : import_provider6.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
1012
+ const headers = import_provider7.APICallError.isInstance(error) ? error.responseHeaders : import_provider7.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
963
1013
  if (!headers)
964
1014
  return exponentialBackoffDelay;
965
1015
  let ms;
@@ -1023,7 +1073,7 @@ async function _retryWithExponentialBackoff(f, {
1023
1073
  errors: newErrors
1024
1074
  });
1025
1075
  }
1026
- if ((error instanceof Error && (import_provider6.APICallError.isInstance(error) && error.isRetryable === true || import_gateway.GatewayError.isInstance(error) && error.isRetryable === true) || (additionalRetryableError == null ? void 0 : additionalRetryableError(error)) === true) && tryNumber <= maxRetries) {
1076
+ if ((error instanceof Error && (import_provider7.APICallError.isInstance(error) && error.isRetryable === true || import_gateway.GatewayError.isInstance(error) && error.isRetryable === true) || (additionalRetryableError == null ? void 0 : additionalRetryableError(error)) === true) && tryNumber <= maxRetries) {
1027
1077
  await (0, import_provider_utils7.delay)(
1028
1078
  getRetryDelayInMs({
1029
1079
  error,