centaurus-cli 3.0.0 → 3.1.0
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.
- package/dist/ai/types.js +0 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/cli-adapter.js +5047 -5037
- package/dist/cli-adapter.js.map +1 -1
- package/dist/commands/CommandParser.js +372 -315
- package/dist/commands/CommandParser.js.map +1 -1
- package/dist/config/build-config.js +11 -42
- package/dist/config/build-config.js.map +1 -1
- package/dist/config/defaultConfig.js +94 -82
- package/dist/config/defaultConfig.js.map +1 -1
- package/dist/config/manager.js +144 -160
- package/dist/config/manager.js.map +1 -1
- package/dist/config/mcp-config-manager.js +411 -364
- package/dist/config/mcp-config-manager.js.map +1 -1
- package/dist/config/models.js +118 -185
- package/dist/config/models.js.map +1 -1
- package/dist/config/slash-commands.js +186 -184
- package/dist/config/slash-commands.js.map +1 -1
- package/dist/config/types.js +33 -26
- package/dist/config/types.js.map +1 -1
- package/dist/context/command-detector.js +63 -67
- package/dist/context/command-detector.js.map +1 -1
- package/dist/context/context-manager.js +533 -518
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/handlers/docker-handler.js +518 -576
- package/dist/context/handlers/docker-handler.js.map +1 -1
- package/dist/context/handlers/ssh-handler.js +1050 -1109
- package/dist/context/handlers/ssh-handler.js.map +1 -1
- package/dist/context/handlers/wsl-handler.js +558 -630
- package/dist/context/handlers/wsl-handler.js.map +1 -1
- package/dist/context/index.js +42 -6
- package/dist/context/index.js.map +1 -1
- package/dist/context/subshell-handler.js +0 -4
- package/dist/context/subshell-handler.js.map +1 -1
- package/dist/context/types.js +20 -31
- package/dist/context/types.js.map +1 -1
- package/dist/hooks/useConnectivity.js +13 -10
- package/dist/hooks/useConnectivity.js.map +1 -1
- package/dist/hooks/useTerminalDimensions.js +67 -79
- package/dist/hooks/useTerminalDimensions.js.map +1 -1
- package/dist/index.js +228 -251
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp-command-handler.js +297 -260
- package/dist/mcp/mcp-command-handler.js.map +1 -1
- package/dist/mcp/mcp-server-manager.js +139 -155
- package/dist/mcp/mcp-server-manager.js.map +1 -1
- package/dist/mcp/mcp-tool-wrapper.js +74 -94
- package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
- package/dist/services/ai-autocomplete-agent.js +169 -181
- package/dist/services/ai-autocomplete-agent.js.map +1 -1
- package/dist/services/ai-context-injector.js +180 -93
- package/dist/services/ai-context-injector.js.map +1 -1
- package/dist/services/ai-service-client.js +513 -456
- package/dist/services/ai-service-client.js.map +1 -1
- package/dist/services/api-client.js +443 -441
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/auth-handler.js +162 -198
- package/dist/services/auth-handler.js.map +1 -1
- package/dist/services/background-task-manager.js +258 -282
- package/dist/services/background-task-manager.js.map +1 -1
- package/dist/services/checkpoint-manager.js +1513 -973
- package/dist/services/checkpoint-manager.js.map +1 -1
- package/dist/services/clipboard-service.js +151 -200
- package/dist/services/clipboard-service.js.map +1 -1
- package/dist/services/connectivity-manager.js +63 -65
- package/dist/services/connectivity-manager.js.map +1 -1
- package/dist/services/conversation-manager.js +118 -121
- package/dist/services/conversation-manager.js.map +1 -1
- package/dist/services/environment-context-injector.js +160 -187
- package/dist/services/environment-context-injector.js.map +1 -1
- package/dist/services/fast-context-agent.js +203 -243
- package/dist/services/fast-context-agent.js.map +1 -1
- package/dist/services/input-detection-agent.js +190 -202
- package/dist/services/input-detection-agent.js.map +1 -1
- package/dist/services/input-requirement-detector.js +155 -189
- package/dist/services/input-requirement-detector.js.map +1 -1
- package/dist/services/local-chat-storage.js +342 -365
- package/dist/services/local-chat-storage.js.map +1 -1
- package/dist/services/monitored-shell-manager.js +225 -233
- package/dist/services/monitored-shell-manager.js.map +1 -1
- package/dist/services/ollama-service.js +293 -310
- package/dist/services/ollama-service.js.map +1 -1
- package/dist/services/rules-storage.js +142 -0
- package/dist/services/rules-storage.js.map +1 -0
- package/dist/services/session-quota-manager.js +219 -235
- package/dist/services/session-quota-manager.js.map +1 -1
- package/dist/services/shell-input-agent.js +299 -334
- package/dist/services/shell-input-agent.js.map +1 -1
- package/dist/services/sub-agent-manager.js +459 -501
- package/dist/services/sub-agent-manager.js.map +1 -1
- package/dist/services/warpify-detector.js +133 -183
- package/dist/services/warpify-detector.js.map +1 -1
- package/dist/services/workflow-storage.js +202 -217
- package/dist/services/workflow-storage.js.map +1 -1
- package/dist/test-ssh-handler.js +148 -193
- package/dist/test-ssh-handler.js.map +1 -1
- package/dist/tools/add-mcp.js +161 -0
- package/dist/tools/add-mcp.js.map +1 -0
- package/dist/tools/background-command.js +240 -273
- package/dist/tools/background-command.js.map +1 -1
- package/dist/tools/command.js +447 -440
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/create-image.js +172 -202
- package/dist/tools/create-image.js.map +1 -1
- package/dist/tools/enter-remote-session.js +169 -215
- package/dist/tools/enter-remote-session.js.map +1 -1
- package/dist/tools/fast-context.js +60 -67
- package/dist/tools/fast-context.js.map +1 -1
- package/dist/tools/file-ops.js +605 -537
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/find-files.js +262 -303
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/get-diff.js +423 -400
- package/dist/tools/get-diff.js.map +1 -1
- package/dist/tools/grep-search.js +966 -948
- package/dist/tools/grep-search.js.map +1 -1
- package/dist/tools/inspect-symbol.js +308 -323
- package/dist/tools/inspect-symbol.js.map +1 -1
- package/dist/tools/plan-mode.js +459 -503
- package/dist/tools/plan-mode.js.map +1 -1
- package/dist/tools/read-binary-file.js +160 -190
- package/dist/tools/read-binary-file.js.map +1 -1
- package/dist/tools/registry.js +100 -84
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/reproduce_issue.js +170 -151
- package/dist/tools/reproduce_issue.js.map +1 -1
- package/dist/tools/sub-agent.js +223 -228
- package/dist/tools/sub-agent.js.map +1 -1
- package/dist/tools/task-complete.js +28 -27
- package/dist/tools/task-complete.js.map +1 -1
- package/dist/tools/types.js +0 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/validation.js +96 -118
- package/dist/tools/validation.js.map +1 -1
- package/dist/tools/web-search.js +194 -194
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools/workflow-tool.js +77 -82
- package/dist/tools/workflow-tool.js.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/rule.js +1 -0
- package/dist/types/rule.js.map +1 -0
- package/dist/types/workflow.js +0 -7
- package/dist/types/workflow.js.map +1 -1
- package/dist/ui/components/AgentTimer.js +24 -25
- package/dist/ui/components/AgentTimer.js.map +1 -1
- package/dist/ui/components/App.js +3266 -3249
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/AuthScreen.js +22 -34
- package/dist/ui/components/AuthScreen.js.map +1 -1
- package/dist/ui/components/AuthWelcomeScreen.js +30 -24
- package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
- package/dist/ui/components/Breadcrumbs.js +53 -82
- package/dist/ui/components/Breadcrumbs.js.map +1 -1
- package/dist/ui/components/CircularSelectInput.js +59 -67
- package/dist/ui/components/CircularSelectInput.js.map +1 -1
- package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
- package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
- package/dist/ui/components/CodeBlock.js +24 -42
- package/dist/ui/components/CodeBlock.js.map +1 -1
- package/dist/ui/components/ConfigViewer.js +18 -25
- package/dist/ui/components/ConfigViewer.js.map +1 -1
- package/dist/ui/components/ConfirmPrompt.js +49 -71
- package/dist/ui/components/ConfirmPrompt.js.map +1 -1
- package/dist/ui/components/ConnectionStatusMessage.js +32 -83
- package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
- package/dist/ui/components/ContextWindowIndicator.js +34 -49
- package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
- package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
- package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
- package/dist/ui/components/DiffViewer.js +68 -121
- package/dist/ui/components/DiffViewer.js.map +1 -1
- package/dist/ui/components/ErrorBoundary.js +40 -48
- package/dist/ui/components/ErrorBoundary.js.map +1 -1
- package/dist/ui/components/FileCreationPreview.js +29 -60
- package/dist/ui/components/FileCreationPreview.js.map +1 -1
- package/dist/ui/components/FileOperation.js +34 -29
- package/dist/ui/components/FileOperation.js.map +1 -1
- package/dist/ui/components/FileTagAutocomplete.js +55 -25
- package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
- package/dist/ui/components/FontRecommendation.js.map +1 -1
- package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
- package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
- package/dist/ui/components/InputBox.js +1620 -2150
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/InteractiveShell.js +234 -352
- package/dist/ui/components/InteractiveShell.js.map +1 -1
- package/dist/ui/components/KeyboardHelp.js +34 -35
- package/dist/ui/components/KeyboardHelp.js.map +1 -1
- package/dist/ui/components/LoadingIndicator.js +22 -25
- package/dist/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/ui/components/MCPAddScreen.js +40 -51
- package/dist/ui/components/MCPAddScreen.js.map +1 -1
- package/dist/ui/components/MCPListScreen.js +40 -48
- package/dist/ui/components/MCPListScreen.js.map +1 -1
- package/dist/ui/components/MCPServerListScreen.js +49 -56
- package/dist/ui/components/MCPServerListScreen.js.map +1 -1
- package/dist/ui/components/MarkdownRenderer.js +69 -96
- package/dist/ui/components/MarkdownRenderer.js.map +1 -1
- package/dist/ui/components/MessageBox.js +66 -48
- package/dist/ui/components/MessageBox.js.map +1 -1
- package/dist/ui/components/MessageDisplay.js +150 -142
- package/dist/ui/components/MessageDisplay.js.map +1 -1
- package/dist/ui/components/MonitorModeAIPanel.js +46 -65
- package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
- package/dist/ui/components/MultiLineInput.js +243 -277
- package/dist/ui/components/MultiLineInput.js.map +1 -1
- package/dist/ui/components/PasswordPrompt.js +37 -18
- package/dist/ui/components/PasswordPrompt.js.map +1 -1
- package/dist/ui/components/PlanAcceptedMessage.js +27 -38
- package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
- package/dist/ui/components/PlanReviewScreen.js +46 -50
- package/dist/ui/components/PlanReviewScreen.js.map +1 -1
- package/dist/ui/components/RulesEditorScreen.js +81 -0
- package/dist/ui/components/RulesEditorScreen.js.map +1 -0
- package/dist/ui/components/SelectPrompt.js +19 -8
- package/dist/ui/components/SelectPrompt.js.map +1 -1
- package/dist/ui/components/ShimmerText.js +44 -0
- package/dist/ui/components/ShimmerText.js.map +1 -0
- package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
- package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
- package/dist/ui/components/StatusBar.js +56 -87
- package/dist/ui/components/StatusBar.js.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.js +116 -99
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
- package/dist/ui/components/TaskCompletedMessage.js +28 -23
- package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
- package/dist/ui/components/TaskProgressIndicator.js +44 -70
- package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
- package/dist/ui/components/ThinkingDisplay.js +44 -41
- package/dist/ui/components/ThinkingDisplay.js.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.js +772 -1326
- package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
- package/dist/ui/components/ToolExecutionStatus.js +53 -84
- package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
- package/dist/ui/components/ToolResult.js +22 -15
- package/dist/ui/components/ToolResult.js.map +1 -1
- package/dist/ui/components/VersionUpdatePrompt.js +88 -120
- package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
- package/dist/ui/components/WelcomeBanner.js +176 -26
- package/dist/ui/components/WelcomeBanner.js.map +1 -1
- package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
- package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
- package/dist/utils/ansi-encoder.js +30 -61
- package/dist/utils/ansi-encoder.js.map +1 -1
- package/dist/utils/chat-formatter.js +327 -305
- package/dist/utils/chat-formatter.js.map +1 -1
- package/dist/utils/command-history.js +152 -174
- package/dist/utils/command-history.js.map +1 -1
- package/dist/utils/context-sanitizer.js +49 -112
- package/dist/utils/context-sanitizer.js.map +1 -1
- package/dist/utils/conversation-logger.js +292 -324
- package/dist/utils/conversation-logger.js.map +1 -1
- package/dist/utils/custom-commands-manager.js +126 -131
- package/dist/utils/custom-commands-manager.js.map +1 -1
- package/dist/utils/editor-utils.js +732 -837
- package/dist/utils/editor-utils.js.map +1 -1
- package/dist/utils/file.js +174 -213
- package/dist/utils/file.js.map +1 -1
- package/dist/utils/git-stats.js +169 -0
- package/dist/utils/git-stats.js.map +1 -0
- package/dist/utils/input-classifier.js +960 -482
- package/dist/utils/input-classifier.js.map +1 -1
- package/dist/utils/logger.js +48 -73
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/markdown-parser.js +277 -310
- package/dist/utils/markdown-parser.js.map +1 -1
- package/dist/utils/rule-reference-resolver.js +54 -0
- package/dist/utils/rule-reference-resolver.js.map +1 -0
- package/dist/utils/shell.js +144 -156
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/state.js +23 -22
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/syntax-checker.js +279 -327
- package/dist/utils/syntax-checker.js.map +1 -1
- package/dist/utils/terminal-output.js +199 -302
- package/dist/utils/terminal-output.js.map +1 -1
- package/dist/utils/text-clipboard.js +47 -70
- package/dist/utils/text-clipboard.js.map +1 -1
- package/dist/utils/unicode-sanitizer.js +134 -197
- package/dist/utils/unicode-sanitizer.js.map +1 -1
- package/dist/utils/version-checker.js +46 -56
- package/dist/utils/version-checker.js.map +1 -1
- package/package.json +6 -4
- package/dist/ai/types.d.ts +0 -20
- package/dist/ai/types.d.ts.map +0 -1
- package/dist/cli-adapter.d.ts +0 -511
- package/dist/cli-adapter.d.ts.map +0 -1
- package/dist/commands/CommandParser.d.ts +0 -27
- package/dist/commands/CommandParser.d.ts.map +0 -1
- package/dist/config/build-config.d.ts +0 -42
- package/dist/config/build-config.d.ts.map +0 -1
- package/dist/config/defaultConfig.d.ts +0 -79
- package/dist/config/defaultConfig.d.ts.map +0 -1
- package/dist/config/manager.d.ts +0 -62
- package/dist/config/manager.d.ts.map +0 -1
- package/dist/config/mcp-config-manager.d.ts +0 -79
- package/dist/config/mcp-config-manager.d.ts.map +0 -1
- package/dist/config/models.d.ts +0 -83
- package/dist/config/models.d.ts.map +0 -1
- package/dist/config/slash-commands.d.ts +0 -23
- package/dist/config/slash-commands.d.ts.map +0 -1
- package/dist/config/types.d.ts +0 -35
- package/dist/config/types.d.ts.map +0 -1
- package/dist/context/command-detector.d.ts +0 -50
- package/dist/context/command-detector.d.ts.map +0 -1
- package/dist/context/context-manager.d.ts +0 -157
- package/dist/context/context-manager.d.ts.map +0 -1
- package/dist/context/handlers/docker-handler.d.ts +0 -130
- package/dist/context/handlers/docker-handler.d.ts.map +0 -1
- package/dist/context/handlers/ssh-handler.d.ts +0 -201
- package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
- package/dist/context/handlers/wsl-handler.d.ts +0 -146
- package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
- package/dist/context/index.d.ts +0 -8
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/subshell-handler.d.ts +0 -165
- package/dist/context/subshell-handler.d.ts.map +0 -1
- package/dist/context/types.d.ts +0 -70
- package/dist/context/types.d.ts.map +0 -1
- package/dist/hooks/useConnectivity.d.ts +0 -2
- package/dist/hooks/useConnectivity.d.ts.map +0 -1
- package/dist/hooks/useTerminalDimensions.d.ts +0 -41
- package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/mcp/mcp-command-handler.d.ts +0 -47
- package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
- package/dist/mcp/mcp-server-manager.d.ts +0 -30
- package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
- package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
- package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
- package/dist/services/ai-autocomplete-agent.d.ts +0 -39
- package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
- package/dist/services/ai-context-injector.d.ts +0 -41
- package/dist/services/ai-context-injector.d.ts.map +0 -1
- package/dist/services/ai-service-client.d.ts +0 -128
- package/dist/services/ai-service-client.d.ts.map +0 -1
- package/dist/services/api-client.d.ts +0 -353
- package/dist/services/api-client.d.ts.map +0 -1
- package/dist/services/auth-handler.d.ts +0 -30
- package/dist/services/auth-handler.d.ts.map +0 -1
- package/dist/services/background-task-manager.d.ts +0 -114
- package/dist/services/background-task-manager.d.ts.map +0 -1
- package/dist/services/checkpoint-manager.d.ts +0 -167
- package/dist/services/checkpoint-manager.d.ts.map +0 -1
- package/dist/services/clipboard-service.d.ts +0 -37
- package/dist/services/clipboard-service.d.ts.map +0 -1
- package/dist/services/connectivity-manager.d.ts +0 -18
- package/dist/services/connectivity-manager.d.ts.map +0 -1
- package/dist/services/conversation-manager.d.ts +0 -73
- package/dist/services/conversation-manager.d.ts.map +0 -1
- package/dist/services/environment-context-injector.d.ts +0 -69
- package/dist/services/environment-context-injector.d.ts.map +0 -1
- package/dist/services/fast-context-agent.d.ts +0 -12
- package/dist/services/fast-context-agent.d.ts.map +0 -1
- package/dist/services/input-detection-agent.d.ts +0 -40
- package/dist/services/input-detection-agent.d.ts.map +0 -1
- package/dist/services/input-requirement-detector.d.ts +0 -28
- package/dist/services/input-requirement-detector.d.ts.map +0 -1
- package/dist/services/local-chat-storage.d.ts +0 -182
- package/dist/services/local-chat-storage.d.ts.map +0 -1
- package/dist/services/monitored-shell-manager.d.ts +0 -120
- package/dist/services/monitored-shell-manager.d.ts.map +0 -1
- package/dist/services/ollama-service.d.ts +0 -197
- package/dist/services/ollama-service.d.ts.map +0 -1
- package/dist/services/session-quota-manager.d.ts +0 -101
- package/dist/services/session-quota-manager.d.ts.map +0 -1
- package/dist/services/shell-input-agent.d.ts +0 -89
- package/dist/services/shell-input-agent.d.ts.map +0 -1
- package/dist/services/sub-agent-manager.d.ts +0 -140
- package/dist/services/sub-agent-manager.d.ts.map +0 -1
- package/dist/services/warpify-detector.d.ts +0 -43
- package/dist/services/warpify-detector.d.ts.map +0 -1
- package/dist/services/workflow-storage.d.ts +0 -72
- package/dist/services/workflow-storage.d.ts.map +0 -1
- package/dist/test-ssh-handler.d.ts +0 -8
- package/dist/test-ssh-handler.d.ts.map +0 -1
- package/dist/tools/background-command.d.ts +0 -11
- package/dist/tools/background-command.d.ts.map +0 -1
- package/dist/tools/command.d.ts +0 -3
- package/dist/tools/command.d.ts.map +0 -1
- package/dist/tools/create-image.d.ts +0 -10
- package/dist/tools/create-image.d.ts.map +0 -1
- package/dist/tools/enter-remote-session.d.ts +0 -48
- package/dist/tools/enter-remote-session.d.ts.map +0 -1
- package/dist/tools/fast-context.d.ts +0 -3
- package/dist/tools/fast-context.d.ts.map +0 -1
- package/dist/tools/file-ops.d.ts +0 -7
- package/dist/tools/file-ops.d.ts.map +0 -1
- package/dist/tools/find-files.d.ts +0 -49
- package/dist/tools/find-files.d.ts.map +0 -1
- package/dist/tools/get-diff.d.ts +0 -14
- package/dist/tools/get-diff.d.ts.map +0 -1
- package/dist/tools/grep-search.d.ts +0 -155
- package/dist/tools/grep-search.d.ts.map +0 -1
- package/dist/tools/inspect-symbol.d.ts +0 -32
- package/dist/tools/inspect-symbol.d.ts.map +0 -1
- package/dist/tools/plan-mode.d.ts +0 -140
- package/dist/tools/plan-mode.d.ts.map +0 -1
- package/dist/tools/read-binary-file.d.ts +0 -10
- package/dist/tools/read-binary-file.d.ts.map +0 -1
- package/dist/tools/registry.d.ts +0 -31
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/reproduce_issue.d.ts +0 -2
- package/dist/tools/reproduce_issue.d.ts.map +0 -1
- package/dist/tools/sub-agent.d.ts +0 -9
- package/dist/tools/sub-agent.d.ts.map +0 -1
- package/dist/tools/task-complete.d.ts +0 -3
- package/dist/tools/task-complete.d.ts.map +0 -1
- package/dist/tools/types.d.ts +0 -40
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/validation.d.ts +0 -47
- package/dist/tools/validation.d.ts.map +0 -1
- package/dist/tools/web-search.d.ts +0 -24
- package/dist/tools/web-search.d.ts.map +0 -1
- package/dist/tools/workflow-tool.d.ts +0 -11
- package/dist/tools/workflow-tool.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -123
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/workflow.d.ts +0 -110
- package/dist/types/workflow.d.ts.map +0 -1
- package/dist/ui/components/AgentTimer.d.ts +0 -7
- package/dist/ui/components/AgentTimer.d.ts.map +0 -1
- package/dist/ui/components/App.d.ts +0 -197
- package/dist/ui/components/App.d.ts.map +0 -1
- package/dist/ui/components/AuthScreen.d.ts +0 -8
- package/dist/ui/components/AuthScreen.d.ts.map +0 -1
- package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
- package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
- package/dist/ui/components/Breadcrumbs.d.ts +0 -13
- package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
- package/dist/ui/components/CircularSelectInput.d.ts +0 -24
- package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
- package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
- package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/CodeBlock.d.ts +0 -9
- package/dist/ui/components/CodeBlock.d.ts.map +0 -1
- package/dist/ui/components/ConfigViewer.d.ts +0 -11
- package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
- package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
- package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
- package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
- package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
- package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
- package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
- package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
- package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
- package/dist/ui/components/DiffViewer.d.ts +0 -9
- package/dist/ui/components/DiffViewer.d.ts.map +0 -1
- package/dist/ui/components/ErrorBoundary.d.ts +0 -17
- package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
- package/dist/ui/components/FileCreationPreview.d.ts +0 -8
- package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
- package/dist/ui/components/FileOperation.d.ts +0 -10
- package/dist/ui/components/FileOperation.d.ts.map +0 -1
- package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
- package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/FontRecommendation.d.ts +0 -1
- package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
- package/dist/ui/components/InputBox.d.ts +0 -42
- package/dist/ui/components/InputBox.d.ts.map +0 -1
- package/dist/ui/components/InteractiveShell.d.ts +0 -30
- package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
- package/dist/ui/components/KeyboardHelp.d.ts +0 -7
- package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
- package/dist/ui/components/LoadingIndicator.d.ts +0 -3
- package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
- package/dist/ui/components/MCPAddScreen.d.ts +0 -13
- package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
- package/dist/ui/components/MCPListScreen.d.ts +0 -17
- package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
- package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
- package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
- package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
- package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
- package/dist/ui/components/MessageBox.d.ts +0 -10
- package/dist/ui/components/MessageBox.d.ts.map +0 -1
- package/dist/ui/components/MessageDisplay.d.ts +0 -14
- package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
- package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
- package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
- package/dist/ui/components/MultiLineInput.d.ts +0 -13
- package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
- package/dist/ui/components/PasswordPrompt.d.ts +0 -9
- package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
- package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
- package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
- package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
- package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
- package/dist/ui/components/SelectPrompt.d.ts +0 -12
- package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
- package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
- package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/StatusBar.d.ts +0 -14
- package/dist/ui/components/StatusBar.d.ts.map +0 -1
- package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
- package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
- package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
- package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
- package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
- package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
- package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
- package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
- package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
- package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
- package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
- package/dist/ui/components/ToolResult.d.ts +0 -10
- package/dist/ui/components/ToolResult.d.ts.map +0 -1
- package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
- package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
- package/dist/ui/components/WelcomeBanner.d.ts +0 -3
- package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
- package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
- package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
- package/dist/utils/ansi-encoder.d.ts +0 -7
- package/dist/utils/ansi-encoder.d.ts.map +0 -1
- package/dist/utils/chat-formatter.d.ts +0 -12
- package/dist/utils/chat-formatter.d.ts.map +0 -1
- package/dist/utils/command-history.d.ts +0 -24
- package/dist/utils/command-history.d.ts.map +0 -1
- package/dist/utils/context-sanitizer.d.ts +0 -50
- package/dist/utils/context-sanitizer.d.ts.map +0 -1
- package/dist/utils/conversation-logger.d.ts +0 -142
- package/dist/utils/conversation-logger.d.ts.map +0 -1
- package/dist/utils/custom-commands-manager.d.ts +0 -59
- package/dist/utils/custom-commands-manager.d.ts.map +0 -1
- package/dist/utils/editor-utils.d.ts +0 -101
- package/dist/utils/editor-utils.d.ts.map +0 -1
- package/dist/utils/file.d.ts +0 -61
- package/dist/utils/file.d.ts.map +0 -1
- package/dist/utils/input-classifier.d.ts +0 -25
- package/dist/utils/input-classifier.d.ts.map +0 -1
- package/dist/utils/logger.d.ts +0 -17
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/markdown-parser.d.ts +0 -60
- package/dist/utils/markdown-parser.d.ts.map +0 -1
- package/dist/utils/shell.d.ts +0 -47
- package/dist/utils/shell.d.ts.map +0 -1
- package/dist/utils/state.d.ts +0 -13
- package/dist/utils/state.d.ts.map +0 -1
- package/dist/utils/syntax-checker.d.ts +0 -24
- package/dist/utils/syntax-checker.d.ts.map +0 -1
- package/dist/utils/terminal-output.d.ts +0 -25
- package/dist/utils/terminal-output.d.ts.map +0 -1
- package/dist/utils/text-clipboard.d.ts +0 -12
- package/dist/utils/text-clipboard.d.ts.map +0 -1
- package/dist/utils/unicode-sanitizer.d.ts +0 -44
- package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
- package/dist/utils/version-checker.d.ts +0 -14
- package/dist/utils/version-checker.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolExecutionMessage.js","sourceRoot":"","sources":["../../../src/ui/components/ToolExecutionMessage.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/ToolExecutionMessage.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport Spinner from 'ink-spinner';\r\nimport stripAnsi from 'strip-ansi';\r\nimport wrapAnsi from 'wrap-ansi';\r\nimport stringWidth from 'string-width';\r\nimport * as path from 'path';\r\nimport { Message } from '../../types/index.js';\r\nimport { processTerminalOutput } from '../../utils/terminal-output.js';\r\n\r\ninterface ToolExecutionMessageProps {\r\n message: Message;\r\n}\r\n\r\nconst TOOL_LABELS: Record<string, { verb: string; emoji: string }> = {\r\n view_file: { verb: 'Reading file', emoji: '📖' },\r\n write_to_file: { verb: 'Writing file', emoji: '' },\r\n edit_file: { verb: 'Editing file', emoji: '' },\r\n multi_edit_file: { verb: 'Editing file', emoji: '' },\r\n list_dir: { verb: 'Listing directory', emoji: '📁' },\r\n execute_command: { verb: 'Executing command', emoji: '⚡' },\r\n grep_search: { verb: 'Searching files', emoji: '🔍' },\r\n find_files: { verb: 'Finding files', emoji: '🔎' },\r\n web_search: { verb: 'Searching web', emoji: '🌐' },\r\n fetch_url: { verb: 'Fetching URL', emoji: '📡' },\r\n inspect_symbol: { verb: 'Inspecting symbol', emoji: '🔬' },\r\n read_binary_file: { verb: 'Reading binary file', emoji: '📄' },\r\n create_image: { verb: 'Generating image', emoji: '🎨' },\r\n background_command: { verb: 'Background command', emoji: '🔄' },\r\n get_diff: { verb: 'Getting diff', emoji: '📝' },\r\n sub_agent: { verb: 'Agent Task', emoji: '🤖' },\r\n fast_context_search: { verb: 'Searching context', emoji: '⚡' },\r\n auto_context_compaction: { verb: 'Auto compacting context', emoji: '[AUTO]' },\r\n add_mcp: { verb: 'Adding MCP server', emoji: '🔌' },\r\n};\r\n\r\n/**\r\n * Convert an absolute path to a relative path from the current working directory.\r\n * If the path is outside the CWD, returns the full path.\r\n * Always uses forward slashes for consistency.\r\n */\r\nfunction toRelativePath(absolutePath: string | undefined): string {\r\n if (!absolutePath) return '';\r\n try {\r\n const cwd = process.cwd();\r\n // Normalize paths for comparison (handle different path separators)\r\n const normalizedAbsolute = path.normalize(absolutePath);\r\n const normalizedCwd = path.normalize(cwd);\r\n\r\n // Check if the path starts with the CWD\r\n if (normalizedAbsolute.toLowerCase().startsWith(normalizedCwd.toLowerCase())) {\r\n let relativePath = path.relative(cwd, absolutePath);\r\n // If empty (same directory), show './'\r\n if (!relativePath) relativePath = '.';\r\n // Convert backslashes to forward slashes for consistent display\r\n return relativePath.replace(/\\\\/g, '/');\r\n }\r\n // Path is outside CWD, return as-is but with forward slashes\r\n return absolutePath.replace(/\\\\/g, '/');\r\n } catch {\r\n return absolutePath;\r\n }\r\n}\r\n\r\n/**\r\n * Format a path with remote context prefix for SSH/Docker/WSL environments.\r\n * In local mode, returns just the path.\r\n * In remote mode, returns \"user@host:/path\" format.\r\n */\r\nfunction formatPathWithContext(absolutePath: string | undefined, remoteContext?: string): string {\r\n const pathStr = toRelativePath(absolutePath);\r\n if (remoteContext && absolutePath) {\r\n // For remote environments, show full path with remote prefix\r\n // Use the absolute path to make it clear this is a remote file\r\n return `${remoteContext}:${absolutePath.replace(/\\\\/g, '/')}`;\r\n }\r\n return pathStr;\r\n}\r\n\r\n/**\r\n * Clean shell output for display in history\r\n */\r\nfunction cleanShellOutput(result: string | undefined): string {\r\n if (!result) return '';\r\n return processTerminalOutput(result);\r\n}\r\n\r\n/**\r\n * Truncate long commands for display to prevent rendering issues\r\n * @param command - The command string to truncate\r\n * @param maxLength - Maximum length before truncation (default: 80)\r\n * @returns Truncated command with ellipsis if needed\r\n */\r\nfunction truncateCommand(command: string, maxLength: number = 80): string {\r\n if (!command || command.length <= maxLength) return command;\r\n return command.substring(0, maxLength) + '...';\r\n}\r\n\r\n/**\r\n * Parse grep_search result to get match count\r\n * Format: \"Found X matches in Y files for pattern...\" or \"Found X matches for pattern...\"\r\n * Match lines are identified by the \":>\" marker\r\n */\r\nfunction parseGrepSearchResult(result: string | undefined): { matches: number; files: number } | null {\r\n if (!result) return null;\r\n\r\n // Handle \"No matches found\" case\r\n if (result.includes('No matches found')) {\r\n return { matches: 0, files: 0 };\r\n }\r\n\r\n // Try to parse \"Found X matches in Y files for pattern...\" format (preferred)\r\n const fullMatch = result.match(/Found (\\d+) match(?:es)? in (\\d+) file/);\r\n if (fullMatch) {\r\n return { matches: parseInt(fullMatch[1], 10), files: parseInt(fullMatch[2], 10) };\r\n }\r\n\r\n // Try to parse \"Found X matches for pattern...\" format (older format without file count)\r\n const matchCountOnly = result.match(/Found (\\d+) match(?:es)?/);\r\n if (matchCountOnly) {\r\n const matchCount = parseInt(matchCountOnly[1], 10);\r\n // Count unique files from the output - files appear as standalone paths before their matches\r\n // File paths are lines that don't start with a number and don't contain \":>\"\r\n const lines = result.split('\\n');\r\n const uniqueFiles = new Set<string>();\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n // Skip header lines and empty lines\r\n if (!trimmed || trimmed.startsWith('Found ') || trimmed.startsWith('(')) continue;\r\n // Match lines have \":>\" in them, skip those\r\n if (trimmed.includes(':>')) continue;\r\n // Context lines start with \"number: \" (note the space after colon)\r\n if (/^\\d+:\\s{3}/.test(trimmed)) continue;\r\n // Remaining lines that don't start with a number are file paths\r\n if (!/^\\d+:/.test(trimmed)) {\r\n uniqueFiles.add(trimmed);\r\n }\r\n }\r\n return { matches: matchCount, files: uniqueFiles.size };\r\n }\r\n\r\n // Final fallback: count actual match lines (identified by \":>\" marker)\r\n const lines = result.split('\\n');\r\n const matchLines = lines.filter(line => line.includes(':>'));\r\n if (matchLines.length > 0) {\r\n // Count unique files from file header lines\r\n const uniqueFiles = new Set<string>();\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (!trimmed || trimmed.startsWith('Found ') || trimmed.startsWith('(')) continue;\r\n if (trimmed.includes(':>') || /^\\d+:/.test(trimmed)) continue;\r\n uniqueFiles.add(trimmed);\r\n }\r\n return { matches: matchLines.length, files: uniqueFiles.size };\r\n }\r\n\r\n return null;\r\n}\r\n\r\n\r\n/**\r\n * Parse find_files result to get file count\r\n * Format: one file path per line, or \"Found X files\"\r\n */\r\nfunction parseFindFilesResult(result: string | undefined): number | null {\r\n if (!result) return null;\r\n\r\n // Check for \"No files found\" message\r\n if (result.includes('No files found') || result.includes('No matches found')) {\r\n return 0;\r\n }\r\n\r\n // Try to parse \"Found X files\" format\r\n const summaryMatch = result.match(/Found (\\d+) file/);\r\n if (summaryMatch) {\r\n return parseInt(summaryMatch[1], 10);\r\n }\r\n\r\n // Try to parse \"Total: X\" format\r\n const totalMatch = result.match(/Total:\\s*(\\d+)/);\r\n if (totalMatch) {\r\n return parseInt(totalMatch[1], 10);\r\n }\r\n\r\n // Count lines (each line is a file path)\r\n const lines = result.split('\\n').filter(line => line.trim() && !line.startsWith('Searching'));\r\n return lines.length > 0 ? lines.length : null;\r\n}\r\n\r\n/**\r\n * Coerce line number inputs from tool args into positive integers.\r\n */\r\nfunction toPositiveLineNumber(value: unknown): number | null {\r\n if (typeof value === 'number' && Number.isFinite(value) && value > 0) {\r\n return Math.floor(value);\r\n }\r\n if (typeof value === 'string' && value.trim()) {\r\n const parsed = parseInt(value, 10);\r\n if (Number.isFinite(parsed) && parsed > 0) {\r\n return parsed;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Parse view_file result metadata.\r\n * Expected format includes:\r\n * - \"Lines: N\"\r\n * - Optional truncation marker \"(Truncated)\"\r\n * - Optional detail \"Showing first M lines only.\"\r\n */\r\nfunction parseViewFileResult(result: string | undefined): { displayedLines: number | null; totalLines: number | null; truncated: boolean } | null {\r\n if (!result) return null;\r\n\r\n const totalMatch = result.match(/^\\s*Lines:\\s*(\\d+)/im);\r\n const totalLines = totalMatch ? parseInt(totalMatch[1], 10) : null;\r\n\r\n const shownMatch = result.match(/Showing first (\\d+) lines only/i);\r\n const shownLines = shownMatch ? parseInt(shownMatch[1], 10) : null;\r\n\r\n const truncated = /\\(Truncated\\)/i.test(result) || /File truncated/i.test(result) || shownLines !== null;\r\n const displayedLines = truncated ? shownLines : totalLines;\r\n\r\n if (displayedLines === null && totalLines === null) {\r\n return null;\r\n }\r\n\r\n return { displayedLines, totalLines, truncated };\r\n}\r\n\r\n/**\r\n * Build user-facing line range text for view_file UI state.\r\n * Always favors concrete numeric ranges instead of \"entire file\".\r\n */\r\nfunction getViewFileLineInfo(toolArgs?: Record<string, any>, result?: string): string {\r\n const startLine = toPositiveLineNumber(toolArgs?.StartLine ?? toolArgs?.start_line) ?? 1;\r\n const endLineArg = toPositiveLineNumber(toolArgs?.EndLine ?? toolArgs?.end_line);\r\n\r\n const parsedResult = parseViewFileResult(result);\r\n if (parsedResult?.displayedLines != null) {\r\n const endLine = parsedResult.displayedLines > 0\r\n ? startLine + parsedResult.displayedLines - 1\r\n : startLine;\r\n const lineRange = `lines ${startLine}-${endLine}`;\r\n\r\n if (\r\n parsedResult.truncated &&\r\n parsedResult.totalLines !== null &&\r\n parsedResult.totalLines > parsedResult.displayedLines\r\n ) {\r\n return `${lineRange} (of ${parsedResult.totalLines})`;\r\n }\r\n\r\n return lineRange;\r\n }\r\n\r\n if (endLineArg !== null) {\r\n return `lines ${startLine}-${endLineArg}`;\r\n }\r\n\r\n return 'lines 1-500';\r\n}\r\n\r\n/**\r\n * Parse list_dir result to get item count\r\n * New format: \"Total: X directories, Y files, Z items\"\r\n * Old format: \"Directory: path\\nTotal items: X\\n...\"\r\n */\r\nfunction parseListDirResult(result: string | undefined): { dirs: number; files: number; total: number } | null {\r\n if (!result) return null;\r\n\r\n // Try to parse new enhanced format: \"Total: X directories, Y files, Z items\"\r\n const newFormatMatch = result.match(/Total:\\s*(\\d+)\\s*director(?:y|ies),?\\s*(\\d+)\\s*files?,?\\s*(\\d+)\\s*items?/i);\r\n if (newFormatMatch) {\r\n return {\r\n dirs: parseInt(newFormatMatch[1], 10),\r\n files: parseInt(newFormatMatch[2], 10),\r\n total: parseInt(newFormatMatch[3], 10)\r\n };\r\n }\r\n\r\n // Try to parse old format: \"Total items: X\"\r\n const oldFormatMatch = result.match(/Total items:\\s*(\\d+)/);\r\n if (oldFormatMatch) {\r\n const total = parseInt(oldFormatMatch[1], 10);\r\n return { dirs: 0, files: 0, total };\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Parse inspect_symbol result to check if symbols were found\r\n */\r\nfunction parseInspectSymbolResult(result: string | undefined): { found: boolean; count: number } {\r\n if (!result) return { found: false, count: 0 };\r\n\r\n // Check for \"No symbols found\" message\r\n if (result.includes('No symbols found')) {\r\n return { found: false, count: 0 };\r\n }\r\n\r\n // Count symbol definitions (rough estimate based on common patterns)\r\n const symbolMatches = result.match(/(?:function|class|interface|type|const|let|var|def|struct)\\s+\\w+/g);\r\n return { found: true, count: symbolMatches ? symbolMatches.length : 1 };\r\n}\r\n\r\n/**\r\n * Parse fast_context_search result to get stats and markdown answer\r\n */\r\nfunction parseFastContextResult(result: string | undefined): { answer: string; stats?: { filesSearched: number; duration: number; scannedFiles: string[] } } {\r\n if (!result) return { answer: '' };\r\n\r\n try {\r\n // Try to parse as JSON first (new format)\r\n if (result.trim().startsWith('{')) {\r\n const parsed = JSON.parse(result);\r\n if (parsed.answer && parsed.stats) {\r\n return parsed;\r\n }\r\n }\r\n } catch (e) {\r\n // Fallback to raw string\r\n }\r\n\r\n return { answer: result };\r\n}\r\n\r\n/**\r\n * Parse MCP tool name to extract server name and tool name\r\n * MCP tools are named: mcp_{serverName}_{toolName}\r\n */\r\nfunction parseMCPToolName(toolName: string): { serverName: string; mcpToolName: string } | null {\r\n if (!toolName.startsWith('mcp_')) return null;\r\n\r\n // Remove 'mcp_' prefix and split by first underscore\r\n const withoutPrefix = toolName.slice(4); // Remove 'mcp_'\r\n const firstUnderscoreIdx = withoutPrefix.indexOf('_');\r\n\r\n if (firstUnderscoreIdx === -1) {\r\n return { serverName: withoutPrefix, mcpToolName: 'unknown' };\r\n }\r\n\r\n const serverName = withoutPrefix.slice(0, firstUnderscoreIdx);\r\n const mcpToolName = withoutPrefix.slice(firstUnderscoreIdx + 1);\r\n\r\n return { serverName, mcpToolName };\r\n}\r\n\r\n/**\r\n * Get display info for a tool, with special handling for MCP tools\r\n */\r\nfunction getToolDisplayInfo(toolName: string): { verb: string; emoji: string; isMCP: boolean; serverName?: string; mcpToolName?: string } {\r\n // Check if it's an MCP tool\r\n const mcpInfo = parseMCPToolName(toolName);\r\n if (mcpInfo) {\r\n return {\r\n verb: `MCP ${mcpInfo.serverName} ${mcpInfo.mcpToolName}`,\r\n emoji: '⚡',\r\n isMCP: true,\r\n serverName: mcpInfo.serverName,\r\n mcpToolName: mcpInfo.mcpToolName\r\n };\r\n }\r\n\r\n // Regular tool\r\n const toolInfo = TOOL_LABELS[toolName] || { verb: 'Executing', emoji: '🔧' };\r\n return { ...toolInfo, isMCP: false };\r\n}\r\n\r\n/**\r\n * Render a snippet of the diff (added/removed lines)\r\n */\r\nfunction renderDiffSnippet(removedContent: string | undefined, addedContent: string | undefined, options: { compact?: boolean } = {}): React.ReactNode {\r\n const { compact } = options;\r\n if (!removedContent && !addedContent) return null;\r\n\r\n const removedLines = removedContent ? removedContent.split('\\n') : [];\r\n const addedLines = addedContent ? addedContent.split('\\n') : [];\r\n\r\n if (removedLines.length === 0 && addedLines.length === 0) return null;\r\n\r\n const terminalWidth = process.stdout.columns || 80;\r\n // Keep line width conservative so wrapped content always stays inside the parent bordered box.\r\n const maxPreviewWidth = Math.max(12, terminalWidth - 16);\r\n const measuredLineWidths: number[] = [];\r\n\r\n const wrapDiffLine = (prefix: string, line: string): string[] => {\r\n const continuationPrefix = ' '.repeat(prefix.length);\r\n const wrapped = wrapAnsi(line.length > 0 ? line : ' ', Math.max(1, maxPreviewWidth - prefix.length), {\r\n hard: true,\r\n trim: false\r\n }).split('\\n');\r\n\r\n return wrapped.map((segment, idx) => {\r\n const rendered = `${idx === 0 ? prefix : continuationPrefix}${segment.length > 0 ? segment : ' '}`;\r\n measuredLineWidths.push(stringWidth(rendered));\r\n return rendered;\r\n });\r\n };\r\n\r\n const items: React.ReactNode[] = [];\r\n const previewLimit = 3;\r\n\r\n // Show first previewLimit removed lines with hard wrapping\r\n removedLines.slice(0, previewLimit).forEach((line, i) => {\r\n wrapDiffLine('- ', line).forEach((wrappedLine, wrappedIndex) => {\r\n items.push(\r\n <Box key={`rem-${i}-${wrappedIndex}`}>\r\n <Text color=\"#e6e6e6\" backgroundColor=\"#5c1e1e\" wrap=\"truncate-end\">\r\n {wrappedLine}\r\n </Text>\r\n </Box>\r\n );\r\n });\r\n });\r\n if (removedLines.length > previewLimit) {\r\n items.push(\r\n <Box key=\"rem-more\">\r\n <Text color=\"gray\" dimColor> ... {removedLines.length - previewLimit} more lines</Text>\r\n </Box>\r\n );\r\n }\r\n\r\n // Show first previewLimit added lines with hard wrapping\r\n addedLines.slice(0, previewLimit).forEach((line, i) => {\r\n wrapDiffLine('+ ', line).forEach((wrappedLine, wrappedIndex) => {\r\n items.push(\r\n <Box key={`add-${i}-${wrappedIndex}`}>\r\n <Text color=\"#e6e6e6\" backgroundColor=\"#1e4d2b\" wrap=\"truncate-end\">\r\n {wrappedLine}\r\n </Text>\r\n </Box>\r\n );\r\n });\r\n });\r\n if (addedLines.length > previewLimit) {\r\n items.push(\r\n <Box key=\"add-more\">\r\n <Text color=\"gray\" dimColor> ... {addedLines.length - previewLimit} more lines</Text>\r\n </Box>\r\n );\r\n }\r\n\r\n const separatorWidth = Math.max(\r\n 8,\r\n Math.min(\r\n maxPreviewWidth,\r\n measuredLineWidths.length > 0 ? Math.max(...measuredLineWidths) : 8\r\n )\r\n );\r\n\r\n return (\r\n <Box flexDirection=\"column\" marginTop={compact ? 0 : 1} alignSelf=\"flex-start\">\r\n <Box marginBottom={1}>\r\n <Text color=\"#333333\">{'─'.repeat(separatorWidth)}</Text>\r\n </Box>\r\n {items}\r\n </Box>\r\n );\r\n}\r\n\r\nexport const ToolExecutionMessage: React.FC<ToolExecutionMessageProps> = React.memo(({ message }) => {\r\n if (!message.toolExecution) {\r\n return null;\r\n }\r\n\r\n const { toolName, status, result, error, arguments: toolArgs } = message.toolExecution;\r\n const toolInfo = getToolDisplayInfo(toolName);\r\n\r\n // Display thinking duration if available (carried from thought-only message)\r\n const thinkingDuration = message.thinkingDuration;\r\n\r\n // Helper to wrap content with thinking duration display\r\n const renderWithThinking = (content: React.ReactNode) => (\r\n <Box flexDirection=\"column\">\r\n {thinkingDuration !== undefined && thinkingDuration >= 0 && (\r\n <Box marginBottom={1}>\r\n <Text dimColor>Thought for {thinkingDuration} second{thinkingDuration !== 1 ? 's' : ''} ›</Text>\r\n </Box>\r\n )}\r\n {content}\r\n </Box>\r\n );\r\n\r\n // EXECUTING state\r\n if (status === 'executing') {\r\n // Skip execute_command - it's handled by InteractiveShell component\r\n if (toolName === 'execute_command') {\r\n return null;\r\n }\r\n\r\n // Note: web_search, grep_search, find_files now have custom executing states below\r\n\r\n // Skip plan-mode tools - they have their own UI components (TaskCompletedMessage, PlanReviewScreen)\r\n if (toolName === 'mark_task_complete' || toolName === 'create_plan') {\r\n return null;\r\n }\r\n\r\n\r\n if (toolName === 'auto_context_compaction') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> Auto summarizing context...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n // MCP tools - show executing state with simple format (no border to avoid emoji width issues)\r\n if (toolInfo.isMCP) {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#9945FF\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#9945FF\" bold> MCP</Text>\r\n <Text color=\"#9945FF\"> {toolInfo.serverName} {toolInfo.mcpToolName}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // VIEW_FILE\r\n if (toolName === 'view_file' && toolArgs) {\r\n const { AbsolutePath, remoteContext } = toolArgs;\r\n const lineInfo = getViewFileLineInfo(toolArgs);\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> Reading {lineInfo} from </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(AbsolutePath, remoteContext)}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // LIST_DIR\r\n if (toolName === 'list_dir' && toolArgs) {\r\n const { DirectoryPath, remoteContext } = toolArgs;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> Listing </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(DirectoryPath, remoteContext)}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // GREP_SEARCH\r\n if (toolName === 'grep_search' && toolArgs) {\r\n const { Query, SearchPath } = toolArgs;\r\n const searchPathRelative = toRelativePath(SearchPath);\r\n // Determine if it's a file or directory (heuristic: check for common file extensions)\r\n const hasExtension = /\\.[a-zA-Z0-9]{1,10}$/.test(SearchPath || '');\r\n const pathType = hasExtension ? 'file' : 'directory';\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box flexWrap=\"wrap\">\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> Searching for </Text>\r\n <Text color=\"#00ccff\">\"{Query}\"</Text>\r\n {searchPathRelative && (\r\n <Text color=\"#00ccff\"> in <Text color=\"#00ccff\" bold>{searchPathRelative}</Text> {pathType}...</Text>\r\n )}\r\n {!searchPathRelative && <Text color=\"#00ccff\">...</Text>}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // FIND_FILES\r\n if (toolName === 'find_files' && toolArgs) {\r\n const { pattern } = toolArgs;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> Finding files matching </Text>\r\n <Text color=\"#00ccff\">\"{pattern}\"...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // FETCH_URL\r\n if (toolName === 'fetch_url' && toolArgs) {\r\n const { url } = toolArgs;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> Fetching </Text>\r\n <Text color=\"#00ccff\">{url}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // READ_BINARY_FILE\r\n if (toolName === 'read_binary_file' && toolArgs) {\r\n const { file_path, remoteContext } = toolArgs;\r\n const fileName = file_path ? path.basename(file_path) : 'file';\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff9900\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#ff9900\" bold> Reading </Text>\r\n <Text color=\"#ff9900\">{formatPathWithContext(file_path, remoteContext)}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // WRITE_TO_FILE\r\n if (toolName === 'write_to_file' && toolArgs) {\r\n const { TargetFile, remoteContext } = toolArgs;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> Writing to </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(TargetFile, remoteContext)}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // EDIT_FILE\r\n if (toolName === 'edit_file' && toolArgs) {\r\n const { file_path, remoteContext } = toolArgs;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> Editing </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(file_path, remoteContext)}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // MULTI_EDIT_FILE\r\n if (toolName === 'multi_edit_file' && toolArgs) {\r\n const { file_path, remoteContext } = toolArgs;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> Editing </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(file_path, remoteContext)}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // CREATE_IMAGE\r\n if (toolName === 'create_image') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff9900\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#ff9900\" bold> Generating image...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // BACKGROUND_COMMAND - show action-specific message\r\n if (toolName === 'background_command' && toolArgs) {\r\n const { action, command, task_id, wait_seconds } = toolArgs;\r\n let actionText = 'Running background task...';\r\n if (action === 'start') {\r\n actionText = `Starting: ${command || 'command'}...`;\r\n } else if (action === 'status') {\r\n actionText = `Checking status: ${task_id || 'task'}...`;\r\n } else if (action === 'kill') {\r\n actionText = `Killing task: ${task_id || 'task'}...`;\r\n } else if (action === 'wait') {\r\n actionText = `Waiting for ${wait_seconds || '?'} second${wait_seconds !== 1 ? 's' : ''}...`;\r\n }\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff9900\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#ff9900\" bold> {toolInfo.emoji} {actionText}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // GET_DIFF\r\n if (toolName === 'get_diff' && toolArgs) {\r\n const { filePath, staged, reason_text } = toolArgs;\r\n const diffTarget = filePath ? `for ${filePath}` : 'for all files';\r\n const stagedText = staged ? ' (staged)' : '';\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> {toolInfo.emoji} Getting diff {diffTarget}{stagedText}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // WEB_SEARCH\r\n if (toolName === 'web_search' && toolArgs) {\r\n const { query } = toolArgs;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> {toolInfo.emoji} Searching the web for </Text>\r\n <Text color=\"#00ccff\">\"{query}\"...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // FAST_CONTEXT_SEARCH\r\n if (toolName === 'fast_context_search' && toolArgs) {\r\n const { query } = toolArgs;\r\n\r\n let scannedFiles: string[] = [];\r\n try {\r\n const streamData = message.toolExecution?.streamingOutput || result;\r\n if (streamData) {\r\n const lines = streamData.trim().split('\\n').filter(Boolean);\r\n if (lines.length > 0) {\r\n // Find the last valid JSON line by iterating backwards\r\n // The FastContextAgent outputs JSON blobs on stdout for UI updates\r\n for (let i = lines.length - 1; i >= 0; i--) {\r\n try {\r\n // The stream mixes logs and JSON. Fast context prints files inside JSON objects.\r\n const line = lines[i].trim();\r\n if (line.startsWith('{')) {\r\n const parsed = JSON.parse(line);\r\n if (parsed.type === 'scanned_files' && parsed.files) {\r\n scannedFiles = parsed.files;\r\n break; // Found the most recent valid state\r\n }\r\n }\r\n } catch (e) {\r\n // Ignore parsing errors for incomplete streamed lines\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n // ignore parsing errors\r\n }\r\n\r\n // Format query for executing state\r\n const truncatedQuery = query && query.length > 50 ? query.substring(0, 47) + '...' : query || '';\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00cc66\" bold> Rapid Context </Text>\r\n <Text color=\"#cccccc\"> \"{truncatedQuery}\"</Text>\r\n </Box>\r\n {scannedFiles.length > 0 && (\r\n <Box flexDirection=\"column\" marginLeft={2} marginTop={1}>\r\n {scannedFiles.map((f, i) => (\r\n <Text key={i} color=\"#666666\" wrap=\"truncate-end\">\r\n - {toRelativePath(f)}\r\n </Text>\r\n ))}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n // INSPECT_SYMBOL\r\n if (toolName === 'inspect_symbol' && toolArgs) {\r\n const { filePath, symbols, remoteContext } = toolArgs;\r\n const symbolList = Array.isArray(symbols) ? symbols.join(', ') : symbols || 'symbols';\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> {toolInfo.emoji} Inspecting </Text>\r\n <Text color=\"#00ccff\">{symbolList} in {formatPathWithContext(filePath, remoteContext)}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // SUB_AGENT - executing\r\n if (toolName === 'sub_agent' && toolArgs) {\r\n const action = (toolArgs as any).action;\r\n\r\n if (action === 'spawn') {\r\n const prompt = (toolArgs as any).prompt || (toolArgs as any).task || 'Unknown task';\r\n const complexity = (toolArgs as any).complexity || 3;\r\n const modelName = complexity > 5 ? 'Gemini 3.1 Pro Preview' : 'Gemini 3 Flash Preview';\r\n\r\n // Limit prompt display to 4 lines\r\n const promptLines = prompt.split('\\n');\r\n const maxLines = 4;\r\n const displayLines = promptLines.slice(0, maxLines);\r\n const remainingLines = promptLines.length - maxLines;\r\n const truncatedPrompt = displayLines.join('\\n');\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#9945FF\" bold> {toolInfo.emoji} Spawning Sub-Agent </Text>\r\n <Text color=\"#666666\" dimColor>({modelName})</Text>\r\n </Box>\r\n <Box marginLeft={2} flexDirection=\"column\">\r\n <Text color=\"#00ccff\">{truncatedPrompt}</Text>\r\n {remainingLines > 0 && (\r\n <Text color=\"#666666\" dimColor>... {remainingLines} more lines</Text>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n } else if (action === 'wait_for_status' || action === 'status') {\r\n const delay = (toolArgs as any).time_delay || 0;\r\n const agentId = (toolArgs as any).agent_id || 'unknown';\r\n const waitMessage = delay > 0 ? `Waiting for ${delay} seconds...` : 'Checking status...';\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#9945FF\" bold> {toolInfo.emoji} Sub Agent Status </Text>\r\n <Text color=\"#666666\" dimColor>(id: {agentId})</Text>\r\n </Box>\r\n <Box marginLeft={2}>\r\n <Text color=\"#00ccff\">{waitMessage}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#9945FF\" bold> {toolInfo.emoji} Sub Agent </Text>\r\n <Text color=\"#666666\" dimColor>({action})</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // WORKFLOW - show action-specific message\r\n if (toolName === 'workflow' && toolArgs) {\r\n const action = toolArgs.action;\r\n const stepNumber = toolArgs.step_number;\r\n const exitType = toolArgs.exit_type;\r\n const reason = toolArgs.reason;\r\n\r\n let actionText = 'Workflow action...';\r\n let borderColor = '#00ccff';\r\n let textColor = '#00ccff';\r\n\r\n if (action === 'step_complete') {\r\n actionText = `Completing Step ${stepNumber || '?'}...`;\r\n borderColor = '#00cc66';\r\n textColor = '#00cc66';\r\n } else if (action === 'exit') {\r\n if (exitType === 'error') {\r\n actionText = `Workflow Failed${reason ? `: ${reason.slice(0, 50)}` : ''}`;\r\n borderColor = '#ff3366';\r\n textColor = '#ff3366';\r\n } else if (exitType === 'cancelled') {\r\n actionText = 'Workflow Cancelled';\r\n borderColor = '#ff9900';\r\n textColor = '#ff9900';\r\n } else {\r\n actionText = 'Workflow Completed';\r\n borderColor = '#00cc66';\r\n textColor = '#00cc66';\r\n }\r\n }\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={borderColor} paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color={textColor} bold> 🔄 {actionText}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // ADD_MCP - show server name and command being connected\r\n if (toolName === 'add_mcp' && toolArgs) {\r\n const serverName = toolArgs.name || 'unknown';\r\n const command = toolArgs.command || '';\r\n const serverArgs = Array.isArray(toolArgs.args) ? toolArgs.args.join(' ') : '';\r\n const fullCommand = serverArgs ? `${command} ${serverArgs}` : command;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#9945FF\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#9945FF\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#9945FF\" bold> 🔌 Adding MCP server </Text>\r\n <Text color=\"#cc99ff\" bold>{serverName}</Text>\r\n </Box>\r\n {fullCommand && (\r\n <Box>\r\n <Text color=\"#666666\" dimColor> {fullCommand}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"arc\" /></Text>\r\n <Text color=\"#00ccff\" bold> {toolInfo.verb}...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // ERROR state\r\n if (status === 'error') {\r\n // EXECUTE_COMMAND - render as static shell box with error\r\n if (toolName === 'execute_command' && toolArgs) {\r\n const command = toolArgs.command || toolArgs.CommandLine || toolArgs.commandLine || '';\r\n const truncatedCommand = truncateCommand(command, 80);\r\n const { cwd, remoteContext } = toolArgs;\r\n const cleanResult = cleanShellOutput(result);\r\n // For CWD display, use absolute path directly (don't convert to relative)\r\n const formattedCwd = cwd && remoteContext\r\n ? `${remoteContext}:${cwd.replace(/\\\\/g, '/')}`\r\n : (cwd || '').replace(/\\\\/g, '/');\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff3366\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box marginBottom={1}>\r\n <Text>\r\n <Text color=\"#ff3366\" bold>✗ Shell </Text>\r\n <Text color=\"#666666\">{truncatedCommand} </Text>\r\n {cwd && <Text color=\"#666666\" dimColor>[current working directory {formattedCwd}]</Text>}\r\n </Text>\r\n </Box>\r\n {cleanResult && (\r\n <Box>\r\n <Text wrap=\"wrap\">{cleanResult}</Text>\r\n </Box>\r\n )}\r\n {/* Don't show error separately - it's already in the output */}\r\n </Box >\r\n );\r\n }\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff3366\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#ff3366\" bold>✗ {toolInfo.emoji} {toolInfo.verb} failed</Text>\r\n </Box>\r\n <Box paddingLeft={1} marginTop={1}>\r\n <Text color=\"#ff3366\">{error || 'The Agent passed invalid parameters'}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // COMPLETED state - tool-specific rendering\r\n if (status === 'completed') {\r\n // MCP tools - show only success indicator, hide output (output goes to AI only)\r\n if (toolInfo.isMCP) {\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00cc66\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ MCP</Text>\r\n <Text color=\"#aaaaaa\"> {toolInfo.serverName} {toolInfo.mcpToolName}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // Skip plan-mode tools - they have their own UI components (TaskCompletedMessage, PlanReviewScreen)\r\n if (toolName === 'mark_task_complete' || toolName === 'create_plan') {\r\n return null;\r\n }\r\n\r\n\r\n if (toolName === 'auto_context_compaction') {\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00cc66\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>Auto compacted context</Text>\r\n </Box>\r\n {result && (\r\n <Box paddingLeft={1} marginTop={1}>\r\n <Text color=\"#aaaaaa\">{result}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n // EXECUTE_COMMAND - render as static shell box\r\n if (toolName === 'execute_command' && toolArgs) {\r\n // Hide shell_input actions from history as per user request\r\n // These are just input submissions (like \"1\\n\") and the result is just confirmation text\r\n // The actual side effects are seen in the persistent shell, so showing this block is redundant clutter\r\n if (toolArgs.shell_input) {\r\n return null;\r\n }\r\n\r\n const command = toolArgs.command || toolArgs.CommandLine || toolArgs.commandLine || '';\r\n const truncatedCommand = truncateCommand(command, 80);\r\n const { cwd, remoteContext } = toolArgs;\r\n const cleanResult = cleanShellOutput(result);\r\n // For CWD display, use absolute path directly (don't convert to relative)\r\n const formattedCwd = cwd && remoteContext\r\n ? `${remoteContext}:${cwd.replace(/\\\\/g, '/')}`\r\n : (cwd || '').replace(/\\\\/g, '/');\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00cc66\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box marginBottom={1}>\r\n <Text>\r\n <Text color=\"#00cc66\" bold>✓ Shell </Text>\r\n <Text color=\"#666666\">{truncatedCommand} </Text>\r\n {cwd && <Text color=\"#666666\" dimColor>[current working directory {formattedCwd}]</Text>}\r\n </Text>\r\n </Box>\r\n {cleanResult && (\r\n <Box>\r\n <Text wrap=\"wrap\">{cleanResult}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n // VIEW_FILE\r\n if (toolName === 'view_file' && toolArgs) {\r\n const { AbsolutePath, remoteContext } = toolArgs;\r\n const lineInfo = getViewFileLineInfo(toolArgs, result);\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Read {lineInfo} from </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(AbsolutePath, remoteContext)}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // WRITE_TO_FILE\r\n if (toolName === 'write_to_file' && toolArgs) {\r\n const { TargetFile, CodeContent, remoteContext } = toolArgs;\r\n const lines = CodeContent ? CodeContent.split('\\n').length : 0;\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box flexWrap=\"wrap\">\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Wrote to </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(TargetFile, remoteContext)}</Text>\r\n {lines > 0 && <Text color=\"green\"> +{lines}</Text>}\r\n </Box>\r\n {renderDiffSnippet(undefined, CodeContent)}\r\n </Box>\r\n );\r\n }\r\n\r\n // EDIT_FILE\r\n if (toolName === 'edit_file' && toolArgs) {\r\n const { file_path, remoteContext, replacement, search_pattern } = toolArgs;\r\n const added = replacement ? replacement.split('\\n').length : 0;\r\n const removed = search_pattern ? search_pattern.split('\\n').length : 0;\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box flexWrap=\"wrap\">\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Edited </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(file_path, remoteContext)}</Text>\r\n <Text color=\"green\"> +{added}</Text>\r\n <Text color=\"red\"> -{removed}</Text>\r\n </Box>\r\n {renderDiffSnippet(search_pattern, replacement)}\r\n </Box>\r\n );\r\n }\r\n\r\n // MULTI_EDIT_FILE\r\n if (toolName === 'multi_edit_file' && toolArgs) {\r\n const { file_path, edits, remoteContext } = toolArgs;\r\n const editList = Array.isArray(edits) ? edits : [];\r\n\r\n let added = 0;\r\n let removed = 0;\r\n\r\n editList.forEach((edit: any) => {\r\n if (edit.replacement || edit.ReplacementContent) {\r\n added += (edit.replacement || edit.ReplacementContent).split('\\n').length;\r\n }\r\n if (edit.search_pattern || edit.TargetContent) {\r\n removed += (edit.search_pattern || edit.TargetContent).split('\\n').length;\r\n }\r\n });\r\n\r\n // For multi-edit, we show the snippet of the FIRST edit as a sample, or maybe we aggregate?\r\n // Lets show the first edit's snippet if available\r\n const firstEdit = editList[0];\r\n const searchExample = firstEdit ? (firstEdit.search_pattern || firstEdit.TargetContent) : undefined;\r\n const replaceExample = firstEdit ? (firstEdit.replacement || firstEdit.ReplacementContent) : undefined;\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box flexWrap=\"wrap\">\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Edited </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(file_path, remoteContext)}</Text>\r\n <Text color=\"green\"> +{added}</Text>\r\n <Text color=\"red\"> -{removed}</Text>\r\n </Box>\r\n {editList.length > 0 ? (\r\n <Box flexDirection=\"column\" marginTop={0}>\r\n {editList.map((edit: any, index: number) => {\r\n const search = edit.search_pattern || edit.TargetContent;\r\n const replace = edit.replacement || edit.ReplacementContent;\r\n return (\r\n <React.Fragment key={index}>\r\n {renderDiffSnippet(search, replace, { compact: index > 0 })}\r\n </React.Fragment>\r\n );\r\n })}\r\n </Box>\r\n ) : (\r\n null\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n // LIST_DIR\r\n if (toolName === 'list_dir' && toolArgs) {\r\n const { DirectoryPath, remoteContext } = toolArgs;\r\n const itemStats = parseListDirResult(result);\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Listed </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(DirectoryPath, remoteContext)}</Text>\r\n {itemStats !== null && (\r\n <Text color=\"#666666\"> ({itemStats.dirs} dir{itemStats.dirs !== 1 ? 's' : ''}, {itemStats.files} file{itemStats.files !== 1 ? 's' : ''})</Text>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // GREP_SEARCH\r\n if (toolName === 'grep_search' && toolArgs) {\r\n const { Query, SearchPath } = toolArgs;\r\n const searchResults = parseGrepSearchResult(result);\r\n const searchPathRelative = toRelativePath(SearchPath);\r\n // Determine if it's a file or directory (heuristic: check for common file extensions)\r\n const hasExtension = /\\.[a-zA-Z0-9]{1,10}$/.test(SearchPath || '');\r\n const pathType = hasExtension ? 'file' : 'directory';\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box flexWrap=\"wrap\">\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Searched for </Text>\r\n <Text color=\"#00ccff\">\"{Query}\"</Text>\r\n {searchPathRelative && (\r\n <Text color=\"#666666\"> in <Text color=\"#00ccff\">{searchPathRelative}</Text> {pathType}</Text>\r\n )}\r\n {searchResults && (\r\n <Text color=\"#666666\"> ({searchResults.matches} match{searchResults.matches !== 1 ? 'es' : ''} in {searchResults.files} file{searchResults.files !== 1 ? 's' : ''})</Text>\r\n )}\r\n {!searchResults && result && <Text color=\"#666666\"> (no matches)</Text>}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // FIND_FILES\r\n if (toolName === 'find_files' && toolArgs) {\r\n const { pattern, Pattern } = toolArgs;\r\n const displayPattern = pattern || Pattern || '*';\r\n const fileCount = parseFindFilesResult(result);\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Found {fileCount !== null ? fileCount : 0} files matching </Text>\r\n <Text color=\"#00ccff\">\"{displayPattern}\"</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // WEB_SEARCH\r\n if (toolName === 'web_search' && toolArgs) {\r\n const { query } = toolArgs;\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Searched the web for </Text>\r\n <Text color=\"#00ccff\">\"{query}\"</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // FETCH_URL\r\n if (toolName === 'fetch_url' && toolArgs) {\r\n const { url } = toolArgs;\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Fetched </Text>\r\n <Text color=\"#00ccff\">{url}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // FAST_CONTEXT_SEARCH\r\n if (toolName === 'fast_context_search' && toolArgs) {\r\n let answer = result || '';\r\n let stats = undefined;\r\n\r\n try {\r\n if (result && result.trim().startsWith('{')) {\r\n const parsed = JSON.parse(result);\r\n if (parsed.answer !== undefined) {\r\n answer = parsed.answer;\r\n }\r\n if (parsed.stats !== undefined) {\r\n stats = parsed.stats;\r\n }\r\n }\r\n } catch (e) {\r\n // Fallback to raw result if parsing fails\r\n }\r\n\r\n const { query } = toolArgs;\r\n const scannedFiles = stats?.scannedFiles || [];\r\n const hasFiles = scannedFiles.length > 0;\r\n const MAX_DISPLAY_FILES = 10;\r\n\r\n const truncatedQuery = query && query.length > 50 ? query.substring(0, 47) + '...' : query || '';\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ Rapid Context </Text>\r\n <Text color=\"#cccccc\" wrap=\"truncate-end\">\"{truncatedQuery}\" </Text>\r\n {stats && (\r\n <Text color=\"#666666\">\r\n (Searched {stats.filesSearched} files in {(stats.duration / 1000).toFixed(1)}s)\r\n </Text>\r\n )}\r\n </Box>\r\n <Box paddingLeft={1} marginTop={1} flexDirection=\"column\">\r\n {!hasFiles && answer && (\r\n <Text color=\"#aaaaaa\" wrap=\"truncate-end\">{answer}</Text>\r\n )}\r\n\r\n {hasFiles && (\r\n <Box flexDirection=\"column\" marginTop={0}>\r\n {scannedFiles.slice(0, MAX_DISPLAY_FILES).map((f: string, i: number) => {\r\n // Display only the file name to keep it clean, or relative path\r\n return (\r\n <Text key={i} color=\"#444444\" wrap=\"truncate-end\">\r\n - {path.basename(f)} <Text color=\"#333333\" italic>({toRelativePath(f)})</Text>\r\n </Text>\r\n );\r\n })}\r\n {scannedFiles.length > MAX_DISPLAY_FILES && (\r\n <Text color=\"#444444\" italic>...and {scannedFiles.length - MAX_DISPLAY_FILES} more files checked</Text>\r\n )}\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // INSPECT_SYMBOL\r\n if (toolName === 'inspect_symbol' && toolArgs) {\r\n const { filePath, remoteContext } = toolArgs;\r\n const symbolResult = parseInspectSymbolResult(result);\r\n const displayPath = filePath || 'unknown';\r\n const noSymbols = result?.includes('No symbols found');\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Inspected </Text>\r\n <Text color=\"#00ccff\">{formatPathWithContext(displayPath, remoteContext)}</Text>\r\n {noSymbols && <Text color=\"#666666\"> (no symbols found)</Text>}\r\n {!noSymbols && symbolResult.found && <Text color=\"#666666\"> ({symbolResult.count} symbol{symbolResult.count !== 1 ? 's' : ''})</Text>}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // READ_BINARY_FILE\r\n if (toolName === 'read_binary_file' && toolArgs) {\r\n const { file_path, remoteContext } = toolArgs;\r\n const fileName = file_path ? path.basename(file_path) : 'file';\r\n\r\n // Parse file info from result\r\n const sizeMatch = result?.match(/Size:\\s*([\\d.]+\\s*(?:B|KB|MB))/);\r\n const typeMatch = result?.match(/Type:\\s*([\\w/+-]+)/);\r\n const fileSize = sizeMatch ? sizeMatch[1] : '';\r\n const fileType = typeMatch ? typeMatch[1] : '';\r\n const isSuccess = result?.includes('Successfully uploaded');\r\n const isError = result?.includes('Error:') || !isSuccess;\r\n const errorMessage = result?.match(/Error:\\s*(.+?)(?:\\n|$)/)?.[1] || '';\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={isSuccess ? \"#00cc66\" : \"#ff6666\"} paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n {isSuccess ? (\r\n <>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Read </Text>\r\n <Text color=\"#ff9900\">{formatPathWithContext(file_path, remoteContext)}</Text>\r\n </>\r\n ) : (\r\n <>\r\n <Text color=\"#ff6666\" bold>✗ {toolInfo.emoji} Read failed </Text>\r\n <Text color=\"#ff9900\">{formatPathWithContext(file_path, remoteContext)}</Text>\r\n </>\r\n )}\r\n </Box>\r\n {isSuccess && (fileType || fileSize) && (\r\n <Box>\r\n <Text color=\"#666666\">\r\n {fileType && `${fileType}`}\r\n {fileType && fileSize && ' • '}\r\n {fileSize && fileSize}\r\n </Text>\r\n </Box>\r\n )}\r\n {isError && errorMessage && (\r\n <Box>\r\n <Text color=\"#ff6666\">{errorMessage}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n // SUB_AGENT - completed\r\n if (toolName === 'sub_agent') {\r\n const toolAction = (toolArgs as any)?.action;\r\n const agentId = (toolArgs as any)?.agent_id || 'unknown';\r\n let title = 'Sub Agent';\r\n let details = '';\r\n let additionalContent = null;\r\n\r\n // Helper to try parsing JSON result\r\n let structResult: any = null;\r\n let markdownReport = typeof result === 'string' ? result : '';\r\n\r\n try {\r\n if (typeof result === 'string' && result.trim().startsWith('{')) {\r\n const parsed = JSON.parse(result);\r\n if (parsed.data && parsed.report) {\r\n structResult = parsed.data;\r\n markdownReport = parsed.report;\r\n }\r\n }\r\n } catch (e) {\r\n // Fallback to treating result as string\r\n }\r\n\r\n if (toolAction === 'spawn') {\r\n title = 'Sub Agent';\r\n const prompt = (toolArgs as any)?.prompt || '';\r\n const shortPrompt = prompt.length > 50 ? prompt.substring(0, 47) + '...' : prompt;\r\n // Result for spawn is usually text, we can parse ID from it if needed, but we don't have it in args yet usually\r\n // Actually spawn returns the ID in the result text, but we might not parse it here easily.\r\n // Assuming we rely on result text for ID if not in args.\r\n // But per request: \"id status, duration...\"\r\n // For spawn: \"just the agent id, and the prompt\"\r\n // We'll try to extract ID from result if possible, or use a placeholder if it's not in args (spawn doesn't take agent_id)\r\n const idMatch = result?.match(/Agent ID:\\*\\* ([\\w-]+)/);\r\n const spawnedId = idMatch ? idMatch[1] : 'unknown';\r\n details = `(id: ${spawnedId})`;\r\n\r\n if (prompt) {\r\n additionalContent = (\r\n <Box marginTop={1} marginLeft={2}>\r\n <Text color=\"#00ccff\">{prompt}</Text>\r\n </Box>\r\n );\r\n }\r\n }\r\n else if (toolAction === 'wait_for_status' || toolAction === 'status') {\r\n title = 'Sub Agent Status';\r\n // Parse status details from result string or structured data if we had it (status usually returns text)\r\n // Status result is text like: \"**Status:** 🔄 running\\n**Model:** ...\\n**Duration:** 16s...\"\r\n const statusMatch = result?.match(/Status:\\*\\* (.+?)\\n/);\r\n const durationMatch = result?.match(/Duration:\\*\\* (.+?)\\n/);\r\n const fileOpsMatch = result?.match(/File Operations:\\*\\* (\\d+)/);\r\n const toolCallsMatch = result?.match(/Tool Calls:\\*\\* (\\d+)/);\r\n\r\n const status = statusMatch ? statusMatch[1].trim() : 'unknown';\r\n const duration = durationMatch ? durationMatch[1].trim() : 'unknown';\r\n const fileOps = fileOpsMatch ? fileOpsMatch[1] : '0';\r\n const toolCalls = toolCallsMatch ? toolCallsMatch[1] : '0';\r\n\r\n details = `(id: ${agentId}, status: ${status}, duration: ${duration}, files: ${fileOps}, tools: ${toolCalls})`;\r\n }\r\n else if (toolAction === 'terminate') {\r\n title = 'Sub Agent Terminated';\r\n details = `(id: ${agentId})`;\r\n }\r\n else if (toolAction === 'read_results') {\r\n title = 'Sub Agent Results';\r\n // Use structured result if available\r\n if (structResult) {\r\n details = `(id: ${structResult.agentId}, duration: ${structResult.duration})`;\r\n\r\n // Show modified files\r\n if (structResult.fileOperations && structResult.fileOperations.length > 0) {\r\n additionalContent = (\r\n <Box flexDirection=\"column\" marginTop={1}>\r\n <Text color=\"#666666\">Files Modified:</Text>\r\n {structResult.fileOperations.map((op: any, i: number) => (\r\n <Box key={i} marginLeft={2}>\r\n <Text color=\"#00ccff\">\r\n • {op.path} <Text color=\"#666666\" dimColor>({op.type})</Text>\r\n </Text>\r\n </Box>\r\n ))}\r\n {/* We can show the full report if needed, maybe collapsed or just implied */}\r\n </Box>\r\n );\r\n }\r\n } else {\r\n // Fallback for string result\r\n details = `(id: ${agentId})`;\r\n const summary = result?.length > 100 ? result.substring(0, 97) + '...' : result;\r\n additionalContent = <Text color=\"#666666\" dimColor>{summary}</Text>;\r\n }\r\n }\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00cc66\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} {title} </Text>\r\n <Text color=\"#666666\">{details}</Text>\r\n </Box>\r\n {additionalContent}\r\n </Box>\r\n );\r\n }\r\n\r\n // CREATE_IMAGE\r\n if (toolName === 'create_image' && toolArgs) {\r\n const { output_path, aspect_ratio } = toolArgs;\r\n\r\n // Parse file info from result\r\n const sizeMatch = result?.match(/\\*\\*Size:\\*\\*\\s*([\\d.]+\\s*KB)/);\r\n const formatMatch = result?.match(/\\*\\*Format:\\*\\*\\s*([\\w/]+)/);\r\n const fileSize = sizeMatch ? sizeMatch[1] : '';\r\n const format = formatMatch ? formatMatch[1] : '';\r\n const isSuccess = result?.includes('generated successfully');\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={isSuccess ? \"#00cc66\" : \"#ff6666\"} paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n {isSuccess ? (\r\n <>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Generated image </Text>\r\n <Text color=\"#00ccff\">{toRelativePath(output_path)}</Text>\r\n {(fileSize || format) && (\r\n <Text color=\"#666666\"> ({format}{format && fileSize ? ' • ' : ''}{fileSize})</Text>\r\n )}\r\n </>\r\n ) : (\r\n <>\r\n <Text color=\"#ff6666\" bold>✗ {toolInfo.emoji} Image generation failed</Text>\r\n </>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // BACKGROUND_COMMAND\r\n if (toolName === 'background_command' && toolArgs) {\r\n const { action, command, task_id, wait_seconds } = toolArgs;\r\n let actionText = 'Background command';\r\n let actionDetail = '';\r\n\r\n if (action === 'start') {\r\n actionText = 'Started background task';\r\n actionDetail = command ? `(${command})` : '';\r\n } else if (action === 'status') {\r\n actionText = 'Checked task status';\r\n actionDetail = task_id ? `(${task_id})` : '';\r\n } else if (action === 'kill') {\r\n actionText = 'Killed background task';\r\n actionDetail = task_id ? `(${task_id})` : '';\r\n } else if (action === 'wait') {\r\n actionText = 'Waited for';\r\n actionDetail = wait_seconds ? `${wait_seconds} second${wait_seconds !== 1 ? 's' : ''}` : '';\r\n }\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00cc66\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} {actionText}</Text>\r\n {actionDetail && <Text color=\"#666666\"> {actionDetail}</Text>}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // WORKFLOW - completed state\r\n if (toolName === 'workflow' && toolArgs) {\r\n const action = toolArgs.action;\r\n const stepNumber = toolArgs.step_number;\r\n const exitType = toolArgs.exit_type;\r\n const reason = toolArgs.reason;\r\n\r\n let actionText = 'Workflow action';\r\n let borderColor = '#00cc66';\r\n let textColor = '#00cc66';\r\n let icon = '✓';\r\n\r\n if (action === 'step_complete') {\r\n actionText = `Step ${stepNumber || '?'} Complete`;\r\n borderColor = '#00cc66';\r\n textColor = '#00cc66';\r\n } else if (action === 'exit') {\r\n if (exitType === 'error') {\r\n actionText = `Workflow Failed${reason ? `: ${reason.slice(0, 50)}` : ''}`;\r\n borderColor = '#ff3366';\r\n textColor = '#ff3366';\r\n icon = '✗';\r\n } else if (exitType === 'cancelled') {\r\n actionText = 'Workflow Cancelled';\r\n borderColor = '#ff9900';\r\n textColor = '#ff9900';\r\n icon = '⚠';\r\n } else {\r\n actionText = 'Workflow Completed';\r\n borderColor = '#00cc66';\r\n textColor = '#00cc66';\r\n }\r\n }\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={borderColor} paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color={textColor} bold>{icon} 🔄 {actionText}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // GET_DIFF\r\n if (toolName === 'get_diff' && toolArgs) {\r\n const { filePath, staged } = toolArgs;\r\n const diffTarget = filePath ? toRelativePath(filePath) : '';\r\n const stagedText = staged ? ' (staged)' : '';\r\n\r\n // The get_diff tool returns JSON: { result: string, summary: string }\r\n // Parse JSON to extract the human-readable summary\r\n let parsedResult = result || '';\r\n let parsedSummary = '';\r\n try {\r\n if (result) {\r\n const json = JSON.parse(result);\r\n parsedResult = json.result || result;\r\n parsedSummary = json.summary || '';\r\n }\r\n } catch {\r\n // Not JSON, use raw result as-is\r\n }\r\n\r\n const hasChanges = !parsedResult.includes('No changes') && !parsedSummary.includes('No changes');\r\n const truncated = parsedResult.includes('[Diff truncated');\r\n\r\n // Build display summary from parsed data\r\n let displayInfo = 'no changes';\r\n if (hasChanges) {\r\n if (parsedSummary) {\r\n displayInfo = parsedSummary;\r\n } else {\r\n // Fallback: extract file count from result text (format: **N file(s) changed**)\r\n const filesMatch = parsedResult.match(/(\\d+)\\s+file\\(?s?\\)?\\s+changed/);\r\n displayInfo = filesMatch ? `${filesMatch[1]} file(s) changed` : 'changes detected';\r\n }\r\n }\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00cc66\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} Checked diff {diffTarget ? `for ${diffTarget} ` : ''}{stagedText}</Text>\r\n <Text color=\"#666666\">({displayInfo}{truncated ? ', truncated' : ''})</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // ADD_MCP - show server name, connection status, and tool count\r\n if (toolName === 'add_mcp' && toolArgs) {\r\n const serverName = toolArgs.name || 'unknown';\r\n const isSuccess = result && result.includes('SUCCESS');\r\n const borderColor = isSuccess ? '#9945FF' : '#ff3366';\r\n const statusIcon = isSuccess ? '✓' : '✗';\r\n const statusColor = isSuccess ? '#00cc66' : '#ff3366';\r\n\r\n // Extract tool count from result\r\n let toolCount = '';\r\n const toolCountMatch = result?.match(/Available tools \\((\\d+)\\)/);\r\n if (toolCountMatch) {\r\n toolCount = ` (${toolCountMatch[1]} tools)`;\r\n }\r\n\r\n // Extract error from result for failure case\r\n let errorMsg = '';\r\n if (!isSuccess) {\r\n const errorMatch = result?.match(/Error: (.+)/);\r\n if (errorMatch) {\r\n errorMsg = errorMatch[1];\r\n }\r\n }\r\n\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={borderColor} paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color={statusColor} bold>{statusIcon} 🔌 {isSuccess ? 'Connected' : 'Failed'} MCP server </Text>\r\n <Text color=\"#cc99ff\" bold>{serverName}</Text>\r\n {toolCount && <Text color=\"#666666\">{toolCount}</Text>}\r\n </Box>\r\n {errorMsg && (\r\n <Box paddingLeft={2}>\r\n <Text color=\"#ff6699\">{errorMsg}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n // DEFAULT - for any other tool\r\n return renderWithThinking(\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginBottom={1} flexGrow={0} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} {toolInfo.verb}</Text>\r\n </Box>\r\n {result && result.length < 300 && (\r\n <Box paddingLeft={1} marginTop={1}>\r\n <Text color=\"#aaaaaa\">{result}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n return null;\r\n}, (prevProps, nextProps) => {\r\n // Only re-render if the status or key fields changed\r\n const prevExec = prevProps.message.toolExecution;\r\n const nextExec = nextProps.message.toolExecution;\r\n\r\n if (!prevExec || !nextExec) return false;\r\n\r\n return prevExec.status === nextExec.status &&\r\n prevExec.toolName === nextExec.toolName &&\r\n prevExec.result === nextExec.result &&\r\n prevExec.error === nextExec.error &&\r\n prevExec.streamingOutput === nextExec.streamingOutput;\r\n});\r\n"],"mappings":"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","names":["lines","status"]}
|
|
@@ -1,93 +1,62 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { Box, Text } from
|
|
3
|
-
import Spinner from
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import Spinner from "ink-spinner";
|
|
4
4
|
const TOOL_LABELS = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
read_file: { verb: "Reading file", emoji: "\u{1F4D6}" },
|
|
6
|
+
write_file: { verb: "Writing file", emoji: "\u270D\uFE0F" },
|
|
7
|
+
edit_file: { verb: "Editing file", emoji: "\u270F\uFE0F" },
|
|
8
|
+
list_directory: { verb: "Listing directory", emoji: "\u{1F4C1}" },
|
|
9
|
+
execute_command: { verb: "Executing command", emoji: "\u26A1" },
|
|
10
|
+
grep_search: { verb: "Searching files", emoji: "\u{1F50D}" },
|
|
11
|
+
create_image: { verb: "Generating image", emoji: "\u{1F3A8}" },
|
|
12
|
+
add_mcp: { verb: "Adding MCP server", emoji: "\u{1F50C}" }
|
|
12
13
|
};
|
|
13
|
-
/**
|
|
14
|
-
* Parse MCP tool name to extract server name and tool name
|
|
15
|
-
* MCP tools are named: mcp_{serverName}_{toolName}
|
|
16
|
-
*/
|
|
17
14
|
function parseMCPToolName(toolName) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
};
|
|
15
|
+
if (!toolName.startsWith("mcp_")) return null;
|
|
16
|
+
const withoutPrefix = toolName.slice(4);
|
|
17
|
+
const firstUnderscoreIdx = withoutPrefix.indexOf("_");
|
|
18
|
+
if (firstUnderscoreIdx === -1) {
|
|
19
|
+
return { serverName: withoutPrefix, mcpToolName: "unknown" };
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
serverName: withoutPrefix.slice(0, firstUnderscoreIdx),
|
|
23
|
+
mcpToolName: withoutPrefix.slice(firstUnderscoreIdx + 1)
|
|
24
|
+
};
|
|
29
25
|
}
|
|
30
26
|
function getToolDisplayInfo(toolName) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
const mcpInfo = parseMCPToolName(toolName);
|
|
28
|
+
if (mcpInfo) {
|
|
29
|
+
return {
|
|
30
|
+
verb: `MCP ${mcpInfo.serverName} ${mcpInfo.mcpToolName}`,
|
|
31
|
+
emoji: "\u26A1"
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return TOOL_LABELS[toolName] || { verb: "Executing", emoji: "\u{1F527}" };
|
|
39
35
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (status === 'success') {
|
|
61
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
62
|
-
React.createElement(Box, null,
|
|
63
|
-
React.createElement(Text, { color: "#00cc66", bold: true },
|
|
64
|
-
"\u2713 ",
|
|
65
|
-
toolInfo.emoji,
|
|
66
|
-
" ",
|
|
67
|
-
toolInfo.verb)),
|
|
68
|
-
result && result.length < 300 && (React.createElement(Box, { marginLeft: 2 },
|
|
69
|
-
React.createElement(Text, { color: "#666666" }, result)))));
|
|
70
|
-
}
|
|
71
|
-
if (status === 'error') {
|
|
72
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
73
|
-
React.createElement(Box, null,
|
|
74
|
-
React.createElement(Text, { color: "#ff3366", bold: true },
|
|
75
|
-
"\u2717 ",
|
|
76
|
-
toolInfo.emoji,
|
|
77
|
-
" ",
|
|
78
|
-
toolInfo.verb,
|
|
79
|
-
" failed")),
|
|
80
|
-
error && (React.createElement(Box, { marginLeft: 2 },
|
|
81
|
-
React.createElement(Text, { color: "#ff3366" },
|
|
82
|
-
error.slice(0, 200),
|
|
83
|
-
error.length > 200 ? '...' : '')))));
|
|
84
|
-
}
|
|
85
|
-
return null;
|
|
36
|
+
const ToolExecutionStatus = React.memo(({
|
|
37
|
+
toolName,
|
|
38
|
+
status,
|
|
39
|
+
result,
|
|
40
|
+
error
|
|
41
|
+
}) => {
|
|
42
|
+
const toolInfo = getToolDisplayInfo(toolName);
|
|
43
|
+
if (status === "pending") {
|
|
44
|
+
return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "\u23F3 ", toolInfo.verb, "..."));
|
|
45
|
+
}
|
|
46
|
+
if (status === "executing") {
|
|
47
|
+
return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff" }, /* @__PURE__ */ React.createElement(Spinner, { type: "dots" })), /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, " ", toolInfo.emoji, " ", toolInfo.verb, "..."));
|
|
48
|
+
}
|
|
49
|
+
if (status === "success") {
|
|
50
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "\u2713 ", toolInfo.emoji, " ", toolInfo.verb)), result && result.length < 300 && /* @__PURE__ */ React.createElement(Box, { marginLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, result)));
|
|
51
|
+
}
|
|
52
|
+
if (status === "error") {
|
|
53
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#ff3366", bold: true }, "\u2717 ", toolInfo.emoji, " ", toolInfo.verb, " failed")), error && /* @__PURE__ */ React.createElement(Box, { marginLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: "#ff3366" }, error.slice(0, 200), error.length > 200 ? "..." : "")));
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
86
56
|
}, (prevProps, nextProps) => {
|
|
87
|
-
|
|
88
|
-
return prevProps.toolName === nextProps.toolName &&
|
|
89
|
-
prevProps.status === nextProps.status &&
|
|
90
|
-
prevProps.result === nextProps.result &&
|
|
91
|
-
prevProps.error === nextProps.error;
|
|
57
|
+
return prevProps.toolName === nextProps.toolName && prevProps.status === nextProps.status && prevProps.result === nextProps.result && prevProps.error === nextProps.error;
|
|
92
58
|
});
|
|
59
|
+
export {
|
|
60
|
+
ToolExecutionStatus
|
|
61
|
+
};
|
|
93
62
|
//# sourceMappingURL=ToolExecutionStatus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/ToolExecutionStatus.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport Spinner from 'ink-spinner';\r\n\r\ninterface ToolExecutionStatusProps {\r\n toolName: string;\r\n status: 'pending' | 'executing' | 'success' | 'error';\r\n result?: string;\r\n error?: string;\r\n}\r\n\r\nconst TOOL_LABELS: Record<string, { verb: string; emoji: string }> = {\r\n read_file: { verb: 'Reading file', emoji: '📖' },\r\n write_file: { verb: 'Writing file', emoji: '✍️' },\r\n edit_file: { verb: 'Editing file', emoji: '✏️' },\r\n list_directory: { verb: 'Listing directory', emoji: '📁' },\r\n execute_command: { verb: 'Executing command', emoji: '⚡' },\r\n grep_search: { verb: 'Searching files', emoji: '🔍' },\r\n create_image: { verb: 'Generating image', emoji: '🎨' },\r\n add_mcp: { verb: 'Adding MCP server', emoji: '🔌' },\r\n};\r\n\r\n/**\r\n * Parse MCP tool name to extract server name and tool name\r\n * MCP tools are named: mcp_{serverName}_{toolName}\r\n */\r\nfunction parseMCPToolName(toolName: string): { serverName: string; mcpToolName: string } | null {\r\n if (!toolName.startsWith('mcp_')) return null;\r\n const withoutPrefix = toolName.slice(4);\r\n const firstUnderscoreIdx = withoutPrefix.indexOf('_');\r\n if (firstUnderscoreIdx === -1) {\r\n return { serverName: withoutPrefix, mcpToolName: 'unknown' };\r\n }\r\n return {\r\n serverName: withoutPrefix.slice(0, firstUnderscoreIdx),\r\n mcpToolName: withoutPrefix.slice(firstUnderscoreIdx + 1)\r\n };\r\n}\r\n\r\nfunction getToolDisplayInfo(toolName: string): { verb: string; emoji: string } {\r\n const mcpInfo = parseMCPToolName(toolName);\r\n if (mcpInfo) {\r\n return {\r\n verb: `MCP ${mcpInfo.serverName} ${mcpInfo.mcpToolName}`,\r\n emoji: '⚡'\r\n };\r\n }\r\n return TOOL_LABELS[toolName] || { verb: 'Executing', emoji: '🔧' };\r\n}\r\n\r\nexport const ToolExecutionStatus: React.FC<ToolExecutionStatusProps> = React.memo(({\r\n toolName,\r\n status,\r\n result,\r\n error,\r\n}) => {\r\n const toolInfo = getToolDisplayInfo(toolName);\r\n\r\n if (status === 'pending') {\r\n return (\r\n <Box>\r\n <Text color=\"#666666\" dimColor>⏳ {toolInfo.verb}...</Text>\r\n </Box>\r\n );\r\n }\r\n\r\n if (status === 'executing') {\r\n return (\r\n <Box>\r\n <Text color=\"#00ccff\">\r\n <Spinner type=\"dots\" />\r\n </Text>\r\n <Text color=\"#00ccff\" bold> {toolInfo.emoji} {toolInfo.verb}...</Text>\r\n </Box>\r\n );\r\n }\r\n\r\n if (status === 'success') {\r\n return (\r\n <Box flexDirection=\"column\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ {toolInfo.emoji} {toolInfo.verb}</Text>\r\n </Box>\r\n {result && result.length < 300 && (\r\n <Box marginLeft={2}>\r\n <Text color=\"#666666\">{result}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n if (status === 'error') {\r\n return (\r\n <Box flexDirection=\"column\">\r\n <Box>\r\n <Text color=\"#ff3366\" bold>✗ {toolInfo.emoji} {toolInfo.verb} failed</Text>\r\n </Box>\r\n {error && (\r\n <Box marginLeft={2}>\r\n <Text color=\"#ff3366\">{error.slice(0, 200)}{error.length > 200 ? '...' : ''}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n return null;\r\n}, (prevProps, nextProps) => {\r\n // Only re-render if props actually changed\r\n return prevProps.toolName === nextProps.toolName &&\r\n prevProps.status === nextProps.status &&\r\n prevProps.result === nextProps.result &&\r\n prevProps.error === nextProps.error;\r\n});\r\n"],"mappings":"AAAA,OAAO,WAAoC;AAC3C,SAAS,KAAK,YAAY;AAC1B,OAAO,aAAa;AASpB,MAAM,cAA+D;AAAA,EACnE,WAAW,EAAE,MAAM,gBAAgB,OAAO,YAAK;AAAA,EAC/C,YAAY,EAAE,MAAM,gBAAgB,OAAO,eAAK;AAAA,EAChD,WAAW,EAAE,MAAM,gBAAgB,OAAO,eAAK;AAAA,EAC/C,gBAAgB,EAAE,MAAM,qBAAqB,OAAO,YAAK;AAAA,EACzD,iBAAiB,EAAE,MAAM,qBAAqB,OAAO,SAAI;AAAA,EACzD,aAAa,EAAE,MAAM,mBAAmB,OAAO,YAAK;AAAA,EACpD,cAAc,EAAE,MAAM,oBAAoB,OAAO,YAAK;AAAA,EACtD,SAAS,EAAE,MAAM,qBAAqB,OAAO,YAAK;AACpD;AAMA,SAAS,iBAAiB,UAAsE;AAC9F,MAAI,CAAC,SAAS,WAAW,MAAM,EAAG,QAAO;AACzC,QAAM,gBAAgB,SAAS,MAAM,CAAC;AACtC,QAAM,qBAAqB,cAAc,QAAQ,GAAG;AACpD,MAAI,uBAAuB,IAAI;AAC7B,WAAO,EAAE,YAAY,eAAe,aAAa,UAAU;AAAA,EAC7D;AACA,SAAO;AAAA,IACL,YAAY,cAAc,MAAM,GAAG,kBAAkB;AAAA,IACrD,aAAa,cAAc,MAAM,qBAAqB,CAAC;AAAA,EACzD;AACF;AAEA,SAAS,mBAAmB,UAAmD;AAC7E,QAAM,UAAU,iBAAiB,QAAQ;AACzC,MAAI,SAAS;AACX,WAAO;AAAA,MACL,MAAM,OAAO,QAAQ,UAAU,IAAI,QAAQ,WAAW;AAAA,MACtD,OAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,YAAY,QAAQ,KAAK,EAAE,MAAM,aAAa,OAAO,YAAK;AACnE;AAEO,MAAM,sBAA0D,MAAM,KAAK,CAAC;AAAA,EACjF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,WAAW,mBAAmB,QAAQ;AAE5C,MAAI,WAAW,WAAW;AACxB,WACE,oCAAC,WACC,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,WAAG,SAAS,MAAK,KAAG,CACrD;AAAA,EAEJ;AAEA,MAAI,WAAW,aAAa;AAC1B,WACE,oCAAC,WACC,oCAAC,QAAK,OAAM,aACV,oCAAC,WAAQ,MAAK,QAAO,CACvB,GACA,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,KAAE,SAAS,OAAM,KAAE,SAAS,MAAK,KAAG,CACjE;AAAA,EAEJ;AAEA,MAAI,WAAW,WAAW;AACxB,WACE,oCAAC,OAAI,eAAc,YACjB,oCAAC,WACC,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,WAAG,SAAS,OAAM,KAAE,SAAS,IAAK,CAC/D,GACC,UAAU,OAAO,SAAS,OACzB,oCAAC,OAAI,YAAY,KACf,oCAAC,QAAK,OAAM,aAAW,MAAO,CAChC,CAEJ;AAAA,EAEJ;AAEA,MAAI,WAAW,SAAS;AACtB,WACE,oCAAC,OAAI,eAAc,YACjB,oCAAC,WACC,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,WAAG,SAAS,OAAM,KAAE,SAAS,MAAK,SAAO,CACtE,GACC,SACC,oCAAC,OAAI,YAAY,KACf,oCAAC,QAAK,OAAM,aAAW,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,SAAS,MAAM,QAAQ,EAAG,CAC9E,CAEJ;AAAA,EAEJ;AAEA,SAAO;AACT,GAAG,CAAC,WAAW,cAAc;AAE3B,SAAO,UAAU,aAAa,UAAU,YACtC,UAAU,WAAW,UAAU,UAC/B,UAAU,WAAW,UAAU,UAC/B,UAAU,UAAU,UAAU;AAClC,CAAC;","names":[]}
|