@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
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/userFriendlyError.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * User-Friendly Error System\n *\n * Transforms technical errors into friendly messages for non-developer users.\n * Provides structured logging for debugging and optional cloud reporting.\n *\n * Design Philosophy:\n * - User layer: Simple, actionable messages in their language\n * - Developer layer: Full technical details for debugging\n * - Operations layer: Structured data for analysis and improvement\n */\n\nimport { randomUUID } from 'crypto'\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { t, tSafe } from '@i18n/index'\n\n// ============================================================================\n// Error Categories\n// ============================================================================\n\n/**\n * High-level error categories that map to user-understandable concepts\n */\nexport enum ErrorCategory {\n // Network & Connectivity\n NETWORK_CONNECTION = 'network_connection', // Can't reach the server\n NETWORK_TIMEOUT = 'network_timeout', // Request took too long\n NETWORK_DNS = 'network_dns', // Can't find the server\n\n // API & Service\n API_RATE_LIMIT = 'api_rate_limit', // Too many requests\n API_AUTH = 'api_auth', // Authentication failed\n API_QUOTA = 'api_quota', // Usage quota exceeded\n API_SERVER_ERROR = 'api_server_error', // Server is having issues\n API_INVALID_RESPONSE = 'api_invalid_response', // Unexpected response\n\n // File & Storage\n FILE_NOT_FOUND = 'file_not_found', // File doesn't exist\n FILE_PERMISSION = 'file_permission', // Can't access file\n FILE_TOO_LARGE = 'file_too_large', // File is too big\n FILE_ENCODING = 'file_encoding', // Can't read file format\n\n // Configuration\n CONFIG_MISSING = 'config_missing', // Missing required setting\n CONFIG_INVALID = 'config_invalid', // Invalid setting value\n CONFIG_API_KEY = 'config_api_key', // API key issue\n\n // Model & AI\n MODEL_UNAVAILABLE = 'model_unavailable', // Model not accessible\n MODEL_CONTEXT_LENGTH = 'model_context_length', // Input too long\n MODEL_CONTENT_FILTER = 'model_content_filter', // Content blocked\n\n // System\n SYSTEM_MEMORY = 'system_memory', // Out of memory\n SYSTEM_PROCESS = 'system_process', // Process error\n\n // Unknown\n UNKNOWN = 'unknown', // Unclassified error\n}\n\n// ============================================================================\n// User-Friendly Messages (Multi-language support via i18n)\n// ============================================================================\n\ninterface FriendlyMessage {\n title: string\n description: string\n suggestions: string[]\n}\n\n/**\n * Maps error categories to i18n translation key prefixes\n */\nconst CATEGORY_TO_I18N_PREFIX: Record<ErrorCategory, string> = {\n [ErrorCategory.NETWORK_CONNECTION]: 'friendlyError.networkConnection',\n [ErrorCategory.NETWORK_TIMEOUT]: 'friendlyError.networkTimeout',\n [ErrorCategory.NETWORK_DNS]: 'friendlyError.networkDns',\n [ErrorCategory.API_RATE_LIMIT]: 'friendlyError.apiRateLimit',\n [ErrorCategory.API_AUTH]: 'friendlyError.apiAuth',\n [ErrorCategory.API_QUOTA]: 'friendlyError.apiQuota',\n [ErrorCategory.API_SERVER_ERROR]: 'friendlyError.apiServerError',\n [ErrorCategory.API_INVALID_RESPONSE]: 'friendlyError.apiInvalidResponse',\n [ErrorCategory.FILE_NOT_FOUND]: 'friendlyError.fileNotFound',\n [ErrorCategory.FILE_PERMISSION]: 'friendlyError.filePermission',\n [ErrorCategory.FILE_TOO_LARGE]: 'friendlyError.fileTooLarge',\n [ErrorCategory.FILE_ENCODING]: 'friendlyError.fileEncoding',\n [ErrorCategory.CONFIG_MISSING]: 'friendlyError.configMissing',\n [ErrorCategory.CONFIG_INVALID]: 'friendlyError.configInvalid',\n [ErrorCategory.CONFIG_API_KEY]: 'friendlyError.configApiKey',\n [ErrorCategory.MODEL_UNAVAILABLE]: 'friendlyError.modelUnavailable',\n [ErrorCategory.MODEL_CONTEXT_LENGTH]: 'friendlyError.modelContextLength',\n [ErrorCategory.MODEL_CONTENT_FILTER]: 'friendlyError.modelContentFilter',\n [ErrorCategory.SYSTEM_MEMORY]: 'friendlyError.systemMemory',\n [ErrorCategory.SYSTEM_PROCESS]: 'friendlyError.systemProcess',\n [ErrorCategory.UNKNOWN]: 'friendlyError.unknown',\n}\n\n/**\n * Get friendly message using i18n\n * Designed for non-technical users (analysts, researchers, writers, etc.)\n */\nfunction getFriendlyMessage(category: ErrorCategory): FriendlyMessage {\n const prefix = CATEGORY_TO_I18N_PREFIX[category]\n\n // Build suggestions array dynamically (use tSafe to avoid warnings for missing keys)\n const suggestions: string[] = []\n for (let i = 1; i <= 3; i++) {\n const suggestion = tSafe(`${prefix}.suggestion${i}`)\n if (suggestion) {\n suggestions.push(suggestion)\n }\n }\n\n return {\n title: tSafe(`${prefix}.title`) || category,\n description: tSafe(`${prefix}.description`) || '',\n suggestions,\n }\n}\n\n/**\n * Legacy FRIENDLY_MESSAGES for backward compatibility\n * @deprecated Use getFriendlyMessage() for i18n support\n */\nconst FRIENDLY_MESSAGES: Record<ErrorCategory, FriendlyMessage> =\n Object.fromEntries(\n Object.values(ErrorCategory).map(category => [\n category,\n getFriendlyMessage(category),\n ]),\n ) as Record<ErrorCategory, FriendlyMessage>\n\n// ============================================================================\n// Error Classification Logic\n// ============================================================================\n\ninterface ErrorPattern {\n category: ErrorCategory\n patterns: (string | RegExp)[]\n}\n\n/**\n * Patterns to classify raw errors into categories\n * Order matters - more specific patterns should come first\n */\nconst ERROR_PATTERNS: ErrorPattern[] = [\n // Network errors\n {\n category: ErrorCategory.NETWORK_CONNECTION,\n patterns: [\n 'socket.*closed',\n 'ECONNREFUSED',\n 'ECONNRESET',\n 'ENOTFOUND',\n 'connection.*refused',\n 'connection.*closed',\n 'network.*error',\n 'fetch failed',\n ],\n },\n {\n category: ErrorCategory.NETWORK_TIMEOUT,\n patterns: [\n 'timeout',\n 'ETIMEDOUT',\n 'timed out',\n 'deadline exceeded',\n 'request.*timeout',\n ],\n },\n {\n category: ErrorCategory.NETWORK_DNS,\n patterns: ['ENOTFOUND', 'getaddrinfo', 'DNS', 'resolve.*failed'],\n },\n\n // API errors\n {\n category: ErrorCategory.API_RATE_LIMIT,\n patterns: ['rate.*limit', '429', 'too many requests', 'quota.*exceeded'],\n },\n {\n category: ErrorCategory.API_AUTH,\n patterns: [\n '401',\n 'unauthorized',\n 'authentication.*failed',\n 'invalid.*key',\n 'api.*key.*invalid',\n ],\n },\n {\n category: ErrorCategory.API_QUOTA,\n patterns: [\n 'insufficient.*quota',\n 'billing',\n 'credit',\n 'exceeded.*quota',\n '402',\n ],\n },\n {\n category: ErrorCategory.API_SERVER_ERROR,\n patterns: ['500', '502', '503', '504', 'internal.*error', 'server.*error'],\n },\n\n // File errors\n {\n category: ErrorCategory.FILE_NOT_FOUND,\n patterns: ['ENOENT', 'no such file', 'file.*not.*found', 'does not exist'],\n },\n {\n category: ErrorCategory.FILE_PERMISSION,\n patterns: ['EACCES', 'EPERM', 'permission.*denied', 'access.*denied'],\n },\n {\n category: ErrorCategory.FILE_TOO_LARGE,\n patterns: ['file.*too.*large', 'EFBIG', 'size.*limit'],\n },\n\n // Model errors\n {\n category: ErrorCategory.MODEL_CONTEXT_LENGTH,\n patterns: [\n 'context.*length',\n 'token.*limit',\n 'max.*tokens',\n 'too.*long',\n 'exceeds.*maximum',\n ],\n },\n {\n category: ErrorCategory.MODEL_CONTENT_FILTER,\n patterns: ['content.*filter', 'safety', 'blocked', 'moderation'],\n },\n {\n category: ErrorCategory.MODEL_UNAVAILABLE,\n patterns: ['model.*not.*found', 'model.*unavailable', 'does not exist'],\n },\n\n // Config errors\n {\n category: ErrorCategory.CONFIG_API_KEY,\n patterns: [\n 'api.*key.*not.*set',\n 'missing.*api.*key',\n 'ANTHROPIC_API_KEY',\n 'OPENAI_API_KEY',\n ],\n },\n\n // System errors\n {\n category: ErrorCategory.SYSTEM_MEMORY,\n patterns: ['ENOMEM', 'out of memory', 'heap', 'memory.*limit'],\n },\n]\n\n/**\n * Classifies a raw error into a category\n */\nexport function classifyError(error: unknown): ErrorCategory {\n const errorString = getErrorString(error).toLowerCase()\n\n for (const { category, patterns } of ERROR_PATTERNS) {\n for (const pattern of patterns) {\n if (typeof pattern === 'string') {\n if (errorString.includes(pattern.toLowerCase())) {\n return category\n }\n } else if (pattern.test(errorString)) {\n return category\n }\n }\n }\n\n return ErrorCategory.UNKNOWN\n}\n\nfunction getErrorString(error: unknown): string {\n if (error instanceof Error) {\n return `${error.name}: ${error.message} ${error.stack || ''}`\n }\n return String(error)\n}\n\n// ============================================================================\n// User-Friendly Error Class\n// ============================================================================\n\nexport interface ErrorContext {\n /** Operation being performed (e.g., \"reading file\", \"calling API\") */\n operation?: string\n /** Model being used */\n model?: string\n /** File path involved */\n filePath?: string\n /** API endpoint */\n endpoint?: string\n /** Additional context */\n [key: string]: unknown\n}\n\nexport interface ErrorLogEntry {\n id: string\n timestamp: string\n category: ErrorCategory\n friendlyTitle: string\n technicalMessage: string\n stack?: string\n context: ErrorContext\n systemInfo: {\n platform: string\n nodeVersion: string\n mintoVersion: string\n }\n}\n\n/**\n * User-Friendly Error wrapper\n * Provides both user-facing messages and technical details\n */\nexport class UserFriendlyError extends Error {\n readonly id: string\n readonly category: ErrorCategory\n readonly friendlyMessage: FriendlyMessage\n readonly originalError: unknown\n readonly context: ErrorContext\n readonly timestamp: Date\n\n constructor(\n originalError: unknown,\n context: ErrorContext = {},\n categoryOverride?: ErrorCategory,\n ) {\n const category = categoryOverride || classifyError(originalError)\n const friendly = FRIENDLY_MESSAGES[category]\n\n super(friendly.title)\n this.name = 'UserFriendlyError'\n this.id = randomUUID().slice(0, 8)\n this.category = category\n this.friendlyMessage = friendly\n this.originalError = originalError\n this.context = context\n this.timestamp = new Date()\n\n // Preserve original stack\n if (originalError instanceof Error && originalError.stack) {\n this.stack = originalError.stack\n }\n }\n\n /**\n * Get user-facing display message\n */\n getUserMessage(): string {\n // Get fresh translations (in case language changed)\n const message = getFriendlyMessage(this.category)\n const suggestionLabel = t('friendlyError.suggestionLabel')\n const errorIdLabel = t('friendlyError.errorIdLabel')\n\n const lines = [\n `\u26A0\uFE0F ${message.title}`,\n '',\n message.description,\n '',\n `\uD83D\uDCA1 ${suggestionLabel}:`,\n ...message.suggestions.map(s => ` \u2022 ${s}`),\n '',\n `\uD83D\uDCCB ${errorIdLabel}: ${this.id}`,\n ]\n return lines.join('\\n')\n }\n\n /**\n * Get technical message for developers\n */\n getTechnicalMessage(): string {\n const original =\n this.originalError instanceof Error\n ? this.originalError.message\n : String(this.originalError)\n return `[${this.category}] ${original}`\n }\n\n /**\n * Create structured log entry\n */\n toLogEntry(): ErrorLogEntry {\n return {\n id: this.id,\n timestamp: this.timestamp.toISOString(),\n category: this.category,\n friendlyTitle: this.friendlyMessage.title,\n technicalMessage: this.getTechnicalMessage(),\n stack: this.stack,\n context: this.context,\n systemInfo: {\n platform: process.platform,\n nodeVersion: process.version,\n mintoVersion: getMintoVersion(),\n },\n }\n }\n}\n\n// ============================================================================\n// Error Logging\n// ============================================================================\n\nlet errorLogPath: string | null = null\n\nfunction getErrorLogPath(): string {\n if (!errorLogPath) {\n const logDir = path.join(process.env.HOME || '', '.minto', 'logs')\n errorLogPath = path.join(logDir, 'errors.jsonl')\n }\n return errorLogPath\n}\n\n/**\n * Log error to local file (JSONL format for easy analysis)\n */\nexport function logUserFriendlyError(error: UserFriendlyError): void {\n try {\n const logPath = getErrorLogPath()\n const logDir = path.dirname(logPath)\n\n // Ensure log directory exists\n if (!fs.existsSync(logDir)) {\n fs.mkdirSync(logDir, { recursive: true })\n }\n\n const entry = error.toLogEntry()\n fs.appendFileSync(logPath, JSON.stringify(entry) + '\\n')\n } catch {\n // Silent fail - don't let logging errors break the app\n }\n}\n\n/**\n * Get recent errors for debugging\n */\nexport function getRecentErrors(limit = 10): ErrorLogEntry[] {\n try {\n const logPath = getErrorLogPath()\n if (!fs.existsSync(logPath)) {\n return []\n }\n\n const content = fs.readFileSync(logPath, 'utf-8')\n const lines = content.trim().split('\\n').filter(Boolean)\n const entries = lines\n .slice(-limit)\n .map(line => {\n try {\n return JSON.parse(line) as ErrorLogEntry\n } catch {\n return null\n }\n })\n .filter((e): e is ErrorLogEntry => e !== null)\n\n return entries.reverse()\n } catch {\n return []\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction getMintoVersion(): string {\n try {\n const packageJsonPath = path.join(__dirname, '../../package.json')\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'))\n return packageJson.version || 'unknown'\n } catch {\n return 'unknown'\n }\n}\n\n/**\n * Wrap any error into a UserFriendlyError\n */\nexport function toUserFriendlyError(\n error: unknown,\n context?: ErrorContext,\n): UserFriendlyError {\n if (error instanceof UserFriendlyError) {\n return error\n }\n return new UserFriendlyError(error, context)\n}\n\n/**\n * Format error for display to user\n * Returns the friendly message, optionally with technical details\n */\nexport function formatErrorForUser(\n error: unknown,\n options: { showTechnical?: boolean; context?: ErrorContext } = {},\n): string {\n const friendly = toUserFriendlyError(error, options.context)\n\n // Log the error\n logUserFriendlyError(friendly)\n\n let message = friendly.getUserMessage()\n\n if (options.showTechnical) {\n const technicalLabel = t('friendlyError.technicalDetailsLabel')\n message += `\\n\\n\uD83D\uDD27 ${technicalLabel}: ${friendly.getTechnicalMessage()}`\n }\n\n return message\n}\n\n// ============================================================================\n// Exports for Integration\n// ============================================================================\n\nexport { FRIENDLY_MESSAGES, ERROR_PATTERNS }\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ErrorCategory"]
|
|
7
|
+
}
|
|
Binary file
|
package/dist/version.js
CHANGED
package/dist/version.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/version.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Application version\n * This file is auto-generated during build process\n */\n\nexport const VERSION = '0.
|
|
4
|
+
"sourcesContent": ["/**\n * Application version\n * This file is auto-generated during build process\n */\n\nexport const VERSION = '0.3.0'\nexport const BUILD_DATE = '2026-02-02T01:21:32.241Z'\n"],
|
|
5
5
|
"mappings": "AAKO,MAAM,UAAU;AAChB,MAAM,aAAa;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@within-7/minto",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"bin": {
|
|
5
5
|
"minto": "cli.js"
|
|
6
6
|
},
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
"scripts": {
|
|
28
28
|
"dev": "bun run ./src/entrypoints/cli.tsx --verbose",
|
|
29
29
|
"build": "node scripts/build.mjs",
|
|
30
|
-
"
|
|
30
|
+
"build:packages": "node scripts/build-platform-packages.mjs",
|
|
31
|
+
"clean": "rm -rf cli.js binaries packages",
|
|
31
32
|
"prepublishOnly": "node scripts/build.mjs && node scripts/prepublish-check.js",
|
|
32
33
|
"postinstall": "node scripts/postinstall.js || true",
|
|
33
34
|
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json}\"",
|
|
@@ -37,8 +38,18 @@
|
|
|
37
38
|
"test": "cd tests && bun test",
|
|
38
39
|
"typecheck": "tsc --noEmit",
|
|
39
40
|
"prepare": "",
|
|
41
|
+
"publish:packages": "node scripts/publish-platform-packages.mjs",
|
|
40
42
|
"publish:dev": "node scripts/publish-dev.js",
|
|
41
|
-
"publish:release": "node scripts/publish-release.js"
|
|
43
|
+
"publish:release": "node scripts/publish-release.js",
|
|
44
|
+
"release": "node scripts/release-full.js",
|
|
45
|
+
"release:dry-run": "node scripts/release-full.js --dry-run"
|
|
46
|
+
},
|
|
47
|
+
"optionalDependencies": {
|
|
48
|
+
"@within-7/minto-darwin-arm64": "0.3.0",
|
|
49
|
+
"@within-7/minto-darwin-x64": "0.3.0",
|
|
50
|
+
"@within-7/minto-linux-arm64": "0.3.0",
|
|
51
|
+
"@within-7/minto-linux-x64": "0.3.0",
|
|
52
|
+
"@within-7/minto-win32-x64": "0.3.0"
|
|
42
53
|
},
|
|
43
54
|
"dependencies": {
|
|
44
55
|
"@anthropic-ai/bedrock-sdk": "^0.12.6",
|
|
@@ -49,7 +60,6 @@
|
|
|
49
60
|
"@modelcontextprotocol/sdk": "^1.15.1",
|
|
50
61
|
"@types/lodash-es": "^4.17.12",
|
|
51
62
|
"@types/react": "^19.1.8",
|
|
52
|
-
"@within-7/minto": "0.1.5",
|
|
53
63
|
"ansi-escapes": "^7.0.0",
|
|
54
64
|
"chalk": "^5.4.1",
|
|
55
65
|
"cli-highlight": "^2.1.11",
|
|
@@ -70,6 +80,7 @@
|
|
|
70
80
|
"lodash-es": "^4.17.21",
|
|
71
81
|
"lru-cache": "^11.1.0",
|
|
72
82
|
"marked": "^15.0.12",
|
|
83
|
+
"minimatch": "10.1.1",
|
|
73
84
|
"nanoid": "^5.1.5",
|
|
74
85
|
"node-fetch": "^3.3.2",
|
|
75
86
|
"node-html-parser": "^7.0.1",
|
|
@@ -92,6 +103,7 @@
|
|
|
92
103
|
"devDependencies": {
|
|
93
104
|
"@types/bun": "latest",
|
|
94
105
|
"@types/jest": "^30.0.0",
|
|
106
|
+
"@types/minimatch": "6.0.0",
|
|
95
107
|
"@types/node": "^24.1.0",
|
|
96
108
|
"bun-types": "latest",
|
|
97
109
|
"esbuild": "^0.25.9",
|
|
@@ -112,4 +124,4 @@
|
|
|
112
124
|
"formdata-node": "^6.0.3",
|
|
113
125
|
"node-domexception": "npm:domexception@^4.0.0"
|
|
114
126
|
}
|
|
115
|
-
}
|
|
127
|
+
}
|
package/scripts/postinstall.js
CHANGED
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Minto Post-Install Script
|
|
5
|
+
*
|
|
6
|
+
* This script runs after npm install to:
|
|
7
|
+
* 1. Check if the platform-specific binary was installed
|
|
8
|
+
* 2. Display helpful getting-started information
|
|
9
|
+
*
|
|
10
|
+
* The binary is installed automatically via optionalDependencies.
|
|
11
|
+
* If it fails (e.g., unsupported platform), we fall back to JS mode.
|
|
12
|
+
*/
|
|
13
|
+
|
|
3
14
|
const fs = require('fs');
|
|
4
15
|
const path = require('path');
|
|
5
16
|
|
|
17
|
+
const PACKAGE_ROOT = path.join(__dirname, '..');
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Get the package version from package.json
|
|
21
|
+
*/
|
|
6
22
|
function getPackageVersion() {
|
|
7
23
|
try {
|
|
8
|
-
const pkgPath = path.join(
|
|
24
|
+
const pkgPath = path.join(PACKAGE_ROOT, 'package.json');
|
|
9
25
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
10
26
|
return pkg.version;
|
|
11
27
|
} catch {
|
|
@@ -13,50 +29,124 @@ function getPackageVersion() {
|
|
|
13
29
|
}
|
|
14
30
|
}
|
|
15
31
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Get the expected package name for this platform
|
|
34
|
+
*/
|
|
35
|
+
function getPlatformPackageName() {
|
|
36
|
+
const platform = process.platform; // darwin, linux, win32
|
|
37
|
+
const arch = process.arch; // arm64, x64
|
|
38
|
+
return `@within-7/minto-${platform}-${arch}`;
|
|
39
|
+
}
|
|
22
40
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Check if the platform binary package was installed
|
|
43
|
+
*/
|
|
44
|
+
function checkBinaryInstalled() {
|
|
45
|
+
const packageName = getPlatformPackageName();
|
|
46
|
+
const binaryName = process.platform === 'win32' ? 'minto.exe' : 'minto';
|
|
47
|
+
|
|
48
|
+
// Check possible installation locations
|
|
49
|
+
const possiblePaths = [
|
|
50
|
+
// Standard npm install location
|
|
51
|
+
path.join(PACKAGE_ROOT, 'node_modules', packageName, binaryName),
|
|
52
|
+
// Hoisted location
|
|
53
|
+
path.join(PACKAGE_ROOT, '..', packageName, binaryName),
|
|
54
|
+
// Global install
|
|
55
|
+
path.join(PACKAGE_ROOT, '..', '..', packageName, binaryName),
|
|
56
|
+
];
|
|
33
57
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
58
|
+
for (const binaryPath of possiblePaths) {
|
|
59
|
+
if (fs.existsSync(binaryPath)) {
|
|
60
|
+
// Ensure executable permission on Unix
|
|
61
|
+
if (process.platform !== 'win32') {
|
|
62
|
+
try {
|
|
63
|
+
fs.chmodSync(binaryPath, 0o755);
|
|
64
|
+
} catch {
|
|
65
|
+
// Ignore permission errors
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
installed: true,
|
|
70
|
+
path: binaryPath,
|
|
71
|
+
packageName,
|
|
72
|
+
};
|
|
41
73
|
}
|
|
74
|
+
}
|
|
42
75
|
|
|
76
|
+
return {
|
|
77
|
+
installed: false,
|
|
78
|
+
packageName,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Display installation success message
|
|
84
|
+
*/
|
|
85
|
+
function displaySuccessMessage(binaryStatus) {
|
|
86
|
+
const version = getPackageVersion();
|
|
87
|
+
const isGlobal = process.env.npm_config_global === 'true';
|
|
88
|
+
|
|
89
|
+
console.error('');
|
|
90
|
+
console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
91
|
+
console.error('');
|
|
92
|
+
console.error(' ✨ Minto 安装成功!');
|
|
93
|
+
console.error(' 📦 版本: ' + version);
|
|
94
|
+
|
|
95
|
+
if (binaryStatus.installed) {
|
|
96
|
+
console.error(' 🚀 运行模式: 原生二进制 (最佳性能)');
|
|
97
|
+
} else {
|
|
98
|
+
console.error(' 📋 运行模式: JavaScript');
|
|
99
|
+
console.error(' 💡 提示: 原生二进制不可用,将使用 JS 回退模式');
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
console.error('');
|
|
103
|
+
console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
104
|
+
console.error('');
|
|
105
|
+
console.error(' 🚀 快速开始:');
|
|
106
|
+
console.error('');
|
|
107
|
+
|
|
108
|
+
if (isGlobal) {
|
|
109
|
+
console.error(' minto # 启动交互模式');
|
|
110
|
+
console.error(' minto --help # 查看所有命令');
|
|
111
|
+
} else {
|
|
112
|
+
console.error(' npx minto # 启动交互模式');
|
|
113
|
+
console.error(' npx minto --help # 查看所有命令');
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
console.error('');
|
|
117
|
+
console.error(' 📚 文档: https://within-7.com/minto');
|
|
118
|
+
console.error(' 🐛 问题反馈: https://github.com/within-7/minto/issues');
|
|
119
|
+
console.error('');
|
|
120
|
+
console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
121
|
+
console.error('');
|
|
122
|
+
|
|
123
|
+
if (!isGlobal) {
|
|
124
|
+
console.error(' 💡 提示: 全局安装可以更方便地使用:');
|
|
125
|
+
console.error(' npm install -g @within-7/minto');
|
|
43
126
|
console.error('');
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
console.error('');
|
|
47
|
-
console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
48
|
-
console.error('');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
49
129
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
130
|
+
/**
|
|
131
|
+
* Main postinstall function
|
|
132
|
+
*/
|
|
133
|
+
function postinstall() {
|
|
134
|
+
// Only run during actual npm postinstall
|
|
135
|
+
if (process.env.npm_lifecycle_event !== 'postinstall') {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
try {
|
|
140
|
+
// Check if binary was installed
|
|
141
|
+
const binaryStatus = checkBinaryInstalled();
|
|
142
|
+
|
|
143
|
+
// Display success message
|
|
144
|
+
displaySuccessMessage(binaryStatus);
|
|
55
145
|
} catch (err) {
|
|
56
|
-
// Silently fail - postinstall should never break
|
|
146
|
+
// Silently fail - postinstall should never break installation
|
|
147
|
+
// Users can still use JavaScript fallback mode
|
|
57
148
|
}
|
|
58
149
|
}
|
|
59
150
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
151
|
+
// Run postinstall
|
|
152
|
+
postinstall();
|