import { v4 as uuidv4 } from "uuid"; import type { ChatAssistantMessage, ChatMessagePart, ChatMessageText, } from "../types"; import type { ChatMessage } from "../types/messages"; export function createAssistantMessage(id?: string): ChatAssistantMessage { return { id: id ?? uuidv4(), sender: "bot", type: "assistant", parts: [], }; } export function createAssistantTextMessage( text: string, id?: string, ): ChatAssistantMessage { const messageId = id ?? uuidv4(); const partId = `${messageId}-text-0`; const textPart: ChatMessagePart = { type: "text", id: partId, text, status: "done", }; return { id: messageId, sender: "bot", type: "assistant", parts: [textPart], }; } export function isAssistantMessage( message: ChatMessage, ): message is ChatAssistantMessage { return ( "type" in message && message.type === "assistant" && "parts" in message && Array.isArray((message as ChatAssistantMessage).parts) ); } export function getAssistantMessageText(message: ChatMessage): string { if (isAssistantMessage(message)) { return message.parts .filter((p) => p.type === "text") .map((p) => p.text) .join(""); } if ( "text" in message && typeof (message as ChatMessageText).text === "string" ) { return (message as ChatMessageText).text; } return ""; }