import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { liveThreads } from "./state.ts"; import type { ObserverPacket, Registry } from "./types.ts"; const assistantText = (messages: AgentMessage[]): string => messages .flatMap((message) => message.role === "assistant" ? message.content.filter((part) => part.type === "text").map((part) => part.text) : [], ) .join("\n\n"); export function buildPacket( registry: Registry, messages: AgentMessage[], targetMessageIds: ReadonlySet, ): ObserverPacket { return { threads: liveThreads(registry), userMessages: registry.unreconciled.filter((message) => targetMessageIds.has(message.messageId)), completedAssistantTurn: assistantText(messages), }; }