@within-7/minto 0.4.2 → 0.4.3
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/cli.cjs +32 -154
- package/cli.js +3255 -0
- package/package.json +21 -38
- package/scripts/postinstall.cjs +19 -136
- package/vendor/ripgrep/arm64-linux/rg +0 -0
- package/vendor/ripgrep/x64-darwin/rg +0 -0
- package/vendor/ripgrep/x64-linux/rg +0 -0
- package/vendor/ripgrep/x64-win32/rg.exe +0 -0
- package/dist/Tool.js +0 -46
- package/dist/Tool.js.map +0 -7
- package/dist/commands/agents/AgentsCommand.js +0 -2170
- package/dist/commands/agents/AgentsCommand.js.map +0 -7
- package/dist/commands/agents/constants.js +0 -58
- package/dist/commands/agents/constants.js.map +0 -7
- package/dist/commands/agents/index.js +0 -37
- package/dist/commands/agents/index.js.map +0 -7
- package/dist/commands/agents/types.js +0 -11
- package/dist/commands/agents/types.js.map +0 -7
- package/dist/commands/agents/utils/fileOperations.js +0 -245
- package/dist/commands/agents/utils/fileOperations.js.map +0 -7
- package/dist/commands/agents/utils/index.js +0 -23
- package/dist/commands/agents/utils/index.js.map +0 -7
- package/dist/commands/approvedTools.js +0 -36
- package/dist/commands/approvedTools.js.map +0 -7
- package/dist/commands/bug.js +0 -88
- package/dist/commands/bug.js.map +0 -7
- package/dist/commands/clear.js +0 -41
- package/dist/commands/clear.js.map +0 -7
- package/dist/commands/compact.js +0 -119
- package/dist/commands/compact.js.map +0 -7
- package/dist/commands/config.js +0 -20
- package/dist/commands/config.js.map +0 -7
- package/dist/commands/context.js +0 -118
- package/dist/commands/context.js.map +0 -7
- package/dist/commands/cost.js +0 -19
- package/dist/commands/cost.js.map +0 -7
- package/dist/commands/ctx_viz.js +0 -193
- package/dist/commands/ctx_viz.js.map +0 -7
- package/dist/commands/doctor.js +0 -171
- package/dist/commands/doctor.js.map +0 -7
- package/dist/commands/effort.js +0 -87
- package/dist/commands/effort.js.map +0 -7
- package/dist/commands/export.js +0 -747
- package/dist/commands/export.js.map +0 -7
- package/dist/commands/help.js +0 -20
- package/dist/commands/help.js.map +0 -7
- package/dist/commands/ide.js +0 -18
- package/dist/commands/ide.js.map +0 -7
- package/dist/commands/init.js +0 -38
- package/dist/commands/init.js.map +0 -7
- package/dist/commands/language.js +0 -110
- package/dist/commands/language.js.map +0 -7
- package/dist/commands/login.js +0 -128
- package/dist/commands/login.js.map +0 -7
- package/dist/commands/mcp-interactive.js +0 -485
- package/dist/commands/mcp-interactive.js.map +0 -7
- package/dist/commands/memory.js +0 -119
- package/dist/commands/memory.js.map +0 -7
- package/dist/commands/model.js +0 -497
- package/dist/commands/model.js.map +0 -7
- package/dist/commands/new.js +0 -56
- package/dist/commands/new.js.map +0 -7
- package/dist/commands/outputStyle.js +0 -64
- package/dist/commands/outputStyle.js.map +0 -7
- package/dist/commands/permissions.js +0 -113
- package/dist/commands/permissions.js.map +0 -7
- package/dist/commands/plugin/AddMarketplaceForm.js +0 -91
- package/dist/commands/plugin/AddMarketplaceForm.js.map +0 -7
- package/dist/commands/plugin/ConfirmDialog.js +0 -84
- package/dist/commands/plugin/ConfirmDialog.js.map +0 -7
- package/dist/commands/plugin/ErrorView.js +0 -34
- package/dist/commands/plugin/ErrorView.js.map +0 -7
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js +0 -152
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +0 -7
- package/dist/commands/plugin/InstalledPluginsManager.js +0 -102
- package/dist/commands/plugin/InstalledPluginsManager.js.map +0 -7
- package/dist/commands/plugin/LoadingView.js +0 -14
- package/dist/commands/plugin/LoadingView.js.map +0 -7
- package/dist/commands/plugin/MainMenu.js +0 -67
- package/dist/commands/plugin/MainMenu.js.map +0 -7
- package/dist/commands/plugin/MarketplaceManager.js +0 -201
- package/dist/commands/plugin/MarketplaceManager.js.map +0 -7
- package/dist/commands/plugin/MarketplaceSelector.js +0 -124
- package/dist/commands/plugin/MarketplaceSelector.js.map +0 -7
- package/dist/commands/plugin/PlaceholderScreen.js +0 -31
- package/dist/commands/plugin/PlaceholderScreen.js.map +0 -7
- package/dist/commands/plugin/PluginBrowser.js +0 -183
- package/dist/commands/plugin/PluginBrowser.js.map +0 -7
- package/dist/commands/plugin/PluginDetailsInstall.js +0 -159
- package/dist/commands/plugin/PluginDetailsInstall.js.map +0 -7
- package/dist/commands/plugin/PluginDetailsManage.js +0 -210
- package/dist/commands/plugin/PluginDetailsManage.js.map +0 -7
- package/dist/commands/plugin/components.js +0 -16
- package/dist/commands/plugin/components.js.map +0 -7
- package/dist/commands/plugin/example-usage.js +0 -63
- package/dist/commands/plugin/example-usage.js.map +0 -7
- package/dist/commands/plugin/types.js +0 -1
- package/dist/commands/plugin/types.js.map +0 -7
- package/dist/commands/plugin/utils.js +0 -109
- package/dist/commands/plugin/utils.js.map +0 -7
- package/dist/commands/plugin.js +0 -1410
- package/dist/commands/plugin.js.map +0 -7
- package/dist/commands/quit.js +0 -20
- package/dist/commands/quit.js.map +0 -7
- package/dist/commands/refreshCommands.js +0 -48
- package/dist/commands/refreshCommands.js.map +0 -7
- package/dist/commands/resume.js +0 -71
- package/dist/commands/resume.js.map +0 -7
- package/dist/commands/review.js +0 -51
- package/dist/commands/review.js.map +0 -7
- package/dist/commands/sandbox.js +0 -203
- package/dist/commands/sandbox.js.map +0 -7
- package/dist/commands/sessions.js +0 -224
- package/dist/commands/sessions.js.map +0 -7
- package/dist/commands/setup.js +0 -653
- package/dist/commands/setup.js.map +0 -7
- package/dist/commands/stats.js +0 -292
- package/dist/commands/stats.js.map +0 -7
- package/dist/commands/status.js +0 -127
- package/dist/commands/status.js.map +0 -7
- package/dist/commands/tasks.js +0 -108
- package/dist/commands/tasks.js.map +0 -7
- package/dist/commands/terminalSetup.js +0 -174
- package/dist/commands/terminalSetup.js.map +0 -7
- package/dist/commands/todos.js +0 -123
- package/dist/commands/todos.js.map +0 -7
- package/dist/commands/undo.js +0 -227
- package/dist/commands/undo.js.map +0 -7
- package/dist/commands/vim.js +0 -22
- package/dist/commands/vim.js.map +0 -7
- package/dist/commands.js +0 -130
- package/dist/commands.js.map +0 -7
- package/dist/components/AgentDetailView.js +0 -126
- package/dist/components/AgentDetailView.js.map +0 -7
- package/dist/components/AgentResponseBlock.js +0 -41
- package/dist/components/AgentResponseBlock.js.map +0 -7
- package/dist/components/AgentThinkingBlock.js +0 -32
- package/dist/components/AgentThinkingBlock.js.map +0 -7
- package/dist/components/AgentViewBanner.js +0 -22
- package/dist/components/AgentViewBanner.js.map +0 -7
- package/dist/components/AsciiLogo.js +0 -18
- package/dist/components/AsciiLogo.js.map +0 -7
- package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +0 -142
- package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +0 -7
- package/dist/components/AskUserQuestionDialog/QuestionView.js +0 -55
- package/dist/components/AskUserQuestionDialog/QuestionView.js.map +0 -7
- package/dist/components/AskUserQuestionDialog/index.js +0 -7
- package/dist/components/AskUserQuestionDialog/index.js.map +0 -7
- package/dist/components/BackgroundTasksPanel.js +0 -177
- package/dist/components/BackgroundTasksPanel.js.map +0 -7
- package/dist/components/BashStreamingProgress.js +0 -24
- package/dist/components/BashStreamingProgress.js.map +0 -7
- package/dist/components/CollapsibleHint.js +0 -15
- package/dist/components/CollapsibleHint.js.map +0 -7
- package/dist/components/Config.js +0 -181
- package/dist/components/Config.js.map +0 -7
- package/dist/components/ConsoleOAuthFlow.js +0 -179
- package/dist/components/ConsoleOAuthFlow.js.map +0 -7
- package/dist/components/Cost.js +0 -14
- package/dist/components/Cost.js.map +0 -7
- package/dist/components/CostThresholdDialog.js +0 -38
- package/dist/components/CostThresholdDialog.js.map +0 -7
- package/dist/components/CustomSelect/option-map.js +0 -32
- package/dist/components/CustomSelect/option-map.js.map +0 -7
- package/dist/components/CustomSelect/select-option.js +0 -37
- package/dist/components/CustomSelect/select-option.js.map +0 -7
- package/dist/components/CustomSelect/select.js +0 -64
- package/dist/components/CustomSelect/select.js.map +0 -7
- package/dist/components/CustomSelect/theme.js +0 -1
- package/dist/components/CustomSelect/theme.js.map +0 -7
- package/dist/components/CustomSelect/use-select-state.js +0 -220
- package/dist/components/CustomSelect/use-select-state.js.map +0 -7
- package/dist/components/CustomSelect/use-select.js +0 -21
- package/dist/components/CustomSelect/use-select.js.map +0 -7
- package/dist/components/FallbackToolUseRejectedMessage.js +0 -11
- package/dist/components/FallbackToolUseRejectedMessage.js.map +0 -7
- package/dist/components/FileEditToolUpdatedMessage.js +0 -32
- package/dist/components/FileEditToolUpdatedMessage.js.map +0 -7
- package/dist/components/HeaderBar.js +0 -63
- package/dist/components/HeaderBar.js.map +0 -7
- package/dist/components/Help.js +0 -185
- package/dist/components/Help.js.map +0 -7
- package/dist/components/HighlightedCode.js +0 -31
- package/dist/components/HighlightedCode.js.map +0 -7
- package/dist/components/HistorySearchOverlay.js +0 -49
- package/dist/components/HistorySearchOverlay.js.map +0 -7
- package/dist/components/HotkeyHelpPanel.js +0 -154
- package/dist/components/HotkeyHelpPanel.js.map +0 -7
- package/dist/components/IdleNotificationBar.js +0 -10
- package/dist/components/IdleNotificationBar.js.map +0 -7
- package/dist/components/InfoPanel/InfoPanel.js +0 -123
- package/dist/components/InfoPanel/InfoPanel.js.map +0 -7
- package/dist/components/InfoPanel/index.js +0 -5
- package/dist/components/InfoPanel/index.js.map +0 -7
- package/dist/components/InfoPanel/types.js +0 -1
- package/dist/components/InfoPanel/types.js.map +0 -7
- package/dist/components/InteractionRoundBlock.js +0 -56
- package/dist/components/InteractionRoundBlock.js.map +0 -7
- package/dist/components/InvalidConfigDialog.js +0 -84
- package/dist/components/InvalidConfigDialog.js.map +0 -7
- package/dist/components/Link.js +0 -18
- package/dist/components/Link.js.map +0 -7
- package/dist/components/LogSelector.js +0 -50
- package/dist/components/LogSelector.js.map +0 -7
- package/dist/components/Logo.js +0 -55
- package/dist/components/Logo.js.map +0 -7
- package/dist/components/MCPServerApprovalDialog.js +0 -81
- package/dist/components/MCPServerApprovalDialog.js.map +0 -7
- package/dist/components/MCPServerDialogCopy.js +0 -12
- package/dist/components/MCPServerDialogCopy.js.map +0 -7
- package/dist/components/MCPServerMultiselectDialog.js +0 -82
- package/dist/components/MCPServerMultiselectDialog.js.map +0 -7
- package/dist/components/Message.js +0 -162
- package/dist/components/Message.js.map +0 -7
- package/dist/components/MessageResponse.js +0 -9
- package/dist/components/MessageResponse.js.map +0 -7
- package/dist/components/MessageSelector.js +0 -127
- package/dist/components/MessageSelector.js.map +0 -7
- package/dist/components/ModeIndicator.js +0 -39
- package/dist/components/ModeIndicator.js.map +0 -7
- package/dist/components/ModelConfig.js +0 -223
- package/dist/components/ModelConfig.js.map +0 -7
- package/dist/components/ModelListManager.js +0 -142
- package/dist/components/ModelListManager.js.map +0 -7
- package/dist/components/ModelSelector/BrandTextInput.js +0 -43
- package/dist/components/ModelSelector/BrandTextInput.js.map +0 -7
- package/dist/components/ModelSelector/ModelSelector.js +0 -2103
- package/dist/components/ModelSelector/ModelSelector.js.map +0 -7
- package/dist/components/ModelSelector/ScreenContainer.js +0 -27
- package/dist/components/ModelSelector/ScreenContainer.js.map +0 -7
- package/dist/components/ModelSelector/WizardContainer.js +0 -45
- package/dist/components/ModelSelector/WizardContainer.js.map +0 -7
- package/dist/components/ModelSelector/constants.js +0 -37
- package/dist/components/ModelSelector/constants.js.map +0 -7
- package/dist/components/ModelSelector/hooks/index.js +0 -5
- package/dist/components/ModelSelector/hooks/index.js.map +0 -7
- package/dist/components/ModelSelector/hooks/useEscapeNavigation.js +0 -21
- package/dist/components/ModelSelector/hooks/useEscapeNavigation.js.map +0 -7
- package/dist/components/ModelSelector/index.js +0 -15
- package/dist/components/ModelSelector/index.js.map +0 -7
- package/dist/components/ModelSelector/types.js +0 -1
- package/dist/components/ModelSelector/types.js.map +0 -7
- package/dist/components/Onboarding.js +0 -159
- package/dist/components/Onboarding.js.map +0 -7
- package/dist/components/OperationSummary.js +0 -130
- package/dist/components/OperationSummary.js.map +0 -7
- package/dist/components/PressEnterToContinue.js +0 -10
- package/dist/components/PressEnterToContinue.js.map +0 -7
- package/dist/components/ProgressBar.js +0 -74
- package/dist/components/ProgressBar.js.map +0 -7
- package/dist/components/ProjectOnboarding.js +0 -99
- package/dist/components/ProjectOnboarding.js.map +0 -7
- package/dist/components/PromptInput.js +0 -1067
- package/dist/components/PromptInput.js.map +0 -7
- package/dist/components/PulseLabel.js +0 -44
- package/dist/components/PulseLabel.js.map +0 -7
- package/dist/components/QuitSummary.js +0 -88
- package/dist/components/QuitSummary.js.map +0 -7
- package/dist/components/RequestStatusIndicator.js +0 -194
- package/dist/components/RequestStatusIndicator.js.map +0 -7
- package/dist/components/RewindPanel.js +0 -272
- package/dist/components/RewindPanel.js.map +0 -7
- package/dist/components/SensitiveFileWarning.js +0 -35
- package/dist/components/SensitiveFileWarning.js.map +0 -7
- package/dist/components/SentryErrorBoundary.js +0 -27
- package/dist/components/SentryErrorBoundary.js.map +0 -7
- package/dist/components/SimpleSelector/SimpleSelector.js +0 -154
- package/dist/components/SimpleSelector/SimpleSelector.js.map +0 -7
- package/dist/components/SimpleSelector/index.js +0 -5
- package/dist/components/SimpleSelector/index.js.map +0 -7
- package/dist/components/SimpleSelector/types.js +0 -1
- package/dist/components/SimpleSelector/types.js.map +0 -7
- package/dist/components/Spinner.js +0 -174
- package/dist/components/Spinner.js.map +0 -7
- package/dist/components/SpinnerSymbol.js +0 -72
- package/dist/components/SpinnerSymbol.js.map +0 -7
- package/dist/components/StartupStatus.js +0 -57
- package/dist/components/StartupStatus.js.map +0 -7
- package/dist/components/StatusOverlayContent.js +0 -21
- package/dist/components/StatusOverlayContent.js.map +0 -7
- package/dist/components/StreamingBashOutput.js +0 -71
- package/dist/components/StreamingBashOutput.js.map +0 -7
- package/dist/components/StreamingTextPreview.js +0 -29
- package/dist/components/StreamingTextPreview.js.map +0 -7
- package/dist/components/StructuredDiff.js +0 -146
- package/dist/components/StructuredDiff.js.map +0 -7
- package/dist/components/SubagentBlock.js +0 -197
- package/dist/components/SubagentBlock.js.map +0 -7
- package/dist/components/SubagentManager.js +0 -65
- package/dist/components/SubagentManager.js.map +0 -7
- package/dist/components/SubagentProgress.js +0 -123
- package/dist/components/SubagentProgress.js.map +0 -7
- package/dist/components/SubagentStatusMarker.js +0 -37
- package/dist/components/SubagentStatusMarker.js.map +0 -7
- package/dist/components/TabbedListView/ScrollableList.js +0 -117
- package/dist/components/TabbedListView/ScrollableList.js.map +0 -7
- package/dist/components/TabbedListView/SearchInput.js +0 -23
- package/dist/components/TabbedListView/SearchInput.js.map +0 -7
- package/dist/components/TabbedListView/TabBar.js +0 -25
- package/dist/components/TabbedListView/TabBar.js.map +0 -7
- package/dist/components/TabbedListView/TabbedListView.js +0 -292
- package/dist/components/TabbedListView/TabbedListView.js.map +0 -7
- package/dist/components/TabbedListView/index.js +0 -11
- package/dist/components/TabbedListView/index.js.map +0 -7
- package/dist/components/TabbedListView/types.js +0 -1
- package/dist/components/TabbedListView/types.js.map +0 -7
- package/dist/components/TaskCard.js +0 -176
- package/dist/components/TaskCard.js.map +0 -7
- package/dist/components/TeamMemberPanel.js +0 -107
- package/dist/components/TeamMemberPanel.js.map +0 -7
- package/dist/components/TextInput.js +0 -108
- package/dist/components/TextInput.js.map +0 -7
- package/dist/components/ThinkingSelector.js +0 -84
- package/dist/components/ThinkingSelector.js.map +0 -7
- package/dist/components/TimelineRenderer.js +0 -31
- package/dist/components/TimelineRenderer.js.map +0 -7
- package/dist/components/TitledDivider.js +0 -26
- package/dist/components/TitledDivider.js.map +0 -7
- package/dist/components/TodoChangeBlock.js +0 -30
- package/dist/components/TodoChangeBlock.js.map +0 -7
- package/dist/components/TodoChangeLine.js +0 -22
- package/dist/components/TodoChangeLine.js.map +0 -7
- package/dist/components/TodoItem.js +0 -35
- package/dist/components/TodoItem.js.map +0 -7
- package/dist/components/TodoPanel.js +0 -167
- package/dist/components/TodoPanel.js.map +0 -7
- package/dist/components/TokenCounter.js +0 -74
- package/dist/components/TokenCounter.js.map +0 -7
- package/dist/components/TokenWarning.js +0 -41
- package/dist/components/TokenWarning.js.map +0 -7
- package/dist/components/ToolExecutionBlock.js +0 -18
- package/dist/components/ToolExecutionBlock.js.map +0 -7
- package/dist/components/ToolUseLoader.js +0 -29
- package/dist/components/ToolUseLoader.js.map +0 -7
- package/dist/components/TreeConnector.js +0 -26
- package/dist/components/TreeConnector.js.map +0 -7
- package/dist/components/TrustDialog.js +0 -71
- package/dist/components/TrustDialog.js.map +0 -7
- package/dist/components/TurnCompletionIndicator.js +0 -18
- package/dist/components/TurnCompletionIndicator.js.map +0 -7
- package/dist/components/UserQueryBlock.js +0 -12
- package/dist/components/UserQueryBlock.js.map +0 -7
- package/dist/components/binary-feedback/BinaryFeedback.js +0 -50
- package/dist/components/binary-feedback/BinaryFeedback.js.map +0 -7
- package/dist/components/binary-feedback/BinaryFeedbackOption.js +0 -92
- package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +0 -7
- package/dist/components/binary-feedback/BinaryFeedbackView.js +0 -140
- package/dist/components/binary-feedback/BinaryFeedbackView.js.map +0 -7
- package/dist/components/binary-feedback/utils.js +0 -108
- package/dist/components/binary-feedback/utils.js.map +0 -7
- package/dist/components/messages/AssistantBashOutputMessage.js +0 -23
- package/dist/components/messages/AssistantBashOutputMessage.js.map +0 -7
- package/dist/components/messages/AssistantLocalCommandOutputMessage.js +0 -36
- package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +0 -7
- package/dist/components/messages/AssistantRedactedThinkingMessage.js +0 -12
- package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +0 -7
- package/dist/components/messages/AssistantTextMessage.js +0 -92
- package/dist/components/messages/AssistantTextMessage.js.map +0 -7
- package/dist/components/messages/AssistantThinkingMessage.js +0 -42
- package/dist/components/messages/AssistantThinkingMessage.js.map +0 -7
- package/dist/components/messages/AssistantToolUseMessage.js +0 -108
- package/dist/components/messages/AssistantToolUseMessage.js.map +0 -7
- package/dist/components/messages/DefaultToolResultFallback.js +0 -11
- package/dist/components/messages/DefaultToolResultFallback.js.map +0 -7
- package/dist/components/messages/GroupRenderer.js +0 -54
- package/dist/components/messages/GroupRenderer.js.map +0 -7
- package/dist/components/messages/NestedTasksPreview.js +0 -24
- package/dist/components/messages/NestedTasksPreview.js.map +0 -7
- package/dist/components/messages/ParallelTasksGroupView.js +0 -101
- package/dist/components/messages/ParallelTasksGroupView.js.map +0 -7
- package/dist/components/messages/TaskInModuleView.js +0 -218
- package/dist/components/messages/TaskInModuleView.js.map +0 -7
- package/dist/components/messages/TaskOutputContent.js +0 -56
- package/dist/components/messages/TaskOutputContent.js.map +0 -7
- package/dist/components/messages/TaskProgressMessage.js +0 -11
- package/dist/components/messages/TaskProgressMessage.js.map +0 -7
- package/dist/components/messages/TaskToolMessage.js +0 -39
- package/dist/components/messages/TaskToolMessage.js.map +0 -7
- package/dist/components/messages/UserBashInputMessage.js +0 -18
- package/dist/components/messages/UserBashInputMessage.js.map +0 -7
- package/dist/components/messages/UserCommandMessage.js +0 -20
- package/dist/components/messages/UserCommandMessage.js.map +0 -7
- package/dist/components/messages/UserGuidanceMessage.js +0 -26
- package/dist/components/messages/UserGuidanceMessage.js.map +0 -7
- package/dist/components/messages/UserKodingInputMessage.js +0 -18
- package/dist/components/messages/UserKodingInputMessage.js.map +0 -7
- package/dist/components/messages/UserPromptMessage.js +0 -26
- package/dist/components/messages/UserPromptMessage.js.map +0 -7
- package/dist/components/messages/UserTeamNotificationMessage.js +0 -91
- package/dist/components/messages/UserTeamNotificationMessage.js.map +0 -7
- package/dist/components/messages/UserTextMessage.js +0 -33
- package/dist/components/messages/UserTextMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +0 -11
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +0 -15
- package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +0 -27
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +0 -64
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +0 -33
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/utils.js +0 -50
- package/dist/components/messages/UserToolResultMessage/utils.js.map +0 -7
- package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -112
- package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +0 -7
- package/dist/components/permissions/FallbackPermissionRequest.js +0 -131
- package/dist/components/permissions/FallbackPermissionRequest.js.map +0 -7
- package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -159
- package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +0 -7
- package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -58
- package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +0 -7
- package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -153
- package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +0 -7
- package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -70
- package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +0 -7
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -212
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +0 -7
- package/dist/components/permissions/PermissionRequest.js +0 -74
- package/dist/components/permissions/PermissionRequest.js.map +0 -7
- package/dist/components/permissions/PermissionRequestTitle.js +0 -52
- package/dist/components/permissions/PermissionRequestTitle.js.map +0 -7
- package/dist/components/permissions/PlanApprovalRequest.js +0 -164
- package/dist/components/permissions/PlanApprovalRequest.js.map +0 -7
- package/dist/components/permissions/hooks.js +0 -23
- package/dist/components/permissions/hooks.js.map +0 -7
- package/dist/components/permissions/toolUseOptions.js +0 -46
- package/dist/components/permissions/toolUseOptions.js.map +0 -7
- package/dist/components/permissions/utils.js +0 -21
- package/dist/components/permissions/utils.js.map +0 -7
- package/dist/constants/agentTeams.js +0 -17
- package/dist/constants/agentTeams.js.map +0 -7
- package/dist/constants/claude-asterisk-ascii-art.js +0 -242
- package/dist/constants/claude-asterisk-ascii-art.js.map +0 -7
- package/dist/constants/colors.js +0 -192
- package/dist/constants/colors.js.map +0 -7
- package/dist/constants/compressionPrompts.js +0 -73
- package/dist/constants/compressionPrompts.js.map +0 -7
- package/dist/constants/figures.js +0 -6
- package/dist/constants/figures.js.map +0 -7
- package/dist/constants/formatRules.js +0 -102
- package/dist/constants/formatRules.js.map +0 -7
- package/dist/constants/macros.js +0 -12
- package/dist/constants/macros.js.map +0 -7
- package/dist/constants/modelCapabilities.js +0 -239
- package/dist/constants/modelCapabilities.js.map +0 -7
- package/dist/constants/models.js +0 -1034
- package/dist/constants/models.js.map +0 -7
- package/dist/constants/oauth.js +0 -18
- package/dist/constants/oauth.js.map +0 -7
- package/dist/constants/product.js +0 -28
- package/dist/constants/product.js.map +0 -7
- package/dist/constants/prompts/agentPrompt.js +0 -31
- package/dist/constants/prompts/agentPrompt.js.map +0 -7
- package/dist/constants/prompts/autoMemory.js +0 -39
- package/dist/constants/prompts/autoMemory.js.map +0 -7
- package/dist/constants/prompts/codeConventions.js +0 -15
- package/dist/constants/prompts/codeConventions.js.map +0 -7
- package/dist/constants/prompts/doingTasks.js +0 -34
- package/dist/constants/prompts/doingTasks.js.map +0 -7
- package/dist/constants/prompts/envInfo.js +0 -16
- package/dist/constants/prompts/envInfo.js.map +0 -7
- package/dist/constants/prompts/executingWithCare.js +0 -17
- package/dist/constants/prompts/executingWithCare.js.map +0 -7
- package/dist/constants/prompts/identity.js +0 -10
- package/dist/constants/prompts/identity.js.map +0 -7
- package/dist/constants/prompts/index.js +0 -100
- package/dist/constants/prompts/index.js.map +0 -7
- package/dist/constants/prompts/taskManagement.js +0 -19
- package/dist/constants/prompts/taskManagement.js.map +0 -7
- package/dist/constants/prompts/teamOverlays.js +0 -50
- package/dist/constants/prompts/teamOverlays.js.map +0 -7
- package/dist/constants/prompts/toneAndStyle.js +0 -37
- package/dist/constants/prompts/toneAndStyle.js.map +0 -7
- package/dist/constants/prompts/toolUsagePolicy.js +0 -23
- package/dist/constants/prompts/toolUsagePolicy.js.map +0 -7
- package/dist/constants/prompts.js +0 -13
- package/dist/constants/prompts.js.map +0 -7
- package/dist/constants/providerRegistry.js +0 -235
- package/dist/constants/providerRegistry.js.map +0 -7
- package/dist/constants/providers.js +0 -35
- package/dist/constants/providers.js.map +0 -7
- package/dist/constants/releaseNotes.js +0 -9
- package/dist/constants/releaseNotes.js.map +0 -7
- package/dist/constants/symbols.js +0 -108
- package/dist/constants/symbols.js.map +0 -7
- package/dist/constants/timing.js +0 -39
- package/dist/constants/timing.js.map +0 -7
- package/dist/constants/toolInputExamples.js +0 -88
- package/dist/constants/toolInputExamples.js.map +0 -7
- package/dist/context/PermissionContext.js +0 -110
- package/dist/context/PermissionContext.js.map +0 -7
- package/dist/context.js +0 -367
- package/dist/context.js.map +0 -7
- package/dist/core/backupHook.js +0 -29
- package/dist/core/backupHook.js.map +0 -7
- package/dist/core/backupManager.js +0 -321
- package/dist/core/backupManager.js.map +0 -7
- package/dist/core/config/defaults.js +0 -93
- package/dist/core/config/defaults.js.map +0 -7
- package/dist/core/config/index.js +0 -111
- package/dist/core/config/index.js.map +0 -7
- package/dist/core/config/loader.js +0 -221
- package/dist/core/config/loader.js.map +0 -7
- package/dist/core/config/migrations.js +0 -128
- package/dist/core/config/migrations.js.map +0 -7
- package/dist/core/config/schema.js +0 -196
- package/dist/core/config/schema.js.map +0 -7
- package/dist/core/costTracker.js +0 -131
- package/dist/core/costTracker.js.map +0 -7
- package/dist/core/gitAutoCommit.js +0 -287
- package/dist/core/gitAutoCommit.js.map +0 -7
- package/dist/core/index.js +0 -7
- package/dist/core/index.js.map +0 -7
- package/dist/core/operationTracker.js +0 -212
- package/dist/core/operationTracker.js.map +0 -7
- package/dist/core/permissions/auditLog.js +0 -204
- package/dist/core/permissions/auditLog.js.map +0 -7
- package/dist/core/permissions/engine/index.js +0 -3
- package/dist/core/permissions/engine/index.js.map +0 -7
- package/dist/core/permissions/engine/permissionEngine.js +0 -106
- package/dist/core/permissions/engine/permissionEngine.js.map +0 -7
- package/dist/core/permissions/engine/types.js +0 -1
- package/dist/core/permissions/engine/types.js.map +0 -7
- package/dist/core/permissions/index.js +0 -84
- package/dist/core/permissions/index.js.map +0 -7
- package/dist/core/permissions/ruleEngine.js +0 -259
- package/dist/core/permissions/ruleEngine.js.map +0 -7
- package/dist/core/permissions/rules/allowedToolsRule.js +0 -62
- package/dist/core/permissions/rules/allowedToolsRule.js.map +0 -7
- package/dist/core/permissions/rules/autoEscalationRule.js +0 -296
- package/dist/core/permissions/rules/autoEscalationRule.js.map +0 -7
- package/dist/core/permissions/rules/index.js +0 -46
- package/dist/core/permissions/rules/index.js.map +0 -7
- package/dist/core/permissions/rules/planModeRule.js +0 -55
- package/dist/core/permissions/rules/planModeRule.js.map +0 -7
- package/dist/core/permissions/rules/projectBoundaryRule.js +0 -173
- package/dist/core/permissions/rules/projectBoundaryRule.js.map +0 -7
- package/dist/core/permissions/rules/safeModeRule.js +0 -65
- package/dist/core/permissions/rules/safeModeRule.js.map +0 -7
- package/dist/core/permissions/rules/sensitivePathsRule.js +0 -345
- package/dist/core/permissions/rules/sensitivePathsRule.js.map +0 -7
- package/dist/core/permissions/types.js +0 -127
- package/dist/core/permissions/types.js.map +0 -7
- package/dist/core/tokenStats.js +0 -9
- package/dist/core/tokenStats.js.map +0 -7
- package/dist/core/tokenStatsManager.js +0 -354
- package/dist/core/tokenStatsManager.js.map +0 -7
- package/dist/core/tools/executor.js +0 -143
- package/dist/core/tools/executor.js.map +0 -7
- package/dist/core/tools/index.js +0 -15
- package/dist/core/tools/index.js.map +0 -7
- package/dist/core/tools/registry.js +0 -183
- package/dist/core/tools/registry.js.map +0 -7
- package/dist/core/tools/types.js +0 -1
- package/dist/core/tools/types.js.map +0 -7
- package/dist/cost-tracker.js +0 -68
- package/dist/cost-tracker.js.map +0 -7
- package/dist/engine/AgentEngine.js +0 -902
- package/dist/engine/AgentEngine.js.map +0 -7
- package/dist/engine/EngineRegistry.js +0 -89
- package/dist/engine/EngineRegistry.js.map +0 -7
- package/dist/engine/foregroundAdapter.js +0 -191
- package/dist/engine/foregroundAdapter.js.map +0 -7
- package/dist/engine/index.js +0 -15
- package/dist/engine/index.js.map +0 -7
- package/dist/engine/types.js +0 -1
- package/dist/engine/types.js.map +0 -7
- package/dist/entrypoints/bootstrap.js +0 -56
- package/dist/entrypoints/bootstrap.js.map +0 -7
- package/dist/entrypoints/cli.js +0 -1721
- package/dist/entrypoints/cli.js.map +0 -7
- package/dist/entrypoints/mcp.js +0 -153
- package/dist/entrypoints/mcp.js.map +0 -7
- package/dist/history.js +0 -96
- package/dist/history.js.map +0 -7
- package/dist/hooks/useAgentEngine.js +0 -129
- package/dist/hooks/useAgentEngine.js.map +0 -7
- package/dist/hooks/useAgentTokenStats.js +0 -56
- package/dist/hooks/useAgentTokenStats.js.map +0 -7
- package/dist/hooks/useAgentTranscripts.js +0 -141
- package/dist/hooks/useAgentTranscripts.js.map +0 -7
- package/dist/hooks/useAnimationSync.js +0 -53
- package/dist/hooks/useAnimationSync.js.map +0 -7
- package/dist/hooks/useApiKeyVerification.js +0 -12
- package/dist/hooks/useApiKeyVerification.js.map +0 -7
- package/dist/hooks/useArrowKeyHistory.js +0 -52
- package/dist/hooks/useArrowKeyHistory.js.map +0 -7
- package/dist/hooks/useAskUser.js +0 -24
- package/dist/hooks/useAskUser.js.map +0 -7
- package/dist/hooks/useBackgroundShells.js +0 -29
- package/dist/hooks/useBackgroundShells.js.map +0 -7
- package/dist/hooks/useCanUseTool.js +0 -134
- package/dist/hooks/useCanUseTool.js.map +0 -7
- package/dist/hooks/useDeferredLoading.js +0 -67
- package/dist/hooks/useDeferredLoading.js.map +0 -7
- package/dist/hooks/useDoublePress.js +0 -31
- package/dist/hooks/useDoublePress.js.map +0 -7
- package/dist/hooks/useExitOnCtrlCD.js +0 -30
- package/dist/hooks/useExitOnCtrlCD.js.map +0 -7
- package/dist/hooks/useHistorySearch.js +0 -62
- package/dist/hooks/useHistorySearch.js.map +0 -7
- package/dist/hooks/useHookStatus.js +0 -40
- package/dist/hooks/useHookStatus.js.map +0 -7
- package/dist/hooks/useIdleNotifications.js +0 -66
- package/dist/hooks/useIdleNotifications.js.map +0 -7
- package/dist/hooks/useInterval.js +0 -18
- package/dist/hooks/useInterval.js.map +0 -7
- package/dist/hooks/useLogMessages.js +0 -41
- package/dist/hooks/useLogMessages.js.map +0 -7
- package/dist/hooks/useLogStartupTime.js +0 -10
- package/dist/hooks/useLogStartupTime.js.map +0 -7
- package/dist/hooks/useMessageGroups.js +0 -43
- package/dist/hooks/useMessageGroups.js.map +0 -7
- package/dist/hooks/useNotifyAfterTimeout.js +0 -42
- package/dist/hooks/useNotifyAfterTimeout.js.map +0 -7
- package/dist/hooks/usePermissionRequestLogging.js +0 -23
- package/dist/hooks/usePermissionRequestLogging.js.map +0 -7
- package/dist/hooks/useSessionTracking.js +0 -57
- package/dist/hooks/useSessionTracking.js.map +0 -7
- package/dist/hooks/useTeamMembers.js +0 -51
- package/dist/hooks/useTeamMembers.js.map +0 -7
- package/dist/hooks/useTerminalSize.js +0 -115
- package/dist/hooks/useTerminalSize.js.map +0 -7
- package/dist/hooks/useTextInput.js +0 -253
- package/dist/hooks/useTextInput.js.map +0 -7
- package/dist/hooks/useUnifiedCompletion.js +0 -1098
- package/dist/hooks/useUnifiedCompletion.js.map +0 -7
- package/dist/i18n/index.js +0 -109
- package/dist/i18n/index.js.map +0 -7
- package/dist/i18n/locales/en.js +0 -993
- package/dist/i18n/locales/en.js.map +0 -7
- package/dist/i18n/locales/index.js +0 -7
- package/dist/i18n/locales/index.js.map +0 -7
- package/dist/i18n/locales/zh-CN.js +0 -993
- package/dist/i18n/locales/zh-CN.js.map +0 -7
- package/dist/i18n/types.js +0 -8
- package/dist/i18n/types.js.map +0 -7
- package/dist/index.js +0 -5
- package/dist/index.js.map +0 -7
- package/dist/messages.js +0 -68
- package/dist/messages.js.map +0 -7
- package/dist/package.json +0 -4
- package/dist/permissions.js +0 -536
- package/dist/permissions.js.map +0 -7
- package/dist/query.js +0 -851
- package/dist/query.js.map +0 -7
- package/dist/screens/LogList.js +0 -55
- package/dist/screens/LogList.js.map +0 -7
- package/dist/screens/REPL.js +0 -1240
- package/dist/screens/REPL.js.map +0 -7
- package/dist/screens/ResumeConversation.js +0 -244
- package/dist/screens/ResumeConversation.js.map +0 -7
- package/dist/services/adapters/base.js +0 -29
- package/dist/services/adapters/base.js.map +0 -7
- package/dist/services/adapters/chatCompletions.js +0 -71
- package/dist/services/adapters/chatCompletions.js.map +0 -7
- package/dist/services/adapters/messageNormalizer.js +0 -354
- package/dist/services/adapters/messageNormalizer.js.map +0 -7
- package/dist/services/adapters/responsesAPI.js +0 -137
- package/dist/services/adapters/responsesAPI.js.map +0 -7
- package/dist/services/agentTeams/backends/headless.js +0 -108
- package/dist/services/agentTeams/backends/headless.js.map +0 -7
- package/dist/services/agentTeams/backends/inProcess.js +0 -102
- package/dist/services/agentTeams/backends/inProcess.js.map +0 -7
- package/dist/services/agentTeams/backends/resolver.js +0 -18
- package/dist/services/agentTeams/backends/resolver.js.map +0 -7
- package/dist/services/agentTeams/backends/tmux.js +0 -168
- package/dist/services/agentTeams/backends/tmux.js.map +0 -7
- package/dist/services/agentTeams/backends/types.js +0 -1
- package/dist/services/agentTeams/backends/types.js.map +0 -7
- package/dist/services/agentTeams/heartbeat.js +0 -88
- package/dist/services/agentTeams/heartbeat.js.map +0 -7
- package/dist/services/agentTeams/index.js +0 -75
- package/dist/services/agentTeams/index.js.map +0 -7
- package/dist/services/agentTeams/injectionChannel.js +0 -105
- package/dist/services/agentTeams/injectionChannel.js.map +0 -7
- package/dist/services/agentTeams/mailbox.js +0 -494
- package/dist/services/agentTeams/mailbox.js.map +0 -7
- package/dist/services/agentTeams/messageFormatter.js +0 -80
- package/dist/services/agentTeams/messageFormatter.js.map +0 -7
- package/dist/services/agentTeams/permissionDelegation.js +0 -71
- package/dist/services/agentTeams/permissionDelegation.js.map +0 -7
- package/dist/services/agentTeams/teamEvents.js +0 -45
- package/dist/services/agentTeams/teamEvents.js.map +0 -7
- package/dist/services/agentTeams/teamManager.js +0 -366
- package/dist/services/agentTeams/teamManager.js.map +0 -7
- package/dist/services/agentTeams/teamTaskStore.js +0 -343
- package/dist/services/agentTeams/teamTaskStore.js.map +0 -7
- package/dist/services/agentTeams/teammateSpawner.js +0 -161
- package/dist/services/agentTeams/teammateSpawner.js.map +0 -7
- package/dist/services/checkpointManager.js +0 -399
- package/dist/services/checkpointManager.js.map +0 -7
- package/dist/services/claude.js +0 -41
- package/dist/services/claude.js.map +0 -7
- package/dist/services/compressionService.js +0 -259
- package/dist/services/compressionService.js.map +0 -7
- package/dist/services/contextMonitor.js +0 -162
- package/dist/services/contextMonitor.js.map +0 -7
- package/dist/services/customCommands.js +0 -489
- package/dist/services/customCommands.js.map +0 -7
- package/dist/services/fileFreshness.js +0 -275
- package/dist/services/fileFreshness.js.map +0 -7
- package/dist/services/gpt5ConnectionTest.js +0 -263
- package/dist/services/gpt5ConnectionTest.js.map +0 -7
- package/dist/services/hookExecutor.js +0 -771
- package/dist/services/hookExecutor.js.map +0 -7
- package/dist/services/intelligentCompactor.js +0 -281
- package/dist/services/intelligentCompactor.js.map +0 -7
- package/dist/services/llm/anthropicProvider.js +0 -804
- package/dist/services/llm/anthropicProvider.js.map +0 -7
- package/dist/services/llm/dispatch.js +0 -237
- package/dist/services/llm/dispatch.js.map +0 -7
- package/dist/services/llm/index.js +0 -44
- package/dist/services/llm/index.js.map +0 -7
- package/dist/services/llm/mintoContext.js +0 -69
- package/dist/services/llm/mintoContext.js.map +0 -7
- package/dist/services/llm/openaiProvider.js +0 -601
- package/dist/services/llm/openaiProvider.js.map +0 -7
- package/dist/services/llm/types.js +0 -231
- package/dist/services/llm/types.js.map +0 -7
- package/dist/services/lspConfig.js +0 -109
- package/dist/services/lspConfig.js.map +0 -7
- package/dist/services/mainAgentCompressor.js +0 -84
- package/dist/services/mainAgentCompressor.js.map +0 -7
- package/dist/services/mcpClient.js +0 -997
- package/dist/services/mcpClient.js.map +0 -7
- package/dist/services/mcpServerApproval.js +0 -55
- package/dist/services/mcpServerApproval.js.map +0 -7
- package/dist/services/mentionProcessor.js +0 -214
- package/dist/services/mentionProcessor.js.map +0 -7
- package/dist/services/mintoAuth.js +0 -299
- package/dist/services/mintoAuth.js.map +0 -7
- package/dist/services/modelAdapterFactory.js +0 -47
- package/dist/services/modelAdapterFactory.js.map +0 -7
- package/dist/services/modelOrchestrator.js +0 -310
- package/dist/services/modelOrchestrator.js.map +0 -7
- package/dist/services/notifier.js +0 -49
- package/dist/services/notifier.js.map +0 -7
- package/dist/services/oauth.js +0 -249
- package/dist/services/oauth.js.map +0 -7
- package/dist/services/openai.js +0 -1120
- package/dist/services/openai.js.map +0 -7
- package/dist/services/outputStyles.js +0 -219
- package/dist/services/outputStyles.js.map +0 -7
- package/dist/services/plugins/index.js +0 -5
- package/dist/services/plugins/index.js.map +0 -7
- package/dist/services/plugins/lspServers.js +0 -188
- package/dist/services/plugins/lspServers.js.map +0 -7
- package/dist/services/plugins/pluginRuntime.js +0 -236
- package/dist/services/plugins/pluginRuntime.js.map +0 -7
- package/dist/services/plugins/pluginValidation.js +0 -228
- package/dist/services/plugins/pluginValidation.js.map +0 -7
- package/dist/services/plugins/skillMarketplace.js +0 -567
- package/dist/services/plugins/skillMarketplace.js.map +0 -7
- package/dist/services/responseStateManager.js +0 -102
- package/dist/services/responseStateManager.js.map +0 -7
- package/dist/services/sandbox/filesystemBoundary.js +0 -341
- package/dist/services/sandbox/filesystemBoundary.js.map +0 -7
- package/dist/services/sandbox/index.js +0 -14
- package/dist/services/sandbox/index.js.map +0 -7
- package/dist/services/sandbox/networkProxy.js +0 -293
- package/dist/services/sandbox/networkProxy.js.map +0 -7
- package/dist/services/sandbox/sandboxController.js +0 -582
- package/dist/services/sandbox/sandboxController.js.map +0 -7
- package/dist/services/sandbox/types.js +0 -50
- package/dist/services/sandbox/types.js.map +0 -7
- package/dist/services/sentry.js +0 -9
- package/dist/services/sentry.js.map +0 -7
- package/dist/services/sessionMemory.js +0 -279
- package/dist/services/sessionMemory.js.map +0 -7
- package/dist/services/sessionMemoryInjector.js +0 -77
- package/dist/services/sessionMemoryInjector.js.map +0 -7
- package/dist/services/subagentAbortManager.js +0 -95
- package/dist/services/subagentAbortManager.js.map +0 -7
- package/dist/services/subagentCompressor.js +0 -146
- package/dist/services/subagentCompressor.js.map +0 -7
- package/dist/services/systemReminder.js +0 -815
- package/dist/services/systemReminder.js.map +0 -7
- package/dist/services/taskRouter.js +0 -324
- package/dist/services/taskRouter.js.map +0 -7
- package/dist/services/taskStore.js +0 -415
- package/dist/services/taskStore.js.map +0 -7
- package/dist/services/topicDetector.js +0 -169
- package/dist/services/topicDetector.js.map +0 -7
- package/dist/services/vcr.js +0 -133
- package/dist/services/vcr.js.map +0 -7
- package/dist/tools/ArchitectTool/ArchitectTool.js +0 -126
- package/dist/tools/ArchitectTool/ArchitectTool.js.map +0 -7
- package/dist/tools/ArchitectTool/prompt.js +0 -18
- package/dist/tools/ArchitectTool/prompt.js.map +0 -7
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -420
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +0 -7
- package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js +0 -158
- package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +0 -7
- package/dist/tools/AskUserQuestionTool/index.js +0 -5
- package/dist/tools/AskUserQuestionTool/index.js.map +0 -7
- package/dist/tools/AskUserQuestionTool/prompt.js +0 -167
- package/dist/tools/AskUserQuestionTool/prompt.js.map +0 -7
- package/dist/tools/BaseTool.js +0 -72
- package/dist/tools/BaseTool.js.map +0 -7
- package/dist/tools/BashOutputTool/BashOutputTool.js +0 -120
- package/dist/tools/BashOutputTool/BashOutputTool.js.map +0 -7
- package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +0 -14
- package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +0 -7
- package/dist/tools/BashOutputTool/prompt.js +0 -13
- package/dist/tools/BashOutputTool/prompt.js.map +0 -7
- package/dist/tools/BashTool/BashTool.js +0 -353
- package/dist/tools/BashTool/BashTool.js.map +0 -7
- package/dist/tools/BashTool/BashToolResultMessage.js +0 -24
- package/dist/tools/BashTool/BashToolResultMessage.js.map +0 -7
- package/dist/tools/BashTool/OutputLine.js +0 -84
- package/dist/tools/BashTool/OutputLine.js.map +0 -7
- package/dist/tools/BashTool/prompt.js +0 -496
- package/dist/tools/BashTool/prompt.js.map +0 -7
- package/dist/tools/BashTool/utils.js +0 -89
- package/dist/tools/BashTool/utils.js.map +0 -7
- package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js +0 -121
- package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js.map +0 -7
- package/dist/tools/EnterWorktreeTool/prompt.js +0 -22
- package/dist/tools/EnterWorktreeTool/prompt.js.map +0 -7
- package/dist/tools/FileEditTool/FileEditTool.js +0 -278
- package/dist/tools/FileEditTool/FileEditTool.js.map +0 -7
- package/dist/tools/FileEditTool/prompt.js +0 -56
- package/dist/tools/FileEditTool/prompt.js.map +0 -7
- package/dist/tools/FileEditTool/utils.js +0 -48
- package/dist/tools/FileEditTool/utils.js.map +0 -7
- package/dist/tools/FileReadTool/FileReadTool.js +0 -427
- package/dist/tools/FileReadTool/FileReadTool.js.map +0 -7
- package/dist/tools/FileReadTool/prompt.js +0 -24
- package/dist/tools/FileReadTool/prompt.js.map +0 -7
- package/dist/tools/FileWriteTool/FileWriteTool.js +0 -211
- package/dist/tools/FileWriteTool/FileWriteTool.js.map +0 -7
- package/dist/tools/FileWriteTool/prompt.js +0 -21
- package/dist/tools/FileWriteTool/prompt.js.map +0 -7
- package/dist/tools/GlobTool/GlobTool.js +0 -100
- package/dist/tools/GlobTool/GlobTool.js.map +0 -7
- package/dist/tools/GlobTool/prompt.js +0 -23
- package/dist/tools/GlobTool/prompt.js.map +0 -7
- package/dist/tools/GrepTool/GrepTool.js +0 -417
- package/dist/tools/GrepTool/GrepTool.js.map +0 -7
- package/dist/tools/GrepTool/prompt.js +0 -22
- package/dist/tools/GrepTool/prompt.js.map +0 -7
- package/dist/tools/KillShellTool/KillShellTool.js +0 -92
- package/dist/tools/KillShellTool/KillShellTool.js.map +0 -7
- package/dist/tools/KillShellTool/KillShellToolResultMessage.js +0 -14
- package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +0 -7
- package/dist/tools/KillShellTool/prompt.js +0 -12
- package/dist/tools/KillShellTool/prompt.js.map +0 -7
- package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +0 -109
- package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +0 -7
- package/dist/tools/ListMcpResourcesTool/prompt.js +0 -19
- package/dist/tools/ListMcpResourcesTool/prompt.js.map +0 -7
- package/dist/tools/LspTool/LspTool.js +0 -673
- package/dist/tools/LspTool/LspTool.js.map +0 -7
- package/dist/tools/LspTool/prompt.js +0 -27
- package/dist/tools/LspTool/prompt.js.map +0 -7
- package/dist/tools/MCPSearchTool/MCPSearchTool.js +0 -172
- package/dist/tools/MCPSearchTool/MCPSearchTool.js.map +0 -7
- package/dist/tools/MCPSearchTool/prompt.js +0 -77
- package/dist/tools/MCPSearchTool/prompt.js.map +0 -7
- package/dist/tools/MCPTool/MCPTool.js +0 -97
- package/dist/tools/MCPTool/MCPTool.js.map +0 -7
- package/dist/tools/MCPTool/prompt.js +0 -7
- package/dist/tools/MCPTool/prompt.js.map +0 -7
- package/dist/tools/MemoryReadTool/MemoryReadTool.js +0 -117
- package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +0 -7
- package/dist/tools/MemoryReadTool/prompt.js +0 -7
- package/dist/tools/MemoryReadTool/prompt.js.map +0 -7
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +0 -78
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +0 -7
- package/dist/tools/MemoryWriteTool/prompt.js +0 -7
- package/dist/tools/MemoryWriteTool/prompt.js.map +0 -7
- package/dist/tools/MultiEditTool/MultiEditTool.js +0 -328
- package/dist/tools/MultiEditTool/MultiEditTool.js.map +0 -7
- package/dist/tools/MultiEditTool/prompt.js +0 -47
- package/dist/tools/MultiEditTool/prompt.js.map +0 -7
- package/dist/tools/NotebookEditTool/NotebookEditTool.js +0 -257
- package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +0 -7
- package/dist/tools/NotebookEditTool/prompt.js +0 -7
- package/dist/tools/NotebookEditTool/prompt.js.map +0 -7
- package/dist/tools/NotebookReadTool/NotebookReadTool.js +0 -218
- package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +0 -7
- package/dist/tools/NotebookReadTool/prompt.js +0 -7
- package/dist/tools/NotebookReadTool/prompt.js.map +0 -7
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js +0 -85
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +0 -7
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js +0 -164
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +0 -7
- package/dist/tools/PlanModeTool/prompt.js +0 -43
- package/dist/tools/PlanModeTool/prompt.js.map +0 -7
- package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +0 -130
- package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js.map +0 -7
- package/dist/tools/ReadMcpResourceTool/prompt.js +0 -17
- package/dist/tools/ReadMcpResourceTool/prompt.js.map +0 -7
- package/dist/tools/SendMessageTool/SendMessageTool.js +0 -341
- package/dist/tools/SendMessageTool/SendMessageTool.js.map +0 -7
- package/dist/tools/SendMessageTool/prompt.js +0 -44
- package/dist/tools/SendMessageTool/prompt.js.map +0 -7
- package/dist/tools/SkillTool/SkillTool.js +0 -227
- package/dist/tools/SkillTool/SkillTool.js.map +0 -7
- package/dist/tools/SkillTool/prompt.js +0 -81
- package/dist/tools/SkillTool/prompt.js.map +0 -7
- package/dist/tools/SlashCommandTool/SlashCommandTool.js +0 -416
- package/dist/tools/SlashCommandTool/SlashCommandTool.js.map +0 -7
- package/dist/tools/SlashCommandTool/prompt.js +0 -35
- package/dist/tools/SlashCommandTool/prompt.js.map +0 -7
- package/dist/tools/TaskCreateTool/TaskCreateTool.js +0 -102
- package/dist/tools/TaskCreateTool/TaskCreateTool.js.map +0 -7
- package/dist/tools/TaskCreateTool/prompt.js +0 -58
- package/dist/tools/TaskCreateTool/prompt.js.map +0 -7
- package/dist/tools/TaskGetTool/TaskGetTool.js +0 -115
- package/dist/tools/TaskGetTool/TaskGetTool.js.map +0 -7
- package/dist/tools/TaskGetTool/prompt.js +0 -28
- package/dist/tools/TaskGetTool/prompt.js.map +0 -7
- package/dist/tools/TaskListTool/TaskListTool.js +0 -102
- package/dist/tools/TaskListTool/TaskListTool.js.map +0 -7
- package/dist/tools/TaskListTool/prompt.js +0 -42
- package/dist/tools/TaskListTool/prompt.js.map +0 -7
- package/dist/tools/TaskOutputTool/TaskOutputTool.js +0 -190
- package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +0 -7
- package/dist/tools/TaskOutputTool/prompt.js +0 -16
- package/dist/tools/TaskOutputTool/prompt.js.map +0 -7
- package/dist/tools/TaskStopTool/TaskStopTool.js +0 -150
- package/dist/tools/TaskStopTool/TaskStopTool.js.map +0 -7
- package/dist/tools/TaskStopTool/prompt.js +0 -15
- package/dist/tools/TaskStopTool/prompt.js.map +0 -7
- package/dist/tools/TaskTool/TaskTool.js +0 -1525
- package/dist/tools/TaskTool/TaskTool.js.map +0 -7
- package/dist/tools/TaskTool/constants.js +0 -11
- package/dist/tools/TaskTool/constants.js.map +0 -7
- package/dist/tools/TaskTool/prompt.js +0 -121
- package/dist/tools/TaskTool/prompt.js.map +0 -7
- package/dist/tools/TaskUpdateTool/TaskUpdateTool.js +0 -148
- package/dist/tools/TaskUpdateTool/TaskUpdateTool.js.map +0 -7
- package/dist/tools/TaskUpdateTool/prompt.js +0 -81
- package/dist/tools/TaskUpdateTool/prompt.js.map +0 -7
- package/dist/tools/TeamCreateTool/TeamCreateTool.js +0 -129
- package/dist/tools/TeamCreateTool/TeamCreateTool.js.map +0 -7
- package/dist/tools/TeamCreateTool/prompt.js +0 -58
- package/dist/tools/TeamCreateTool/prompt.js.map +0 -7
- package/dist/tools/TeamDeleteTool/TeamDeleteTool.js +0 -151
- package/dist/tools/TeamDeleteTool/TeamDeleteTool.js.map +0 -7
- package/dist/tools/TeamDeleteTool/prompt.js +0 -16
- package/dist/tools/TeamDeleteTool/prompt.js.map +0 -7
- package/dist/tools/ThinkTool/ThinkTool.js +0 -45
- package/dist/tools/ThinkTool/ThinkTool.js.map +0 -7
- package/dist/tools/ThinkTool/prompt.js +0 -16
- package/dist/tools/ThinkTool/prompt.js.map +0 -7
- package/dist/tools/TodoWriteTool/TodoWriteTool.js +0 -232
- package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +0 -7
- package/dist/tools/TodoWriteTool/prompt.js +0 -87
- package/dist/tools/TodoWriteTool/prompt.js.map +0 -7
- package/dist/tools/URLFetcherTool/URLFetcherTool.js +0 -234
- package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +0 -7
- package/dist/tools/URLFetcherTool/cache.js +0 -95
- package/dist/tools/URLFetcherTool/cache.js.map +0 -7
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js +0 -44
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +0 -7
- package/dist/tools/URLFetcherTool/prompt.js +0 -28
- package/dist/tools/URLFetcherTool/prompt.js.map +0 -7
- package/dist/tools/WebSearchTool/WebSearchTool.js +0 -92
- package/dist/tools/WebSearchTool/WebSearchTool.js.map +0 -7
- package/dist/tools/WebSearchTool/prompt.js +0 -24
- package/dist/tools/WebSearchTool/prompt.js.map +0 -7
- package/dist/tools/WebSearchTool/searchProviders.js +0 -58
- package/dist/tools/WebSearchTool/searchProviders.js.map +0 -7
- package/dist/tools/lsTool/lsTool.js +0 -201
- package/dist/tools/lsTool/lsTool.js.map +0 -7
- package/dist/tools/lsTool/prompt.js +0 -5
- package/dist/tools/lsTool/prompt.js.map +0 -7
- package/dist/tools.js +0 -207
- package/dist/tools.js.map +0 -7
- package/dist/types/PermissionMode.js +0 -160
- package/dist/types/PermissionMode.js.map +0 -7
- package/dist/types/RequestContext.js +0 -47
- package/dist/types/RequestContext.js.map +0 -7
- package/dist/types/agentTeams.js +0 -1
- package/dist/types/agentTeams.js.map +0 -7
- package/dist/types/askUserQuestion.js +0 -1
- package/dist/types/askUserQuestion.js.map +0 -7
- package/dist/types/common.d.js +0 -1
- package/dist/types/common.d.js.map +0 -7
- package/dist/types/conversation.js +0 -1
- package/dist/types/conversation.js.map +0 -7
- package/dist/types/core.js +0 -1
- package/dist/types/core.js.map +0 -7
- package/dist/types/hooks.js +0 -47
- package/dist/types/hooks.js.map +0 -7
- package/dist/types/interactionRound.js +0 -1
- package/dist/types/interactionRound.js.map +0 -7
- package/dist/types/logs.js +0 -1
- package/dist/types/logs.js.map +0 -7
- package/dist/types/marketplace.js +0 -107
- package/dist/types/marketplace.js.map +0 -7
- package/dist/types/messageGroup.js +0 -36
- package/dist/types/messageGroup.js.map +0 -7
- package/dist/types/modelCapabilities.js +0 -1
- package/dist/types/modelCapabilities.js.map +0 -7
- package/dist/types/notebook.js +0 -1
- package/dist/types/notebook.js.map +0 -7
- package/dist/types/plugin.js +0 -86
- package/dist/types/plugin.js.map +0 -7
- package/dist/types/subagent.js +0 -1
- package/dist/types/subagent.js.map +0 -7
- package/dist/types/thinking.js +0 -1
- package/dist/types/thinking.js.map +0 -7
- package/dist/utils/BackgroundShellManager.js +0 -378
- package/dist/utils/BackgroundShellManager.js.map +0 -7
- package/dist/utils/CircuitBreaker.js +0 -248
- package/dist/utils/CircuitBreaker.js.map +0 -7
- package/dist/utils/Cursor.js +0 -315
- package/dist/utils/Cursor.js.map +0 -7
- package/dist/utils/MessageBatchBuffer.js +0 -102
- package/dist/utils/MessageBatchBuffer.js.map +0 -7
- package/dist/utils/PersistentShell.js +0 -526
- package/dist/utils/PersistentShell.js.map +0 -7
- package/dist/utils/advancedFuzzyMatcher.js +0 -209
- package/dist/utils/advancedFuzzyMatcher.js.map +0 -7
- package/dist/utils/agentHookExecutor.js +0 -103
- package/dist/utils/agentHookExecutor.js.map +0 -7
- package/dist/utils/agentLoader.js +0 -655
- package/dist/utils/agentLoader.js.map +0 -7
- package/dist/utils/agentMemory.js +0 -134
- package/dist/utils/agentMemory.js.map +0 -7
- package/dist/utils/agentStorage.js +0 -59
- package/dist/utils/agentStorage.js.map +0 -7
- package/dist/utils/agentTranscripts.js +0 -641
- package/dist/utils/agentTranscripts.js.map +0 -7
- package/dist/utils/animationManager.js +0 -250
- package/dist/utils/animationManager.js.map +0 -7
- package/dist/utils/animationSync.js +0 -110
- package/dist/utils/animationSync.js.map +0 -7
- package/dist/utils/array.js +0 -7
- package/dist/utils/array.js.map +0 -7
- package/dist/utils/ask.js +0 -80
- package/dist/utils/ask.js.map +0 -7
- package/dist/utils/async.js +0 -167
- package/dist/utils/async.js.map +0 -7
- package/dist/utils/asyncFile.js +0 -215
- package/dist/utils/asyncFile.js.map +0 -7
- package/dist/utils/atomicWrite.js +0 -23
- package/dist/utils/atomicWrite.js.map +0 -7
- package/dist/utils/auth.js +0 -11
- package/dist/utils/auth.js.map +0 -7
- package/dist/utils/autoCompactCore.js +0 -203
- package/dist/utils/autoCompactCore.js.map +0 -7
- package/dist/utils/autoMemoryPaths.js +0 -89
- package/dist/utils/autoMemoryPaths.js.map +0 -7
- package/dist/utils/autoUpdater.js +0 -113
- package/dist/utils/autoUpdater.js.map +0 -7
- package/dist/utils/backgroundAgentManager.js +0 -231
- package/dist/utils/backgroundAgentManager.js.map +0 -7
- package/dist/utils/browser.js +0 -15
- package/dist/utils/browser.js.map +0 -7
- package/dist/utils/claudeCodeSync.js +0 -439
- package/dist/utils/claudeCodeSync.js.map +0 -7
- package/dist/utils/cleanup.js +0 -54
- package/dist/utils/cleanup.js.map +0 -7
- package/dist/utils/commands.js +0 -219
- package/dist/utils/commands.js.map +0 -7
- package/dist/utils/commonUnixCommands.js +0 -689
- package/dist/utils/commonUnixCommands.js.map +0 -7
- package/dist/utils/compressionMode.js +0 -47
- package/dist/utils/compressionMode.js.map +0 -7
- package/dist/utils/config.js +0 -716
- package/dist/utils/config.js.map +0 -7
- package/dist/utils/configPaths.js +0 -199
- package/dist/utils/configPaths.js.map +0 -7
- package/dist/utils/configSchema.js +0 -232
- package/dist/utils/configSchema.js.map +0 -7
- package/dist/utils/conversationRecovery.js +0 -54
- package/dist/utils/conversationRecovery.js.map +0 -7
- package/dist/utils/credentials/CredentialStore.js +0 -1
- package/dist/utils/credentials/CredentialStore.js.map +0 -7
- package/dist/utils/credentials/EncryptedFileStore.js +0 -157
- package/dist/utils/credentials/EncryptedFileStore.js.map +0 -7
- package/dist/utils/credentials/index.js +0 -51
- package/dist/utils/credentials/index.js.map +0 -7
- package/dist/utils/credentials/migration.js +0 -82
- package/dist/utils/credentials/migration.js.map +0 -7
- package/dist/utils/debugLogger.js +0 -889
- package/dist/utils/debugLogger.js.map +0 -7
- package/dist/utils/diff.js +0 -32
- package/dist/utils/diff.js.map +0 -7
- package/dist/utils/dualPath.js +0 -24
- package/dist/utils/dualPath.js.map +0 -7
- package/dist/utils/env.js +0 -45
- package/dist/utils/env.js.map +0 -7
- package/dist/utils/envConfig.js +0 -116
- package/dist/utils/envConfig.js.map +0 -7
- package/dist/utils/errorHandling.js +0 -89
- package/dist/utils/errorHandling.js.map +0 -7
- package/dist/utils/errors.js +0 -23
- package/dist/utils/errors.js.map +0 -7
- package/dist/utils/execFileNoThrow.js +0 -45
- package/dist/utils/execFileNoThrow.js.map +0 -7
- package/dist/utils/exit.js +0 -132
- package/dist/utils/exit.js.map +0 -7
- package/dist/utils/expertChatStorage.js +0 -78
- package/dist/utils/expertChatStorage.js.map +0 -7
- package/dist/utils/externalEditor.js +0 -155
- package/dist/utils/externalEditor.js.map +0 -7
- package/dist/utils/file.js +0 -282
- package/dist/utils/file.js.map +0 -7
- package/dist/utils/fileLock.js +0 -67
- package/dist/utils/fileLock.js.map +0 -7
- package/dist/utils/fileRecoveryCore.js +0 -41
- package/dist/utils/fileRecoveryCore.js.map +0 -7
- package/dist/utils/format.js +0 -119
- package/dist/utils/format.js.map +0 -7
- package/dist/utils/fuzzyMatcher.js +0 -258
- package/dist/utils/fuzzyMatcher.js.map +0 -7
- package/dist/utils/generators.js +0 -116
- package/dist/utils/generators.js.map +0 -7
- package/dist/utils/git.js +0 -83
- package/dist/utils/git.js.map +0 -7
- package/dist/utils/globalErrorHandler.js +0 -58
- package/dist/utils/globalErrorHandler.js.map +0 -7
- package/dist/utils/gpt5.js +0 -146
- package/dist/utils/gpt5.js.map +0 -7
- package/dist/utils/groupHandlers/index.js +0 -8
- package/dist/utils/groupHandlers/index.js.map +0 -7
- package/dist/utils/groupHandlers/parallelTasksHandler.js +0 -142
- package/dist/utils/groupHandlers/parallelTasksHandler.js.map +0 -7
- package/dist/utils/groupHandlers/taskHandler.js +0 -104
- package/dist/utils/groupHandlers/taskHandler.js.map +0 -7
- package/dist/utils/groupHandlers/types.js +0 -1
- package/dist/utils/groupHandlers/types.js.map +0 -7
- package/dist/utils/historyManager.js +0 -234
- package/dist/utils/historyManager.js.map +0 -7
- package/dist/utils/hookManager.js +0 -540
- package/dist/utils/hookManager.js.map +0 -7
- package/dist/utils/http.js +0 -7
- package/dist/utils/http.js.map +0 -7
- package/dist/utils/imagePaste.js +0 -29
- package/dist/utils/imagePaste.js.map +0 -7
- package/dist/utils/json.js +0 -16
- package/dist/utils/json.js.map +0 -7
- package/dist/utils/log.js +0 -333
- package/dist/utils/log.js.map +0 -7
- package/dist/utils/logRotation.js +0 -224
- package/dist/utils/logRotation.js.map +0 -7
- package/dist/utils/markdown.js +0 -464
- package/dist/utils/markdown.js.map +0 -7
- package/dist/utils/marketplaceManager.js +0 -545
- package/dist/utils/marketplaceManager.js.map +0 -7
- package/dist/utils/memSafety.js +0 -264
- package/dist/utils/memSafety.js.map +0 -7
- package/dist/utils/memoizeWithTTL.js +0 -25
- package/dist/utils/memoizeWithTTL.js.map +0 -7
- package/dist/utils/messageContextManager.js +0 -208
- package/dist/utils/messageContextManager.js.map +0 -7
- package/dist/utils/messageGroupManager.js +0 -274
- package/dist/utils/messageGroupManager.js.map +0 -7
- package/dist/utils/messages.js +0 -725
- package/dist/utils/messages.js.map +0 -7
- package/dist/utils/migration/index.js +0 -37
- package/dist/utils/migration/index.js.map +0 -7
- package/dist/utils/migration/migrateHistory.js +0 -273
- package/dist/utils/migration/migrateHistory.js.map +0 -7
- package/dist/utils/migration/migrateTodos.js +0 -323
- package/dist/utils/migration/migrateTodos.js.map +0 -7
- package/dist/utils/model.js +0 -846
- package/dist/utils/model.js.map +0 -7
- package/dist/utils/pasteCache.js +0 -313
- package/dist/utils/pasteCache.js.map +0 -7
- package/dist/utils/permissions/filesystem.js +0 -236
- package/dist/utils/permissions/filesystem.js.map +0 -7
- package/dist/utils/plan/planMode.js +0 -143
- package/dist/utils/plan/planMode.js.map +0 -7
- package/dist/utils/pluginInstaller.js +0 -518
- package/dist/utils/pluginInstaller.js.map +0 -7
- package/dist/utils/pluginLoader.js +0 -819
- package/dist/utils/pluginLoader.js.map +0 -7
- package/dist/utils/pluginRegistry.js +0 -111
- package/dist/utils/pluginRegistry.js.map +0 -7
- package/dist/utils/pluginValidator.js +0 -798
- package/dist/utils/pluginValidator.js.map +0 -7
- package/dist/utils/ptyCompat.js +0 -125
- package/dist/utils/ptyCompat.js.map +0 -7
- package/dist/utils/replStateMachine.js +0 -145
- package/dist/utils/replStateMachine.js.map +0 -7
- package/dist/utils/repoFetcher.js +0 -110
- package/dist/utils/repoFetcher.js.map +0 -7
- package/dist/utils/ripgrep.js +0 -236
- package/dist/utils/ripgrep.js.map +0 -7
- package/dist/utils/roundConverter.js +0 -262
- package/dist/utils/roundConverter.js.map +0 -7
- package/dist/utils/safeFetch.js +0 -45
- package/dist/utils/safeFetch.js.map +0 -7
- package/dist/utils/safePath.js +0 -132
- package/dist/utils/safePath.js.map +0 -7
- package/dist/utils/sanitizeInput.js +0 -32
- package/dist/utils/sanitizeInput.js.map +0 -7
- package/dist/utils/secureFile.js +0 -512
- package/dist/utils/secureFile.js.map +0 -7
- package/dist/utils/secureKeyStorage.js +0 -341
- package/dist/utils/secureKeyStorage.js.map +0 -7
- package/dist/utils/sensitiveFiles.js +0 -125
- package/dist/utils/sensitiveFiles.js.map +0 -7
- package/dist/utils/session/sessionPlugins.js +0 -67
- package/dist/utils/session/sessionPlugins.js.map +0 -7
- package/dist/utils/sessionIndex.js +0 -192
- package/dist/utils/sessionIndex.js.map +0 -7
- package/dist/utils/sessionState.js +0 -22
- package/dist/utils/sessionState.js.map +0 -7
- package/dist/utils/sessionTracker.js +0 -170
- package/dist/utils/sessionTracker.js.map +0 -7
- package/dist/utils/simpleMode.js +0 -7
- package/dist/utils/simpleMode.js.map +0 -7
- package/dist/utils/skillLoader.js +0 -230
- package/dist/utils/skillLoader.js.map +0 -7
- package/dist/utils/state.js +0 -24
- package/dist/utils/state.js.map +0 -7
- package/dist/utils/stats.js +0 -417
- package/dist/utils/stats.js.map +0 -7
- package/dist/utils/streamingState.js +0 -62
- package/dist/utils/streamingState.js.map +0 -7
- package/dist/utils/stringSubstitution.js +0 -106
- package/dist/utils/stringSubstitution.js.map +0 -7
- package/dist/utils/style.js +0 -34
- package/dist/utils/style.js.map +0 -7
- package/dist/utils/taskDisplayUtils.js +0 -258
- package/dist/utils/taskDisplayUtils.js.map +0 -7
- package/dist/utils/teamConfig.js +0 -624
- package/dist/utils/teamConfig.js.map +0 -7
- package/dist/utils/terminal.js +0 -59
- package/dist/utils/terminal.js.map +0 -7
- package/dist/utils/theme.js +0 -134
- package/dist/utils/theme.js.map +0 -7
- package/dist/utils/thinking.js +0 -63
- package/dist/utils/thinking.js.map +0 -7
- package/dist/utils/todoChangeCalculator.js +0 -64
- package/dist/utils/todoChangeCalculator.js.map +0 -7
- package/dist/utils/todoStorage.js +0 -413
- package/dist/utils/todoStorage.js.map +0 -7
- package/dist/utils/tokenProgress.js +0 -55
- package/dist/utils/tokenProgress.js.map +0 -7
- package/dist/utils/tokens.js +0 -30
- package/dist/utils/tokens.js.map +0 -7
- package/dist/utils/toolExecutionController.js +0 -109
- package/dist/utils/toolExecutionController.js.map +0 -7
- package/dist/utils/toolRiskClassification.js +0 -210
- package/dist/utils/toolRiskClassification.js.map +0 -7
- package/dist/utils/toolTimeout.js +0 -136
- package/dist/utils/toolTimeout.js.map +0 -7
- package/dist/utils/tooling/safeRender.js +0 -115
- package/dist/utils/tooling/safeRender.js.map +0 -7
- package/dist/utils/tooling/toolError.js +0 -12
- package/dist/utils/tooling/toolError.js.map +0 -7
- package/dist/utils/unaryLogging.js +0 -6
- package/dist/utils/unaryLogging.js.map +0 -7
- package/dist/utils/user.js +0 -40
- package/dist/utils/user.js.map +0 -7
- package/dist/utils/userFriendlyError.js +0 -346
- package/dist/utils/userFriendlyError.js.map +0 -7
- package/dist/utils/validate.js +0 -132
- package/dist/utils/validate.js.map +0 -7
- package/dist/version.js +0 -7
- package/dist/version.js.map +0 -7
- package/dist/yoga.wasm +0 -0
- /package/{dist/utils/vendor → vendor}/ripgrep/arm64-darwin/rg +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/TaskTool/TaskTool.tsx"],
|
|
4
|
-
"sourcesContent": ["import { TextBlock } from '@anthropic-ai/sdk/resources/index.mjs'\nimport chalk from 'chalk'\nimport { last, memoize } from 'lodash-es'\nimport { EOL } from 'os'\nimport { dirname } from 'path'\nimport { execFileSync } from 'child_process'\nimport React, { useState, useEffect } from 'react'\nimport { Box, Text } from 'ink'\nimport { z } from 'zod'\nimport { Tool, ValidationResult } from '@tool'\nimport { FallbackToolUseRejectedMessage } from '@components/FallbackToolUseRejectedMessage'\nimport { getAgentPrompt, getSystemPrompt } from '@constants/prompts'\nimport { getContext } from '@context'\nimport { hasPermissionsToUseTool } from '@permissions'\nimport { AssistantMessage, Message as MessageType } from '@query'\nimport { formatDuration, formatNumber } from '@utils/format'\nimport {\n getMessagesPath,\n getNextAvailableLogSidechainNumber,\n overwriteLog,\n logError,\n} from '@utils/log'\nimport { applyMarkdown } from '@utils/markdown'\nimport {\n createAssistantMessage,\n createUserMessage,\n INTERRUPT_MESSAGE,\n normalizeMessages,\n} from '@utils/messages'\nimport { getModelManager } from '@utils/model'\nimport { getMaxThinkingTokens } from '@utils/thinking'\nimport { getTheme } from '@utils/theme'\nimport { generateAgentId } from '@utils/agentStorage'\nimport { debug as debugLogger } from '@utils/debugLogger'\nimport { getTools, getReadOnlyTools } from '@tools'\nimport { getTaskTools, getPrompt } from './prompt'\nimport { TOOL_NAME } from './constants'\nimport {\n getActiveAgents,\n getAgentByType,\n getAvailableAgentTypes,\n} from '@utils/agentLoader'\nimport {\n createAgentTranscript,\n getAgentTranscript,\n getResumableTranscript,\n appendMessageToTranscript,\n updateAgentTranscript,\n completeAgentTranscript,\n failAgentTranscript,\n interruptAgentTranscript,\n canResumeTranscript,\n registerToolUseAgent,\n type AgentTranscript,\n} from '@utils/agentTranscripts'\nimport {\n registerBackgroundAgent,\n completeBackgroundAgent,\n failBackgroundAgent,\n} from '@utils/backgroundAgentManager'\nimport { UserFriendlyError, formatErrorForUser } from '@utils/userFriendlyError'\nimport { execSync } from 'child_process'\nimport {\n pushAgentContext,\n popAgentContext,\n cleanupAgentStreamingState,\n} from '@utils/streamingState'\nimport {\n validateAgentPermission,\n MODE_CONFIGS,\n type PermissionMode,\n} from '@minto-types/PermissionMode'\nimport { executeAgentHooks, createHookContext } from '@utils/agentHookExecutor'\nimport {\n loadAgentMemory,\n saveAgentMemory,\n formatMemoryForPrompt,\n} from '@utils/agentMemory'\nimport { getSkill, loadSkillContent } from '@utils/skillLoader'\nimport { getCwd } from '@utils/state'\nimport { getHookManager } from '@utils/hookManager'\nimport { substituteVariables } from '@utils/stringSubstitution'\nimport {\n getTeam,\n addTeammate,\n updateTeammateStatus,\n sanitizeTeamName,\n} from '@services/agentTeams/teamManager'\nimport {\n markTeammateIdle,\n markTeammateCompleted,\n} from '@services/agentTeams/teammateSpawner'\nimport { resolveBackend } from '@services/agentTeams/backends/resolver'\nimport type { DisplayBackend } from '@services/agentTeams/backends/types'\nimport {\n registerInProcessAgent,\n updateInProcessAgentState,\n unregisterInProcessAgent,\n} from '@services/agentTeams/backends/inProcess'\n\n/**\n * Default timeout for headless (tmux) agent processes.\n * Used for both background and foreground headless modes.\n */\nconst DEFAULT_HEADLESS_TIMEOUT_MS = 10 * 60 * 1000 // 10 minutes\n\n/**\n * Save current process.env values, set new ones, and return a restore function.\n * Values set to `undefined` will delete the env var (and restore the original).\n *\n * CONCURRENCY NOTE: This mutates the shared `process.env` object, which is safe\n * for tmux/headless backends (each agent is a separate OS process) but is a\n * concurrency hazard for in-process (AgentEngine) teammates that share the same\n * event loop. For in-process mode, callers should pass `inProcess: true` to skip\n * the mutation and instead rely on the team context injected into the system prompt\n * and the agent's toolUseContext. The env vars are still needed for tmux backends\n * where each agent is a child process that reads process.env at startup.\n */\nfunction scopeEnvVars(\n vars: Record<string, string | undefined>,\n options?: { inProcess?: boolean },\n): () => void {\n // For in-process agents, skip process.env mutation to avoid concurrency bugs.\n // Multiple in-process agents run on the same event loop and would overwrite\n // each other's env vars. The team context is already available via system prompt\n // and AgentEngine's teamName/agentId fields.\n if (options?.inProcess) {\n return () => {} // no-op restore\n }\n\n const saved: Record<string, string | undefined> = {}\n for (const key of Object.keys(vars)) {\n saved[key] = process.env[key]\n if (vars[key] !== undefined) {\n process.env[key] = vars[key]\n } else {\n delete process.env[key]\n }\n }\n return () => {\n for (const key of Object.keys(saved)) {\n if (saved[key] !== undefined) {\n process.env[key] = saved[key]\n } else {\n delete process.env[key]\n }\n }\n }\n}\n\nconst inputSchema = z.object({\n description: z\n .string()\n .describe('A short (3-5 word) description of the task'),\n prompt: z.string().describe('The task for the agent to perform'),\n model_name: z\n .string()\n .optional()\n .describe(\n 'Optional: Specific model name to use for this task. If not provided, uses the default task model pointer.',\n ),\n model: z\n .enum(['sonnet', 'opus', 'haiku'])\n .optional()\n .describe(\n 'Optional model hint for this agent. Maps to configured model pointers: sonnet\u2192main, opus\u2192reasoning, haiku\u2192quick. If not specified, uses the task model pointer. Prefer haiku for quick, straightforward tasks.',\n ),\n subagent_type: z\n .string()\n .optional()\n .describe(\n 'The specialized agent type to use. MUST be an exact name from the available agents list in the tool description. Defaults to \"general-purpose\" if not specified.',\n ),\n resume: z\n .string()\n .optional()\n .describe(\n 'Optional agent ID to resume from. If provided, the agent will continue from the previous execution transcript.',\n ),\n max_turns: z\n .number()\n .int()\n .positive()\n .optional()\n .describe(\n 'Maximum number of agentic turns (API round-trips) before stopping. Used internally for warmup.',\n ),\n team_name: z\n .string()\n .optional()\n .describe(\n 'Optional team name. When provided, the subagent is spawned as a teammate with team context, discovery info, and team tools (SendMessage, TaskCreate, etc.).',\n ),\n name: z\n .string()\n .optional()\n .describe(\n 'Optional human-readable name for this teammate (e.g., \"researcher\", \"tester\"). Used for team communication.',\n ),\n run_in_background: z\n .boolean()\n .optional()\n .describe(\n 'Set to true to run this agent in the background. The tool result will include an output_file path - use Read tool or Bash tail to check on output.',\n ),\n isolation: z\n .enum(['worktree'])\n .optional()\n .describe(\n 'Isolation mode. \"worktree\" creates a temporary git worktree so the agent works on an isolated copy of the repo.',\n ),\n})\n\nexport const TaskTool = {\n async prompt({ safeMode }) {\n return await getPrompt(safeMode)\n },\n name: TOOL_NAME,\n async description() {\n // Dynamically load available agent types from plugins\n const availableTypes = await getAvailableAgentTypes()\n const typesList = availableTypes.join(', ')\n return `Launch a specialized agent to handle tasks autonomously. You MUST use an exact agent type name from this list: ${typesList}. Default to \"general-purpose\" if unsure.`\n },\n inputSchema,\n\n async *call(\n {\n description,\n prompt,\n model_name,\n model,\n subagent_type,\n resume,\n max_turns,\n team_name,\n name: teammateName,\n run_in_background,\n isolation,\n },\n {\n abortController,\n options: {\n safeMode = false,\n safetyMode,\n forkNumber,\n messageLogName,\n verbose,\n },\n readFileTimestamps,\n toolUseId,\n },\n ): AsyncGenerator<\n | { type: 'result'; data: TextBlock[]; resultForAssistant?: string }\n | {\n type: 'progress'\n content: any\n normalizedMessages?: any[]\n tools?: any[]\n },\n void,\n unknown\n > {\n const startTime = Date.now()\n\n // Team agents always run in background so the team-lead remains available to coordinate\n const effectiveRunInBackground = team_name ? true : run_in_background\n\n if (team_name) {\n team_name = sanitizeTeamName(team_name)\n }\n\n // Default to general-purpose if no subagent_type specified\n const agentType = subagent_type || 'general-purpose'\n\n // Handle resume: check if we're resuming from a previous transcript\n let resumedTranscript: AgentTranscript | null = null\n let agentId: string\n\n if (resume) {\n resumedTranscript = getResumableTranscript(resume)\n if (!resumedTranscript) {\n yield {\n type: 'result',\n data: [\n {\n type: 'text',\n text: `Cannot resume agent '${resume}': transcript not found or not resumable (status must be 'running' or 'interrupted')`,\n },\n ] as TextBlock[],\n resultForAssistant: `Cannot resume agent '${resume}': transcript not found or not resumable`,\n }\n return\n }\n agentId = resume\n debugLogger.info('TASK_AGENT_RESUMING', {\n agentId,\n agentType: resumedTranscript.agentType,\n messageCount: resumedTranscript.messages.length,\n previousStatus: resumedTranscript.status,\n })\n } else {\n agentId = generateAgentId()\n }\n\n // Register toolUseId -> agentId mapping for UI association\n if (toolUseId) {\n registerToolUseAgent(toolUseId, agentId)\n }\n\n // \uD83D\uDD27 CRITICAL FIX: Track whether we've yielded a result to prevent UI stuck state\n let hasYieldedResult = false\n\n // Apply subagent configuration\n let effectivePrompt = prompt\n let effectiveModel = model_name || 'task'\n let toolFilter = null\n let disallowedToolFilter: string[] | null = null // Claude Code spec: disallowedTools denylist\n let temperature = undefined\n let agentMaxThinkingTokens: number | undefined = undefined\n let effectivePermissionMode: PermissionMode = 'default'\n let loadedAgentConfig: Awaited<ReturnType<typeof getAgentByType>> = null\n\n // Load agent configuration dynamically\n if (agentType) {\n const agentConfig = await getAgentByType(agentType)\n\n if (!agentConfig) {\n // If agent type not found, return helpful message instead of throwing\n const availableTypes = await getAvailableAgentTypes()\n const helpMessage = `Agent type '${agentType}' not found.\\n\\nAvailable agents:\\n${availableTypes.map(t => ` \u2022 ${t}`).join('\\n')}\\n\\nUse /agents command to manage agent configurations.`\n\n yield {\n type: 'result',\n data: [{ type: 'text', text: helpMessage }] as TextBlock[],\n resultForAssistant: helpMessage,\n }\n hasYieldedResult = true\n return\n }\n\n // Store config for later use (hooks, memory, etc.)\n loadedAgentConfig = agentConfig\n\n // Apply system prompt if configured \u2014 wrap in <system-reminder> so\n // AgentDetailView (focus view) filters it from rendered output\n if (agentConfig.systemPrompt) {\n effectivePrompt = `<system-reminder>\\n${agentConfig.systemPrompt}\\n</system-reminder>\\n\\n${prompt}`\n }\n\n // Apply model if not overridden by model_name parameter\n if (!model_name && agentConfig.model_name) {\n // Support inherit: keep pointer-based default\n if (agentConfig.model_name !== 'inherit') {\n effectiveModel = agentConfig.model_name as string\n }\n }\n\n // Store tool filter for later application\n toolFilter = agentConfig.tools\n\n // Store disallowed tools filter for later application (Claude Code spec compliance)\n if (agentConfig.disallowedTools?.length) {\n disallowedToolFilter = agentConfig.disallowedTools\n }\n\n // Apply maxThinkingTokens if configured (Claude Code spec)\n if (agentConfig.maxThinkingTokens) {\n agentMaxThinkingTokens = agentConfig.maxThinkingTokens\n }\n\n // Validate and apply permission mode (Claude Code spec)\n // Agent permission cannot exceed session permission level\n if (agentConfig.permissionMode) {\n const sessionMode: PermissionMode = safeMode ? 'plan' : 'default'\n effectivePermissionMode = validateAgentPermission(\n agentConfig.permissionMode,\n sessionMode,\n )\n }\n\n // Load agent memory if configured (Claude Code spec)\n if (agentConfig.memory) {\n try {\n const memoryContent = await loadAgentMemory(\n agentConfig.agentType,\n agentConfig.memory,\n )\n if (memoryContent) {\n // Inject memory into system prompt\n effectivePrompt =\n formatMemoryForPrompt(memoryContent, agentConfig.agentType) +\n '\\n' +\n effectivePrompt\n }\n } catch (error) {\n debugLogger.warn('TASK_AGENT_MEMORY_LOAD_FAILED', {\n agentId,\n agentType,\n error: error instanceof Error ? error.message : String(error),\n })\n }\n }\n\n // Preload skills if configured (Claude Code spec)\n if (agentConfig.skills?.length) {\n for (const skillName of agentConfig.skills) {\n try {\n const skill = getSkill(skillName)\n if (skill) {\n const skillContent = await loadSkillContent(skill)\n const skillBaseDir = dirname(skill.filePath)\n // Apply {baseDir} resolution and string substitution\n const resolvedContent = skillContent.replace(\n /\\{baseDir\\}/g,\n skillBaseDir,\n )\n const substitutedContent = await substituteVariables(\n resolvedContent,\n '', // No arguments for preloaded skills\n {\n sessionId: agentId,\n cwd: process.cwd(),\n env: { BASE_DIR: skillBaseDir },\n },\n )\n effectivePrompt += `\\n\\n<preloaded-skill name=\"${skillName}\">\\n${substitutedContent}\\n</preloaded-skill>`\n }\n } catch (error) {\n debugLogger.warn('TASK_AGENT_SKILL_PRELOAD_FAILED', {\n agentId,\n skillName,\n error: error instanceof Error ? error.message : String(error),\n })\n }\n }\n }\n\n // Execute onStart hooks if configured (Claude Code spec)\n if (agentConfig.hooks?.onStart?.length) {\n try {\n const hookContext = createHookContext({\n sessionId: agentId,\n agentId,\n agentType,\n })\n const hookResult = await executeAgentHooks(\n 'onStart',\n agentConfig,\n hookContext,\n )\n if (!hookResult.continue) {\n yield {\n type: 'result',\n data: [\n {\n type: 'text',\n text: `Agent ${agentType} blocked by onStart hook: ${hookResult.reason || 'Hook requested stop'}`,\n },\n ] as TextBlock[],\n resultForAssistant: `Agent blocked by onStart hook: ${hookResult.reason}`,\n }\n hasYieldedResult = true\n return\n }\n } catch (error) {\n debugLogger.warn('TASK_AGENT_ONSTART_HOOK_FAILED', {\n agentId,\n agentType,\n error: error instanceof Error ? error.message : String(error),\n })\n }\n }\n\n // Note: temperature is not currently in our agent configs\n // but could be added in the future\n }\n\n // Apply model resolution with intelligent fallback\n // Priority: model_name (explicit) > model (alias) > agent config > task pointer > main model\n if (model) {\n // Model aliases are semantic hints, not hardcoded model names\n // Map to Minto's model pointer system for proper resolution\n const modelPointerMap: Record<string, string> = {\n sonnet: 'main', // Use main model for standard tasks\n opus: 'reasoning', // Use reasoning model for complex tasks\n haiku: 'quick', // Use quick model for fast tasks\n }\n\n const pointerType = modelPointerMap[model] || 'task'\n const modelManager = getModelManager()\n const resolvedModelName = modelManager.getModelName(pointerType as any)\n\n if (resolvedModelName) {\n effectiveModel = resolvedModelName\n }\n // If resolution fails, keep the previous effectiveModel (from agent config or 'task' default)\n }\n\n // Git worktree isolation: create isolated worktree for parallel edits\n let worktreePath: string | null = null\n const shouldUseWorktree =\n isolation === 'worktree' || loadedAgentConfig?.isolation === 'worktree'\n if (shouldUseWorktree) {\n try {\n const tmpDir = `/tmp/minto-worktree-${agentId}`\n execFileSync('git', ['worktree', 'add', tmpDir, 'HEAD'], {\n cwd: getCwd(),\n stdio: 'pipe',\n })\n worktreePath = tmpDir\n effectivePrompt = `[Working in isolated git worktree: ${tmpDir}]\\n\\n${effectivePrompt}`\n debugLogger.info('TASK_AGENT_WORKTREE_CREATED', {\n agentId,\n worktreePath,\n })\n // Fire WorktreeCreate hook\n const hookMgrCreate = getHookManager()\n hookMgrCreate\n ?.executeWorktreeCreate(worktreePath, agentId, agentType)\n .catch(err =>\n debugLogger.trace('HOOK_WORKTREE_CREATE', { error: err }),\n )\n } catch (err) {\n debugLogger.warn('TASK_AGENT_WORKTREE_FAILED', {\n agentId,\n error: err instanceof Error ? err.message : String(err),\n })\n // Continue without worktree \u2014 non-git repos or worktree errors\n }\n }\n\n // Scoped env var management: save \u2192 set \u2192 restore in finally\n // Prevents process.env pollution across concurrent agents\n let restoreEnvVars: (() => void) | null = null\n\n if (team_name) {\n const teammateAgentId = teammateName\n ? `${teammateName}@${team_name}`\n : `${agentType}@${team_name}`\n\n // Register this agent as a team member so it appears in the panel\n try {\n const { getTeammateColor } = await import('@constants/agentTeams')\n const teamEntry = getTeam(team_name)\n const colorIndex = teamEntry?.team.members.length ?? 0\n addTeammate(team_name, {\n id: teammateAgentId,\n name: teammateName || agentType,\n agentType,\n status: 'working',\n prompt,\n color: getTeammateColor(colorIndex),\n })\n } catch {\n // Non-fatal: agent can still work without team registration\n }\n\n // Store worktree path in team registry for cleanup on disband\n if (worktreePath && team_name) {\n try {\n const { updateTeammateWorktree } = await import(\n '@services/agentTeams/teamManager'\n )\n updateTeammateWorktree(\n team_name,\n teammateName\n ? `${teammateName}@${team_name}`\n : `${agentType}@${team_name}`,\n worktreePath,\n )\n } catch {\n /* best-effort */\n }\n }\n\n // Set env vars for team discovery (readable by subagent tools)\n // scopeEnvVars saves current values and returns a restore function\n const effectiveAgentName = teammateName || agentType\n\n // Determine planModeRequired value\n let planModeValue: string | undefined\n try {\n const teamEntry = getTeam(team_name)\n const member = teamEntry?.team.members.find(\n m => m.id === teammateAgentId,\n )\n planModeValue = member?.planModeRequired ? '1' : undefined\n } catch {\n // Non-fatal: if team lookup fails, don't set the flag\n }\n\n // Determine backend mode early so we know whether to mutate process.env.\n // In-process agents share the event loop \u2014 env mutation is a concurrency bug.\n const earlyBackend = resolveBackend(\n getTeam(team_name)?.team.config.displayMode,\n )\n const isInProcessBackend = earlyBackend.mode === 'in-process'\n\n // Track agent nesting depth to prevent infinite recursion.\n // Each spawned teammate increments the depth counter.\n const parentDepth =\n parseInt(\n process.env.MINTO_AGENT_DEPTH ??\n process.env.CLAUDE_AGENT_DEPTH ??\n '0',\n 10,\n ) || 0\n const childDepth = String(parentDepth + 1)\n\n restoreEnvVars = scopeEnvVars(\n {\n MINTO_TEAM_NAME: team_name,\n MINTO_AGENT_ID: teammateAgentId,\n MINTO_AGENT_TYPE: agentType,\n MINTO_AGENT_NAME: effectiveAgentName,\n MINTO_PLAN_MODE_REQUIRED: planModeValue,\n MINTO_AGENT_DEPTH: childDepth,\n // CC compat: set CLAUDE_CODE_* so CC ecosystem tools can read them\n CLAUDE_CODE_TEAM_NAME: team_name,\n CLAUDE_CODE_AGENT_ID: teammateAgentId,\n CLAUDE_CODE_AGENT_TYPE: agentType,\n CLAUDE_CODE_AGENT_NAME: effectiveAgentName,\n CLAUDE_CODE_PLAN_MODE_REQUIRED: planModeValue,\n CLAUDE_AGENT_DEPTH: childDepth,\n },\n { inProcess: isInProcessBackend },\n )\n\n // Build team discovery context for the system prompt\n let teamDiscovery = ''\n try {\n const { getTeam: getTeamFn } = await import(\n '@services/agentTeams/teamManager'\n )\n const entry = getTeamFn(team_name)\n if (entry) {\n const otherMembers = entry.team.members\n .filter(m => m.id !== teammateAgentId && m.name !== teammateName)\n .map(m => ` - ${m.name} (${m.agentType}): ${m.status}`)\n .join('\\n')\n if (otherMembers) {\n teamDiscovery = `\\nTeam members:\\n${otherMembers}`\n }\n }\n } catch {\n // Team not found \u2014 non-fatal\n }\n\n const teamContext = `\\n# Agent Teammate Communication\n\nYou are agent \"${teammateName || agentType}\" in team \"${team_name}\".\n\n## CRITICAL: Reporting Results\n\n**You MUST use the SendMessage tool to report your results to the team lead.** Your text output is NOT visible to the team lead or any teammate. The ONLY way to deliver your findings is via SendMessage.\n\nWhen you finish your task:\n1. Use SendMessage with type \"message\", recipient \"team-lead\", and your findings as content\n2. Include a brief summary in the summary field\n3. Do NOT just output text \u2014 it will be lost\n\n## Communication\n\n- Use SendMessage with type \\`message\\` to send messages to specific teammates\n- Use SendMessage with type \\`broadcast\\` sparingly for team-wide announcements\n- Do NOT send acknowledgment messages (\"Got it\", \"\u5DF2\u6536\u5230\") \u2014 only send when you have actionable content\n- ALWAYS respond in the same language as the user's original request\n\n**User guidance**: Sometimes the user may send you direct messages that appear in \\`<user-guidance>\\` tags. When you receive user guidance, respond directly in your text output \u2014 do NOT forward it to the team lead via SendMessage. The user can see your text output in the focus view.\n\nTeam: ${team_name}\nYour agent ID: ${teammateAgentId}\nYour agent type: ${agentType}${teamDiscovery}\n`\n // Wrap teamContext in <system-reminder> so UserPromptMessage filters it out\n effectivePrompt =\n `<system-reminder>\\n${teamContext}\\n</system-reminder>\\n\\n` +\n effectivePrompt\n\n // Override agentId so tool context carries the team-scoped identity\n agentId = teammateAgentId\n // Re-register toolUse mapping with team-scoped ID\n if (toolUseId) {\n registerToolUseAgent(toolUseId, agentId)\n }\n\n // \u2500\u2500 Headless Mode: spawn as independent process \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // When backend is not in-process, fork a child process and wait for\n // it to complete. The child process runs its own query loop and sends\n // results via file-based mailbox. When multiple agents are spawned in\n // parallel (parallel TaskTool calls), each waits independently \u2014\n // achieving true multi-process parallelism with result collection.\n const backend = resolveBackend(\n getTeam(team_name)?.team.config.displayMode,\n )\n\n // Teammates get acceptEdits \u2014 file edits and bash commands are auto-approved\n // within the project directory. BashTool still enforces critical safety\n // checks (directory sandbox, destructive patterns) regardless of permission mode.\n effectivePermissionMode = safeMode ? 'plan' : 'acceptEdits'\n\n if (backend.mode !== 'in-process') {\n try {\n // Check if teammate has planModeRequired in registry\n const spawnTeamEntry = getTeam(team_name)\n const spawnMember = spawnTeamEntry?.team.members.find(\n m => m.id === teammateAgentId,\n )\n\n const handle = await backend.spawn({\n agentId: teammateAgentId,\n agentName: teammateName || agentType,\n teamName: team_name,\n agentType,\n prompt,\n model: effectiveModel !== 'task' ? effectiveModel : undefined,\n cwd: process.cwd(),\n maxTurns: max_turns,\n mode: effectivePermissionMode,\n planModeRequired: spawnMember?.planModeRequired,\n color: spawnMember?.color,\n parentSessionId: spawnTeamEntry?.team.leadSessionId,\n })\n\n // Create a transcript so the UI can track this headless agent's status.\n // The transcript won't have real-time messages (those happen in the child),\n // but it provides status tracking for ParallelTasksGroupView and AgentFocusView.\n createAgentTranscript({\n agentId: teammateAgentId,\n agentType,\n toolUseId,\n description: description || teammateName || agentType,\n prompt,\n model: effectiveModel,\n forkNumber,\n messageLogName,\n messages: [createUserMessage(effectivePrompt)],\n toolUseCount: 0,\n metadata: { isBackground: true },\n })\n\n yield {\n type: 'progress',\n content: createAssistantMessage(\n `Teammate \"${teammateName || agentType}\" spawned as independent process (headless mode, agent ID: ${teammateAgentId})`,\n ),\n }\n\n // Background mode: return immediately, let heartbeat detect completion\n if (effectiveRunInBackground) {\n registerBackgroundAgent(\n teammateAgentId,\n agentType,\n description,\n abortController,\n )\n\n // Fire-and-forget: monitor the child process and update status on exit\n ;(async () => {\n const HEADLESS_TIMEOUT_MS = DEFAULT_HEADLESS_TIMEOUT_MS\n let exitCode: number | null = null\n\n await new Promise<void>(resolve => {\n const timeoutId = setTimeout(() => {\n debugLogger.warn('HEADLESS_AGENT_TIMEOUT', {\n agentId: teammateAgentId,\n timeoutMs: HEADLESS_TIMEOUT_MS,\n })\n backend.kill(handle).then(resolve, resolve)\n }, HEADLESS_TIMEOUT_MS)\n\n backend.onExit(handle, code => {\n exitCode = code\n clearTimeout(timeoutId)\n resolve()\n })\n\n if (!backend.isAlive(handle)) {\n clearTimeout(timeoutId)\n resolve()\n }\n\n if (abortController.signal.aborted) {\n clearTimeout(timeoutId)\n backend.kill(handle).then(resolve, resolve)\n } else {\n abortController.signal.addEventListener(\n 'abort',\n () => {\n clearTimeout(timeoutId)\n backend.kill(handle).then(resolve, resolve)\n },\n { once: true },\n )\n }\n })\n\n if (exitCode !== null && exitCode !== 0) {\n updateTeammateStatus(team_name, teammateAgentId, 'stopped')\n failBackgroundAgent(teammateAgentId, `exit code ${exitCode}`)\n failAgentTranscript(teammateAgentId, `exit code ${exitCode}`)\n } else {\n markTeammateCompleted(\n team_name,\n teammateAgentId,\n teammateName || agentType,\n {\n summary: `Teammate \"${teammateName || agentType}\" completed.`,\n },\n ).catch(err =>\n debugLogger.trace('MARK_TEAMMATE_COMPLETED', { error: err }),\n )\n completeBackgroundAgent(teammateAgentId, [\n {\n type: 'text',\n text: `Teammate \"${teammateName || agentType}\" completed.`,\n },\n ])\n completeAgentTranscript(teammateAgentId)\n }\n })()\n\n const bgResultText = `Agent \"${teammateName || agentType}\" running in background`\n yield {\n type: 'result',\n data: [{ type: 'text', text: bgResultText }] as TextBlock[],\n resultForAssistant: `Teammate \"${teammateName || agentType}\" is running in the background. You will be notified automatically when they finish \u2014 do NOT check on them.`,\n }\n hasYieldedResult = true\n return\n }\n\n // Foreground mode: wait for the child process to exit.\n // Promise resolves on exit, abort, or timeout (calling resolve multiple times is safe).\n const HEADLESS_TIMEOUT_MS = DEFAULT_HEADLESS_TIMEOUT_MS\n let exitCode: number | null = null\n\n await new Promise<void>(resolve => {\n // Safety timeout to prevent infinite hang\n const timeoutId = setTimeout(() => {\n debugLogger.warn('HEADLESS_AGENT_TIMEOUT', {\n agentId: teammateAgentId,\n timeoutMs: HEADLESS_TIMEOUT_MS,\n })\n backend.kill(handle).then(resolve, resolve)\n }, HEADLESS_TIMEOUT_MS)\n\n backend.onExit(handle, code => {\n exitCode = code\n clearTimeout(timeoutId)\n resolve()\n })\n\n // Guard against race: process may have exited before onExit was registered\n if (!backend.isAlive(handle)) {\n clearTimeout(timeoutId)\n resolve()\n }\n\n // Support abort: kill child process on Ctrl+C\n if (abortController.signal.aborted) {\n clearTimeout(timeoutId)\n backend.kill(handle).then(resolve, resolve)\n } else {\n abortController.signal.addEventListener(\n 'abort',\n () => {\n clearTimeout(timeoutId)\n backend.kill(handle).then(resolve, resolve)\n },\n { once: true },\n )\n }\n })\n\n // Update teammate status in parent's in-memory team state.\n // The child already wrote its messages to disk before exiting,\n // so we sync the in-memory status and send a completion notification.\n markTeammateCompleted(\n team_name,\n teammateAgentId,\n teammateName || agentType,\n {\n summary: `Teammate \"${teammateName || agentType}\" completed.`,\n },\n ).catch(err =>\n debugLogger.trace('MARK_TEAMMATE_COMPLETED', { error: err }),\n )\n\n // Read agent's messages from the file-based mailbox\n const teamEntry = getTeam(team_name)\n const leadId = `team-lead@${team_name}`\n let agentResultText = `Teammate \"${teammateName || agentType}\" completed.`\n\n // Check for non-zero exit code (child process error)\n if (exitCode !== null && exitCode !== 0) {\n agentResultText = `Teammate \"${teammateName || agentType}\" failed (exit code ${exitCode}). The agent process encountered an error during startup or execution.`\n failAgentTranscript(teammateAgentId, agentResultText)\n } else {\n completeAgentTranscript(teammateAgentId)\n }\n\n if (teamEntry) {\n const unread = teamEntry.mailbox.getUnread(leadId)\n const fromAgent = unread.filter(m => m.from === teammateAgentId)\n if (fromAgent.length > 0) {\n const {\n parseIdleNotification,\n formatIdleNotificationForInjection,\n formatTeamMessage,\n } = require('@services/agentTeams/messageFormatter')\n agentResultText = fromAgent\n .map(m => {\n // Parse idle/task_completed/idle_notification JSON into formatted XML\n const idleData = parseIdleNotification(m.text)\n if (idleData) {\n return formatIdleNotificationForInjection(idleData)\n }\n return formatTeamMessage(m)\n })\n .join('\\n\\n')\n teamEntry.mailbox.markRead(fromAgent.map(m => m.id))\n }\n }\n\n yield {\n type: 'result',\n data: [\n {\n type: 'text',\n text: agentResultText,\n },\n ] as TextBlock[],\n resultForAssistant: agentResultText,\n }\n hasYieldedResult = true\n return\n } catch (spawnError) {\n // Fallback to in-process on spawn failure\n debugLogger.warn('HEADLESS_SPAWN_FAILED', {\n agentId: teammateAgentId,\n error:\n spawnError instanceof Error\n ? spawnError.message\n : String(spawnError),\n })\n // Continue with in-process execution below\n }\n }\n }\n\n // Register in-process agent state for CC-compatible tracking.\n // Only for team agents \u2014 standalone TaskTool invocations don't need this.\n if (team_name) {\n registerInProcessAgent(agentId, effectivePermissionMode)\n }\n\n // Initialize messages: either resume from transcript or start fresh.\n // For fresh agents, start with an empty array \u2014 submitPrompt() below\n // will add the single initial user message, avoiding the duplicate that\n // caused \"WriteWrite\" tool-name hallucinations.\n let messages: MessageType[] = resumedTranscript\n ? [...resumedTranscript.messages]\n : []\n\n let tools = await getTaskTools(safeMode)\n\n // Apply tool filtering if specified by subagent config\n // Claude Code spec: tools (allowlist) + disallowedTools (denylist) combination\n // Priority: disallowedTools always takes precedence over tools\n // Supports Task(agent_type) syntax to restrict which subagent types can be spawned\n let allowedSubagentTypes: string[] | null = null\n if (toolFilter) {\n // Back-compat: ['*'] means all tools\n const isAllArray =\n Array.isArray(toolFilter) &&\n toolFilter.length === 1 &&\n toolFilter[0] === '*'\n if (toolFilter === '*' || isAllArray) {\n // no-op, keep all tools (allowlist permits all)\n } else if (Array.isArray(toolFilter)) {\n // Extract Task(type) restrictions\n const taskPatterns = toolFilter\n .filter(\n (t: string) =>\n (t.startsWith('Agent(') || t.startsWith('Task(')) &&\n t.endsWith(')'),\n )\n .map((t: string) =>\n t.startsWith('Agent(') ? t.slice(6, -1) : t.slice(5, -1),\n )\n if (taskPatterns.length > 0) {\n allowedSubagentTypes = taskPatterns\n }\n\n // Filter tools: include Agent tool if any Agent()/Task() pattern exists\n const baseToolNames = toolFilter\n .map((t: string) =>\n t.startsWith('Agent(') || t.startsWith('Task(') ? TOOL_NAME : t,\n )\n .filter((t: string, i: number, arr: string[]) => arr.indexOf(t) === i)\n tools = tools.filter(tool => baseToolNames.includes(tool.name))\n }\n }\n\n // Apply disallowedTools filter (denylist takes precedence over allowlist)\n if (disallowedToolFilter?.length) {\n tools = tools.filter(tool => !disallowedToolFilter!.includes(tool.name))\n }\n\n // When spawned as a teammate, ensure team tools are available\n // Minto enhancement: teammates can use Task tool for 1-level subagent nesting\n // TeamCreate/TeamDelete intentionally excluded \u2014 leader-only\n if (team_name) {\n // Depth checking to prevent infinite teammate nesting.\n // MINTO_AGENT_DEPTH tracks how deep we are in the agent spawn tree.\n // At depth >= 2, remove Task tool to guarantee convergence (max 2 levels).\n const currentDepth =\n parseInt(\n process.env.MINTO_AGENT_DEPTH ??\n process.env.CLAUDE_AGENT_DEPTH ??\n '0',\n 10,\n ) || 0\n\n const teamToolNames = new Set([\n 'SendMessage',\n ...(currentDepth < 2\n ? [TOOL_NAME] // Only allow further nesting at depth < 2\n : []),\n 'TaskCreate',\n 'TaskUpdate',\n 'TaskList',\n 'TaskGet',\n ])\n // Source from full tool list (getTaskTools excludes Task via EXCLUDED_AGENT_TOOLS)\n const fullTools = await (!safeMode ? getTools() : getReadOnlyTools())\n for (const tool of fullTools) {\n if (\n teamToolNames.has(tool.name) &&\n !tools.some(t => t.name === tool.name)\n ) {\n tools.push(tool)\n }\n }\n }\n\n // Apply permission mode tool restrictions (Claude Code spec)\n // Some permission modes only allow specific tools\n if (effectivePermissionMode !== 'default') {\n const modeConfig = MODE_CONFIGS[effectivePermissionMode]\n if (modeConfig && modeConfig.allowedTools[0] !== '*') {\n tools = tools.filter(tool =>\n modeConfig.allowedTools.includes(tool.name),\n )\n }\n }\n\n // Model already resolved in effectiveModel variable above\n const modelToUse = effectiveModel\n\n // Display initial task information with separate progress lines\n if (resumedTranscript) {\n yield {\n type: 'progress',\n content: createAssistantMessage(\n `Resuming agent: ${agentType} (${agentId})`,\n ),\n normalizedMessages: normalizeMessages(messages),\n tools,\n }\n\n yield {\n type: 'progress',\n content: createAssistantMessage(\n `Restored ${resumedTranscript.messages.length} messages, ${resumedTranscript.toolUseCount} tool uses`,\n ),\n normalizedMessages: normalizeMessages(messages),\n tools,\n }\n } else {\n yield {\n type: 'progress',\n content: createAssistantMessage(`Starting agent: ${agentType}`),\n normalizedMessages: normalizeMessages(messages),\n tools,\n }\n }\n\n yield {\n type: 'progress',\n content: createAssistantMessage(`Using model: ${modelToUse}`),\n normalizedMessages: normalizeMessages(messages),\n tools,\n }\n\n yield {\n type: 'progress',\n content: createAssistantMessage(`Task: ${description}`),\n normalizedMessages: normalizeMessages(messages),\n tools,\n }\n\n yield {\n type: 'progress',\n content: createAssistantMessage(\n `Prompt: ${prompt.length > 150 ? prompt.substring(0, 150) + '...' : prompt}`,\n ),\n normalizedMessages: normalizeMessages(messages),\n tools,\n }\n\n const [taskPrompt, context, maxThinkingTokens] = await Promise.all([\n team_name ? getSystemPrompt('teammate') : getAgentPrompt(),\n getContext(),\n getMaxThinkingTokens(messages),\n ])\n\n // Inject model context to prevent self-referential expert consultations\n taskPrompt.push(\n `\\nIMPORTANT: You are currently running as ${modelToUse}. You do not need to consult ${modelToUse} via AskExpertModel since you ARE ${modelToUse}. Complete tasks directly using your capabilities.`,\n )\n\n // Initialize tool use count (restore from transcript if resuming)\n let toolUseCount = resumedTranscript?.toolUseCount || 0\n\n const getSidechainNumber = memoize(() =>\n getNextAvailableLogSidechainNumber(messageLogName, forkNumber),\n )\n\n // Fire SubagentStart hook (fire-and-forget)\n const hookMgr = getHookManager()\n if (hookMgr) {\n hookMgr\n .executeSubagentStart(agentType, description)\n .catch(err =>\n debugLogger.warn('SubagentStart hook failed', { error: err }),\n )\n }\n\n // Create or update transcript for this agent execution\n if (!resumedTranscript) {\n createAgentTranscript({\n agentId,\n agentType,\n toolUseId, // Include toolUseId for event-driven UI updates\n description,\n prompt,\n model: modelToUse,\n forkNumber,\n messageLogName,\n messages: [...messages],\n toolUseCount: 0,\n ...(effectiveRunInBackground && team_name\n ? { metadata: { isBackground: true } }\n : {}),\n })\n } else {\n // Update transcript status to running when resuming\n appendMessageToTranscript(\n agentId,\n createUserMessage(`[Resumed] ${prompt}`),\n )\n }\n\n // Build query options, adding temperature if specified\n // Use agent-configured maxThinkingTokens if available, otherwise use default\n const effectiveMaxThinkingTokens =\n agentMaxThinkingTokens ?? maxThinkingTokens\n const queryOptions = {\n safeMode,\n safetyMode,\n forkNumber,\n messageLogName,\n tools,\n commands: [] as any[],\n verbose,\n maxThinkingTokens: effectiveMaxThinkingTokens,\n model: modelToUse,\n ...(effectivePermissionMode\n ? { permissionMode: effectivePermissionMode }\n : {}),\n }\n\n // Add temperature if specified by subagent config\n if (temperature !== undefined) {\n queryOptions['temperature'] = temperature\n }\n\n // \uD83D\uDD27 CRITICAL FIX: Wrap entire agent execution in try-catch-finally\n // This ensures we ALWAYS yield a result, even if the engine throws an error\n\n // For team agents, create an agent-specific AbortController.\n // The parent's abortController is the team lead's \u2014 aborting it would\n // kill the entire conversation. Instead, we create a child controller\n // that forwards parent abort but can be aborted independently by disbandTeam().\n let effectiveAbortController = abortController\n if (team_name) {\n const agentAC = new AbortController()\n // Forward parent abort \u2192 agent abort (user pressed ESC)\n if (abortController.signal.aborted) {\n agentAC.abort()\n } else {\n abortController.signal.addEventListener(\n 'abort',\n () => agentAC.abort(),\n { once: true },\n )\n }\n effectiveAbortController = agentAC\n\n try {\n const { registerAgentAbortController } = await import(\n '@services/agentTeams/teamManager'\n )\n registerAgentAbortController(team_name, agentId, agentAC)\n } catch {\n // Non-fatal: agent can still work without registration\n }\n }\n\n // Background mode for in-process agents: detach the query loop and return immediately\n if (effectiveRunInBackground && team_name) {\n registerBackgroundAgent(\n agentId,\n agentType,\n description,\n effectiveAbortController,\n )\n\n // Fire-and-forget: create an AgentEngine and run it asynchronously\n ;(async () => {\n pushAgentContext(agentId)\n let bgToolUseCount = 0\n\n try {\n const { AgentEngine } = await import('../../engine/AgentEngine')\n const { getGlobalRegistry } = await import(\n '../../engine/EngineRegistry'\n )\n\n const engine = new AgentEngine({\n agentId,\n name: teammateName || agentType,\n role: 'teammate',\n teamName: team_name,\n systemPrompt: team_name\n ? () => getSystemPrompt('teammate')\n : taskPrompt,\n context,\n tools: queryOptions.tools,\n initialMessages: [...messages],\n idleTimeoutMs: 30_000,\n heartbeatIntervalMs: 500,\n maxTurns: max_turns || undefined,\n maxThinkingTokens: queryOptions.maxThinkingTokens,\n model: queryOptions.model as string | undefined,\n forkNumber,\n messageLogName,\n verbose: queryOptions.verbose,\n safeMode: queryOptions.safeMode,\n safetyMode: queryOptions.safetyMode,\n permissionMode: effectivePermissionMode as any,\n readFileTimestamps,\n canUseTool: hasPermissionsToUseTool,\n askUser: () => Promise.resolve([]),\n setToolJSX: () => {},\n onMessage: message => {\n appendMessageToTranscript(agentId, message)\n overwriteLog(\n getMessagesPath(\n messageLogName,\n forkNumber,\n getSidechainNumber(),\n ),\n [...engine.messages].filter(_ => _.type !== 'progress'),\n )\n if (message.type === 'assistant') {\n for (const content of message.message.content) {\n if (content.type === 'tool_use') bgToolUseCount++\n }\n }\n },\n })\n\n // Register in global registry so REPL can switch focus to this agent\n const globalRegistry = getGlobalRegistry()\n globalRegistry.register(agentId, engine)\n\n // Connect agent abort controller \u2192 engine.stop()\n // When disbandTeam() aborts all agent controllers, this ensures the engine\n // stops cleanly and gets unregistered from the global registry.\n if (effectiveAbortController.signal.aborted) {\n engine.stop()\n } else {\n effectiveAbortController.signal.addEventListener(\n 'abort',\n () => engine.stop(),\n { once: true },\n )\n }\n\n // Subscribe to engine lifecycle events\n engine.on(event => {\n if (event.type === 'state_change' && event.to === 'stopped') {\n // Unregister from global registry\n globalRegistry.unregister(agentId)\n\n // SubagentStop hook (mirrors Path C)\n if (hookMgr) {\n hookMgr.executeSubagentStop(agentType, agentId).catch(err =>\n debugLogger.warn('SubagentStop hook failed (Path B)', {\n error: err,\n }),\n )\n }\n\n // Engine stopped \u2014 finalize transcript and notify team\n const engineMessages = engine.messages\n const lastMessage = engineMessages[engineMessages.length - 1]\n if (lastMessage?.type === 'assistant') {\n completeAgentTranscript(agentId)\n completeBackgroundAgent(\n agentId,\n lastMessage.message.content.filter(\n _ => _.type === 'text',\n ) as TextBlock[],\n )\n\n // onComplete hooks (mirrors Path C)\n if (loadedAgentConfig?.hooks?.onComplete?.length) {\n const hookContext = createHookContext({\n sessionId: agentId,\n agentId,\n agentType,\n result: lastMessage.message.content\n .filter(_ => _.type === 'text')\n .map(_ => (_ as { type: 'text'; text: string }).text)\n .join('\\n'),\n })\n executeAgentHooks(\n 'onComplete',\n loadedAgentConfig,\n hookContext,\n ).catch(err =>\n debugLogger.warn(\n 'TASK_AGENT_ONCOMPLETE_HOOK_FAILED (Path B)',\n {\n agentId,\n agentType,\n error: err instanceof Error ? err.message : String(err),\n },\n ),\n )\n }\n\n // saveAgentMemory (mirrors Path C)\n if (loadedAgentConfig?.memory) {\n const finalResponse = lastMessage.message.content\n .filter(_ => _.type === 'text')\n .map(_ => (_ as { type: 'text'; text: string }).text)\n .join('\\n')\n if (finalResponse.trim()) {\n saveAgentMemory(\n agentType,\n loadedAgentConfig.memory,\n finalResponse,\n ).catch(err =>\n debugLogger.warn(\n 'TASK_AGENT_MEMORY_SAVE_FAILED (Path B)',\n {\n agentId,\n agentType,\n error:\n err instanceof Error ? err.message : String(err),\n },\n ),\n )\n }\n }\n } else {\n completeBackgroundAgent(agentId, [\n { type: 'text', text: 'Agent completed.' },\n ])\n }\n\n const idleSummary =\n lastMessage?.type === 'assistant'\n ? lastMessage.message.content\n .filter(_ => _.type === 'text')\n .map(_ => (_ as { type: 'text'; text: string }).text)\n .join('\\n')\n .slice(0, 2000) || undefined\n : undefined\n updateInProcessAgentState(agentId, {\n isIdle: true,\n lastReportedToolCount: bgToolUseCount,\n })\n markTeammateCompleted(\n team_name,\n agentId,\n teammateName || agentType,\n {\n summary: idleSummary,\n },\n ).catch(err => {\n debugLogger.error('TEAMMATE_MARK_COMPLETED_FAILED', {\n agentId,\n teamName: team_name,\n error: err instanceof Error ? err.message : String(err),\n })\n })\n }\n })\n\n await engine.start()\n await engine.submitPrompt(effectivePrompt)\n\n // If engine is still idle after submitPrompt (no idle timeout triggered stop),\n // it means the query completed normally but the engine is waiting.\n // For teammates, the idle timeout in AgentEngine handles the stop.\n // We wait for the engine to stop (idle_timeout \u2192 stopped).\n if (engine.isRunning) {\n await new Promise<void>(resolve => {\n engine.on(event => {\n if (event.type === 'state_change' && event.to === 'stopped') {\n resolve()\n }\n })\n })\n }\n } catch (error) {\n const errorMsg =\n error instanceof Error ? error.message : String(error)\n failBackgroundAgent(agentId, errorMsg)\n failAgentTranscript(agentId, errorMsg)\n markTeammateIdle(team_name, agentId, teammateName || agentType, {\n status: 'failed',\n failureReason: errorMsg,\n }).catch(err => {\n debugLogger.error('TEAMMATE_MARK_IDLE_FAILED', {\n agentId,\n teamName: team_name,\n error: err instanceof Error ? err.message : String(err),\n })\n })\n\n // onError hooks (mirrors Path C)\n if (loadedAgentConfig?.hooks?.onError?.length) {\n const hookContext = createHookContext({\n sessionId: agentId,\n agentId,\n agentType,\n error: error instanceof Error ? error : new Error(String(error)),\n })\n executeAgentHooks('onError', loadedAgentConfig, hookContext).catch(\n () => {},\n )\n }\n } finally {\n popAgentContext()\n cleanupAgentStreamingState(agentId)\n unregisterInProcessAgent(agentId)\n }\n })()\n\n const bgResultText = `Agent \"${teammateName || agentType}\" running in background`\n yield {\n type: 'result',\n data: [{ type: 'text', text: bgResultText }] as TextBlock[],\n resultForAssistant: `Teammate \"${teammateName || agentType}\" is running in the background. You will be notified automatically when they finish \u2014 do NOT check on them.`,\n }\n hasYieldedResult = true\n return\n }\n\n // Push agent context so streaming state is isolated for this subagent\n pushAgentContext(agentId)\n\n // Mutable ref to capture engine's messages after completion\n const messagesOut: { current: import('@query').Message[] } = {\n current: messages,\n }\n\n try {\n // Foreground mode: use AgentEngine via adapter (unified with Path B)\n const { runForegroundEngine } = await import(\n '../../engine/foregroundAdapter'\n )\n\n for await (const item of runForegroundEngine({\n agentId,\n teamName: team_name,\n teammateName,\n agentType,\n systemPrompt: team_name\n ? () => getSystemPrompt('teammate')\n : taskPrompt,\n context,\n tools: queryOptions.tools,\n initialMessages: [...messages],\n prompt: effectivePrompt,\n maxTurns: max_turns || undefined,\n maxThinkingTokens: queryOptions.maxThinkingTokens,\n model: queryOptions.model as string | undefined,\n forkNumber,\n messageLogName,\n sidechainNumber: getSidechainNumber(),\n verbose: queryOptions.verbose,\n safeMode: queryOptions.safeMode,\n safetyMode: queryOptions.safetyMode,\n permissionMode: effectivePermissionMode,\n readFileTimestamps,\n abortController: effectiveAbortController,\n messagesOut,\n })) {\n yield item\n if (item.type === 'progress' && item.content?.message?.content) {\n // Track tool use count from progress events\n for (const c of item.content.message.content) {\n if (c.type === 'tool_use') toolUseCount++\n }\n }\n }\n\n // Use the engine's messages for post-completion logic\n messages = messagesOut.current\n\n const normalizedMessages = normalizeMessages(messages)\n const lastMessage = last(messages)\n if (lastMessage?.type !== 'assistant') {\n throw new Error('Last message was not an assistant message')\n }\n\n // Calculate token usage for transcript\n const tokenUsage = {\n inputTokens: lastMessage.message.usage.input_tokens,\n outputTokens: lastMessage.message.usage.output_tokens,\n cacheReadTokens: lastMessage.message.usage.cache_read_input_tokens,\n cacheCreationTokens:\n lastMessage.message.usage.cache_creation_input_tokens,\n }\n\n // Check for interrupt\n const isInterrupted = lastMessage.message.content.some(\n _ => _.type === 'text' && _.text === INTERRUPT_MESSAGE,\n )\n\n if (isInterrupted) {\n // Mark transcript as interrupted (can be resumed later)\n interruptAgentTranscript(agentId)\n debugLogger.info('TASK_AGENT_INTERRUPTED', { agentId, toolUseCount })\n } else {\n // Mark transcript as completed\n completeAgentTranscript(agentId, tokenUsage)\n debugLogger.info('TASK_AGENT_COMPLETED', { agentId, toolUseCount })\n\n // Fire SubagentStop hook (fire-and-forget)\n if (hookMgr) {\n hookMgr\n .executeSubagentStop(agentType, agentId)\n .catch(err =>\n debugLogger.warn('SubagentStop hook failed', { error: err }),\n )\n }\n\n // Execute onComplete hooks if configured (Claude Code spec)\n if (loadedAgentConfig?.hooks?.onComplete?.length) {\n try {\n const hookContext = createHookContext({\n sessionId: agentId,\n agentId,\n agentType,\n result: this.renderResultForAssistant(\n lastMessage.message.content.filter(_ => _.type === 'text'),\n ),\n })\n await executeAgentHooks(\n 'onComplete',\n loadedAgentConfig,\n hookContext,\n )\n } catch (hookError) {\n debugLogger.warn('TASK_AGENT_ONCOMPLETE_HOOK_FAILED', {\n agentId,\n agentType,\n error:\n hookError instanceof Error\n ? hookError.message\n : String(hookError),\n })\n }\n }\n\n // Save agent memory if configured (Claude Code spec)\n if (loadedAgentConfig?.memory) {\n try {\n // Save the agent's final response as memory\n const finalResponse = lastMessage.message.content\n .filter(_ => _.type === 'text')\n .map(_ => (_ as { type: 'text'; text: string }).text)\n .join('\\n')\n if (finalResponse.trim()) {\n await saveAgentMemory(\n agentType,\n loadedAgentConfig.memory,\n finalResponse,\n )\n }\n } catch (memoryError) {\n debugLogger.warn('TASK_AGENT_MEMORY_SAVE_FAILED', {\n agentId,\n agentType,\n error:\n memoryError instanceof Error\n ? memoryError.message\n : String(memoryError),\n })\n }\n }\n\n const result = [\n toolUseCount === 1 ? '1 tool use' : `${toolUseCount} tool uses`,\n formatNumber(\n (lastMessage.message.usage.cache_creation_input_tokens ?? 0) +\n (lastMessage.message.usage.cache_read_input_tokens ?? 0) +\n lastMessage.message.usage.input_tokens +\n lastMessage.message.usage.output_tokens,\n ) + ' tokens',\n formatDuration(Date.now() - startTime),\n ]\n yield {\n type: 'progress',\n content: createAssistantMessage(`Done (${result.join(' \u00B7 ')})`),\n normalizedMessages,\n tools,\n }\n }\n\n // Fire auto-idle notification when a teammate agent completes\n if (team_name) {\n // Update CC-compatible state: mark agent as idle and record final counts\n updateInProcessAgentState(agentId, {\n isIdle: true,\n lastReportedToolCount: toolUseCount,\n lastReportedTokenCount: lastMessage\n ? (lastMessage.message.usage.cache_creation_input_tokens ?? 0) +\n (lastMessage.message.usage.cache_read_input_tokens ?? 0) +\n lastMessage.message.usage.input_tokens +\n lastMessage.message.usage.output_tokens\n : 0,\n })\n\n // Build completedInfo from available task context\n const idleSummary = isInterrupted\n ? undefined\n : lastMessage.message.content\n .filter(_ => _.type === 'text')\n .map(_ => (_ as { type: 'text'; text: string }).text)\n .join('\\n')\n .slice(0, 2000) || undefined\n markTeammateIdle(team_name, agentId, teammateName || agentType, {\n status: isInterrupted ? 'failed' : 'completed',\n summary: idleSummary,\n ...(isInterrupted && { failureReason: 'interrupted' }),\n }).catch(err => debugLogger.trace('MARK_TEAMMATE_IDLE', { error: err }))\n\n // Clean up in-process state handle\n unregisterInProcessAgent(agentId)\n }\n\n // Output is an AssistantMessage, but since TaskTool is a tool, it needs\n // to serialize its response to UserMessage-compatible content.\n const data = lastMessage.message.content.filter(_ => _.type === 'text')\n\n // Always include agentId in result (CC alignment \u2014 issue #10864)\n // Model needs the real UUID for resume and TaskOutput lookups\n const resultWithAgentId = isInterrupted\n ? `[Interrupted - Agent ID: ${agentId}]\\n${this.renderResultForAssistant(data)}`\n : `${this.renderResultForAssistant(data)}\\n\\nAgent completed successfully.\\nagentId: ${agentId}`\n\n yield {\n type: 'result',\n data,\n resultForAssistant: resultWithAgentId,\n }\n hasYieldedResult = true\n } catch (error) {\n // \uD83D\uDD27 CRITICAL: On error, we MUST yield a result to clear UI state\n const errorMessage =\n error instanceof Error ? error.message : String(error)\n\n // \uD83D\uDD27 FIX: Check if this is an AbortError (ESC interrupt)\n // AbortError indicates user interrupted, should mark as 'interrupted' not 'failed'\n const isAbortError =\n error instanceof Error &&\n (error.name === 'AbortError' ||\n error.message.includes('aborted') ||\n error.message.includes('abort'))\n\n if (isAbortError) {\n // Mark transcript as interrupted (can be resumed later)\n interruptAgentTranscript(agentId)\n debugLogger.info('TASK_AGENT_INTERRUPTED_BY_ABORT', {\n agentId,\n toolUseCount,\n })\n\n yield {\n type: 'result',\n data: [\n {\n type: 'text',\n text: `Task [${agentType}] interrupted\\n[Agent ID: ${agentId}]`,\n },\n ] as TextBlock[],\n resultForAssistant: `Task [${agentType}] interrupted by user\\n[Agent ID: ${agentId} - can be resumed]`,\n }\n } else {\n // Convert to user-friendly error for better UX\n const friendlyError =\n error instanceof UserFriendlyError\n ? error\n : new UserFriendlyError(error, {\n operation: 'agent task',\n model: agentType,\n })\n const friendlyMessage = friendlyError.getUserMessage()\n\n logError(`TaskTool [${agentType}] error: ${errorMessage}`)\n\n // Mark transcript as failed with friendly message\n failAgentTranscript(agentId, friendlyMessage)\n debugLogger.error('TASK_AGENT_FAILED', {\n agentId,\n error: errorMessage,\n errorId: friendlyError.id,\n })\n\n // Execute onError hooks if configured (Claude Code spec)\n if (loadedAgentConfig?.hooks?.onError?.length) {\n try {\n const hookContext = createHookContext({\n sessionId: agentId,\n agentId,\n agentType,\n error: error instanceof Error ? error : new Error(String(error)),\n })\n await executeAgentHooks('onError', loadedAgentConfig, hookContext)\n } catch (hookError) {\n debugLogger.warn('TASK_AGENT_ONERROR_HOOK_FAILED', {\n agentId,\n agentType,\n error:\n hookError instanceof Error\n ? hookError.message\n : String(hookError),\n })\n }\n }\n\n yield {\n type: 'result',\n data: [\n {\n type: 'text',\n text: `${friendlyMessage}\\n[Agent ID: ${agentId}]`,\n },\n ] as TextBlock[],\n resultForAssistant: `Task [${agentType}] failed: ${errorMessage}\\n[Agent ID: ${agentId} - can be resumed]`,\n }\n }\n hasYieldedResult = true\n } finally {\n // Cleanup git worktree if created\n if (worktreePath) {\n let removeSuccess = false\n try {\n execFileSync('git', ['worktree', 'remove', worktreePath, '--force'], {\n cwd: getCwd(),\n stdio: 'pipe',\n })\n removeSuccess = true\n debugLogger.info('TASK_AGENT_WORKTREE_REMOVED', {\n agentId,\n worktreePath,\n })\n } catch {\n debugLogger.warn('TASK_AGENT_WORKTREE_CLEANUP_FAILED', {\n agentId,\n worktreePath,\n })\n }\n // Fire WorktreeRemove hook\n const hookMgrRemove = getHookManager()\n hookMgrRemove\n ?.executeWorktreeRemove(\n worktreePath,\n agentId,\n agentType,\n removeSuccess,\n )\n .catch(err =>\n debugLogger.trace('HOOK_WORKTREE_REMOVE', { error: err }),\n )\n }\n\n // Pop agent context and clean up streaming state\n popAgentContext()\n cleanupAgentStreamingState(agentId)\n\n // Unregister AbortController from team manager\n if (team_name) {\n try {\n const { unregisterAgentAbortController } = await import(\n '@services/agentTeams/teamManager'\n )\n unregisterAgentAbortController(team_name, agentId)\n } catch {\n // Non-fatal\n }\n }\n\n // Restore previous env vars to prevent pollution across concurrent agents\n if (restoreEnvVars) {\n restoreEnvVars()\n }\n\n // \uD83D\uDD27 SAFETY NET: Ensure we always yield a result even in unexpected scenarios\n if (!hasYieldedResult) {\n // Mark as interrupted if we haven't yielded a result\n interruptAgentTranscript(agentId)\n\n yield {\n type: 'result',\n data: [\n {\n type: 'text',\n text: `Task [${agentType}] terminated unexpectedly\\n[Agent ID: ${agentId}]`,\n },\n ] as TextBlock[],\n resultForAssistant: `Task [${agentType}] terminated unexpectedly\\n[Agent ID: ${agentId} - can be resumed]`,\n }\n }\n }\n },\n\n isReadOnly() {\n return true // for now...\n },\n isConcurrencySafe() {\n return true // Task tool supports concurrent execution in official implementation\n },\n async validateInput(input, context) {\n if (!input.description || typeof input.description !== 'string') {\n return {\n result: false,\n message: 'Description is required and must be a string',\n }\n }\n if (!input.prompt || typeof input.prompt !== 'string') {\n return {\n result: false,\n message: 'Prompt is required and must be a string',\n }\n }\n\n // Model validation - similar to Edit tool error handling\n if (input.model_name) {\n const modelManager = getModelManager()\n const availableModels = modelManager.getAllAvailableModelNames()\n\n if (!availableModels.includes(input.model_name)) {\n return {\n result: false,\n message: `Model '${input.model_name}' does not exist. Available models: ${availableModels.join(', ')}`,\n meta: {\n model_name: input.model_name,\n availableModels,\n },\n }\n }\n }\n\n // Validate subagent_type if provided\n if (input.subagent_type) {\n const availableTypes = await getAvailableAgentTypes()\n if (!availableTypes.includes(input.subagent_type)) {\n return {\n result: false,\n message: `Agent type '${input.subagent_type}' does not exist. Available types: ${availableTypes.join(', ')}`,\n meta: {\n subagent_type: input.subagent_type,\n availableTypes,\n },\n }\n }\n }\n\n // Validate resume parameter if provided\n if (input.resume) {\n if (!canResumeTranscript(input.resume)) {\n return {\n result: false,\n message: `Cannot resume agent '${input.resume}': transcript not found or not resumable (status must be 'running' or 'interrupted')`,\n meta: {\n resume: input.resume,\n },\n }\n }\n }\n\n return { result: true }\n },\n async isEnabled() {\n return true\n },\n userFacingName(input?: any) {\n // Return agent name with proper prefix\n const agentType = input?.subagent_type || 'general-purpose'\n return `agent-${agentType}`\n },\n needsPermissions() {\n return false\n },\n renderResultForAssistant(data: TextBlock[]) {\n return data\n .map(block => (block.type === 'text' ? block.text : ''))\n .join('\\n')\n },\n renderToolUseMessage(\n {\n description,\n prompt,\n model_name,\n subagent_type,\n team_name,\n name: teammateName,\n },\n { verbose },\n ) {\n if (!description || !prompt) return null\n\n const modelManager = getModelManager()\n const defaultTaskModel = modelManager.getModelName('task')\n const actualModel = model_name || defaultTaskModel\n const agentType = subagent_type || 'general-purpose'\n const promptPreview =\n prompt.length > 80 ? prompt.substring(0, 80) + '...' : prompt\n\n const theme = getTheme()\n\n // Team agent rendering: @name (agentType): description\n if (team_name) {\n const displayName = teammateName || agentType\n if (verbose) {\n return (\n <Box flexDirection=\"column\">\n <Text>\n <Text color={theme.info}>@{displayName}</Text>{' '}\n <Text color={theme.secondaryText}>({agentType})</Text>:{' '}\n {description}\n </Text>\n <Box\n paddingLeft={2}\n borderLeftStyle=\"single\"\n borderLeftColor={theme.secondaryBorder}\n >\n <Text color={theme.secondaryText}>{promptPreview}</Text>\n </Box>\n </Box>\n )\n }\n return `@${displayName} (${agentType}): ${description}`\n }\n\n if (verbose) {\n return (\n <Box flexDirection=\"column\">\n <Text>\n [{agentType}] {actualModel}: {description}\n </Text>\n <Box\n paddingLeft={2}\n borderLeftStyle=\"single\"\n borderLeftColor={theme.secondaryBorder}\n >\n <Text color={theme.secondaryText}>{promptPreview}</Text>\n </Box>\n </Box>\n )\n }\n\n // Simple display: agent type, model and description\n return `[${agentType}] ${actualModel}: ${description}`\n },\n renderToolUseRejectedMessage() {\n return <FallbackToolUseRejectedMessage />\n },\n renderToolResultMessage(content, options?: { verbose?: boolean }) {\n const theme = getTheme()\n const verbose = options?.verbose ?? false\n\n // Guard against undefined or null content\n if (!content) {\n return (\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text color={theme.success}>Done</Text>\n </Box>\n )\n }\n\n if (Array.isArray(content)) {\n const textBlocks = content.filter(\n (block): block is { type: 'text'; text: string } =>\n block && block.type === 'text',\n )\n const totalLength = textBlocks.reduce(\n (sum, block) => sum + (block.text?.length || 0),\n 0,\n )\n // Use exact match for interrupt detection\n const isInterrupted = content.some(\n block =>\n block && block.type === 'text' && block.text === INTERRUPT_MESSAGE,\n )\n\n if (isInterrupted) {\n return (\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text color={theme.error}>Interrupted by user</Text>\n </Box>\n )\n }\n\n // Extract output content for display based on verbosity\n const outputText = textBlocks.map(b => b.text).join('\\n')\n\n // Determine how much content to show based on displayMode\n // minimal/compact (verbose=false): Just show \"Task completed (X characters)\"\n // detailed (verbose=true): Show preview of the actual output\n const getOutputPreview = () => {\n if (!verbose || !outputText) return null\n const maxLen = 500\n if (outputText.length <= maxLen) return outputText\n return outputText.substring(0, maxLen) + '...'\n }\n\n const outputPreview = getOutputPreview()\n\n return (\n <Box flexDirection=\"column\">\n <Box justifyContent=\"space-between\" width=\"100%\">\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text color={theme.success}>Done</Text>\n {textBlocks.length > 0 && verbose && (\n <Text color={theme.secondaryText}> ({totalLength} chars)</Text>\n )}\n </Box>\n </Box>\n {outputPreview && (\n <Box marginTop={1} paddingLeft={4}>\n <Text color={theme.mutedText}>{outputPreview}</Text>\n </Box>\n )}\n </Box>\n )\n }\n\n return (\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text color={theme.success}>Done</Text>\n </Box>\n )\n },\n} satisfies Tool\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["HEADLESS_TIMEOUT_MS", "exitCode"]
|
|
7
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
const TOOL_NAME = "Agent";
|
|
2
|
-
const TOOL_NAME_LEGACY = "Task";
|
|
3
|
-
function isAgentToolName(name) {
|
|
4
|
-
return name === TOOL_NAME || name === TOOL_NAME_LEGACY;
|
|
5
|
-
}
|
|
6
|
-
export {
|
|
7
|
-
TOOL_NAME,
|
|
8
|
-
TOOL_NAME_LEGACY,
|
|
9
|
-
isAgentToolName
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=constants.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/TaskTool/constants.ts"],
|
|
4
|
-
"sourcesContent": ["export const TOOL_NAME = 'Agent'\nexport const TOOL_NAME_LEGACY = 'Task'\n\n/** Check if a name matches the Agent tool (handles legacy 'Task' name) */\nexport function isAgentToolName(name: string): boolean {\n return name === TOOL_NAME || name === TOOL_NAME_LEGACY\n}\n"],
|
|
5
|
-
"mappings": "AAAO,MAAM,YAAY;AAClB,MAAM,mBAAmB;AAGzB,SAAS,gBAAgB,MAAuB;AACrD,SAAO,SAAS,aAAa,SAAS;AACxC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { getTools, getReadOnlyTools } from "../../tools.js";
|
|
2
|
-
import { getActiveAgents } from "../../utils/agentLoader.js";
|
|
3
|
-
const EXCLUDED_AGENT_TOOLS = /* @__PURE__ */ new Set([
|
|
4
|
-
"Agent",
|
|
5
|
-
// Prevent recursive TaskTool calls (unless explicitly allowed via toolFilter)
|
|
6
|
-
"TeamCreate",
|
|
7
|
-
// Team management is leader-only
|
|
8
|
-
"TeamDelete"
|
|
9
|
-
// Team management is leader-only
|
|
10
|
-
]);
|
|
11
|
-
async function getTaskTools(safeMode) {
|
|
12
|
-
return (await (!safeMode ? getTools() : getReadOnlyTools())).filter(
|
|
13
|
-
(_) => !EXCLUDED_AGENT_TOOLS.has(_.name)
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
async function getPrompt(safeMode) {
|
|
17
|
-
const agents = await getActiveAgents();
|
|
18
|
-
const agentDescriptions = agents.map((agent) => {
|
|
19
|
-
const toolsStr = Array.isArray(agent.tools) ? agent.tools.join(", ") : "*";
|
|
20
|
-
return `- ${agent.agentType}: ${agent.whenToUse} (Tools: ${toolsStr})`;
|
|
21
|
-
}).join("\n");
|
|
22
|
-
return `Launch a new agent to handle complex, multi-step tasks autonomously.
|
|
23
|
-
|
|
24
|
-
The Agent tool launches specialized agents (subprocesses) that autonomously handle complex tasks. Each agent type has specific capabilities and tools available to it.
|
|
25
|
-
|
|
26
|
-
Available agent types and the tools they have access to:
|
|
27
|
-
${agentDescriptions}
|
|
28
|
-
|
|
29
|
-
When using the Agent tool, specify a subagent_type parameter to select which agent type to use. If omitted, the general-purpose agent is used.
|
|
30
|
-
|
|
31
|
-
When to use the Agent tool:
|
|
32
|
-
- When you are instructed to execute custom slash commands. Use the Agent tool with the slash command invocation as the entire prompt. The slash command can take arguments. For example: Agent(description="Check the file", prompt="/check-file path/to/file.py")
|
|
33
|
-
|
|
34
|
-
When NOT to use the Agent tool:
|
|
35
|
-
- If you want to read a specific file path, use the Read or Glob tool instead of the Agent tool, to find the match more quickly
|
|
36
|
-
- If you are searching for a specific class definition like "class Foo", use the Glob tool instead, to find the match more quickly
|
|
37
|
-
- If you are searching for code within a specific file or set of 2-3 files, use the Read tool instead of the Agent tool, to find the match more quickly
|
|
38
|
-
- Other tasks that are not related to the agent descriptions above
|
|
39
|
-
|
|
40
|
-
## Parallel Tasks vs Agent Teams \u2014 Decision Framework
|
|
41
|
-
|
|
42
|
-
**USER INTENT OVERRIDE: If the user explicitly asks for a team, swarm, or multi-agent group, ALWAYS use Agent Teams regardless of the heuristics below.**
|
|
43
|
-
|
|
44
|
-
You have TWO ways to run multiple agents. Choose the right one:
|
|
45
|
-
|
|
46
|
-
### Parallel Tasks (multiple Agent calls in one message) \u2014 DEFAULT CHOICE
|
|
47
|
-
Use when tasks are **independent and fire-and-forget**:
|
|
48
|
-
- Each agent works alone, returns a result, and is done
|
|
49
|
-
- No agent needs to see another agent's output to do its work
|
|
50
|
-
- You (the orchestrator) synthesize all results after they return
|
|
51
|
-
|
|
52
|
-
Examples: analyze 3 files, search 5 code patterns, run independent checks
|
|
53
|
-
|
|
54
|
-
### Agent Teams (TeamCreate + SendMessage) \u2014 for collaboration or user-requested teams
|
|
55
|
-
Use when agents **must communicate with each other** during execution, or when the user explicitly requests a team:
|
|
56
|
-
- Agent A's output feeds into Agent B's work (and B may send findings back to A)
|
|
57
|
-
- Agents need a shared task board to coordinate who does what
|
|
58
|
-
- The work requires multiple rounds of back-and-forth between agents
|
|
59
|
-
- Agents need to persist across rounds and be reassigned new tasks
|
|
60
|
-
|
|
61
|
-
**Important**: Teammates in a team automatically run in background, so you (the team-lead) remain available to process messages and coordinate work.
|
|
62
|
-
|
|
63
|
-
Examples: researcher finds info \u2192 implementer codes it \u2192 tester validates \u2192 implementer fixes issues
|
|
64
|
-
|
|
65
|
-
### Decision Checklist
|
|
66
|
-
Ask yourself: "Did the user ask for a team, OR do agents need to TALK TO EACH OTHER?"
|
|
67
|
-
- **User asked for a team** \u2192 Use Agent Teams (always honor explicit requests)
|
|
68
|
-
- **No communication needed** \u2192 Use parallel Agent calls (simple, fast, no overhead)
|
|
69
|
-
- **Agents must communicate** \u2192 Use Agent Teams (TeamCreate + spawn teammates + SendMessage)
|
|
70
|
-
|
|
71
|
-
**Efficiency tip:** For independent tasks, parallel Agent calls are simpler and faster. But always defer to user intent \u2014 if they ask for a team, create one.
|
|
72
|
-
|
|
73
|
-
Usage notes:
|
|
74
|
-
- Always include a short description (3-5 words) summarizing what the agent will do
|
|
75
|
-
- Launch multiple agents concurrently whenever possible, to maximize performance; to do that, use a single message with multiple tool uses
|
|
76
|
-
- When the agent is done, it will return a single message back to you. The result returned by the agent is not visible to the user. To show the user the result, you should send a text message back to the user with a concise summary of the result.
|
|
77
|
-
- **Foreground tasks return results directly** \u2014 when a foreground Agent (including parallel Agents) completes, its result and agentId are returned inline in the tool result. Do NOT call TaskOutput for foreground tasks; their results are already in your context. TaskOutput is ONLY for background tasks started with \`run_in_background: true\`.
|
|
78
|
-
- You can optionally run agents in the background using the run_in_background parameter. When an agent runs in the background, you will be automatically notified when it completes \u2014 do NOT sleep, poll, or proactively check on its progress. Continue with other work or respond to the user instead.
|
|
79
|
-
- **Foreground vs background**: Use foreground (default) when you need the agent's results before you can proceed \u2014 e.g., research agents whose findings inform your next steps. Use background when you have genuinely independent work to do in parallel.
|
|
80
|
-
- When using Agent Teams (TeamCreate), teammates automatically run in background so you remain available to coordinate. After spawning all teammates, respond to the user with a brief status (e.g., "Agents are working...") and STOP \u2014 do NOT manually read files, check inboxes, or use TaskOutput. Teammate results are delivered to you automatically as new messages.
|
|
81
|
-
- Agents can be resumed using the \`resume\` parameter by passing the agent ID from a previous invocation. When resumed, the agent continues with its full previous context preserved. When NOT resuming, each invocation starts fresh and you should provide a detailed task description with all necessary context.
|
|
82
|
-
- When the agent is done, it will return a single message back to you along with its agent ID. You can use this ID to resume the agent later if needed for follow-up work.
|
|
83
|
-
- Provide clear, detailed prompts so the agent can work autonomously and return exactly the information you need.
|
|
84
|
-
- The agent's outputs should generally be trusted
|
|
85
|
-
- Clearly tell the agent whether you expect it to write code or just to do research (search, file reads, web fetches, etc.), since it is not aware of the user's intent
|
|
86
|
-
- If the agent description mentions that it should be used proactively, then you should try your best to use it without the user having to ask for it first. Use your judgement.
|
|
87
|
-
- If the user specifies that they want you to run agents "in parallel", you MUST send a single message with multiple Agent tool use content blocks.
|
|
88
|
-
|
|
89
|
-
Example usage:
|
|
90
|
-
|
|
91
|
-
<example>
|
|
92
|
-
user: "Please write a function that checks if a number is prime"
|
|
93
|
-
assistant: I'm going to use the Write tool to write the following code:
|
|
94
|
-
<code>
|
|
95
|
-
function isPrime(n) {
|
|
96
|
-
if (n <= 1) return false
|
|
97
|
-
for (let i = 2; i * i <= n; i++) {
|
|
98
|
-
if (n % i === 0) return false
|
|
99
|
-
}
|
|
100
|
-
return true
|
|
101
|
-
}
|
|
102
|
-
</code>
|
|
103
|
-
<commentary>
|
|
104
|
-
Since a significant piece of code was written and the task was completed, now use the test-runner agent to run the tests
|
|
105
|
-
</commentary>
|
|
106
|
-
assistant: Uses the Agent tool to launch the test-runner agent
|
|
107
|
-
</example>
|
|
108
|
-
|
|
109
|
-
<example>
|
|
110
|
-
user: "Hello"
|
|
111
|
-
<commentary>
|
|
112
|
-
Since the user is greeting, use the greeting-responder agent to respond with a friendly joke
|
|
113
|
-
</commentary>
|
|
114
|
-
assistant: "I'm going to use the Agent tool to launch the greeting-responder agent"
|
|
115
|
-
</example>`;
|
|
116
|
-
}
|
|
117
|
-
export {
|
|
118
|
-
getPrompt,
|
|
119
|
-
getTaskTools
|
|
120
|
-
};
|
|
121
|
-
//# sourceMappingURL=prompt.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/TaskTool/prompt.ts"],
|
|
4
|
-
"sourcesContent": ["import { type Tool } from '@tool'\nimport { getTools, getReadOnlyTools } from '@tools'\nimport { TaskTool } from './TaskTool'\nimport { getModelManager } from '@utils/model'\nimport { getActiveAgents } from '@utils/agentLoader'\n\n/**\n * Agent-internal tools that should never be exposed to subagents.\n * These are either recursive (TaskTool itself) or admin-only.\n */\nconst EXCLUDED_AGENT_TOOLS = new Set([\n 'Agent', // Prevent recursive TaskTool calls (unless explicitly allowed via toolFilter)\n 'TeamCreate', // Team management is leader-only\n 'TeamDelete', // Team management is leader-only\n])\n\nexport async function getTaskTools(safeMode: boolean): Promise<Tool[]> {\n return (await (!safeMode ? getTools() : getReadOnlyTools())).filter(\n _ => !EXCLUDED_AGENT_TOOLS.has(_.name),\n )\n}\n\nexport async function getPrompt(safeMode: boolean): Promise<string> {\n const agents = await getActiveAgents()\n\n // Format: (Tools: tool1, tool2)\n const agentDescriptions = agents\n .map(agent => {\n const toolsStr = Array.isArray(agent.tools) ? agent.tools.join(', ') : '*'\n return `- ${agent.agentType}: ${agent.whenToUse} (Tools: ${toolsStr})`\n })\n .join('\\n')\n\n return `Launch a new agent to handle complex, multi-step tasks autonomously.\n\nThe Agent tool launches specialized agents (subprocesses) that autonomously handle complex tasks. Each agent type has specific capabilities and tools available to it.\n\nAvailable agent types and the tools they have access to:\n${agentDescriptions}\n\nWhen using the Agent tool, specify a subagent_type parameter to select which agent type to use. If omitted, the general-purpose agent is used.\n\nWhen to use the Agent tool:\n- When you are instructed to execute custom slash commands. Use the Agent tool with the slash command invocation as the entire prompt. The slash command can take arguments. For example: Agent(description=\"Check the file\", prompt=\"/check-file path/to/file.py\")\n\nWhen NOT to use the Agent tool:\n- If you want to read a specific file path, use the Read or Glob tool instead of the Agent tool, to find the match more quickly\n- If you are searching for a specific class definition like \"class Foo\", use the Glob tool instead, to find the match more quickly\n- If you are searching for code within a specific file or set of 2-3 files, use the Read tool instead of the Agent tool, to find the match more quickly\n- Other tasks that are not related to the agent descriptions above\n\n## Parallel Tasks vs Agent Teams \u2014 Decision Framework\n\n**USER INTENT OVERRIDE: If the user explicitly asks for a team, swarm, or multi-agent group, ALWAYS use Agent Teams regardless of the heuristics below.**\n\nYou have TWO ways to run multiple agents. Choose the right one:\n\n### Parallel Tasks (multiple Agent calls in one message) \u2014 DEFAULT CHOICE\nUse when tasks are **independent and fire-and-forget**:\n- Each agent works alone, returns a result, and is done\n- No agent needs to see another agent's output to do its work\n- You (the orchestrator) synthesize all results after they return\n\nExamples: analyze 3 files, search 5 code patterns, run independent checks\n\n### Agent Teams (TeamCreate + SendMessage) \u2014 for collaboration or user-requested teams\nUse when agents **must communicate with each other** during execution, or when the user explicitly requests a team:\n- Agent A's output feeds into Agent B's work (and B may send findings back to A)\n- Agents need a shared task board to coordinate who does what\n- The work requires multiple rounds of back-and-forth between agents\n- Agents need to persist across rounds and be reassigned new tasks\n\n**Important**: Teammates in a team automatically run in background, so you (the team-lead) remain available to process messages and coordinate work.\n\nExamples: researcher finds info \u2192 implementer codes it \u2192 tester validates \u2192 implementer fixes issues\n\n### Decision Checklist\nAsk yourself: \"Did the user ask for a team, OR do agents need to TALK TO EACH OTHER?\"\n- **User asked for a team** \u2192 Use Agent Teams (always honor explicit requests)\n- **No communication needed** \u2192 Use parallel Agent calls (simple, fast, no overhead)\n- **Agents must communicate** \u2192 Use Agent Teams (TeamCreate + spawn teammates + SendMessage)\n\n**Efficiency tip:** For independent tasks, parallel Agent calls are simpler and faster. But always defer to user intent \u2014 if they ask for a team, create one.\n\nUsage notes:\n- Always include a short description (3-5 words) summarizing what the agent will do\n- Launch multiple agents concurrently whenever possible, to maximize performance; to do that, use a single message with multiple tool uses\n- When the agent is done, it will return a single message back to you. The result returned by the agent is not visible to the user. To show the user the result, you should send a text message back to the user with a concise summary of the result.\n- **Foreground tasks return results directly** \u2014 when a foreground Agent (including parallel Agents) completes, its result and agentId are returned inline in the tool result. Do NOT call TaskOutput for foreground tasks; their results are already in your context. TaskOutput is ONLY for background tasks started with \\`run_in_background: true\\`.\n- You can optionally run agents in the background using the run_in_background parameter. When an agent runs in the background, you will be automatically notified when it completes \u2014 do NOT sleep, poll, or proactively check on its progress. Continue with other work or respond to the user instead.\n- **Foreground vs background**: Use foreground (default) when you need the agent's results before you can proceed \u2014 e.g., research agents whose findings inform your next steps. Use background when you have genuinely independent work to do in parallel.\n- When using Agent Teams (TeamCreate), teammates automatically run in background so you remain available to coordinate. After spawning all teammates, respond to the user with a brief status (e.g., \"Agents are working...\") and STOP \u2014 do NOT manually read files, check inboxes, or use TaskOutput. Teammate results are delivered to you automatically as new messages.\n- Agents can be resumed using the \\`resume\\` parameter by passing the agent ID from a previous invocation. When resumed, the agent continues with its full previous context preserved. When NOT resuming, each invocation starts fresh and you should provide a detailed task description with all necessary context.\n- When the agent is done, it will return a single message back to you along with its agent ID. You can use this ID to resume the agent later if needed for follow-up work.\n- Provide clear, detailed prompts so the agent can work autonomously and return exactly the information you need.\n- The agent's outputs should generally be trusted\n- Clearly tell the agent whether you expect it to write code or just to do research (search, file reads, web fetches, etc.), since it is not aware of the user's intent\n- If the agent description mentions that it should be used proactively, then you should try your best to use it without the user having to ask for it first. Use your judgement.\n- If the user specifies that they want you to run agents \"in parallel\", you MUST send a single message with multiple Agent tool use content blocks.\n\nExample usage:\n\n<example>\nuser: \"Please write a function that checks if a number is prime\"\nassistant: I'm going to use the Write tool to write the following code:\n<code>\nfunction isPrime(n) {\n if (n <= 1) return false\n for (let i = 2; i * i <= n; i++) {\n if (n % i === 0) return false\n }\n return true\n}\n</code>\n<commentary>\nSince a significant piece of code was written and the task was completed, now use the test-runner agent to run the tests\n</commentary>\nassistant: Uses the Agent tool to launch the test-runner agent\n</example>\n\n<example>\nuser: \"Hello\"\n<commentary>\nSince the user is greeting, use the greeting-responder agent to respond with a friendly joke\n</commentary>\nassistant: \"I'm going to use the Agent tool to launch the greeting-responder agent\"\n</example>`\n}\n"],
|
|
5
|
-
"mappings": "AACA,SAAS,UAAU,wBAAwB;AAG3C,SAAS,uBAAuB;AAMhC,MAAM,uBAAuB,oBAAI,IAAI;AAAA,EACnC;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF,CAAC;AAED,eAAsB,aAAa,UAAoC;AACrE,UAAQ,OAAO,CAAC,WAAW,SAAS,IAAI,iBAAiB,IAAI;AAAA,IAC3D,OAAK,CAAC,qBAAqB,IAAI,EAAE,IAAI;AAAA,EACvC;AACF;AAEA,eAAsB,UAAU,UAAoC;AAClE,QAAM,SAAS,MAAM,gBAAgB;AAGrC,QAAM,oBAAoB,OACvB,IAAI,WAAS;AACZ,UAAM,WAAW,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,MAAM,KAAK,IAAI,IAAI;AACvE,WAAO,KAAK,MAAM,SAAS,KAAK,MAAM,SAAS,YAAY,QAAQ;AAAA,EACrE,CAAC,EACA,KAAK,IAAI;AAEZ,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKP,iBAAiB;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;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyFnB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { Box, Text } from "ink";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
|
|
5
|
-
import { updateTask, getTaskById } from "../../services/taskStore.js";
|
|
6
|
-
import { DESCRIPTION, PROMPT } from "./prompt.js";
|
|
7
|
-
import { getTheme } from "../../utils/theme.js";
|
|
8
|
-
const inputSchema = z.strictObject({
|
|
9
|
-
taskId: z.string().describe("The ID of the task to update"),
|
|
10
|
-
status: z.enum(["pending", "in_progress", "completed", "deleted"]).optional().describe("New status for the task"),
|
|
11
|
-
subject: z.string().optional().describe("New subject for the task"),
|
|
12
|
-
description: z.string().optional().describe("New description for the task"),
|
|
13
|
-
activeForm: z.string().optional().describe(
|
|
14
|
-
'Present continuous form shown in spinner when in_progress (e.g., "Running tests")'
|
|
15
|
-
),
|
|
16
|
-
owner: z.string().optional().describe("New owner for the task"),
|
|
17
|
-
metadata: z.record(z.unknown()).optional().describe(
|
|
18
|
-
"Metadata keys to merge into the task. Set a key to null to delete it."
|
|
19
|
-
),
|
|
20
|
-
addBlocks: z.array(z.string()).optional().describe("Task IDs that this task blocks"),
|
|
21
|
-
addBlockedBy: z.array(z.string()).optional().describe("Task IDs that block this task")
|
|
22
|
-
});
|
|
23
|
-
const TaskUpdateTool = {
|
|
24
|
-
name: "TaskUpdate",
|
|
25
|
-
async description() {
|
|
26
|
-
return DESCRIPTION;
|
|
27
|
-
},
|
|
28
|
-
async prompt() {
|
|
29
|
-
return PROMPT;
|
|
30
|
-
},
|
|
31
|
-
inputSchema,
|
|
32
|
-
userFacingName() {
|
|
33
|
-
return "Update Task";
|
|
34
|
-
},
|
|
35
|
-
async isEnabled() {
|
|
36
|
-
return true;
|
|
37
|
-
},
|
|
38
|
-
isReadOnly() {
|
|
39
|
-
return false;
|
|
40
|
-
},
|
|
41
|
-
isConcurrencySafe() {
|
|
42
|
-
return false;
|
|
43
|
-
},
|
|
44
|
-
needsPermissions() {
|
|
45
|
-
return false;
|
|
46
|
-
},
|
|
47
|
-
renderToolUseMessage(input) {
|
|
48
|
-
const parts = [`taskId: ${input.taskId}`];
|
|
49
|
-
if (input.status) {
|
|
50
|
-
parts.push(`status: ${input.status}`);
|
|
51
|
-
}
|
|
52
|
-
return parts.join(", ");
|
|
53
|
-
},
|
|
54
|
-
renderToolUseRejectedMessage() {
|
|
55
|
-
return /* @__PURE__ */ React.createElement(FallbackToolUseRejectedMessage, null);
|
|
56
|
-
},
|
|
57
|
-
renderToolResultMessage(output) {
|
|
58
|
-
if (!output || !output.taskId) {
|
|
59
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, null, "\xA0\xA0\u23BF \xA0"), /* @__PURE__ */ React.createElement(Text, null, "Task updated"));
|
|
60
|
-
}
|
|
61
|
-
if (output.deleted) {
|
|
62
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, null, "\xA0\xA0\u23BF \xA0"), /* @__PURE__ */ React.createElement(Text, { color: getTheme().secondaryText }, "Task #", output.taskId, " deleted"));
|
|
63
|
-
}
|
|
64
|
-
const statusColor = output.status === "completed" ? getTheme().success : output.status === "in_progress" ? getTheme().warning : getTheme().secondaryText;
|
|
65
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, null, "\xA0\xA0\u23BF \xA0"), /* @__PURE__ */ React.createElement(Text, null, "Updated task #", output.taskId, output.status && /* @__PURE__ */ React.createElement(Text, { color: statusColor }, " \u2192 ", output.status)));
|
|
66
|
-
},
|
|
67
|
-
renderResultForAssistant(result) {
|
|
68
|
-
if (result.deleted) {
|
|
69
|
-
return `Task #${result.taskId} has been deleted`;
|
|
70
|
-
}
|
|
71
|
-
return `Updated task #${result.taskId}${result.status ? ` status` : ""}`;
|
|
72
|
-
},
|
|
73
|
-
async validateInput({ taskId }) {
|
|
74
|
-
if (!taskId?.trim()) {
|
|
75
|
-
return {
|
|
76
|
-
result: false,
|
|
77
|
-
message: "Task ID is required"
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
const task = getTaskById(taskId);
|
|
81
|
-
if (!task) {
|
|
82
|
-
return {
|
|
83
|
-
result: false,
|
|
84
|
-
message: `Task with ID '${taskId}' not found`
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
return { result: true };
|
|
88
|
-
},
|
|
89
|
-
async *call(input) {
|
|
90
|
-
try {
|
|
91
|
-
const isDeleting = input.status === "deleted";
|
|
92
|
-
const task = await updateTask({
|
|
93
|
-
taskId: input.taskId,
|
|
94
|
-
status: input.status,
|
|
95
|
-
subject: input.subject,
|
|
96
|
-
description: input.description,
|
|
97
|
-
activeForm: input.activeForm,
|
|
98
|
-
owner: input.owner,
|
|
99
|
-
metadata: input.metadata,
|
|
100
|
-
addBlocks: input.addBlocks,
|
|
101
|
-
addBlockedBy: input.addBlockedBy
|
|
102
|
-
});
|
|
103
|
-
if (!task) {
|
|
104
|
-
yield {
|
|
105
|
-
type: "result",
|
|
106
|
-
data: { error: "Task not found" },
|
|
107
|
-
resultForAssistant: `Error: Task with ID '${input.taskId}' not found`
|
|
108
|
-
};
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
if (task.metadata?._hookRejected) {
|
|
112
|
-
const feedback = task.metadata._hookFeedback || "Blocked by hook";
|
|
113
|
-
yield {
|
|
114
|
-
type: "result",
|
|
115
|
-
data: {
|
|
116
|
-
taskId: task.id,
|
|
117
|
-
status: task.status,
|
|
118
|
-
hookBlocked: true,
|
|
119
|
-
hookFeedback: feedback
|
|
120
|
-
},
|
|
121
|
-
resultForAssistant: `Task #${task.id} completion was blocked by a hook. Status reverted to in_progress. Feedback: ${feedback}`
|
|
122
|
-
};
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
const result = {
|
|
126
|
-
taskId: task.id,
|
|
127
|
-
status: task.status,
|
|
128
|
-
deleted: isDeleting
|
|
129
|
-
};
|
|
130
|
-
yield {
|
|
131
|
-
type: "result",
|
|
132
|
-
data: result,
|
|
133
|
-
resultForAssistant: this.renderResultForAssistant(result)
|
|
134
|
-
};
|
|
135
|
-
} catch (error) {
|
|
136
|
-
const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
|
|
137
|
-
yield {
|
|
138
|
-
type: "result",
|
|
139
|
-
data: { error: errorMessage },
|
|
140
|
-
resultForAssistant: `Error updating task: ${errorMessage}`
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
export {
|
|
146
|
-
TaskUpdateTool
|
|
147
|
-
};
|
|
148
|
-
//# sourceMappingURL=TaskUpdateTool.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/TaskUpdateTool/TaskUpdateTool.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Box, Text } from 'ink'\nimport * as React from 'react'\nimport { z } from 'zod'\nimport { FallbackToolUseRejectedMessage } from '@components/FallbackToolUseRejectedMessage'\nimport { Tool } from '@tool'\nimport { updateTask, getTaskById } from '@services/taskStore'\nimport { DESCRIPTION, PROMPT } from './prompt'\nimport { getTheme } from '@utils/theme'\n\nconst inputSchema = z.strictObject({\n taskId: z.string().describe('The ID of the task to update'),\n status: z\n .enum(['pending', 'in_progress', 'completed', 'deleted'])\n .optional()\n .describe('New status for the task'),\n subject: z.string().optional().describe('New subject for the task'),\n description: z.string().optional().describe('New description for the task'),\n activeForm: z\n .string()\n .optional()\n .describe(\n 'Present continuous form shown in spinner when in_progress (e.g., \"Running tests\")',\n ),\n owner: z.string().optional().describe('New owner for the task'),\n metadata: z\n .record(z.unknown())\n .optional()\n .describe(\n 'Metadata keys to merge into the task. Set a key to null to delete it.',\n ),\n addBlocks: z\n .array(z.string())\n .optional()\n .describe('Task IDs that this task blocks'),\n addBlockedBy: z\n .array(z.string())\n .optional()\n .describe('Task IDs that block this task'),\n})\n\nexport const TaskUpdateTool = {\n name: 'TaskUpdate',\n async description() {\n return DESCRIPTION\n },\n async prompt() {\n return PROMPT\n },\n inputSchema,\n userFacingName() {\n return 'Update Task'\n },\n async isEnabled() {\n return true\n },\n isReadOnly() {\n return false\n },\n isConcurrencySafe() {\n return false\n },\n needsPermissions() {\n return false\n },\n renderToolUseMessage(input: z.infer<typeof inputSchema>) {\n const parts: string[] = [`taskId: ${input.taskId}`]\n if (input.status) {\n parts.push(`status: ${input.status}`)\n }\n return parts.join(', ')\n },\n renderToolUseRejectedMessage() {\n return <FallbackToolUseRejectedMessage />\n },\n renderToolResultMessage(output: {\n taskId: string\n status?: string\n deleted?: boolean\n }) {\n if (!output || !output.taskId) {\n return (\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text>Task updated</Text>\n </Box>\n )\n }\n\n if (output.deleted) {\n return (\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text color={getTheme().secondaryText}>\n Task #{output.taskId} deleted\n </Text>\n </Box>\n )\n }\n\n const statusColor =\n output.status === 'completed'\n ? getTheme().success\n : output.status === 'in_progress'\n ? getTheme().warning\n : getTheme().secondaryText\n\n return (\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text>\n Updated task #{output.taskId}\n {output.status && <Text color={statusColor}> \u2192 {output.status}</Text>}\n </Text>\n </Box>\n )\n },\n renderResultForAssistant(result: {\n taskId: string\n status?: string\n deleted?: boolean\n }) {\n if (result.deleted) {\n return `Task #${result.taskId} has been deleted`\n }\n return `Updated task #${result.taskId}${result.status ? ` status` : ''}`\n },\n async validateInput({ taskId }: z.infer<typeof inputSchema>) {\n if (!taskId?.trim()) {\n return {\n result: false,\n message: 'Task ID is required',\n }\n }\n\n const task = getTaskById(taskId)\n if (!task) {\n return {\n result: false,\n message: `Task with ID '${taskId}' not found`,\n }\n }\n\n return { result: true }\n },\n async *call(input: z.infer<typeof inputSchema>) {\n try {\n const isDeleting = input.status === 'deleted'\n\n const task = await updateTask({\n taskId: input.taskId,\n status: input.status,\n subject: input.subject,\n description: input.description,\n activeForm: input.activeForm,\n owner: input.owner,\n metadata: input.metadata,\n addBlocks: input.addBlocks,\n addBlockedBy: input.addBlockedBy,\n })\n\n if (!task) {\n yield {\n type: 'result',\n data: { error: 'Task not found' },\n resultForAssistant: `Error: Task with ID '${input.taskId}' not found`,\n }\n return\n }\n\n // Check if hook blocked task completion\n if (task.metadata?._hookRejected) {\n const feedback = task.metadata._hookFeedback || 'Blocked by hook'\n yield {\n type: 'result',\n data: {\n taskId: task.id,\n status: task.status,\n hookBlocked: true,\n hookFeedback: feedback,\n },\n resultForAssistant: `Task #${task.id} completion was blocked by a hook. Status reverted to in_progress. Feedback: ${feedback}`,\n }\n return\n }\n\n const result = {\n taskId: task.id,\n status: task.status,\n deleted: isDeleting,\n }\n\n yield {\n type: 'result',\n data: result,\n resultForAssistant: this.renderResultForAssistant(result),\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Unknown error occurred'\n yield {\n type: 'result',\n data: { error: errorMessage },\n resultForAssistant: `Error updating task: ${errorMessage}`,\n }\n }\n },\n} satisfies Tool\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|