@within-7/minto 0.1.7 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.js +155 -37
- package/dist/Tool.js +38 -0
- package/dist/Tool.js.map +3 -3
- package/dist/commands/agents/AgentsCommand.js +73 -49
- package/dist/commands/agents/AgentsCommand.js.map +2 -2
- package/dist/commands/agents/constants.js +1 -1
- package/dist/commands/agents/constants.js.map +1 -1
- package/dist/commands/agents/index.js +1 -1
- package/dist/commands/bug.js +74 -7
- package/dist/commands/bug.js.map +3 -3
- package/dist/commands/clear.js +3 -0
- package/dist/commands/clear.js.map +2 -2
- package/dist/commands/compact.js +37 -0
- package/dist/commands/compact.js.map +2 -2
- package/dist/commands/context.js +85 -0
- package/dist/commands/context.js.map +7 -0
- package/dist/commands/ctx_viz.js +18 -10
- package/dist/commands/ctx_viz.js.map +2 -2
- package/dist/commands/doctor.js +158 -12
- package/dist/commands/doctor.js.map +2 -2
- package/dist/commands/export.js +157 -0
- package/dist/commands/export.js.map +7 -0
- package/dist/commands/mcp-interactive.js +28 -18
- package/dist/commands/mcp-interactive.js.map +2 -2
- package/dist/commands/model.js +9 -7
- package/dist/commands/model.js.map +2 -2
- package/dist/commands/permissions.js +87 -0
- package/dist/commands/permissions.js.map +7 -0
- package/dist/commands/plugin/AddMarketplaceForm.js +3 -2
- package/dist/commands/plugin/AddMarketplaceForm.js.map +2 -2
- package/dist/commands/plugin/ConfirmDialog.js +2 -1
- package/dist/commands/plugin/ConfirmDialog.js.map +2 -2
- package/dist/commands/plugin/ErrorView.js +2 -1
- package/dist/commands/plugin/ErrorView.js.map +2 -2
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js +5 -4
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +2 -2
- package/dist/commands/plugin/InstalledPluginsManager.js +5 -4
- package/dist/commands/plugin/InstalledPluginsManager.js.map +2 -2
- package/dist/commands/plugin/MainMenu.js +2 -1
- package/dist/commands/plugin/MainMenu.js.map +2 -2
- package/dist/commands/plugin/MarketplaceManager.js +5 -4
- package/dist/commands/plugin/MarketplaceManager.js.map +2 -2
- package/dist/commands/plugin/MarketplaceSelector.js +4 -3
- package/dist/commands/plugin/MarketplaceSelector.js.map +2 -2
- package/dist/commands/plugin/PlaceholderScreen.js +3 -2
- package/dist/commands/plugin/PlaceholderScreen.js.map +2 -2
- package/dist/commands/plugin/PluginBrowser.js +6 -5
- package/dist/commands/plugin/PluginBrowser.js.map +2 -2
- package/dist/commands/plugin/PluginDetailsInstall.js +5 -4
- package/dist/commands/plugin/PluginDetailsInstall.js.map +2 -2
- package/dist/commands/plugin/PluginDetailsManage.js +4 -3
- package/dist/commands/plugin/PluginDetailsManage.js.map +2 -2
- package/dist/commands/plugin.js +16 -15
- package/dist/commands/plugin.js.map +2 -2
- package/dist/commands/quit.js +3 -1
- package/dist/commands/quit.js.map +2 -2
- package/dist/commands/sandbox.js +105 -0
- package/dist/commands/sandbox.js.map +7 -0
- package/dist/commands/setup.js +2 -1
- package/dist/commands/setup.js.map +2 -2
- package/dist/commands/status.js +59 -0
- package/dist/commands/status.js.map +7 -0
- package/dist/commands/tasks.js +108 -0
- package/dist/commands/tasks.js.map +7 -0
- package/dist/commands/todos.js +123 -0
- package/dist/commands/todos.js.map +7 -0
- package/dist/commands/undo.js +245 -0
- package/dist/commands/undo.js.map +7 -0
- package/dist/commands.js +22 -2
- package/dist/commands.js.map +2 -2
- package/dist/components/AgentThinkingBlock.js +10 -18
- package/dist/components/AgentThinkingBlock.js.map +2 -2
- package/dist/components/AsciiLogo.js +7 -8
- package/dist/components/AsciiLogo.js.map +2 -2
- package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +3 -2
- package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +2 -2
- package/dist/components/AskUserQuestionDialog/QuestionView.js +2 -1
- package/dist/components/AskUserQuestionDialog/QuestionView.js.map +2 -2
- package/dist/components/BackgroundTasksPanel.js +78 -29
- package/dist/components/BackgroundTasksPanel.js.map +2 -2
- package/dist/components/BashStreamingProgress.js +24 -0
- package/dist/components/BashStreamingProgress.js.map +7 -0
- package/dist/components/CollapsibleHint.js +15 -0
- package/dist/components/CollapsibleHint.js.map +7 -0
- package/dist/components/Config.js +3 -2
- package/dist/components/Config.js.map +2 -2
- package/dist/components/ConsoleOAuthFlow.js +2 -1
- package/dist/components/ConsoleOAuthFlow.js.map +2 -2
- package/dist/components/Cost.js +2 -1
- package/dist/components/Cost.js.map +2 -2
- package/dist/components/FileEditToolUpdatedMessage.js +1 -1
- package/dist/components/FileEditToolUpdatedMessage.js.map +2 -2
- package/dist/components/HeaderBar.js +13 -8
- package/dist/components/HeaderBar.js.map +2 -2
- package/dist/components/HistorySearchOverlay.js +4 -3
- package/dist/components/HistorySearchOverlay.js.map +2 -2
- package/dist/components/HotkeyHelpPanel.js +134 -0
- package/dist/components/HotkeyHelpPanel.js.map +7 -0
- package/dist/components/InvalidConfigDialog.js +2 -1
- package/dist/components/InvalidConfigDialog.js.map +2 -2
- package/dist/components/Logo.js +24 -68
- package/dist/components/Logo.js.map +2 -2
- package/dist/components/MCPServerApprovalDialog.js +2 -1
- package/dist/components/MCPServerApprovalDialog.js.map +2 -2
- package/dist/components/MCPServerDialogCopy.js +2 -1
- package/dist/components/MCPServerDialogCopy.js.map +2 -2
- package/dist/components/MCPServerMultiselectDialog.js +2 -1
- package/dist/components/MCPServerMultiselectDialog.js.map +2 -2
- package/dist/components/Message.js +23 -7
- package/dist/components/Message.js.map +3 -3
- package/dist/components/MessageSelector.js +4 -3
- package/dist/components/MessageSelector.js.map +2 -2
- package/dist/components/ModeIndicator.js +2 -1
- package/dist/components/ModeIndicator.js.map +2 -2
- package/dist/components/ModelConfig.js +20 -6
- package/dist/components/ModelConfig.js.map +2 -2
- package/dist/components/ModelListManager.js +7 -6
- package/dist/components/ModelListManager.js.map +2 -2
- package/dist/components/ModelSelector/ModelSelector.js +27 -14
- package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
- package/dist/components/Onboarding.js +22 -16
- package/dist/components/Onboarding.js.map +2 -2
- package/dist/components/OperationSummary.js +130 -0
- package/dist/components/OperationSummary.js.map +7 -0
- package/dist/components/ProgressBar.js +74 -0
- package/dist/components/ProgressBar.js.map +7 -0
- package/dist/components/PromptInput.js +210 -87
- package/dist/components/PromptInput.js.map +2 -2
- package/dist/components/RequestStatusIndicator.js +194 -0
- package/dist/components/RequestStatusIndicator.js.map +7 -0
- package/dist/components/SensitiveFileWarning.js +31 -0
- package/dist/components/SensitiveFileWarning.js.map +7 -0
- package/dist/components/Spinner.js +141 -27
- package/dist/components/Spinner.js.map +2 -2
- package/dist/components/SpinnerSymbol.js +21 -27
- package/dist/components/SpinnerSymbol.js.map +2 -2
- package/dist/components/StreamingBashOutput.js +9 -8
- package/dist/components/StreamingBashOutput.js.map +2 -2
- package/dist/components/StructuredDiff.js +6 -8
- package/dist/components/StructuredDiff.js.map +2 -2
- package/dist/components/SubagentBlock.js +5 -3
- package/dist/components/SubagentBlock.js.map +2 -2
- package/dist/components/SubagentProgress.js +17 -15
- package/dist/components/SubagentProgress.js.map +2 -2
- package/dist/components/TaskCard.js +30 -24
- package/dist/components/TaskCard.js.map +2 -2
- package/dist/components/TextInput.js +9 -1
- package/dist/components/TextInput.js.map +2 -2
- package/dist/components/TodoChangeBlock.js +1 -1
- package/dist/components/TodoChangeBlock.js.map +2 -2
- package/dist/components/TodoPanel.js +140 -31
- package/dist/components/TodoPanel.js.map +3 -3
- package/dist/components/TokenCounter.js +74 -0
- package/dist/components/TokenCounter.js.map +7 -0
- package/dist/components/TokenWarning.js +2 -1
- package/dist/components/TokenWarning.js.map +2 -2
- package/dist/components/ToolUseLoader.js +2 -2
- package/dist/components/ToolUseLoader.js.map +2 -2
- package/dist/components/TreeConnector.js +26 -0
- package/dist/components/TreeConnector.js.map +7 -0
- package/dist/components/TrustDialog.js +2 -1
- package/dist/components/TrustDialog.js.map +2 -2
- package/dist/components/TurnCompletionIndicator.js +18 -0
- package/dist/components/TurnCompletionIndicator.js.map +7 -0
- package/dist/components/binary-feedback/BinaryFeedbackView.js +2 -1
- package/dist/components/binary-feedback/BinaryFeedbackView.js.map +2 -2
- package/dist/components/messages/AssistantTextMessage.js +20 -9
- package/dist/components/messages/AssistantTextMessage.js.map +2 -2
- package/dist/components/messages/AssistantThinkingMessage.js +18 -3
- package/dist/components/messages/AssistantThinkingMessage.js.map +2 -2
- package/dist/components/messages/AssistantToolUseMessage.js +17 -10
- package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
- package/dist/components/messages/GroupRenderer.js +54 -0
- package/dist/components/messages/GroupRenderer.js.map +7 -0
- package/dist/components/messages/NestedTasksPreview.js +24 -0
- package/dist/components/messages/NestedTasksPreview.js.map +7 -0
- package/dist/components/messages/ParallelTasksGroupView.js +93 -0
- package/dist/components/messages/ParallelTasksGroupView.js.map +7 -0
- package/dist/components/messages/TaskInModuleView.js +218 -0
- package/dist/components/messages/TaskInModuleView.js.map +7 -0
- package/dist/components/messages/TaskOutputContent.js +56 -0
- package/dist/components/messages/TaskOutputContent.js.map +7 -0
- package/dist/components/messages/UserPromptMessage.js +2 -2
- package/dist/components/messages/UserPromptMessage.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +2 -3
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +2 -2
- package/dist/components/permissions/FallbackPermissionRequest.js +4 -4
- package/dist/components/permissions/FallbackPermissionRequest.js.map +2 -2
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +4 -4
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +2 -2
- package/dist/constants/colors.js +120 -54
- package/dist/constants/colors.js.map +2 -2
- package/dist/constants/formatRules.js +102 -0
- package/dist/constants/formatRules.js.map +7 -0
- package/dist/constants/prompts.js +12 -34
- package/dist/constants/prompts.js.map +2 -2
- package/dist/constants/symbols.js +64 -6
- package/dist/constants/symbols.js.map +2 -2
- package/dist/constants/timing.js +5 -0
- package/dist/constants/timing.js.map +2 -2
- package/dist/constants/toolInputExamples.js +84 -0
- package/dist/constants/toolInputExamples.js.map +7 -0
- package/dist/core/backupManager.js +321 -0
- package/dist/core/backupManager.js.map +7 -0
- package/dist/core/config/defaults.js +84 -0
- package/dist/core/config/defaults.js.map +7 -0
- package/dist/core/config/index.js +111 -0
- package/dist/core/config/index.js.map +7 -0
- package/dist/core/config/loader.js +221 -0
- package/dist/core/config/loader.js.map +7 -0
- package/dist/core/config/migrations.js +128 -0
- package/dist/core/config/migrations.js.map +7 -0
- package/dist/core/config/schema.js +178 -0
- package/dist/core/config/schema.js.map +7 -0
- package/dist/core/costTracker.js +129 -0
- package/dist/core/costTracker.js.map +7 -0
- package/dist/core/gitAutoCommit.js +287 -0
- package/dist/core/gitAutoCommit.js.map +7 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +7 -0
- package/dist/core/operationTracker.js +212 -0
- package/dist/core/operationTracker.js.map +7 -0
- package/dist/core/permissions/auditLog.js +204 -0
- package/dist/core/permissions/auditLog.js.map +7 -0
- package/dist/core/permissions/engine/index.js +3 -0
- package/dist/core/permissions/engine/index.js.map +7 -0
- package/dist/core/permissions/engine/permissionEngine.js +106 -0
- package/dist/core/permissions/engine/permissionEngine.js.map +7 -0
- package/dist/core/permissions/engine/types.js +1 -0
- package/dist/core/permissions/engine/types.js.map +7 -0
- package/dist/core/permissions/index.js +84 -0
- package/dist/core/permissions/index.js.map +7 -0
- package/dist/core/permissions/ruleEngine.js +259 -0
- package/dist/core/permissions/ruleEngine.js.map +7 -0
- package/dist/core/permissions/rules/allowedToolsRule.js +62 -0
- package/dist/core/permissions/rules/allowedToolsRule.js.map +7 -0
- package/dist/core/permissions/rules/autoEscalationRule.js +296 -0
- package/dist/core/permissions/rules/autoEscalationRule.js.map +7 -0
- package/dist/core/permissions/rules/index.js +46 -0
- package/dist/core/permissions/rules/index.js.map +7 -0
- package/dist/core/permissions/rules/planModeRule.js +55 -0
- package/dist/core/permissions/rules/planModeRule.js.map +7 -0
- package/dist/core/permissions/rules/projectBoundaryRule.js +173 -0
- package/dist/core/permissions/rules/projectBoundaryRule.js.map +7 -0
- package/dist/core/permissions/rules/safeModeRule.js +65 -0
- package/dist/core/permissions/rules/safeModeRule.js.map +7 -0
- package/dist/core/permissions/rules/sensitivePathsRule.js +345 -0
- package/dist/core/permissions/rules/sensitivePathsRule.js.map +7 -0
- package/dist/core/permissions/types.js +127 -0
- package/dist/core/permissions/types.js.map +7 -0
- package/dist/core/tokenStats.js +9 -0
- package/dist/core/tokenStats.js.map +7 -0
- package/dist/core/tokenStatsManager.js +331 -0
- package/dist/core/tokenStatsManager.js.map +7 -0
- package/dist/core/tools/executor.js +143 -0
- package/dist/core/tools/executor.js.map +7 -0
- package/dist/core/tools/index.js +15 -0
- package/dist/core/tools/index.js.map +7 -0
- package/dist/core/tools/registry.js +183 -0
- package/dist/core/tools/registry.js.map +7 -0
- package/dist/core/tools/types.js +1 -0
- package/dist/core/tools/types.js.map +7 -0
- package/dist/cost-tracker.js +23 -15
- package/dist/cost-tracker.js.map +2 -2
- package/dist/entrypoints/cli.js +158 -130
- package/dist/entrypoints/cli.js.map +2 -2
- package/dist/entrypoints/mcp.js +12 -4
- package/dist/entrypoints/mcp.js.map +2 -2
- package/dist/history.js +14 -3
- package/dist/history.js.map +2 -2
- package/dist/hooks/useAgentTokenStats.js +72 -0
- package/dist/hooks/useAgentTokenStats.js.map +7 -0
- package/dist/hooks/useAgentTranscripts.js +140 -0
- package/dist/hooks/useAgentTranscripts.js.map +7 -0
- package/dist/hooks/useAnimationSync.js +53 -0
- package/dist/hooks/useAnimationSync.js.map +7 -0
- package/dist/hooks/useArrowKeyHistory.js +4 -2
- package/dist/hooks/useArrowKeyHistory.js.map +2 -2
- package/dist/hooks/useCanUseTool.js +3 -1
- package/dist/hooks/useCanUseTool.js.map +2 -2
- package/dist/hooks/useExitOnCtrlCD.js +9 -5
- package/dist/hooks/useExitOnCtrlCD.js.map +2 -2
- package/dist/hooks/useHookStatus.js +40 -0
- package/dist/hooks/useHookStatus.js.map +7 -0
- package/dist/hooks/useLogMessages.js +29 -2
- package/dist/hooks/useLogMessages.js.map +2 -2
- package/dist/hooks/useMessageGroups.js +43 -0
- package/dist/hooks/useMessageGroups.js.map +7 -0
- package/dist/hooks/useTerminalSize.js +62 -6
- package/dist/hooks/useTerminalSize.js.map +2 -2
- package/dist/hooks/useUnifiedCompletion.js +69 -0
- package/dist/hooks/useUnifiedCompletion.js.map +2 -2
- package/dist/i18n/index.js +109 -0
- package/dist/i18n/index.js.map +7 -0
- package/dist/i18n/locales/en.js +348 -0
- package/dist/i18n/locales/en.js.map +7 -0
- package/dist/i18n/locales/index.js +7 -0
- package/dist/i18n/locales/index.js.map +7 -0
- package/dist/i18n/locales/zh-CN.js +348 -0
- package/dist/i18n/locales/zh-CN.js.map +7 -0
- package/dist/i18n/types.js +8 -0
- package/dist/i18n/types.js.map +7 -0
- package/dist/permissions.js +28 -1
- package/dist/permissions.js.map +2 -2
- package/dist/query.js +253 -21
- package/dist/query.js.map +3 -3
- package/dist/screens/REPL.js +523 -194
- package/dist/screens/REPL.js.map +3 -3
- package/dist/services/adapters/chatCompletions.js +3 -1
- package/dist/services/adapters/chatCompletions.js.map +2 -2
- package/dist/services/adapters/messageNormalizer.js +354 -0
- package/dist/services/adapters/messageNormalizer.js.map +7 -0
- package/dist/services/adapters/responsesAPI.js +6 -3
- package/dist/services/adapters/responsesAPI.js.map +2 -2
- package/dist/services/checkpointManager.js +386 -0
- package/dist/services/checkpointManager.js.map +7 -0
- package/dist/services/claude.js +192 -14
- package/dist/services/claude.js.map +3 -3
- package/dist/services/compressionService.js +50 -1
- package/dist/services/compressionService.js.map +2 -2
- package/dist/services/contextMonitor.js +162 -0
- package/dist/services/contextMonitor.js.map +7 -0
- package/dist/services/customCommands.js +60 -41
- package/dist/services/customCommands.js.map +2 -2
- package/dist/services/hookExecutor.js +173 -1
- package/dist/services/hookExecutor.js.map +2 -2
- package/dist/services/intelligentCompactor.js +281 -0
- package/dist/services/intelligentCompactor.js.map +7 -0
- package/dist/services/lspConfig.js +109 -0
- package/dist/services/lspConfig.js.map +7 -0
- package/dist/services/mcpClient.js +338 -43
- package/dist/services/mcpClient.js.map +2 -2
- package/dist/services/modelOrchestrator.js +310 -0
- package/dist/services/modelOrchestrator.js.map +7 -0
- package/dist/services/openai.js +8 -1
- package/dist/services/openai.js.map +2 -2
- package/dist/services/outputStyles.js +138 -0
- package/dist/services/outputStyles.js.map +7 -0
- package/dist/services/plugins/index.js +5 -0
- package/dist/services/plugins/index.js.map +7 -0
- package/dist/services/plugins/lspServers.js +188 -0
- package/dist/services/plugins/lspServers.js.map +7 -0
- package/dist/services/plugins/pluginRuntime.js +229 -0
- package/dist/services/plugins/pluginRuntime.js.map +7 -0
- package/dist/services/plugins/pluginValidation.js +219 -0
- package/dist/services/plugins/pluginValidation.js.map +7 -0
- package/dist/services/plugins/skillMarketplace.js +556 -0
- package/dist/services/plugins/skillMarketplace.js.map +7 -0
- package/dist/services/responseStateManager.js +37 -3
- package/dist/services/responseStateManager.js.map +2 -2
- package/dist/services/sandbox/filesystemBoundary.js +341 -0
- package/dist/services/sandbox/filesystemBoundary.js.map +7 -0
- package/dist/services/sandbox/index.js +14 -0
- package/dist/services/sandbox/index.js.map +7 -0
- package/dist/services/sandbox/networkProxy.js +293 -0
- package/dist/services/sandbox/networkProxy.js.map +7 -0
- package/dist/services/sandbox/sandboxController.js +574 -0
- package/dist/services/sandbox/sandboxController.js.map +7 -0
- package/dist/services/sandbox/types.js +50 -0
- package/dist/services/sandbox/types.js.map +7 -0
- package/dist/services/sessionMemory.js +266 -0
- package/dist/services/sessionMemory.js.map +7 -0
- package/dist/services/taskRouter.js +324 -0
- package/dist/services/taskRouter.js.map +7 -0
- package/dist/tools/ArchitectTool/ArchitectTool.js +7 -1
- package/dist/tools/ArchitectTool/ArchitectTool.js.map +2 -2
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +6 -2
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
- package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js +2 -1
- package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +2 -2
- package/dist/tools/BaseTool.js +72 -0
- package/dist/tools/BaseTool.js.map +7 -0
- package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +3 -0
- package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +2 -2
- package/dist/tools/BashTool/BashTool.js +79 -3
- package/dist/tools/BashTool/BashTool.js.map +2 -2
- package/dist/tools/BashTool/BashToolResultMessage.js +3 -0
- package/dist/tools/BashTool/BashToolResultMessage.js.map +2 -2
- package/dist/tools/BashTool/OutputLine.js +54 -0
- package/dist/tools/BashTool/OutputLine.js.map +2 -2
- package/dist/tools/BashTool/prompt.js +336 -3
- package/dist/tools/BashTool/prompt.js.map +2 -2
- package/dist/tools/FileEditTool/FileEditTool.js +29 -4
- package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
- package/dist/tools/FileEditTool/prompt.js +6 -3
- package/dist/tools/FileEditTool/prompt.js.map +2 -2
- package/dist/tools/FileWriteTool/FileWriteTool.js +5 -5
- package/dist/tools/FileWriteTool/FileWriteTool.js.map +2 -2
- package/dist/tools/FileWriteTool/prompt.js +4 -2
- package/dist/tools/FileWriteTool/prompt.js.map +2 -2
- package/dist/tools/GlobTool/GlobTool.js +4 -2
- package/dist/tools/GlobTool/GlobTool.js.map +2 -2
- package/dist/tools/GrepTool/GrepTool.js +36 -7
- package/dist/tools/GrepTool/GrepTool.js.map +2 -2
- package/dist/tools/KillShellTool/KillShellToolResultMessage.js +3 -0
- package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +2 -2
- package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +109 -0
- package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +7 -0
- package/dist/tools/ListMcpResourcesTool/prompt.js +19 -0
- package/dist/tools/ListMcpResourcesTool/prompt.js.map +7 -0
- package/dist/tools/LspTool/LspTool.js +664 -0
- package/dist/tools/LspTool/LspTool.js.map +7 -0
- package/dist/tools/LspTool/prompt.js +27 -0
- package/dist/tools/LspTool/prompt.js.map +7 -0
- package/dist/tools/MCPTool/MCPTool.js +9 -1
- package/dist/tools/MCPTool/MCPTool.js.map +2 -2
- package/dist/tools/MemoryReadTool/MemoryReadTool.js +19 -6
- package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +2 -2
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +6 -6
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +2 -2
- package/dist/tools/MultiEditTool/MultiEditTool.js +19 -2
- package/dist/tools/MultiEditTool/MultiEditTool.js.map +2 -2
- package/dist/tools/MultiEditTool/prompt.js +5 -3
- package/dist/tools/MultiEditTool/prompt.js.map +2 -2
- package/dist/tools/NotebookEditTool/NotebookEditTool.js +7 -2
- package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +2 -2
- package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +2 -2
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js +75 -0
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +7 -0
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js +109 -0
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +7 -0
- package/dist/tools/PlanModeTool/prompt.js +94 -0
- package/dist/tools/PlanModeTool/prompt.js.map +7 -0
- package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +130 -0
- package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js.map +7 -0
- package/dist/tools/ReadMcpResourceTool/prompt.js +17 -0
- package/dist/tools/ReadMcpResourceTool/prompt.js.map +7 -0
- package/dist/tools/SkillTool/SkillTool.js +10 -4
- package/dist/tools/SkillTool/SkillTool.js.map +2 -2
- package/dist/tools/SkillTool/prompt.js +1 -1
- package/dist/tools/SkillTool/prompt.js.map +1 -1
- package/dist/tools/SlashCommandTool/SlashCommandTool.js +260 -0
- package/dist/tools/SlashCommandTool/SlashCommandTool.js.map +7 -0
- package/dist/tools/SlashCommandTool/prompt.js +35 -0
- package/dist/tools/SlashCommandTool/prompt.js.map +7 -0
- package/dist/tools/TaskOutputTool/TaskOutputTool.js +190 -0
- package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +7 -0
- package/dist/tools/TaskOutputTool/prompt.js +15 -0
- package/dist/tools/TaskOutputTool/prompt.js.map +7 -0
- package/dist/tools/TaskTool/TaskTool.js +310 -104
- package/dist/tools/TaskTool/TaskTool.js.map +2 -2
- package/dist/tools/TaskTool/prompt.js.map +2 -2
- package/dist/tools/TodoWriteTool/TodoWriteTool.js +42 -77
- package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +2 -2
- package/dist/tools/URLFetcherTool/URLFetcherTool.js +4 -1
- package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +2 -2
- package/dist/tools/URLFetcherTool/cache.js +55 -8
- package/dist/tools/URLFetcherTool/cache.js.map +2 -2
- package/dist/tools.js +31 -2
- package/dist/tools.js.map +2 -2
- package/dist/types/hooks.js +4 -0
- package/dist/types/hooks.js.map +2 -2
- package/dist/types/marketplace.js.map +2 -2
- package/dist/types/messageGroup.js +36 -0
- package/dist/types/messageGroup.js.map +7 -0
- package/dist/types/plugin.js.map +2 -2
- package/dist/types/thinking.js +1 -0
- package/dist/types/thinking.js.map +7 -0
- package/dist/utils/BackgroundShellManager.js +136 -39
- package/dist/utils/BackgroundShellManager.js.map +2 -2
- package/dist/utils/CircuitBreaker.js +242 -0
- package/dist/utils/CircuitBreaker.js.map +7 -0
- package/dist/utils/MessageBatchBuffer.js +102 -0
- package/dist/utils/MessageBatchBuffer.js.map +7 -0
- package/dist/utils/PersistentShell.js +151 -1
- package/dist/utils/PersistentShell.js.map +2 -2
- package/dist/utils/agentLoader.js +1 -23
- package/dist/utils/agentLoader.js.map +2 -2
- package/dist/utils/agentTranscripts.js +641 -0
- package/dist/utils/agentTranscripts.js.map +7 -0
- package/dist/utils/animationManager.js +213 -0
- package/dist/utils/animationManager.js.map +7 -0
- package/dist/utils/animationSync.js +110 -0
- package/dist/utils/animationSync.js.map +7 -0
- package/dist/utils/ask.js +2 -0
- package/dist/utils/ask.js.map +2 -2
- package/dist/utils/asyncFile.js +215 -0
- package/dist/utils/asyncFile.js.map +7 -0
- package/dist/utils/backgroundAgentManager.js +231 -0
- package/dist/utils/backgroundAgentManager.js.map +7 -0
- package/dist/utils/config.js +108 -10
- package/dist/utils/config.js.map +2 -2
- package/dist/utils/conversationRecovery.js +19 -0
- package/dist/utils/conversationRecovery.js.map +2 -2
- package/dist/utils/credentials/CredentialStore.js +1 -0
- package/dist/utils/credentials/CredentialStore.js.map +7 -0
- package/dist/utils/credentials/EncryptedFileStore.js +157 -0
- package/dist/utils/credentials/EncryptedFileStore.js.map +7 -0
- package/dist/utils/credentials/index.js +37 -0
- package/dist/utils/credentials/index.js.map +7 -0
- package/dist/utils/credentials/migration.js +82 -0
- package/dist/utils/credentials/migration.js.map +7 -0
- package/dist/utils/exit.js +73 -0
- package/dist/utils/exit.js.map +7 -0
- package/dist/utils/format.js +73 -5
- package/dist/utils/format.js.map +2 -2
- package/dist/utils/generators.js +76 -6
- package/dist/utils/generators.js.map +2 -2
- package/dist/utils/globalErrorHandler.js +149 -0
- package/dist/utils/globalErrorHandler.js.map +7 -0
- package/dist/utils/groupHandlers/index.js +8 -0
- package/dist/utils/groupHandlers/index.js.map +7 -0
- package/dist/utils/groupHandlers/parallelTasksHandler.js +140 -0
- package/dist/utils/groupHandlers/parallelTasksHandler.js.map +7 -0
- package/dist/utils/groupHandlers/taskHandler.js +104 -0
- package/dist/utils/groupHandlers/taskHandler.js.map +7 -0
- package/dist/utils/groupHandlers/types.js +1 -0
- package/dist/utils/groupHandlers/types.js.map +7 -0
- package/dist/utils/logRotation.js +224 -0
- package/dist/utils/logRotation.js.map +7 -0
- package/dist/utils/markdown.js +13 -1
- package/dist/utils/markdown.js.map +2 -2
- package/dist/utils/marketplaceManager.js +3 -5
- package/dist/utils/marketplaceManager.js.map +2 -2
- package/dist/utils/memSafety.js +264 -0
- package/dist/utils/memSafety.js.map +7 -0
- package/dist/utils/messageGroupManager.js +274 -0
- package/dist/utils/messageGroupManager.js.map +7 -0
- package/dist/utils/messages.js +13 -4
- package/dist/utils/messages.js.map +2 -2
- package/dist/utils/model.js +119 -15
- package/dist/utils/model.js.map +3 -3
- package/dist/utils/permissions/filesystem.js +162 -6
- package/dist/utils/permissions/filesystem.js.map +2 -2
- package/dist/utils/plan/planMode.js +143 -0
- package/dist/utils/plan/planMode.js.map +7 -0
- package/dist/utils/pluginLoader.js +17 -21
- package/dist/utils/pluginLoader.js.map +2 -2
- package/dist/utils/ripgrep.js +55 -2
- package/dist/utils/ripgrep.js.map +2 -2
- package/dist/utils/safePath.js +132 -0
- package/dist/utils/safePath.js.map +7 -0
- package/dist/utils/sanitizeInput.js +32 -0
- package/dist/utils/sanitizeInput.js.map +7 -0
- package/dist/utils/secureKeyStorage.js +312 -0
- package/dist/utils/secureKeyStorage.js.map +7 -0
- package/dist/utils/sensitiveFiles.js +125 -0
- package/dist/utils/sensitiveFiles.js.map +7 -0
- package/dist/utils/session/sessionPlugins.js +67 -0
- package/dist/utils/session/sessionPlugins.js.map +7 -0
- package/dist/utils/taskDisplayUtils.js +257 -0
- package/dist/utils/taskDisplayUtils.js.map +7 -0
- package/dist/utils/teamConfig.js +2 -1
- package/dist/utils/teamConfig.js.map +2 -2
- package/dist/utils/theme.js +6 -6
- package/dist/utils/theme.js.map +1 -1
- package/dist/utils/todoStorage.js +92 -2
- package/dist/utils/todoStorage.js.map +2 -2
- package/dist/utils/toolRiskClassification.js +207 -0
- package/dist/utils/toolRiskClassification.js.map +7 -0
- package/dist/utils/toolTimeout.js +136 -0
- package/dist/utils/toolTimeout.js.map +7 -0
- package/dist/utils/tooling/safeRender.js +116 -0
- package/dist/utils/tooling/safeRender.js.map +7 -0
- package/dist/utils/userFriendlyError.js +346 -0
- package/dist/utils/userFriendlyError.js.map +7 -0
- package/dist/utils/vendor/ripgrep/arm64-darwin/rg +0 -0
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +17 -5
- package/scripts/postinstall.js +128 -38
- package/dist/commands/agents.js +0 -2086
- package/dist/commands/agents.js.map +0 -7
- package/dist/commands/build.js +0 -74
- package/dist/commands/build.js.map +0 -7
- package/dist/commands/compression.js +0 -57
- package/dist/commands/compression.js.map +0 -7
- package/dist/commands/listen.js +0 -37
- package/dist/commands/listen.js.map +0 -7
- package/dist/commands/login.js +0 -37
- package/dist/commands/login.js.map +0 -7
- package/dist/commands/logout.js +0 -33
- package/dist/commands/logout.js.map +0 -7
- package/dist/commands/mcp.js +0 -40
- package/dist/commands/mcp.js.map +0 -7
- package/dist/commands/mcp_refresh.js +0 -40
- package/dist/commands/mcp_refresh.js.map +0 -7
- package/dist/commands/modelstatus.js +0 -21
- package/dist/commands/modelstatus.js.map +0 -7
- package/dist/commands/onboarding.js +0 -36
- package/dist/commands/onboarding.js.map +0 -7
- package/dist/commands/plugin-interactive.js +0 -446
- package/dist/commands/plugin-interactive.js.map +0 -7
- package/dist/commands/pr_comments.js +0 -61
- package/dist/commands/pr_comments.js.map +0 -7
- package/dist/commands/release-notes.js +0 -30
- package/dist/commands/release-notes.js.map +0 -7
- package/dist/commands/review.js +0 -51
- package/dist/commands/review.js.map +0 -7
- package/dist/components/Bug.js +0 -147
- package/dist/components/Bug.js.map +0 -7
- package/dist/components/ModelSelector.js +0 -2062
- package/dist/components/ModelSelector.js.map +0 -7
- package/dist/components/ModelStatusDisplay.js +0 -87
- package/dist/components/ModelStatusDisplay.js.map +0 -7
- package/dist/entrypoints/cli-wrapper.js +0 -61
- package/dist/entrypoints/cli-wrapper.js.map +0 -7
- package/dist/hooks/useCancelRequest.js +0 -28
- package/dist/hooks/useCancelRequest.js.map +0 -7
- package/dist/screens/Doctor.js +0 -22
- package/dist/screens/Doctor.js.map +0 -7
|
@@ -7,14 +7,23 @@ import { useHistorySearch } from "../hooks/useHistorySearch.js";
|
|
|
7
7
|
import { addToHistory, getHistory } from "../history.js";
|
|
8
8
|
import TextInput from "./TextInput.js";
|
|
9
9
|
import { HistorySearchOverlay } from "./HistorySearchOverlay.js";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
HotkeyHelpPanel,
|
|
12
|
+
ContextAwareHints
|
|
13
|
+
} from "./HotkeyHelpPanel.js";
|
|
14
|
+
import { memo, useCallback, useEffect, useMemo, useState } from "react";
|
|
11
15
|
import { countTokens } from "../utils/tokens.js";
|
|
12
16
|
import { SentryErrorBoundary } from "./SentryErrorBoundary.js";
|
|
13
17
|
import { TokenWarning, WARNING_THRESHOLD } from "./TokenWarning.js";
|
|
14
18
|
import { useTerminalSize } from "../hooks/useTerminalSize.js";
|
|
15
19
|
import { getTheme } from "../utils/theme.js";
|
|
20
|
+
import { BRAND_GRADIENT, SEMANTIC_COLORS } from "../constants/colors.js";
|
|
16
21
|
import { getModelManager } from "../utils/model.js";
|
|
17
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
getGlobalConfig,
|
|
24
|
+
saveGlobalConfig,
|
|
25
|
+
getVerboseLabel
|
|
26
|
+
} from "../utils/config.js";
|
|
18
27
|
import { setTerminalTitle, clearScreen } from "../utils/terminal.js";
|
|
19
28
|
import terminalSetup, {
|
|
20
29
|
isShiftEnterKeyBindingInstalled,
|
|
@@ -65,6 +74,7 @@ function PromptInput({
|
|
|
65
74
|
onQuery,
|
|
66
75
|
debug,
|
|
67
76
|
verbose,
|
|
77
|
+
verboseToggleMessage,
|
|
68
78
|
messages,
|
|
69
79
|
setToolJSX,
|
|
70
80
|
tools,
|
|
@@ -87,7 +97,11 @@ function PromptInput({
|
|
|
87
97
|
onRollbackConversation,
|
|
88
98
|
onToggleBackgroundPanel,
|
|
89
99
|
backgroundShellCount = 0,
|
|
90
|
-
isBackgroundPanelOpen = false
|
|
100
|
+
isBackgroundPanelOpen = false,
|
|
101
|
+
queuedPrompts = [],
|
|
102
|
+
onQueuePrompt,
|
|
103
|
+
onPopQueuedPrompt,
|
|
104
|
+
onInterrupt
|
|
91
105
|
}) {
|
|
92
106
|
const [exitMessage, setExitMessage] = useState({ show: false });
|
|
93
107
|
const [message, setMessage] = useState({
|
|
@@ -104,10 +118,19 @@ function PromptInput({
|
|
|
104
118
|
const [ctrlDTimer, setCtrlDTimer] = useState(null);
|
|
105
119
|
const [escCount, setEscCount] = useState(0);
|
|
106
120
|
const [escTimer, setEscTimer] = useState(null);
|
|
121
|
+
const ESC_DOUBLE_TAP_WINDOW = 500;
|
|
107
122
|
const [hotkeyMessage, setHotkeyMessage] = useState({ show: false });
|
|
123
|
+
useEffect(() => {
|
|
124
|
+
if (verboseToggleMessage) {
|
|
125
|
+
setHotkeyMessage({ show: true, text: verboseToggleMessage });
|
|
126
|
+
}
|
|
127
|
+
}, [verboseToggleMessage]);
|
|
128
|
+
const [showHotkeyHelp, setShowHotkeyHelp] = useState(false);
|
|
108
129
|
const [backgroundIndicatorFocused, setBackgroundIndicatorFocused] = useState(false);
|
|
109
130
|
const { cycleMode, currentMode } = usePermissionContext();
|
|
110
|
-
const
|
|
131
|
+
const terminalSize = useTerminalSize();
|
|
132
|
+
const { columns } = terminalSize;
|
|
133
|
+
const textInputColumns = columns - 6;
|
|
111
134
|
const commandWidth = useMemo(
|
|
112
135
|
() => Math.max(...commands.map((cmd) => cmd.userFacingName().length)) + 5,
|
|
113
136
|
[commands]
|
|
@@ -128,6 +151,14 @@ function PromptInput({
|
|
|
128
151
|
const history = useMemo(() => getHistory(), [submitCount]);
|
|
129
152
|
const historySearch = useHistorySearch(history);
|
|
130
153
|
const theme = getTheme();
|
|
154
|
+
const inputContext = useMemo(() => {
|
|
155
|
+
if (isLoading) return "loading";
|
|
156
|
+
if (historySearch.isActive) return "history_search";
|
|
157
|
+
if (completionActive) return "completion";
|
|
158
|
+
if (input.startsWith("/")) return "slash_command";
|
|
159
|
+
if (input.trim().length > 0) return "typing";
|
|
160
|
+
return "idle";
|
|
161
|
+
}, [isLoading, historySearch.isActive, completionActive, input]);
|
|
131
162
|
const MAX_VISIBLE_SUGGESTIONS = 8;
|
|
132
163
|
const visibleSuggestions = useMemo(() => {
|
|
133
164
|
if (suggestions.length === 0) return [];
|
|
@@ -147,10 +178,10 @@ function PromptInput({
|
|
|
147
178
|
if (suggestions.length === 0) return null;
|
|
148
179
|
const hasMoreAbove = visibleSuggestions.length > 0 && visibleSuggestions[0].globalIndex > 0;
|
|
149
180
|
const hasMoreBelow = visibleSuggestions.length > 0 && visibleSuggestions[visibleSuggestions.length - 1].globalIndex < suggestions.length - 1;
|
|
150
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, hasMoreAbove && /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, {
|
|
181
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, hasMoreAbove && /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\u2191 ", visibleSuggestions[0].globalIndex, " more above...")), visibleSuggestions.map((suggestion) => {
|
|
151
182
|
const isSelected = suggestion.globalIndex === selectedIndex;
|
|
152
183
|
const isAgent = suggestion.type === "agent";
|
|
153
|
-
const displayColor = isSelected ?
|
|
184
|
+
const displayColor = isSelected ? BRAND_GRADIENT.START : isAgent && suggestion.metadata?.color ? suggestion.metadata.color : void 0;
|
|
154
185
|
return /* @__PURE__ */ React.createElement(
|
|
155
186
|
Box,
|
|
156
187
|
{
|
|
@@ -160,14 +191,13 @@ function PromptInput({
|
|
|
160
191
|
/* @__PURE__ */ React.createElement(
|
|
161
192
|
Text,
|
|
162
193
|
{
|
|
163
|
-
color: displayColor
|
|
164
|
-
dimColor: !isSelected && !displayColor
|
|
194
|
+
color: displayColor || (!isSelected ? SEMANTIC_COLORS.dim : void 0)
|
|
165
195
|
},
|
|
166
196
|
isSelected ? "\u25C6 " : " ",
|
|
167
197
|
suggestion.displayValue
|
|
168
198
|
)
|
|
169
199
|
);
|
|
170
|
-
}), hasMoreBelow && /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, {
|
|
200
|
+
}), hasMoreBelow && /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\u2193", " ", suggestions.length - visibleSuggestions[visibleSuggestions.length - 1].globalIndex - 1, " ", "more below...")));
|
|
171
201
|
}, [suggestions, selectedIndex, visibleSuggestions, theme.suggestion]);
|
|
172
202
|
const onChange = useCallback(
|
|
173
203
|
(value) => {
|
|
@@ -231,6 +261,14 @@ function PromptInput({
|
|
|
231
261
|
);
|
|
232
262
|
const handleHistoryUp = () => {
|
|
233
263
|
if (!completionActive) {
|
|
264
|
+
if (input.trim() === "" && queuedPrompts.length > 0 && onPopQueuedPrompt) {
|
|
265
|
+
const poppedPrompt = onPopQueuedPrompt();
|
|
266
|
+
if (poppedPrompt) {
|
|
267
|
+
onInputChange(poppedPrompt);
|
|
268
|
+
setCursorOffset(poppedPrompt.length);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
234
272
|
onHistoryUp();
|
|
235
273
|
}
|
|
236
274
|
};
|
|
@@ -330,12 +368,32 @@ function PromptInput({
|
|
|
330
368
|
return;
|
|
331
369
|
}
|
|
332
370
|
if (isLoading) {
|
|
371
|
+
if (onQueuePrompt && input2.trim()) {
|
|
372
|
+
onQueuePrompt(input2.trim());
|
|
373
|
+
onInputChange("");
|
|
374
|
+
setMessage({
|
|
375
|
+
show: true,
|
|
376
|
+
text: `Queued: "${input2.slice(0, 30)}${input2.length > 30 ? "..." : ""}" (${queuedPrompts.length + 1} in queue)`
|
|
377
|
+
});
|
|
378
|
+
setTimeout(() => setMessage({ show: false }), 2e3);
|
|
379
|
+
}
|
|
333
380
|
return;
|
|
334
381
|
}
|
|
335
382
|
if (suggestions.length > 0 && completionActive) {
|
|
336
383
|
return;
|
|
337
384
|
}
|
|
338
|
-
|
|
385
|
+
const exitCommands = [
|
|
386
|
+
"exit",
|
|
387
|
+
"quit",
|
|
388
|
+
":q",
|
|
389
|
+
":q!",
|
|
390
|
+
":wq",
|
|
391
|
+
":wq!",
|
|
392
|
+
"/exit",
|
|
393
|
+
"/quit",
|
|
394
|
+
"/q"
|
|
395
|
+
];
|
|
396
|
+
if (exitCommands.includes(input2.trim())) {
|
|
339
397
|
exit();
|
|
340
398
|
}
|
|
341
399
|
let finalInput = input2;
|
|
@@ -454,19 +512,19 @@ function PromptInput({
|
|
|
454
512
|
return true;
|
|
455
513
|
}
|
|
456
514
|
if (key.ctrl && inputChar === "o") {
|
|
457
|
-
const config = getGlobalConfig();
|
|
458
515
|
const newVerbose = !verbose;
|
|
516
|
+
const config = getGlobalConfig();
|
|
459
517
|
saveGlobalConfig({
|
|
460
518
|
...config,
|
|
461
519
|
verbose: newVerbose
|
|
462
520
|
});
|
|
463
521
|
setHotkeyMessage({
|
|
464
522
|
show: true,
|
|
465
|
-
text:
|
|
523
|
+
text: `${getVerboseLabel(newVerbose)} (Ctrl+O)`
|
|
466
524
|
});
|
|
467
525
|
setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
|
|
468
526
|
if (onToggleVerbose) {
|
|
469
|
-
onToggleVerbose();
|
|
527
|
+
onToggleVerbose(newVerbose);
|
|
470
528
|
}
|
|
471
529
|
return true;
|
|
472
530
|
}
|
|
@@ -508,6 +566,10 @@ function PromptInput({
|
|
|
508
566
|
onSubmit(bashCommand);
|
|
509
567
|
return true;
|
|
510
568
|
}
|
|
569
|
+
if (key.ctrl && (inputChar === "?" || inputChar === "/")) {
|
|
570
|
+
setShowHotkeyHelp((prev) => !prev);
|
|
571
|
+
return true;
|
|
572
|
+
}
|
|
511
573
|
if (key.ctrl && inputChar === "r") {
|
|
512
574
|
if (!historySearch.isActive) {
|
|
513
575
|
historySearch.activate();
|
|
@@ -588,37 +650,6 @@ function PromptInput({
|
|
|
588
650
|
if (inputChar === "" && (key.escape || key.backspace || key.delete)) {
|
|
589
651
|
onModeChange("prompt");
|
|
590
652
|
}
|
|
591
|
-
if (key.escape && !input && !isLoading && messages.length > 0 && onRollbackConversation) {
|
|
592
|
-
setEscCount((prev) => prev + 1);
|
|
593
|
-
if (escTimer) clearTimeout(escTimer);
|
|
594
|
-
const timer = setTimeout(() => setEscCount(0), 1e3);
|
|
595
|
-
setEscTimer(timer);
|
|
596
|
-
if (escCount >= 1) {
|
|
597
|
-
const success = onRollbackConversation();
|
|
598
|
-
if (success) {
|
|
599
|
-
setMessage({
|
|
600
|
-
show: true,
|
|
601
|
-
text: "Conversation rolled back (Esc Esc)"
|
|
602
|
-
});
|
|
603
|
-
setTimeout(() => setMessage({ show: false }), 2e3);
|
|
604
|
-
} else {
|
|
605
|
-
setMessage({ show: true, text: "No history to rollback" });
|
|
606
|
-
setTimeout(() => setMessage({ show: false }), 2e3);
|
|
607
|
-
}
|
|
608
|
-
setEscCount(0);
|
|
609
|
-
return true;
|
|
610
|
-
} else {
|
|
611
|
-
setMessage({
|
|
612
|
-
show: true,
|
|
613
|
-
text: "Press Esc again to rollback conversation"
|
|
614
|
-
});
|
|
615
|
-
setTimeout(() => setMessage({ show: false }), 2e3);
|
|
616
|
-
return true;
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
if (key.escape && messages.length > 0 && !input && !isLoading) {
|
|
620
|
-
onShowMessageSelector();
|
|
621
|
-
}
|
|
622
653
|
if (key.tab && !key.shift && !completionActive) {
|
|
623
654
|
const config = getGlobalConfig();
|
|
624
655
|
const newThinking = !config.thinking;
|
|
@@ -647,11 +678,56 @@ function PromptInput({
|
|
|
647
678
|
handleQuickModelSwitch();
|
|
648
679
|
return true;
|
|
649
680
|
}
|
|
681
|
+
if (key.escape) {
|
|
682
|
+
const newEscCount = escCount + 1;
|
|
683
|
+
setEscCount(newEscCount);
|
|
684
|
+
if (escTimer) clearTimeout(escTimer);
|
|
685
|
+
const timer = setTimeout(() => setEscCount(0), ESC_DOUBLE_TAP_WINDOW);
|
|
686
|
+
setEscTimer(timer);
|
|
687
|
+
if (newEscCount >= 2) {
|
|
688
|
+
setEscCount(0);
|
|
689
|
+
if (input.length > 0) {
|
|
690
|
+
onInputChange("");
|
|
691
|
+
setHotkeyMessage({ show: true, text: "Input cleared (Esc Esc)" });
|
|
692
|
+
setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
|
|
693
|
+
return true;
|
|
694
|
+
} else if (isLoading && onInterrupt) {
|
|
695
|
+
onInterrupt();
|
|
696
|
+
setHotkeyMessage({
|
|
697
|
+
show: true,
|
|
698
|
+
text: "Interrupted by user (Esc Esc)"
|
|
699
|
+
});
|
|
700
|
+
setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
|
|
701
|
+
return true;
|
|
702
|
+
}
|
|
703
|
+
} else {
|
|
704
|
+
if (input.length > 0) {
|
|
705
|
+
setHotkeyMessage({
|
|
706
|
+
show: true,
|
|
707
|
+
text: "Press Esc again to clear input"
|
|
708
|
+
});
|
|
709
|
+
} else if (isLoading) {
|
|
710
|
+
setHotkeyMessage({
|
|
711
|
+
show: true,
|
|
712
|
+
text: "Press Esc again to interrupt"
|
|
713
|
+
});
|
|
714
|
+
}
|
|
715
|
+
setTimeout(() => setHotkeyMessage({ show: false }), 1500);
|
|
716
|
+
return true;
|
|
717
|
+
}
|
|
718
|
+
}
|
|
650
719
|
return false;
|
|
651
720
|
},
|
|
652
|
-
[
|
|
721
|
+
[
|
|
722
|
+
handleQuickModelSwitch,
|
|
723
|
+
isLoading,
|
|
724
|
+
input.length,
|
|
725
|
+
onInputChange,
|
|
726
|
+
onInterrupt,
|
|
727
|
+
escCount,
|
|
728
|
+
escTimer
|
|
729
|
+
]
|
|
653
730
|
);
|
|
654
|
-
const textInputColumns = useTerminalSize().columns - 6;
|
|
655
731
|
const tokenUsage = useMemo(() => countTokens(messages), [messages]);
|
|
656
732
|
const modelManager = getModelManager();
|
|
657
733
|
const currentModelId = modelManager.getModel("main")?.id || null;
|
|
@@ -672,22 +748,32 @@ function PromptInput({
|
|
|
672
748
|
currentTokens: tokenUsage
|
|
673
749
|
};
|
|
674
750
|
}, [tokenUsage, modelSwitchMessage.show, submitCount, currentModelId]);
|
|
675
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, fallbackMode && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color:
|
|
751
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, fallbackMode && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.running }, "\u26A0\uFE0F Limited input mode"), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "(Advanced keyboard shortcuts unavailable - raw mode not supported)")), showHotkeyHelp && /* @__PURE__ */ React.createElement(
|
|
752
|
+
HotkeyHelpPanel,
|
|
753
|
+
{
|
|
754
|
+
isVisible: showHotkeyHelp,
|
|
755
|
+
onClose: () => setShowHotkeyHelp(false)
|
|
756
|
+
}
|
|
757
|
+
), historySearch.isActive && /* @__PURE__ */ React.createElement(
|
|
676
758
|
HistorySearchOverlay,
|
|
677
759
|
{
|
|
678
760
|
searchTerm: historySearch.searchTerm,
|
|
679
761
|
results: historySearch.filteredResults,
|
|
680
762
|
selectedIndex: historySearch.selectedIndex
|
|
681
763
|
}
|
|
682
|
-
), modelInfo && /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, {
|
|
764
|
+
), modelInfo && /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u25C6"), " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, modelInfo.name), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\xB7 ", Math.round(modelInfo.currentTokens / 1e3), "k /", " ", Math.round(modelInfo.contextLength / 1e3), "k"))), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginTop: 1 }, /* @__PURE__ */ React.createElement(Box, { paddingLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2500\u2500 Queued (", queuedPrompts.length, ")"), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\xB7 will run after current task \xB7", " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, "\u2191"), " to edit \u2500\u2500")), queuedPrompts.map((prompt, index) => /* @__PURE__ */ React.createElement(Box, { key: index, paddingLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u25C7 "), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, prompt.length > 60 ? prompt.slice(0, 60) + "..." : prompt)))), /* @__PURE__ */ React.createElement(
|
|
683
765
|
Box,
|
|
684
766
|
{
|
|
685
767
|
alignItems: "flex-start",
|
|
686
768
|
justifyContent: "flex-start",
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
769
|
+
borderTop: true,
|
|
770
|
+
borderBottom: true,
|
|
771
|
+
borderLeft: false,
|
|
772
|
+
borderRight: false,
|
|
773
|
+
borderColor: mode === "bash" ? SEMANTIC_COLORS.running : mode === "koding" ? SEMANTIC_COLORS.info : BRAND_GRADIENT.START,
|
|
774
|
+
borderDimColor: false,
|
|
775
|
+
borderStyle: "single",
|
|
776
|
+
marginTop: queuedPrompts.length > 0 ? 0 : 1,
|
|
691
777
|
width: "100%"
|
|
692
778
|
},
|
|
693
779
|
/* @__PURE__ */ React.createElement(
|
|
@@ -699,13 +785,20 @@ function PromptInput({
|
|
|
699
785
|
justifyContent: "flex-start",
|
|
700
786
|
width: 3
|
|
701
787
|
},
|
|
702
|
-
mode === "bash" ? /* @__PURE__ */ React.createElement(Text, { color:
|
|
788
|
+
mode === "bash" ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.running }, "\xA0!\xA0") : mode === "koding" ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.info }, "\xA0#\xA0") : /* @__PURE__ */ React.createElement(
|
|
789
|
+
Text,
|
|
790
|
+
{
|
|
791
|
+
color: isLoading ? SEMANTIC_COLORS.dim : BRAND_GRADIENT.START,
|
|
792
|
+
bold: true
|
|
793
|
+
},
|
|
794
|
+
"\xA0\u276F\xA0"
|
|
795
|
+
)
|
|
703
796
|
),
|
|
704
797
|
/* @__PURE__ */ React.createElement(Box, { paddingRight: 1 }, /* @__PURE__ */ React.createElement(
|
|
705
798
|
TextInput,
|
|
706
799
|
{
|
|
707
800
|
multiline: true,
|
|
708
|
-
focus: !isBackgroundPanelOpen,
|
|
801
|
+
focus: !isBackgroundPanelOpen && (!isLoading || !!onQueuePrompt),
|
|
709
802
|
onSubmit,
|
|
710
803
|
onChange,
|
|
711
804
|
value: input,
|
|
@@ -718,7 +811,7 @@ function PromptInput({
|
|
|
718
811
|
onMessage: (show, text) => setMessage({ show, text }),
|
|
719
812
|
onImagePaste,
|
|
720
813
|
columns: textInputColumns,
|
|
721
|
-
isDimmed: isDisabled || isLoading,
|
|
814
|
+
isDimmed: isDisabled || isLoading && !onQueuePrompt,
|
|
722
815
|
disableCursorMovementForUpDownKeys: completionActive,
|
|
723
816
|
cursorOffset,
|
|
724
817
|
onChangeCursorOffset: setCursorOffset,
|
|
@@ -734,38 +827,69 @@ function PromptInput({
|
|
|
734
827
|
paddingX: 2,
|
|
735
828
|
paddingY: 0
|
|
736
829
|
},
|
|
737
|
-
/* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-start", gap: 1 }, exitMessage.show ? /* @__PURE__ */ React.createElement(Text, {
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
830
|
+
/* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-start", gap: 1 }, exitMessage.show ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "Press", " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, exitMessage.key), " ", "again to exit") : message.show ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, message.text) : hotkeyMessage.show ? /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, hotkeyMessage.text) : modelSwitchMessage.show ? /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, modelSwitchMessage.text) : verbose ? (
|
|
831
|
+
// Verbose mode: full static hints (商务用户友好) - 使用品牌配色
|
|
832
|
+
/* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
833
|
+
Text,
|
|
834
|
+
{
|
|
835
|
+
color: mode === "bash" ? BRAND_GRADIENT.MIDDLE : SEMANTIC_COLORS.dim
|
|
836
|
+
},
|
|
837
|
+
/* @__PURE__ */ React.createElement(
|
|
838
|
+
Text,
|
|
839
|
+
{
|
|
840
|
+
color: mode === "bash" ? BRAND_GRADIENT.MIDDLE : SEMANTIC_COLORS.secondary
|
|
841
|
+
},
|
|
842
|
+
"!"
|
|
843
|
+
),
|
|
844
|
+
" ",
|
|
845
|
+
"\u6267\u884C\u547D\u4EE4"
|
|
846
|
+
), /* @__PURE__ */ React.createElement(
|
|
847
|
+
Text,
|
|
848
|
+
{
|
|
849
|
+
color: mode === "koding" ? SEMANTIC_COLORS.info : SEMANTIC_COLORS.dim
|
|
850
|
+
},
|
|
851
|
+
"\xB7",
|
|
852
|
+
" ",
|
|
853
|
+
/* @__PURE__ */ React.createElement(
|
|
854
|
+
Text,
|
|
855
|
+
{
|
|
856
|
+
color: mode === "koding" ? SEMANTIC_COLORS.info : SEMANTIC_COLORS.secondary
|
|
857
|
+
},
|
|
858
|
+
"#"
|
|
859
|
+
),
|
|
860
|
+
" ",
|
|
861
|
+
"\u8BB0\u5F55\u7B14\u8BB0"
|
|
862
|
+
), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "\xB7 ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, "/"), " \u529F\u80FD\u83DC\u5355 \xB7", " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, "ctrl+?"), " \u5E2E\u52A9"), backgroundShellCount > 0 && /* @__PURE__ */ React.createElement(
|
|
863
|
+
Text,
|
|
864
|
+
{
|
|
865
|
+
color: backgroundIndicatorFocused ? BRAND_GRADIENT.START : BRAND_GRADIENT.MIDDLE,
|
|
866
|
+
backgroundColor: backgroundIndicatorFocused ? BRAND_GRADIENT.START : void 0
|
|
867
|
+
},
|
|
868
|
+
"\xB7 ",
|
|
869
|
+
backgroundIndicatorFocused ? "\u25BA " : "",
|
|
870
|
+
backgroundShellCount,
|
|
871
|
+
" background task",
|
|
872
|
+
backgroundShellCount > 1 ? "s" : ""
|
|
873
|
+
), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\xB7 \u{1F4CB} ", queuedPrompts.length, " queued"))
|
|
874
|
+
) : (
|
|
875
|
+
// Normal mode: context-aware hints with 0.1.7 style
|
|
876
|
+
/* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ContextAwareHints, { context: inputContext, compact: true }), backgroundShellCount > 0 && /* @__PURE__ */ React.createElement(
|
|
877
|
+
Text,
|
|
878
|
+
{
|
|
879
|
+
color: backgroundIndicatorFocused ? BRAND_GRADIENT.START : BRAND_GRADIENT.MIDDLE,
|
|
880
|
+
backgroundColor: backgroundIndicatorFocused ? BRAND_GRADIENT.START : void 0
|
|
881
|
+
},
|
|
882
|
+
"\u2502 ",
|
|
883
|
+
backgroundIndicatorFocused ? "\u25BA " : "",
|
|
884
|
+
backgroundShellCount,
|
|
885
|
+
" task",
|
|
886
|
+
backgroundShellCount > 1 ? "s" : ""
|
|
887
|
+
), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2502 \u{1F4CB} ", queuedPrompts.length, " queued"), isLoading && onQueuePrompt && queuedPrompts.length === 0 && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "\u2502 Type to queue next prompt"))
|
|
888
|
+
)),
|
|
765
889
|
/* @__PURE__ */ React.createElement(
|
|
766
890
|
SentryErrorBoundary,
|
|
767
891
|
{
|
|
768
|
-
children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, !debug && tokenUsage < WARNING_THRESHOLD && /* @__PURE__ */ React.createElement(Text, {
|
|
892
|
+
children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, !debug && tokenUsage < WARNING_THRESHOLD && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, terminalSetup.isEnabled && isShiftEnterKeyBindingInstalled() ? "shift + \u23CE" : "\\\u23CE"), " ", "for newline"), /* @__PURE__ */ React.createElement(TokenWarning, { tokenUsage }))
|
|
769
893
|
}
|
|
770
894
|
)
|
|
771
895
|
), suggestions.length > 0 && /* @__PURE__ */ React.createElement(
|
|
@@ -782,13 +906,12 @@ function PromptInput({
|
|
|
782
906
|
marginTop: 1,
|
|
783
907
|
paddingX: 3,
|
|
784
908
|
borderStyle: "round",
|
|
785
|
-
borderColor:
|
|
909
|
+
borderColor: BRAND_GRADIENT.START
|
|
786
910
|
},
|
|
787
911
|
/* @__PURE__ */ React.createElement(
|
|
788
912
|
Text,
|
|
789
913
|
{
|
|
790
|
-
|
|
791
|
-
color: emptyDirMessage ? "yellow" : void 0
|
|
914
|
+
color: emptyDirMessage ? BRAND_GRADIENT.END : SEMANTIC_COLORS.dim
|
|
792
915
|
},
|
|
793
916
|
emptyDirMessage || (() => {
|
|
794
917
|
const selected = suggestions[selectedIndex];
|