@within-7/minto 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Tool.js +7 -0
- package/dist/Tool.js.map +2 -2
- package/dist/commands/agents/AgentsCommand.js +1 -1
- package/dist/commands/agents/AgentsCommand.js.map +2 -2
- package/dist/commands/agents/constants.js +2 -2
- package/dist/commands/agents/constants.js.map +2 -2
- package/dist/commands/clear.js +4 -3
- package/dist/commands/clear.js.map +2 -2
- package/dist/commands/compact.js +2 -2
- package/dist/commands/compact.js.map +1 -1
- package/dist/commands/context.js +3 -1
- package/dist/commands/context.js.map +2 -2
- package/dist/commands/login.js +128 -0
- package/dist/commands/login.js.map +7 -0
- package/dist/commands/memory.js +33 -82
- package/dist/commands/memory.js.map +2 -2
- package/dist/commands/quit.js +3 -1
- package/dist/commands/quit.js.map +2 -2
- package/dist/commands/resume.js +39 -239
- package/dist/commands/resume.js.map +2 -2
- package/dist/commands/tasks.js +1 -1
- package/dist/commands/tasks.js.map +2 -2
- package/dist/commands/terminalSetup.js +6 -2
- package/dist/commands/terminalSetup.js.map +2 -2
- package/dist/commands.js +2 -0
- package/dist/commands.js.map +2 -2
- package/dist/components/AgentDetailView.js +126 -0
- package/dist/components/AgentDetailView.js.map +7 -0
- package/dist/components/AgentThinkingBlock.js +1 -1
- package/dist/components/AgentThinkingBlock.js.map +2 -2
- package/dist/components/AgentViewBanner.js +22 -0
- package/dist/components/AgentViewBanner.js.map +7 -0
- package/dist/components/HeaderBar.js +1 -1
- package/dist/components/HeaderBar.js.map +2 -2
- package/dist/components/Help.js +8 -1
- package/dist/components/Help.js.map +2 -2
- package/dist/components/HotkeyHelpPanel.js +26 -8
- package/dist/components/HotkeyHelpPanel.js.map +2 -2
- package/dist/components/IdleNotificationBar.js +10 -0
- package/dist/components/IdleNotificationBar.js.map +7 -0
- package/dist/components/ModelSelector/ModelSelector.js +55 -20
- package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
- package/dist/components/PromptInput.js +186 -115
- package/dist/components/PromptInput.js.map +2 -2
- package/dist/components/RewindPanel.js +272 -0
- package/dist/components/RewindPanel.js.map +7 -0
- package/dist/components/Spinner.js +10 -21
- package/dist/components/Spinner.js.map +2 -2
- package/dist/components/StreamingTextPreview.js +29 -0
- package/dist/components/StreamingTextPreview.js.map +7 -0
- package/dist/components/SubagentBlock.js +3 -2
- package/dist/components/SubagentBlock.js.map +2 -2
- package/dist/components/SubagentProgress.js +4 -4
- package/dist/components/SubagentProgress.js.map +2 -2
- package/dist/components/TabbedListView/SearchInput.js +1 -1
- package/dist/components/TabbedListView/SearchInput.js.map +2 -2
- package/dist/components/TabbedListView/TabbedListView.js +87 -41
- package/dist/components/TabbedListView/TabbedListView.js.map +2 -2
- package/dist/components/TaskCard.js +4 -4
- package/dist/components/TaskCard.js.map +2 -2
- package/dist/components/TeamMemberPanel.js +107 -0
- package/dist/components/TeamMemberPanel.js.map +7 -0
- package/dist/components/ThinkingSelector.js +84 -0
- package/dist/components/ThinkingSelector.js.map +7 -0
- package/dist/components/TitledDivider.js +26 -0
- package/dist/components/TitledDivider.js.map +7 -0
- package/dist/components/TodoPanel.js +31 -30
- package/dist/components/TodoPanel.js.map +2 -2
- package/dist/components/TokenWarning.js +28 -7
- package/dist/components/TokenWarning.js.map +2 -2
- package/dist/components/messages/AssistantTextMessage.js +5 -2
- package/dist/components/messages/AssistantTextMessage.js.map +2 -2
- package/dist/components/messages/AssistantToolUseMessage.js +9 -1
- package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
- package/dist/components/messages/DefaultToolResultFallback.js +11 -0
- package/dist/components/messages/DefaultToolResultFallback.js.map +7 -0
- package/dist/components/messages/ParallelTasksGroupView.js +14 -6
- package/dist/components/messages/ParallelTasksGroupView.js.map +2 -2
- package/dist/components/messages/TaskInModuleView.js +27 -27
- package/dist/components/messages/TaskInModuleView.js.map +2 -2
- package/dist/components/messages/UserGuidanceMessage.js +26 -0
- package/dist/components/messages/UserGuidanceMessage.js.map +7 -0
- package/dist/components/messages/UserPromptMessage.js +2 -1
- package/dist/components/messages/UserPromptMessage.js.map +2 -2
- package/dist/components/messages/UserTeamNotificationMessage.js +91 -0
- package/dist/components/messages/UserTeamNotificationMessage.js.map +7 -0
- package/dist/components/messages/UserTextMessage.js +8 -0
- package/dist/components/messages/UserTextMessage.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +4 -2
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +18 -1
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +12 -1
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +2 -2
- package/dist/components/permissions/PermissionRequest.js +4 -0
- package/dist/components/permissions/PermissionRequest.js.map +2 -2
- package/dist/components/permissions/PlanApprovalRequest.js +164 -0
- package/dist/components/permissions/PlanApprovalRequest.js.map +7 -0
- package/dist/constants/agentTeams.js +17 -0
- package/dist/constants/agentTeams.js.map +7 -0
- package/dist/constants/macros.js +2 -1
- package/dist/constants/macros.js.map +2 -2
- package/dist/constants/prompts/agentPrompt.js +1 -0
- package/dist/constants/prompts/agentPrompt.js.map +2 -2
- package/dist/constants/prompts/autoMemory.js +39 -0
- package/dist/constants/prompts/autoMemory.js.map +7 -0
- package/dist/constants/prompts/codeConventions.js +1 -13
- package/dist/constants/prompts/codeConventions.js.map +2 -2
- package/dist/constants/prompts/doingTasks.js +21 -2
- package/dist/constants/prompts/doingTasks.js.map +2 -2
- package/dist/constants/prompts/envInfo.js +6 -7
- package/dist/constants/prompts/envInfo.js.map +2 -2
- package/dist/constants/prompts/index.js +27 -5
- package/dist/constants/prompts/index.js.map +2 -2
- package/dist/constants/prompts/taskManagement.js +2 -43
- package/dist/constants/prompts/taskManagement.js.map +2 -2
- package/dist/constants/prompts/teamOverlays.js +50 -0
- package/dist/constants/prompts/teamOverlays.js.map +7 -0
- package/dist/constants/prompts/toneAndStyle.js +4 -29
- package/dist/constants/prompts/toneAndStyle.js.map +2 -2
- package/dist/constants/prompts/toolUsagePolicy.js +7 -22
- package/dist/constants/prompts/toolUsagePolicy.js.map +2 -2
- package/dist/constants/toolInputExamples.js +2 -2
- package/dist/constants/toolInputExamples.js.map +2 -2
- package/dist/context.js +39 -6
- package/dist/context.js.map +2 -2
- package/dist/core/backupManager.js +1 -1
- package/dist/core/backupManager.js.map +2 -2
- package/dist/core/permissions/rules/planModeRule.js +1 -1
- package/dist/core/permissions/rules/planModeRule.js.map +1 -1
- package/dist/core/permissions/rules/safeModeRule.js +1 -1
- package/dist/core/permissions/rules/safeModeRule.js.map +1 -1
- package/dist/engine/AgentEngine.js +902 -0
- package/dist/engine/AgentEngine.js.map +7 -0
- package/dist/engine/EngineRegistry.js +89 -0
- package/dist/engine/EngineRegistry.js.map +7 -0
- package/dist/engine/foregroundAdapter.js +191 -0
- package/dist/engine/foregroundAdapter.js.map +7 -0
- package/dist/engine/index.js +15 -0
- package/dist/engine/index.js.map +7 -0
- package/dist/engine/types.js +1 -0
- package/dist/engine/types.js.map +7 -0
- package/dist/entrypoints/cli.js +410 -79
- package/dist/entrypoints/cli.js.map +3 -3
- package/dist/hooks/useAgentEngine.js +129 -0
- package/dist/hooks/useAgentEngine.js.map +7 -0
- package/dist/hooks/useAgentTokenStats.js +0 -16
- package/dist/hooks/useAgentTokenStats.js.map +2 -2
- package/dist/hooks/useCanUseTool.js +47 -2
- package/dist/hooks/useCanUseTool.js.map +2 -2
- package/dist/hooks/useDeferredLoading.js +4 -1
- package/dist/hooks/useDeferredLoading.js.map +2 -2
- package/dist/hooks/useIdleNotifications.js +66 -0
- package/dist/hooks/useIdleNotifications.js.map +7 -0
- package/dist/hooks/useSessionTracking.js +9 -7
- package/dist/hooks/useSessionTracking.js.map +2 -2
- package/dist/hooks/useTeamMembers.js +51 -0
- package/dist/hooks/useTeamMembers.js.map +7 -0
- package/dist/i18n/locales/en.js +77 -12
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/zh-CN.js +77 -12
- package/dist/i18n/locales/zh-CN.js.map +2 -2
- package/dist/i18n/types.js.map +1 -1
- package/dist/messages.js.map +2 -2
- package/dist/permissions.js +113 -7
- package/dist/permissions.js.map +2 -2
- package/dist/query.js +135 -37
- package/dist/query.js.map +2 -2
- package/dist/screens/REPL.js +504 -361
- package/dist/screens/REPL.js.map +3 -3
- package/dist/screens/ResumeConversation.js +199 -14
- package/dist/screens/ResumeConversation.js.map +2 -2
- package/dist/services/adapters/base.js.map +1 -1
- package/dist/services/agentTeams/backends/headless.js +108 -0
- package/dist/services/agentTeams/backends/headless.js.map +7 -0
- package/dist/services/agentTeams/backends/inProcess.js +102 -0
- package/dist/services/agentTeams/backends/inProcess.js.map +7 -0
- package/dist/services/agentTeams/backends/resolver.js +18 -0
- package/dist/services/agentTeams/backends/resolver.js.map +7 -0
- package/dist/services/agentTeams/backends/tmux.js +168 -0
- package/dist/services/agentTeams/backends/tmux.js.map +7 -0
- package/dist/services/agentTeams/backends/types.js +1 -0
- package/dist/services/agentTeams/backends/types.js.map +7 -0
- package/dist/services/agentTeams/heartbeat.js +88 -0
- package/dist/services/agentTeams/heartbeat.js.map +7 -0
- package/dist/services/agentTeams/index.js +42 -2
- package/dist/services/agentTeams/index.js.map +2 -2
- package/dist/services/agentTeams/injectionChannel.js +105 -0
- package/dist/services/agentTeams/injectionChannel.js.map +7 -0
- package/dist/services/agentTeams/mailbox.js +410 -30
- package/dist/services/agentTeams/mailbox.js.map +2 -2
- package/dist/services/agentTeams/messageFormatter.js +80 -0
- package/dist/services/agentTeams/messageFormatter.js.map +7 -0
- package/dist/services/agentTeams/permissionDelegation.js +71 -0
- package/dist/services/agentTeams/permissionDelegation.js.map +7 -0
- package/dist/services/agentTeams/teamEvents.js +45 -0
- package/dist/services/agentTeams/teamEvents.js.map +7 -0
- package/dist/services/agentTeams/teamManager.js +251 -34
- package/dist/services/agentTeams/teamManager.js.map +2 -2
- package/dist/services/agentTeams/teamTaskStore.js +290 -61
- package/dist/services/agentTeams/teamTaskStore.js.map +2 -2
- package/dist/services/agentTeams/teammateSpawner.js +99 -18
- package/dist/services/agentTeams/teammateSpawner.js.map +2 -2
- package/dist/services/hookExecutor.js +51 -8
- package/dist/services/hookExecutor.js.map +2 -2
- package/dist/services/llm/anthropicProvider.js +56 -59
- package/dist/services/llm/anthropicProvider.js.map +2 -2
- package/dist/services/llm/dispatch.js +24 -5
- package/dist/services/llm/dispatch.js.map +2 -2
- package/dist/services/llm/openaiProvider.js +115 -136
- package/dist/services/llm/openaiProvider.js.map +3 -3
- package/dist/services/llm/types.js +89 -15
- package/dist/services/llm/types.js.map +2 -2
- package/dist/services/mcpClient.js +80 -4
- package/dist/services/mcpClient.js.map +2 -2
- package/dist/services/mintoAuth.js +299 -0
- package/dist/services/mintoAuth.js.map +7 -0
- package/dist/services/oauth.js +3 -3
- package/dist/services/oauth.js.map +2 -2
- package/dist/services/openai.js +91 -20
- package/dist/services/openai.js.map +2 -2
- package/dist/services/plugins/pluginRuntime.js +11 -5
- package/dist/services/plugins/pluginRuntime.js.map +2 -2
- package/dist/services/plugins/pluginValidation.js +4 -2
- package/dist/services/plugins/pluginValidation.js.map +2 -2
- package/dist/services/sandbox/sandboxController.js +11 -3
- package/dist/services/sandbox/sandboxController.js.map +2 -2
- package/dist/services/sessionMemoryInjector.js +77 -0
- package/dist/services/sessionMemoryInjector.js.map +7 -0
- package/dist/services/systemReminder.js +130 -8
- package/dist/services/systemReminder.js.map +2 -2
- package/dist/services/taskStore.js +199 -8
- package/dist/services/taskStore.js.map +3 -3
- package/dist/services/topicDetector.js +169 -0
- package/dist/services/topicDetector.js.map +7 -0
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -13
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
- package/dist/tools/BashTool/BashTool.js +51 -28
- package/dist/tools/BashTool/BashTool.js.map +2 -2
- package/dist/tools/BashTool/prompt.js +95 -118
- package/dist/tools/BashTool/prompt.js.map +2 -2
- package/dist/tools/BashTool/utils.js +39 -1
- package/dist/tools/BashTool/utils.js.map +2 -2
- package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js +121 -0
- package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js.map +7 -0
- package/dist/tools/EnterWorktreeTool/prompt.js +22 -0
- package/dist/tools/EnterWorktreeTool/prompt.js.map +7 -0
- package/dist/tools/FileEditTool/FileEditTool.js +9 -4
- package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
- package/dist/tools/FileEditTool/prompt.js +3 -7
- package/dist/tools/FileEditTool/prompt.js.map +2 -2
- package/dist/tools/FileReadTool/FileReadTool.js +125 -3
- package/dist/tools/FileReadTool/FileReadTool.js.map +2 -2
- package/dist/tools/FileReadTool/prompt.js +1 -2
- package/dist/tools/FileReadTool/prompt.js.map +2 -2
- package/dist/tools/FileWriteTool/prompt.js +3 -5
- package/dist/tools/FileWriteTool/prompt.js.map +2 -2
- package/dist/tools/GlobTool/GlobTool.js +3 -2
- package/dist/tools/GlobTool/GlobTool.js.map +2 -2
- package/dist/tools/GrepTool/GrepTool.js +16 -5
- package/dist/tools/GrepTool/GrepTool.js.map +2 -2
- package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +2 -2
- package/dist/tools/MCPSearchTool/MCPSearchTool.js +172 -0
- package/dist/tools/MCPSearchTool/MCPSearchTool.js.map +7 -0
- package/dist/tools/MCPSearchTool/prompt.js +77 -0
- package/dist/tools/MCPSearchTool/prompt.js.map +7 -0
- package/dist/tools/MultiEditTool/prompt.js +4 -7
- package/dist/tools/MultiEditTool/prompt.js.map +2 -2
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js +12 -8
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +2 -2
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js +54 -1
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +2 -2
- package/dist/tools/PlanModeTool/prompt.js +23 -74
- package/dist/tools/PlanModeTool/prompt.js.map +2 -2
- package/dist/tools/SendMessageTool/SendMessageTool.js +341 -0
- package/dist/tools/SendMessageTool/SendMessageTool.js.map +7 -0
- package/dist/tools/SendMessageTool/prompt.js +44 -0
- package/dist/tools/SendMessageTool/prompt.js.map +7 -0
- package/dist/tools/TaskCreateTool/prompt.js +15 -4
- package/dist/tools/TaskCreateTool/prompt.js.map +2 -2
- package/dist/tools/TaskListTool/prompt.js +18 -3
- package/dist/tools/TaskListTool/prompt.js.map +2 -2
- package/dist/tools/TaskOutputTool/prompt.js +4 -3
- package/dist/tools/TaskOutputTool/prompt.js.map +2 -2
- package/dist/tools/TaskTool/TaskTool.js +762 -98
- package/dist/tools/TaskTool/TaskTool.js.map +3 -3
- package/dist/tools/TaskTool/constants.js +8 -2
- package/dist/tools/TaskTool/constants.js.map +2 -2
- package/dist/tools/TaskTool/prompt.js +74 -70
- package/dist/tools/TaskTool/prompt.js.map +2 -2
- package/dist/tools/TaskUpdateTool/TaskUpdateTool.js +15 -1
- package/dist/tools/TaskUpdateTool/TaskUpdateTool.js.map +2 -2
- package/dist/tools/TeamCreateTool/TeamCreateTool.js +129 -0
- package/dist/tools/TeamCreateTool/TeamCreateTool.js.map +7 -0
- package/dist/tools/TeamCreateTool/prompt.js +58 -0
- package/dist/tools/TeamCreateTool/prompt.js.map +7 -0
- package/dist/tools/TeamDeleteTool/TeamDeleteTool.js +151 -0
- package/dist/tools/TeamDeleteTool/TeamDeleteTool.js.map +7 -0
- package/dist/tools/TeamDeleteTool/prompt.js +16 -0
- package/dist/tools/TeamDeleteTool/prompt.js.map +7 -0
- package/dist/tools/URLFetcherTool/URLFetcherTool.js +106 -15
- package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +2 -2
- package/dist/tools/URLFetcherTool/prompt.js +3 -2
- package/dist/tools/URLFetcherTool/prompt.js.map +2 -2
- package/dist/tools/WebSearchTool/WebSearchTool.js +2 -1
- package/dist/tools/WebSearchTool/WebSearchTool.js.map +2 -2
- package/dist/tools/WebSearchTool/prompt.js +5 -4
- package/dist/tools/WebSearchTool/prompt.js.map +2 -2
- package/dist/tools.js +100 -20
- package/dist/tools.js.map +2 -2
- package/dist/types/PermissionMode.js +35 -6
- package/dist/types/PermissionMode.js.map +2 -2
- package/dist/types/hooks.js +2 -0
- package/dist/types/hooks.js.map +2 -2
- package/dist/types/plugin.js +2 -0
- package/dist/types/plugin.js.map +3 -3
- package/dist/utils/CircuitBreaker.js +15 -9
- package/dist/utils/CircuitBreaker.js.map +2 -2
- package/dist/utils/agentLoader.js +249 -112
- package/dist/utils/agentLoader.js.map +2 -2
- package/dist/utils/animationManager.js +40 -3
- package/dist/utils/animationManager.js.map +2 -2
- package/dist/utils/ask.js +7 -6
- package/dist/utils/ask.js.map +2 -2
- package/dist/utils/atomicWrite.js +23 -0
- package/dist/utils/atomicWrite.js.map +7 -0
- package/dist/utils/autoCompactCore.js +73 -56
- package/dist/utils/autoCompactCore.js.map +2 -2
- package/dist/utils/autoMemoryPaths.js +89 -0
- package/dist/utils/autoMemoryPaths.js.map +7 -0
- package/dist/utils/config.js +63 -38
- package/dist/utils/config.js.map +2 -2
- package/dist/utils/configSchema.js +13 -8
- package/dist/utils/configSchema.js.map +2 -2
- package/dist/utils/credentials/index.js +14 -0
- package/dist/utils/credentials/index.js.map +2 -2
- package/dist/utils/dualPath.js +24 -0
- package/dist/utils/dualPath.js.map +7 -0
- package/dist/utils/exit.js +66 -7
- package/dist/utils/exit.js.map +2 -2
- package/dist/utils/externalEditor.js +155 -0
- package/dist/utils/externalEditor.js.map +7 -0
- package/dist/utils/fileLock.js +67 -0
- package/dist/utils/fileLock.js.map +7 -0
- package/dist/utils/format.js +24 -14
- package/dist/utils/format.js.map +2 -2
- package/dist/utils/globalErrorHandler.js +5 -96
- package/dist/utils/globalErrorHandler.js.map +3 -3
- package/dist/utils/groupHandlers/parallelTasksHandler.js +5 -3
- package/dist/utils/groupHandlers/parallelTasksHandler.js.map +2 -2
- package/dist/utils/groupHandlers/taskHandler.js +2 -2
- package/dist/utils/groupHandlers/taskHandler.js.map +2 -2
- package/dist/utils/hookManager.js +64 -6
- package/dist/utils/hookManager.js.map +2 -2
- package/dist/utils/log.js +6 -2
- package/dist/utils/log.js.map +2 -2
- package/dist/utils/markdown.js +237 -19
- package/dist/utils/markdown.js.map +2 -2
- package/dist/utils/messageContextManager.js +18 -5
- package/dist/utils/messageContextManager.js.map +2 -2
- package/dist/utils/messageGroupManager.js +1 -1
- package/dist/utils/messageGroupManager.js.map +2 -2
- package/dist/utils/messages.js +104 -46
- package/dist/utils/messages.js.map +2 -2
- package/dist/utils/model.js +2 -2
- package/dist/utils/model.js.map +2 -2
- package/dist/utils/pasteCache.js +8 -4
- package/dist/utils/pasteCache.js.map +2 -2
- package/dist/utils/pluginLoader.js +18 -0
- package/dist/utils/pluginLoader.js.map +2 -2
- package/dist/utils/secureKeyStorage.js +36 -7
- package/dist/utils/secureKeyStorage.js.map +2 -2
- package/dist/utils/simpleMode.js +7 -0
- package/dist/utils/simpleMode.js.map +7 -0
- package/dist/utils/streamingState.js +11 -1
- package/dist/utils/streamingState.js.map +2 -2
- package/dist/utils/taskDisplayUtils.js +2 -1
- package/dist/utils/taskDisplayUtils.js.map +2 -2
- package/dist/utils/teamConfig.js +2 -2
- package/dist/utils/teamConfig.js.map +2 -2
- package/dist/utils/thinking.js +6 -2
- package/dist/utils/thinking.js.map +3 -3
- package/dist/utils/tokenProgress.js +55 -0
- package/dist/utils/tokenProgress.js.map +7 -0
- package/dist/utils/toolRiskClassification.js +26 -17
- package/dist/utils/toolRiskClassification.js.map +2 -2
- package/dist/utils/tooling/toolError.js +12 -0
- package/dist/utils/tooling/toolError.js.map +7 -0
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +10 -8
package/dist/i18n/types.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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 'ui.welcome.taglinePart1': string\n 'ui.welcome.taglinePart2': string\n\n // UI - Update banner\n 'ui.update.newVersionAvailable': string\n 'ui.update.runCommand': string\n 'ui.update.sudoNote': 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 // UI - PromptInput mode hints\n 'ui.hints.executeCommand': string\n 'ui.hints.recordNote': string\n 'ui.hints.featureMenu': string\n 'ui.hints.forNewline': string\n 'ui.hints.forBashMode': string\n 'ui.hints.forMintoMd': string\n 'ui.hints.forCommands': string\n 'ui.hints.typeToQueue': string\n 'ui.hints.backgroundTasks': string\n 'ui.hints.queued': string\n 'ui.hints.willRunAfter': string\n 'ui.hints.toEdit': string\n // UI - Completion hints\n 'ui.hints.completion.navigate': string\n 'ui.hints.completion.enterDirectory': string\n 'ui.hints.completion.selectAgent': string\n 'ui.hints.completion.insertReference': string\n 'ui.hints.completion.moreAbove': string\n 'ui.hints.completion.moreBelow': string\n\n // UI - Todo panel\n 'ui.todo.tasksRemaining': string\n 'ui.todo.allDone': string\n 'ui.todo.updatedTaskList': string\n 'ui.todo.pending': string\n 'ui.todo.inProgress': string\n 'ui.todo.done': string\n\n // UI - Model display\n 'ui.model.fallbackName': string\n // UI - Model management\n 'ui.model.manageList': string\n 'ui.model.manageListDeleteMode': string\n 'ui.model.cannotDeleteLast': string\n 'ui.model.deleteConfirmPrompt': string\n 'ui.model.addNewModelPrompt': string\n 'ui.model.configureNewModel': string\n 'ui.model.navigateHint': string\n 'ui.model.deleteHint': string\n 'ui.model.activeLabel': string\n 'ui.model.availableLabel': string\n 'ui.model.spaceToCycle': string\n 'ui.model.enterToConfigure': string\n 'ui.model.notConfigured': string\n // UI - Model config\n 'ui.modelConfig.title': string\n 'ui.modelConfig.clearMode': string\n 'ui.modelConfig.clearAssignmentPrompt': string\n 'ui.modelConfig.noModelsConfigured': string\n 'ui.modelConfig.configureHint': string\n 'ui.modelConfig.navigateHint': string\n 'ui.modelConfig.clearModePrompt': string\n // UI - Model pointer descriptions\n 'ui.modelConfig.mainDescription': string\n 'ui.modelConfig.taskDescription': string\n 'ui.modelConfig.reasoningDescription': string\n 'ui.modelConfig.quickDescription': string\n 'ui.modelConfig.compactDescription': string\n 'ui.modelConfig.manageModelsDescription': string\n\n // UI - Sensitive file warning\n 'ui.sensitiveFile.title': string\n 'ui.sensitiveFile.operating': string\n 'ui.sensitiveFile.defaultReason': string\n 'ui.sensitiveFile.operation.read': string\n 'ui.sensitiveFile.operation.write': string\n 'ui.sensitiveFile.operation.delete': string\n\n // Commands - Undo\n 'commands.undo.description': string\n 'commands.undo.title': string\n 'commands.undo.selectFile': string\n 'commands.undo.noBackups': string\n 'commands.undo.smartModeHint': string\n 'commands.undo.smartModeCommand': string\n 'commands.undo.versions': string\n 'commands.undo.selectVersion': string\n 'commands.undo.file': string\n 'commands.undo.restoredTo': string\n 'commands.undo.fileRestored': string\n 'commands.undo.restoreFailed': string\n 'commands.undo.loading': string\n 'commands.undo.error': string\n 'commands.undo.pressAnyKey': string\n 'commands.undo.pressQOrEsc': string\n 'commands.undo.navHintsFile': string\n 'commands.undo.navHintsVersion': string\n // Time format\n 'commands.undo.justNow': string\n 'commands.undo.minutesAgo': string\n 'commands.undo.today': string\n 'commands.undo.weekday.sun': string\n 'commands.undo.weekday.mon': string\n 'commands.undo.weekday.tue': string\n 'commands.undo.weekday.wed': string\n 'commands.undo.weekday.thu': string\n 'commands.undo.weekday.fri': string\n 'commands.undo.weekday.sat': 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 // Plugin - Tabs\n 'commands.plugin.tabBrowse': string\n 'commands.plugin.tabInstalled': string\n 'commands.plugin.tabMarketplaces': string\n // Plugin - Add marketplace\n 'commands.plugin.addMarketplace': string\n 'commands.plugin.addMarketplacePlaceholder': string\n // Plugin - Footer hints\n 'commands.plugin.footerHint': string\n 'commands.plugin.addFooterHint': string\n // Plugin - Install/Update/Uninstall actions\n 'commands.plugin.install': string\n 'commands.plugin.installing': string\n 'commands.plugin.installSuccess': string\n 'commands.plugin.installFailed': string\n 'commands.plugin.update': string\n 'commands.plugin.updating': string\n 'commands.plugin.updateSuccess': string\n 'commands.plugin.updateFailed': string\n 'commands.plugin.uninstall': string\n 'commands.plugin.uninstalling': string\n 'commands.plugin.uninstallSuccess': string\n 'commands.plugin.uninstallFailed': string\n 'commands.plugin.enable': string\n 'commands.plugin.disable': string\n 'commands.plugin.toggleSuccess': string\n // Plugin - Marketplace actions\n 'commands.plugin.marketplaceUpdate': string\n 'commands.plugin.marketplaceUpdating': string\n 'commands.plugin.marketplaceUpdateSuccess': string\n 'commands.plugin.marketplaceUpdateFailed': string\n 'commands.plugin.marketplaceRemove': string\n 'commands.plugin.marketplaceRemoving': string\n 'commands.plugin.marketplaceRemoveSuccess': string\n 'commands.plugin.marketplaceAdd': string\n 'commands.plugin.marketplaceAdding': string\n 'commands.plugin.marketplaceAddSuccess': string\n 'commands.plugin.marketplaceAddFailed': string\n 'commands.plugin.browsePlugins': string\n 'commands.plugin.actions': string\n 'commands.plugin.back': string\n 'commands.plugin.local': string\n 'commands.plugin.sourceClaudeCode': string\n 'commands.plugin.syncDesc': string\n 'commands.plugin.syncStarting': string\n 'commands.plugin.syncScanning': string\n 'commands.plugin.syncInstalling': string\n 'commands.plugin.syncUpdating': string\n 'commands.plugin.syncComplete': string\n 'commands.plugin.syncNoChanges': string\n 'commands.plugin.syncFailed': string\n 'commands.plugin.syncNotFound': string\n 'commands.plugin.syncCleaned': string\n 'commands.plugin.syncSkippedManual': string\n 'commands.plugin.syncDryRun': string\n 'commands.plugin.syncMarketplacesRegistered': string\n 'commands.plugin.syncMarketplacesFailed': string\n 'commands.plugin.syncMarketplacesProgress': string\n // Plugin - Batch operations\n 'commands.plugin.batchInstallAction': string\n 'commands.plugin.batchUpdateAction': string\n 'commands.plugin.batchAction': string\n 'commands.plugin.batchInstalling': string\n 'commands.plugin.batchUpdating': string\n 'commands.plugin.batchInstalledCount': string\n 'commands.plugin.batchUpdatedCount': string\n 'commands.plugin.batchFailedCount': string\n 'commands.plugin.batchDeleteAction': string\n 'commands.plugin.batchEnableAction': string\n 'commands.plugin.batchDisableAction': string\n 'commands.plugin.batchUninstalling': string\n 'commands.plugin.batchUninstalledCount': string\n 'commands.plugin.batchEnabledCount': string\n 'commands.plugin.batchDisabledCount': string\n 'commands.plugin.batchActionPickerTitle': string\n 'commands.plugin.updateAvailable': string\n 'commands.plugin.batchAllAlreadyInstalled': string\n 'commands.plugin.batchNoUpdatable': string\n 'commands.plugin.footerHintMultiSelect': string\n 'commands.sandbox.description': string\n 'commands.thinking.description': string\n 'commands.thinking.enabled': string\n 'commands.thinking.disabled': string\n 'commands.language.description': string\n 'commands.language.title': string\n 'commands.language.current': string\n 'commands.language.select': string\n 'commands.language.changed': string\n 'commands.language.restart': string\n 'commands.language.alreadyUsing': string\n 'commands.language.navigate': string\n\n // Commands - Sessions\n 'commands.sessions.description': string\n 'commands.sessions.title': string\n 'commands.sessions.count': string\n 'commands.sessions.noSessions': string\n 'commands.sessions.headerDate': string\n 'commands.sessions.headerProject': string\n 'commands.sessions.headerPrompt': string\n 'commands.sessions.headerMsgs': string\n 'commands.sessions.headerTools': string\n 'commands.sessions.helpHint': string\n 'commands.sessions.today': string\n 'commands.sessions.yesterday': string\n 'commands.sessions.moreBelow': string\n 'commands.sessions.navigationHint': string\n\n // Commands - Resume\n 'commands.resume.description': string\n 'commands.resume.title': string\n 'commands.resume.noSessions': string\n 'commands.resume.navigationHint': string\n\n // Commands - New\n 'commands.new.description': 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 // Help - Usage modes\n 'help.usageModes': string\n 'help.nonInteractive': string\n 'help.runForOptions': string\n // Help - Common tasks\n 'help.commonTasks': string\n 'help.taskAskQuestions': string\n 'help.taskEditFiles': string\n 'help.taskFixErrors': string\n 'help.taskRunCommands': string\n 'help.taskRunBash': string\n // Help - Command categories\n 'help.builtInCommands': string\n 'help.customCommands': string\n 'help.pluginCommands': string\n 'help.mcpCommands': string\n // Help - Command loading\n 'help.commandPriority': string\n 'help.priorityBuiltIn': string\n 'help.priorityCustom': string\n 'help.priorityPlugin': string\n 'help.priorityMcp': string\n 'help.refreshCommandsHint': string\n // Help - Product description\n 'help.productDescription': string\n // Help - Mode Systems\n 'help.modeSystems': string\n 'help.safetyModes': string\n 'help.safetyModeYolo': string\n 'help.safetyModeSmart': string\n 'help.safetyModeStrict': string\n 'help.safetyModeFree': string\n 'help.permissionModes': string\n 'help.permissionModeDefault': string\n 'help.permissionModeAcceptEdits': string\n 'help.permissionModePlan': string\n 'help.permissionModeBypass': string\n 'help.modeInteraction': 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 'prompts.interruptedByUser': string\n 'prompts.interruptedCtrlC': string\n 'prompts.interruptedEscEsc': string\n 'prompts.inputCleared': string\n 'prompts.inputClearedCtrlD': string\n 'prompts.inputClearedEscEsc': string\n 'prompts.screenCleared': string\n 'prompts.todoPanelToggled': string\n 'prompts.typeCommandFirst': string\n 'prompts.executingBash': string\n 'prompts.exitingGracefully': string\n 'prompts.pressCtrlDToExit': string\n 'prompts.pressCtrlDAgain': string\n 'prompts.pressEscAgainClear': string\n 'prompts.pressEscAgainInterrupt': string\n 'prompts.thinkingModeEnabled': string\n 'prompts.thinkingModeDisabled': string\n 'prompts.limitedInputMode': string\n 'prompts.limitedInputModeDetail': string\n 'prompts.queuedMessage': string\n 'prompts.noModelsConfigured': string\n 'prompts.noActiveModels': string\n 'prompts.onlyOneActiveModel': string\n 'prompts.modelSwitchingFailed': 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 // Dialog - Generic\n 'dialog.enterToConfirm': string\n 'dialog.escToCancel': string\n 'dialog.confirmCancelPrompt': string\n 'dialog.enterCustomResponse': string\n // Dialog - Message selector\n 'dialog.jumpToPreviousMessage': string\n 'dialog.forkConversation': string\n 'dialog.current': string\n 'dialog.emptyMessage': string\n 'dialog.selectConfirmCancelPrompt': string\n // Dialog - MCP server\n 'dialog.mcpServerDetected': string\n 'dialog.mcpServersDetected': string\n 'dialog.mcpApprovalRequired': string\n 'dialog.mcpSelectServers': string\n 'dialog.approveServer': string\n 'dialog.rejectServer': string\n 'dialog.confirmRejectPrompt': string\n 'dialog.selectConfirmRejectAllPrompt': string\n // Dialog - Trust\n 'dialog.trustTitle': string\n 'dialog.trustWarning1': string\n 'dialog.trustWarning2': string\n 'dialog.yesProceed': string\n 'dialog.noExit': string\n 'dialog.confirmExitPrompt': string\n\n // Config\n 'config.title': string\n 'config.modelConfiguration': string\n 'config.noModelsConfigured': string\n 'config.useModelCommand': string\n 'config.enterToSaveEscToCancel': string\n 'config.navigateChangeClose': string\n 'config.enterNewValue': string\n 'config.theme': string\n 'config.verboseMode': string\n 'config.streamResponses': string\n 'config.compressionMode': string\n 'config.backupEnabled': string\n 'config.backupEnabled.description': string\n\n // HotkeyHelpPanel\n 'hotkey.navigation': string\n 'hotkey.control': string\n 'hotkey.features': string\n 'hotkey.inputModes': string\n 'hotkey.browseHistory': string\n 'hotkey.searchHistory': string\n 'hotkey.autocomplete': string\n 'hotkey.rollbackResponse': string\n 'hotkey.cancelOperation': string\n 'hotkey.exitPressTwice': string\n 'hotkey.clearScreen': string\n 'hotkey.submitPrompt': string\n 'hotkey.toggleTodoPanel': string\n 'hotkey.cycleDisplayMode': string\n 'hotkey.executeAsBash': string\n 'hotkey.showHideHelp': string\n 'hotkey.startSlashCommand': string\n 'hotkey.executeBashCommand': string\n 'hotkey.addNoteToKoding': string\n 'hotkey.ctrlQuestionForShortcuts': 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 // UI - TabbedListView\n 'ui.tabbedList.search': string\n 'ui.tabbedList.loading': string\n 'ui.tabbedList.noItems': string\n 'ui.tabbedList.moreAbove': string\n 'ui.tabbedList.moreBelow': string\n 'ui.tabbedList.tabCycleHint': string\n 'ui.tabbedList.navigationHint': string\n\n // UI - InfoPanel\n 'ui.infoPanel.continueHint': string\n 'ui.infoPanel.dismissHint': string\n\n // UI - SimpleSelector\n 'ui.simpleSelector.navigationHint': string\n 'ui.simpleSelector.dismissHint': string\n\n // Commands - Status\n 'commands.status.title': string\n 'commands.status.versionInfo': string\n 'commands.status.environment': string\n 'commands.status.modelConfiguration': string\n 'commands.status.apiConnection': string\n 'commands.status.connected': string\n 'commands.status.notConnected': string\n 'commands.status.notConfigured': string\n\n // Commands - Context\n 'commands.context.title': string\n 'commands.context.contextUsage': string\n 'commands.context.tokens': string\n 'commands.context.remaining': string\n 'commands.context.messages': string\n 'commands.context.estTurns': string\n 'commands.context.highUsage': string\n 'commands.context.criticalUsage': string\n\n // Commands - Model status\n 'commands.model.title': string\n 'commands.model.modelPointers': string\n 'commands.model.configure': string\n 'commands.model.error': string\n // Commands - Model (refactored phases)\n 'commands.model.selectModel': string\n 'commands.model.pointerUpdated': string\n 'commands.model.pointerCleared': string\n 'commands.model.modelLibrary': string\n 'commands.model.modelLibrarySubtitle': string\n 'commands.model.addNewModel': string\n 'commands.model.clearAssignment': string\n 'commands.model.modelActions': string\n 'commands.model.confirmDeleteTitle': string\n 'commands.model.confirmDeleteYes': string\n 'commands.model.confirmDeleteNo': string\n 'commands.model.editModel': string\n 'commands.model.editTitle': string\n 'commands.model.modelDeleted': string\n 'commands.model.deleteFailed': string\n 'commands.model.actionsCategory': string\n 'commands.model.pointersCategory': string\n\n // Commands - Sandbox\n 'commands.sandbox.title': string\n 'commands.sandbox.statusSection': string\n 'commands.sandbox.implementation': string\n 'commands.sandbox.filesystemPolicy': string\n 'commands.sandbox.networkPolicy': string\n 'commands.sandbox.processPolicy': string\n 'commands.sandbox.helpSection': string\n 'commands.sandbox.toggle': string\n 'commands.sandbox.toggleHelp': string\n 'commands.sandbox.enabled': string\n 'commands.sandbox.disabled': string\n 'commands.sandbox.notAvailable': string\n\n // Commands - Help\n 'commands.help.title': string\n\n // Commands - MCP\n 'commands.mcp.title': string\n 'commands.mcp.noServers': string\n 'commands.mcp.addServer': string\n 'commands.mcp.refreshAll': string\n 'commands.mcp.enable': string\n 'commands.mcp.disable': string\n 'commands.mcp.deleteServer': string\n 'commands.mcp.confirmDeleteTitle': string\n 'commands.mcp.confirmYes': string\n 'commands.mcp.confirmNo': string\n // MCP - Tabs\n 'commands.mcp.tabAll': string\n 'commands.mcp.tabProject': string\n 'commands.mcp.tabGlobal': string\n // MCP - Add server\n 'commands.mcp.addNamePlaceholder': string\n 'commands.mcp.addCommandPlaceholder': string\n 'commands.mcp.addFooterHint': string\n 'commands.mcp.addCommandFooterHint': string\n // MCP - Status overlays\n 'commands.mcp.adding': string\n 'commands.mcp.addSuccess': string\n 'commands.mcp.addFailed': string\n 'commands.mcp.toggling': string\n 'commands.mcp.toggleSuccess': string\n 'commands.mcp.deleting': string\n 'commands.mcp.deleteSuccess': string\n 'commands.mcp.refreshing': string\n 'commands.mcp.refreshSuccess': string\n // MCP - Sub-phase labels\n 'commands.mcp.back': string\n 'commands.mcp.actions': string\n\n // Commands - Undo\n 'commands.undo.tabFiles': string\n 'commands.undo.tabVersions': string\n\n // Commands - Export\n 'commands.export.description': string\n 'commands.export.title': string\n 'commands.export.selectType': string\n 'commands.export.selectScope': string\n 'commands.export.typeRuntime': string\n 'commands.export.typeRuntimeDesc': string\n 'commands.export.typeTeam': string\n 'commands.export.typeTeamDesc': string\n 'commands.export.scopeUser': string\n 'commands.export.scopeUserDesc': string\n 'commands.export.scopeProject': string\n 'commands.export.scopeProjectDesc': string\n 'commands.export.typeConversation': string\n 'commands.export.typeConversationDesc': string\n 'commands.export.typeSummary': string\n 'commands.export.typeSummaryDesc': string\n 'commands.export.exporting': string\n 'commands.export.success': string\n 'commands.export.failed': string\n 'commands.export.noPlugins': string\n 'commands.export.noAgents': string\n 'commands.export.noHooks': string\n 'commands.export.navigationHint': string\n 'commands.export.sensitiveDataTitle': string\n 'commands.export.sensitiveDataQuestion': string\n 'commands.export.sensitiveInclude': string\n 'commands.export.sensitiveIncludeDesc': string\n 'commands.export.sensitivePlaceholder': string\n 'commands.export.sensitivePlaceholderDesc': string\n // Export - scope descriptions\n 'commands.export.scopeAll': string\n 'commands.export.scopeAllDesc': string\n // Export - flattened TabbedListView items\n 'commands.export.itemTeamUserInclude': string\n 'commands.export.itemTeamUserPlaceholder': string\n 'commands.export.itemTeamProjectInclude': string\n 'commands.export.itemTeamProjectPlaceholder': string\n 'commands.export.itemTeamAllInclude': string\n 'commands.export.itemTeamAllPlaceholder': string\n 'commands.export.itemRuntimeUser': string\n 'commands.export.itemRuntimeProject': string\n 'commands.export.itemRuntimeAll': string\n 'commands.export.itemConversation': string\n 'commands.export.itemSummary': string\n 'commands.export.footerHint': string\n\n // Commands - Setup\n 'commands.setup.description': string\n 'commands.setup.previewTitle': string\n 'commands.setup.tabOverview': string\n 'commands.setup.tabModels': string\n 'commands.setup.tabMcp': string\n 'commands.setup.tabPlugins': string\n 'commands.setup.tabAgents': string\n 'commands.setup.tabHooks': string\n 'commands.setup.tabSettings': string\n 'commands.setup.confirmHint': string\n 'commands.setup.applying': string\n 'commands.setup.tabSkills': string\n 'commands.setup.tabCommands': string\n 'commands.setup.installingPlugins': string\n 'commands.setup.installingProjectPlugins': string\n 'commands.setup.installingAgents': string\n 'commands.setup.installingHooks': string\n 'commands.setup.installingSkills': string\n 'commands.setup.installingCommands': string\n 'commands.setup.addingMarketplaces': string\n 'commands.setup.success': string\n 'commands.setup.failed': string\n 'commands.setup.loading': string\n 'commands.setup.errorMissingFrom': string\n 'commands.setup.errorUsage': string\n\n // Commands - Stats\n 'commands.stats.description': string\n 'commands.stats.title': string\n 'commands.stats.today': string\n 'commands.stats.thisWeek': string\n 'commands.stats.thisMonth': string\n 'commands.stats.lifetime': string\n 'commands.stats.messages': string\n 'commands.stats.sessions': string\n 'commands.stats.toolCalls': string\n 'commands.stats.tokens': string\n 'commands.stats.totalMessages': string\n 'commands.stats.totalSessions': string\n 'commands.stats.totalTools': string\n 'commands.stats.estCost': string\n 'commands.stats.modelUsage': string\n 'commands.stats.topTools': string\n 'commands.stats.calls': string\n 'commands.stats.noData': string\n 'commands.stats.vsYesterday': string\n 'commands.stats.firstUsed': string\n\n // ModelSelector Wizard\n 'modelSelector.providerSelection': string\n 'modelSelector.providerSelectionDesc': string\n 'modelSelector.providerSelectionHint': string\n 'modelSelector.anthropicSubMenu': string\n 'modelSelector.anthropicSubMenuDesc': string\n 'modelSelector.anthropicOfficial': string\n 'modelSelector.anthropicOfficialDesc': string\n 'modelSelector.anthropicBigdream': string\n 'modelSelector.anthropicBigdreamDesc': string\n 'modelSelector.anthropicOpendev': string\n 'modelSelector.anthropicOpendevDesc': string\n 'modelSelector.anthropicCustom': string\n 'modelSelector.anthropicCustomDesc': string\n 'modelSelector.baseUrlTitle': string\n 'modelSelector.baseUrlDesc': string\n 'modelSelector.baseUrlOllamaDesc': string\n 'modelSelector.customApiTitle': string\n 'modelSelector.customApiDesc': string\n 'modelSelector.apiKeyTitle': string\n 'modelSelector.apiKeyDesc': string\n 'modelSelector.apiKeyTabHintManual': string\n 'modelSelector.apiKeyTabHintSkip': string\n 'modelSelector.resourceNameTitle': string\n 'modelSelector.resourceNameDesc': string\n 'modelSelector.modelSelectionTitle': string\n 'modelSelector.modelSelectionDesc': string\n 'modelSelector.modelSearchPlaceholder': string\n 'modelSelector.modelInputTitle': string\n 'modelSelector.modelParamsTitle': string\n 'modelSelector.modelParamsDesc': string\n 'modelSelector.maxTokens': string\n 'modelSelector.reasoningEffort': string\n 'modelSelector.contextLengthTitle': string\n 'modelSelector.contextLengthDesc': string\n 'modelSelector.connectionTestRetry': string\n 'modelSelector.confirmationSave': string\n 'modelSelector.configError': string\n 'modelSelector.testAndSaveTitle': string\n 'modelSelector.testAndSaveDesc': string\n 'modelSelector.saveAnyway': string\n 'modelSelector.autoTesting': string\n 'modelSelector.footerEnterContinue': string\n 'modelSelector.footerEscBack': string\n 'modelSelector.footerNavSelectEsc': string\n 'modelSelector.footerTabNavigate': string\n 'modelSelector.showingModels': string\n 'modelSelector.noModelsMatch': string\n 'modelSelector.noModelsAvailable': string\n 'modelSelector.recommended': string\n 'modelSelector.continue': 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"],
|
|
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 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 - Transcript mode\n 'ui.transcript.showing': string\n 'ui.transcript.showPrevious': string\n 'ui.transcript.hidePrevious': 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 'ui.welcome.taglinePart1': string\n 'ui.welcome.taglinePart2': string\n\n // UI - Update banner\n 'ui.update.newVersionAvailable': string\n 'ui.update.runCommand': string\n 'ui.update.sudoNote': 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 // UI - PromptInput mode hints\n 'ui.hints.executeCommand': string\n 'ui.hints.recordNote': string\n 'ui.hints.featureMenu': string\n 'ui.hints.forNewline': string\n 'ui.hints.forBashMode': string\n 'ui.hints.forMintoMd': string\n 'ui.hints.forCommands': string\n 'ui.hints.typeToQueue': string\n 'ui.hints.typeToInject': string\n 'ui.hints.backgroundTasks': string\n 'ui.hints.queued': string\n 'ui.hints.injectionPending': string\n 'ui.hints.pressUpToEditQueue': string\n 'ui.hints.willRunAfter': string\n 'ui.hints.toEdit': string\n // UI - Completion hints\n 'ui.hints.completion.navigate': string\n 'ui.hints.completion.enterDirectory': string\n 'ui.hints.completion.selectAgent': string\n 'ui.hints.completion.insertReference': string\n 'ui.hints.completion.moreAbove': string\n 'ui.hints.completion.moreBelow': string\n\n // UI - Todo panel\n 'ui.todo.tasksRemaining': string\n 'ui.todo.allDone': string\n 'ui.todo.updatedTaskList': string\n 'ui.todo.pending': string\n 'ui.todo.inProgress': string\n 'ui.todo.done': string\n\n // UI - Model display\n 'ui.model.fallbackName': string\n // UI - Model management\n 'ui.model.manageList': string\n 'ui.model.manageListDeleteMode': string\n 'ui.model.cannotDeleteLast': string\n 'ui.model.deleteConfirmPrompt': string\n 'ui.model.addNewModelPrompt': string\n 'ui.model.configureNewModel': string\n 'ui.model.navigateHint': string\n 'ui.model.deleteHint': string\n 'ui.model.activeLabel': string\n 'ui.model.availableLabel': string\n 'ui.model.spaceToCycle': string\n 'ui.model.enterToConfigure': string\n 'ui.model.notConfigured': string\n // UI - Model config\n 'ui.modelConfig.title': string\n 'ui.modelConfig.clearMode': string\n 'ui.modelConfig.clearAssignmentPrompt': string\n 'ui.modelConfig.noModelsConfigured': string\n 'ui.modelConfig.configureHint': string\n 'ui.modelConfig.navigateHint': string\n 'ui.modelConfig.clearModePrompt': string\n // UI - Model pointer descriptions\n 'ui.modelConfig.mainDescription': string\n 'ui.modelConfig.taskDescription': string\n 'ui.modelConfig.reasoningDescription': string\n 'ui.modelConfig.quickDescription': string\n 'ui.modelConfig.compactDescription': string\n 'ui.modelConfig.manageModelsDescription': string\n\n // UI - Sensitive file warning\n 'ui.sensitiveFile.title': string\n 'ui.sensitiveFile.operating': string\n 'ui.sensitiveFile.defaultReason': string\n 'ui.sensitiveFile.operation.read': string\n 'ui.sensitiveFile.operation.write': string\n 'ui.sensitiveFile.operation.delete': string\n\n // Commands - Undo\n 'commands.undo.description': string\n 'commands.undo.title': string\n 'commands.undo.selectFile': string\n 'commands.undo.noBackups': string\n 'commands.undo.smartModeHint': string\n 'commands.undo.smartModeCommand': string\n 'commands.undo.versions': string\n 'commands.undo.selectVersion': string\n 'commands.undo.file': string\n 'commands.undo.restoredTo': string\n 'commands.undo.fileRestored': string\n 'commands.undo.restoreFailed': string\n 'commands.undo.loading': string\n 'commands.undo.error': string\n 'commands.undo.pressAnyKey': string\n 'commands.undo.pressQOrEsc': string\n 'commands.undo.navHintsFile': string\n 'commands.undo.navHintsVersion': string\n // Time format\n 'commands.undo.justNow': string\n 'commands.undo.minutesAgo': string\n 'commands.undo.today': string\n 'commands.undo.weekday.sun': string\n 'commands.undo.weekday.mon': string\n 'commands.undo.weekday.tue': string\n 'commands.undo.weekday.wed': string\n 'commands.undo.weekday.thu': string\n 'commands.undo.weekday.fri': string\n 'commands.undo.weekday.sat': 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 // Plugin - Tabs\n 'commands.plugin.tabBrowse': string\n 'commands.plugin.tabInstalled': string\n 'commands.plugin.tabMarketplaces': string\n // Plugin - Add marketplace\n 'commands.plugin.addMarketplace': string\n 'commands.plugin.addMarketplacePlaceholder': string\n // Plugin - Footer hints\n 'commands.plugin.footerHint': string\n 'commands.plugin.addFooterHint': string\n // Plugin - Install/Update/Uninstall actions\n 'commands.plugin.install': string\n 'commands.plugin.installing': string\n 'commands.plugin.installSuccess': string\n 'commands.plugin.installFailed': string\n 'commands.plugin.update': string\n 'commands.plugin.updating': string\n 'commands.plugin.updateSuccess': string\n 'commands.plugin.updateFailed': string\n 'commands.plugin.uninstall': string\n 'commands.plugin.uninstalling': string\n 'commands.plugin.uninstallSuccess': string\n 'commands.plugin.uninstallFailed': string\n 'commands.plugin.enable': string\n 'commands.plugin.disable': string\n 'commands.plugin.toggleSuccess': string\n // Plugin - Marketplace actions\n 'commands.plugin.marketplaceUpdate': string\n 'commands.plugin.marketplaceUpdating': string\n 'commands.plugin.marketplaceUpdateSuccess': string\n 'commands.plugin.marketplaceUpdateFailed': string\n 'commands.plugin.marketplaceRemove': string\n 'commands.plugin.marketplaceRemoving': string\n 'commands.plugin.marketplaceRemoveSuccess': string\n 'commands.plugin.marketplaceAdd': string\n 'commands.plugin.marketplaceAdding': string\n 'commands.plugin.marketplaceAddSuccess': string\n 'commands.plugin.marketplaceAddFailed': string\n 'commands.plugin.browsePlugins': string\n 'commands.plugin.actions': string\n 'commands.plugin.back': string\n 'commands.plugin.local': string\n 'commands.plugin.sourceClaudeCode': string\n 'commands.plugin.syncDesc': string\n 'commands.plugin.syncStarting': string\n 'commands.plugin.syncScanning': string\n 'commands.plugin.syncInstalling': string\n 'commands.plugin.syncUpdating': string\n 'commands.plugin.syncComplete': string\n 'commands.plugin.syncNoChanges': string\n 'commands.plugin.syncFailed': string\n 'commands.plugin.syncNotFound': string\n 'commands.plugin.syncCleaned': string\n 'commands.plugin.syncSkippedManual': string\n 'commands.plugin.syncDryRun': string\n 'commands.plugin.syncMarketplacesRegistered': string\n 'commands.plugin.syncMarketplacesFailed': string\n 'commands.plugin.syncMarketplacesProgress': string\n // Plugin - Batch operations\n 'commands.plugin.batchInstallAction': string\n 'commands.plugin.batchUpdateAction': string\n 'commands.plugin.batchAction': string\n 'commands.plugin.batchInstalling': string\n 'commands.plugin.batchUpdating': string\n 'commands.plugin.batchInstalledCount': string\n 'commands.plugin.batchUpdatedCount': string\n 'commands.plugin.batchFailedCount': string\n 'commands.plugin.batchDeleteAction': string\n 'commands.plugin.batchEnableAction': string\n 'commands.plugin.batchDisableAction': string\n 'commands.plugin.batchUninstalling': string\n 'commands.plugin.batchUninstalledCount': string\n 'commands.plugin.batchEnabledCount': string\n 'commands.plugin.batchDisabledCount': string\n 'commands.plugin.batchActionPickerTitle': string\n 'commands.plugin.updateAvailable': string\n 'commands.plugin.batchAllAlreadyInstalled': string\n 'commands.plugin.batchNoUpdatable': string\n 'commands.plugin.footerHintMultiSelect': string\n // Commands - Login\n 'commands.login.description': string\n 'commands.login.enterUser': string\n 'commands.login.enterPassword': string\n 'commands.login.loggingIn': string\n 'commands.login.fetchingModels': string\n 'commands.login.configuringModels': string\n 'commands.login.success': string\n 'commands.login.failed': string\n 'commands.login.inactive': string\n 'commands.login.modelsConfigured': string\n 'commands.login.invalidCredentials': string\n 'commands.login.fetchModelsFailed': string\n\n 'commands.sandbox.description': string\n 'commands.thinking.description': string\n 'commands.thinking.enabled': string\n 'commands.thinking.disabled': string\n 'commands.language.description': string\n 'commands.language.title': string\n 'commands.language.current': string\n 'commands.language.select': string\n 'commands.language.changed': string\n 'commands.language.restart': string\n 'commands.language.alreadyUsing': string\n 'commands.language.navigate': string\n\n // Commands - Sessions\n 'commands.sessions.description': string\n 'commands.sessions.title': string\n 'commands.sessions.count': string\n 'commands.sessions.noSessions': string\n 'commands.sessions.headerDate': string\n 'commands.sessions.headerProject': string\n 'commands.sessions.headerPrompt': string\n 'commands.sessions.headerMsgs': string\n 'commands.sessions.headerTools': string\n 'commands.sessions.helpHint': string\n 'commands.sessions.today': string\n 'commands.sessions.yesterday': string\n 'commands.sessions.moreBelow': string\n 'commands.sessions.navigationHint': string\n\n // Commands - Resume\n 'commands.resume.description': string\n 'commands.resume.title': string\n 'commands.resume.noSessions': string\n 'commands.resume.navigationHint': string\n\n // Commands - New\n 'commands.new.description': 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 // Help - Usage modes\n 'help.usageModes': string\n 'help.nonInteractive': string\n 'help.runForOptions': string\n // Help - Common tasks\n 'help.commonTasks': string\n 'help.taskAskQuestions': string\n 'help.taskEditFiles': string\n 'help.taskFixErrors': string\n 'help.taskRunCommands': string\n 'help.taskRunBash': string\n // Help - Command categories\n 'help.builtInCommands': string\n 'help.customCommands': string\n 'help.pluginCommands': string\n 'help.mcpCommands': string\n // Help - Command loading\n 'help.commandPriority': string\n 'help.priorityBuiltIn': string\n 'help.priorityCustom': string\n 'help.priorityPlugin': string\n 'help.priorityMcp': string\n 'help.refreshCommandsHint': string\n // Help - Product description\n 'help.productDescription': string\n // Help - Mode Systems\n 'help.modeSystems': string\n 'help.safetyModes': string\n 'help.safetyModeYolo': string\n 'help.safetyModeSmart': string\n 'help.safetyModeStrict': string\n 'help.safetyModeFree': string\n 'help.permissionModes': string\n 'help.permissionModeDefault': string\n 'help.permissionModeAcceptEdits': string\n 'help.permissionModePlan': string\n 'help.permissionModeBypass': string\n 'help.permissionModesSystem': string\n 'help.permissionModeDontAsk': string\n 'help.permissionModeDelegate': string\n 'help.modeInteraction': 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 'prompts.interruptedByUser': string\n 'prompts.interruptedCtrlC': string\n 'prompts.interruptedEsc': string\n 'prompts.inputCleared': string\n 'prompts.inputClearedCtrlD': string\n 'prompts.inputClearedEsc': string\n 'prompts.screenCleared': string\n 'prompts.todoPanelToggled': string\n 'prompts.typeCommandFirst': string\n 'prompts.executingBash': string\n 'prompts.exitingGracefully': string\n 'prompts.pressCtrlDToExit': string\n 'prompts.pressCtrlDAgain': string\n 'prompts.escEscToRollback': string\n 'prompts.rolledBack': string\n 'prompts.noRollbackHistory': string\n 'prompts.thinkingModeEnabled': string\n 'prompts.thinkingModeDisabled': string\n 'thinking.title': string\n 'thinking.subtitle': string\n 'thinking.enabled': string\n 'thinking.disabled': string\n 'thinking.enabledDesc': string\n 'thinking.disabledDesc': string\n 'prompts.limitedInputMode': string\n 'prompts.limitedInputModeDetail': string\n 'prompts.queuedMessage': string\n 'prompts.noModelsConfigured': string\n 'prompts.noActiveModels': string\n 'prompts.onlyOneActiveModel': string\n 'prompts.modelSwitchingFailed': string\n 'prompts.allAgentsKilled': string\n 'prompts.pressCtrlFAgain': string\n 'prompts.openingEditor': string\n 'prompts.editorDone': string\n 'prompts.editorNoChange': string\n 'prompts.editorFailed': string\n\n // Rewind panel\n 'rewind.title': string\n 'rewind.selectMessage': string\n 'rewind.confirmRestore': string\n 'rewind.noCodeChanges': string\n 'rewind.conversationWillBeForked': string\n 'rewind.codeWillBeRestored': string\n 'rewind.enterToContinue': string\n 'rewind.escToExit': string\n 'rewind.moreAbove': string\n 'rewind.moreBelow': string\n 'rewind.bashWarning': string\n 'rewind.action.restoreCodeAndConversation': string\n 'rewind.action.restoreConversation': string\n 'rewind.action.restoreCode': string\n 'rewind.action.summarizeFromHere': string\n 'rewind.action.neverMind': string\n 'rewind.restored': string\n 'rewind.summarizing': 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 // Dialog - Generic\n 'dialog.enterToConfirm': string\n 'dialog.escToCancel': string\n 'dialog.confirmCancelPrompt': string\n 'dialog.enterCustomResponse': string\n // Dialog - Message selector\n 'dialog.jumpToPreviousMessage': string\n 'dialog.forkConversation': string\n 'dialog.current': string\n 'dialog.emptyMessage': string\n 'dialog.selectConfirmCancelPrompt': string\n // Dialog - MCP server\n 'dialog.mcpServerDetected': string\n 'dialog.mcpServersDetected': string\n 'dialog.mcpApprovalRequired': string\n 'dialog.mcpSelectServers': string\n 'dialog.approveServer': string\n 'dialog.rejectServer': string\n 'dialog.confirmRejectPrompt': string\n 'dialog.selectConfirmRejectAllPrompt': string\n // Dialog - Trust\n 'dialog.trustTitle': string\n 'dialog.trustWarning1': string\n 'dialog.trustWarning2': string\n 'dialog.yesProceed': string\n 'dialog.noExit': string\n 'dialog.confirmExitPrompt': string\n\n // Config\n 'config.title': string\n 'config.modelConfiguration': string\n 'config.noModelsConfigured': string\n 'config.useModelCommand': string\n 'config.enterToSaveEscToCancel': string\n 'config.navigateChangeClose': string\n 'config.enterNewValue': string\n 'config.theme': string\n 'config.verboseMode': string\n 'config.streamResponses': string\n 'config.compressionMode': string\n 'config.backupEnabled': string\n 'config.backupEnabled.description': string\n\n // HotkeyHelpPanel\n 'hotkey.navigation': string\n 'hotkey.control': string\n 'hotkey.features': string\n 'hotkey.inputModes': string\n 'hotkey.browseHistory': string\n 'hotkey.searchHistory': string\n 'hotkey.autocomplete': string\n 'hotkey.rollbackResponse': string\n 'hotkey.rewind': string\n 'hotkey.cancelOperation': string\n 'hotkey.exitPressTwice': string\n 'hotkey.clearScreen': string\n 'hotkey.submitPrompt': string\n 'hotkey.toggleTodoPanel': string\n 'hotkey.toggleThinking': string\n 'hotkey.cycleDisplayMode': string\n 'hotkey.showHidePrevious': string\n 'hotkey.executeAsBash': string\n 'hotkey.showHideHelp': string\n 'hotkey.startSlashCommand': string\n 'hotkey.executeBashCommand': string\n 'hotkey.addNoteToKoding': string\n 'hotkey.ctrlQuestionForShortcuts': string\n 'hotkey.toggleTeamPanel': string\n 'hotkey.agentTeams': string\n 'hotkey.cycleTeammate': string\n 'hotkey.toggleAgentView': string\n 'hotkey.killAllAgents': string\n 'hotkey.cyclePermissionMode': string\n 'hotkey.openExternalEditor': 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 // UI - TabbedListView\n 'ui.tabbedList.search': string\n 'ui.tabbedList.loading': string\n 'ui.tabbedList.noItems': string\n 'ui.tabbedList.moreAbove': string\n 'ui.tabbedList.moreBelow': string\n 'ui.tabbedList.tabCycleHint': string\n 'ui.tabbedList.navigationHint': string\n\n // UI - InfoPanel\n 'ui.infoPanel.continueHint': string\n 'ui.infoPanel.dismissHint': string\n\n // UI - SimpleSelector\n 'ui.simpleSelector.navigationHint': string\n 'ui.simpleSelector.dismissHint': string\n\n // Commands - Status\n 'commands.status.title': string\n 'commands.status.versionInfo': string\n 'commands.status.environment': string\n 'commands.status.modelConfiguration': string\n 'commands.status.apiConnection': string\n 'commands.status.connected': string\n 'commands.status.notConnected': string\n 'commands.status.notConfigured': string\n\n // Commands - Context\n 'commands.context.title': string\n 'commands.context.contextUsage': string\n 'commands.context.tokens': string\n 'commands.context.remaining': string\n 'commands.context.messages': string\n 'commands.context.estTurns': string\n 'commands.context.highUsage': string\n 'commands.context.criticalUsage': string\n\n // Commands - Model status\n 'commands.model.title': string\n 'commands.model.modelPointers': string\n 'commands.model.configure': string\n 'commands.model.error': string\n // Commands - Model (refactored phases)\n 'commands.model.selectModel': string\n 'commands.model.pointerUpdated': string\n 'commands.model.pointerCleared': string\n 'commands.model.modelLibrary': string\n 'commands.model.modelLibrarySubtitle': string\n 'commands.model.addNewModel': string\n 'commands.model.clearAssignment': string\n 'commands.model.modelActions': string\n 'commands.model.confirmDeleteTitle': string\n 'commands.model.confirmDeleteYes': string\n 'commands.model.confirmDeleteNo': string\n 'commands.model.editModel': string\n 'commands.model.editTitle': string\n 'commands.model.modelDeleted': string\n 'commands.model.deleteFailed': string\n 'commands.model.actionsCategory': string\n 'commands.model.pointersCategory': string\n\n // Commands - Sandbox\n 'commands.sandbox.title': string\n 'commands.sandbox.statusSection': string\n 'commands.sandbox.implementation': string\n 'commands.sandbox.filesystemPolicy': string\n 'commands.sandbox.networkPolicy': string\n 'commands.sandbox.processPolicy': string\n 'commands.sandbox.helpSection': string\n 'commands.sandbox.toggle': string\n 'commands.sandbox.toggleHelp': string\n 'commands.sandbox.enabled': string\n 'commands.sandbox.disabled': string\n 'commands.sandbox.notAvailable': string\n\n // Commands - Help\n 'commands.help.title': string\n\n // Commands - MCP\n 'commands.mcp.title': string\n 'commands.mcp.noServers': string\n 'commands.mcp.addServer': string\n 'commands.mcp.refreshAll': string\n 'commands.mcp.enable': string\n 'commands.mcp.disable': string\n 'commands.mcp.deleteServer': string\n 'commands.mcp.confirmDeleteTitle': string\n 'commands.mcp.confirmYes': string\n 'commands.mcp.confirmNo': string\n // MCP - Tabs\n 'commands.mcp.tabAll': string\n 'commands.mcp.tabProject': string\n 'commands.mcp.tabGlobal': string\n // MCP - Add server\n 'commands.mcp.addNamePlaceholder': string\n 'commands.mcp.addCommandPlaceholder': string\n 'commands.mcp.addFooterHint': string\n 'commands.mcp.addCommandFooterHint': string\n // MCP - Status overlays\n 'commands.mcp.adding': string\n 'commands.mcp.addSuccess': string\n 'commands.mcp.addFailed': string\n 'commands.mcp.toggling': string\n 'commands.mcp.toggleSuccess': string\n 'commands.mcp.deleting': string\n 'commands.mcp.deleteSuccess': string\n 'commands.mcp.refreshing': string\n 'commands.mcp.refreshSuccess': string\n // MCP - Sub-phase labels\n 'commands.mcp.back': string\n 'commands.mcp.actions': string\n\n // Commands - Undo\n 'commands.undo.tabFiles': string\n 'commands.undo.tabVersions': string\n\n // Commands - Export\n 'commands.export.description': string\n 'commands.export.title': string\n 'commands.export.selectType': string\n 'commands.export.selectScope': string\n 'commands.export.typeRuntime': string\n 'commands.export.typeRuntimeDesc': string\n 'commands.export.typeTeam': string\n 'commands.export.typeTeamDesc': string\n 'commands.export.scopeUser': string\n 'commands.export.scopeUserDesc': string\n 'commands.export.scopeProject': string\n 'commands.export.scopeProjectDesc': string\n 'commands.export.typeConversation': string\n 'commands.export.typeConversationDesc': string\n 'commands.export.typeSummary': string\n 'commands.export.typeSummaryDesc': string\n 'commands.export.exporting': string\n 'commands.export.success': string\n 'commands.export.failed': string\n 'commands.export.noPlugins': string\n 'commands.export.noAgents': string\n 'commands.export.noHooks': string\n 'commands.export.navigationHint': string\n 'commands.export.sensitiveDataTitle': string\n 'commands.export.sensitiveDataQuestion': string\n 'commands.export.sensitiveInclude': string\n 'commands.export.sensitiveIncludeDesc': string\n 'commands.export.sensitivePlaceholder': string\n 'commands.export.sensitivePlaceholderDesc': string\n // Export - scope descriptions\n 'commands.export.scopeAll': string\n 'commands.export.scopeAllDesc': string\n // Export - flattened TabbedListView items\n 'commands.export.itemTeamUserInclude': string\n 'commands.export.itemTeamUserPlaceholder': string\n 'commands.export.itemTeamProjectInclude': string\n 'commands.export.itemTeamProjectPlaceholder': string\n 'commands.export.itemTeamAllInclude': string\n 'commands.export.itemTeamAllPlaceholder': string\n 'commands.export.itemRuntimeUser': string\n 'commands.export.itemRuntimeProject': string\n 'commands.export.itemRuntimeAll': string\n 'commands.export.itemConversation': string\n 'commands.export.itemSummary': string\n 'commands.export.footerHint': string\n\n // Commands - Setup\n 'commands.setup.description': string\n 'commands.setup.previewTitle': string\n 'commands.setup.tabOverview': string\n 'commands.setup.tabModels': string\n 'commands.setup.tabMcp': string\n 'commands.setup.tabPlugins': string\n 'commands.setup.tabAgents': string\n 'commands.setup.tabHooks': string\n 'commands.setup.tabSettings': string\n 'commands.setup.confirmHint': string\n 'commands.setup.applying': string\n 'commands.setup.tabSkills': string\n 'commands.setup.tabCommands': string\n 'commands.setup.installingPlugins': string\n 'commands.setup.installingProjectPlugins': string\n 'commands.setup.installingAgents': string\n 'commands.setup.installingHooks': string\n 'commands.setup.installingSkills': string\n 'commands.setup.installingCommands': string\n 'commands.setup.addingMarketplaces': string\n 'commands.setup.success': string\n 'commands.setup.failed': string\n 'commands.setup.loading': string\n 'commands.setup.errorMissingFrom': string\n 'commands.setup.errorUsage': string\n\n // Commands - Stats\n 'commands.stats.description': string\n 'commands.stats.title': string\n 'commands.stats.today': string\n 'commands.stats.thisWeek': string\n 'commands.stats.thisMonth': string\n 'commands.stats.lifetime': string\n 'commands.stats.messages': string\n 'commands.stats.sessions': string\n 'commands.stats.toolCalls': string\n 'commands.stats.tokens': string\n 'commands.stats.totalMessages': string\n 'commands.stats.totalSessions': string\n 'commands.stats.totalTools': string\n 'commands.stats.estCost': string\n 'commands.stats.modelUsage': string\n 'commands.stats.topTools': string\n 'commands.stats.calls': string\n 'commands.stats.noData': string\n 'commands.stats.vsYesterday': string\n 'commands.stats.firstUsed': string\n\n // ModelSelector Wizard\n 'modelSelector.providerSelection': string\n 'modelSelector.providerSelectionDesc': string\n 'modelSelector.providerSelectionHint': string\n 'modelSelector.anthropicSubMenu': string\n 'modelSelector.anthropicSubMenuDesc': string\n 'modelSelector.anthropicOfficial': string\n 'modelSelector.anthropicOfficialDesc': string\n 'modelSelector.anthropicBigdream': string\n 'modelSelector.anthropicBigdreamDesc': string\n 'modelSelector.anthropicOpendev': string\n 'modelSelector.anthropicOpendevDesc': string\n 'modelSelector.anthropicCustom': string\n 'modelSelector.anthropicCustomDesc': string\n 'modelSelector.baseUrlTitle': string\n 'modelSelector.baseUrlDesc': string\n 'modelSelector.baseUrlOllamaDesc': string\n 'modelSelector.customApiTitle': string\n 'modelSelector.customApiDesc': string\n 'modelSelector.apiKeyTitle': string\n 'modelSelector.apiKeyDesc': string\n 'modelSelector.apiKeyTabHintManual': string\n 'modelSelector.apiKeyTabHintSkip': string\n 'modelSelector.resourceNameTitle': string\n 'modelSelector.resourceNameDesc': string\n 'modelSelector.modelSelectionTitle': string\n 'modelSelector.modelSelectionDesc': string\n 'modelSelector.modelSearchPlaceholder': string\n 'modelSelector.modelInputTitle': string\n 'modelSelector.modelParamsTitle': string\n 'modelSelector.modelParamsDesc': string\n 'modelSelector.maxTokens': string\n 'modelSelector.reasoningEffort': string\n 'modelSelector.contextLengthTitle': string\n 'modelSelector.contextLengthDesc': string\n 'modelSelector.connectionTestRetry': string\n 'modelSelector.confirmationSave': string\n 'modelSelector.configError': string\n 'modelSelector.testAndSaveTitle': string\n 'modelSelector.testAndSaveDesc': string\n 'modelSelector.saveAnyway': string\n 'modelSelector.autoTesting': string\n 'modelSelector.footerEnterContinue': string\n 'modelSelector.footerEscBack': string\n 'modelSelector.footerNavSelectEsc': string\n 'modelSelector.footerTabNavigate': string\n 'modelSelector.showingModels': string\n 'modelSelector.noModelsMatch': string\n 'modelSelector.noModelsAvailable': string\n 'modelSelector.recommended': string\n 'modelSelector.continue': 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
5
|
"mappings": "AAcO,MAAM,iBAA2C;AAAA,EACtD,IAAI;AAAA,EACJ,SAAS;AACX;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/messages.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/messages.ts"],
|
|
4
|
-
"sourcesContent": ["import React from 'react'\nimport type { Message } from './query'\n\n/**\n * MessageBus \u2014 encapsulates global message state and UI refresh handlers.\n *\n * Replaces loose module-level variables with a single owning object.\n * Provides getter/setter registration for React state binding,\n * plus event-style hooks for model config and language changes.\n */\nclass MessageBus {\n private messagesGetter: () => Message[] = () => []\n private messagesSetter: React.Dispatch<React.SetStateAction<Message[]>> =\n () => {}\n private modelConfigChangeHandler: (() => void) | null = null\n private languageChangeHandler: (() => Promise<void>) | null = null\n\n registerMessagesGetter(getter: () => Message[]): void {\n this.messagesGetter = getter\n }\n\n getMessagesGetter(): () => Message[] {\n return this.messagesGetter\n }\n\n registerMessagesSetter(\n setter: React.Dispatch<React.SetStateAction<Message[]>>,\n ): void {\n this.messagesSetter = setter\n }\n\n getMessagesSetter(): React.Dispatch<React.SetStateAction<Message[]>> {\n return this.messagesSetter\n }\n\n setModelConfigChangeHandler(handler: () => void): void {\n this.modelConfigChangeHandler = handler\n }\n\n triggerModelConfigChange(): void {\n this.modelConfigChangeHandler?.()\n }\n\n setLanguageChangeHandler(handler: () => Promise<void>): void {\n this.languageChangeHandler = handler\n }\n\n async triggerLanguageChange(): Promise<void> {\n await this.languageChangeHandler?.()\n }\n}\n\nexport const messageBus = new MessageBus()\n\n// Backward-compatible function exports (thin wrappers)\nexport function setMessagesGetter(getter: () => Message[]) {\n messageBus.registerMessagesGetter(getter)\n}\n\nexport function getMessagesGetter(): () => Message[] {\n return messageBus.getMessagesGetter()\n}\n\nexport function setMessagesSetter(\n setter: React.Dispatch<React.SetStateAction<Message[]>>,\n) {\n messageBus.registerMessagesSetter(setter)\n}\n\nexport function getMessagesSetter(): React.Dispatch<\n React.SetStateAction<Message[]>\n> {\n return messageBus.getMessagesSetter()\n}\n\nexport function setModelConfigChangeHandler(handler: () => void) {\n messageBus.setModelConfigChangeHandler(handler)\n}\n\nexport function triggerModelConfigChange() {\n messageBus.triggerModelConfigChange()\n}\n\nexport function setLanguageChangeHandler(handler: () => Promise<void>) {\n messageBus.setLanguageChangeHandler(handler)\n}\n\nexport async function triggerLanguageChange() {\n await messageBus.triggerLanguageChange()\n}\n"],
|
|
5
|
-
"mappings": "AAUA,MAAM,WAAW;AAAA,EACP,iBAAkC,MAAM,CAAC;AAAA,EACzC,iBACN,MAAM;AAAA,EAAC;AAAA,EACD,
|
|
4
|
+
"sourcesContent": ["import React from 'react'\nimport type { Message } from './query'\n\n/**\n * MessageBus \u2014 encapsulates global message state and UI refresh handlers.\n *\n * Replaces loose module-level variables with a single owning object.\n * Provides getter/setter registration for React state binding,\n * plus event-style hooks for model config and language changes.\n */\nclass MessageBus {\n private messagesGetter: () => Message[] = () => []\n private messagesSetter: React.Dispatch<React.SetStateAction<Message[]>> =\n () => {}\n private modelConfigChangeHandler: (() => void | Promise<void>) | null = null\n private languageChangeHandler: (() => Promise<void>) | null = null\n\n registerMessagesGetter(getter: () => Message[]): void {\n this.messagesGetter = getter\n }\n\n getMessagesGetter(): () => Message[] {\n return this.messagesGetter\n }\n\n registerMessagesSetter(\n setter: React.Dispatch<React.SetStateAction<Message[]>>,\n ): void {\n this.messagesSetter = setter\n }\n\n getMessagesSetter(): React.Dispatch<React.SetStateAction<Message[]>> {\n return this.messagesSetter\n }\n\n setModelConfigChangeHandler(handler: () => void | Promise<void>): void {\n this.modelConfigChangeHandler = handler\n }\n\n triggerModelConfigChange(): void {\n this.modelConfigChangeHandler?.()\n }\n\n setLanguageChangeHandler(handler: () => Promise<void>): void {\n this.languageChangeHandler = handler\n }\n\n async triggerLanguageChange(): Promise<void> {\n await this.languageChangeHandler?.()\n }\n}\n\nexport const messageBus = new MessageBus()\n\n// Backward-compatible function exports (thin wrappers)\nexport function setMessagesGetter(getter: () => Message[]) {\n messageBus.registerMessagesGetter(getter)\n}\n\nexport function getMessagesGetter(): () => Message[] {\n return messageBus.getMessagesGetter()\n}\n\nexport function setMessagesSetter(\n setter: React.Dispatch<React.SetStateAction<Message[]>>,\n) {\n messageBus.registerMessagesSetter(setter)\n}\n\nexport function getMessagesSetter(): React.Dispatch<\n React.SetStateAction<Message[]>\n> {\n return messageBus.getMessagesSetter()\n}\n\nexport function setModelConfigChangeHandler(\n handler: () => void | Promise<void>,\n) {\n messageBus.setModelConfigChangeHandler(handler)\n}\n\nexport function triggerModelConfigChange() {\n messageBus.triggerModelConfigChange()\n}\n\nexport function setLanguageChangeHandler(handler: () => Promise<void>) {\n messageBus.setLanguageChangeHandler(handler)\n}\n\nexport async function triggerLanguageChange() {\n await messageBus.triggerLanguageChange()\n}\n"],
|
|
5
|
+
"mappings": "AAUA,MAAM,WAAW;AAAA,EACP,iBAAkC,MAAM,CAAC;AAAA,EACzC,iBACN,MAAM;AAAA,EAAC;AAAA,EACD,2BAAgE;AAAA,EAChE,wBAAsD;AAAA,EAE9D,uBAAuB,QAA+B;AACpD,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAEA,oBAAqC;AACnC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,uBACE,QACM;AACN,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAEA,oBAAqE;AACnE,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,4BAA4B,SAA2C;AACrE,SAAK,2BAA2B;AAAA,EAClC;AAAA,EAEA,2BAAiC;AAC/B,SAAK,2BAA2B;AAAA,EAClC;AAAA,EAEA,yBAAyB,SAAoC;AAC3D,SAAK,wBAAwB;AAAA,EAC/B;AAAA,EAEA,MAAM,wBAAuC;AAC3C,UAAM,KAAK,wBAAwB;AAAA,EACrC;AACF;AAEO,MAAM,aAAa,IAAI,WAAW;AAGlC,SAAS,kBAAkB,QAAyB;AACzD,aAAW,uBAAuB,MAAM;AAC1C;AAEO,SAAS,oBAAqC;AACnD,SAAO,WAAW,kBAAkB;AACtC;AAEO,SAAS,kBACd,QACA;AACA,aAAW,uBAAuB,MAAM;AAC1C;AAEO,SAAS,oBAEd;AACA,SAAO,WAAW,kBAAkB;AACtC;AAEO,SAAS,4BACd,SACA;AACA,aAAW,4BAA4B,OAAO;AAChD;AAEO,SAAS,2BAA2B;AACzC,aAAW,yBAAyB;AACtC;AAEO,SAAS,yBAAyB,SAA8B;AACrE,aAAW,yBAAyB,OAAO;AAC7C;AAEA,eAAsB,wBAAwB;AAC5C,QAAM,WAAW,sBAAsB;AACzC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/permissions.js
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
} from "./utils/toolRiskClassification.js";
|
|
18
18
|
import { resolve, relative, isAbsolute, join } from "path";
|
|
19
19
|
import { getHookManager } from "./utils/hookManager.js";
|
|
20
|
+
import { isPlanModeEnabled } from "./utils/plan/planMode.js";
|
|
20
21
|
import { existsSync, readFileSync } from "fs";
|
|
21
22
|
import { homedir } from "os";
|
|
22
23
|
import { CONFIG_BASE_DIR } from "./constants/product.js";
|
|
@@ -42,11 +43,30 @@ const bashToolCommandHasExactMatchPermission = (tool, command, allowedTools) =>
|
|
|
42
43
|
}
|
|
43
44
|
return false;
|
|
44
45
|
};
|
|
46
|
+
function matchesPermissionWildcard(key, pattern) {
|
|
47
|
+
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&");
|
|
48
|
+
const regexStr = `^${escaped.replace(/\*/g, ".*")}$`;
|
|
49
|
+
try {
|
|
50
|
+
return new RegExp(regexStr).test(key);
|
|
51
|
+
} catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
45
55
|
const bashToolCommandHasPermission = (tool, command, prefix, allowedTools) => {
|
|
46
56
|
if (bashToolCommandHasExactMatchPermission(tool, command, allowedTools)) {
|
|
47
57
|
return true;
|
|
48
58
|
}
|
|
49
|
-
|
|
59
|
+
const prefixKey = getPermissionKey(tool, { command }, prefix);
|
|
60
|
+
if (allowedTools.includes(prefixKey)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
const commandKey = getPermissionKey(tool, { command }, null);
|
|
64
|
+
for (const allowed of allowedTools) {
|
|
65
|
+
if (allowed.includes("*") && matchesPermissionWildcard(commandKey, allowed)) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
50
70
|
};
|
|
51
71
|
const bashToolHasPermission = async (tool, command, context, allowedTools, getCommandSubcommandPrefixFn = getCommandSubcommandPrefix) => {
|
|
52
72
|
if (bashToolCommandHasExactMatchPermission(tool, command, allowedTools)) {
|
|
@@ -120,7 +140,7 @@ function getEffectiveSafetyMode(options) {
|
|
|
120
140
|
if (options.safeMode === true) {
|
|
121
141
|
return "strict";
|
|
122
142
|
}
|
|
123
|
-
return "
|
|
143
|
+
return "smart";
|
|
124
144
|
}
|
|
125
145
|
function isPathWithinProject(targetPath, projectDir) {
|
|
126
146
|
const absolutePath = isAbsolute(targetPath) ? resolve(targetPath) : resolve(projectDir, targetPath);
|
|
@@ -223,13 +243,13 @@ function areAllPathsWithinProject(toolName, input, projectDir) {
|
|
|
223
243
|
}
|
|
224
244
|
function shouldAllowByRiskLevel(safetyMode, riskLevel, toolName, input) {
|
|
225
245
|
switch (safetyMode) {
|
|
226
|
-
case "
|
|
246
|
+
case "free":
|
|
227
247
|
return true;
|
|
228
248
|
case "smart":
|
|
229
249
|
return riskLevel === "safe" || riskLevel === "monitored";
|
|
230
250
|
case "strict":
|
|
231
251
|
return riskLevel === "safe";
|
|
232
|
-
case "
|
|
252
|
+
case "yolo":
|
|
233
253
|
if (riskLevel === "safe") {
|
|
234
254
|
return true;
|
|
235
255
|
}
|
|
@@ -246,8 +266,17 @@ function shouldAllowByRiskLevel(safetyMode, riskLevel, toolName, input) {
|
|
|
246
266
|
}
|
|
247
267
|
}
|
|
248
268
|
let settingsPermissionsCache = null;
|
|
269
|
+
let settingsPermissionsCacheTimestamp = 0;
|
|
270
|
+
const SETTINGS_CACHE_TTL = 3e4;
|
|
271
|
+
function invalidateSettingsPermissionsCache() {
|
|
272
|
+
settingsPermissionsCache = null;
|
|
273
|
+
settingsPermissionsCacheTimestamp = 0;
|
|
274
|
+
}
|
|
249
275
|
function loadSettingsPermissions() {
|
|
250
|
-
|
|
276
|
+
const now = Date.now();
|
|
277
|
+
if (settingsPermissionsCache && now - settingsPermissionsCacheTimestamp < SETTINGS_CACHE_TTL) {
|
|
278
|
+
return settingsPermissionsCache;
|
|
279
|
+
}
|
|
251
280
|
const deny = [];
|
|
252
281
|
const allow = [];
|
|
253
282
|
const cwd = getCwd();
|
|
@@ -258,20 +287,30 @@ function loadSettingsPermissions() {
|
|
|
258
287
|
join(cwd, ".claude", "settings.json"),
|
|
259
288
|
join(cwd, CONFIG_BASE_DIR, "settings.json")
|
|
260
289
|
];
|
|
290
|
+
const homeDir = home;
|
|
261
291
|
for (const file of settingsFiles) {
|
|
262
292
|
if (!existsSync(file)) continue;
|
|
293
|
+
const isProjectLevel = !file.startsWith(homeDir + "/.claude") && !file.startsWith(homeDir + "/" + CONFIG_BASE_DIR);
|
|
263
294
|
try {
|
|
264
295
|
const content = JSON.parse(readFileSync(file, "utf-8"));
|
|
265
296
|
if (content?.permissions?.deny && Array.isArray(content.permissions.deny)) {
|
|
266
297
|
deny.push(...content.permissions.deny);
|
|
267
298
|
}
|
|
268
299
|
if (content?.permissions?.allow && Array.isArray(content.permissions.allow)) {
|
|
269
|
-
|
|
300
|
+
if (isProjectLevel) {
|
|
301
|
+
const safeProjectAllows = content.permissions.allow.filter(
|
|
302
|
+
(pattern) => ["Read", "Glob", "Grep", "LS", "NotebookRead"].includes(pattern)
|
|
303
|
+
);
|
|
304
|
+
allow.push(...safeProjectAllows);
|
|
305
|
+
} else {
|
|
306
|
+
allow.push(...content.permissions.allow);
|
|
307
|
+
}
|
|
270
308
|
}
|
|
271
309
|
} catch {
|
|
272
310
|
}
|
|
273
311
|
}
|
|
274
312
|
settingsPermissionsCache = { deny, allow };
|
|
313
|
+
settingsPermissionsCacheTimestamp = Date.now();
|
|
275
314
|
return settingsPermissionsCache;
|
|
276
315
|
}
|
|
277
316
|
function matchesPermissionPattern(toolName, input, patterns) {
|
|
@@ -291,6 +330,42 @@ function matchesPermissionPattern(toolName, input, patterns) {
|
|
|
291
330
|
return false;
|
|
292
331
|
}
|
|
293
332
|
const hasPermissionsToUseTool = async (tool, input, context, _assistantMessage) => {
|
|
333
|
+
if (context?.options?.permissionMode === "bypassPermissions") {
|
|
334
|
+
return { result: true };
|
|
335
|
+
}
|
|
336
|
+
const planMode = isPlanModeEnabled(context);
|
|
337
|
+
if (planMode) {
|
|
338
|
+
const PLAN_MODE_BLOCKED_TOOLS = /* @__PURE__ */ new Set([
|
|
339
|
+
"Edit",
|
|
340
|
+
"Write",
|
|
341
|
+
"MultiEdit",
|
|
342
|
+
"NotebookEdit",
|
|
343
|
+
"Bash"
|
|
344
|
+
]);
|
|
345
|
+
if (PLAN_MODE_BLOCKED_TOOLS.has(tool.name)) {
|
|
346
|
+
return {
|
|
347
|
+
result: false,
|
|
348
|
+
message: `Tool "${tool.name}" is not available in plan mode. Only read-only tools are allowed. Use ExitPlanMode to start implementing changes.`
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (context?.options?.permissionMode === "delegate" || context?.options?.mode === "delegate") {
|
|
353
|
+
const DELEGATE_ALLOWED_TOOLS = /* @__PURE__ */ new Set([
|
|
354
|
+
"TeamCreate",
|
|
355
|
+
"TeamDelete",
|
|
356
|
+
"SendMessage",
|
|
357
|
+
"TaskCreate",
|
|
358
|
+
"TaskGet",
|
|
359
|
+
"TaskUpdate",
|
|
360
|
+
"TaskList"
|
|
361
|
+
]);
|
|
362
|
+
if (!DELEGATE_ALLOWED_TOOLS.has(tool.name)) {
|
|
363
|
+
return {
|
|
364
|
+
result: false,
|
|
365
|
+
message: `Tool "${tool.name}" is not available in delegate mode. Only team/task coordination tools are allowed (TeamCreate, TeamDelete, SendMessage, TaskCreate, TaskGet, TaskUpdate, TaskList).`
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
}
|
|
294
369
|
const settingsPerms = loadSettingsPermissions();
|
|
295
370
|
if (matchesPermissionPattern(
|
|
296
371
|
tool.name,
|
|
@@ -309,11 +384,41 @@ const hasPermissionsToUseTool = async (tool, input, context, _assistantMessage)
|
|
|
309
384
|
)) {
|
|
310
385
|
return { result: true };
|
|
311
386
|
}
|
|
312
|
-
const
|
|
387
|
+
const permissionMode = context?.options?.permissionMode;
|
|
313
388
|
const riskLevel = getToolRiskLevel(
|
|
314
389
|
tool.name,
|
|
315
390
|
input
|
|
316
391
|
);
|
|
392
|
+
if (permissionMode === "acceptEdits") {
|
|
393
|
+
const FILE_EDIT_TOOLS = /* @__PURE__ */ new Set([
|
|
394
|
+
"Edit",
|
|
395
|
+
"Write",
|
|
396
|
+
"NotebookEdit",
|
|
397
|
+
"MultiEdit"
|
|
398
|
+
]);
|
|
399
|
+
if (FILE_EDIT_TOOLS.has(tool.name)) {
|
|
400
|
+
const paths = extractPathsFromToolInput(
|
|
401
|
+
tool.name,
|
|
402
|
+
input
|
|
403
|
+
);
|
|
404
|
+
const projectDir = getCwd();
|
|
405
|
+
const allWithinProject = paths.length === 0 || paths.every(
|
|
406
|
+
(p) => !isSystemCriticalPath(p) && isPathWithinProject(p, projectDir)
|
|
407
|
+
);
|
|
408
|
+
if (allWithinProject) {
|
|
409
|
+
return { result: true };
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
if (permissionMode === "dontAsk") {
|
|
414
|
+
if (riskLevel !== "safe") {
|
|
415
|
+
return {
|
|
416
|
+
result: false,
|
|
417
|
+
message: `Permission to use ${tool.name} has been auto-denied in dontAsk mode. Add it to permissions.allow in settings to enable it.`
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
const safetyMode = getEffectiveSafetyMode(context.options);
|
|
317
422
|
if (shouldAllowByRiskLevel(
|
|
318
423
|
safetyMode,
|
|
319
424
|
riskLevel,
|
|
@@ -425,6 +530,7 @@ export {
|
|
|
425
530
|
bashToolCommandHasPermission,
|
|
426
531
|
bashToolHasPermission,
|
|
427
532
|
hasPermissionsToUseTool,
|
|
533
|
+
invalidateSettingsPermissionsCache,
|
|
428
534
|
savePermission
|
|
429
535
|
};
|
|
430
536
|
//# sourceMappingURL=permissions.js.map
|