import { describe, expect, it } from "vitest"; import type { AgentStreamEventPayload } from "@server/shared/messages"; import { deriveOptimisticLifecycleStatus } from "./session-stream-lifecycle"; const turnCompletedEvent: AgentStreamEventPayload = { type: "turn_completed", provider: "claude", }; const turnFailedEvent: AgentStreamEventPayload = { type: "turn_failed", provider: "claude", error: "failed", }; const turnCanceledEvent: AgentStreamEventPayload = { type: "turn_canceled", provider: "codex", reason: "interrupted", }; describe("session stream lifecycle helpers", () => { it("derives optimistic terminal lifecycle only when current status is running", () => { expect(deriveOptimisticLifecycleStatus("running", turnCompletedEvent)).toBe("idle"); expect(deriveOptimisticLifecycleStatus("running", turnFailedEvent)).toBe("error"); expect(deriveOptimisticLifecycleStatus("running", turnCanceledEvent)).toBe(null); expect(deriveOptimisticLifecycleStatus("initializing", turnCompletedEvent)).toBe(null); expect(deriveOptimisticLifecycleStatus("idle", turnFailedEvent)).toBe(null); }); });