import { describe, expect, it } from "vite-plus/test"; import { EventId, type OrchestrationThreadActivity, TurnId } from "@t3tools/contracts"; import { deriveLatestContextWindowSnapshot, formatContextWindowTokens } from "./contextWindow"; function makeActivity(id: string, kind: string, payload: unknown): OrchestrationThreadActivity { return { id: EventId.make(id), tone: "info", kind, summary: kind, payload, turnId: TurnId.make("turn-1"), createdAt: "2026-03-23T00:00:00.000Z", }; } describe("contextWindow", () => { it("derives the latest valid context window snapshot", () => { const snapshot = deriveLatestContextWindowSnapshot([ makeActivity("activity-1", "context-window.updated", { usedTokens: 1000, }), makeActivity("activity-2", "tool.started", {}), makeActivity("activity-3", "context-window.updated", { usedTokens: 14_000, maxTokens: 258_000, compactsAutomatically: true, autoCompactThreshold: 200_000, }), ]); expect(snapshot).not.toBeNull(); expect(snapshot?.usedTokens).toBe(14_000); expect(snapshot?.totalProcessedTokens).toBeNull(); expect(snapshot?.maxTokens).toBe(258_000); expect(snapshot?.compactsAutomatically).toBe(true); expect(snapshot?.autoCompactThreshold).toBe(200_000); }); it("ignores malformed payloads", () => { const snapshot = deriveLatestContextWindowSnapshot([ makeActivity("activity-1", "context-window.updated", {}), ]); expect(snapshot).toBeNull(); }); it("keeps valid zero-usage snapshots", () => { const snapshot = deriveLatestContextWindowSnapshot([ makeActivity("activity-1", "context-window.updated", { usedTokens: 0, maxTokens: 100_000, }), ]); expect(snapshot).toMatchObject({ usedTokens: 0, maxTokens: 100_000, remainingTokens: 100_000, usedPercentage: 0, remainingPercentage: 100, }); }); it("formats compact token counts", () => { expect(formatContextWindowTokens(999)).toBe("999"); expect(formatContextWindowTokens(1400)).toBe("1.4k"); expect(formatContextWindowTokens(14_000)).toBe("14k"); expect(formatContextWindowTokens(258_000)).toBe("258k"); }); it("includes total processed tokens when available", () => { const snapshot = deriveLatestContextWindowSnapshot([ makeActivity("activity-1", "context-window.updated", { usedTokens: 81_659, totalProcessedTokens: 748_126, maxTokens: 258_400, lastUsedTokens: 81_659, }), ]); expect(snapshot?.usedTokens).toBe(81_659); expect(snapshot?.totalProcessedTokens).toBe(748_126); }); });