iosm-cli 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution.ts"],"names":[],"mappings":"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","sourcesContent":["import * as os from \"node:os\";\nimport {\n\tBox,\n\tContainer,\n\tgetCapabilities,\n\tgetImageDimensions,\n\tImage,\n\timageFallback,\n\tSpacer,\n\tText,\n\ttype TUI,\n\ttruncateToWidth,\n} from \"@mariozechner/pi-tui\";\nimport stripAnsi from \"strip-ansi\";\nimport type { ToolDefinition } from \"../../../core/extensions/types.js\";\nimport { computeEditDiff, type EditDiffError, type EditDiffResult } from \"../../../core/tools/edit-diff.js\";\nimport { allTools } from \"../../../core/tools/index.js\";\nimport { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize } from \"../../../core/tools/truncate.js\";\nimport { convertToPng } from \"../../../utils/image-convert.js\";\nimport { sanitizeBinaryOutput } from \"../../../utils/shell.js\";\nimport { getLanguageFromPath, highlightCode, theme } from \"../theme/theme.js\";\nimport { renderDiff } from \"./diff.js\";\nimport { keyHint } from \"./keybinding-hints.js\";\nimport { MessageWindow } from \"./message-window.js\";\nimport { truncateToVisualLines } from \"./visual-truncate.js\";\n\n// Preview line limit for bash when not expanded\nconst BASH_PREVIEW_LINES = 5;\nconst TOOL_BOX_PADDING_X = 2;\nconst TOOL_BOX_PADDING_Y = 1;\n// During partial write tool-call streaming, re-highlight the first N lines fully\n// to keep multiline tokenization mostly correct without re-highlighting the full file.\nconst WRITE_PARTIAL_FULL_HIGHLIGHT_LINES = 50;\n\n/**\n * Convert absolute path to tilde notation if it's in home directory\n */\nfunction shortenPath(path: unknown): string {\n\tif (typeof path !== \"string\") return \"\";\n\tconst home = os.homedir();\n\tif (path.startsWith(home)) {\n\t\treturn `~${path.slice(home.length)}`;\n\t}\n\treturn path;\n}\n\n/**\n * Replace tabs with spaces for consistent rendering\n */\nfunction replaceTabs(text: string): string {\n\treturn text.replace(/\\t/g, \" \");\n}\n\n/**\n * Normalize control characters for terminal preview rendering.\n * Keep tool arguments unchanged, sanitize only display text.\n */\nfunction normalizeDisplayText(text: string): string {\n\treturn text.replace(/\\r/g, \"\");\n}\n\n/** Safely coerce value to string for display. Returns null if invalid type. */\nfunction str(value: unknown): string | null {\n\tif (typeof value === \"string\") return value;\n\tif (value == null) return \"\";\n\treturn null; // Invalid type\n}\n\ntype ChecklistStatus = \"pending\" | \"in_progress\" | \"done\" | \"blocked\";\n\ninterface ChecklistItem {\n\tid?: string;\n\ttitle: string;\n\tstatus: ChecklistStatus;\n\tactiveForm?: string;\n}\n\nfunction normalizeChecklistStatus(value: unknown): ChecklistStatus {\n\tif (typeof value !== \"string\") return \"pending\";\n\tconst token = value.trim().toLowerCase().replace(/[\\s-]+/g, \"_\");\n\tswitch (token) {\n\t\tcase \"done\":\n\t\tcase \"complete\":\n\t\tcase \"completed\":\n\t\tcase \"success\":\n\t\tcase \"checked\":\n\t\tcase \"x\":\n\t\t\treturn \"done\";\n\t\tcase \"in_progress\":\n\t\tcase \"inprogress\":\n\t\tcase \"active\":\n\t\tcase \"current\":\n\t\tcase \"doing\":\n\t\t\treturn \"in_progress\";\n\t\tcase \"blocked\":\n\t\tcase \"waiting\":\n\t\tcase \"on_hold\":\n\t\tcase \"paused\":\n\t\t\treturn \"blocked\";\n\t\tdefault:\n\t\t\treturn \"pending\";\n\t}\n}\n\nfunction buildChecklistItem(value: unknown): ChecklistItem | undefined {\n\tif (typeof value === \"string\") {\n\t\tconst title = value.trim();\n\t\tif (!title) return undefined;\n\t\treturn { title, status: \"pending\" };\n\t}\n\tif (!value || typeof value !== \"object\") {\n\t\treturn undefined;\n\t}\n\tconst candidate = value as Record<string, unknown>;\n\tconst title =\n\t\t(typeof candidate.subject === \"string\" && candidate.subject.trim()) ||\n\t\t(typeof candidate.title === \"string\" && candidate.title.trim()) ||\n\t\t(typeof candidate.step === \"string\" && candidate.step.trim()) ||\n\t\t(typeof candidate.text === \"string\" && candidate.text.trim()) ||\n\t\t(typeof candidate.description === \"string\" && candidate.description.trim()) ||\n\t\tundefined;\n\tif (!title) return undefined;\n\n\tconst id = typeof candidate.id === \"string\" && candidate.id.trim() ? candidate.id.trim() : undefined;\n\tconst activeForm =\n\t\ttypeof candidate.activeForm === \"string\" && candidate.activeForm.trim()\n\t\t\t? candidate.activeForm.trim()\n\t\t\t: undefined;\n\n\tif (typeof candidate.completed === \"boolean\") {\n\t\treturn {\n\t\t\tid,\n\t\t\ttitle,\n\t\t\tstatus: candidate.completed ? \"done\" : \"pending\",\n\t\t\tactiveForm,\n\t\t};\n\t}\n\n\treturn {\n\t\tid,\n\t\ttitle,\n\t\tstatus: normalizeChecklistStatus(candidate.status),\n\t\tactiveForm,\n\t};\n}\n\nfunction parseChecklistMarkdown(markdown: string): ChecklistItem[] {\n\tconst lines = markdown\n\t\t.split(/\\r?\\n/g)\n\t\t.map((line) => line.trim())\n\t\t.filter((line) => line.length > 0);\n\tconst items: ChecklistItem[] = [];\n\tfor (const line of lines) {\n\t\tconst checklistMatch =\n\t\t\tline.match(/^(?:[-*]|\\d+[.)])\\s*\\[([^\\]]+)\\]\\s+(.+)$/) ?? line.match(/^\\[([^\\]]+)\\]\\s+(.+)$/);\n\t\tif (checklistMatch) {\n\t\t\tconst title = checklistMatch[2]?.trim();\n\t\t\tif (!title) continue;\n\t\t\titems.push({\n\t\t\t\ttitle,\n\t\t\t\tstatus: normalizeChecklistStatus(checklistMatch[1]),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst bulletMatch = line.match(/^(?:[-*]|\\d+[.)])\\s+(.+)$/);\n\t\tif (!bulletMatch) continue;\n\t\tconst title = bulletMatch[1]?.trim();\n\t\tif (!title) continue;\n\t\titems.push({\n\t\t\ttitle,\n\t\t\tstatus: \"pending\",\n\t\t});\n\t}\n\treturn items;\n}\n\nfunction extractChecklistItems(value: unknown): ChecklistItem[] {\n\tif (typeof value === \"string\") {\n\t\treturn parseChecklistMarkdown(value);\n\t}\n\tif (!Array.isArray(value)) {\n\t\treturn [];\n\t}\n\treturn value.map((item) => buildChecklistItem(item)).filter((item): item is ChecklistItem => !!item);\n}\n\nfunction countChecklistByStatus(items: ChecklistItem[]): {\n\tdone: number;\n\tinProgress: number;\n\tpending: number;\n\tblocked: number;\n} {\n\tconst counts = { done: 0, inProgress: 0, pending: 0, blocked: 0 };\n\tfor (const item of items) {\n\t\tif (item.status === \"done\") {\n\t\t\tcounts.done += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (item.status === \"in_progress\") {\n\t\t\tcounts.inProgress += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (item.status === \"blocked\") {\n\t\t\tcounts.blocked += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tcounts.pending += 1;\n\t}\n\treturn counts;\n}\n\nfunction checklistStatusMarker(status: ChecklistStatus): string {\n\tswitch (status) {\n\t\tcase \"done\":\n\t\t\treturn \"✓\";\n\t\tcase \"in_progress\":\n\t\t\treturn \"→\";\n\t\tcase \"blocked\":\n\t\t\treturn \"!\";\n\t\tcase \"pending\":\n\t\tdefault:\n\t\t\treturn \"•\";\n\t}\n}\n\nfunction styleChecklistMarker(status: ChecklistStatus, marker: string): string {\n\tswitch (status) {\n\t\tcase \"done\":\n\t\t\treturn theme.fg(\"success\", marker);\n\t\tcase \"in_progress\":\n\t\t\treturn theme.fg(\"accent\", marker);\n\t\tcase \"blocked\":\n\t\t\treturn theme.fg(\"warning\", marker);\n\t\tcase \"pending\":\n\t\tdefault:\n\t\t\treturn theme.fg(\"muted\", marker);\n\t}\n}\n\nfunction checklistStatusLabel(status: ChecklistStatus): string {\n\tswitch (status) {\n\t\tcase \"done\":\n\t\t\treturn \"done\";\n\t\tcase \"in_progress\":\n\t\t\treturn \"in progress\";\n\t\tcase \"blocked\":\n\t\t\treturn \"blocked\";\n\t\tcase \"pending\":\n\t\tdefault:\n\t\t\treturn \"pending\";\n\t}\n}\n\ntype ToolRenderState = \"pending\" | \"success\" | \"error\";\n\nfunction hasAnsiEscape(input: string): boolean {\n\treturn /\\x1b\\[[0-9;]*m/.test(input);\n}\n\nfunction toolBadge(label: string, state: ToolRenderState): string {\n\tconst color = state === \"error\" ? \"error\" : state === \"success\" ? \"accent\" : \"muted\";\n\treturn theme.fg(\"dim\", \"[\") + theme.fg(color, label) + theme.fg(\"dim\", \"]\");\n}\n\nfunction toolHeader(label: string, subject: string, state: ToolRenderState, meta?: string): string {\n\tconst nestColor = state === \"error\" ? \"error\" : state === \"success\" ? \"accent\" : \"dim\";\n\tconst parts = [toolBadge(label, state)];\n\tif (subject) {\n\t\tparts.push(hasAnsiEscape(subject) ? subject : theme.fg(\"toolTitle\", subject));\n\t}\n\tif (meta) parts.push(theme.fg(\"muted\", meta));\n\treturn theme.fg(nestColor, \"\\u23BF \") + parts.join(\" \");\n}\n\nfunction expandHint(remaining: number, total?: number): string {\n\tconst totalSuffix = total !== undefined ? `, ${total} total` : \"\";\n\treturn `${theme.fg(\"muted\", `\\n... (${remaining} more lines${totalSuffix},`)} ${keyHint(\"expandTools\", \"to expand\")})`;\n}\n\nexport interface ToolExecutionOptions {\n\tshowImages?: boolean; // default: true (only used if terminal supports images)\n}\n\ntype WriteHighlightCache = {\n\trawPath: string | null;\n\tlang: string;\n\trawContent: string;\n\tnormalizedLines: string[];\n\thighlightedLines: string[];\n};\n\n/**\n * Component that renders a tool call with its result (updateable)\n */\nexport class ToolExecutionComponent extends Container {\n\tprivate frameContent: Container;\n\tprivate messageWindow: MessageWindow;\n\tprivate contentBox: Box; // Used for custom tools and bash visual truncation\n\tprivate contentText: Text; // For built-in tools\n\tprivate imageComponents: Image[] = [];\n\tprivate imageSpacers: Spacer[] = [];\n\tprivate toolName: string;\n\tprivate args: any;\n\tprivate expanded = false;\n\tprivate showImages: boolean;\n\tprivate isPartial = true;\n\tprivate toolDefinition?: ToolDefinition;\n\tprivate ui: TUI;\n\tprivate cwd: string;\n\tprivate result?: {\n\t\tcontent: Array<{ type: string; text?: string; data?: string; mimeType?: string }>;\n\t\tisError: boolean;\n\t\tdetails?: any;\n\t};\n\t// Cached edit diff preview (computed when args arrive, before tool executes)\n\tprivate editDiffPreview?: EditDiffResult | EditDiffError;\n\tprivate editDiffArgsKey?: string; // Track which args the preview is for\n\t// Cached converted images for Kitty protocol (which requires PNG), keyed by index\n\tprivate convertedImages: Map<number, { data: string; mimeType: string }> = new Map();\n\t// Incremental syntax highlighting cache for write tool call args\n\tprivate writeHighlightCache?: WriteHighlightCache;\n\t// When true, this component intentionally renders no lines\n\tprivate hideComponent = false;\n\n\tconstructor(\n\t\ttoolName: string,\n\t\targs: any,\n\t\toptions: ToolExecutionOptions = {},\n\t\ttoolDefinition: ToolDefinition | undefined,\n\t\tui: TUI,\n\t\tcwd: string = process.cwd(),\n\t) {\n\t\tsuper();\n\t\tthis.toolName = toolName;\n\t\tthis.args = args;\n\t\tthis.showImages = options.showImages ?? true;\n\t\tthis.toolDefinition = toolDefinition;\n\t\tthis.ui = ui;\n\t\tthis.cwd = cwd;\n\n\t\tthis.addChild(new Spacer(1));\n\n\t\tthis.frameContent = new Container();\n\t\tthis.messageWindow = new MessageWindow(this.frameContent, {\n\t\t\tlabel: \"tool\",\n\t\t\tlineColor: \"success\",\n\t\t\tlabelColor: \"success\",\n\t\t\tpaddingY: 1,\n\t\t});\n\t\tthis.addChild(this.messageWindow);\n\n\t\tconst noBg = (text: string) => text;\n\t\t// Always create both - contentBox for custom tools/bash, contentText for other built-ins\n\t\tthis.contentBox = new Box(TOOL_BOX_PADDING_X, TOOL_BOX_PADDING_Y, noBg);\n\t\tthis.contentText = new Text(\"\", TOOL_BOX_PADDING_X, TOOL_BOX_PADDING_Y, noBg);\n\n\t\tthis.updateDisplay();\n\t}\n\n\t/**\n\t * Check if we should use built-in rendering for this tool.\n\t * Returns true if the tool name is a built-in AND either there's no toolDefinition\n\t * or the toolDefinition doesn't provide custom renderers.\n\t */\n\tprivate shouldUseBuiltInRenderer(): boolean {\n\t\tconst isBuiltInName = this.toolName in allTools;\n\t\tconst hasCustomRenderers = this.toolDefinition?.renderCall || this.toolDefinition?.renderResult;\n\t\treturn isBuiltInName && !hasCustomRenderers;\n\t}\n\n\tupdateArgs(args: any): void {\n\t\tthis.args = args;\n\t\tif (this.toolName === \"write\" && this.isPartial) {\n\t\t\tthis.updateWriteHighlightCacheIncremental();\n\t\t}\n\t\tthis.updateDisplay();\n\t}\n\n\tprivate highlightSingleLine(line: string, lang: string): string {\n\t\tconst highlighted = highlightCode(line, lang);\n\t\treturn highlighted[0] ?? \"\";\n\t}\n\n\tprivate refreshWriteHighlightPrefix(cache: WriteHighlightCache): void {\n\t\tconst prefixCount = Math.min(WRITE_PARTIAL_FULL_HIGHLIGHT_LINES, cache.normalizedLines.length);\n\t\tif (prefixCount === 0) return;\n\n\t\tconst prefixSource = cache.normalizedLines.slice(0, prefixCount).join(\"\\n\");\n\t\tconst prefixHighlighted = highlightCode(prefixSource, cache.lang);\n\t\tfor (let i = 0; i < prefixCount; i++) {\n\t\t\tcache.highlightedLines[i] =\n\t\t\t\tprefixHighlighted[i] ?? this.highlightSingleLine(cache.normalizedLines[i] ?? \"\", cache.lang);\n\t\t}\n\t}\n\n\tprivate rebuildWriteHighlightCacheFull(rawPath: string | null, fileContent: string): void {\n\t\tconst lang = rawPath ? getLanguageFromPath(rawPath) : undefined;\n\t\tif (!lang) {\n\t\t\tthis.writeHighlightCache = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tconst displayContent = normalizeDisplayText(fileContent);\n\t\tconst normalized = replaceTabs(displayContent);\n\t\tthis.writeHighlightCache = {\n\t\t\trawPath,\n\t\t\tlang,\n\t\t\trawContent: fileContent,\n\t\t\tnormalizedLines: normalized.split(\"\\n\"),\n\t\t\thighlightedLines: highlightCode(normalized, lang),\n\t\t};\n\t}\n\n\tprivate updateWriteHighlightCacheIncremental(): void {\n\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\tconst fileContent = str(this.args?.content);\n\t\tif (rawPath === null || fileContent === null) {\n\t\t\tthis.writeHighlightCache = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tconst lang = rawPath ? getLanguageFromPath(rawPath) : undefined;\n\t\tif (!lang) {\n\t\t\tthis.writeHighlightCache = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.writeHighlightCache) {\n\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\treturn;\n\t\t}\n\n\t\tconst cache = this.writeHighlightCache;\n\t\tif (cache.lang !== lang || cache.rawPath !== rawPath) {\n\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!fileContent.startsWith(cache.rawContent)) {\n\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\treturn;\n\t\t}\n\n\t\tif (fileContent.length === cache.rawContent.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst deltaRaw = fileContent.slice(cache.rawContent.length);\n\t\tconst deltaDisplay = normalizeDisplayText(deltaRaw);\n\t\tconst deltaNormalized = replaceTabs(deltaDisplay);\n\t\tcache.rawContent = fileContent;\n\n\t\tif (cache.normalizedLines.length === 0) {\n\t\t\tcache.normalizedLines.push(\"\");\n\t\t\tcache.highlightedLines.push(\"\");\n\t\t}\n\n\t\tconst segments = deltaNormalized.split(\"\\n\");\n\t\tconst lastIndex = cache.normalizedLines.length - 1;\n\t\tcache.normalizedLines[lastIndex] += segments[0];\n\t\tcache.highlightedLines[lastIndex] = this.highlightSingleLine(cache.normalizedLines[lastIndex], cache.lang);\n\n\t\tfor (let i = 1; i < segments.length; i++) {\n\t\t\tcache.normalizedLines.push(segments[i]);\n\t\t\tcache.highlightedLines.push(this.highlightSingleLine(segments[i], cache.lang));\n\t\t}\n\n\t\tthis.refreshWriteHighlightPrefix(cache);\n\t}\n\n\t/**\n\t * Signal that args are complete (tool is about to execute).\n\t * This triggers diff computation for edit tool.\n\t */\n\tsetArgsComplete(): void {\n\t\tif (this.toolName === \"write\") {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst fileContent = str(this.args?.content);\n\t\t\tif (rawPath !== null && fileContent !== null) {\n\t\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\t}\n\t\t}\n\t\tthis.maybeComputeEditDiff();\n\t}\n\n\t/**\n\t * Compute edit diff preview when we have complete args.\n\t * This runs async and updates display when done.\n\t */\n\tprivate maybeComputeEditDiff(): void {\n\t\tif (this.toolName !== \"edit\") return;\n\n\t\tconst path = this.args?.path;\n\t\tconst oldText = this.args?.oldText;\n\t\tconst newText = this.args?.newText;\n\n\t\t// Need all three params to compute diff\n\t\tif (!path || oldText === undefined || newText === undefined) return;\n\n\t\t// Create a key to track which args this computation is for\n\t\tconst argsKey = JSON.stringify({ path, oldText, newText });\n\n\t\t// Skip if we already computed for these exact args\n\t\tif (this.editDiffArgsKey === argsKey) return;\n\n\t\tthis.editDiffArgsKey = argsKey;\n\n\t\t// Compute diff async\n\t\tcomputeEditDiff(path, oldText, newText, this.cwd).then((result) => {\n\t\t\t// Only update if args haven't changed since we started\n\t\t\tif (this.editDiffArgsKey === argsKey) {\n\t\t\t\tthis.editDiffPreview = result;\n\t\t\t\tthis.updateDisplay();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t}\n\t\t});\n\t}\n\n\tupdateResult(\n\t\tresult: {\n\t\t\tcontent: Array<{ type: string; text?: string; data?: string; mimeType?: string }>;\n\t\t\tdetails?: any;\n\t\t\tisError: boolean;\n\t\t},\n\t\tisPartial = false,\n\t): void {\n\t\tthis.result = result;\n\t\tthis.isPartial = isPartial;\n\t\tif (this.toolName === \"write\" && !isPartial) {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst fileContent = str(this.args?.content);\n\t\t\tif (rawPath !== null && fileContent !== null) {\n\t\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\t}\n\t\t}\n\t\tthis.updateDisplay();\n\t\t// Convert non-PNG images to PNG for Kitty protocol (async)\n\t\tthis.maybeConvertImagesForKitty();\n\t}\n\n\t/**\n\t * Convert non-PNG images to PNG for Kitty graphics protocol.\n\t * Kitty requires PNG format (f=100), so JPEG/GIF/WebP won't display.\n\t */\n\tprivate maybeConvertImagesForKitty(): void {\n\t\tconst caps = getCapabilities();\n\t\t// Only needed for Kitty protocol\n\t\tif (caps.images !== \"kitty\") return;\n\t\tif (!this.result) return;\n\n\t\tconst imageBlocks = this.result.content?.filter((c: any) => c.type === \"image\") || [];\n\n\t\tfor (let i = 0; i < imageBlocks.length; i++) {\n\t\t\tconst img = imageBlocks[i];\n\t\t\tif (!img.data || !img.mimeType) continue;\n\t\t\t// Skip if already PNG or already converted\n\t\t\tif (img.mimeType === \"image/png\") continue;\n\t\t\tif (this.convertedImages.has(i)) continue;\n\n\t\t\t// Convert async\n\t\t\tconst index = i;\n\t\t\tconvertToPng(img.data, img.mimeType).then((converted) => {\n\t\t\t\tif (converted) {\n\t\t\t\t\tthis.convertedImages.set(index, converted);\n\t\t\t\t\tthis.updateDisplay();\n\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.updateDisplay();\n\t}\n\n\tsetShowImages(show: boolean): void {\n\t\tthis.showImages = show;\n\t\tthis.updateDisplay();\n\t}\n\n\toverride invalidate(): void {\n\t\tsuper.invalidate();\n\t\tthis.updateDisplay();\n\t}\n\n\toverride render(width: number): string[] {\n\t\tif (this.hideComponent) {\n\t\t\treturn [];\n\t\t}\n\t\treturn super.render(width);\n\t}\n\n\tprivate updateDisplay(): void {\n\t\tconst noBg = (text: string) => text;\n\n\t\tconst useBuiltInRenderer = this.shouldUseBuiltInRenderer();\n\t\tconst usesBoxRenderer = this.toolName === \"bash\" || !useBuiltInRenderer;\n\t\tconst primaryComponent = usesBoxRenderer ? this.contentBox : this.contentText;\n\t\tlet customRendererHasContent = false;\n\t\tthis.hideComponent = false;\n\n\t\t// Use built-in rendering for built-in tools (or overrides without custom renderers)\n\t\tif (useBuiltInRenderer) {\n\t\t\tif (this.toolName === \"bash\") {\n\t\t\t\t// Bash uses Box with visual line truncation\n\t\t\t\tthis.contentBox.setBgFn(noBg);\n\t\t\t\tthis.contentBox.clear();\n\t\t\t\tthis.renderBashContent();\n\t\t\t} else {\n\t\t\t\t// Other built-in tools: use Text directly with caching\n\t\t\t\tthis.contentText.setCustomBgFn(noBg);\n\t\t\t\tthis.contentText.setText(this.formatToolExecution());\n\t\t\t}\n\t\t} else if (this.toolDefinition) {\n\t\t\t// Custom tools use Box for flexible component rendering\n\t\t\tthis.contentBox.setBgFn(noBg);\n\t\t\tthis.contentBox.clear();\n\t\t\tlet customCallSectionRendered = false;\n\n\t\t\t// Render call component\n\t\t\tif (this.toolDefinition.renderCall) {\n\t\t\t\ttry {\n\t\t\t\t\tconst callComponent = this.toolDefinition.renderCall(this.args, theme);\n\t\t\t\t\tif (callComponent !== undefined) {\n\t\t\t\t\t\tthis.contentBox.addChild(callComponent);\n\t\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t\t\tcustomCallSectionRendered = true;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Fall back to default on error\n\t\t\t\t\tthis.contentBox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(this.toolName)), 0, 0));\n\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t\tcustomCallSectionRendered = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// No custom renderCall, show tool name\n\t\t\t\tthis.contentBox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(this.toolName)), 0, 0));\n\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\tcustomCallSectionRendered = true;\n\t\t\t}\n\n\t\t\tconst addSectionSpacer = (): void => {\n\t\t\t\tif (customCallSectionRendered) {\n\t\t\t\t\tthis.contentBox.addChild(new Spacer(1));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Render result component if we have a result\n\t\t\tif (this.result && this.toolDefinition.renderResult) {\n\t\t\t\ttry {\n\t\t\t\t\tconst resultComponent = this.toolDefinition.renderResult(\n\t\t\t\t\t\t{ content: this.result.content as any, details: this.result.details },\n\t\t\t\t\t\t{ expanded: this.expanded, isPartial: this.isPartial },\n\t\t\t\t\t\ttheme,\n\t\t\t\t\t);\n\t\t\t\t\tif (resultComponent !== undefined) {\n\t\t\t\t\t\taddSectionSpacer();\n\t\t\t\t\t\tthis.contentBox.addChild(resultComponent);\n\t\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Fall back to showing raw output on error\n\t\t\t\t\tconst output = this.getTextOutput();\n\t\t\t\t\tif (output) {\n\t\t\t\t\t\taddSectionSpacer();\n\t\t\t\t\t\tthis.contentBox.addChild(new Text(theme.fg(\"toolOutput\", output), 0, 0));\n\t\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this.result) {\n\t\t\t\t// Has result but no custom renderResult\n\t\t\t\tconst output = this.getTextOutput();\n\t\t\t\tif (output) {\n\t\t\t\t\taddSectionSpacer();\n\t\t\t\t\tthis.contentBox.addChild(new Text(theme.fg(\"toolOutput\", output), 0, 0));\n\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Unknown tool with no registered definition - show generic fallback\n\t\t\tthis.contentText.setCustomBgFn(noBg);\n\t\t\tthis.contentText.setText(this.formatToolExecution());\n\t\t}\n\n\t\t// Handle images (same for both custom and built-in)\n\t\tthis.imageComponents = [];\n\t\tthis.imageSpacers = [];\n\n\t\tif (this.result) {\n\t\t\tconst imageBlocks = this.result.content?.filter((c: any) => c.type === \"image\") || [];\n\t\t\tconst caps = getCapabilities();\n\n\t\t\tfor (let i = 0; i < imageBlocks.length; i++) {\n\t\t\t\tconst img = imageBlocks[i];\n\t\t\t\tif (caps.images && this.showImages && img.data && img.mimeType) {\n\t\t\t\t\t// Use converted PNG for Kitty protocol if available\n\t\t\t\t\tconst converted = this.convertedImages.get(i);\n\t\t\t\t\tconst imageData = converted?.data ?? img.data;\n\t\t\t\t\tconst imageMimeType = converted?.mimeType ?? img.mimeType;\n\n\t\t\t\t\t// For Kitty, skip non-PNG images that haven't been converted yet\n\t\t\t\t\t\tif (caps.images === \"kitty\" && imageMimeType !== \"image/png\") {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst spacer = new Spacer(1);\n\t\t\t\t\t\tthis.imageSpacers.push(spacer);\n\t\t\t\t\t\tconst imageComponent = new Image(\n\t\t\t\t\t\t\timageData,\n\t\t\t\t\t\t\timageMimeType,\n\t\t\t\t\t\t{ fallbackColor: (s: string) => theme.fg(\"toolOutput\", s) },\n\t\t\t\t\t\t\t{ maxWidthCells: 60 },\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.imageComponents.push(imageComponent);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\tif (!useBuiltInRenderer && this.toolDefinition) {\n\t\t\tthis.hideComponent = !customRendererHasContent && this.imageComponents.length === 0;\n\t\t}\n\t\tthis.messageWindow.setVisible(!this.hideComponent);\n\t\tif (this.hideComponent) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.frameContent.clear();\n\t\tthis.frameContent.addChild(primaryComponent);\n\t\tfor (let i = 0; i < this.imageComponents.length; i++) {\n\t\t\tconst spacer = this.imageSpacers[i];\n\t\t\tconst image = this.imageComponents[i];\n\t\t\tif (spacer) this.frameContent.addChild(spacer);\n\t\t\tif (image) this.frameContent.addChild(image);\n\t\t}\n\t}\n\n\t/**\n\t * Render bash content using visual line truncation (like bash-execution.ts).\n\t * Uses compact Claude Code style: one-line header with ⎿ prefix.\n\t */\n\tprivate renderBashContent(): void {\n\t\tconst command = str(this.args?.command);\n\t\tconst timeout = this.args?.timeout as number | undefined;\n\n\t\t// Build the first line of the command (compact display)\n\t\tconst commandDisplay =\n\t\t\tcommand === null ? \"[invalid arg]\" : command ? command.split(\"\\n\")[0] : \"...\";\n\t\tconst timeoutSuffix = timeout ? ` (timeout ${timeout}s)` : \"\";\n\n\t\t// Compact one-line header\n\t\tlet headerText: string;\n\t\tif (this.isPartial) {\n\t\t\theaderText = toolHeader(\"bash\", `$ ${commandDisplay}${timeoutSuffix}`, \"pending\");\n\t\t} else if (this.result?.isError) {\n\t\t\tconst exitCode = this.result.details?.exitCode ?? 1;\n\t\t\theaderText = toolHeader(\"bash\", `$ ${commandDisplay}`, \"error\", `(exit ${exitCode})`);\n\t\t} else if (this.result) {\n\t\t\theaderText = toolHeader(\"bash\", `$ ${commandDisplay}`, \"success\", \"(exit 0)\");\n\t\t} else {\n\t\t\theaderText = toolHeader(\"bash\", `$ ${commandDisplay}${timeoutSuffix}`, \"pending\");\n\t\t}\n\n\t\tthis.contentBox.addChild(new Text(headerText, 0, 0));\n\n\t\tif (this.result) {\n\t\t\tconst output = this.getTextOutput().trim();\n\n\t\t\tif (output) {\n\t\t\t\t// Style each line for the output\n\t\t\t\tconst styledOutput = output\n\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t.map((line) => theme.fg(\"toolOutput\", line))\n\t\t\t\t\t.join(\"\\n\");\n\n\t\t\t\tif (this.expanded) {\n\t\t\t\t\t// Show all lines when expanded\n\t\t\t\t\tthis.contentBox.addChild(new Text(`\\n${styledOutput}`, 0, 0));\n\t\t\t\t} else {\n\t\t\t\t\t// Use visual line truncation when collapsed with width-aware caching\n\t\t\t\t\tlet cachedWidth: number | undefined;\n\t\t\t\t\tlet cachedLines: string[] | undefined;\n\t\t\t\t\tlet cachedSkipped: number | undefined;\n\n\t\t\t\t\tthis.contentBox.addChild({\n\t\t\t\t\t\trender: (width: number) => {\n\t\t\t\t\t\t\tif (cachedLines === undefined || cachedWidth !== width) {\n\t\t\t\t\t\t\t\tconst result = truncateToVisualLines(styledOutput, BASH_PREVIEW_LINES, width);\n\t\t\t\t\t\t\t\tcachedLines = result.visualLines;\n\t\t\t\t\t\t\t\tcachedSkipped = result.skippedCount;\n\t\t\t\t\t\t\t\tcachedWidth = width;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (cachedSkipped && cachedSkipped > 0) {\n\t\t\t\t\t\t\t\tconst hint = expandHint(cachedSkipped);\n\t\t\t\t\t\t\t\treturn [\"\", truncateToWidth(hint, width, \"...\"), ...cachedLines];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add blank line for spacing (matches expanded case)\n\t\t\t\t\t\t\treturn [\"\", ...cachedLines];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinvalidate: () => {\n\t\t\t\t\t\t\tcachedWidth = undefined;\n\t\t\t\t\t\t\tcachedLines = undefined;\n\t\t\t\t\t\t\tcachedSkipped = undefined;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Truncation warnings\n\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\tconst fullOutputPath = this.result.details?.fullOutputPath;\n\t\t\tif (truncation?.truncated || fullOutputPath) {\n\t\t\t\tconst warnings: string[] = [];\n\t\t\t\tif (fullOutputPath) {\n\t\t\t\t\twarnings.push(`Full output: ${fullOutputPath}`);\n\t\t\t\t}\n\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\tif (truncation.truncatedBy === \"lines\") {\n\t\t\t\t\t\twarnings.push(`Truncated: showing ${truncation.outputLines} of ${truncation.totalLines} lines`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\twarnings.push(\n\t\t\t\t\t\t\t`Truncated: ${truncation.outputLines} lines shown (${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit)`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.contentBox.addChild(new Text(`\\n${theme.fg(\"warning\", `[${warnings.join(\". \")}]`)}`, 0, 0));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getTextOutput(): string {\n\t\tif (!this.result) return \"\";\n\n\t\tconst textBlocks = this.result.content?.filter((c: any) => c.type === \"text\") || [];\n\t\tconst imageBlocks = this.result.content?.filter((c: any) => c.type === \"image\") || [];\n\n\t\tlet output = textBlocks\n\t\t\t.map((c: any) => {\n\t\t\t\t// Use sanitizeBinaryOutput to handle binary data that crashes string-width\n\t\t\t\treturn sanitizeBinaryOutput(stripAnsi(c.text || \"\")).replace(/\\r/g, \"\");\n\t\t\t})\n\t\t\t.join(\"\\n\");\n\n\t\tconst caps = getCapabilities();\n\t\tif (imageBlocks.length > 0 && (!caps.images || !this.showImages)) {\n\t\t\tconst imageIndicators = imageBlocks\n\t\t\t\t.map((img: any) => {\n\t\t\t\t\tconst dims = img.data ? (getImageDimensions(img.data, img.mimeType) ?? undefined) : undefined;\n\t\t\t\t\treturn imageFallback(img.mimeType, dims);\n\t\t\t\t})\n\t\t\t\t.join(\"\\n\");\n\t\t\toutput = output ? `${output}\\n${imageIndicators}` : imageIndicators;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tprivate formatToolExecution(): string {\n\t\tlet text = \"\";\n\t\tconst invalidArg = theme.fg(\"error\", \"[invalid arg]\");\n\n\t\tif (this.toolName === \"read\") {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath) : null;\n\t\t\tconst offset = this.args?.offset;\n\t\t\tconst limit = this.args?.limit;\n\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \"...\";\n\n\t\t\t// Build range suffix for path\n\t\t\tlet rangeSuffix = \"\";\n\t\t\tif (offset !== undefined || limit !== undefined) {\n\t\t\t\tconst startLine = offset ?? 1;\n\t\t\t\tconst endLine = limit !== undefined ? startLine + limit - 1 : \"\";\n\t\t\t\trangeSuffix = `:${startLine}${endLine ? `-${endLine}` : \"\"}`;\n\t\t\t}\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"read\", pathLabel + rangeSuffix, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"read\", pathLabel + rangeSuffix, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\tconst output = this.getTextOutput();\n\t\t\t\tconst lineCount = output ? output.split(\"\\n\").length : 0;\n\t\t\t\tconst subject = shortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel + rangeSuffix);\n\t\t\t\ttext = toolHeader(\"read\", subject, \"success\", `(${lineCount} lines)`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"read\", pathLabel + rangeSuffix, \"pending\");\n\t\t\t}\n\n\t\t\tif (this.result && !this.result.isError) {\n\t\t\t\tconst output = this.getTextOutput();\n\t\t\t\tconst rawPathForLang = str(this.args?.file_path ?? this.args?.path);\n\t\t\t\tconst lang = rawPathForLang ? getLanguageFromPath(rawPathForLang) : undefined;\n\t\t\t\tconst lines = lang ? highlightCode(replaceTabs(output), lang) : output.split(\"\\n\");\n\n\t\t\t\tconst maxLines = this.expanded ? lines.length : 10;\n\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\ttext +=\n\t\t\t\t\t\"\\n\\n\" +\n\t\t\t\t\tdisplayLines\n\t\t\t\t\t\t.map((line: string) => (lang ? replaceTabs(line) : theme.fg(\"toolOutput\", replaceTabs(line))))\n\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\tif (remaining > 0) {\n\t\t\t\t\ttext += expandHint(remaining, lines.length);\n\t\t\t\t}\n\n\t\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\tif (truncation.firstLineExceedsLimit) {\n\t\t\t\t\t\ttext +=\n\t\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\t\t\t`[First line exceeds ${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit]`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t} else if (truncation.truncatedBy === \"lines\") {\n\t\t\t\t\t\ttext +=\n\t\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\t\t\t`[Truncated: showing ${truncation.outputLines} of ${truncation.totalLines} lines (${truncation.maxLines ?? DEFAULT_MAX_LINES} line limit)]`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext +=\n\t\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\t\t\t`[Truncated: ${truncation.outputLines} lines shown (${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit)]`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\tconst errorText = this.getTextOutput();\n\t\t\t\tif (errorText) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", errorText)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"write\") {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst fileContent = str(this.args?.content);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath) : null;\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \"...\";\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"write\", pathLabel, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"write\", pathLabel, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\t// Count lines from args content (what was written)\n\t\t\t\tconst writtenLines = fileContent ? fileContent.split(\"\\n\").length : 0;\n\t\t\t\tconst subject = shortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel);\n\t\t\t\ttext = toolHeader(\"write\", subject, \"success\", `(${writtenLines} lines)`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"write\", pathLabel, \"pending\");\n\t\t\t}\n\n\t\t\tif (fileContent === null) {\n\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", \"[invalid content arg - expected string]\")}`;\n\t\t\t} else if (fileContent) {\n\t\t\t\tconst lang = rawPath ? getLanguageFromPath(rawPath) : undefined;\n\n\t\t\t\tlet lines: string[];\n\t\t\t\tif (lang) {\n\t\t\t\t\tconst cache = this.writeHighlightCache;\n\t\t\t\t\tif (cache && cache.lang === lang && cache.rawPath === rawPath && cache.rawContent === fileContent) {\n\t\t\t\t\t\tlines = cache.highlightedLines;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst displayContent = normalizeDisplayText(fileContent);\n\t\t\t\t\t\tconst normalized = replaceTabs(displayContent);\n\t\t\t\t\t\tlines = highlightCode(normalized, lang);\n\t\t\t\t\t\tthis.writeHighlightCache = {\n\t\t\t\t\t\t\trawPath,\n\t\t\t\t\t\t\tlang,\n\t\t\t\t\t\t\trawContent: fileContent,\n\t\t\t\t\t\t\tnormalizedLines: normalized.split(\"\\n\"),\n\t\t\t\t\t\t\thighlightedLines: lines,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlines = normalizeDisplayText(fileContent).split(\"\\n\");\n\t\t\t\t\tthis.writeHighlightCache = undefined;\n\t\t\t\t}\n\n\t\t\t\tconst totalLines = lines.length;\n\t\t\t\tconst maxLines = this.expanded ? lines.length : 10;\n\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\ttext +=\n\t\t\t\t\t\"\\n\\n\" +\n\t\t\t\t\tdisplayLines.map((line: string) => (lang ? line : theme.fg(\"toolOutput\", replaceTabs(line)))).join(\"\\n\");\n\t\t\t\tif (remaining > 0) {\n\t\t\t\t\ttext += expandHint(remaining, totalLines);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Show error if tool execution failed\n\t\t\tif (this.result?.isError) {\n\t\t\t\tconst errorText = this.getTextOutput();\n\t\t\t\tif (errorText) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", errorText)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"edit\") {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath) : null;\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \"...\";\n\n\t\t\t// Compute +X / -Y stats from diff if available\n\t\t\tlet diffStats = \"\";\n\t\t\tconst diff = this.result?.details?.diff ?? (this.editDiffPreview && !(\"error\" in this.editDiffPreview) ? (this.editDiffPreview as any).diff : undefined);\n\t\t\tif (diff) {\n\t\t\t\tconst added = (diff.match(/^\\+[^+]/mg) || []).length;\n\t\t\t\tconst removed = (diff.match(/^-[^-]/mg) || []).length;\n\t\t\t\tif (added > 0 || removed > 0) {\n\t\t\t\t\tdiffStats = `(+${added} / -${removed} lines)`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"edit\", pathLabel, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"edit\", pathLabel, \"error\", \"(failed)\");\n\t\t\t} else if (this.result) {\n\t\t\t\tconst subject = shortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel);\n\t\t\t\ttext = toolHeader(\"edit\", subject, \"success\", diffStats || undefined);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"edit\", pathLabel, \"pending\");\n\t\t\t}\n\n\t\t\tif (this.result?.isError) {\n\t\t\t\t// Show error from result\n\t\t\t\tconst errorText = this.getTextOutput();\n\t\t\t\tif (errorText) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", errorText)}`;\n\t\t\t\t}\n\t\t\t} else if (this.result?.details?.diff) {\n\t\t\t\t// Tool executed successfully - use the diff from result\n\t\t\t\ttext += `\\n\\n${renderDiff(this.result.details.diff, { filePath: rawPath ?? undefined })}`;\n\t\t\t} else if (this.editDiffPreview) {\n\t\t\t\t// Use cached diff preview (before tool executes)\n\t\t\t\tif (\"error\" in this.editDiffPreview) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", this.editDiffPreview.error)}`;\n\t\t\t\t} else if (this.editDiffPreview.diff) {\n\t\t\t\t\ttext += `\\n\\n${renderDiff(this.editDiffPreview.diff, { filePath: rawPath ?? undefined })}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"ls\") {\n\t\t\tconst rawPath = str(this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath || \".\") : null;\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \".\";\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"list\", pathLabel, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"list\", pathLabel, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tconst resultCount = output ? output.split(\"\\n\").filter(Boolean).length : 0;\n\t\t\t\tconst subject = shortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel);\n\t\t\t\ttext = toolHeader(\"list\", subject, \"success\", `(${resultCount} entries)`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"list\", pathLabel, \"pending\");\n\t\t\t}\n\n\t\t\tif (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tif (output) {\n\t\t\t\t\tconst lines = output.split(\"\\n\");\n\t\t\t\t\tconst maxLines = this.expanded ? lines.length : 20;\n\t\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\t\ttext += `\\n\\n${displayLines.map((line: string) => theme.fg(\"toolOutput\", line)).join(\"\\n\")}`;\n\t\t\t\t\tif (remaining > 0) {\n\t\t\t\t\t\ttext += expandHint(remaining, lines.length);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst entryLimit = this.result.details?.entryLimitReached;\n\t\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\t\tif (entryLimit || truncation?.truncated) {\n\t\t\t\t\tconst warnings: string[] = [];\n\t\t\t\t\tif (entryLimit) {\n\t\t\t\t\t\twarnings.push(`${entryLimit} entries limit`);\n\t\t\t\t\t}\n\t\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\t\twarnings.push(`${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit`);\n\t\t\t\t\t}\n\t\t\t\t\ttext += `\\n${theme.fg(\"warning\", `[Truncated: ${warnings.join(\", \")}]`)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"find\") {\n\t\t\tconst pattern = str(this.args?.pattern);\n\t\t\tconst patternLabel = pattern === null ? \"[invalid arg]\" : pattern || \"*\";\n\t\t\tconst rawPath = str(this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath || \".\") : null;\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \".\";\n\t\t\tconst subject = `${theme.fg(\"toolTitle\", patternLabel)} ${theme.fg(\"muted\", \"in\")} ${\n\t\t\t\tshortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel)\n\t\t\t}`;\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"find\", subject, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"find\", subject, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tconst resultCount = output ? output.split(\"\\n\").filter(Boolean).length : 0;\n\t\t\t\ttext = toolHeader(\"find\", subject, \"success\", `(${resultCount} results)`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"find\", subject, \"pending\");\n\t\t\t}\n\n\t\t\tif (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tif (output) {\n\t\t\t\t\tconst lines = output.split(\"\\n\");\n\t\t\t\t\tconst maxLines = this.expanded ? lines.length : 20;\n\t\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\t\ttext += `\\n\\n${displayLines.map((line: string) => theme.fg(\"toolOutput\", line)).join(\"\\n\")}`;\n\t\t\t\t\tif (remaining > 0) {\n\t\t\t\t\t\ttext += expandHint(remaining, lines.length);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst resultLimit = this.result.details?.resultLimitReached;\n\t\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\t\tif (resultLimit || truncation?.truncated) {\n\t\t\t\t\tconst warnings: string[] = [];\n\t\t\t\t\tif (resultLimit) {\n\t\t\t\t\t\twarnings.push(`${resultLimit} results limit`);\n\t\t\t\t\t}\n\t\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\t\twarnings.push(`${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit`);\n\t\t\t\t\t}\n\t\t\t\t\ttext += `\\n${theme.fg(\"warning\", `[Truncated: ${warnings.join(\", \")}]`)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"grep\") {\n\t\t\tconst pattern = str(this.args?.pattern);\n\t\t\tconst patternLabel = pattern === null ? \"[invalid arg]\" : pattern || \"\";\n\t\t\tconst rawPath = str(this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath || \".\") : null;\n\t\t\tconst glob = str(this.args?.glob);\n\t\t\tconst limit = this.args?.limit;\n\t\t\tconst locationContext = shortPath !== null ? ` in ${shortPath}` : \"\";\n\t\t\tconst globContext = glob ? ` (${glob})` : \"\";\n\t\t\tconst limitContext = limit !== undefined ? ` limit ${limit}` : \"\";\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"grep\", patternLabel, \"pending\", `${locationContext}${globContext}${limitContext}`.trim());\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"grep\", patternLabel, \"error\", `${locationContext}${globContext}${limitContext}`.trim());\n\t\t\t} else if (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tconst matchCount = output ? output.split(\"\\n\").filter(Boolean).length : 0;\n\t\t\t\tconst subject = pattern === null ? invalidArg : theme.fg(\"accent\", patternLabel);\n\t\t\t\tconst metaParts = [`(${matchCount} matches)`];\n\t\t\t\tif (locationContext || globContext || limitContext) {\n\t\t\t\t\tmetaParts.push(`${locationContext}${globContext}${limitContext}`.trim());\n\t\t\t\t}\n\t\t\t\ttext = toolHeader(\"grep\", subject, \"success\", metaParts.join(\" \"));\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"grep\", patternLabel, \"pending\", `${locationContext}${globContext}${limitContext}`.trim());\n\t\t\t}\n\n\t\t\tif (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tif (output) {\n\t\t\t\t\tconst lines = output.split(\"\\n\");\n\t\t\t\t\tconst maxLines = this.expanded ? lines.length : 15;\n\t\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\t\ttext += `\\n\\n${displayLines.map((line: string) => theme.fg(\"toolOutput\", line)).join(\"\\n\")}`;\n\t\t\t\t\tif (remaining > 0) {\n\t\t\t\t\t\ttext += expandHint(remaining, lines.length);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst matchLimit = this.result.details?.matchLimitReached;\n\t\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\t\tconst linesTruncated = this.result.details?.linesTruncated;\n\t\t\t\tif (matchLimit || truncation?.truncated || linesTruncated) {\n\t\t\t\t\tconst warnings: string[] = [];\n\t\t\t\t\tif (matchLimit) {\n\t\t\t\t\t\twarnings.push(`${matchLimit} matches limit`);\n\t\t\t\t\t}\n\t\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\t\twarnings.push(`${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit`);\n\t\t\t\t\t}\n\t\t\t\t\tif (linesTruncated) {\n\t\t\t\t\t\twarnings.push(\"some lines truncated\");\n\t\t\t\t\t}\n\t\t\t\t\ttext += `\\n${theme.fg(\"warning\", `[Truncated: ${warnings.join(\", \")}]`)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"todo_write\" || this.toolName === \"todo_read\") {\n\t\t\tconst isWrite = this.toolName === \"todo_write\";\n\t\t\tconst details = this.result?.details as Record<string, unknown> | undefined;\n\t\t\tconst tasksFromDetails = extractChecklistItems(details?.tasks);\n\t\t\tconst tasksFromArgs = isWrite ? extractChecklistItems(this.args?.tasks) : [];\n\t\t\tconst tasks = tasksFromDetails.length > 0 ? tasksFromDetails : tasksFromArgs;\n\t\t\tconst counts = countChecklistByStatus(tasks);\n\t\t\tconst summaryParts: string[] = [];\n\t\t\tif (counts.inProgress > 0) summaryParts.push(`${counts.inProgress} in progress`);\n\t\t\tif (counts.pending > 0) summaryParts.push(`${counts.pending} pending`);\n\t\t\tif (counts.done > 0) summaryParts.push(`${counts.done} done`);\n\t\t\tif (counts.blocked > 0) summaryParts.push(`${counts.blocked} blocked`);\n\t\t\tconst summary = summaryParts.length > 0 ? summaryParts.join(\", \") : \"no tasks\";\n\t\t\tconst subject = isWrite ? \"Update task checklist\" : \"Read task checklist\";\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"tasks\", subject, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"tasks\", subject, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\ttext = toolHeader(\"tasks\", theme.fg(\"accent\", subject), \"success\", `(${tasks.length} total: ${summary})`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"tasks\", subject, \"pending\");\n\t\t\t}\n\n\t\t\tif (tasks.length > 0) {\n\t\t\t\tconst maxLines = this.expanded ? tasks.length : 10;\n\t\t\t\tconst displayTasks = tasks.slice(0, maxLines);\n\t\t\t\tconst remaining = tasks.length - maxLines;\n\t\t\t\tconst lines = displayTasks.map((task) => {\n\t\t\t\t\tconst marker = styleChecklistMarker(task.status, checklistStatusMarker(task.status));\n\t\t\t\t\tconst idPrefix = task.id ? `${theme.fg(\"dim\", `[${task.id}]`)} ` : \"\";\n\t\t\t\t\tconst label = theme.fg(\"toolOutput\", task.title);\n\t\t\t\t\tconst statusSuffix = theme.fg(\"dim\", ` (${checklistStatusLabel(task.status)})`);\n\t\t\t\t\tconst activeSuffix =\n\t\t\t\t\t\ttask.status === \"in_progress\" && task.activeForm ? theme.fg(\"muted\", ` — ${task.activeForm}`) : \"\";\n\t\t\t\t\treturn `${marker} ${idPrefix}${label}${statusSuffix}${activeSuffix}`;\n\t\t\t\t});\n\t\t\t\ttext += `\\n\\n${lines.join(\"\\n\")}`;\n\t\t\t\tif (remaining > 0) {\n\t\t\t\t\ttext += expandHint(remaining, tasks.length);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tif (output && (tasks.length === 0 || this.result.isError)) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(this.result.isError ? \"error\" : \"toolOutput\", output)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Generic tool (shouldn't reach here for custom tools)\n\t\t\ttext = theme.fg(\"toolTitle\", theme.bold(this.toolName));\n\n\t\t\tconst content = JSON.stringify(this.args, null, 2);\n\t\t\ttext += `\\n\\n${theme.fg(\"toolOutput\", content)}`;\n\t\t\tconst output = this.getTextOutput();\n\t\t\tif (output) {\n\t\t\t\ttext += `\\n${theme.fg(\"toolOutput\", output)}`;\n\t\t\t}\n\t\t}\n\n\t\treturn text;\n\t}\n}\n"]}
1
+ {"version":3,"file":"tool-execution.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution.ts"],"names":[],"mappings":"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","sourcesContent":["import * as os from \"node:os\";\nimport {\n\tBox,\n\tContainer,\n\tgetCapabilities,\n\tgetImageDimensions,\n\tImage,\n\timageFallback,\n\tSpacer,\n\tText,\n\ttype TUI,\n\ttruncateToWidth,\n} from \"@mariozechner/pi-tui\";\nimport stripAnsi from \"strip-ansi\";\nimport type { ToolDefinition } from \"../../../core/extensions/types.js\";\nimport { computeEditDiff, type EditDiffError, type EditDiffResult } from \"../../../core/tools/edit-diff.js\";\nimport { allTools } from \"../../../core/tools/index.js\";\nimport { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize } from \"../../../core/tools/truncate.js\";\nimport { convertToPng } from \"../../../utils/image-convert.js\";\nimport { sanitizeBinaryOutput } from \"../../../utils/shell.js\";\nimport { getLanguageFromPath, highlightCode, theme } from \"../theme/theme.js\";\nimport { renderDiff } from \"./diff.js\";\nimport { keyHint } from \"./keybinding-hints.js\";\nimport { MessageWindow } from \"./message-window.js\";\nimport { truncateToVisualLines } from \"./visual-truncate.js\";\n\n// Preview line limit for bash when not expanded\nconst BASH_PREVIEW_LINES = 5;\nconst TOOL_BOX_PADDING_X = 2;\nconst TOOL_BOX_PADDING_Y = 1;\n// During partial write tool-call streaming, re-highlight the first N lines fully\n// to keep multiline tokenization mostly correct without re-highlighting the full file.\nconst WRITE_PARTIAL_FULL_HIGHLIGHT_LINES = 50;\n\n/**\n * Convert absolute path to tilde notation if it's in home directory\n */\nfunction shortenPath(path: unknown): string {\n\tif (typeof path !== \"string\") return \"\";\n\tconst home = os.homedir();\n\tif (path.startsWith(home)) {\n\t\treturn `~${path.slice(home.length)}`;\n\t}\n\treturn path;\n}\n\n/**\n * Replace tabs with spaces for consistent rendering\n */\nfunction replaceTabs(text: string): string {\n\treturn text.replace(/\\t/g, \" \");\n}\n\n/**\n * Normalize control characters for terminal preview rendering.\n * Keep tool arguments unchanged, sanitize only display text.\n */\nfunction normalizeDisplayText(text: string): string {\n\treturn text.replace(/\\r/g, \"\");\n}\n\n/** Safely coerce value to string for display. Returns null if invalid type. */\nfunction str(value: unknown): string | null {\n\tif (typeof value === \"string\") return value;\n\tif (value == null) return \"\";\n\treturn null; // Invalid type\n}\n\ntype ChecklistStatus = \"pending\" | \"in_progress\" | \"done\" | \"blocked\";\n\ninterface ChecklistItem {\n\tid?: string;\n\ttitle: string;\n\tstatus: ChecklistStatus;\n\tactiveForm?: string;\n}\n\nfunction normalizeChecklistStatus(value: unknown): ChecklistStatus {\n\tif (typeof value !== \"string\") return \"pending\";\n\tconst token = value.trim().toLowerCase().replace(/[\\s-]+/g, \"_\");\n\tswitch (token) {\n\t\tcase \"done\":\n\t\tcase \"complete\":\n\t\tcase \"completed\":\n\t\tcase \"success\":\n\t\tcase \"checked\":\n\t\tcase \"x\":\n\t\t\treturn \"done\";\n\t\tcase \"in_progress\":\n\t\tcase \"inprogress\":\n\t\tcase \"active\":\n\t\tcase \"current\":\n\t\tcase \"doing\":\n\t\t\treturn \"in_progress\";\n\t\tcase \"blocked\":\n\t\tcase \"waiting\":\n\t\tcase \"on_hold\":\n\t\tcase \"paused\":\n\t\t\treturn \"blocked\";\n\t\tdefault:\n\t\t\treturn \"pending\";\n\t}\n}\n\nfunction buildChecklistItem(value: unknown): ChecklistItem | undefined {\n\tif (typeof value === \"string\") {\n\t\tconst title = value.trim();\n\t\tif (!title) return undefined;\n\t\treturn { title, status: \"pending\" };\n\t}\n\tif (!value || typeof value !== \"object\") {\n\t\treturn undefined;\n\t}\n\tconst candidate = value as Record<string, unknown>;\n\tconst title =\n\t\t(typeof candidate.subject === \"string\" && candidate.subject.trim()) ||\n\t\t(typeof candidate.title === \"string\" && candidate.title.trim()) ||\n\t\t(typeof candidate.step === \"string\" && candidate.step.trim()) ||\n\t\t(typeof candidate.text === \"string\" && candidate.text.trim()) ||\n\t\t(typeof candidate.description === \"string\" && candidate.description.trim()) ||\n\t\tundefined;\n\tif (!title) return undefined;\n\n\tconst id = typeof candidate.id === \"string\" && candidate.id.trim() ? candidate.id.trim() : undefined;\n\tconst activeForm =\n\t\ttypeof candidate.activeForm === \"string\" && candidate.activeForm.trim()\n\t\t\t? candidate.activeForm.trim()\n\t\t\t: undefined;\n\n\tif (typeof candidate.completed === \"boolean\") {\n\t\treturn {\n\t\t\tid,\n\t\t\ttitle,\n\t\t\tstatus: candidate.completed ? \"done\" : \"pending\",\n\t\t\tactiveForm,\n\t\t};\n\t}\n\n\treturn {\n\t\tid,\n\t\ttitle,\n\t\tstatus: normalizeChecklistStatus(candidate.status),\n\t\tactiveForm,\n\t};\n}\n\nfunction parseChecklistMarkdown(markdown: string): ChecklistItem[] {\n\tconst lines = markdown\n\t\t.split(/\\r?\\n/g)\n\t\t.map((line) => line.trim())\n\t\t.filter((line) => line.length > 0);\n\tconst items: ChecklistItem[] = [];\n\tfor (const line of lines) {\n\t\tconst checklistMatch =\n\t\t\tline.match(/^(?:[-*]|\\d+[.)])\\s*\\[([^\\]]+)\\]\\s+(.+)$/) ?? line.match(/^\\[([^\\]]+)\\]\\s+(.+)$/);\n\t\tif (checklistMatch) {\n\t\t\tconst title = checklistMatch[2]?.trim();\n\t\t\tif (!title) continue;\n\t\t\titems.push({\n\t\t\t\ttitle,\n\t\t\t\tstatus: normalizeChecklistStatus(checklistMatch[1]),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst bulletMatch = line.match(/^(?:[-*]|\\d+[.)])\\s+(.+)$/);\n\t\tif (!bulletMatch) continue;\n\t\tconst title = bulletMatch[1]?.trim();\n\t\tif (!title) continue;\n\t\titems.push({\n\t\t\ttitle,\n\t\t\tstatus: \"pending\",\n\t\t});\n\t}\n\treturn items;\n}\n\nfunction extractChecklistItems(value: unknown): ChecklistItem[] {\n\tif (typeof value === \"string\") {\n\t\treturn parseChecklistMarkdown(value);\n\t}\n\tif (!Array.isArray(value)) {\n\t\treturn [];\n\t}\n\treturn value.map((item) => buildChecklistItem(item)).filter((item): item is ChecklistItem => !!item);\n}\n\nfunction countChecklistByStatus(items: ChecklistItem[]): {\n\tdone: number;\n\tinProgress: number;\n\tpending: number;\n\tblocked: number;\n} {\n\tconst counts = { done: 0, inProgress: 0, pending: 0, blocked: 0 };\n\tfor (const item of items) {\n\t\tif (item.status === \"done\") {\n\t\t\tcounts.done += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (item.status === \"in_progress\") {\n\t\t\tcounts.inProgress += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (item.status === \"blocked\") {\n\t\t\tcounts.blocked += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tcounts.pending += 1;\n\t}\n\treturn counts;\n}\n\nfunction checklistStatusMarker(status: ChecklistStatus): string {\n\tswitch (status) {\n\t\tcase \"done\":\n\t\t\treturn \"✓\";\n\t\tcase \"in_progress\":\n\t\t\treturn \"→\";\n\t\tcase \"blocked\":\n\t\t\treturn \"!\";\n\t\tcase \"pending\":\n\t\tdefault:\n\t\t\treturn \"•\";\n\t}\n}\n\nfunction styleChecklistMarker(status: ChecklistStatus, marker: string): string {\n\tswitch (status) {\n\t\tcase \"done\":\n\t\t\treturn theme.fg(\"success\", marker);\n\t\tcase \"in_progress\":\n\t\t\treturn theme.fg(\"accent\", marker);\n\t\tcase \"blocked\":\n\t\t\treturn theme.fg(\"warning\", marker);\n\t\tcase \"pending\":\n\t\tdefault:\n\t\t\treturn theme.fg(\"muted\", marker);\n\t}\n}\n\nfunction checklistStatusLabel(status: ChecklistStatus): string {\n\tswitch (status) {\n\t\tcase \"done\":\n\t\t\treturn \"done\";\n\t\tcase \"in_progress\":\n\t\t\treturn \"in progress\";\n\t\tcase \"blocked\":\n\t\t\treturn \"blocked\";\n\t\tcase \"pending\":\n\t\tdefault:\n\t\t\treturn \"pending\";\n\t}\n}\n\ntype ToolRenderState = \"pending\" | \"success\" | \"error\";\n\nfunction hasAnsiEscape(input: string): boolean {\n\treturn /\\x1b\\[[0-9;]*m/.test(input);\n}\n\nfunction toolBadge(label: string, state: ToolRenderState): string {\n\tconst color = state === \"error\" ? \"error\" : state === \"success\" ? \"accent\" : \"muted\";\n\treturn theme.fg(\"dim\", \"[\") + theme.fg(color, label) + theme.fg(\"dim\", \"]\");\n}\n\nfunction toolHeader(label: string, subject: string, state: ToolRenderState, meta?: string): string {\n\tconst nestColor = state === \"error\" ? \"error\" : state === \"success\" ? \"accent\" : \"dim\";\n\tconst parts = [toolBadge(label, state)];\n\tif (subject) {\n\t\tparts.push(hasAnsiEscape(subject) ? subject : theme.fg(\"toolTitle\", subject));\n\t}\n\tif (meta) parts.push(theme.fg(\"muted\", meta));\n\treturn theme.fg(nestColor, \"\\u23BF \") + parts.join(\" \");\n}\n\nfunction expandHint(remaining: number, total?: number): string {\n\tconst totalSuffix = total !== undefined ? `, ${total} total` : \"\";\n\treturn `${theme.fg(\"muted\", `\\n... (${remaining} more lines${totalSuffix},`)} ${keyHint(\"expandTools\", \"to expand\")})`;\n}\n\nexport interface ToolExecutionOptions {\n\tshowImages?: boolean; // default: true (only used if terminal supports images)\n}\n\ntype WriteHighlightCache = {\n\trawPath: string | null;\n\tlang: string;\n\trawContent: string;\n\tnormalizedLines: string[];\n\thighlightedLines: string[];\n};\n\n/**\n * Component that renders a tool call with its result (updateable)\n */\nexport class ToolExecutionComponent extends Container {\n\tprivate frameContent: Container;\n\tprivate messageWindow: MessageWindow;\n\tprivate contentBox: Box; // Used for custom tools and bash visual truncation\n\tprivate contentText: Text; // For built-in tools\n\tprivate imageComponents: Image[] = [];\n\tprivate imageSpacers: Spacer[] = [];\n\tprivate toolName: string;\n\tprivate args: any;\n\tprivate expanded = false;\n\tprivate showImages: boolean;\n\tprivate isPartial = true;\n\tprivate toolDefinition?: ToolDefinition;\n\tprivate ui: TUI;\n\tprivate cwd: string;\n\tprivate result?: {\n\t\tcontent: Array<{ type: string; text?: string; data?: string; mimeType?: string }>;\n\t\tisError: boolean;\n\t\tdetails?: any;\n\t};\n\t// Cached edit diff preview (computed when args arrive, before tool executes)\n\tprivate editDiffPreview?: EditDiffResult | EditDiffError;\n\tprivate editDiffArgsKey?: string; // Track which args the preview is for\n\t// Cached converted images for Kitty protocol (which requires PNG), keyed by index\n\tprivate convertedImages: Map<number, { data: string; mimeType: string }> = new Map();\n\t// Incremental syntax highlighting cache for write tool call args\n\tprivate writeHighlightCache?: WriteHighlightCache;\n\t// When true, this component intentionally renders no lines\n\tprivate hideComponent = false;\n\n\tconstructor(\n\t\ttoolName: string,\n\t\targs: any,\n\t\toptions: ToolExecutionOptions = {},\n\t\ttoolDefinition: ToolDefinition | undefined,\n\t\tui: TUI,\n\t\tcwd: string = process.cwd(),\n\t) {\n\t\tsuper();\n\t\tthis.toolName = toolName;\n\t\tthis.args = args;\n\t\tthis.showImages = options.showImages ?? true;\n\t\tthis.toolDefinition = toolDefinition;\n\t\tthis.ui = ui;\n\t\tthis.cwd = cwd;\n\n\t\tthis.addChild(new Spacer(1));\n\n\t\tthis.frameContent = new Container();\n\t\tthis.messageWindow = new MessageWindow(this.frameContent, {\n\t\t\tlabel: \"tool\",\n\t\t\tlineColor: \"success\",\n\t\t\tlabelColor: \"success\",\n\t\t\tpaddingY: 1,\n\t\t});\n\t\tthis.addChild(this.messageWindow);\n\n\t\tconst noBg = (text: string) => text;\n\t\t// Always create both - contentBox for custom tools/bash, contentText for other built-ins\n\t\tthis.contentBox = new Box(TOOL_BOX_PADDING_X, TOOL_BOX_PADDING_Y, noBg);\n\t\tthis.contentText = new Text(\"\", TOOL_BOX_PADDING_X, TOOL_BOX_PADDING_Y, noBg);\n\n\t\tthis.updateDisplay();\n\t}\n\n\t/**\n\t * Check if we should use built-in rendering for this tool.\n\t * Returns true if the tool name is a built-in AND either there's no toolDefinition\n\t * or the toolDefinition doesn't provide custom renderers.\n\t */\n\tprivate shouldUseBuiltInRenderer(): boolean {\n\t\tconst isBuiltInName = this.toolName in allTools;\n\t\tconst hasCustomRenderers = this.toolDefinition?.renderCall || this.toolDefinition?.renderResult;\n\t\treturn isBuiltInName && !hasCustomRenderers;\n\t}\n\n\tupdateArgs(args: any): void {\n\t\tthis.args = args;\n\t\tif (this.toolName === \"write\" && this.isPartial) {\n\t\t\tthis.updateWriteHighlightCacheIncremental();\n\t\t}\n\t\tthis.updateDisplay();\n\t}\n\n\tprivate highlightSingleLine(line: string, lang: string): string {\n\t\tconst highlighted = highlightCode(line, lang);\n\t\treturn highlighted[0] ?? \"\";\n\t}\n\n\tprivate refreshWriteHighlightPrefix(cache: WriteHighlightCache): void {\n\t\tconst prefixCount = Math.min(WRITE_PARTIAL_FULL_HIGHLIGHT_LINES, cache.normalizedLines.length);\n\t\tif (prefixCount === 0) return;\n\n\t\tconst prefixSource = cache.normalizedLines.slice(0, prefixCount).join(\"\\n\");\n\t\tconst prefixHighlighted = highlightCode(prefixSource, cache.lang);\n\t\tfor (let i = 0; i < prefixCount; i++) {\n\t\t\tcache.highlightedLines[i] =\n\t\t\t\tprefixHighlighted[i] ?? this.highlightSingleLine(cache.normalizedLines[i] ?? \"\", cache.lang);\n\t\t}\n\t}\n\n\tprivate rebuildWriteHighlightCacheFull(rawPath: string | null, fileContent: string): void {\n\t\tconst lang = rawPath ? getLanguageFromPath(rawPath) : undefined;\n\t\tif (!lang) {\n\t\t\tthis.writeHighlightCache = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tconst displayContent = normalizeDisplayText(fileContent);\n\t\tconst normalized = replaceTabs(displayContent);\n\t\tthis.writeHighlightCache = {\n\t\t\trawPath,\n\t\t\tlang,\n\t\t\trawContent: fileContent,\n\t\t\tnormalizedLines: normalized.split(\"\\n\"),\n\t\t\thighlightedLines: highlightCode(normalized, lang),\n\t\t};\n\t}\n\n\tprivate updateWriteHighlightCacheIncremental(): void {\n\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\tconst fileContent = str(this.args?.content);\n\t\tif (rawPath === null || fileContent === null) {\n\t\t\tthis.writeHighlightCache = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tconst lang = rawPath ? getLanguageFromPath(rawPath) : undefined;\n\t\tif (!lang) {\n\t\t\tthis.writeHighlightCache = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.writeHighlightCache) {\n\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\treturn;\n\t\t}\n\n\t\tconst cache = this.writeHighlightCache;\n\t\tif (cache.lang !== lang || cache.rawPath !== rawPath) {\n\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!fileContent.startsWith(cache.rawContent)) {\n\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\treturn;\n\t\t}\n\n\t\tif (fileContent.length === cache.rawContent.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst deltaRaw = fileContent.slice(cache.rawContent.length);\n\t\tconst deltaDisplay = normalizeDisplayText(deltaRaw);\n\t\tconst deltaNormalized = replaceTabs(deltaDisplay);\n\t\tcache.rawContent = fileContent;\n\n\t\tif (cache.normalizedLines.length === 0) {\n\t\t\tcache.normalizedLines.push(\"\");\n\t\t\tcache.highlightedLines.push(\"\");\n\t\t}\n\n\t\tconst segments = deltaNormalized.split(\"\\n\");\n\t\tconst lastIndex = cache.normalizedLines.length - 1;\n\t\tcache.normalizedLines[lastIndex] += segments[0];\n\t\tcache.highlightedLines[lastIndex] = this.highlightSingleLine(cache.normalizedLines[lastIndex], cache.lang);\n\n\t\tfor (let i = 1; i < segments.length; i++) {\n\t\t\tcache.normalizedLines.push(segments[i]);\n\t\t\tcache.highlightedLines.push(this.highlightSingleLine(segments[i], cache.lang));\n\t\t}\n\n\t\tthis.refreshWriteHighlightPrefix(cache);\n\t}\n\n\t/**\n\t * Signal that args are complete (tool is about to execute).\n\t * This triggers diff computation for edit tool.\n\t */\n\tsetArgsComplete(): void {\n\t\tif (this.toolName === \"write\") {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst fileContent = str(this.args?.content);\n\t\t\tif (rawPath !== null && fileContent !== null) {\n\t\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\t}\n\t\t}\n\t\tthis.maybeComputeEditDiff();\n\t}\n\n\t/**\n\t * Compute edit diff preview when we have complete args.\n\t * This runs async and updates display when done.\n\t */\n\tprivate maybeComputeEditDiff(): void {\n\t\tif (this.toolName !== \"edit\") return;\n\n\t\tconst path = this.args?.path;\n\t\tconst oldText = this.args?.oldText;\n\t\tconst newText = this.args?.newText;\n\n\t\t// Need all three params to compute diff\n\t\tif (!path || oldText === undefined || newText === undefined) return;\n\n\t\t// Create a key to track which args this computation is for\n\t\tconst argsKey = JSON.stringify({ path, oldText, newText });\n\n\t\t// Skip if we already computed for these exact args\n\t\tif (this.editDiffArgsKey === argsKey) return;\n\n\t\tthis.editDiffArgsKey = argsKey;\n\n\t\t// Compute diff async\n\t\tcomputeEditDiff(path, oldText, newText, this.cwd).then((result) => {\n\t\t\t// Only update if args haven't changed since we started\n\t\t\tif (this.editDiffArgsKey === argsKey) {\n\t\t\t\tthis.editDiffPreview = result;\n\t\t\t\tthis.updateDisplay();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t}\n\t\t});\n\t}\n\n\tupdateResult(\n\t\tresult: {\n\t\t\tcontent: Array<{ type: string; text?: string; data?: string; mimeType?: string }>;\n\t\t\tdetails?: any;\n\t\t\tisError: boolean;\n\t\t},\n\t\tisPartial = false,\n\t): void {\n\t\tthis.result = result;\n\t\tthis.isPartial = isPartial;\n\t\tif (this.toolName === \"write\" && !isPartial) {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst fileContent = str(this.args?.content);\n\t\t\tif (rawPath !== null && fileContent !== null) {\n\t\t\t\tthis.rebuildWriteHighlightCacheFull(rawPath, fileContent);\n\t\t\t}\n\t\t}\n\t\tthis.updateDisplay();\n\t\t// Convert non-PNG images to PNG for Kitty protocol (async)\n\t\tthis.maybeConvertImagesForKitty();\n\t}\n\n\t/**\n\t * Convert non-PNG images to PNG for Kitty graphics protocol.\n\t * Kitty requires PNG format (f=100), so JPEG/GIF/WebP won't display.\n\t */\n\tprivate maybeConvertImagesForKitty(): void {\n\t\tconst caps = getCapabilities();\n\t\t// Only needed for Kitty protocol\n\t\tif (caps.images !== \"kitty\") return;\n\t\tif (!this.result) return;\n\n\t\tconst imageBlocks = this.result.content?.filter((c: any) => c.type === \"image\") || [];\n\n\t\tfor (let i = 0; i < imageBlocks.length; i++) {\n\t\t\tconst img = imageBlocks[i];\n\t\t\tif (!img.data || !img.mimeType) continue;\n\t\t\t// Skip if already PNG or already converted\n\t\t\tif (img.mimeType === \"image/png\") continue;\n\t\t\tif (this.convertedImages.has(i)) continue;\n\n\t\t\t// Convert async\n\t\t\tconst index = i;\n\t\t\tconvertToPng(img.data, img.mimeType).then((converted) => {\n\t\t\t\tif (converted) {\n\t\t\t\t\tthis.convertedImages.set(index, converted);\n\t\t\t\t\tthis.updateDisplay();\n\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.updateDisplay();\n\t}\n\n\tsetShowImages(show: boolean): void {\n\t\tthis.showImages = show;\n\t\tthis.updateDisplay();\n\t}\n\n\toverride invalidate(): void {\n\t\tsuper.invalidate();\n\t\tthis.updateDisplay();\n\t}\n\n\toverride render(width: number): string[] {\n\t\tif (this.hideComponent) {\n\t\t\treturn [];\n\t\t}\n\t\treturn super.render(width);\n\t}\n\n\tprivate updateDisplay(): void {\n\t\tconst noBg = (text: string) => text;\n\n\t\tconst useBuiltInRenderer = this.shouldUseBuiltInRenderer();\n\t\tconst usesBoxRenderer = this.toolName === \"bash\" || (!useBuiltInRenderer && Boolean(this.toolDefinition));\n\t\tconst primaryComponent = usesBoxRenderer ? this.contentBox : this.contentText;\n\t\tlet customRendererHasContent = false;\n\t\tthis.hideComponent = false;\n\n\t\t// Use built-in rendering for built-in tools (or overrides without custom renderers)\n\t\tif (useBuiltInRenderer) {\n\t\t\tif (this.toolName === \"bash\") {\n\t\t\t\t// Bash uses Box with visual line truncation\n\t\t\t\tthis.contentBox.setBgFn(noBg);\n\t\t\t\tthis.contentBox.clear();\n\t\t\t\tthis.renderBashContent();\n\t\t\t} else {\n\t\t\t\t// Other built-in tools: use Text directly with caching\n\t\t\t\tthis.contentText.setCustomBgFn(noBg);\n\t\t\t\tthis.contentText.setText(this.formatToolExecution());\n\t\t\t}\n\t\t} else if (this.toolDefinition) {\n\t\t\t// Custom tools use Box for flexible component rendering\n\t\t\tthis.contentBox.setBgFn(noBg);\n\t\t\tthis.contentBox.clear();\n\t\t\tlet customCallSectionRendered = false;\n\n\t\t\t// Render call component\n\t\t\tif (this.toolDefinition.renderCall) {\n\t\t\t\ttry {\n\t\t\t\t\tconst callComponent = this.toolDefinition.renderCall(this.args, theme);\n\t\t\t\t\tif (callComponent !== undefined) {\n\t\t\t\t\t\tthis.contentBox.addChild(callComponent);\n\t\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t\t\tcustomCallSectionRendered = true;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Fall back to default on error\n\t\t\t\t\tthis.contentBox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(this.toolName)), 0, 0));\n\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t\tcustomCallSectionRendered = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// No custom renderCall, show tool name\n\t\t\t\tthis.contentBox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(this.toolName)), 0, 0));\n\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\tcustomCallSectionRendered = true;\n\t\t\t}\n\n\t\t\tconst addSectionSpacer = (): void => {\n\t\t\t\tif (customCallSectionRendered) {\n\t\t\t\t\tthis.contentBox.addChild(new Spacer(1));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Render result component if we have a result\n\t\t\tif (this.result && this.toolDefinition.renderResult) {\n\t\t\t\ttry {\n\t\t\t\t\tconst resultComponent = this.toolDefinition.renderResult(\n\t\t\t\t\t\t{ content: this.result.content as any, details: this.result.details },\n\t\t\t\t\t\t{ expanded: this.expanded, isPartial: this.isPartial },\n\t\t\t\t\t\ttheme,\n\t\t\t\t\t);\n\t\t\t\t\tif (resultComponent !== undefined) {\n\t\t\t\t\t\taddSectionSpacer();\n\t\t\t\t\t\tthis.contentBox.addChild(resultComponent);\n\t\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Fall back to showing raw output on error\n\t\t\t\t\tconst output = this.getTextOutput();\n\t\t\t\t\tif (output) {\n\t\t\t\t\t\taddSectionSpacer();\n\t\t\t\t\t\tthis.contentBox.addChild(new Text(theme.fg(\"toolOutput\", output), 0, 0));\n\t\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this.result) {\n\t\t\t\t// Has result but no custom renderResult\n\t\t\t\tconst output = this.getTextOutput();\n\t\t\t\tif (output) {\n\t\t\t\t\taddSectionSpacer();\n\t\t\t\t\tthis.contentBox.addChild(new Text(theme.fg(\"toolOutput\", output), 0, 0));\n\t\t\t\t\tcustomRendererHasContent = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Unknown tool with no registered definition - show generic fallback\n\t\t\tthis.contentText.setCustomBgFn(noBg);\n\t\t\tthis.contentText.setText(this.formatToolExecution());\n\t\t}\n\n\t\t// Handle images (same for both custom and built-in)\n\t\tthis.imageComponents = [];\n\t\tthis.imageSpacers = [];\n\n\t\tif (this.result) {\n\t\t\tconst imageBlocks = this.result.content?.filter((c: any) => c.type === \"image\") || [];\n\t\t\tconst caps = getCapabilities();\n\n\t\t\tfor (let i = 0; i < imageBlocks.length; i++) {\n\t\t\t\tconst img = imageBlocks[i];\n\t\t\t\tif (caps.images && this.showImages && img.data && img.mimeType) {\n\t\t\t\t\t// Use converted PNG for Kitty protocol if available\n\t\t\t\t\tconst converted = this.convertedImages.get(i);\n\t\t\t\t\tconst imageData = converted?.data ?? img.data;\n\t\t\t\t\tconst imageMimeType = converted?.mimeType ?? img.mimeType;\n\n\t\t\t\t\t// For Kitty, skip non-PNG images that haven't been converted yet\n\t\t\t\t\t\tif (caps.images === \"kitty\" && imageMimeType !== \"image/png\") {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst spacer = new Spacer(1);\n\t\t\t\t\t\tthis.imageSpacers.push(spacer);\n\t\t\t\t\t\tconst imageComponent = new Image(\n\t\t\t\t\t\t\timageData,\n\t\t\t\t\t\t\timageMimeType,\n\t\t\t\t\t\t{ fallbackColor: (s: string) => theme.fg(\"toolOutput\", s) },\n\t\t\t\t\t\t\t{ maxWidthCells: 60 },\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.imageComponents.push(imageComponent);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\tif (!useBuiltInRenderer && this.toolDefinition) {\n\t\t\tthis.hideComponent = !customRendererHasContent && this.imageComponents.length === 0;\n\t\t}\n\t\tthis.messageWindow.setVisible(!this.hideComponent);\n\t\tif (this.hideComponent) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.frameContent.clear();\n\t\tthis.frameContent.addChild(primaryComponent);\n\t\tfor (let i = 0; i < this.imageComponents.length; i++) {\n\t\t\tconst spacer = this.imageSpacers[i];\n\t\t\tconst image = this.imageComponents[i];\n\t\t\tif (spacer) this.frameContent.addChild(spacer);\n\t\t\tif (image) this.frameContent.addChild(image);\n\t\t}\n\t}\n\n\t/**\n\t * Render bash content using visual line truncation (like bash-execution.ts).\n\t * Uses compact Claude Code style: one-line header with ⎿ prefix.\n\t */\n\tprivate renderBashContent(): void {\n\t\tconst command = str(this.args?.command);\n\t\tconst timeout = this.args?.timeout as number | undefined;\n\n\t\t// Build the first line of the command (compact display)\n\t\tconst commandDisplay =\n\t\t\tcommand === null ? \"[invalid arg]\" : command ? command.split(\"\\n\")[0] : \"...\";\n\t\tconst timeoutSuffix = timeout ? ` (timeout ${timeout}s)` : \"\";\n\n\t\t// Compact one-line header\n\t\tlet headerText: string;\n\t\tif (this.isPartial) {\n\t\t\theaderText = toolHeader(\"bash\", `$ ${commandDisplay}${timeoutSuffix}`, \"pending\");\n\t\t} else if (this.result?.isError) {\n\t\t\tconst exitCode = this.result.details?.exitCode ?? 1;\n\t\t\theaderText = toolHeader(\"bash\", `$ ${commandDisplay}`, \"error\", `(exit ${exitCode})`);\n\t\t} else if (this.result) {\n\t\t\theaderText = toolHeader(\"bash\", `$ ${commandDisplay}`, \"success\", \"(exit 0)\");\n\t\t} else {\n\t\t\theaderText = toolHeader(\"bash\", `$ ${commandDisplay}${timeoutSuffix}`, \"pending\");\n\t\t}\n\n\t\tthis.contentBox.addChild(new Text(headerText, 0, 0));\n\n\t\tif (this.result) {\n\t\t\tconst output = this.getTextOutput().trim();\n\n\t\t\tif (output) {\n\t\t\t\t// Style each line for the output\n\t\t\t\tconst styledOutput = output\n\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t.map((line) => theme.fg(\"toolOutput\", line))\n\t\t\t\t\t.join(\"\\n\");\n\n\t\t\t\tif (this.expanded) {\n\t\t\t\t\t// Show all lines when expanded\n\t\t\t\t\tthis.contentBox.addChild(new Text(`\\n${styledOutput}`, 0, 0));\n\t\t\t\t} else {\n\t\t\t\t\t// Use visual line truncation when collapsed with width-aware caching\n\t\t\t\t\tlet cachedWidth: number | undefined;\n\t\t\t\t\tlet cachedLines: string[] | undefined;\n\t\t\t\t\tlet cachedSkipped: number | undefined;\n\n\t\t\t\t\tthis.contentBox.addChild({\n\t\t\t\t\t\trender: (width: number) => {\n\t\t\t\t\t\t\tif (cachedLines === undefined || cachedWidth !== width) {\n\t\t\t\t\t\t\t\tconst result = truncateToVisualLines(styledOutput, BASH_PREVIEW_LINES, width);\n\t\t\t\t\t\t\t\tcachedLines = result.visualLines;\n\t\t\t\t\t\t\t\tcachedSkipped = result.skippedCount;\n\t\t\t\t\t\t\t\tcachedWidth = width;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (cachedSkipped && cachedSkipped > 0) {\n\t\t\t\t\t\t\t\tconst hint = expandHint(cachedSkipped);\n\t\t\t\t\t\t\t\treturn [\"\", truncateToWidth(hint, width, \"...\"), ...cachedLines];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add blank line for spacing (matches expanded case)\n\t\t\t\t\t\t\treturn [\"\", ...cachedLines];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinvalidate: () => {\n\t\t\t\t\t\t\tcachedWidth = undefined;\n\t\t\t\t\t\t\tcachedLines = undefined;\n\t\t\t\t\t\t\tcachedSkipped = undefined;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Truncation warnings\n\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\tconst fullOutputPath = this.result.details?.fullOutputPath;\n\t\t\tif (truncation?.truncated || fullOutputPath) {\n\t\t\t\tconst warnings: string[] = [];\n\t\t\t\tif (fullOutputPath) {\n\t\t\t\t\twarnings.push(`Full output: ${fullOutputPath}`);\n\t\t\t\t}\n\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\tif (truncation.truncatedBy === \"lines\") {\n\t\t\t\t\t\twarnings.push(`Truncated: showing ${truncation.outputLines} of ${truncation.totalLines} lines`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\twarnings.push(\n\t\t\t\t\t\t\t`Truncated: ${truncation.outputLines} lines shown (${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit)`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.contentBox.addChild(new Text(`\\n${theme.fg(\"warning\", `[${warnings.join(\". \")}]`)}`, 0, 0));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getTextOutput(): string {\n\t\tif (!this.result) return \"\";\n\n\t\tconst textBlocks = this.result.content?.filter((c: any) => c.type === \"text\") || [];\n\t\tconst imageBlocks = this.result.content?.filter((c: any) => c.type === \"image\") || [];\n\n\t\tlet output = textBlocks\n\t\t\t.map((c: any) => {\n\t\t\t\t// Use sanitizeBinaryOutput to handle binary data that crashes string-width\n\t\t\t\treturn sanitizeBinaryOutput(stripAnsi(c.text || \"\")).replace(/\\r/g, \"\");\n\t\t\t})\n\t\t\t.join(\"\\n\");\n\n\t\tconst caps = getCapabilities();\n\t\tif (imageBlocks.length > 0 && (!caps.images || !this.showImages)) {\n\t\t\tconst imageIndicators = imageBlocks\n\t\t\t\t.map((img: any) => {\n\t\t\t\t\tconst dims = img.data ? (getImageDimensions(img.data, img.mimeType) ?? undefined) : undefined;\n\t\t\t\t\treturn imageFallback(img.mimeType, dims);\n\t\t\t\t})\n\t\t\t\t.join(\"\\n\");\n\t\t\toutput = output ? `${output}\\n${imageIndicators}` : imageIndicators;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tprivate formatToolExecution(): string {\n\t\tlet text = \"\";\n\t\tconst invalidArg = theme.fg(\"error\", \"[invalid arg]\");\n\n\t\tif (this.toolName === \"read\") {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath) : null;\n\t\t\tconst offset = this.args?.offset;\n\t\t\tconst limit = this.args?.limit;\n\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \"...\";\n\n\t\t\t// Build range suffix for path\n\t\t\tlet rangeSuffix = \"\";\n\t\t\tif (offset !== undefined || limit !== undefined) {\n\t\t\t\tconst startLine = offset ?? 1;\n\t\t\t\tconst endLine = limit !== undefined ? startLine + limit - 1 : \"\";\n\t\t\t\trangeSuffix = `:${startLine}${endLine ? `-${endLine}` : \"\"}`;\n\t\t\t}\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"read\", pathLabel + rangeSuffix, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"read\", pathLabel + rangeSuffix, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\tconst output = this.getTextOutput();\n\t\t\t\tconst lineCount = output ? output.split(\"\\n\").length : 0;\n\t\t\t\tconst subject = shortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel + rangeSuffix);\n\t\t\t\ttext = toolHeader(\"read\", subject, \"success\", `(${lineCount} lines)`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"read\", pathLabel + rangeSuffix, \"pending\");\n\t\t\t}\n\n\t\t\tif (this.result && !this.result.isError) {\n\t\t\t\tconst output = this.getTextOutput();\n\t\t\t\tconst rawPathForLang = str(this.args?.file_path ?? this.args?.path);\n\t\t\t\tconst lang = rawPathForLang ? getLanguageFromPath(rawPathForLang) : undefined;\n\t\t\t\tconst lines = lang ? highlightCode(replaceTabs(output), lang) : output.split(\"\\n\");\n\n\t\t\t\tconst maxLines = this.expanded ? lines.length : 10;\n\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\ttext +=\n\t\t\t\t\t\"\\n\\n\" +\n\t\t\t\t\tdisplayLines\n\t\t\t\t\t\t.map((line: string) => (lang ? replaceTabs(line) : theme.fg(\"toolOutput\", replaceTabs(line))))\n\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\tif (remaining > 0) {\n\t\t\t\t\ttext += expandHint(remaining, lines.length);\n\t\t\t\t}\n\n\t\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\tif (truncation.firstLineExceedsLimit) {\n\t\t\t\t\t\ttext +=\n\t\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\t\t\t`[First line exceeds ${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit]`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t} else if (truncation.truncatedBy === \"lines\") {\n\t\t\t\t\t\ttext +=\n\t\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\t\t\t`[Truncated: showing ${truncation.outputLines} of ${truncation.totalLines} lines (${truncation.maxLines ?? DEFAULT_MAX_LINES} line limit)]`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext +=\n\t\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t\t\t\t`[Truncated: ${truncation.outputLines} lines shown (${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit)]`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\tconst errorText = this.getTextOutput();\n\t\t\t\tif (errorText) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", errorText)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"write\") {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst fileContent = str(this.args?.content);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath) : null;\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \"...\";\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"write\", pathLabel, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"write\", pathLabel, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\t// Count lines from args content (what was written)\n\t\t\t\tconst writtenLines = fileContent ? fileContent.split(\"\\n\").length : 0;\n\t\t\t\tconst subject = shortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel);\n\t\t\t\ttext = toolHeader(\"write\", subject, \"success\", `(${writtenLines} lines)`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"write\", pathLabel, \"pending\");\n\t\t\t}\n\n\t\t\tif (fileContent === null) {\n\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", \"[invalid content arg - expected string]\")}`;\n\t\t\t} else if (fileContent) {\n\t\t\t\tconst lang = rawPath ? getLanguageFromPath(rawPath) : undefined;\n\n\t\t\t\tlet lines: string[];\n\t\t\t\tif (lang) {\n\t\t\t\t\tconst cache = this.writeHighlightCache;\n\t\t\t\t\tif (cache && cache.lang === lang && cache.rawPath === rawPath && cache.rawContent === fileContent) {\n\t\t\t\t\t\tlines = cache.highlightedLines;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst displayContent = normalizeDisplayText(fileContent);\n\t\t\t\t\t\tconst normalized = replaceTabs(displayContent);\n\t\t\t\t\t\tlines = highlightCode(normalized, lang);\n\t\t\t\t\t\tthis.writeHighlightCache = {\n\t\t\t\t\t\t\trawPath,\n\t\t\t\t\t\t\tlang,\n\t\t\t\t\t\t\trawContent: fileContent,\n\t\t\t\t\t\t\tnormalizedLines: normalized.split(\"\\n\"),\n\t\t\t\t\t\t\thighlightedLines: lines,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlines = normalizeDisplayText(fileContent).split(\"\\n\");\n\t\t\t\t\tthis.writeHighlightCache = undefined;\n\t\t\t\t}\n\n\t\t\t\tconst totalLines = lines.length;\n\t\t\t\tconst maxLines = this.expanded ? lines.length : 10;\n\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\ttext +=\n\t\t\t\t\t\"\\n\\n\" +\n\t\t\t\t\tdisplayLines.map((line: string) => (lang ? line : theme.fg(\"toolOutput\", replaceTabs(line)))).join(\"\\n\");\n\t\t\t\tif (remaining > 0) {\n\t\t\t\t\ttext += expandHint(remaining, totalLines);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Show error if tool execution failed\n\t\t\tif (this.result?.isError) {\n\t\t\t\tconst errorText = this.getTextOutput();\n\t\t\t\tif (errorText) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", errorText)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"edit\") {\n\t\t\tconst rawPath = str(this.args?.file_path ?? this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath) : null;\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \"...\";\n\n\t\t\t// Compute +X / -Y stats from diff if available\n\t\t\tlet diffStats = \"\";\n\t\t\tconst diff = this.result?.details?.diff ?? (this.editDiffPreview && !(\"error\" in this.editDiffPreview) ? (this.editDiffPreview as any).diff : undefined);\n\t\t\tif (diff) {\n\t\t\t\tconst added = (diff.match(/^\\+[^+]/mg) || []).length;\n\t\t\t\tconst removed = (diff.match(/^-[^-]/mg) || []).length;\n\t\t\t\tif (added > 0 || removed > 0) {\n\t\t\t\t\tdiffStats = `(+${added} / -${removed} lines)`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"edit\", pathLabel, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"edit\", pathLabel, \"error\", \"(failed)\");\n\t\t\t} else if (this.result) {\n\t\t\t\tconst subject = shortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel);\n\t\t\t\ttext = toolHeader(\"edit\", subject, \"success\", diffStats || undefined);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"edit\", pathLabel, \"pending\");\n\t\t\t}\n\n\t\t\tif (this.result?.isError) {\n\t\t\t\t// Show error from result\n\t\t\t\tconst errorText = this.getTextOutput();\n\t\t\t\tif (errorText) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", errorText)}`;\n\t\t\t\t}\n\t\t\t} else if (this.result?.details?.diff) {\n\t\t\t\t// Tool executed successfully - use the diff from result\n\t\t\t\ttext += `\\n\\n${renderDiff(this.result.details.diff, { filePath: rawPath ?? undefined })}`;\n\t\t\t} else if (this.editDiffPreview) {\n\t\t\t\t// Use cached diff preview (before tool executes)\n\t\t\t\tif (\"error\" in this.editDiffPreview) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(\"error\", this.editDiffPreview.error)}`;\n\t\t\t\t} else if (this.editDiffPreview.diff) {\n\t\t\t\t\ttext += `\\n\\n${renderDiff(this.editDiffPreview.diff, { filePath: rawPath ?? undefined })}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"ls\") {\n\t\t\tconst rawPath = str(this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath || \".\") : null;\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \".\";\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"list\", pathLabel, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"list\", pathLabel, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tconst resultCount = output ? output.split(\"\\n\").filter(Boolean).length : 0;\n\t\t\t\tconst subject = shortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel);\n\t\t\t\ttext = toolHeader(\"list\", subject, \"success\", `(${resultCount} entries)`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"list\", pathLabel, \"pending\");\n\t\t\t}\n\n\t\t\tif (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tif (output) {\n\t\t\t\t\tconst lines = output.split(\"\\n\");\n\t\t\t\t\tconst maxLines = this.expanded ? lines.length : 20;\n\t\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\t\ttext += `\\n\\n${displayLines.map((line: string) => theme.fg(\"toolOutput\", line)).join(\"\\n\")}`;\n\t\t\t\t\tif (remaining > 0) {\n\t\t\t\t\t\ttext += expandHint(remaining, lines.length);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst entryLimit = this.result.details?.entryLimitReached;\n\t\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\t\tif (entryLimit || truncation?.truncated) {\n\t\t\t\t\tconst warnings: string[] = [];\n\t\t\t\t\tif (entryLimit) {\n\t\t\t\t\t\twarnings.push(`${entryLimit} entries limit`);\n\t\t\t\t\t}\n\t\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\t\twarnings.push(`${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit`);\n\t\t\t\t\t}\n\t\t\t\t\ttext += `\\n${theme.fg(\"warning\", `[Truncated: ${warnings.join(\", \")}]`)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"find\") {\n\t\t\tconst pattern = str(this.args?.pattern);\n\t\t\tconst patternLabel = pattern === null ? \"[invalid arg]\" : pattern || \"*\";\n\t\t\tconst rawPath = str(this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath || \".\") : null;\n\t\t\tconst pathLabel = shortPath === null ? \"[invalid arg]\" : shortPath || \".\";\n\t\t\tconst subject = `${theme.fg(\"toolTitle\", patternLabel)} ${theme.fg(\"muted\", \"in\")} ${\n\t\t\t\tshortPath === null ? invalidArg : theme.fg(\"accent\", pathLabel)\n\t\t\t}`;\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"find\", subject, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"find\", subject, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tconst resultCount = output ? output.split(\"\\n\").filter(Boolean).length : 0;\n\t\t\t\ttext = toolHeader(\"find\", subject, \"success\", `(${resultCount} results)`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"find\", subject, \"pending\");\n\t\t\t}\n\n\t\t\tif (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tif (output) {\n\t\t\t\t\tconst lines = output.split(\"\\n\");\n\t\t\t\t\tconst maxLines = this.expanded ? lines.length : 20;\n\t\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\t\ttext += `\\n\\n${displayLines.map((line: string) => theme.fg(\"toolOutput\", line)).join(\"\\n\")}`;\n\t\t\t\t\tif (remaining > 0) {\n\t\t\t\t\t\ttext += expandHint(remaining, lines.length);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst resultLimit = this.result.details?.resultLimitReached;\n\t\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\t\tif (resultLimit || truncation?.truncated) {\n\t\t\t\t\tconst warnings: string[] = [];\n\t\t\t\t\tif (resultLimit) {\n\t\t\t\t\t\twarnings.push(`${resultLimit} results limit`);\n\t\t\t\t\t}\n\t\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\t\twarnings.push(`${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit`);\n\t\t\t\t\t}\n\t\t\t\t\ttext += `\\n${theme.fg(\"warning\", `[Truncated: ${warnings.join(\", \")}]`)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"grep\") {\n\t\t\tconst pattern = str(this.args?.pattern);\n\t\t\tconst patternLabel = pattern === null ? \"[invalid arg]\" : pattern || \"\";\n\t\t\tconst rawPath = str(this.args?.path);\n\t\t\tconst shortPath = rawPath !== null ? shortenPath(rawPath || \".\") : null;\n\t\t\tconst glob = str(this.args?.glob);\n\t\t\tconst limit = this.args?.limit;\n\t\t\tconst locationContext = shortPath !== null ? ` in ${shortPath}` : \"\";\n\t\t\tconst globContext = glob ? ` (${glob})` : \"\";\n\t\t\tconst limitContext = limit !== undefined ? ` limit ${limit}` : \"\";\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"grep\", patternLabel, \"pending\", `${locationContext}${globContext}${limitContext}`.trim());\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"grep\", patternLabel, \"error\", `${locationContext}${globContext}${limitContext}`.trim());\n\t\t\t} else if (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tconst matchCount = output ? output.split(\"\\n\").filter(Boolean).length : 0;\n\t\t\t\tconst subject = pattern === null ? invalidArg : theme.fg(\"accent\", patternLabel);\n\t\t\t\tconst metaParts = [`(${matchCount} matches)`];\n\t\t\t\tif (locationContext || globContext || limitContext) {\n\t\t\t\t\tmetaParts.push(`${locationContext}${globContext}${limitContext}`.trim());\n\t\t\t\t}\n\t\t\t\ttext = toolHeader(\"grep\", subject, \"success\", metaParts.join(\" \"));\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"grep\", patternLabel, \"pending\", `${locationContext}${globContext}${limitContext}`.trim());\n\t\t\t}\n\n\t\t\tif (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tif (output) {\n\t\t\t\t\tconst lines = output.split(\"\\n\");\n\t\t\t\t\tconst maxLines = this.expanded ? lines.length : 15;\n\t\t\t\t\tconst displayLines = lines.slice(0, maxLines);\n\t\t\t\t\tconst remaining = lines.length - maxLines;\n\n\t\t\t\t\ttext += `\\n\\n${displayLines.map((line: string) => theme.fg(\"toolOutput\", line)).join(\"\\n\")}`;\n\t\t\t\t\tif (remaining > 0) {\n\t\t\t\t\t\ttext += expandHint(remaining, lines.length);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst matchLimit = this.result.details?.matchLimitReached;\n\t\t\t\tconst truncation = this.result.details?.truncation;\n\t\t\t\tconst linesTruncated = this.result.details?.linesTruncated;\n\t\t\t\tif (matchLimit || truncation?.truncated || linesTruncated) {\n\t\t\t\t\tconst warnings: string[] = [];\n\t\t\t\t\tif (matchLimit) {\n\t\t\t\t\t\twarnings.push(`${matchLimit} matches limit`);\n\t\t\t\t\t}\n\t\t\t\t\tif (truncation?.truncated) {\n\t\t\t\t\t\twarnings.push(`${formatSize(truncation.maxBytes ?? DEFAULT_MAX_BYTES)} limit`);\n\t\t\t\t\t}\n\t\t\t\t\tif (linesTruncated) {\n\t\t\t\t\t\twarnings.push(\"some lines truncated\");\n\t\t\t\t\t}\n\t\t\t\t\ttext += `\\n${theme.fg(\"warning\", `[Truncated: ${warnings.join(\", \")}]`)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.toolName === \"todo_write\" || this.toolName === \"todo_read\") {\n\t\t\tconst isWrite = this.toolName === \"todo_write\";\n\t\t\tconst details = this.result?.details as Record<string, unknown> | undefined;\n\t\t\tconst tasksFromDetails = extractChecklistItems(details?.tasks);\n\t\t\tconst tasksFromArgs = isWrite ? extractChecklistItems(this.args?.tasks) : [];\n\t\t\tconst tasks = tasksFromDetails.length > 0 ? tasksFromDetails : tasksFromArgs;\n\t\t\tconst counts = countChecklistByStatus(tasks);\n\t\t\tconst summaryParts: string[] = [];\n\t\t\tif (counts.inProgress > 0) summaryParts.push(`${counts.inProgress} in progress`);\n\t\t\tif (counts.pending > 0) summaryParts.push(`${counts.pending} pending`);\n\t\t\tif (counts.done > 0) summaryParts.push(`${counts.done} done`);\n\t\t\tif (counts.blocked > 0) summaryParts.push(`${counts.blocked} blocked`);\n\t\t\tconst summary = summaryParts.length > 0 ? summaryParts.join(\", \") : \"no tasks\";\n\t\t\tconst subject = isWrite ? \"Update task checklist\" : \"Read task checklist\";\n\n\t\t\tif (this.isPartial) {\n\t\t\t\ttext = toolHeader(\"tasks\", subject, \"pending\");\n\t\t\t} else if (this.result?.isError) {\n\t\t\t\ttext = toolHeader(\"tasks\", subject, \"error\");\n\t\t\t} else if (this.result) {\n\t\t\t\ttext = toolHeader(\"tasks\", theme.fg(\"accent\", subject), \"success\", `(${tasks.length} total: ${summary})`);\n\t\t\t} else {\n\t\t\t\ttext = toolHeader(\"tasks\", subject, \"pending\");\n\t\t\t}\n\n\t\t\tif (tasks.length > 0) {\n\t\t\t\tconst maxLines = this.expanded ? tasks.length : 10;\n\t\t\t\tconst displayTasks = tasks.slice(0, maxLines);\n\t\t\t\tconst remaining = tasks.length - maxLines;\n\t\t\t\tconst lines = displayTasks.map((task) => {\n\t\t\t\t\tconst marker = styleChecklistMarker(task.status, checklistStatusMarker(task.status));\n\t\t\t\t\tconst idPrefix = task.id ? `${theme.fg(\"dim\", `[${task.id}]`)} ` : \"\";\n\t\t\t\t\tconst label = theme.fg(\"toolOutput\", task.title);\n\t\t\t\t\tconst statusSuffix = theme.fg(\"dim\", ` (${checklistStatusLabel(task.status)})`);\n\t\t\t\t\tconst activeSuffix =\n\t\t\t\t\t\ttask.status === \"in_progress\" && task.activeForm ? theme.fg(\"muted\", ` — ${task.activeForm}`) : \"\";\n\t\t\t\t\treturn `${marker} ${idPrefix}${label}${statusSuffix}${activeSuffix}`;\n\t\t\t\t});\n\t\t\t\ttext += `\\n\\n${lines.join(\"\\n\")}`;\n\t\t\t\tif (remaining > 0) {\n\t\t\t\t\ttext += expandHint(remaining, tasks.length);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.result) {\n\t\t\t\tconst output = this.getTextOutput().trim();\n\t\t\t\tif (output && (tasks.length === 0 || this.result.isError)) {\n\t\t\t\t\ttext += `\\n\\n${theme.fg(this.result.isError ? \"error\" : \"toolOutput\", output)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Generic tool (shouldn't reach here for custom tools)\n\t\t\ttext = theme.fg(\"toolTitle\", theme.bold(this.toolName));\n\n\t\t\tconst content = JSON.stringify(this.args, null, 2);\n\t\t\ttext += `\\n\\n${theme.fg(\"toolOutput\", content)}`;\n\t\t\tconst output = this.getTextOutput();\n\t\t\tif (output) {\n\t\t\t\ttext += `\\n${theme.fg(\"toolOutput\", output)}`;\n\t\t\t}\n\t\t}\n\n\t\treturn text;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAyB,YAAY,EAAmC,MAAM,qBAAqB,CAAC;AAwDhH,OAAO,EACN,KAAK,YAAY,EAIjB,MAAM,6BAA6B,CAAC;AAyBrC,OAAO,EAKN,KAAK,UAAU,EAEf,MAAM,yBAAyB,CAAC;AAgFjC,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AA6H/F,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACrD,cAAc,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mCAAmC,EAAE,OAAO,CAAC;CAC7C,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAShC;AAqqCD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,cAAc,CAAC;CAC9B;AAgFD,qBAAa,eAAe;IAsL1B,OAAO,CAAC,OAAO;IArLhB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,sBAAsB,CAAY;IAC1C,OAAO,CAAC,wBAAwB,CAAY;IAC5C,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,qBAAqB,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgB;IACtD,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,yBAAyB,CAAqB;IACtD,OAAO,CAAC,4BAA4B,CAAqB;IACzD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,6BAA6B,CAA2B;IAChE,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,oBAAoB,CAA0C;IAEtE,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,iBAAiB,CAAiC;IAG1D,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,kBAAkB,CAAoD;IAC9E,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,8BAA8B,CAAS;IAC/C,OAAO,CAAC,0BAA0B,CAAS;IAG3C,OAAO,CAAC,YAAY,CAA6C;IAGjE,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,oBAAoB,CAAyD;IACrF,OAAO,CAAC,+BAA+B,CAAgC;IACvE,OAAO,CAAC,4BAA4B,CAAS;IAG7C,OAAO,CAAC,iCAAiC,CAAyD;IAClG,OAAO,CAAC,qCAAqC,CAAK;IAClD,OAAO,CAAC,mCAAmC,CAAS;IAGpD,OAAO,CAAC,kBAAkB,CAAS;IAGnC,OAAO,CAAC,iBAAiB,CAAS;IAGlC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,YAAY,CAAC,CAAiB;IAGtC,OAAO,CAAC,WAAW,CAAC,CAAa;IAGjC,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,aAAa,CAAiD;IAGtE,OAAO,CAAC,qBAAqB,CAAgC;IAG7D,OAAO,CAAC,oBAAoB,CAAiC;IAC7D,OAAO,CAAC,2BAA2B,CAAC,CAAa;IAGjD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,kBAAkB,CAAC,CAAa;IAGxC,OAAO,CAAC,wBAAwB,CAAiC;IAGjE,OAAO,CAAC,iBAAiB,CAAS;IAGlC,OAAO,CAAC,iBAAiB,CAAiD;IAC1E,OAAO,CAAC,uBAAuB,CAAuC;IACtE,OAAO,CAAC,mBAAmB,CAAuC;IAClE,OAAO,CAAC,uBAAuB,CAAuC;IAGtE,OAAO,CAAC,iBAAiB,CAAqD;IAC9E,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,8BAA8B,CAAoC;IAC1E,OAAO,CAAC,0BAA0B,CAAoC;IACtE,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,mCAAmC,CAAyB;IAGpE,OAAO,CAAC,qBAAqB,CAAuD;IACpF,OAAO,CAAC,qBAAqB,CAAuD;IACpF,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,oBAAoB,CAAa;IAGzC,OAAO,CAAC,YAAY,CAA6D;IAGjF,OAAO,CAAC,eAAe,CAAY;IAGnC,OAAO,CAAC,aAAa,CAA+B;IAGpD,OAAO,CAAC,SAAS,CAA6C;IAG9D,OAAO,CAAC,0BAA0B,CAA6B;IAC/D,OAAO,CAAC,wBAAwB,CAE9B;IACF,OAAO,CAAC,4BAA4B,CAQlC;IACF,OAAO,CAAC,sCAAsC,CAAwC;IACtF,OAAO,CAAC,oCAAoC,CAA2C;IAGvF,OAAO,CAAC,YAAY,CAA6D;IAGjF,OAAO,CAAC,uBAAuB,CAAoC;IACnE,OAAO,CAAC,mBAAmB,CAAoC;IAG/D,OAAO,KAAK,KAAK,GAEhB;IACD,OAAO,KAAK,cAAc,GAEzB;IACD,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,uBAAuB;gBAQ9B,OAAO,EAAE,YAAY,EACb,OAAO,GAAE,sBAA2B;IAyD7C,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,qBAAqB;YASf,wBAAwB;YAcxB,qBAAqB;IAyHnC,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,gCAAgC;IAOxC,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,oBAAoB;YAsBd,sBAAsB;YA2DtB,6BAA6B;YAqE7B,wBAAwB;IAgHtC,OAAO,CAAC,yBAAyB;IAgCjC,OAAO,CAAC,4BAA4B;IAsCpC,OAAO,CAAC,8BAA8B;IA2CtC,OAAO,CAAC,8BAA8B;IAkCtC,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,2BAA2B;IA+BnC,OAAO,CAAC,gCAAgC;IA8BxC,OAAO,CAAC,iBAAiB;IAgMnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqH3B,OAAO,CAAC,yBAAyB;IA0GjC,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA2F1B;;OAEG;YACW,kBAAkB;IA6BhC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAyB9B,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;IAkCxB,OAAO,CAAC,iBAAiB;IA8BzB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyDzB,OAAO,CAAC,mBAAmB;IAmI3B;;OAEG;YACW,cAAc;IAkG5B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAMnC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmD/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAE9C;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,iCAAiC;IAWzC,OAAO,CAAC,oCAAoC;IAO5C;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA4ChC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwC7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;YACW,oBAAoB;YASpB,sBAAsB;IAwBpC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgD1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA0DhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B,oGAAoG;YACtF,mBAAmB;IA8EjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,gBAAgB;YAoFV,yBAAyB;IAsBvC,OAAO,CAAC,wBAAwB;IAsThC,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,kCAAkC;IA4J1C,OAAO,CAAC,kCAAkC;IAI1C,OAAO,CAAC,yCAAyC;IAyBjD,OAAO,CAAC,+BAA+B;IAIvC,OAAO,CAAC,yCAAyC;IA8CjD,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,0BAA0B;IAgClC,OAAO,CAAC,2BAA2B;IAiFnC,OAAO,CAAC,4BAA4B;IA0CpC,OAAO,CAAC,gCAAgC;IAaxC,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,8BAA8B;IAMtC,OAAO,CAAC,gBAAgB;YAMV,WAAW;IA2iBzB,+CAA+C;IAC/C,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,2BAA2B;IAoBnC;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,gBAAgB;IA4GxB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IA8I5B,qBAAqB,IAAI,IAAI;IAiBvB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IASrC,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,WAAW;IA8CnB,OAAO,CAAC,WAAW;IAKnB;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAS;YAEjB,QAAQ;IAwBtB;;OAEG;YACW,sBAAsB;IAKpC,OAAO,CAAC,WAAW;YAoBL,WAAW;YA8BX,cAAc;IA+B5B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,YAAY;YAaN,UAAU;IAmBxB,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,6BAA6B;IAkBrC,OAAO,CAAC,kBAAkB;IAmD1B,WAAW,IAAI,IAAI;IAKnB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAMrC,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAMzC,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAoBpD;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,4BAA4B;IAuEpC,OAAO,CAAC,qBAAqB;YAIf,oBAAoB;IAqHlC,OAAO,CAAC,6BAA6B;IAqBrC,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,kBAAkB;YAWZ,oBAAoB;IAgFlC,6DAA6D;IAC7D,OAAO,CAAC,0BAA0B;IAYlC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,uBAAuB;YAOjB,2BAA2B;IAUzC,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,wBAAwB;IA0BhC,OAAO,CAAC,oBAAoB;YAUd,eAAe;YA6Nf,qBAAqB;IA6JnC,OAAO,CAAC,eAAe;IAqEvB,OAAO,CAAC,oBAAoB;YAyQd,kBAAkB;YAwBlB,yBAAyB;YAkEzB,mBAAmB;YA2BnB,kBAAkB;IAahC,iFAAiF;YACnE,4BAA4B;IAO1C,OAAO,CAAC,iBAAiB;YAiCX,kBAAkB;IAsHhC,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,gBAAgB;IAgIxB,OAAO,CAAC,mBAAmB;YAmCb,mBAAmB;YA4BnB,iBAAiB;YAwDjB,+BAA+B;IAsC7C,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,4BAA4B;IAuBpC,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,gCAAgC;YAa1B,8BAA8B;YA8B9B,kCAAkC;YAgClC,wCAAwC;YAiBxC,mCAAmC;IAsBjD,OAAO,CAAC,uBAAuB;IAuC/B,OAAO,CAAC,sBAAsB;YAShB,iBAAiB;YAuDjB,2BAA2B;YAS3B,eAAe;IA6F7B,OAAO,CAAC,cAAc;IAgDtB,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,yBAAyB;IAmCjC,OAAO,CAAC,uBAAuB;YAMjB,iBAAiB;YAuBjB,yBAAyB;YAWzB,mBAAmB;YASnB,sBAAsB;YActB,sBAAsB;YAQtB,wBAAwB;YA2GxB,mBAAmB;IA0IjC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,yBAAyB;IAkCjC,OAAO,CAAC,wBAAwB;IA8BhC,OAAO,CAAC,0BAA0B;IAuBlC,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,6BAA6B;YAMvB,mCAAmC;YAoBnC,8BAA8B;YA2D9B,sBAAsB;IA2MpC,OAAO,CAAC,kCAAkC;YAQ5B,8BAA8B;YAiC9B,0BAA0B;IA6HxC,OAAO,CAAC,mBAAmB;YA2Bb,qBAAqB;IAyInC,OAAO,CAAC,yBAAyB;IA4BjC,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,iBAAiB;YAeX,sBAAsB;IA6CpC,OAAO,CAAC,2BAA2B;YASrB,iBAAiB;YA0EjB,0BAA0B;YAgF1B,qBAAqB;IA0EnC,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,+BAA+B;IAQvC,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,+BAA+B;IAqBvC,OAAO,CAAC,kCAAkC;IAwB1C,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,uCAAuC;YA6DjC,6BAA6B;IA+B3C,OAAO,CAAC,wBAAwB;IAmFhC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,wBAAwB;IAiChC,OAAO,CAAC,4BAA4B;IA8DpC,OAAO,CAAC,kCAAkC;YA2C5B,+BAA+B;IAqH7C,OAAO,CAAC,uBAAuB;IA4D/B,OAAO,CAAC,2BAA2B;IAuFnC,OAAO,CAAC,kCAAkC;YAY5B,sBAAsB;IAgEpC,OAAO,CAAC,uBAAuB;YAmBjB,mBAAmB;YAgEnB,qBAAqB;IAyCnC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,uBAAuB;YAmCjB,qBAAqB;YA0FrB,yBAAyB;YAwGzB,mBAAmB;IAqPjC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,oBAAoB;YAWd,4BAA4B;IAqS1C,OAAO,CAAC,uBAAuB;YAYjB,6BAA6B;IA0C3C,OAAO,CAAC,+BAA+B;IAiBvC,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,iBAAiB;YAaX,kCAAkC;YAkBlC,kCAAkC;YAgDlC,4BAA4B;YAyD5B,sBAAsB;IA8JpC,OAAO,CAAC,iCAAiC;IAuHzC,OAAO,CAAC,mBAAmB;YAsBb,kBAAkB;IAiChC,OAAO,CAAC,+BAA+B;IAiDvC,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,uCAAuC;IA+D/C,OAAO,CAAC,0CAA0C;IAQlD,OAAO,CAAC,qCAAqC;IAwC7C,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,8BAA8B;YAwBxB,+BAA+B;YA0C/B,4BAA4B;YA4D5B,sBAAsB;IA+BpC,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,iBAAiB;IAsHzB,OAAO,CAAC,wBAAwB;IAmChC,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,mCAAmC;IA0B3C,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,uBAAuB;IAyB/B,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,2BAA2B;YAUrB,0BAA0B;YA6a1B,eAAe;YAqWf,gBAAgB;YA6ChB,oBAAoB;IA6DlC,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,8BAA8B;IAwBtC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,gBAAgB;YAiDV,cAAc;YAwBd,aAAa;YAwDb,kBAAkB;IAqEhC,OAAO,CAAC,4BAA4B;YA8MtB,6BAA6B;YA2I7B,wBAAwB;IAoItC,OAAO,CAAC,iBAAiB;YAeX,iBAAiB;IAiB/B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,0BAA0B;IAgClC,OAAO,CAAC,sBAAsB;YAiChB,aAAa;YAsBb,eAAe;IAiB7B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,qBAAqB;YASf,iBAAiB;IA2J/B,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,iCAAiC;IAiBzC,OAAO,CAAC,mCAAmC;IAiB3C,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,mCAAmC;IAW3C,OAAO,CAAC,6BAA6B;IAwBrC,OAAO,CAAC,wCAAwC;IAyKhD,OAAO,CAAC,8BAA8B;YA+BxB,gCAAgC;IAyE9C,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,2BAA2B;IAiBnC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,kCAAkC;IAU1C,OAAO,CAAC,8BAA8B;YAwBxB,iBAAiB;YA4DjB,uBAAuB;YA+BvB,0BAA0B;YAqC1B,qCAAqC;IA4NnD,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,+BAA+B;IA8BvC,OAAO,CAAC,gCAAgC;IAcxC,OAAO,CAAC,oBAAoB;IAmC5B,OAAO,CAAC,4BAA4B;YA4CtB,kBAAkB;YA6ElB,4BAA4B;IAgI1C,OAAO,CAAC,0BAA0B;YAuBpB,4BAA4B;IA6D1C,OAAO,CAAC,6BAA6B;YA0DvB,gCAAgC;IAiV9C,OAAO,CAAC,yBAAyB;YAkEnB,oCAAoC;YA+JpC,8BAA8B;YAuC9B,0BAA0B;IA8GxC,OAAO,CAAC,uBAAuB;IAwH/B,OAAO,CAAC,+BAA+B;YAqBzB,+BAA+B;IA0D7C,OAAO,CAAC,8BAA8B;YAKxB,iBAAiB;YAyBjB,iCAAiC;YA2BjC,iCAAiC;YAsDjC,mBAAmB;YAkFnB,mBAAmB;YAqCnB,kBAAkB;IA8FhC,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,sBAAsB;IAqB9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,oBAAoB;YAmHd,kBAAkB;IA4BhC,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,mBAAmB;YAeb,iBAAiB;YA+GjB,oBAAoB;YAYpB,iBAAiB;IAwD/B,IAAI,IAAI,IAAI;CAiBZ"}
1
+ {"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
@@ -111,9 +111,17 @@ function deriveMetaRequiredTopLevelTaskCalls(userInput, taskPlanSnapshot) {
111
111
  const requested = parseRequestedParallelAgentCount(userInput);
112
112
  if (requested)
113
113
  return requested;
114
- if (!taskPlanSnapshot)
114
+ if (taskPlanSnapshot) {
115
+ return Math.max(2, Math.min(3, taskPlanSnapshot.totalSteps));
116
+ }
117
+ const normalized = userInput.trim();
118
+ if (!normalized || normalized.startsWith("/"))
119
+ return undefined;
120
+ // Language-agnostic conversational guard: direct question prompts should stay chat-first.
121
+ if (/[??]\s*$/.test(normalized))
115
122
  return undefined;
116
- return Math.max(2, Math.min(3, taskPlanSnapshot.totalSteps));
123
+ // Meta mode is orchestration-first for actionable work; enforce a minimal default fan-out.
124
+ return 2;
117
125
  }
118
126
  function extractTaskToolErrorText(result) {
119
127
  if (!result || typeof result !== "object")
@@ -10395,9 +10403,8 @@ export class InteractiveMode {
10395
10403
  return;
10396
10404
  }
10397
10405
  const explicitRequested = parseRequestedParallelAgentCount(userInput);
10398
- const hasComplexSignal = /\b(audit|security|hardening|refactor|migration|orchestrat|parallel|delegate|multi[-\s]?agent)\b/i.test(userInput);
10399
10406
  const fallbackParallel = Math.max(1, explicitRequested ??
10400
- (hasComplexSignal
10407
+ (details.nestedDelegationMissing
10401
10408
  ? Math.max(details.requiredTopLevelTasks, 6)
10402
10409
  : Math.max(details.requiredTopLevelTasks, 3)));
10403
10410
  this.showWarning(`META enforcement fallback: orchestration contract not satisfied (${details.launchedTopLevelTasks}/${details.requiredTopLevelTasks} task calls). Launching /swarm run.`);