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<string>,
): ObserverPacket {
return {
threads: liveThreads(registry),
userMessages: registry.unreconciled.filter((message) => targetMessageIds.has(message.messageId)),
completedAssistantTurn: assistantText(messages),
};
}