ai 5.0.283 → 5.0.285

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.
@@ -144,7 +144,7 @@ import {
144
144
  } from "@ai-sdk/provider-utils";
145
145
 
146
146
  // src/version.ts
147
- var VERSION = true ? "5.0.283" : "0.0.0-test";
147
+ var VERSION = true ? "5.0.285" : "0.0.0-test";
148
148
 
149
149
  // src/util/download/download.ts
150
150
  var download = async ({
@@ -152,7 +152,7 @@ var download = async ({
152
152
  maxBytes,
153
153
  abortSignal
154
154
  }) => {
155
- var _a4;
155
+ var _a5;
156
156
  const urlText = url.toString();
157
157
  try {
158
158
  const headers = withUserAgentSuffix(
@@ -180,7 +180,7 @@ var download = async ({
180
180
  });
181
181
  return {
182
182
  data,
183
- mediaType: (_a4 = response.headers.get("content-type")) != null ? _a4 : void 0
183
+ mediaType: (_a5 = response.headers.get("content-type")) != null ? _a5 : void 0
184
184
  };
185
185
  } catch (error) {
186
186
  if (DownloadError.isInstance(error)) {
@@ -198,13 +198,37 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
198
198
  );
199
199
 
200
200
  // src/prompt/data-content.ts
201
- import { AISDKError } from "@ai-sdk/provider";
201
+ import { AISDKError as AISDKError2 } from "@ai-sdk/provider";
202
202
  import {
203
+ isUint8Array,
204
+ isArrayBuffer,
203
205
  convertBase64ToUint8Array as convertBase64ToUint8Array2,
204
206
  convertUint8ArrayToBase64
205
207
  } from "@ai-sdk/provider-utils";
206
208
  import { z } from "zod/v4";
207
209
 
210
+ // src/prompt/invalid-data-content-error.ts
211
+ import { AISDKError } from "@ai-sdk/provider";
212
+ var name = "AI_InvalidDataContentError";
213
+ var marker = `vercel.ai.error.${name}`;
214
+ var symbol = Symbol.for(marker);
215
+ var _a;
216
+ var InvalidDataContentError = class extends AISDKError {
217
+ constructor({
218
+ content,
219
+ cause,
220
+ message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
221
+ }) {
222
+ super({ name, message, cause });
223
+ this[_a] = true;
224
+ this.content = content;
225
+ }
226
+ static isInstance(error) {
227
+ return AISDKError.hasMarker(error, marker);
228
+ }
229
+ };
230
+ _a = symbol;
231
+
208
232
  // src/prompt/split-data-url.ts
209
233
  function splitDataUrl(dataUrl) {
210
234
  try {
@@ -224,22 +248,25 @@ function splitDataUrl(dataUrl) {
224
248
  // src/prompt/data-content.ts
225
249
  var dataContentSchema = z.union([
226
250
  z.string(),
227
- z.instanceof(Uint8Array),
228
- z.instanceof(ArrayBuffer),
251
+ z.custom(isUint8Array, { message: "Must be a Uint8Array" }),
252
+ z.custom(isArrayBuffer, { message: "Must be an ArrayBuffer" }),
229
253
  z.custom(
230
254
  // Buffer might not be available in some environments such as CloudFlare:
231
255
  (value) => {
232
- var _a4, _b;
233
- return (_b = (_a4 = globalThis.Buffer) == null ? void 0 : _a4.isBuffer(value)) != null ? _b : false;
256
+ var _a5, _b;
257
+ return (_b = (_a5 = globalThis.Buffer) == null ? void 0 : _a5.isBuffer(value)) != null ? _b : false;
234
258
  },
235
259
  { message: "Must be a Buffer" }
236
260
  )
237
261
  ]);
238
262
  function convertToLanguageModelV2DataContent(content) {
239
- if (content instanceof Uint8Array) {
240
- return { data: content, mediaType: void 0 };
263
+ if (isUint8Array(content)) {
264
+ return {
265
+ data: convertDataContentToUint8Array(content),
266
+ mediaType: void 0
267
+ };
241
268
  }
242
- if (content instanceof ArrayBuffer) {
269
+ if (isArrayBuffer(content)) {
243
270
  return { data: new Uint8Array(content), mediaType: void 0 };
244
271
  }
245
272
  if (typeof content === "string") {
@@ -253,7 +280,7 @@ function convertToLanguageModelV2DataContent(content) {
253
280
  content.toString()
254
281
  );
255
282
  if (dataUrlMediaType == null || base64Content == null) {
256
- throw new AISDKError({
283
+ throw new AISDKError2({
257
284
  name: "InvalidDataContentError",
258
285
  message: `Invalid data URL format in content ${content.toString()}`
259
286
  });
@@ -262,27 +289,51 @@ function convertToLanguageModelV2DataContent(content) {
262
289
  }
263
290
  return { data: content, mediaType: void 0 };
264
291
  }
292
+ function convertDataContentToUint8Array(content) {
293
+ if (isUint8Array(content)) {
294
+ if (content instanceof Uint8Array) {
295
+ return content;
296
+ }
297
+ const { buffer, byteOffset, byteLength } = content;
298
+ return new Uint8Array(buffer, byteOffset, byteLength);
299
+ }
300
+ if (typeof content === "string") {
301
+ try {
302
+ return convertBase64ToUint8Array2(content);
303
+ } catch (error) {
304
+ throw new InvalidDataContentError({
305
+ message: "Invalid data content. Content string is not a base64-encoded media.",
306
+ content,
307
+ cause: error
308
+ });
309
+ }
310
+ }
311
+ if (isArrayBuffer(content)) {
312
+ return new Uint8Array(content);
313
+ }
314
+ throw new InvalidDataContentError({ content });
315
+ }
265
316
 
266
317
  // src/prompt/invalid-message-role-error.ts
267
- import { AISDKError as AISDKError2 } from "@ai-sdk/provider";
268
- var name = "AI_InvalidMessageRoleError";
269
- var marker = `vercel.ai.error.${name}`;
270
- var symbol = Symbol.for(marker);
271
- var _a;
272
- var InvalidMessageRoleError = class extends AISDKError2 {
318
+ import { AISDKError as AISDKError3 } from "@ai-sdk/provider";
319
+ var name2 = "AI_InvalidMessageRoleError";
320
+ var marker2 = `vercel.ai.error.${name2}`;
321
+ var symbol2 = Symbol.for(marker2);
322
+ var _a2;
323
+ var InvalidMessageRoleError = class extends AISDKError3 {
273
324
  constructor({
274
325
  role,
275
326
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
276
327
  }) {
277
- super({ name, message });
278
- this[_a] = true;
328
+ super({ name: name2, message });
329
+ this[_a2] = true;
279
330
  this.role = role;
280
331
  }
281
332
  static isInstance(error) {
282
- return AISDKError2.hasMarker(error, marker);
333
+ return AISDKError3.hasMarker(error, marker2);
283
334
  }
284
335
  };
285
- _a = symbol;
336
+ _a2 = symbol2;
286
337
 
287
338
  // src/prompt/convert-to-language-model-prompt.ts
288
339
  async function convertToLanguageModelPrompt({
@@ -422,8 +473,8 @@ async function downloadAssets(messages, download2, supportedUrls) {
422
473
  ).flat().filter(
423
474
  (part) => part.type === "image" || part.type === "file"
424
475
  ).map((part) => {
425
- var _a4;
426
- const mediaType = (_a4 = part.mediaType) != null ? _a4 : part.type === "image" ? "image/*" : void 0;
476
+ var _a5;
477
+ const mediaType = (_a5 = part.mediaType) != null ? _a5 : part.type === "image" ? "image/*" : void 0;
427
478
  let data = part.type === "image" ? part.image : part.data;
428
479
  if (typeof data === "string") {
429
480
  try {
@@ -456,7 +507,7 @@ function getOriginalUrl(originalData, convertedData) {
456
507
  return typeof originalData === "string" && convertedData instanceof URL && convertedData.toString() !== originalData ? originalData : void 0;
457
508
  }
458
509
  function convertPartToLanguageModelPart(part, downloadedAssets) {
459
- var _a4;
510
+ var _a5;
460
511
  if (part.type === "text") {
461
512
  return {
462
513
  type: "text",
@@ -491,7 +542,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
491
542
  switch (type) {
492
543
  case "image": {
493
544
  if (data instanceof Uint8Array || typeof data === "string") {
494
- mediaType = (_a4 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a4 : mediaType;
545
+ mediaType = (_a5 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a5 : mediaType;
495
546
  }
496
547
  return {
497
548
  type: "file",
@@ -540,10 +591,10 @@ function prepareToolsAndToolChoice({
540
591
  };
541
592
  }
542
593
  const filteredTools = activeTools != null ? Object.entries(tools).filter(
543
- ([name4]) => activeTools.includes(name4)
594
+ ([name5]) => activeTools.includes(name5)
544
595
  ) : Object.entries(tools);
545
596
  return {
546
- tools: filteredTools.map(([name4, tool]) => {
597
+ tools: filteredTools.map(([name5, tool]) => {
547
598
  const toolType = tool.type;
548
599
  switch (toolType) {
549
600
  case void 0:
@@ -551,7 +602,7 @@ function prepareToolsAndToolChoice({
551
602
  case "function":
552
603
  return {
553
604
  type: "function",
554
- name: name4,
605
+ name: name5,
555
606
  description: tool.description,
556
607
  inputSchema: asSchema(tool.inputSchema).jsonSchema,
557
608
  providerOptions: tool.providerOptions
@@ -559,7 +610,7 @@ function prepareToolsAndToolChoice({
559
610
  case "provider-defined":
560
611
  return {
561
612
  type: "provider-defined",
562
- name: name4,
613
+ name: name5,
563
614
  id: tool.id,
564
615
  args: tool.args
565
616
  };
@@ -791,30 +842,30 @@ async function standardizePrompt({
791
842
  }
792
843
 
793
844
  // src/error/invalid-argument-error.ts
794
- import { AISDKError as AISDKError3 } from "@ai-sdk/provider";
795
- var name2 = "AI_InvalidArgumentError";
796
- var marker2 = `vercel.ai.error.${name2}`;
797
- var symbol2 = Symbol.for(marker2);
798
- var _a2;
799
- var InvalidArgumentError = class extends AISDKError3 {
845
+ import { AISDKError as AISDKError4 } from "@ai-sdk/provider";
846
+ var name3 = "AI_InvalidArgumentError";
847
+ var marker3 = `vercel.ai.error.${name3}`;
848
+ var symbol3 = Symbol.for(marker3);
849
+ var _a3;
850
+ var InvalidArgumentError = class extends AISDKError4 {
800
851
  constructor({
801
852
  parameter,
802
853
  value,
803
854
  message
804
855
  }) {
805
856
  super({
806
- name: name2,
857
+ name: name3,
807
858
  message: `Invalid argument for parameter ${parameter}: ${message}`
808
859
  });
809
- this[_a2] = true;
860
+ this[_a3] = true;
810
861
  this.parameter = parameter;
811
862
  this.value = value;
812
863
  }
813
864
  static isInstance(error) {
814
- return AISDKError3.hasMarker(error, marker2);
865
+ return AISDKError4.hasMarker(error, marker3);
815
866
  }
816
867
  };
817
- _a2 = symbol2;
868
+ _a3 = symbol3;
818
869
 
819
870
  // src/prompt/prepare-call-settings.ts
820
871
  function prepareCallSettings({
@@ -915,28 +966,28 @@ import { GatewayError } from "@ai-sdk/gateway";
915
966
  import { delay, getErrorMessage, isAbortError } from "@ai-sdk/provider-utils";
916
967
 
917
968
  // src/util/retry-error.ts
918
- import { AISDKError as AISDKError4 } from "@ai-sdk/provider";
919
- var name3 = "AI_RetryError";
920
- var marker3 = `vercel.ai.error.${name3}`;
921
- var symbol3 = Symbol.for(marker3);
922
- var _a3;
923
- var RetryError = class extends AISDKError4 {
969
+ import { AISDKError as AISDKError5 } from "@ai-sdk/provider";
970
+ var name4 = "AI_RetryError";
971
+ var marker4 = `vercel.ai.error.${name4}`;
972
+ var symbol4 = Symbol.for(marker4);
973
+ var _a4;
974
+ var RetryError = class extends AISDKError5 {
924
975
  constructor({
925
976
  message,
926
977
  reason,
927
978
  errors
928
979
  }) {
929
- super({ name: name3, message });
930
- this[_a3] = true;
980
+ super({ name: name4, message });
981
+ this[_a4] = true;
931
982
  this.reason = reason;
932
983
  this.errors = errors;
933
984
  this.lastError = errors[errors.length - 1];
934
985
  }
935
986
  static isInstance(error) {
936
- return AISDKError4.hasMarker(error, marker3);
987
+ return AISDKError5.hasMarker(error, marker4);
937
988
  }
938
989
  };
939
- _a3 = symbol3;
990
+ _a4 = symbol4;
940
991
 
941
992
  // src/util/retry-with-exponential-backoff.ts
942
993
  function getRetryDelayInMs({