ai 5.0.0-canary.16 → 5.0.0-canary.17

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 name7 in all)
8
- __defProp(target, name7, { get: all[name7], 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") {
@@ -36,229 +36,40 @@ __export(internal_exports, {
36
36
  module.exports = __toCommonJS(internal_exports);
37
37
 
38
38
  // core/prompt/standardize-prompt.ts
39
- var import_provider4 = require("@ai-sdk/provider");
39
+ var import_provider3 = require("@ai-sdk/provider");
40
40
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
41
41
  var import_zod7 = require("zod");
42
42
 
43
- // core/prompt/data-content.ts
44
- var import_provider2 = require("@ai-sdk/provider");
45
- var import_provider_utils = require("@ai-sdk/provider-utils");
46
- var import_zod = require("zod");
47
-
48
- // core/prompt/invalid-data-content-error.ts
43
+ // core/prompt/message-conversion-error.ts
49
44
  var import_provider = require("@ai-sdk/provider");
50
- var name = "AI_InvalidDataContentError";
45
+ var name = "AI_MessageConversionError";
51
46
  var marker = `vercel.ai.error.${name}`;
52
47
  var symbol = Symbol.for(marker);
53
48
  var _a;
54
- var InvalidDataContentError = class extends import_provider.AISDKError {
55
- constructor({
56
- content,
57
- cause,
58
- message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
59
- }) {
60
- super({ name, message, cause });
61
- this[_a] = true;
62
- this.content = content;
63
- }
64
- static isInstance(error) {
65
- return import_provider.AISDKError.hasMarker(error, marker);
66
- }
67
- };
68
- _a = symbol;
69
-
70
- // core/prompt/split-data-url.ts
71
- function splitDataUrl(dataUrl) {
72
- try {
73
- const [header, base64Content] = dataUrl.split(",");
74
- return {
75
- mediaType: header.split(";")[0].split(":")[1],
76
- base64Content
77
- };
78
- } catch (error) {
79
- return {
80
- mediaType: void 0,
81
- base64Content: void 0
82
- };
83
- }
84
- }
85
-
86
- // core/prompt/data-content.ts
87
- var dataContentSchema = import_zod.z.union([
88
- import_zod.z.string(),
89
- import_zod.z.instanceof(Uint8Array),
90
- import_zod.z.instanceof(ArrayBuffer),
91
- import_zod.z.custom(
92
- // Buffer might not be available in some environments such as CloudFlare:
93
- (value) => {
94
- var _a7, _b;
95
- return (_b = (_a7 = globalThis.Buffer) == null ? void 0 : _a7.isBuffer(value)) != null ? _b : false;
96
- },
97
- { message: "Must be a Buffer" }
98
- )
99
- ]);
100
- function convertToLanguageModelV2DataContent(content) {
101
- if (content instanceof Uint8Array) {
102
- return { data: content, mediaType: void 0 };
103
- }
104
- if (content instanceof ArrayBuffer) {
105
- return { data: new Uint8Array(content), mediaType: void 0 };
106
- }
107
- if (typeof content === "string") {
108
- try {
109
- content = new URL(content);
110
- } catch (error) {
111
- }
112
- }
113
- if (content instanceof URL && content.protocol === "data:") {
114
- const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(
115
- content.toString()
116
- );
117
- if (dataUrlMediaType == null || base64Content == null) {
118
- throw new import_provider2.AISDKError({
119
- name: "InvalidDataContentError",
120
- message: `Invalid data URL format in content ${content.toString()}`
121
- });
122
- }
123
- return { data: base64Content, mediaType: dataUrlMediaType };
124
- }
125
- return { data: content, mediaType: void 0 };
126
- }
127
- function convertDataContentToUint8Array(content) {
128
- if (content instanceof Uint8Array) {
129
- return content;
130
- }
131
- if (typeof content === "string") {
132
- try {
133
- return (0, import_provider_utils.convertBase64ToUint8Array)(content);
134
- } catch (error) {
135
- throw new InvalidDataContentError({
136
- message: "Invalid data content. Content string is not a base64-encoded media.",
137
- content,
138
- cause: error
139
- });
140
- }
141
- }
142
- if (content instanceof ArrayBuffer) {
143
- return new Uint8Array(content);
144
- }
145
- throw new InvalidDataContentError({ content });
146
- }
147
- function convertUint8ArrayToText(uint8Array) {
148
- try {
149
- return new TextDecoder().decode(uint8Array);
150
- } catch (error) {
151
- throw new Error("Error decoding Uint8Array to text");
152
- }
153
- }
154
-
155
- // core/prompt/attachments-to-parts.ts
156
- function attachmentsToParts(attachments) {
157
- var _a7, _b, _c;
158
- const parts = [];
159
- for (const attachment of attachments) {
160
- let url;
161
- try {
162
- url = new URL(attachment.url);
163
- } catch (error) {
164
- throw new Error(`Invalid URL: ${attachment.url}`);
165
- }
166
- switch (url.protocol) {
167
- case "http:":
168
- case "https:": {
169
- if ((_a7 = attachment.contentType) == null ? void 0 : _a7.startsWith("image/")) {
170
- parts.push({ type: "image", image: url });
171
- } else {
172
- if (!attachment.contentType) {
173
- throw new Error(
174
- "If the attachment is not an image, it must specify a content type"
175
- );
176
- }
177
- parts.push({
178
- type: "file",
179
- data: url,
180
- mediaType: attachment.contentType
181
- });
182
- }
183
- break;
184
- }
185
- case "data:": {
186
- let header;
187
- let base64Content;
188
- let mediaType;
189
- try {
190
- [header, base64Content] = attachment.url.split(",");
191
- mediaType = header.split(";")[0].split(":")[1];
192
- } catch (error) {
193
- throw new Error(`Error processing data URL: ${attachment.url}`);
194
- }
195
- if (mediaType == null || base64Content == null) {
196
- throw new Error(`Invalid data URL format: ${attachment.url}`);
197
- }
198
- if ((_b = attachment.contentType) == null ? void 0 : _b.startsWith("image/")) {
199
- parts.push({
200
- type: "image",
201
- image: convertDataContentToUint8Array(base64Content)
202
- });
203
- } else if ((_c = attachment.contentType) == null ? void 0 : _c.startsWith("text/")) {
204
- parts.push({
205
- type: "text",
206
- text: convertUint8ArrayToText(
207
- convertDataContentToUint8Array(base64Content)
208
- )
209
- });
210
- } else {
211
- if (!attachment.contentType) {
212
- throw new Error(
213
- "If the attachment is not an image or text, it must specify a content type"
214
- );
215
- }
216
- parts.push({
217
- type: "file",
218
- data: base64Content,
219
- mediaType: attachment.contentType
220
- });
221
- }
222
- break;
223
- }
224
- default: {
225
- throw new Error(`Unsupported URL protocol: ${url.protocol}`);
226
- }
227
- }
228
- }
229
- return parts;
230
- }
231
-
232
- // core/prompt/message-conversion-error.ts
233
- var import_provider3 = require("@ai-sdk/provider");
234
- var name2 = "AI_MessageConversionError";
235
- var marker2 = `vercel.ai.error.${name2}`;
236
- var symbol2 = Symbol.for(marker2);
237
- var _a2;
238
- var MessageConversionError = class extends import_provider3.AISDKError {
49
+ var MessageConversionError = class extends import_provider.AISDKError {
239
50
  constructor({
240
51
  originalMessage,
241
52
  message
242
53
  }) {
243
- super({ name: name2, message });
244
- this[_a2] = true;
54
+ super({ name, message });
55
+ this[_a] = true;
245
56
  this.originalMessage = originalMessage;
246
57
  }
247
58
  static isInstance(error) {
248
- return import_provider3.AISDKError.hasMarker(error, marker2);
59
+ return import_provider.AISDKError.hasMarker(error, marker);
249
60
  }
250
61
  };
251
- _a2 = symbol2;
62
+ _a = symbol;
252
63
 
253
- // core/prompt/convert-to-core-messages.ts
254
- function convertToCoreMessages(messages, options) {
255
- var _a7, _b;
256
- const tools = (_a7 = options == null ? void 0 : options.tools) != null ? _a7 : {};
64
+ // core/prompt/convert-to-model-messages.ts
65
+ function convertToModelMessages(messages, options) {
66
+ var _a6, _b;
67
+ const tools = (_a6 = options == null ? void 0 : options.tools) != null ? _a6 : {};
257
68
  const coreMessages = [];
258
69
  for (let i = 0; i < messages.length; i++) {
259
70
  const message = messages[i];
260
71
  const isLastMessage = i === messages.length - 1;
261
- const { role, content, experimental_attachments } = message;
72
+ const { role, content } = message;
262
73
  switch (role) {
263
74
  case "system": {
264
75
  coreMessages.push({
@@ -268,30 +79,24 @@ function convertToCoreMessages(messages, options) {
268
79
  break;
269
80
  }
270
81
  case "user": {
271
- if (message.parts == null) {
272
- coreMessages.push({
273
- role: "user",
274
- content: experimental_attachments ? [
275
- { type: "text", text: content },
276
- ...attachmentsToParts(experimental_attachments)
277
- ] : content
278
- });
279
- } else {
280
- const textParts = message.parts.filter((part) => part.type === "text").map((part) => ({
281
- type: "text",
282
- text: part.text
283
- }));
284
- coreMessages.push({
285
- role: "user",
286
- content: experimental_attachments ? [...textParts, ...attachmentsToParts(experimental_attachments)] : textParts
287
- });
288
- }
82
+ coreMessages.push({
83
+ role: "user",
84
+ content: message.parts.filter(
85
+ (part) => part.type === "text" || part.type === "file"
86
+ ).map(
87
+ (part) => part.type === "file" ? {
88
+ type: "file",
89
+ mediaType: part.mediaType,
90
+ filename: part.filename,
91
+ data: part.url
92
+ } : part
93
+ )
94
+ });
289
95
  break;
290
96
  }
291
97
  case "assistant": {
292
98
  if (message.parts != null) {
293
99
  let processBlock2 = function() {
294
- var _a8;
295
100
  const content2 = [];
296
101
  for (const part of block) {
297
102
  switch (part.type) {
@@ -302,9 +107,8 @@ function convertToCoreMessages(messages, options) {
302
107
  case "file": {
303
108
  content2.push({
304
109
  type: "file",
305
- data: part.data,
306
- mediaType: (_a8 = part.mediaType) != null ? _a8 : part.mimeType
307
- // TODO migration, remove
110
+ mediaType: part.mediaType,
111
+ data: part.url
308
112
  });
309
113
  break;
310
114
  }
@@ -458,30 +262,93 @@ function detectSingleMessageCharacteristics(message) {
458
262
  var import_zod6 = require("zod");
459
263
 
460
264
  // core/types/provider-metadata.ts
461
- var import_zod3 = require("zod");
265
+ var import_zod2 = require("zod");
462
266
 
463
267
  // core/types/json-value.ts
464
- var import_zod2 = require("zod");
465
- var jsonValueSchema = import_zod2.z.lazy(
466
- () => import_zod2.z.union([
467
- import_zod2.z.null(),
468
- import_zod2.z.string(),
469
- import_zod2.z.number(),
470
- import_zod2.z.boolean(),
471
- import_zod2.z.record(import_zod2.z.string(), jsonValueSchema),
472
- import_zod2.z.array(jsonValueSchema)
268
+ var import_zod = require("zod");
269
+ var jsonValueSchema = import_zod.z.lazy(
270
+ () => import_zod.z.union([
271
+ import_zod.z.null(),
272
+ import_zod.z.string(),
273
+ import_zod.z.number(),
274
+ import_zod.z.boolean(),
275
+ import_zod.z.record(import_zod.z.string(), jsonValueSchema),
276
+ import_zod.z.array(jsonValueSchema)
473
277
  ])
474
278
  );
475
279
 
476
280
  // core/types/provider-metadata.ts
477
- var providerMetadataSchema = import_zod3.z.record(
478
- import_zod3.z.string(),
479
- import_zod3.z.record(import_zod3.z.string(), jsonValueSchema)
281
+ var providerMetadataSchema = import_zod2.z.record(
282
+ import_zod2.z.string(),
283
+ import_zod2.z.record(import_zod2.z.string(), jsonValueSchema)
480
284
  );
481
285
 
482
286
  // core/prompt/content-part.ts
483
287
  var import_zod5 = require("zod");
484
288
 
289
+ // core/prompt/data-content.ts
290
+ var import_provider2 = require("@ai-sdk/provider");
291
+ var import_provider_utils = require("@ai-sdk/provider-utils");
292
+ var import_zod3 = require("zod");
293
+
294
+ // core/prompt/split-data-url.ts
295
+ function splitDataUrl(dataUrl) {
296
+ try {
297
+ const [header, base64Content] = dataUrl.split(",");
298
+ return {
299
+ mediaType: header.split(";")[0].split(":")[1],
300
+ base64Content
301
+ };
302
+ } catch (error) {
303
+ return {
304
+ mediaType: void 0,
305
+ base64Content: void 0
306
+ };
307
+ }
308
+ }
309
+
310
+ // core/prompt/data-content.ts
311
+ var dataContentSchema = import_zod3.z.union([
312
+ import_zod3.z.string(),
313
+ import_zod3.z.instanceof(Uint8Array),
314
+ import_zod3.z.instanceof(ArrayBuffer),
315
+ import_zod3.z.custom(
316
+ // Buffer might not be available in some environments such as CloudFlare:
317
+ (value) => {
318
+ var _a6, _b;
319
+ return (_b = (_a6 = globalThis.Buffer) == null ? void 0 : _a6.isBuffer(value)) != null ? _b : false;
320
+ },
321
+ { message: "Must be a Buffer" }
322
+ )
323
+ ]);
324
+ function convertToLanguageModelV2DataContent(content) {
325
+ if (content instanceof Uint8Array) {
326
+ return { data: content, mediaType: void 0 };
327
+ }
328
+ if (content instanceof ArrayBuffer) {
329
+ return { data: new Uint8Array(content), mediaType: void 0 };
330
+ }
331
+ if (typeof content === "string") {
332
+ try {
333
+ content = new URL(content);
334
+ } catch (error) {
335
+ }
336
+ }
337
+ if (content instanceof URL && content.protocol === "data:") {
338
+ const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(
339
+ content.toString()
340
+ );
341
+ if (dataUrlMediaType == null || base64Content == null) {
342
+ throw new import_provider2.AISDKError({
343
+ name: "InvalidDataContentError",
344
+ message: `Invalid data URL format in content ${content.toString()}`
345
+ });
346
+ }
347
+ return { data: base64Content, mediaType: dataUrlMediaType };
348
+ }
349
+ return { data: content, mediaType: void 0 };
350
+ }
351
+
485
352
  // core/prompt/tool-result-content.ts
486
353
  var import_zod4 = require("zod");
487
354
  var toolResultContentSchema = import_zod4.z.array(
@@ -505,7 +372,6 @@ var imagePartSchema = import_zod5.z.object({
505
372
  type: import_zod5.z.literal("image"),
506
373
  image: import_zod5.z.union([dataContentSchema, import_zod5.z.instanceof(URL)]),
507
374
  mediaType: import_zod5.z.string().optional(),
508
- mimeType: import_zod5.z.string().optional(),
509
375
  providerOptions: providerMetadataSchema.optional()
510
376
  });
511
377
  var filePartSchema = import_zod5.z.object({
@@ -513,7 +379,6 @@ var filePartSchema = import_zod5.z.object({
513
379
  data: import_zod5.z.union([dataContentSchema, import_zod5.z.instanceof(URL)]),
514
380
  filename: import_zod5.z.string().optional(),
515
381
  mediaType: import_zod5.z.string(),
516
- mimeType: import_zod5.z.string().optional(),
517
382
  providerOptions: providerMetadataSchema.optional()
518
383
  });
519
384
  var reasoningPartSchema = import_zod5.z.object({
@@ -539,12 +404,14 @@ var toolResultPartSchema = import_zod5.z.object({
539
404
  });
540
405
 
541
406
  // core/prompt/message.ts
542
- var coreSystemMessageSchema = import_zod6.z.object({
543
- role: import_zod6.z.literal("system"),
544
- content: import_zod6.z.string(),
545
- providerOptions: providerMetadataSchema.optional()
546
- });
547
- var coreUserMessageSchema = import_zod6.z.object({
407
+ var systemModelMessageSchema = import_zod6.z.object(
408
+ {
409
+ role: import_zod6.z.literal("system"),
410
+ content: import_zod6.z.string(),
411
+ providerOptions: providerMetadataSchema.optional()
412
+ }
413
+ );
414
+ var userModelMessageSchema = import_zod6.z.object({
548
415
  role: import_zod6.z.literal("user"),
549
416
  content: import_zod6.z.union([
550
417
  import_zod6.z.string(),
@@ -552,7 +419,7 @@ var coreUserMessageSchema = import_zod6.z.object({
552
419
  ]),
553
420
  providerOptions: providerMetadataSchema.optional()
554
421
  });
555
- var coreAssistantMessageSchema = import_zod6.z.object({
422
+ var assistantModelMessageSchema = import_zod6.z.object({
556
423
  role: import_zod6.z.literal("assistant"),
557
424
  content: import_zod6.z.union([
558
425
  import_zod6.z.string(),
@@ -567,16 +434,16 @@ var coreAssistantMessageSchema = import_zod6.z.object({
567
434
  ]),
568
435
  providerOptions: providerMetadataSchema.optional()
569
436
  });
570
- var coreToolMessageSchema = import_zod6.z.object({
437
+ var toolModelMessageSchema = import_zod6.z.object({
571
438
  role: import_zod6.z.literal("tool"),
572
439
  content: import_zod6.z.array(toolResultPartSchema),
573
440
  providerOptions: providerMetadataSchema.optional()
574
441
  });
575
- var coreMessageSchema = import_zod6.z.union([
576
- coreSystemMessageSchema,
577
- coreUserMessageSchema,
578
- coreAssistantMessageSchema,
579
- coreToolMessageSchema
442
+ var modelMessageSchema = import_zod6.z.union([
443
+ systemModelMessageSchema,
444
+ userModelMessageSchema,
445
+ assistantModelMessageSchema,
446
+ toolModelMessageSchema
580
447
  ]);
581
448
 
582
449
  // core/prompt/standardize-prompt.ts
@@ -585,26 +452,26 @@ async function standardizePrompt({
585
452
  tools
586
453
  }) {
587
454
  if (prompt.prompt == null && prompt.messages == null) {
588
- throw new import_provider4.InvalidPromptError({
455
+ throw new import_provider3.InvalidPromptError({
589
456
  prompt,
590
457
  message: "prompt or messages must be defined"
591
458
  });
592
459
  }
593
460
  if (prompt.prompt != null && prompt.messages != null) {
594
- throw new import_provider4.InvalidPromptError({
461
+ throw new import_provider3.InvalidPromptError({
595
462
  prompt,
596
463
  message: "prompt and messages cannot be defined at the same time"
597
464
  });
598
465
  }
599
466
  if (prompt.system != null && typeof prompt.system !== "string") {
600
- throw new import_provider4.InvalidPromptError({
467
+ throw new import_provider3.InvalidPromptError({
601
468
  prompt,
602
469
  message: "system must be a string"
603
470
  });
604
471
  }
605
472
  if (prompt.prompt != null) {
606
473
  if (typeof prompt.prompt !== "string") {
607
- throw new import_provider4.InvalidPromptError({
474
+ throw new import_provider3.InvalidPromptError({
608
475
  prompt,
609
476
  message: "prompt must be a string"
610
477
  });
@@ -622,28 +489,28 @@ async function standardizePrompt({
622
489
  if (prompt.messages != null) {
623
490
  const promptType = detectPromptType(prompt.messages);
624
491
  if (promptType === "other") {
625
- throw new import_provider4.InvalidPromptError({
492
+ throw new import_provider3.InvalidPromptError({
626
493
  prompt,
627
- message: "messages must be an array of CoreMessage or UIMessage"
494
+ message: "messages must be an array of ModelMessage or UIMessage"
628
495
  });
629
496
  }
630
- const messages = promptType === "ui-messages" ? convertToCoreMessages(prompt.messages, {
497
+ const messages = promptType === "ui-messages" ? convertToModelMessages(prompt.messages, {
631
498
  tools
632
499
  }) : prompt.messages;
633
500
  if (messages.length === 0) {
634
- throw new import_provider4.InvalidPromptError({
501
+ throw new import_provider3.InvalidPromptError({
635
502
  prompt,
636
503
  message: "messages must not be empty"
637
504
  });
638
505
  }
639
506
  const validationResult = await (0, import_provider_utils2.safeValidateTypes)({
640
507
  value: messages,
641
- schema: import_zod7.z.array(coreMessageSchema)
508
+ schema: import_zod7.z.array(modelMessageSchema)
642
509
  });
643
510
  if (!validationResult.success) {
644
- throw new import_provider4.InvalidPromptError({
511
+ throw new import_provider3.InvalidPromptError({
645
512
  prompt,
646
- message: "messages must be an array of CoreMessage or UIMessage",
513
+ message: "messages must be an array of ModelMessage or UIMessage",
647
514
  cause: validationResult.error
648
515
  });
649
516
  }
@@ -863,9 +730,9 @@ var fileStreamPart = {
863
730
  code: "k",
864
731
  name: "file",
865
732
  parse: (value) => {
866
- if (value == null || typeof value !== "object" || !("data" in value) || typeof value.data !== "string" || !("mimeType" in value) || typeof value.mimeType !== "string") {
733
+ if (value == null || typeof value !== "object" || !("url" in value) || typeof value.url !== "string" || !("mediaType" in value) || typeof value.mediaType !== "string") {
867
734
  throw new Error(
868
- '"file" parts expect an object with a "data" and "mimeType" property.'
735
+ '"file" parts expect an object with a "url" and "mediaType" property.'
869
736
  );
870
737
  }
871
738
  return { type: "file", value };
@@ -932,24 +799,24 @@ function prepareToolsAndToolChoice({
932
799
  };
933
800
  }
934
801
  const filteredTools = activeTools != null ? Object.entries(tools).filter(
935
- ([name7]) => activeTools.includes(name7)
802
+ ([name6]) => activeTools.includes(name6)
936
803
  ) : Object.entries(tools);
937
804
  return {
938
- tools: filteredTools.map(([name7, tool]) => {
805
+ tools: filteredTools.map(([name6, tool]) => {
939
806
  const toolType = tool.type;
940
807
  switch (toolType) {
941
808
  case void 0:
942
809
  case "function":
943
810
  return {
944
811
  type: "function",
945
- name: name7,
812
+ name: name6,
946
813
  description: tool.description,
947
814
  parameters: (0, import_provider_utils3.asSchema)(tool.parameters).jsonSchema
948
815
  };
949
816
  case "provider-defined":
950
817
  return {
951
818
  type: "provider-defined",
952
- name: name7,
819
+ name: name6,
953
820
  id: tool.id,
954
821
  args: tool.args
955
822
  };
@@ -964,58 +831,58 @@ function prepareToolsAndToolChoice({
964
831
  }
965
832
 
966
833
  // errors/invalid-argument-error.ts
967
- var import_provider5 = require("@ai-sdk/provider");
968
- var name3 = "AI_InvalidArgumentError";
969
- var marker3 = `vercel.ai.error.${name3}`;
970
- var symbol3 = Symbol.for(marker3);
971
- var _a3;
972
- var InvalidArgumentError = class extends import_provider5.AISDKError {
834
+ var import_provider4 = require("@ai-sdk/provider");
835
+ var name2 = "AI_InvalidArgumentError";
836
+ var marker2 = `vercel.ai.error.${name2}`;
837
+ var symbol2 = Symbol.for(marker2);
838
+ var _a2;
839
+ var InvalidArgumentError = class extends import_provider4.AISDKError {
973
840
  constructor({
974
841
  parameter,
975
842
  value,
976
843
  message
977
844
  }) {
978
845
  super({
979
- name: name3,
846
+ name: name2,
980
847
  message: `Invalid argument for parameter ${parameter}: ${message}`
981
848
  });
982
- this[_a3] = true;
849
+ this[_a2] = true;
983
850
  this.parameter = parameter;
984
851
  this.value = value;
985
852
  }
986
853
  static isInstance(error) {
987
- return import_provider5.AISDKError.hasMarker(error, marker3);
854
+ return import_provider4.AISDKError.hasMarker(error, marker2);
988
855
  }
989
856
  };
990
- _a3 = symbol3;
857
+ _a2 = symbol2;
991
858
 
992
859
  // util/retry-with-exponential-backoff.ts
993
- var import_provider7 = require("@ai-sdk/provider");
860
+ var import_provider6 = require("@ai-sdk/provider");
994
861
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
995
862
 
996
863
  // util/retry-error.ts
997
- var import_provider6 = require("@ai-sdk/provider");
998
- var name4 = "AI_RetryError";
999
- var marker4 = `vercel.ai.error.${name4}`;
1000
- var symbol4 = Symbol.for(marker4);
1001
- var _a4;
1002
- var RetryError = class extends import_provider6.AISDKError {
864
+ var import_provider5 = require("@ai-sdk/provider");
865
+ var name3 = "AI_RetryError";
866
+ var marker3 = `vercel.ai.error.${name3}`;
867
+ var symbol3 = Symbol.for(marker3);
868
+ var _a3;
869
+ var RetryError = class extends import_provider5.AISDKError {
1003
870
  constructor({
1004
871
  message,
1005
872
  reason,
1006
873
  errors
1007
874
  }) {
1008
- super({ name: name4, message });
1009
- this[_a4] = true;
875
+ super({ name: name3, message });
876
+ this[_a3] = true;
1010
877
  this.reason = reason;
1011
878
  this.errors = errors;
1012
879
  this.lastError = errors[errors.length - 1];
1013
880
  }
1014
881
  static isInstance(error) {
1015
- return import_provider6.AISDKError.hasMarker(error, marker4);
882
+ return import_provider5.AISDKError.hasMarker(error, marker3);
1016
883
  }
1017
884
  };
1018
- _a4 = symbol4;
885
+ _a3 = symbol3;
1019
886
 
1020
887
  // util/retry-with-exponential-backoff.ts
1021
888
  var retryWithExponentialBackoff = ({
@@ -1051,7 +918,7 @@ async function _retryWithExponentialBackoff(f, {
1051
918
  errors: newErrors
1052
919
  });
1053
920
  }
1054
- if (error instanceof Error && import_provider7.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
921
+ if (error instanceof Error && import_provider6.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
1055
922
  await (0, import_provider_utils4.delay)(delayInMs);
1056
923
  return _retryWithExponentialBackoff(
1057
924
  f,
@@ -1190,13 +1057,16 @@ function prepareCallSettings({
1190
1057
  };
1191
1058
  }
1192
1059
 
1060
+ // core/prompt/convert-to-language-model-prompt.ts
1061
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
1062
+
1193
1063
  // util/download-error.ts
1194
- var import_provider8 = require("@ai-sdk/provider");
1195
- var name5 = "AI_DownloadError";
1196
- var marker5 = `vercel.ai.error.${name5}`;
1197
- var symbol5 = Symbol.for(marker5);
1198
- var _a5;
1199
- var DownloadError = class extends import_provider8.AISDKError {
1064
+ var import_provider7 = require("@ai-sdk/provider");
1065
+ var name4 = "AI_DownloadError";
1066
+ var marker4 = `vercel.ai.error.${name4}`;
1067
+ var symbol4 = Symbol.for(marker4);
1068
+ var _a4;
1069
+ var DownloadError = class extends import_provider7.AISDKError {
1200
1070
  constructor({
1201
1071
  url,
1202
1072
  statusCode,
@@ -1204,21 +1074,21 @@ var DownloadError = class extends import_provider8.AISDKError {
1204
1074
  cause,
1205
1075
  message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
1206
1076
  }) {
1207
- super({ name: name5, message, cause });
1208
- this[_a5] = true;
1077
+ super({ name: name4, message, cause });
1078
+ this[_a4] = true;
1209
1079
  this.url = url;
1210
1080
  this.statusCode = statusCode;
1211
1081
  this.statusText = statusText;
1212
1082
  }
1213
1083
  static isInstance(error) {
1214
- return import_provider8.AISDKError.hasMarker(error, marker5);
1084
+ return import_provider7.AISDKError.hasMarker(error, marker4);
1215
1085
  }
1216
1086
  };
1217
- _a5 = symbol5;
1087
+ _a4 = symbol4;
1218
1088
 
1219
1089
  // util/download.ts
1220
1090
  async function download({ url }) {
1221
- var _a7;
1091
+ var _a6;
1222
1092
  const urlText = url.toString();
1223
1093
  try {
1224
1094
  const response = await fetch(urlText);
@@ -1231,7 +1101,7 @@ async function download({ url }) {
1231
1101
  }
1232
1102
  return {
1233
1103
  data: new Uint8Array(await response.arrayBuffer()),
1234
- mediaType: (_a7 = response.headers.get("content-type")) != null ? _a7 : void 0
1104
+ mediaType: (_a6 = response.headers.get("content-type")) != null ? _a6 : void 0
1235
1105
  };
1236
1106
  } catch (error) {
1237
1107
  if (DownloadError.isInstance(error)) {
@@ -1343,28 +1213,27 @@ function detectMediaType({
1343
1213
  }
1344
1214
 
1345
1215
  // core/prompt/invalid-message-role-error.ts
1346
- var import_provider9 = require("@ai-sdk/provider");
1347
- var name6 = "AI_InvalidMessageRoleError";
1348
- var marker6 = `vercel.ai.error.${name6}`;
1349
- var symbol6 = Symbol.for(marker6);
1350
- var _a6;
1351
- var InvalidMessageRoleError = class extends import_provider9.AISDKError {
1216
+ var import_provider8 = require("@ai-sdk/provider");
1217
+ var name5 = "AI_InvalidMessageRoleError";
1218
+ var marker5 = `vercel.ai.error.${name5}`;
1219
+ var symbol5 = Symbol.for(marker5);
1220
+ var _a5;
1221
+ var InvalidMessageRoleError = class extends import_provider8.AISDKError {
1352
1222
  constructor({
1353
1223
  role,
1354
1224
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
1355
1225
  }) {
1356
- super({ name: name6, message });
1357
- this[_a6] = true;
1226
+ super({ name: name5, message });
1227
+ this[_a5] = true;
1358
1228
  this.role = role;
1359
1229
  }
1360
1230
  static isInstance(error) {
1361
- return import_provider9.AISDKError.hasMarker(error, marker6);
1231
+ return import_provider8.AISDKError.hasMarker(error, marker5);
1362
1232
  }
1363
1233
  };
1364
- _a6 = symbol6;
1234
+ _a5 = symbol5;
1365
1235
 
1366
1236
  // core/prompt/convert-to-language-model-prompt.ts
1367
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
1368
1237
  async function convertToLanguageModelPrompt({
1369
1238
  prompt,
1370
1239
  supportedUrls,
@@ -1420,7 +1289,6 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
1420
1289
  // remove empty text parts:
1421
1290
  (part) => part.type !== "text" || part.text !== ""
1422
1291
  ).map((part) => {
1423
- var _a7;
1424
1292
  const providerOptions = part.providerOptions;
1425
1293
  switch (part.type) {
1426
1294
  case "file": {
@@ -1431,7 +1299,7 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
1431
1299
  type: "file",
1432
1300
  data,
1433
1301
  filename: part.filename,
1434
- mediaType: (_a7 = mediaType != null ? mediaType : part.mediaType) != null ? _a7 : part.mimeType,
1302
+ mediaType: mediaType != null ? mediaType : part.mediaType,
1435
1303
  providerOptions
1436
1304
  };
1437
1305
  }
@@ -1490,8 +1358,8 @@ async function downloadAssets(messages, downloadImplementation, supportedUrls) {
1490
1358
  ).flat().filter(
1491
1359
  (part) => part.type === "image" || part.type === "file"
1492
1360
  ).map((part) => {
1493
- var _a7, _b;
1494
- const mediaType = (_b = (_a7 = part.mediaType) != null ? _a7 : part.mimeType) != null ? _b : part.type === "image" ? "image/*" : void 0;
1361
+ var _a6;
1362
+ const mediaType = (_a6 = part.mediaType) != null ? _a6 : part.type === "image" ? "image/*" : void 0;
1495
1363
  let data = part.type === "image" ? part.image : part.data;
1496
1364
  if (typeof data === "string") {
1497
1365
  try {
@@ -1518,7 +1386,7 @@ async function downloadAssets(messages, downloadImplementation, supportedUrls) {
1518
1386
  );
1519
1387
  }
1520
1388
  function convertPartToLanguageModelPart(part, downloadedAssets) {
1521
- var _a7, _b, _c;
1389
+ var _a6, _b;
1522
1390
  if (part.type === "text") {
1523
1391
  return {
1524
1392
  type: "text",
@@ -1539,19 +1407,19 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1539
1407
  throw new Error(`Unsupported part type: ${type}`);
1540
1408
  }
1541
1409
  const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);
1542
- let mediaType = (_a7 = convertedMediaType != null ? convertedMediaType : part.mediaType) != null ? _a7 : part.mimeType;
1410
+ let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;
1543
1411
  let data = convertedData;
1544
1412
  if (data instanceof URL) {
1545
1413
  const downloadedFile = downloadedAssets[data.toString()];
1546
1414
  if (downloadedFile) {
1547
1415
  data = downloadedFile.data;
1548
- mediaType = (_b = downloadedFile.mediaType) != null ? _b : mediaType;
1416
+ mediaType = (_a6 = downloadedFile.mediaType) != null ? _a6 : mediaType;
1549
1417
  }
1550
1418
  }
1551
1419
  switch (type) {
1552
1420
  case "image": {
1553
1421
  if (data instanceof Uint8Array || typeof data === "string") {
1554
- mediaType = (_c = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _c : mediaType;
1422
+ mediaType = (_b = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _b : mediaType;
1555
1423
  }
1556
1424
  return {
1557
1425
  type: "file",