UNPKG

@assistant-ui/react

Version:

React components for AI chat.

68 lines (61 loc) 1.53 kB
import { generateId } from "../../../internal"; import { ThreadMessage, CoreMessage, ToolCallContentPart, MessageStatus, CompleteAttachment, } from "../../../types"; export const fromCoreMessages = ( message: readonly CoreMessage[], ): ThreadMessage[] => { return message.map((message) => fromCoreMessage(message)); }; export const fromCoreMessage = ( message: CoreMessage, { id = generateId(), status = { type: "complete", reason: "unknown" } as MessageStatus, attachments = [] as readonly CompleteAttachment[], } = {}, ): ThreadMessage => { const commonProps = { id, createdAt: new Date(), }; const role = message.role; switch (role) { case "assistant": return { ...commonProps, role, content: message.content.map((part) => { if (part.type === "tool-call") { return { ...part, argsText: JSON.stringify(part.args), } satisfies ToolCallContentPart; } return part; }), status, } satisfies ThreadMessage; case "user": return { ...commonProps, role, content: message.content, attachments, } satisfies ThreadMessage; case "system": return { ...commonProps, role, content: message.content, } satisfies ThreadMessage; default: { const unsupportedRole: never = role; throw new Error(`Unknown message role: ${unsupportedRole}`); } } };