import { describe, expect, it, vi } from "vitest"; import type { EmbeddedAgentRunResult } from "../../agents/embedded-agent-runner/types.js"; import { keepCliSessionBindingOnlyWhenReused } from "./agent-runner-cli-dispatch.js"; describe("keepCliSessionBindingOnlyWhenReused", () => { it("keeps the first room-event CLI binding when no binding exists yet", () => { const result = { payloads: [], meta: { durationMs: 1, agentMeta: { sessionId: "new-cli-session", provider: "claude-cli", model: "claude-opus-4-8", cliSessionBinding: { sessionId: "new-cli-session", authProfileId: "profile", }, }, }, } satisfies EmbeddedAgentRunResult; expect(keepCliSessionBindingOnlyWhenReused({ result })).toBe(result); }); it("drops a replacement room-event CLI binding when an existing binding was reused", () => { const onDroppedReplacement = vi.fn(); const result = keepCliSessionBindingOnlyWhenReused({ existingSessionId: "existing-cli-session", onDroppedReplacement, result: { payloads: [], meta: { durationMs: 1, agentMeta: { sessionId: "replacement-cli-session", provider: "claude-cli", model: "claude-opus-4-8", cliSessionBinding: { sessionId: "replacement-cli-session", authProfileId: "profile", }, }, }, } satisfies EmbeddedAgentRunResult, }); expect(onDroppedReplacement).toHaveBeenCalledOnce(); expect(result.meta.agentMeta?.sessionId).toBe(""); expect(result.meta.agentMeta?.cliSessionBinding).toBeUndefined(); }); });