ai 5.0.284 → 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.
- package/CHANGELOG.md +12 -0
- package/dist/index.js +19 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -16
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +112 -63
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +101 -50
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/internal/index.js
CHANGED
|
@@ -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
|
|
8
|
-
__defProp(target,
|
|
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.
|
|
166
|
+
var VERSION = true ? "5.0.285" : "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
|
|
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: (
|
|
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
|
|
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.
|
|
244
|
-
import_v4.z.
|
|
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
|
|
249
|
-
return (_b = (
|
|
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 (
|
|
256
|
-
return {
|
|
277
|
+
if ((0, import_provider_utils3.isUint8Array)(content)) {
|
|
278
|
+
return {
|
|
279
|
+
data: convertDataContentToUint8Array(content),
|
|
280
|
+
mediaType: void 0
|
|
281
|
+
};
|
|
257
282
|
}
|
|
258
|
-
if (
|
|
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
|
|
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
|
|
284
|
-
var
|
|
285
|
-
var
|
|
286
|
-
var
|
|
287
|
-
var
|
|
288
|
-
var InvalidMessageRoleError = class extends
|
|
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[
|
|
342
|
+
super({ name: name2, message });
|
|
343
|
+
this[_a2] = true;
|
|
295
344
|
this.role = role;
|
|
296
345
|
}
|
|
297
346
|
static isInstance(error) {
|
|
298
|
-
return
|
|
347
|
+
return import_provider3.AISDKError.hasMarker(error, marker2);
|
|
299
348
|
}
|
|
300
349
|
};
|
|
301
|
-
|
|
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
|
|
442
|
-
const mediaType = (
|
|
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
|
|
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 = (
|
|
559
|
+
mediaType = (_a5 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a5 : mediaType;
|
|
511
560
|
}
|
|
512
561
|
return {
|
|
513
562
|
type: "file",
|
|
@@ -556,10 +605,10 @@ function prepareToolsAndToolChoice({
|
|
|
556
605
|
};
|
|
557
606
|
}
|
|
558
607
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
|
559
|
-
([
|
|
608
|
+
([name5]) => activeTools.includes(name5)
|
|
560
609
|
) : Object.entries(tools);
|
|
561
610
|
return {
|
|
562
|
-
tools: filteredTools.map(([
|
|
611
|
+
tools: filteredTools.map(([name5, tool]) => {
|
|
563
612
|
const toolType = tool.type;
|
|
564
613
|
switch (toolType) {
|
|
565
614
|
case void 0:
|
|
@@ -567,7 +616,7 @@ function prepareToolsAndToolChoice({
|
|
|
567
616
|
case "function":
|
|
568
617
|
return {
|
|
569
618
|
type: "function",
|
|
570
|
-
name:
|
|
619
|
+
name: name5,
|
|
571
620
|
description: tool.description,
|
|
572
621
|
inputSchema: (0, import_provider_utils5.asSchema)(tool.inputSchema).jsonSchema,
|
|
573
622
|
providerOptions: tool.providerOptions
|
|
@@ -575,7 +624,7 @@ function prepareToolsAndToolChoice({
|
|
|
575
624
|
case "provider-defined":
|
|
576
625
|
return {
|
|
577
626
|
type: "provider-defined",
|
|
578
|
-
name:
|
|
627
|
+
name: name5,
|
|
579
628
|
id: tool.id,
|
|
580
629
|
args: tool.args
|
|
581
630
|
};
|
|
@@ -590,7 +639,7 @@ function prepareToolsAndToolChoice({
|
|
|
590
639
|
}
|
|
591
640
|
|
|
592
641
|
// src/prompt/standardize-prompt.ts
|
|
593
|
-
var
|
|
642
|
+
var import_provider4 = require("@ai-sdk/provider");
|
|
594
643
|
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
|
595
644
|
var import_v46 = require("zod/v4");
|
|
596
645
|
|
|
@@ -746,19 +795,19 @@ async function standardizePrompt({
|
|
|
746
795
|
messages
|
|
747
796
|
}) {
|
|
748
797
|
if (prompt == null && messages == null) {
|
|
749
|
-
throw new
|
|
798
|
+
throw new import_provider4.InvalidPromptError({
|
|
750
799
|
prompt,
|
|
751
800
|
message: "prompt or messages must be defined"
|
|
752
801
|
});
|
|
753
802
|
}
|
|
754
803
|
if (prompt != null && messages != null) {
|
|
755
|
-
throw new
|
|
804
|
+
throw new import_provider4.InvalidPromptError({
|
|
756
805
|
prompt,
|
|
757
806
|
message: "prompt and messages cannot be defined at the same time"
|
|
758
807
|
});
|
|
759
808
|
}
|
|
760
809
|
if (system != null && typeof system !== "string") {
|
|
761
|
-
throw new
|
|
810
|
+
throw new import_provider4.InvalidPromptError({
|
|
762
811
|
prompt,
|
|
763
812
|
message: "system must be a string"
|
|
764
813
|
});
|
|
@@ -768,20 +817,20 @@ async function standardizePrompt({
|
|
|
768
817
|
} else if (prompt != null && Array.isArray(prompt)) {
|
|
769
818
|
messages = prompt;
|
|
770
819
|
} else if (messages == null) {
|
|
771
|
-
throw new
|
|
820
|
+
throw new import_provider4.InvalidPromptError({
|
|
772
821
|
prompt,
|
|
773
822
|
message: "prompt or messages must be defined"
|
|
774
823
|
});
|
|
775
824
|
}
|
|
776
825
|
if (messages.length === 0) {
|
|
777
|
-
throw new
|
|
826
|
+
throw new import_provider4.InvalidPromptError({
|
|
778
827
|
prompt,
|
|
779
828
|
message: "messages must not be empty"
|
|
780
829
|
});
|
|
781
830
|
}
|
|
782
831
|
if (messages.some((message) => message.role === "system")) {
|
|
783
832
|
if (allowSystemInMessages === false) {
|
|
784
|
-
throw new
|
|
833
|
+
throw new import_provider4.InvalidPromptError({
|
|
785
834
|
prompt,
|
|
786
835
|
message: "System messages are not allowed in the prompt or messages fields. Use the system option instead."
|
|
787
836
|
});
|
|
@@ -797,7 +846,7 @@ async function standardizePrompt({
|
|
|
797
846
|
schema: import_v46.z.array(modelMessageSchema)
|
|
798
847
|
});
|
|
799
848
|
if (!validationResult.success) {
|
|
800
|
-
throw new
|
|
849
|
+
throw new import_provider4.InvalidPromptError({
|
|
801
850
|
prompt,
|
|
802
851
|
message: "The messages must be a ModelMessage[]. If you have passed a UIMessage[], you can use convertToModelMessages to convert them.",
|
|
803
852
|
cause: validationResult.error
|
|
@@ -807,30 +856,30 @@ async function standardizePrompt({
|
|
|
807
856
|
}
|
|
808
857
|
|
|
809
858
|
// src/error/invalid-argument-error.ts
|
|
810
|
-
var
|
|
811
|
-
var
|
|
812
|
-
var
|
|
813
|
-
var
|
|
814
|
-
var
|
|
815
|
-
var InvalidArgumentError = class extends
|
|
859
|
+
var import_provider5 = require("@ai-sdk/provider");
|
|
860
|
+
var name3 = "AI_InvalidArgumentError";
|
|
861
|
+
var marker3 = `vercel.ai.error.${name3}`;
|
|
862
|
+
var symbol3 = Symbol.for(marker3);
|
|
863
|
+
var _a3;
|
|
864
|
+
var InvalidArgumentError = class extends import_provider5.AISDKError {
|
|
816
865
|
constructor({
|
|
817
866
|
parameter,
|
|
818
867
|
value,
|
|
819
868
|
message
|
|
820
869
|
}) {
|
|
821
870
|
super({
|
|
822
|
-
name:
|
|
871
|
+
name: name3,
|
|
823
872
|
message: `Invalid argument for parameter ${parameter}: ${message}`
|
|
824
873
|
});
|
|
825
|
-
this[
|
|
874
|
+
this[_a3] = true;
|
|
826
875
|
this.parameter = parameter;
|
|
827
876
|
this.value = value;
|
|
828
877
|
}
|
|
829
878
|
static isInstance(error) {
|
|
830
|
-
return
|
|
879
|
+
return import_provider5.AISDKError.hasMarker(error, marker3);
|
|
831
880
|
}
|
|
832
881
|
};
|
|
833
|
-
|
|
882
|
+
_a3 = symbol3;
|
|
834
883
|
|
|
835
884
|
// src/prompt/prepare-call-settings.ts
|
|
836
885
|
function prepareCallSettings({
|
|
@@ -926,40 +975,40 @@ function prepareCallSettings({
|
|
|
926
975
|
}
|
|
927
976
|
|
|
928
977
|
// src/util/retry-with-exponential-backoff.ts
|
|
929
|
-
var
|
|
978
|
+
var import_provider7 = require("@ai-sdk/provider");
|
|
930
979
|
var import_gateway = require("@ai-sdk/gateway");
|
|
931
980
|
var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
|
932
981
|
|
|
933
982
|
// src/util/retry-error.ts
|
|
934
|
-
var
|
|
935
|
-
var
|
|
936
|
-
var
|
|
937
|
-
var
|
|
938
|
-
var
|
|
939
|
-
var RetryError = class extends
|
|
983
|
+
var import_provider6 = require("@ai-sdk/provider");
|
|
984
|
+
var name4 = "AI_RetryError";
|
|
985
|
+
var marker4 = `vercel.ai.error.${name4}`;
|
|
986
|
+
var symbol4 = Symbol.for(marker4);
|
|
987
|
+
var _a4;
|
|
988
|
+
var RetryError = class extends import_provider6.AISDKError {
|
|
940
989
|
constructor({
|
|
941
990
|
message,
|
|
942
991
|
reason,
|
|
943
992
|
errors
|
|
944
993
|
}) {
|
|
945
|
-
super({ name:
|
|
946
|
-
this[
|
|
994
|
+
super({ name: name4, message });
|
|
995
|
+
this[_a4] = true;
|
|
947
996
|
this.reason = reason;
|
|
948
997
|
this.errors = errors;
|
|
949
998
|
this.lastError = errors[errors.length - 1];
|
|
950
999
|
}
|
|
951
1000
|
static isInstance(error) {
|
|
952
|
-
return
|
|
1001
|
+
return import_provider6.AISDKError.hasMarker(error, marker4);
|
|
953
1002
|
}
|
|
954
1003
|
};
|
|
955
|
-
|
|
1004
|
+
_a4 = symbol4;
|
|
956
1005
|
|
|
957
1006
|
// src/util/retry-with-exponential-backoff.ts
|
|
958
1007
|
function getRetryDelayInMs({
|
|
959
1008
|
error,
|
|
960
1009
|
exponentialBackoffDelay
|
|
961
1010
|
}) {
|
|
962
|
-
const headers =
|
|
1011
|
+
const headers = import_provider7.APICallError.isInstance(error) ? error.responseHeaders : import_provider7.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
|
|
963
1012
|
if (!headers)
|
|
964
1013
|
return exponentialBackoffDelay;
|
|
965
1014
|
let ms;
|
|
@@ -1023,7 +1072,7 @@ async function _retryWithExponentialBackoff(f, {
|
|
|
1023
1072
|
errors: newErrors
|
|
1024
1073
|
});
|
|
1025
1074
|
}
|
|
1026
|
-
if ((error instanceof Error && (
|
|
1075
|
+
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
1076
|
await (0, import_provider_utils7.delay)(
|
|
1028
1077
|
getRetryDelayInMs({
|
|
1029
1078
|
error,
|