mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-07 23:11:25 +00:00
fix: restore Anthropic token accounting
This commit is contained in:
50
src/agents/usage.test.ts
Normal file
50
src/agents/usage.test.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import { hasNonzeroUsage, normalizeUsage } from "./usage.js";
|
||||
|
||||
describe("normalizeUsage", () => {
|
||||
it("normalizes Anthropic-style snake_case usage", () => {
|
||||
const usage = normalizeUsage({
|
||||
input_tokens: 1200,
|
||||
output_tokens: 340,
|
||||
cache_creation_input_tokens: 200,
|
||||
cache_read_input_tokens: 50,
|
||||
total_tokens: 1790,
|
||||
});
|
||||
expect(usage).toEqual({
|
||||
input: 1200,
|
||||
output: 340,
|
||||
cacheRead: 50,
|
||||
cacheWrite: 200,
|
||||
total: 1790,
|
||||
});
|
||||
});
|
||||
|
||||
it("normalizes OpenAI-style prompt/completion usage", () => {
|
||||
const usage = normalizeUsage({
|
||||
prompt_tokens: 987,
|
||||
completion_tokens: 123,
|
||||
total_tokens: 1110,
|
||||
});
|
||||
expect(usage).toEqual({
|
||||
input: 987,
|
||||
output: 123,
|
||||
cacheRead: undefined,
|
||||
cacheWrite: undefined,
|
||||
total: 1110,
|
||||
});
|
||||
});
|
||||
|
||||
it("returns undefined for empty usage objects", () => {
|
||||
expect(normalizeUsage({})).toBeUndefined();
|
||||
});
|
||||
|
||||
it("guards against empty/zero usage overwrites", () => {
|
||||
expect(hasNonzeroUsage(undefined)).toBe(false);
|
||||
expect(hasNonzeroUsage(null)).toBe(false);
|
||||
expect(hasNonzeroUsage({})).toBe(false);
|
||||
expect(hasNonzeroUsage({ input: 0, output: 0 })).toBe(false);
|
||||
expect(hasNonzeroUsage({ input: 1 })).toBe(true);
|
||||
expect(hasNonzeroUsage({ total: 1 })).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user