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,"file":"ssh-handler.js","sourceRoot":"","sources":["../../../src/context/handlers/ssh-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/context/handlers/ssh-handler.ts"],"sourcesContent":["/**\r\n * SSH Handler for remote shell connections\r\n */\r\n\r\nimport { Client, ClientChannel, ConnectConfig } from 'ssh2';\r\nimport { SubshellHandler, BreadcrumbInfo, CommandResult, DirectoryEntry, SearchResult } from '../subshell-handler.js';\r\nimport { SubshellContext, SubshellConnectionError, SubshellExecutionError, OSType } from '../types.js';\r\nimport { randomBytes } from 'crypto';\r\nimport * as fs from 'fs';\r\nimport * as os from 'os';\r\nimport * as path from 'path';\r\nimport { quickLog } from '../../utils/conversation-logger.js';\r\n\r\n/**\r\n * SSH-specific configuration\r\n */\r\nexport interface SSHConfig {\r\n host: string;\r\n port: number;\r\n username: string;\r\n password?: string;\r\n privateKey?: Buffer | string;\r\n passphrase?: string;\r\n isNested?: boolean;\r\n}\r\n\r\n/**\r\n * SSH Handler implementation\r\n */\r\nexport class SSHHandler implements SubshellHandler {\r\n readonly type = 'ssh';\r\n readonly detectionPatterns = [\r\n /^ssh\\s+/,\r\n /^ssh\\s+-[^\\s]+\\s+/,\r\n ];\r\n\r\n private _client: Client | null = null;\r\n private sftpClient: any = null;\r\n private config: SSHConfig | null = null;\r\n private currentWorkingDirectory: string = '~';\r\n private shellType: string = 'bash';\r\n private osType: OSType = 'linux';\r\n private sessionId: string = '';\r\n private onPasswordRequest?: (message: string) => Promise<string>;\r\n private _isConnected: boolean = false;\r\n private onDisconnectCallback?: (error?: string) => void;\r\n\r\n /**\r\n * Get the underlying SSH client (used for PTY commands)\r\n */\r\n get client(): Client | null {\r\n return this._client;\r\n }\r\n\r\n /**\r\n * Set password request callback\r\n */\r\n setPasswordRequestCallback(callback: (message: string) => Promise<string>): void {\r\n this.onPasswordRequest = callback;\r\n }\r\n\r\n /**\r\n * Set callback to be called when the connection is lost\r\n */\r\n setDisconnectCallback(callback: (error?: string) => void): void {\r\n this.onDisconnectCallback = callback;\r\n }\r\n\r\n /**\r\n * Check if the handler is currently connected\r\n */\r\n isConnected(): boolean {\r\n return this._isConnected && this._client !== null;\r\n }\r\n\r\n /**\r\n * Detect if a command should trigger this handler\r\n */\r\n detect(command: string): boolean {\r\n return this.detectionPatterns.some(pattern => pattern.test(command));\r\n }\r\n\r\n /**\r\n * Attach to an existing SSH session detected from PTY output.\r\n * This is used for \"Warpify\" mode where the user has already established\r\n * an SSH connection in the terminal and pressed Alt+E to attach.\r\n * \r\n * Unlike connect(), this does NOT establish a new SSH connection.\r\n * It creates a context based on the detected session info for AI awareness.\r\n * Commands will continue to flow through the PTY, not via ssh2 library.\r\n * \r\n * @param connectionString - The detected connection string (e.g., \"user@hostname\")\r\n */\r\n attachFromPtyOutput(connectionString: string): SubshellContext {\r\n this.sessionId = `warpified-${Date.now()}`;\r\n\r\n // Parse connection string\r\n const parts = connectionString.split('@');\r\n const username = parts.length > 1 ? parts[0] : 'user';\r\n const hostname = parts.length > 1 ? parts[1] : connectionString;\r\n\r\n // Create minimal config for context tracking (no actual SSH connection)\r\n this.config = {\r\n host: hostname,\r\n port: 22,\r\n username: username,\r\n };\r\n\r\n // Mark as \"connected\" for context purposes (PTY handles actual connection)\r\n this._isConnected = true;\r\n\r\n return {\r\n type: 'ssh',\r\n handler: this,\r\n metadata: {\r\n hostname: hostname,\r\n username: username,\r\n workingDirectory: '~',\r\n shell: 'bash', // Assume bash for warpified sessions\r\n os: 'linux' as const,\r\n port: 22,\r\n },\r\n connectionState: 'connected',\r\n sessionId: this.sessionId,\r\n };\r\n }\r\n\r\n /**\r\n * Connect to the SSH server\r\n */\r\n async connect(command: string, cwd: string): Promise<SubshellContext> {\r\n this.sessionId = randomBytes(16).toString('hex');\r\n\r\n try {\r\n // Parse SSH command\r\n this.config = this.parseSSHCommand(command);\r\n\r\n // Establish SSH connection\r\n await this.establishConnection(this.config);\r\n\r\n // Initialize SFTP (non-fatal)\r\n try {\r\n await this.initializeSFTP();\r\n } catch (e) {\r\n // Continue without SFTP; file ops will fallback to command-based methods\r\n this.sftpClient = null;\r\n }\r\n\r\n // Detect shell type and OS\r\n this.shellType = await this.detectShellType();\r\n this.osType = await this.detectOSType();\r\n\r\n // Get initial working directory\r\n this.currentWorkingDirectory = await this.getCurrentWorkingDirectory();\r\n\r\n // Inject shell integration script\r\n await this.injectShellIntegration();\r\n\r\n return {\r\n type: 'ssh',\r\n handler: this,\r\n metadata: {\r\n hostname: this.config.host,\r\n username: this.config.username,\r\n workingDirectory: this.currentWorkingDirectory,\r\n shell: this.shellType,\r\n os: this.osType,\r\n port: this.config.port,\r\n },\r\n connectionState: 'connected',\r\n sessionId: this.sessionId,\r\n };\r\n } catch (error) {\r\n throw new SubshellConnectionError(\r\n 'ssh',\r\n error instanceof Error ? error.message : 'Unknown error',\r\n true\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Connect from an existing remote context (nested session)\r\n */\r\n async connectFromRemote(command: string, cwd: string, parentContext: SubshellContext): Promise<SubshellContext> {\r\n this.sessionId = randomBytes(16).toString('hex');\r\n\r\n try {\r\n // Parse SSH command\r\n this.config = this.parseSSHCommand(command);\r\n // Mark as nested session to disable implicit local authentication\r\n this.config.isNested = true;\r\n\r\n // Check if parent supports streaming\r\n // Check if parent supports streaming\r\n let streamFactory: (() => Promise<any>) | undefined;\r\n if (parentContext.handler && typeof parentContext.handler.createStream === 'function') {\r\n streamFactory = () => parentContext.handler.createStream(this.config.host, this.config.port);\r\n } else {\r\n throw new SubshellConnectionError('ssh', `Parent context (${parentContext.type}) does not support nested connections via tunneling.`, false);\r\n }\r\n\r\n // Establish SSH connection using the tunnel stream factory\r\n await this.establishConnection(this.config, undefined, streamFactory);\r\n\r\n // Initialize SFTP (non-fatal)\r\n try {\r\n await this.initializeSFTP();\r\n } catch (e) {\r\n this.sftpClient = null;\r\n }\r\n\r\n // Detect shell type and OS\r\n this.shellType = await this.detectShellType();\r\n this.osType = await this.detectOSType();\r\n\r\n // Get initial working directory\r\n this.currentWorkingDirectory = await this.getCurrentWorkingDirectory();\r\n\r\n // Inject shell integration script\r\n await this.injectShellIntegration();\r\n\r\n return {\r\n type: 'ssh',\r\n handler: this,\r\n metadata: {\r\n hostname: this.config.host,\r\n username: this.config.username,\r\n workingDirectory: this.currentWorkingDirectory,\r\n shell: this.shellType,\r\n os: this.osType,\r\n port: this.config.port,\r\n },\r\n connectionState: 'connected',\r\n sessionId: this.sessionId,\r\n };\r\n } catch (error) {\r\n throw new SubshellConnectionError(\r\n 'ssh',\r\n error instanceof Error ? error.message : 'Unknown error',\r\n true\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Create a network stream/tunnel through this SSH connection\r\n */\r\n async createStream(host: string, port: number): Promise<any> {\r\n if (!this._client || !this._isConnected) {\r\n throw new Error('Not connected to SSH server');\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n // Use arbitrary source IP/port (127.0.0.1:0) for the forwardOut call\r\n this._client!.forwardOut('127.0.0.1', 0, host, port, (err, stream) => {\r\n if (err) {\r\n reject(err);\r\n } else {\r\n resolve(stream);\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Disconnect from the SSH server\r\n */\r\n async disconnect(): Promise<void> {\r\n // Mark as disconnected first to prevent close/end handlers from firing callback\r\n this._isConnected = false;\r\n\r\n if (this.sftpClient) {\r\n this.sftpClient.end();\r\n this.sftpClient = null;\r\n }\r\n\r\n if (this._client) {\r\n this._client.end();\r\n this._client = null;\r\n }\r\n\r\n this.config = null;\r\n }\r\n\r\n /**\r\n * Execute a command in the SSH session\r\n */\r\n async executeCommand(command: string): Promise<CommandResult> {\r\n if (!this._client || !this._isConnected) {\r\n throw new SubshellExecutionError(command, 'Not connected to SSH server');\r\n }\r\n\r\n const pwdTag = `__CENTAURUS_PWD_${this.sessionId}__`;\r\n\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n reject(new SubshellExecutionError(command, 'Command timed out after 30 seconds'));\r\n }, 30000);\r\n\r\n this._client!.exec(\r\n `cd \"${this.currentWorkingDirectory}\" && ${command}; echo \"${pwdTag}:$(pwd)\"`,\r\n (err, stream) => {\r\n if (err) {\r\n clearTimeout(timeout);\r\n reject(new SubshellExecutionError(command, err.message));\r\n return;\r\n }\r\n\r\n let stdout = '';\r\n let stderr = '';\r\n\r\n stream.on('close', (code: number) => {\r\n clearTimeout(timeout);\r\n\r\n // Extract working directory from output using unique tag\r\n // We use a constructed regex to match the specific tag for this session\r\n const pwdRegex = new RegExp(`${pwdTag}:(.+)$`, 'm');\r\n const pwdMatch = stdout.match(pwdRegex);\r\n\r\n if (pwdMatch) {\r\n this.currentWorkingDirectory = pwdMatch[1].trim();\r\n // Remove the tag line from stdout\r\n const removeRegex = new RegExp(`${pwdTag}:.+$`, 'm');\r\n stdout = stdout.replace(removeRegex, '').trim();\r\n }\r\n\r\n resolve({\r\n stdout,\r\n stderr,\r\n exitCode: code || 0,\r\n });\r\n });\r\n\r\n stream.on('data', (data: Buffer) => {\r\n stdout += data.toString();\r\n });\r\n\r\n stream.stderr.on('data', (data: Buffer) => {\r\n stderr += data.toString();\r\n });\r\n }\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Read a file from the remote filesystem\r\n */\r\n async readFile(path: string): Promise<string> {\r\n const absolutePath = this.resolveAbsolutePath(path);\r\n\r\n // Prefer SFTP when available\r\n if (this.sftpClient) {\r\n return new Promise((resolve, reject) => {\r\n this.sftpClient.readFile(absolutePath, 'utf8', (err: Error | null, data: string) => {\r\n if (err) {\r\n reject(new Error(`Failed to read file ${path}: ${err.message}`));\r\n } else {\r\n resolve(data);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Fallback: use base64 over exec\r\n const result = await this.executeCommand(`base64 \"${absolutePath}\" || cat \"${absolutePath}\" | base64`);\r\n const base64Out = result.stdout.replace(/\\s+/g, '');\r\n try {\r\n return Buffer.from(base64Out, 'base64').toString('utf8');\r\n } catch (e: any) {\r\n throw new Error(`Failed to decode file ${path}: ${e.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * Write a file to the remote filesystem\r\n */\r\n async writeFile(path: string, content: string | Buffer): Promise<void> {\r\n const absolutePath = this.resolveAbsolutePath(path);\r\n\r\n // Prefer SFTP when available\r\n if (this.sftpClient) {\r\n return new Promise((resolve, reject) => {\r\n // ssh2 sftp writeFile supports Buffer or string\r\n // If buffer, encoding is ignored/not needed\r\n const options = Buffer.isBuffer(content) ? undefined : 'utf8';\r\n this.sftpClient.writeFile(absolutePath, content, options, (err: Error | null) => {\r\n if (err) {\r\n reject(new Error(`Failed to write file ${path}: ${err.message}`));\r\n } else {\r\n resolve();\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Fallback: base64 via exec (robust against special chars), chunked\r\n const inputBuffer = Buffer.isBuffer(content) ? content : Buffer.from(content, 'utf8');\r\n const base64Content = inputBuffer.toString('base64');\r\n const CHUNK_SIZE = 32000;\r\n\r\n // Truncate file first\r\n let result = await this.executeCommand(`: > \"${absolutePath}\"`);\r\n if (result.exitCode !== 0) {\r\n throw new Error(`Failed to initialize file ${path}: ${result.stderr || 'unknown error'}`);\r\n }\r\n\r\n for (let i = 0; i < base64Content.length; i += CHUNK_SIZE) {\r\n const chunk = base64Content.slice(i, i + CHUNK_SIZE);\r\n result = await this.executeCommand(`echo \"${chunk}\" | base64 -d >> \"${absolutePath}\"`);\r\n if (result.exitCode !== 0) {\r\n throw new Error(`Failed to write file chunk for ${path}: ${result.stderr || 'unknown error'}`);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * List directory contents\r\n */\r\n async listDirectory(path: string): Promise<DirectoryEntry[]> {\r\n const absolutePath = this.resolveAbsolutePath(path);\r\n\r\n // Prefer SFTP when available\r\n if (this.sftpClient) {\r\n return new Promise((resolve, reject) => {\r\n this.sftpClient.readdir(absolutePath, (err: Error | null, list: any[]) => {\r\n if (err) {\r\n reject(new Error(`Failed to list directory ${path}: ${err.message}`));\r\n } else {\r\n const entries: DirectoryEntry[] = list.map(item => ({\r\n name: item.filename,\r\n type: item.attrs.isDirectory() ? 'directory' as const : 'file' as const,\r\n size: item.attrs.size,\r\n permissions: item.attrs.mode?.toString(8),\r\n }));\r\n resolve(entries);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Fallback: parse ls -la output\r\n const result = await this.executeCommand(`ls -la \"${absolutePath}\"`);\r\n if (result.exitCode !== 0) {\r\n throw new Error(`Failed to list directory ${path}: ${result.stderr || 'unknown error'}`);\r\n }\r\n return this.parseDirectoryListing(result.stdout);\r\n }\r\n\r\n /**\r\n * Search for files matching a pattern\r\n */\r\n async searchFiles(pattern: string, directory: string): Promise<SearchResult[]> {\r\n const absolutePath = this.resolveAbsolutePath(directory);\r\n const escapedPattern = pattern.replace(/'/g, \"'\\\\''\");\r\n const command = `grep -rn '${escapedPattern}' \"${absolutePath}\" 2>/dev/null || true`;\r\n\r\n const result = await this.executeCommand(command);\r\n\r\n const results: SearchResult[] = [];\r\n const lines = result.stdout.split('\\n').filter(line => line.trim());\r\n\r\n for (const line of lines) {\r\n const match = line.match(/^(.+?):(\\d+):(.+)$/);\r\n if (match) {\r\n results.push({\r\n file: match[1],\r\n line: parseInt(match[2], 10),\r\n content: match[3],\r\n });\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Get the current working directory\r\n */\r\n async getCurrentWorkingDirectory(): Promise<string> {\r\n const result = await this.executeCommand('pwd');\r\n return result.stdout.trim();\r\n }\r\n\r\n /**\r\n * Get the shell type\r\n */\r\n async getShellType(): Promise<string> {\r\n return this.shellType;\r\n }\r\n\r\n /**\r\n * Get the operating system type\r\n */\r\n async getOSType(): Promise<OSType> {\r\n return this.osType;\r\n }\r\n\r\n /**\r\n * Get breadcrumb information for the UI\r\n */\r\n getBreadcrumbs(): BreadcrumbInfo[] {\r\n if (!this.config) {\r\n return [];\r\n }\r\n\r\n return [\r\n {\r\n label: 'ssh',\r\n color: 'cyan',\r\n },\r\n {\r\n label: `${this.config.username}@${this.config.host}`,\r\n color: 'cyan',\r\n },\r\n ];\r\n }\r\n\r\n // Private helper methods\r\n\r\n /**\r\n * Parse SSH command to extract connection details\r\n */\r\n private parseSSHCommand(command: string): SSHConfig {\r\n const parts = this.tokenizeSSHCommand(command);\r\n let host = '';\r\n let port = 22;\r\n let username = '';\r\n let identityFilePath: string | undefined;\r\n\r\n // SSH options that consume the next token as a value.\r\n // We skip those values so they are not mistaken as the host.\r\n const optionsWithValue = new Set([\r\n '-b', '-c', '-D', '-E', '-F', '-I', '-J', '-L', '-l', '-m', '-O', '-o', '-p', '-Q', '-R', '-S', '-W', '-w'\r\n ]);\r\n\r\n // Parse command line arguments\r\n for (let i = 1; i < parts.length; i++) {\r\n const part = parts[i];\r\n\r\n if (part === '--') {\r\n // End of options; next token is the host\r\n if (!host && i + 1 < parts.length) {\r\n host = parts[i + 1];\r\n }\r\n break;\r\n }\r\n\r\n if (part === '-p' && i + 1 < parts.length) {\r\n port = this.parsePort(parts[i + 1], port);\r\n i++;\r\n } else if (part.startsWith('-p') && part.length > 2) {\r\n port = this.parsePort(part.slice(2), port);\r\n } else if (part === '-l' && i + 1 < parts.length) {\r\n username = parts[i + 1];\r\n i++;\r\n } else if (part.startsWith('-l') && part.length > 2) {\r\n username = part.slice(2);\r\n } else if (part === '-i' && i + 1 < parts.length) {\r\n identityFilePath = parts[i + 1];\r\n i++;\r\n } else if (part.startsWith('-i') && part.length > 2) {\r\n identityFilePath = part.slice(2);\r\n } else if (part === '-o' && i + 1 < parts.length) {\r\n // Support both \"-o Key=Value\" and \"-o Key Value\" styles.\r\n const optionToken = parts[i + 1];\r\n if (optionToken.includes('=')) {\r\n this.applySSHOption(\r\n optionToken,\r\n (value: number) => { port = value; },\r\n (value: string) => { username = value; },\r\n (value: string) => { identityFilePath = value; },\r\n port\r\n );\r\n i++;\r\n } else if (i + 2 < parts.length) {\r\n this.applySSHOption(\r\n `${optionToken}=${parts[i + 2]}`,\r\n (value: number) => { port = value; },\r\n (value: string) => { username = value; },\r\n (value: string) => { identityFilePath = value; },\r\n port\r\n );\r\n i += 2;\r\n } else {\r\n i++;\r\n }\r\n } else if (part.startsWith('-o') && part.length > 2) {\r\n this.applySSHOption(part.slice(2), (value: number) => { port = value; }, (value: string) => { username = value; }, (value: string) => { identityFilePath = value; }, port);\r\n } else if (part.startsWith('-') && part !== '-p') {\r\n // Skip flags and their value, if any\r\n if (optionsWithValue.has(part) && i + 1 < parts.length) {\r\n i++;\r\n }\r\n continue;\r\n } else if (!host) {\r\n // This should be the host (possibly with username)\r\n if (part.includes('@')) {\r\n const atIndex = part.indexOf('@');\r\n const user = part.slice(0, atIndex);\r\n const hostname = part.slice(atIndex + 1);\r\n if (user) {\r\n username = user;\r\n }\r\n host = hostname;\r\n } else {\r\n host = part;\r\n }\r\n }\r\n }\r\n\r\n // Default username to current user if not specified\r\n if (!username) {\r\n username = process.env.USER || process.env.USERNAME || 'user';\r\n }\r\n\r\n if (!host) {\r\n throw new Error('Could not parse SSH host from command');\r\n }\r\n\r\n const parsedConfig: SSHConfig = {\r\n host,\r\n port,\r\n username,\r\n };\r\n\r\n if (identityFilePath) {\r\n parsedConfig.privateKey = this.loadIdentityFile(identityFilePath);\r\n }\r\n\r\n return parsedConfig;\r\n }\r\n\r\n /**\r\n * Establish SSH connection\r\n */\r\n /**\r\n * Establish SSH connection.\r\n * Handles authentication retries (agent -> keys -> password).\r\n * For nested connections, uses streamFactory to get a fresh stream for each attempt.\r\n */\r\n private async establishConnection(config: SSHConfig, stream?: any, streamFactory?: () => Promise<any>): Promise<void> {\r\n let promptedForPassword = false;\r\n let firstError: unknown;\r\n\r\n quickLog(`[SSH Auth] Starting auth for ${config.username}@${config.host}:${config.port}\\n`);\r\n quickLog(`[SSH Auth] Has privateKey: ${!!config.privateKey}, Has password: ${!!config.password}\\n`);\r\n\r\n try {\r\n quickLog(`[SSH Auth] Attempt 1: agent/none (tryKeyboard=false)\\n`);\r\n // Get fresh stream if factory provided\r\n const currentStream = streamFactory ? await streamFactory() : stream;\r\n\r\n await this.establishConnectionOnce(config, currentStream, false, () => {\r\n promptedForPassword = true;\r\n });\r\n quickLog(`[SSH Auth] Attempt 1 succeeded (agent or none auth)\\n`);\r\n return;\r\n } catch (error) {\r\n const errMsg = error instanceof Error ? error.message : String(error);\r\n quickLog(`[SSH Auth] Attempt 1 failed: ${errMsg}, promptedForPassword=${promptedForPassword}\\n`);\r\n firstError = error;\r\n // Stop early for non-auth failures or if user was already prompted.\r\n if (!this.isAuthenticationFailure(error) || promptedForPassword) {\r\n quickLog(`[SSH Auth] Stopping early: isAuthFailure=${this.isAuthenticationFailure(error)}, prompted=${promptedForPassword}\\n`);\r\n throw error;\r\n }\r\n }\r\n\r\n // If no explicit key was provided, try default identity files before prompting for password.\r\n // Skip this for nested sessions to avoid using local keys where remote ones are expected.\r\n if (!config.privateKey && !config.isNested) {\r\n const defaultKeys = this.loadDefaultIdentityFiles(config.host);\r\n quickLog(`[SSH Auth] Found ${defaultKeys.length} default identity file(s)\\n`);\r\n for (let ki = 0; ki < defaultKeys.length; ki++) {\r\n const key = defaultKeys[ki];\r\n try {\r\n quickLog(`[SSH Auth] Trying key file ${ki + 1}/${defaultKeys.length} (${key.length} bytes)\\n`);\r\n // Get fresh stream if factory provided\r\n const keyStream = streamFactory ? await streamFactory() : stream;\r\n\r\n const keyConfig: SSHConfig = {\r\n ...config,\r\n privateKey: key,\r\n password: undefined,\r\n };\r\n await this.establishConnectionOnce(keyConfig, keyStream, false, () => {\r\n promptedForPassword = true;\r\n });\r\n quickLog(`[SSH Auth] Key file ${ki + 1} succeeded!\\n`);\r\n config.privateKey = key;\r\n return;\r\n } catch (keyError) {\r\n const keyErrMsg = keyError instanceof Error ? keyError.message : String(keyError);\r\n quickLog(`[SSH Auth] Key file ${ki + 1} failed: ${keyErrMsg}\\n`);\r\n if (promptedForPassword) {\r\n // User already provided a secret once for this connection attempt.\r\n throw keyError;\r\n }\r\n // Continue trying other keys for expected auth/key-format failures.\r\n if (this.isAuthenticationFailure(keyError) || this.isKeyParseFailure(keyError)) {\r\n continue;\r\n }\r\n throw keyError;\r\n }\r\n }\r\n } else {\r\n quickLog(`[SSH Auth] Explicit key provided, skipping default key search\\n`);\r\n }\r\n\r\n // Password retry (only if callback exists).\r\n quickLog(`[SSH Auth] All key-based auth methods exhausted, falling back to password\\n`);\r\n if (!this.onPasswordRequest) {\r\n throw (firstError instanceof Error ? firstError : new Error('SSH authentication failed'));\r\n }\r\n\r\n const password = await this.requestPassword(config);\r\n config.password = password;\r\n config.privateKey = undefined;\r\n\r\n // Get fresh stream for password attempt\r\n const passwordStream = streamFactory ? await streamFactory() : stream;\r\n\r\n await this.establishConnectionOnce(config, passwordStream, true, () => {\r\n promptedForPassword = true;\r\n });\r\n }\r\n\r\n /**\r\n * Single SSH connection attempt.\r\n * Password retry logic is handled by establishConnection().\r\n * @param enableKeyboard - Whether to enable keyboard-interactive auth.\r\n * Set to false for key-based attempts so the server doesn't prompt for password prematurely.\r\n * Set to true only for the final password-retry attempt.\r\n */\r\n private async establishConnectionOnce(config: SSHConfig, stream: any | undefined, enableKeyboard: boolean, onPasswordPrompt: () => void): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const client = new Client();\r\n this._client = client;\r\n let settled = false;\r\n\r\n const settleResolve = () => {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n this._isConnected = true;\r\n resolve();\r\n };\r\n\r\n const settleReject = (error: Error) => {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n this._isConnected = false;\r\n this._client = null;\r\n try {\r\n client.end();\r\n } catch {\r\n // Ignore cleanup errors\r\n }\r\n reject(error);\r\n };\r\n\r\n client.on('ready', () => {\r\n settleResolve();\r\n });\r\n\r\n client.on('error', (err) => {\r\n settleReject(new Error(`ssh connection failed: ${err.message}`));\r\n });\r\n\r\n client.on('keyboard-interactive', async (_name, _instructions, _lang, prompts, finish) => {\r\n if (!prompts || prompts.length === 0 || !this.onPasswordRequest) {\r\n finish([]);\r\n return;\r\n }\r\n\r\n try {\r\n const responses: string[] = [];\r\n for (const prompt of prompts) {\r\n onPasswordPrompt();\r\n const message = this.buildPasswordPromptMessage(config, prompt.prompt);\r\n const response = await this.requestPassword(config, message);\r\n responses.push(response);\r\n if (!prompt.echo) {\r\n config.password = response;\r\n }\r\n }\r\n finish(responses);\r\n } catch (error) {\r\n finish([]);\r\n settleReject(error instanceof Error ? error : new Error('Password input cancelled'));\r\n }\r\n });\r\n\r\n // Listen for unexpected disconnections\r\n client.on('close', () => {\r\n if (this._isConnected) {\r\n // Unexpected disconnect (not initiated by us calling disconnect())\r\n this._isConnected = false;\r\n this._client = null;\r\n if (this.onDisconnectCallback) {\r\n this.onDisconnectCallback('Connection closed by server');\r\n }\r\n }\r\n });\r\n\r\n client.on('end', () => {\r\n if (this._isConnected) {\r\n // Unexpected disconnect\r\n this._isConnected = false;\r\n this._client = null;\r\n if (this.onDisconnectCallback) {\r\n this.onDisconnectCallback('Connection ended');\r\n }\r\n }\r\n });\r\n\r\n client.connect(this.buildConnectConfig(config, stream, enableKeyboard));\r\n });\r\n }\r\n\r\n /**\r\n * Build ssh2 connection config.\r\n * @param enableKeyboard - When true, enables keyboard-interactive auth.\r\n * This should only be true for the final password-retry attempt;\r\n * otherwise the server's keyboard-interactive challenge fires before\r\n * key-based auth methods (agent, key files) have been tried.\r\n */\r\n private buildConnectConfig(config: SSHConfig, stream?: any, enableKeyboard: boolean = false): ConnectConfig {\r\n const connectConfig: ConnectConfig = {\r\n host: config.host,\r\n port: config.port,\r\n username: config.username,\r\n tryKeyboard: enableKeyboard,\r\n };\r\n\r\n if (stream) {\r\n connectConfig.sock = stream;\r\n }\r\n\r\n // Skip local SSH agent for nested sessions\r\n if (!config.isNested) {\r\n if (process.env.SSH_AUTH_SOCK) {\r\n connectConfig.agent = process.env.SSH_AUTH_SOCK;\r\n quickLog(`[SSH Auth] Using SSH_AUTH_SOCK agent: ${process.env.SSH_AUTH_SOCK}\\n`);\r\n } else if (os.platform() === 'win32') {\r\n // Windows OpenSSH agent uses a named pipe, not SSH_AUTH_SOCK.\r\n // The ssh2 library supports this via the agent option.\r\n // Pipe path: \\\\.\\pipe\\openssh-ssh-agent\r\n const winPipe = ['', '', '.', 'pipe', 'openssh-ssh-agent'].join('\\\\');\r\n quickLog(`[SSH Auth] Windows detected, checking agent pipe: ${winPipe}\\n`);\r\n try {\r\n // Did not stat the pipe as it returns EBUSY on Windows sometimes\r\n // Just try to use it\r\n connectConfig.agent = winPipe;\r\n quickLog(`[SSH Auth] Using Windows agent pipe (blind trust)\\n`);\r\n } catch (e: any) {\r\n // Named pipe not available (agent service not running).\r\n // Fall through to key file / password auth.\r\n quickLog(`[SSH Auth] Windows agent pipe error: ${e.message}\\n`);\r\n }\r\n } else {\r\n quickLog(`[SSH Auth] No SSH agent available (no SSH_AUTH_SOCK, not Windows)\\n`);\r\n }\r\n }\r\n\r\n if (config.password) {\r\n connectConfig.password = config.password;\r\n }\r\n\r\n if (config.privateKey) {\r\n connectConfig.privateKey = config.privateKey;\r\n if (config.passphrase) {\r\n connectConfig.passphrase = config.passphrase;\r\n }\r\n }\r\n\r\n // Add keepalive settings to prevent connection drops by NATs/Firewalls (e.g. GCP)\r\n connectConfig.keepaliveInterval = 10000; // 10 seconds\r\n connectConfig.keepaliveCountMax = 3;\r\n\r\n return connectConfig;\r\n }\r\n\r\n private async requestPassword(config: SSHConfig, promptMessage?: string): Promise<string> {\r\n if (!this.onPasswordRequest) {\r\n throw new Error('Password authentication required but no password prompt handler is configured');\r\n }\r\n\r\n try {\r\n return await this.onPasswordRequest(\r\n promptMessage || `Password for ${config.username}@${config.host}:`\r\n );\r\n } catch {\r\n throw new Error('Password input cancelled');\r\n }\r\n }\r\n\r\n private buildPasswordPromptMessage(config: SSHConfig, rawPrompt?: string): string {\r\n const trimmedPrompt = rawPrompt?.trim();\r\n if (trimmedPrompt) {\r\n return trimmedPrompt;\r\n }\r\n return `Password for ${config.username}@${config.host}:`;\r\n }\r\n\r\n private isAuthenticationFailure(error: unknown): boolean {\r\n const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();\r\n return (\r\n message.includes('all configured authentication methods failed') ||\r\n message.includes('authentication failed') ||\r\n message.includes('permission denied')\r\n );\r\n }\r\n\r\n private isKeyParseFailure(error: unknown): boolean {\r\n const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();\r\n return (\r\n message.includes('cannot parse privatekey') ||\r\n message.includes('bad passphrase') ||\r\n message.includes('no passphrase given') ||\r\n message.includes('invalid private key')\r\n );\r\n }\r\n\r\n private parsePort(value: string, fallbackPort: number): number {\r\n const parsed = Number.parseInt(value, 10);\r\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallbackPort;\r\n }\r\n\r\n private applySSHOption(\r\n option: string,\r\n setPort: (value: number) => void,\r\n setUsername: (value: string) => void,\r\n setIdentityFile: (value: string) => void,\r\n fallbackPort: number\r\n ): void {\r\n const trimmed = option.trim();\r\n if (!trimmed) {\r\n return;\r\n }\r\n\r\n const equalsIndex = trimmed.indexOf('=');\r\n const key = (equalsIndex >= 0 ? trimmed.slice(0, equalsIndex) : trimmed).trim().toLowerCase();\r\n const value = (equalsIndex >= 0 ? trimmed.slice(equalsIndex + 1) : '').trim();\r\n\r\n if (!value) {\r\n return;\r\n }\r\n\r\n if (key === 'identityfile') {\r\n setIdentityFile(value);\r\n return;\r\n }\r\n\r\n if (key === 'user') {\r\n setUsername(value);\r\n return;\r\n }\r\n\r\n if (key === 'port') {\r\n setPort(this.parsePort(value, fallbackPort));\r\n }\r\n }\r\n\r\n private tokenizeSSHCommand(command: string): string[] {\r\n const tokens: string[] = [];\r\n let current = '';\r\n let quote: '\"' | '\\'' | null = null;\r\n let escaped = false;\r\n\r\n for (const char of command.trim()) {\r\n if (escaped) {\r\n current += char;\r\n escaped = false;\r\n continue;\r\n }\r\n\r\n if (char === '\\\\' && quote !== '\\'') {\r\n escaped = true;\r\n continue;\r\n }\r\n\r\n if (quote) {\r\n if (char === quote) {\r\n quote = null;\r\n } else {\r\n current += char;\r\n }\r\n continue;\r\n }\r\n\r\n if (char === '\"' || char === '\\'') {\r\n quote = char as '\"' | '\\'';\r\n continue;\r\n }\r\n\r\n if (/\\s/.test(char)) {\r\n if (current) {\r\n tokens.push(current);\r\n current = '';\r\n }\r\n continue;\r\n }\r\n\r\n current += char;\r\n }\r\n\r\n if (current) {\r\n tokens.push(current);\r\n }\r\n\r\n return tokens;\r\n }\r\n\r\n private loadIdentityFile(identityPath: string): Buffer {\r\n const resolvedPath = this.resolveIdentityPath(identityPath);\r\n\r\n try {\r\n return fs.readFileSync(resolvedPath);\r\n } catch (error: any) {\r\n if (error?.code === 'ENOENT') {\r\n throw new Error(`SSH identity file not found: ${resolvedPath}`);\r\n }\r\n throw new Error(`Failed to read SSH identity file \"${resolvedPath}\": ${error?.message || 'Unknown error'}`);\r\n }\r\n }\r\n\r\n private resolveIdentityPath(identityPath: string): string {\r\n const trimmed = identityPath.trim();\r\n if (!trimmed) {\r\n return trimmed;\r\n }\r\n\r\n if (trimmed.startsWith('~')) {\r\n const homeDir = os.homedir();\r\n return path.resolve(homeDir, trimmed.slice(1));\r\n }\r\n\r\n return path.isAbsolute(trimmed) ? trimmed : path.resolve(process.cwd(), trimmed);\r\n }\r\n\r\n private loadDefaultIdentityFiles(host?: string): Buffer[] {\r\n const homeDir = os.homedir();\r\n const candidatePaths = [\r\n path.join(homeDir, '.ssh', 'id_ed25519'),\r\n path.join(homeDir, '.ssh', 'id_rsa'),\r\n path.join(homeDir, '.ssh', 'id_ecdsa'),\r\n path.join(homeDir, '.ssh', 'id_dsa'),\r\n ];\r\n\r\n // Add keys from ~/.ssh/config if host is provided\r\n if (host) {\r\n const configKeys = this.getIdentityFilesFromConfig(host);\r\n quickLog(`[SSH Config] Found ${configKeys.length} keys in config for host ${host}\\n`);\r\n for (const keyPath of configKeys) {\r\n // Resolving relative paths in config (relative to ~/.ssh)\r\n let resolvedKeyPath = keyPath;\r\n if (!path.isAbsolute(keyPath)) {\r\n if (keyPath.startsWith('~')) {\r\n resolvedKeyPath = keyPath.replace(/^~/, homeDir);\r\n } else {\r\n resolvedKeyPath = path.join(homeDir, '.ssh', keyPath);\r\n }\r\n }\r\n // Avoid duplicates if user config points to standard keys\r\n if (!candidatePaths.includes(resolvedKeyPath)) {\r\n candidatePaths.unshift(resolvedKeyPath); // Priority to config keys\r\n }\r\n }\r\n }\r\n\r\n const keys: Buffer[] = [];\r\n for (const candidate of candidatePaths) {\r\n try {\r\n if (fs.existsSync(candidate)) {\r\n quickLog(`[SSH Auth] Loading key from: ${candidate}\\n`);\r\n keys.push(fs.readFileSync(candidate));\r\n }\r\n } catch {\r\n // Ignore unreadable key files and keep trying.\r\n }\r\n }\r\n return keys;\r\n }\r\n\r\n /**\r\n * Parse ~/.ssh/config to find IdentityFile entries for the given host.\r\n * Supports standard SSH config patterns including wildcards (*, ?) and quoted paths.\r\n */\r\n private getIdentityFilesFromConfig(targetHost: string): string[] {\r\n const homeDir = os.homedir();\r\n const configPath = path.join(homeDir, '.ssh', 'config');\r\n const identityFiles: string[] = [];\r\n\r\n if (!fs.existsSync(configPath)) {\r\n return identityFiles;\r\n }\r\n\r\n try {\r\n const content = fs.readFileSync(configPath, 'utf8');\r\n const lines = content.split('\\n');\r\n let inMatchingHost = false;\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (!trimmed || trimmed.startsWith('#')) continue;\r\n\r\n // Split by whitespace to get key and arguments\r\n const parts = trimmed.split(/\\s+/);\r\n const key = parts[0].toLowerCase();\r\n\r\n if (key === 'host') {\r\n // Check if this Host block matches our target\r\n // Patterns can be separated by whitespace\r\n const patterns = parts.slice(1);\r\n inMatchingHost = patterns.some(pattern => {\r\n // Convert SSH glob pattern to regex\r\n try {\r\n const regex = this.convertGlobToRegex(pattern);\r\n return regex.test(targetHost);\r\n } catch {\r\n return false;\r\n }\r\n });\r\n } else if (inMatchingHost && key === 'identityfile') {\r\n // Found an IdentityFile for a matching host.\r\n // Extract the value robustly (handling potential quotes and spaces)\r\n // Find where the key ends and value begins in the original line\r\n const keyMatch = trimmed.match(/^\\S+/);\r\n if (keyMatch) {\r\n let fileValue = trimmed.substring(keyMatch[0].length).trim();\r\n\r\n // Remove surrounding quotes if present\r\n if ((fileValue.startsWith('\"') && fileValue.endsWith('\"')) ||\r\n (fileValue.startsWith(\"'\") && fileValue.endsWith(\"'\"))) {\r\n fileValue = fileValue.slice(1, -1);\r\n }\r\n\r\n if (fileValue) {\r\n identityFiles.push(fileValue);\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n quickLog(`[SSH Config] Failed to parse config file: ${e}\\n`);\r\n }\r\n\r\n return identityFiles;\r\n }\r\n\r\n /**\r\n * Convert standard SSH config glob pattern to RegExp.\r\n * Supports * (wildcard) and ? (single char).\r\n */\r\n private convertGlobToRegex(pattern: string): RegExp {\r\n // Escape special regex characters\r\n const escaped = pattern.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&');\r\n // Convert * to .* and ? to .\r\n const regexString = '^' + escaped.replace(/\\*/g, '.*').replace(/\\?/g, '.') + '$';\r\n return new RegExp(regexString);\r\n }\r\n\r\n /**\r\n * Initialize SFTP session\r\n */\r\n private async initializeSFTP(): Promise<void> {\r\n if (!this._client) {\r\n throw new Error('SSH client not connected');\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n this._client!.sftp((err, sftp) => {\r\n if (err) {\r\n reject(err);\r\n } else {\r\n this.sftpClient = sftp;\r\n resolve();\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Detect the shell type on the remote system\r\n */\r\n private async detectShellType(): Promise<string> {\r\n try {\r\n const result = await this.executeCommand('echo $SHELL');\r\n const shellPath = result.stdout.trim();\r\n\r\n if (shellPath.includes('bash')) return 'bash';\r\n if (shellPath.includes('zsh')) return 'zsh';\r\n if (shellPath.includes('fish')) return 'fish';\r\n\r\n return 'bash'; // Default to bash\r\n } catch {\r\n return 'bash';\r\n }\r\n }\r\n\r\n /**\r\n * Detect the operating system type\r\n */\r\n private async detectOSType(): Promise<OSType> {\r\n try {\r\n const result = await this.executeCommand('uname -s');\r\n const osName = result.stdout.trim().toLowerCase();\r\n\r\n if (osName.includes('darwin')) return 'macos';\r\n if (osName.includes('linux')) return 'linux';\r\n\r\n return 'linux'; // Default to linux\r\n } catch {\r\n return 'linux';\r\n }\r\n }\r\n\r\n /**\r\n * Inject shell integration script\r\n */\r\n private async injectShellIntegration(): Promise<void> {\r\n try {\r\n const script = this.getShellIntegrationScript();\r\n await this.executeCommand(script);\r\n } catch (error) {\r\n // Shell integration is optional, don't fail if it doesn't work\r\n console.warn('Failed to inject shell integration:', error);\r\n }\r\n }\r\n\r\n /**\r\n * Get shell integration script based on shell type\r\n */\r\n private getShellIntegrationScript(): string {\r\n const sessionId = this.sessionId;\r\n\r\n if (this.shellType === 'bash') {\r\n return `\r\nexport CENTAURUS_SUBSHELL=1\r\nexport CENTAURUS_SESSION_ID=\"${sessionId}\"\r\n_centaurus_pwd_hook() {\r\n echo \"__CENTAURUS_PWD_${sessionId}__:$(pwd)\"\r\n}\r\nexport PROMPT_COMMAND=\"_centaurus_pwd_hook; \\${PROMPT_COMMAND}\"\r\n `.trim();\r\n } else if (this.shellType === 'zsh') {\r\n return `\r\nexport CENTAURUS_SUBSHELL=1\r\nexport CENTAURUS_SESSION_ID=\"${sessionId}\"\r\n_centaurus_pwd_hook() {\r\n echo \"__CENTAURUS_PWD_${sessionId}__:$(pwd)\"\r\n}\r\nprecmd_functions+=(_centaurus_pwd_hook)\r\n `.trim();\r\n } else if (this.shellType === 'fish') {\r\n return `\r\nset -x CENTAURUS_SUBSHELL 1\r\nset -x CENTAURUS_SESSION_ID \"${sessionId}\"\r\nfunction _centaurus_pwd_hook --on-event fish_prompt\r\n echo \"__CENTAURUS_PWD_${sessionId}__:\"(pwd)\r\nend\r\n `.trim();\r\n }\r\n\r\n // Default POSIX-compatible script\r\n return `\r\nexport CENTAURUS_SUBSHELL=1\r\nexport CENTAURUS_SESSION_ID=\"${sessionId}\"\r\n `.trim();\r\n }\r\n\r\n /**\r\n * Resolve a path to an absolute path\r\n */\r\n private resolveAbsolutePath(path: string): string {\r\n if (path.startsWith('/')) {\r\n return path;\r\n }\r\n\r\n if (path.startsWith('~')) {\r\n return path;\r\n }\r\n\r\n return `${this.currentWorkingDirectory}/${path}`;\r\n }\r\n\r\n /**\r\n * Parse directory listing output (ls -la)\r\n */\r\n private parseDirectoryListing(output: string): DirectoryEntry[] {\r\n const entries: DirectoryEntry[] = [];\r\n const lines = output.split('\\n').filter(line => line.trim());\r\n\r\n for (const line of lines) {\r\n // Skip total line and . .. entries\r\n if (line.startsWith('total') || line.endsWith(' .') || line.endsWith(' ..')) continue;\r\n\r\n const match = line.match(/^([drwx-]+)\\s+\\d+\\s+\\S+\\s+\\S+\\s+(\\d+)\\s+\\S+\\s+\\S+\\s+\\S+\\s+(.+)$/);\r\n if (match) {\r\n const permissions = match[1];\r\n const size = parseInt(match[2], 10);\r\n const name = match[3];\r\n entries.push({\r\n name,\r\n type: permissions.startsWith('d') ? 'directory' : 'file',\r\n size,\r\n permissions,\r\n });\r\n }\r\n }\r\n\r\n return entries;\r\n }\r\n\r\n /**\r\n * Create a new instance of this handler\r\n */\r\n createNew(): SubshellHandler {\r\n const newHandler = new SSHHandler();\r\n if (this.onPasswordRequest) {\r\n newHandler.setPasswordRequestCallback(this.onPasswordRequest);\r\n }\r\n if (this.onDisconnectCallback) {\r\n newHandler.setDisconnectCallback(this.onDisconnectCallback);\r\n }\r\n return newHandler;\r\n }\r\n}\r\n"],"mappings":"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","names":["path"]}
|