Skip to content

Commit fcf4bff

Browse files
committed
fix: code review
1 parent 09952a9 commit fcf4bff

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

packages/core/src/utils/usage-normalizer.spec.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,32 @@ describe("normalizeFinishUsageStream", () => {
124124
expect(normalized[2].totalUsage).toEqual(lastStepUsage);
125125
});
126126

127+
it("uses finish metadata to override totalUsage when finish-step metadata is missing", async () => {
128+
const lastStepUsage: LanguageModelUsage = {
129+
inputTokens: 9,
130+
outputTokens: 4,
131+
totalTokens: 13,
132+
};
133+
const totalUsage: LanguageModelUsage = {
134+
inputTokens: 20,
135+
outputTokens: 10,
136+
totalTokens: 30,
137+
};
138+
const parts = [
139+
{ type: "finish-step", usage: lastStepUsage },
140+
{
141+
type: "finish",
142+
finishReason: "stop",
143+
totalUsage,
144+
providerMetadata: { anthropic: { model: "claude" } },
145+
},
146+
];
147+
148+
const normalized = await collectStream(normalizeFinishUsageStream(toAsync(parts)));
149+
150+
expect(normalized[1].totalUsage).toEqual(lastStepUsage);
151+
});
152+
127153
it("overrides totalUsage when cache fields indicate anthropic usage", async () => {
128154
const lastStepUsage = {
129155
inputTokens: 8,

packages/core/src/utils/usage-normalizer.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ export async function* normalizeFinishUsageStream<T extends StreamPartWithUsage>
6060
}
6161
}
6262

63+
if (part.type === "finish" && !useLastStepUsage) {
64+
if (shouldUseLastStepUsage(part.providerMetadata, lastStepUsage)) {
65+
useLastStepUsage = true;
66+
if (part.usage) {
67+
lastStepUsage = part.usage;
68+
}
69+
}
70+
}
71+
6372
if (part.type === "finish" && useLastStepUsage && lastStepUsage) {
6473
if (part.totalUsage !== undefined) {
6574
yield { ...part, totalUsage: lastStepUsage };

0 commit comments

Comments
 (0)