import type { ContentPart } from "sandbox-agent"; import { formatJson } from "../../utils/format"; const renderContentPart = (part: ContentPart, index: number) => { const partType = (part as { type?: string }).type ?? "unknown"; const key = `${partType}-${index}`; switch (partType) { case "text": return (
{(part as { text: string }).text}
); case "json": return (
json
{formatJson((part as { json: unknown }).json)}
); case "tool_call": { const { name, arguments: args, call_id } = part as { name: string; arguments: string; call_id: string; }; return (
tool call - {name} {call_id ? ` - ${call_id}` : ""}
{args ?
{args}
:
No arguments
}
); } case "tool_result": { const { call_id, output } = part as { call_id: string; output: string }; return (
tool result - {call_id}
{output ?
{output}
:
No output
}
); } case "file_ref": { const { path, action, diff } = part as { path: string; action: string; diff?: string | null }; return (
file - {action}
{path}
{diff &&
{diff}
}
); } case "reasoning": { const { text, visibility } = part as { text: string; visibility: string }; return (
reasoning - {visibility}
{text}
); } case "image": { const { path, mime } = part as { path: string; mime?: string | null }; return (
image {mime ? `- ${mime}` : ""}
{path}
); } case "status": { const { label, detail } = part as { label: string; detail?: string | null }; return (
status - {label}
{detail &&
{detail}
}
); } default: return (
unknown
{formatJson(part)}
); } }; export default renderContentPart;