import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { AssistantMessage, TextContent } from "@earendil-works/pi-ai"; export function isAssistantMessage(m: AgentMessage): m is AssistantMessage { return m.role === "assistant" && Array.isArray(m.content); } export function getMessageText(message: AgentMessage): string { if (!("content" in message)) return ""; const content = message.content; if (typeof content === "string") return content; if (!Array.isArray(content)) return ""; return content .filter((block): block is TextContent => block.type === "text") .map((block) => block.text) .join("\n"); } export function truncateText(text: string, limit = 500): string { const normalized = text.replace(/\s+/g, " ").trim(); return normalized.length > limit ? `${normalized.slice(0, limit - 1)}…` : normalized; } export function getTextContent(content: Array<{ type: string; text?: string }>): string { return content.filter((item) => item.type === "text" && typeof item.text === "string").map((item) => item.text).join("\n"); }