| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // kilocode_change - new file
- import { describe, expect, test } from "bun:test"
- import type { AssistantMessage, Message, UserMessage } from "@kilocode/sdk/v2"
- import { formatCount, getUsage } from "../../../src/cli/cmd/tui/routes/session/usage"
- function assistant(id: string, input: number, output: number, read: number): AssistantMessage {
- return {
- id,
- sessionID: "ses_1",
- role: "assistant",
- time: { created: 1 },
- parentID: "msg_parent",
- modelID: "claude-sonnet",
- providerID: "anthropic",
- mode: "code",
- agent: "code",
- path: { cwd: "/tmp", root: "/tmp" },
- cost: 0,
- tokens: {
- input,
- output,
- reasoning: 99,
- cache: {
- read,
- write: 7,
- },
- },
- }
- }
- function user(): UserMessage {
- return {
- id: "msg_user",
- sessionID: "ses_1",
- role: "user",
- time: { created: 0 },
- agent: "code",
- model: {
- providerID: "anthropic",
- modelID: "claude-sonnet",
- },
- }
- }
- describe("session usage", () => {
- test("sums input, output, and cache read across assistant messages only", () => {
- const msg: Message[] = [user(), assistant("a", 1200, 45, 300), assistant("b", 800, 55, 700)]
- expect(getUsage(msg)).toEqual({
- input: 2000,
- output: 100,
- cached: 1000,
- })
- })
- test("formats full counts with thousands separators", () => {
- expect(formatCount(0)).toBe("0")
- expect(formatCount(12345)).toBe("12,345")
- expect(formatCount(9876543)).toBe("9,876,543")
- })
- })
|