@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,348 @@
|
|
|
1
|
+
const zhCN = {
|
|
2
|
+
// Common - 通用
|
|
3
|
+
"common.yes": "\u662F",
|
|
4
|
+
"common.no": "\u5426",
|
|
5
|
+
"common.ok": "\u786E\u5B9A",
|
|
6
|
+
"common.cancel": "\u53D6\u6D88",
|
|
7
|
+
"common.confirm": "\u786E\u8BA4",
|
|
8
|
+
"common.save": "\u4FDD\u5B58",
|
|
9
|
+
"common.delete": "\u5220\u9664",
|
|
10
|
+
"common.edit": "\u7F16\u8F91",
|
|
11
|
+
"common.create": "\u521B\u5EFA",
|
|
12
|
+
"common.loading": "\u52A0\u8F7D\u4E2D...",
|
|
13
|
+
"common.error": "\u9519\u8BEF",
|
|
14
|
+
"common.success": "\u6210\u529F",
|
|
15
|
+
"common.warning": "\u8B66\u544A",
|
|
16
|
+
"common.info": "\u4FE1\u606F",
|
|
17
|
+
"common.unknown": "\u672A\u77E5",
|
|
18
|
+
"common.none": "\u65E0",
|
|
19
|
+
"common.all": "\u5168\u90E8",
|
|
20
|
+
"common.selected": "\u5DF2\u9009\u62E9",
|
|
21
|
+
"common.default": "\u9ED8\u8BA4",
|
|
22
|
+
"common.custom": "\u81EA\u5B9A\u4E49",
|
|
23
|
+
"common.enabled": "\u5DF2\u542F\u7528",
|
|
24
|
+
"common.disabled": "\u5DF2\u7981\u7528",
|
|
25
|
+
"common.connected": "\u5DF2\u8FDE\u63A5",
|
|
26
|
+
"common.disconnected": "\u5DF2\u65AD\u5F00",
|
|
27
|
+
"common.pending": "\u7B49\u5F85\u4E2D",
|
|
28
|
+
"common.completed": "\u5DF2\u5B8C\u6210",
|
|
29
|
+
"common.failed": "\u5931\u8D25",
|
|
30
|
+
"common.inProgress": "\u8FDB\u884C\u4E2D",
|
|
31
|
+
"common.version": "\u7248\u672C",
|
|
32
|
+
"common.help": "\u5E2E\u52A9",
|
|
33
|
+
"common.quit": "\u9000\u51FA",
|
|
34
|
+
"common.back": "\u8FD4\u56DE",
|
|
35
|
+
"common.next": "\u4E0B\u4E00\u6B65",
|
|
36
|
+
"common.previous": "\u4E0A\u4E00\u6B65",
|
|
37
|
+
"common.search": "\u641C\u7D22",
|
|
38
|
+
"common.filter": "\u7B5B\u9009",
|
|
39
|
+
"common.sort": "\u6392\u5E8F",
|
|
40
|
+
"common.refresh": "\u5237\u65B0",
|
|
41
|
+
"common.retry": "\u91CD\u8BD5",
|
|
42
|
+
"common.skip": "\u8DF3\u8FC7",
|
|
43
|
+
"common.continue": "\u7EE7\u7EED",
|
|
44
|
+
"common.abort": "\u4E2D\u6B62",
|
|
45
|
+
"common.reset": "\u91CD\u7F6E",
|
|
46
|
+
"common.clear": "\u6E05\u9664",
|
|
47
|
+
"common.copy": "\u590D\u5236",
|
|
48
|
+
"common.paste": "\u7C98\u8D34",
|
|
49
|
+
"common.select": "\u9009\u62E9",
|
|
50
|
+
"common.deselect": "\u53D6\u6D88\u9009\u62E9",
|
|
51
|
+
"common.selectAll": "\u5168\u9009",
|
|
52
|
+
"common.deselectAll": "\u53D6\u6D88\u5168\u9009",
|
|
53
|
+
// UI - Verbose mode - 详细模式
|
|
54
|
+
"ui.verbose.on": "\u8BE6\u7EC6\u6A21\u5F0F: \u5F00",
|
|
55
|
+
"ui.verbose.off": "\u8BE6\u7EC6\u6A21\u5F0F: \u5173",
|
|
56
|
+
"ui.verbose.label": "\u8BE6\u7EC6\u6A21\u5F0F",
|
|
57
|
+
"ui.verbose.hint": "\u6309 Ctrl+O \u5207\u6362\u8BE6\u7EC6\u6A21\u5F0F",
|
|
58
|
+
// Deprecated - 保留用于向后兼容
|
|
59
|
+
"ui.displayMode.minimal": "\u8BE6\u7EC6\u6A21\u5F0F: \u5173",
|
|
60
|
+
"ui.displayMode.compact": "\u8BE6\u7EC6\u6A21\u5F0F: \u5173",
|
|
61
|
+
"ui.displayMode.detailed": "\u8BE6\u7EC6\u6A21\u5F0F: \u5F00",
|
|
62
|
+
"ui.displayMode.label": "\u8BE6\u7EC6\u6A21\u5F0F",
|
|
63
|
+
"ui.displayMode.hint": "\u6309 Ctrl+O \u5207\u6362\u8BE6\u7EC6\u6A21\u5F0F",
|
|
64
|
+
// UI - Input - 输入
|
|
65
|
+
"ui.input.placeholder": "\u8F93\u5165\u95EE\u9898\u6216\u8F93\u5165 / \u67E5\u770B\u547D\u4EE4...",
|
|
66
|
+
"ui.input.thinking": "\u601D\u8003\u4E2D",
|
|
67
|
+
"ui.input.processing": "\u5904\u7406\u4E2D",
|
|
68
|
+
"ui.input.waiting": "\u7B49\u5F85\u54CD\u5E94...",
|
|
69
|
+
"ui.input.multilineHint": "Shift+Enter \u6362\u884C",
|
|
70
|
+
"ui.input.submitHint": "Enter \u63D0\u4EA4",
|
|
71
|
+
// UI - Panels - 面板
|
|
72
|
+
"ui.panel.todo": "\u5F85\u529E",
|
|
73
|
+
"ui.panel.tasks": "\u4EFB\u52A1",
|
|
74
|
+
"ui.panel.agents": "\u667A\u80FD\u4F53",
|
|
75
|
+
"ui.panel.models": "\u6A21\u578B",
|
|
76
|
+
"ui.panel.help": "\u5E2E\u52A9",
|
|
77
|
+
"ui.panel.history": "\u5386\u53F2",
|
|
78
|
+
"ui.panel.settings": "\u8BBE\u7F6E",
|
|
79
|
+
// UI - Status - 状态
|
|
80
|
+
"ui.status.ready": "\u5C31\u7EEA",
|
|
81
|
+
"ui.status.busy": "\u5FD9\u788C",
|
|
82
|
+
"ui.status.error": "\u9519\u8BEF",
|
|
83
|
+
"ui.status.offline": "\u79BB\u7EBF",
|
|
84
|
+
"ui.status.connecting": "\u8FDE\u63A5\u4E2D...",
|
|
85
|
+
"ui.status.streaming": "\u6D41\u5F0F\u8F93\u51FA\u4E2D",
|
|
86
|
+
// UI - Welcome - 欢迎
|
|
87
|
+
"ui.welcome.title": "\u6B22\u8FCE\u4F7F\u7528 Minto\uFF01",
|
|
88
|
+
"ui.welcome.subtitle": "",
|
|
89
|
+
"ui.welcome.quickStart": "\u5FEB\u901F\u5F00\u59CB",
|
|
90
|
+
"ui.welcome.tip1": "\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u60A8\u7684\u7814\u7A76\u6216\u5206\u6790\u9700\u6C42",
|
|
91
|
+
"ui.welcome.tip2": "\u9700\u6C42\u8D8A\u5177\u4F53\uFF0C\u7ED3\u679C\u8D8A\u7CBE\u51C6",
|
|
92
|
+
"ui.welcome.tip3": "\u8F93\u5165 /help \u67E5\u770B\u6240\u6709\u53EF\u7528\u547D\u4EE4",
|
|
93
|
+
"ui.welcome.tip4": "",
|
|
94
|
+
"ui.welcome.cwd": "\u5DE5\u4F5C\u76EE\u5F55",
|
|
95
|
+
"ui.welcome.mcpServers": "MCP \u670D\u52A1\u5668",
|
|
96
|
+
// UI - Hotkeys - 快捷键
|
|
97
|
+
"ui.hotkey.submit": "\u63D0\u4EA4",
|
|
98
|
+
"ui.hotkey.newline": "\u6362\u884C",
|
|
99
|
+
"ui.hotkey.cancel": "\u53D6\u6D88",
|
|
100
|
+
"ui.hotkey.toggleMode": "\u5207\u6362\u663E\u793A\u6A21\u5F0F",
|
|
101
|
+
"ui.hotkey.help": "\u5E2E\u52A9",
|
|
102
|
+
"ui.hotkey.quit": "\u9000\u51FA",
|
|
103
|
+
"ui.hotkey.history": "\u5386\u53F2",
|
|
104
|
+
"ui.hotkey.clear": "\u6E05\u5C4F",
|
|
105
|
+
"ui.hotkey.interrupt": "\u4E2D\u65AD",
|
|
106
|
+
// UI - Hotkey hints (context-aware) - 快捷键提示
|
|
107
|
+
"ui.hints.command": "\u547D\u4EE4",
|
|
108
|
+
"ui.hints.bash": "Bash",
|
|
109
|
+
"ui.hints.send": "\u53D1\u9001",
|
|
110
|
+
"ui.hints.complete": "\u8865\u5168",
|
|
111
|
+
"ui.hints.rollback": "\u56DE\u6EDA",
|
|
112
|
+
"ui.hints.select": "\u9009\u62E9",
|
|
113
|
+
"ui.hints.confirm": "\u786E\u8BA4",
|
|
114
|
+
"ui.hints.close": "\u5173\u95ED",
|
|
115
|
+
"ui.hints.browse": "\u6D4F\u89C8",
|
|
116
|
+
"ui.hints.execute": "\u6267\u884C",
|
|
117
|
+
"ui.hints.completeCommand": "\u8865\u5168\u547D\u4EE4",
|
|
118
|
+
"ui.hints.shortcuts": "\u5FEB\u6377\u952E",
|
|
119
|
+
"ui.hints.pressEsc": "\u6309 Esc \u5173\u95ED",
|
|
120
|
+
"ui.hints.tip": "\u8F93\u5165 /help \u67E5\u770B\u5B8C\u6574\u547D\u4EE4\u5217\u8868",
|
|
121
|
+
// Commands - 命令
|
|
122
|
+
"commands.help.description": "\u663E\u793A\u5E2E\u52A9\u4FE1\u606F",
|
|
123
|
+
"commands.clear.description": "\u6E05\u9664\u5C4F\u5E55",
|
|
124
|
+
"commands.compact.description": "\u538B\u7F29\u5BF9\u8BDD\u4E0A\u4E0B\u6587",
|
|
125
|
+
"commands.compact.success": "\u4E0A\u4E0B\u6587\u538B\u7F29\u6210\u529F",
|
|
126
|
+
"commands.compact.noMessages": "\u6CA1\u6709\u6D88\u606F\u9700\u8981\u538B\u7F29",
|
|
127
|
+
"commands.model.description": "\u9009\u62E9\u6216\u5207\u6362 AI \u6A21\u578B",
|
|
128
|
+
"commands.model.current": "\u5F53\u524D\u6A21\u578B",
|
|
129
|
+
"commands.model.switched": "\u5DF2\u5207\u6362\u5230\u6A21\u578B",
|
|
130
|
+
"commands.model.notFound": "\u672A\u627E\u5230\u6A21\u578B",
|
|
131
|
+
"commands.agents.description": "\u7BA1\u7406\u548C\u67E5\u770B\u667A\u80FD\u4F53",
|
|
132
|
+
"commands.agents.title": "\u53EF\u7528\u667A\u80FD\u4F53",
|
|
133
|
+
"commands.agents.empty": "\u6CA1\u6709\u53EF\u7528\u7684\u667A\u80FD\u4F53",
|
|
134
|
+
"commands.agents.loaded": "\u4E2A\u667A\u80FD\u4F53\u5DF2\u52A0\u8F7D",
|
|
135
|
+
"commands.tasks.description": "\u67E5\u770B\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1",
|
|
136
|
+
"commands.config.description": "\u7BA1\u7406\u914D\u7F6E",
|
|
137
|
+
"commands.bug.description": "\u62A5\u544A\u95EE\u9898",
|
|
138
|
+
"commands.doctor.description": "\u68C0\u67E5\u7CFB\u7EDF\u5065\u5EB7",
|
|
139
|
+
"commands.status.description": "\u663E\u793A\u7CFB\u7EDF\u72B6\u6001",
|
|
140
|
+
"commands.permissions.description": "\u7BA1\u7406\u6743\u9650",
|
|
141
|
+
"commands.mcp.description": "\u7BA1\u7406 MCP \u670D\u52A1\u5668",
|
|
142
|
+
"commands.plugin.description": "\u7BA1\u7406\u63D2\u4EF6",
|
|
143
|
+
"commands.sandbox.description": "\u914D\u7F6E\u6C99\u7BB1\u6A21\u5F0F",
|
|
144
|
+
"commands.thinking.description": "\u5207\u6362\u601D\u8003\u6A21\u5F0F",
|
|
145
|
+
"commands.thinking.enabled": "\u601D\u8003\u6A21\u5F0F\u5DF2\u542F\u7528",
|
|
146
|
+
"commands.thinking.disabled": "\u601D\u8003\u6A21\u5F0F\u5DF2\u7981\u7528",
|
|
147
|
+
// Tools - 工具
|
|
148
|
+
"tools.bash.description": "\u6267\u884C Shell \u547D\u4EE4",
|
|
149
|
+
"tools.bash.executing": "\u6267\u884C\u4E2D",
|
|
150
|
+
"tools.bash.completed": "\u547D\u4EE4\u5B8C\u6210",
|
|
151
|
+
"tools.bash.failed": "\u547D\u4EE4\u5931\u8D25",
|
|
152
|
+
"tools.read.description": "\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9",
|
|
153
|
+
"tools.read.reading": "\u8BFB\u53D6\u4E2D",
|
|
154
|
+
"tools.write.description": "\u5199\u5165\u6587\u4EF6\u5185\u5BB9",
|
|
155
|
+
"tools.write.writing": "\u5199\u5165\u4E2D",
|
|
156
|
+
"tools.write.created": "\u5DF2\u521B\u5EFA",
|
|
157
|
+
"tools.write.updated": "\u5DF2\u66F4\u65B0",
|
|
158
|
+
"tools.edit.description": "\u7F16\u8F91\u6587\u4EF6\u5185\u5BB9",
|
|
159
|
+
"tools.edit.editing": "\u7F16\u8F91\u4E2D",
|
|
160
|
+
"tools.glob.description": "\u6309\u6A21\u5F0F\u67E5\u627E\u6587\u4EF6",
|
|
161
|
+
"tools.grep.description": "\u641C\u7D22\u6587\u4EF6\u5185\u5BB9",
|
|
162
|
+
"tools.task.description": "\u542F\u52A8\u5B50\u667A\u80FD\u4F53\u4EFB\u52A1",
|
|
163
|
+
"tools.task.spawning": "\u6B63\u5728\u542F\u52A8\u4EFB\u52A1",
|
|
164
|
+
"tools.task.running": "\u4EFB\u52A1\u8FD0\u884C\u4E2D",
|
|
165
|
+
"tools.task.completed": "\u4EFB\u52A1\u5B8C\u6210",
|
|
166
|
+
"tools.todo.description": "\u7BA1\u7406\u5F85\u529E\u4E8B\u9879",
|
|
167
|
+
// Errors - 错误
|
|
168
|
+
"errors.generic": "\u53D1\u751F\u9519\u8BEF",
|
|
169
|
+
"errors.network": "\u7F51\u7EDC\u9519\u8BEF",
|
|
170
|
+
"errors.timeout": "\u8BF7\u6C42\u8D85\u65F6",
|
|
171
|
+
"errors.auth": "\u8BA4\u8BC1\u5931\u8D25",
|
|
172
|
+
"errors.rateLimit": "\u8BF7\u6C42\u9891\u7387\u8D85\u9650",
|
|
173
|
+
"errors.modelNotFound": "\u672A\u627E\u5230\u6A21\u578B",
|
|
174
|
+
"errors.apiKeyMissing": "\u7F3A\u5C11 API \u5BC6\u94A5",
|
|
175
|
+
"errors.apiKeyInvalid": "API \u5BC6\u94A5\u65E0\u6548",
|
|
176
|
+
"errors.permissionDenied": "\u6743\u9650\u88AB\u62D2\u7EDD",
|
|
177
|
+
"errors.fileNotFound": "\u6587\u4EF6\u672A\u627E\u5230",
|
|
178
|
+
"errors.fileReadError": "\u8BFB\u53D6\u6587\u4EF6\u9519\u8BEF",
|
|
179
|
+
"errors.fileWriteError": "\u5199\u5165\u6587\u4EF6\u9519\u8BEF",
|
|
180
|
+
"errors.configError": "\u914D\u7F6E\u9519\u8BEF",
|
|
181
|
+
"errors.parseError": "\u89E3\u6790\u9519\u8BEF",
|
|
182
|
+
"errors.validationError": "\u9A8C\u8BC1\u9519\u8BEF",
|
|
183
|
+
"errors.aborted": "\u64CD\u4F5C\u5DF2\u4E2D\u6B62",
|
|
184
|
+
"errors.contextTooLong": "\u4E0A\u4E0B\u6587\u8FC7\u957F",
|
|
185
|
+
"errors.serverError": "\u670D\u52A1\u5668\u9519\u8BEF",
|
|
186
|
+
"errors.connectionFailed": "\u8FDE\u63A5\u5931\u8D25",
|
|
187
|
+
// Help - 帮助
|
|
188
|
+
"help.title": "Minto \u5E2E\u52A9",
|
|
189
|
+
"help.usage": "\u7528\u6CD5",
|
|
190
|
+
"help.commands": "\u547D\u4EE4",
|
|
191
|
+
"help.options": "\u9009\u9879",
|
|
192
|
+
"help.examples": "\u793A\u4F8B",
|
|
193
|
+
"help.moreInfo": "\u66F4\u591A\u4FE1\u606F",
|
|
194
|
+
"help.reportBug": "\u62A5\u544A\u95EE\u9898",
|
|
195
|
+
"help.documentation": "\u6587\u6863",
|
|
196
|
+
// Status messages - 状态消息
|
|
197
|
+
"status.modelLoaded": "\u6A21\u578B\u5DF2\u52A0\u8F7D",
|
|
198
|
+
"status.contextCompressed": "\u4E0A\u4E0B\u6587\u5DF2\u538B\u7F29",
|
|
199
|
+
"status.tokensUsed": "\u5DF2\u4F7F\u7528\u4EE4\u724C",
|
|
200
|
+
"status.costEstimate": "\u9884\u4F30\u8D39\u7528",
|
|
201
|
+
"status.apiLatency": "API \u5EF6\u8FDF",
|
|
202
|
+
"status.streaming": "\u6D41\u5F0F\u54CD\u5E94\u4E2D",
|
|
203
|
+
"status.thinking": "\u601D\u8003\u4E2D",
|
|
204
|
+
"status.toolUse": "\u4F7F\u7528\u5DE5\u5177",
|
|
205
|
+
"status.subagent": "\u8FD0\u884C\u5B50\u667A\u80FD\u4F53",
|
|
206
|
+
// Prompts - 提示
|
|
207
|
+
"prompts.confirmDelete": "\u786E\u5B9A\u8981\u5220\u9664\u5417\uFF1F",
|
|
208
|
+
"prompts.confirmOverwrite": "\u6587\u4EF6\u5DF2\u5B58\u5728\uFF0C\u662F\u5426\u8986\u76D6\uFF1F",
|
|
209
|
+
"prompts.confirmExecute": "\u662F\u5426\u6267\u884C\u6B64\u547D\u4EE4\uFF1F",
|
|
210
|
+
"prompts.enterApiKey": "\u8BF7\u8F93\u5165 API \u5BC6\u94A5",
|
|
211
|
+
"prompts.selectModel": "\u8BF7\u9009\u62E9\u6A21\u578B",
|
|
212
|
+
"prompts.selectLanguage": "\u8BF7\u9009\u62E9\u8BED\u8A00",
|
|
213
|
+
// Agent/Subagent - 智能体/子智能体
|
|
214
|
+
"agent.spawning": "\u6B63\u5728\u542F\u52A8\u667A\u80FD\u4F53",
|
|
215
|
+
"agent.running": "\u667A\u80FD\u4F53\u8FD0\u884C\u4E2D",
|
|
216
|
+
"agent.completed": "\u667A\u80FD\u4F53\u5DF2\u5B8C\u6210",
|
|
217
|
+
"agent.failed": "\u667A\u80FD\u4F53\u5931\u8D25",
|
|
218
|
+
"agent.cancelled": "\u667A\u80FD\u4F53\u5DF2\u53D6\u6D88",
|
|
219
|
+
"agent.waiting": "\u7B49\u5F85\u4E2D",
|
|
220
|
+
"agent.thinking": "\u601D\u8003\u4E2D",
|
|
221
|
+
// Model - 模型
|
|
222
|
+
"model.selecting": "\u6B63\u5728\u9009\u62E9\u6A21\u578B",
|
|
223
|
+
"model.selected": "\u6A21\u578B\u5DF2\u9009\u62E9",
|
|
224
|
+
"model.unavailable": "\u6A21\u578B\u4E0D\u53EF\u7528",
|
|
225
|
+
"model.switching": "\u6B63\u5728\u5207\u6362\u6A21\u578B",
|
|
226
|
+
"model.switched": "\u6A21\u578B\u5DF2\u5207\u6362",
|
|
227
|
+
"model.default": "\u9ED8\u8BA4\u6A21\u578B",
|
|
228
|
+
"model.custom": "\u81EA\u5B9A\u4E49\u6A21\u578B",
|
|
229
|
+
// Permissions - 权限
|
|
230
|
+
"permission.required": "\u9700\u8981\u6743\u9650",
|
|
231
|
+
"permission.granted": "\u6743\u9650\u5DF2\u6388\u4E88",
|
|
232
|
+
"permission.denied": "\u6743\u9650\u88AB\u62D2\u7EDD",
|
|
233
|
+
"permission.allowOnce": "\u5141\u8BB8\u4E00\u6B21",
|
|
234
|
+
"permission.allowAlways": "\u59CB\u7EC8\u5141\u8BB8",
|
|
235
|
+
"permission.denyOnce": "\u62D2\u7EDD\u4E00\u6B21",
|
|
236
|
+
"permission.denyAlways": "\u59CB\u7EC8\u62D2\u7EDD",
|
|
237
|
+
"permission.sensitiveFile": "\u654F\u611F\u6587\u4EF6\u8BBF\u95EE",
|
|
238
|
+
"permission.externalPath": "\u5916\u90E8\u8DEF\u5F84\u8BBF\u95EE",
|
|
239
|
+
"permission.dangerousCommand": "\u5371\u9669\u547D\u4EE4",
|
|
240
|
+
// User-Friendly Error Messages - 用户友好错误消息
|
|
241
|
+
// Network & Connectivity - 网络与连接
|
|
242
|
+
"friendlyError.networkConnection.title": "\u7F51\u7EDC\u8FDE\u63A5\u95EE\u9898",
|
|
243
|
+
"friendlyError.networkConnection.description": "\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u95EE\u9898\u6216\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528\u3002",
|
|
244
|
+
"friendlyError.networkConnection.suggestion1": "\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5",
|
|
245
|
+
"friendlyError.networkConnection.suggestion2": "\u7A0D\u540E\u91CD\u8BD5",
|
|
246
|
+
"friendlyError.networkConnection.suggestion3": "\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458",
|
|
247
|
+
"friendlyError.networkTimeout.title": "\u8BF7\u6C42\u8D85\u65F6",
|
|
248
|
+
"friendlyError.networkTimeout.description": "\u670D\u52A1\u5668\u54CD\u5E94\u65F6\u95F4\u8FC7\u957F\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u7F13\u6162\u6216\u670D\u52A1\u7E41\u5FD9\u3002",
|
|
249
|
+
"friendlyError.networkTimeout.suggestion1": "\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5\u901F\u5EA6",
|
|
250
|
+
"friendlyError.networkTimeout.suggestion2": "\u7A0D\u540E\u91CD\u8BD5",
|
|
251
|
+
"friendlyError.networkTimeout.suggestion3": "\u5C1D\u8BD5\u66F4\u7B80\u77ED\u7684\u8BF7\u6C42",
|
|
252
|
+
"friendlyError.networkDns.title": "DNS \u89E3\u6790\u5931\u8D25",
|
|
253
|
+
"friendlyError.networkDns.description": "\u65E0\u6CD5\u627E\u5230\u670D\u52A1\u5668\u5730\u5740\u3002\u8FD9\u53EF\u80FD\u662F DNS \u914D\u7F6E\u95EE\u9898\u6216\u670D\u52A1\u5730\u5740\u66F4\u6539\u3002",
|
|
254
|
+
"friendlyError.networkDns.suggestion1": "\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8BBE\u7F6E",
|
|
255
|
+
"friendlyError.networkDns.suggestion2": "\u5C1D\u8BD5\u4F7F\u7528\u5176\u4ED6 DNS \u670D\u52A1\u5668",
|
|
256
|
+
"friendlyError.networkDns.suggestion3": "\u8054\u7CFB\u7F51\u7EDC\u7BA1\u7406\u5458",
|
|
257
|
+
// API & Service - API 与服务
|
|
258
|
+
"friendlyError.apiRateLimit.title": "\u8BF7\u6C42\u9891\u7387\u8D85\u9650",
|
|
259
|
+
"friendlyError.apiRateLimit.description": "\u60A8\u7684\u8BF7\u6C42\u592A\u9891\u7E41\u4E86\u3002\u670D\u52A1\u9700\u8981\u77ED\u6682\u4F11\u606F\u6765\u5904\u7406\u60A8\u7684\u8BF7\u6C42\u3002",
|
|
260
|
+
"friendlyError.apiRateLimit.suggestion1": "\u7B49\u5F85\u51E0\u5206\u949F\u540E\u91CD\u8BD5",
|
|
261
|
+
"friendlyError.apiRateLimit.suggestion2": "\u51CF\u5C11\u8BF7\u6C42\u9891\u7387",
|
|
262
|
+
"friendlyError.apiRateLimit.suggestion3": "\u8003\u8651\u5347\u7EA7\u5230\u66F4\u9AD8\u7684\u670D\u52A1\u7EA7\u522B",
|
|
263
|
+
"friendlyError.apiAuth.title": "\u8BA4\u8BC1\u5931\u8D25",
|
|
264
|
+
"friendlyError.apiAuth.description": "\u65E0\u6CD5\u9A8C\u8BC1\u60A8\u7684\u8EAB\u4EFD\u3002\u8FD9\u53EF\u80FD\u662F API \u5BC6\u94A5\u65E0\u6548\u6216\u5DF2\u8FC7\u671F\u3002",
|
|
265
|
+
"friendlyError.apiAuth.suggestion1": "\u68C0\u67E5\u60A8\u7684 API \u5BC6\u94A5\u662F\u5426\u6B63\u786E",
|
|
266
|
+
"friendlyError.apiAuth.suggestion2": "\u786E\u8BA4 API \u5BC6\u94A5\u672A\u8FC7\u671F",
|
|
267
|
+
"friendlyError.apiAuth.suggestion3": "\u91CD\u65B0\u751F\u6210\u65B0\u7684 API \u5BC6\u94A5",
|
|
268
|
+
"friendlyError.apiQuota.title": "\u914D\u989D\u5DF2\u7528\u5C3D",
|
|
269
|
+
"friendlyError.apiQuota.description": "\u60A8\u7684 API \u4F7F\u7528\u914D\u989D\u5DF2\u8017\u5C3D\u3002\u9700\u8981\u7B49\u5F85\u914D\u989D\u91CD\u7F6E\u6216\u5347\u7EA7\u8D26\u6237\u3002",
|
|
270
|
+
"friendlyError.apiQuota.suggestion1": "\u68C0\u67E5\u60A8\u7684\u8D26\u6237\u7528\u91CF",
|
|
271
|
+
"friendlyError.apiQuota.suggestion2": "\u7B49\u5F85\u914D\u989D\u91CD\u7F6E\uFF08\u901A\u5E38\u6BCF\u6708\u91CD\u7F6E\uFF09",
|
|
272
|
+
"friendlyError.apiQuota.suggestion3": "\u8003\u8651\u5347\u7EA7\u60A8\u7684\u8BA2\u9605\u8BA1\u5212",
|
|
273
|
+
"friendlyError.apiServerError.title": "\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF",
|
|
274
|
+
"friendlyError.apiServerError.description": "AI \u670D\u52A1\u9047\u5230\u4E86\u5185\u90E8\u95EE\u9898\u3002\u8FD9\u901A\u5E38\u662F\u4E34\u65F6\u6027\u7684\u3002",
|
|
275
|
+
"friendlyError.apiServerError.suggestion1": "\u7A0D\u540E\u91CD\u8BD5",
|
|
276
|
+
"friendlyError.apiServerError.suggestion2": "\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u68C0\u67E5\u670D\u52A1\u72B6\u6001\u9875\u9762",
|
|
277
|
+
"friendlyError.apiInvalidResponse.title": "\u65E0\u6548\u7684\u54CD\u5E94",
|
|
278
|
+
"friendlyError.apiInvalidResponse.description": "\u670D\u52A1\u5668\u8FD4\u56DE\u4E86\u65E0\u6CD5\u7406\u89E3\u7684\u54CD\u5E94\u3002\u8FD9\u53EF\u80FD\u662F\u6682\u65F6\u6027\u7684\u670D\u52A1\u95EE\u9898\u3002",
|
|
279
|
+
"friendlyError.apiInvalidResponse.suggestion1": "\u91CD\u8BD5\u8BF7\u6C42",
|
|
280
|
+
"friendlyError.apiInvalidResponse.suggestion2": "\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458",
|
|
281
|
+
// File & Storage - 文件与存储
|
|
282
|
+
"friendlyError.fileNotFound.title": "\u6587\u4EF6\u672A\u627E\u5230",
|
|
283
|
+
"friendlyError.fileNotFound.description": "\u65E0\u6CD5\u627E\u5230\u6307\u5B9A\u7684\u6587\u4EF6\u3002\u5B83\u53EF\u80FD\u5DF2\u88AB\u79FB\u52A8\u3001\u5220\u9664\u6216\u8DEF\u5F84\u4E0D\u6B63\u786E\u3002",
|
|
284
|
+
"friendlyError.fileNotFound.suggestion1": "\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u786E",
|
|
285
|
+
"friendlyError.fileNotFound.suggestion2": "\u786E\u8BA4\u6587\u4EF6\u662F\u5426\u5B58\u5728",
|
|
286
|
+
"friendlyError.filePermission.title": "\u6587\u4EF6\u6743\u9650\u9519\u8BEF",
|
|
287
|
+
"friendlyError.filePermission.description": "\u6CA1\u6709\u8DB3\u591F\u7684\u6743\u9650\u8BBF\u95EE\u6B64\u6587\u4EF6\u6216\u76EE\u5F55\u3002",
|
|
288
|
+
"friendlyError.filePermission.suggestion1": "\u68C0\u67E5\u6587\u4EF6\u6743\u9650\u8BBE\u7F6E",
|
|
289
|
+
"friendlyError.filePermission.suggestion2": "\u5C1D\u8BD5\u4EE5\u7BA1\u7406\u5458\u6743\u9650\u8FD0\u884C",
|
|
290
|
+
"friendlyError.fileTooLarge.title": "\u6587\u4EF6\u8FC7\u5927",
|
|
291
|
+
"friendlyError.fileTooLarge.description": "\u6587\u4EF6\u5927\u5C0F\u8D85\u51FA\u4E86\u5904\u7406\u9650\u5236\u3002",
|
|
292
|
+
"friendlyError.fileTooLarge.suggestion1": "\u5C1D\u8BD5\u5904\u7406\u8F83\u5C0F\u7684\u6587\u4EF6",
|
|
293
|
+
"friendlyError.fileTooLarge.suggestion2": "\u5C06\u5927\u6587\u4EF6\u5206\u5272\u6210\u5C0F\u5757",
|
|
294
|
+
"friendlyError.fileEncoding.title": "\u6587\u4EF6\u7F16\u7801\u95EE\u9898",
|
|
295
|
+
"friendlyError.fileEncoding.description": "\u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9\u3002\u53EF\u80FD\u662F\u6587\u4EF6\u7F16\u7801\u4E0D\u517C\u5BB9\u6216\u6587\u4EF6\u5DF2\u635F\u574F\u3002",
|
|
296
|
+
"friendlyError.fileEncoding.suggestion1": "\u68C0\u67E5\u6587\u4EF6\u7F16\u7801\u683C\u5F0F",
|
|
297
|
+
"friendlyError.fileEncoding.suggestion2": "\u5C1D\u8BD5\u5C06\u6587\u4EF6\u8F6C\u6362\u4E3A UTF-8 \u7F16\u7801",
|
|
298
|
+
// Configuration - 配置
|
|
299
|
+
"friendlyError.configMissing.title": "\u914D\u7F6E\u6587\u4EF6\u7F3A\u5931",
|
|
300
|
+
"friendlyError.configMissing.description": "\u627E\u4E0D\u5230\u5FC5\u9700\u7684\u914D\u7F6E\u6587\u4EF6\u3002\u8FD9\u53EF\u80FD\u662F\u9996\u6B21\u8FD0\u884C\u6216\u914D\u7F6E\u88AB\u610F\u5916\u5220\u9664\u3002",
|
|
301
|
+
"friendlyError.configMissing.suggestion1": "\u8FD0\u884C\u521D\u59CB\u8BBE\u7F6E\u5411\u5BFC",
|
|
302
|
+
"friendlyError.configMissing.suggestion2": "\u624B\u52A8\u521B\u5EFA\u914D\u7F6E\u6587\u4EF6",
|
|
303
|
+
"friendlyError.configInvalid.title": "\u914D\u7F6E\u683C\u5F0F\u9519\u8BEF",
|
|
304
|
+
"friendlyError.configInvalid.description": "\u914D\u7F6E\u6587\u4EF6\u5305\u542B\u65E0\u6548\u7684\u5185\u5BB9\u3002\u8FD9\u53EF\u80FD\u662F\u7F16\u8F91\u65F6\u5F15\u5165\u7684\u8BED\u6CD5\u9519\u8BEF\u3002",
|
|
305
|
+
"friendlyError.configInvalid.suggestion1": "\u68C0\u67E5\u914D\u7F6E\u6587\u4EF6\u683C\u5F0F",
|
|
306
|
+
"friendlyError.configInvalid.suggestion2": "\u6062\u590D\u9ED8\u8BA4\u914D\u7F6E",
|
|
307
|
+
"friendlyError.configApiKey.title": "API \u5BC6\u94A5\u672A\u914D\u7F6E",
|
|
308
|
+
"friendlyError.configApiKey.description": "\u9700\u8981\u8BBE\u7F6E API \u5BC6\u94A5\u624D\u80FD\u4F7F\u7528\u6B64\u529F\u80FD\u3002",
|
|
309
|
+
"friendlyError.configApiKey.suggestion1": "\u4F7F\u7528 /config \u547D\u4EE4\u8BBE\u7F6E API \u5BC6\u94A5",
|
|
310
|
+
"friendlyError.configApiKey.suggestion2": "\u4ECE\u670D\u52A1\u63D0\u4F9B\u5546\u83B7\u53D6\u6709\u6548\u7684 API \u5BC6\u94A5",
|
|
311
|
+
// Model & AI - 模型与 AI
|
|
312
|
+
"friendlyError.modelUnavailable.title": "\u6A21\u578B\u4E0D\u53EF\u7528",
|
|
313
|
+
"friendlyError.modelUnavailable.description": "\u8BF7\u6C42\u7684 AI \u6A21\u578B\u5F53\u524D\u4E0D\u53EF\u7528\u3002\u5B83\u53EF\u80FD\u6B63\u5728\u7EF4\u62A4\u6216\u5DF2\u4E0B\u7EBF\u3002",
|
|
314
|
+
"friendlyError.modelUnavailable.suggestion1": "\u5C1D\u8BD5\u4F7F\u7528\u5176\u4ED6\u53EF\u7528\u6A21\u578B",
|
|
315
|
+
"friendlyError.modelUnavailable.suggestion2": "\u7A0D\u540E\u91CD\u8BD5",
|
|
316
|
+
"friendlyError.modelUnavailable.suggestion3": "\u68C0\u67E5\u6A21\u578B\u540D\u79F0\u662F\u5426\u6B63\u786E",
|
|
317
|
+
"friendlyError.modelContextLength.title": "\u5185\u5BB9\u8FC7\u957F",
|
|
318
|
+
"friendlyError.modelContextLength.description": "\u60A8\u7684\u5BF9\u8BDD\u6216\u8F93\u5165\u8D85\u51FA\u4E86\u6A21\u578B\u7684\u5904\u7406\u80FD\u529B\u3002",
|
|
319
|
+
"friendlyError.modelContextLength.suggestion1": "\u7F29\u77ED\u60A8\u7684\u8F93\u5165",
|
|
320
|
+
"friendlyError.modelContextLength.suggestion2": "\u4F7F\u7528 /compact \u547D\u4EE4\u538B\u7F29\u5BF9\u8BDD\u5386\u53F2",
|
|
321
|
+
"friendlyError.modelContentFilter.title": "\u5185\u5BB9\u88AB\u8FC7\u6EE4",
|
|
322
|
+
"friendlyError.modelContentFilter.description": "\u60A8\u7684\u8BF7\u6C42\u89E6\u53D1\u4E86\u5185\u5BB9\u5B89\u5168\u8FC7\u6EE4\u5668\u3002",
|
|
323
|
+
"friendlyError.modelContentFilter.suggestion1": "\u4FEE\u6539\u60A8\u7684\u8BF7\u6C42\u5185\u5BB9",
|
|
324
|
+
"friendlyError.modelContentFilter.suggestion2": "\u907F\u514D\u654F\u611F\u6216\u4E0D\u5F53\u5185\u5BB9",
|
|
325
|
+
// System - 系统
|
|
326
|
+
"friendlyError.systemMemory.title": "\u5185\u5B58\u4E0D\u8DB3",
|
|
327
|
+
"friendlyError.systemMemory.description": "\u7CFB\u7EDF\u53EF\u7528\u5185\u5B58\u4E0D\u8DB3\u4EE5\u5B8C\u6210\u6B64\u64CD\u4F5C\u3002",
|
|
328
|
+
"friendlyError.systemMemory.suggestion1": "\u5173\u95ED\u4E00\u4E9B\u4E0D\u9700\u8981\u7684\u5E94\u7528\u7A0B\u5E8F",
|
|
329
|
+
"friendlyError.systemMemory.suggestion2": "\u91CD\u542F\u5E94\u7528\u7A0B\u5E8F",
|
|
330
|
+
"friendlyError.systemMemory.suggestion3": "\u5C1D\u8BD5\u5904\u7406\u8F83\u5C0F\u7684\u4EFB\u52A1",
|
|
331
|
+
"friendlyError.systemProcess.title": "\u8FDB\u7A0B\u9519\u8BEF",
|
|
332
|
+
"friendlyError.systemProcess.description": "\u6267\u884C\u547D\u4EE4\u65F6\u9047\u5230\u7CFB\u7EDF\u7EA7\u9519\u8BEF\u3002",
|
|
333
|
+
"friendlyError.systemProcess.suggestion1": "\u68C0\u67E5\u547D\u4EE4\u662F\u5426\u6B63\u786E",
|
|
334
|
+
"friendlyError.systemProcess.suggestion2": "\u786E\u8BA4\u6240\u9700\u7684\u7A0B\u5E8F\u5DF2\u5B89\u88C5",
|
|
335
|
+
// Unknown - 未知
|
|
336
|
+
"friendlyError.unknown.title": "\u53D1\u751F\u672A\u77E5\u9519\u8BEF",
|
|
337
|
+
"friendlyError.unknown.description": "\u53D1\u751F\u4E86\u610F\u5916\u9519\u8BEF\u3002\u6211\u4EEC\u4F1A\u8BB0\u5F55\u6B64\u95EE\u9898\u4EE5\u5E2E\u52A9\u6539\u8FDB\u3002",
|
|
338
|
+
"friendlyError.unknown.suggestion1": "\u91CD\u8BD5\u64CD\u4F5C",
|
|
339
|
+
"friendlyError.unknown.suggestion2": "\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458",
|
|
340
|
+
// Error display format - 错误显示格式
|
|
341
|
+
"friendlyError.suggestionLabel": "\u5EFA\u8BAE",
|
|
342
|
+
"friendlyError.errorIdLabel": "\u9519\u8BEF ID",
|
|
343
|
+
"friendlyError.technicalDetailsLabel": "\u6280\u672F\u8BE6\u60C5"
|
|
344
|
+
};
|
|
345
|
+
export {
|
|
346
|
+
zhCN
|
|
347
|
+
};
|
|
348
|
+
//# sourceMappingURL=zh-CN.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/i18n/locales/zh-CN.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Simplified Chinese Locale\n *\n * \u7B80\u4F53\u4E2D\u6587\u8BED\u8A00\u5305\n */\n\nimport type { Translations } from '../types'\n\nexport const zhCN: Translations = {\n // Common - \u901A\u7528\n 'common.yes': '\u662F',\n 'common.no': '\u5426',\n 'common.ok': '\u786E\u5B9A',\n 'common.cancel': '\u53D6\u6D88',\n 'common.confirm': '\u786E\u8BA4',\n 'common.save': '\u4FDD\u5B58',\n 'common.delete': '\u5220\u9664',\n 'common.edit': '\u7F16\u8F91',\n 'common.create': '\u521B\u5EFA',\n 'common.loading': '\u52A0\u8F7D\u4E2D...',\n 'common.error': '\u9519\u8BEF',\n 'common.success': '\u6210\u529F',\n 'common.warning': '\u8B66\u544A',\n 'common.info': '\u4FE1\u606F',\n 'common.unknown': '\u672A\u77E5',\n 'common.none': '\u65E0',\n 'common.all': '\u5168\u90E8',\n 'common.selected': '\u5DF2\u9009\u62E9',\n 'common.default': '\u9ED8\u8BA4',\n 'common.custom': '\u81EA\u5B9A\u4E49',\n 'common.enabled': '\u5DF2\u542F\u7528',\n 'common.disabled': '\u5DF2\u7981\u7528',\n 'common.connected': '\u5DF2\u8FDE\u63A5',\n 'common.disconnected': '\u5DF2\u65AD\u5F00',\n 'common.pending': '\u7B49\u5F85\u4E2D',\n 'common.completed': '\u5DF2\u5B8C\u6210',\n 'common.failed': '\u5931\u8D25',\n 'common.inProgress': '\u8FDB\u884C\u4E2D',\n 'common.version': '\u7248\u672C',\n 'common.help': '\u5E2E\u52A9',\n 'common.quit': '\u9000\u51FA',\n 'common.back': '\u8FD4\u56DE',\n 'common.next': '\u4E0B\u4E00\u6B65',\n 'common.previous': '\u4E0A\u4E00\u6B65',\n 'common.search': '\u641C\u7D22',\n 'common.filter': '\u7B5B\u9009',\n 'common.sort': '\u6392\u5E8F',\n 'common.refresh': '\u5237\u65B0',\n 'common.retry': '\u91CD\u8BD5',\n 'common.skip': '\u8DF3\u8FC7',\n 'common.continue': '\u7EE7\u7EED',\n 'common.abort': '\u4E2D\u6B62',\n 'common.reset': '\u91CD\u7F6E',\n 'common.clear': '\u6E05\u9664',\n 'common.copy': '\u590D\u5236',\n 'common.paste': '\u7C98\u8D34',\n 'common.select': '\u9009\u62E9',\n 'common.deselect': '\u53D6\u6D88\u9009\u62E9',\n 'common.selectAll': '\u5168\u9009',\n 'common.deselectAll': '\u53D6\u6D88\u5168\u9009',\n\n // UI - Verbose mode - \u8BE6\u7EC6\u6A21\u5F0F\n 'ui.verbose.on': '\u8BE6\u7EC6\u6A21\u5F0F: \u5F00',\n 'ui.verbose.off': '\u8BE6\u7EC6\u6A21\u5F0F: \u5173',\n 'ui.verbose.label': '\u8BE6\u7EC6\u6A21\u5F0F',\n 'ui.verbose.hint': '\u6309 Ctrl+O \u5207\u6362\u8BE6\u7EC6\u6A21\u5F0F',\n // Deprecated - \u4FDD\u7559\u7528\u4E8E\u5411\u540E\u517C\u5BB9\n 'ui.displayMode.minimal': '\u8BE6\u7EC6\u6A21\u5F0F: \u5173',\n 'ui.displayMode.compact': '\u8BE6\u7EC6\u6A21\u5F0F: \u5173',\n 'ui.displayMode.detailed': '\u8BE6\u7EC6\u6A21\u5F0F: \u5F00',\n 'ui.displayMode.label': '\u8BE6\u7EC6\u6A21\u5F0F',\n 'ui.displayMode.hint': '\u6309 Ctrl+O \u5207\u6362\u8BE6\u7EC6\u6A21\u5F0F',\n\n // UI - Input - \u8F93\u5165\n 'ui.input.placeholder': '\u8F93\u5165\u95EE\u9898\u6216\u8F93\u5165 / \u67E5\u770B\u547D\u4EE4...',\n 'ui.input.thinking': '\u601D\u8003\u4E2D',\n 'ui.input.processing': '\u5904\u7406\u4E2D',\n 'ui.input.waiting': '\u7B49\u5F85\u54CD\u5E94...',\n 'ui.input.multilineHint': 'Shift+Enter \u6362\u884C',\n 'ui.input.submitHint': 'Enter \u63D0\u4EA4',\n\n // UI - Panels - \u9762\u677F\n 'ui.panel.todo': '\u5F85\u529E',\n 'ui.panel.tasks': '\u4EFB\u52A1',\n 'ui.panel.agents': '\u667A\u80FD\u4F53',\n 'ui.panel.models': '\u6A21\u578B',\n 'ui.panel.help': '\u5E2E\u52A9',\n 'ui.panel.history': '\u5386\u53F2',\n 'ui.panel.settings': '\u8BBE\u7F6E',\n\n // UI - Status - \u72B6\u6001\n 'ui.status.ready': '\u5C31\u7EEA',\n 'ui.status.busy': '\u5FD9\u788C',\n 'ui.status.error': '\u9519\u8BEF',\n 'ui.status.offline': '\u79BB\u7EBF',\n 'ui.status.connecting': '\u8FDE\u63A5\u4E2D...',\n 'ui.status.streaming': '\u6D41\u5F0F\u8F93\u51FA\u4E2D',\n\n // UI - Welcome - \u6B22\u8FCE\n 'ui.welcome.title': '\u6B22\u8FCE\u4F7F\u7528 Minto\uFF01',\n 'ui.welcome.subtitle': '',\n 'ui.welcome.quickStart': '\u5FEB\u901F\u5F00\u59CB',\n 'ui.welcome.tip1': '\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u60A8\u7684\u7814\u7A76\u6216\u5206\u6790\u9700\u6C42',\n 'ui.welcome.tip2': '\u9700\u6C42\u8D8A\u5177\u4F53\uFF0C\u7ED3\u679C\u8D8A\u7CBE\u51C6',\n 'ui.welcome.tip3': '\u8F93\u5165 /help \u67E5\u770B\u6240\u6709\u53EF\u7528\u547D\u4EE4',\n 'ui.welcome.tip4': '',\n 'ui.welcome.cwd': '\u5DE5\u4F5C\u76EE\u5F55',\n 'ui.welcome.mcpServers': 'MCP \u670D\u52A1\u5668',\n\n // UI - Hotkeys - \u5FEB\u6377\u952E\n 'ui.hotkey.submit': '\u63D0\u4EA4',\n 'ui.hotkey.newline': '\u6362\u884C',\n 'ui.hotkey.cancel': '\u53D6\u6D88',\n 'ui.hotkey.toggleMode': '\u5207\u6362\u663E\u793A\u6A21\u5F0F',\n 'ui.hotkey.help': '\u5E2E\u52A9',\n 'ui.hotkey.quit': '\u9000\u51FA',\n 'ui.hotkey.history': '\u5386\u53F2',\n 'ui.hotkey.clear': '\u6E05\u5C4F',\n 'ui.hotkey.interrupt': '\u4E2D\u65AD',\n\n // UI - Hotkey hints (context-aware) - \u5FEB\u6377\u952E\u63D0\u793A\n 'ui.hints.command': '\u547D\u4EE4',\n 'ui.hints.bash': 'Bash',\n 'ui.hints.send': '\u53D1\u9001',\n 'ui.hints.complete': '\u8865\u5168',\n 'ui.hints.rollback': '\u56DE\u6EDA',\n 'ui.hints.select': '\u9009\u62E9',\n 'ui.hints.confirm': '\u786E\u8BA4',\n 'ui.hints.close': '\u5173\u95ED',\n 'ui.hints.browse': '\u6D4F\u89C8',\n 'ui.hints.execute': '\u6267\u884C',\n 'ui.hints.completeCommand': '\u8865\u5168\u547D\u4EE4',\n 'ui.hints.shortcuts': '\u5FEB\u6377\u952E',\n 'ui.hints.pressEsc': '\u6309 Esc \u5173\u95ED',\n 'ui.hints.tip': '\u8F93\u5165 /help \u67E5\u770B\u5B8C\u6574\u547D\u4EE4\u5217\u8868',\n\n // Commands - \u547D\u4EE4\n 'commands.help.description': '\u663E\u793A\u5E2E\u52A9\u4FE1\u606F',\n 'commands.clear.description': '\u6E05\u9664\u5C4F\u5E55',\n 'commands.compact.description': '\u538B\u7F29\u5BF9\u8BDD\u4E0A\u4E0B\u6587',\n 'commands.compact.success': '\u4E0A\u4E0B\u6587\u538B\u7F29\u6210\u529F',\n 'commands.compact.noMessages': '\u6CA1\u6709\u6D88\u606F\u9700\u8981\u538B\u7F29',\n 'commands.model.description': '\u9009\u62E9\u6216\u5207\u6362 AI \u6A21\u578B',\n 'commands.model.current': '\u5F53\u524D\u6A21\u578B',\n 'commands.model.switched': '\u5DF2\u5207\u6362\u5230\u6A21\u578B',\n 'commands.model.notFound': '\u672A\u627E\u5230\u6A21\u578B',\n 'commands.agents.description': '\u7BA1\u7406\u548C\u67E5\u770B\u667A\u80FD\u4F53',\n 'commands.agents.title': '\u53EF\u7528\u667A\u80FD\u4F53',\n 'commands.agents.empty': '\u6CA1\u6709\u53EF\u7528\u7684\u667A\u80FD\u4F53',\n 'commands.agents.loaded': '\u4E2A\u667A\u80FD\u4F53\u5DF2\u52A0\u8F7D',\n 'commands.tasks.description': '\u67E5\u770B\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1',\n 'commands.config.description': '\u7BA1\u7406\u914D\u7F6E',\n 'commands.bug.description': '\u62A5\u544A\u95EE\u9898',\n 'commands.doctor.description': '\u68C0\u67E5\u7CFB\u7EDF\u5065\u5EB7',\n 'commands.status.description': '\u663E\u793A\u7CFB\u7EDF\u72B6\u6001',\n 'commands.permissions.description': '\u7BA1\u7406\u6743\u9650',\n 'commands.mcp.description': '\u7BA1\u7406 MCP \u670D\u52A1\u5668',\n 'commands.plugin.description': '\u7BA1\u7406\u63D2\u4EF6',\n 'commands.sandbox.description': '\u914D\u7F6E\u6C99\u7BB1\u6A21\u5F0F',\n 'commands.thinking.description': '\u5207\u6362\u601D\u8003\u6A21\u5F0F',\n 'commands.thinking.enabled': '\u601D\u8003\u6A21\u5F0F\u5DF2\u542F\u7528',\n 'commands.thinking.disabled': '\u601D\u8003\u6A21\u5F0F\u5DF2\u7981\u7528',\n\n // Tools - \u5DE5\u5177\n 'tools.bash.description': '\u6267\u884C Shell \u547D\u4EE4',\n 'tools.bash.executing': '\u6267\u884C\u4E2D',\n 'tools.bash.completed': '\u547D\u4EE4\u5B8C\u6210',\n 'tools.bash.failed': '\u547D\u4EE4\u5931\u8D25',\n 'tools.read.description': '\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9',\n 'tools.read.reading': '\u8BFB\u53D6\u4E2D',\n 'tools.write.description': '\u5199\u5165\u6587\u4EF6\u5185\u5BB9',\n 'tools.write.writing': '\u5199\u5165\u4E2D',\n 'tools.write.created': '\u5DF2\u521B\u5EFA',\n 'tools.write.updated': '\u5DF2\u66F4\u65B0',\n 'tools.edit.description': '\u7F16\u8F91\u6587\u4EF6\u5185\u5BB9',\n 'tools.edit.editing': '\u7F16\u8F91\u4E2D',\n 'tools.glob.description': '\u6309\u6A21\u5F0F\u67E5\u627E\u6587\u4EF6',\n 'tools.grep.description': '\u641C\u7D22\u6587\u4EF6\u5185\u5BB9',\n 'tools.task.description': '\u542F\u52A8\u5B50\u667A\u80FD\u4F53\u4EFB\u52A1',\n 'tools.task.spawning': '\u6B63\u5728\u542F\u52A8\u4EFB\u52A1',\n 'tools.task.running': '\u4EFB\u52A1\u8FD0\u884C\u4E2D',\n 'tools.task.completed': '\u4EFB\u52A1\u5B8C\u6210',\n 'tools.todo.description': '\u7BA1\u7406\u5F85\u529E\u4E8B\u9879',\n\n // Errors - \u9519\u8BEF\n 'errors.generic': '\u53D1\u751F\u9519\u8BEF',\n 'errors.network': '\u7F51\u7EDC\u9519\u8BEF',\n 'errors.timeout': '\u8BF7\u6C42\u8D85\u65F6',\n 'errors.auth': '\u8BA4\u8BC1\u5931\u8D25',\n 'errors.rateLimit': '\u8BF7\u6C42\u9891\u7387\u8D85\u9650',\n 'errors.modelNotFound': '\u672A\u627E\u5230\u6A21\u578B',\n 'errors.apiKeyMissing': '\u7F3A\u5C11 API \u5BC6\u94A5',\n 'errors.apiKeyInvalid': 'API \u5BC6\u94A5\u65E0\u6548',\n 'errors.permissionDenied': '\u6743\u9650\u88AB\u62D2\u7EDD',\n 'errors.fileNotFound': '\u6587\u4EF6\u672A\u627E\u5230',\n 'errors.fileReadError': '\u8BFB\u53D6\u6587\u4EF6\u9519\u8BEF',\n 'errors.fileWriteError': '\u5199\u5165\u6587\u4EF6\u9519\u8BEF',\n 'errors.configError': '\u914D\u7F6E\u9519\u8BEF',\n 'errors.parseError': '\u89E3\u6790\u9519\u8BEF',\n 'errors.validationError': '\u9A8C\u8BC1\u9519\u8BEF',\n 'errors.aborted': '\u64CD\u4F5C\u5DF2\u4E2D\u6B62',\n 'errors.contextTooLong': '\u4E0A\u4E0B\u6587\u8FC7\u957F',\n 'errors.serverError': '\u670D\u52A1\u5668\u9519\u8BEF',\n 'errors.connectionFailed': '\u8FDE\u63A5\u5931\u8D25',\n\n // Help - \u5E2E\u52A9\n 'help.title': 'Minto \u5E2E\u52A9',\n 'help.usage': '\u7528\u6CD5',\n 'help.commands': '\u547D\u4EE4',\n 'help.options': '\u9009\u9879',\n 'help.examples': '\u793A\u4F8B',\n 'help.moreInfo': '\u66F4\u591A\u4FE1\u606F',\n 'help.reportBug': '\u62A5\u544A\u95EE\u9898',\n 'help.documentation': '\u6587\u6863',\n\n // Status messages - \u72B6\u6001\u6D88\u606F\n 'status.modelLoaded': '\u6A21\u578B\u5DF2\u52A0\u8F7D',\n 'status.contextCompressed': '\u4E0A\u4E0B\u6587\u5DF2\u538B\u7F29',\n 'status.tokensUsed': '\u5DF2\u4F7F\u7528\u4EE4\u724C',\n 'status.costEstimate': '\u9884\u4F30\u8D39\u7528',\n 'status.apiLatency': 'API \u5EF6\u8FDF',\n 'status.streaming': '\u6D41\u5F0F\u54CD\u5E94\u4E2D',\n 'status.thinking': '\u601D\u8003\u4E2D',\n 'status.toolUse': '\u4F7F\u7528\u5DE5\u5177',\n 'status.subagent': '\u8FD0\u884C\u5B50\u667A\u80FD\u4F53',\n\n // Prompts - \u63D0\u793A\n 'prompts.confirmDelete': '\u786E\u5B9A\u8981\u5220\u9664\u5417\uFF1F',\n 'prompts.confirmOverwrite': '\u6587\u4EF6\u5DF2\u5B58\u5728\uFF0C\u662F\u5426\u8986\u76D6\uFF1F',\n 'prompts.confirmExecute': '\u662F\u5426\u6267\u884C\u6B64\u547D\u4EE4\uFF1F',\n 'prompts.enterApiKey': '\u8BF7\u8F93\u5165 API \u5BC6\u94A5',\n 'prompts.selectModel': '\u8BF7\u9009\u62E9\u6A21\u578B',\n 'prompts.selectLanguage': '\u8BF7\u9009\u62E9\u8BED\u8A00',\n\n // Agent/Subagent - \u667A\u80FD\u4F53/\u5B50\u667A\u80FD\u4F53\n 'agent.spawning': '\u6B63\u5728\u542F\u52A8\u667A\u80FD\u4F53',\n 'agent.running': '\u667A\u80FD\u4F53\u8FD0\u884C\u4E2D',\n 'agent.completed': '\u667A\u80FD\u4F53\u5DF2\u5B8C\u6210',\n 'agent.failed': '\u667A\u80FD\u4F53\u5931\u8D25',\n 'agent.cancelled': '\u667A\u80FD\u4F53\u5DF2\u53D6\u6D88',\n 'agent.waiting': '\u7B49\u5F85\u4E2D',\n 'agent.thinking': '\u601D\u8003\u4E2D',\n\n // Model - \u6A21\u578B\n 'model.selecting': '\u6B63\u5728\u9009\u62E9\u6A21\u578B',\n 'model.selected': '\u6A21\u578B\u5DF2\u9009\u62E9',\n 'model.unavailable': '\u6A21\u578B\u4E0D\u53EF\u7528',\n 'model.switching': '\u6B63\u5728\u5207\u6362\u6A21\u578B',\n 'model.switched': '\u6A21\u578B\u5DF2\u5207\u6362',\n 'model.default': '\u9ED8\u8BA4\u6A21\u578B',\n 'model.custom': '\u81EA\u5B9A\u4E49\u6A21\u578B',\n\n // Permissions - \u6743\u9650\n 'permission.required': '\u9700\u8981\u6743\u9650',\n 'permission.granted': '\u6743\u9650\u5DF2\u6388\u4E88',\n 'permission.denied': '\u6743\u9650\u88AB\u62D2\u7EDD',\n 'permission.allowOnce': '\u5141\u8BB8\u4E00\u6B21',\n 'permission.allowAlways': '\u59CB\u7EC8\u5141\u8BB8',\n 'permission.denyOnce': '\u62D2\u7EDD\u4E00\u6B21',\n 'permission.denyAlways': '\u59CB\u7EC8\u62D2\u7EDD',\n 'permission.sensitiveFile': '\u654F\u611F\u6587\u4EF6\u8BBF\u95EE',\n 'permission.externalPath': '\u5916\u90E8\u8DEF\u5F84\u8BBF\u95EE',\n 'permission.dangerousCommand': '\u5371\u9669\u547D\u4EE4',\n\n // User-Friendly Error Messages - \u7528\u6237\u53CB\u597D\u9519\u8BEF\u6D88\u606F\n // Network & Connectivity - \u7F51\u7EDC\u4E0E\u8FDE\u63A5\n 'friendlyError.networkConnection.title': '\u7F51\u7EDC\u8FDE\u63A5\u95EE\u9898',\n 'friendlyError.networkConnection.description':\n '\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u95EE\u9898\u6216\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528\u3002',\n 'friendlyError.networkConnection.suggestion1': '\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5',\n 'friendlyError.networkConnection.suggestion2': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.networkConnection.suggestion3': '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458',\n\n 'friendlyError.networkTimeout.title': '\u8BF7\u6C42\u8D85\u65F6',\n 'friendlyError.networkTimeout.description':\n '\u670D\u52A1\u5668\u54CD\u5E94\u65F6\u95F4\u8FC7\u957F\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u7F13\u6162\u6216\u670D\u52A1\u7E41\u5FD9\u3002',\n 'friendlyError.networkTimeout.suggestion1': '\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5\u901F\u5EA6',\n 'friendlyError.networkTimeout.suggestion2': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.networkTimeout.suggestion3': '\u5C1D\u8BD5\u66F4\u7B80\u77ED\u7684\u8BF7\u6C42',\n\n 'friendlyError.networkDns.title': 'DNS \u89E3\u6790\u5931\u8D25',\n 'friendlyError.networkDns.description':\n '\u65E0\u6CD5\u627E\u5230\u670D\u52A1\u5668\u5730\u5740\u3002\u8FD9\u53EF\u80FD\u662F DNS \u914D\u7F6E\u95EE\u9898\u6216\u670D\u52A1\u5730\u5740\u66F4\u6539\u3002',\n 'friendlyError.networkDns.suggestion1': '\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8BBE\u7F6E',\n 'friendlyError.networkDns.suggestion2': '\u5C1D\u8BD5\u4F7F\u7528\u5176\u4ED6 DNS \u670D\u52A1\u5668',\n 'friendlyError.networkDns.suggestion3': '\u8054\u7CFB\u7F51\u7EDC\u7BA1\u7406\u5458',\n\n // API & Service - API \u4E0E\u670D\u52A1\n 'friendlyError.apiRateLimit.title': '\u8BF7\u6C42\u9891\u7387\u8D85\u9650',\n 'friendlyError.apiRateLimit.description':\n '\u60A8\u7684\u8BF7\u6C42\u592A\u9891\u7E41\u4E86\u3002\u670D\u52A1\u9700\u8981\u77ED\u6682\u4F11\u606F\u6765\u5904\u7406\u60A8\u7684\u8BF7\u6C42\u3002',\n 'friendlyError.apiRateLimit.suggestion1': '\u7B49\u5F85\u51E0\u5206\u949F\u540E\u91CD\u8BD5',\n 'friendlyError.apiRateLimit.suggestion2': '\u51CF\u5C11\u8BF7\u6C42\u9891\u7387',\n 'friendlyError.apiRateLimit.suggestion3': '\u8003\u8651\u5347\u7EA7\u5230\u66F4\u9AD8\u7684\u670D\u52A1\u7EA7\u522B',\n\n 'friendlyError.apiAuth.title': '\u8BA4\u8BC1\u5931\u8D25',\n 'friendlyError.apiAuth.description':\n '\u65E0\u6CD5\u9A8C\u8BC1\u60A8\u7684\u8EAB\u4EFD\u3002\u8FD9\u53EF\u80FD\u662F API \u5BC6\u94A5\u65E0\u6548\u6216\u5DF2\u8FC7\u671F\u3002',\n 'friendlyError.apiAuth.suggestion1': '\u68C0\u67E5\u60A8\u7684 API \u5BC6\u94A5\u662F\u5426\u6B63\u786E',\n 'friendlyError.apiAuth.suggestion2': '\u786E\u8BA4 API \u5BC6\u94A5\u672A\u8FC7\u671F',\n 'friendlyError.apiAuth.suggestion3': '\u91CD\u65B0\u751F\u6210\u65B0\u7684 API \u5BC6\u94A5',\n\n 'friendlyError.apiQuota.title': '\u914D\u989D\u5DF2\u7528\u5C3D',\n 'friendlyError.apiQuota.description':\n '\u60A8\u7684 API \u4F7F\u7528\u914D\u989D\u5DF2\u8017\u5C3D\u3002\u9700\u8981\u7B49\u5F85\u914D\u989D\u91CD\u7F6E\u6216\u5347\u7EA7\u8D26\u6237\u3002',\n 'friendlyError.apiQuota.suggestion1': '\u68C0\u67E5\u60A8\u7684\u8D26\u6237\u7528\u91CF',\n 'friendlyError.apiQuota.suggestion2': '\u7B49\u5F85\u914D\u989D\u91CD\u7F6E\uFF08\u901A\u5E38\u6BCF\u6708\u91CD\u7F6E\uFF09',\n 'friendlyError.apiQuota.suggestion3': '\u8003\u8651\u5347\u7EA7\u60A8\u7684\u8BA2\u9605\u8BA1\u5212',\n\n 'friendlyError.apiServerError.title': '\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF',\n 'friendlyError.apiServerError.description':\n 'AI \u670D\u52A1\u9047\u5230\u4E86\u5185\u90E8\u95EE\u9898\u3002\u8FD9\u901A\u5E38\u662F\u4E34\u65F6\u6027\u7684\u3002',\n 'friendlyError.apiServerError.suggestion1': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.apiServerError.suggestion2':\n '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u68C0\u67E5\u670D\u52A1\u72B6\u6001\u9875\u9762',\n\n 'friendlyError.apiInvalidResponse.title': '\u65E0\u6548\u7684\u54CD\u5E94',\n 'friendlyError.apiInvalidResponse.description':\n '\u670D\u52A1\u5668\u8FD4\u56DE\u4E86\u65E0\u6CD5\u7406\u89E3\u7684\u54CD\u5E94\u3002\u8FD9\u53EF\u80FD\u662F\u6682\u65F6\u6027\u7684\u670D\u52A1\u95EE\u9898\u3002',\n 'friendlyError.apiInvalidResponse.suggestion1': '\u91CD\u8BD5\u8BF7\u6C42',\n 'friendlyError.apiInvalidResponse.suggestion2':\n '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458',\n\n // File & Storage - \u6587\u4EF6\u4E0E\u5B58\u50A8\n 'friendlyError.fileNotFound.title': '\u6587\u4EF6\u672A\u627E\u5230',\n 'friendlyError.fileNotFound.description':\n '\u65E0\u6CD5\u627E\u5230\u6307\u5B9A\u7684\u6587\u4EF6\u3002\u5B83\u53EF\u80FD\u5DF2\u88AB\u79FB\u52A8\u3001\u5220\u9664\u6216\u8DEF\u5F84\u4E0D\u6B63\u786E\u3002',\n 'friendlyError.fileNotFound.suggestion1': '\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u786E',\n 'friendlyError.fileNotFound.suggestion2': '\u786E\u8BA4\u6587\u4EF6\u662F\u5426\u5B58\u5728',\n\n 'friendlyError.filePermission.title': '\u6587\u4EF6\u6743\u9650\u9519\u8BEF',\n 'friendlyError.filePermission.description':\n '\u6CA1\u6709\u8DB3\u591F\u7684\u6743\u9650\u8BBF\u95EE\u6B64\u6587\u4EF6\u6216\u76EE\u5F55\u3002',\n 'friendlyError.filePermission.suggestion1': '\u68C0\u67E5\u6587\u4EF6\u6743\u9650\u8BBE\u7F6E',\n 'friendlyError.filePermission.suggestion2': '\u5C1D\u8BD5\u4EE5\u7BA1\u7406\u5458\u6743\u9650\u8FD0\u884C',\n\n 'friendlyError.fileTooLarge.title': '\u6587\u4EF6\u8FC7\u5927',\n 'friendlyError.fileTooLarge.description': '\u6587\u4EF6\u5927\u5C0F\u8D85\u51FA\u4E86\u5904\u7406\u9650\u5236\u3002',\n 'friendlyError.fileTooLarge.suggestion1': '\u5C1D\u8BD5\u5904\u7406\u8F83\u5C0F\u7684\u6587\u4EF6',\n 'friendlyError.fileTooLarge.suggestion2': '\u5C06\u5927\u6587\u4EF6\u5206\u5272\u6210\u5C0F\u5757',\n\n 'friendlyError.fileEncoding.title': '\u6587\u4EF6\u7F16\u7801\u95EE\u9898',\n 'friendlyError.fileEncoding.description':\n '\u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9\u3002\u53EF\u80FD\u662F\u6587\u4EF6\u7F16\u7801\u4E0D\u517C\u5BB9\u6216\u6587\u4EF6\u5DF2\u635F\u574F\u3002',\n 'friendlyError.fileEncoding.suggestion1': '\u68C0\u67E5\u6587\u4EF6\u7F16\u7801\u683C\u5F0F',\n 'friendlyError.fileEncoding.suggestion2': '\u5C1D\u8BD5\u5C06\u6587\u4EF6\u8F6C\u6362\u4E3A UTF-8 \u7F16\u7801',\n\n // Configuration - \u914D\u7F6E\n 'friendlyError.configMissing.title': '\u914D\u7F6E\u6587\u4EF6\u7F3A\u5931',\n 'friendlyError.configMissing.description':\n '\u627E\u4E0D\u5230\u5FC5\u9700\u7684\u914D\u7F6E\u6587\u4EF6\u3002\u8FD9\u53EF\u80FD\u662F\u9996\u6B21\u8FD0\u884C\u6216\u914D\u7F6E\u88AB\u610F\u5916\u5220\u9664\u3002',\n 'friendlyError.configMissing.suggestion1': '\u8FD0\u884C\u521D\u59CB\u8BBE\u7F6E\u5411\u5BFC',\n 'friendlyError.configMissing.suggestion2': '\u624B\u52A8\u521B\u5EFA\u914D\u7F6E\u6587\u4EF6',\n\n 'friendlyError.configInvalid.title': '\u914D\u7F6E\u683C\u5F0F\u9519\u8BEF',\n 'friendlyError.configInvalid.description':\n '\u914D\u7F6E\u6587\u4EF6\u5305\u542B\u65E0\u6548\u7684\u5185\u5BB9\u3002\u8FD9\u53EF\u80FD\u662F\u7F16\u8F91\u65F6\u5F15\u5165\u7684\u8BED\u6CD5\u9519\u8BEF\u3002',\n 'friendlyError.configInvalid.suggestion1': '\u68C0\u67E5\u914D\u7F6E\u6587\u4EF6\u683C\u5F0F',\n 'friendlyError.configInvalid.suggestion2': '\u6062\u590D\u9ED8\u8BA4\u914D\u7F6E',\n\n 'friendlyError.configApiKey.title': 'API \u5BC6\u94A5\u672A\u914D\u7F6E',\n 'friendlyError.configApiKey.description': '\u9700\u8981\u8BBE\u7F6E API \u5BC6\u94A5\u624D\u80FD\u4F7F\u7528\u6B64\u529F\u80FD\u3002',\n 'friendlyError.configApiKey.suggestion1': '\u4F7F\u7528 /config \u547D\u4EE4\u8BBE\u7F6E API \u5BC6\u94A5',\n 'friendlyError.configApiKey.suggestion2': '\u4ECE\u670D\u52A1\u63D0\u4F9B\u5546\u83B7\u53D6\u6709\u6548\u7684 API \u5BC6\u94A5',\n\n // Model & AI - \u6A21\u578B\u4E0E AI\n 'friendlyError.modelUnavailable.title': '\u6A21\u578B\u4E0D\u53EF\u7528',\n 'friendlyError.modelUnavailable.description':\n '\u8BF7\u6C42\u7684 AI \u6A21\u578B\u5F53\u524D\u4E0D\u53EF\u7528\u3002\u5B83\u53EF\u80FD\u6B63\u5728\u7EF4\u62A4\u6216\u5DF2\u4E0B\u7EBF\u3002',\n 'friendlyError.modelUnavailable.suggestion1': '\u5C1D\u8BD5\u4F7F\u7528\u5176\u4ED6\u53EF\u7528\u6A21\u578B',\n 'friendlyError.modelUnavailable.suggestion2': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.modelUnavailable.suggestion3': '\u68C0\u67E5\u6A21\u578B\u540D\u79F0\u662F\u5426\u6B63\u786E',\n\n 'friendlyError.modelContextLength.title': '\u5185\u5BB9\u8FC7\u957F',\n 'friendlyError.modelContextLength.description':\n '\u60A8\u7684\u5BF9\u8BDD\u6216\u8F93\u5165\u8D85\u51FA\u4E86\u6A21\u578B\u7684\u5904\u7406\u80FD\u529B\u3002',\n 'friendlyError.modelContextLength.suggestion1': '\u7F29\u77ED\u60A8\u7684\u8F93\u5165',\n 'friendlyError.modelContextLength.suggestion2':\n '\u4F7F\u7528 /compact \u547D\u4EE4\u538B\u7F29\u5BF9\u8BDD\u5386\u53F2',\n\n 'friendlyError.modelContentFilter.title': '\u5185\u5BB9\u88AB\u8FC7\u6EE4',\n 'friendlyError.modelContentFilter.description':\n '\u60A8\u7684\u8BF7\u6C42\u89E6\u53D1\u4E86\u5185\u5BB9\u5B89\u5168\u8FC7\u6EE4\u5668\u3002',\n 'friendlyError.modelContentFilter.suggestion1': '\u4FEE\u6539\u60A8\u7684\u8BF7\u6C42\u5185\u5BB9',\n 'friendlyError.modelContentFilter.suggestion2': '\u907F\u514D\u654F\u611F\u6216\u4E0D\u5F53\u5185\u5BB9',\n\n // System - \u7CFB\u7EDF\n 'friendlyError.systemMemory.title': '\u5185\u5B58\u4E0D\u8DB3',\n 'friendlyError.systemMemory.description': '\u7CFB\u7EDF\u53EF\u7528\u5185\u5B58\u4E0D\u8DB3\u4EE5\u5B8C\u6210\u6B64\u64CD\u4F5C\u3002',\n 'friendlyError.systemMemory.suggestion1': '\u5173\u95ED\u4E00\u4E9B\u4E0D\u9700\u8981\u7684\u5E94\u7528\u7A0B\u5E8F',\n 'friendlyError.systemMemory.suggestion2': '\u91CD\u542F\u5E94\u7528\u7A0B\u5E8F',\n 'friendlyError.systemMemory.suggestion3': '\u5C1D\u8BD5\u5904\u7406\u8F83\u5C0F\u7684\u4EFB\u52A1',\n\n 'friendlyError.systemProcess.title': '\u8FDB\u7A0B\u9519\u8BEF',\n 'friendlyError.systemProcess.description': '\u6267\u884C\u547D\u4EE4\u65F6\u9047\u5230\u7CFB\u7EDF\u7EA7\u9519\u8BEF\u3002',\n 'friendlyError.systemProcess.suggestion1': '\u68C0\u67E5\u547D\u4EE4\u662F\u5426\u6B63\u786E',\n 'friendlyError.systemProcess.suggestion2': '\u786E\u8BA4\u6240\u9700\u7684\u7A0B\u5E8F\u5DF2\u5B89\u88C5',\n\n // Unknown - \u672A\u77E5\n 'friendlyError.unknown.title': '\u53D1\u751F\u672A\u77E5\u9519\u8BEF',\n 'friendlyError.unknown.description':\n '\u53D1\u751F\u4E86\u610F\u5916\u9519\u8BEF\u3002\u6211\u4EEC\u4F1A\u8BB0\u5F55\u6B64\u95EE\u9898\u4EE5\u5E2E\u52A9\u6539\u8FDB\u3002',\n 'friendlyError.unknown.suggestion1': '\u91CD\u8BD5\u64CD\u4F5C',\n 'friendlyError.unknown.suggestion2': '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458',\n\n // Error display format - \u9519\u8BEF\u663E\u793A\u683C\u5F0F\n 'friendlyError.suggestionLabel': '\u5EFA\u8BAE',\n 'friendlyError.errorIdLabel': '\u9519\u8BEF ID',\n 'friendlyError.technicalDetailsLabel': '\u6280\u672F\u8BE6\u60C5',\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/i18n/types.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * i18n Type Definitions\n *\n * Type-safe internationalization system for Minto CLI.\n */\n\n/**\n * Supported languages\n */\nexport type Language = 'en' | 'zh-CN'\n\n/**\n * Language display names\n */\nexport const LANGUAGE_NAMES: Record<Language, string> = {\n en: 'English',\n 'zh-CN': '\u7B80\u4F53\u4E2D\u6587',\n}\n\n/**\n * Translation namespace keys\n */\nexport type TranslationNamespace =\n | 'common'\n | 'ui'\n | 'commands'\n | 'tools'\n | 'errors'\n | 'help'\n | 'status'\n | 'prompts'\n\n/**\n * Translation key structure for type safety\n */\nexport interface TranslationKeys {\n // Common\n 'common.yes': string\n 'common.no': string\n 'common.ok': string\n 'common.cancel': string\n 'common.confirm': string\n 'common.save': string\n 'common.delete': string\n 'common.edit': string\n 'common.create': string\n 'common.loading': string\n 'common.error': string\n 'common.success': string\n 'common.warning': string\n 'common.info': string\n 'common.unknown': string\n 'common.none': string\n 'common.all': string\n 'common.selected': string\n 'common.default': string\n 'common.custom': string\n 'common.enabled': string\n 'common.disabled': string\n 'common.connected': string\n 'common.disconnected': string\n 'common.pending': string\n 'common.completed': string\n 'common.failed': string\n 'common.inProgress': string\n 'common.version': string\n 'common.help': string\n 'common.quit': string\n 'common.back': string\n 'common.next': string\n 'common.previous': string\n 'common.search': string\n 'common.filter': string\n 'common.sort': string\n 'common.refresh': string\n 'common.retry': string\n 'common.skip': string\n 'common.continue': string\n 'common.abort': string\n 'common.reset': string\n 'common.clear': string\n 'common.copy': string\n 'common.paste': string\n 'common.select': string\n 'common.deselect': string\n 'common.selectAll': string\n 'common.deselectAll': string\n\n // UI - Verbose mode\n 'ui.verbose.on': string\n 'ui.verbose.off': string\n 'ui.verbose.label': string\n 'ui.verbose.hint': string\n // Deprecated - kept for backward compatibility\n 'ui.displayMode.minimal': string\n 'ui.displayMode.compact': string\n 'ui.displayMode.detailed': string\n 'ui.displayMode.label': string\n 'ui.displayMode.hint': string\n\n // UI - Input\n 'ui.input.placeholder': string\n 'ui.input.thinking': string\n 'ui.input.processing': string\n 'ui.input.waiting': string\n 'ui.input.multilineHint': string\n 'ui.input.submitHint': string\n\n // UI - Panels\n 'ui.panel.todo': string\n 'ui.panel.tasks': string\n 'ui.panel.agents': string\n 'ui.panel.models': string\n 'ui.panel.help': string\n 'ui.panel.history': string\n 'ui.panel.settings': string\n\n // UI - Status\n 'ui.status.ready': string\n 'ui.status.busy': string\n 'ui.status.error': string\n 'ui.status.offline': string\n 'ui.status.connecting': string\n 'ui.status.streaming': string\n\n // UI - Welcome\n 'ui.welcome.title': string\n 'ui.welcome.subtitle': string\n 'ui.welcome.quickStart': string\n 'ui.welcome.tip1': string\n 'ui.welcome.tip2': string\n 'ui.welcome.tip3': string\n 'ui.welcome.tip4': string\n 'ui.welcome.cwd': string\n 'ui.welcome.mcpServers': string\n\n // UI - Hotkeys\n 'ui.hotkey.submit': string\n 'ui.hotkey.newline': string\n 'ui.hotkey.cancel': string\n 'ui.hotkey.toggleMode': string\n 'ui.hotkey.help': string\n 'ui.hotkey.quit': string\n 'ui.hotkey.history': string\n 'ui.hotkey.clear': string\n 'ui.hotkey.interrupt': string\n\n // UI - Hotkey hints (context-aware)\n 'ui.hints.command': string\n 'ui.hints.bash': string\n 'ui.hints.send': string\n 'ui.hints.complete': string\n 'ui.hints.rollback': string\n 'ui.hints.select': string\n 'ui.hints.confirm': string\n 'ui.hints.close': string\n 'ui.hints.browse': string\n 'ui.hints.execute': string\n 'ui.hints.completeCommand': string\n 'ui.hints.shortcuts': string\n 'ui.hints.pressEsc': string\n 'ui.hints.tip': string\n\n // Commands\n 'commands.help.description': string\n 'commands.clear.description': string\n 'commands.compact.description': string\n 'commands.compact.success': string\n 'commands.compact.noMessages': string\n 'commands.model.description': string\n 'commands.model.current': string\n 'commands.model.switched': string\n 'commands.model.notFound': string\n 'commands.agents.description': string\n 'commands.agents.title': string\n 'commands.agents.empty': string\n 'commands.agents.loaded': string\n 'commands.tasks.description': string\n 'commands.config.description': string\n 'commands.bug.description': string\n 'commands.doctor.description': string\n 'commands.status.description': string\n 'commands.permissions.description': string\n 'commands.mcp.description': string\n 'commands.plugin.description': string\n 'commands.sandbox.description': string\n 'commands.thinking.description': string\n 'commands.thinking.enabled': string\n 'commands.thinking.disabled': string\n\n // Tools\n 'tools.bash.description': string\n 'tools.bash.executing': string\n 'tools.bash.completed': string\n 'tools.bash.failed': string\n 'tools.read.description': string\n 'tools.read.reading': string\n 'tools.write.description': string\n 'tools.write.writing': string\n 'tools.write.created': string\n 'tools.write.updated': string\n 'tools.edit.description': string\n 'tools.edit.editing': string\n 'tools.glob.description': string\n 'tools.grep.description': string\n 'tools.task.description': string\n 'tools.task.spawning': string\n 'tools.task.running': string\n 'tools.task.completed': string\n 'tools.todo.description': string\n\n // Errors\n 'errors.generic': string\n 'errors.network': string\n 'errors.timeout': string\n 'errors.auth': string\n 'errors.rateLimit': string\n 'errors.modelNotFound': string\n 'errors.apiKeyMissing': string\n 'errors.apiKeyInvalid': string\n 'errors.permissionDenied': string\n 'errors.fileNotFound': string\n 'errors.fileReadError': string\n 'errors.fileWriteError': string\n 'errors.configError': string\n 'errors.parseError': string\n 'errors.validationError': string\n 'errors.aborted': string\n 'errors.contextTooLong': string\n 'errors.serverError': string\n 'errors.connectionFailed': string\n\n // Help\n 'help.title': string\n 'help.usage': string\n 'help.commands': string\n 'help.options': string\n 'help.examples': string\n 'help.moreInfo': string\n 'help.reportBug': string\n 'help.documentation': string\n\n // Status messages\n 'status.modelLoaded': string\n 'status.contextCompressed': string\n 'status.tokensUsed': string\n 'status.costEstimate': string\n 'status.apiLatency': string\n 'status.streaming': string\n 'status.thinking': string\n 'status.toolUse': string\n 'status.subagent': string\n\n // Prompts\n 'prompts.confirmDelete': string\n 'prompts.confirmOverwrite': string\n 'prompts.confirmExecute': string\n 'prompts.enterApiKey': string\n 'prompts.selectModel': string\n 'prompts.selectLanguage': string\n\n // Agent/Subagent\n 'agent.spawning': string\n 'agent.running': string\n 'agent.completed': string\n 'agent.failed': string\n 'agent.cancelled': string\n 'agent.waiting': string\n 'agent.thinking': string\n\n // Model\n 'model.selecting': string\n 'model.selected': string\n 'model.unavailable': string\n 'model.switching': string\n 'model.switched': string\n 'model.default': string\n 'model.custom': string\n\n // Permissions\n 'permission.required': string\n 'permission.granted': string\n 'permission.denied': string\n 'permission.allowOnce': string\n 'permission.allowAlways': string\n 'permission.denyOnce': string\n 'permission.denyAlways': string\n 'permission.sensitiveFile': string\n 'permission.externalPath': string\n 'permission.dangerousCommand': string\n\n // User-Friendly Error Messages\n // Network & Connectivity\n 'friendlyError.networkConnection.title': string\n 'friendlyError.networkConnection.description': string\n 'friendlyError.networkConnection.suggestion1': string\n 'friendlyError.networkConnection.suggestion2': string\n 'friendlyError.networkConnection.suggestion3': string\n\n 'friendlyError.networkTimeout.title': string\n 'friendlyError.networkTimeout.description': string\n 'friendlyError.networkTimeout.suggestion1': string\n 'friendlyError.networkTimeout.suggestion2': string\n 'friendlyError.networkTimeout.suggestion3': string\n\n 'friendlyError.networkDns.title': string\n 'friendlyError.networkDns.description': string\n 'friendlyError.networkDns.suggestion1': string\n 'friendlyError.networkDns.suggestion2': string\n 'friendlyError.networkDns.suggestion3': string\n\n // API & Service\n 'friendlyError.apiRateLimit.title': string\n 'friendlyError.apiRateLimit.description': string\n 'friendlyError.apiRateLimit.suggestion1': string\n 'friendlyError.apiRateLimit.suggestion2': string\n 'friendlyError.apiRateLimit.suggestion3': string\n\n 'friendlyError.apiAuth.title': string\n 'friendlyError.apiAuth.description': string\n 'friendlyError.apiAuth.suggestion1': string\n 'friendlyError.apiAuth.suggestion2': string\n 'friendlyError.apiAuth.suggestion3': string\n\n 'friendlyError.apiQuota.title': string\n 'friendlyError.apiQuota.description': string\n 'friendlyError.apiQuota.suggestion1': string\n 'friendlyError.apiQuota.suggestion2': string\n 'friendlyError.apiQuota.suggestion3': string\n\n 'friendlyError.apiServerError.title': string\n 'friendlyError.apiServerError.description': string\n 'friendlyError.apiServerError.suggestion1': string\n 'friendlyError.apiServerError.suggestion2': string\n\n 'friendlyError.apiInvalidResponse.title': string\n 'friendlyError.apiInvalidResponse.description': string\n 'friendlyError.apiInvalidResponse.suggestion1': string\n 'friendlyError.apiInvalidResponse.suggestion2': string\n\n // File & Storage\n 'friendlyError.fileNotFound.title': string\n 'friendlyError.fileNotFound.description': string\n 'friendlyError.fileNotFound.suggestion1': string\n 'friendlyError.fileNotFound.suggestion2': string\n\n 'friendlyError.filePermission.title': string\n 'friendlyError.filePermission.description': string\n 'friendlyError.filePermission.suggestion1': string\n 'friendlyError.filePermission.suggestion2': string\n\n 'friendlyError.fileTooLarge.title': string\n 'friendlyError.fileTooLarge.description': string\n 'friendlyError.fileTooLarge.suggestion1': string\n 'friendlyError.fileTooLarge.suggestion2': string\n\n 'friendlyError.fileEncoding.title': string\n 'friendlyError.fileEncoding.description': string\n 'friendlyError.fileEncoding.suggestion1': string\n 'friendlyError.fileEncoding.suggestion2': string\n\n // Configuration\n 'friendlyError.configMissing.title': string\n 'friendlyError.configMissing.description': string\n 'friendlyError.configMissing.suggestion1': string\n 'friendlyError.configMissing.suggestion2': string\n\n 'friendlyError.configInvalid.title': string\n 'friendlyError.configInvalid.description': string\n 'friendlyError.configInvalid.suggestion1': string\n 'friendlyError.configInvalid.suggestion2': string\n\n 'friendlyError.configApiKey.title': string\n 'friendlyError.configApiKey.description': string\n 'friendlyError.configApiKey.suggestion1': string\n 'friendlyError.configApiKey.suggestion2': string\n\n // Model & AI\n 'friendlyError.modelUnavailable.title': string\n 'friendlyError.modelUnavailable.description': string\n 'friendlyError.modelUnavailable.suggestion1': string\n 'friendlyError.modelUnavailable.suggestion2': string\n 'friendlyError.modelUnavailable.suggestion3': string\n\n 'friendlyError.modelContextLength.title': string\n 'friendlyError.modelContextLength.description': string\n 'friendlyError.modelContextLength.suggestion1': string\n 'friendlyError.modelContextLength.suggestion2': string\n\n 'friendlyError.modelContentFilter.title': string\n 'friendlyError.modelContentFilter.description': string\n 'friendlyError.modelContentFilter.suggestion1': string\n 'friendlyError.modelContentFilter.suggestion2': string\n\n // System\n 'friendlyError.systemMemory.title': string\n 'friendlyError.systemMemory.description': string\n 'friendlyError.systemMemory.suggestion1': string\n 'friendlyError.systemMemory.suggestion2': string\n 'friendlyError.systemMemory.suggestion3': string\n\n 'friendlyError.systemProcess.title': string\n 'friendlyError.systemProcess.description': string\n 'friendlyError.systemProcess.suggestion1': string\n 'friendlyError.systemProcess.suggestion2': string\n\n // Unknown\n 'friendlyError.unknown.title': string\n 'friendlyError.unknown.description': string\n 'friendlyError.unknown.suggestion1': string\n 'friendlyError.unknown.suggestion2': string\n\n // Error display format\n 'friendlyError.suggestionLabel': string\n 'friendlyError.errorIdLabel': string\n 'friendlyError.technicalDetailsLabel': string\n}\n\n/**\n * Full translation object type\n */\nexport type Translations = TranslationKeys\n\n/**\n * Translation key type (string union of all keys)\n */\nexport type TranslationKey = keyof TranslationKeys\n\n/**\n * Partial translations for extending\n */\nexport type PartialTranslations = Partial<TranslationKeys>\n"],
|
|
5
|
+
"mappings": "AAcO,MAAM,iBAA2C;AAAA,EACtD,IAAI;AAAA,EACJ,SAAS;AACX;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/permissions.js
CHANGED
|
@@ -12,6 +12,9 @@ import { logError } from "./utils/log.js";
|
|
|
12
12
|
import { grantWritePermissionForOriginalDir } from "./utils/permissions/filesystem.js";
|
|
13
13
|
import { getCwd } from "./utils/state.js";
|
|
14
14
|
import { PRODUCT_NAME } from "./constants/product.js";
|
|
15
|
+
import {
|
|
16
|
+
getToolRiskLevel
|
|
17
|
+
} from "./utils/toolRiskClassification.js";
|
|
15
18
|
const SAFE_COMMANDS = /* @__PURE__ */ new Set([
|
|
16
19
|
"git status",
|
|
17
20
|
"git diff",
|
|
@@ -105,8 +108,32 @@ const bashToolHasPermission = async (tool, command, context, allowedTools, getCo
|
|
|
105
108
|
message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`
|
|
106
109
|
};
|
|
107
110
|
};
|
|
111
|
+
function getEffectiveSafetyMode(options) {
|
|
112
|
+
if (options.safetyMode) {
|
|
113
|
+
return options.safetyMode;
|
|
114
|
+
}
|
|
115
|
+
if (options.safeMode === true) {
|
|
116
|
+
return "strict";
|
|
117
|
+
}
|
|
118
|
+
return "yolo";
|
|
119
|
+
}
|
|
120
|
+
function shouldAllowByRiskLevel(safetyMode, riskLevel) {
|
|
121
|
+
switch (safetyMode) {
|
|
122
|
+
case "yolo":
|
|
123
|
+
return true;
|
|
124
|
+
case "smart":
|
|
125
|
+
return riskLevel === "safe" || riskLevel === "monitored";
|
|
126
|
+
case "strict":
|
|
127
|
+
return riskLevel === "safe";
|
|
128
|
+
}
|
|
129
|
+
}
|
|
108
130
|
const hasPermissionsToUseTool = async (tool, input, context, _assistantMessage) => {
|
|
109
|
-
|
|
131
|
+
const safetyMode = getEffectiveSafetyMode(context.options);
|
|
132
|
+
const riskLevel = getToolRiskLevel(
|
|
133
|
+
tool.name,
|
|
134
|
+
input
|
|
135
|
+
);
|
|
136
|
+
if (shouldAllowByRiskLevel(safetyMode, riskLevel)) {
|
|
110
137
|
return { result: true };
|
|
111
138
|
}
|
|
112
139
|
if (context.abortController.signal.aborted) {
|
package/dist/permissions.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/permissions.ts"],
|
|
4
|
-
"sourcesContent": ["import type { CanUseToolFn } from './hooks/useCanUseTool'\nimport { Tool, ToolUseContext } from './Tool'\nimport { BashTool, inputSchema } from './tools/BashTool/BashTool'\nimport { FileEditTool } from './tools/FileEditTool/FileEditTool'\nimport { FileWriteTool } from './tools/FileWriteTool/FileWriteTool'\nimport { NotebookEditTool } from './tools/NotebookEditTool/NotebookEditTool'\nimport { getCommandSubcommandPrefix, splitCommand } from './utils/commands'\nimport {\n getCurrentProjectConfig,\n saveCurrentProjectConfig,\n} from '@utils/config'\nimport { AbortError } from './utils/errors'\nimport { logError } from './utils/log'\nimport { grantWritePermissionForOriginalDir } from './utils/permissions/filesystem'\nimport { getCwd } from './utils/state'\nimport { PRODUCT_NAME } from './constants/product'\n\n// Commands that are known to be safe for execution\nconst SAFE_COMMANDS = new Set([\n 'git status',\n 'git diff',\n 'git log',\n 'git branch',\n 'pwd',\n 'tree',\n 'date',\n 'which',\n])\n\nexport const bashToolCommandHasExactMatchPermission = (\n tool: Tool,\n command: string,\n allowedTools: string[],\n): boolean => {\n if (SAFE_COMMANDS.has(command)) {\n return true\n }\n // Check exact match first\n if (allowedTools.includes(getPermissionKey(tool, { command }, null))) {\n return true\n }\n // Check if command is an exact match with an approved prefix\n if (allowedTools.includes(getPermissionKey(tool, { command }, command))) {\n return true\n }\n return false\n}\n\nexport const bashToolCommandHasPermission = (\n tool: Tool,\n command: string,\n prefix: string | null,\n allowedTools: string[],\n): boolean => {\n // Check exact match first\n if (bashToolCommandHasExactMatchPermission(tool, command, allowedTools)) {\n return true\n }\n return allowedTools.includes(getPermissionKey(tool, { command }, prefix))\n}\n\nexport const bashToolHasPermission = async (\n tool: Tool,\n command: string,\n context: ToolUseContext,\n allowedTools: string[],\n getCommandSubcommandPrefixFn = getCommandSubcommandPrefix,\n): Promise<PermissionResult> => {\n if (bashToolCommandHasExactMatchPermission(tool, command, allowedTools)) {\n // This is an exact match for a command that is allowed, so we can skip the prefix check\n return { result: true }\n }\n\n const subCommands = splitCommand(command).filter(_ => {\n // Denim likes to add this, we strip it out so we don't need to prompt the user each time\n if (_ === `cd ${getCwd()}`) {\n return false\n }\n return true\n })\n const commandSubcommandPrefix = await getCommandSubcommandPrefixFn(\n command,\n context.abortController.signal,\n )\n if (context.abortController.signal.aborted) {\n throw new AbortError()\n }\n\n if (commandSubcommandPrefix === null) {\n // Fail closed and ask for user approval if the command prefix query failed (e.g. due to network error)\n // This is NOT the same as `fullCommandPrefix.commandPrefix === null`, which means no prefix was detected\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n\n if (commandSubcommandPrefix.commandInjectionDetected) {\n // Only allow exact matches for potential command injections\n if (bashToolCommandHasExactMatchPermission(tool, command, allowedTools)) {\n return { result: true }\n } else {\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n }\n\n // After the commandInjectionDetected check above, TypeScript still sees the union type.\n // We know commandInjectionDetected is false here, so commandPrefix exists.\n // Use 'in' check for proper type narrowing\n const commandPrefix =\n 'commandPrefix' in commandSubcommandPrefix\n ? commandSubcommandPrefix.commandPrefix\n : null\n\n // If there is only one command, no need to process subCommands\n if (subCommands.length < 2) {\n if (\n bashToolCommandHasPermission(tool, command, commandPrefix, allowedTools)\n ) {\n return { result: true }\n } else {\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n }\n if (\n subCommands.every(subCommand => {\n const prefixResult =\n commandSubcommandPrefix.subcommandPrefixes.get(subCommand)\n if (prefixResult === undefined || prefixResult.commandInjectionDetected) {\n // If prefix result is missing or command injection is detected, always ask for permission\n return false\n }\n // After the check above, we know commandInjectionDetected is false\n // Use 'in' check for proper type narrowing\n const subCommandPrefix =\n 'commandPrefix' in prefixResult ? prefixResult.commandPrefix : null\n const hasPermission = bashToolCommandHasPermission(\n tool,\n subCommand,\n subCommandPrefix,\n allowedTools,\n )\n return hasPermission\n })\n ) {\n return { result: true }\n }\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n}\n\ntype PermissionResult = { result: true } | { result: false; message: string }\n\nexport const hasPermissionsToUseTool: CanUseToolFn = async (\n tool,\n input,\n context,\n _assistantMessage,\n): Promise<PermissionResult> => {\n // If safe mode is not enabled, allow all tools (permissive by default)\n if (!context.options.safeMode) {\n return { result: true }\n }\n\n if (context.abortController.signal.aborted) {\n throw new AbortError()\n }\n\n // Check if the tool needs permissions\n try {\n if (!tool.needsPermissions(input as never)) {\n return { result: true }\n }\n } catch (e) {\n logError(`Error checking permissions: ${e}`)\n return { result: false, message: 'Error checking permissions' }\n }\n\n const projectConfig = getCurrentProjectConfig()\n const allowedTools = projectConfig.allowedTools ?? []\n // Special case for BashTool to allow blanket commands without exposing them in the UI\n if (tool === BashTool && allowedTools.includes(BashTool.name)) {\n return { result: true }\n }\n\n // TODO: Move this into tool definitions (done for read tools!)\n switch (tool) {\n // For bash tool, check each sub-command's permissions separately\n case BashTool: {\n // The types have already been validated by the tool,\n // so we can safely parse the input (as opposed to safeParse).\n const { command } = inputSchema.parse(input)\n return await bashToolHasPermission(tool, command, context, allowedTools)\n }\n // For file editing tools, check session-only permissions\n case FileEditTool:\n case FileWriteTool:\n case NotebookEditTool: {\n // The types have already been validated by the tool,\n // so we can safely pass this in\n if (!tool.needsPermissions(input)) {\n return { result: true }\n }\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n // For other tools, check persistent permissions\n default: {\n const permissionKey = getPermissionKey(tool, input, null)\n if (allowedTools.includes(permissionKey)) {\n return { result: true }\n }\n\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n }\n}\n\nexport async function savePermission(\n tool: Tool,\n input: { [k: string]: unknown },\n prefix: string | null,\n): Promise<void> {\n const key = getPermissionKey(tool, input, prefix)\n\n // For file editing tools, store write permissions only in memory\n if (\n tool === FileEditTool ||\n tool === FileWriteTool ||\n tool === NotebookEditTool\n ) {\n grantWritePermissionForOriginalDir()\n return\n }\n\n // For other tools, store permissions on disk\n const projectConfig = getCurrentProjectConfig()\n if (projectConfig.allowedTools.includes(key)) {\n return\n }\n\n projectConfig.allowedTools.push(key)\n projectConfig.allowedTools.sort()\n\n saveCurrentProjectConfig(projectConfig)\n}\n\nfunction getPermissionKey(\n tool: Tool,\n input: { [k: string]: unknown },\n prefix: string | null,\n): string {\n switch (tool) {\n case BashTool:\n if (prefix) {\n return `${BashTool.name}(${prefix}:*)`\n }\n return `${BashTool.name}(${BashTool.renderToolUseMessage(input as never)})`\n default:\n return tool.name\n }\n}\n"],
|
|
5
|
-
"mappings": "AAEA,SAAS,UAAU,mBAAmB;AACtC,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,wBAAwB;AACjC,SAAS,4BAA4B,oBAAoB;AACzD;AAAA,EACE;AAAA,EACA;AAAA,
|
|
4
|
+
"sourcesContent": ["import type { CanUseToolFn } from './hooks/useCanUseTool'\nimport { Tool, ToolUseContext } from './Tool'\nimport { BashTool, inputSchema } from './tools/BashTool/BashTool'\nimport { FileEditTool } from './tools/FileEditTool/FileEditTool'\nimport { FileWriteTool } from './tools/FileWriteTool/FileWriteTool'\nimport { NotebookEditTool } from './tools/NotebookEditTool/NotebookEditTool'\nimport { getCommandSubcommandPrefix, splitCommand } from './utils/commands'\nimport {\n getCurrentProjectConfig,\n saveCurrentProjectConfig,\n type SafetyMode,\n} from '@utils/config'\nimport { AbortError } from './utils/errors'\nimport { logError } from './utils/log'\nimport { grantWritePermissionForOriginalDir } from './utils/permissions/filesystem'\nimport { getCwd } from './utils/state'\nimport { PRODUCT_NAME } from './constants/product'\nimport {\n getToolRiskLevel,\n type RiskLevel,\n} from './utils/toolRiskClassification'\n\n// Commands that are known to be safe for execution\nconst SAFE_COMMANDS = new Set([\n 'git status',\n 'git diff',\n 'git log',\n 'git branch',\n 'pwd',\n 'tree',\n 'date',\n 'which',\n])\n\nexport const bashToolCommandHasExactMatchPermission = (\n tool: Tool,\n command: string,\n allowedTools: string[],\n): boolean => {\n if (SAFE_COMMANDS.has(command)) {\n return true\n }\n // Check exact match first\n if (allowedTools.includes(getPermissionKey(tool, { command }, null))) {\n return true\n }\n // Check if command is an exact match with an approved prefix\n if (allowedTools.includes(getPermissionKey(tool, { command }, command))) {\n return true\n }\n return false\n}\n\nexport const bashToolCommandHasPermission = (\n tool: Tool,\n command: string,\n prefix: string | null,\n allowedTools: string[],\n): boolean => {\n // Check exact match first\n if (bashToolCommandHasExactMatchPermission(tool, command, allowedTools)) {\n return true\n }\n return allowedTools.includes(getPermissionKey(tool, { command }, prefix))\n}\n\nexport const bashToolHasPermission = async (\n tool: Tool,\n command: string,\n context: ToolUseContext,\n allowedTools: string[],\n getCommandSubcommandPrefixFn = getCommandSubcommandPrefix,\n): Promise<PermissionResult> => {\n if (bashToolCommandHasExactMatchPermission(tool, command, allowedTools)) {\n // This is an exact match for a command that is allowed, so we can skip the prefix check\n return { result: true }\n }\n\n const subCommands = splitCommand(command).filter(_ => {\n // Denim likes to add this, we strip it out so we don't need to prompt the user each time\n if (_ === `cd ${getCwd()}`) {\n return false\n }\n return true\n })\n const commandSubcommandPrefix = await getCommandSubcommandPrefixFn(\n command,\n context.abortController.signal,\n )\n if (context.abortController.signal.aborted) {\n throw new AbortError()\n }\n\n if (commandSubcommandPrefix === null) {\n // Fail closed and ask for user approval if the command prefix query failed (e.g. due to network error)\n // This is NOT the same as `fullCommandPrefix.commandPrefix === null`, which means no prefix was detected\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n\n if (commandSubcommandPrefix.commandInjectionDetected) {\n // Only allow exact matches for potential command injections\n if (bashToolCommandHasExactMatchPermission(tool, command, allowedTools)) {\n return { result: true }\n } else {\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n }\n\n // After the commandInjectionDetected check above, TypeScript still sees the union type.\n // We know commandInjectionDetected is false here, so commandPrefix exists.\n // Use 'in' check for proper type narrowing\n const commandPrefix =\n 'commandPrefix' in commandSubcommandPrefix\n ? commandSubcommandPrefix.commandPrefix\n : null\n\n // If there is only one command, no need to process subCommands\n if (subCommands.length < 2) {\n if (\n bashToolCommandHasPermission(tool, command, commandPrefix, allowedTools)\n ) {\n return { result: true }\n } else {\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n }\n if (\n subCommands.every(subCommand => {\n const prefixResult =\n commandSubcommandPrefix.subcommandPrefixes.get(subCommand)\n if (prefixResult === undefined || prefixResult.commandInjectionDetected) {\n // If prefix result is missing or command injection is detected, always ask for permission\n return false\n }\n // After the check above, we know commandInjectionDetected is false\n // Use 'in' check for proper type narrowing\n const subCommandPrefix =\n 'commandPrefix' in prefixResult ? prefixResult.commandPrefix : null\n const hasPermission = bashToolCommandHasPermission(\n tool,\n subCommand,\n subCommandPrefix,\n allowedTools,\n )\n return hasPermission\n })\n ) {\n return { result: true }\n }\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n}\n\ntype PermissionResult = { result: true } | { result: false; message: string }\n\n/**\n * Get effective safety mode from context options\n * Handles backward compatibility with legacy safeMode boolean\n */\nfunction getEffectiveSafetyMode(options: {\n safeMode?: boolean\n safetyMode?: SafetyMode\n}): SafetyMode {\n // New safetyMode takes precedence\n if (options.safetyMode) {\n return options.safetyMode\n }\n // Backward compatibility: convert legacy safeMode boolean\n // safeMode: true \u2192 'strict' (old behavior)\n // safeMode: false \u2192 'yolo' (permissive)\n if (options.safeMode === true) {\n return 'strict'\n }\n // Default to 'yolo' for non-technical users (zero interruption)\n return 'yolo'\n}\n\n/**\n * Check if a tool should be allowed based on safety mode and risk level\n *\n * Safety Mode Matrix:\n * | Mode | Safe Tools | Monitored Tools | Dangerous Tools |\n * |--------|------------|-----------------|-----------------|\n * | yolo | \u2713 allow | \u2713 allow | \u2713 allow |\n * | smart | \u2713 allow | \u2713 allow | \u26A0 ask |\n * | strict | \u2713 allow | \u26A0 ask | \u26A0 ask |\n */\nfunction shouldAllowByRiskLevel(\n safetyMode: SafetyMode,\n riskLevel: RiskLevel,\n): boolean {\n switch (safetyMode) {\n case 'yolo':\n // YOLO mode: allow everything\n return true\n case 'smart':\n // Smart mode: allow safe and monitored, ask for dangerous\n return riskLevel === 'safe' || riskLevel === 'monitored'\n case 'strict':\n // Strict mode: only allow safe tools\n return riskLevel === 'safe'\n }\n}\n\nexport const hasPermissionsToUseTool: CanUseToolFn = async (\n tool,\n input,\n context,\n _assistantMessage,\n): Promise<PermissionResult> => {\n const safetyMode = getEffectiveSafetyMode(context.options)\n\n // Get risk level for this tool (with command-specific classification for Bash)\n const riskLevel = getToolRiskLevel(\n tool.name,\n input as { command?: string } | undefined,\n )\n\n // Check if this tool should be auto-allowed based on safety mode and risk level\n if (shouldAllowByRiskLevel(safetyMode, riskLevel)) {\n return { result: true }\n }\n\n if (context.abortController.signal.aborted) {\n throw new AbortError()\n }\n\n // Check if the tool needs permissions\n try {\n if (!tool.needsPermissions(input as never)) {\n return { result: true }\n }\n } catch (e) {\n logError(`Error checking permissions: ${e}`)\n return { result: false, message: 'Error checking permissions' }\n }\n\n const projectConfig = getCurrentProjectConfig()\n const allowedTools = projectConfig.allowedTools ?? []\n // Special case for BashTool to allow blanket commands without exposing them in the UI\n if (tool === BashTool && allowedTools.includes(BashTool.name)) {\n return { result: true }\n }\n\n // TODO: Move this into tool definitions (done for read tools!)\n switch (tool) {\n // For bash tool, check each sub-command's permissions separately\n case BashTool: {\n // The types have already been validated by the tool,\n // so we can safely parse the input (as opposed to safeParse).\n const { command } = inputSchema.parse(input)\n return await bashToolHasPermission(tool, command, context, allowedTools)\n }\n // For file editing tools, check session-only permissions\n case FileEditTool:\n case FileWriteTool:\n case NotebookEditTool: {\n // The types have already been validated by the tool,\n // so we can safely pass this in\n if (!tool.needsPermissions(input)) {\n return { result: true }\n }\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n // For other tools, check persistent permissions\n default: {\n const permissionKey = getPermissionKey(tool, input, null)\n if (allowedTools.includes(permissionKey)) {\n return { result: true }\n }\n\n return {\n result: false,\n message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`,\n }\n }\n }\n}\n\nexport async function savePermission(\n tool: Tool,\n input: { [k: string]: unknown },\n prefix: string | null,\n): Promise<void> {\n const key = getPermissionKey(tool, input, prefix)\n\n // For file editing tools, store write permissions only in memory\n if (\n tool === FileEditTool ||\n tool === FileWriteTool ||\n tool === NotebookEditTool\n ) {\n grantWritePermissionForOriginalDir()\n return\n }\n\n // For other tools, store permissions on disk\n const projectConfig = getCurrentProjectConfig()\n if (projectConfig.allowedTools.includes(key)) {\n return\n }\n\n projectConfig.allowedTools.push(key)\n projectConfig.allowedTools.sort()\n\n saveCurrentProjectConfig(projectConfig)\n}\n\nfunction getPermissionKey(\n tool: Tool,\n input: { [k: string]: unknown },\n prefix: string | null,\n): string {\n switch (tool) {\n case BashTool:\n if (prefix) {\n return `${BashTool.name}(${prefix}:*)`\n }\n return `${BashTool.name}(${BashTool.renderToolUseMessage(input as never)})`\n default:\n return tool.name\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|