ai 4.0.16 → 4.0.18
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 +13 -0
- package/dist/index.d.mts +48 -17
- package/dist/index.d.ts +48 -17
- package/dist/index.js +163 -80
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +157 -74
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
@@ -837,13 +837,39 @@ var DefaultGenerateImageResult = class {
|
|
837
837
|
// core/generate-object/generate-object.ts
|
838
838
|
import { createIdGenerator, safeParseJSON } from "@ai-sdk/provider-utils";
|
839
839
|
|
840
|
-
//
|
840
|
+
// errors/no-object-generated-error.ts
|
841
841
|
import { AISDKError as AISDKError3 } from "@ai-sdk/provider";
|
842
|
-
var name3 = "
|
842
|
+
var name3 = "AI_NoObjectGeneratedError";
|
843
843
|
var marker3 = `vercel.ai.error.${name3}`;
|
844
844
|
var symbol3 = Symbol.for(marker3);
|
845
845
|
var _a3;
|
846
|
-
var
|
846
|
+
var NoObjectGeneratedError = class extends AISDKError3 {
|
847
|
+
constructor({
|
848
|
+
message = "No object generated.",
|
849
|
+
cause,
|
850
|
+
text: text2,
|
851
|
+
response,
|
852
|
+
usage
|
853
|
+
}) {
|
854
|
+
super({ name: name3, message, cause });
|
855
|
+
this[_a3] = true;
|
856
|
+
this.text = text2;
|
857
|
+
this.response = response;
|
858
|
+
this.usage = usage;
|
859
|
+
}
|
860
|
+
static isInstance(error) {
|
861
|
+
return AISDKError3.hasMarker(error, marker3);
|
862
|
+
}
|
863
|
+
};
|
864
|
+
_a3 = symbol3;
|
865
|
+
|
866
|
+
// util/download-error.ts
|
867
|
+
import { AISDKError as AISDKError4 } from "@ai-sdk/provider";
|
868
|
+
var name4 = "AI_DownloadError";
|
869
|
+
var marker4 = `vercel.ai.error.${name4}`;
|
870
|
+
var symbol4 = Symbol.for(marker4);
|
871
|
+
var _a4;
|
872
|
+
var DownloadError = class extends AISDKError4 {
|
847
873
|
constructor({
|
848
874
|
url,
|
849
875
|
statusCode,
|
@@ -851,17 +877,17 @@ var DownloadError = class extends AISDKError3 {
|
|
851
877
|
cause,
|
852
878
|
message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
|
853
879
|
}) {
|
854
|
-
super({ name:
|
855
|
-
this[
|
880
|
+
super({ name: name4, message, cause });
|
881
|
+
this[_a4] = true;
|
856
882
|
this.url = url;
|
857
883
|
this.statusCode = statusCode;
|
858
884
|
this.statusText = statusText;
|
859
885
|
}
|
860
886
|
static isInstance(error) {
|
861
|
-
return
|
887
|
+
return AISDKError4.hasMarker(error, marker4);
|
862
888
|
}
|
863
889
|
};
|
864
|
-
|
890
|
+
_a4 = symbol4;
|
865
891
|
|
866
892
|
// util/download.ts
|
867
893
|
async function download({
|
@@ -914,26 +940,26 @@ import {
|
|
914
940
|
} from "@ai-sdk/provider-utils";
|
915
941
|
|
916
942
|
// core/prompt/invalid-data-content-error.ts
|
917
|
-
import { AISDKError as
|
918
|
-
var
|
919
|
-
var
|
920
|
-
var
|
921
|
-
var
|
922
|
-
var InvalidDataContentError = class extends
|
943
|
+
import { AISDKError as AISDKError5 } from "@ai-sdk/provider";
|
944
|
+
var name5 = "AI_InvalidDataContentError";
|
945
|
+
var marker5 = `vercel.ai.error.${name5}`;
|
946
|
+
var symbol5 = Symbol.for(marker5);
|
947
|
+
var _a5;
|
948
|
+
var InvalidDataContentError = class extends AISDKError5 {
|
923
949
|
constructor({
|
924
950
|
content,
|
925
951
|
cause,
|
926
952
|
message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
|
927
953
|
}) {
|
928
|
-
super({ name:
|
929
|
-
this[
|
954
|
+
super({ name: name5, message, cause });
|
955
|
+
this[_a5] = true;
|
930
956
|
this.content = content;
|
931
957
|
}
|
932
958
|
static isInstance(error) {
|
933
|
-
return
|
959
|
+
return AISDKError5.hasMarker(error, marker5);
|
934
960
|
}
|
935
961
|
};
|
936
|
-
|
962
|
+
_a5 = symbol5;
|
937
963
|
|
938
964
|
// core/prompt/data-content.ts
|
939
965
|
import { z } from "zod";
|
@@ -988,25 +1014,25 @@ function convertUint8ArrayToText(uint8Array) {
|
|
988
1014
|
}
|
989
1015
|
|
990
1016
|
// core/prompt/invalid-message-role-error.ts
|
991
|
-
import { AISDKError as
|
992
|
-
var
|
993
|
-
var
|
994
|
-
var
|
995
|
-
var
|
996
|
-
var InvalidMessageRoleError = class extends
|
1017
|
+
import { AISDKError as AISDKError6 } from "@ai-sdk/provider";
|
1018
|
+
var name6 = "AI_InvalidMessageRoleError";
|
1019
|
+
var marker6 = `vercel.ai.error.${name6}`;
|
1020
|
+
var symbol6 = Symbol.for(marker6);
|
1021
|
+
var _a6;
|
1022
|
+
var InvalidMessageRoleError = class extends AISDKError6 {
|
997
1023
|
constructor({
|
998
1024
|
role,
|
999
1025
|
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
1000
1026
|
}) {
|
1001
|
-
super({ name:
|
1002
|
-
this[
|
1027
|
+
super({ name: name6, message });
|
1028
|
+
this[_a6] = true;
|
1003
1029
|
this.role = role;
|
1004
1030
|
}
|
1005
1031
|
static isInstance(error) {
|
1006
|
-
return
|
1032
|
+
return AISDKError6.hasMarker(error, marker6);
|
1007
1033
|
}
|
1008
1034
|
};
|
1009
|
-
|
1035
|
+
_a6 = symbol6;
|
1010
1036
|
|
1011
1037
|
// core/prompt/split-data-url.ts
|
1012
1038
|
function splitDataUrl(dataUrl) {
|
@@ -1529,25 +1555,25 @@ function attachmentsToParts(attachments) {
|
|
1529
1555
|
}
|
1530
1556
|
|
1531
1557
|
// core/prompt/message-conversion-error.ts
|
1532
|
-
import { AISDKError as
|
1533
|
-
var
|
1534
|
-
var
|
1535
|
-
var
|
1536
|
-
var
|
1537
|
-
var MessageConversionError = class extends
|
1558
|
+
import { AISDKError as AISDKError7 } from "@ai-sdk/provider";
|
1559
|
+
var name7 = "AI_MessageConversionError";
|
1560
|
+
var marker7 = `vercel.ai.error.${name7}`;
|
1561
|
+
var symbol7 = Symbol.for(marker7);
|
1562
|
+
var _a7;
|
1563
|
+
var MessageConversionError = class extends AISDKError7 {
|
1538
1564
|
constructor({
|
1539
1565
|
originalMessage,
|
1540
1566
|
message
|
1541
1567
|
}) {
|
1542
|
-
super({ name:
|
1543
|
-
this[
|
1568
|
+
super({ name: name7, message });
|
1569
|
+
this[_a7] = true;
|
1544
1570
|
this.originalMessage = originalMessage;
|
1545
1571
|
}
|
1546
1572
|
static isInstance(error) {
|
1547
|
-
return
|
1573
|
+
return AISDKError7.hasMarker(error, marker7);
|
1548
1574
|
}
|
1549
1575
|
};
|
1550
|
-
|
1576
|
+
_a7 = symbol7;
|
1551
1577
|
|
1552
1578
|
// core/prompt/convert-to-core-messages.ts
|
1553
1579
|
function convertToCoreMessages(messages, options) {
|
@@ -1739,24 +1765,6 @@ function injectJsonInstruction({
|
|
1739
1765
|
].filter((line) => line != null).join("\n");
|
1740
1766
|
}
|
1741
1767
|
|
1742
|
-
// core/generate-object/no-object-generated-error.ts
|
1743
|
-
import { AISDKError as AISDKError7 } from "@ai-sdk/provider";
|
1744
|
-
var name7 = "AI_NoObjectGeneratedError";
|
1745
|
-
var marker7 = `vercel.ai.error.${name7}`;
|
1746
|
-
var symbol7 = Symbol.for(marker7);
|
1747
|
-
var _a7;
|
1748
|
-
var NoObjectGeneratedError = class extends AISDKError7 {
|
1749
|
-
// used in isInstance
|
1750
|
-
constructor({ message = "No object generated." } = {}) {
|
1751
|
-
super({ name: name7, message });
|
1752
|
-
this[_a7] = true;
|
1753
|
-
}
|
1754
|
-
static isInstance(error) {
|
1755
|
-
return AISDKError7.hasMarker(error, marker7);
|
1756
|
-
}
|
1757
|
-
};
|
1758
|
-
_a7 = symbol7;
|
1759
|
-
|
1760
1768
|
// core/generate-object/output-strategy.ts
|
1761
1769
|
import {
|
1762
1770
|
isJSONArray,
|
@@ -1791,8 +1799,16 @@ var noSchemaOutputStrategy = {
|
|
1791
1799
|
validatePartialResult({ value, textDelta }) {
|
1792
1800
|
return { success: true, value: { partial: value, textDelta } };
|
1793
1801
|
},
|
1794
|
-
validateFinalResult(value) {
|
1795
|
-
return value === void 0 ? {
|
1802
|
+
validateFinalResult(value, context) {
|
1803
|
+
return value === void 0 ? {
|
1804
|
+
success: false,
|
1805
|
+
error: new NoObjectGeneratedError({
|
1806
|
+
message: "No object generated: response did not match schema.",
|
1807
|
+
text: context.text,
|
1808
|
+
response: context.response,
|
1809
|
+
usage: context.usage
|
1810
|
+
})
|
1811
|
+
} : { success: true, value };
|
1796
1812
|
},
|
1797
1813
|
createElementStream() {
|
1798
1814
|
throw new UnsupportedFunctionalityError({
|
@@ -2271,14 +2287,18 @@ async function generateObject({
|
|
2271
2287
|
abortSignal,
|
2272
2288
|
headers
|
2273
2289
|
});
|
2274
|
-
if (result2.text === void 0) {
|
2275
|
-
throw new NoObjectGeneratedError();
|
2276
|
-
}
|
2277
2290
|
const responseData = {
|
2278
2291
|
id: (_b2 = (_a14 = result2.response) == null ? void 0 : _a14.id) != null ? _b2 : generateId3(),
|
2279
2292
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
2280
2293
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId
|
2281
2294
|
};
|
2295
|
+
if (result2.text === void 0) {
|
2296
|
+
throw new NoObjectGeneratedError({
|
2297
|
+
message: "No object generated: the model did not return a response.",
|
2298
|
+
response: responseData,
|
2299
|
+
usage: calculateLanguageModelUsage(result2.usage)
|
2300
|
+
});
|
2301
|
+
}
|
2282
2302
|
span2.setAttributes(
|
2283
2303
|
selectTelemetryAttributes({
|
2284
2304
|
telemetry,
|
@@ -2375,14 +2395,18 @@ async function generateObject({
|
|
2375
2395
|
headers
|
2376
2396
|
});
|
2377
2397
|
const objectText = (_b2 = (_a14 = result2.toolCalls) == null ? void 0 : _a14[0]) == null ? void 0 : _b2.args;
|
2378
|
-
if (objectText === void 0) {
|
2379
|
-
throw new NoObjectGeneratedError();
|
2380
|
-
}
|
2381
2398
|
const responseData = {
|
2382
2399
|
id: (_d = (_c = result2.response) == null ? void 0 : _c.id) != null ? _d : generateId3(),
|
2383
2400
|
timestamp: (_f = (_e = result2.response) == null ? void 0 : _e.timestamp) != null ? _f : currentDate(),
|
2384
2401
|
modelId: (_h = (_g = result2.response) == null ? void 0 : _g.modelId) != null ? _h : model.modelId
|
2385
2402
|
};
|
2403
|
+
if (objectText === void 0) {
|
2404
|
+
throw new NoObjectGeneratedError({
|
2405
|
+
message: "No object generated: the tool was not called.",
|
2406
|
+
response: responseData,
|
2407
|
+
usage: calculateLanguageModelUsage(result2.usage)
|
2408
|
+
});
|
2409
|
+
}
|
2386
2410
|
span2.setAttributes(
|
2387
2411
|
selectTelemetryAttributes({
|
2388
2412
|
telemetry,
|
@@ -2430,13 +2454,30 @@ async function generateObject({
|
|
2430
2454
|
}
|
2431
2455
|
const parseResult = safeParseJSON({ text: result });
|
2432
2456
|
if (!parseResult.success) {
|
2433
|
-
throw
|
2457
|
+
throw new NoObjectGeneratedError({
|
2458
|
+
message: "No object generated: could not parse the response.",
|
2459
|
+
cause: parseResult.error,
|
2460
|
+
text: result,
|
2461
|
+
response,
|
2462
|
+
usage: calculateLanguageModelUsage(usage)
|
2463
|
+
});
|
2434
2464
|
}
|
2435
2465
|
const validationResult = outputStrategy.validateFinalResult(
|
2436
|
-
parseResult.value
|
2466
|
+
parseResult.value,
|
2467
|
+
{
|
2468
|
+
text: result,
|
2469
|
+
response,
|
2470
|
+
usage: calculateLanguageModelUsage(usage)
|
2471
|
+
}
|
2437
2472
|
);
|
2438
2473
|
if (!validationResult.success) {
|
2439
|
-
throw
|
2474
|
+
throw new NoObjectGeneratedError({
|
2475
|
+
message: "No object generated: response did not match schema.",
|
2476
|
+
cause: validationResult.error,
|
2477
|
+
text: result,
|
2478
|
+
response,
|
2479
|
+
usage: calculateLanguageModelUsage(usage)
|
2480
|
+
});
|
2440
2481
|
}
|
2441
2482
|
span.setAttributes(
|
2442
2483
|
selectTelemetryAttributes({
|
@@ -2974,12 +3015,25 @@ var DefaultStreamObjectResult = class {
|
|
2974
3015
|
...response,
|
2975
3016
|
headers: rawResponse == null ? void 0 : rawResponse.headers
|
2976
3017
|
});
|
2977
|
-
const validationResult = outputStrategy.validateFinalResult(
|
3018
|
+
const validationResult = outputStrategy.validateFinalResult(
|
3019
|
+
latestObjectJson,
|
3020
|
+
{
|
3021
|
+
text: accumulatedText,
|
3022
|
+
response,
|
3023
|
+
usage
|
3024
|
+
}
|
3025
|
+
);
|
2978
3026
|
if (validationResult.success) {
|
2979
3027
|
object2 = validationResult.value;
|
2980
3028
|
self.objectPromise.resolve(object2);
|
2981
3029
|
} else {
|
2982
|
-
error =
|
3030
|
+
error = new NoObjectGeneratedError({
|
3031
|
+
message: "No object generated: response did not match schema.",
|
3032
|
+
cause: validationResult.error,
|
3033
|
+
text: accumulatedText,
|
3034
|
+
response,
|
3035
|
+
usage
|
3036
|
+
});
|
2983
3037
|
self.objectPromise.reject(error);
|
2984
3038
|
}
|
2985
3039
|
break;
|
@@ -3737,7 +3791,13 @@ async function generateText({
|
|
3737
3791
|
);
|
3738
3792
|
return new DefaultGenerateTextResult({
|
3739
3793
|
text: text2,
|
3740
|
-
output: output == null ? void 0 : output.parseOutput(
|
3794
|
+
output: output == null ? void 0 : output.parseOutput(
|
3795
|
+
{ text: text2 },
|
3796
|
+
{
|
3797
|
+
response: currentModelResponse.response,
|
3798
|
+
usage
|
3799
|
+
}
|
3800
|
+
),
|
3741
3801
|
toolCalls: currentToolCalls,
|
3742
3802
|
toolResults: currentToolResults,
|
3743
3803
|
finishReason: currentModelResponse.finishReason,
|
@@ -3852,7 +3912,7 @@ __export(output_exports, {
|
|
3852
3912
|
object: () => object,
|
3853
3913
|
text: () => text
|
3854
3914
|
});
|
3855
|
-
import {
|
3915
|
+
import { safeParseJSON as safeParseJSON3, safeValidateTypes as safeValidateTypes4 } from "@ai-sdk/provider-utils";
|
3856
3916
|
import { asSchema as asSchema4 } from "@ai-sdk/ui-utils";
|
3857
3917
|
var text = () => ({
|
3858
3918
|
type: "text",
|
@@ -3880,8 +3940,31 @@ var object = ({
|
|
3880
3940
|
schema: schema.jsonSchema
|
3881
3941
|
});
|
3882
3942
|
},
|
3883
|
-
parseOutput({ text: text2 }) {
|
3884
|
-
|
3943
|
+
parseOutput({ text: text2 }, context) {
|
3944
|
+
const parseResult = safeParseJSON3({ text: text2 });
|
3945
|
+
if (!parseResult.success) {
|
3946
|
+
throw new NoObjectGeneratedError({
|
3947
|
+
message: "No object generated: could not parse the response.",
|
3948
|
+
cause: parseResult.error,
|
3949
|
+
text: text2,
|
3950
|
+
response: context.response,
|
3951
|
+
usage: context.usage
|
3952
|
+
});
|
3953
|
+
}
|
3954
|
+
const validationResult = safeValidateTypes4({
|
3955
|
+
value: parseResult.value,
|
3956
|
+
schema
|
3957
|
+
});
|
3958
|
+
if (!validationResult.success) {
|
3959
|
+
throw new NoObjectGeneratedError({
|
3960
|
+
message: "No object generated: response did not match schema.",
|
3961
|
+
cause: validationResult.error,
|
3962
|
+
text: text2,
|
3963
|
+
response: context.response,
|
3964
|
+
usage: context.usage
|
3965
|
+
});
|
3966
|
+
}
|
3967
|
+
return validationResult.value;
|
3885
3968
|
}
|
3886
3969
|
};
|
3887
3970
|
};
|
@@ -4228,7 +4311,7 @@ function streamText({
|
|
4228
4311
|
tools,
|
4229
4312
|
toolChoice,
|
4230
4313
|
toolCallStreaming,
|
4231
|
-
transform,
|
4314
|
+
transform: transform == null ? void 0 : transform({ tools }),
|
4232
4315
|
activeTools,
|
4233
4316
|
repairToolCall,
|
4234
4317
|
maxSteps,
|
@@ -5010,7 +5093,7 @@ function smoothStream({
|
|
5010
5093
|
_internal: { delay: delay2 = delay } = {}
|
5011
5094
|
} = {}) {
|
5012
5095
|
let buffer = "";
|
5013
|
-
return new TransformStream({
|
5096
|
+
return () => new TransformStream({
|
5014
5097
|
async transform(chunk, controller) {
|
5015
5098
|
if (chunk.type === "step-finish") {
|
5016
5099
|
if (buffer.length > 0) {
|