/**
* 渲染单条消息
* - user 消息:简单文本
* - assistant 消息:渲染 steps 流(thinking / code / tool_use / result / error)
*/
export default function MessageItem({ message }) {
if (message.role === "user") {
return (
);
}
// assistant
return (
{message.steps.map((step, i) => (
))}
{!message.done && message.steps.length === 0 && (
Agent is thinking…
)}
);
}
function StepBlock({ step }) {
switch (step.type) {
case "thinking":
return (
💭 Reasoning
{step.content}
);
case "code":
return (
{step.lang}
{step.content}
);
case "tool_use":
return (
🔧 {step.tool}
{step.content?.slice(0, 80)}…
);
case "observation":
return (
📊 Observation
{step.content}
);
case "result":
return (
);
case "error":
return (
❌ Error
{step.content}
);
default:
return null;
}
}