ai 6.0.0-beta.157 → 6.0.0-beta.160
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 +27 -0
- package/dist/index.d.mts +41 -42
- package/dist/index.d.ts +41 -42
- package/dist/index.js +463 -431
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +255 -221
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +75 -100
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +46 -71
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +4 -4
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 name4 in all)
|
|
8
|
+
__defProp(target, name4, { get: all[name4], enumerable: true });
|
|
9
9
|
};
|
|
10
10
|
var __copyProps = (to, from, except, desc) => {
|
|
11
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -21,7 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var internal_exports = {};
|
|
22
22
|
__export(internal_exports, {
|
|
23
23
|
asLanguageModelUsage: () => asLanguageModelUsage,
|
|
24
|
-
convertAsyncIteratorToReadableStream: () =>
|
|
24
|
+
convertAsyncIteratorToReadableStream: () => import_provider_utils9.convertAsyncIteratorToReadableStream,
|
|
25
25
|
convertToLanguageModelPrompt: () => convertToLanguageModelPrompt,
|
|
26
26
|
prepareCallSettings: () => prepareCallSettings,
|
|
27
27
|
prepareRetries: () => prepareRetries,
|
|
@@ -29,10 +29,10 @@ __export(internal_exports, {
|
|
|
29
29
|
standardizePrompt: () => standardizePrompt
|
|
30
30
|
});
|
|
31
31
|
module.exports = __toCommonJS(internal_exports);
|
|
32
|
-
var
|
|
32
|
+
var import_provider_utils9 = require("@ai-sdk/provider-utils");
|
|
33
33
|
|
|
34
34
|
// src/prompt/convert-to-language-model-prompt.ts
|
|
35
|
-
var
|
|
35
|
+
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
|
36
36
|
|
|
37
37
|
// src/util/detect-media-type.ts
|
|
38
38
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
@@ -148,52 +148,27 @@ function detectMediaType({
|
|
|
148
148
|
return void 0;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
// src/util/download/download-error.ts
|
|
152
|
-
var import_provider = require("@ai-sdk/provider");
|
|
153
|
-
var name = "AI_DownloadError";
|
|
154
|
-
var marker = `vercel.ai.error.${name}`;
|
|
155
|
-
var symbol = Symbol.for(marker);
|
|
156
|
-
var _a;
|
|
157
|
-
var DownloadError = class extends import_provider.AISDKError {
|
|
158
|
-
constructor({
|
|
159
|
-
url,
|
|
160
|
-
statusCode,
|
|
161
|
-
statusText,
|
|
162
|
-
cause,
|
|
163
|
-
message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
|
|
164
|
-
}) {
|
|
165
|
-
super({ name, message, cause });
|
|
166
|
-
this[_a] = true;
|
|
167
|
-
this.url = url;
|
|
168
|
-
this.statusCode = statusCode;
|
|
169
|
-
this.statusText = statusText;
|
|
170
|
-
}
|
|
171
|
-
static isInstance(error) {
|
|
172
|
-
return import_provider.AISDKError.hasMarker(error, marker);
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
_a = symbol;
|
|
176
|
-
|
|
177
151
|
// src/util/download/download.ts
|
|
178
152
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
153
|
+
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
179
154
|
|
|
180
155
|
// src/version.ts
|
|
181
|
-
var VERSION = true ? "6.0.0-beta.
|
|
156
|
+
var VERSION = true ? "6.0.0-beta.160" : "0.0.0-test";
|
|
182
157
|
|
|
183
158
|
// src/util/download/download.ts
|
|
184
159
|
var download = async ({ url }) => {
|
|
185
|
-
var
|
|
160
|
+
var _a4;
|
|
186
161
|
const urlText = url.toString();
|
|
187
162
|
try {
|
|
188
163
|
const response = await fetch(urlText, {
|
|
189
|
-
headers: (0,
|
|
164
|
+
headers: (0, import_provider_utils3.withUserAgentSuffix)(
|
|
190
165
|
{},
|
|
191
166
|
`ai-sdk/${VERSION}`,
|
|
192
|
-
(0,
|
|
167
|
+
(0, import_provider_utils3.getRuntimeEnvironmentUserAgent)()
|
|
193
168
|
)
|
|
194
169
|
});
|
|
195
170
|
if (!response.ok) {
|
|
196
|
-
throw new DownloadError({
|
|
171
|
+
throw new import_provider_utils2.DownloadError({
|
|
197
172
|
url: urlText,
|
|
198
173
|
statusCode: response.status,
|
|
199
174
|
statusText: response.statusText
|
|
@@ -201,13 +176,13 @@ var download = async ({ url }) => {
|
|
|
201
176
|
}
|
|
202
177
|
return {
|
|
203
178
|
data: new Uint8Array(await response.arrayBuffer()),
|
|
204
|
-
mediaType: (
|
|
179
|
+
mediaType: (_a4 = response.headers.get("content-type")) != null ? _a4 : void 0
|
|
205
180
|
};
|
|
206
181
|
} catch (error) {
|
|
207
|
-
if (DownloadError.isInstance(error)) {
|
|
182
|
+
if (import_provider_utils2.DownloadError.isInstance(error)) {
|
|
208
183
|
throw error;
|
|
209
184
|
}
|
|
210
|
-
throw new DownloadError({ url: urlText, cause: error });
|
|
185
|
+
throw new import_provider_utils2.DownloadError({ url: urlText, cause: error });
|
|
211
186
|
}
|
|
212
187
|
};
|
|
213
188
|
|
|
@@ -219,8 +194,8 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
|
|
|
219
194
|
);
|
|
220
195
|
|
|
221
196
|
// src/prompt/data-content.ts
|
|
222
|
-
var
|
|
223
|
-
var
|
|
197
|
+
var import_provider = require("@ai-sdk/provider");
|
|
198
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
224
199
|
var import_v4 = require("zod/v4");
|
|
225
200
|
|
|
226
201
|
// src/prompt/split-data-url.ts
|
|
@@ -247,8 +222,8 @@ var dataContentSchema = import_v4.z.union([
|
|
|
247
222
|
import_v4.z.custom(
|
|
248
223
|
// Buffer might not be available in some environments such as CloudFlare:
|
|
249
224
|
(value) => {
|
|
250
|
-
var
|
|
251
|
-
return (_b = (
|
|
225
|
+
var _a4, _b;
|
|
226
|
+
return (_b = (_a4 = globalThis.Buffer) == null ? void 0 : _a4.isBuffer(value)) != null ? _b : false;
|
|
252
227
|
},
|
|
253
228
|
{ message: "Must be a Buffer" }
|
|
254
229
|
)
|
|
@@ -271,7 +246,7 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
271
246
|
content.toString()
|
|
272
247
|
);
|
|
273
248
|
if (dataUrlMediaType == null || base64Content == null) {
|
|
274
|
-
throw new
|
|
249
|
+
throw new import_provider.AISDKError({
|
|
275
250
|
name: "InvalidDataContentError",
|
|
276
251
|
message: `Invalid data URL format in content ${content.toString()}`
|
|
277
252
|
});
|
|
@@ -282,25 +257,25 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
282
257
|
}
|
|
283
258
|
|
|
284
259
|
// src/prompt/invalid-message-role-error.ts
|
|
285
|
-
var
|
|
286
|
-
var
|
|
287
|
-
var
|
|
288
|
-
var
|
|
289
|
-
var
|
|
290
|
-
var InvalidMessageRoleError = class extends
|
|
260
|
+
var import_provider2 = require("@ai-sdk/provider");
|
|
261
|
+
var name = "AI_InvalidMessageRoleError";
|
|
262
|
+
var marker = `vercel.ai.error.${name}`;
|
|
263
|
+
var symbol = Symbol.for(marker);
|
|
264
|
+
var _a;
|
|
265
|
+
var InvalidMessageRoleError = class extends import_provider2.AISDKError {
|
|
291
266
|
constructor({
|
|
292
267
|
role,
|
|
293
268
|
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
|
294
269
|
}) {
|
|
295
|
-
super({ name
|
|
296
|
-
this[
|
|
270
|
+
super({ name, message });
|
|
271
|
+
this[_a] = true;
|
|
297
272
|
this.role = role;
|
|
298
273
|
}
|
|
299
274
|
static isInstance(error) {
|
|
300
|
-
return
|
|
275
|
+
return import_provider2.AISDKError.hasMarker(error, marker);
|
|
301
276
|
}
|
|
302
277
|
};
|
|
303
|
-
|
|
278
|
+
_a = symbol;
|
|
304
279
|
|
|
305
280
|
// src/util/as-array.ts
|
|
306
281
|
function asArray(value) {
|
|
@@ -463,8 +438,8 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
463
438
|
).flat().filter(
|
|
464
439
|
(part) => part.type === "image" || part.type === "file"
|
|
465
440
|
).map((part) => {
|
|
466
|
-
var
|
|
467
|
-
const mediaType = (
|
|
441
|
+
var _a4;
|
|
442
|
+
const mediaType = (_a4 = part.mediaType) != null ? _a4 : part.type === "image" ? "image/*" : void 0;
|
|
468
443
|
let data = part.type === "image" ? part.image : part.data;
|
|
469
444
|
if (typeof data === "string") {
|
|
470
445
|
try {
|
|
@@ -477,7 +452,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
477
452
|
(part) => part.data instanceof URL
|
|
478
453
|
).map((part) => ({
|
|
479
454
|
url: part.data,
|
|
480
|
-
isUrlSupportedByModel: part.mediaType != null && (0,
|
|
455
|
+
isUrlSupportedByModel: part.mediaType != null && (0, import_provider_utils5.isUrlSupported)({
|
|
481
456
|
url: part.data.toString(),
|
|
482
457
|
mediaType: part.mediaType,
|
|
483
458
|
supportedUrls
|
|
@@ -494,7 +469,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
494
469
|
);
|
|
495
470
|
}
|
|
496
471
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
497
|
-
var
|
|
472
|
+
var _a4;
|
|
498
473
|
if (part.type === "text") {
|
|
499
474
|
return {
|
|
500
475
|
type: "text",
|
|
@@ -527,7 +502,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
527
502
|
switch (type) {
|
|
528
503
|
case "image": {
|
|
529
504
|
if (data instanceof Uint8Array || typeof data === "string") {
|
|
530
|
-
mediaType = (
|
|
505
|
+
mediaType = (_a4 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a4 : mediaType;
|
|
531
506
|
}
|
|
532
507
|
return {
|
|
533
508
|
type: "file",
|
|
@@ -579,7 +554,7 @@ function mapToolResultOutput(output) {
|
|
|
579
554
|
}
|
|
580
555
|
|
|
581
556
|
// src/prompt/prepare-tools-and-tool-choice.ts
|
|
582
|
-
var
|
|
557
|
+
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
|
583
558
|
|
|
584
559
|
// src/util/is-non-empty-object.ts
|
|
585
560
|
function isNonEmptyObject(object) {
|
|
@@ -599,10 +574,10 @@ async function prepareToolsAndToolChoice({
|
|
|
599
574
|
};
|
|
600
575
|
}
|
|
601
576
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
|
602
|
-
([
|
|
577
|
+
([name4]) => activeTools.includes(name4)
|
|
603
578
|
) : Object.entries(tools);
|
|
604
579
|
const languageModelTools = [];
|
|
605
|
-
for (const [
|
|
580
|
+
for (const [name4, tool] of filteredTools) {
|
|
606
581
|
const toolType = tool.type;
|
|
607
582
|
switch (toolType) {
|
|
608
583
|
case void 0:
|
|
@@ -610,9 +585,9 @@ async function prepareToolsAndToolChoice({
|
|
|
610
585
|
case "function":
|
|
611
586
|
languageModelTools.push({
|
|
612
587
|
type: "function",
|
|
613
|
-
name:
|
|
588
|
+
name: name4,
|
|
614
589
|
description: tool.description,
|
|
615
|
-
inputSchema: await (0,
|
|
590
|
+
inputSchema: await (0, import_provider_utils6.asSchema)(tool.inputSchema).jsonSchema,
|
|
616
591
|
...tool.inputExamples != null ? { inputExamples: tool.inputExamples } : {},
|
|
617
592
|
providerOptions: tool.providerOptions,
|
|
618
593
|
...tool.strict != null ? { strict: tool.strict } : {}
|
|
@@ -621,7 +596,7 @@ async function prepareToolsAndToolChoice({
|
|
|
621
596
|
case "provider":
|
|
622
597
|
languageModelTools.push({
|
|
623
598
|
type: "provider",
|
|
624
|
-
name:
|
|
599
|
+
name: name4,
|
|
625
600
|
id: tool.id,
|
|
626
601
|
args: tool.args
|
|
627
602
|
});
|
|
@@ -639,8 +614,8 @@ async function prepareToolsAndToolChoice({
|
|
|
639
614
|
}
|
|
640
615
|
|
|
641
616
|
// src/prompt/standardize-prompt.ts
|
|
642
|
-
var
|
|
643
|
-
var
|
|
617
|
+
var import_provider3 = require("@ai-sdk/provider");
|
|
618
|
+
var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
|
644
619
|
var import_v46 = require("zod/v4");
|
|
645
620
|
|
|
646
621
|
// src/prompt/message.ts
|
|
@@ -852,13 +827,13 @@ var modelMessageSchema = import_v45.z.union([
|
|
|
852
827
|
// src/prompt/standardize-prompt.ts
|
|
853
828
|
async function standardizePrompt(prompt) {
|
|
854
829
|
if (prompt.prompt == null && prompt.messages == null) {
|
|
855
|
-
throw new
|
|
830
|
+
throw new import_provider3.InvalidPromptError({
|
|
856
831
|
prompt,
|
|
857
832
|
message: "prompt or messages must be defined"
|
|
858
833
|
});
|
|
859
834
|
}
|
|
860
835
|
if (prompt.prompt != null && prompt.messages != null) {
|
|
861
|
-
throw new
|
|
836
|
+
throw new import_provider3.InvalidPromptError({
|
|
862
837
|
prompt,
|
|
863
838
|
message: "prompt and messages cannot be defined at the same time"
|
|
864
839
|
});
|
|
@@ -866,7 +841,7 @@ async function standardizePrompt(prompt) {
|
|
|
866
841
|
if (prompt.system != null && typeof prompt.system !== "string" && !asArray(prompt.system).every(
|
|
867
842
|
(message) => typeof message === "object" && message !== null && "role" in message && message.role === "system"
|
|
868
843
|
)) {
|
|
869
|
-
throw new
|
|
844
|
+
throw new import_provider3.InvalidPromptError({
|
|
870
845
|
prompt,
|
|
871
846
|
message: "system must be a string, SystemModelMessage, or array of SystemModelMessage"
|
|
872
847
|
});
|
|
@@ -879,23 +854,23 @@ async function standardizePrompt(prompt) {
|
|
|
879
854
|
} else if (prompt.messages != null) {
|
|
880
855
|
messages = prompt.messages;
|
|
881
856
|
} else {
|
|
882
|
-
throw new
|
|
857
|
+
throw new import_provider3.InvalidPromptError({
|
|
883
858
|
prompt,
|
|
884
859
|
message: "prompt or messages must be defined"
|
|
885
860
|
});
|
|
886
861
|
}
|
|
887
862
|
if (messages.length === 0) {
|
|
888
|
-
throw new
|
|
863
|
+
throw new import_provider3.InvalidPromptError({
|
|
889
864
|
prompt,
|
|
890
865
|
message: "messages must not be empty"
|
|
891
866
|
});
|
|
892
867
|
}
|
|
893
|
-
const validationResult = await (0,
|
|
868
|
+
const validationResult = await (0, import_provider_utils7.safeValidateTypes)({
|
|
894
869
|
value: messages,
|
|
895
870
|
schema: import_v46.z.array(modelMessageSchema)
|
|
896
871
|
});
|
|
897
872
|
if (!validationResult.success) {
|
|
898
|
-
throw new
|
|
873
|
+
throw new import_provider3.InvalidPromptError({
|
|
899
874
|
prompt,
|
|
900
875
|
message: "The messages do not match the ModelMessage[] schema.",
|
|
901
876
|
cause: validationResult.error
|
|
@@ -908,30 +883,30 @@ async function standardizePrompt(prompt) {
|
|
|
908
883
|
}
|
|
909
884
|
|
|
910
885
|
// src/error/invalid-argument-error.ts
|
|
911
|
-
var
|
|
912
|
-
var
|
|
913
|
-
var
|
|
914
|
-
var
|
|
915
|
-
var
|
|
916
|
-
var InvalidArgumentError = class extends
|
|
886
|
+
var import_provider4 = require("@ai-sdk/provider");
|
|
887
|
+
var name2 = "AI_InvalidArgumentError";
|
|
888
|
+
var marker2 = `vercel.ai.error.${name2}`;
|
|
889
|
+
var symbol2 = Symbol.for(marker2);
|
|
890
|
+
var _a2;
|
|
891
|
+
var InvalidArgumentError = class extends import_provider4.AISDKError {
|
|
917
892
|
constructor({
|
|
918
893
|
parameter,
|
|
919
894
|
value,
|
|
920
895
|
message
|
|
921
896
|
}) {
|
|
922
897
|
super({
|
|
923
|
-
name:
|
|
898
|
+
name: name2,
|
|
924
899
|
message: `Invalid argument for parameter ${parameter}: ${message}`
|
|
925
900
|
});
|
|
926
|
-
this[
|
|
901
|
+
this[_a2] = true;
|
|
927
902
|
this.parameter = parameter;
|
|
928
903
|
this.value = value;
|
|
929
904
|
}
|
|
930
905
|
static isInstance(error) {
|
|
931
|
-
return
|
|
906
|
+
return import_provider4.AISDKError.hasMarker(error, marker2);
|
|
932
907
|
}
|
|
933
908
|
};
|
|
934
|
-
|
|
909
|
+
_a2 = symbol2;
|
|
935
910
|
|
|
936
911
|
// src/prompt/prepare-call-settings.ts
|
|
937
912
|
function prepareCallSettings({
|
|
@@ -1027,32 +1002,32 @@ function prepareCallSettings({
|
|
|
1027
1002
|
}
|
|
1028
1003
|
|
|
1029
1004
|
// src/util/retry-with-exponential-backoff.ts
|
|
1030
|
-
var
|
|
1031
|
-
var
|
|
1005
|
+
var import_provider6 = require("@ai-sdk/provider");
|
|
1006
|
+
var import_provider_utils8 = require("@ai-sdk/provider-utils");
|
|
1032
1007
|
|
|
1033
1008
|
// src/util/retry-error.ts
|
|
1034
|
-
var
|
|
1035
|
-
var
|
|
1036
|
-
var
|
|
1037
|
-
var
|
|
1038
|
-
var
|
|
1039
|
-
var RetryError = class extends
|
|
1009
|
+
var import_provider5 = require("@ai-sdk/provider");
|
|
1010
|
+
var name3 = "AI_RetryError";
|
|
1011
|
+
var marker3 = `vercel.ai.error.${name3}`;
|
|
1012
|
+
var symbol3 = Symbol.for(marker3);
|
|
1013
|
+
var _a3;
|
|
1014
|
+
var RetryError = class extends import_provider5.AISDKError {
|
|
1040
1015
|
constructor({
|
|
1041
1016
|
message,
|
|
1042
1017
|
reason,
|
|
1043
1018
|
errors
|
|
1044
1019
|
}) {
|
|
1045
|
-
super({ name:
|
|
1046
|
-
this[
|
|
1020
|
+
super({ name: name3, message });
|
|
1021
|
+
this[_a3] = true;
|
|
1047
1022
|
this.reason = reason;
|
|
1048
1023
|
this.errors = errors;
|
|
1049
1024
|
this.lastError = errors[errors.length - 1];
|
|
1050
1025
|
}
|
|
1051
1026
|
static isInstance(error) {
|
|
1052
|
-
return
|
|
1027
|
+
return import_provider5.AISDKError.hasMarker(error, marker3);
|
|
1053
1028
|
}
|
|
1054
1029
|
};
|
|
1055
|
-
|
|
1030
|
+
_a3 = symbol3;
|
|
1056
1031
|
|
|
1057
1032
|
// src/util/retry-with-exponential-backoff.ts
|
|
1058
1033
|
function getRetryDelayInMs({
|
|
@@ -1104,13 +1079,13 @@ async function _retryWithExponentialBackoff(f, {
|
|
|
1104
1079
|
try {
|
|
1105
1080
|
return await f();
|
|
1106
1081
|
} catch (error) {
|
|
1107
|
-
if ((0,
|
|
1082
|
+
if ((0, import_provider_utils8.isAbortError)(error)) {
|
|
1108
1083
|
throw error;
|
|
1109
1084
|
}
|
|
1110
1085
|
if (maxRetries === 0) {
|
|
1111
1086
|
throw error;
|
|
1112
1087
|
}
|
|
1113
|
-
const errorMessage = (0,
|
|
1088
|
+
const errorMessage = (0, import_provider_utils8.getErrorMessage)(error);
|
|
1114
1089
|
const newErrors = [...errors, error];
|
|
1115
1090
|
const tryNumber = newErrors.length;
|
|
1116
1091
|
if (tryNumber > maxRetries) {
|
|
@@ -1120,8 +1095,8 @@ async function _retryWithExponentialBackoff(f, {
|
|
|
1120
1095
|
errors: newErrors
|
|
1121
1096
|
});
|
|
1122
1097
|
}
|
|
1123
|
-
if (error instanceof Error &&
|
|
1124
|
-
await (0,
|
|
1098
|
+
if (error instanceof Error && import_provider6.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
|
|
1099
|
+
await (0, import_provider_utils8.delay)(
|
|
1125
1100
|
getRetryDelayInMs({
|
|
1126
1101
|
error,
|
|
1127
1102
|
exponentialBackoffDelay: delayInMs
|