@assistant-ui/react
Version:
React components for AI chat.
117 lines • 3.14 kB
JavaScript
// 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