ai 6.0.321 → 6.0.322

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 name5 in all)
8
- __defProp(target, name5, { get: all[name5], enumerable: true });
7
+ for (var name6 in all)
8
+ __defProp(target, name6, { get: all[name6], enumerable: true });
9
9
  };
10
10
  var __copyProps = (to, from, except, desc) => {
11
11
  if (from && typeof from === "object" || typeof from === "function") {
@@ -164,7 +164,7 @@ function detectMediaType({
164
164
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
165
165
 
166
166
  // src/version.ts
167
- var VERSION = true ? "6.0.321" : "0.0.0-test";
167
+ var VERSION = true ? "6.0.322" : "0.0.0-test";
168
168
 
169
169
  // src/util/download/download.ts
170
170
  var download = async ({
@@ -172,7 +172,7 @@ var download = async ({
172
172
  maxBytes,
173
173
  abortSignal
174
174
  }) => {
175
- var _a5;
175
+ var _a6;
176
176
  const urlText = url.toString();
177
177
  try {
178
178
  const headers = (0, import_provider_utils2.withUserAgentSuffix)(
@@ -200,7 +200,7 @@ var download = async ({
200
200
  });
201
201
  return {
202
202
  data,
203
- mediaType: (_a5 = response.headers.get("content-type")) != null ? _a5 : void 0
203
+ mediaType: (_a6 = response.headers.get("content-type")) != null ? _a6 : void 0
204
204
  };
205
205
  } catch (error) {
206
206
  if (import_provider_utils2.DownloadError.isInstance(error)) {
@@ -254,10 +254,32 @@ function mergeObjects(base, overrides) {
254
254
  }
255
255
 
256
256
  // src/prompt/data-content.ts
257
- var import_provider = require("@ai-sdk/provider");
257
+ var import_provider2 = require("@ai-sdk/provider");
258
258
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
259
259
  var import_v4 = require("zod/v4");
260
260
 
261
+ // src/prompt/invalid-data-content-error.ts
262
+ var import_provider = require("@ai-sdk/provider");
263
+ var name = "AI_InvalidDataContentError";
264
+ var marker = `vercel.ai.error.${name}`;
265
+ var symbol = Symbol.for(marker);
266
+ var _a;
267
+ var InvalidDataContentError = class extends import_provider.AISDKError {
268
+ constructor({
269
+ content,
270
+ cause,
271
+ message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
272
+ }) {
273
+ super({ name, message, cause });
274
+ this[_a] = true;
275
+ this.content = content;
276
+ }
277
+ static isInstance(error) {
278
+ return import_provider.AISDKError.hasMarker(error, marker);
279
+ }
280
+ };
281
+ _a = symbol;
282
+
261
283
  // src/prompt/split-data-url.ts
262
284
  function splitDataUrl(dataUrl) {
263
285
  try {
@@ -277,23 +299,26 @@ function splitDataUrl(dataUrl) {
277
299
  // src/prompt/data-content.ts
278
300
  var dataContentSchema = import_v4.z.union([
279
301
  import_v4.z.string(),
280
- import_v4.z.instanceof(Uint8Array),
281
- import_v4.z.instanceof(ArrayBuffer),
302
+ import_v4.z.custom(import_provider_utils3.isUint8Array, { message: "Must be a Uint8Array" }),
303
+ import_v4.z.custom(import_provider_utils3.isArrayBuffer, { message: "Must be an ArrayBuffer" }),
282
304
  import_v4.z.custom(
283
305
  // Buffer might not be available in some environments such as CloudFlare:
284
306
  (value) => {
285
- var _a5, _b;
286
- return (_b = (_a5 = globalThis.Buffer) == null ? void 0 : _a5.isBuffer(value)) != null ? _b : false;
307
+ var _a6, _b;
308
+ return (_b = (_a6 = globalThis.Buffer) == null ? void 0 : _a6.isBuffer(value)) != null ? _b : false;
287
309
  },
288
310
  { message: "Must be a Buffer" }
289
311
  )
290
312
  ]);
291
313
  function convertToLanguageModelV3DataContent(content) {
292
314
  let originalUrl;
293
- if (content instanceof Uint8Array) {
294
- return { data: content, mediaType: void 0 };
315
+ if ((0, import_provider_utils3.isUint8Array)(content)) {
316
+ return {
317
+ data: convertDataContentToUint8Array(content),
318
+ mediaType: void 0
319
+ };
295
320
  }
296
- if (content instanceof ArrayBuffer) {
321
+ if ((0, import_provider_utils3.isArrayBuffer)(content)) {
297
322
  return { data: new Uint8Array(content), mediaType: void 0 };
298
323
  }
299
324
  if (typeof content === "string") {
@@ -309,7 +334,7 @@ function convertToLanguageModelV3DataContent(content) {
309
334
  content.toString()
310
335
  );
311
336
  if (dataUrlMediaType == null || base64Content == null) {
312
- throw new import_provider.AISDKError({
337
+ throw new import_provider2.AISDKError({
313
338
  name: "InvalidDataContentError",
314
339
  message: `Invalid data URL format in content ${content.toString()}`
315
340
  });
@@ -326,32 +351,53 @@ function convertDataContentToBase64String(content) {
326
351
  if (typeof content === "string") {
327
352
  return content;
328
353
  }
329
- if (content instanceof ArrayBuffer) {
330
- return (0, import_provider_utils3.convertUint8ArrayToBase64)(new Uint8Array(content));
354
+ return (0, import_provider_utils3.convertUint8ArrayToBase64)(convertDataContentToUint8Array(content));
355
+ }
356
+ function convertDataContentToUint8Array(content) {
357
+ if ((0, import_provider_utils3.isUint8Array)(content)) {
358
+ if (content instanceof Uint8Array) {
359
+ return content;
360
+ }
361
+ const { buffer, byteOffset, byteLength } = content;
362
+ return new Uint8Array(buffer, byteOffset, byteLength);
331
363
  }
332
- return (0, import_provider_utils3.convertUint8ArrayToBase64)(content);
364
+ if (typeof content === "string") {
365
+ try {
366
+ return (0, import_provider_utils3.convertBase64ToUint8Array)(content);
367
+ } catch (error) {
368
+ throw new InvalidDataContentError({
369
+ message: "Invalid data content. Content string is not a base64-encoded media.",
370
+ content,
371
+ cause: error
372
+ });
373
+ }
374
+ }
375
+ if ((0, import_provider_utils3.isArrayBuffer)(content)) {
376
+ return new Uint8Array(content);
377
+ }
378
+ throw new InvalidDataContentError({ content });
333
379
  }
334
380
 
335
381
  // src/prompt/invalid-message-role-error.ts
336
- var import_provider2 = require("@ai-sdk/provider");
337
- var name = "AI_InvalidMessageRoleError";
338
- var marker = `vercel.ai.error.${name}`;
339
- var symbol = Symbol.for(marker);
340
- var _a;
341
- var InvalidMessageRoleError = class extends import_provider2.AISDKError {
382
+ var import_provider3 = require("@ai-sdk/provider");
383
+ var name2 = "AI_InvalidMessageRoleError";
384
+ var marker2 = `vercel.ai.error.${name2}`;
385
+ var symbol2 = Symbol.for(marker2);
386
+ var _a2;
387
+ var InvalidMessageRoleError = class extends import_provider3.AISDKError {
342
388
  constructor({
343
389
  role,
344
390
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
345
391
  }) {
346
- super({ name, message });
347
- this[_a] = true;
392
+ super({ name: name2, message });
393
+ this[_a2] = true;
348
394
  this.role = role;
349
395
  }
350
396
  static isInstance(error) {
351
- return import_provider2.AISDKError.hasMarker(error, marker);
397
+ return import_provider3.AISDKError.hasMarker(error, marker2);
352
398
  }
353
399
  };
354
- _a = symbol;
400
+ _a2 = symbol2;
355
401
 
356
402
  // src/util/as-array.ts
357
403
  function asArray(value) {
@@ -359,27 +405,27 @@ function asArray(value) {
359
405
  }
360
406
 
361
407
  // src/error/missing-tool-result-error.ts
362
- var import_provider3 = require("@ai-sdk/provider");
363
- var name2 = "AI_MissingToolResultsError";
364
- var marker2 = `vercel.ai.error.${name2}`;
365
- var symbol2 = Symbol.for(marker2);
366
- var _a2;
367
- var MissingToolResultsError = class extends import_provider3.AISDKError {
408
+ var import_provider4 = require("@ai-sdk/provider");
409
+ var name3 = "AI_MissingToolResultsError";
410
+ var marker3 = `vercel.ai.error.${name3}`;
411
+ var symbol3 = Symbol.for(marker3);
412
+ var _a3;
413
+ var MissingToolResultsError = class extends import_provider4.AISDKError {
368
414
  constructor({ toolCallIds }) {
369
415
  super({
370
- name: name2,
416
+ name: name3,
371
417
  message: `Tool result${toolCallIds.length > 1 ? "s are" : " is"} missing for tool call${toolCallIds.length > 1 ? "s" : ""} ${toolCallIds.join(
372
418
  ", "
373
419
  )}.`
374
420
  });
375
- this[_a2] = true;
421
+ this[_a3] = true;
376
422
  this.toolCallIds = toolCallIds;
377
423
  }
378
424
  static isInstance(error) {
379
- return import_provider3.AISDKError.hasMarker(error, marker2);
425
+ return import_provider4.AISDKError.hasMarker(error, marker3);
380
426
  }
381
427
  };
382
- _a2 = symbol2;
428
+ _a3 = symbol3;
383
429
 
384
430
  // src/prompt/convert-to-language-model-prompt.ts
385
431
  async function convertToLanguageModelPrompt({
@@ -602,7 +648,7 @@ function convertToLanguageModelMessage({
602
648
  }
603
649
  }
604
650
  async function downloadAssets(messages, download2, supportedUrls) {
605
- var _a5;
651
+ var _a6;
606
652
  const downloadableFiles = [];
607
653
  for (const message of messages) {
608
654
  if (message.role === "user" && Array.isArray(message.content)) {
@@ -610,7 +656,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
610
656
  if (part.type === "image" || part.type === "file") {
611
657
  downloadableFiles.push({
612
658
  data: part.type === "image" ? part.image : part.data,
613
- mediaType: (_a5 = part.mediaType) != null ? _a5 : part.type === "image" ? "image/*" : void 0
659
+ mediaType: (_a6 = part.mediaType) != null ? _a6 : part.type === "image" ? "image/*" : void 0
614
660
  });
615
661
  }
616
662
  }
@@ -662,7 +708,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
662
708
  );
663
709
  }
664
710
  function convertPartToLanguageModelPart(part, downloadedAssets) {
665
- var _a5;
711
+ var _a6;
666
712
  if (part.type === "text") {
667
713
  return {
668
714
  type: "text",
@@ -699,7 +745,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
699
745
  switch (type) {
700
746
  case "image": {
701
747
  if (data instanceof Uint8Array || typeof data === "string") {
702
- mediaType = (_a5 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a5 : mediaType;
748
+ mediaType = (_a6 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a6 : mediaType;
703
749
  }
704
750
  return {
705
751
  type: "file",
@@ -736,14 +782,14 @@ function mapToolResultOutput({
736
782
  return {
737
783
  type: "content",
738
784
  value: output.value.map((item) => {
739
- var _a5, _b;
785
+ var _a6, _b;
740
786
  if (item.type === "image-url") {
741
787
  const downloadedFile = downloadedAssets[new URL(item.url).toString()];
742
788
  if (downloadedFile) {
743
789
  return {
744
790
  type: "image-data",
745
791
  data: convertDataContentToBase64String(downloadedFile.data),
746
- mediaType: (_a5 = downloadedFile.mediaType) != null ? _a5 : "image/*",
792
+ mediaType: (_a6 = downloadedFile.mediaType) != null ? _a6 : "image/*",
747
793
  providerOptions: item.providerOptions
748
794
  };
749
795
  }
@@ -801,10 +847,10 @@ async function prepareToolsAndToolChoice({
801
847
  };
802
848
  }
803
849
  const filteredTools = activeTools != null ? Object.entries(tools).filter(
804
- ([name5]) => activeTools.includes(name5)
850
+ ([name6]) => activeTools.includes(name6)
805
851
  ) : Object.entries(tools);
806
852
  const languageModelTools = [];
807
- for (const [name5, tool] of filteredTools) {
853
+ for (const [name6, tool] of filteredTools) {
808
854
  const toolType = tool.type;
809
855
  switch (toolType) {
810
856
  case void 0:
@@ -812,7 +858,7 @@ async function prepareToolsAndToolChoice({
812
858
  case "function":
813
859
  languageModelTools.push({
814
860
  type: "function",
815
- name: name5,
861
+ name: name6,
816
862
  description: tool.description,
817
863
  inputSchema: await (0, import_provider_utils5.asSchema)(tool.inputSchema).jsonSchema,
818
864
  ...tool.inputExamples != null ? { inputExamples: tool.inputExamples } : {},
@@ -823,7 +869,7 @@ async function prepareToolsAndToolChoice({
823
869
  case "provider":
824
870
  languageModelTools.push({
825
871
  type: "provider",
826
- name: name5,
872
+ name: name6,
827
873
  id: tool.id,
828
874
  args: tool.args
829
875
  });
@@ -841,7 +887,7 @@ async function prepareToolsAndToolChoice({
841
887
  }
842
888
 
843
889
  // src/prompt/standardize-prompt.ts
844
- var import_provider4 = require("@ai-sdk/provider");
890
+ var import_provider5 = require("@ai-sdk/provider");
845
891
  var import_provider_utils6 = require("@ai-sdk/provider-utils");
846
892
  var import_v46 = require("zod/v4");
847
893
 
@@ -1062,19 +1108,19 @@ async function standardizePrompt({
1062
1108
  messages
1063
1109
  }) {
1064
1110
  if (prompt == null && messages == null) {
1065
- throw new import_provider4.InvalidPromptError({
1111
+ throw new import_provider5.InvalidPromptError({
1066
1112
  prompt,
1067
1113
  message: "prompt or messages must be defined"
1068
1114
  });
1069
1115
  }
1070
1116
  if (prompt != null && messages != null) {
1071
- throw new import_provider4.InvalidPromptError({
1117
+ throw new import_provider5.InvalidPromptError({
1072
1118
  prompt,
1073
1119
  message: "prompt and messages cannot be defined at the same time"
1074
1120
  });
1075
1121
  }
1076
1122
  if (typeof system !== "string" && !asArray(system).every((message) => message.role === "system")) {
1077
- throw new import_provider4.InvalidPromptError({
1123
+ throw new import_provider5.InvalidPromptError({
1078
1124
  prompt,
1079
1125
  message: "system must be a string, SystemModelMessage, or array of SystemModelMessage"
1080
1126
  });
@@ -1084,20 +1130,20 @@ async function standardizePrompt({
1084
1130
  } else if (prompt != null && Array.isArray(prompt)) {
1085
1131
  messages = prompt;
1086
1132
  } else if (messages == null) {
1087
- throw new import_provider4.InvalidPromptError({
1133
+ throw new import_provider5.InvalidPromptError({
1088
1134
  prompt,
1089
1135
  message: "prompt or messages must be defined"
1090
1136
  });
1091
1137
  }
1092
1138
  if (messages.length === 0) {
1093
- throw new import_provider4.InvalidPromptError({
1139
+ throw new import_provider5.InvalidPromptError({
1094
1140
  prompt,
1095
1141
  message: "messages must not be empty"
1096
1142
  });
1097
1143
  }
1098
1144
  if (messages.some((message) => message.role === "system")) {
1099
1145
  if (allowSystemInMessages === false) {
1100
- throw new import_provider4.InvalidPromptError({
1146
+ throw new import_provider5.InvalidPromptError({
1101
1147
  prompt,
1102
1148
  message: "System messages are not allowed in the prompt or messages fields. Use the system option instead."
1103
1149
  });
@@ -1113,7 +1159,7 @@ async function standardizePrompt({
1113
1159
  schema: import_v46.z.array(modelMessageSchema)
1114
1160
  });
1115
1161
  if (!validationResult.success) {
1116
- throw new import_provider4.InvalidPromptError({
1162
+ throw new import_provider5.InvalidPromptError({
1117
1163
  prompt,
1118
1164
  message: "The messages do not match the ModelMessage[] schema.",
1119
1165
  cause: validationResult.error
@@ -1123,30 +1169,30 @@ async function standardizePrompt({
1123
1169
  }
1124
1170
 
1125
1171
  // src/error/invalid-argument-error.ts
1126
- var import_provider5 = require("@ai-sdk/provider");
1127
- var name3 = "AI_InvalidArgumentError";
1128
- var marker3 = `vercel.ai.error.${name3}`;
1129
- var symbol3 = Symbol.for(marker3);
1130
- var _a3;
1131
- var InvalidArgumentError = class extends import_provider5.AISDKError {
1172
+ var import_provider6 = require("@ai-sdk/provider");
1173
+ var name4 = "AI_InvalidArgumentError";
1174
+ var marker4 = `vercel.ai.error.${name4}`;
1175
+ var symbol4 = Symbol.for(marker4);
1176
+ var _a4;
1177
+ var InvalidArgumentError = class extends import_provider6.AISDKError {
1132
1178
  constructor({
1133
1179
  parameter,
1134
1180
  value,
1135
1181
  message
1136
1182
  }) {
1137
1183
  super({
1138
- name: name3,
1184
+ name: name4,
1139
1185
  message: `Invalid argument for parameter ${parameter}: ${message}`
1140
1186
  });
1141
- this[_a3] = true;
1187
+ this[_a4] = true;
1142
1188
  this.parameter = parameter;
1143
1189
  this.value = value;
1144
1190
  }
1145
1191
  static isInstance(error) {
1146
- return import_provider5.AISDKError.hasMarker(error, marker3);
1192
+ return import_provider6.AISDKError.hasMarker(error, marker4);
1147
1193
  }
1148
1194
  };
1149
- _a3 = symbol3;
1195
+ _a4 = symbol4;
1150
1196
 
1151
1197
  // src/prompt/prepare-call-settings.ts
1152
1198
  function prepareCallSettings({
@@ -1242,40 +1288,40 @@ function prepareCallSettings({
1242
1288
  }
1243
1289
 
1244
1290
  // src/util/retry-with-exponential-backoff.ts
1245
- var import_provider7 = require("@ai-sdk/provider");
1291
+ var import_provider8 = require("@ai-sdk/provider");
1246
1292
  var import_gateway = require("@ai-sdk/gateway");
1247
1293
  var import_provider_utils7 = require("@ai-sdk/provider-utils");
1248
1294
 
1249
1295
  // src/util/retry-error.ts
1250
- var import_provider6 = require("@ai-sdk/provider");
1251
- var name4 = "AI_RetryError";
1252
- var marker4 = `vercel.ai.error.${name4}`;
1253
- var symbol4 = Symbol.for(marker4);
1254
- var _a4;
1255
- var RetryError = class extends import_provider6.AISDKError {
1296
+ var import_provider7 = require("@ai-sdk/provider");
1297
+ var name5 = "AI_RetryError";
1298
+ var marker5 = `vercel.ai.error.${name5}`;
1299
+ var symbol5 = Symbol.for(marker5);
1300
+ var _a5;
1301
+ var RetryError = class extends import_provider7.AISDKError {
1256
1302
  constructor({
1257
1303
  message,
1258
1304
  reason,
1259
1305
  errors
1260
1306
  }) {
1261
- super({ name: name4, message });
1262
- this[_a4] = true;
1307
+ super({ name: name5, message });
1308
+ this[_a5] = true;
1263
1309
  this.reason = reason;
1264
1310
  this.errors = errors;
1265
1311
  this.lastError = errors[errors.length - 1];
1266
1312
  }
1267
1313
  static isInstance(error) {
1268
- return import_provider6.AISDKError.hasMarker(error, marker4);
1314
+ return import_provider7.AISDKError.hasMarker(error, marker5);
1269
1315
  }
1270
1316
  };
1271
- _a4 = symbol4;
1317
+ _a5 = symbol5;
1272
1318
 
1273
1319
  // src/util/retry-with-exponential-backoff.ts
1274
1320
  function getRetryDelayInMs({
1275
1321
  error,
1276
1322
  exponentialBackoffDelay
1277
1323
  }) {
1278
- const headers = import_provider7.APICallError.isInstance(error) ? error.responseHeaders : import_provider7.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
1324
+ const headers = import_provider8.APICallError.isInstance(error) ? error.responseHeaders : import_provider8.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
1279
1325
  if (!headers)
1280
1326
  return exponentialBackoffDelay;
1281
1327
  let ms;
@@ -1311,7 +1357,7 @@ var retryWithExponentialBackoffRespectingRetryHeaders = ({
1311
1357
  initialDelayInMs,
1312
1358
  backoffFactor,
1313
1359
  abortSignal,
1314
- shouldRetry: async (error) => error instanceof Error && (import_provider7.APICallError.isInstance(error) && error.isRetryable === true || import_gateway.GatewayError.isInstance(error) && error.isRetryable === true) || additionalRetryableError != null && await additionalRetryableError(error),
1360
+ shouldRetry: async (error) => error instanceof Error && (import_provider8.APICallError.isInstance(error) && error.isRetryable === true || import_gateway.GatewayError.isInstance(error) && error.isRetryable === true) || additionalRetryableError != null && await additionalRetryableError(error),
1315
1361
  getDelayInMs: ({ error, exponentialBackoffDelay }) => getRetryDelayInMs({
1316
1362
  error,
1317
1363
  exponentialBackoffDelay