ai 5.0.0-canary.17 → 5.0.0-canary.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 +19 -0
- package/README.md +4 -4
- package/dist/index.d.mts +39 -87
- package/dist/index.d.ts +39 -87
- package/dist/index.js +177 -166
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +177 -166
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +6 -44
- package/dist/internal/index.d.ts +6 -44
- package/dist/internal/index.js +12 -20
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +12 -19
- package/dist/internal/index.mjs.map +1 -1
- package/dist/mcp-stdio/index.d.mts +2 -2
- package/dist/mcp-stdio/index.d.ts +2 -2
- package/package.json +4 -4
package/dist/index.mjs
CHANGED
@@ -17,18 +17,6 @@ import {
|
|
17
17
|
// core/util/process-chat-response.ts
|
18
18
|
import { generateId as generateIdFunction } from "@ai-sdk/provider-utils";
|
19
19
|
|
20
|
-
// core/types/duplicated/usage.ts
|
21
|
-
function calculateLanguageModelUsage({
|
22
|
-
promptTokens,
|
23
|
-
completionTokens
|
24
|
-
}) {
|
25
|
-
return {
|
26
|
-
promptTokens,
|
27
|
-
completionTokens,
|
28
|
-
totalTokens: promptTokens + completionTokens
|
29
|
-
};
|
30
|
-
}
|
31
|
-
|
32
20
|
// core/ui/get-tool-invocations.ts
|
33
21
|
function getToolInvocations(message) {
|
34
22
|
return message.parts.filter(
|
@@ -494,10 +482,13 @@ var finishMessageStreamPart = {
|
|
494
482
|
const result = {
|
495
483
|
finishReason: value.finishReason
|
496
484
|
};
|
497
|
-
if ("usage" in value && value.usage != null && typeof value.usage === "object"
|
485
|
+
if ("usage" in value && value.usage != null && typeof value.usage === "object") {
|
498
486
|
result.usage = {
|
499
|
-
|
500
|
-
|
487
|
+
inputTokens: "inputTokens" in value.usage && typeof value.usage.inputTokens === "number" ? value.usage.inputTokens : void 0,
|
488
|
+
outputTokens: "outputTokens" in value.usage && typeof value.usage.outputTokens === "number" ? value.usage.outputTokens : void 0,
|
489
|
+
totalTokens: "totalTokens" in value.usage && typeof value.usage.totalTokens === "number" ? value.usage.totalTokens : void 0,
|
490
|
+
reasoningTokens: "reasoningTokens" in value.usage && typeof value.usage.reasoningTokens === "number" ? value.usage.reasoningTokens : void 0,
|
491
|
+
cachedInputTokens: "cachedInputTokens" in value.usage && typeof value.usage.cachedInputTokens === "number" ? value.usage.cachedInputTokens : void 0
|
501
492
|
};
|
502
493
|
}
|
503
494
|
return {
|
@@ -519,10 +510,13 @@ var finishStepStreamPart = {
|
|
519
510
|
finishReason: value.finishReason,
|
520
511
|
isContinued: false
|
521
512
|
};
|
522
|
-
if ("usage" in value && value.usage != null && typeof value.usage === "object"
|
513
|
+
if ("usage" in value && value.usage != null && typeof value.usage === "object") {
|
523
514
|
result.usage = {
|
524
|
-
|
525
|
-
|
515
|
+
inputTokens: "inputTokens" in value.usage && typeof value.usage.inputTokens === "number" ? value.usage.inputTokens : void 0,
|
516
|
+
outputTokens: "outputTokens" in value.usage && typeof value.usage.outputTokens === "number" ? value.usage.outputTokens : void 0,
|
517
|
+
totalTokens: "totalTokens" in value.usage && typeof value.usage.totalTokens === "number" ? value.usage.totalTokens : void 0,
|
518
|
+
reasoningTokens: "reasoningTokens" in value.usage && typeof value.usage.reasoningTokens === "number" ? value.usage.reasoningTokens : void 0,
|
519
|
+
cachedInputTokens: "cachedInputTokens" in value.usage && typeof value.usage.cachedInputTokens === "number" ? value.usage.cachedInputTokens : void 0
|
526
520
|
};
|
527
521
|
}
|
528
522
|
if ("isContinued" in value && typeof value.isContinued === "boolean") {
|
@@ -795,9 +789,9 @@ async function processChatResponse({
|
|
795
789
|
let messageAnnotations = replaceLastMessage ? lastMessage == null ? void 0 : lastMessage.annotations : void 0;
|
796
790
|
const partialToolCalls = {};
|
797
791
|
let usage = {
|
798
|
-
|
799
|
-
|
800
|
-
totalTokens:
|
792
|
+
inputTokens: void 0,
|
793
|
+
outputTokens: void 0,
|
794
|
+
totalTokens: void 0
|
801
795
|
};
|
802
796
|
let finishReason = "unknown";
|
803
797
|
function execUpdate() {
|
@@ -970,7 +964,7 @@ async function processChatResponse({
|
|
970
964
|
onFinishMessagePart(value) {
|
971
965
|
finishReason = value.finishReason;
|
972
966
|
if (value.usage != null) {
|
973
|
-
usage =
|
967
|
+
usage = value.usage;
|
974
968
|
}
|
975
969
|
},
|
976
970
|
onErrorPart(error) {
|
@@ -1027,7 +1021,11 @@ async function processChatTextResponse({
|
|
1027
1021
|
}
|
1028
1022
|
});
|
1029
1023
|
onFinish == null ? void 0 : onFinish(resultMessage, {
|
1030
|
-
usage: {
|
1024
|
+
usage: {
|
1025
|
+
inputTokens: void 0,
|
1026
|
+
outputTokens: void 0,
|
1027
|
+
totalTokens: void 0
|
1028
|
+
},
|
1031
1029
|
finishReason: "unknown"
|
1032
1030
|
});
|
1033
1031
|
}
|
@@ -1041,7 +1039,6 @@ async function callChatApi({
|
|
1041
1039
|
credentials,
|
1042
1040
|
headers,
|
1043
1041
|
abortController,
|
1044
|
-
restoreMessagesOnFailure,
|
1045
1042
|
onResponse,
|
1046
1043
|
onUpdate,
|
1047
1044
|
onFinish,
|
@@ -1053,7 +1050,7 @@ async function callChatApi({
|
|
1053
1050
|
requestType = "generate"
|
1054
1051
|
}) {
|
1055
1052
|
var _a17, _b, _c;
|
1056
|
-
const
|
1053
|
+
const response = requestType === "resume" ? await fetch2(`${api}?chatId=${body.id}`, {
|
1057
1054
|
method: "GET",
|
1058
1055
|
headers: {
|
1059
1056
|
"Content-Type": "application/json",
|
@@ -1061,7 +1058,7 @@ async function callChatApi({
|
|
1061
1058
|
},
|
1062
1059
|
signal: (_a17 = abortController == null ? void 0 : abortController()) == null ? void 0 : _a17.signal,
|
1063
1060
|
credentials
|
1064
|
-
}) : fetch2(api, {
|
1061
|
+
}) : await fetch2(api, {
|
1065
1062
|
method: "POST",
|
1066
1063
|
body: JSON.stringify(body),
|
1067
1064
|
headers: {
|
@@ -1071,19 +1068,10 @@ async function callChatApi({
|
|
1071
1068
|
signal: (_b = abortController == null ? void 0 : abortController()) == null ? void 0 : _b.signal,
|
1072
1069
|
credentials
|
1073
1070
|
});
|
1074
|
-
|
1075
|
-
|
1076
|
-
throw err;
|
1077
|
-
});
|
1078
|
-
if (onResponse) {
|
1079
|
-
try {
|
1080
|
-
await onResponse(response);
|
1081
|
-
} catch (err) {
|
1082
|
-
throw err;
|
1083
|
-
}
|
1071
|
+
if (onResponse != null) {
|
1072
|
+
await onResponse(response);
|
1084
1073
|
}
|
1085
1074
|
if (!response.ok) {
|
1086
|
-
restoreMessagesOnFailure();
|
1087
1075
|
throw new Error(
|
1088
1076
|
(_c = await response.text()) != null ? _c : "Failed to fetch the chat response."
|
1089
1077
|
);
|
@@ -1097,7 +1085,8 @@ async function callChatApi({
|
|
1097
1085
|
stream: response.body,
|
1098
1086
|
update: onUpdate,
|
1099
1087
|
onFinish,
|
1100
|
-
generateId: generateId3
|
1088
|
+
generateId: generateId3,
|
1089
|
+
getCurrentDate
|
1101
1090
|
});
|
1102
1091
|
return;
|
1103
1092
|
}
|
@@ -1992,6 +1981,7 @@ function splitArray(array, chunkSize) {
|
|
1992
1981
|
async function embedMany({
|
1993
1982
|
model,
|
1994
1983
|
values,
|
1984
|
+
maxParallelCalls = Infinity,
|
1995
1985
|
maxRetries: maxRetriesArg,
|
1996
1986
|
abortSignal,
|
1997
1987
|
headers,
|
@@ -2021,7 +2011,10 @@ async function embedMany({
|
|
2021
2011
|
}),
|
2022
2012
|
tracer,
|
2023
2013
|
fn: async (span) => {
|
2024
|
-
const maxEmbeddingsPerCall = await
|
2014
|
+
const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
|
2015
|
+
model.maxEmbeddingsPerCall,
|
2016
|
+
model.supportsParallelCalls
|
2017
|
+
]);
|
2025
2018
|
if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) {
|
2026
2019
|
const { embeddings: embeddings2, usage, response } = await retry(() => {
|
2027
2020
|
return recordSpan({
|
@@ -2092,61 +2085,69 @@ async function embedMany({
|
|
2092
2085
|
const embeddings = [];
|
2093
2086
|
const responses = [];
|
2094
2087
|
let tokens = 0;
|
2095
|
-
|
2096
|
-
|
2097
|
-
|
2098
|
-
|
2099
|
-
|
2100
|
-
|
2101
|
-
|
2102
|
-
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
2106
|
-
...assembleOperationName({
|
2107
|
-
operationId: "ai.embedMany.doEmbed",
|
2108
|
-
telemetry
|
2109
|
-
}),
|
2110
|
-
...baseTelemetryAttributes,
|
2111
|
-
// specific settings that only make sense on the outer level:
|
2112
|
-
"ai.values": {
|
2113
|
-
input: () => chunk.map((value) => JSON.stringify(value))
|
2114
|
-
}
|
2115
|
-
}
|
2116
|
-
}),
|
2117
|
-
tracer,
|
2118
|
-
fn: async (doEmbedSpan) => {
|
2119
|
-
var _a17;
|
2120
|
-
const modelResponse = await model.doEmbed({
|
2121
|
-
values: chunk,
|
2122
|
-
abortSignal,
|
2123
|
-
headers,
|
2124
|
-
providerOptions
|
2125
|
-
});
|
2126
|
-
const embeddings2 = modelResponse.embeddings;
|
2127
|
-
const usage2 = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };
|
2128
|
-
doEmbedSpan.setAttributes(
|
2129
|
-
selectTelemetryAttributes({
|
2088
|
+
const parallelChunks = splitArray(
|
2089
|
+
valueChunks,
|
2090
|
+
supportsParallelCalls ? maxParallelCalls : 1
|
2091
|
+
);
|
2092
|
+
for (const parallelChunk of parallelChunks) {
|
2093
|
+
const results = await Promise.all(
|
2094
|
+
parallelChunk.map((chunk) => {
|
2095
|
+
return retry(() => {
|
2096
|
+
return recordSpan({
|
2097
|
+
name: "ai.embedMany.doEmbed",
|
2098
|
+
attributes: selectTelemetryAttributes({
|
2130
2099
|
telemetry,
|
2131
2100
|
attributes: {
|
2132
|
-
|
2133
|
-
|
2134
|
-
|
2135
|
-
|
2101
|
+
...assembleOperationName({
|
2102
|
+
operationId: "ai.embedMany.doEmbed",
|
2103
|
+
telemetry
|
2104
|
+
}),
|
2105
|
+
...baseTelemetryAttributes,
|
2106
|
+
// specific settings that only make sense on the outer level:
|
2107
|
+
"ai.values": {
|
2108
|
+
input: () => chunk.map((value) => JSON.stringify(value))
|
2109
|
+
}
|
2136
2110
|
}
|
2137
|
-
})
|
2138
|
-
|
2139
|
-
|
2140
|
-
|
2141
|
-
|
2142
|
-
|
2143
|
-
|
2144
|
-
|
2145
|
-
|
2146
|
-
|
2147
|
-
|
2148
|
-
|
2149
|
-
|
2111
|
+
}),
|
2112
|
+
tracer,
|
2113
|
+
fn: async (doEmbedSpan) => {
|
2114
|
+
var _a17;
|
2115
|
+
const modelResponse = await model.doEmbed({
|
2116
|
+
values: chunk,
|
2117
|
+
abortSignal,
|
2118
|
+
headers,
|
2119
|
+
providerOptions
|
2120
|
+
});
|
2121
|
+
const embeddings2 = modelResponse.embeddings;
|
2122
|
+
const usage = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };
|
2123
|
+
doEmbedSpan.setAttributes(
|
2124
|
+
selectTelemetryAttributes({
|
2125
|
+
telemetry,
|
2126
|
+
attributes: {
|
2127
|
+
"ai.embeddings": {
|
2128
|
+
output: () => embeddings2.map(
|
2129
|
+
(embedding) => JSON.stringify(embedding)
|
2130
|
+
)
|
2131
|
+
},
|
2132
|
+
"ai.usage.tokens": usage.tokens
|
2133
|
+
}
|
2134
|
+
})
|
2135
|
+
);
|
2136
|
+
return {
|
2137
|
+
embeddings: embeddings2,
|
2138
|
+
usage,
|
2139
|
+
response: modelResponse.response
|
2140
|
+
};
|
2141
|
+
}
|
2142
|
+
});
|
2143
|
+
});
|
2144
|
+
})
|
2145
|
+
);
|
2146
|
+
for (const result of results) {
|
2147
|
+
embeddings.push(...result.embeddings);
|
2148
|
+
responses.push(result.response);
|
2149
|
+
tokens += result.usage.tokens;
|
2150
|
+
}
|
2150
2151
|
}
|
2151
2152
|
span.setAttributes(
|
2152
2153
|
selectTelemetryAttributes({
|
@@ -3434,25 +3435,6 @@ async function standardizePrompt({
|
|
3434
3435
|
throw new Error("unreachable");
|
3435
3436
|
}
|
3436
3437
|
|
3437
|
-
// core/types/usage.ts
|
3438
|
-
function calculateLanguageModelUsage2({
|
3439
|
-
inputTokens,
|
3440
|
-
outputTokens
|
3441
|
-
}) {
|
3442
|
-
return {
|
3443
|
-
promptTokens: inputTokens != null ? inputTokens : NaN,
|
3444
|
-
completionTokens: outputTokens != null ? outputTokens : NaN,
|
3445
|
-
totalTokens: (inputTokens != null ? inputTokens : 0) + (outputTokens != null ? outputTokens : 0)
|
3446
|
-
};
|
3447
|
-
}
|
3448
|
-
function addLanguageModelUsage(usage1, usage2) {
|
3449
|
-
return {
|
3450
|
-
promptTokens: usage1.promptTokens + usage2.promptTokens,
|
3451
|
-
completionTokens: usage1.completionTokens + usage2.completionTokens,
|
3452
|
-
totalTokens: usage1.totalTokens + usage2.totalTokens
|
3453
|
-
};
|
3454
|
-
}
|
3455
|
-
|
3456
3438
|
// core/generate-object/output-strategy.ts
|
3457
3439
|
import {
|
3458
3440
|
isJSONArray,
|
@@ -3990,7 +3972,7 @@ async function generateObject(options) {
|
|
3990
3972
|
throw new NoObjectGeneratedError({
|
3991
3973
|
message: "No object generated: the model did not return a response.",
|
3992
3974
|
response: responseData,
|
3993
|
-
usage:
|
3975
|
+
usage: result2.usage,
|
3994
3976
|
finishReason: result2.finishReason
|
3995
3977
|
});
|
3996
3978
|
}
|
@@ -4034,7 +4016,7 @@ async function generateObject(options) {
|
|
4034
4016
|
cause: parseResult.error,
|
4035
4017
|
text: result2,
|
4036
4018
|
response,
|
4037
|
-
usage
|
4019
|
+
usage,
|
4038
4020
|
finishReason
|
4039
4021
|
});
|
4040
4022
|
}
|
@@ -4043,7 +4025,7 @@ async function generateObject(options) {
|
|
4043
4025
|
{
|
4044
4026
|
text: result2,
|
4045
4027
|
response,
|
4046
|
-
usage
|
4028
|
+
usage
|
4047
4029
|
}
|
4048
4030
|
);
|
4049
4031
|
if (!validationResult.success) {
|
@@ -4052,7 +4034,7 @@ async function generateObject(options) {
|
|
4052
4034
|
cause: validationResult.error,
|
4053
4035
|
text: result2,
|
4054
4036
|
response,
|
4055
|
-
usage
|
4037
|
+
usage,
|
4056
4038
|
finishReason
|
4057
4039
|
});
|
4058
4040
|
}
|
@@ -4092,7 +4074,7 @@ async function generateObject(options) {
|
|
4092
4074
|
return new DefaultGenerateObjectResult({
|
4093
4075
|
object: object2,
|
4094
4076
|
finishReason,
|
4095
|
-
usage
|
4077
|
+
usage,
|
4096
4078
|
warnings,
|
4097
4079
|
request,
|
4098
4080
|
response,
|
@@ -4474,7 +4456,11 @@ var DefaultStreamObjectResult = class {
|
|
4474
4456
|
);
|
4475
4457
|
self.requestPromise.resolve(request != null ? request : {});
|
4476
4458
|
let warnings;
|
4477
|
-
let usage
|
4459
|
+
let usage = {
|
4460
|
+
inputTokens: void 0,
|
4461
|
+
outputTokens: void 0,
|
4462
|
+
totalTokens: void 0
|
4463
|
+
};
|
4478
4464
|
let finishReason;
|
4479
4465
|
let providerMetadata;
|
4480
4466
|
let object2;
|
@@ -4554,7 +4540,7 @@ var DefaultStreamObjectResult = class {
|
|
4554
4540
|
controller.enqueue({ type: "text-delta", textDelta });
|
4555
4541
|
}
|
4556
4542
|
finishReason = chunk.finishReason;
|
4557
|
-
usage =
|
4543
|
+
usage = chunk.usage;
|
4558
4544
|
providerMetadata = chunk.providerMetadata;
|
4559
4545
|
controller.enqueue({
|
4560
4546
|
...chunk,
|
@@ -4616,14 +4602,17 @@ var DefaultStreamObjectResult = class {
|
|
4616
4602
|
"ai.response.id": fullResponse.id,
|
4617
4603
|
"ai.response.model": fullResponse.modelId,
|
4618
4604
|
"ai.response.timestamp": fullResponse.timestamp.toISOString(),
|
4619
|
-
"ai.usage.
|
4620
|
-
"ai.usage.
|
4605
|
+
"ai.usage.inputTokens": finalUsage.inputTokens,
|
4606
|
+
"ai.usage.outputTokens": finalUsage.outputTokens,
|
4607
|
+
"ai.usage.totalTokens": finalUsage.totalTokens,
|
4608
|
+
"ai.usage.reasoningTokens": finalUsage.reasoningTokens,
|
4609
|
+
"ai.usage.cachedInputTokens": finalUsage.cachedInputTokens,
|
4621
4610
|
// standardized gen-ai llm span attributes:
|
4622
4611
|
"gen_ai.response.finish_reasons": [finishReason],
|
4623
4612
|
"gen_ai.response.id": fullResponse.id,
|
4624
4613
|
"gen_ai.response.model": fullResponse.modelId,
|
4625
|
-
"gen_ai.usage.input_tokens": finalUsage.
|
4626
|
-
"gen_ai.usage.output_tokens": finalUsage.
|
4614
|
+
"gen_ai.usage.input_tokens": finalUsage.inputTokens,
|
4615
|
+
"gen_ai.usage.output_tokens": finalUsage.outputTokens
|
4627
4616
|
}
|
4628
4617
|
})
|
4629
4618
|
);
|
@@ -4632,8 +4621,11 @@ var DefaultStreamObjectResult = class {
|
|
4632
4621
|
selectTelemetryAttributes({
|
4633
4622
|
telemetry,
|
4634
4623
|
attributes: {
|
4635
|
-
"ai.usage.
|
4636
|
-
"ai.usage.
|
4624
|
+
"ai.usage.inputTokens": finalUsage.inputTokens,
|
4625
|
+
"ai.usage.outputTokens": finalUsage.outputTokens,
|
4626
|
+
"ai.usage.totalTokens": finalUsage.totalTokens,
|
4627
|
+
"ai.usage.reasoningTokens": finalUsage.reasoningTokens,
|
4628
|
+
"ai.usage.cachedInputTokens": finalUsage.cachedInputTokens,
|
4637
4629
|
"ai.response.object": {
|
4638
4630
|
output: () => JSON.stringify(object2)
|
4639
4631
|
}
|
@@ -4863,6 +4855,26 @@ function prepareToolsAndToolChoice({
|
|
4863
4855
|
};
|
4864
4856
|
}
|
4865
4857
|
|
4858
|
+
// core/types/usage.ts
|
4859
|
+
function addLanguageModelUsage(usage1, usage2) {
|
4860
|
+
return {
|
4861
|
+
inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
|
4862
|
+
outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
|
4863
|
+
totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
|
4864
|
+
reasoningTokens: addTokenCounts(
|
4865
|
+
usage1.reasoningTokens,
|
4866
|
+
usage2.reasoningTokens
|
4867
|
+
),
|
4868
|
+
cachedInputTokens: addTokenCounts(
|
4869
|
+
usage1.cachedInputTokens,
|
4870
|
+
usage2.cachedInputTokens
|
4871
|
+
)
|
4872
|
+
};
|
4873
|
+
}
|
4874
|
+
function addTokenCounts(tokenCount1, tokenCount2) {
|
4875
|
+
return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);
|
4876
|
+
}
|
4877
|
+
|
4866
4878
|
// core/util/split-on-last-whitespace.ts
|
4867
4879
|
var lastWhitespaceRegexp = /^([\s\S]*?)(\s+)(\S*)$/;
|
4868
4880
|
function splitOnLastWhitespace(text2) {
|
@@ -5187,9 +5199,9 @@ async function generateText({
|
|
5187
5199
|
const sources = [];
|
5188
5200
|
const steps = [];
|
5189
5201
|
let usage = {
|
5190
|
-
|
5191
|
-
|
5192
|
-
totalTokens: 0
|
5202
|
+
inputTokens: void 0,
|
5203
|
+
outputTokens: void 0,
|
5204
|
+
totalTokens: void 0
|
5193
5205
|
};
|
5194
5206
|
let stepType = "initial";
|
5195
5207
|
do {
|
@@ -5330,10 +5342,7 @@ async function generateText({
|
|
5330
5342
|
messages: stepInputMessages,
|
5331
5343
|
abortSignal
|
5332
5344
|
});
|
5333
|
-
|
5334
|
-
currentModelResponse.usage
|
5335
|
-
);
|
5336
|
-
usage = addLanguageModelUsage(usage, currentUsage);
|
5345
|
+
usage = addLanguageModelUsage(usage, currentModelResponse.usage);
|
5337
5346
|
let nextStepType = "done";
|
5338
5347
|
if (++stepCount < maxSteps) {
|
5339
5348
|
if (continueSteps && currentModelResponse.finishReason === "length" && // only use continue when there are no tool calls:
|
@@ -5398,7 +5407,7 @@ async function generateText({
|
|
5398
5407
|
toolCalls: currentToolCalls,
|
5399
5408
|
toolResults: currentToolResults,
|
5400
5409
|
finishReason: currentModelResponse.finishReason,
|
5401
|
-
usage:
|
5410
|
+
usage: currentModelResponse.usage,
|
5402
5411
|
warnings: currentModelResponse.warnings,
|
5403
5412
|
request: (_e = currentModelResponse.request) != null ? _e : {},
|
5404
5413
|
response: {
|
@@ -5936,6 +5945,7 @@ function runToolsTransformation({
|
|
5936
5945
|
const chunkType = chunk.type;
|
5937
5946
|
switch (chunkType) {
|
5938
5947
|
case "stream-start":
|
5948
|
+
case "finish":
|
5939
5949
|
case "text":
|
5940
5950
|
case "reasoning":
|
5941
5951
|
case "reasoning-part-finish":
|
@@ -6056,15 +6066,6 @@ function runToolsTransformation({
|
|
6056
6066
|
}
|
6057
6067
|
break;
|
6058
6068
|
}
|
6059
|
-
case "finish": {
|
6060
|
-
finishChunk = {
|
6061
|
-
type: "finish",
|
6062
|
-
finishReason: chunk.finishReason,
|
6063
|
-
usage: calculateLanguageModelUsage2(chunk.usage),
|
6064
|
-
providerMetadata: chunk.providerMetadata
|
6065
|
-
};
|
6066
|
-
break;
|
6067
|
-
}
|
6068
6069
|
default: {
|
6069
6070
|
const _exhaustiveCheck = chunkType;
|
6070
6071
|
throw new Error(`Unhandled chunk type: ${_exhaustiveCheck}`);
|
@@ -6427,9 +6428,9 @@ var DefaultStreamTextResult = class {
|
|
6427
6428
|
self.reasoningDetailsPromise.resolve(lastStep.reasoning);
|
6428
6429
|
const finishReason = recordedFinishReason != null ? recordedFinishReason : "unknown";
|
6429
6430
|
const usage = recordedUsage != null ? recordedUsage : {
|
6430
|
-
|
6431
|
-
|
6432
|
-
totalTokens:
|
6431
|
+
inputTokens: void 0,
|
6432
|
+
outputTokens: void 0,
|
6433
|
+
totalTokens: void 0
|
6433
6434
|
};
|
6434
6435
|
self.finishReasonPromise.resolve(finishReason);
|
6435
6436
|
self.usagePromise.resolve(usage);
|
@@ -6465,8 +6466,11 @@ var DefaultStreamTextResult = class {
|
|
6465
6466
|
return ((_a18 = lastStep.toolCalls) == null ? void 0 : _a18.length) ? JSON.stringify(lastStep.toolCalls) : void 0;
|
6466
6467
|
}
|
6467
6468
|
},
|
6468
|
-
"ai.usage.
|
6469
|
-
"ai.usage.
|
6469
|
+
"ai.usage.inputTokens": usage.inputTokens,
|
6470
|
+
"ai.usage.outputTokens": usage.outputTokens,
|
6471
|
+
"ai.usage.totalTokens": usage.totalTokens,
|
6472
|
+
"ai.usage.reasoningTokens": usage.reasoningTokens,
|
6473
|
+
"ai.usage.cachedInputTokens": usage.cachedInputTokens
|
6470
6474
|
}
|
6471
6475
|
})
|
6472
6476
|
);
|
@@ -6631,9 +6635,9 @@ var DefaultStreamTextResult = class {
|
|
6631
6635
|
let activeReasoningPart2 = void 0;
|
6632
6636
|
let stepFinishReason = "unknown";
|
6633
6637
|
let stepUsage = {
|
6634
|
-
|
6635
|
-
|
6636
|
-
totalTokens: 0
|
6638
|
+
inputTokens: void 0,
|
6639
|
+
outputTokens: void 0,
|
6640
|
+
totalTokens: void 0
|
6637
6641
|
};
|
6638
6642
|
let stepProviderMetadata;
|
6639
6643
|
let stepFirstChunk = true;
|
@@ -6662,7 +6666,7 @@ var DefaultStreamTextResult = class {
|
|
6662
6666
|
transformedStream.pipeThrough(
|
6663
6667
|
new TransformStream({
|
6664
6668
|
async transform(chunk, controller) {
|
6665
|
-
var _a17, _b, _c;
|
6669
|
+
var _a17, _b, _c, _d;
|
6666
6670
|
if (chunk.type === "stream-start") {
|
6667
6671
|
warnings = chunk.warnings;
|
6668
6672
|
return;
|
@@ -6758,7 +6762,7 @@ var DefaultStreamTextResult = class {
|
|
6758
6762
|
doStreamSpan.addEvent("ai.stream.finish");
|
6759
6763
|
doStreamSpan.setAttributes({
|
6760
6764
|
"ai.response.msToFinish": msToFinish,
|
6761
|
-
"ai.response.
|
6765
|
+
"ai.response.avgOutputTokensPerSecond": 1e3 * ((_d = stepUsage.outputTokens) != null ? _d : 0) / msToFinish
|
6762
6766
|
});
|
6763
6767
|
break;
|
6764
6768
|
}
|
@@ -6821,14 +6825,17 @@ var DefaultStreamTextResult = class {
|
|
6821
6825
|
"ai.response.id": stepResponse.id,
|
6822
6826
|
"ai.response.model": stepResponse.modelId,
|
6823
6827
|
"ai.response.timestamp": stepResponse.timestamp.toISOString(),
|
6824
|
-
"ai.usage.
|
6825
|
-
"ai.usage.
|
6828
|
+
"ai.usage.inputTokens": stepUsage.inputTokens,
|
6829
|
+
"ai.usage.outputTokens": stepUsage.outputTokens,
|
6830
|
+
"ai.usage.totalTokens": stepUsage.totalTokens,
|
6831
|
+
"ai.usage.reasoningTokens": stepUsage.reasoningTokens,
|
6832
|
+
"ai.usage.cachedInputTokens": stepUsage.cachedInputTokens,
|
6826
6833
|
// standardized gen-ai llm span attributes:
|
6827
6834
|
"gen_ai.response.finish_reasons": [stepFinishReason],
|
6828
6835
|
"gen_ai.response.id": stepResponse.id,
|
6829
6836
|
"gen_ai.response.model": stepResponse.modelId,
|
6830
|
-
"gen_ai.usage.input_tokens": stepUsage.
|
6831
|
-
"gen_ai.usage.output_tokens": stepUsage.
|
6837
|
+
"gen_ai.usage.input_tokens": stepUsage.inputTokens,
|
6838
|
+
"gen_ai.usage.output_tokens": stepUsage.outputTokens
|
6832
6839
|
}
|
6833
6840
|
})
|
6834
6841
|
);
|
@@ -6910,9 +6917,9 @@ var DefaultStreamTextResult = class {
|
|
6910
6917
|
currentStep: 0,
|
6911
6918
|
responseMessages: [],
|
6912
6919
|
usage: {
|
6913
|
-
|
6914
|
-
|
6915
|
-
totalTokens: 0
|
6920
|
+
inputTokens: void 0,
|
6921
|
+
outputTokens: void 0,
|
6922
|
+
totalTokens: void 0
|
6916
6923
|
},
|
6917
6924
|
previousStepText: "",
|
6918
6925
|
stepType: "initial",
|
@@ -7141,8 +7148,11 @@ var DefaultStreamTextResult = class {
|
|
7141
7148
|
formatDataStreamPart("finish_step", {
|
7142
7149
|
finishReason: chunk.finishReason,
|
7143
7150
|
usage: sendUsage ? {
|
7144
|
-
|
7145
|
-
|
7151
|
+
inputTokens: chunk.usage.inputTokens,
|
7152
|
+
outputTokens: chunk.usage.outputTokens,
|
7153
|
+
totalTokens: chunk.usage.totalTokens,
|
7154
|
+
reasoningTokens: chunk.usage.reasoningTokens,
|
7155
|
+
cachedInputTokens: chunk.usage.cachedInputTokens
|
7146
7156
|
} : void 0,
|
7147
7157
|
isContinued: chunk.isContinued
|
7148
7158
|
})
|
@@ -7155,8 +7165,11 @@ var DefaultStreamTextResult = class {
|
|
7155
7165
|
formatDataStreamPart("finish_message", {
|
7156
7166
|
finishReason: chunk.finishReason,
|
7157
7167
|
usage: sendUsage ? {
|
7158
|
-
|
7159
|
-
|
7168
|
+
inputTokens: chunk.usage.inputTokens,
|
7169
|
+
outputTokens: chunk.usage.outputTokens,
|
7170
|
+
totalTokens: chunk.usage.totalTokens,
|
7171
|
+
reasoningTokens: chunk.usage.reasoningTokens,
|
7172
|
+
cachedInputTokens: chunk.usage.cachedInputTokens
|
7160
7173
|
} : void 0
|
7161
7174
|
})
|
7162
7175
|
);
|
@@ -7808,7 +7821,6 @@ function appendResponseMessages({
|
|
7808
7821
|
if (isLastMessageAssistant) {
|
7809
7822
|
const maxStep = extractMaxToolInvocationStep(
|
7810
7823
|
getToolInvocations(lastMessage)
|
7811
|
-
// TODO remove once Message is removed
|
7812
7824
|
);
|
7813
7825
|
(_a17 = lastMessage.parts) != null ? _a17 : lastMessage.parts = [];
|
7814
7826
|
lastMessage.content = textContent;
|
@@ -7845,10 +7857,9 @@ function appendResponseMessages({
|
|
7845
7857
|
}
|
7846
7858
|
(_b = lastMessage.parts) != null ? _b : lastMessage.parts = [];
|
7847
7859
|
for (const contentPart of message.content) {
|
7848
|
-
const toolCall = getToolInvocations(
|
7849
|
-
|
7850
|
-
|
7851
|
-
).find((call) => call.toolCallId === contentPart.toolCallId);
|
7860
|
+
const toolCall = getToolInvocations(lastMessage).find(
|
7861
|
+
(call) => call.toolCallId === contentPart.toolCallId
|
7862
|
+
);
|
7852
7863
|
const toolCallPart = lastMessage.parts.find(
|
7853
7864
|
(part) => part.type === "tool-invocation" && part.toolInvocation.toolCallId === contentPart.toolCallId
|
7854
7865
|
);
|