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.js
CHANGED
@@ -119,18 +119,6 @@ var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
119
119
|
// core/util/process-chat-response.ts
|
120
120
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
121
121
|
|
122
|
-
// core/types/duplicated/usage.ts
|
123
|
-
function calculateLanguageModelUsage({
|
124
|
-
promptTokens,
|
125
|
-
completionTokens
|
126
|
-
}) {
|
127
|
-
return {
|
128
|
-
promptTokens,
|
129
|
-
completionTokens,
|
130
|
-
totalTokens: promptTokens + completionTokens
|
131
|
-
};
|
132
|
-
}
|
133
|
-
|
134
122
|
// core/ui/get-tool-invocations.ts
|
135
123
|
function getToolInvocations(message) {
|
136
124
|
return message.parts.filter(
|
@@ -596,10 +584,13 @@ var finishMessageStreamPart = {
|
|
596
584
|
const result = {
|
597
585
|
finishReason: value.finishReason
|
598
586
|
};
|
599
|
-
if ("usage" in value && value.usage != null && typeof value.usage === "object"
|
587
|
+
if ("usage" in value && value.usage != null && typeof value.usage === "object") {
|
600
588
|
result.usage = {
|
601
|
-
|
602
|
-
|
589
|
+
inputTokens: "inputTokens" in value.usage && typeof value.usage.inputTokens === "number" ? value.usage.inputTokens : void 0,
|
590
|
+
outputTokens: "outputTokens" in value.usage && typeof value.usage.outputTokens === "number" ? value.usage.outputTokens : void 0,
|
591
|
+
totalTokens: "totalTokens" in value.usage && typeof value.usage.totalTokens === "number" ? value.usage.totalTokens : void 0,
|
592
|
+
reasoningTokens: "reasoningTokens" in value.usage && typeof value.usage.reasoningTokens === "number" ? value.usage.reasoningTokens : void 0,
|
593
|
+
cachedInputTokens: "cachedInputTokens" in value.usage && typeof value.usage.cachedInputTokens === "number" ? value.usage.cachedInputTokens : void 0
|
603
594
|
};
|
604
595
|
}
|
605
596
|
return {
|
@@ -621,10 +612,13 @@ var finishStepStreamPart = {
|
|
621
612
|
finishReason: value.finishReason,
|
622
613
|
isContinued: false
|
623
614
|
};
|
624
|
-
if ("usage" in value && value.usage != null && typeof value.usage === "object"
|
615
|
+
if ("usage" in value && value.usage != null && typeof value.usage === "object") {
|
625
616
|
result.usage = {
|
626
|
-
|
627
|
-
|
617
|
+
inputTokens: "inputTokens" in value.usage && typeof value.usage.inputTokens === "number" ? value.usage.inputTokens : void 0,
|
618
|
+
outputTokens: "outputTokens" in value.usage && typeof value.usage.outputTokens === "number" ? value.usage.outputTokens : void 0,
|
619
|
+
totalTokens: "totalTokens" in value.usage && typeof value.usage.totalTokens === "number" ? value.usage.totalTokens : void 0,
|
620
|
+
reasoningTokens: "reasoningTokens" in value.usage && typeof value.usage.reasoningTokens === "number" ? value.usage.reasoningTokens : void 0,
|
621
|
+
cachedInputTokens: "cachedInputTokens" in value.usage && typeof value.usage.cachedInputTokens === "number" ? value.usage.cachedInputTokens : void 0
|
628
622
|
};
|
629
623
|
}
|
630
624
|
if ("isContinued" in value && typeof value.isContinued === "boolean") {
|
@@ -897,9 +891,9 @@ async function processChatResponse({
|
|
897
891
|
let messageAnnotations = replaceLastMessage ? lastMessage == null ? void 0 : lastMessage.annotations : void 0;
|
898
892
|
const partialToolCalls = {};
|
899
893
|
let usage = {
|
900
|
-
|
901
|
-
|
902
|
-
totalTokens:
|
894
|
+
inputTokens: void 0,
|
895
|
+
outputTokens: void 0,
|
896
|
+
totalTokens: void 0
|
903
897
|
};
|
904
898
|
let finishReason = "unknown";
|
905
899
|
function execUpdate() {
|
@@ -1072,7 +1066,7 @@ async function processChatResponse({
|
|
1072
1066
|
onFinishMessagePart(value) {
|
1073
1067
|
finishReason = value.finishReason;
|
1074
1068
|
if (value.usage != null) {
|
1075
|
-
usage =
|
1069
|
+
usage = value.usage;
|
1076
1070
|
}
|
1077
1071
|
},
|
1078
1072
|
onErrorPart(error) {
|
@@ -1129,7 +1123,11 @@ async function processChatTextResponse({
|
|
1129
1123
|
}
|
1130
1124
|
});
|
1131
1125
|
onFinish == null ? void 0 : onFinish(resultMessage, {
|
1132
|
-
usage: {
|
1126
|
+
usage: {
|
1127
|
+
inputTokens: void 0,
|
1128
|
+
outputTokens: void 0,
|
1129
|
+
totalTokens: void 0
|
1130
|
+
},
|
1133
1131
|
finishReason: "unknown"
|
1134
1132
|
});
|
1135
1133
|
}
|
@@ -1143,7 +1141,6 @@ async function callChatApi({
|
|
1143
1141
|
credentials,
|
1144
1142
|
headers,
|
1145
1143
|
abortController,
|
1146
|
-
restoreMessagesOnFailure,
|
1147
1144
|
onResponse,
|
1148
1145
|
onUpdate,
|
1149
1146
|
onFinish,
|
@@ -1155,7 +1152,7 @@ async function callChatApi({
|
|
1155
1152
|
requestType = "generate"
|
1156
1153
|
}) {
|
1157
1154
|
var _a17, _b, _c;
|
1158
|
-
const
|
1155
|
+
const response = requestType === "resume" ? await fetch2(`${api}?chatId=${body.id}`, {
|
1159
1156
|
method: "GET",
|
1160
1157
|
headers: {
|
1161
1158
|
"Content-Type": "application/json",
|
@@ -1163,7 +1160,7 @@ async function callChatApi({
|
|
1163
1160
|
},
|
1164
1161
|
signal: (_a17 = abortController == null ? void 0 : abortController()) == null ? void 0 : _a17.signal,
|
1165
1162
|
credentials
|
1166
|
-
}) : fetch2(api, {
|
1163
|
+
}) : await fetch2(api, {
|
1167
1164
|
method: "POST",
|
1168
1165
|
body: JSON.stringify(body),
|
1169
1166
|
headers: {
|
@@ -1173,19 +1170,10 @@ async function callChatApi({
|
|
1173
1170
|
signal: (_b = abortController == null ? void 0 : abortController()) == null ? void 0 : _b.signal,
|
1174
1171
|
credentials
|
1175
1172
|
});
|
1176
|
-
|
1177
|
-
|
1178
|
-
throw err;
|
1179
|
-
});
|
1180
|
-
if (onResponse) {
|
1181
|
-
try {
|
1182
|
-
await onResponse(response);
|
1183
|
-
} catch (err) {
|
1184
|
-
throw err;
|
1185
|
-
}
|
1173
|
+
if (onResponse != null) {
|
1174
|
+
await onResponse(response);
|
1186
1175
|
}
|
1187
1176
|
if (!response.ok) {
|
1188
|
-
restoreMessagesOnFailure();
|
1189
1177
|
throw new Error(
|
1190
1178
|
(_c = await response.text()) != null ? _c : "Failed to fetch the chat response."
|
1191
1179
|
);
|
@@ -1199,7 +1187,8 @@ async function callChatApi({
|
|
1199
1187
|
stream: response.body,
|
1200
1188
|
update: onUpdate,
|
1201
1189
|
onFinish,
|
1202
|
-
generateId: generateId3
|
1190
|
+
generateId: generateId3,
|
1191
|
+
getCurrentDate
|
1203
1192
|
});
|
1204
1193
|
return;
|
1205
1194
|
}
|
@@ -2094,6 +2083,7 @@ function splitArray(array, chunkSize) {
|
|
2094
2083
|
async function embedMany({
|
2095
2084
|
model,
|
2096
2085
|
values,
|
2086
|
+
maxParallelCalls = Infinity,
|
2097
2087
|
maxRetries: maxRetriesArg,
|
2098
2088
|
abortSignal,
|
2099
2089
|
headers,
|
@@ -2123,7 +2113,10 @@ async function embedMany({
|
|
2123
2113
|
}),
|
2124
2114
|
tracer,
|
2125
2115
|
fn: async (span) => {
|
2126
|
-
const maxEmbeddingsPerCall = await
|
2116
|
+
const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
|
2117
|
+
model.maxEmbeddingsPerCall,
|
2118
|
+
model.supportsParallelCalls
|
2119
|
+
]);
|
2127
2120
|
if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) {
|
2128
2121
|
const { embeddings: embeddings2, usage, response } = await retry(() => {
|
2129
2122
|
return recordSpan({
|
@@ -2194,61 +2187,69 @@ async function embedMany({
|
|
2194
2187
|
const embeddings = [];
|
2195
2188
|
const responses = [];
|
2196
2189
|
let tokens = 0;
|
2197
|
-
|
2198
|
-
|
2199
|
-
|
2200
|
-
|
2201
|
-
|
2202
|
-
|
2203
|
-
|
2204
|
-
|
2205
|
-
|
2206
|
-
|
2207
|
-
|
2208
|
-
...assembleOperationName({
|
2209
|
-
operationId: "ai.embedMany.doEmbed",
|
2210
|
-
telemetry
|
2211
|
-
}),
|
2212
|
-
...baseTelemetryAttributes,
|
2213
|
-
// specific settings that only make sense on the outer level:
|
2214
|
-
"ai.values": {
|
2215
|
-
input: () => chunk.map((value) => JSON.stringify(value))
|
2216
|
-
}
|
2217
|
-
}
|
2218
|
-
}),
|
2219
|
-
tracer,
|
2220
|
-
fn: async (doEmbedSpan) => {
|
2221
|
-
var _a17;
|
2222
|
-
const modelResponse = await model.doEmbed({
|
2223
|
-
values: chunk,
|
2224
|
-
abortSignal,
|
2225
|
-
headers,
|
2226
|
-
providerOptions
|
2227
|
-
});
|
2228
|
-
const embeddings2 = modelResponse.embeddings;
|
2229
|
-
const usage2 = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };
|
2230
|
-
doEmbedSpan.setAttributes(
|
2231
|
-
selectTelemetryAttributes({
|
2190
|
+
const parallelChunks = splitArray(
|
2191
|
+
valueChunks,
|
2192
|
+
supportsParallelCalls ? maxParallelCalls : 1
|
2193
|
+
);
|
2194
|
+
for (const parallelChunk of parallelChunks) {
|
2195
|
+
const results = await Promise.all(
|
2196
|
+
parallelChunk.map((chunk) => {
|
2197
|
+
return retry(() => {
|
2198
|
+
return recordSpan({
|
2199
|
+
name: "ai.embedMany.doEmbed",
|
2200
|
+
attributes: selectTelemetryAttributes({
|
2232
2201
|
telemetry,
|
2233
2202
|
attributes: {
|
2234
|
-
|
2235
|
-
|
2236
|
-
|
2237
|
-
|
2203
|
+
...assembleOperationName({
|
2204
|
+
operationId: "ai.embedMany.doEmbed",
|
2205
|
+
telemetry
|
2206
|
+
}),
|
2207
|
+
...baseTelemetryAttributes,
|
2208
|
+
// specific settings that only make sense on the outer level:
|
2209
|
+
"ai.values": {
|
2210
|
+
input: () => chunk.map((value) => JSON.stringify(value))
|
2211
|
+
}
|
2238
2212
|
}
|
2239
|
-
})
|
2240
|
-
|
2241
|
-
|
2242
|
-
|
2243
|
-
|
2244
|
-
|
2245
|
-
|
2246
|
-
|
2247
|
-
|
2248
|
-
|
2249
|
-
|
2250
|
-
|
2251
|
-
|
2213
|
+
}),
|
2214
|
+
tracer,
|
2215
|
+
fn: async (doEmbedSpan) => {
|
2216
|
+
var _a17;
|
2217
|
+
const modelResponse = await model.doEmbed({
|
2218
|
+
values: chunk,
|
2219
|
+
abortSignal,
|
2220
|
+
headers,
|
2221
|
+
providerOptions
|
2222
|
+
});
|
2223
|
+
const embeddings2 = modelResponse.embeddings;
|
2224
|
+
const usage = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };
|
2225
|
+
doEmbedSpan.setAttributes(
|
2226
|
+
selectTelemetryAttributes({
|
2227
|
+
telemetry,
|
2228
|
+
attributes: {
|
2229
|
+
"ai.embeddings": {
|
2230
|
+
output: () => embeddings2.map(
|
2231
|
+
(embedding) => JSON.stringify(embedding)
|
2232
|
+
)
|
2233
|
+
},
|
2234
|
+
"ai.usage.tokens": usage.tokens
|
2235
|
+
}
|
2236
|
+
})
|
2237
|
+
);
|
2238
|
+
return {
|
2239
|
+
embeddings: embeddings2,
|
2240
|
+
usage,
|
2241
|
+
response: modelResponse.response
|
2242
|
+
};
|
2243
|
+
}
|
2244
|
+
});
|
2245
|
+
});
|
2246
|
+
})
|
2247
|
+
);
|
2248
|
+
for (const result of results) {
|
2249
|
+
embeddings.push(...result.embeddings);
|
2250
|
+
responses.push(result.response);
|
2251
|
+
tokens += result.usage.tokens;
|
2252
|
+
}
|
2252
2253
|
}
|
2253
2254
|
span.setAttributes(
|
2254
2255
|
selectTelemetryAttributes({
|
@@ -3527,25 +3528,6 @@ async function standardizePrompt({
|
|
3527
3528
|
throw new Error("unreachable");
|
3528
3529
|
}
|
3529
3530
|
|
3530
|
-
// core/types/usage.ts
|
3531
|
-
function calculateLanguageModelUsage2({
|
3532
|
-
inputTokens,
|
3533
|
-
outputTokens
|
3534
|
-
}) {
|
3535
|
-
return {
|
3536
|
-
promptTokens: inputTokens != null ? inputTokens : NaN,
|
3537
|
-
completionTokens: outputTokens != null ? outputTokens : NaN,
|
3538
|
-
totalTokens: (inputTokens != null ? inputTokens : 0) + (outputTokens != null ? outputTokens : 0)
|
3539
|
-
};
|
3540
|
-
}
|
3541
|
-
function addLanguageModelUsage(usage1, usage2) {
|
3542
|
-
return {
|
3543
|
-
promptTokens: usage1.promptTokens + usage2.promptTokens,
|
3544
|
-
completionTokens: usage1.completionTokens + usage2.completionTokens,
|
3545
|
-
totalTokens: usage1.totalTokens + usage2.totalTokens
|
3546
|
-
};
|
3547
|
-
}
|
3548
|
-
|
3549
3531
|
// core/generate-object/output-strategy.ts
|
3550
3532
|
var import_provider12 = require("@ai-sdk/provider");
|
3551
3533
|
var import_provider_utils11 = require("@ai-sdk/provider-utils");
|
@@ -4078,7 +4060,7 @@ async function generateObject(options) {
|
|
4078
4060
|
throw new NoObjectGeneratedError({
|
4079
4061
|
message: "No object generated: the model did not return a response.",
|
4080
4062
|
response: responseData,
|
4081
|
-
usage:
|
4063
|
+
usage: result2.usage,
|
4082
4064
|
finishReason: result2.finishReason
|
4083
4065
|
});
|
4084
4066
|
}
|
@@ -4122,7 +4104,7 @@ async function generateObject(options) {
|
|
4122
4104
|
cause: parseResult.error,
|
4123
4105
|
text: result2,
|
4124
4106
|
response,
|
4125
|
-
usage
|
4107
|
+
usage,
|
4126
4108
|
finishReason
|
4127
4109
|
});
|
4128
4110
|
}
|
@@ -4131,7 +4113,7 @@ async function generateObject(options) {
|
|
4131
4113
|
{
|
4132
4114
|
text: result2,
|
4133
4115
|
response,
|
4134
|
-
usage
|
4116
|
+
usage
|
4135
4117
|
}
|
4136
4118
|
);
|
4137
4119
|
if (!validationResult.success) {
|
@@ -4140,7 +4122,7 @@ async function generateObject(options) {
|
|
4140
4122
|
cause: validationResult.error,
|
4141
4123
|
text: result2,
|
4142
4124
|
response,
|
4143
|
-
usage
|
4125
|
+
usage,
|
4144
4126
|
finishReason
|
4145
4127
|
});
|
4146
4128
|
}
|
@@ -4180,7 +4162,7 @@ async function generateObject(options) {
|
|
4180
4162
|
return new DefaultGenerateObjectResult({
|
4181
4163
|
object: object2,
|
4182
4164
|
finishReason,
|
4183
|
-
usage
|
4165
|
+
usage,
|
4184
4166
|
warnings,
|
4185
4167
|
request,
|
4186
4168
|
response,
|
@@ -4562,7 +4544,11 @@ var DefaultStreamObjectResult = class {
|
|
4562
4544
|
);
|
4563
4545
|
self.requestPromise.resolve(request != null ? request : {});
|
4564
4546
|
let warnings;
|
4565
|
-
let usage
|
4547
|
+
let usage = {
|
4548
|
+
inputTokens: void 0,
|
4549
|
+
outputTokens: void 0,
|
4550
|
+
totalTokens: void 0
|
4551
|
+
};
|
4566
4552
|
let finishReason;
|
4567
4553
|
let providerMetadata;
|
4568
4554
|
let object2;
|
@@ -4642,7 +4628,7 @@ var DefaultStreamObjectResult = class {
|
|
4642
4628
|
controller.enqueue({ type: "text-delta", textDelta });
|
4643
4629
|
}
|
4644
4630
|
finishReason = chunk.finishReason;
|
4645
|
-
usage =
|
4631
|
+
usage = chunk.usage;
|
4646
4632
|
providerMetadata = chunk.providerMetadata;
|
4647
4633
|
controller.enqueue({
|
4648
4634
|
...chunk,
|
@@ -4704,14 +4690,17 @@ var DefaultStreamObjectResult = class {
|
|
4704
4690
|
"ai.response.id": fullResponse.id,
|
4705
4691
|
"ai.response.model": fullResponse.modelId,
|
4706
4692
|
"ai.response.timestamp": fullResponse.timestamp.toISOString(),
|
4707
|
-
"ai.usage.
|
4708
|
-
"ai.usage.
|
4693
|
+
"ai.usage.inputTokens": finalUsage.inputTokens,
|
4694
|
+
"ai.usage.outputTokens": finalUsage.outputTokens,
|
4695
|
+
"ai.usage.totalTokens": finalUsage.totalTokens,
|
4696
|
+
"ai.usage.reasoningTokens": finalUsage.reasoningTokens,
|
4697
|
+
"ai.usage.cachedInputTokens": finalUsage.cachedInputTokens,
|
4709
4698
|
// standardized gen-ai llm span attributes:
|
4710
4699
|
"gen_ai.response.finish_reasons": [finishReason],
|
4711
4700
|
"gen_ai.response.id": fullResponse.id,
|
4712
4701
|
"gen_ai.response.model": fullResponse.modelId,
|
4713
|
-
"gen_ai.usage.input_tokens": finalUsage.
|
4714
|
-
"gen_ai.usage.output_tokens": finalUsage.
|
4702
|
+
"gen_ai.usage.input_tokens": finalUsage.inputTokens,
|
4703
|
+
"gen_ai.usage.output_tokens": finalUsage.outputTokens
|
4715
4704
|
}
|
4716
4705
|
})
|
4717
4706
|
);
|
@@ -4720,8 +4709,11 @@ var DefaultStreamObjectResult = class {
|
|
4720
4709
|
selectTelemetryAttributes({
|
4721
4710
|
telemetry,
|
4722
4711
|
attributes: {
|
4723
|
-
"ai.usage.
|
4724
|
-
"ai.usage.
|
4712
|
+
"ai.usage.inputTokens": finalUsage.inputTokens,
|
4713
|
+
"ai.usage.outputTokens": finalUsage.outputTokens,
|
4714
|
+
"ai.usage.totalTokens": finalUsage.totalTokens,
|
4715
|
+
"ai.usage.reasoningTokens": finalUsage.reasoningTokens,
|
4716
|
+
"ai.usage.cachedInputTokens": finalUsage.cachedInputTokens,
|
4725
4717
|
"ai.response.object": {
|
4726
4718
|
output: () => JSON.stringify(object2)
|
4727
4719
|
}
|
@@ -4951,6 +4943,26 @@ function prepareToolsAndToolChoice({
|
|
4951
4943
|
};
|
4952
4944
|
}
|
4953
4945
|
|
4946
|
+
// core/types/usage.ts
|
4947
|
+
function addLanguageModelUsage(usage1, usage2) {
|
4948
|
+
return {
|
4949
|
+
inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
|
4950
|
+
outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
|
4951
|
+
totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
|
4952
|
+
reasoningTokens: addTokenCounts(
|
4953
|
+
usage1.reasoningTokens,
|
4954
|
+
usage2.reasoningTokens
|
4955
|
+
),
|
4956
|
+
cachedInputTokens: addTokenCounts(
|
4957
|
+
usage1.cachedInputTokens,
|
4958
|
+
usage2.cachedInputTokens
|
4959
|
+
)
|
4960
|
+
};
|
4961
|
+
}
|
4962
|
+
function addTokenCounts(tokenCount1, tokenCount2) {
|
4963
|
+
return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);
|
4964
|
+
}
|
4965
|
+
|
4954
4966
|
// core/util/split-on-last-whitespace.ts
|
4955
4967
|
var lastWhitespaceRegexp = /^([\s\S]*?)(\s+)(\S*)$/;
|
4956
4968
|
function splitOnLastWhitespace(text2) {
|
@@ -5275,9 +5287,9 @@ async function generateText({
|
|
5275
5287
|
const sources = [];
|
5276
5288
|
const steps = [];
|
5277
5289
|
let usage = {
|
5278
|
-
|
5279
|
-
|
5280
|
-
totalTokens: 0
|
5290
|
+
inputTokens: void 0,
|
5291
|
+
outputTokens: void 0,
|
5292
|
+
totalTokens: void 0
|
5281
5293
|
};
|
5282
5294
|
let stepType = "initial";
|
5283
5295
|
do {
|
@@ -5418,10 +5430,7 @@ async function generateText({
|
|
5418
5430
|
messages: stepInputMessages,
|
5419
5431
|
abortSignal
|
5420
5432
|
});
|
5421
|
-
|
5422
|
-
currentModelResponse.usage
|
5423
|
-
);
|
5424
|
-
usage = addLanguageModelUsage(usage, currentUsage);
|
5433
|
+
usage = addLanguageModelUsage(usage, currentModelResponse.usage);
|
5425
5434
|
let nextStepType = "done";
|
5426
5435
|
if (++stepCount < maxSteps) {
|
5427
5436
|
if (continueSteps && currentModelResponse.finishReason === "length" && // only use continue when there are no tool calls:
|
@@ -5486,7 +5495,7 @@ async function generateText({
|
|
5486
5495
|
toolCalls: currentToolCalls,
|
5487
5496
|
toolResults: currentToolResults,
|
5488
5497
|
finishReason: currentModelResponse.finishReason,
|
5489
|
-
usage:
|
5498
|
+
usage: currentModelResponse.usage,
|
5490
5499
|
warnings: currentModelResponse.warnings,
|
5491
5500
|
request: (_e = currentModelResponse.request) != null ? _e : {},
|
5492
5501
|
response: {
|
@@ -6012,6 +6021,7 @@ function runToolsTransformation({
|
|
6012
6021
|
const chunkType = chunk.type;
|
6013
6022
|
switch (chunkType) {
|
6014
6023
|
case "stream-start":
|
6024
|
+
case "finish":
|
6015
6025
|
case "text":
|
6016
6026
|
case "reasoning":
|
6017
6027
|
case "reasoning-part-finish":
|
@@ -6132,15 +6142,6 @@ function runToolsTransformation({
|
|
6132
6142
|
}
|
6133
6143
|
break;
|
6134
6144
|
}
|
6135
|
-
case "finish": {
|
6136
|
-
finishChunk = {
|
6137
|
-
type: "finish",
|
6138
|
-
finishReason: chunk.finishReason,
|
6139
|
-
usage: calculateLanguageModelUsage2(chunk.usage),
|
6140
|
-
providerMetadata: chunk.providerMetadata
|
6141
|
-
};
|
6142
|
-
break;
|
6143
|
-
}
|
6144
6145
|
default: {
|
6145
6146
|
const _exhaustiveCheck = chunkType;
|
6146
6147
|
throw new Error(`Unhandled chunk type: ${_exhaustiveCheck}`);
|
@@ -6503,9 +6504,9 @@ var DefaultStreamTextResult = class {
|
|
6503
6504
|
self.reasoningDetailsPromise.resolve(lastStep.reasoning);
|
6504
6505
|
const finishReason = recordedFinishReason != null ? recordedFinishReason : "unknown";
|
6505
6506
|
const usage = recordedUsage != null ? recordedUsage : {
|
6506
|
-
|
6507
|
-
|
6508
|
-
totalTokens:
|
6507
|
+
inputTokens: void 0,
|
6508
|
+
outputTokens: void 0,
|
6509
|
+
totalTokens: void 0
|
6509
6510
|
};
|
6510
6511
|
self.finishReasonPromise.resolve(finishReason);
|
6511
6512
|
self.usagePromise.resolve(usage);
|
@@ -6541,8 +6542,11 @@ var DefaultStreamTextResult = class {
|
|
6541
6542
|
return ((_a18 = lastStep.toolCalls) == null ? void 0 : _a18.length) ? JSON.stringify(lastStep.toolCalls) : void 0;
|
6542
6543
|
}
|
6543
6544
|
},
|
6544
|
-
"ai.usage.
|
6545
|
-
"ai.usage.
|
6545
|
+
"ai.usage.inputTokens": usage.inputTokens,
|
6546
|
+
"ai.usage.outputTokens": usage.outputTokens,
|
6547
|
+
"ai.usage.totalTokens": usage.totalTokens,
|
6548
|
+
"ai.usage.reasoningTokens": usage.reasoningTokens,
|
6549
|
+
"ai.usage.cachedInputTokens": usage.cachedInputTokens
|
6546
6550
|
}
|
6547
6551
|
})
|
6548
6552
|
);
|
@@ -6707,9 +6711,9 @@ var DefaultStreamTextResult = class {
|
|
6707
6711
|
let activeReasoningPart2 = void 0;
|
6708
6712
|
let stepFinishReason = "unknown";
|
6709
6713
|
let stepUsage = {
|
6710
|
-
|
6711
|
-
|
6712
|
-
totalTokens: 0
|
6714
|
+
inputTokens: void 0,
|
6715
|
+
outputTokens: void 0,
|
6716
|
+
totalTokens: void 0
|
6713
6717
|
};
|
6714
6718
|
let stepProviderMetadata;
|
6715
6719
|
let stepFirstChunk = true;
|
@@ -6738,7 +6742,7 @@ var DefaultStreamTextResult = class {
|
|
6738
6742
|
transformedStream.pipeThrough(
|
6739
6743
|
new TransformStream({
|
6740
6744
|
async transform(chunk, controller) {
|
6741
|
-
var _a17, _b, _c;
|
6745
|
+
var _a17, _b, _c, _d;
|
6742
6746
|
if (chunk.type === "stream-start") {
|
6743
6747
|
warnings = chunk.warnings;
|
6744
6748
|
return;
|
@@ -6834,7 +6838,7 @@ var DefaultStreamTextResult = class {
|
|
6834
6838
|
doStreamSpan.addEvent("ai.stream.finish");
|
6835
6839
|
doStreamSpan.setAttributes({
|
6836
6840
|
"ai.response.msToFinish": msToFinish,
|
6837
|
-
"ai.response.
|
6841
|
+
"ai.response.avgOutputTokensPerSecond": 1e3 * ((_d = stepUsage.outputTokens) != null ? _d : 0) / msToFinish
|
6838
6842
|
});
|
6839
6843
|
break;
|
6840
6844
|
}
|
@@ -6897,14 +6901,17 @@ var DefaultStreamTextResult = class {
|
|
6897
6901
|
"ai.response.id": stepResponse.id,
|
6898
6902
|
"ai.response.model": stepResponse.modelId,
|
6899
6903
|
"ai.response.timestamp": stepResponse.timestamp.toISOString(),
|
6900
|
-
"ai.usage.
|
6901
|
-
"ai.usage.
|
6904
|
+
"ai.usage.inputTokens": stepUsage.inputTokens,
|
6905
|
+
"ai.usage.outputTokens": stepUsage.outputTokens,
|
6906
|
+
"ai.usage.totalTokens": stepUsage.totalTokens,
|
6907
|
+
"ai.usage.reasoningTokens": stepUsage.reasoningTokens,
|
6908
|
+
"ai.usage.cachedInputTokens": stepUsage.cachedInputTokens,
|
6902
6909
|
// standardized gen-ai llm span attributes:
|
6903
6910
|
"gen_ai.response.finish_reasons": [stepFinishReason],
|
6904
6911
|
"gen_ai.response.id": stepResponse.id,
|
6905
6912
|
"gen_ai.response.model": stepResponse.modelId,
|
6906
|
-
"gen_ai.usage.input_tokens": stepUsage.
|
6907
|
-
"gen_ai.usage.output_tokens": stepUsage.
|
6913
|
+
"gen_ai.usage.input_tokens": stepUsage.inputTokens,
|
6914
|
+
"gen_ai.usage.output_tokens": stepUsage.outputTokens
|
6908
6915
|
}
|
6909
6916
|
})
|
6910
6917
|
);
|
@@ -6986,9 +6993,9 @@ var DefaultStreamTextResult = class {
|
|
6986
6993
|
currentStep: 0,
|
6987
6994
|
responseMessages: [],
|
6988
6995
|
usage: {
|
6989
|
-
|
6990
|
-
|
6991
|
-
totalTokens: 0
|
6996
|
+
inputTokens: void 0,
|
6997
|
+
outputTokens: void 0,
|
6998
|
+
totalTokens: void 0
|
6992
6999
|
},
|
6993
7000
|
previousStepText: "",
|
6994
7001
|
stepType: "initial",
|
@@ -7217,8 +7224,11 @@ var DefaultStreamTextResult = class {
|
|
7217
7224
|
formatDataStreamPart("finish_step", {
|
7218
7225
|
finishReason: chunk.finishReason,
|
7219
7226
|
usage: sendUsage ? {
|
7220
|
-
|
7221
|
-
|
7227
|
+
inputTokens: chunk.usage.inputTokens,
|
7228
|
+
outputTokens: chunk.usage.outputTokens,
|
7229
|
+
totalTokens: chunk.usage.totalTokens,
|
7230
|
+
reasoningTokens: chunk.usage.reasoningTokens,
|
7231
|
+
cachedInputTokens: chunk.usage.cachedInputTokens
|
7222
7232
|
} : void 0,
|
7223
7233
|
isContinued: chunk.isContinued
|
7224
7234
|
})
|
@@ -7231,8 +7241,11 @@ var DefaultStreamTextResult = class {
|
|
7231
7241
|
formatDataStreamPart("finish_message", {
|
7232
7242
|
finishReason: chunk.finishReason,
|
7233
7243
|
usage: sendUsage ? {
|
7234
|
-
|
7235
|
-
|
7244
|
+
inputTokens: chunk.usage.inputTokens,
|
7245
|
+
outputTokens: chunk.usage.outputTokens,
|
7246
|
+
totalTokens: chunk.usage.totalTokens,
|
7247
|
+
reasoningTokens: chunk.usage.reasoningTokens,
|
7248
|
+
cachedInputTokens: chunk.usage.cachedInputTokens
|
7236
7249
|
} : void 0
|
7237
7250
|
})
|
7238
7251
|
);
|
@@ -7884,7 +7897,6 @@ function appendResponseMessages({
|
|
7884
7897
|
if (isLastMessageAssistant) {
|
7885
7898
|
const maxStep = extractMaxToolInvocationStep(
|
7886
7899
|
getToolInvocations(lastMessage)
|
7887
|
-
// TODO remove once Message is removed
|
7888
7900
|
);
|
7889
7901
|
(_a17 = lastMessage.parts) != null ? _a17 : lastMessage.parts = [];
|
7890
7902
|
lastMessage.content = textContent;
|
@@ -7921,10 +7933,9 @@ function appendResponseMessages({
|
|
7921
7933
|
}
|
7922
7934
|
(_b = lastMessage.parts) != null ? _b : lastMessage.parts = [];
|
7923
7935
|
for (const contentPart of message.content) {
|
7924
|
-
const toolCall = getToolInvocations(
|
7925
|
-
|
7926
|
-
|
7927
|
-
).find((call) => call.toolCallId === contentPart.toolCallId);
|
7936
|
+
const toolCall = getToolInvocations(lastMessage).find(
|
7937
|
+
(call) => call.toolCallId === contentPart.toolCallId
|
7938
|
+
);
|
7928
7939
|
const toolCallPart = lastMessage.parts.find(
|
7929
7940
|
(part) => part.type === "tool-invocation" && part.toolInvocation.toolCallId === contentPart.toolCallId
|
7930
7941
|
);
|