@within-7/minto 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/dist/commands/agents/AgentsCommand.js +22 -24
  2. package/dist/commands/agents/AgentsCommand.js.map +2 -2
  3. package/dist/commands/context.js +2 -1
  4. package/dist/commands/context.js.map +2 -2
  5. package/dist/commands/export.js +2 -1
  6. package/dist/commands/export.js.map +2 -2
  7. package/dist/commands/mcp-interactive.js +7 -6
  8. package/dist/commands/mcp-interactive.js.map +2 -2
  9. package/dist/commands/model.js +3 -2
  10. package/dist/commands/model.js.map +2 -2
  11. package/dist/commands/permissions.js +4 -3
  12. package/dist/commands/permissions.js.map +2 -2
  13. package/dist/commands/plugin/AddMarketplaceForm.js +3 -2
  14. package/dist/commands/plugin/AddMarketplaceForm.js.map +2 -2
  15. package/dist/commands/plugin/ConfirmDialog.js +2 -1
  16. package/dist/commands/plugin/ConfirmDialog.js.map +2 -2
  17. package/dist/commands/plugin/ErrorView.js +2 -1
  18. package/dist/commands/plugin/ErrorView.js.map +2 -2
  19. package/dist/commands/plugin/InstalledPluginsByMarketplace.js +5 -4
  20. package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +2 -2
  21. package/dist/commands/plugin/InstalledPluginsManager.js +5 -4
  22. package/dist/commands/plugin/InstalledPluginsManager.js.map +2 -2
  23. package/dist/commands/plugin/MainMenu.js +2 -1
  24. package/dist/commands/plugin/MainMenu.js.map +2 -2
  25. package/dist/commands/plugin/MarketplaceManager.js +5 -4
  26. package/dist/commands/plugin/MarketplaceManager.js.map +2 -2
  27. package/dist/commands/plugin/MarketplaceSelector.js +4 -3
  28. package/dist/commands/plugin/MarketplaceSelector.js.map +2 -2
  29. package/dist/commands/plugin/PlaceholderScreen.js +3 -2
  30. package/dist/commands/plugin/PlaceholderScreen.js.map +2 -2
  31. package/dist/commands/plugin/PluginBrowser.js +6 -5
  32. package/dist/commands/plugin/PluginBrowser.js.map +2 -2
  33. package/dist/commands/plugin/PluginDetailsInstall.js +5 -4
  34. package/dist/commands/plugin/PluginDetailsInstall.js.map +2 -2
  35. package/dist/commands/plugin/PluginDetailsManage.js +4 -3
  36. package/dist/commands/plugin/PluginDetailsManage.js.map +2 -2
  37. package/dist/commands/plugin.js +16 -15
  38. package/dist/commands/plugin.js.map +2 -2
  39. package/dist/commands/sandbox.js +4 -3
  40. package/dist/commands/sandbox.js.map +2 -2
  41. package/dist/commands/setup.js +2 -1
  42. package/dist/commands/setup.js.map +2 -2
  43. package/dist/commands/status.js +2 -1
  44. package/dist/commands/status.js.map +2 -2
  45. package/dist/commands/undo.js +245 -0
  46. package/dist/commands/undo.js.map +7 -0
  47. package/dist/commands.js +2 -0
  48. package/dist/commands.js.map +2 -2
  49. package/dist/components/AgentThinkingBlock.js +1 -1
  50. package/dist/components/AgentThinkingBlock.js.map +2 -2
  51. package/dist/components/AsciiLogo.js +7 -8
  52. package/dist/components/AsciiLogo.js.map +2 -2
  53. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +3 -2
  54. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +2 -2
  55. package/dist/components/AskUserQuestionDialog/QuestionView.js +2 -1
  56. package/dist/components/AskUserQuestionDialog/QuestionView.js.map +2 -2
  57. package/dist/components/CollapsibleHint.js +2 -1
  58. package/dist/components/CollapsibleHint.js.map +2 -2
  59. package/dist/components/Config.js +3 -2
  60. package/dist/components/Config.js.map +2 -2
  61. package/dist/components/ConsoleOAuthFlow.js +2 -1
  62. package/dist/components/ConsoleOAuthFlow.js.map +2 -2
  63. package/dist/components/Cost.js +2 -1
  64. package/dist/components/Cost.js.map +2 -2
  65. package/dist/components/HeaderBar.js +13 -8
  66. package/dist/components/HeaderBar.js.map +2 -2
  67. package/dist/components/HistorySearchOverlay.js +4 -3
  68. package/dist/components/HistorySearchOverlay.js.map +2 -2
  69. package/dist/components/HotkeyHelpPanel.js +8 -11
  70. package/dist/components/HotkeyHelpPanel.js.map +2 -2
  71. package/dist/components/InvalidConfigDialog.js +2 -1
  72. package/dist/components/InvalidConfigDialog.js.map +2 -2
  73. package/dist/components/Logo.js +23 -67
  74. package/dist/components/Logo.js.map +2 -2
  75. package/dist/components/MCPServerApprovalDialog.js +2 -1
  76. package/dist/components/MCPServerApprovalDialog.js.map +2 -2
  77. package/dist/components/MCPServerDialogCopy.js +2 -1
  78. package/dist/components/MCPServerDialogCopy.js.map +2 -2
  79. package/dist/components/MCPServerMultiselectDialog.js +2 -1
  80. package/dist/components/MCPServerMultiselectDialog.js.map +2 -2
  81. package/dist/components/MessageSelector.js +4 -3
  82. package/dist/components/MessageSelector.js.map +2 -2
  83. package/dist/components/ModeIndicator.js +2 -1
  84. package/dist/components/ModeIndicator.js.map +2 -2
  85. package/dist/components/ModelConfig.js +4 -3
  86. package/dist/components/ModelConfig.js.map +2 -2
  87. package/dist/components/ModelListManager.js +4 -3
  88. package/dist/components/ModelListManager.js.map +2 -2
  89. package/dist/components/ModelSelector/ModelSelector.js +26 -13
  90. package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
  91. package/dist/components/Onboarding.js +3 -2
  92. package/dist/components/Onboarding.js.map +2 -2
  93. package/dist/components/OperationSummary.js +130 -0
  94. package/dist/components/OperationSummary.js.map +7 -0
  95. package/dist/components/PromptInput.js +88 -75
  96. package/dist/components/PromptInput.js.map +2 -2
  97. package/dist/components/SensitiveFileWarning.js +31 -0
  98. package/dist/components/SensitiveFileWarning.js.map +7 -0
  99. package/dist/components/Spinner.js +71 -22
  100. package/dist/components/Spinner.js.map +2 -2
  101. package/dist/components/StructuredDiff.js +6 -8
  102. package/dist/components/StructuredDiff.js.map +2 -2
  103. package/dist/components/SubagentBlock.js +4 -2
  104. package/dist/components/SubagentBlock.js.map +2 -2
  105. package/dist/components/SubagentProgress.js +7 -4
  106. package/dist/components/SubagentProgress.js.map +2 -2
  107. package/dist/components/TaskCard.js +14 -11
  108. package/dist/components/TaskCard.js.map +2 -2
  109. package/dist/components/TextInput.js +9 -1
  110. package/dist/components/TextInput.js.map +2 -2
  111. package/dist/components/TodoPanel.js +44 -26
  112. package/dist/components/TodoPanel.js.map +2 -2
  113. package/dist/components/ToolUseLoader.js +2 -2
  114. package/dist/components/ToolUseLoader.js.map +2 -2
  115. package/dist/components/TreeConnector.js +4 -3
  116. package/dist/components/TreeConnector.js.map +2 -2
  117. package/dist/components/TrustDialog.js +2 -1
  118. package/dist/components/TrustDialog.js.map +2 -2
  119. package/dist/components/binary-feedback/BinaryFeedbackView.js +2 -1
  120. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +2 -2
  121. package/dist/components/messages/AssistantTextMessage.js +17 -9
  122. package/dist/components/messages/AssistantTextMessage.js.map +2 -2
  123. package/dist/components/messages/AssistantToolUseMessage.js +8 -4
  124. package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
  125. package/dist/components/messages/GroupRenderer.js +2 -1
  126. package/dist/components/messages/GroupRenderer.js.map +2 -2
  127. package/dist/components/messages/NestedTasksPreview.js +13 -1
  128. package/dist/components/messages/NestedTasksPreview.js.map +2 -2
  129. package/dist/components/messages/ParallelTasksGroupView.js +4 -3
  130. package/dist/components/messages/ParallelTasksGroupView.js.map +2 -2
  131. package/dist/components/messages/TaskInModuleView.js +35 -15
  132. package/dist/components/messages/TaskInModuleView.js.map +2 -2
  133. package/dist/components/messages/TaskOutputContent.js +9 -6
  134. package/dist/components/messages/TaskOutputContent.js.map +2 -2
  135. package/dist/components/messages/UserPromptMessage.js +2 -2
  136. package/dist/components/messages/UserPromptMessage.js.map +2 -2
  137. package/dist/constants/colors.js +90 -72
  138. package/dist/constants/colors.js.map +2 -2
  139. package/dist/constants/toolInputExamples.js +84 -0
  140. package/dist/constants/toolInputExamples.js.map +7 -0
  141. package/dist/core/backupManager.js +321 -0
  142. package/dist/core/backupManager.js.map +7 -0
  143. package/dist/core/costTracker.js +9 -18
  144. package/dist/core/costTracker.js.map +2 -2
  145. package/dist/core/gitAutoCommit.js +287 -0
  146. package/dist/core/gitAutoCommit.js.map +7 -0
  147. package/dist/core/index.js +3 -0
  148. package/dist/core/index.js.map +2 -2
  149. package/dist/core/operationTracker.js +212 -0
  150. package/dist/core/operationTracker.js.map +7 -0
  151. package/dist/core/permissions/rules/allowedToolsRule.js +1 -1
  152. package/dist/core/permissions/rules/allowedToolsRule.js.map +2 -2
  153. package/dist/core/permissions/rules/autoEscalationRule.js +5 -0
  154. package/dist/core/permissions/rules/autoEscalationRule.js.map +2 -2
  155. package/dist/core/permissions/rules/projectBoundaryRule.js +5 -0
  156. package/dist/core/permissions/rules/projectBoundaryRule.js.map +2 -2
  157. package/dist/core/permissions/rules/sensitivePathsRule.js +5 -0
  158. package/dist/core/permissions/rules/sensitivePathsRule.js.map +2 -2
  159. package/dist/core/tokenStats.js +9 -0
  160. package/dist/core/tokenStats.js.map +7 -0
  161. package/dist/core/tokenStatsManager.js +331 -0
  162. package/dist/core/tokenStatsManager.js.map +7 -0
  163. package/dist/entrypoints/cli.js +115 -87
  164. package/dist/entrypoints/cli.js.map +2 -2
  165. package/dist/hooks/useAgentTokenStats.js +72 -0
  166. package/dist/hooks/useAgentTokenStats.js.map +7 -0
  167. package/dist/hooks/useAgentTranscripts.js +30 -6
  168. package/dist/hooks/useAgentTranscripts.js.map +2 -2
  169. package/dist/hooks/useLogMessages.js +12 -1
  170. package/dist/hooks/useLogMessages.js.map +2 -2
  171. package/dist/i18n/locales/en.js +6 -5
  172. package/dist/i18n/locales/en.js.map +2 -2
  173. package/dist/i18n/locales/zh-CN.js +6 -5
  174. package/dist/i18n/locales/zh-CN.js.map +2 -2
  175. package/dist/i18n/types.js.map +1 -1
  176. package/dist/permissions.js +28 -1
  177. package/dist/permissions.js.map +2 -2
  178. package/dist/query.js +78 -4
  179. package/dist/query.js.map +3 -3
  180. package/dist/screens/REPL.js +23 -3
  181. package/dist/screens/REPL.js.map +2 -2
  182. package/dist/services/claude.js +54 -3
  183. package/dist/services/claude.js.map +2 -2
  184. package/dist/services/intelligentCompactor.js +1 -1
  185. package/dist/services/intelligentCompactor.js.map +2 -2
  186. package/dist/services/mcpClient.js +81 -25
  187. package/dist/services/mcpClient.js.map +2 -2
  188. package/dist/services/sandbox/filesystemBoundary.js +58 -17
  189. package/dist/services/sandbox/filesystemBoundary.js.map +2 -2
  190. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +3 -2
  191. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
  192. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js +2 -1
  193. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +2 -2
  194. package/dist/tools/BashTool/BashTool.js +22 -3
  195. package/dist/tools/BashTool/BashTool.js.map +2 -2
  196. package/dist/tools/BashTool/prompt.js +178 -34
  197. package/dist/tools/BashTool/prompt.js.map +2 -2
  198. package/dist/tools/FileEditTool/prompt.js +6 -3
  199. package/dist/tools/FileEditTool/prompt.js.map +2 -2
  200. package/dist/tools/FileWriteTool/prompt.js +4 -2
  201. package/dist/tools/FileWriteTool/prompt.js.map +2 -2
  202. package/dist/tools/MultiEditTool/prompt.js +5 -3
  203. package/dist/tools/MultiEditTool/prompt.js.map +2 -2
  204. package/dist/tools/NotebookEditTool/NotebookEditTool.js +2 -1
  205. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +2 -2
  206. package/dist/tools/PlanModeTool/EnterPlanModeTool.js +3 -2
  207. package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +2 -2
  208. package/dist/tools/PlanModeTool/ExitPlanModeTool.js +3 -2
  209. package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +2 -2
  210. package/dist/tools/PlanModeTool/prompt.js +1 -1
  211. package/dist/tools/PlanModeTool/prompt.js.map +1 -1
  212. package/dist/tools/SkillTool/SkillTool.js +4 -3
  213. package/dist/tools/SkillTool/SkillTool.js.map +2 -2
  214. package/dist/tools/SkillTool/prompt.js +1 -1
  215. package/dist/tools/SkillTool/prompt.js.map +1 -1
  216. package/dist/tools/TaskOutputTool/TaskOutputTool.js +3 -2
  217. package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +2 -2
  218. package/dist/tools/TaskTool/TaskTool.js +8 -0
  219. package/dist/tools/TaskTool/TaskTool.js.map +2 -2
  220. package/dist/utils/CircuitBreaker.js +242 -0
  221. package/dist/utils/CircuitBreaker.js.map +7 -0
  222. package/dist/utils/ask.js +2 -0
  223. package/dist/utils/ask.js.map +2 -2
  224. package/dist/utils/config.js +47 -5
  225. package/dist/utils/config.js.map +2 -2
  226. package/dist/utils/credentials/CredentialStore.js +1 -0
  227. package/dist/utils/credentials/CredentialStore.js.map +7 -0
  228. package/dist/utils/credentials/EncryptedFileStore.js +157 -0
  229. package/dist/utils/credentials/EncryptedFileStore.js.map +7 -0
  230. package/dist/utils/credentials/index.js +37 -0
  231. package/dist/utils/credentials/index.js.map +7 -0
  232. package/dist/utils/credentials/migration.js +82 -0
  233. package/dist/utils/credentials/migration.js.map +7 -0
  234. package/dist/utils/markdown.js +13 -1
  235. package/dist/utils/markdown.js.map +2 -2
  236. package/dist/utils/permissions/filesystem.js +5 -1
  237. package/dist/utils/permissions/filesystem.js.map +2 -2
  238. package/dist/utils/safePath.js +132 -0
  239. package/dist/utils/safePath.js.map +7 -0
  240. package/dist/utils/sensitiveFiles.js +125 -0
  241. package/dist/utils/sensitiveFiles.js.map +7 -0
  242. package/dist/utils/taskDisplayUtils.js +9 -9
  243. package/dist/utils/taskDisplayUtils.js.map +2 -2
  244. package/dist/utils/theme.js +6 -6
  245. package/dist/utils/theme.js.map +1 -1
  246. package/dist/utils/toolRiskClassification.js +207 -0
  247. package/dist/utils/toolRiskClassification.js.map +7 -0
  248. package/dist/utils/tooling/safeRender.js +5 -4
  249. package/dist/utils/tooling/safeRender.js.map +2 -2
  250. package/dist/version.js +2 -2
  251. package/dist/version.js.map +1 -1
  252. package/package.json +9 -7
  253. package/dist/hooks/useCancelRequest.js +0 -31
  254. package/dist/hooks/useCancelRequest.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/useAgentTranscripts.ts"],
