ai 4.0.12 → 4.0.14
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 +17 -0
- package/dist/index.d.mts +162 -29
- package/dist/index.d.ts +162 -29
- package/dist/index.js +318 -199
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +265 -148
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
- package/test/dist/index.js +7 -8
- package/test/dist/index.js.map +1 -1
- package/test/dist/index.mjs +7 -8
- package/test/dist/index.mjs.map +1 -1
package/dist/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 name13 in all)
|
8
|
+
__defProp(target, name13, { get: all[name13], enumerable: true });
|
9
9
|
};
|
10
10
|
var __copyProps = (to, from, except, desc) => {
|
11
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
@@ -20,33 +20,34 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
20
20
|
// streams/index.ts
|
21
21
|
var streams_exports = {};
|
22
22
|
__export(streams_exports, {
|
23
|
-
AISDKError: () =>
|
24
|
-
APICallError: () =>
|
23
|
+
AISDKError: () => import_provider15.AISDKError,
|
24
|
+
APICallError: () => import_provider15.APICallError,
|
25
25
|
AssistantResponse: () => AssistantResponse,
|
26
26
|
DownloadError: () => DownloadError,
|
27
|
-
EmptyResponseBodyError: () =>
|
27
|
+
EmptyResponseBodyError: () => import_provider15.EmptyResponseBodyError,
|
28
28
|
InvalidArgumentError: () => InvalidArgumentError,
|
29
29
|
InvalidDataContentError: () => InvalidDataContentError,
|
30
30
|
InvalidMessageRoleError: () => InvalidMessageRoleError,
|
31
|
-
InvalidPromptError: () =>
|
32
|
-
InvalidResponseDataError: () =>
|
31
|
+
InvalidPromptError: () => import_provider15.InvalidPromptError,
|
32
|
+
InvalidResponseDataError: () => import_provider15.InvalidResponseDataError,
|
33
33
|
InvalidToolArgumentsError: () => InvalidToolArgumentsError,
|
34
|
-
JSONParseError: () =>
|
34
|
+
JSONParseError: () => import_provider15.JSONParseError,
|
35
35
|
LangChainAdapter: () => langchain_adapter_exports,
|
36
36
|
LlamaIndexAdapter: () => llamaindex_adapter_exports,
|
37
|
-
LoadAPIKeyError: () =>
|
37
|
+
LoadAPIKeyError: () => import_provider15.LoadAPIKeyError,
|
38
38
|
MessageConversionError: () => MessageConversionError,
|
39
|
-
NoContentGeneratedError: () =>
|
39
|
+
NoContentGeneratedError: () => import_provider15.NoContentGeneratedError,
|
40
40
|
NoObjectGeneratedError: () => NoObjectGeneratedError,
|
41
|
-
NoSuchModelError: () =>
|
41
|
+
NoSuchModelError: () => import_provider15.NoSuchModelError,
|
42
42
|
NoSuchProviderError: () => NoSuchProviderError,
|
43
43
|
NoSuchToolError: () => NoSuchToolError,
|
44
44
|
Output: () => output_exports,
|
45
45
|
RetryError: () => RetryError,
|
46
46
|
StreamData: () => StreamData,
|
47
|
+
ToolCallRepairError: () => ToolCallRepairError,
|
47
48
|
ToolExecutionError: () => ToolExecutionError,
|
48
|
-
TypeValidationError: () =>
|
49
|
-
UnsupportedFunctionalityError: () =>
|
49
|
+
TypeValidationError: () => import_provider15.TypeValidationError,
|
50
|
+
UnsupportedFunctionalityError: () => import_provider15.UnsupportedFunctionalityError,
|
50
51
|
convertToCoreMessages: () => convertToCoreMessages,
|
51
52
|
cosineSimilarity: () => cosineSimilarity,
|
52
53
|
createDataStream: () => createDataStream,
|
@@ -55,10 +56,11 @@ __export(streams_exports, {
|
|
55
56
|
embedMany: () => embedMany,
|
56
57
|
experimental_createProviderRegistry: () => experimental_createProviderRegistry,
|
57
58
|
experimental_customProvider: () => experimental_customProvider,
|
59
|
+
experimental_generateImage: () => generateImage,
|
58
60
|
experimental_wrapLanguageModel: () => experimental_wrapLanguageModel,
|
59
61
|
formatAssistantStreamPart: () => import_ui_utils14.formatAssistantStreamPart,
|
60
62
|
formatDataStreamPart: () => import_ui_utils14.formatDataStreamPart,
|
61
|
-
generateId: () =>
|
63
|
+
generateId: () => import_provider_utils13.generateId,
|
62
64
|
generateObject: () => generateObject,
|
63
65
|
generateText: () => generateText,
|
64
66
|
jsonSchema: () => import_ui_utils9.jsonSchema,
|
@@ -73,7 +75,7 @@ __export(streams_exports, {
|
|
73
75
|
});
|
74
76
|
module.exports = __toCommonJS(streams_exports);
|
75
77
|
var import_ui_utils14 = require("@ai-sdk/ui-utils");
|
76
|
-
var
|
78
|
+
var import_provider_utils13 = require("@ai-sdk/provider-utils");
|
77
79
|
|
78
80
|
// core/index.ts
|
79
81
|
var import_ui_utils9 = require("@ai-sdk/ui-utils");
|
@@ -407,7 +409,7 @@ function getBaseTelemetryAttributes({
|
|
407
409
|
telemetry,
|
408
410
|
headers
|
409
411
|
}) {
|
410
|
-
var
|
412
|
+
var _a13;
|
411
413
|
return {
|
412
414
|
"ai.model.provider": model.provider,
|
413
415
|
"ai.model.id": model.modelId,
|
@@ -417,7 +419,7 @@ function getBaseTelemetryAttributes({
|
|
417
419
|
return attributes;
|
418
420
|
}, {}),
|
419
421
|
// add metadata as attributes:
|
420
|
-
...Object.entries((
|
422
|
+
...Object.entries((_a13 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a13 : {}).reduce(
|
421
423
|
(attributes, [key, value]) => {
|
422
424
|
attributes[`ai.telemetry.metadata.${key}`] = value;
|
423
425
|
return attributes;
|
@@ -442,7 +444,7 @@ var noopTracer = {
|
|
442
444
|
startSpan() {
|
443
445
|
return noopSpan;
|
444
446
|
},
|
445
|
-
startActiveSpan(
|
447
|
+
startActiveSpan(name13, arg1, arg2, arg3) {
|
446
448
|
if (typeof arg1 === "function") {
|
447
449
|
return arg1(noopSpan);
|
448
450
|
}
|
@@ -512,13 +514,13 @@ function getTracer({
|
|
512
514
|
// core/telemetry/record-span.ts
|
513
515
|
var import_api2 = require("@opentelemetry/api");
|
514
516
|
function recordSpan({
|
515
|
-
name:
|
517
|
+
name: name13,
|
516
518
|
tracer,
|
517
519
|
attributes,
|
518
520
|
fn,
|
519
521
|
endWhenDone = true
|
520
522
|
}) {
|
521
|
-
return tracer.startActiveSpan(
|
523
|
+
return tracer.startActiveSpan(name13, { attributes }, async (span) => {
|
522
524
|
try {
|
523
525
|
const result = await fn(span);
|
524
526
|
if (endWhenDone) {
|
@@ -626,14 +628,14 @@ async function embed({
|
|
626
628
|
}),
|
627
629
|
tracer,
|
628
630
|
fn: async (doEmbedSpan) => {
|
629
|
-
var
|
631
|
+
var _a13;
|
630
632
|
const modelResponse = await model.doEmbed({
|
631
633
|
values: [value],
|
632
634
|
abortSignal,
|
633
635
|
headers
|
634
636
|
});
|
635
637
|
const embedding2 = modelResponse.embeddings[0];
|
636
|
-
const usage2 = (
|
638
|
+
const usage2 = (_a13 = modelResponse.usage) != null ? _a13 : { tokens: NaN };
|
637
639
|
doEmbedSpan.setAttributes(
|
638
640
|
selectTelemetryAttributes({
|
639
641
|
telemetry,
|
@@ -743,14 +745,14 @@ async function embedMany({
|
|
743
745
|
}),
|
744
746
|
tracer,
|
745
747
|
fn: async (doEmbedSpan) => {
|
746
|
-
var
|
748
|
+
var _a13;
|
747
749
|
const modelResponse = await model.doEmbed({
|
748
750
|
values,
|
749
751
|
abortSignal,
|
750
752
|
headers
|
751
753
|
});
|
752
754
|
const embeddings3 = modelResponse.embeddings;
|
753
|
-
const usage2 = (
|
755
|
+
const usage2 = (_a13 = modelResponse.usage) != null ? _a13 : { tokens: NaN };
|
754
756
|
doEmbedSpan.setAttributes(
|
755
757
|
selectTelemetryAttributes({
|
756
758
|
telemetry,
|
@@ -802,14 +804,14 @@ async function embedMany({
|
|
802
804
|
}),
|
803
805
|
tracer,
|
804
806
|
fn: async (doEmbedSpan) => {
|
805
|
-
var
|
807
|
+
var _a13;
|
806
808
|
const modelResponse = await model.doEmbed({
|
807
809
|
values: chunk,
|
808
810
|
abortSignal,
|
809
811
|
headers
|
810
812
|
});
|
811
813
|
const embeddings2 = modelResponse.embeddings;
|
812
|
-
const usage2 = (
|
814
|
+
const usage2 = (_a13 = modelResponse.usage) != null ? _a13 : { tokens: NaN };
|
813
815
|
doEmbedSpan.setAttributes(
|
814
816
|
selectTelemetryAttributes({
|
815
817
|
telemetry,
|
@@ -855,8 +857,47 @@ var DefaultEmbedManyResult = class {
|
|
855
857
|
}
|
856
858
|
};
|
857
859
|
|
860
|
+
// core/generate-image/generate-image.ts
|
861
|
+
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
862
|
+
async function generateImage({
|
863
|
+
model,
|
864
|
+
prompt,
|
865
|
+
n,
|
866
|
+
size,
|
867
|
+
providerOptions,
|
868
|
+
maxRetries: maxRetriesArg,
|
869
|
+
abortSignal,
|
870
|
+
headers
|
871
|
+
}) {
|
872
|
+
const { retry } = prepareRetries({ maxRetries: maxRetriesArg });
|
873
|
+
const { images } = await retry(
|
874
|
+
() => model.doGenerate({
|
875
|
+
prompt,
|
876
|
+
n: n != null ? n : 1,
|
877
|
+
abortSignal,
|
878
|
+
headers,
|
879
|
+
size,
|
880
|
+
providerOptions: providerOptions != null ? providerOptions : {}
|
881
|
+
})
|
882
|
+
);
|
883
|
+
return new DefaultGenerateImageResult({ base64Images: images });
|
884
|
+
}
|
885
|
+
var DefaultGenerateImageResult = class {
|
886
|
+
constructor(options) {
|
887
|
+
this.images = options.base64Images.map((base64) => ({
|
888
|
+
base64,
|
889
|
+
get uint8Array() {
|
890
|
+
return (0, import_provider_utils2.convertBase64ToUint8Array)(this.base64);
|
891
|
+
}
|
892
|
+
}));
|
893
|
+
}
|
894
|
+
get image() {
|
895
|
+
return this.images[0];
|
896
|
+
}
|
897
|
+
};
|
898
|
+
|
858
899
|
// core/generate-object/generate-object.ts
|
859
|
-
var
|
900
|
+
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
860
901
|
|
861
902
|
// util/download-error.ts
|
862
903
|
var import_provider4 = require("@ai-sdk/provider");
|
@@ -889,7 +930,7 @@ async function download({
|
|
889
930
|
url,
|
890
931
|
fetchImplementation = fetch
|
891
932
|
}) {
|
892
|
-
var
|
933
|
+
var _a13;
|
893
934
|
const urlText = url.toString();
|
894
935
|
try {
|
895
936
|
const response = await fetchImplementation(urlText);
|
@@ -902,7 +943,7 @@ async function download({
|
|
902
943
|
}
|
903
944
|
return {
|
904
945
|
data: new Uint8Array(await response.arrayBuffer()),
|
905
|
-
mimeType: (
|
946
|
+
mimeType: (_a13 = response.headers.get("content-type")) != null ? _a13 : void 0
|
906
947
|
};
|
907
948
|
} catch (error) {
|
908
949
|
if (DownloadError.isInstance(error)) {
|
@@ -929,7 +970,7 @@ function detectImageMimeType(image) {
|
|
929
970
|
}
|
930
971
|
|
931
972
|
// core/prompt/data-content.ts
|
932
|
-
var
|
973
|
+
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
933
974
|
|
934
975
|
// core/prompt/invalid-data-content-error.ts
|
935
976
|
var import_provider5 = require("@ai-sdk/provider");
|
@@ -962,8 +1003,8 @@ var dataContentSchema = import_zod.z.union([
|
|
962
1003
|
import_zod.z.custom(
|
963
1004
|
// Buffer might not be available in some environments such as CloudFlare:
|
964
1005
|
(value) => {
|
965
|
-
var
|
966
|
-
return (_b = (
|
1006
|
+
var _a13, _b;
|
1007
|
+
return (_b = (_a13 = globalThis.Buffer) == null ? void 0 : _a13.isBuffer(value)) != null ? _b : false;
|
967
1008
|
},
|
968
1009
|
{ message: "Must be a Buffer" }
|
969
1010
|
)
|
@@ -973,9 +1014,9 @@ function convertDataContentToBase64String(content) {
|
|
973
1014
|
return content;
|
974
1015
|
}
|
975
1016
|
if (content instanceof ArrayBuffer) {
|
976
|
-
return (0,
|
1017
|
+
return (0, import_provider_utils3.convertUint8ArrayToBase64)(new Uint8Array(content));
|
977
1018
|
}
|
978
|
-
return (0,
|
1019
|
+
return (0, import_provider_utils3.convertUint8ArrayToBase64)(content);
|
979
1020
|
}
|
980
1021
|
function convertDataContentToUint8Array(content) {
|
981
1022
|
if (content instanceof Uint8Array) {
|
@@ -983,7 +1024,7 @@ function convertDataContentToUint8Array(content) {
|
|
983
1024
|
}
|
984
1025
|
if (typeof content === "string") {
|
985
1026
|
try {
|
986
|
-
return (0,
|
1027
|
+
return (0, import_provider_utils3.convertBase64ToUint8Array)(content);
|
987
1028
|
} catch (error) {
|
988
1029
|
throw new InvalidDataContentError({
|
989
1030
|
message: "Invalid data content. Content string is not a base64-encoded media.",
|
@@ -1322,7 +1363,7 @@ function prepareCallSettings({
|
|
1322
1363
|
|
1323
1364
|
// core/prompt/standardize-prompt.ts
|
1324
1365
|
var import_provider8 = require("@ai-sdk/provider");
|
1325
|
-
var
|
1366
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
1326
1367
|
var import_zod7 = require("zod");
|
1327
1368
|
|
1328
1369
|
// core/prompt/message.ts
|
@@ -1471,7 +1512,7 @@ function detectSingleMessageCharacteristics(message) {
|
|
1471
1512
|
|
1472
1513
|
// core/prompt/attachments-to-parts.ts
|
1473
1514
|
function attachmentsToParts(attachments) {
|
1474
|
-
var
|
1515
|
+
var _a13, _b, _c;
|
1475
1516
|
const parts = [];
|
1476
1517
|
for (const attachment of attachments) {
|
1477
1518
|
let url;
|
@@ -1483,7 +1524,7 @@ function attachmentsToParts(attachments) {
|
|
1483
1524
|
switch (url.protocol) {
|
1484
1525
|
case "http:":
|
1485
1526
|
case "https:": {
|
1486
|
-
if ((
|
1527
|
+
if ((_a13 = attachment.contentType) == null ? void 0 : _a13.startsWith("image/")) {
|
1487
1528
|
parts.push({ type: "image", image: url });
|
1488
1529
|
} else {
|
1489
1530
|
if (!attachment.contentType) {
|
@@ -1569,8 +1610,8 @@ _a6 = symbol6;
|
|
1569
1610
|
|
1570
1611
|
// core/prompt/convert-to-core-messages.ts
|
1571
1612
|
function convertToCoreMessages(messages, options) {
|
1572
|
-
var
|
1573
|
-
const tools = (
|
1613
|
+
var _a13;
|
1614
|
+
const tools = (_a13 = options == null ? void 0 : options.tools) != null ? _a13 : {};
|
1574
1615
|
const coreMessages = [];
|
1575
1616
|
for (const message of messages) {
|
1576
1617
|
const { role, content, toolInvocations, experimental_attachments } = message;
|
@@ -1705,7 +1746,7 @@ function standardizePrompt({
|
|
1705
1746
|
const messages = promptType === "ui-messages" ? convertToCoreMessages(prompt.messages, {
|
1706
1747
|
tools
|
1707
1748
|
}) : prompt.messages;
|
1708
|
-
const validationResult = (0,
|
1749
|
+
const validationResult = (0, import_provider_utils4.safeValidateTypes)({
|
1709
1750
|
value: messages,
|
1710
1751
|
schema: import_zod7.z.array(coreMessageSchema)
|
1711
1752
|
});
|
@@ -1777,7 +1818,7 @@ _a7 = symbol7;
|
|
1777
1818
|
|
1778
1819
|
// core/generate-object/output-strategy.ts
|
1779
1820
|
var import_provider10 = require("@ai-sdk/provider");
|
1780
|
-
var
|
1821
|
+
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
1781
1822
|
var import_ui_utils2 = require("@ai-sdk/ui-utils");
|
1782
1823
|
|
1783
1824
|
// core/util/async-iterable-stream.ts
|
@@ -1827,7 +1868,7 @@ var objectOutputStrategy = (schema) => ({
|
|
1827
1868
|
};
|
1828
1869
|
},
|
1829
1870
|
validateFinalResult(value) {
|
1830
|
-
return (0,
|
1871
|
+
return (0, import_provider_utils5.safeValidateTypes)({ value, schema });
|
1831
1872
|
},
|
1832
1873
|
createElementStream() {
|
1833
1874
|
throw new import_provider10.UnsupportedFunctionalityError({
|
@@ -1852,7 +1893,7 @@ var arrayOutputStrategy = (schema) => {
|
|
1852
1893
|
additionalProperties: false
|
1853
1894
|
},
|
1854
1895
|
validatePartialResult({ value, latestObject, isFirstDelta, isFinalDelta }) {
|
1855
|
-
var
|
1896
|
+
var _a13;
|
1856
1897
|
if (!(0, import_provider10.isJSONObject)(value) || !(0, import_provider10.isJSONArray)(value.elements)) {
|
1857
1898
|
return {
|
1858
1899
|
success: false,
|
@@ -1866,7 +1907,7 @@ var arrayOutputStrategy = (schema) => {
|
|
1866
1907
|
const resultArray = [];
|
1867
1908
|
for (let i = 0; i < inputArray.length; i++) {
|
1868
1909
|
const element = inputArray[i];
|
1869
|
-
const result = (0,
|
1910
|
+
const result = (0, import_provider_utils5.safeValidateTypes)({ value: element, schema });
|
1870
1911
|
if (i === inputArray.length - 1 && !isFinalDelta) {
|
1871
1912
|
continue;
|
1872
1913
|
}
|
@@ -1875,7 +1916,7 @@ var arrayOutputStrategy = (schema) => {
|
|
1875
1916
|
}
|
1876
1917
|
resultArray.push(result.value);
|
1877
1918
|
}
|
1878
|
-
const publishedElementCount = (
|
1919
|
+
const publishedElementCount = (_a13 = latestObject == null ? void 0 : latestObject.length) != null ? _a13 : 0;
|
1879
1920
|
let textDelta = "";
|
1880
1921
|
if (isFirstDelta) {
|
1881
1922
|
textDelta += "[";
|
@@ -1907,7 +1948,7 @@ var arrayOutputStrategy = (schema) => {
|
|
1907
1948
|
}
|
1908
1949
|
const inputArray = value.elements;
|
1909
1950
|
for (const element of inputArray) {
|
1910
|
-
const result = (0,
|
1951
|
+
const result = (0, import_provider_utils5.safeValidateTypes)({ value: element, schema });
|
1911
1952
|
if (!result.success) {
|
1912
1953
|
return result;
|
1913
1954
|
}
|
@@ -2136,7 +2177,7 @@ function validateObjectGenerationInput({
|
|
2136
2177
|
}
|
2137
2178
|
|
2138
2179
|
// core/generate-object/generate-object.ts
|
2139
|
-
var originalGenerateId = (0,
|
2180
|
+
var originalGenerateId = (0, import_provider_utils6.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
2140
2181
|
async function generateObject({
|
2141
2182
|
model,
|
2142
2183
|
enum: enumValues,
|
@@ -2207,7 +2248,7 @@ async function generateObject({
|
|
2207
2248
|
}),
|
2208
2249
|
tracer,
|
2209
2250
|
fn: async (span) => {
|
2210
|
-
var
|
2251
|
+
var _a13, _b;
|
2211
2252
|
if (mode === "auto" || mode == null) {
|
2212
2253
|
mode = model.defaultObjectGenerationMode;
|
2213
2254
|
}
|
@@ -2269,7 +2310,7 @@ async function generateObject({
|
|
2269
2310
|
}),
|
2270
2311
|
tracer,
|
2271
2312
|
fn: async (span2) => {
|
2272
|
-
var
|
2313
|
+
var _a14, _b2, _c, _d, _e, _f;
|
2273
2314
|
const result2 = await model.doGenerate({
|
2274
2315
|
mode: {
|
2275
2316
|
type: "object-json",
|
@@ -2288,7 +2329,7 @@ async function generateObject({
|
|
2288
2329
|
throw new NoObjectGeneratedError();
|
2289
2330
|
}
|
2290
2331
|
const responseData = {
|
2291
|
-
id: (_b2 = (
|
2332
|
+
id: (_b2 = (_a14 = result2.response) == null ? void 0 : _a14.id) != null ? _b2 : generateId3(),
|
2292
2333
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
2293
2334
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId
|
2294
2335
|
};
|
@@ -2323,7 +2364,7 @@ async function generateObject({
|
|
2323
2364
|
rawResponse = generateResult.rawResponse;
|
2324
2365
|
logprobs = generateResult.logprobs;
|
2325
2366
|
resultProviderMetadata = generateResult.providerMetadata;
|
2326
|
-
request = (
|
2367
|
+
request = (_a13 = generateResult.request) != null ? _a13 : {};
|
2327
2368
|
response = generateResult.responseData;
|
2328
2369
|
break;
|
2329
2370
|
}
|
@@ -2369,7 +2410,7 @@ async function generateObject({
|
|
2369
2410
|
}),
|
2370
2411
|
tracer,
|
2371
2412
|
fn: async (span2) => {
|
2372
|
-
var
|
2413
|
+
var _a14, _b2, _c, _d, _e, _f, _g, _h;
|
2373
2414
|
const result2 = await model.doGenerate({
|
2374
2415
|
mode: {
|
2375
2416
|
type: "object-tool",
|
@@ -2387,7 +2428,7 @@ async function generateObject({
|
|
2387
2428
|
abortSignal,
|
2388
2429
|
headers
|
2389
2430
|
});
|
2390
|
-
const objectText = (_b2 = (
|
2431
|
+
const objectText = (_b2 = (_a14 = result2.toolCalls) == null ? void 0 : _a14[0]) == null ? void 0 : _b2.args;
|
2391
2432
|
if (objectText === void 0) {
|
2392
2433
|
throw new NoObjectGeneratedError();
|
2393
2434
|
}
|
@@ -2441,7 +2482,7 @@ async function generateObject({
|
|
2441
2482
|
throw new Error(`Unsupported mode: ${_exhaustiveCheck}`);
|
2442
2483
|
}
|
2443
2484
|
}
|
2444
|
-
const parseResult = (0,
|
2485
|
+
const parseResult = (0, import_provider_utils6.safeParseJSON)({ text: result });
|
2445
2486
|
if (!parseResult.success) {
|
2446
2487
|
throw parseResult.error;
|
2447
2488
|
}
|
@@ -2492,9 +2533,9 @@ var DefaultGenerateObjectResult = class {
|
|
2492
2533
|
this.logprobs = options.logprobs;
|
2493
2534
|
}
|
2494
2535
|
toJsonResponse(init) {
|
2495
|
-
var
|
2536
|
+
var _a13;
|
2496
2537
|
return new Response(JSON.stringify(this.object), {
|
2497
|
-
status: (
|
2538
|
+
status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
|
2498
2539
|
headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
|
2499
2540
|
contentType: "application/json; charset=utf-8"
|
2500
2541
|
})
|
@@ -2503,7 +2544,7 @@ var DefaultGenerateObjectResult = class {
|
|
2503
2544
|
};
|
2504
2545
|
|
2505
2546
|
// core/generate-object/stream-object.ts
|
2506
|
-
var
|
2547
|
+
var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
2507
2548
|
var import_ui_utils3 = require("@ai-sdk/ui-utils");
|
2508
2549
|
|
2509
2550
|
// util/delayed-promise.ts
|
@@ -2529,17 +2570,17 @@ var DelayedPromise = class {
|
|
2529
2570
|
return this.promise;
|
2530
2571
|
}
|
2531
2572
|
resolve(value) {
|
2532
|
-
var
|
2573
|
+
var _a13;
|
2533
2574
|
this.status = { type: "resolved", value };
|
2534
2575
|
if (this.promise) {
|
2535
|
-
(
|
2576
|
+
(_a13 = this._resolve) == null ? void 0 : _a13.call(this, value);
|
2536
2577
|
}
|
2537
2578
|
}
|
2538
2579
|
reject(error) {
|
2539
|
-
var
|
2580
|
+
var _a13;
|
2540
2581
|
this.status = { type: "rejected", error };
|
2541
2582
|
if (this.promise) {
|
2542
|
-
(
|
2583
|
+
(_a13 = this._reject) == null ? void 0 : _a13.call(this, error);
|
2543
2584
|
}
|
2544
2585
|
}
|
2545
2586
|
};
|
@@ -2628,12 +2669,12 @@ function createStitchableStream() {
|
|
2628
2669
|
|
2629
2670
|
// core/util/now.ts
|
2630
2671
|
function now() {
|
2631
|
-
var
|
2632
|
-
return (_b = (
|
2672
|
+
var _a13, _b;
|
2673
|
+
return (_b = (_a13 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a13.now()) != null ? _b : Date.now();
|
2633
2674
|
}
|
2634
2675
|
|
2635
2676
|
// core/generate-object/stream-object.ts
|
2636
|
-
var originalGenerateId2 = (0,
|
2677
|
+
var originalGenerateId2 = (0, import_provider_utils7.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
2637
2678
|
function streamObject({
|
2638
2679
|
model,
|
2639
2680
|
schema: inputSchema,
|
@@ -2918,7 +2959,7 @@ var DefaultStreamObjectResult = class {
|
|
2918
2959
|
const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
|
2919
2960
|
new TransformStream({
|
2920
2961
|
async transform(chunk, controller) {
|
2921
|
-
var
|
2962
|
+
var _a13, _b, _c;
|
2922
2963
|
if (isFirstChunk) {
|
2923
2964
|
const msToFirstChunk = now2() - startTimestampMs;
|
2924
2965
|
isFirstChunk = false;
|
@@ -2964,7 +3005,7 @@ var DefaultStreamObjectResult = class {
|
|
2964
3005
|
switch (chunk.type) {
|
2965
3006
|
case "response-metadata": {
|
2966
3007
|
response = {
|
2967
|
-
id: (
|
3008
|
+
id: (_a13 = chunk.id) != null ? _a13 : response.id,
|
2968
3009
|
timestamp: (_b = chunk.timestamp) != null ? _b : response.timestamp,
|
2969
3010
|
modelId: (_c = chunk.modelId) != null ? _c : response.modelId
|
2970
3011
|
};
|
@@ -3161,9 +3202,9 @@ var DefaultStreamObjectResult = class {
|
|
3161
3202
|
});
|
3162
3203
|
}
|
3163
3204
|
toTextStreamResponse(init) {
|
3164
|
-
var
|
3205
|
+
var _a13;
|
3165
3206
|
return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {
|
3166
|
-
status: (
|
3207
|
+
status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
|
3167
3208
|
headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
|
3168
3209
|
contentType: "text/plain; charset=utf-8"
|
3169
3210
|
})
|
@@ -3172,10 +3213,10 @@ var DefaultStreamObjectResult = class {
|
|
3172
3213
|
};
|
3173
3214
|
|
3174
3215
|
// core/generate-text/generate-text.ts
|
3175
|
-
var
|
3216
|
+
var import_provider_utils9 = require("@ai-sdk/provider-utils");
|
3176
3217
|
|
3177
3218
|
// errors/index.ts
|
3178
|
-
var
|
3219
|
+
var import_provider15 = require("@ai-sdk/provider");
|
3179
3220
|
|
3180
3221
|
// errors/invalid-tool-arguments-error.ts
|
3181
3222
|
var import_provider11 = require("@ai-sdk/provider");
|
@@ -3226,23 +3267,21 @@ var NoSuchToolError = class extends import_provider12.AISDKError {
|
|
3226
3267
|
};
|
3227
3268
|
_a9 = symbol9;
|
3228
3269
|
|
3229
|
-
// errors/tool-
|
3270
|
+
// errors/tool-call-repair-error.ts
|
3230
3271
|
var import_provider13 = require("@ai-sdk/provider");
|
3231
|
-
var name10 = "
|
3272
|
+
var name10 = "AI_ToolCallRepairError";
|
3232
3273
|
var marker10 = `vercel.ai.error.${name10}`;
|
3233
3274
|
var symbol10 = Symbol.for(marker10);
|
3234
3275
|
var _a10;
|
3235
|
-
var
|
3276
|
+
var ToolCallRepairError = class extends import_provider13.AISDKError {
|
3236
3277
|
constructor({
|
3237
|
-
toolArgs,
|
3238
|
-
toolName,
|
3239
3278
|
cause,
|
3240
|
-
|
3279
|
+
originalError,
|
3280
|
+
message = `Error repairing tool call: ${(0, import_provider13.getErrorMessage)(cause)}`
|
3241
3281
|
}) {
|
3242
3282
|
super({ name: name10, message, cause });
|
3243
3283
|
this[_a10] = true;
|
3244
|
-
this.
|
3245
|
-
this.toolName = toolName;
|
3284
|
+
this.originalError = originalError;
|
3246
3285
|
}
|
3247
3286
|
static isInstance(error) {
|
3248
3287
|
return import_provider13.AISDKError.hasMarker(error, marker10);
|
@@ -3250,6 +3289,30 @@ var ToolExecutionError = class extends import_provider13.AISDKError {
|
|
3250
3289
|
};
|
3251
3290
|
_a10 = symbol10;
|
3252
3291
|
|
3292
|
+
// errors/tool-execution-error.ts
|
3293
|
+
var import_provider14 = require("@ai-sdk/provider");
|
3294
|
+
var name11 = "AI_ToolExecutionError";
|
3295
|
+
var marker11 = `vercel.ai.error.${name11}`;
|
3296
|
+
var symbol11 = Symbol.for(marker11);
|
3297
|
+
var _a11;
|
3298
|
+
var ToolExecutionError = class extends import_provider14.AISDKError {
|
3299
|
+
constructor({
|
3300
|
+
toolArgs,
|
3301
|
+
toolName,
|
3302
|
+
cause,
|
3303
|
+
message = `Error executing tool ${toolName}: ${(0, import_provider14.getErrorMessage)(cause)}`
|
3304
|
+
}) {
|
3305
|
+
super({ name: name11, message, cause });
|
3306
|
+
this[_a11] = true;
|
3307
|
+
this.toolArgs = toolArgs;
|
3308
|
+
this.toolName = toolName;
|
3309
|
+
}
|
3310
|
+
static isInstance(error) {
|
3311
|
+
return import_provider14.AISDKError.hasMarker(error, marker11);
|
3312
|
+
}
|
3313
|
+
};
|
3314
|
+
_a11 = symbol11;
|
3315
|
+
|
3253
3316
|
// core/prompt/prepare-tools-and-tool-choice.ts
|
3254
3317
|
var import_ui_utils4 = require("@ai-sdk/ui-utils");
|
3255
3318
|
|
@@ -3271,24 +3334,24 @@ function prepareToolsAndToolChoice({
|
|
3271
3334
|
};
|
3272
3335
|
}
|
3273
3336
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
3274
|
-
([
|
3337
|
+
([name13]) => activeTools.includes(name13)
|
3275
3338
|
) : Object.entries(tools);
|
3276
3339
|
return {
|
3277
|
-
tools: filteredTools.map(([
|
3340
|
+
tools: filteredTools.map(([name13, tool2]) => {
|
3278
3341
|
const toolType = tool2.type;
|
3279
3342
|
switch (toolType) {
|
3280
3343
|
case void 0:
|
3281
3344
|
case "function":
|
3282
3345
|
return {
|
3283
3346
|
type: "function",
|
3284
|
-
name:
|
3347
|
+
name: name13,
|
3285
3348
|
description: tool2.description,
|
3286
3349
|
parameters: (0, import_ui_utils4.asSchema)(tool2.parameters).jsonSchema
|
3287
3350
|
};
|
3288
3351
|
case "provider-defined":
|
3289
3352
|
return {
|
3290
3353
|
type: "provider-defined",
|
3291
|
-
name:
|
3354
|
+
name: name13,
|
3292
3355
|
id: tool2.id,
|
3293
3356
|
args: tool2.args
|
3294
3357
|
};
|
@@ -3316,16 +3379,51 @@ function removeTextAfterLastWhitespace(text2) {
|
|
3316
3379
|
}
|
3317
3380
|
|
3318
3381
|
// core/generate-text/parse-tool-call.ts
|
3319
|
-
var
|
3382
|
+
var import_provider_utils8 = require("@ai-sdk/provider-utils");
|
3320
3383
|
var import_ui_utils5 = require("@ai-sdk/ui-utils");
|
3321
|
-
function parseToolCall({
|
3384
|
+
async function parseToolCall({
|
3322
3385
|
toolCall,
|
3323
|
-
tools
|
3386
|
+
tools,
|
3387
|
+
repairToolCall,
|
3388
|
+
system,
|
3389
|
+
messages
|
3324
3390
|
}) {
|
3325
|
-
const toolName = toolCall.toolName;
|
3326
3391
|
if (tools == null) {
|
3327
3392
|
throw new NoSuchToolError({ toolName: toolCall.toolName });
|
3328
3393
|
}
|
3394
|
+
try {
|
3395
|
+
return await doParseToolCall({ toolCall, tools });
|
3396
|
+
} catch (error) {
|
3397
|
+
if (repairToolCall == null || !(NoSuchToolError.isInstance(error) || InvalidToolArgumentsError.isInstance(error))) {
|
3398
|
+
throw error;
|
3399
|
+
}
|
3400
|
+
let repairedToolCall = null;
|
3401
|
+
try {
|
3402
|
+
repairedToolCall = await repairToolCall({
|
3403
|
+
toolCall,
|
3404
|
+
tools,
|
3405
|
+
parameterSchema: ({ toolName }) => (0, import_ui_utils5.asSchema)(tools[toolName].parameters).jsonSchema,
|
3406
|
+
system,
|
3407
|
+
messages,
|
3408
|
+
error
|
3409
|
+
});
|
3410
|
+
} catch (repairError) {
|
3411
|
+
throw new ToolCallRepairError({
|
3412
|
+
cause: repairError,
|
3413
|
+
originalError: error
|
3414
|
+
});
|
3415
|
+
}
|
3416
|
+
if (repairedToolCall == null) {
|
3417
|
+
throw error;
|
3418
|
+
}
|
3419
|
+
return await doParseToolCall({ toolCall: repairedToolCall, tools });
|
3420
|
+
}
|
3421
|
+
}
|
3422
|
+
async function doParseToolCall({
|
3423
|
+
toolCall,
|
3424
|
+
tools
|
3425
|
+
}) {
|
3426
|
+
const toolName = toolCall.toolName;
|
3329
3427
|
const tool2 = tools[toolName];
|
3330
3428
|
if (tool2 == null) {
|
3331
3429
|
throw new NoSuchToolError({
|
@@ -3334,7 +3432,7 @@ function parseToolCall({
|
|
3334
3432
|
});
|
3335
3433
|
}
|
3336
3434
|
const schema = (0, import_ui_utils5.asSchema)(tool2.parameters);
|
3337
|
-
const parseResult = toolCall.args.trim() === "" ? (0,
|
3435
|
+
const parseResult = toolCall.args.trim() === "" ? (0, import_provider_utils8.safeValidateTypes)({ value: {}, schema }) : (0, import_provider_utils8.safeParseJSON)({ text: toolCall.args, schema });
|
3338
3436
|
if (parseResult.success === false) {
|
3339
3437
|
throw new InvalidToolArgumentsError({
|
3340
3438
|
toolName,
|
@@ -3388,7 +3486,7 @@ function toResponseMessages({
|
|
3388
3486
|
}
|
3389
3487
|
|
3390
3488
|
// core/generate-text/generate-text.ts
|
3391
|
-
var originalGenerateId3 = (0,
|
3489
|
+
var originalGenerateId3 = (0, import_provider_utils9.createIdGenerator)({ prefix: "aitxt", size: 24 });
|
3392
3490
|
async function generateText({
|
3393
3491
|
model,
|
3394
3492
|
tools,
|
@@ -3405,6 +3503,7 @@ async function generateText({
|
|
3405
3503
|
experimental_telemetry: telemetry,
|
3406
3504
|
experimental_providerMetadata: providerMetadata,
|
3407
3505
|
experimental_activeTools: activeTools,
|
3506
|
+
experimental_repairToolCall: repairToolCall,
|
3408
3507
|
_internal: {
|
3409
3508
|
generateId: generateId3 = originalGenerateId3,
|
3410
3509
|
currentDate = () => /* @__PURE__ */ new Date()
|
@@ -3412,7 +3511,7 @@ async function generateText({
|
|
3412
3511
|
onStepFinish,
|
3413
3512
|
...settings
|
3414
3513
|
}) {
|
3415
|
-
var
|
3514
|
+
var _a13;
|
3416
3515
|
if (maxSteps < 1) {
|
3417
3516
|
throw new InvalidArgumentError({
|
3418
3517
|
parameter: "maxSteps",
|
@@ -3429,7 +3528,7 @@ async function generateText({
|
|
3429
3528
|
});
|
3430
3529
|
const initialPrompt = standardizePrompt({
|
3431
3530
|
prompt: {
|
3432
|
-
system: (
|
3531
|
+
system: (_a13 = output == null ? void 0 : output.injectIntoSystemPrompt({ system, model })) != null ? _a13 : system,
|
3433
3532
|
prompt,
|
3434
3533
|
messages
|
3435
3534
|
},
|
@@ -3455,7 +3554,7 @@ async function generateText({
|
|
3455
3554
|
}),
|
3456
3555
|
tracer,
|
3457
3556
|
fn: async (span) => {
|
3458
|
-
var
|
3557
|
+
var _a14, _b, _c, _d, _e, _f;
|
3459
3558
|
const mode = {
|
3460
3559
|
type: "regular",
|
3461
3560
|
...prepareToolsAndToolChoice({ tools, toolChoice, activeTools })
|
@@ -3507,8 +3606,8 @@ async function generateText({
|
|
3507
3606
|
"ai.prompt.tools": {
|
3508
3607
|
// convert the language model level tools:
|
3509
3608
|
input: () => {
|
3510
|
-
var
|
3511
|
-
return (
|
3609
|
+
var _a15;
|
3610
|
+
return (_a15 = mode.tools) == null ? void 0 : _a15.map((tool2) => JSON.stringify(tool2));
|
3512
3611
|
}
|
3513
3612
|
},
|
3514
3613
|
"ai.prompt.toolChoice": {
|
@@ -3528,7 +3627,7 @@ async function generateText({
|
|
3528
3627
|
}),
|
3529
3628
|
tracer,
|
3530
3629
|
fn: async (span2) => {
|
3531
|
-
var
|
3630
|
+
var _a15, _b2, _c2, _d2, _e2, _f2;
|
3532
3631
|
const result = await model.doGenerate({
|
3533
3632
|
mode,
|
3534
3633
|
...callSettings,
|
@@ -3540,7 +3639,7 @@ async function generateText({
|
|
3540
3639
|
headers
|
3541
3640
|
});
|
3542
3641
|
const responseData = {
|
3543
|
-
id: (_b2 = (
|
3642
|
+
id: (_b2 = (_a15 = result.response) == null ? void 0 : _a15.id) != null ? _b2 : generateId3(),
|
3544
3643
|
timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),
|
3545
3644
|
modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : model.modelId
|
3546
3645
|
};
|
@@ -3573,8 +3672,16 @@ async function generateText({
|
|
3573
3672
|
}
|
3574
3673
|
})
|
3575
3674
|
);
|
3576
|
-
currentToolCalls =
|
3577
|
-
(
|
3675
|
+
currentToolCalls = await Promise.all(
|
3676
|
+
((_a14 = currentModelResponse.toolCalls) != null ? _a14 : []).map(
|
3677
|
+
(toolCall) => parseToolCall({
|
3678
|
+
toolCall,
|
3679
|
+
tools,
|
3680
|
+
repairToolCall,
|
3681
|
+
system,
|
3682
|
+
messages: stepInputMessages
|
3683
|
+
})
|
3684
|
+
)
|
3578
3685
|
);
|
3579
3686
|
currentToolResults = tools == null ? [] : await executeTools({
|
3580
3687
|
toolCalls: currentToolCalls,
|
@@ -3778,9 +3885,49 @@ var DefaultGenerateTextResult = class {
|
|
3778
3885
|
}
|
3779
3886
|
};
|
3780
3887
|
|
3888
|
+
// core/generate-text/output.ts
|
3889
|
+
var output_exports = {};
|
3890
|
+
__export(output_exports, {
|
3891
|
+
object: () => object,
|
3892
|
+
text: () => text
|
3893
|
+
});
|
3894
|
+
var import_provider_utils10 = require("@ai-sdk/provider-utils");
|
3895
|
+
var import_ui_utils6 = require("@ai-sdk/ui-utils");
|
3896
|
+
var text = () => ({
|
3897
|
+
type: "text",
|
3898
|
+
responseFormat: () => ({ type: "text" }),
|
3899
|
+
injectIntoSystemPrompt({ system }) {
|
3900
|
+
return system;
|
3901
|
+
},
|
3902
|
+
parseOutput({ text: text2 }) {
|
3903
|
+
return text2;
|
3904
|
+
}
|
3905
|
+
});
|
3906
|
+
var object = ({
|
3907
|
+
schema: inputSchema
|
3908
|
+
}) => {
|
3909
|
+
const schema = (0, import_ui_utils6.asSchema)(inputSchema);
|
3910
|
+
return {
|
3911
|
+
type: "object",
|
3912
|
+
responseFormat: ({ model }) => ({
|
3913
|
+
type: "json",
|
3914
|
+
schema: model.supportsStructuredOutputs ? schema.jsonSchema : void 0
|
3915
|
+
}),
|
3916
|
+
injectIntoSystemPrompt({ system, model }) {
|
3917
|
+
return model.supportsStructuredOutputs ? system : injectJsonInstruction({
|
3918
|
+
prompt: system,
|
3919
|
+
schema: schema.jsonSchema
|
3920
|
+
});
|
3921
|
+
},
|
3922
|
+
parseOutput({ text: text2 }) {
|
3923
|
+
return (0, import_provider_utils10.parseJSON)({ text: text2, schema });
|
3924
|
+
}
|
3925
|
+
};
|
3926
|
+
};
|
3927
|
+
|
3781
3928
|
// core/generate-text/stream-text.ts
|
3782
|
-
var
|
3783
|
-
var
|
3929
|
+
var import_provider_utils11 = require("@ai-sdk/provider-utils");
|
3930
|
+
var import_ui_utils8 = require("@ai-sdk/ui-utils");
|
3784
3931
|
|
3785
3932
|
// core/util/merge-streams.ts
|
3786
3933
|
function mergeStreams(stream1, stream2) {
|
@@ -3871,15 +4018,17 @@ function mergeStreams(stream1, stream2) {
|
|
3871
4018
|
}
|
3872
4019
|
|
3873
4020
|
// core/generate-text/run-tools-transformation.ts
|
3874
|
-
var
|
4021
|
+
var import_ui_utils7 = require("@ai-sdk/ui-utils");
|
3875
4022
|
function runToolsTransformation({
|
3876
4023
|
tools,
|
3877
4024
|
generatorStream,
|
3878
4025
|
toolCallStreaming,
|
3879
4026
|
tracer,
|
3880
4027
|
telemetry,
|
4028
|
+
system,
|
3881
4029
|
messages,
|
3882
|
-
abortSignal
|
4030
|
+
abortSignal,
|
4031
|
+
repairToolCall
|
3883
4032
|
}) {
|
3884
4033
|
let toolResultsStreamController = null;
|
3885
4034
|
const toolResultsStream = new ReadableStream({
|
@@ -3900,7 +4049,7 @@ function runToolsTransformation({
|
|
3900
4049
|
}
|
3901
4050
|
}
|
3902
4051
|
const forwardStream = new TransformStream({
|
3903
|
-
transform(chunk, controller) {
|
4052
|
+
async transform(chunk, controller) {
|
3904
4053
|
const chunkType = chunk.type;
|
3905
4054
|
switch (chunkType) {
|
3906
4055
|
case "text-delta":
|
@@ -3949,13 +4098,16 @@ function runToolsTransformation({
|
|
3949
4098
|
break;
|
3950
4099
|
}
|
3951
4100
|
try {
|
3952
|
-
const toolCall = parseToolCall({
|
4101
|
+
const toolCall = await parseToolCall({
|
3953
4102
|
toolCall: chunk,
|
3954
|
-
tools
|
4103
|
+
tools,
|
4104
|
+
repairToolCall,
|
4105
|
+
system,
|
4106
|
+
messages
|
3955
4107
|
});
|
3956
4108
|
controller.enqueue(toolCall);
|
3957
4109
|
if (tool2.execute != null) {
|
3958
|
-
const toolExecutionId = (0,
|
4110
|
+
const toolExecutionId = (0, import_ui_utils7.generateId)();
|
3959
4111
|
outstandingToolResults.add(toolExecutionId);
|
3960
4112
|
recordSpan({
|
3961
4113
|
name: "ai.toolCall",
|
@@ -4073,7 +4225,7 @@ function runToolsTransformation({
|
|
4073
4225
|
}
|
4074
4226
|
|
4075
4227
|
// core/generate-text/stream-text.ts
|
4076
|
-
var originalGenerateId4 = (0,
|
4228
|
+
var originalGenerateId4 = (0, import_provider_utils11.createIdGenerator)({ prefix: "aitxt", size: 24 });
|
4077
4229
|
function streamText({
|
4078
4230
|
model,
|
4079
4231
|
tools,
|
@@ -4090,6 +4242,7 @@ function streamText({
|
|
4090
4242
|
experimental_providerMetadata: providerMetadata,
|
4091
4243
|
experimental_toolCallStreaming: toolCallStreaming = false,
|
4092
4244
|
experimental_activeTools: activeTools,
|
4245
|
+
experimental_repairToolCall: repairToolCall,
|
4093
4246
|
onChunk,
|
4094
4247
|
onFinish,
|
4095
4248
|
onStepFinish,
|
@@ -4114,6 +4267,7 @@ function streamText({
|
|
4114
4267
|
toolChoice,
|
4115
4268
|
toolCallStreaming,
|
4116
4269
|
activeTools,
|
4270
|
+
repairToolCall,
|
4117
4271
|
maxSteps,
|
4118
4272
|
continueSteps,
|
4119
4273
|
providerMetadata,
|
@@ -4140,6 +4294,7 @@ var DefaultStreamTextResult = class {
|
|
4140
4294
|
toolChoice,
|
4141
4295
|
toolCallStreaming,
|
4142
4296
|
activeTools,
|
4297
|
+
repairToolCall,
|
4143
4298
|
maxSteps,
|
4144
4299
|
continueSteps,
|
4145
4300
|
providerMetadata,
|
@@ -4251,8 +4406,8 @@ var DefaultStreamTextResult = class {
|
|
4251
4406
|
"ai.prompt.tools": {
|
4252
4407
|
// convert the language model level tools:
|
4253
4408
|
input: () => {
|
4254
|
-
var
|
4255
|
-
return (
|
4409
|
+
var _a13;
|
4410
|
+
return (_a13 = mode.tools) == null ? void 0 : _a13.map((tool2) => JSON.stringify(tool2));
|
4256
4411
|
}
|
4257
4412
|
},
|
4258
4413
|
"ai.prompt.toolChoice": {
|
@@ -4294,7 +4449,9 @@ var DefaultStreamTextResult = class {
|
|
4294
4449
|
toolCallStreaming,
|
4295
4450
|
tracer,
|
4296
4451
|
telemetry,
|
4452
|
+
system,
|
4297
4453
|
messages: stepInputMessages,
|
4454
|
+
repairToolCall,
|
4298
4455
|
abortSignal
|
4299
4456
|
});
|
4300
4457
|
const stepRequest = request != null ? request : {};
|
@@ -4335,7 +4492,7 @@ var DefaultStreamTextResult = class {
|
|
4335
4492
|
transformedStream.pipeThrough(
|
4336
4493
|
new TransformStream({
|
4337
4494
|
async transform(chunk, controller) {
|
4338
|
-
var
|
4495
|
+
var _a13, _b, _c;
|
4339
4496
|
if (stepFirstChunk) {
|
4340
4497
|
const msToFirstChunk = now2() - startTimestampMs;
|
4341
4498
|
stepFirstChunk = false;
|
@@ -4389,7 +4546,7 @@ var DefaultStreamTextResult = class {
|
|
4389
4546
|
}
|
4390
4547
|
case "response-metadata": {
|
4391
4548
|
stepResponse = {
|
4392
|
-
id: (
|
4549
|
+
id: (_a13 = chunk.id) != null ? _a13 : stepResponse.id,
|
4393
4550
|
timestamp: (_b = chunk.timestamp) != null ? _b : stepResponse.timestamp,
|
4394
4551
|
modelId: (_c = chunk.modelId) != null ? _c : stepResponse.modelId
|
4395
4552
|
};
|
@@ -4706,7 +4863,7 @@ var DefaultStreamTextResult = class {
|
|
4706
4863
|
});
|
4707
4864
|
}
|
4708
4865
|
toDataStreamInternal({
|
4709
|
-
getErrorMessage:
|
4866
|
+
getErrorMessage: getErrorMessage5 = () => "An error occurred.",
|
4710
4867
|
// mask error messages for safety by default
|
4711
4868
|
sendUsage = true
|
4712
4869
|
} = {}) {
|
@@ -4724,12 +4881,12 @@ var DefaultStreamTextResult = class {
|
|
4724
4881
|
const chunkType = chunk.type;
|
4725
4882
|
switch (chunkType) {
|
4726
4883
|
case "text-delta": {
|
4727
|
-
controller.enqueue((0,
|
4884
|
+
controller.enqueue((0, import_ui_utils8.formatDataStreamPart)("text", chunk.textDelta));
|
4728
4885
|
break;
|
4729
4886
|
}
|
4730
4887
|
case "tool-call-streaming-start": {
|
4731
4888
|
controller.enqueue(
|
4732
|
-
(0,
|
4889
|
+
(0, import_ui_utils8.formatDataStreamPart)("tool_call_streaming_start", {
|
4733
4890
|
toolCallId: chunk.toolCallId,
|
4734
4891
|
toolName: chunk.toolName
|
4735
4892
|
})
|
@@ -4738,7 +4895,7 @@ var DefaultStreamTextResult = class {
|
|
4738
4895
|
}
|
4739
4896
|
case "tool-call-delta": {
|
4740
4897
|
controller.enqueue(
|
4741
|
-
(0,
|
4898
|
+
(0, import_ui_utils8.formatDataStreamPart)("tool_call_delta", {
|
4742
4899
|
toolCallId: chunk.toolCallId,
|
4743
4900
|
argsTextDelta: chunk.argsTextDelta
|
4744
4901
|
})
|
@@ -4747,7 +4904,7 @@ var DefaultStreamTextResult = class {
|
|
4747
4904
|
}
|
4748
4905
|
case "tool-call": {
|
4749
4906
|
controller.enqueue(
|
4750
|
-
(0,
|
4907
|
+
(0, import_ui_utils8.formatDataStreamPart)("tool_call", {
|
4751
4908
|
toolCallId: chunk.toolCallId,
|
4752
4909
|
toolName: chunk.toolName,
|
4753
4910
|
args: chunk.args
|
@@ -4757,7 +4914,7 @@ var DefaultStreamTextResult = class {
|
|
4757
4914
|
}
|
4758
4915
|
case "tool-result": {
|
4759
4916
|
controller.enqueue(
|
4760
|
-
(0,
|
4917
|
+
(0, import_ui_utils8.formatDataStreamPart)("tool_result", {
|
4761
4918
|
toolCallId: chunk.toolCallId,
|
4762
4919
|
result: chunk.result
|
4763
4920
|
})
|
@@ -4766,13 +4923,13 @@ var DefaultStreamTextResult = class {
|
|
4766
4923
|
}
|
4767
4924
|
case "error": {
|
4768
4925
|
controller.enqueue(
|
4769
|
-
(0,
|
4926
|
+
(0, import_ui_utils8.formatDataStreamPart)("error", getErrorMessage5(chunk.error))
|
4770
4927
|
);
|
4771
4928
|
break;
|
4772
4929
|
}
|
4773
4930
|
case "step-finish": {
|
4774
4931
|
controller.enqueue(
|
4775
|
-
(0,
|
4932
|
+
(0, import_ui_utils8.formatDataStreamPart)("finish_step", {
|
4776
4933
|
finishReason: chunk.finishReason,
|
4777
4934
|
usage: sendUsage ? {
|
4778
4935
|
promptTokens: chunk.usage.promptTokens,
|
@@ -4785,7 +4942,7 @@ var DefaultStreamTextResult = class {
|
|
4785
4942
|
}
|
4786
4943
|
case "finish": {
|
4787
4944
|
controller.enqueue(
|
4788
|
-
(0,
|
4945
|
+
(0, import_ui_utils8.formatDataStreamPart)("finish_message", {
|
4789
4946
|
finishReason: chunk.finishReason,
|
4790
4947
|
usage: sendUsage ? {
|
4791
4948
|
promptTokens: chunk.usage.promptTokens,
|
@@ -4809,7 +4966,7 @@ var DefaultStreamTextResult = class {
|
|
4809
4966
|
statusText,
|
4810
4967
|
headers,
|
4811
4968
|
data,
|
4812
|
-
getErrorMessage:
|
4969
|
+
getErrorMessage: getErrorMessage5,
|
4813
4970
|
sendUsage
|
4814
4971
|
} = {}) {
|
4815
4972
|
writeToServerResponse({
|
@@ -4820,7 +4977,7 @@ var DefaultStreamTextResult = class {
|
|
4820
4977
|
contentType: "text/plain; charset=utf-8",
|
4821
4978
|
dataStreamVersion: "v1"
|
4822
4979
|
}),
|
4823
|
-
stream: this.toDataStream({ data, getErrorMessage:
|
4980
|
+
stream: this.toDataStream({ data, getErrorMessage: getErrorMessage5, sendUsage })
|
4824
4981
|
});
|
4825
4982
|
}
|
4826
4983
|
pipeTextStreamToResponse(response, init) {
|
@@ -4854,11 +5011,11 @@ var DefaultStreamTextResult = class {
|
|
4854
5011
|
status,
|
4855
5012
|
statusText,
|
4856
5013
|
data,
|
4857
|
-
getErrorMessage:
|
5014
|
+
getErrorMessage: getErrorMessage5,
|
4858
5015
|
sendUsage
|
4859
5016
|
} = {}) {
|
4860
5017
|
return new Response(
|
4861
|
-
this.toDataStream({ data, getErrorMessage:
|
5018
|
+
this.toDataStream({ data, getErrorMessage: getErrorMessage5, sendUsage }),
|
4862
5019
|
{
|
4863
5020
|
status,
|
4864
5021
|
statusText,
|
@@ -4870,9 +5027,9 @@ var DefaultStreamTextResult = class {
|
|
4870
5027
|
);
|
4871
5028
|
}
|
4872
5029
|
toTextStreamResponse(init) {
|
4873
|
-
var
|
5030
|
+
var _a13;
|
4874
5031
|
return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {
|
4875
|
-
status: (
|
5032
|
+
status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
|
4876
5033
|
headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
|
4877
5034
|
contentType: "text/plain; charset=utf-8"
|
4878
5035
|
})
|
@@ -4880,46 +5037,6 @@ var DefaultStreamTextResult = class {
|
|
4880
5037
|
}
|
4881
5038
|
};
|
4882
5039
|
|
4883
|
-
// core/generate-text/output.ts
|
4884
|
-
var output_exports = {};
|
4885
|
-
__export(output_exports, {
|
4886
|
-
object: () => object,
|
4887
|
-
text: () => text
|
4888
|
-
});
|
4889
|
-
var import_provider_utils10 = require("@ai-sdk/provider-utils");
|
4890
|
-
var import_ui_utils8 = require("@ai-sdk/ui-utils");
|
4891
|
-
var text = () => ({
|
4892
|
-
type: "text",
|
4893
|
-
responseFormat: () => ({ type: "text" }),
|
4894
|
-
injectIntoSystemPrompt({ system }) {
|
4895
|
-
return system;
|
4896
|
-
},
|
4897
|
-
parseOutput({ text: text2 }) {
|
4898
|
-
return text2;
|
4899
|
-
}
|
4900
|
-
});
|
4901
|
-
var object = ({
|
4902
|
-
schema: inputSchema
|
4903
|
-
}) => {
|
4904
|
-
const schema = (0, import_ui_utils8.asSchema)(inputSchema);
|
4905
|
-
return {
|
4906
|
-
type: "object",
|
4907
|
-
responseFormat: ({ model }) => ({
|
4908
|
-
type: "json",
|
4909
|
-
schema: model.supportsStructuredOutputs ? schema.jsonSchema : void 0
|
4910
|
-
}),
|
4911
|
-
injectIntoSystemPrompt({ system, model }) {
|
4912
|
-
return model.supportsStructuredOutputs ? system : injectJsonInstruction({
|
4913
|
-
prompt: system,
|
4914
|
-
schema: schema.jsonSchema
|
4915
|
-
});
|
4916
|
-
},
|
4917
|
-
parseOutput({ text: text2 }) {
|
4918
|
-
return (0, import_provider_utils10.parseJSON)({ text: text2, schema });
|
4919
|
-
}
|
4920
|
-
};
|
4921
|
-
};
|
4922
|
-
|
4923
5040
|
// core/middleware/wrap-language-model.ts
|
4924
5041
|
var experimental_wrapLanguageModel = ({
|
4925
5042
|
model,
|
@@ -4955,7 +5072,7 @@ var experimental_wrapLanguageModel = ({
|
|
4955
5072
|
};
|
4956
5073
|
|
4957
5074
|
// core/registry/custom-provider.ts
|
4958
|
-
var
|
5075
|
+
var import_provider16 = require("@ai-sdk/provider");
|
4959
5076
|
function experimental_customProvider({
|
4960
5077
|
languageModels,
|
4961
5078
|
textEmbeddingModels,
|
@@ -4969,7 +5086,7 @@ function experimental_customProvider({
|
|
4969
5086
|
if (fallbackProvider) {
|
4970
5087
|
return fallbackProvider.languageModel(modelId);
|
4971
5088
|
}
|
4972
|
-
throw new
|
5089
|
+
throw new import_provider16.NoSuchModelError({ modelId, modelType: "languageModel" });
|
4973
5090
|
},
|
4974
5091
|
textEmbeddingModel(modelId) {
|
4975
5092
|
if (textEmbeddingModels != null && modelId in textEmbeddingModels) {
|
@@ -4978,18 +5095,18 @@ function experimental_customProvider({
|
|
4978
5095
|
if (fallbackProvider) {
|
4979
5096
|
return fallbackProvider.textEmbeddingModel(modelId);
|
4980
5097
|
}
|
4981
|
-
throw new
|
5098
|
+
throw new import_provider16.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
|
4982
5099
|
}
|
4983
5100
|
};
|
4984
5101
|
}
|
4985
5102
|
|
4986
5103
|
// core/registry/no-such-provider-error.ts
|
4987
|
-
var
|
4988
|
-
var
|
4989
|
-
var
|
4990
|
-
var
|
4991
|
-
var
|
4992
|
-
var NoSuchProviderError = class extends
|
5104
|
+
var import_provider17 = require("@ai-sdk/provider");
|
5105
|
+
var name12 = "AI_NoSuchProviderError";
|
5106
|
+
var marker12 = `vercel.ai.error.${name12}`;
|
5107
|
+
var symbol12 = Symbol.for(marker12);
|
5108
|
+
var _a12;
|
5109
|
+
var NoSuchProviderError = class extends import_provider17.NoSuchModelError {
|
4993
5110
|
constructor({
|
4994
5111
|
modelId,
|
4995
5112
|
modelType,
|
@@ -4997,19 +5114,19 @@ var NoSuchProviderError = class extends import_provider16.NoSuchModelError {
|
|
4997
5114
|
availableProviders,
|
4998
5115
|
message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
|
4999
5116
|
}) {
|
5000
|
-
super({ errorName:
|
5001
|
-
this[
|
5117
|
+
super({ errorName: name12, modelId, modelType, message });
|
5118
|
+
this[_a12] = true;
|
5002
5119
|
this.providerId = providerId;
|
5003
5120
|
this.availableProviders = availableProviders;
|
5004
5121
|
}
|
5005
5122
|
static isInstance(error) {
|
5006
|
-
return
|
5123
|
+
return import_provider17.AISDKError.hasMarker(error, marker12);
|
5007
5124
|
}
|
5008
5125
|
};
|
5009
|
-
|
5126
|
+
_a12 = symbol12;
|
5010
5127
|
|
5011
5128
|
// core/registry/provider-registry.ts
|
5012
|
-
var
|
5129
|
+
var import_provider18 = require("@ai-sdk/provider");
|
5013
5130
|
function experimental_createProviderRegistry(providers) {
|
5014
5131
|
const registry = new DefaultProviderRegistry();
|
5015
5132
|
for (const [id, provider] of Object.entries(providers)) {
|
@@ -5039,7 +5156,7 @@ var DefaultProviderRegistry = class {
|
|
5039
5156
|
splitId(id, modelType) {
|
5040
5157
|
const index = id.indexOf(":");
|
5041
5158
|
if (index === -1) {
|
5042
|
-
throw new
|
5159
|
+
throw new import_provider18.NoSuchModelError({
|
5043
5160
|
modelId: id,
|
5044
5161
|
modelType,
|
5045
5162
|
message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId:modelId")`
|
@@ -5048,21 +5165,21 @@ var DefaultProviderRegistry = class {
|
|
5048
5165
|
return [id.slice(0, index), id.slice(index + 1)];
|
5049
5166
|
}
|
5050
5167
|
languageModel(id) {
|
5051
|
-
var
|
5168
|
+
var _a13, _b;
|
5052
5169
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
5053
|
-
const model = (_b = (
|
5170
|
+
const model = (_b = (_a13 = this.getProvider(providerId)).languageModel) == null ? void 0 : _b.call(_a13, modelId);
|
5054
5171
|
if (model == null) {
|
5055
|
-
throw new
|
5172
|
+
throw new import_provider18.NoSuchModelError({ modelId: id, modelType: "languageModel" });
|
5056
5173
|
}
|
5057
5174
|
return model;
|
5058
5175
|
}
|
5059
5176
|
textEmbeddingModel(id) {
|
5060
|
-
var
|
5177
|
+
var _a13;
|
5061
5178
|
const [providerId, modelId] = this.splitId(id, "textEmbeddingModel");
|
5062
5179
|
const provider = this.getProvider(providerId);
|
5063
|
-
const model = (
|
5180
|
+
const model = (_a13 = provider.textEmbeddingModel) == null ? void 0 : _a13.call(provider, modelId);
|
5064
5181
|
if (model == null) {
|
5065
|
-
throw new
|
5182
|
+
throw new import_provider18.NoSuchModelError({
|
5066
5183
|
modelId: id,
|
5067
5184
|
modelType: "textEmbeddingModel"
|
5068
5185
|
});
|
@@ -5106,7 +5223,7 @@ var import_ui_utils10 = require("@ai-sdk/ui-utils");
|
|
5106
5223
|
function AssistantResponse({ threadId, messageId }, process2) {
|
5107
5224
|
const stream = new ReadableStream({
|
5108
5225
|
async start(controller) {
|
5109
|
-
var
|
5226
|
+
var _a13;
|
5110
5227
|
const textEncoder = new TextEncoder();
|
5111
5228
|
const sendMessage = (message) => {
|
5112
5229
|
controller.enqueue(
|
@@ -5128,7 +5245,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
|
|
5128
5245
|
);
|
5129
5246
|
};
|
5130
5247
|
const forwardStream = async (stream2) => {
|
5131
|
-
var
|
5248
|
+
var _a14, _b;
|
5132
5249
|
let result = void 0;
|
5133
5250
|
for await (const value of stream2) {
|
5134
5251
|
switch (value.event) {
|
@@ -5145,7 +5262,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
|
|
5145
5262
|
break;
|
5146
5263
|
}
|
5147
5264
|
case "thread.message.delta": {
|
5148
|
-
const content = (
|
5265
|
+
const content = (_a14 = value.data.delta.content) == null ? void 0 : _a14[0];
|
5149
5266
|
if ((content == null ? void 0 : content.type) === "text" && ((_b = content.text) == null ? void 0 : _b.value) != null) {
|
5150
5267
|
controller.enqueue(
|
5151
5268
|
textEncoder.encode(
|
@@ -5179,7 +5296,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
|
|
5179
5296
|
forwardStream
|
5180
5297
|
});
|
5181
5298
|
} catch (error) {
|
5182
|
-
sendError((
|
5299
|
+
sendError((_a13 = error.message) != null ? _a13 : `${error}`);
|
5183
5300
|
} finally {
|
5184
5301
|
controller.close();
|
5185
5302
|
}
|
@@ -5240,7 +5357,7 @@ function toDataStreamInternal(stream, callbacks) {
|
|
5240
5357
|
return stream.pipeThrough(
|
5241
5358
|
new TransformStream({
|
5242
5359
|
transform: async (value, controller) => {
|
5243
|
-
var
|
5360
|
+
var _a13;
|
5244
5361
|
if (typeof value === "string") {
|
5245
5362
|
controller.enqueue(value);
|
5246
5363
|
return;
|
@@ -5248,7 +5365,7 @@ function toDataStreamInternal(stream, callbacks) {
|
|
5248
5365
|
if ("event" in value) {
|
5249
5366
|
if (value.event === "on_chat_model_stream") {
|
5250
5367
|
forwardAIMessageChunk(
|
5251
|
-
(
|
5368
|
+
(_a13 = value.data) == null ? void 0 : _a13.chunk,
|
5252
5369
|
controller
|
5253
5370
|
);
|
5254
5371
|
}
|
@@ -5271,7 +5388,7 @@ function toDataStream(stream, callbacks) {
|
|
5271
5388
|
);
|
5272
5389
|
}
|
5273
5390
|
function toDataStreamResponse(stream, options) {
|
5274
|
-
var
|
5391
|
+
var _a13;
|
5275
5392
|
const dataStream = toDataStreamInternal(
|
5276
5393
|
stream,
|
5277
5394
|
options == null ? void 0 : options.callbacks
|
@@ -5280,7 +5397,7 @@ function toDataStreamResponse(stream, options) {
|
|
5280
5397
|
const init = options == null ? void 0 : options.init;
|
5281
5398
|
const responseStream = data ? mergeStreams(data.stream, dataStream) : dataStream;
|
5282
5399
|
return new Response(responseStream, {
|
5283
|
-
status: (
|
5400
|
+
status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
|
5284
5401
|
statusText: init == null ? void 0 : init.statusText,
|
5285
5402
|
headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
|
5286
5403
|
contentType: "text/plain; charset=utf-8",
|
@@ -5311,11 +5428,11 @@ __export(llamaindex_adapter_exports, {
|
|
5311
5428
|
toDataStream: () => toDataStream2,
|
5312
5429
|
toDataStreamResponse: () => toDataStreamResponse2
|
5313
5430
|
});
|
5314
|
-
var
|
5431
|
+
var import_provider_utils12 = require("@ai-sdk/provider-utils");
|
5315
5432
|
var import_ui_utils12 = require("@ai-sdk/ui-utils");
|
5316
5433
|
function toDataStreamInternal2(stream, callbacks) {
|
5317
5434
|
const trimStart = trimStartOfStream();
|
5318
|
-
return (0,
|
5435
|
+
return (0, import_provider_utils12.convertAsyncIteratorToReadableStream)(stream[Symbol.asyncIterator]()).pipeThrough(
|
5319
5436
|
new TransformStream({
|
5320
5437
|
async transform(message, controller) {
|
5321
5438
|
controller.enqueue(trimStart(message.delta));
|
@@ -5335,14 +5452,14 @@ function toDataStream2(stream, callbacks) {
|
|
5335
5452
|
);
|
5336
5453
|
}
|
5337
5454
|
function toDataStreamResponse2(stream, options = {}) {
|
5338
|
-
var
|
5455
|
+
var _a13;
|
5339
5456
|
const { init, data, callbacks } = options;
|
5340
5457
|
const dataStream = toDataStreamInternal2(stream, callbacks).pipeThrough(
|
5341
5458
|
new TextEncoderStream()
|
5342
5459
|
);
|
5343
5460
|
const responseStream = data ? mergeStreams(data.stream, dataStream) : dataStream;
|
5344
5461
|
return new Response(responseStream, {
|
5345
|
-
status: (
|
5462
|
+
status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
|
5346
5463
|
statusText: init == null ? void 0 : init.statusText,
|
5347
5464
|
headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
|
5348
5465
|
contentType: "text/plain; charset=utf-8",
|
@@ -5459,6 +5576,7 @@ var StreamData = class {
|
|
5459
5576
|
Output,
|
5460
5577
|
RetryError,
|
5461
5578
|
StreamData,
|
5579
|
+
ToolCallRepairError,
|
5462
5580
|
ToolExecutionError,
|
5463
5581
|
TypeValidationError,
|
5464
5582
|
UnsupportedFunctionalityError,
|
@@ -5470,6 +5588,7 @@ var StreamData = class {
|
|
5470
5588
|
embedMany,
|
5471
5589
|
experimental_createProviderRegistry,
|
5472
5590
|
experimental_customProvider,
|
5591
|
+
experimental_generateImage,
|
5473
5592
|
experimental_wrapLanguageModel,
|
5474
5593
|
formatAssistantStreamPart,
|
5475
5594
|
formatDataStreamPart,
|