

















@@ -5,12 +5,14 @@ export type UsageAccumulator = {
55output: number;
66cacheRead: number;
77cacheWrite: number;
8+reasoningTokens: number;
89total: number;
910/** Exact usage snapshot from the most recent API call. */
1011lastInput: number;
1112lastOutput: number;
1213lastCacheRead: number;
1314lastCacheWrite: number;
15+lastReasoningTokens: number;
1416lastTotal: number;
1517};
1618@@ -19,21 +21,28 @@ export const createUsageAccumulator = (): UsageAccumulator => ({
1921output: 0,
2022cacheRead: 0,
2123cacheWrite: 0,
24+reasoningTokens: 0,
2225total: 0,
2326lastInput: 0,
2427lastOutput: 0,
2528lastCacheRead: 0,
2629lastCacheWrite: 0,
30+lastReasoningTokens: 0,
2731lastTotal: 0,
2832});
29333034type MaybeUsage = NormalizedUsage | undefined;
31353236const hasUsageValues = (usage: MaybeUsage): usage is NormalizedUsage =>
3337!!usage &&
34-[usage.input, usage.output, usage.cacheRead, usage.cacheWrite, usage.total].some(
35-(value) => typeof value === "number" && Number.isFinite(value) && value > 0,
36-);
38+[
39+usage.input,
40+usage.output,
41+usage.cacheRead,
42+usage.cacheWrite,
43+usage.reasoningTokens,
44+usage.total,
45+].some((value) => typeof value === "number" && Number.isFinite(value) && value > 0);
37463847export const mergeUsageIntoAccumulator = (target: UsageAccumulator, usage: MaybeUsage) => {
3948if (!hasUsageValues(usage)) {
@@ -46,11 +55,13 @@ export const mergeUsageIntoAccumulator = (target: UsageAccumulator, usage: Maybe
4655target.output += usage.output ?? 0;
4756target.cacheRead += usage.cacheRead ?? 0;
4857target.cacheWrite += usage.cacheWrite ?? 0;
58+target.reasoningTokens += usage.reasoningTokens ?? 0;
4959target.total += callTotal;
5060target.lastInput = usage.input ?? 0;
5161target.lastOutput = usage.output ?? 0;
5262target.lastCacheRead = usage.cacheRead ?? 0;
5363target.lastCacheWrite = usage.cacheWrite ?? 0;
64+target.lastReasoningTokens = usage.reasoningTokens ?? 0;
5465target.lastTotal = callTotal;
5566};
5667@@ -60,6 +71,7 @@ export const toNormalizedUsage = (usage: UsageAccumulator): NormalizedUsage | un
6071usage.output > 0 ||
6172usage.cacheRead > 0 ||
6273usage.cacheWrite > 0 ||
74+usage.reasoningTokens > 0 ||
6375usage.total > 0;
6476if (!hasUsage) {
6577return undefined;
@@ -69,6 +81,7 @@ export const toNormalizedUsage = (usage: UsageAccumulator): NormalizedUsage | un
6981output: usage.output || undefined,
7082cacheRead: usage.cacheRead || undefined,
7183cacheWrite: usage.cacheWrite || undefined,
84+ ...(usage.reasoningTokens > 0 ? { reasoningTokens: usage.reasoningTokens } : {}),
7285total: usage.total || undefined,
7386};
7487};
@@ -79,6 +92,7 @@ export const toLastCallUsage = (usage: UsageAccumulator): NormalizedUsage | unde
7992usage.lastOutput > 0 ||
8093usage.lastCacheRead > 0 ||
8194usage.lastCacheWrite > 0 ||
95+usage.lastReasoningTokens > 0 ||
8296usage.lastTotal > 0;
8397if (!hasUsage) {
8498return undefined;
@@ -88,6 +102,7 @@ export const toLastCallUsage = (usage: UsageAccumulator): NormalizedUsage | unde
88102output: usage.lastOutput || undefined,
89103cacheRead: usage.lastCacheRead || undefined,
90104cacheWrite: usage.lastCacheWrite || undefined,
105+ ...(usage.lastReasoningTokens > 0 ? { reasoningTokens: usage.lastReasoningTokens } : {}),
91106total: usage.lastTotal || undefined,
92107};
93108};
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。