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.
- package/CHANGELOG.md +29 -0
- package/dist/index.js +45 -35
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +47 -35
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +114 -64
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +103 -51
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +4 -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.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
|
|
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",
|
|
@@ -552,14 +601,15 @@ function prepareToolsAndToolChoice({
|
|
|
552
601
|
if (!isNonEmptyObject(tools)) {
|
|
553
602
|
return {
|
|
554
603
|
tools: void 0,
|
|
555
|
-
|
|
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
|
-
([
|
|
609
|
+
([name5]) => activeTools.includes(name5)
|
|
560
610
|
) : Object.entries(tools);
|
|
561
611
|
return {
|
|
562
|
-
tools: filteredTools.map(([
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
811
|
-
var
|
|
812
|
-
var
|
|
813
|
-
var
|
|
814
|
-
var
|
|
815
|
-
var InvalidArgumentError = class extends
|
|
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:
|
|
872
|
+
name: name3,
|
|
823
873
|
message: `Invalid argument for parameter ${parameter}: ${message}`
|
|
824
874
|
});
|
|
825
|
-
this[
|
|
875
|
+
this[_a3] = true;
|
|
826
876
|
this.parameter = parameter;
|
|
827
877
|
this.value = value;
|
|
828
878
|
}
|
|
829
879
|
static isInstance(error) {
|
|
830
|
-
return
|
|
880
|
+
return import_provider5.AISDKError.hasMarker(error, marker3);
|
|
831
881
|
}
|
|
832
882
|
};
|
|
833
|
-
|
|
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
|
|
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
|
|
935
|
-
var
|
|
936
|
-
var
|
|
937
|
-
var
|
|
938
|
-
var
|
|
939
|
-
var RetryError = class extends
|
|
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:
|
|
946
|
-
this[
|
|
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
|
|
1002
|
+
return import_provider6.AISDKError.hasMarker(error, marker4);
|
|
953
1003
|
}
|
|
954
1004
|
};
|
|
955
|
-
|
|
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 =
|
|
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 && (
|
|
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,
|