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,203 +1,169 @@
|
|
|
1
|
-
import stripAnsi from
|
|
2
|
-
/**
|
|
3
|
-
* Input Requirement Detector Service
|
|
4
|
-
*
|
|
5
|
-
* Monitors shell output and detects when user input is required.
|
|
6
|
-
* Used by the agent control mode to know when to prompt the AI for input.
|
|
7
|
-
*/
|
|
8
|
-
// Common patterns that indicate input is required
|
|
1
|
+
import stripAnsi from "strip-ansi";
|
|
9
2
|
const INPUT_PATTERNS = [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
3
|
+
// Password prompts
|
|
4
|
+
/password\s*[:\>]/i,
|
|
5
|
+
/enter\s+password/i,
|
|
6
|
+
/\[sudo\]\s+password/i,
|
|
7
|
+
/passphrase/i,
|
|
8
|
+
// Y/N confirmations
|
|
9
|
+
/\[y\/n\]/i,
|
|
10
|
+
/\[yes\/no\]/i,
|
|
11
|
+
/\(y\/n\)/i,
|
|
12
|
+
/\(yes\/no\)/i,
|
|
13
|
+
/continue\s*\?/i,
|
|
14
|
+
/proceed\s*\?/i,
|
|
15
|
+
/are\s+you\s+sure\s*\?/i,
|
|
16
|
+
/overwrite\s*\?/i,
|
|
17
|
+
/replace\s*\?/i,
|
|
18
|
+
/delete\s*\?/i,
|
|
19
|
+
/confirm\s*[:\?]/i,
|
|
20
|
+
// Generic input prompts (ending with : or ? followed by whitespace or end)
|
|
21
|
+
/:\s*$/,
|
|
22
|
+
/\?\s*$/,
|
|
23
|
+
// npm init and similar prompts
|
|
24
|
+
/^\s*name:\s*\(/i,
|
|
25
|
+
/^\s*version:\s*\(/i,
|
|
26
|
+
/^\s*description:\s*$/i,
|
|
27
|
+
/^\s*entry\s+point:\s*\(/i,
|
|
28
|
+
/^\s*test\s+command:\s*$/i,
|
|
29
|
+
/^\s*git\s+repository:\s*$/i,
|
|
30
|
+
/^\s*keywords:\s*$/i,
|
|
31
|
+
/^\s*author:\s*$/i,
|
|
32
|
+
/^\s*license:\s*\(/i,
|
|
33
|
+
/is\s+this\s+ok\s*\?/i,
|
|
34
|
+
// Read-Host in PowerShell
|
|
35
|
+
/Read-Host/i,
|
|
36
|
+
// Git prompts
|
|
37
|
+
/username\s+for/i,
|
|
38
|
+
/password\s+for/i,
|
|
39
|
+
// SSH prompts
|
|
40
|
+
/are\s+you\s+sure\s+you\s+want\s+to\s+continue\s+connecting/i,
|
|
41
|
+
/\(yes\/no\/\[fingerprint\]\)/i,
|
|
42
|
+
// Press any key / press enter
|
|
43
|
+
/press\s+(any\s+key|enter|return)/i,
|
|
44
|
+
// Choice prompts
|
|
45
|
+
/choice\s*[:\>]/i,
|
|
46
|
+
/select\s+(option|choice)\s*[:\>]/i,
|
|
47
|
+
/\[\d+\]\s+.*:\s*$/i
|
|
48
|
+
// Numbered menu items ending with :
|
|
55
49
|
];
|
|
56
|
-
// Patterns that indicate the command is still producing output (not waiting)
|
|
57
50
|
const ACTIVE_OUTPUT_PATTERNS = [
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
51
|
+
/\.\.\./,
|
|
52
|
+
// Progress indicator
|
|
53
|
+
/downloading/i,
|
|
54
|
+
/installing/i,
|
|
55
|
+
/compiling/i,
|
|
56
|
+
/building/i,
|
|
57
|
+
/running/i,
|
|
58
|
+
/starting/i,
|
|
59
|
+
/processing/i,
|
|
60
|
+
/%/,
|
|
61
|
+
// Percentage progress
|
|
62
|
+
/\[\s*=+\s*\]/
|
|
63
|
+
// Progress bar
|
|
68
64
|
];
|
|
69
|
-
|
|
70
|
-
* Default timeout in ms to consider output as "stalled" (waiting for input)
|
|
71
|
-
*/
|
|
72
|
-
export const DEFAULT_STALL_TIMEOUT_MS = 2000;
|
|
73
|
-
/**
|
|
74
|
-
* Detects if the shell output indicates that user input is required.
|
|
75
|
-
*
|
|
76
|
-
* @param output - The complete shell output so far
|
|
77
|
-
* @param timeSinceLastOutput - Time in ms since last output was received (optional)
|
|
78
|
-
* @param stallTimeoutMs - Timeout in ms to consider output stalled (default: 2000)
|
|
79
|
-
* @returns Detection result with confidence level
|
|
80
|
-
*/
|
|
81
|
-
// Patterns that should be IGNORED even if they look like prompts (e.g. system shell prompts)
|
|
65
|
+
const DEFAULT_STALL_TIMEOUT_MS = 2e3;
|
|
82
66
|
const IGNORED_PATTERNS = [
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
67
|
+
/PS\s+[A-Z]:\\.*>\s*$/i,
|
|
68
|
+
// PowerShell prompt: PS C:\path>
|
|
69
|
+
/^[A-Z]:\\.*>\s*$/i,
|
|
70
|
+
// CMD prompt: C:\path>
|
|
71
|
+
/^\s*>\s*$/,
|
|
72
|
+
// Single chevron prompt often seen in transitions
|
|
73
|
+
/user@.*[:\$]\s*$/i,
|
|
74
|
+
// Bash style: user@host:$
|
|
75
|
+
/bash-[\d\.]+\$\s*$/i
|
|
76
|
+
// Bash prompt
|
|
88
77
|
];
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const isActiveOutput = ACTIVE_OUTPUT_PATTERNS.some(pattern => pattern.test(last3Lines));
|
|
111
|
-
// Check for explicit input patterns with high confidence in last line
|
|
112
|
-
for (const pattern of INPUT_PATTERNS) {
|
|
113
|
-
if (pattern.test(lastLine)) {
|
|
114
|
-
return {
|
|
115
|
-
requiresInput: true,
|
|
116
|
-
confidence: 'high',
|
|
117
|
-
matchedPattern: pattern.toString(),
|
|
118
|
-
lastLine
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
// Check the last 3 lines for patterns (slightly lower confidence)
|
|
123
|
-
for (const pattern of INPUT_PATTERNS) {
|
|
124
|
-
if (pattern.test(last3Lines)) {
|
|
125
|
-
return {
|
|
126
|
-
requiresInput: true,
|
|
127
|
-
confidence: 'medium',
|
|
128
|
-
matchedPattern: pattern.toString(),
|
|
129
|
-
lastLine
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
// If output has stalled and no active patterns, might be waiting for input
|
|
134
|
-
if (timeSinceLastOutput !== undefined && timeSinceLastOutput > stallTimeoutMs && !isActiveOutput) {
|
|
135
|
-
// Check if last line looks like a prompt (ends with common prompt characters)
|
|
136
|
-
if (/[:\>\?\$\#]\s*$/.test(lastLine)) {
|
|
137
|
-
return {
|
|
138
|
-
requiresInput: true,
|
|
139
|
-
confidence: 'low',
|
|
140
|
-
matchedPattern: 'stall_with_prompt_ending',
|
|
141
|
-
lastLine
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return {
|
|
146
|
-
requiresInput: false,
|
|
147
|
-
confidence: 'high',
|
|
78
|
+
function detectInputRequirement(output, timeSinceLastOutput, stallTimeoutMs = DEFAULT_STALL_TIMEOUT_MS) {
|
|
79
|
+
const lines = output.split("\n").filter((line) => line.trim());
|
|
80
|
+
if (lines.length === 0) {
|
|
81
|
+
return { requiresInput: false, confidence: "low", lastLine: "" };
|
|
82
|
+
}
|
|
83
|
+
const rawLastLine = lines[lines.length - 1];
|
|
84
|
+
const cleanLastLine = stripAnsi(rawLastLine).trim();
|
|
85
|
+
if (IGNORED_PATTERNS.some((pattern) => pattern.test(cleanLastLine))) {
|
|
86
|
+
return { requiresInput: false, confidence: "low", lastLine: cleanLastLine };
|
|
87
|
+
}
|
|
88
|
+
const last3LinesRaw = lines.slice(-3).join("\n");
|
|
89
|
+
const cleanLast3Lines = stripAnsi(last3LinesRaw);
|
|
90
|
+
const lastLine = cleanLastLine;
|
|
91
|
+
const last3Lines = cleanLast3Lines;
|
|
92
|
+
const isActiveOutput = ACTIVE_OUTPUT_PATTERNS.some((pattern) => pattern.test(last3Lines));
|
|
93
|
+
for (const pattern of INPUT_PATTERNS) {
|
|
94
|
+
if (pattern.test(lastLine)) {
|
|
95
|
+
return {
|
|
96
|
+
requiresInput: true,
|
|
97
|
+
confidence: "high",
|
|
98
|
+
matchedPattern: pattern.toString(),
|
|
148
99
|
lastLine
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Get a human-readable description of what type of input is likely required.
|
|
153
|
-
* This is useful for constructing the AI prompt.
|
|
154
|
-
*
|
|
155
|
-
* @param result - The detection result
|
|
156
|
-
* @returns Description of the expected input type
|
|
157
|
-
*/
|
|
158
|
-
export function getInputTypeDescription(result) {
|
|
159
|
-
if (!result.requiresInput || !result.matchedPattern) {
|
|
160
|
-
return 'unknown input';
|
|
100
|
+
};
|
|
161
101
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
if (pattern.includes('press')) {
|
|
173
|
-
return 'key press (enter or any key)';
|
|
102
|
+
}
|
|
103
|
+
for (const pattern of INPUT_PATTERNS) {
|
|
104
|
+
if (pattern.test(last3Lines)) {
|
|
105
|
+
return {
|
|
106
|
+
requiresInput: true,
|
|
107
|
+
confidence: "medium",
|
|
108
|
+
matchedPattern: pattern.toString(),
|
|
109
|
+
lastLine
|
|
110
|
+
};
|
|
174
111
|
}
|
|
175
|
-
|
|
176
|
-
|
|
112
|
+
}
|
|
113
|
+
if (timeSinceLastOutput !== void 0 && timeSinceLastOutput > stallTimeoutMs && !isActiveOutput) {
|
|
114
|
+
if (/[:\>\?\$\#]\s*$/.test(lastLine)) {
|
|
115
|
+
return {
|
|
116
|
+
requiresInput: true,
|
|
117
|
+
confidence: "low",
|
|
118
|
+
matchedPattern: "stall_with_prompt_ending",
|
|
119
|
+
lastLine
|
|
120
|
+
};
|
|
177
121
|
}
|
|
178
|
-
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
requiresInput: false,
|
|
125
|
+
confidence: "high",
|
|
126
|
+
lastLine
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function getInputTypeDescription(result) {
|
|
130
|
+
if (!result.requiresInput || !result.matchedPattern) {
|
|
131
|
+
return "unknown input";
|
|
132
|
+
}
|
|
133
|
+
const pattern = result.matchedPattern.toLowerCase();
|
|
134
|
+
if (pattern.includes("password") || pattern.includes("passphrase")) {
|
|
135
|
+
return "password or passphrase";
|
|
136
|
+
}
|
|
137
|
+
if (pattern.includes("y/n") || pattern.includes("yes/no") || pattern.includes("sure")) {
|
|
138
|
+
return "yes/no confirmation";
|
|
139
|
+
}
|
|
140
|
+
if (pattern.includes("continue") || pattern.includes("proceed") || pattern.includes("confirm")) {
|
|
141
|
+
return "confirmation to proceed";
|
|
142
|
+
}
|
|
143
|
+
if (pattern.includes("press")) {
|
|
144
|
+
return "key press (enter or any key)";
|
|
145
|
+
}
|
|
146
|
+
if (pattern.includes("choice") || pattern.includes("select")) {
|
|
147
|
+
return "selection from options";
|
|
148
|
+
}
|
|
149
|
+
return "text input";
|
|
179
150
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
export function extractPromptContext(output) {
|
|
188
|
-
const lines = output.split('\n').filter(line => line.trim());
|
|
189
|
-
// Get last 5 lines for context
|
|
190
|
-
const contextLines = lines.slice(-5);
|
|
191
|
-
// Find the line that looks most like a prompt
|
|
192
|
-
for (let i = contextLines.length - 1; i >= 0; i--) {
|
|
193
|
-
const line = stripAnsi(contextLines[i]).trim();
|
|
194
|
-
// If line ends with a prompt character and isn't empty
|
|
195
|
-
if (line && /[:\>\?\$\#]\s*$/.test(line)) {
|
|
196
|
-
return line;
|
|
197
|
-
}
|
|
151
|
+
function extractPromptContext(output) {
|
|
152
|
+
const lines = output.split("\n").filter((line) => line.trim());
|
|
153
|
+
const contextLines = lines.slice(-5);
|
|
154
|
+
for (let i = contextLines.length - 1; i >= 0; i--) {
|
|
155
|
+
const line = stripAnsi(contextLines[i]).trim();
|
|
156
|
+
if (line && /[:\>\?\$\#]\s*$/.test(line)) {
|
|
157
|
+
return line;
|
|
198
158
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
159
|
+
}
|
|
160
|
+
const lastLine = contextLines[contextLines.length - 1] || "";
|
|
161
|
+
return stripAnsi(lastLine).trim();
|
|
202
162
|
}
|
|
163
|
+
export {
|
|
164
|
+
DEFAULT_STALL_TIMEOUT_MS,
|
|
165
|
+
detectInputRequirement,
|
|
166
|
+
extractPromptContext,
|
|
167
|
+
getInputTypeDescription
|
|
168
|
+
};
|
|
203
169
|
//# sourceMappingURL=input-requirement-detector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-requirement-detector.js","sourceRoot":"","sources":["../../src/services/input-requirement-detector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/services/input-requirement-detector.ts"],"sourcesContent":["import stripAnsi from 'strip-ansi';\r\n\r\n/**\r\n * Input Requirement Detector Service\r\n * \r\n * Monitors shell output and detects when user input is required.\r\n * Used by the agent control mode to know when to prompt the AI for input.\r\n */\r\n\r\n// Common patterns that indicate input is required\r\nconst INPUT_PATTERNS = [\r\n // Password prompts\r\n /password\\s*[:\\>]/i,\r\n /enter\\s+password/i,\r\n /\\[sudo\\]\\s+password/i,\r\n /passphrase/i,\r\n\r\n // Y/N confirmations\r\n /\\[y\\/n\\]/i,\r\n /\\[yes\\/no\\]/i,\r\n /\\(y\\/n\\)/i,\r\n /\\(yes\\/no\\)/i,\r\n /continue\\s*\\?/i,\r\n /proceed\\s*\\?/i,\r\n /are\\s+you\\s+sure\\s*\\?/i,\r\n /overwrite\\s*\\?/i,\r\n /replace\\s*\\?/i,\r\n /delete\\s*\\?/i,\r\n /confirm\\s*[:\\?]/i,\r\n\r\n // Generic input prompts (ending with : or ? followed by whitespace or end)\r\n /:\\s*$/,\r\n /\\?\\s*$/,\r\n\r\n // npm init and similar prompts\r\n /^\\s*name:\\s*\\(/i,\r\n /^\\s*version:\\s*\\(/i,\r\n /^\\s*description:\\s*$/i,\r\n /^\\s*entry\\s+point:\\s*\\(/i,\r\n /^\\s*test\\s+command:\\s*$/i,\r\n /^\\s*git\\s+repository:\\s*$/i,\r\n /^\\s*keywords:\\s*$/i,\r\n /^\\s*author:\\s*$/i,\r\n /^\\s*license:\\s*\\(/i,\r\n /is\\s+this\\s+ok\\s*\\?/i,\r\n\r\n // Read-Host in PowerShell\r\n /Read-Host/i,\r\n\r\n // Git prompts\r\n /username\\s+for/i,\r\n /password\\s+for/i,\r\n\r\n // SSH prompts\r\n /are\\s+you\\s+sure\\s+you\\s+want\\s+to\\s+continue\\s+connecting/i,\r\n /\\(yes\\/no\\/\\[fingerprint\\]\\)/i,\r\n\r\n // Press any key / press enter\r\n /press\\s+(any\\s+key|enter|return)/i,\r\n\r\n // Choice prompts\r\n /choice\\s*[:\\>]/i,\r\n /select\\s+(option|choice)\\s*[:\\>]/i,\r\n /\\[\\d+\\]\\s+.*:\\s*$/i, // Numbered menu items ending with :\r\n];\r\n\r\n// Patterns that indicate the command is still producing output (not waiting)\r\nconst ACTIVE_OUTPUT_PATTERNS = [\r\n /\\.\\.\\./, // Progress indicator\r\n /downloading/i,\r\n /installing/i,\r\n /compiling/i,\r\n /building/i,\r\n /running/i,\r\n /starting/i,\r\n /processing/i,\r\n /%/, // Percentage progress\r\n /\\[\\s*=+\\s*\\]/, // Progress bar\r\n];\r\n\r\nexport interface InputDetectionResult {\r\n requiresInput: boolean;\r\n confidence: 'high' | 'medium' | 'low';\r\n matchedPattern?: string;\r\n lastLine: string;\r\n}\r\n\r\n/**\r\n * Default timeout in ms to consider output as \"stalled\" (waiting for input)\r\n */\r\nexport const DEFAULT_STALL_TIMEOUT_MS = 2000;\r\n\r\n/**\r\n * Detects if the shell output indicates that user input is required.\r\n * \r\n * @param output - The complete shell output so far\r\n * @param timeSinceLastOutput - Time in ms since last output was received (optional)\r\n * @param stallTimeoutMs - Timeout in ms to consider output stalled (default: 2000)\r\n * @returns Detection result with confidence level\r\n */\r\n// Patterns that should be IGNORED even if they look like prompts (e.g. system shell prompts)\r\nconst IGNORED_PATTERNS = [\r\n /PS\\s+[A-Z]:\\\\.*>\\s*$/i, // PowerShell prompt: PS C:\\path>\r\n /^[A-Z]:\\\\.*>\\s*$/i, // CMD prompt: C:\\path>\r\n /^\\s*>\\s*$/, // Single chevron prompt often seen in transitions\r\n /user@.*[:\\$]\\s*$/i, // Bash style: user@host:$\r\n /bash-[\\d\\.]+\\$\\s*$/i, // Bash prompt\r\n];\r\n\r\nexport function detectInputRequirement(\r\n output: string,\r\n timeSinceLastOutput?: number,\r\n stallTimeoutMs: number = DEFAULT_STALL_TIMEOUT_MS\r\n): InputDetectionResult {\r\n // Get the last few lines of output for analysis\r\n const lines = output.split('\\n').filter(line => line.trim());\r\n\r\n // Safety check for empty lines\r\n if (lines.length === 0) {\r\n return { requiresInput: false, confidence: 'low', lastLine: '' };\r\n }\r\n\r\n // Get raw last line\r\n const rawLastLine = lines[lines.length - 1];\r\n\r\n // Sanitize: strip ANSI codes and trim whitespace\r\n const cleanLastLine = stripAnsi(rawLastLine).trim();\r\n\r\n // Check against IGNORED patterns first\r\n if (IGNORED_PATTERNS.some(pattern => pattern.test(cleanLastLine))) {\r\n return { requiresInput: false, confidence: 'low', lastLine: cleanLastLine };\r\n }\r\n\r\n // Get last 3 lines, stripped of ANSI\r\n const last3LinesRaw = lines.slice(-3).join('\\n');\r\n const cleanLast3Lines = stripAnsi(last3LinesRaw);\r\n\r\n const lastLine = cleanLastLine; // Use cleaned version for matching\r\n const last3Lines = cleanLast3Lines;\r\n\r\n // Check if output appears to be actively producing content\r\n const isActiveOutput = ACTIVE_OUTPUT_PATTERNS.some(pattern => pattern.test(last3Lines));\r\n\r\n // Check for explicit input patterns with high confidence in last line\r\n for (const pattern of INPUT_PATTERNS) {\r\n if (pattern.test(lastLine)) {\r\n return {\r\n requiresInput: true,\r\n confidence: 'high',\r\n matchedPattern: pattern.toString(),\r\n lastLine\r\n };\r\n }\r\n }\r\n\r\n // Check the last 3 lines for patterns (slightly lower confidence)\r\n for (const pattern of INPUT_PATTERNS) {\r\n if (pattern.test(last3Lines)) {\r\n return {\r\n requiresInput: true,\r\n confidence: 'medium',\r\n matchedPattern: pattern.toString(),\r\n lastLine\r\n };\r\n }\r\n }\r\n\r\n // If output has stalled and no active patterns, might be waiting for input\r\n if (timeSinceLastOutput !== undefined && timeSinceLastOutput > stallTimeoutMs && !isActiveOutput) {\r\n // Check if last line looks like a prompt (ends with common prompt characters)\r\n if (/[:\\>\\?\\$\\#]\\s*$/.test(lastLine)) {\r\n return {\r\n requiresInput: true,\r\n confidence: 'low',\r\n matchedPattern: 'stall_with_prompt_ending',\r\n lastLine\r\n };\r\n }\r\n }\r\n\r\n return {\r\n requiresInput: false,\r\n confidence: 'high',\r\n lastLine\r\n };\r\n}\r\n\r\n/**\r\n * Get a human-readable description of what type of input is likely required.\r\n * This is useful for constructing the AI prompt.\r\n * \r\n * @param result - The detection result\r\n * @returns Description of the expected input type\r\n */\r\nexport function getInputTypeDescription(result: InputDetectionResult): string {\r\n if (!result.requiresInput || !result.matchedPattern) {\r\n return 'unknown input';\r\n }\r\n\r\n const pattern = result.matchedPattern.toLowerCase();\r\n\r\n if (pattern.includes('password') || pattern.includes('passphrase')) {\r\n return 'password or passphrase';\r\n }\r\n if (pattern.includes('y/n') || pattern.includes('yes/no') || pattern.includes('sure')) {\r\n return 'yes/no confirmation';\r\n }\r\n if (pattern.includes('continue') || pattern.includes('proceed') || pattern.includes('confirm')) {\r\n return 'confirmation to proceed';\r\n }\r\n if (pattern.includes('press')) {\r\n return 'key press (enter or any key)';\r\n }\r\n if (pattern.includes('choice') || pattern.includes('select')) {\r\n return 'selection from options';\r\n }\r\n\r\n return 'text input';\r\n}\r\n\r\n/**\r\n * Extract the prompt question from the output for context.\r\n * This helps the AI understand what is being asked.\r\n * \r\n * @param output - The complete shell output\r\n * @returns The prompt/question being asked\r\n */\r\nexport function extractPromptContext(output: string): string {\r\n const lines = output.split('\\n').filter(line => line.trim());\r\n\r\n // Get last 5 lines for context\r\n const contextLines = lines.slice(-5);\r\n\r\n // Find the line that looks most like a prompt\r\n for (let i = contextLines.length - 1; i >= 0; i--) {\r\n const line = stripAnsi(contextLines[i]).trim();\r\n // If line ends with a prompt character and isn't empty\r\n if (line && /[:\\>\\?\\$\\#]\\s*$/.test(line)) {\r\n return line;\r\n }\r\n }\r\n\r\n // Just return the last non-empty line\r\n const lastLine = contextLines[contextLines.length - 1] || '';\r\n return stripAnsi(lastLine).trim();\r\n}\r\n"],"mappings":"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","names":[]}
|