import { describe, expect, it } from "vitest"; import { parseCliJsonl } from "./cli-output.js"; describe("parseCliJsonl", () => { it("parses Claude stream-json result events", () => { const result = parseCliJsonl( [ JSON.stringify({ type: "init", session_id: "session-123" }), JSON.stringify({ type: "result", session_id: "session-123", result: "Claude says hello", usage: { input_tokens: 12, output_tokens: 3, cache_read_input_tokens: 4, }, }), ].join("\n"), { command: "claude", output: "jsonl", sessionIdFields: ["session_id"], }, "claude-cli", ); expect(result).toEqual({ text: "Claude says hello", sessionId: "session-123", usage: { input: 12, output: 3, cacheRead: 4, cacheWrite: undefined, total: undefined, }, }); }); it("preserves Claude session metadata even when the final result text is empty", () => { const result = parseCliJsonl( [ JSON.stringify({ type: "init", session_id: "session-456" }), JSON.stringify({ type: "result", session_id: "session-456", result: " ", usage: { input_tokens: 18, output_tokens: 0, }, }), ].join("\n"), { command: "claude", output: "jsonl", sessionIdFields: ["session_id"], }, "claude-cli", ); expect(result).toEqual({ text: "", sessionId: "session-456", usage: { input: 18, output: undefined, cacheRead: undefined, cacheWrite: undefined, total: undefined, }, }); }); });