centaurus-cli 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/types.js +0 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/cli-adapter.js +5047 -5037
- package/dist/cli-adapter.js.map +1 -1
- package/dist/commands/CommandParser.js +372 -315
- package/dist/commands/CommandParser.js.map +1 -1
- package/dist/config/build-config.js +11 -42
- package/dist/config/build-config.js.map +1 -1
- package/dist/config/defaultConfig.js +94 -82
- package/dist/config/defaultConfig.js.map +1 -1
- package/dist/config/manager.js +144 -160
- package/dist/config/manager.js.map +1 -1
- package/dist/config/mcp-config-manager.js +411 -364
- package/dist/config/mcp-config-manager.js.map +1 -1
- package/dist/config/models.js +118 -185
- package/dist/config/models.js.map +1 -1
- package/dist/config/slash-commands.js +186 -184
- package/dist/config/slash-commands.js.map +1 -1
- package/dist/config/types.js +33 -26
- package/dist/config/types.js.map +1 -1
- package/dist/context/command-detector.js +63 -67
- package/dist/context/command-detector.js.map +1 -1
- package/dist/context/context-manager.js +533 -518
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/handlers/docker-handler.js +518 -576
- package/dist/context/handlers/docker-handler.js.map +1 -1
- package/dist/context/handlers/ssh-handler.js +1050 -1109
- package/dist/context/handlers/ssh-handler.js.map +1 -1
- package/dist/context/handlers/wsl-handler.js +558 -630
- package/dist/context/handlers/wsl-handler.js.map +1 -1
- package/dist/context/index.js +42 -6
- package/dist/context/index.js.map +1 -1
- package/dist/context/subshell-handler.js +0 -4
- package/dist/context/subshell-handler.js.map +1 -1
- package/dist/context/types.js +20 -31
- package/dist/context/types.js.map +1 -1
- package/dist/hooks/useConnectivity.js +13 -10
- package/dist/hooks/useConnectivity.js.map +1 -1
- package/dist/hooks/useTerminalDimensions.js +67 -79
- package/dist/hooks/useTerminalDimensions.js.map +1 -1
- package/dist/index.js +228 -251
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp-command-handler.js +297 -260
- package/dist/mcp/mcp-command-handler.js.map +1 -1
- package/dist/mcp/mcp-server-manager.js +139 -155
- package/dist/mcp/mcp-server-manager.js.map +1 -1
- package/dist/mcp/mcp-tool-wrapper.js +74 -94
- package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
- package/dist/services/ai-autocomplete-agent.js +169 -181
- package/dist/services/ai-autocomplete-agent.js.map +1 -1
- package/dist/services/ai-context-injector.js +180 -93
- package/dist/services/ai-context-injector.js.map +1 -1
- package/dist/services/ai-service-client.js +513 -456
- package/dist/services/ai-service-client.js.map +1 -1
- package/dist/services/api-client.js +443 -441
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/auth-handler.js +162 -198
- package/dist/services/auth-handler.js.map +1 -1
- package/dist/services/background-task-manager.js +258 -282
- package/dist/services/background-task-manager.js.map +1 -1
- package/dist/services/checkpoint-manager.js +1513 -973
- package/dist/services/checkpoint-manager.js.map +1 -1
- package/dist/services/clipboard-service.js +151 -200
- package/dist/services/clipboard-service.js.map +1 -1
- package/dist/services/connectivity-manager.js +63 -65
- package/dist/services/connectivity-manager.js.map +1 -1
- package/dist/services/conversation-manager.js +118 -121
- package/dist/services/conversation-manager.js.map +1 -1
- package/dist/services/environment-context-injector.js +160 -187
- package/dist/services/environment-context-injector.js.map +1 -1
- package/dist/services/fast-context-agent.js +203 -243
- package/dist/services/fast-context-agent.js.map +1 -1
- package/dist/services/input-detection-agent.js +190 -202
- package/dist/services/input-detection-agent.js.map +1 -1
- package/dist/services/input-requirement-detector.js +155 -189
- package/dist/services/input-requirement-detector.js.map +1 -1
- package/dist/services/local-chat-storage.js +342 -365
- package/dist/services/local-chat-storage.js.map +1 -1
- package/dist/services/monitored-shell-manager.js +225 -233
- package/dist/services/monitored-shell-manager.js.map +1 -1
- package/dist/services/ollama-service.js +293 -310
- package/dist/services/ollama-service.js.map +1 -1
- package/dist/services/rules-storage.js +142 -0
- package/dist/services/rules-storage.js.map +1 -0
- package/dist/services/session-quota-manager.js +219 -235
- package/dist/services/session-quota-manager.js.map +1 -1
- package/dist/services/shell-input-agent.js +299 -334
- package/dist/services/shell-input-agent.js.map +1 -1
- package/dist/services/sub-agent-manager.js +459 -501
- package/dist/services/sub-agent-manager.js.map +1 -1
- package/dist/services/warpify-detector.js +133 -183
- package/dist/services/warpify-detector.js.map +1 -1
- package/dist/services/workflow-storage.js +202 -217
- package/dist/services/workflow-storage.js.map +1 -1
- package/dist/test-ssh-handler.js +148 -193
- package/dist/test-ssh-handler.js.map +1 -1
- package/dist/tools/add-mcp.js +161 -0
- package/dist/tools/add-mcp.js.map +1 -0
- package/dist/tools/background-command.js +240 -273
- package/dist/tools/background-command.js.map +1 -1
- package/dist/tools/command.js +447 -440
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/create-image.js +172 -202
- package/dist/tools/create-image.js.map +1 -1
- package/dist/tools/enter-remote-session.js +169 -215
- package/dist/tools/enter-remote-session.js.map +1 -1
- package/dist/tools/fast-context.js +60 -67
- package/dist/tools/fast-context.js.map +1 -1
- package/dist/tools/file-ops.js +605 -537
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/find-files.js +262 -303
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/get-diff.js +423 -400
- package/dist/tools/get-diff.js.map +1 -1
- package/dist/tools/grep-search.js +966 -948
- package/dist/tools/grep-search.js.map +1 -1
- package/dist/tools/inspect-symbol.js +308 -323
- package/dist/tools/inspect-symbol.js.map +1 -1
- package/dist/tools/plan-mode.js +459 -503
- package/dist/tools/plan-mode.js.map +1 -1
- package/dist/tools/read-binary-file.js +160 -190
- package/dist/tools/read-binary-file.js.map +1 -1
- package/dist/tools/registry.js +100 -84
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/reproduce_issue.js +170 -151
- package/dist/tools/reproduce_issue.js.map +1 -1
- package/dist/tools/sub-agent.js +223 -228
- package/dist/tools/sub-agent.js.map +1 -1
- package/dist/tools/task-complete.js +28 -27
- package/dist/tools/task-complete.js.map +1 -1
- package/dist/tools/types.js +0 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/validation.js +96 -118
- package/dist/tools/validation.js.map +1 -1
- package/dist/tools/web-search.js +194 -194
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools/workflow-tool.js +77 -82
- package/dist/tools/workflow-tool.js.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/rule.js +1 -0
- package/dist/types/rule.js.map +1 -0
- package/dist/types/workflow.js +0 -7
- package/dist/types/workflow.js.map +1 -1
- package/dist/ui/components/AgentTimer.js +24 -25
- package/dist/ui/components/AgentTimer.js.map +1 -1
- package/dist/ui/components/App.js +3266 -3249
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/AuthScreen.js +22 -34
- package/dist/ui/components/AuthScreen.js.map +1 -1
- package/dist/ui/components/AuthWelcomeScreen.js +30 -24
- package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
- package/dist/ui/components/Breadcrumbs.js +53 -82
- package/dist/ui/components/Breadcrumbs.js.map +1 -1
- package/dist/ui/components/CircularSelectInput.js +59 -67
- package/dist/ui/components/CircularSelectInput.js.map +1 -1
- package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
- package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
- package/dist/ui/components/CodeBlock.js +24 -42
- package/dist/ui/components/CodeBlock.js.map +1 -1
- package/dist/ui/components/ConfigViewer.js +18 -25
- package/dist/ui/components/ConfigViewer.js.map +1 -1
- package/dist/ui/components/ConfirmPrompt.js +49 -71
- package/dist/ui/components/ConfirmPrompt.js.map +1 -1
- package/dist/ui/components/ConnectionStatusMessage.js +32 -83
- package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
- package/dist/ui/components/ContextWindowIndicator.js +34 -49
- package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
- package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
- package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
- package/dist/ui/components/DiffViewer.js +68 -121
- package/dist/ui/components/DiffViewer.js.map +1 -1
- package/dist/ui/components/ErrorBoundary.js +40 -48
- package/dist/ui/components/ErrorBoundary.js.map +1 -1
- package/dist/ui/components/FileCreationPreview.js +29 -60
- package/dist/ui/components/FileCreationPreview.js.map +1 -1
- package/dist/ui/components/FileOperation.js +34 -29
- package/dist/ui/components/FileOperation.js.map +1 -1
- package/dist/ui/components/FileTagAutocomplete.js +55 -25
- package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
- package/dist/ui/components/FontRecommendation.js.map +1 -1
- package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
- package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
- package/dist/ui/components/InputBox.js +1620 -2150
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/InteractiveShell.js +234 -352
- package/dist/ui/components/InteractiveShell.js.map +1 -1
- package/dist/ui/components/KeyboardHelp.js +34 -35
- package/dist/ui/components/KeyboardHelp.js.map +1 -1
- package/dist/ui/components/LoadingIndicator.js +22 -25
- package/dist/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/ui/components/MCPAddScreen.js +40 -51
- package/dist/ui/components/MCPAddScreen.js.map +1 -1
- package/dist/ui/components/MCPListScreen.js +40 -48
- package/dist/ui/components/MCPListScreen.js.map +1 -1
- package/dist/ui/components/MCPServerListScreen.js +49 -56
- package/dist/ui/components/MCPServerListScreen.js.map +1 -1
- package/dist/ui/components/MarkdownRenderer.js +69 -96
- package/dist/ui/components/MarkdownRenderer.js.map +1 -1
- package/dist/ui/components/MessageBox.js +66 -48
- package/dist/ui/components/MessageBox.js.map +1 -1
- package/dist/ui/components/MessageDisplay.js +150 -142
- package/dist/ui/components/MessageDisplay.js.map +1 -1
- package/dist/ui/components/MonitorModeAIPanel.js +46 -65
- package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
- package/dist/ui/components/MultiLineInput.js +243 -277
- package/dist/ui/components/MultiLineInput.js.map +1 -1
- package/dist/ui/components/PasswordPrompt.js +37 -18
- package/dist/ui/components/PasswordPrompt.js.map +1 -1
- package/dist/ui/components/PlanAcceptedMessage.js +27 -38
- package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
- package/dist/ui/components/PlanReviewScreen.js +46 -50
- package/dist/ui/components/PlanReviewScreen.js.map +1 -1
- package/dist/ui/components/RulesEditorScreen.js +81 -0
- package/dist/ui/components/RulesEditorScreen.js.map +1 -0
- package/dist/ui/components/SelectPrompt.js +19 -8
- package/dist/ui/components/SelectPrompt.js.map +1 -1
- package/dist/ui/components/ShimmerText.js +44 -0
- package/dist/ui/components/ShimmerText.js.map +1 -0
- package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
- package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
- package/dist/ui/components/StatusBar.js +56 -87
- package/dist/ui/components/StatusBar.js.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.js +116 -99
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
- package/dist/ui/components/TaskCompletedMessage.js +28 -23
- package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
- package/dist/ui/components/TaskProgressIndicator.js +44 -70
- package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
- package/dist/ui/components/ThinkingDisplay.js +44 -41
- package/dist/ui/components/ThinkingDisplay.js.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.js +772 -1326
- package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
- package/dist/ui/components/ToolExecutionStatus.js +53 -84
- package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
- package/dist/ui/components/ToolResult.js +22 -15
- package/dist/ui/components/ToolResult.js.map +1 -1
- package/dist/ui/components/VersionUpdatePrompt.js +88 -120
- package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
- package/dist/ui/components/WelcomeBanner.js +176 -26
- package/dist/ui/components/WelcomeBanner.js.map +1 -1
- package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
- package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
- package/dist/utils/ansi-encoder.js +30 -61
- package/dist/utils/ansi-encoder.js.map +1 -1
- package/dist/utils/chat-formatter.js +327 -305
- package/dist/utils/chat-formatter.js.map +1 -1
- package/dist/utils/command-history.js +152 -174
- package/dist/utils/command-history.js.map +1 -1
- package/dist/utils/context-sanitizer.js +49 -112
- package/dist/utils/context-sanitizer.js.map +1 -1
- package/dist/utils/conversation-logger.js +292 -324
- package/dist/utils/conversation-logger.js.map +1 -1
- package/dist/utils/custom-commands-manager.js +126 -131
- package/dist/utils/custom-commands-manager.js.map +1 -1
- package/dist/utils/editor-utils.js +732 -837
- package/dist/utils/editor-utils.js.map +1 -1
- package/dist/utils/file.js +174 -213
- package/dist/utils/file.js.map +1 -1
- package/dist/utils/git-stats.js +169 -0
- package/dist/utils/git-stats.js.map +1 -0
- package/dist/utils/input-classifier.js +960 -482
- package/dist/utils/input-classifier.js.map +1 -1
- package/dist/utils/logger.js +48 -73
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/markdown-parser.js +277 -310
- package/dist/utils/markdown-parser.js.map +1 -1
- package/dist/utils/rule-reference-resolver.js +54 -0
- package/dist/utils/rule-reference-resolver.js.map +1 -0
- package/dist/utils/shell.js +144 -156
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/state.js +23 -22
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/syntax-checker.js +279 -327
- package/dist/utils/syntax-checker.js.map +1 -1
- package/dist/utils/terminal-output.js +199 -302
- package/dist/utils/terminal-output.js.map +1 -1
- package/dist/utils/text-clipboard.js +47 -70
- package/dist/utils/text-clipboard.js.map +1 -1
- package/dist/utils/unicode-sanitizer.js +134 -197
- package/dist/utils/unicode-sanitizer.js.map +1 -1
- package/dist/utils/version-checker.js +46 -56
- package/dist/utils/version-checker.js.map +1 -1
- package/package.json +6 -4
- package/dist/ai/types.d.ts +0 -20
- package/dist/ai/types.d.ts.map +0 -1
- package/dist/cli-adapter.d.ts +0 -511
- package/dist/cli-adapter.d.ts.map +0 -1
- package/dist/commands/CommandParser.d.ts +0 -27
- package/dist/commands/CommandParser.d.ts.map +0 -1
- package/dist/config/build-config.d.ts +0 -42
- package/dist/config/build-config.d.ts.map +0 -1
- package/dist/config/defaultConfig.d.ts +0 -79
- package/dist/config/defaultConfig.d.ts.map +0 -1
- package/dist/config/manager.d.ts +0 -62
- package/dist/config/manager.d.ts.map +0 -1
- package/dist/config/mcp-config-manager.d.ts +0 -79
- package/dist/config/mcp-config-manager.d.ts.map +0 -1
- package/dist/config/models.d.ts +0 -83
- package/dist/config/models.d.ts.map +0 -1
- package/dist/config/slash-commands.d.ts +0 -23
- package/dist/config/slash-commands.d.ts.map +0 -1
- package/dist/config/types.d.ts +0 -35
- package/dist/config/types.d.ts.map +0 -1
- package/dist/context/command-detector.d.ts +0 -50
- package/dist/context/command-detector.d.ts.map +0 -1
- package/dist/context/context-manager.d.ts +0 -157
- package/dist/context/context-manager.d.ts.map +0 -1
- package/dist/context/handlers/docker-handler.d.ts +0 -130
- package/dist/context/handlers/docker-handler.d.ts.map +0 -1
- package/dist/context/handlers/ssh-handler.d.ts +0 -201
- package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
- package/dist/context/handlers/wsl-handler.d.ts +0 -146
- package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
- package/dist/context/index.d.ts +0 -8
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/subshell-handler.d.ts +0 -165
- package/dist/context/subshell-handler.d.ts.map +0 -1
- package/dist/context/types.d.ts +0 -70
- package/dist/context/types.d.ts.map +0 -1
- package/dist/hooks/useConnectivity.d.ts +0 -2
- package/dist/hooks/useConnectivity.d.ts.map +0 -1
- package/dist/hooks/useTerminalDimensions.d.ts +0 -41
- package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/mcp/mcp-command-handler.d.ts +0 -47
- package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
- package/dist/mcp/mcp-server-manager.d.ts +0 -30
- package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
- package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
- package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
- package/dist/services/ai-autocomplete-agent.d.ts +0 -39
- package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
- package/dist/services/ai-context-injector.d.ts +0 -41
- package/dist/services/ai-context-injector.d.ts.map +0 -1
- package/dist/services/ai-service-client.d.ts +0 -128
- package/dist/services/ai-service-client.d.ts.map +0 -1
- package/dist/services/api-client.d.ts +0 -353
- package/dist/services/api-client.d.ts.map +0 -1
- package/dist/services/auth-handler.d.ts +0 -30
- package/dist/services/auth-handler.d.ts.map +0 -1
- package/dist/services/background-task-manager.d.ts +0 -114
- package/dist/services/background-task-manager.d.ts.map +0 -1
- package/dist/services/checkpoint-manager.d.ts +0 -167
- package/dist/services/checkpoint-manager.d.ts.map +0 -1
- package/dist/services/clipboard-service.d.ts +0 -37
- package/dist/services/clipboard-service.d.ts.map +0 -1
- package/dist/services/connectivity-manager.d.ts +0 -18
- package/dist/services/connectivity-manager.d.ts.map +0 -1
- package/dist/services/conversation-manager.d.ts +0 -73
- package/dist/services/conversation-manager.d.ts.map +0 -1
- package/dist/services/environment-context-injector.d.ts +0 -69
- package/dist/services/environment-context-injector.d.ts.map +0 -1
- package/dist/services/fast-context-agent.d.ts +0 -12
- package/dist/services/fast-context-agent.d.ts.map +0 -1
- package/dist/services/input-detection-agent.d.ts +0 -40
- package/dist/services/input-detection-agent.d.ts.map +0 -1
- package/dist/services/input-requirement-detector.d.ts +0 -28
- package/dist/services/input-requirement-detector.d.ts.map +0 -1
- package/dist/services/local-chat-storage.d.ts +0 -182
- package/dist/services/local-chat-storage.d.ts.map +0 -1
- package/dist/services/monitored-shell-manager.d.ts +0 -120
- package/dist/services/monitored-shell-manager.d.ts.map +0 -1
- package/dist/services/ollama-service.d.ts +0 -197
- package/dist/services/ollama-service.d.ts.map +0 -1
- package/dist/services/session-quota-manager.d.ts +0 -101
- package/dist/services/session-quota-manager.d.ts.map +0 -1
- package/dist/services/shell-input-agent.d.ts +0 -89
- package/dist/services/shell-input-agent.d.ts.map +0 -1
- package/dist/services/sub-agent-manager.d.ts +0 -140
- package/dist/services/sub-agent-manager.d.ts.map +0 -1
- package/dist/services/warpify-detector.d.ts +0 -43
- package/dist/services/warpify-detector.d.ts.map +0 -1
- package/dist/services/workflow-storage.d.ts +0 -72
- package/dist/services/workflow-storage.d.ts.map +0 -1
- package/dist/test-ssh-handler.d.ts +0 -8
- package/dist/test-ssh-handler.d.ts.map +0 -1
- package/dist/tools/background-command.d.ts +0 -11
- package/dist/tools/background-command.d.ts.map +0 -1
- package/dist/tools/command.d.ts +0 -3
- package/dist/tools/command.d.ts.map +0 -1
- package/dist/tools/create-image.d.ts +0 -10
- package/dist/tools/create-image.d.ts.map +0 -1
- package/dist/tools/enter-remote-session.d.ts +0 -48
- package/dist/tools/enter-remote-session.d.ts.map +0 -1
- package/dist/tools/fast-context.d.ts +0 -3
- package/dist/tools/fast-context.d.ts.map +0 -1
- package/dist/tools/file-ops.d.ts +0 -7
- package/dist/tools/file-ops.d.ts.map +0 -1
- package/dist/tools/find-files.d.ts +0 -49
- package/dist/tools/find-files.d.ts.map +0 -1
- package/dist/tools/get-diff.d.ts +0 -14
- package/dist/tools/get-diff.d.ts.map +0 -1
- package/dist/tools/grep-search.d.ts +0 -155
- package/dist/tools/grep-search.d.ts.map +0 -1
- package/dist/tools/inspect-symbol.d.ts +0 -32
- package/dist/tools/inspect-symbol.d.ts.map +0 -1
- package/dist/tools/plan-mode.d.ts +0 -140
- package/dist/tools/plan-mode.d.ts.map +0 -1
- package/dist/tools/read-binary-file.d.ts +0 -10
- package/dist/tools/read-binary-file.d.ts.map +0 -1
- package/dist/tools/registry.d.ts +0 -31
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/reproduce_issue.d.ts +0 -2
- package/dist/tools/reproduce_issue.d.ts.map +0 -1
- package/dist/tools/sub-agent.d.ts +0 -9
- package/dist/tools/sub-agent.d.ts.map +0 -1
- package/dist/tools/task-complete.d.ts +0 -3
- package/dist/tools/task-complete.d.ts.map +0 -1
- package/dist/tools/types.d.ts +0 -40
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/validation.d.ts +0 -47
- package/dist/tools/validation.d.ts.map +0 -1
- package/dist/tools/web-search.d.ts +0 -24
- package/dist/tools/web-search.d.ts.map +0 -1
- package/dist/tools/workflow-tool.d.ts +0 -11
- package/dist/tools/workflow-tool.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -123
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/workflow.d.ts +0 -110
- package/dist/types/workflow.d.ts.map +0 -1
- package/dist/ui/components/AgentTimer.d.ts +0 -7
- package/dist/ui/components/AgentTimer.d.ts.map +0 -1
- package/dist/ui/components/App.d.ts +0 -197
- package/dist/ui/components/App.d.ts.map +0 -1
- package/dist/ui/components/AuthScreen.d.ts +0 -8
- package/dist/ui/components/AuthScreen.d.ts.map +0 -1
- package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
- package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
- package/dist/ui/components/Breadcrumbs.d.ts +0 -13
- package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
- package/dist/ui/components/CircularSelectInput.d.ts +0 -24
- package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
- package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
- package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/CodeBlock.d.ts +0 -9
- package/dist/ui/components/CodeBlock.d.ts.map +0 -1
- package/dist/ui/components/ConfigViewer.d.ts +0 -11
- package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
- package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
- package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
- package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
- package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
- package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
- package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
- package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
- package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
- package/dist/ui/components/DiffViewer.d.ts +0 -9
- package/dist/ui/components/DiffViewer.d.ts.map +0 -1
- package/dist/ui/components/ErrorBoundary.d.ts +0 -17
- package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
- package/dist/ui/components/FileCreationPreview.d.ts +0 -8
- package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
- package/dist/ui/components/FileOperation.d.ts +0 -10
- package/dist/ui/components/FileOperation.d.ts.map +0 -1
- package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
- package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/FontRecommendation.d.ts +0 -1
- package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
- package/dist/ui/components/InputBox.d.ts +0 -42
- package/dist/ui/components/InputBox.d.ts.map +0 -1
- package/dist/ui/components/InteractiveShell.d.ts +0 -30
- package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
- package/dist/ui/components/KeyboardHelp.d.ts +0 -7
- package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
- package/dist/ui/components/LoadingIndicator.d.ts +0 -3
- package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
- package/dist/ui/components/MCPAddScreen.d.ts +0 -13
- package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
- package/dist/ui/components/MCPListScreen.d.ts +0 -17
- package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
- package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
- package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
- package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
- package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
- package/dist/ui/components/MessageBox.d.ts +0 -10
- package/dist/ui/components/MessageBox.d.ts.map +0 -1
- package/dist/ui/components/MessageDisplay.d.ts +0 -14
- package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
- package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
- package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
- package/dist/ui/components/MultiLineInput.d.ts +0 -13
- package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
- package/dist/ui/components/PasswordPrompt.d.ts +0 -9
- package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
- package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
- package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
- package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
- package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
- package/dist/ui/components/SelectPrompt.d.ts +0 -12
- package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
- package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
- package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/StatusBar.d.ts +0 -14
- package/dist/ui/components/StatusBar.d.ts.map +0 -1
- package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
- package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
- package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
- package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
- package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
- package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
- package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
- package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
- package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
- package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
- package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
- package/dist/ui/components/ToolResult.d.ts +0 -10
- package/dist/ui/components/ToolResult.d.ts.map +0 -1
- package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
- package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
- package/dist/ui/components/WelcomeBanner.d.ts +0 -3
- package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
- package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
- package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
- package/dist/utils/ansi-encoder.d.ts +0 -7
- package/dist/utils/ansi-encoder.d.ts.map +0 -1
- package/dist/utils/chat-formatter.d.ts +0 -12
- package/dist/utils/chat-formatter.d.ts.map +0 -1
- package/dist/utils/command-history.d.ts +0 -24
- package/dist/utils/command-history.d.ts.map +0 -1
- package/dist/utils/context-sanitizer.d.ts +0 -50
- package/dist/utils/context-sanitizer.d.ts.map +0 -1
- package/dist/utils/conversation-logger.d.ts +0 -142
- package/dist/utils/conversation-logger.d.ts.map +0 -1
- package/dist/utils/custom-commands-manager.d.ts +0 -59
- package/dist/utils/custom-commands-manager.d.ts.map +0 -1
- package/dist/utils/editor-utils.d.ts +0 -101
- package/dist/utils/editor-utils.d.ts.map +0 -1
- package/dist/utils/file.d.ts +0 -61
- package/dist/utils/file.d.ts.map +0 -1
- package/dist/utils/input-classifier.d.ts +0 -25
- package/dist/utils/input-classifier.d.ts.map +0 -1
- package/dist/utils/logger.d.ts +0 -17
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/markdown-parser.d.ts +0 -60
- package/dist/utils/markdown-parser.d.ts.map +0 -1
- package/dist/utils/shell.d.ts +0 -47
- package/dist/utils/shell.d.ts.map +0 -1
- package/dist/utils/state.d.ts +0 -13
- package/dist/utils/state.d.ts.map +0 -1
- package/dist/utils/syntax-checker.d.ts +0 -24
- package/dist/utils/syntax-checker.d.ts.map +0 -1
- package/dist/utils/terminal-output.d.ts +0 -25
- package/dist/utils/terminal-output.d.ts.map +0 -1
- package/dist/utils/text-clipboard.d.ts +0 -12
- package/dist/utils/text-clipboard.d.ts.map +0 -1
- package/dist/utils/unicode-sanitizer.d.ts +0 -44
- package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
- package/dist/utils/version-checker.d.ts +0 -14
- package/dist/utils/version-checker.d.ts.map +0 -1
package/dist/tools/sub-agent.js
CHANGED
|
@@ -1,235 +1,230 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
IMPORTANT:
|
|
32
|
-
- You CANNOT call task_complete while sub-agents are running
|
|
33
|
-
- Always check status or read_results before completing your main task
|
|
34
|
-
- Sub-agents auto-terminate after 10 minutes
|
|
35
|
-
- Maximum 5 concurrent sub-agents allowed
|
|
1
|
+
import { SubAgentManager } from "../services/sub-agent-manager.js";
|
|
2
|
+
const subAgentTool = {
|
|
3
|
+
schema: {
|
|
4
|
+
name: "sub_agent",
|
|
5
|
+
description: `Spawn and manage background sub-agents for delegated tasks. Sub-agents run independently and have full tool access.
|
|
6
|
+
|
|
7
|
+
ACTIONS:
|
|
8
|
+
1. "spawn" - Create and start a new sub-agent with a specific task
|
|
9
|
+
2. "wait_for_status" - Wait for a duration and then check the status/progress of a sub-agent enterduration as 0 if you want to check immediately
|
|
10
|
+
3. "terminate" - Kill a running sub-agent
|
|
11
|
+
4. "read_results" - Get the final results and diffs from a completed sub-agent
|
|
12
|
+
5. "list" - List all sub-agents and their current status
|
|
13
|
+
|
|
14
|
+
USE CASES:
|
|
15
|
+
- Delegate a well-defined subtask while you continue with other work
|
|
16
|
+
- Run multiple independent tasks in parallel
|
|
17
|
+
- Handle complex multi-step operations in the background
|
|
18
|
+
|
|
19
|
+
COMPLEXITY GUIDELINES (1-10):
|
|
20
|
+
- 1-3: Very simple tasks (create a single file, fix a typo)
|
|
21
|
+
- 4-5: Simple tasks (implement a small function, update configs)
|
|
22
|
+
- 6-7: Medium tasks (implement a feature, refactor a file)
|
|
23
|
+
- 8-10: Complex tasks (multi-file refactors, debugging complex issues)
|
|
24
|
+
|
|
25
|
+
IMPORTANT:
|
|
26
|
+
- You CANNOT call task_complete while sub-agents are running
|
|
27
|
+
- Always check status or read_results before completing your main task
|
|
28
|
+
- Sub-agents auto-terminate after 10 minutes
|
|
29
|
+
- Maximum 5 concurrent sub-agents allowed
|
|
36
30
|
- Sub-agents use the same session quota as you`,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
},
|
|
45
|
-
agent_id: {
|
|
46
|
-
type: 'string',
|
|
47
|
-
description: 'Sub-agent ID. REQUIRED for wait_for_status, terminate, and read_results actions.',
|
|
48
|
-
},
|
|
49
|
-
time_delay: {
|
|
50
|
-
type: 'integer',
|
|
51
|
-
description: 'Optional delay in seconds to wait before checking status (for wait_for_status action). Set to 0 for immediate check.',
|
|
52
|
-
},
|
|
53
|
-
prompt: {
|
|
54
|
-
type: 'string',
|
|
55
|
-
description: 'Detailed task description for the sub-agent. REQUIRED for spawn action. Be specific about what needs to be done.',
|
|
56
|
-
},
|
|
57
|
-
context: {
|
|
58
|
-
type: 'string',
|
|
59
|
-
description: 'Relevant context information for spawn action. Include file paths, project structure, relevant code snippets, or any information the sub-agent needs.',
|
|
60
|
-
},
|
|
61
|
-
working_directory: {
|
|
62
|
-
type: 'string',
|
|
63
|
-
description: 'Already Existing Working directory for the sub-agent to start working in. REQUIRED for spawn action.',
|
|
64
|
-
},
|
|
65
|
-
complexity: {
|
|
66
|
-
type: 'integer',
|
|
67
|
-
description: 'Task complexity rating 1-10. REQUIRED for spawn action. Determines which AI model is used.',
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
required: ['action'],
|
|
31
|
+
parameters: {
|
|
32
|
+
type: "object",
|
|
33
|
+
properties: {
|
|
34
|
+
action: {
|
|
35
|
+
type: "string",
|
|
36
|
+
enum: ["spawn", "wait_for_status", "terminate", "read_results", "list"],
|
|
37
|
+
description: "The action to perform."
|
|
71
38
|
},
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
39
|
+
agent_id: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: "Sub-agent ID. REQUIRED for wait_for_status, terminate, and read_results actions."
|
|
42
|
+
},
|
|
43
|
+
time_delay: {
|
|
44
|
+
type: "integer",
|
|
45
|
+
description: "Optional delay in seconds to wait before checking status (for wait_for_status action). Set to 0 for immediate check."
|
|
46
|
+
},
|
|
47
|
+
prompt: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Detailed task description for the sub-agent. REQUIRED for spawn action. Be specific about what needs to be done."
|
|
50
|
+
},
|
|
51
|
+
context: {
|
|
52
|
+
type: "string",
|
|
53
|
+
description: "Relevant context information for spawn action. Include file paths, project structure, relevant code snippets, or any information the sub-agent needs."
|
|
54
|
+
},
|
|
55
|
+
working_directory: {
|
|
56
|
+
type: "string",
|
|
57
|
+
description: "Already Existing Working directory for the sub-agent to start working in. REQUIRED for spawn action."
|
|
58
|
+
},
|
|
59
|
+
complexity: {
|
|
60
|
+
type: "integer",
|
|
61
|
+
description: "Task complexity rating 1-10. REQUIRED for spawn action. Determines which AI model is used."
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
required: ["action"]
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
async execute(args, context) {
|
|
68
|
+
const { action, agent_id, prompt, context: agentContext, working_directory, complexity, time_delay } = args;
|
|
69
|
+
switch (action) {
|
|
70
|
+
case "spawn": {
|
|
71
|
+
if (!prompt) {
|
|
72
|
+
throw new Error('Missing required parameter "prompt" for action "spawn"');
|
|
73
|
+
}
|
|
74
|
+
if (!working_directory) {
|
|
75
|
+
throw new Error('Missing required parameter "working_directory" for action "spawn"');
|
|
76
|
+
}
|
|
77
|
+
if (complexity === void 0 || complexity === null) {
|
|
78
|
+
throw new Error('Missing required parameter "complexity" for action "spawn"');
|
|
79
|
+
}
|
|
80
|
+
if (complexity < 1 || complexity > 10) {
|
|
81
|
+
throw new Error("Complexity must be between 1 and 10");
|
|
82
|
+
}
|
|
83
|
+
const result = await SubAgentManager.spawnSubAgent({
|
|
84
|
+
prompt,
|
|
85
|
+
context: agentContext || "",
|
|
86
|
+
workingDirectory: working_directory,
|
|
87
|
+
complexity,
|
|
88
|
+
parentContextManager: context.contextManager
|
|
89
|
+
});
|
|
90
|
+
if (!result.success) {
|
|
91
|
+
throw new Error(result.error || "Failed to spawn sub-agent");
|
|
92
|
+
}
|
|
93
|
+
const modelUsed = complexity <= 5 ? "Gemini 3 Flash Preview" : "Gemini 3.1 Pro Preview";
|
|
94
|
+
return `**Sub-Agent Spawned Successfully**
|
|
95
|
+
|
|
96
|
+
**Agent ID:** ${result.agentId}
|
|
97
|
+
**Model:** ${modelUsed} (complexity: ${complexity}/10)
|
|
98
|
+
**Working Directory:** ${working_directory}
|
|
99
|
+
**Task:** ${prompt.substring(0, 200)}${prompt.length > 200 ? "..." : ""}
|
|
100
|
+
|
|
101
|
+
The sub-agent is now running in the background. Use:
|
|
102
|
+
- \`sub_agent(action="wait_for_status", agent_id="${result.agentId}", time_delay=5)\` to wait and check progress
|
|
103
|
+
- \`sub_agent(action="terminate", agent_id="${result.agentId}")\` to stop it
|
|
104
|
+
- \`sub_agent(action="read_results", agent_id="${result.agentId}")\` to get results when completed
|
|
105
|
+
|
|
106
|
+
\u26A0\uFE0F You cannot call task_complete while this sub-agent is running.`;
|
|
107
|
+
}
|
|
108
|
+
case "wait_for_status": {
|
|
109
|
+
if (!agent_id) {
|
|
110
|
+
throw new Error('Missing required parameter "agent_id" for action "wait_for_status"');
|
|
111
|
+
}
|
|
112
|
+
if (time_delay && time_delay > 0) {
|
|
113
|
+
await new Promise((resolve) => setTimeout(resolve, time_delay * 1e3));
|
|
114
|
+
}
|
|
115
|
+
const subAgent = SubAgentManager.getSubAgent(agent_id);
|
|
116
|
+
if (!subAgent) {
|
|
117
|
+
const allAgents = SubAgentManager.getAllSubAgents();
|
|
118
|
+
if (allAgents.length === 0) {
|
|
119
|
+
throw new Error(`Sub-agent "${agent_id}" not found. No sub-agents are currently tracked.`);
|
|
120
|
+
}
|
|
121
|
+
const agentList = allAgents.map(
|
|
122
|
+
(a) => `- ${a.id} (${a.status}): ${a.prompt.substring(0, 50)}...`
|
|
123
|
+
).join("\n");
|
|
124
|
+
throw new Error(`Sub-agent "${agent_id}" not found.
|
|
125
|
+
|
|
126
|
+
Available sub-agents:
|
|
127
|
+
${agentList}`);
|
|
128
|
+
}
|
|
129
|
+
const durationMs = (subAgent.endTime || /* @__PURE__ */ new Date()).getTime() - subAgent.startTime.getTime();
|
|
130
|
+
const durationSec = Math.round(durationMs / 1e3);
|
|
131
|
+
let statusEmoji = "\u23F3";
|
|
132
|
+
if (subAgent.status === "running") statusEmoji = "\u{1F504}";
|
|
133
|
+
else if (subAgent.status === "completed") statusEmoji = "\u2713";
|
|
134
|
+
else if (subAgent.status === "failed") statusEmoji = "\u274C";
|
|
135
|
+
else if (subAgent.status === "terminated") statusEmoji = "\u23F9\uFE0F";
|
|
136
|
+
let statusDetails = `**Sub-Agent Status**
|
|
137
|
+
|
|
138
|
+
**Agent ID:** ${agent_id}
|
|
139
|
+
**Status:** ${statusEmoji} ${subAgent.status}
|
|
140
|
+
**Model:** ${subAgent.model}
|
|
141
|
+
**Duration:** ${durationSec}s
|
|
142
|
+
**Turns:** ${subAgent.turnCount}
|
|
143
|
+
**File Operations:** ${subAgent.fileOperations.length}
|
|
155
144
|
**Tool Calls:** ${subAgent.toolHistory.length}`;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
145
|
+
if (subAgent.result) {
|
|
146
|
+
statusDetails += `
|
|
147
|
+
|
|
148
|
+
**Result:** ${subAgent.result}`;
|
|
149
|
+
}
|
|
150
|
+
if (subAgent.error) {
|
|
151
|
+
statusDetails += `
|
|
152
|
+
|
|
153
|
+
**Error:** ${subAgent.error}`;
|
|
154
|
+
}
|
|
155
|
+
if (subAgent.status === "completed" || subAgent.status === "failed" || subAgent.status === "terminated") {
|
|
156
|
+
statusDetails += `
|
|
157
|
+
|
|
158
|
+
Use \`sub_agent(action="read_results", agent_id="${agent_id}")\` to see the full diff of changes.`;
|
|
159
|
+
}
|
|
160
|
+
return statusDetails;
|
|
161
|
+
}
|
|
162
|
+
case "terminate": {
|
|
163
|
+
if (!agent_id) {
|
|
164
|
+
throw new Error('Missing required parameter "agent_id" for action "terminate"');
|
|
165
|
+
}
|
|
166
|
+
const result = SubAgentManager.terminateSubAgent(agent_id);
|
|
167
|
+
if (!result.success) {
|
|
168
|
+
throw new Error(result.error || "Failed to terminate sub-agent");
|
|
169
|
+
}
|
|
170
|
+
return `**Sub-Agent Terminated**
|
|
171
|
+
|
|
172
|
+
**Agent ID:** ${agent_id}
|
|
173
|
+
**Status:** \u23F9\uFE0F Terminated
|
|
174
|
+
|
|
180
175
|
The sub-agent has been stopped. Use \`sub_agent(action="read_results", agent_id="${agent_id}")\` to see what it accomplished before termination.`;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
**
|
|
210
|
-
|
|
211
|
-
**
|
|
212
|
-
|
|
213
|
-
**All Sub-Agents:**
|
|
176
|
+
}
|
|
177
|
+
case "read_results": {
|
|
178
|
+
if (!agent_id) {
|
|
179
|
+
throw new Error('Missing required parameter "agent_id" for action "read_results"');
|
|
180
|
+
}
|
|
181
|
+
const subAgent = SubAgentManager.getSubAgent(agent_id);
|
|
182
|
+
if (!subAgent) {
|
|
183
|
+
throw new Error(`Sub-agent "${agent_id}" not found`);
|
|
184
|
+
}
|
|
185
|
+
if (subAgent.status === "running" || subAgent.status === "pending") {
|
|
186
|
+
throw new Error(`Sub-agent "${agent_id}" is still running. Wait for it to complete or terminate it first.`);
|
|
187
|
+
}
|
|
188
|
+
const diffOutput = SubAgentManager.getSubAgentDiff(agent_id);
|
|
189
|
+
SubAgentManager.markSubAgentRead(agent_id);
|
|
190
|
+
return diffOutput;
|
|
191
|
+
}
|
|
192
|
+
case "list": {
|
|
193
|
+
const allAgents = SubAgentManager.getAllSubAgents();
|
|
194
|
+
if (allAgents.length === 0) {
|
|
195
|
+
return "No sub-agents currently tracked.";
|
|
196
|
+
}
|
|
197
|
+
const runningCount = allAgents.filter((a) => a.status === "running" || a.status === "pending").length;
|
|
198
|
+
const completedCount = allAgents.filter((a) => a.status === "completed").length;
|
|
199
|
+
const failedCount = allAgents.filter((a) => a.status === "failed" || a.status === "terminated").length;
|
|
200
|
+
let output = `**Sub-Agent Summary**
|
|
201
|
+
|
|
202
|
+
**Running:** ${runningCount}
|
|
203
|
+
**Completed:** ${completedCount}
|
|
204
|
+
**Failed/Terminated:** ${failedCount}
|
|
205
|
+
|
|
206
|
+
**All Sub-Agents:**
|
|
214
207
|
`;
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
208
|
+
for (const agent of allAgents) {
|
|
209
|
+
let statusEmoji = "\u23F3";
|
|
210
|
+
if (agent.status === "running") statusEmoji = "\u{1F504}";
|
|
211
|
+
else if (agent.status === "completed") statusEmoji = "\u2705";
|
|
212
|
+
else if (agent.status === "failed") statusEmoji = "\u274C";
|
|
213
|
+
else if (agent.status === "terminated") statusEmoji = "\u23F9\uFE0F";
|
|
214
|
+
const taskPreview = agent.prompt.substring(0, 60) + (agent.prompt.length > 60 ? "..." : "");
|
|
215
|
+
output += `
|
|
216
|
+
${statusEmoji} **${agent.id}** (${agent.status})
|
|
217
|
+
Task: ${taskPreview}
|
|
218
|
+
`;
|
|
219
|
+
}
|
|
220
|
+
return output;
|
|
221
|
+
}
|
|
222
|
+
default:
|
|
223
|
+
throw new Error(`Unknown action "${action}". Valid actions are: spawn, status, terminate, read_results, list`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
export {
|
|
228
|
+
subAgentTool
|
|
234
229
|
};
|
|
235
230
|
//# sourceMappingURL=sub-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent.js","sourceRoot":"","sources":["../../src/tools/sub-agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/tools/sub-agent.ts"],"sourcesContent":["/**\r\n * Sub-Agent Tool\r\n * \r\n * Allows the main AI agent to spawn and manage background sub-agents\r\n * for delegated tasks. Uses action-based pattern similar to background_command.\r\n */\r\n\r\nimport { Tool } from './types.js';\r\nimport { SubAgentManager } from '../services/sub-agent-manager.js';\r\n\r\nexport const subAgentTool: Tool = {\r\n schema: {\r\n name: 'sub_agent',\r\n description: `Spawn and manage background sub-agents for delegated tasks. Sub-agents run independently and have full tool access.\r\n\r\nACTIONS:\r\n1. \"spawn\" - Create and start a new sub-agent with a specific task\r\n2. \"wait_for_status\" - Wait for a duration and then check the status/progress of a sub-agent enterduration as 0 if you want to check immediately\r\n3. \"terminate\" - Kill a running sub-agent\r\n4. \"read_results\" - Get the final results and diffs from a completed sub-agent\r\n5. \"list\" - List all sub-agents and their current status\r\n\r\nUSE CASES:\r\n- Delegate a well-defined subtask while you continue with other work\r\n- Run multiple independent tasks in parallel\r\n- Handle complex multi-step operations in the background\r\n\r\nCOMPLEXITY GUIDELINES (1-10):\r\n- 1-3: Very simple tasks (create a single file, fix a typo)\r\n- 4-5: Simple tasks (implement a small function, update configs)\r\n- 6-7: Medium tasks (implement a feature, refactor a file)\r\n- 8-10: Complex tasks (multi-file refactors, debugging complex issues)\r\n\r\nIMPORTANT:\r\n- You CANNOT call task_complete while sub-agents are running\r\n- Always check status or read_results before completing your main task\r\n- Sub-agents auto-terminate after 10 minutes\r\n- Maximum 5 concurrent sub-agents allowed\r\n- Sub-agents use the same session quota as you`,\r\n parameters: {\r\n type: 'object',\r\n properties: {\r\n action: {\r\n type: 'string',\r\n enum: ['spawn', 'wait_for_status', 'terminate', 'read_results', 'list'],\r\n description: 'The action to perform.',\r\n },\r\n agent_id: {\r\n type: 'string',\r\n description: 'Sub-agent ID. REQUIRED for wait_for_status, terminate, and read_results actions.',\r\n },\r\n time_delay: {\r\n type: 'integer',\r\n description: 'Optional delay in seconds to wait before checking status (for wait_for_status action). Set to 0 for immediate check.',\r\n },\r\n prompt: {\r\n type: 'string',\r\n description: 'Detailed task description for the sub-agent. REQUIRED for spawn action. Be specific about what needs to be done.',\r\n },\r\n context: {\r\n type: 'string',\r\n description: 'Relevant context information for spawn action. Include file paths, project structure, relevant code snippets, or any information the sub-agent needs.',\r\n },\r\n working_directory: {\r\n type: 'string',\r\n description: 'Already Existing Working directory for the sub-agent to start working in. REQUIRED for spawn action.',\r\n },\r\n complexity: {\r\n type: 'integer',\r\n description: 'Task complexity rating 1-10. REQUIRED for spawn action. Determines which AI model is used.',\r\n },\r\n },\r\n required: ['action'],\r\n },\r\n },\r\n\r\n async execute(args, context) {\r\n const { action, agent_id, prompt, context: agentContext, working_directory, complexity, time_delay } = args;\r\n\r\n switch (action) {\r\n case 'spawn': {\r\n // Validate required parameters\r\n if (!prompt) {\r\n throw new Error('Missing required parameter \"prompt\" for action \"spawn\"');\r\n }\r\n if (!working_directory) {\r\n throw new Error('Missing required parameter \"working_directory\" for action \"spawn\"');\r\n }\r\n if (complexity === undefined || complexity === null) {\r\n throw new Error('Missing required parameter \"complexity\" for action \"spawn\"');\r\n }\r\n if (complexity < 1 || complexity > 10) {\r\n throw new Error('Complexity must be between 1 and 10');\r\n }\r\n\r\n // Spawn the sub-agent\r\n // Pass parent's contextManager so the subagent can route tools\r\n // through the active remote session (SSH/Docker/WSL)\r\n const result = await SubAgentManager.spawnSubAgent({\r\n prompt,\r\n context: agentContext || '',\r\n workingDirectory: working_directory,\r\n complexity,\r\n parentContextManager: context.contextManager,\r\n });\r\n\r\n if (!result.success) {\r\n throw new Error(result.error || 'Failed to spawn sub-agent');\r\n }\r\n\r\n const modelUsed = complexity <= 5 ? 'Gemini 3 Flash Preview' : 'Gemini 3.1 Pro Preview';\r\n\r\n return `**Sub-Agent Spawned Successfully**\r\n\r\n**Agent ID:** ${result.agentId}\r\n**Model:** ${modelUsed} (complexity: ${complexity}/10)\r\n**Working Directory:** ${working_directory}\r\n**Task:** ${prompt.substring(0, 200)}${prompt.length > 200 ? '...' : ''}\r\n\r\nThe sub-agent is now running in the background. Use:\r\n- \\`sub_agent(action=\"wait_for_status\", agent_id=\"${result.agentId}\", time_delay=5)\\` to wait and check progress\r\n- \\`sub_agent(action=\"terminate\", agent_id=\"${result.agentId}\")\\` to stop it\r\n- \\`sub_agent(action=\"read_results\", agent_id=\"${result.agentId}\")\\` to get results when completed\r\n\r\n⚠️ You cannot call task_complete while this sub-agent is running.`;\r\n }\r\n\r\n case 'wait_for_status': {\r\n if (!agent_id) {\r\n throw new Error('Missing required parameter \"agent_id\" for action \"wait_for_status\"');\r\n }\r\n\r\n // Wait if delay is requested\r\n if (time_delay && time_delay > 0) {\r\n await new Promise(resolve => setTimeout(resolve, time_delay * 1000));\r\n }\r\n\r\n const subAgent = SubAgentManager.getSubAgent(agent_id);\r\n if (!subAgent) {\r\n // List available sub-agents\r\n const allAgents = SubAgentManager.getAllSubAgents();\r\n if (allAgents.length === 0) {\r\n throw new Error(`Sub-agent \"${agent_id}\" not found. No sub-agents are currently tracked.`);\r\n }\r\n const agentList = allAgents.map(a =>\r\n `- ${a.id} (${a.status}): ${a.prompt.substring(0, 50)}...`\r\n ).join('\\n');\r\n throw new Error(`Sub-agent \"${agent_id}\" not found.\\n\\nAvailable sub-agents:\\n${agentList}`);\r\n }\r\n\r\n const durationMs = (subAgent.endTime || new Date()).getTime() - subAgent.startTime.getTime();\r\n const durationSec = Math.round(durationMs / 1000);\r\n\r\n let statusEmoji = '⏳';\r\n if (subAgent.status === 'running') statusEmoji = '🔄';\r\n else if (subAgent.status === 'completed') statusEmoji = '✓';\r\n else if (subAgent.status === 'failed') statusEmoji = '❌';\r\n else if (subAgent.status === 'terminated') statusEmoji = '⏹️';\r\n\r\n let statusDetails = `**Sub-Agent Status**\r\n\r\n**Agent ID:** ${agent_id}\r\n**Status:** ${statusEmoji} ${subAgent.status}\r\n**Model:** ${subAgent.model}\r\n**Duration:** ${durationSec}s\r\n**Turns:** ${subAgent.turnCount}\r\n**File Operations:** ${subAgent.fileOperations.length}\r\n**Tool Calls:** ${subAgent.toolHistory.length}`;\r\n\r\n if (subAgent.result) {\r\n statusDetails += `\\n\\n**Result:** ${subAgent.result}`;\r\n }\r\n\r\n if (subAgent.error) {\r\n statusDetails += `\\n\\n**Error:** ${subAgent.error}`;\r\n }\r\n\r\n if (subAgent.status === 'completed' || subAgent.status === 'failed' || subAgent.status === 'terminated') {\r\n statusDetails += `\\n\\nUse \\`sub_agent(action=\"read_results\", agent_id=\"${agent_id}\")\\` to see the full diff of changes.`;\r\n }\r\n\r\n return statusDetails;\r\n }\r\n\r\n case 'terminate': {\r\n if (!agent_id) {\r\n throw new Error('Missing required parameter \"agent_id\" for action \"terminate\"');\r\n }\r\n\r\n const result = SubAgentManager.terminateSubAgent(agent_id);\r\n if (!result.success) {\r\n throw new Error(result.error || 'Failed to terminate sub-agent');\r\n }\r\n\r\n return `**Sub-Agent Terminated**\r\n\r\n**Agent ID:** ${agent_id}\r\n**Status:** ⏹️ Terminated\r\n\r\nThe sub-agent has been stopped. Use \\`sub_agent(action=\"read_results\", agent_id=\"${agent_id}\")\\` to see what it accomplished before termination.`;\r\n }\r\n\r\n case 'read_results': {\r\n if (!agent_id) {\r\n throw new Error('Missing required parameter \"agent_id\" for action \"read_results\"');\r\n }\r\n\r\n const subAgent = SubAgentManager.getSubAgent(agent_id);\r\n if (!subAgent) {\r\n throw new Error(`Sub-agent \"${agent_id}\" not found`);\r\n }\r\n\r\n if (subAgent.status === 'running' || subAgent.status === 'pending') {\r\n throw new Error(`Sub-agent \"${agent_id}\" is still running. Wait for it to complete or terminate it first.`);\r\n }\r\n\r\n // Get the formatted diff output\r\n const diffOutput = SubAgentManager.getSubAgentDiff(agent_id);\r\n\r\n // Mark as read\r\n SubAgentManager.markSubAgentRead(agent_id);\r\n\r\n return diffOutput;\r\n }\r\n\r\n case 'list': {\r\n const allAgents = SubAgentManager.getAllSubAgents();\r\n\r\n if (allAgents.length === 0) {\r\n return 'No sub-agents currently tracked.';\r\n }\r\n\r\n const runningCount = allAgents.filter(a => a.status === 'running' || a.status === 'pending').length;\r\n const completedCount = allAgents.filter(a => a.status === 'completed').length;\r\n const failedCount = allAgents.filter(a => a.status === 'failed' || a.status === 'terminated').length;\r\n\r\n let output = `**Sub-Agent Summary**\r\n\r\n**Running:** ${runningCount}\r\n**Completed:** ${completedCount} \r\n**Failed/Terminated:** ${failedCount}\r\n\r\n**All Sub-Agents:**\r\n`;\r\n\r\n for (const agent of allAgents) {\r\n let statusEmoji = '⏳';\r\n if (agent.status === 'running') statusEmoji = '🔄';\r\n else if (agent.status === 'completed') statusEmoji = '✅';\r\n else if (agent.status === 'failed') statusEmoji = '❌';\r\n else if (agent.status === 'terminated') statusEmoji = '⏹️';\r\n\r\n const taskPreview = agent.prompt.substring(0, 60) + (agent.prompt.length > 60 ? '...' : '');\r\n output += `\\n${statusEmoji} **${agent.id}** (${agent.status})\\n Task: ${taskPreview}\\n`;\r\n }\r\n\r\n return output;\r\n }\r\n\r\n default:\r\n throw new Error(`Unknown action \"${action}\". Valid actions are: spawn, status, terminate, read_results, list`);\r\n }\r\n },\r\n};\r\n"],"mappings":"AAQA,SAAS,uBAAuB;AAEzB,MAAM,eAAqB;AAAA,EAC9B,QAAQ;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA0Bb,YAAY;AAAA,MACR,MAAM;AAAA,MACN,YAAY;AAAA,QACR,QAAQ;AAAA,UACJ,MAAM;AAAA,UACN,MAAM,CAAC,SAAS,mBAAmB,aAAa,gBAAgB,MAAM;AAAA,UACtE,aAAa;AAAA,QACjB;AAAA,QACA,UAAU;AAAA,UACN,MAAM;AAAA,UACN,aAAa;AAAA,QACjB;AAAA,QACA,YAAY;AAAA,UACR,MAAM;AAAA,UACN,aAAa;AAAA,QACjB;AAAA,QACA,QAAQ;AAAA,UACJ,MAAM;AAAA,UACN,aAAa;AAAA,QACjB;AAAA,QACA,SAAS;AAAA,UACL,MAAM;AAAA,UACN,aAAa;AAAA,QACjB;AAAA,QACA,mBAAmB;AAAA,UACf,MAAM;AAAA,UACN,aAAa;AAAA,QACjB;AAAA,QACA,YAAY;AAAA,UACR,MAAM;AAAA,UACN,aAAa;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,UAAU,CAAC,QAAQ;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,MAAM,SAAS;AACzB,UAAM,EAAE,QAAQ,UAAU,QAAQ,SAAS,cAAc,mBAAmB,YAAY,WAAW,IAAI;AAEvG,YAAQ,QAAQ;AAAA,MACZ,KAAK,SAAS;AAEV,YAAI,CAAC,QAAQ;AACT,gBAAM,IAAI,MAAM,wDAAwD;AAAA,QAC5E;AACA,YAAI,CAAC,mBAAmB;AACpB,gBAAM,IAAI,MAAM,mEAAmE;AAAA,QACvF;AACA,YAAI,eAAe,UAAa,eAAe,MAAM;AACjD,gBAAM,IAAI,MAAM,4DAA4D;AAAA,QAChF;AACA,YAAI,aAAa,KAAK,aAAa,IAAI;AACnC,gBAAM,IAAI,MAAM,qCAAqC;AAAA,QACzD;AAKA,cAAM,SAAS,MAAM,gBAAgB,cAAc;AAAA,UAC/C;AAAA,UACA,SAAS,gBAAgB;AAAA,UACzB,kBAAkB;AAAA,UAClB;AAAA,UACA,sBAAsB,QAAQ;AAAA,QAClC,CAAC;AAED,YAAI,CAAC,OAAO,SAAS;AACjB,gBAAM,IAAI,MAAM,OAAO,SAAS,2BAA2B;AAAA,QAC/D;AAEA,cAAM,YAAY,cAAc,IAAI,2BAA2B;AAE/D,eAAO;AAAA;AAAA,gBAEP,OAAO,OAAO;AAAA,aACjB,SAAS,iBAAiB,UAAU;AAAA,yBACxB,iBAAiB;AAAA,YAC9B,OAAO,UAAU,GAAG,GAAG,CAAC,GAAG,OAAO,SAAS,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,oDAGnB,OAAO,OAAO;AAAA,8CACpB,OAAO,OAAO;AAAA,iDACX,OAAO,OAAO;AAAA;AAAA;AAAA,MAGnD;AAAA,MAEA,KAAK,mBAAmB;AACpB,YAAI,CAAC,UAAU;AACX,gBAAM,IAAI,MAAM,oEAAoE;AAAA,QACxF;AAGA,YAAI,cAAc,aAAa,GAAG;AAC9B,gBAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,aAAa,GAAI,CAAC;AAAA,QACvE;AAEA,cAAM,WAAW,gBAAgB,YAAY,QAAQ;AACrD,YAAI,CAAC,UAAU;AAEX,gBAAM,YAAY,gBAAgB,gBAAgB;AAClD,cAAI,UAAU,WAAW,GAAG;AACxB,kBAAM,IAAI,MAAM,cAAc,QAAQ,mDAAmD;AAAA,UAC7F;AACA,gBAAM,YAAY,UAAU;AAAA,YAAI,OAC5B,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,MAAM,EAAE,OAAO,UAAU,GAAG,EAAE,CAAC;AAAA,UACzD,EAAE,KAAK,IAAI;AACX,gBAAM,IAAI,MAAM,cAAc,QAAQ;AAAA;AAAA;AAAA,EAA0C,SAAS,EAAE;AAAA,QAC/F;AAEA,cAAM,cAAc,SAAS,WAAW,oBAAI,KAAK,GAAG,QAAQ,IAAI,SAAS,UAAU,QAAQ;AAC3F,cAAM,cAAc,KAAK,MAAM,aAAa,GAAI;AAEhD,YAAI,cAAc;AAClB,YAAI,SAAS,WAAW,UAAW,eAAc;AAAA,iBACxC,SAAS,WAAW,YAAa,eAAc;AAAA,iBAC/C,SAAS,WAAW,SAAU,eAAc;AAAA,iBAC5C,SAAS,WAAW,aAAc,eAAc;AAEzD,YAAI,gBAAgB;AAAA;AAAA,gBAEpB,QAAQ;AAAA,cACV,WAAW,IAAI,SAAS,MAAM;AAAA,aAC/B,SAAS,KAAK;AAAA,gBACX,WAAW;AAAA,aACd,SAAS,SAAS;AAAA,uBACR,SAAS,eAAe,MAAM;AAAA,kBACnC,SAAS,YAAY,MAAM;AAE7B,YAAI,SAAS,QAAQ;AACjB,2BAAiB;AAAA;AAAA,cAAmB,SAAS,MAAM;AAAA,QACvD;AAEA,YAAI,SAAS,OAAO;AAChB,2BAAiB;AAAA;AAAA,aAAkB,SAAS,KAAK;AAAA,QACrD;AAEA,YAAI,SAAS,WAAW,eAAe,SAAS,WAAW,YAAY,SAAS,WAAW,cAAc;AACrG,2BAAiB;AAAA;AAAA,mDAAwD,QAAQ;AAAA,QACrF;AAEA,eAAO;AAAA,MACX;AAAA,MAEA,KAAK,aAAa;AACd,YAAI,CAAC,UAAU;AACX,gBAAM,IAAI,MAAM,8DAA8D;AAAA,QAClF;AAEA,cAAM,SAAS,gBAAgB,kBAAkB,QAAQ;AACzD,YAAI,CAAC,OAAO,SAAS;AACjB,gBAAM,IAAI,MAAM,OAAO,SAAS,+BAA+B;AAAA,QACnE;AAEA,eAAO;AAAA;AAAA,gBAEP,QAAQ;AAAA;AAAA;AAAA,mFAG2D,QAAQ;AAAA,MAC/E;AAAA,MAEA,KAAK,gBAAgB;AACjB,YAAI,CAAC,UAAU;AACX,gBAAM,IAAI,MAAM,iEAAiE;AAAA,QACrF;AAEA,cAAM,WAAW,gBAAgB,YAAY,QAAQ;AACrD,YAAI,CAAC,UAAU;AACX,gBAAM,IAAI,MAAM,cAAc,QAAQ,aAAa;AAAA,QACvD;AAEA,YAAI,SAAS,WAAW,aAAa,SAAS,WAAW,WAAW;AAChE,gBAAM,IAAI,MAAM,cAAc,QAAQ,oEAAoE;AAAA,QAC9G;AAGA,cAAM,aAAa,gBAAgB,gBAAgB,QAAQ;AAG3D,wBAAgB,iBAAiB,QAAQ;AAEzC,eAAO;AAAA,MACX;AAAA,MAEA,KAAK,QAAQ;AACT,cAAM,YAAY,gBAAgB,gBAAgB;AAElD,YAAI,UAAU,WAAW,GAAG;AACxB,iBAAO;AAAA,QACX;AAEA,cAAM,eAAe,UAAU,OAAO,OAAK,EAAE,WAAW,aAAa,EAAE,WAAW,SAAS,EAAE;AAC7F,cAAM,iBAAiB,UAAU,OAAO,OAAK,EAAE,WAAW,WAAW,EAAE;AACvE,cAAM,cAAc,UAAU,OAAO,OAAK,EAAE,WAAW,YAAY,EAAE,WAAW,YAAY,EAAE;AAE9F,YAAI,SAAS;AAAA;AAAA,eAEd,YAAY;AAAA,iBACV,cAAc;AAAA,yBACN,WAAW;AAAA;AAAA;AAAA;AAKpB,mBAAW,SAAS,WAAW;AAC3B,cAAI,cAAc;AAClB,cAAI,MAAM,WAAW,UAAW,eAAc;AAAA,mBACrC,MAAM,WAAW,YAAa,eAAc;AAAA,mBAC5C,MAAM,WAAW,SAAU,eAAc;AAAA,mBACzC,MAAM,WAAW,aAAc,eAAc;AAEtD,gBAAM,cAAc,MAAM,OAAO,UAAU,GAAG,EAAE,KAAK,MAAM,OAAO,SAAS,KAAK,QAAQ;AACxF,oBAAU;AAAA,EAAK,WAAW,MAAM,MAAM,EAAE,OAAO,MAAM,MAAM;AAAA,WAAe,WAAW;AAAA;AAAA,QACzF;AAEA,eAAO;AAAA,MACX;AAAA,MAEA;AACI,cAAM,IAAI,MAAM,mBAAmB,MAAM,oEAAoE;AAAA,IACrH;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
IMPORTANT - How to use this tool:
|
|
7
|
-
1. First, output ALL your response text (explanations, summaries, results, etc.)
|
|
8
|
-
2. Then call task_complete() with NO PARAMETERS to signal you are done
|
|
9
|
-
|
|
10
|
-
This tool takes NO parameters. Your response text should be streamed before calling this tool.
|
|
11
|
-
|
|
12
|
-
EXAMPLES:
|
|
13
|
-
- User: "Hey"
|
|
14
|
-
- User: "Fix the bug"
|
|
15
|
-
- User: "Add feature X"
|
|
16
|
-
|
|
1
|
+
const taskCompleteTool = {
|
|
2
|
+
schema: {
|
|
3
|
+
name: "task_complete",
|
|
4
|
+
description: `FINAL TOOL - Call this to end the conversation after completing the user's request.
|
|
5
|
+
|
|
6
|
+
IMPORTANT - How to use this tool:
|
|
7
|
+
1. First, output ALL your response text (explanations, summaries, results, etc.)
|
|
8
|
+
2. Then call task_complete() with NO PARAMETERS to signal you are done
|
|
9
|
+
|
|
10
|
+
This tool takes NO parameters. Your response text should be streamed before calling this tool.
|
|
11
|
+
|
|
12
|
+
EXAMPLES:
|
|
13
|
+
- User: "Hey" \u2192 Output: "Hello! How can I help you today?" \u2192 Then call: task_complete()
|
|
14
|
+
- User: "Fix the bug" \u2192 Do work \u2192 Output: "I've fixed the bug by..." \u2192 Then call: task_complete()
|
|
15
|
+
- User: "Add feature X" \u2192 Do work \u2192 Output: "I've implemented feature X. Here's what I did..." \u2192 Then call: task_complete()
|
|
16
|
+
|
|
17
17
|
DO NOT include any summary in this tool call - put all your response in the text output before calling this tool.`,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
parameters: {
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: {},
|
|
21
|
+
required: []
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
async execute() {
|
|
25
|
+
return "Task completed.";
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
export {
|
|
29
|
+
taskCompleteTool
|
|
29
30
|
};
|
|
30
31
|
//# sourceMappingURL=task-complete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/tools/task-complete.ts"],"sourcesContent":["import { Tool } from './types.js';\r\n\r\nexport const taskCompleteTool: Tool = {\r\n schema: {\r\n name: 'task_complete',\r\n description: `FINAL TOOL - Call this to end the conversation after completing the user's request.\r\n\r\nIMPORTANT - How to use this tool:\r\n1. First, output ALL your response text (explanations, summaries, results, etc.)\r\n2. Then call task_complete() with NO PARAMETERS to signal you are done\r\n\r\nThis tool takes NO parameters. Your response text should be streamed before calling this tool.\r\n\r\nEXAMPLES:\r\n- User: \"Hey\" → Output: \"Hello! How can I help you today?\" → Then call: task_complete()\r\n- User: \"Fix the bug\" → Do work → Output: \"I've fixed the bug by...\" → Then call: task_complete()\r\n- User: \"Add feature X\" → Do work → Output: \"I've implemented feature X. Here's what I did...\" → Then call: task_complete()\r\n\r\nDO NOT include any summary in this tool call - put all your response in the text output before calling this tool.`,\r\n parameters: {\r\n type: 'object',\r\n properties: {},\r\n required: [],\r\n },\r\n },\r\n async execute() {\r\n // This tool just signals completion - no parameters needed\r\n // All response content should be streamed before this tool is called\r\n return 'Task completed.';\r\n },\r\n};\r\n\r\n"],"mappings":"AAEO,MAAM,mBAAyB;AAAA,EACpC,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcb,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,MACb,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAAA,EACA,MAAM,UAAU;AAGd,WAAO;AAAA,EACT;AACF;","names":[]}
|
package/dist/tools/types.js
CHANGED
package/dist/tools/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|