4
- "sourcesContent": ["/**\n * useAgentTranscripts Hook\n *\n * Provides real-time access to agent transcripts with automatic updates.\n * Subscribes to transcript events and maintains a reactive map of transcripts.\n */\n\nimport { useState, useEffect, useMemo, useCallback } from 'react'\nimport {\n transcriptEmitter,\n getAgentTranscript,\n type AgentTranscript,\n type TranscriptEvent,\n} from '@utils/agentTranscripts'\n\ninterface UseAgentTranscriptsResult {\n /** Map of agentId to transcript */\n transcripts: Map<string, AgentTranscript>\n /** Get transcript by agentId */\n getTranscript: (agentId: string) => AgentTranscript | null\n /** Force refresh of a specific transcript */\n refreshTranscript: (agentId: string) => void\n /** Number of active transcripts */\n activeCount: number\n}\n\n/**\n * Hook for accessing agent transcripts with real-time updates\n *\n * @param agentIds - Optional list of specific agent IDs to track\n * @returns Transcript state and utilities\n */\nexport function useAgentTranscripts(\n agentIds?: string[],\n): UseAgentTranscriptsResult {\n // State to hold current transcripts\n const [transcripts, setTranscripts] = useState<Map<string, AgentTranscript>>(\n () => new Map(),\n )\n\n // Track which agents we're interested in\n const trackedAgentIds = useMemo(\n () => (agentIds ? new Set(agentIds) : null),\n [agentIds?.join(',')],\n )\n\n // Handle transcript updates\n useEffect(() => {\n const handleUpdate = (event: TranscriptEvent) => {\n // If we have a tracked list and this agent isn't in it, skip\n if (trackedAgentIds && !trackedAgentIds.has(event.agentId)) {\n return\n }\n\n setTranscripts(prev => {\n const next = new Map(prev)\n next.set(event.agentId, event.transcript)\n return next\n })\n }\n\n // Subscribe to all transcript updates\n transcriptEmitter.on('update', handleUpdate)\n\n // Initial load for tracked agents\n if (trackedAgentIds) {\n for (const agentId of trackedAgentIds) {\n const transcript = getAgentTranscript(agentId)\n if (transcript) {\n setTranscripts(prev => {\n const next = new Map(prev)\n next.set(agentId, transcript)\n return next\n })\n }\n }\n }\n\n return () => {\n transcriptEmitter.off('update', handleUpdate)\n }\n }, [trackedAgentIds])\n\n // Get transcript by ID (with fallback to disk)\n const getTranscriptCallback = useCallback(\n (agentId: string): AgentTranscript | null => {\n // Check memory first\n const cached = transcripts.get(agentId)\n if (cached) {\n return cached\n }\n\n // Try to load from disk\n const loaded = getAgentTranscript(agentId)\n if (loaded) {\n // Cache in state for future use\n setTranscripts(prev => {\n const next = new Map(prev)\n next.set(agentId, loaded)\n return next\n })\n }\n return loaded\n },\n [transcripts],\n )\n\n // Force refresh a specific transcript\n const refreshTranscript = useCallback((agentId: string) => {\n const fresh = getAgentTranscript(agentId)\n if (fresh) {\n setTranscripts(prev => {\n const next = new Map(prev)\n next.set(agentId, fresh)\n return next\n })\n }\n }, [])\n\n // Count active (non-completed) transcripts\n const activeCount = useMemo(() => {\n let count = 0\n for (const transcript of transcripts.values()) {\n if (transcript.status === 'running' || transcript.status === 'pending') {\n count++\n }\n }\n return count\n }, [transcripts])\n\n return {\n transcripts,\n getTranscript: getTranscriptCallback,\n refreshTranscript,\n activeCount,\n }\n}\n\n/**\n * Simplified hook for single transcript tracking\n */\nexport function useAgentTranscript(\n agentId: string | undefined,\n): AgentTranscript | null {\n const [transcript, setTranscript] = useState<AgentTranscript | null>(() => {\n if (!agentId) return null\n return getAgentTranscript(agentId)\n })\n\n useEffect(() => {\n if (!agentId) {\n setTranscript(null)\n return\n }\n\n // Load initial\n const initial = getAgentTranscript(agentId)\n if (initial) {\n setTranscript(initial)\n }\n\n // Subscribe to updates for this specific agent\n const handleUpdate = (event: TranscriptEvent) => {\n if (event.agentId === agentId) {\n setTranscript(event.transcript)\n }\n }\n\n transcriptEmitter.on('update', handleUpdate)\n return () => {\n transcriptEmitter.off('update', handleUpdate)\n }\n }, [agentId])\n\n return transcript\n}\n"],
5
- "mappings": "AAOA,SAAS,UAAU,WAAW,SAAS,mBAAmB;AAC1D;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAmBA,SAAS,oBACd,UAC2B;AAE3B,QAAM,CAAC,aAAa,cAAc,IAAI;AAAA,IACpC,MAAM,oBAAI,IAAI;AAAA,EAChB;AAGA,QAAM,kBAAkB;AAAA,IACtB,MAAO,WAAW,IAAI,IAAI,QAAQ,IAAI;AAAA,IACtC,CAAC,UAAU,KAAK,GAAG,CAAC;AAAA,EACtB;AAGA,YAAU,MAAM;AACd,UAAM,eAAe,CAAC,UAA2B;AAE/C,UAAI,mBAAmB,CAAC,gBAAgB,IAAI,MAAM,OAAO,GAAG;AAC1D;AAAA,MACF;AAEA,qBAAe,UAAQ;AACrB,cAAM,OAAO,IAAI,IAAI,IAAI;AACzB,aAAK,IAAI,MAAM,SAAS,MAAM,UAAU;AACxC,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAGA,sBAAkB,GAAG,UAAU,YAAY;AAG3C,QAAI,iBAAiB;AACnB,iBAAW,WAAW,iBAAiB;AACrC,cAAM,aAAa,mBAAmB,OAAO;AAC7C,YAAI,YAAY;AACd,yBAAe,UAAQ;AACrB,kBAAM,OAAO,IAAI,IAAI,IAAI;AACzB,iBAAK,IAAI,SAAS,UAAU;AAC5B,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,WAAO,MAAM;AACX,wBAAkB,IAAI,UAAU,YAAY;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,eAAe,CAAC;AAGpB,QAAM,wBAAwB;AAAA,IAC5B,CAAC,YAA4C;AAE3C,YAAM,SAAS,YAAY,IAAI,OAAO;AACtC,UAAI,QAAQ;AACV,eAAO;AAAA,MACT;AAGA,YAAM,SAAS,mBAAmB,OAAO;AACzC,UAAI,QAAQ;AAEV,uBAAe,UAAQ;AACrB,gBAAM,OAAO,IAAI,IAAI,IAAI;AACzB,eAAK,IAAI,SAAS,MAAM;AACxB,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,WAAW;AAAA,EACd;AAGA,QAAM,oBAAoB,YAAY,CAAC,YAAoB;AACzD,UAAM,QAAQ,mBAAmB,OAAO;AACxC,QAAI,OAAO;AACT,qBAAe,UAAQ;AACrB,cAAM,OAAO,IAAI,IAAI,IAAI;AACzB,aAAK,IAAI,SAAS,KAAK;AACvB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,CAAC;AAGL,QAAM,cAAc,QAAQ,MAAM;AAChC,QAAI,QAAQ;AACZ,eAAW,cAAc,YAAY,OAAO,GAAG;AAC7C,UAAI,WAAW,WAAW,aAAa,WAAW,WAAW,WAAW;AACtE;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAG,CAAC,WAAW,CAAC;AAEhB,SAAO;AAAA,IACL;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,EACF;AACF;AAKO,SAAS,mBACd,SACwB;AACxB,QAAM,CAAC,YAAY,aAAa,IAAI,SAAiC,MAAM;AACzE,QAAI,CAAC,QAAS,QAAO;AACrB,WAAO,mBAAmB,OAAO;AAAA,EACnC,CAAC;AAED,YAAU,MAAM;AACd,QAAI,CAAC,SAAS;AACZ,oBAAc,IAAI;AAClB;AAAA,IACF;AAGA,UAAM,UAAU,mBAAmB,OAAO;AAC1C,QAAI,SAAS;AACX,oBAAc,OAAO;AAAA,IACvB;AAGA,UAAM,eAAe,CAAC,UAA2B;AAC/C,UAAI,MAAM,YAAY,SAAS;AAC7B,sBAAc,MAAM,UAAU;AAAA,MAChC;AAAA,IACF;AAEA,sBAAkB,GAAG,UAAU,YAAY;AAC3C,WAAO,MAAM;AACX,wBAAkB,IAAI,UAAU,YAAY;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,SAAO;AACT;",
4
+ "sourcesContent": ["/**\n * useAgentTranscripts Hook\n *\n * Provides real-time access to agent transcripts with automatic updates.\n * Subscribes to transcript events and maintains a reactive map of transcripts.\n */\n\nimport { useState, useEffect, useMemo, useCallback, useRef } from 'react'\nimport {\n transcriptEmitter,\n getAgentTranscript,\n type AgentTranscript,\n type TranscriptEvent,\n} from '@utils/agentTranscripts'\n\ninterface UseAgentTranscriptsResult {\n /** Map of agentId to transcript */\n transcripts: Map<string, AgentTranscript>\n /** Get transcript by agentId */\n getTranscript: (agentId: string) => AgentTranscript | null\n /** Force refresh of a specific transcript */\n refreshTranscript: (agentId: string) => void\n /** Number of active transcripts */\n activeCount: number\n}\n\n/**\n * Hook for accessing agent transcripts with real-time updates\n *\n * @param agentIds - Optional list of specific agent IDs to track\n * @returns Transcript state and utilities\n */\nexport function useAgentTranscripts(\n agentIds?: string[],\n): UseAgentTranscriptsResult {\n // State to hold current transcripts\n const [transcripts, setTranscripts] = useState<Map<string, AgentTranscript>>(\n () => new Map(),\n )\n\n // Ref-based cache for lazy loading during render (avoids setState during render)\n // This allows getTranscript to return cached values synchronously without triggering re-renders\n const lazyLoadCacheRef = useRef<Map<string, AgentTranscript>>(new Map())\n\n // Prevent duplicate sync scheduling - avoids infinite render loops\n const syncScheduledRef = useRef<boolean>(false)\n\n // Track which agents we're interested in\n const trackedAgentIds = useMemo(\n () => (agentIds ? new Set(agentIds) : null),\n [agentIds?.join(',')],\n )\n\n // Handle transcript updates\n useEffect(() => {\n const handleUpdate = (event: TranscriptEvent) => {\n // If we have a tracked list and this agent isn't in it, skip\n if (trackedAgentIds && !trackedAgentIds.has(event.agentId)) {\n return\n }\n\n setTranscripts(prev => {\n const next = new Map(prev)\n next.set(event.agentId, event.transcript)\n return next\n })\n }\n\n // Subscribe to all transcript updates\n transcriptEmitter.on('update', handleUpdate)\n\n // Initial load for tracked agents\n if (trackedAgentIds) {\n for (const agentId of trackedAgentIds) {\n const transcript = getAgentTranscript(agentId)\n if (transcript) {\n setTranscripts(prev => {\n const next = new Map(prev)\n next.set(agentId, transcript)\n return next\n })\n }\n }\n }\n\n return () => {\n transcriptEmitter.off('update', handleUpdate)\n }\n }, [trackedAgentIds])\n\n // Get transcript by ID (with fallback to disk)\n // IMPORTANT: This function may be called during render (e.g., by ParallelTasksGroupView),\n // so we must NOT call setTranscripts here. Instead, we use a ref-based cache for lazy loading\n // and schedule state updates via useEffect.\n const getTranscriptCallback = useCallback(\n (agentId: string): AgentTranscript | null => {\n // Check state first (reactive updates)\n const cached = transcripts.get(agentId)\n if (cached) {\n return cached\n }\n\n // Check ref cache (lazy loaded during render)\n const lazyCached = lazyLoadCacheRef.current.get(agentId)\n if (lazyCached) {\n return lazyCached\n }\n\n // Try to load from disk - store in ref only (no setState during render!)\n const loaded = getAgentTranscript(agentId)\n if (loaded) {\n lazyLoadCacheRef.current.set(agentId, loaded)\n }\n return loaded\n },\n [transcripts],\n )\n\n // Sync lazy-loaded transcripts from ref cache to state after render\n // This ensures state stays up-to-date for future renders without causing\n // \"Cannot update component while rendering\" warnings\n useEffect(() => {\n if (lazyLoadCacheRef.current.size > 0 && !syncScheduledRef.current) {\n syncScheduledRef.current = true\n const timeoutId = setTimeout(() => {\n setTranscripts(prev => {\n const next = new Map(prev)\n for (const [agentId, transcript] of lazyLoadCacheRef.current) {\n if (!next.has(agentId)) {\n next.set(agentId, transcript)\n }\n }\n return next\n })\n lazyLoadCacheRef.current = new Map()\n syncScheduledRef.current = false\n }, 0)\n return () => {\n clearTimeout(timeoutId)\n syncScheduledRef.current = false\n }\n }\n }, [transcripts])\n\n // Force refresh a specific transcript\n const refreshTranscript = useCallback((agentId: string) => {\n const fresh = getAgentTranscript(agentId)\n if (fresh) {\n setTranscripts(prev => {\n const next = new Map(prev)\n next.set(agentId, fresh)\n return next\n })\n }\n }, [])\n\n // Count active (non-completed) transcripts\n const activeCount = useMemo(() => {\n let count = 0\n for (const transcript of transcripts.values()) {\n if (transcript.status === 'running' || transcript.status === 'pending') {\n count++\n }\n }\n return count\n }, [transcripts])\n\n return {\n transcripts,\n getTranscript: getTranscriptCallback,\n refreshTranscript,\n activeCount,\n }\n}\n\n/**\n * Simplified hook for single transcript tracking\n */\nexport function useAgentTranscript(\n agentId: string | undefined,\n): AgentTranscript | null {\n const [transcript, setTranscript] = useState<AgentTranscript | null>(() => {\n if (!agentId) return null\n return getAgentTranscript(agentId)\n })\n\n useEffect(() => {\n if (!agentId) {\n setTranscript(null)\n return\n }\n\n // Load initial\n const initial = getAgentTranscript(agentId)\n if (initial) {\n setTranscript(initial)\n }\n\n // Subscribe to updates for this specific agent\n const handleUpdate = (event: TranscriptEvent) => {\n if (event.agentId === agentId) {\n setTranscript(event.transcript)\n }\n }\n\n transcriptEmitter.on('update', handleUpdate)\n return () => {\n transcriptEmitter.off('update', handleUpdate)\n }\n }, [agentId])\n\n return transcript\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import { useEffect } from "react";
1
+ import { useEffect, useRef } from "react";
2
2
  import { overwriteLog, getMessagesPath } from "../utils/log.js";
3
3
  function serializeMessageForLog(message) {
4
4
  if (message.type === "progress") {
@@ -16,6 +16,16 @@ function serializeMessageForLog(message) {
16
16
  return message;
17
17
  }
18
18
  function useLogMessages(messages, messageLogName, forkNumber) {
19
+ const messagesRef = useRef(messages);
20
+ messagesRef.current = messages;
21
+ useEffect(() => {
22
+ return () => {
23
+ if (messagesRef.current.length > 0) {
24
+ const serialized = messagesRef.current.map(serializeMessageForLog);
25
+ overwriteLog(getMessagesPath(messageLogName, forkNumber, 0), serialized);
26
+ }
27
+ };
28
+ }, [messageLogName, forkNumber]);
19
29
  useEffect(() => {
20
30
  const serializedMessages = messages.map(serializeMessageForLog);
21
31
  overwriteLog(
@@ -25,6 +35,7 @@ function useLogMessages(messages, messageLogName, forkNumber) {
25
35
  }, [messages, messageLogName, forkNumber]);
26
36
  }
27
37
  export {
38
+ serializeMessageForLog,
28
39
  useLogMessages
29
40
  };
30
41
  //# sourceMappingURL=useLogMessages.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/useLogMessages.ts"],
4
- "sourcesContent": ["import { useEffect } from 'react'\nimport { type Message, type ProgressMessage } from '@query'\nimport { overwriteLog, getMessagesPath } from '@utils/log'\n\n/**\n * Serialize a message for persistence.\n * Progress messages need special handling because they contain Sets that\n * cannot be directly JSON serialized, and they include references to tools\n * that would create circular references.\n */\nfunction serializeMessageForLog(message: Message): object {\n if (message.type === 'progress') {\n // Convert Set to Array for JSON serialization\n // Only keep essential fields - omit tools and normalizedMessages to avoid circular refs\n const progressMsg = message as ProgressMessage\n return {\n type: 'progress',\n uuid: progressMsg.uuid,\n toolUseID: progressMsg.toolUseID,\n // Convert Set to Array for JSON serialization\n siblingToolUseIDs: Array.from(progressMsg.siblingToolUseIDs),\n // Keep the content (AssistantMessage) for display\n content: progressMsg.content,\n }\n }\n return message\n}\n\nexport function useLogMessages(\n messages: Message[],\n messageLogName: string,\n forkNumber: number,\n): void {\n useEffect(() => {\n // Serialize all messages including progress messages\n // Progress messages are essential for proper tool use grouping on resume\n const serializedMessages = messages.map(serializeMessageForLog)\n overwriteLog(\n getMessagesPath(messageLogName, forkNumber, 0),\n serializedMessages,\n )\n }, [messages, messageLogName, forkNumber])\n}\n"],
5
- "mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,cAAc,uBAAuB;AAQ9C,SAAS,uBAAuB,SAA0B;AACxD,MAAI,QAAQ,SAAS,YAAY;AAG/B,UAAM,cAAc;AACpB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM,YAAY;AAAA,MAClB,WAAW,YAAY;AAAA;AAAA,MAEvB,mBAAmB,MAAM,KAAK,YAAY,iBAAiB;AAAA;AAAA,MAE3D,SAAS,YAAY;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,eACd,UACA,gBACA,YACM;AACN,YAAU,MAAM;AAGd,UAAM,qBAAqB,SAAS,IAAI,sBAAsB;AAC9D;AAAA,MACE,gBAAgB,gBAAgB,YAAY,CAAC;AAAA,MAC7C;AAAA,IACF;AAAA,EACF,GAAG,CAAC,UAAU,gBAAgB,UAAU,CAAC;AAC3C;",
4
+ "sourcesContent": ["import { useEffect, useRef } from 'react'\nimport { type Message, type ProgressMessage } from '@query'\nimport { overwriteLog, getMessagesPath } from '@utils/log'\n\n/**\n * Serialize a message for persistence.\n * Progress messages need special handling because they contain Sets that\n * cannot be directly JSON serialized, and they include references to tools\n * that would create circular references.\n *\n * Exported for use in REPL's onInterrupt to force-save messages before abort.\n */\nexport function serializeMessageForLog(message: Message): object {\n if (message.type === 'progress') {\n // Convert Set to Array for JSON serialization\n // Only keep essential fields - omit tools and normalizedMessages to avoid circular refs\n const progressMsg = message as ProgressMessage\n return {\n type: 'progress',\n uuid: progressMsg.uuid,\n toolUseID: progressMsg.toolUseID,\n // Convert Set to Array for JSON serialization\n siblingToolUseIDs: Array.from(progressMsg.siblingToolUseIDs),\n // Keep the content (AssistantMessage) for display\n content: progressMsg.content,\n }\n }\n return message\n}\n\nexport function useLogMessages(\n messages: Message[],\n messageLogName: string,\n forkNumber: number,\n): void {\n // Keep a ref to messages for cleanup function access\n // This ensures we can save the latest messages even during unmount\n const messagesRef = useRef(messages)\n messagesRef.current = messages\n\n // Defensive cleanup: ensure messages are saved when component unmounts\n // This catches cases where ESC interrupt or other state changes might\n // cause the component to unmount before the regular save effect runs\n useEffect(() => {\n return () => {\n if (messagesRef.current.length > 0) {\n const serialized = messagesRef.current.map(serializeMessageForLog)\n overwriteLog(getMessagesPath(messageLogName, forkNumber, 0), serialized)\n }\n }\n }, [messageLogName, forkNumber])\n\n // Regular save effect: runs on every messages change\n useEffect(() => {\n // Serialize all messages including progress messages\n // Progress messages are essential for proper tool use grouping on resume\n const serializedMessages = messages.map(serializeMessageForLog)\n overwriteLog(\n getMessagesPath(messageLogName, forkNumber, 0),\n serializedMessages,\n )\n }, [messages, messageLogName, forkNumber])\n}\n"],
5
+ "mappings": "AAAA,SAAS,WAAW,cAAc;AAElC,SAAS,cAAc,uBAAuB;AAUvC,SAAS,uBAAuB,SAA0B;AAC/D,MAAI,QAAQ,SAAS,YAAY;AAG/B,UAAM,cAAc;AACpB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM,YAAY;AAAA,MAClB,WAAW,YAAY;AAAA;AAAA,MAEvB,mBAAmB,MAAM,KAAK,YAAY,iBAAiB;AAAA;AAAA,MAE3D,SAAS,YAAY;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,eACd,UACA,gBACA,YACM;AAGN,QAAM,cAAc,OAAO,QAAQ;AACnC,cAAY,UAAU;AAKtB,YAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,YAAY,QAAQ,SAAS,GAAG;AAClC,cAAM,aAAa,YAAY,QAAQ,IAAI,sBAAsB;AACjE,qBAAa,gBAAgB,gBAAgB,YAAY,CAAC,GAAG,UAAU;AAAA,MACzE;AAAA,IACF;AAAA,EACF,GAAG,CAAC,gBAAgB,UAAU,CAAC;AAG/B,YAAU,MAAM;AAGd,UAAM,qBAAqB,SAAS,IAAI,sBAAsB;AAC9D;AAAA,MACE,gBAAgB,gBAAgB,YAAY,CAAC;AAAA,MAC7C;AAAA,IACF;AAAA,EACF,GAAG,CAAC,UAAU,gBAAgB,UAAU,CAAC;AAC3C;",
6
6
  "names": []
7
7
  }
@@ -84,12 +84,13 @@ const en = {
84
84
  "ui.status.connecting": "Connecting...",
85
85
  "ui.status.streaming": "Streaming",
86
86
  // UI - Welcome
87
- "ui.welcome.title": "Welcome to Minto research preview!",
87
+ "ui.welcome.title": "Welcome to Minto!",
88
88
  "ui.welcome.subtitle": "",
89
- "ui.welcome.tip1": "Ask questions, edit files, or run commands.",
90
- "ui.welcome.tip2": "Be specific for the best results.",
91
- "ui.welcome.tip3": "Create MINTO.md to customize your project's AI interactions.",
92
- "ui.welcome.tip4": "Use /help for more information.",
89
+ "ui.welcome.quickStart": "Quick Start",
90
+ "ui.welcome.tip1": "Describe your research or analysis needs in plain words",
91
+ "ui.welcome.tip2": "The more specific, the better the results",
92
+ "ui.welcome.tip3": "Type /help to see all available commands",
93
+ "ui.welcome.tip4": "",
93
94
  "ui.welcome.cwd": "cwd",
94
95
  "ui.welcome.mcpServers": "MCP Servers",
95
96
  // UI - Hotkeys
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/i18n/locales/en.ts"],
4
- "sourcesContent": ["/**\n * English Locale\n *\n * Default language for Minto CLI.\n */\n\nimport type { Translations } from '../types'\n\nexport const en: Translations = {\n // Common\n 'common.yes': 'Yes',\n 'common.no': 'No',\n 'common.ok': 'OK',\n 'common.cancel': 'Cancel',\n 'common.confirm': 'Confirm',\n 'common.save': 'Save',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.create': 'Create',\n 'common.loading': 'Loading...',\n 'common.error': 'Error',\n 'common.success': 'Success',\n 'common.warning': 'Warning',\n 'common.info': 'Info',\n 'common.unknown': 'Unknown',\n 'common.none': 'None',\n 'common.all': 'All',\n 'common.selected': 'Selected',\n 'common.default': 'Default',\n 'common.custom': 'Custom',\n 'common.enabled': 'Enabled',\n 'common.disabled': 'Disabled',\n 'common.connected': 'connected',\n 'common.disconnected': 'disconnected',\n 'common.pending': 'Pending',\n 'common.completed': 'Completed',\n 'common.failed': 'Failed',\n 'common.inProgress': 'In Progress',\n 'common.version': 'Version',\n 'common.help': 'Help',\n 'common.quit': 'Quit',\n 'common.back': 'Back',\n 'common.next': 'Next',\n 'common.previous': 'Previous',\n 'common.search': 'Search',\n 'common.filter': 'Filter',\n 'common.sort': 'Sort',\n 'common.refresh': 'Refresh',\n 'common.retry': 'Retry',\n 'common.skip': 'Skip',\n 'common.continue': 'Continue',\n 'common.abort': 'Abort',\n 'common.reset': 'Reset',\n 'common.clear': 'Clear',\n 'common.copy': 'Copy',\n 'common.paste': 'Paste',\n 'common.select': 'Select',\n 'common.deselect': 'Deselect',\n 'common.selectAll': 'Select All',\n 'common.deselectAll': 'Deselect All',\n\n // UI - Verbose mode\n 'ui.verbose.on': 'Verbose: On',\n 'ui.verbose.off': 'Verbose: Off',\n 'ui.verbose.label': 'Verbose',\n 'ui.verbose.hint': 'Press Ctrl+O to toggle verbose mode',\n // Deprecated - kept for backward compatibility\n 'ui.displayMode.minimal': 'Verbose: Off',\n 'ui.displayMode.compact': 'Verbose: Off',\n 'ui.displayMode.detailed': 'Verbose: On',\n 'ui.displayMode.label': 'Verbose',\n 'ui.displayMode.hint': 'Press Ctrl+O to toggle verbose mode',\n\n // UI - Input\n 'ui.input.placeholder': 'Ask anything or type / for commands...',\n 'ui.input.thinking': 'Thinking',\n 'ui.input.processing': 'Processing',\n 'ui.input.waiting': 'Waiting for response...',\n 'ui.input.multilineHint': 'Shift+Enter for new line',\n 'ui.input.submitHint': 'Enter to submit',\n\n // UI - Panels\n 'ui.panel.todo': 'Todo',\n 'ui.panel.tasks': 'Tasks',\n 'ui.panel.agents': 'Agents',\n 'ui.panel.models': 'Models',\n 'ui.panel.help': 'Help',\n 'ui.panel.history': 'History',\n 'ui.panel.settings': 'Settings',\n\n // UI - Status\n 'ui.status.ready': 'Ready',\n 'ui.status.busy': 'Busy',\n 'ui.status.error': 'Error',\n 'ui.status.offline': 'Offline',\n 'ui.status.connecting': 'Connecting...',\n 'ui.status.streaming': 'Streaming',\n\n // UI - Welcome\n 'ui.welcome.title': 'Welcome to Minto research preview!',\n 'ui.welcome.subtitle': '',\n 'ui.welcome.tip1': 'Ask questions, edit files, or run commands.',\n 'ui.welcome.tip2': 'Be specific for the best results.',\n 'ui.welcome.tip3':\n \"Create MINTO.md to customize your project's AI interactions.\",\n 'ui.welcome.tip4': 'Use /help for more information.',\n 'ui.welcome.cwd': 'cwd',\n 'ui.welcome.mcpServers': 'MCP Servers',\n\n // UI - Hotkeys\n 'ui.hotkey.submit': 'Submit',\n 'ui.hotkey.newline': 'New line',\n 'ui.hotkey.cancel': 'Cancel',\n 'ui.hotkey.toggleMode': 'Toggle display mode',\n 'ui.hotkey.help': 'Help',\n 'ui.hotkey.quit': 'Quit',\n 'ui.hotkey.history': 'History',\n 'ui.hotkey.clear': 'Clear',\n 'ui.hotkey.interrupt': 'Interrupt',\n\n // UI - Hotkey hints (context-aware)\n 'ui.hints.command': 'Command',\n 'ui.hints.bash': 'Bash',\n 'ui.hints.send': 'Send',\n 'ui.hints.complete': 'Complete',\n 'ui.hints.rollback': 'Rollback',\n 'ui.hints.select': 'Select',\n 'ui.hints.confirm': 'Confirm',\n 'ui.hints.close': 'Close',\n 'ui.hints.browse': 'Browse',\n 'ui.hints.execute': 'Execute',\n 'ui.hints.completeCommand': 'Complete cmd',\n 'ui.hints.shortcuts': 'Keyboard Shortcuts',\n 'ui.hints.pressEsc': 'press Esc to close',\n 'ui.hints.tip': 'Type /help for full command list',\n\n // Commands\n 'commands.help.description': 'Show help information',\n 'commands.clear.description': 'Clear the screen',\n 'commands.compact.description': 'Compress conversation context',\n 'commands.compact.success': 'Context compressed successfully',\n 'commands.compact.noMessages': 'No messages to compress',\n 'commands.model.description': 'Select or switch AI model',\n 'commands.model.current': 'Current model',\n 'commands.model.switched': 'Switched to model',\n 'commands.model.notFound': 'Model not found',\n 'commands.agents.description': 'Manage and view agents',\n 'commands.agents.title': 'Available Agents',\n 'commands.agents.empty': 'No agents available',\n 'commands.agents.loaded': 'agents loaded',\n 'commands.tasks.description': 'View running tasks',\n 'commands.config.description': 'Manage configuration',\n 'commands.bug.description': 'Report a bug',\n 'commands.doctor.description': 'Check system health',\n 'commands.status.description': 'Show system status',\n 'commands.permissions.description': 'Manage permissions',\n 'commands.mcp.description': 'Manage MCP servers',\n 'commands.plugin.description': 'Manage plugins',\n 'commands.sandbox.description': 'Configure sandbox mode',\n 'commands.thinking.description': 'Toggle thinking mode',\n 'commands.thinking.enabled': 'Thinking mode enabled',\n 'commands.thinking.disabled': 'Thinking mode disabled',\n\n // Tools\n 'tools.bash.description': 'Execute shell commands',\n 'tools.bash.executing': 'Executing',\n 'tools.bash.completed': 'Command completed',\n 'tools.bash.failed': 'Command failed',\n 'tools.read.description': 'Read file contents',\n 'tools.read.reading': 'Reading',\n 'tools.write.description': 'Write file contents',\n 'tools.write.writing': 'Writing',\n 'tools.write.created': 'Created',\n 'tools.write.updated': 'Updated',\n 'tools.edit.description': 'Edit file contents',\n 'tools.edit.editing': 'Editing',\n 'tools.glob.description': 'Find files by pattern',\n 'tools.grep.description': 'Search file contents',\n 'tools.task.description': 'Spawn a subagent task',\n 'tools.task.spawning': 'Spawning task',\n 'tools.task.running': 'Task running',\n 'tools.task.completed': 'Done',\n 'tools.todo.description': 'Manage todo items',\n\n // Errors\n 'errors.generic': 'An error occurred',\n 'errors.network': 'Network error',\n 'errors.timeout': 'Request timed out',\n 'errors.auth': 'Authentication failed',\n 'errors.rateLimit': 'Rate limit exceeded',\n 'errors.modelNotFound': 'Model not found',\n 'errors.apiKeyMissing': 'API key is missing',\n 'errors.apiKeyInvalid': 'API key is invalid',\n 'errors.permissionDenied': 'Permission denied',\n 'errors.fileNotFound': 'File not found',\n 'errors.fileReadError': 'Error reading file',\n 'errors.fileWriteError': 'Error writing file',\n 'errors.configError': 'Configuration error',\n 'errors.parseError': 'Parse error',\n 'errors.validationError': 'Validation error',\n 'errors.aborted': 'Operation aborted',\n 'errors.contextTooLong': 'Context too long',\n 'errors.serverError': 'Server error',\n 'errors.connectionFailed': 'Connection failed',\n\n // Help\n 'help.title': 'Minto Help',\n 'help.usage': 'Usage',\n 'help.commands': 'Commands',\n 'help.options': 'Options',\n 'help.examples': 'Examples',\n 'help.moreInfo': 'For more information',\n 'help.reportBug': 'Report a bug',\n 'help.documentation': 'Documentation',\n\n // Status messages\n 'status.modelLoaded': 'Model loaded',\n 'status.contextCompressed': 'Context compressed',\n 'status.tokensUsed': 'Tokens used',\n 'status.costEstimate': 'Cost estimate',\n 'status.apiLatency': 'API latency',\n 'status.streaming': 'Streaming response',\n 'status.thinking': 'Thinking',\n 'status.toolUse': 'Using tool',\n 'status.subagent': 'Running subagent',\n\n // Prompts\n 'prompts.confirmDelete': 'Are you sure you want to delete?',\n 'prompts.confirmOverwrite': 'File exists. Overwrite?',\n 'prompts.confirmExecute': 'Execute this command?',\n 'prompts.enterApiKey': 'Enter API key',\n 'prompts.selectModel': 'Select a model',\n 'prompts.selectLanguage': 'Select language',\n\n // Agent/Subagent\n 'agent.spawning': 'Spawning agent',\n 'agent.running': 'Agent running',\n 'agent.completed': 'Agent completed',\n 'agent.failed': 'Agent failed',\n 'agent.cancelled': 'Agent cancelled',\n 'agent.waiting': 'Waiting',\n 'agent.thinking': 'Thinking',\n\n // Model\n 'model.selecting': 'Selecting model',\n 'model.selected': 'Model selected',\n 'model.unavailable': 'Model unavailable',\n 'model.switching': 'Switching model',\n 'model.switched': 'Model switched',\n 'model.default': 'Default model',\n 'model.custom': 'Custom model',\n\n // Permissions\n 'permission.required': 'Permission required',\n 'permission.granted': 'Permission granted',\n 'permission.denied': 'Permission denied',\n 'permission.allowOnce': 'Allow once',\n 'permission.allowAlways': 'Allow always',\n 'permission.denyOnce': 'Deny once',\n 'permission.denyAlways': 'Deny always',\n 'permission.sensitiveFile': 'Sensitive file access',\n 'permission.externalPath': 'External path access',\n 'permission.dangerousCommand': 'Dangerous command',\n\n // User-Friendly Error Messages\n // Network & Connectivity\n 'friendlyError.networkConnection.title': 'Network Connection Issue',\n 'friendlyError.networkConnection.description':\n 'Unable to connect to the server. The network may be unstable or the server is temporarily unavailable.',\n 'friendlyError.networkConnection.suggestion1':\n 'Check your network connection',\n 'friendlyError.networkConnection.suggestion2': 'Wait a moment and try again',\n 'friendlyError.networkConnection.suggestion3':\n 'If using a VPN, try switching network nodes',\n\n 'friendlyError.networkTimeout.title': 'Request Timeout',\n 'friendlyError.networkTimeout.description':\n 'The server took too long to respond. The request has timed out.',\n 'friendlyError.networkTimeout.suggestion1':\n 'The network may be slow, please try again later',\n 'friendlyError.networkTimeout.suggestion2':\n 'If processing large amounts of data, try processing in smaller batches',\n 'friendlyError.networkTimeout.suggestion3': 'Check your network stability',\n\n 'friendlyError.networkDns.title': 'Cannot Find Server',\n 'friendlyError.networkDns.description':\n 'Unable to resolve the server address. Please check your network settings.',\n 'friendlyError.networkDns.suggestion1': 'Check your network connection',\n 'friendlyError.networkDns.suggestion2':\n 'Verify the API address is configured correctly',\n 'friendlyError.networkDns.suggestion3': 'Try using a different DNS service',\n\n // API & Service\n 'friendlyError.apiRateLimit.title': 'Too Many Requests',\n 'friendlyError.apiRateLimit.description':\n 'Too many requests were sent in a short time. The server requires a brief wait.',\n 'friendlyError.apiRateLimit.suggestion1':\n 'Wait a few minutes before continuing',\n 'friendlyError.apiRateLimit.suggestion2':\n 'Reduce the number of concurrent tasks',\n 'friendlyError.apiRateLimit.suggestion3':\n 'Consider upgrading your API plan for higher quotas',\n\n 'friendlyError.apiAuth.title': 'API Authentication Failed',\n 'friendlyError.apiAuth.description': 'The API key is invalid or has expired.',\n 'friendlyError.apiAuth.suggestion1':\n 'Check that your API key is configured correctly',\n 'friendlyError.apiAuth.suggestion2':\n 'Verify that your API key has not expired',\n 'friendlyError.apiAuth.suggestion3': 'Update your API key in settings',\n\n 'friendlyError.apiQuota.title': 'Usage Quota Exceeded',\n 'friendlyError.apiQuota.description':\n 'Your API usage quota has reached its limit.',\n 'friendlyError.apiQuota.suggestion1': 'Check your account balance',\n 'friendlyError.apiQuota.suggestion2':\n 'Wait for quota reset (usually at the beginning of each month)',\n 'friendlyError.apiQuota.suggestion3': 'Consider upgrading your plan',\n\n 'friendlyError.apiServerError.title': 'Server Error',\n 'friendlyError.apiServerError.description':\n 'The AI server encountered an issue. This is usually temporary.',\n 'friendlyError.apiServerError.suggestion1':\n 'Wait a few minutes and try again',\n 'friendlyError.apiServerError.suggestion2':\n 'If the problem persists, try switching to another model',\n\n 'friendlyError.apiInvalidResponse.title': 'Invalid Server Response',\n 'friendlyError.apiInvalidResponse.description':\n 'Received an unexpected response from the server.',\n 'friendlyError.apiInvalidResponse.suggestion1': 'Retry the current operation',\n 'friendlyError.apiInvalidResponse.suggestion2':\n 'If the problem persists, contact support',\n\n // File & Storage\n 'friendlyError.fileNotFound.title': 'File Not Found',\n 'friendlyError.fileNotFound.description':\n 'The specified file does not exist or has been moved.',\n 'friendlyError.fileNotFound.suggestion1':\n 'Check that the file path is correct',\n 'friendlyError.fileNotFound.suggestion2':\n 'Verify that the file has not been deleted or moved',\n\n 'friendlyError.filePermission.title': 'File Access Denied',\n 'friendlyError.filePermission.description':\n 'You do not have permission to read or write this file.',\n 'friendlyError.filePermission.suggestion1':\n 'Check the file permission settings',\n 'friendlyError.filePermission.suggestion2':\n 'Verify that you have access to this folder',\n\n 'friendlyError.fileTooLarge.title': 'File Too Large',\n 'friendlyError.fileTooLarge.description':\n 'The file size exceeds the processing limit.',\n 'friendlyError.fileTooLarge.suggestion1': 'Try processing a smaller file',\n 'friendlyError.fileTooLarge.suggestion2':\n 'Split large files into smaller parts',\n\n 'friendlyError.fileEncoding.title': 'File Format Issue',\n 'friendlyError.fileEncoding.description':\n 'Unable to read the file content correctly. The encoding format may not be supported.',\n 'friendlyError.fileEncoding.suggestion1':\n 'Verify that the file is in text format',\n 'friendlyError.fileEncoding.suggestion2':\n 'Try converting the file to UTF-8 encoding',\n\n // Configuration\n 'friendlyError.configMissing.title': 'Missing Configuration',\n 'friendlyError.configMissing.description':\n 'Some required settings have not been configured.',\n 'friendlyError.configMissing.suggestion1':\n 'Run the /setup command to complete initial configuration',\n 'friendlyError.configMissing.suggestion2':\n 'Check that the configuration file is complete',\n\n 'friendlyError.configInvalid.title': 'Invalid Configuration',\n 'friendlyError.configInvalid.description':\n 'Some setting values are incorrect.',\n 'friendlyError.configInvalid.suggestion1':\n 'Check the configuration file format',\n 'friendlyError.configInvalid.suggestion2':\n 'Refer to the documentation for correct configuration',\n\n 'friendlyError.configApiKey.title': 'API Key Issue',\n 'friendlyError.configApiKey.description':\n 'The API key is not set or has an incorrect format.',\n 'friendlyError.configApiKey.suggestion1':\n 'Use the /setup command to configure your API key',\n 'friendlyError.configApiKey.suggestion2':\n 'Ensure the key is copied correctly (no extra spaces)',\n\n // Model & AI\n 'friendlyError.modelUnavailable.title': 'Model Temporarily Unavailable',\n 'friendlyError.modelUnavailable.description':\n 'The requested AI model is currently unavailable.',\n 'friendlyError.modelUnavailable.suggestion1': 'Try using a different model',\n 'friendlyError.modelUnavailable.suggestion2': 'Try again later',\n 'friendlyError.modelUnavailable.suggestion3':\n 'Verify the model name is correct',\n\n 'friendlyError.modelContextLength.title': 'Content Too Long',\n 'friendlyError.modelContextLength.description':\n 'The input content exceeds the model processing capacity.',\n 'friendlyError.modelContextLength.suggestion1':\n 'Reduce the length of input content',\n 'friendlyError.modelContextLength.suggestion2':\n 'Split long text into multiple parts for processing',\n\n 'friendlyError.modelContentFilter.title': 'Content Filtered',\n 'friendlyError.modelContentFilter.description':\n 'Some content triggered the safety filter.',\n 'friendlyError.modelContentFilter.suggestion1':\n 'Modify the input content and try again',\n 'friendlyError.modelContentFilter.suggestion2':\n 'Avoid sensitive or inappropriate content',\n\n // System\n 'friendlyError.systemMemory.title': 'Insufficient Memory',\n 'friendlyError.systemMemory.description':\n 'Not enough system memory to complete the operation.',\n 'friendlyError.systemMemory.suggestion1': 'Close some other applications',\n 'friendlyError.systemMemory.suggestion2':\n 'Reduce the number of concurrent tasks',\n 'friendlyError.systemMemory.suggestion3':\n 'Restart the application and try again',\n\n 'friendlyError.systemProcess.title': 'System Process Error',\n 'friendlyError.systemProcess.description':\n 'An error occurred while running an external command.',\n 'friendlyError.systemProcess.suggestion1':\n 'Check that the command is correct',\n 'friendlyError.systemProcess.suggestion2':\n 'Verify that the required tools are installed',\n\n // Unknown\n 'friendlyError.unknown.title': 'Unexpected Error',\n 'friendlyError.unknown.description': 'An unexpected problem occurred.',\n 'friendlyError.unknown.suggestion1': 'Retry the current operation',\n 'friendlyError.unknown.suggestion2':\n 'If the problem persists, check the error logs or contact support',\n\n // Error display format\n 'friendlyError.suggestionLabel': 'Suggestions',\n 'friendlyError.errorIdLabel': 'Error ID',\n 'friendlyError.technicalDetailsLabel': 'Technical Details',\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * English Locale\n *\n * Default language for Minto CLI.\n */\n\nimport type { Translations } from '../types'\n\nexport const en: Translations = {\n // Common\n 'common.yes': 'Yes',\n 'common.no': 'No',\n 'common.ok': 'OK',\n 'common.cancel': 'Cancel',\n 'common.confirm': 'Confirm',\n 'common.save': 'Save',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.create': 'Create',\n 'common.loading': 'Loading...',\n 'common.error': 'Error',\n 'common.success': 'Success',\n 'common.warning': 'Warning',\n 'common.info': 'Info',\n 'common.unknown': 'Unknown',\n 'common.none': 'None',\n 'common.all': 'All',\n 'common.selected': 'Selected',\n 'common.default': 'Default',\n 'common.custom': 'Custom',\n 'common.enabled': 'Enabled',\n 'common.disabled': 'Disabled',\n 'common.connected': 'connected',\n 'common.disconnected': 'disconnected',\n 'common.pending': 'Pending',\n 'common.completed': 'Completed',\n 'common.failed': 'Failed',\n 'common.inProgress': 'In Progress',\n 'common.version': 'Version',\n 'common.help': 'Help',\n 'common.quit': 'Quit',\n 'common.back': 'Back',\n 'common.next': 'Next',\n 'common.previous': 'Previous',\n 'common.search': 'Search',\n 'common.filter': 'Filter',\n 'common.sort': 'Sort',\n 'common.refresh': 'Refresh',\n 'common.retry': 'Retry',\n 'common.skip': 'Skip',\n 'common.continue': 'Continue',\n 'common.abort': 'Abort',\n 'common.reset': 'Reset',\n 'common.clear': 'Clear',\n 'common.copy': 'Copy',\n 'common.paste': 'Paste',\n 'common.select': 'Select',\n 'common.deselect': 'Deselect',\n 'common.selectAll': 'Select All',\n 'common.deselectAll': 'Deselect All',\n\n // UI - Verbose mode\n 'ui.verbose.on': 'Verbose: On',\n 'ui.verbose.off': 'Verbose: Off',\n 'ui.verbose.label': 'Verbose',\n 'ui.verbose.hint': 'Press Ctrl+O to toggle verbose mode',\n // Deprecated - kept for backward compatibility\n 'ui.displayMode.minimal': 'Verbose: Off',\n 'ui.displayMode.compact': 'Verbose: Off',\n 'ui.displayMode.detailed': 'Verbose: On',\n 'ui.displayMode.label': 'Verbose',\n 'ui.displayMode.hint': 'Press Ctrl+O to toggle verbose mode',\n\n // UI - Input\n 'ui.input.placeholder': 'Ask anything or type / for commands...',\n 'ui.input.thinking': 'Thinking',\n 'ui.input.processing': 'Processing',\n 'ui.input.waiting': 'Waiting for response...',\n 'ui.input.multilineHint': 'Shift+Enter for new line',\n 'ui.input.submitHint': 'Enter to submit',\n\n // UI - Panels\n 'ui.panel.todo': 'Todo',\n 'ui.panel.tasks': 'Tasks',\n 'ui.panel.agents': 'Agents',\n 'ui.panel.models': 'Models',\n 'ui.panel.help': 'Help',\n 'ui.panel.history': 'History',\n 'ui.panel.settings': 'Settings',\n\n // UI - Status\n 'ui.status.ready': 'Ready',\n 'ui.status.busy': 'Busy',\n 'ui.status.error': 'Error',\n 'ui.status.offline': 'Offline',\n 'ui.status.connecting': 'Connecting...',\n 'ui.status.streaming': 'Streaming',\n\n // UI - Welcome\n 'ui.welcome.title': 'Welcome to Minto!',\n 'ui.welcome.subtitle': '',\n 'ui.welcome.quickStart': 'Quick Start',\n 'ui.welcome.tip1': 'Describe your research or analysis needs in plain words',\n 'ui.welcome.tip2': 'The more specific, the better the results',\n 'ui.welcome.tip3': 'Type /help to see all available commands',\n 'ui.welcome.tip4': '',\n 'ui.welcome.cwd': 'cwd',\n 'ui.welcome.mcpServers': 'MCP Servers',\n\n // UI - Hotkeys\n 'ui.hotkey.submit': 'Submit',\n 'ui.hotkey.newline': 'New line',\n 'ui.hotkey.cancel': 'Cancel',\n 'ui.hotkey.toggleMode': 'Toggle display mode',\n 'ui.hotkey.help': 'Help',\n 'ui.hotkey.quit': 'Quit',\n 'ui.hotkey.history': 'History',\n 'ui.hotkey.clear': 'Clear',\n 'ui.hotkey.interrupt': 'Interrupt',\n\n // UI - Hotkey hints (context-aware)\n 'ui.hints.command': 'Command',\n 'ui.hints.bash': 'Bash',\n 'ui.hints.send': 'Send',\n 'ui.hints.complete': 'Complete',\n 'ui.hints.rollback': 'Rollback',\n 'ui.hints.select': 'Select',\n 'ui.hints.confirm': 'Confirm',\n 'ui.hints.close': 'Close',\n 'ui.hints.browse': 'Browse',\n 'ui.hints.execute': 'Execute',\n 'ui.hints.completeCommand': 'Complete cmd',\n 'ui.hints.shortcuts': 'Keyboard Shortcuts',\n 'ui.hints.pressEsc': 'press Esc to close',\n 'ui.hints.tip': 'Type /help for full command list',\n\n // Commands\n 'commands.help.description': 'Show help information',\n 'commands.clear.description': 'Clear the screen',\n 'commands.compact.description': 'Compress conversation context',\n 'commands.compact.success': 'Context compressed successfully',\n 'commands.compact.noMessages': 'No messages to compress',\n 'commands.model.description': 'Select or switch AI model',\n 'commands.model.current': 'Current model',\n 'commands.model.switched': 'Switched to model',\n 'commands.model.notFound': 'Model not found',\n 'commands.agents.description': 'Manage and view agents',\n 'commands.agents.title': 'Available Agents',\n 'commands.agents.empty': 'No agents available',\n 'commands.agents.loaded': 'agents loaded',\n 'commands.tasks.description': 'View running tasks',\n 'commands.config.description': 'Manage configuration',\n 'commands.bug.description': 'Report a bug',\n 'commands.doctor.description': 'Check system health',\n 'commands.status.description': 'Show system status',\n 'commands.permissions.description': 'Manage permissions',\n 'commands.mcp.description': 'Manage MCP servers',\n 'commands.plugin.description': 'Manage plugins',\n 'commands.sandbox.description': 'Configure sandbox mode',\n 'commands.thinking.description': 'Toggle thinking mode',\n 'commands.thinking.enabled': 'Thinking mode enabled',\n 'commands.thinking.disabled': 'Thinking mode disabled',\n\n // Tools\n 'tools.bash.description': 'Execute shell commands',\n 'tools.bash.executing': 'Executing',\n 'tools.bash.completed': 'Command completed',\n 'tools.bash.failed': 'Command failed',\n 'tools.read.description': 'Read file contents',\n 'tools.read.reading': 'Reading',\n 'tools.write.description': 'Write file contents',\n 'tools.write.writing': 'Writing',\n 'tools.write.created': 'Created',\n 'tools.write.updated': 'Updated',\n 'tools.edit.description': 'Edit file contents',\n 'tools.edit.editing': 'Editing',\n 'tools.glob.description': 'Find files by pattern',\n 'tools.grep.description': 'Search file contents',\n 'tools.task.description': 'Spawn a subagent task',\n 'tools.task.spawning': 'Spawning task',\n 'tools.task.running': 'Task running',\n 'tools.task.completed': 'Done',\n 'tools.todo.description': 'Manage todo items',\n\n // Errors\n 'errors.generic': 'An error occurred',\n 'errors.network': 'Network error',\n 'errors.timeout': 'Request timed out',\n 'errors.auth': 'Authentication failed',\n 'errors.rateLimit': 'Rate limit exceeded',\n 'errors.modelNotFound': 'Model not found',\n 'errors.apiKeyMissing': 'API key is missing',\n 'errors.apiKeyInvalid': 'API key is invalid',\n 'errors.permissionDenied': 'Permission denied',\n 'errors.fileNotFound': 'File not found',\n 'errors.fileReadError': 'Error reading file',\n 'errors.fileWriteError': 'Error writing file',\n 'errors.configError': 'Configuration error',\n 'errors.parseError': 'Parse error',\n 'errors.validationError': 'Validation error',\n 'errors.aborted': 'Operation aborted',\n 'errors.contextTooLong': 'Context too long',\n 'errors.serverError': 'Server error',\n 'errors.connectionFailed': 'Connection failed',\n\n // Help\n 'help.title': 'Minto Help',\n 'help.usage': 'Usage',\n 'help.commands': 'Commands',\n 'help.options': 'Options',\n 'help.examples': 'Examples',\n 'help.moreInfo': 'For more information',\n 'help.reportBug': 'Report a bug',\n 'help.documentation': 'Documentation',\n\n // Status messages\n 'status.modelLoaded': 'Model loaded',\n 'status.contextCompressed': 'Context compressed',\n 'status.tokensUsed': 'Tokens used',\n 'status.costEstimate': 'Cost estimate',\n 'status.apiLatency': 'API latency',\n 'status.streaming': 'Streaming response',\n 'status.thinking': 'Thinking',\n 'status.toolUse': 'Using tool',\n 'status.subagent': 'Running subagent',\n\n // Prompts\n 'prompts.confirmDelete': 'Are you sure you want to delete?',\n 'prompts.confirmOverwrite': 'File exists. Overwrite?',\n 'prompts.confirmExecute': 'Execute this command?',\n 'prompts.enterApiKey': 'Enter API key',\n 'prompts.selectModel': 'Select a model',\n 'prompts.selectLanguage': 'Select language',\n\n // Agent/Subagent\n 'agent.spawning': 'Spawning agent',\n 'agent.running': 'Agent running',\n 'agent.completed': 'Agent completed',\n 'agent.failed': 'Agent failed',\n 'agent.cancelled': 'Agent cancelled',\n 'agent.waiting': 'Waiting',\n 'agent.thinking': 'Thinking',\n\n // Model\n 'model.selecting': 'Selecting model',\n 'model.selected': 'Model selected',\n 'model.unavailable': 'Model unavailable',\n 'model.switching': 'Switching model',\n 'model.switched': 'Model switched',\n 'model.default': 'Default model',\n 'model.custom': 'Custom model',\n\n // Permissions\n 'permission.required': 'Permission required',\n 'permission.granted': 'Permission granted',\n 'permission.denied': 'Permission denied',\n 'permission.allowOnce': 'Allow once',\n 'permission.allowAlways': 'Allow always',\n 'permission.denyOnce': 'Deny once',\n 'permission.denyAlways': 'Deny always',\n 'permission.sensitiveFile': 'Sensitive file access',\n 'permission.externalPath': 'External path access',\n 'permission.dangerousCommand': 'Dangerous command',\n\n // User-Friendly Error Messages\n // Network & Connectivity\n 'friendlyError.networkConnection.title': 'Network Connection Issue',\n 'friendlyError.networkConnection.description':\n 'Unable to connect to the server. The network may be unstable or the server is temporarily unavailable.',\n 'friendlyError.networkConnection.suggestion1':\n 'Check your network connection',\n 'friendlyError.networkConnection.suggestion2': 'Wait a moment and try again',\n 'friendlyError.networkConnection.suggestion3':\n 'If using a VPN, try switching network nodes',\n\n 'friendlyError.networkTimeout.title': 'Request Timeout',\n 'friendlyError.networkTimeout.description':\n 'The server took too long to respond. The request has timed out.',\n 'friendlyError.networkTimeout.suggestion1':\n 'The network may be slow, please try again later',\n 'friendlyError.networkTimeout.suggestion2':\n 'If processing large amounts of data, try processing in smaller batches',\n 'friendlyError.networkTimeout.suggestion3': 'Check your network stability',\n\n 'friendlyError.networkDns.title': 'Cannot Find Server',\n 'friendlyError.networkDns.description':\n 'Unable to resolve the server address. Please check your network settings.',\n 'friendlyError.networkDns.suggestion1': 'Check your network connection',\n 'friendlyError.networkDns.suggestion2':\n 'Verify the API address is configured correctly',\n 'friendlyError.networkDns.suggestion3': 'Try using a different DNS service',\n\n // API & Service\n 'friendlyError.apiRateLimit.title': 'Too Many Requests',\n 'friendlyError.apiRateLimit.description':\n 'Too many requests were sent in a short time. The server requires a brief wait.',\n 'friendlyError.apiRateLimit.suggestion1':\n 'Wait a few minutes before continuing',\n 'friendlyError.apiRateLimit.suggestion2':\n 'Reduce the number of concurrent tasks',\n 'friendlyError.apiRateLimit.suggestion3':\n 'Consider upgrading your API plan for higher quotas',\n\n 'friendlyError.apiAuth.title': 'API Authentication Failed',\n 'friendlyError.apiAuth.description': 'The API key is invalid or has expired.',\n 'friendlyError.apiAuth.suggestion1':\n 'Check that your API key is configured correctly',\n 'friendlyError.apiAuth.suggestion2':\n 'Verify that your API key has not expired',\n 'friendlyError.apiAuth.suggestion3': 'Update your API key in settings',\n\n 'friendlyError.apiQuota.title': 'Usage Quota Exceeded',\n 'friendlyError.apiQuota.description':\n 'Your API usage quota has reached its limit.',\n 'friendlyError.apiQuota.suggestion1': 'Check your account balance',\n 'friendlyError.apiQuota.suggestion2':\n 'Wait for quota reset (usually at the beginning of each month)',\n 'friendlyError.apiQuota.suggestion3': 'Consider upgrading your plan',\n\n 'friendlyError.apiServerError.title': 'Server Error',\n 'friendlyError.apiServerError.description':\n 'The AI server encountered an issue. This is usually temporary.',\n 'friendlyError.apiServerError.suggestion1':\n 'Wait a few minutes and try again',\n 'friendlyError.apiServerError.suggestion2':\n 'If the problem persists, try switching to another model',\n\n 'friendlyError.apiInvalidResponse.title': 'Invalid Server Response',\n 'friendlyError.apiInvalidResponse.description':\n 'Received an unexpected response from the server.',\n 'friendlyError.apiInvalidResponse.suggestion1': 'Retry the current operation',\n 'friendlyError.apiInvalidResponse.suggestion2':\n 'If the problem persists, contact support',\n\n // File & Storage\n 'friendlyError.fileNotFound.title': 'File Not Found',\n 'friendlyError.fileNotFound.description':\n 'The specified file does not exist or has been moved.',\n 'friendlyError.fileNotFound.suggestion1':\n 'Check that the file path is correct',\n 'friendlyError.fileNotFound.suggestion2':\n 'Verify that the file has not been deleted or moved',\n\n 'friendlyError.filePermission.title': 'File Access Denied',\n 'friendlyError.filePermission.description':\n 'You do not have permission to read or write this file.',\n 'friendlyError.filePermission.suggestion1':\n 'Check the file permission settings',\n 'friendlyError.filePermission.suggestion2':\n 'Verify that you have access to this folder',\n\n 'friendlyError.fileTooLarge.title': 'File Too Large',\n 'friendlyError.fileTooLarge.description':\n 'The file size exceeds the processing limit.',\n 'friendlyError.fileTooLarge.suggestion1': 'Try processing a smaller file',\n 'friendlyError.fileTooLarge.suggestion2':\n 'Split large files into smaller parts',\n\n 'friendlyError.fileEncoding.title': 'File Format Issue',\n 'friendlyError.fileEncoding.description':\n 'Unable to read the file content correctly. The encoding format may not be supported.',\n 'friendlyError.fileEncoding.suggestion1':\n 'Verify that the file is in text format',\n 'friendlyError.fileEncoding.suggestion2':\n 'Try converting the file to UTF-8 encoding',\n\n // Configuration\n 'friendlyError.configMissing.title': 'Missing Configuration',\n 'friendlyError.configMissing.description':\n 'Some required settings have not been configured.',\n 'friendlyError.configMissing.suggestion1':\n 'Run the /setup command to complete initial configuration',\n 'friendlyError.configMissing.suggestion2':\n 'Check that the configuration file is complete',\n\n 'friendlyError.configInvalid.title': 'Invalid Configuration',\n 'friendlyError.configInvalid.description':\n 'Some setting values are incorrect.',\n 'friendlyError.configInvalid.suggestion1':\n 'Check the configuration file format',\n 'friendlyError.configInvalid.suggestion2':\n 'Refer to the documentation for correct configuration',\n\n 'friendlyError.configApiKey.title': 'API Key Issue',\n 'friendlyError.configApiKey.description':\n 'The API key is not set or has an incorrect format.',\n 'friendlyError.configApiKey.suggestion1':\n 'Use the /setup command to configure your API key',\n 'friendlyError.configApiKey.suggestion2':\n 'Ensure the key is copied correctly (no extra spaces)',\n\n // Model & AI\n 'friendlyError.modelUnavailable.title': 'Model Temporarily Unavailable',\n 'friendlyError.modelUnavailable.description':\n 'The requested AI model is currently unavailable.',\n 'friendlyError.modelUnavailable.suggestion1': 'Try using a different model',\n 'friendlyError.modelUnavailable.suggestion2': 'Try again later',\n 'friendlyError.modelUnavailable.suggestion3':\n 'Verify the model name is correct',\n\n 'friendlyError.modelContextLength.title': 'Content Too Long',\n 'friendlyError.modelContextLength.description':\n 'The input content exceeds the model processing capacity.',\n 'friendlyError.modelContextLength.suggestion1':\n 'Reduce the length of input content',\n 'friendlyError.modelContextLength.suggestion2':\n 'Split long text into multiple parts for processing',\n\n 'friendlyError.modelContentFilter.title': 'Content Filtered',\n 'friendlyError.modelContentFilter.description':\n 'Some content triggered the safety filter.',\n 'friendlyError.modelContentFilter.suggestion1':\n 'Modify the input content and try again',\n 'friendlyError.modelContentFilter.suggestion2':\n 'Avoid sensitive or inappropriate content',\n\n // System\n 'friendlyError.systemMemory.title': 'Insufficient Memory',\n 'friendlyError.systemMemory.description':\n 'Not enough system memory to complete the operation.',\n 'friendlyError.systemMemory.suggestion1': 'Close some other applications',\n 'friendlyError.systemMemory.suggestion2':\n 'Reduce the number of concurrent tasks',\n 'friendlyError.systemMemory.suggestion3':\n 'Restart the application and try again',\n\n 'friendlyError.systemProcess.title': 'System Process Error',\n 'friendlyError.systemProcess.description':\n 'An error occurred while running an external command.',\n 'friendlyError.systemProcess.suggestion1':\n 'Check that the command is correct',\n 'friendlyError.systemProcess.suggestion2':\n 'Verify that the required tools are installed',\n\n // Unknown\n 'friendlyError.unknown.title': 'Unexpected Error',\n 'friendlyError.unknown.description': 'An unexpected problem occurred.',\n 'friendlyError.unknown.suggestion1': 'Retry the current operation',\n 'friendlyError.unknown.suggestion2':\n 'If the problem persists, check the error logs or contact support',\n\n // Error display format\n 'friendlyError.suggestionLabel': 'Suggestions',\n 'friendlyError.errorIdLabel': 'Error ID',\n 'friendlyError.technicalDetailsLabel': 'Technical Details',\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -84,12 +84,13 @@ const zhCN = {
84
84
  "ui.status.connecting": "\u8FDE\u63A5\u4E2D...",
85
85
  "ui.status.streaming": "\u6D41\u5F0F\u8F93\u51FA\u4E2D",
86
86
  // UI - Welcome - 欢迎
87
- "ui.welcome.title": "\u6B22\u8FCE\u4F7F\u7528 Minto \u7814\u7A76\u9884\u89C8\u7248\uFF01",
87
+ "ui.welcome.title": "\u6B22\u8FCE\u4F7F\u7528 Minto\uFF01",
88
88
  "ui.welcome.subtitle": "",
89
- "ui.welcome.tip1": "\u63D0\u95EE\u3001\u7F16\u8F91\u6587\u4EF6\u6216\u8FD0\u884C\u547D\u4EE4\u3002",
90
- "ui.welcome.tip2": "\u5177\u4F53\u7684\u95EE\u9898\u80FD\u83B7\u5F97\u66F4\u597D\u7684\u7ED3\u679C\u3002",
91
- "ui.welcome.tip3": "\u521B\u5EFA MINTO.md \u6765\u81EA\u5B9A\u4E49\u9879\u76EE\u7684 AI \u4EA4\u4E92\u3002",
92
- "ui.welcome.tip4": "\u4F7F\u7528 /help \u83B7\u53D6\u66F4\u591A\u4FE1\u606F\u3002",
89
+ "ui.welcome.quickStart": "\u5FEB\u901F\u5F00\u59CB",
90
+ "ui.welcome.tip1": "\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u60A8\u7684\u7814\u7A76\u6216\u5206\u6790\u9700\u6C42",
91
+ "ui.welcome.tip2": "\u9700\u6C42\u8D8A\u5177\u4F53\uFF0C\u7ED3\u679C\u8D8A\u7CBE\u51C6",
92
+ "ui.welcome.tip3": "\u8F93\u5165 /help \u67E5\u770B\u6240\u6709\u53EF\u7528\u547D\u4EE4",
93
+ "ui.welcome.tip4": "",
93
94
  "ui.welcome.cwd": "\u5DE5\u4F5C\u76EE\u5F55",
94
95
  "ui.welcome.mcpServers": "MCP \u670D\u52A1\u5668",
95
96
  // UI - Hotkeys - 快捷键
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/i18n/locales/zh-CN.ts"],
4
- "sourcesContent": ["/**\n * Simplified Chinese Locale\n *\n * \u7B80\u4F53\u4E2D\u6587\u8BED\u8A00\u5305\n */\n\nimport type { Translations } from '../types'\n\nexport const zhCN: Translations = {\n // Common - \u901A\u7528\n 'common.yes': '\u662F',\n 'common.no': '\u5426',\n 'common.ok': '\u786E\u5B9A',\n 'common.cancel': '\u53D6\u6D88',\n 'common.confirm': '\u786E\u8BA4',\n 'common.save': '\u4FDD\u5B58',\n 'common.delete': '\u5220\u9664',\n 'common.edit': '\u7F16\u8F91',\n 'common.create': '\u521B\u5EFA',\n 'common.loading': '\u52A0\u8F7D\u4E2D...',\n 'common.error': '\u9519\u8BEF',\n 'common.success': '\u6210\u529F',\n 'common.warning': '\u8B66\u544A',\n 'common.info': '\u4FE1\u606F',\n 'common.unknown': '\u672A\u77E5',\n 'common.none': '\u65E0',\n 'common.all': '\u5168\u90E8',\n 'common.selected': '\u5DF2\u9009\u62E9',\n 'common.default': '\u9ED8\u8BA4',\n 'common.custom': '\u81EA\u5B9A\u4E49',\n 'common.enabled': '\u5DF2\u542F\u7528',\n 'common.disabled': '\u5DF2\u7981\u7528',\n 'common.connected': '\u5DF2\u8FDE\u63A5',\n 'common.disconnected': '\u5DF2\u65AD\u5F00',\n 'common.pending': '\u7B49\u5F85\u4E2D',\n 'common.completed': '\u5DF2\u5B8C\u6210',\n 'common.failed': '\u5931\u8D25',\n 'common.inProgress': '\u8FDB\u884C\u4E2D',\n 'common.version': '\u7248\u672C',\n 'common.help': '\u5E2E\u52A9',\n 'common.quit': '\u9000\u51FA',\n 'common.back': '\u8FD4\u56DE',\n 'common.next': '\u4E0B\u4E00\u6B65',\n 'common.previous': '\u4E0A\u4E00\u6B65',\n 'common.search': '\u641C\u7D22',\n 'common.filter': '\u7B5B\u9009',\n 'common.sort': '\u6392\u5E8F',\n 'common.refresh': '\u5237\u65B0',\n 'common.retry': '\u91CD\u8BD5',\n 'common.skip': '\u8DF3\u8FC7',\n 'common.continue': '\u7EE7\u7EED',\n 'common.abort': '\u4E2D\u6B62',\n 'common.reset': '\u91CD\u7F6E',\n 'common.clear': '\u6E05\u9664',\n 'common.copy': '\u590D\u5236',\n 'common.paste': '\u7C98\u8D34',\n 'common.select': '\u9009\u62E9',\n 'common.deselect': '\u53D6\u6D88\u9009\u62E9',\n 'common.selectAll': '\u5168\u9009',\n 'common.deselectAll': '\u53D6\u6D88\u5168\u9009',\n\n // UI - Verbose mode - \u8BE6\u7EC6\u6A21\u5F0F\n 'ui.verbose.on': '\u8BE6\u7EC6\u6A21\u5F0F: \u5F00',\n 'ui.verbose.off': '\u8BE6\u7EC6\u6A21\u5F0F: \u5173',\n 'ui.verbose.label': '\u8BE6\u7EC6\u6A21\u5F0F',\n 'ui.verbose.hint': '\u6309 Ctrl+O \u5207\u6362\u8BE6\u7EC6\u6A21\u5F0F',\n // Deprecated - \u4FDD\u7559\u7528\u4E8E\u5411\u540E\u517C\u5BB9\n 'ui.displayMode.minimal': '\u8BE6\u7EC6\u6A21\u5F0F: \u5173',\n 'ui.displayMode.compact': '\u8BE6\u7EC6\u6A21\u5F0F: \u5173',\n 'ui.displayMode.detailed': '\u8BE6\u7EC6\u6A21\u5F0F: \u5F00',\n 'ui.displayMode.label': '\u8BE6\u7EC6\u6A21\u5F0F',\n 'ui.displayMode.hint': '\u6309 Ctrl+O \u5207\u6362\u8BE6\u7EC6\u6A21\u5F0F',\n\n // UI - Input - \u8F93\u5165\n 'ui.input.placeholder': '\u8F93\u5165\u95EE\u9898\u6216\u8F93\u5165 / \u67E5\u770B\u547D\u4EE4...',\n 'ui.input.thinking': '\u601D\u8003\u4E2D',\n 'ui.input.processing': '\u5904\u7406\u4E2D',\n 'ui.input.waiting': '\u7B49\u5F85\u54CD\u5E94...',\n 'ui.input.multilineHint': 'Shift+Enter \u6362\u884C',\n 'ui.input.submitHint': 'Enter \u63D0\u4EA4',\n\n // UI - Panels - \u9762\u677F\n 'ui.panel.todo': '\u5F85\u529E',\n 'ui.panel.tasks': '\u4EFB\u52A1',\n 'ui.panel.agents': '\u667A\u80FD\u4F53',\n 'ui.panel.models': '\u6A21\u578B',\n 'ui.panel.help': '\u5E2E\u52A9',\n 'ui.panel.history': '\u5386\u53F2',\n 'ui.panel.settings': '\u8BBE\u7F6E',\n\n // UI - Status - \u72B6\u6001\n 'ui.status.ready': '\u5C31\u7EEA',\n 'ui.status.busy': '\u5FD9\u788C',\n 'ui.status.error': '\u9519\u8BEF',\n 'ui.status.offline': '\u79BB\u7EBF',\n 'ui.status.connecting': '\u8FDE\u63A5\u4E2D...',\n 'ui.status.streaming': '\u6D41\u5F0F\u8F93\u51FA\u4E2D',\n\n // UI - Welcome - \u6B22\u8FCE\n 'ui.welcome.title': '\u6B22\u8FCE\u4F7F\u7528 Minto \u7814\u7A76\u9884\u89C8\u7248\uFF01',\n 'ui.welcome.subtitle': '',\n 'ui.welcome.tip1': '\u63D0\u95EE\u3001\u7F16\u8F91\u6587\u4EF6\u6216\u8FD0\u884C\u547D\u4EE4\u3002',\n 'ui.welcome.tip2': '\u5177\u4F53\u7684\u95EE\u9898\u80FD\u83B7\u5F97\u66F4\u597D\u7684\u7ED3\u679C\u3002',\n 'ui.welcome.tip3': '\u521B\u5EFA MINTO.md \u6765\u81EA\u5B9A\u4E49\u9879\u76EE\u7684 AI \u4EA4\u4E92\u3002',\n 'ui.welcome.tip4': '\u4F7F\u7528 /help \u83B7\u53D6\u66F4\u591A\u4FE1\u606F\u3002',\n 'ui.welcome.cwd': '\u5DE5\u4F5C\u76EE\u5F55',\n 'ui.welcome.mcpServers': 'MCP \u670D\u52A1\u5668',\n\n // UI - Hotkeys - \u5FEB\u6377\u952E\n 'ui.hotkey.submit': '\u63D0\u4EA4',\n 'ui.hotkey.newline': '\u6362\u884C',\n 'ui.hotkey.cancel': '\u53D6\u6D88',\n 'ui.hotkey.toggleMode': '\u5207\u6362\u663E\u793A\u6A21\u5F0F',\n 'ui.hotkey.help': '\u5E2E\u52A9',\n 'ui.hotkey.quit': '\u9000\u51FA',\n 'ui.hotkey.history': '\u5386\u53F2',\n 'ui.hotkey.clear': '\u6E05\u5C4F',\n 'ui.hotkey.interrupt': '\u4E2D\u65AD',\n\n // UI - Hotkey hints (context-aware) - \u5FEB\u6377\u952E\u63D0\u793A\n 'ui.hints.command': '\u547D\u4EE4',\n 'ui.hints.bash': 'Bash',\n 'ui.hints.send': '\u53D1\u9001',\n 'ui.hints.complete': '\u8865\u5168',\n 'ui.hints.rollback': '\u56DE\u6EDA',\n 'ui.hints.select': '\u9009\u62E9',\n 'ui.hints.confirm': '\u786E\u8BA4',\n 'ui.hints.close': '\u5173\u95ED',\n 'ui.hints.browse': '\u6D4F\u89C8',\n 'ui.hints.execute': '\u6267\u884C',\n 'ui.hints.completeCommand': '\u8865\u5168\u547D\u4EE4',\n 'ui.hints.shortcuts': '\u5FEB\u6377\u952E',\n 'ui.hints.pressEsc': '\u6309 Esc \u5173\u95ED',\n 'ui.hints.tip': '\u8F93\u5165 /help \u67E5\u770B\u5B8C\u6574\u547D\u4EE4\u5217\u8868',\n\n // Commands - \u547D\u4EE4\n 'commands.help.description': '\u663E\u793A\u5E2E\u52A9\u4FE1\u606F',\n 'commands.clear.description': '\u6E05\u9664\u5C4F\u5E55',\n 'commands.compact.description': '\u538B\u7F29\u5BF9\u8BDD\u4E0A\u4E0B\u6587',\n 'commands.compact.success': '\u4E0A\u4E0B\u6587\u538B\u7F29\u6210\u529F',\n 'commands.compact.noMessages': '\u6CA1\u6709\u6D88\u606F\u9700\u8981\u538B\u7F29',\n 'commands.model.description': '\u9009\u62E9\u6216\u5207\u6362 AI \u6A21\u578B',\n 'commands.model.current': '\u5F53\u524D\u6A21\u578B',\n 'commands.model.switched': '\u5DF2\u5207\u6362\u5230\u6A21\u578B',\n 'commands.model.notFound': '\u672A\u627E\u5230\u6A21\u578B',\n 'commands.agents.description': '\u7BA1\u7406\u548C\u67E5\u770B\u667A\u80FD\u4F53',\n 'commands.agents.title': '\u53EF\u7528\u667A\u80FD\u4F53',\n 'commands.agents.empty': '\u6CA1\u6709\u53EF\u7528\u7684\u667A\u80FD\u4F53',\n 'commands.agents.loaded': '\u4E2A\u667A\u80FD\u4F53\u5DF2\u52A0\u8F7D',\n 'commands.tasks.description': '\u67E5\u770B\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1',\n 'commands.config.description': '\u7BA1\u7406\u914D\u7F6E',\n 'commands.bug.description': '\u62A5\u544A\u95EE\u9898',\n 'commands.doctor.description': '\u68C0\u67E5\u7CFB\u7EDF\u5065\u5EB7',\n 'commands.status.description': '\u663E\u793A\u7CFB\u7EDF\u72B6\u6001',\n 'commands.permissions.description': '\u7BA1\u7406\u6743\u9650',\n 'commands.mcp.description': '\u7BA1\u7406 MCP \u670D\u52A1\u5668',\n 'commands.plugin.description': '\u7BA1\u7406\u63D2\u4EF6',\n 'commands.sandbox.description': '\u914D\u7F6E\u6C99\u7BB1\u6A21\u5F0F',\n 'commands.thinking.description': '\u5207\u6362\u601D\u8003\u6A21\u5F0F',\n 'commands.thinking.enabled': '\u601D\u8003\u6A21\u5F0F\u5DF2\u542F\u7528',\n 'commands.thinking.disabled': '\u601D\u8003\u6A21\u5F0F\u5DF2\u7981\u7528',\n\n // Tools - \u5DE5\u5177\n 'tools.bash.description': '\u6267\u884C Shell \u547D\u4EE4',\n 'tools.bash.executing': '\u6267\u884C\u4E2D',\n 'tools.bash.completed': '\u547D\u4EE4\u5B8C\u6210',\n 'tools.bash.failed': '\u547D\u4EE4\u5931\u8D25',\n 'tools.read.description': '\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9',\n 'tools.read.reading': '\u8BFB\u53D6\u4E2D',\n 'tools.write.description': '\u5199\u5165\u6587\u4EF6\u5185\u5BB9',\n 'tools.write.writing': '\u5199\u5165\u4E2D',\n 'tools.write.created': '\u5DF2\u521B\u5EFA',\n 'tools.write.updated': '\u5DF2\u66F4\u65B0',\n 'tools.edit.description': '\u7F16\u8F91\u6587\u4EF6\u5185\u5BB9',\n 'tools.edit.editing': '\u7F16\u8F91\u4E2D',\n 'tools.glob.description': '\u6309\u6A21\u5F0F\u67E5\u627E\u6587\u4EF6',\n 'tools.grep.description': '\u641C\u7D22\u6587\u4EF6\u5185\u5BB9',\n 'tools.task.description': '\u542F\u52A8\u5B50\u667A\u80FD\u4F53\u4EFB\u52A1',\n 'tools.task.spawning': '\u6B63\u5728\u542F\u52A8\u4EFB\u52A1',\n 'tools.task.running': '\u4EFB\u52A1\u8FD0\u884C\u4E2D',\n 'tools.task.completed': '\u4EFB\u52A1\u5B8C\u6210',\n 'tools.todo.description': '\u7BA1\u7406\u5F85\u529E\u4E8B\u9879',\n\n // Errors - \u9519\u8BEF\n 'errors.generic': '\u53D1\u751F\u9519\u8BEF',\n 'errors.network': '\u7F51\u7EDC\u9519\u8BEF',\n 'errors.timeout': '\u8BF7\u6C42\u8D85\u65F6',\n 'errors.auth': '\u8BA4\u8BC1\u5931\u8D25',\n 'errors.rateLimit': '\u8BF7\u6C42\u9891\u7387\u8D85\u9650',\n 'errors.modelNotFound': '\u672A\u627E\u5230\u6A21\u578B',\n 'errors.apiKeyMissing': '\u7F3A\u5C11 API \u5BC6\u94A5',\n 'errors.apiKeyInvalid': 'API \u5BC6\u94A5\u65E0\u6548',\n 'errors.permissionDenied': '\u6743\u9650\u88AB\u62D2\u7EDD',\n 'errors.fileNotFound': '\u6587\u4EF6\u672A\u627E\u5230',\n 'errors.fileReadError': '\u8BFB\u53D6\u6587\u4EF6\u9519\u8BEF',\n 'errors.fileWriteError': '\u5199\u5165\u6587\u4EF6\u9519\u8BEF',\n 'errors.configError': '\u914D\u7F6E\u9519\u8BEF',\n 'errors.parseError': '\u89E3\u6790\u9519\u8BEF',\n 'errors.validationError': '\u9A8C\u8BC1\u9519\u8BEF',\n 'errors.aborted': '\u64CD\u4F5C\u5DF2\u4E2D\u6B62',\n 'errors.contextTooLong': '\u4E0A\u4E0B\u6587\u8FC7\u957F',\n 'errors.serverError': '\u670D\u52A1\u5668\u9519\u8BEF',\n 'errors.connectionFailed': '\u8FDE\u63A5\u5931\u8D25',\n\n // Help - \u5E2E\u52A9\n 'help.title': 'Minto \u5E2E\u52A9',\n 'help.usage': '\u7528\u6CD5',\n 'help.commands': '\u547D\u4EE4',\n 'help.options': '\u9009\u9879',\n 'help.examples': '\u793A\u4F8B',\n 'help.moreInfo': '\u66F4\u591A\u4FE1\u606F',\n 'help.reportBug': '\u62A5\u544A\u95EE\u9898',\n 'help.documentation': '\u6587\u6863',\n\n // Status messages - \u72B6\u6001\u6D88\u606F\n 'status.modelLoaded': '\u6A21\u578B\u5DF2\u52A0\u8F7D',\n 'status.contextCompressed': '\u4E0A\u4E0B\u6587\u5DF2\u538B\u7F29',\n 'status.tokensUsed': '\u5DF2\u4F7F\u7528\u4EE4\u724C',\n 'status.costEstimate': '\u9884\u4F30\u8D39\u7528',\n 'status.apiLatency': 'API \u5EF6\u8FDF',\n 'status.streaming': '\u6D41\u5F0F\u54CD\u5E94\u4E2D',\n 'status.thinking': '\u601D\u8003\u4E2D',\n 'status.toolUse': '\u4F7F\u7528\u5DE5\u5177',\n 'status.subagent': '\u8FD0\u884C\u5B50\u667A\u80FD\u4F53',\n\n // Prompts - \u63D0\u793A\n 'prompts.confirmDelete': '\u786E\u5B9A\u8981\u5220\u9664\u5417\uFF1F',\n 'prompts.confirmOverwrite': '\u6587\u4EF6\u5DF2\u5B58\u5728\uFF0C\u662F\u5426\u8986\u76D6\uFF1F',\n 'prompts.confirmExecute': '\u662F\u5426\u6267\u884C\u6B64\u547D\u4EE4\uFF1F',\n 'prompts.enterApiKey': '\u8BF7\u8F93\u5165 API \u5BC6\u94A5',\n 'prompts.selectModel': '\u8BF7\u9009\u62E9\u6A21\u578B',\n 'prompts.selectLanguage': '\u8BF7\u9009\u62E9\u8BED\u8A00',\n\n // Agent/Subagent - \u667A\u80FD\u4F53/\u5B50\u667A\u80FD\u4F53\n 'agent.spawning': '\u6B63\u5728\u542F\u52A8\u667A\u80FD\u4F53',\n 'agent.running': '\u667A\u80FD\u4F53\u8FD0\u884C\u4E2D',\n 'agent.completed': '\u667A\u80FD\u4F53\u5DF2\u5B8C\u6210',\n 'agent.failed': '\u667A\u80FD\u4F53\u5931\u8D25',\n 'agent.cancelled': '\u667A\u80FD\u4F53\u5DF2\u53D6\u6D88',\n 'agent.waiting': '\u7B49\u5F85\u4E2D',\n 'agent.thinking': '\u601D\u8003\u4E2D',\n\n // Model - \u6A21\u578B\n 'model.selecting': '\u6B63\u5728\u9009\u62E9\u6A21\u578B',\n 'model.selected': '\u6A21\u578B\u5DF2\u9009\u62E9',\n 'model.unavailable': '\u6A21\u578B\u4E0D\u53EF\u7528',\n 'model.switching': '\u6B63\u5728\u5207\u6362\u6A21\u578B',\n 'model.switched': '\u6A21\u578B\u5DF2\u5207\u6362',\n 'model.default': '\u9ED8\u8BA4\u6A21\u578B',\n 'model.custom': '\u81EA\u5B9A\u4E49\u6A21\u578B',\n\n // Permissions - \u6743\u9650\n 'permission.required': '\u9700\u8981\u6743\u9650',\n 'permission.granted': '\u6743\u9650\u5DF2\u6388\u4E88',\n 'permission.denied': '\u6743\u9650\u88AB\u62D2\u7EDD',\n 'permission.allowOnce': '\u5141\u8BB8\u4E00\u6B21',\n 'permission.allowAlways': '\u59CB\u7EC8\u5141\u8BB8',\n 'permission.denyOnce': '\u62D2\u7EDD\u4E00\u6B21',\n 'permission.denyAlways': '\u59CB\u7EC8\u62D2\u7EDD',\n 'permission.sensitiveFile': '\u654F\u611F\u6587\u4EF6\u8BBF\u95EE',\n 'permission.externalPath': '\u5916\u90E8\u8DEF\u5F84\u8BBF\u95EE',\n 'permission.dangerousCommand': '\u5371\u9669\u547D\u4EE4',\n\n // User-Friendly Error Messages - \u7528\u6237\u53CB\u597D\u9519\u8BEF\u6D88\u606F\n // Network & Connectivity - \u7F51\u7EDC\u4E0E\u8FDE\u63A5\n 'friendlyError.networkConnection.title': '\u7F51\u7EDC\u8FDE\u63A5\u95EE\u9898',\n 'friendlyError.networkConnection.description':\n '\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u95EE\u9898\u6216\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528\u3002',\n 'friendlyError.networkConnection.suggestion1': '\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5',\n 'friendlyError.networkConnection.suggestion2': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.networkConnection.suggestion3': '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458',\n\n 'friendlyError.networkTimeout.title': '\u8BF7\u6C42\u8D85\u65F6',\n 'friendlyError.networkTimeout.description':\n '\u670D\u52A1\u5668\u54CD\u5E94\u65F6\u95F4\u8FC7\u957F\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u7F13\u6162\u6216\u670D\u52A1\u7E41\u5FD9\u3002',\n 'friendlyError.networkTimeout.suggestion1': '\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5\u901F\u5EA6',\n 'friendlyError.networkTimeout.suggestion2': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.networkTimeout.suggestion3': '\u5C1D\u8BD5\u66F4\u7B80\u77ED\u7684\u8BF7\u6C42',\n\n 'friendlyError.networkDns.title': 'DNS \u89E3\u6790\u5931\u8D25',\n 'friendlyError.networkDns.description':\n '\u65E0\u6CD5\u627E\u5230\u670D\u52A1\u5668\u5730\u5740\u3002\u8FD9\u53EF\u80FD\u662F DNS \u914D\u7F6E\u95EE\u9898\u6216\u670D\u52A1\u5730\u5740\u66F4\u6539\u3002',\n 'friendlyError.networkDns.suggestion1': '\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8BBE\u7F6E',\n 'friendlyError.networkDns.suggestion2': '\u5C1D\u8BD5\u4F7F\u7528\u5176\u4ED6 DNS \u670D\u52A1\u5668',\n 'friendlyError.networkDns.suggestion3': '\u8054\u7CFB\u7F51\u7EDC\u7BA1\u7406\u5458',\n\n // API & Service - API \u4E0E\u670D\u52A1\n 'friendlyError.apiRateLimit.title': '\u8BF7\u6C42\u9891\u7387\u8D85\u9650',\n 'friendlyError.apiRateLimit.description':\n '\u60A8\u7684\u8BF7\u6C42\u592A\u9891\u7E41\u4E86\u3002\u670D\u52A1\u9700\u8981\u77ED\u6682\u4F11\u606F\u6765\u5904\u7406\u60A8\u7684\u8BF7\u6C42\u3002',\n 'friendlyError.apiRateLimit.suggestion1': '\u7B49\u5F85\u51E0\u5206\u949F\u540E\u91CD\u8BD5',\n 'friendlyError.apiRateLimit.suggestion2': '\u51CF\u5C11\u8BF7\u6C42\u9891\u7387',\n 'friendlyError.apiRateLimit.suggestion3': '\u8003\u8651\u5347\u7EA7\u5230\u66F4\u9AD8\u7684\u670D\u52A1\u7EA7\u522B',\n\n 'friendlyError.apiAuth.title': '\u8BA4\u8BC1\u5931\u8D25',\n 'friendlyError.apiAuth.description':\n '\u65E0\u6CD5\u9A8C\u8BC1\u60A8\u7684\u8EAB\u4EFD\u3002\u8FD9\u53EF\u80FD\u662F API \u5BC6\u94A5\u65E0\u6548\u6216\u5DF2\u8FC7\u671F\u3002',\n 'friendlyError.apiAuth.suggestion1': '\u68C0\u67E5\u60A8\u7684 API \u5BC6\u94A5\u662F\u5426\u6B63\u786E',\n 'friendlyError.apiAuth.suggestion2': '\u786E\u8BA4 API \u5BC6\u94A5\u672A\u8FC7\u671F',\n 'friendlyError.apiAuth.suggestion3': '\u91CD\u65B0\u751F\u6210\u65B0\u7684 API \u5BC6\u94A5',\n\n 'friendlyError.apiQuota.title': '\u914D\u989D\u5DF2\u7528\u5C3D',\n 'friendlyError.apiQuota.description':\n '\u60A8\u7684 API \u4F7F\u7528\u914D\u989D\u5DF2\u8017\u5C3D\u3002\u9700\u8981\u7B49\u5F85\u914D\u989D\u91CD\u7F6E\u6216\u5347\u7EA7\u8D26\u6237\u3002',\n 'friendlyError.apiQuota.suggestion1': '\u68C0\u67E5\u60A8\u7684\u8D26\u6237\u7528\u91CF',\n 'friendlyError.apiQuota.suggestion2': '\u7B49\u5F85\u914D\u989D\u91CD\u7F6E\uFF08\u901A\u5E38\u6BCF\u6708\u91CD\u7F6E\uFF09',\n 'friendlyError.apiQuota.suggestion3': '\u8003\u8651\u5347\u7EA7\u60A8\u7684\u8BA2\u9605\u8BA1\u5212',\n\n 'friendlyError.apiServerError.title': '\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF',\n 'friendlyError.apiServerError.description':\n 'AI \u670D\u52A1\u9047\u5230\u4E86\u5185\u90E8\u95EE\u9898\u3002\u8FD9\u901A\u5E38\u662F\u4E34\u65F6\u6027\u7684\u3002',\n 'friendlyError.apiServerError.suggestion1': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.apiServerError.suggestion2':\n '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u68C0\u67E5\u670D\u52A1\u72B6\u6001\u9875\u9762',\n\n 'friendlyError.apiInvalidResponse.title': '\u65E0\u6548\u7684\u54CD\u5E94',\n 'friendlyError.apiInvalidResponse.description':\n '\u670D\u52A1\u5668\u8FD4\u56DE\u4E86\u65E0\u6CD5\u7406\u89E3\u7684\u54CD\u5E94\u3002\u8FD9\u53EF\u80FD\u662F\u6682\u65F6\u6027\u7684\u670D\u52A1\u95EE\u9898\u3002',\n 'friendlyError.apiInvalidResponse.suggestion1': '\u91CD\u8BD5\u8BF7\u6C42',\n 'friendlyError.apiInvalidResponse.suggestion2':\n '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458',\n\n // File & Storage - \u6587\u4EF6\u4E0E\u5B58\u50A8\n 'friendlyError.fileNotFound.title': '\u6587\u4EF6\u672A\u627E\u5230',\n 'friendlyError.fileNotFound.description':\n '\u65E0\u6CD5\u627E\u5230\u6307\u5B9A\u7684\u6587\u4EF6\u3002\u5B83\u53EF\u80FD\u5DF2\u88AB\u79FB\u52A8\u3001\u5220\u9664\u6216\u8DEF\u5F84\u4E0D\u6B63\u786E\u3002',\n 'friendlyError.fileNotFound.suggestion1': '\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u786E',\n 'friendlyError.fileNotFound.suggestion2': '\u786E\u8BA4\u6587\u4EF6\u662F\u5426\u5B58\u5728',\n\n 'friendlyError.filePermission.title': '\u6587\u4EF6\u6743\u9650\u9519\u8BEF',\n 'friendlyError.filePermission.description':\n '\u6CA1\u6709\u8DB3\u591F\u7684\u6743\u9650\u8BBF\u95EE\u6B64\u6587\u4EF6\u6216\u76EE\u5F55\u3002',\n 'friendlyError.filePermission.suggestion1': '\u68C0\u67E5\u6587\u4EF6\u6743\u9650\u8BBE\u7F6E',\n 'friendlyError.filePermission.suggestion2': '\u5C1D\u8BD5\u4EE5\u7BA1\u7406\u5458\u6743\u9650\u8FD0\u884C',\n\n 'friendlyError.fileTooLarge.title': '\u6587\u4EF6\u8FC7\u5927',\n 'friendlyError.fileTooLarge.description': '\u6587\u4EF6\u5927\u5C0F\u8D85\u51FA\u4E86\u5904\u7406\u9650\u5236\u3002',\n 'friendlyError.fileTooLarge.suggestion1': '\u5C1D\u8BD5\u5904\u7406\u8F83\u5C0F\u7684\u6587\u4EF6',\n 'friendlyError.fileTooLarge.suggestion2': '\u5C06\u5927\u6587\u4EF6\u5206\u5272\u6210\u5C0F\u5757',\n\n 'friendlyError.fileEncoding.title': '\u6587\u4EF6\u7F16\u7801\u95EE\u9898',\n 'friendlyError.fileEncoding.description':\n '\u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9\u3002\u53EF\u80FD\u662F\u6587\u4EF6\u7F16\u7801\u4E0D\u517C\u5BB9\u6216\u6587\u4EF6\u5DF2\u635F\u574F\u3002',\n 'friendlyError.fileEncoding.suggestion1': '\u68C0\u67E5\u6587\u4EF6\u7F16\u7801\u683C\u5F0F',\n 'friendlyError.fileEncoding.suggestion2': '\u5C1D\u8BD5\u5C06\u6587\u4EF6\u8F6C\u6362\u4E3A UTF-8 \u7F16\u7801',\n\n // Configuration - \u914D\u7F6E\n 'friendlyError.configMissing.title': '\u914D\u7F6E\u6587\u4EF6\u7F3A\u5931',\n 'friendlyError.configMissing.description':\n '\u627E\u4E0D\u5230\u5FC5\u9700\u7684\u914D\u7F6E\u6587\u4EF6\u3002\u8FD9\u53EF\u80FD\u662F\u9996\u6B21\u8FD0\u884C\u6216\u914D\u7F6E\u88AB\u610F\u5916\u5220\u9664\u3002',\n 'friendlyError.configMissing.suggestion1': '\u8FD0\u884C\u521D\u59CB\u8BBE\u7F6E\u5411\u5BFC',\n 'friendlyError.configMissing.suggestion2': '\u624B\u52A8\u521B\u5EFA\u914D\u7F6E\u6587\u4EF6',\n\n 'friendlyError.configInvalid.title': '\u914D\u7F6E\u683C\u5F0F\u9519\u8BEF',\n 'friendlyError.configInvalid.description':\n '\u914D\u7F6E\u6587\u4EF6\u5305\u542B\u65E0\u6548\u7684\u5185\u5BB9\u3002\u8FD9\u53EF\u80FD\u662F\u7F16\u8F91\u65F6\u5F15\u5165\u7684\u8BED\u6CD5\u9519\u8BEF\u3002',\n 'friendlyError.configInvalid.suggestion1': '\u68C0\u67E5\u914D\u7F6E\u6587\u4EF6\u683C\u5F0F',\n 'friendlyError.configInvalid.suggestion2': '\u6062\u590D\u9ED8\u8BA4\u914D\u7F6E',\n\n 'friendlyError.configApiKey.title': 'API \u5BC6\u94A5\u672A\u914D\u7F6E',\n 'friendlyError.configApiKey.description': '\u9700\u8981\u8BBE\u7F6E API \u5BC6\u94A5\u624D\u80FD\u4F7F\u7528\u6B64\u529F\u80FD\u3002',\n 'friendlyError.configApiKey.suggestion1': '\u4F7F\u7528 /config \u547D\u4EE4\u8BBE\u7F6E API \u5BC6\u94A5',\n 'friendlyError.configApiKey.suggestion2': '\u4ECE\u670D\u52A1\u63D0\u4F9B\u5546\u83B7\u53D6\u6709\u6548\u7684 API \u5BC6\u94A5',\n\n // Model & AI - \u6A21\u578B\u4E0E AI\n 'friendlyError.modelUnavailable.title': '\u6A21\u578B\u4E0D\u53EF\u7528',\n 'friendlyError.modelUnavailable.description':\n '\u8BF7\u6C42\u7684 AI \u6A21\u578B\u5F53\u524D\u4E0D\u53EF\u7528\u3002\u5B83\u53EF\u80FD\u6B63\u5728\u7EF4\u62A4\u6216\u5DF2\u4E0B\u7EBF\u3002',\n 'friendlyError.modelUnavailable.suggestion1': '\u5C1D\u8BD5\u4F7F\u7528\u5176\u4ED6\u53EF\u7528\u6A21\u578B',\n 'friendlyError.modelUnavailable.suggestion2': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.modelUnavailable.suggestion3': '\u68C0\u67E5\u6A21\u578B\u540D\u79F0\u662F\u5426\u6B63\u786E',\n\n 'friendlyError.modelContextLength.title': '\u5185\u5BB9\u8FC7\u957F',\n 'friendlyError.modelContextLength.description':\n '\u60A8\u7684\u5BF9\u8BDD\u6216\u8F93\u5165\u8D85\u51FA\u4E86\u6A21\u578B\u7684\u5904\u7406\u80FD\u529B\u3002',\n 'friendlyError.modelContextLength.suggestion1': '\u7F29\u77ED\u60A8\u7684\u8F93\u5165',\n 'friendlyError.modelContextLength.suggestion2':\n '\u4F7F\u7528 /compact \u547D\u4EE4\u538B\u7F29\u5BF9\u8BDD\u5386\u53F2',\n\n 'friendlyError.modelContentFilter.title': '\u5185\u5BB9\u88AB\u8FC7\u6EE4',\n 'friendlyError.modelContentFilter.description':\n '\u60A8\u7684\u8BF7\u6C42\u89E6\u53D1\u4E86\u5185\u5BB9\u5B89\u5168\u8FC7\u6EE4\u5668\u3002',\n 'friendlyError.modelContentFilter.suggestion1': '\u4FEE\u6539\u60A8\u7684\u8BF7\u6C42\u5185\u5BB9',\n 'friendlyError.modelContentFilter.suggestion2': '\u907F\u514D\u654F\u611F\u6216\u4E0D\u5F53\u5185\u5BB9',\n\n // System - \u7CFB\u7EDF\n 'friendlyError.systemMemory.title': '\u5185\u5B58\u4E0D\u8DB3',\n 'friendlyError.systemMemory.description': '\u7CFB\u7EDF\u53EF\u7528\u5185\u5B58\u4E0D\u8DB3\u4EE5\u5B8C\u6210\u6B64\u64CD\u4F5C\u3002',\n 'friendlyError.systemMemory.suggestion1': '\u5173\u95ED\u4E00\u4E9B\u4E0D\u9700\u8981\u7684\u5E94\u7528\u7A0B\u5E8F',\n 'friendlyError.systemMemory.suggestion2': '\u91CD\u542F\u5E94\u7528\u7A0B\u5E8F',\n 'friendlyError.systemMemory.suggestion3': '\u5C1D\u8BD5\u5904\u7406\u8F83\u5C0F\u7684\u4EFB\u52A1',\n\n 'friendlyError.systemProcess.title': '\u8FDB\u7A0B\u9519\u8BEF',\n 'friendlyError.systemProcess.description': '\u6267\u884C\u547D\u4EE4\u65F6\u9047\u5230\u7CFB\u7EDF\u7EA7\u9519\u8BEF\u3002',\n 'friendlyError.systemProcess.suggestion1': '\u68C0\u67E5\u547D\u4EE4\u662F\u5426\u6B63\u786E',\n 'friendlyError.systemProcess.suggestion2': '\u786E\u8BA4\u6240\u9700\u7684\u7A0B\u5E8F\u5DF2\u5B89\u88C5',\n\n // Unknown - \u672A\u77E5\n 'friendlyError.unknown.title': '\u53D1\u751F\u672A\u77E5\u9519\u8BEF',\n 'friendlyError.unknown.description':\n '\u53D1\u751F\u4E86\u610F\u5916\u9519\u8BEF\u3002\u6211\u4EEC\u4F1A\u8BB0\u5F55\u6B64\u95EE\u9898\u4EE5\u5E2E\u52A9\u6539\u8FDB\u3002',\n 'friendlyError.unknown.suggestion1': '\u91CD\u8BD5\u64CD\u4F5C',\n 'friendlyError.unknown.suggestion2': '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458',\n\n // Error display format - \u9519\u8BEF\u663E\u793A\u683C\u5F0F\n 'friendlyError.suggestionLabel': '\u5EFA\u8BAE',\n 'friendlyError.errorIdLabel': '\u9519\u8BEF ID',\n 'friendlyError.technicalDetailsLabel': '\u6280\u672F\u8BE6\u60C5',\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Simplified Chinese Locale\n *\n * \u7B80\u4F53\u4E2D\u6587\u8BED\u8A00\u5305\n */\n\nimport type { Translations } from '../types'\n\nexport const zhCN: Translations = {\n // Common - \u901A\u7528\n 'common.yes': '\u662F',\n 'common.no': '\u5426',\n 'common.ok': '\u786E\u5B9A',\n 'common.cancel': '\u53D6\u6D88',\n 'common.confirm': '\u786E\u8BA4',\n 'common.save': '\u4FDD\u5B58',\n 'common.delete': '\u5220\u9664',\n 'common.edit': '\u7F16\u8F91',\n 'common.create': '\u521B\u5EFA',\n 'common.loading': '\u52A0\u8F7D\u4E2D...',\n 'common.error': '\u9519\u8BEF',\n 'common.success': '\u6210\u529F',\n 'common.warning': '\u8B66\u544A',\n 'common.info': '\u4FE1\u606F',\n 'common.unknown': '\u672A\u77E5',\n 'common.none': '\u65E0',\n 'common.all': '\u5168\u90E8',\n 'common.selected': '\u5DF2\u9009\u62E9',\n 'common.default': '\u9ED8\u8BA4',\n 'common.custom': '\u81EA\u5B9A\u4E49',\n 'common.enabled': '\u5DF2\u542F\u7528',\n 'common.disabled': '\u5DF2\u7981\u7528',\n 'common.connected': '\u5DF2\u8FDE\u63A5',\n 'common.disconnected': '\u5DF2\u65AD\u5F00',\n 'common.pending': '\u7B49\u5F85\u4E2D',\n 'common.completed': '\u5DF2\u5B8C\u6210',\n 'common.failed': '\u5931\u8D25',\n 'common.inProgress': '\u8FDB\u884C\u4E2D',\n 'common.version': '\u7248\u672C',\n 'common.help': '\u5E2E\u52A9',\n 'common.quit': '\u9000\u51FA',\n 'common.back': '\u8FD4\u56DE',\n 'common.next': '\u4E0B\u4E00\u6B65',\n 'common.previous': '\u4E0A\u4E00\u6B65',\n 'common.search': '\u641C\u7D22',\n 'common.filter': '\u7B5B\u9009',\n 'common.sort': '\u6392\u5E8F',\n 'common.refresh': '\u5237\u65B0',\n 'common.retry': '\u91CD\u8BD5',\n 'common.skip': '\u8DF3\u8FC7',\n 'common.continue': '\u7EE7\u7EED',\n 'common.abort': '\u4E2D\u6B62',\n 'common.reset': '\u91CD\u7F6E',\n 'common.clear': '\u6E05\u9664',\n 'common.copy': '\u590D\u5236',\n 'common.paste': '\u7C98\u8D34',\n 'common.select': '\u9009\u62E9',\n 'common.deselect': '\u53D6\u6D88\u9009\u62E9',\n 'common.selectAll': '\u5168\u9009',\n 'common.deselectAll': '\u53D6\u6D88\u5168\u9009',\n\n // UI - Verbose mode - \u8BE6\u7EC6\u6A21\u5F0F\n 'ui.verbose.on': '\u8BE6\u7EC6\u6A21\u5F0F: \u5F00',\n 'ui.verbose.off': '\u8BE6\u7EC6\u6A21\u5F0F: \u5173',\n 'ui.verbose.label': '\u8BE6\u7EC6\u6A21\u5F0F',\n 'ui.verbose.hint': '\u6309 Ctrl+O \u5207\u6362\u8BE6\u7EC6\u6A21\u5F0F',\n // Deprecated - \u4FDD\u7559\u7528\u4E8E\u5411\u540E\u517C\u5BB9\n 'ui.displayMode.minimal': '\u8BE6\u7EC6\u6A21\u5F0F: \u5173',\n 'ui.displayMode.compact': '\u8BE6\u7EC6\u6A21\u5F0F: \u5173',\n 'ui.displayMode.detailed': '\u8BE6\u7EC6\u6A21\u5F0F: \u5F00',\n 'ui.displayMode.label': '\u8BE6\u7EC6\u6A21\u5F0F',\n 'ui.displayMode.hint': '\u6309 Ctrl+O \u5207\u6362\u8BE6\u7EC6\u6A21\u5F0F',\n\n // UI - Input - \u8F93\u5165\n 'ui.input.placeholder': '\u8F93\u5165\u95EE\u9898\u6216\u8F93\u5165 / \u67E5\u770B\u547D\u4EE4...',\n 'ui.input.thinking': '\u601D\u8003\u4E2D',\n 'ui.input.processing': '\u5904\u7406\u4E2D',\n 'ui.input.waiting': '\u7B49\u5F85\u54CD\u5E94...',\n 'ui.input.multilineHint': 'Shift+Enter \u6362\u884C',\n 'ui.input.submitHint': 'Enter \u63D0\u4EA4',\n\n // UI - Panels - \u9762\u677F\n 'ui.panel.todo': '\u5F85\u529E',\n 'ui.panel.tasks': '\u4EFB\u52A1',\n 'ui.panel.agents': '\u667A\u80FD\u4F53',\n 'ui.panel.models': '\u6A21\u578B',\n 'ui.panel.help': '\u5E2E\u52A9',\n 'ui.panel.history': '\u5386\u53F2',\n 'ui.panel.settings': '\u8BBE\u7F6E',\n\n // UI - Status - \u72B6\u6001\n 'ui.status.ready': '\u5C31\u7EEA',\n 'ui.status.busy': '\u5FD9\u788C',\n 'ui.status.error': '\u9519\u8BEF',\n 'ui.status.offline': '\u79BB\u7EBF',\n 'ui.status.connecting': '\u8FDE\u63A5\u4E2D...',\n 'ui.status.streaming': '\u6D41\u5F0F\u8F93\u51FA\u4E2D',\n\n // UI - Welcome - \u6B22\u8FCE\n 'ui.welcome.title': '\u6B22\u8FCE\u4F7F\u7528 Minto\uFF01',\n 'ui.welcome.subtitle': '',\n 'ui.welcome.quickStart': '\u5FEB\u901F\u5F00\u59CB',\n 'ui.welcome.tip1': '\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u60A8\u7684\u7814\u7A76\u6216\u5206\u6790\u9700\u6C42',\n 'ui.welcome.tip2': '\u9700\u6C42\u8D8A\u5177\u4F53\uFF0C\u7ED3\u679C\u8D8A\u7CBE\u51C6',\n 'ui.welcome.tip3': '\u8F93\u5165 /help \u67E5\u770B\u6240\u6709\u53EF\u7528\u547D\u4EE4',\n 'ui.welcome.tip4': '',\n 'ui.welcome.cwd': '\u5DE5\u4F5C\u76EE\u5F55',\n 'ui.welcome.mcpServers': 'MCP \u670D\u52A1\u5668',\n\n // UI - Hotkeys - \u5FEB\u6377\u952E\n 'ui.hotkey.submit': '\u63D0\u4EA4',\n 'ui.hotkey.newline': '\u6362\u884C',\n 'ui.hotkey.cancel': '\u53D6\u6D88',\n 'ui.hotkey.toggleMode': '\u5207\u6362\u663E\u793A\u6A21\u5F0F',\n 'ui.hotkey.help': '\u5E2E\u52A9',\n 'ui.hotkey.quit': '\u9000\u51FA',\n 'ui.hotkey.history': '\u5386\u53F2',\n 'ui.hotkey.clear': '\u6E05\u5C4F',\n 'ui.hotkey.interrupt': '\u4E2D\u65AD',\n\n // UI - Hotkey hints (context-aware) - \u5FEB\u6377\u952E\u63D0\u793A\n 'ui.hints.command': '\u547D\u4EE4',\n 'ui.hints.bash': 'Bash',\n 'ui.hints.send': '\u53D1\u9001',\n 'ui.hints.complete': '\u8865\u5168',\n 'ui.hints.rollback': '\u56DE\u6EDA',\n 'ui.hints.select': '\u9009\u62E9',\n 'ui.hints.confirm': '\u786E\u8BA4',\n 'ui.hints.close': '\u5173\u95ED',\n 'ui.hints.browse': '\u6D4F\u89C8',\n 'ui.hints.execute': '\u6267\u884C',\n 'ui.hints.completeCommand': '\u8865\u5168\u547D\u4EE4',\n 'ui.hints.shortcuts': '\u5FEB\u6377\u952E',\n 'ui.hints.pressEsc': '\u6309 Esc \u5173\u95ED',\n 'ui.hints.tip': '\u8F93\u5165 /help \u67E5\u770B\u5B8C\u6574\u547D\u4EE4\u5217\u8868',\n\n // Commands - \u547D\u4EE4\n 'commands.help.description': '\u663E\u793A\u5E2E\u52A9\u4FE1\u606F',\n 'commands.clear.description': '\u6E05\u9664\u5C4F\u5E55',\n 'commands.compact.description': '\u538B\u7F29\u5BF9\u8BDD\u4E0A\u4E0B\u6587',\n 'commands.compact.success': '\u4E0A\u4E0B\u6587\u538B\u7F29\u6210\u529F',\n 'commands.compact.noMessages': '\u6CA1\u6709\u6D88\u606F\u9700\u8981\u538B\u7F29',\n 'commands.model.description': '\u9009\u62E9\u6216\u5207\u6362 AI \u6A21\u578B',\n 'commands.model.current': '\u5F53\u524D\u6A21\u578B',\n 'commands.model.switched': '\u5DF2\u5207\u6362\u5230\u6A21\u578B',\n 'commands.model.notFound': '\u672A\u627E\u5230\u6A21\u578B',\n 'commands.agents.description': '\u7BA1\u7406\u548C\u67E5\u770B\u667A\u80FD\u4F53',\n 'commands.agents.title': '\u53EF\u7528\u667A\u80FD\u4F53',\n 'commands.agents.empty': '\u6CA1\u6709\u53EF\u7528\u7684\u667A\u80FD\u4F53',\n 'commands.agents.loaded': '\u4E2A\u667A\u80FD\u4F53\u5DF2\u52A0\u8F7D',\n 'commands.tasks.description': '\u67E5\u770B\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1',\n 'commands.config.description': '\u7BA1\u7406\u914D\u7F6E',\n 'commands.bug.description': '\u62A5\u544A\u95EE\u9898',\n 'commands.doctor.description': '\u68C0\u67E5\u7CFB\u7EDF\u5065\u5EB7',\n 'commands.status.description': '\u663E\u793A\u7CFB\u7EDF\u72B6\u6001',\n 'commands.permissions.description': '\u7BA1\u7406\u6743\u9650',\n 'commands.mcp.description': '\u7BA1\u7406 MCP \u670D\u52A1\u5668',\n 'commands.plugin.description': '\u7BA1\u7406\u63D2\u4EF6',\n 'commands.sandbox.description': '\u914D\u7F6E\u6C99\u7BB1\u6A21\u5F0F',\n 'commands.thinking.description': '\u5207\u6362\u601D\u8003\u6A21\u5F0F',\n 'commands.thinking.enabled': '\u601D\u8003\u6A21\u5F0F\u5DF2\u542F\u7528',\n 'commands.thinking.disabled': '\u601D\u8003\u6A21\u5F0F\u5DF2\u7981\u7528',\n\n // Tools - \u5DE5\u5177\n 'tools.bash.description': '\u6267\u884C Shell \u547D\u4EE4',\n 'tools.bash.executing': '\u6267\u884C\u4E2D',\n 'tools.bash.completed': '\u547D\u4EE4\u5B8C\u6210',\n 'tools.bash.failed': '\u547D\u4EE4\u5931\u8D25',\n 'tools.read.description': '\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9',\n 'tools.read.reading': '\u8BFB\u53D6\u4E2D',\n 'tools.write.description': '\u5199\u5165\u6587\u4EF6\u5185\u5BB9',\n 'tools.write.writing': '\u5199\u5165\u4E2D',\n 'tools.write.created': '\u5DF2\u521B\u5EFA',\n 'tools.write.updated': '\u5DF2\u66F4\u65B0',\n 'tools.edit.description': '\u7F16\u8F91\u6587\u4EF6\u5185\u5BB9',\n 'tools.edit.editing': '\u7F16\u8F91\u4E2D',\n 'tools.glob.description': '\u6309\u6A21\u5F0F\u67E5\u627E\u6587\u4EF6',\n 'tools.grep.description': '\u641C\u7D22\u6587\u4EF6\u5185\u5BB9',\n 'tools.task.description': '\u542F\u52A8\u5B50\u667A\u80FD\u4F53\u4EFB\u52A1',\n 'tools.task.spawning': '\u6B63\u5728\u542F\u52A8\u4EFB\u52A1',\n 'tools.task.running': '\u4EFB\u52A1\u8FD0\u884C\u4E2D',\n 'tools.task.completed': '\u4EFB\u52A1\u5B8C\u6210',\n 'tools.todo.description': '\u7BA1\u7406\u5F85\u529E\u4E8B\u9879',\n\n // Errors - \u9519\u8BEF\n 'errors.generic': '\u53D1\u751F\u9519\u8BEF',\n 'errors.network': '\u7F51\u7EDC\u9519\u8BEF',\n 'errors.timeout': '\u8BF7\u6C42\u8D85\u65F6',\n 'errors.auth': '\u8BA4\u8BC1\u5931\u8D25',\n 'errors.rateLimit': '\u8BF7\u6C42\u9891\u7387\u8D85\u9650',\n 'errors.modelNotFound': '\u672A\u627E\u5230\u6A21\u578B',\n 'errors.apiKeyMissing': '\u7F3A\u5C11 API \u5BC6\u94A5',\n 'errors.apiKeyInvalid': 'API \u5BC6\u94A5\u65E0\u6548',\n 'errors.permissionDenied': '\u6743\u9650\u88AB\u62D2\u7EDD',\n 'errors.fileNotFound': '\u6587\u4EF6\u672A\u627E\u5230',\n 'errors.fileReadError': '\u8BFB\u53D6\u6587\u4EF6\u9519\u8BEF',\n 'errors.fileWriteError': '\u5199\u5165\u6587\u4EF6\u9519\u8BEF',\n 'errors.configError': '\u914D\u7F6E\u9519\u8BEF',\n 'errors.parseError': '\u89E3\u6790\u9519\u8BEF',\n 'errors.validationError': '\u9A8C\u8BC1\u9519\u8BEF',\n 'errors.aborted': '\u64CD\u4F5C\u5DF2\u4E2D\u6B62',\n 'errors.contextTooLong': '\u4E0A\u4E0B\u6587\u8FC7\u957F',\n 'errors.serverError': '\u670D\u52A1\u5668\u9519\u8BEF',\n 'errors.connectionFailed': '\u8FDE\u63A5\u5931\u8D25',\n\n // Help - \u5E2E\u52A9\n 'help.title': 'Minto \u5E2E\u52A9',\n 'help.usage': '\u7528\u6CD5',\n 'help.commands': '\u547D\u4EE4',\n 'help.options': '\u9009\u9879',\n 'help.examples': '\u793A\u4F8B',\n 'help.moreInfo': '\u66F4\u591A\u4FE1\u606F',\n 'help.reportBug': '\u62A5\u544A\u95EE\u9898',\n 'help.documentation': '\u6587\u6863',\n\n // Status messages - \u72B6\u6001\u6D88\u606F\n 'status.modelLoaded': '\u6A21\u578B\u5DF2\u52A0\u8F7D',\n 'status.contextCompressed': '\u4E0A\u4E0B\u6587\u5DF2\u538B\u7F29',\n 'status.tokensUsed': '\u5DF2\u4F7F\u7528\u4EE4\u724C',\n 'status.costEstimate': '\u9884\u4F30\u8D39\u7528',\n 'status.apiLatency': 'API \u5EF6\u8FDF',\n 'status.streaming': '\u6D41\u5F0F\u54CD\u5E94\u4E2D',\n 'status.thinking': '\u601D\u8003\u4E2D',\n 'status.toolUse': '\u4F7F\u7528\u5DE5\u5177',\n 'status.subagent': '\u8FD0\u884C\u5B50\u667A\u80FD\u4F53',\n\n // Prompts - \u63D0\u793A\n 'prompts.confirmDelete': '\u786E\u5B9A\u8981\u5220\u9664\u5417\uFF1F',\n 'prompts.confirmOverwrite': '\u6587\u4EF6\u5DF2\u5B58\u5728\uFF0C\u662F\u5426\u8986\u76D6\uFF1F',\n 'prompts.confirmExecute': '\u662F\u5426\u6267\u884C\u6B64\u547D\u4EE4\uFF1F',\n 'prompts.enterApiKey': '\u8BF7\u8F93\u5165 API \u5BC6\u94A5',\n 'prompts.selectModel': '\u8BF7\u9009\u62E9\u6A21\u578B',\n 'prompts.selectLanguage': '\u8BF7\u9009\u62E9\u8BED\u8A00',\n\n // Agent/Subagent - \u667A\u80FD\u4F53/\u5B50\u667A\u80FD\u4F53\n 'agent.spawning': '\u6B63\u5728\u542F\u52A8\u667A\u80FD\u4F53',\n 'agent.running': '\u667A\u80FD\u4F53\u8FD0\u884C\u4E2D',\n 'agent.completed': '\u667A\u80FD\u4F53\u5DF2\u5B8C\u6210',\n 'agent.failed': '\u667A\u80FD\u4F53\u5931\u8D25',\n 'agent.cancelled': '\u667A\u80FD\u4F53\u5DF2\u53D6\u6D88',\n 'agent.waiting': '\u7B49\u5F85\u4E2D',\n 'agent.thinking': '\u601D\u8003\u4E2D',\n\n // Model - \u6A21\u578B\n 'model.selecting': '\u6B63\u5728\u9009\u62E9\u6A21\u578B',\n 'model.selected': '\u6A21\u578B\u5DF2\u9009\u62E9',\n 'model.unavailable': '\u6A21\u578B\u4E0D\u53EF\u7528',\n 'model.switching': '\u6B63\u5728\u5207\u6362\u6A21\u578B',\n 'model.switched': '\u6A21\u578B\u5DF2\u5207\u6362',\n 'model.default': '\u9ED8\u8BA4\u6A21\u578B',\n 'model.custom': '\u81EA\u5B9A\u4E49\u6A21\u578B',\n\n // Permissions - \u6743\u9650\n 'permission.required': '\u9700\u8981\u6743\u9650',\n 'permission.granted': '\u6743\u9650\u5DF2\u6388\u4E88',\n 'permission.denied': '\u6743\u9650\u88AB\u62D2\u7EDD',\n 'permission.allowOnce': '\u5141\u8BB8\u4E00\u6B21',\n 'permission.allowAlways': '\u59CB\u7EC8\u5141\u8BB8',\n 'permission.denyOnce': '\u62D2\u7EDD\u4E00\u6B21',\n 'permission.denyAlways': '\u59CB\u7EC8\u62D2\u7EDD',\n 'permission.sensitiveFile': '\u654F\u611F\u6587\u4EF6\u8BBF\u95EE',\n 'permission.externalPath': '\u5916\u90E8\u8DEF\u5F84\u8BBF\u95EE',\n 'permission.dangerousCommand': '\u5371\u9669\u547D\u4EE4',\n\n // User-Friendly Error Messages - \u7528\u6237\u53CB\u597D\u9519\u8BEF\u6D88\u606F\n // Network & Connectivity - \u7F51\u7EDC\u4E0E\u8FDE\u63A5\n 'friendlyError.networkConnection.title': '\u7F51\u7EDC\u8FDE\u63A5\u95EE\u9898',\n 'friendlyError.networkConnection.description':\n '\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u95EE\u9898\u6216\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528\u3002',\n 'friendlyError.networkConnection.suggestion1': '\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5',\n 'friendlyError.networkConnection.suggestion2': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.networkConnection.suggestion3': '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458',\n\n 'friendlyError.networkTimeout.title': '\u8BF7\u6C42\u8D85\u65F6',\n 'friendlyError.networkTimeout.description':\n '\u670D\u52A1\u5668\u54CD\u5E94\u65F6\u95F4\u8FC7\u957F\u3002\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E\u7F51\u7EDC\u7F13\u6162\u6216\u670D\u52A1\u7E41\u5FD9\u3002',\n 'friendlyError.networkTimeout.suggestion1': '\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5\u901F\u5EA6',\n 'friendlyError.networkTimeout.suggestion2': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.networkTimeout.suggestion3': '\u5C1D\u8BD5\u66F4\u7B80\u77ED\u7684\u8BF7\u6C42',\n\n 'friendlyError.networkDns.title': 'DNS \u89E3\u6790\u5931\u8D25',\n 'friendlyError.networkDns.description':\n '\u65E0\u6CD5\u627E\u5230\u670D\u52A1\u5668\u5730\u5740\u3002\u8FD9\u53EF\u80FD\u662F DNS \u914D\u7F6E\u95EE\u9898\u6216\u670D\u52A1\u5730\u5740\u66F4\u6539\u3002',\n 'friendlyError.networkDns.suggestion1': '\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8BBE\u7F6E',\n 'friendlyError.networkDns.suggestion2': '\u5C1D\u8BD5\u4F7F\u7528\u5176\u4ED6 DNS \u670D\u52A1\u5668',\n 'friendlyError.networkDns.suggestion3': '\u8054\u7CFB\u7F51\u7EDC\u7BA1\u7406\u5458',\n\n // API & Service - API \u4E0E\u670D\u52A1\n 'friendlyError.apiRateLimit.title': '\u8BF7\u6C42\u9891\u7387\u8D85\u9650',\n 'friendlyError.apiRateLimit.description':\n '\u60A8\u7684\u8BF7\u6C42\u592A\u9891\u7E41\u4E86\u3002\u670D\u52A1\u9700\u8981\u77ED\u6682\u4F11\u606F\u6765\u5904\u7406\u60A8\u7684\u8BF7\u6C42\u3002',\n 'friendlyError.apiRateLimit.suggestion1': '\u7B49\u5F85\u51E0\u5206\u949F\u540E\u91CD\u8BD5',\n 'friendlyError.apiRateLimit.suggestion2': '\u51CF\u5C11\u8BF7\u6C42\u9891\u7387',\n 'friendlyError.apiRateLimit.suggestion3': '\u8003\u8651\u5347\u7EA7\u5230\u66F4\u9AD8\u7684\u670D\u52A1\u7EA7\u522B',\n\n 'friendlyError.apiAuth.title': '\u8BA4\u8BC1\u5931\u8D25',\n 'friendlyError.apiAuth.description':\n '\u65E0\u6CD5\u9A8C\u8BC1\u60A8\u7684\u8EAB\u4EFD\u3002\u8FD9\u53EF\u80FD\u662F API \u5BC6\u94A5\u65E0\u6548\u6216\u5DF2\u8FC7\u671F\u3002',\n 'friendlyError.apiAuth.suggestion1': '\u68C0\u67E5\u60A8\u7684 API \u5BC6\u94A5\u662F\u5426\u6B63\u786E',\n 'friendlyError.apiAuth.suggestion2': '\u786E\u8BA4 API \u5BC6\u94A5\u672A\u8FC7\u671F',\n 'friendlyError.apiAuth.suggestion3': '\u91CD\u65B0\u751F\u6210\u65B0\u7684 API \u5BC6\u94A5',\n\n 'friendlyError.apiQuota.title': '\u914D\u989D\u5DF2\u7528\u5C3D',\n 'friendlyError.apiQuota.description':\n '\u60A8\u7684 API \u4F7F\u7528\u914D\u989D\u5DF2\u8017\u5C3D\u3002\u9700\u8981\u7B49\u5F85\u914D\u989D\u91CD\u7F6E\u6216\u5347\u7EA7\u8D26\u6237\u3002',\n 'friendlyError.apiQuota.suggestion1': '\u68C0\u67E5\u60A8\u7684\u8D26\u6237\u7528\u91CF',\n 'friendlyError.apiQuota.suggestion2': '\u7B49\u5F85\u914D\u989D\u91CD\u7F6E\uFF08\u901A\u5E38\u6BCF\u6708\u91CD\u7F6E\uFF09',\n 'friendlyError.apiQuota.suggestion3': '\u8003\u8651\u5347\u7EA7\u60A8\u7684\u8BA2\u9605\u8BA1\u5212',\n\n 'friendlyError.apiServerError.title': '\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF',\n 'friendlyError.apiServerError.description':\n 'AI \u670D\u52A1\u9047\u5230\u4E86\u5185\u90E8\u95EE\u9898\u3002\u8FD9\u901A\u5E38\u662F\u4E34\u65F6\u6027\u7684\u3002',\n 'friendlyError.apiServerError.suggestion1': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.apiServerError.suggestion2':\n '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u68C0\u67E5\u670D\u52A1\u72B6\u6001\u9875\u9762',\n\n 'friendlyError.apiInvalidResponse.title': '\u65E0\u6548\u7684\u54CD\u5E94',\n 'friendlyError.apiInvalidResponse.description':\n '\u670D\u52A1\u5668\u8FD4\u56DE\u4E86\u65E0\u6CD5\u7406\u89E3\u7684\u54CD\u5E94\u3002\u8FD9\u53EF\u80FD\u662F\u6682\u65F6\u6027\u7684\u670D\u52A1\u95EE\u9898\u3002',\n 'friendlyError.apiInvalidResponse.suggestion1': '\u91CD\u8BD5\u8BF7\u6C42',\n 'friendlyError.apiInvalidResponse.suggestion2':\n '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458',\n\n // File & Storage - \u6587\u4EF6\u4E0E\u5B58\u50A8\n 'friendlyError.fileNotFound.title': '\u6587\u4EF6\u672A\u627E\u5230',\n 'friendlyError.fileNotFound.description':\n '\u65E0\u6CD5\u627E\u5230\u6307\u5B9A\u7684\u6587\u4EF6\u3002\u5B83\u53EF\u80FD\u5DF2\u88AB\u79FB\u52A8\u3001\u5220\u9664\u6216\u8DEF\u5F84\u4E0D\u6B63\u786E\u3002',\n 'friendlyError.fileNotFound.suggestion1': '\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u786E',\n 'friendlyError.fileNotFound.suggestion2': '\u786E\u8BA4\u6587\u4EF6\u662F\u5426\u5B58\u5728',\n\n 'friendlyError.filePermission.title': '\u6587\u4EF6\u6743\u9650\u9519\u8BEF',\n 'friendlyError.filePermission.description':\n '\u6CA1\u6709\u8DB3\u591F\u7684\u6743\u9650\u8BBF\u95EE\u6B64\u6587\u4EF6\u6216\u76EE\u5F55\u3002',\n 'friendlyError.filePermission.suggestion1': '\u68C0\u67E5\u6587\u4EF6\u6743\u9650\u8BBE\u7F6E',\n 'friendlyError.filePermission.suggestion2': '\u5C1D\u8BD5\u4EE5\u7BA1\u7406\u5458\u6743\u9650\u8FD0\u884C',\n\n 'friendlyError.fileTooLarge.title': '\u6587\u4EF6\u8FC7\u5927',\n 'friendlyError.fileTooLarge.description': '\u6587\u4EF6\u5927\u5C0F\u8D85\u51FA\u4E86\u5904\u7406\u9650\u5236\u3002',\n 'friendlyError.fileTooLarge.suggestion1': '\u5C1D\u8BD5\u5904\u7406\u8F83\u5C0F\u7684\u6587\u4EF6',\n 'friendlyError.fileTooLarge.suggestion2': '\u5C06\u5927\u6587\u4EF6\u5206\u5272\u6210\u5C0F\u5757',\n\n 'friendlyError.fileEncoding.title': '\u6587\u4EF6\u7F16\u7801\u95EE\u9898',\n 'friendlyError.fileEncoding.description':\n '\u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9\u3002\u53EF\u80FD\u662F\u6587\u4EF6\u7F16\u7801\u4E0D\u517C\u5BB9\u6216\u6587\u4EF6\u5DF2\u635F\u574F\u3002',\n 'friendlyError.fileEncoding.suggestion1': '\u68C0\u67E5\u6587\u4EF6\u7F16\u7801\u683C\u5F0F',\n 'friendlyError.fileEncoding.suggestion2': '\u5C1D\u8BD5\u5C06\u6587\u4EF6\u8F6C\u6362\u4E3A UTF-8 \u7F16\u7801',\n\n // Configuration - \u914D\u7F6E\n 'friendlyError.configMissing.title': '\u914D\u7F6E\u6587\u4EF6\u7F3A\u5931',\n 'friendlyError.configMissing.description':\n '\u627E\u4E0D\u5230\u5FC5\u9700\u7684\u914D\u7F6E\u6587\u4EF6\u3002\u8FD9\u53EF\u80FD\u662F\u9996\u6B21\u8FD0\u884C\u6216\u914D\u7F6E\u88AB\u610F\u5916\u5220\u9664\u3002',\n 'friendlyError.configMissing.suggestion1': '\u8FD0\u884C\u521D\u59CB\u8BBE\u7F6E\u5411\u5BFC',\n 'friendlyError.configMissing.suggestion2': '\u624B\u52A8\u521B\u5EFA\u914D\u7F6E\u6587\u4EF6',\n\n 'friendlyError.configInvalid.title': '\u914D\u7F6E\u683C\u5F0F\u9519\u8BEF',\n 'friendlyError.configInvalid.description':\n '\u914D\u7F6E\u6587\u4EF6\u5305\u542B\u65E0\u6548\u7684\u5185\u5BB9\u3002\u8FD9\u53EF\u80FD\u662F\u7F16\u8F91\u65F6\u5F15\u5165\u7684\u8BED\u6CD5\u9519\u8BEF\u3002',\n 'friendlyError.configInvalid.suggestion1': '\u68C0\u67E5\u914D\u7F6E\u6587\u4EF6\u683C\u5F0F',\n 'friendlyError.configInvalid.suggestion2': '\u6062\u590D\u9ED8\u8BA4\u914D\u7F6E',\n\n 'friendlyError.configApiKey.title': 'API \u5BC6\u94A5\u672A\u914D\u7F6E',\n 'friendlyError.configApiKey.description': '\u9700\u8981\u8BBE\u7F6E API \u5BC6\u94A5\u624D\u80FD\u4F7F\u7528\u6B64\u529F\u80FD\u3002',\n 'friendlyError.configApiKey.suggestion1': '\u4F7F\u7528 /config \u547D\u4EE4\u8BBE\u7F6E API \u5BC6\u94A5',\n 'friendlyError.configApiKey.suggestion2': '\u4ECE\u670D\u52A1\u63D0\u4F9B\u5546\u83B7\u53D6\u6709\u6548\u7684 API \u5BC6\u94A5',\n\n // Model & AI - \u6A21\u578B\u4E0E AI\n 'friendlyError.modelUnavailable.title': '\u6A21\u578B\u4E0D\u53EF\u7528',\n 'friendlyError.modelUnavailable.description':\n '\u8BF7\u6C42\u7684 AI \u6A21\u578B\u5F53\u524D\u4E0D\u53EF\u7528\u3002\u5B83\u53EF\u80FD\u6B63\u5728\u7EF4\u62A4\u6216\u5DF2\u4E0B\u7EBF\u3002',\n 'friendlyError.modelUnavailable.suggestion1': '\u5C1D\u8BD5\u4F7F\u7528\u5176\u4ED6\u53EF\u7528\u6A21\u578B',\n 'friendlyError.modelUnavailable.suggestion2': '\u7A0D\u540E\u91CD\u8BD5',\n 'friendlyError.modelUnavailable.suggestion3': '\u68C0\u67E5\u6A21\u578B\u540D\u79F0\u662F\u5426\u6B63\u786E',\n\n 'friendlyError.modelContextLength.title': '\u5185\u5BB9\u8FC7\u957F',\n 'friendlyError.modelContextLength.description':\n '\u60A8\u7684\u5BF9\u8BDD\u6216\u8F93\u5165\u8D85\u51FA\u4E86\u6A21\u578B\u7684\u5904\u7406\u80FD\u529B\u3002',\n 'friendlyError.modelContextLength.suggestion1': '\u7F29\u77ED\u60A8\u7684\u8F93\u5165',\n 'friendlyError.modelContextLength.suggestion2':\n '\u4F7F\u7528 /compact \u547D\u4EE4\u538B\u7F29\u5BF9\u8BDD\u5386\u53F2',\n\n 'friendlyError.modelContentFilter.title': '\u5185\u5BB9\u88AB\u8FC7\u6EE4',\n 'friendlyError.modelContentFilter.description':\n '\u60A8\u7684\u8BF7\u6C42\u89E6\u53D1\u4E86\u5185\u5BB9\u5B89\u5168\u8FC7\u6EE4\u5668\u3002',\n 'friendlyError.modelContentFilter.suggestion1': '\u4FEE\u6539\u60A8\u7684\u8BF7\u6C42\u5185\u5BB9',\n 'friendlyError.modelContentFilter.suggestion2': '\u907F\u514D\u654F\u611F\u6216\u4E0D\u5F53\u5185\u5BB9',\n\n // System - \u7CFB\u7EDF\n 'friendlyError.systemMemory.title': '\u5185\u5B58\u4E0D\u8DB3',\n 'friendlyError.systemMemory.description': '\u7CFB\u7EDF\u53EF\u7528\u5185\u5B58\u4E0D\u8DB3\u4EE5\u5B8C\u6210\u6B64\u64CD\u4F5C\u3002',\n 'friendlyError.systemMemory.suggestion1': '\u5173\u95ED\u4E00\u4E9B\u4E0D\u9700\u8981\u7684\u5E94\u7528\u7A0B\u5E8F',\n 'friendlyError.systemMemory.suggestion2': '\u91CD\u542F\u5E94\u7528\u7A0B\u5E8F',\n 'friendlyError.systemMemory.suggestion3': '\u5C1D\u8BD5\u5904\u7406\u8F83\u5C0F\u7684\u4EFB\u52A1',\n\n 'friendlyError.systemProcess.title': '\u8FDB\u7A0B\u9519\u8BEF',\n 'friendlyError.systemProcess.description': '\u6267\u884C\u547D\u4EE4\u65F6\u9047\u5230\u7CFB\u7EDF\u7EA7\u9519\u8BEF\u3002',\n 'friendlyError.systemProcess.suggestion1': '\u68C0\u67E5\u547D\u4EE4\u662F\u5426\u6B63\u786E',\n 'friendlyError.systemProcess.suggestion2': '\u786E\u8BA4\u6240\u9700\u7684\u7A0B\u5E8F\u5DF2\u5B89\u88C5',\n\n // Unknown - \u672A\u77E5\n 'friendlyError.unknown.title': '\u53D1\u751F\u672A\u77E5\u9519\u8BEF',\n 'friendlyError.unknown.description':\n '\u53D1\u751F\u4E86\u610F\u5916\u9519\u8BEF\u3002\u6211\u4EEC\u4F1A\u8BB0\u5F55\u6B64\u95EE\u9898\u4EE5\u5E2E\u52A9\u6539\u8FDB\u3002',\n 'friendlyError.unknown.suggestion1': '\u91CD\u8BD5\u64CD\u4F5C',\n 'friendlyError.unknown.suggestion2': '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458',\n\n // Error display format - \u9519\u8BEF\u663E\u793A\u683C\u5F0F\n 'friendlyError.suggestionLabel': '\u5EFA\u8BAE',\n 'friendlyError.errorIdLabel': '\u9519\u8BEF ID',\n 'friendlyError.technicalDetailsLabel': '\u6280\u672F\u8BE6\u60C5',\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -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.tip1': string\n 'ui.welcome.tip2': string\n 'ui.welcome.tip3': string\n 'ui.welcome.tip4': string\n 'ui.welcome.cwd': string\n 'ui.welcome.mcpServers': string\n\n // UI - Hotkeys\n 'ui.hotkey.submit': string\n 'ui.hotkey.newline': string\n 'ui.hotkey.cancel': string\n 'ui.hotkey.toggleMode': string\n 'ui.hotkey.help': string\n 'ui.hotkey.quit': string\n 'ui.hotkey.history': string\n 'ui.hotkey.clear': string\n 'ui.hotkey.interrupt': string\n\n // UI - Hotkey hints (context-aware)\n 'ui.hints.command': string\n 'ui.hints.bash': string\n 'ui.hints.send': string\n 'ui.hints.complete': string\n 'ui.hints.rollback': string\n 'ui.hints.select': string\n 'ui.hints.confirm': string\n 'ui.hints.close': string\n 'ui.hints.browse': string\n 'ui.hints.execute': string\n 'ui.hints.completeCommand': string\n 'ui.hints.shortcuts': string\n 'ui.hints.pressEsc': string\n 'ui.hints.tip': string\n\n // Commands\n 'commands.help.description': string\n 'commands.clear.description': string\n 'commands.compact.description': string\n 'commands.compact.success': string\n 'commands.compact.noMessages': string\n 'commands.model.description': string\n 'commands.model.current': string\n 'commands.model.switched': string\n 'commands.model.notFound': string\n 'commands.agents.description': string\n 'commands.agents.title': string\n 'commands.agents.empty': string\n 'commands.agents.loaded': string\n 'commands.tasks.description': string\n 'commands.config.description': string\n 'commands.bug.description': string\n 'commands.doctor.description': string\n 'commands.status.description': string\n 'commands.permissions.description': string\n 'commands.mcp.description': string\n 'commands.plugin.description': string\n 'commands.sandbox.description': string\n 'commands.thinking.description': string\n 'commands.thinking.enabled': string\n 'commands.thinking.disabled': string\n\n // Tools\n 'tools.bash.description': string\n 'tools.bash.executing': string\n 'tools.bash.completed': string\n 'tools.bash.failed': string\n 'tools.read.description': string\n 'tools.read.reading': string\n 'tools.write.description': string\n 'tools.write.writing': string\n 'tools.write.created': string\n 'tools.write.updated': string\n 'tools.edit.description': string\n 'tools.edit.editing': string\n 'tools.glob.description': string\n 'tools.grep.description': string\n 'tools.task.description': string\n 'tools.task.spawning': string\n 'tools.task.running': string\n 'tools.task.completed': string\n 'tools.todo.description': string\n\n // Errors\n 'errors.generic': string\n 'errors.network': string\n 'errors.timeout': string\n 'errors.auth': string\n 'errors.rateLimit': string\n 'errors.modelNotFound': string\n 'errors.apiKeyMissing': string\n 'errors.apiKeyInvalid': string\n 'errors.permissionDenied': string\n 'errors.fileNotFound': string\n 'errors.fileReadError': string\n 'errors.fileWriteError': string\n 'errors.configError': string\n 'errors.parseError': string\n 'errors.validationError': string\n 'errors.aborted': string\n 'errors.contextTooLong': string\n 'errors.serverError': string\n 'errors.connectionFailed': string\n\n // Help\n 'help.title': string\n 'help.usage': string\n 'help.commands': string\n 'help.options': string\n 'help.examples': string\n 'help.moreInfo': string\n 'help.reportBug': string\n 'help.documentation': string\n\n // Status messages\n 'status.modelLoaded': string\n 'status.contextCompressed': string\n 'status.tokensUsed': string\n 'status.costEstimate': string\n 'status.apiLatency': string\n 'status.streaming': string\n 'status.thinking': string\n 'status.toolUse': string\n 'status.subagent': string\n\n // Prompts\n 'prompts.confirmDelete': string\n 'prompts.confirmOverwrite': string\n 'prompts.confirmExecute': string\n 'prompts.enterApiKey': string\n 'prompts.selectModel': string\n 'prompts.selectLanguage': string\n\n // Agent/Subagent\n 'agent.spawning': string\n 'agent.running': string\n 'agent.completed': string\n 'agent.failed': string\n 'agent.cancelled': string\n 'agent.waiting': string\n 'agent.thinking': string\n\n // Model\n 'model.selecting': string\n 'model.selected': string\n 'model.unavailable': string\n 'model.switching': string\n 'model.switched': string\n 'model.default': string\n 'model.custom': string\n\n // Permissions\n 'permission.required': string\n 'permission.granted': string\n 'permission.denied': string\n 'permission.allowOnce': string\n 'permission.allowAlways': string\n 'permission.denyOnce': string\n 'permission.denyAlways': string\n 'permission.sensitiveFile': string\n 'permission.externalPath': string\n 'permission.dangerousCommand': string\n\n // User-Friendly Error Messages\n // Network & Connectivity\n 'friendlyError.networkConnection.title': string\n 'friendlyError.networkConnection.description': string\n 'friendlyError.networkConnection.suggestion1': string\n 'friendlyError.networkConnection.suggestion2': string\n 'friendlyError.networkConnection.suggestion3': string\n\n 'friendlyError.networkTimeout.title': string\n 'friendlyError.networkTimeout.description': string\n 'friendlyError.networkTimeout.suggestion1': string\n 'friendlyError.networkTimeout.suggestion2': string\n 'friendlyError.networkTimeout.suggestion3': string\n\n 'friendlyError.networkDns.title': string\n 'friendlyError.networkDns.description': string\n 'friendlyError.networkDns.suggestion1': string\n 'friendlyError.networkDns.suggestion2': string\n 'friendlyError.networkDns.suggestion3': string\n\n // API & Service\n 'friendlyError.apiRateLimit.title': string\n 'friendlyError.apiRateLimit.description': string\n 'friendlyError.apiRateLimit.suggestion1': string\n 'friendlyError.apiRateLimit.suggestion2': string\n 'friendlyError.apiRateLimit.suggestion3': string\n\n 'friendlyError.apiAuth.title': string\n 'friendlyError.apiAuth.description': string\n 'friendlyError.apiAuth.suggestion1': string\n 'friendlyError.apiAuth.suggestion2': string\n 'friendlyError.apiAuth.suggestion3': string\n\n 'friendlyError.apiQuota.title': string\n 'friendlyError.apiQuota.description': string\n 'friendlyError.apiQuota.suggestion1': string\n 'friendlyError.apiQuota.suggestion2': string\n 'friendlyError.apiQuota.suggestion3': string\n\n 'friendlyError.apiServerError.title': string\n 'friendlyError.apiServerError.description': string\n 'friendlyError.apiServerError.suggestion1': string\n 'friendlyError.apiServerError.suggestion2': string\n\n 'friendlyError.apiInvalidResponse.title': string\n 'friendlyError.apiInvalidResponse.description': string\n 'friendlyError.apiInvalidResponse.suggestion1': string\n 'friendlyError.apiInvalidResponse.suggestion2': string\n\n // File & Storage\n 'friendlyError.fileNotFound.title': string\n 'friendlyError.fileNotFound.description': string\n 'friendlyError.fileNotFound.suggestion1': string\n 'friendlyError.fileNotFound.suggestion2': string\n\n 'friendlyError.filePermission.title': string\n 'friendlyError.filePermission.description': string\n 'friendlyError.filePermission.suggestion1': string\n 'friendlyError.filePermission.suggestion2': string\n\n 'friendlyError.fileTooLarge.title': string\n 'friendlyError.fileTooLarge.description': string\n 'friendlyError.fileTooLarge.suggestion1': string\n 'friendlyError.fileTooLarge.suggestion2': string\n\n 'friendlyError.fileEncoding.title': string\n 'friendlyError.fileEncoding.description': string\n 'friendlyError.fileEncoding.suggestion1': string\n 'friendlyError.fileEncoding.suggestion2': string\n\n // Configuration\n 'friendlyError.configMissing.title': string\n 'friendlyError.configMissing.description': string\n 'friendlyError.configMissing.suggestion1': string\n 'friendlyError.configMissing.suggestion2': string\n\n 'friendlyError.configInvalid.title': string\n 'friendlyError.configInvalid.description': string\n 'friendlyError.configInvalid.suggestion1': string\n 'friendlyError.configInvalid.suggestion2': string\n\n 'friendlyError.configApiKey.title': string\n 'friendlyError.configApiKey.description': string\n 'friendlyError.configApiKey.suggestion1': string\n 'friendlyError.configApiKey.suggestion2': string\n\n // Model & AI\n 'friendlyError.modelUnavailable.title': string\n 'friendlyError.modelUnavailable.description': string\n 'friendlyError.modelUnavailable.suggestion1': string\n 'friendlyError.modelUnavailable.suggestion2': string\n 'friendlyError.modelUnavailable.suggestion3': string\n\n 'friendlyError.modelContextLength.title': string\n 'friendlyError.modelContextLength.description': string\n 'friendlyError.modelContextLength.suggestion1': string\n 'friendlyError.modelContextLength.suggestion2': string\n\n 'friendlyError.modelContentFilter.title': string\n 'friendlyError.modelContentFilter.description': string\n 'friendlyError.modelContentFilter.suggestion1': string\n 'friendlyError.modelContentFilter.suggestion2': string\n\n // System\n 'friendlyError.systemMemory.title': string\n 'friendlyError.systemMemory.description': string\n 'friendlyError.systemMemory.suggestion1': string\n 'friendlyError.systemMemory.suggestion2': string\n 'friendlyError.systemMemory.suggestion3': string\n\n 'friendlyError.systemProcess.title': string\n 'friendlyError.systemProcess.description': string\n 'friendlyError.systemProcess.suggestion1': string\n 'friendlyError.systemProcess.suggestion2': string\n\n // Unknown\n 'friendlyError.unknown.title': string\n 'friendlyError.unknown.description': string\n 'friendlyError.unknown.suggestion1': string\n 'friendlyError.unknown.suggestion2': string\n\n // Error display format\n 'friendlyError.suggestionLabel': string\n 'friendlyError.errorIdLabel': string\n 'friendlyError.technicalDetailsLabel': string\n}\n\n/**\n * Full translation object type\n */\nexport type Translations = TranslationKeys\n\n/**\n * Translation key type (string union of all keys)\n */\nexport type TranslationKey = keyof TranslationKeys\n\n/**\n * Partial translations for extending\n */\nexport type PartialTranslations = Partial<TranslationKeys>\n"],
4
+ "sourcesContent": ["/**\n * i18n Type Definitions\n *\n * Type-safe internationalization system for Minto CLI.\n */\n\n/**\n * Supported languages\n */\nexport type Language = 'en' | 'zh-CN'\n\n/**\n * Language display names\n */\nexport const LANGUAGE_NAMES: Record<Language, string> = {\n en: 'English',\n 'zh-CN': '\u7B80\u4F53\u4E2D\u6587',\n}\n\n/**\n * Translation namespace keys\n */\nexport type TranslationNamespace =\n | 'common'\n | 'ui'\n | 'commands'\n | 'tools'\n | 'errors'\n | 'help'\n | 'status'\n | 'prompts'\n\n/**\n * Translation key structure for type safety\n */\nexport interface TranslationKeys {\n // Common\n 'common.yes': string\n 'common.no': string\n 'common.ok': string\n 'common.cancel': string\n 'common.confirm': string\n 'common.save': string\n 'common.delete': string\n 'common.edit': string\n 'common.create': string\n 'common.loading': string\n 'common.error': string\n 'common.success': string\n 'common.warning': string\n 'common.info': string\n 'common.unknown': string\n 'common.none': string\n 'common.all': string\n 'common.selected': string\n 'common.default': string\n 'common.custom': string\n 'common.enabled': string\n 'common.disabled': string\n 'common.connected': string\n 'common.disconnected': string\n 'common.pending': string\n 'common.completed': string\n 'common.failed': string\n 'common.inProgress': string\n 'common.version': string\n 'common.help': string\n 'common.quit': string\n 'common.back': string\n 'common.next': string\n 'common.previous': string\n 'common.search': string\n 'common.filter': string\n 'common.sort': string\n 'common.refresh': string\n 'common.retry': string\n 'common.skip': string\n 'common.continue': string\n 'common.abort': string\n 'common.reset': string\n 'common.clear': string\n 'common.copy': string\n 'common.paste': string\n 'common.select': string\n 'common.deselect': string\n 'common.selectAll': string\n 'common.deselectAll': string\n\n // UI - Verbose mode\n 'ui.verbose.on': string\n 'ui.verbose.off': string\n 'ui.verbose.label': string\n 'ui.verbose.hint': string\n // Deprecated - kept for backward compatibility\n 'ui.displayMode.minimal': string\n 'ui.displayMode.compact': string\n 'ui.displayMode.detailed': string\n 'ui.displayMode.label': string\n 'ui.displayMode.hint': string\n\n // UI - Input\n 'ui.input.placeholder': string\n 'ui.input.thinking': string\n 'ui.input.processing': string\n 'ui.input.waiting': string\n 'ui.input.multilineHint': string\n 'ui.input.submitHint': string\n\n // UI - Panels\n 'ui.panel.todo': string\n 'ui.panel.tasks': string\n 'ui.panel.agents': string\n 'ui.panel.models': string\n 'ui.panel.help': string\n 'ui.panel.history': string\n 'ui.panel.settings': string\n\n // UI - Status\n 'ui.status.ready': string\n 'ui.status.busy': string\n 'ui.status.error': string\n 'ui.status.offline': string\n 'ui.status.connecting': string\n 'ui.status.streaming': string\n\n // UI - Welcome\n 'ui.welcome.title': string\n 'ui.welcome.subtitle': string\n 'ui.welcome.quickStart': string\n 'ui.welcome.tip1': string\n 'ui.welcome.tip2': string\n 'ui.welcome.tip3': string\n 'ui.welcome.tip4': string\n 'ui.welcome.cwd': string\n 'ui.welcome.mcpServers': string\n\n // UI - Hotkeys\n 'ui.hotkey.submit': string\n 'ui.hotkey.newline': string\n 'ui.hotkey.cancel': string\n 'ui.hotkey.toggleMode': string\n 'ui.hotkey.help': string\n 'ui.hotkey.quit': string\n 'ui.hotkey.history': string\n 'ui.hotkey.clear': string\n 'ui.hotkey.interrupt': string\n\n // UI - Hotkey hints (context-aware)\n 'ui.hints.command': string\n 'ui.hints.bash': string\n 'ui.hints.send': string\n 'ui.hints.complete': string\n 'ui.hints.rollback': string\n 'ui.hints.select': string\n 'ui.hints.confirm': string\n 'ui.hints.close': string\n 'ui.hints.browse': string\n 'ui.hints.execute': string\n 'ui.hints.completeCommand': string\n 'ui.hints.shortcuts': string\n 'ui.hints.pressEsc': string\n 'ui.hints.tip': string\n\n // Commands\n 'commands.help.description': string\n 'commands.clear.description': string\n 'commands.compact.description': string\n 'commands.compact.success': string\n 'commands.compact.noMessages': string\n 'commands.model.description': string\n 'commands.model.current': string\n 'commands.model.switched': string\n 'commands.model.notFound': string\n 'commands.agents.description': string\n 'commands.agents.title': string\n 'commands.agents.empty': string\n 'commands.agents.loaded': string\n 'commands.tasks.description': string\n 'commands.config.description': string\n 'commands.bug.description': string\n 'commands.doctor.description': string\n 'commands.status.description': string\n 'commands.permissions.description': string\n 'commands.mcp.description': string\n 'commands.plugin.description': string\n 'commands.sandbox.description': string\n 'commands.thinking.description': string\n 'commands.thinking.enabled': string\n 'commands.thinking.disabled': string\n\n // Tools\n 'tools.bash.description': string\n 'tools.bash.executing': string\n 'tools.bash.completed': string\n 'tools.bash.failed': string\n 'tools.read.description': string\n 'tools.read.reading': string\n 'tools.write.description': string\n 'tools.write.writing': string\n 'tools.write.created': string\n 'tools.write.updated': string\n 'tools.edit.description': string\n 'tools.edit.editing': string\n 'tools.glob.description': string\n 'tools.grep.description': string\n 'tools.task.description': string\n 'tools.task.spawning': string\n 'tools.task.running': string\n 'tools.task.completed': string\n 'tools.todo.description': string\n\n // Errors\n 'errors.generic': string\n 'errors.network': string\n 'errors.timeout': string\n 'errors.auth': string\n 'errors.rateLimit': string\n 'errors.modelNotFound': string\n 'errors.apiKeyMissing': string\n 'errors.apiKeyInvalid': string\n 'errors.permissionDenied': string\n 'errors.fileNotFound': string\n 'errors.fileReadError': string\n 'errors.fileWriteError': string\n 'errors.configError': string\n 'errors.parseError': string\n 'errors.validationError': string\n 'errors.aborted': string\n 'errors.contextTooLong': string\n 'errors.serverError': string\n 'errors.connectionFailed': string\n\n // Help\n 'help.title': string\n 'help.usage': string\n 'help.commands': string\n 'help.options': string\n 'help.examples': string\n 'help.moreInfo': string\n 'help.reportBug': string\n 'help.documentation': string\n\n // Status messages\n 'status.modelLoaded': string\n 'status.contextCompressed': string\n 'status.tokensUsed': string\n 'status.costEstimate': string\n 'status.apiLatency': string\n 'status.streaming': string\n 'status.thinking': string\n 'status.toolUse': string\n 'status.subagent': string\n\n // Prompts\n 'prompts.confirmDelete': string\n 'prompts.confirmOverwrite': string\n 'prompts.confirmExecute': string\n 'prompts.enterApiKey': string\n 'prompts.selectModel': string\n 'prompts.selectLanguage': string\n\n // Agent/Subagent\n 'agent.spawning': string\n 'agent.running': string\n 'agent.completed': string\n 'agent.failed': string\n 'agent.cancelled': string\n 'agent.waiting': string\n 'agent.thinking': string\n\n // Model\n 'model.selecting': string\n 'model.selected': string\n 'model.unavailable': string\n 'model.switching': string\n 'model.switched': string\n 'model.default': string\n 'model.custom': string\n\n // Permissions\n 'permission.required': string\n 'permission.granted': string\n 'permission.denied': string\n 'permission.allowOnce': string\n 'permission.allowAlways': string\n 'permission.denyOnce': string\n 'permission.denyAlways': string\n 'permission.sensitiveFile': string\n 'permission.externalPath': string\n 'permission.dangerousCommand': string\n\n // User-Friendly Error Messages\n // Network & Connectivity\n 'friendlyError.networkConnection.title': string\n 'friendlyError.networkConnection.description': string\n 'friendlyError.networkConnection.suggestion1': string\n 'friendlyError.networkConnection.suggestion2': string\n 'friendlyError.networkConnection.suggestion3': string\n\n 'friendlyError.networkTimeout.title': string\n 'friendlyError.networkTimeout.description': string\n 'friendlyError.networkTimeout.suggestion1': string\n 'friendlyError.networkTimeout.suggestion2': string\n 'friendlyError.networkTimeout.suggestion3': string\n\n 'friendlyError.networkDns.title': string\n 'friendlyError.networkDns.description': string\n 'friendlyError.networkDns.suggestion1': string\n 'friendlyError.networkDns.suggestion2': string\n 'friendlyError.networkDns.suggestion3': string\n\n // API & Service\n 'friendlyError.apiRateLimit.title': string\n 'friendlyError.apiRateLimit.description': string\n 'friendlyError.apiRateLimit.suggestion1': string\n 'friendlyError.apiRateLimit.suggestion2': string\n 'friendlyError.apiRateLimit.suggestion3': string\n\n 'friendlyError.apiAuth.title': string\n 'friendlyError.apiAuth.description': string\n 'friendlyError.apiAuth.suggestion1': string\n 'friendlyError.apiAuth.suggestion2': string\n 'friendlyError.apiAuth.suggestion3': string\n\n 'friendlyError.apiQuota.title': string\n 'friendlyError.apiQuota.description': string\n 'friendlyError.apiQuota.suggestion1': string\n 'friendlyError.apiQuota.suggestion2': string\n 'friendlyError.apiQuota.suggestion3': string\n\n 'friendlyError.apiServerError.title': string\n 'friendlyError.apiServerError.description': string\n 'friendlyError.apiServerError.suggestion1': string\n 'friendlyError.apiServerError.suggestion2': string\n\n 'friendlyError.apiInvalidResponse.title': string\n 'friendlyError.apiInvalidResponse.description': string\n 'friendlyError.apiInvalidResponse.suggestion1': string\n 'friendlyError.apiInvalidResponse.suggestion2': string\n\n // File & Storage\n 'friendlyError.fileNotFound.title': string\n 'friendlyError.fileNotFound.description': string\n 'friendlyError.fileNotFound.suggestion1': string\n 'friendlyError.fileNotFound.suggestion2': string\n\n 'friendlyError.filePermission.title': string\n 'friendlyError.filePermission.description': string\n 'friendlyError.filePermission.suggestion1': string\n 'friendlyError.filePermission.suggestion2': string\n\n 'friendlyError.fileTooLarge.title': string\n 'friendlyError.fileTooLarge.description': string\n 'friendlyError.fileTooLarge.suggestion1': string\n 'friendlyError.fileTooLarge.suggestion2': string\n\n 'friendlyError.fileEncoding.title': string\n 'friendlyError.fileEncoding.description': string\n 'friendlyError.fileEncoding.suggestion1': string\n 'friendlyError.fileEncoding.suggestion2': string\n\n // Configuration\n 'friendlyError.configMissing.title': string\n 'friendlyError.configMissing.description': string\n 'friendlyError.configMissing.suggestion1': string\n 'friendlyError.configMissing.suggestion2': string\n\n 'friendlyError.configInvalid.title': string\n 'friendlyError.configInvalid.description': string\n 'friendlyError.configInvalid.suggestion1': string\n 'friendlyError.configInvalid.suggestion2': string\n\n 'friendlyError.configApiKey.title': string\n 'friendlyError.configApiKey.description': string\n 'friendlyError.configApiKey.suggestion1': string\n 'friendlyError.configApiKey.suggestion2': string\n\n // Model & AI\n 'friendlyError.modelUnavailable.title': string\n 'friendlyError.modelUnavailable.description': string\n 'friendlyError.modelUnavailable.suggestion1': string\n 'friendlyError.modelUnavailable.suggestion2': string\n 'friendlyError.modelUnavailable.suggestion3': string\n\n 'friendlyError.modelContextLength.title': string\n 'friendlyError.modelContextLength.description': string\n 'friendlyError.modelContextLength.suggestion1': string\n 'friendlyError.modelContextLength.suggestion2': string\n\n 'friendlyError.modelContentFilter.title': string\n 'friendlyError.modelContentFilter.description': string\n 'friendlyError.modelContentFilter.suggestion1': string\n 'friendlyError.modelContentFilter.suggestion2': string\n\n // System\n 'friendlyError.systemMemory.title': string\n 'friendlyError.systemMemory.description': string\n 'friendlyError.systemMemory.suggestion1': string\n 'friendlyError.systemMemory.suggestion2': string\n 'friendlyError.systemMemory.suggestion3': string\n\n 'friendlyError.systemProcess.title': string\n 'friendlyError.systemProcess.description': string\n 'friendlyError.systemProcess.suggestion1': string\n 'friendlyError.systemProcess.suggestion2': string\n\n // Unknown\n 'friendlyError.unknown.title': string\n 'friendlyError.unknown.description': string\n 'friendlyError.unknown.suggestion1': string\n 'friendlyError.unknown.suggestion2': string\n\n // Error display format\n 'friendlyError.suggestionLabel': string\n 'friendlyError.errorIdLabel': string\n 'friendlyError.technicalDetailsLabel': string\n}\n\n/**\n * Full translation object type\n */\nexport type Translations = TranslationKeys\n\n/**\n * Translation key type (string union of all keys)\n */\nexport type TranslationKey = keyof TranslationKeys\n\n/**\n * Partial translations for extending\n */\nexport type PartialTranslations = Partial<TranslationKeys>\n"],
5
5
  "mappings": "AAcO,MAAM,iBAA2C;AAAA,EACtD,IAAI;AAAA,EACJ,SAAS;AACX;",
6
6
  "names": []
7
7
  }
@@ -12,6 +12,9 @@ import { logError } from "./utils/log.js";
12
12
  import { grantWritePermissionForOriginalDir } from "./utils/permissions/filesystem.js";
13
13
  import { getCwd } from "./utils/state.js";
14
14
  import { PRODUCT_NAME } from "./constants/product.js";
15
+ import {
16
+ getToolRiskLevel
17
+ } from "./utils/toolRiskClassification.js";
15
18
  const SAFE_COMMANDS = /* @__PURE__ */ new Set([
16
19
  "git status",
17
20
  "git diff",
@@ -105,8 +108,32 @@ const bashToolHasPermission = async (tool, command, context, allowedTools, getCo
105
108
  message: `${PRODUCT_NAME} requested permissions to use ${tool.name}, but you haven't granted it yet.`
106
109
  };
107
110
  };
111
+ function getEffectiveSafetyMode(options) {
112
+ if (options.safetyMode) {
113
+ return options.safetyMode;
114
+ }
115
+ if (options.safeMode === true) {
116
+ return "strict";
117
+ }
118
+ return "yolo";
119
+ }
120
+ function shouldAllowByRiskLevel(safetyMode, riskLevel) {
121
+ switch (safetyMode) {
122
+ case "yolo":
123
+ return true;
124
+ case "smart":
125
+ return riskLevel === "safe" || riskLevel === "monitored";
126
+ case "strict":
127
+ return riskLevel === "safe";
128
+ }
129
+ }
108
130
  const hasPermissionsToUseTool = async (tool, input, context, _assistantMessage) => {
109
- if (!context.options.safeMode) {
131
+ const safetyMode = getEffectiveSafetyMode(context.options);
132
+ const riskLevel = getToolRiskLevel(
133
+ tool.name,
134
+ input
135
+ );
136
+ if (shouldAllowByRiskLevel(safetyMode, riskLevel)) {
110
137
  return { result: true };
111
138
  }
112
139
  if (context.abortController.signal.aborted) {