UNPKG

@assistant-ui/react

Version:

React components for AI chat.

117 lines 3.14 kB
// src/runtimes/edge/converters/toLanguageModelMessages.ts var assistantMessageSplitter = () => { const stash = []; let assistantMessage = { role: "assistant", content: [] }; let toolMessage = { role: "tool", content: [] }; return { addTextContentPart: (part) => { if (toolMessage.content.length > 0) { stash.push(assistantMessage); stash.push(toolMessage); assistantMessage = { role: "assistant", content: [] }; toolMessage = { role: "tool", content: [] }; } assistantMessage.content.push(part); }, addToolCallPart: (part) => { assistantMessage.content.push({ type: "tool-call", toolCallId: part.toolCallId, toolName: part.toolName, args: part.args }); toolMessage.content.push({ type: "tool-result", toolCallId: part.toolCallId, toolName: part.toolName, result: part.result ?? "<no result>", isError: part.isError ?? false }); }, getMessages: () => { if (toolMessage.content.length > 0) { return [...stash, assistantMessage, toolMessage]; } return [...stash, assistantMessage]; } }; }; function toLanguageModelMessages(message) { return message.flatMap((message2) => { const role = message2.role; switch (role) { case "system": { return [{ role: "system", content: message2.content[0].text }]; } case "user": { const msg = { role: "user", content: message2.content.map( (part) => { const type = part.type; switch (type) { case "text": { return part; } case "image": { return { type: "image", image: new URL(part.image) }; } default: { const unhandledType = type; throw new Error( `Unspported content part type: ${unhandledType}` ); } } } ) }; return [msg]; } case "assistant": { const splitter = assistantMessageSplitter(); for (const part of message2.content) { const type = part.type; switch (type) { case "text": { splitter.addTextContentPart(part); break; } case "tool-call": { splitter.addToolCallPart(part); break; } default: { const unhandledType = type; throw new Error(`Unhandled content part type: ${unhandledType}`); } } } return splitter.getMessages(); } default: { const unhandledRole = role; throw new Error(`Unknown message role: ${unhandledRole}`); } } }); } export { toLanguageModelMessages }; //# sourceMappingURL=toLanguageModelMessages.mjs.map