/** * Tool HTML renderer for custom tools in HTML export. * * Renders custom tool calls and results to HTML by invoking their TUI renderers * and converting the ANSI output to HTML. */ import { ansiLinesToHtml } from "./ansi-to-html.js"; /** * Create a tool HTML renderer. * * The renderer looks up tool definitions and invokes their renderCall/renderResult * methods, converting the resulting TUI Component output (ANSI) to HTML. */ export function createToolHtmlRenderer(deps) { const { getToolDefinition, theme, width = 100 } = deps; return { renderCall(toolName, args) { try { const toolDef = getToolDefinition(toolName); if (!toolDef?.renderCall) { return undefined; } const component = toolDef.renderCall(args, theme); if (!component) { return undefined; } const lines = component.render(width); return ansiLinesToHtml(lines); } catch { // On error, return undefined to trigger JSON fallback return undefined; } }, renderResult(toolName, result, details, isError) { try { const toolDef = getToolDefinition(toolName); if (!toolDef?.renderResult) { return undefined; } // Build AgentToolResult from content array // Cast content since session storage uses generic object types const agentToolResult = { content: result, details, isError, }; // Always render expanded, client-side will apply truncation const component = toolDef.renderResult( agentToolResult, { expanded: true, isPartial: false }, theme, ); if (!component) { return undefined; } const lines = component.render(width); return ansiLinesToHtml(lines); } catch { // On error, return undefined to trigger JSON fallback return undefined; } }, }; } //# sourceMappingURL=tool-renderer.js.map