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.mjs
CHANGED
|
@@ -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.
|
|
147
|
+
var VERSION = true ? "5.0.286" : "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
|
|
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: (
|
|
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.
|
|
228
|
-
z.
|
|
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
|
|
233
|
-
return (_b = (
|
|
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
|
|
240
|
-
return {
|
|
263
|
+
if (isUint8Array(content)) {
|
|
264
|
+
return {
|
|
265
|
+
data: convertDataContentToUint8Array(content),
|
|
266
|
+
mediaType: void 0
|
|
267
|
+
};
|
|
241
268
|
}
|
|
242
|
-
if (content
|
|
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
|
|
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
|
|
268
|
-
var
|
|
269
|
-
var
|
|
270
|
-
var
|
|
271
|
-
var
|
|
272
|
-
var InvalidMessageRoleError = class extends
|
|
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[
|
|
328
|
+
super({ name: name2, message });
|
|
329
|
+
this[_a2] = true;
|
|
279
330
|
this.role = role;
|
|
280
331
|
}
|
|
281
332
|
static isInstance(error) {
|
|
282
|
-
return
|
|
333
|
+
return AISDKError3.hasMarker(error, marker2);
|
|
283
334
|
}
|
|
284
335
|
};
|
|
285
|
-
|
|
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
|
|
426
|
-
const mediaType = (
|
|
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
|
|
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 = (
|
|
545
|
+
mediaType = (_a5 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a5 : mediaType;
|
|
495
546
|
}
|
|
496
547
|
return {
|
|
497
548
|
type: "file",
|
|
@@ -536,14 +587,15 @@ function prepareToolsAndToolChoice({
|
|
|
536
587
|
if (!isNonEmptyObject(tools)) {
|
|
537
588
|
return {
|
|
538
589
|
tools: void 0,
|
|
539
|
-
|
|
590
|
+
// Providers can configure native tools without SDK tools.
|
|
591
|
+
toolChoice: toolChoice === "none" ? { type: "none" } : void 0
|
|
540
592
|
};
|
|
541
593
|
}
|
|
542
594
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
|
543
|
-
([
|
|
595
|
+
([name5]) => activeTools.includes(name5)
|
|
544
596
|
) : Object.entries(tools);
|
|
545
597
|
return {
|
|
546
|
-
tools: filteredTools.map(([
|
|
598
|
+
tools: filteredTools.map(([name5, tool]) => {
|
|
547
599
|
const toolType = tool.type;
|
|
548
600
|
switch (toolType) {
|
|
549
601
|
case void 0:
|
|
@@ -551,7 +603,7 @@ function prepareToolsAndToolChoice({
|
|
|
551
603
|
case "function":
|
|
552
604
|
return {
|
|
553
605
|
type: "function",
|
|
554
|
-
name:
|
|
606
|
+
name: name5,
|
|
555
607
|
description: tool.description,
|
|
556
608
|
inputSchema: asSchema(tool.inputSchema).jsonSchema,
|
|
557
609
|
providerOptions: tool.providerOptions
|
|
@@ -559,7 +611,7 @@ function prepareToolsAndToolChoice({
|
|
|
559
611
|
case "provider-defined":
|
|
560
612
|
return {
|
|
561
613
|
type: "provider-defined",
|
|
562
|
-
name:
|
|
614
|
+
name: name5,
|
|
563
615
|
id: tool.id,
|
|
564
616
|
args: tool.args
|
|
565
617
|
};
|
|
@@ -791,30 +843,30 @@ async function standardizePrompt({
|
|
|
791
843
|
}
|
|
792
844
|
|
|
793
845
|
// src/error/invalid-argument-error.ts
|
|
794
|
-
import { AISDKError as
|
|
795
|
-
var
|
|
796
|
-
var
|
|
797
|
-
var
|
|
798
|
-
var
|
|
799
|
-
var InvalidArgumentError = class extends
|
|
846
|
+
import { AISDKError as AISDKError4 } from "@ai-sdk/provider";
|
|
847
|
+
var name3 = "AI_InvalidArgumentError";
|
|
848
|
+
var marker3 = `vercel.ai.error.${name3}`;
|
|
849
|
+
var symbol3 = Symbol.for(marker3);
|
|
850
|
+
var _a3;
|
|
851
|
+
var InvalidArgumentError = class extends AISDKError4 {
|
|
800
852
|
constructor({
|
|
801
853
|
parameter,
|
|
802
854
|
value,
|
|
803
855
|
message
|
|
804
856
|
}) {
|
|
805
857
|
super({
|
|
806
|
-
name:
|
|
858
|
+
name: name3,
|
|
807
859
|
message: `Invalid argument for parameter ${parameter}: ${message}`
|
|
808
860
|
});
|
|
809
|
-
this[
|
|
861
|
+
this[_a3] = true;
|
|
810
862
|
this.parameter = parameter;
|
|
811
863
|
this.value = value;
|
|
812
864
|
}
|
|
813
865
|
static isInstance(error) {
|
|
814
|
-
return
|
|
866
|
+
return AISDKError4.hasMarker(error, marker3);
|
|
815
867
|
}
|
|
816
868
|
};
|
|
817
|
-
|
|
869
|
+
_a3 = symbol3;
|
|
818
870
|
|
|
819
871
|
// src/prompt/prepare-call-settings.ts
|
|
820
872
|
function prepareCallSettings({
|
|
@@ -915,28 +967,28 @@ import { GatewayError } from "@ai-sdk/gateway";
|
|
|
915
967
|
import { delay, getErrorMessage, isAbortError } from "@ai-sdk/provider-utils";
|
|
916
968
|
|
|
917
969
|
// src/util/retry-error.ts
|
|
918
|
-
import { AISDKError as
|
|
919
|
-
var
|
|
920
|
-
var
|
|
921
|
-
var
|
|
922
|
-
var
|
|
923
|
-
var RetryError = class extends
|
|
970
|
+
import { AISDKError as AISDKError5 } from "@ai-sdk/provider";
|
|
971
|
+
var name4 = "AI_RetryError";
|
|
972
|
+
var marker4 = `vercel.ai.error.${name4}`;
|
|
973
|
+
var symbol4 = Symbol.for(marker4);
|
|
974
|
+
var _a4;
|
|
975
|
+
var RetryError = class extends AISDKError5 {
|
|
924
976
|
constructor({
|
|
925
977
|
message,
|
|
926
978
|
reason,
|
|
927
979
|
errors
|
|
928
980
|
}) {
|
|
929
|
-
super({ name:
|
|
930
|
-
this[
|
|
981
|
+
super({ name: name4, message });
|
|
982
|
+
this[_a4] = true;
|
|
931
983
|
this.reason = reason;
|
|
932
984
|
this.errors = errors;
|
|
933
985
|
this.lastError = errors[errors.length - 1];
|
|
934
986
|
}
|
|
935
987
|
static isInstance(error) {
|
|
936
|
-
return
|
|
988
|
+
return AISDKError5.hasMarker(error, marker4);
|
|
937
989
|
}
|
|
938
990
|
};
|
|
939
|
-
|
|
991
|
+
_a4 = symbol4;
|
|
940
992
|
|
|
941
993
|
// src/util/retry-with-exponential-backoff.ts
|
|
942
994
|
function getRetryDelayInMs({
|