UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

35 lines (34 loc) 1.59 kB
import { a as asOptionalRecord } from "./record-coerce-DItp3I4t.js"; //#region src/shared/assistant-display-content.ts const ASSISTANT_DISPLAY_CONTENT_FIELD = "openclawDisplayContent"; function isAssistantModelContentBlock(value) { const block = asOptionalRecord(value); if (!block) return false; if (block.type === "text") return typeof block.text === "string"; if (block.type === "thinking") return typeof block.thinking === "string"; return block.type === "toolCall" && typeof block.id === "string" && typeof block.name === "string" && asOptionalRecord(block.arguments) !== void 0; } function retainAssistantModelContent(blocks) { return blocks.filter(isAssistantModelContentBlock).map((block) => Object.assign({}, block)); } function readAssistantDisplayContent(message) { const record = asOptionalRecord(message); if (!record) return []; const display = record[ASSISTANT_DISPLAY_CONTENT_FIELD]; const content = Array.isArray(display) ? display : record.content; return Array.isArray(content) ? content.flatMap((block) => { const entry = asOptionalRecord(block); return entry ? [entry] : []; }) : []; } function projectAssistantDisplayContent(message) { const display = message[ASSISTANT_DISPLAY_CONTENT_FIELD]; if (message.role !== "assistant" || !Array.isArray(display)) return message; const { [ASSISTANT_DISPLAY_CONTENT_FIELD]: _, ...rest } = message; return { ...rest, content: display }; } //#endregion export { retainAssistantModelContent as i, projectAssistantDisplayContent as n, readAssistantDisplayContent as r, ASSISTANT_DISPLAY_CONTENT_FIELD as t };