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,97 +1,184 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* a system message describing the environment before the last user message.
|
|
17
|
-
* This ensures the AI is aware of where commands will execute.
|
|
18
|
-
*
|
|
19
|
-
* @param messages - The conversation history
|
|
20
|
-
* @param context - The current subshell context
|
|
21
|
-
* @returns Modified message array with context injected (if applicable)
|
|
22
|
-
*/
|
|
23
|
-
injectSubshellContext(messages, context) {
|
|
24
|
-
// Don't inject context for local environment
|
|
25
|
-
if (context.type === 'local') {
|
|
26
|
-
return messages;
|
|
27
|
-
}
|
|
28
|
-
// Build context message
|
|
29
|
-
const contextMessage = {
|
|
30
|
-
role: 'system',
|
|
31
|
-
content: this.buildContextMessage(context),
|
|
32
|
-
};
|
|
33
|
-
// Insert context message before the last user message
|
|
34
|
-
// This ensures the AI sees the context right before processing the request
|
|
35
|
-
const result = [...messages];
|
|
36
|
-
// Find the last user message index
|
|
37
|
-
let lastUserMessageIndex = -1;
|
|
38
|
-
for (let i = result.length - 1; i >= 0; i--) {
|
|
39
|
-
if (result[i].role === 'user') {
|
|
40
|
-
lastUserMessageIndex = i;
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// If we found a user message, insert context before it
|
|
45
|
-
// Otherwise, append to the end
|
|
46
|
-
if (lastUserMessageIndex >= 0) {
|
|
47
|
-
result.splice(lastUserMessageIndex, 0, contextMessage);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
result.push(contextMessage);
|
|
51
|
-
}
|
|
52
|
-
return result;
|
|
1
|
+
class AIContextInjector {
|
|
2
|
+
/**
|
|
3
|
+
* Inject subshell context into message history
|
|
4
|
+
*
|
|
5
|
+
* If the current context is a subshell (not local), this method inserts
|
|
6
|
+
* a system message describing the environment before the last user message.
|
|
7
|
+
* This ensures the AI is aware of where commands will execute.
|
|
8
|
+
*
|
|
9
|
+
* @param messages - The conversation history
|
|
10
|
+
* @param context - The current subshell context
|
|
11
|
+
* @returns Modified message array with context injected (if applicable)
|
|
12
|
+
*/
|
|
13
|
+
injectSubshellContext(messages, context) {
|
|
14
|
+
if (context.type === "local") {
|
|
15
|
+
return messages;
|
|
53
16
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
* @returns Formatted context message string
|
|
66
|
-
*/
|
|
67
|
-
buildContextMessage(context) {
|
|
68
|
-
const { type, metadata } = context;
|
|
69
|
-
let message = `\n\n## CURRENT EXECUTION ENVIRONMENT\n\n`;
|
|
70
|
-
message += `You are currently operating in a ${type.toUpperCase()} environment.\n\n`;
|
|
71
|
-
message += `**Environment Details:**\n`;
|
|
72
|
-
message += `- Type: ${type}\n`;
|
|
73
|
-
message += `- Working Directory: ${metadata.workingDirectory}\n`;
|
|
74
|
-
message += `- Shell: ${metadata.shell}\n`;
|
|
75
|
-
message += `- OS: ${metadata.os}\n`;
|
|
76
|
-
// Add type-specific details
|
|
77
|
-
if (metadata.hostname) {
|
|
78
|
-
message += `- Hostname: ${metadata.hostname}\n`;
|
|
79
|
-
}
|
|
80
|
-
if (metadata.username) {
|
|
81
|
-
message += `- Username: ${metadata.username}\n`;
|
|
82
|
-
}
|
|
83
|
-
if (metadata.distroName) {
|
|
84
|
-
message += `- Distribution: ${metadata.distroName}\n`;
|
|
85
|
-
}
|
|
86
|
-
if (metadata.containerId) {
|
|
87
|
-
message += `- Container: ${metadata.containerId}\n`;
|
|
88
|
-
}
|
|
89
|
-
if (metadata.port) {
|
|
90
|
-
message += `- Port: ${metadata.port}\n`;
|
|
91
|
-
}
|
|
92
|
-
message += `\n**IMPORTANT:** All commands and file operations you execute will run in this ${type} environment, not on the local machine.\n`;
|
|
93
|
-
message += `When reading files, writing files, executing commands, or performing any operations, they will all happen in the ${type} environment.\n`;
|
|
94
|
-
return message;
|
|
17
|
+
const contextMessage = {
|
|
18
|
+
role: "system",
|
|
19
|
+
content: this.buildContextMessage(context)
|
|
20
|
+
};
|
|
21
|
+
const result = [...messages];
|
|
22
|
+
let lastUserMessageIndex = -1;
|
|
23
|
+
for (let i = result.length - 1; i >= 0; i--) {
|
|
24
|
+
if (result[i].role === "user") {
|
|
25
|
+
lastUserMessageIndex = i;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
95
28
|
}
|
|
29
|
+
if (lastUserMessageIndex >= 0) {
|
|
30
|
+
result.splice(lastUserMessageIndex, 0, contextMessage);
|
|
31
|
+
} else {
|
|
32
|
+
result.push(contextMessage);
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Build context message describing the current subshell environment
|
|
38
|
+
*
|
|
39
|
+
* Creates a formatted message that informs the AI about:
|
|
40
|
+
* - Environment type (SSH, WSL, Docker)
|
|
41
|
+
* - Working directory
|
|
42
|
+
* - Shell type
|
|
43
|
+
* - Operating system
|
|
44
|
+
* - Connection details (hostname, username, etc.)
|
|
45
|
+
*
|
|
46
|
+
* @param context - The current subshell context
|
|
47
|
+
* @returns Formatted context message string
|
|
48
|
+
*/
|
|
49
|
+
buildContextMessage(context) {
|
|
50
|
+
const { type, metadata } = context;
|
|
51
|
+
let message = `
|
|
52
|
+
|
|
53
|
+
## CURRENT EXECUTION ENVIRONMENT
|
|
54
|
+
|
|
55
|
+
`;
|
|
56
|
+
message += `You are currently operating in a ${type.toUpperCase()} environment.
|
|
57
|
+
|
|
58
|
+
`;
|
|
59
|
+
message += `**Environment Details:**
|
|
60
|
+
`;
|
|
61
|
+
message += `- Type: ${type}
|
|
62
|
+
`;
|
|
63
|
+
message += `- Working Directory: ${metadata.workingDirectory}
|
|
64
|
+
`;
|
|
65
|
+
message += `- Shell: ${metadata.shell}
|
|
66
|
+
`;
|
|
67
|
+
message += `- OS: ${metadata.os}
|
|
68
|
+
`;
|
|
69
|
+
if (metadata.hostname) {
|
|
70
|
+
message += `- Hostname: ${metadata.hostname}
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
if (metadata.username) {
|
|
74
|
+
message += `- Username: ${metadata.username}
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
77
|
+
if (metadata.distroName) {
|
|
78
|
+
message += `- Distribution: ${metadata.distroName}
|
|
79
|
+
`;
|
|
80
|
+
}
|
|
81
|
+
if (metadata.containerId) {
|
|
82
|
+
message += `- Container: ${metadata.containerId}
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
85
|
+
if (metadata.port) {
|
|
86
|
+
message += `- Port: ${metadata.port}
|
|
87
|
+
`;
|
|
88
|
+
}
|
|
89
|
+
message += `
|
|
90
|
+
**IMPORTANT:** All commands and file operations you execute will run in this ${type} environment, not on the local machine.
|
|
91
|
+
`;
|
|
92
|
+
message += `When reading files, writing files, executing commands, or performing any operations, they will all happen in the ${type} environment.
|
|
93
|
+
`;
|
|
94
|
+
return message;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Inject MCP auto-provisioning context into message history.
|
|
98
|
+
*
|
|
99
|
+
* Adds a system message informing the AI that it has the ability to
|
|
100
|
+
* dynamically discover and add MCP servers at runtime, enabling it to
|
|
101
|
+
* interact with external services (browsers, APIs, databases, etc.)
|
|
102
|
+
* even when no MCP servers are currently configured.
|
|
103
|
+
*
|
|
104
|
+
* @param messages - The conversation history
|
|
105
|
+
* @param connectedMcpServers - Names of currently connected MCP servers (for awareness)
|
|
106
|
+
* @returns Modified message array with MCP context injected
|
|
107
|
+
*/
|
|
108
|
+
injectMCPContext(messages, connectedMcpServers) {
|
|
109
|
+
const contextMessage = {
|
|
110
|
+
role: "system",
|
|
111
|
+
content: this.buildMCPContextMessage(connectedMcpServers)
|
|
112
|
+
};
|
|
113
|
+
const result = [...messages];
|
|
114
|
+
let lastUserMessageIndex = -1;
|
|
115
|
+
for (let i = result.length - 1; i >= 0; i--) {
|
|
116
|
+
if (result[i].role === "user") {
|
|
117
|
+
lastUserMessageIndex = i;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (lastUserMessageIndex >= 0) {
|
|
122
|
+
result.splice(lastUserMessageIndex, 0, contextMessage);
|
|
123
|
+
} else {
|
|
124
|
+
result.push(contextMessage);
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Build the MCP auto-provisioning context message.
|
|
130
|
+
*/
|
|
131
|
+
buildMCPContextMessage(connectedServers) {
|
|
132
|
+
let message = `
|
|
133
|
+
## MCP AUTO-PROVISIONING
|
|
134
|
+
|
|
135
|
+
`;
|
|
136
|
+
message += `You have the ability to dynamically add MCP (Model Context Protocol) servers at runtime using the \`add_mcp\` tool. `;
|
|
137
|
+
message += `This means you can interact with ANY external service, application, or environment \u2014 even if no MCP integration is currently configured.
|
|
138
|
+
|
|
139
|
+
`;
|
|
140
|
+
if (connectedServers.length > 0) {
|
|
141
|
+
message += `**Currently connected MCP servers:** ${connectedServers.join(", ")}
|
|
142
|
+
`;
|
|
143
|
+
message += `Tools from these servers are already available (prefixed with \`mcp_<serverName>_\`).
|
|
144
|
+
|
|
145
|
+
`;
|
|
146
|
+
} else {
|
|
147
|
+
message += `**No MCP servers are currently connected.** You can add them on the fly when needed.
|
|
148
|
+
|
|
149
|
+
`;
|
|
150
|
+
}
|
|
151
|
+
message += `**When the user asks you to interact with an external service or application (e.g., "open Chrome", "send a Slack message", "query the database", "control my smart home"), follow this workflow:**
|
|
152
|
+
|
|
153
|
+
`;
|
|
154
|
+
message += `1. **Check existing tools** \u2014 Look at your available tools to see if an MCP integration already provides what you need.
|
|
155
|
+
`;
|
|
156
|
+
message += `2. **Search the web** \u2014 If no existing tool handles the request, use \`web_search\` to find the right MCP server package. Search for queries like "MCP server for browser control", "MCP server for Slack", etc. Good sources include the MCP server registry, npm, and GitHub.
|
|
157
|
+
`;
|
|
158
|
+
message += `3. **Get the config** \u2014 From the search results or documentation, determine the correct command, args, and any required env vars (API keys, tokens).
|
|
159
|
+
`;
|
|
160
|
+
message += `4. **Add the MCP server** \u2014 Use the \`add_mcp\` tool with the correct config. The tool will connect to the server and register its tools automatically.
|
|
161
|
+
`;
|
|
162
|
+
message += `5. **Use the new tools** \u2014 Once connected, immediately use the newly available \`mcp_<serverName>_<toolName>\` tools to fulfill the user's request.
|
|
163
|
+
|
|
164
|
+
`;
|
|
165
|
+
message += `**Tips for finding MCP servers:**
|
|
166
|
+
`;
|
|
167
|
+
message += `- Search npm for packages starting with \`@modelcontextprotocol/\` or \`mcp-server-\`
|
|
168
|
+
`;
|
|
169
|
+
message += `- Many MCP servers are run via \`npx -y <package-name>\`
|
|
170
|
+
`;
|
|
171
|
+
message += `- Check the package README for required environment variables
|
|
172
|
+
`;
|
|
173
|
+
message += `- If a server needs an API key and the user hasn't provided one, ask them for it before adding the server
|
|
174
|
+
`;
|
|
175
|
+
message += `- If the first server you try doesn't work, search for alternatives and try again
|
|
176
|
+
|
|
177
|
+
`;
|
|
178
|
+
return message;
|
|
179
|
+
}
|
|
96
180
|
}
|
|
181
|
+
export {
|
|
182
|
+
AIContextInjector
|
|
183
|
+
};
|
|
97
184
|
//# sourceMappingURL=ai-context-injector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-context-injector.js","sourceRoot":"","sources":["../../src/services/ai-context-injector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,QAAmB,EAAE,OAAwB;QACjE,6CAA6C;QAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,wBAAwB;QACxB,MAAM,cAAc,GAAY;YAC9B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;SAC3C,CAAC;QAEF,sDAAsD;QACtD,2EAA2E;QAC3E,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE7B,mCAAmC;QACnC,IAAI,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,oBAAoB,GAAG,CAAC,CAAC;gBACzB,MAAM;YACR,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,+BAA+B;QAC/B,IAAI,oBAAoB,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,mBAAmB,CAAC,OAAwB;QAClD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEnC,IAAI,OAAO,GAAG,0CAA0C,CAAC;QACzD,OAAO,IAAI,oCAAoC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC;QACrF,OAAO,IAAI,4BAA4B,CAAC;QACxC,OAAO,IAAI,WAAW,IAAI,IAAI,CAAC;QAC/B,OAAO,IAAI,wBAAwB,QAAQ,CAAC,gBAAgB,IAAI,CAAC;QACjE,OAAO,IAAI,YAAY,QAAQ,CAAC,KAAK,IAAI,CAAC;QAC1C,OAAO,IAAI,SAAS,QAAQ,CAAC,EAAE,IAAI,CAAC;QAEpC,4BAA4B;QAC5B,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,QAAQ,CAAC,QAAQ,IAAI,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,QAAQ,CAAC,QAAQ,IAAI,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,IAAI,mBAAmB,QAAQ,CAAC,UAAU,IAAI,CAAC;QACxD,CAAC;QACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,IAAI,gBAAgB,QAAQ,CAAC,WAAW,IAAI,CAAC;QACtD,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,WAAW,QAAQ,CAAC,IAAI,IAAI,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,kFAAkF,IAAI,2CAA2C,CAAC;QAC7I,OAAO,IAAI,oHAAoH,IAAI,iBAAiB,CAAC;QAErJ,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/services/ai-context-injector.ts"],"sourcesContent":["/**\r\n * AI Context Injector\r\n * \r\n * Injects subshell context into AI message history to make the AI aware\r\n * of the current execution environment (SSH, WSL, Docker, etc.)\r\n */\r\n\r\nimport type { Message } from './ai-service-client.js';\r\nimport type { SubshellContext } from '../context/types.js';\r\n\r\n/**\r\n * AI Context Injector class\r\n * Handles injection of subshell context into message history before AI calls\r\n */\r\nexport class AIContextInjector {\r\n /**\r\n * Inject subshell context into message history\r\n * \r\n * If the current context is a subshell (not local), this method inserts\r\n * a system message describing the environment before the last user message.\r\n * This ensures the AI is aware of where commands will execute.\r\n * \r\n * @param messages - The conversation history\r\n * @param context - The current subshell context\r\n * @returns Modified message array with context injected (if applicable)\r\n */\r\n injectSubshellContext(messages: Message[], context: SubshellContext): Message[] {\r\n // Don't inject context for local environment\r\n if (context.type === 'local') {\r\n return messages;\r\n }\r\n\r\n // Build context message\r\n const contextMessage: Message = {\r\n role: 'system',\r\n content: this.buildContextMessage(context),\r\n };\r\n\r\n // Insert context message before the last user message\r\n // This ensures the AI sees the context right before processing the request\r\n const result = [...messages];\r\n \r\n // Find the last user message index\r\n let lastUserMessageIndex = -1;\r\n for (let i = result.length - 1; i >= 0; i--) {\r\n if (result[i].role === 'user') {\r\n lastUserMessageIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n // If we found a user message, insert context before it\r\n // Otherwise, append to the end\r\n if (lastUserMessageIndex >= 0) {\r\n result.splice(lastUserMessageIndex, 0, contextMessage);\r\n } else {\r\n result.push(contextMessage);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Build context message describing the current subshell environment\r\n * \r\n * Creates a formatted message that informs the AI about:\r\n * - Environment type (SSH, WSL, Docker)\r\n * - Working directory\r\n * - Shell type\r\n * - Operating system\r\n * - Connection details (hostname, username, etc.)\r\n * \r\n * @param context - The current subshell context\r\n * @returns Formatted context message string\r\n */\r\n private buildContextMessage(context: SubshellContext): string {\r\n const { type, metadata } = context;\r\n\r\n let message = `\\n\\n## CURRENT EXECUTION ENVIRONMENT\\n\\n`;\r\n message += `You are currently operating in a ${type.toUpperCase()} environment.\\n\\n`;\r\n message += `**Environment Details:**\\n`;\r\n message += `- Type: ${type}\\n`;\r\n message += `- Working Directory: ${metadata.workingDirectory}\\n`;\r\n message += `- Shell: ${metadata.shell}\\n`;\r\n message += `- OS: ${metadata.os}\\n`;\r\n\r\n // Add type-specific details\r\n if (metadata.hostname) {\r\n message += `- Hostname: ${metadata.hostname}\\n`;\r\n }\r\n if (metadata.username) {\r\n message += `- Username: ${metadata.username}\\n`;\r\n }\r\n if (metadata.distroName) {\r\n message += `- Distribution: ${metadata.distroName}\\n`;\r\n }\r\n if (metadata.containerId) {\r\n message += `- Container: ${metadata.containerId}\\n`;\r\n }\r\n if (metadata.port) {\r\n message += `- Port: ${metadata.port}\\n`;\r\n }\r\n\r\n message += `\\n**IMPORTANT:** All commands and file operations you execute will run in this ${type} environment, not on the local machine.\\n`;\r\n message += `When reading files, writing files, executing commands, or performing any operations, they will all happen in the ${type} environment.\\n`;\r\n\r\n return message;\r\n }\r\n\r\n /**\r\n * Inject MCP auto-provisioning context into message history.\r\n *\r\n * Adds a system message informing the AI that it has the ability to\r\n * dynamically discover and add MCP servers at runtime, enabling it to\r\n * interact with external services (browsers, APIs, databases, etc.)\r\n * even when no MCP servers are currently configured.\r\n *\r\n * @param messages - The conversation history\r\n * @param connectedMcpServers - Names of currently connected MCP servers (for awareness)\r\n * @returns Modified message array with MCP context injected\r\n */\r\n injectMCPContext(messages: Message[], connectedMcpServers: string[]): Message[] {\r\n const contextMessage: Message = {\r\n role: 'system',\r\n content: this.buildMCPContextMessage(connectedMcpServers),\r\n };\r\n\r\n const result = [...messages];\r\n\r\n // Find the last user message index\r\n let lastUserMessageIndex = -1;\r\n for (let i = result.length - 1; i >= 0; i--) {\r\n if (result[i].role === 'user') {\r\n lastUserMessageIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n if (lastUserMessageIndex >= 0) {\r\n result.splice(lastUserMessageIndex, 0, contextMessage);\r\n } else {\r\n result.push(contextMessage);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Build the MCP auto-provisioning context message.\r\n */\r\n private buildMCPContextMessage(connectedServers: string[]): string {\r\n let message = `\\n## MCP AUTO-PROVISIONING\\n\\n`;\r\n message += `You have the ability to dynamically add MCP (Model Context Protocol) servers at runtime using the \\`add_mcp\\` tool. `;\r\n message += `This means you can interact with ANY external service, application, or environment — even if no MCP integration is currently configured.\\n\\n`;\r\n\r\n if (connectedServers.length > 0) {\r\n message += `**Currently connected MCP servers:** ${connectedServers.join(', ')}\\n`;\r\n message += `Tools from these servers are already available (prefixed with \\`mcp_<serverName>_\\`).\\n\\n`;\r\n } else {\r\n message += `**No MCP servers are currently connected.** You can add them on the fly when needed.\\n\\n`;\r\n }\r\n\r\n message += `**When the user asks you to interact with an external service or application (e.g., \"open Chrome\", \"send a Slack message\", \"query the database\", \"control my smart home\"), follow this workflow:**\\n\\n`;\r\n message += `1. **Check existing tools** — Look at your available tools to see if an MCP integration already provides what you need.\\n`;\r\n message += `2. **Search the web** — If no existing tool handles the request, use \\`web_search\\` to find the right MCP server package. Search for queries like \"MCP server for browser control\", \"MCP server for Slack\", etc. Good sources include the MCP server registry, npm, and GitHub.\\n`;\r\n message += `3. **Get the config** — From the search results or documentation, determine the correct command, args, and any required env vars (API keys, tokens).\\n`;\r\n message += `4. **Add the MCP server** — Use the \\`add_mcp\\` tool with the correct config. The tool will connect to the server and register its tools automatically.\\n`;\r\n message += `5. **Use the new tools** — Once connected, immediately use the newly available \\`mcp_<serverName>_<toolName>\\` tools to fulfill the user's request.\\n\\n`;\r\n\r\n message += `**Tips for finding MCP servers:**\\n`;\r\n message += `- Search npm for packages starting with \\`@modelcontextprotocol/\\` or \\`mcp-server-\\`\\n`;\r\n message += `- Many MCP servers are run via \\`npx -y <package-name>\\`\\n`;\r\n message += `- Check the package README for required environment variables\\n`;\r\n message += `- If a server needs an API key and the user hasn't provided one, ask them for it before adding the server\\n`;\r\n message += `- If the first server you try doesn't work, search for alternatives and try again\\n\\n`;\r\n\r\n return message;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|