import type { AssistantMessage } from "@mariozechner/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { createStubSessionHarness, emitAssistantTextDelta, emitAssistantTextEnd, } from "./pi-embedded-subscribe.e2e-harness.js"; import { subscribeEmbeddedPiSession } from "./pi-embedded-subscribe.js"; describe("subscribeEmbeddedPiSession", () => { it("keeps assistantTexts to the final answer when block replies are disabled", () => { const { session, emit } = createStubSessionHarness(); const subscription = subscribeEmbeddedPiSession({ session, runId: "run", reasoningMode: "on", }); emit({ type: "message_start", message: { role: "assistant" } }); emitAssistantTextDelta({ emit, delta: "Final " }); emitAssistantTextDelta({ emit, delta: "answer" }); emitAssistantTextEnd({ emit }); const assistantMessage = { role: "assistant", content: [ { type: "thinking", thinking: "Because it helps" }, { type: "text", text: "Final answer" }, ], } as AssistantMessage; emit({ type: "message_end", message: assistantMessage }); expect(subscription.assistantTexts).toEqual(["Final answer"]); }); it("suppresses partial replies when reasoning is enabled and block replies are disabled", () => { const { session, emit } = createStubSessionHarness(); const onPartialReply = vi.fn(); const subscription = subscribeEmbeddedPiSession({ session, runId: "run", reasoningMode: "on", onPartialReply, }); emit({ type: "message_start", message: { role: "assistant" } }); emitAssistantTextDelta({ emit, delta: "Draft " }); emitAssistantTextDelta({ emit, delta: "reply" }); expect(onPartialReply).not.toHaveBeenCalled(); const assistantMessage = { role: "assistant", content: [ { type: "thinking", thinking: "Because it helps" }, { type: "text", text: "Final answer" }, ], } as AssistantMessage; emit({ type: "message_end", message: assistantMessage }); emitAssistantTextEnd({ emit, content: "Draft reply" }); expect(onPartialReply).not.toHaveBeenCalled(); expect(subscription.assistantTexts).toEqual(["Final answer"]); }); });