@within-7/minto 0.4.1 → 0.4.2

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