centaurus-cli 3.0.1 → 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 -5158
- 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 +1526 -1512
- 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 +601 -572
- 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 -406
- 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 -3263
- 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 -514
- 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 -204
- 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,"
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/ConnectionStatusMessage.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport Spinner from 'ink-spinner';\r\n\r\nexport interface ConnectionStatus {\r\n type: 'ssh' | 'wsl' | 'docker';\r\n status: 'connecting' | 'connected' | 'error' | 'disconnected';\r\n connectionString?: string; // e.g., \"rohan@localhost\" for SSH, \"Ubuntu\" for WSL\r\n error?: string;\r\n}\r\n\r\ninterface ConnectionStatusMessageProps {\r\n status: ConnectionStatus;\r\n}\r\n\r\n/**\r\n * Dynamic connection status message that shows a spinner while connecting\r\n * and transforms to a static \"Connected\" message once connected.\r\n */\r\nexport const ConnectionStatusMessage: React.FC<ConnectionStatusMessageProps> = React.memo(({ status }) => {\r\n const getTypeLabel = () => {\r\n switch (status.type) {\r\n case 'ssh': return 'ssh';\r\n case 'wsl': return 'WSL';\r\n case 'docker': return 'Docker';\r\n default: return status.type;\r\n }\r\n };\r\n\r\n // CONNECTING state - shows spinner\r\n if (status.status === 'connecting') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#9945FF\" paddingX={1} marginBottom={1} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"dots\" /></Text>\r\n <Text color=\"#9945FF\"> Tunnelling to {getTypeLabel()} environment...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // CONNECTED state - static success message\r\n if (status.status === 'connected') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00cc66\" paddingX={1} marginBottom={1} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓</Text>\r\n <Text color=\"#00cc66\"> Established Wormhole to {getTypeLabel()} environment</Text>\r\n {status.connectionString && (\r\n <Text color=\"#666666\"> [{getTypeLabel()} {status.connectionString}]</Text>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // ERROR state\r\n if (status.status === 'error') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff3366\" paddingX={1} marginBottom={1} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#ff3366\" bold>✗</Text>\r\n <Text color=\"#ff3366\"> Failed to connect to {getTypeLabel()} environment</Text>\r\n </Box>\r\n {status.error && (\r\n <Box paddingLeft={1} marginTop={0}>\r\n <Text color=\"#ff3366\">{status.error.slice(0, 300)}{status.error.length > 300 ? '...' : ''}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n // DISCONNECTED state - shows disconnect notification\r\n if (status.status === 'disconnected') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff9900\" paddingX={1} marginBottom={1} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#ff9900\" bold>✗</Text>\r\n <Text color=\"#ff9900\"> Disconnected from {getTypeLabel()} environment</Text>\r\n {status.connectionString && (\r\n <Text color=\"#666666\"> [{getTypeLabel()} {status.connectionString}]</Text>\r\n )}\r\n </Box>\r\n {status.error && (\r\n <Box>\r\n <Text color=\"#ff9900\"> {status.error.slice(0, 300)}{status.error.length > 300 ? '...' : ''}</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 status changes\r\n return prevProps.status.status === nextProps.status.status &&\r\n prevProps.status.type === nextProps.status.type &&\r\n prevProps.status.connectionString === nextProps.status.connectionString &&\r\n prevProps.status.error === nextProps.status.error;\r\n});\r\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAC1B,OAAO,aAAa;AAiBb,MAAM,0BAAkE,MAAM,KAAK,CAAC,EAAE,OAAO,MAAM;AACtG,QAAM,eAAe,MAAM;AACvB,YAAQ,OAAO,MAAM;AAAA,MACjB,KAAK;AAAO,eAAO;AAAA,MACnB,KAAK;AAAO,eAAO;AAAA,MACnB,KAAK;AAAU,eAAO;AAAA,MACtB;AAAS,eAAO,OAAO;AAAA,IAC3B;AAAA,EACJ;AAGA,MAAI,OAAO,WAAW,cAAc;AAChC,WACI,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,cAAc,GAAG,WAAU,gBAC1G,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,oCAAC,WAAQ,MAAK,QAAO,CAAE,GAC7C,oCAAC,QAAK,OAAM,aAAU,mBAAgB,aAAa,GAAE,iBAAe,CACxE,CACJ;AAAA,EAER;AAGA,MAAI,OAAO,WAAW,aAAa;AAC/B,WACI,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,cAAc,GAAG,WAAU,gBAC1G,oCAAC,WACG,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,QAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,6BAA0B,aAAa,GAAE,cAAY,GAC1E,OAAO,oBACJ,oCAAC,QAAK,OAAM,aAAU,MAAG,aAAa,GAAE,KAAE,OAAO,kBAAiB,GAAC,CAE3E,CACJ;AAAA,EAER;AAGA,MAAI,OAAO,WAAW,SAAS;AAC3B,WACI,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,cAAc,GAAG,WAAU,gBAC1G,oCAAC,WACG,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,QAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,0BAAuB,aAAa,GAAE,cAAY,CAC5E,GACC,OAAO,SACJ,oCAAC,OAAI,aAAa,GAAG,WAAW,KAC5B,oCAAC,QAAK,OAAM,aAAW,OAAO,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,MAAM,SAAS,MAAM,QAAQ,EAAG,CAC9F,CAER;AAAA,EAER;AAGA,MAAI,OAAO,WAAW,gBAAgB;AAClC,WACI,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,cAAc,GAAG,WAAU,gBAC1G,oCAAC,WACG,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,QAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,uBAAoB,aAAa,GAAE,cAAY,GACpE,OAAO,oBACJ,oCAAC,QAAK,OAAM,aAAU,MAAG,aAAa,GAAE,KAAE,OAAO,kBAAiB,GAAC,CAE3E,GACC,OAAO,SACJ,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,KAAE,OAAO,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,MAAM,SAAS,MAAM,QAAQ,EAAG,CAC/F,CAER;AAAA,EAER;AAEA,SAAO;AACX,GAAG,CAAC,WAAW,cAAc;AAEzB,SAAO,UAAU,OAAO,WAAW,UAAU,OAAO,UAChD,UAAU,OAAO,SAAS,UAAU,OAAO,QAC3C,UAAU,OAAO,qBAAqB,UAAU,OAAO,oBACvD,UAAU,OAAO,UAAU,UAAU,OAAO;AACpD,CAAC;","names":[]}
|
|
@@ -1,55 +1,40 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { Box, Text } from
|
|
3
|
-
// Format number with K suffix for readability (e.g., 2155 -> "2.2K", 10000 -> "10K")
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
4
3
|
const formatTokens = (tokens) => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
if (tokens >= 1e6) {
|
|
5
|
+
return `${(tokens / 1e6).toFixed(1)}M`;
|
|
6
|
+
}
|
|
7
|
+
if (tokens >= 1e3) {
|
|
8
|
+
return `${(tokens / 1e3).toFixed(tokens >= 1e4 ? 0 : 1)}K`;
|
|
9
|
+
}
|
|
10
|
+
return tokens.toString();
|
|
12
11
|
};
|
|
13
|
-
// Get circular progress indicator character based on percentage REMAINING
|
|
14
|
-
// Uses Unicode pie chart characters - starts FULL and empties as context fills
|
|
15
12
|
const getCircularIndicator = (percentageUsed) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return '◑'; // Half remaining
|
|
27
|
-
if (percentageRemaining <= 62.5)
|
|
28
|
-
return '◕'; // 5/8 remaining
|
|
29
|
-
if (percentageRemaining <= 75)
|
|
30
|
-
return '◕'; // 3/4 remaining
|
|
31
|
-
if (percentageRemaining <= 87.5)
|
|
32
|
-
return '◕'; // 7/8 remaining
|
|
33
|
-
return '●'; // Full circle - plenty of space
|
|
13
|
+
const percentageRemaining = 100 - percentageUsed;
|
|
14
|
+
if (percentageRemaining <= 0) return "\u25CB";
|
|
15
|
+
if (percentageRemaining <= 12.5) return "\u25D4";
|
|
16
|
+
if (percentageRemaining <= 25) return "\u25D4";
|
|
17
|
+
if (percentageRemaining <= 37.5) return "\u25D1";
|
|
18
|
+
if (percentageRemaining <= 50) return "\u25D1";
|
|
19
|
+
if (percentageRemaining <= 62.5) return "\u25D5";
|
|
20
|
+
if (percentageRemaining <= 75) return "\u25D5";
|
|
21
|
+
if (percentageRemaining <= 87.5) return "\u25D5";
|
|
22
|
+
return "\u25CF";
|
|
34
23
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return (React.createElement(Box, null,
|
|
48
|
-
React.createElement(Text, { color: getColor() },
|
|
49
|
-
circleIndicator,
|
|
50
|
-
" ",
|
|
51
|
-
formatTokens(currentTokens),
|
|
52
|
-
"/",
|
|
53
|
-
formatTokens(maxTokens))));
|
|
24
|
+
const ContextWindowIndicator = React.memo(({
|
|
25
|
+
currentTokens,
|
|
26
|
+
maxTokens
|
|
27
|
+
}) => {
|
|
28
|
+
const percentageUsed = Math.min(currentTokens / maxTokens * 100, 100);
|
|
29
|
+
const getColor = () => {
|
|
30
|
+
if (percentageUsed < 50) return "#00cc66";
|
|
31
|
+
if (percentageUsed < 75) return "#ffaa00";
|
|
32
|
+
return "#ff4444";
|
|
33
|
+
};
|
|
34
|
+
const circleIndicator = getCircularIndicator(percentageUsed);
|
|
35
|
+
return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: getColor() }, circleIndicator, " ", formatTokens(currentTokens), "/", formatTokens(maxTokens)));
|
|
54
36
|
});
|
|
37
|
+
export {
|
|
38
|
+
ContextWindowIndicator
|
|
39
|
+
};
|
|
55
40
|
//# sourceMappingURL=ContextWindowIndicator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/ContextWindowIndicator.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text } from 'ink';\r\n\r\ninterface ContextWindowIndicatorProps {\r\n currentTokens: number;\r\n maxTokens: number;\r\n}\r\n\r\n// Format number with K suffix for readability (e.g., 2155 -> \"2.2K\", 10000 -> \"10K\")\r\nconst formatTokens = (tokens: number): string => {\r\n if (tokens >= 1000000) {\r\n return `${(tokens / 1000000).toFixed(1)}M`;\r\n }\r\n if (tokens >= 1000) {\r\n return `${(tokens / 1000).toFixed(tokens >= 10000 ? 0 : 1)}K`;\r\n }\r\n return tokens.toString();\r\n};\r\n\r\n// Get circular progress indicator character based on percentage REMAINING\r\n// Uses Unicode pie chart characters - starts FULL and empties as context fills\r\nconst getCircularIndicator = (percentageUsed: number): string => {\r\n const percentageRemaining = 100 - percentageUsed;\r\n if (percentageRemaining <= 0) return '○'; // Empty circle - context full\r\n if (percentageRemaining <= 12.5) return '◔'; // Nearly empty\r\n if (percentageRemaining <= 25) return '◔'; // Quarter remaining\r\n if (percentageRemaining <= 37.5) return '◑'; // 3/8 remaining\r\n if (percentageRemaining <= 50) return '◑'; // Half remaining\r\n if (percentageRemaining <= 62.5) return '◕'; // 5/8 remaining\r\n if (percentageRemaining <= 75) return '◕'; // 3/4 remaining\r\n if (percentageRemaining <= 87.5) return '◕'; // 7/8 remaining\r\n return '●'; // Full circle - plenty of space\r\n};\r\n\r\nexport const ContextWindowIndicator: React.FC<ContextWindowIndicatorProps> = React.memo(({\r\n currentTokens,\r\n maxTokens\r\n}) => {\r\n // Calculate percentage used for color determination\r\n const percentageUsed = Math.min((currentTokens / maxTokens) * 100, 100);\r\n\r\n // Determine color based on usage\r\n const getColor = () => {\r\n if (percentageUsed < 50) return '#00cc66'; // Green - plenty of room\r\n if (percentageUsed < 75) return '#ffaa00'; // Yellow - getting full\r\n return '#ff4444'; // Red - nearly full\r\n };\r\n\r\n const circleIndicator = getCircularIndicator(percentageUsed);\r\n\r\n return (\r\n <Box>\r\n <Text color={getColor()}>\r\n {circleIndicator} {formatTokens(currentTokens)}/{formatTokens(maxTokens)}\r\n </Text>\r\n </Box>\r\n );\r\n});\r\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAQ1B,MAAM,eAAe,CAAC,WAA2B;AAC/C,MAAI,UAAU,KAAS;AACrB,WAAO,IAAI,SAAS,KAAS,QAAQ,CAAC,CAAC;AAAA,EACzC;AACA,MAAI,UAAU,KAAM;AAClB,WAAO,IAAI,SAAS,KAAM,QAAQ,UAAU,MAAQ,IAAI,CAAC,CAAC;AAAA,EAC5D;AACA,SAAO,OAAO,SAAS;AACzB;AAIA,MAAM,uBAAuB,CAAC,mBAAmC;AAC/D,QAAM,sBAAsB,MAAM;AAClC,MAAI,uBAAuB,EAAG,QAAO;AACrC,MAAI,uBAAuB,KAAM,QAAO;AACxC,MAAI,uBAAuB,GAAI,QAAO;AACtC,MAAI,uBAAuB,KAAM,QAAO;AACxC,MAAI,uBAAuB,GAAI,QAAO;AACtC,MAAI,uBAAuB,KAAM,QAAO;AACxC,MAAI,uBAAuB,GAAI,QAAO;AACtC,MAAI,uBAAuB,KAAM,QAAO;AACxC,SAAO;AACT;AAEO,MAAM,yBAAgE,MAAM,KAAK,CAAC;AAAA,EACvF;AAAA,EACA;AACF,MAAM;AAEJ,QAAM,iBAAiB,KAAK,IAAK,gBAAgB,YAAa,KAAK,GAAG;AAGtE,QAAM,WAAW,MAAM;AACrB,QAAI,iBAAiB,GAAI,QAAO;AAChC,QAAI,iBAAiB,GAAI,QAAO;AAChC,WAAO;AAAA,EACT;AAEA,QAAM,kBAAkB,qBAAqB,cAAc;AAE3D,SACE,oCAAC,WACC,oCAAC,QAAK,OAAO,SAAS,KACnB,iBAAgB,KAAE,aAAa,aAAa,GAAE,KAAE,aAAa,SAAS,CACzE,CACF;AAEJ,CAAC;","names":[]}
|
|
@@ -1,110 +1,108 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
plan.steps.forEach((step, taskIndex) => {
|
|
23
|
-
const statusIcon = step.status === 'completed' ? '[x]' : '[ ]';
|
|
24
|
-
taskListItems.push({
|
|
25
|
-
type: 'task',
|
|
26
|
-
content: `${taskIndex + 1}. ${step.description}`,
|
|
27
|
-
status: statusIcon
|
|
28
|
-
});
|
|
29
|
-
step.subtasks?.forEach((subtask, subIndex) => {
|
|
30
|
-
const subStatusIcon = subtask.status === 'completed' ? '[x]' : '[ ]';
|
|
31
|
-
taskListItems.push({
|
|
32
|
-
type: 'subtask',
|
|
33
|
-
content: ` ${taskIndex + 1}.${subIndex + 1}. ${subtask.description}`,
|
|
34
|
-
status: subStatusIcon
|
|
35
|
-
});
|
|
36
|
-
});
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { Box, Text, useInput, useStdout } from "ink";
|
|
3
|
+
const DetailedPlanReviewScreen = ({
|
|
4
|
+
plan,
|
|
5
|
+
onApprove,
|
|
6
|
+
onEdit
|
|
7
|
+
}) => {
|
|
8
|
+
const { stdout } = useStdout();
|
|
9
|
+
const terminalHeight = stdout?.rows || 24;
|
|
10
|
+
const headerHeight = 6;
|
|
11
|
+
const approvalBoxHeight = 5;
|
|
12
|
+
const designSummaryHeight = plan.designSummary ? Math.min(8, plan.designSummary.split("\n").length + 2) : 0;
|
|
13
|
+
const availableTaskHeight = Math.max(8, terminalHeight - headerHeight - approvalBoxHeight - designSummaryHeight - 4);
|
|
14
|
+
const [scrollOffset, setScrollOffset] = useState(0);
|
|
15
|
+
const taskListItems = [];
|
|
16
|
+
plan.steps.forEach((step, taskIndex) => {
|
|
17
|
+
const statusIcon = step.status === "completed" ? "[x]" : "[ ]";
|
|
18
|
+
taskListItems.push({
|
|
19
|
+
type: "task",
|
|
20
|
+
content: `${taskIndex + 1}. ${step.description}`,
|
|
21
|
+
status: statusIcon
|
|
37
22
|
});
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
onEdit();
|
|
46
|
-
}
|
|
47
|
-
else if (key.upArrow) {
|
|
48
|
-
setScrollOffset(prev => Math.max(0, prev - 1));
|
|
49
|
-
}
|
|
50
|
-
else if (key.downArrow) {
|
|
51
|
-
setScrollOffset(prev => Math.min(maxScroll, prev + 1));
|
|
52
|
-
}
|
|
23
|
+
step.subtasks?.forEach((subtask, subIndex) => {
|
|
24
|
+
const subStatusIcon = subtask.status === "completed" ? "[x]" : "[ ]";
|
|
25
|
+
taskListItems.push({
|
|
26
|
+
type: "subtask",
|
|
27
|
+
content: ` ${taskIndex + 1}.${subIndex + 1}. ${subtask.description}`,
|
|
28
|
+
status: subStatusIcon
|
|
29
|
+
});
|
|
53
30
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
31
|
+
});
|
|
32
|
+
const maxScroll = Math.max(0, taskListItems.length - availableTaskHeight);
|
|
33
|
+
useInput((input, key) => {
|
|
34
|
+
if (key.return || input.toLowerCase() === "y") {
|
|
35
|
+
onApprove();
|
|
36
|
+
} else if (input.toLowerCase() === "n") {
|
|
37
|
+
onEdit();
|
|
38
|
+
} else if (key.upArrow) {
|
|
39
|
+
setScrollOffset((prev) => Math.max(0, prev - 1));
|
|
40
|
+
} else if (key.downArrow) {
|
|
41
|
+
setScrollOffset((prev) => Math.min(maxScroll, prev + 1));
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
const visibleItems = taskListItems.slice(scrollOffset, scrollOffset + availableTaskHeight);
|
|
45
|
+
const showScrollUp = scrollOffset > 0;
|
|
46
|
+
const showScrollDown = scrollOffset < maxScroll;
|
|
47
|
+
const totalTasks = plan.steps.length;
|
|
48
|
+
const totalSubtasks = plan.steps.reduce((acc, step) => acc + (step.subtasks?.length || 0), 0);
|
|
49
|
+
const totalItems = totalSubtasks > 0 ? totalSubtasks : totalTasks;
|
|
50
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", paddingX: 1, paddingY: 0 }, /* @__PURE__ */ React.createElement(
|
|
51
|
+
Box,
|
|
52
|
+
{
|
|
53
|
+
borderStyle: "double",
|
|
54
|
+
borderColor: "#ffaa00",
|
|
55
|
+
paddingX: 2,
|
|
56
|
+
paddingY: 0,
|
|
57
|
+
marginBottom: 1
|
|
58
|
+
},
|
|
59
|
+
/* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", bold: true }, "\u{1F4CB} PLAN REVIEW: "),
|
|
60
|
+
/* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, plan.title)
|
|
61
|
+
), plan.designSummary && /* @__PURE__ */ React.createElement(
|
|
62
|
+
Box,
|
|
63
|
+
{
|
|
64
|
+
flexDirection: "column",
|
|
65
|
+
borderStyle: "round",
|
|
66
|
+
borderColor: "#4a4a4a",
|
|
67
|
+
paddingX: 1,
|
|
68
|
+
paddingY: 0,
|
|
69
|
+
marginBottom: 1
|
|
70
|
+
},
|
|
71
|
+
/* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "\u{1F4D6} Design Summary:"),
|
|
72
|
+
/* @__PURE__ */ React.createElement(Box, { marginLeft: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#888888", wrap: "truncate-end" }, plan.designSummary.length > 300 ? plan.designSummary.substring(0, 300) + "..." : plan.designSummary))
|
|
73
|
+
), plan.summary && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1, marginLeft: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, plan.summary)), /* @__PURE__ */ React.createElement(
|
|
74
|
+
Box,
|
|
75
|
+
{
|
|
76
|
+
flexDirection: "column",
|
|
77
|
+
borderStyle: "round",
|
|
78
|
+
borderColor: "#00ccff",
|
|
79
|
+
paddingX: 1,
|
|
80
|
+
paddingY: 0,
|
|
81
|
+
marginBottom: 1
|
|
82
|
+
},
|
|
83
|
+
/* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, "\u{1F4DD} Tasks"), /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, " (", totalItems, " items in ", totalTasks, " phases)")),
|
|
84
|
+
showScrollUp && /* @__PURE__ */ React.createElement(Box, { justifyContent: "center" }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "\u2191 scroll up (\u2191 key)")),
|
|
85
|
+
/* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginY: 0 }, visibleItems.map((item, index) => {
|
|
86
|
+
const isTask = item.type === "task";
|
|
87
|
+
return /* @__PURE__ */ React.createElement(Box, { key: scrollOffset + index }, /* @__PURE__ */ React.createElement(Text, { color: isTask ? "#cccccc" : "#999999", wrap: "wrap" }, item.status, " ", item.content));
|
|
88
|
+
})),
|
|
89
|
+
showScrollDown && /* @__PURE__ */ React.createElement(Box, { justifyContent: "center" }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "\u2193 scroll down (\u2193 key)"))
|
|
90
|
+
), /* @__PURE__ */ React.createElement(
|
|
91
|
+
Box,
|
|
92
|
+
{
|
|
93
|
+
flexDirection: "column",
|
|
94
|
+
borderStyle: "round",
|
|
95
|
+
borderColor: "#00cc66",
|
|
96
|
+
paddingX: 2,
|
|
97
|
+
paddingY: 0
|
|
98
|
+
},
|
|
99
|
+
/* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Approve Plan?"),
|
|
100
|
+
/* @__PURE__ */ React.createElement(Box, { marginTop: 0 }, /* @__PURE__ */ React.createElement(Box, { marginRight: 4 }, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, "Press "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Y"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " or "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Enter"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " to approve")), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, "Press "), /* @__PURE__ */ React.createElement(Text, { color: "#ff6666", bold: true }, "N"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " to reject")))
|
|
101
|
+
));
|
|
102
|
+
};
|
|
103
|
+
var DetailedPlanReviewScreen_default = DetailedPlanReviewScreen;
|
|
104
|
+
export {
|
|
105
|
+
DetailedPlanReviewScreen,
|
|
106
|
+
DetailedPlanReviewScreen_default as default
|
|
108
107
|
};
|
|
109
|
-
export default DetailedPlanReviewScreen;
|
|
110
108
|
//# sourceMappingURL=DetailedPlanReviewScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetailedPlanReviewScreen.js","sourceRoot":"","sources":["../../../src/ui/components/DetailedPlanReviewScreen.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/DetailedPlanReviewScreen.tsx"],"sourcesContent":["/**\r\n * DetailedPlanReviewScreen Component\r\n * \r\n * Enhanced plan approval screen with two visual boxes:\r\n * 1. Task Summary Box - Shows hierarchical task list with subtasks\r\n * 2. Approval Box - Yes/No controls\r\n */\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { Box, Text, useInput, useStdout } from 'ink';\r\nimport { Plan, PlanStep, PlanSubtask } from '../../tools/plan-mode.js';\r\n\r\ninterface DetailedPlanReviewScreenProps {\r\n plan: Plan;\r\n onApprove: () => void;\r\n onEdit: () => void;\r\n}\r\n\r\nexport const DetailedPlanReviewScreen: React.FC<DetailedPlanReviewScreenProps> = ({\r\n plan,\r\n onApprove,\r\n onEdit\r\n}) => {\r\n const { stdout } = useStdout();\r\n const terminalHeight = stdout?.rows || 24;\r\n\r\n // Calculate available height for task list (leave room for header, approval box, etc.)\r\n const headerHeight = 6; // Header box + margins\r\n const approvalBoxHeight = 5; // Approval box + margins\r\n const designSummaryHeight = plan.designSummary ? Math.min(8, plan.designSummary.split('\\n').length + 2) : 0;\r\n const availableTaskHeight = Math.max(8, terminalHeight - headerHeight - approvalBoxHeight - designSummaryHeight - 4);\r\n\r\n // Scroll state for task list\r\n const [scrollOffset, setScrollOffset] = useState(0);\r\n\r\n // Calculate total task list height\r\n const taskListItems: Array<{ type: 'task' | 'subtask'; content: string; status: string }> = [];\r\n plan.steps.forEach((step, taskIndex) => {\r\n const statusIcon = step.status === 'completed' ? '[x]' : '[ ]';\r\n taskListItems.push({\r\n type: 'task',\r\n content: `${taskIndex + 1}. ${step.description}`,\r\n status: statusIcon\r\n });\r\n\r\n step.subtasks?.forEach((subtask, subIndex) => {\r\n const subStatusIcon = subtask.status === 'completed' ? '[x]' : '[ ]';\r\n taskListItems.push({\r\n type: 'subtask',\r\n content: ` ${taskIndex + 1}.${subIndex + 1}. ${subtask.description}`,\r\n status: subStatusIcon\r\n });\r\n });\r\n });\r\n\r\n const maxScroll = Math.max(0, taskListItems.length - availableTaskHeight);\r\n\r\n // Handle keyboard input\r\n useInput((input, key) => {\r\n if (key.return || input.toLowerCase() === 'y') {\r\n onApprove();\r\n } else if (input.toLowerCase() === 'n') {\r\n onEdit();\r\n } else if (key.upArrow) {\r\n setScrollOffset(prev => Math.max(0, prev - 1));\r\n } else if (key.downArrow) {\r\n setScrollOffset(prev => Math.min(maxScroll, prev + 1));\r\n }\r\n });\r\n\r\n // Get visible task items\r\n const visibleItems = taskListItems.slice(scrollOffset, scrollOffset + availableTaskHeight);\r\n const showScrollUp = scrollOffset > 0;\r\n const showScrollDown = scrollOffset < maxScroll;\r\n\r\n // Count totals\r\n const totalTasks = plan.steps.length;\r\n const totalSubtasks = plan.steps.reduce((acc, step) => acc + (step.subtasks?.length || 0), 0);\r\n const totalItems = totalSubtasks > 0 ? totalSubtasks : totalTasks;\r\n\r\n return (\r\n <Box flexDirection=\"column\" paddingX={1} paddingY={0}>\r\n {/* Header */}\r\n <Box\r\n borderStyle=\"double\"\r\n borderColor=\"#ffaa00\"\r\n paddingX={2}\r\n paddingY={0}\r\n marginBottom={1}\r\n >\r\n <Text color=\"#ffaa00\" bold>📋 PLAN REVIEW: </Text>\r\n <Text color=\"#00ccff\" bold>{plan.title}</Text>\r\n </Box>\r\n\r\n {/* Design Summary (collapsible/truncated if too long) */}\r\n {plan.designSummary && (\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#4a4a4a\"\r\n paddingX={1}\r\n paddingY={0}\r\n marginBottom={1}\r\n >\r\n <Text color=\"#666666\" dimColor>📖 Design Summary:</Text>\r\n <Box marginLeft={1}>\r\n <Text color=\"#888888\" wrap=\"truncate-end\">\r\n {plan.designSummary.length > 300\r\n ? plan.designSummary.substring(0, 300) + '...'\r\n : plan.designSummary}\r\n </Text>\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Summary */}\r\n {plan.summary && (\r\n <Box marginBottom={1} marginLeft={1}>\r\n <Text color=\"#888888\">{plan.summary}</Text>\r\n </Box>\r\n )}\r\n\r\n {/* Task Summary Box */}\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#00ccff\"\r\n paddingX={1}\r\n paddingY={0}\r\n marginBottom={1}\r\n >\r\n {/* Tasks Header */}\r\n <Box>\r\n <Text color=\"#00ccff\" bold>📝 Tasks</Text>\r\n <Text color=\"#666666\"> ({totalItems} items in {totalTasks} phases)</Text>\r\n </Box>\r\n\r\n {/* Scroll indicator (up) */}\r\n {showScrollUp && (\r\n <Box justifyContent=\"center\">\r\n <Text color=\"#666666\">↑ scroll up (↑ key)</Text>\r\n </Box>\r\n )}\r\n\r\n {/* Task List */}\r\n <Box flexDirection=\"column\" marginY={0}>\r\n {visibleItems.map((item, index) => {\r\n const isTask = item.type === 'task';\r\n return (\r\n <Box key={scrollOffset + index}>\r\n <Text color={isTask ? '#cccccc' : '#999999'} wrap=\"wrap\">\r\n {item.status} {item.content}\r\n </Text>\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n\r\n {/* Scroll indicator (down) */}\r\n {showScrollDown && (\r\n <Box justifyContent=\"center\">\r\n <Text color=\"#666666\">↓ scroll down (↓ key)</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n {/* Approval Box */}\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#00cc66\"\r\n paddingX={2}\r\n paddingY={0}\r\n >\r\n <Text color=\"#00cc66\" bold>Approve Plan?</Text>\r\n <Box marginTop={0}>\r\n <Box marginRight={4}>\r\n <Text color=\"#888888\">Press </Text>\r\n <Text color=\"#00cc66\" bold>Y</Text>\r\n <Text color=\"#888888\"> or </Text>\r\n <Text color=\"#00cc66\" bold>Enter</Text>\r\n <Text color=\"#888888\"> to approve</Text>\r\n </Box>\r\n <Box>\r\n <Text color=\"#888888\">Press </Text>\r\n <Text color=\"#ff6666\" bold>N</Text>\r\n <Text color=\"#888888\"> to reject</Text>\r\n </Box>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default DetailedPlanReviewScreen;\r\n"],"mappings":"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","names":[]}
|