UNPKG

@assistant-ui/react

Version:

React components for AI chat.

110 lines 3.29 kB
// src/runtimes/edge/converters/fromLanguageModelMessages.ts var fromLanguageModelMessages = (lm, { mergeSteps }) => { const messages = []; for (const lmMessage of lm) { const role = lmMessage.role; switch (role) { case "system": { messages.push({ role: "system", content: [ { type: "text", text: lmMessage.content } ] }); break; } case "user": { messages.push({ role: "user", content: lmMessage.content.map((part) => { const type = part.type; switch (type) { case "text": { return { type: "text", text: part.text }; } case "image": { if (part.image instanceof URL) { return { type: "image", image: part.image.href }; } throw new Error("Only images with URL data are supported"); } case "file": { throw new Error("File content parts are not supported"); } default: { const unhandledType = type; throw new Error(`Unknown content part type: ${unhandledType}`); } } }) }); break; } case "assistant": { const newContent = lmMessage.content.map((part) => { if (part.type === "tool-call") { return { type: "tool-call", toolCallId: part.toolCallId, toolName: part.toolName, argsText: JSON.stringify(part.args), args: part.args }; } return part; }); if (mergeSteps) { const previousMessage = messages[messages.length - 1]; if (previousMessage?.role === "assistant") { previousMessage.content.push(...newContent); break; } } messages.push({ role: "assistant", content: newContent }); break; } case "tool": { const previousMessage = messages[messages.length - 1]; if (previousMessage?.role !== "assistant") throw new Error( "A tool message must be preceded by an assistant message." ); for (const tool of lmMessage.content) { const toolCall = previousMessage.content.find( (c) => c.type === "tool-call" && c.toolCallId === tool.toolCallId ); if (!toolCall) throw new Error("Received tool result for an unknown tool call."); if (toolCall.toolName !== tool.toolName) throw new Error("Tool call name mismatch."); toolCall.result = tool.result; if (tool.isError) { toolCall.isError = true; } } break; } default: { const unhandledRole = role; throw new Error(`Unknown message role: ${unhandledRole}`); } } } return messages; }; export { fromLanguageModelMessages }; //# sourceMappingURL=fromLanguageModelMessages.mjs.map