@within-7/minto 0.1.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/cli.js +155 -37
  2. package/dist/Tool.js +38 -0
  3. package/dist/Tool.js.map +3 -3
  4. package/dist/commands/agents/AgentsCommand.js +73 -49
  5. package/dist/commands/agents/AgentsCommand.js.map +2 -2
  6. package/dist/commands/agents/constants.js +1 -1
  7. package/dist/commands/agents/constants.js.map +1 -1
  8. package/dist/commands/agents/index.js +1 -1
  9. package/dist/commands/bug.js +74 -7
  10. package/dist/commands/bug.js.map +3 -3
  11. package/dist/commands/clear.js +3 -0
  12. package/dist/commands/clear.js.map +2 -2
  13. package/dist/commands/compact.js +37 -0
  14. package/dist/commands/compact.js.map +2 -2
  15. package/dist/commands/context.js +85 -0
  16. package/dist/commands/context.js.map +7 -0
  17. package/dist/commands/ctx_viz.js +18 -10
  18. package/dist/commands/ctx_viz.js.map +2 -2
  19. package/dist/commands/doctor.js +158 -12
  20. package/dist/commands/doctor.js.map +2 -2
  21. package/dist/commands/export.js +157 -0
  22. package/dist/commands/export.js.map +7 -0
  23. package/dist/commands/mcp-interactive.js +28 -18
  24. package/dist/commands/mcp-interactive.js.map +2 -2
  25. package/dist/commands/model.js +9 -7
  26. package/dist/commands/model.js.map +2 -2
  27. package/dist/commands/permissions.js +87 -0
  28. package/dist/commands/permissions.js.map +7 -0
  29. package/dist/commands/plugin/AddMarketplaceForm.js +3 -2
  30. package/dist/commands/plugin/AddMarketplaceForm.js.map +2 -2
  31. package/dist/commands/plugin/ConfirmDialog.js +2 -1
  32. package/dist/commands/plugin/ConfirmDialog.js.map +2 -2
  33. package/dist/commands/plugin/ErrorView.js +2 -1
  34. package/dist/commands/plugin/ErrorView.js.map +2 -2
  35. package/dist/commands/plugin/InstalledPluginsByMarketplace.js +5 -4
  36. package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +2 -2
  37. package/dist/commands/plugin/InstalledPluginsManager.js +5 -4
  38. package/dist/commands/plugin/InstalledPluginsManager.js.map +2 -2
  39. package/dist/commands/plugin/MainMenu.js +2 -1
  40. package/dist/commands/plugin/MainMenu.js.map +2 -2
  41. package/dist/commands/plugin/MarketplaceManager.js +5 -4
  42. package/dist/commands/plugin/MarketplaceManager.js.map +2 -2
  43. package/dist/commands/plugin/MarketplaceSelector.js +4 -3
  44. package/dist/commands/plugin/MarketplaceSelector.js.map +2 -2
  45. package/dist/commands/plugin/PlaceholderScreen.js +3 -2
  46. package/dist/commands/plugin/PlaceholderScreen.js.map +2 -2
  47. package/dist/commands/plugin/PluginBrowser.js +6 -5
  48. package/dist/commands/plugin/PluginBrowser.js.map +2 -2
  49. package/dist/commands/plugin/PluginDetailsInstall.js +5 -4
  50. package/dist/commands/plugin/PluginDetailsInstall.js.map +2 -2
  51. package/dist/commands/plugin/PluginDetailsManage.js +4 -3
  52. package/dist/commands/plugin/PluginDetailsManage.js.map +2 -2
  53. package/dist/commands/plugin.js +16 -15
  54. package/dist/commands/plugin.js.map +2 -2
  55. package/dist/commands/quit.js +3 -1
  56. package/dist/commands/quit.js.map +2 -2
  57. package/dist/commands/sandbox.js +105 -0
  58. package/dist/commands/sandbox.js.map +7 -0
  59. package/dist/commands/setup.js +2 -1
  60. package/dist/commands/setup.js.map +2 -2
  61. package/dist/commands/status.js +59 -0
  62. package/dist/commands/status.js.map +7 -0
  63. package/dist/commands/tasks.js +108 -0
  64. package/dist/commands/tasks.js.map +7 -0
  65. package/dist/commands/todos.js +123 -0
  66. package/dist/commands/todos.js.map +7 -0
  67. package/dist/commands/undo.js +245 -0
  68. package/dist/commands/undo.js.map +7 -0
  69. package/dist/commands.js +22 -2
  70. package/dist/commands.js.map +2 -2
  71. package/dist/components/AgentThinkingBlock.js +10 -18
  72. package/dist/components/AgentThinkingBlock.js.map +2 -2
  73. package/dist/components/AsciiLogo.js +7 -8
  74. package/dist/components/AsciiLogo.js.map +2 -2
  75. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +3 -2
  76. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +2 -2
  77. package/dist/components/AskUserQuestionDialog/QuestionView.js +2 -1
  78. package/dist/components/AskUserQuestionDialog/QuestionView.js.map +2 -2
  79. package/dist/components/BackgroundTasksPanel.js +78 -29
  80. package/dist/components/BackgroundTasksPanel.js.map +2 -2
  81. package/dist/components/BashStreamingProgress.js +24 -0
  82. package/dist/components/BashStreamingProgress.js.map +7 -0
  83. package/dist/components/CollapsibleHint.js +15 -0
  84. package/dist/components/CollapsibleHint.js.map +7 -0
  85. package/dist/components/Config.js +3 -2
  86. package/dist/components/Config.js.map +2 -2
  87. package/dist/components/ConsoleOAuthFlow.js +2 -1
  88. package/dist/components/ConsoleOAuthFlow.js.map +2 -2
  89. package/dist/components/Cost.js +2 -1
  90. package/dist/components/Cost.js.map +2 -2
  91. package/dist/components/FileEditToolUpdatedMessage.js +1 -1
  92. package/dist/components/FileEditToolUpdatedMessage.js.map +2 -2
  93. package/dist/components/HeaderBar.js +13 -8
  94. package/dist/components/HeaderBar.js.map +2 -2
  95. package/dist/components/HistorySearchOverlay.js +4 -3
  96. package/dist/components/HistorySearchOverlay.js.map +2 -2
  97. package/dist/components/HotkeyHelpPanel.js +134 -0
  98. package/dist/components/HotkeyHelpPanel.js.map +7 -0
  99. package/dist/components/InvalidConfigDialog.js +2 -1
  100. package/dist/components/InvalidConfigDialog.js.map +2 -2
  101. package/dist/components/Logo.js +24 -68
  102. package/dist/components/Logo.js.map +2 -2
  103. package/dist/components/MCPServerApprovalDialog.js +2 -1
  104. package/dist/components/MCPServerApprovalDialog.js.map +2 -2
  105. package/dist/components/MCPServerDialogCopy.js +2 -1
  106. package/dist/components/MCPServerDialogCopy.js.map +2 -2
  107. package/dist/components/MCPServerMultiselectDialog.js +2 -1
  108. package/dist/components/MCPServerMultiselectDialog.js.map +2 -2
  109. package/dist/components/Message.js +23 -7
  110. package/dist/components/Message.js.map +3 -3
  111. package/dist/components/MessageSelector.js +4 -3
  112. package/dist/components/MessageSelector.js.map +2 -2
  113. package/dist/components/ModeIndicator.js +2 -1
  114. package/dist/components/ModeIndicator.js.map +2 -2
  115. package/dist/components/ModelConfig.js +20 -6
  116. package/dist/components/ModelConfig.js.map +2 -2
  117. package/dist/components/ModelListManager.js +7 -6
  118. package/dist/components/ModelListManager.js.map +2 -2
  119. package/dist/components/ModelSelector/ModelSelector.js +27 -14
  120. package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
  121. package/dist/components/Onboarding.js +22 -16
  122. package/dist/components/Onboarding.js.map +2 -2
  123. package/dist/components/OperationSummary.js +130 -0
  124. package/dist/components/OperationSummary.js.map +7 -0
  125. package/dist/components/ProgressBar.js +74 -0
  126. package/dist/components/ProgressBar.js.map +7 -0
  127. package/dist/components/PromptInput.js +210 -87
  128. package/dist/components/PromptInput.js.map +2 -2
  129. package/dist/components/RequestStatusIndicator.js +194 -0
  130. package/dist/components/RequestStatusIndicator.js.map +7 -0
  131. package/dist/components/SensitiveFileWarning.js +31 -0
  132. package/dist/components/SensitiveFileWarning.js.map +7 -0
  133. package/dist/components/Spinner.js +141 -27
  134. package/dist/components/Spinner.js.map +2 -2
  135. package/dist/components/SpinnerSymbol.js +21 -27
  136. package/dist/components/SpinnerSymbol.js.map +2 -2
  137. package/dist/components/StreamingBashOutput.js +9 -8
  138. package/dist/components/StreamingBashOutput.js.map +2 -2
  139. package/dist/components/StructuredDiff.js +6 -8
  140. package/dist/components/StructuredDiff.js.map +2 -2
  141. package/dist/components/SubagentBlock.js +5 -3
  142. package/dist/components/SubagentBlock.js.map +2 -2
  143. package/dist/components/SubagentProgress.js +17 -15
  144. package/dist/components/SubagentProgress.js.map +2 -2
  145. package/dist/components/TaskCard.js +30 -24
  146. package/dist/components/TaskCard.js.map +2 -2
  147. package/dist/components/TextInput.js +9 -1
  148. package/dist/components/TextInput.js.map +2 -2
  149. package/dist/components/TodoChangeBlock.js +1 -1
  150. package/dist/components/TodoChangeBlock.js.map +2 -2
  151. package/dist/components/TodoPanel.js +140 -31
  152. package/dist/components/TodoPanel.js.map +3 -3
  153. package/dist/components/TokenCounter.js +74 -0
  154. package/dist/components/TokenCounter.js.map +7 -0
  155. package/dist/components/TokenWarning.js +2 -1
  156. package/dist/components/TokenWarning.js.map +2 -2
  157. package/dist/components/ToolUseLoader.js +2 -2
  158. package/dist/components/ToolUseLoader.js.map +2 -2
  159. package/dist/components/TreeConnector.js +26 -0
  160. package/dist/components/TreeConnector.js.map +7 -0
  161. package/dist/components/TrustDialog.js +2 -1
  162. package/dist/components/TrustDialog.js.map +2 -2
  163. package/dist/components/TurnCompletionIndicator.js +18 -0
  164. package/dist/components/TurnCompletionIndicator.js.map +7 -0
  165. package/dist/components/binary-feedback/BinaryFeedbackView.js +2 -1
  166. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +2 -2
  167. package/dist/components/messages/AssistantTextMessage.js +20 -9
  168. package/dist/components/messages/AssistantTextMessage.js.map +2 -2
  169. package/dist/components/messages/AssistantThinkingMessage.js +18 -3
  170. package/dist/components/messages/AssistantThinkingMessage.js.map +2 -2
  171. package/dist/components/messages/AssistantToolUseMessage.js +17 -10
  172. package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
  173. package/dist/components/messages/GroupRenderer.js +54 -0
  174. package/dist/components/messages/GroupRenderer.js.map +7 -0
  175. package/dist/components/messages/NestedTasksPreview.js +24 -0
  176. package/dist/components/messages/NestedTasksPreview.js.map +7 -0
  177. package/dist/components/messages/ParallelTasksGroupView.js +93 -0
  178. package/dist/components/messages/ParallelTasksGroupView.js.map +7 -0
  179. package/dist/components/messages/TaskInModuleView.js +218 -0
  180. package/dist/components/messages/TaskInModuleView.js.map +7 -0
  181. package/dist/components/messages/TaskOutputContent.js +56 -0
  182. package/dist/components/messages/TaskOutputContent.js.map +7 -0
  183. package/dist/components/messages/UserPromptMessage.js +2 -2
  184. package/dist/components/messages/UserPromptMessage.js.map +2 -2
  185. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +2 -3
  186. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +2 -2
  187. package/dist/components/permissions/FallbackPermissionRequest.js +4 -4
  188. package/dist/components/permissions/FallbackPermissionRequest.js.map +2 -2
  189. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +4 -4
  190. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +2 -2
  191. package/dist/constants/colors.js +120 -54
  192. package/dist/constants/colors.js.map +2 -2
  193. package/dist/constants/formatRules.js +102 -0
  194. package/dist/constants/formatRules.js.map +7 -0
  195. package/dist/constants/prompts.js +12 -34
  196. package/dist/constants/prompts.js.map +2 -2
  197. package/dist/constants/symbols.js +64 -6
  198. package/dist/constants/symbols.js.map +2 -2
  199. package/dist/constants/timing.js +5 -0
  200. package/dist/constants/timing.js.map +2 -2
  201. package/dist/constants/toolInputExamples.js +84 -0
  202. package/dist/constants/toolInputExamples.js.map +7 -0
  203. package/dist/core/backupManager.js +321 -0
  204. package/dist/core/backupManager.js.map +7 -0
  205. package/dist/core/config/defaults.js +84 -0
  206. package/dist/core/config/defaults.js.map +7 -0
  207. package/dist/core/config/index.js +111 -0
  208. package/dist/core/config/index.js.map +7 -0
  209. package/dist/core/config/loader.js +221 -0
  210. package/dist/core/config/loader.js.map +7 -0
  211. package/dist/core/config/migrations.js +128 -0
  212. package/dist/core/config/migrations.js.map +7 -0
  213. package/dist/core/config/schema.js +178 -0
  214. package/dist/core/config/schema.js.map +7 -0
  215. package/dist/core/costTracker.js +129 -0
  216. package/dist/core/costTracker.js.map +7 -0
  217. package/dist/core/gitAutoCommit.js +287 -0
  218. package/dist/core/gitAutoCommit.js.map +7 -0
  219. package/dist/core/index.js +8 -0
  220. package/dist/core/index.js.map +7 -0
  221. package/dist/core/operationTracker.js +212 -0
  222. package/dist/core/operationTracker.js.map +7 -0
  223. package/dist/core/permissions/auditLog.js +204 -0
  224. package/dist/core/permissions/auditLog.js.map +7 -0
  225. package/dist/core/permissions/engine/index.js +3 -0
  226. package/dist/core/permissions/engine/index.js.map +7 -0
  227. package/dist/core/permissions/engine/permissionEngine.js +106 -0
  228. package/dist/core/permissions/engine/permissionEngine.js.map +7 -0
  229. package/dist/core/permissions/engine/types.js +1 -0
  230. package/dist/core/permissions/engine/types.js.map +7 -0
  231. package/dist/core/permissions/index.js +84 -0
  232. package/dist/core/permissions/index.js.map +7 -0
  233. package/dist/core/permissions/ruleEngine.js +259 -0
  234. package/dist/core/permissions/ruleEngine.js.map +7 -0
  235. package/dist/core/permissions/rules/allowedToolsRule.js +62 -0
  236. package/dist/core/permissions/rules/allowedToolsRule.js.map +7 -0
  237. package/dist/core/permissions/rules/autoEscalationRule.js +296 -0
  238. package/dist/core/permissions/rules/autoEscalationRule.js.map +7 -0
  239. package/dist/core/permissions/rules/index.js +46 -0
  240. package/dist/core/permissions/rules/index.js.map +7 -0
  241. package/dist/core/permissions/rules/planModeRule.js +55 -0
  242. package/dist/core/permissions/rules/planModeRule.js.map +7 -0
  243. package/dist/core/permissions/rules/projectBoundaryRule.js +173 -0
  244. package/dist/core/permissions/rules/projectBoundaryRule.js.map +7 -0
  245. package/dist/core/permissions/rules/safeModeRule.js +65 -0
  246. package/dist/core/permissions/rules/safeModeRule.js.map +7 -0
  247. package/dist/core/permissions/rules/sensitivePathsRule.js +345 -0
  248. package/dist/core/permissions/rules/sensitivePathsRule.js.map +7 -0
  249. package/dist/core/permissions/types.js +127 -0
  250. package/dist/core/permissions/types.js.map +7 -0
  251. package/dist/core/tokenStats.js +9 -0
  252. package/dist/core/tokenStats.js.map +7 -0
  253. package/dist/core/tokenStatsManager.js +331 -0
  254. package/dist/core/tokenStatsManager.js.map +7 -0
  255. package/dist/core/tools/executor.js +143 -0
  256. package/dist/core/tools/executor.js.map +7 -0
  257. package/dist/core/tools/index.js +15 -0
  258. package/dist/core/tools/index.js.map +7 -0
  259. package/dist/core/tools/registry.js +183 -0
  260. package/dist/core/tools/registry.js.map +7 -0
  261. package/dist/core/tools/types.js +1 -0
  262. package/dist/core/tools/types.js.map +7 -0
  263. package/dist/cost-tracker.js +23 -15
  264. package/dist/cost-tracker.js.map +2 -2
  265. package/dist/entrypoints/cli.js +158 -130
  266. package/dist/entrypoints/cli.js.map +2 -2
  267. package/dist/entrypoints/mcp.js +12 -4
  268. package/dist/entrypoints/mcp.js.map +2 -2
  269. package/dist/history.js +14 -3
  270. package/dist/history.js.map +2 -2
  271. package/dist/hooks/useAgentTokenStats.js +72 -0
  272. package/dist/hooks/useAgentTokenStats.js.map +7 -0
  273. package/dist/hooks/useAgentTranscripts.js +140 -0
  274. package/dist/hooks/useAgentTranscripts.js.map +7 -0
  275. package/dist/hooks/useAnimationSync.js +53 -0
  276. package/dist/hooks/useAnimationSync.js.map +7 -0
  277. package/dist/hooks/useArrowKeyHistory.js +4 -2
  278. package/dist/hooks/useArrowKeyHistory.js.map +2 -2
  279. package/dist/hooks/useCanUseTool.js +3 -1
  280. package/dist/hooks/useCanUseTool.js.map +2 -2
  281. package/dist/hooks/useExitOnCtrlCD.js +9 -5
  282. package/dist/hooks/useExitOnCtrlCD.js.map +2 -2
  283. package/dist/hooks/useHookStatus.js +40 -0
  284. package/dist/hooks/useHookStatus.js.map +7 -0
  285. package/dist/hooks/useLogMessages.js +29 -2
  286. package/dist/hooks/useLogMessages.js.map +2 -2
  287. package/dist/hooks/useMessageGroups.js +43 -0
  288. package/dist/hooks/useMessageGroups.js.map +7 -0
  289. package/dist/hooks/useTerminalSize.js +62 -6
  290. package/dist/hooks/useTerminalSize.js.map +2 -2
  291. package/dist/hooks/useUnifiedCompletion.js +69 -0
  292. package/dist/hooks/useUnifiedCompletion.js.map +2 -2
  293. package/dist/i18n/index.js +109 -0
  294. package/dist/i18n/index.js.map +7 -0
  295. package/dist/i18n/locales/en.js +348 -0
  296. package/dist/i18n/locales/en.js.map +7 -0
  297. package/dist/i18n/locales/index.js +7 -0
  298. package/dist/i18n/locales/index.js.map +7 -0
  299. package/dist/i18n/locales/zh-CN.js +348 -0
  300. package/dist/i18n/locales/zh-CN.js.map +7 -0
  301. package/dist/i18n/types.js +8 -0
  302. package/dist/i18n/types.js.map +7 -0
  303. package/dist/permissions.js +28 -1
  304. package/dist/permissions.js.map +2 -2
  305. package/dist/query.js +253 -21
  306. package/dist/query.js.map +3 -3
  307. package/dist/screens/REPL.js +523 -194
  308. package/dist/screens/REPL.js.map +3 -3
  309. package/dist/services/adapters/chatCompletions.js +3 -1
  310. package/dist/services/adapters/chatCompletions.js.map +2 -2
  311. package/dist/services/adapters/messageNormalizer.js +354 -0
  312. package/dist/services/adapters/messageNormalizer.js.map +7 -0
  313. package/dist/services/adapters/responsesAPI.js +6 -3
  314. package/dist/services/adapters/responsesAPI.js.map +2 -2
  315. package/dist/services/checkpointManager.js +386 -0
  316. package/dist/services/checkpointManager.js.map +7 -0
  317. package/dist/services/claude.js +192 -14
  318. package/dist/services/claude.js.map +3 -3
  319. package/dist/services/compressionService.js +50 -1
  320. package/dist/services/compressionService.js.map +2 -2
  321. package/dist/services/contextMonitor.js +162 -0
  322. package/dist/services/contextMonitor.js.map +7 -0
  323. package/dist/services/customCommands.js +60 -41
  324. package/dist/services/customCommands.js.map +2 -2
  325. package/dist/services/hookExecutor.js +173 -1
  326. package/dist/services/hookExecutor.js.map +2 -2
  327. package/dist/services/intelligentCompactor.js +281 -0
  328. package/dist/services/intelligentCompactor.js.map +7 -0
  329. package/dist/services/lspConfig.js +109 -0
  330. package/dist/services/lspConfig.js.map +7 -0
  331. package/dist/services/mcpClient.js +338 -43
  332. package/dist/services/mcpClient.js.map +2 -2
  333. package/dist/services/modelOrchestrator.js +310 -0
  334. package/dist/services/modelOrchestrator.js.map +7 -0
  335. package/dist/services/openai.js +8 -1
  336. package/dist/services/openai.js.map +2 -2
  337. package/dist/services/outputStyles.js +138 -0
  338. package/dist/services/outputStyles.js.map +7 -0
  339. package/dist/services/plugins/index.js +5 -0
  340. package/dist/services/plugins/index.js.map +7 -0
  341. package/dist/services/plugins/lspServers.js +188 -0
  342. package/dist/services/plugins/lspServers.js.map +7 -0
  343. package/dist/services/plugins/pluginRuntime.js +229 -0
  344. package/dist/services/plugins/pluginRuntime.js.map +7 -0
  345. package/dist/services/plugins/pluginValidation.js +219 -0
  346. package/dist/services/plugins/pluginValidation.js.map +7 -0
  347. package/dist/services/plugins/skillMarketplace.js +556 -0
  348. package/dist/services/plugins/skillMarketplace.js.map +7 -0
  349. package/dist/services/responseStateManager.js +37 -3
  350. package/dist/services/responseStateManager.js.map +2 -2
  351. package/dist/services/sandbox/filesystemBoundary.js +341 -0
  352. package/dist/services/sandbox/filesystemBoundary.js.map +7 -0
  353. package/dist/services/sandbox/index.js +14 -0
  354. package/dist/services/sandbox/index.js.map +7 -0
  355. package/dist/services/sandbox/networkProxy.js +293 -0
  356. package/dist/services/sandbox/networkProxy.js.map +7 -0
  357. package/dist/services/sandbox/sandboxController.js +574 -0
  358. package/dist/services/sandbox/sandboxController.js.map +7 -0
  359. package/dist/services/sandbox/types.js +50 -0
  360. package/dist/services/sandbox/types.js.map +7 -0
  361. package/dist/services/sessionMemory.js +266 -0
  362. package/dist/services/sessionMemory.js.map +7 -0
  363. package/dist/services/taskRouter.js +324 -0
  364. package/dist/services/taskRouter.js.map +7 -0
  365. package/dist/tools/ArchitectTool/ArchitectTool.js +7 -1
  366. package/dist/tools/ArchitectTool/ArchitectTool.js.map +2 -2
  367. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +6 -2
  368. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
  369. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js +2 -1
  370. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +2 -2
  371. package/dist/tools/BaseTool.js +72 -0
  372. package/dist/tools/BaseTool.js.map +7 -0
  373. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +3 -0
  374. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +2 -2
  375. package/dist/tools/BashTool/BashTool.js +79 -3
  376. package/dist/tools/BashTool/BashTool.js.map +2 -2
  377. package/dist/tools/BashTool/BashToolResultMessage.js +3 -0
  378. package/dist/tools/BashTool/BashToolResultMessage.js.map +2 -2
  379. package/dist/tools/BashTool/OutputLine.js +54 -0
  380. package/dist/tools/BashTool/OutputLine.js.map +2 -2
  381. package/dist/tools/BashTool/prompt.js +336 -3
  382. package/dist/tools/BashTool/prompt.js.map +2 -2
  383. package/dist/tools/FileEditTool/FileEditTool.js +29 -4
  384. package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
  385. package/dist/tools/FileEditTool/prompt.js +6 -3
  386. package/dist/tools/FileEditTool/prompt.js.map +2 -2
  387. package/dist/tools/FileWriteTool/FileWriteTool.js +5 -5
  388. package/dist/tools/FileWriteTool/FileWriteTool.js.map +2 -2
  389. package/dist/tools/FileWriteTool/prompt.js +4 -2
  390. package/dist/tools/FileWriteTool/prompt.js.map +2 -2
  391. package/dist/tools/GlobTool/GlobTool.js +4 -2
  392. package/dist/tools/GlobTool/GlobTool.js.map +2 -2
  393. package/dist/tools/GrepTool/GrepTool.js +36 -7
  394. package/dist/tools/GrepTool/GrepTool.js.map +2 -2
  395. package/dist/tools/KillShellTool/KillShellToolResultMessage.js +3 -0
  396. package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +2 -2
  397. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +109 -0
  398. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +7 -0
  399. package/dist/tools/ListMcpResourcesTool/prompt.js +19 -0
  400. package/dist/tools/ListMcpResourcesTool/prompt.js.map +7 -0
  401. package/dist/tools/LspTool/LspTool.js +664 -0
  402. package/dist/tools/LspTool/LspTool.js.map +7 -0
  403. package/dist/tools/LspTool/prompt.js +27 -0
  404. package/dist/tools/LspTool/prompt.js.map +7 -0
  405. package/dist/tools/MCPTool/MCPTool.js +9 -1
  406. package/dist/tools/MCPTool/MCPTool.js.map +2 -2
  407. package/dist/tools/MemoryReadTool/MemoryReadTool.js +19 -6
  408. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +2 -2
  409. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +6 -6
  410. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +2 -2
  411. package/dist/tools/MultiEditTool/MultiEditTool.js +19 -2
  412. package/dist/tools/MultiEditTool/MultiEditTool.js.map +2 -2
  413. package/dist/tools/MultiEditTool/prompt.js +5 -3
  414. package/dist/tools/MultiEditTool/prompt.js.map +2 -2
  415. package/dist/tools/NotebookEditTool/NotebookEditTool.js +7 -2
  416. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +2 -2
  417. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +2 -2
  418. package/dist/tools/PlanModeTool/EnterPlanModeTool.js +75 -0
  419. package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +7 -0
  420. package/dist/tools/PlanModeTool/ExitPlanModeTool.js +109 -0
  421. package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +7 -0
  422. package/dist/tools/PlanModeTool/prompt.js +94 -0
  423. package/dist/tools/PlanModeTool/prompt.js.map +7 -0
  424. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +130 -0
  425. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js.map +7 -0
  426. package/dist/tools/ReadMcpResourceTool/prompt.js +17 -0
  427. package/dist/tools/ReadMcpResourceTool/prompt.js.map +7 -0
  428. package/dist/tools/SkillTool/SkillTool.js +10 -4
  429. package/dist/tools/SkillTool/SkillTool.js.map +2 -2
  430. package/dist/tools/SkillTool/prompt.js +1 -1
  431. package/dist/tools/SkillTool/prompt.js.map +1 -1
  432. package/dist/tools/SlashCommandTool/SlashCommandTool.js +260 -0
  433. package/dist/tools/SlashCommandTool/SlashCommandTool.js.map +7 -0
  434. package/dist/tools/SlashCommandTool/prompt.js +35 -0
  435. package/dist/tools/SlashCommandTool/prompt.js.map +7 -0
  436. package/dist/tools/TaskOutputTool/TaskOutputTool.js +190 -0
  437. package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +7 -0
  438. package/dist/tools/TaskOutputTool/prompt.js +15 -0
  439. package/dist/tools/TaskOutputTool/prompt.js.map +7 -0
  440. package/dist/tools/TaskTool/TaskTool.js +310 -104
  441. package/dist/tools/TaskTool/TaskTool.js.map +2 -2
  442. package/dist/tools/TaskTool/prompt.js.map +2 -2
  443. package/dist/tools/TodoWriteTool/TodoWriteTool.js +42 -77
  444. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +2 -2
  445. package/dist/tools/URLFetcherTool/URLFetcherTool.js +4 -1
  446. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +2 -2
  447. package/dist/tools/URLFetcherTool/cache.js +55 -8
  448. package/dist/tools/URLFetcherTool/cache.js.map +2 -2
  449. package/dist/tools.js +31 -2
  450. package/dist/tools.js.map +2 -2
  451. package/dist/types/hooks.js +4 -0
  452. package/dist/types/hooks.js.map +2 -2
  453. package/dist/types/marketplace.js.map +2 -2
  454. package/dist/types/messageGroup.js +36 -0
  455. package/dist/types/messageGroup.js.map +7 -0
  456. package/dist/types/plugin.js.map +2 -2
  457. package/dist/types/thinking.js +1 -0
  458. package/dist/types/thinking.js.map +7 -0
  459. package/dist/utils/BackgroundShellManager.js +136 -39
  460. package/dist/utils/BackgroundShellManager.js.map +2 -2
  461. package/dist/utils/CircuitBreaker.js +242 -0
  462. package/dist/utils/CircuitBreaker.js.map +7 -0
  463. package/dist/utils/MessageBatchBuffer.js +102 -0
  464. package/dist/utils/MessageBatchBuffer.js.map +7 -0
  465. package/dist/utils/PersistentShell.js +151 -1
  466. package/dist/utils/PersistentShell.js.map +2 -2
  467. package/dist/utils/agentLoader.js +1 -23
  468. package/dist/utils/agentLoader.js.map +2 -2
  469. package/dist/utils/agentTranscripts.js +641 -0
  470. package/dist/utils/agentTranscripts.js.map +7 -0
  471. package/dist/utils/animationManager.js +213 -0
  472. package/dist/utils/animationManager.js.map +7 -0
  473. package/dist/utils/animationSync.js +110 -0
  474. package/dist/utils/animationSync.js.map +7 -0
  475. package/dist/utils/ask.js +2 -0
  476. package/dist/utils/ask.js.map +2 -2
  477. package/dist/utils/asyncFile.js +215 -0
  478. package/dist/utils/asyncFile.js.map +7 -0
  479. package/dist/utils/backgroundAgentManager.js +231 -0
  480. package/dist/utils/backgroundAgentManager.js.map +7 -0
  481. package/dist/utils/config.js +108 -10
  482. package/dist/utils/config.js.map +2 -2
  483. package/dist/utils/conversationRecovery.js +19 -0
  484. package/dist/utils/conversationRecovery.js.map +2 -2
  485. package/dist/utils/credentials/CredentialStore.js +1 -0
  486. package/dist/utils/credentials/CredentialStore.js.map +7 -0
  487. package/dist/utils/credentials/EncryptedFileStore.js +157 -0
  488. package/dist/utils/credentials/EncryptedFileStore.js.map +7 -0
  489. package/dist/utils/credentials/index.js +37 -0
  490. package/dist/utils/credentials/index.js.map +7 -0
  491. package/dist/utils/credentials/migration.js +82 -0
  492. package/dist/utils/credentials/migration.js.map +7 -0
  493. package/dist/utils/exit.js +73 -0
  494. package/dist/utils/exit.js.map +7 -0
  495. package/dist/utils/format.js +73 -5
  496. package/dist/utils/format.js.map +2 -2
  497. package/dist/utils/generators.js +76 -6
  498. package/dist/utils/generators.js.map +2 -2
  499. package/dist/utils/globalErrorHandler.js +149 -0
  500. package/dist/utils/globalErrorHandler.js.map +7 -0
  501. package/dist/utils/groupHandlers/index.js +8 -0
  502. package/dist/utils/groupHandlers/index.js.map +7 -0
  503. package/dist/utils/groupHandlers/parallelTasksHandler.js +140 -0
  504. package/dist/utils/groupHandlers/parallelTasksHandler.js.map +7 -0
  505. package/dist/utils/groupHandlers/taskHandler.js +104 -0
  506. package/dist/utils/groupHandlers/taskHandler.js.map +7 -0
  507. package/dist/utils/groupHandlers/types.js +1 -0
  508. package/dist/utils/groupHandlers/types.js.map +7 -0
  509. package/dist/utils/logRotation.js +224 -0
  510. package/dist/utils/logRotation.js.map +7 -0
  511. package/dist/utils/markdown.js +13 -1
  512. package/dist/utils/markdown.js.map +2 -2
  513. package/dist/utils/marketplaceManager.js +3 -5
  514. package/dist/utils/marketplaceManager.js.map +2 -2
  515. package/dist/utils/memSafety.js +264 -0
  516. package/dist/utils/memSafety.js.map +7 -0
  517. package/dist/utils/messageGroupManager.js +274 -0
  518. package/dist/utils/messageGroupManager.js.map +7 -0
  519. package/dist/utils/messages.js +13 -4
  520. package/dist/utils/messages.js.map +2 -2
  521. package/dist/utils/model.js +119 -15
  522. package/dist/utils/model.js.map +3 -3
  523. package/dist/utils/permissions/filesystem.js +162 -6
  524. package/dist/utils/permissions/filesystem.js.map +2 -2
  525. package/dist/utils/plan/planMode.js +143 -0
  526. package/dist/utils/plan/planMode.js.map +7 -0
  527. package/dist/utils/pluginLoader.js +17 -21
  528. package/dist/utils/pluginLoader.js.map +2 -2
  529. package/dist/utils/ripgrep.js +55 -2
  530. package/dist/utils/ripgrep.js.map +2 -2
  531. package/dist/utils/safePath.js +132 -0
  532. package/dist/utils/safePath.js.map +7 -0
  533. package/dist/utils/sanitizeInput.js +32 -0
  534. package/dist/utils/sanitizeInput.js.map +7 -0
  535. package/dist/utils/secureKeyStorage.js +312 -0
  536. package/dist/utils/secureKeyStorage.js.map +7 -0
  537. package/dist/utils/sensitiveFiles.js +125 -0
  538. package/dist/utils/sensitiveFiles.js.map +7 -0
  539. package/dist/utils/session/sessionPlugins.js +67 -0
  540. package/dist/utils/session/sessionPlugins.js.map +7 -0
  541. package/dist/utils/taskDisplayUtils.js +257 -0
  542. package/dist/utils/taskDisplayUtils.js.map +7 -0
  543. package/dist/utils/teamConfig.js +2 -1
  544. package/dist/utils/teamConfig.js.map +2 -2
  545. package/dist/utils/theme.js +6 -6
  546. package/dist/utils/theme.js.map +1 -1
  547. package/dist/utils/todoStorage.js +92 -2
  548. package/dist/utils/todoStorage.js.map +2 -2
  549. package/dist/utils/toolRiskClassification.js +207 -0
  550. package/dist/utils/toolRiskClassification.js.map +7 -0
  551. package/dist/utils/toolTimeout.js +136 -0
  552. package/dist/utils/toolTimeout.js.map +7 -0
  553. package/dist/utils/tooling/safeRender.js +116 -0
  554. package/dist/utils/tooling/safeRender.js.map +7 -0
  555. package/dist/utils/userFriendlyError.js +346 -0
  556. package/dist/utils/userFriendlyError.js.map +7 -0
  557. package/dist/utils/vendor/ripgrep/arm64-darwin/rg +0 -0
  558. package/dist/version.js +2 -2
  559. package/dist/version.js.map +1 -1
  560. package/package.json +17 -5
  561. package/scripts/postinstall.js +128 -38
  562. package/dist/commands/agents.js +0 -2086
  563. package/dist/commands/agents.js.map +0 -7
  564. package/dist/commands/build.js +0 -74
  565. package/dist/commands/build.js.map +0 -7
  566. package/dist/commands/compression.js +0 -57
  567. package/dist/commands/compression.js.map +0 -7
  568. package/dist/commands/listen.js +0 -37
  569. package/dist/commands/listen.js.map +0 -7
  570. package/dist/commands/login.js +0 -37
  571. package/dist/commands/login.js.map +0 -7
  572. package/dist/commands/logout.js +0 -33
  573. package/dist/commands/logout.js.map +0 -7
  574. package/dist/commands/mcp.js +0 -40
  575. package/dist/commands/mcp.js.map +0 -7
  576. package/dist/commands/mcp_refresh.js +0 -40
  577. package/dist/commands/mcp_refresh.js.map +0 -7
  578. package/dist/commands/modelstatus.js +0 -21
  579. package/dist/commands/modelstatus.js.map +0 -7
  580. package/dist/commands/onboarding.js +0 -36
  581. package/dist/commands/onboarding.js.map +0 -7
  582. package/dist/commands/plugin-interactive.js +0 -446
  583. package/dist/commands/plugin-interactive.js.map +0 -7
  584. package/dist/commands/pr_comments.js +0 -61
  585. package/dist/commands/pr_comments.js.map +0 -7
  586. package/dist/commands/release-notes.js +0 -30
  587. package/dist/commands/release-notes.js.map +0 -7
  588. package/dist/commands/review.js +0 -51
  589. package/dist/commands/review.js.map +0 -7
  590. package/dist/components/Bug.js +0 -147
  591. package/dist/components/Bug.js.map +0 -7
  592. package/dist/components/ModelSelector.js +0 -2062
  593. package/dist/components/ModelSelector.js.map +0 -7
  594. package/dist/components/ModelStatusDisplay.js +0 -87
  595. package/dist/components/ModelStatusDisplay.js.map +0 -7
  596. package/dist/entrypoints/cli-wrapper.js +0 -61
  597. package/dist/entrypoints/cli-wrapper.js.map +0 -7
  598. package/dist/hooks/useCancelRequest.js +0 -28
  599. package/dist/hooks/useCancelRequest.js.map +0 -7
  600. package/dist/screens/Doctor.js +0 -22
  601. package/dist/screens/Doctor.js.map +0 -7
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/userFriendlyError.ts"],
4
+ "sourcesContent": ["/**\n * User-Friendly Error System\n *\n * Transforms technical errors into friendly messages for non-developer users.\n * Provides structured logging for debugging and optional cloud reporting.\n *\n * Design Philosophy:\n * - User layer: Simple, actionable messages in their language\n * - Developer layer: Full technical details for debugging\n * - Operations layer: Structured data for analysis and improvement\n */\n\nimport { randomUUID } from 'crypto'\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { t, tSafe } from '@i18n/index'\n\n// ============================================================================\n// Error Categories\n// ============================================================================\n\n/**\n * High-level error categories that map to user-understandable concepts\n */\nexport enum ErrorCategory {\n // Network & Connectivity\n NETWORK_CONNECTION = 'network_connection', // Can't reach the server\n NETWORK_TIMEOUT = 'network_timeout', // Request took too long\n NETWORK_DNS = 'network_dns', // Can't find the server\n\n // API & Service\n API_RATE_LIMIT = 'api_rate_limit', // Too many requests\n API_AUTH = 'api_auth', // Authentication failed\n API_QUOTA = 'api_quota', // Usage quota exceeded\n API_SERVER_ERROR = 'api_server_error', // Server is having issues\n API_INVALID_RESPONSE = 'api_invalid_response', // Unexpected response\n\n // File & Storage\n FILE_NOT_FOUND = 'file_not_found', // File doesn't exist\n FILE_PERMISSION = 'file_permission', // Can't access file\n FILE_TOO_LARGE = 'file_too_large', // File is too big\n FILE_ENCODING = 'file_encoding', // Can't read file format\n\n // Configuration\n CONFIG_MISSING = 'config_missing', // Missing required setting\n CONFIG_INVALID = 'config_invalid', // Invalid setting value\n CONFIG_API_KEY = 'config_api_key', // API key issue\n\n // Model & AI\n MODEL_UNAVAILABLE = 'model_unavailable', // Model not accessible\n MODEL_CONTEXT_LENGTH = 'model_context_length', // Input too long\n MODEL_CONTENT_FILTER = 'model_content_filter', // Content blocked\n\n // System\n SYSTEM_MEMORY = 'system_memory', // Out of memory\n SYSTEM_PROCESS = 'system_process', // Process error\n\n // Unknown\n UNKNOWN = 'unknown', // Unclassified error\n}\n\n// ============================================================================\n// User-Friendly Messages (Multi-language support via i18n)\n// ============================================================================\n\ninterface FriendlyMessage {\n title: string\n description: string\n suggestions: string[]\n}\n\n/**\n * Maps error categories to i18n translation key prefixes\n */\nconst CATEGORY_TO_I18N_PREFIX: Record<ErrorCategory, string> = {\n [ErrorCategory.NETWORK_CONNECTION]: 'friendlyError.networkConnection',\n [ErrorCategory.NETWORK_TIMEOUT]: 'friendlyError.networkTimeout',\n [ErrorCategory.NETWORK_DNS]: 'friendlyError.networkDns',\n [ErrorCategory.API_RATE_LIMIT]: 'friendlyError.apiRateLimit',\n [ErrorCategory.API_AUTH]: 'friendlyError.apiAuth',\n [ErrorCategory.API_QUOTA]: 'friendlyError.apiQuota',\n [ErrorCategory.API_SERVER_ERROR]: 'friendlyError.apiServerError',\n [ErrorCategory.API_INVALID_RESPONSE]: 'friendlyError.apiInvalidResponse',\n [ErrorCategory.FILE_NOT_FOUND]: 'friendlyError.fileNotFound',\n [ErrorCategory.FILE_PERMISSION]: 'friendlyError.filePermission',\n [ErrorCategory.FILE_TOO_LARGE]: 'friendlyError.fileTooLarge',\n [ErrorCategory.FILE_ENCODING]: 'friendlyError.fileEncoding',\n [ErrorCategory.CONFIG_MISSING]: 'friendlyError.configMissing',\n [ErrorCategory.CONFIG_INVALID]: 'friendlyError.configInvalid',\n [ErrorCategory.CONFIG_API_KEY]: 'friendlyError.configApiKey',\n [ErrorCategory.MODEL_UNAVAILABLE]: 'friendlyError.modelUnavailable',\n [ErrorCategory.MODEL_CONTEXT_LENGTH]: 'friendlyError.modelContextLength',\n [ErrorCategory.MODEL_CONTENT_FILTER]: 'friendlyError.modelContentFilter',\n [ErrorCategory.SYSTEM_MEMORY]: 'friendlyError.systemMemory',\n [ErrorCategory.SYSTEM_PROCESS]: 'friendlyError.systemProcess',\n [ErrorCategory.UNKNOWN]: 'friendlyError.unknown',\n}\n\n/**\n * Get friendly message using i18n\n * Designed for non-technical users (analysts, researchers, writers, etc.)\n */\nfunction getFriendlyMessage(category: ErrorCategory): FriendlyMessage {\n const prefix = CATEGORY_TO_I18N_PREFIX[category]\n\n // Build suggestions array dynamically (use tSafe to avoid warnings for missing keys)\n const suggestions: string[] = []\n for (let i = 1; i <= 3; i++) {\n const suggestion = tSafe(`${prefix}.suggestion${i}`)\n if (suggestion) {\n suggestions.push(suggestion)\n }\n }\n\n return {\n title: tSafe(`${prefix}.title`) || category,\n description: tSafe(`${prefix}.description`) || '',\n suggestions,\n }\n}\n\n/**\n * Legacy FRIENDLY_MESSAGES for backward compatibility\n * @deprecated Use getFriendlyMessage() for i18n support\n */\nconst FRIENDLY_MESSAGES: Record<ErrorCategory, FriendlyMessage> =\n Object.fromEntries(\n Object.values(ErrorCategory).map(category => [\n category,\n getFriendlyMessage(category),\n ]),\n ) as Record<ErrorCategory, FriendlyMessage>\n\n// ============================================================================\n// Error Classification Logic\n// ============================================================================\n\ninterface ErrorPattern {\n category: ErrorCategory\n patterns: (string | RegExp)[]\n}\n\n/**\n * Patterns to classify raw errors into categories\n * Order matters - more specific patterns should come first\n */\nconst ERROR_PATTERNS: ErrorPattern[] = [\n // Network errors\n {\n category: ErrorCategory.NETWORK_CONNECTION,\n patterns: [\n 'socket.*closed',\n 'ECONNREFUSED',\n 'ECONNRESET',\n 'ENOTFOUND',\n 'connection.*refused',\n 'connection.*closed',\n 'network.*error',\n 'fetch failed',\n ],\n },\n {\n category: ErrorCategory.NETWORK_TIMEOUT,\n patterns: [\n 'timeout',\n 'ETIMEDOUT',\n 'timed out',\n 'deadline exceeded',\n 'request.*timeout',\n ],\n },\n {\n category: ErrorCategory.NETWORK_DNS,\n patterns: ['ENOTFOUND', 'getaddrinfo', 'DNS', 'resolve.*failed'],\n },\n\n // API errors\n {\n category: ErrorCategory.API_RATE_LIMIT,\n patterns: ['rate.*limit', '429', 'too many requests', 'quota.*exceeded'],\n },\n {\n category: ErrorCategory.API_AUTH,\n patterns: [\n '401',\n 'unauthorized',\n 'authentication.*failed',\n 'invalid.*key',\n 'api.*key.*invalid',\n ],\n },\n {\n category: ErrorCategory.API_QUOTA,\n patterns: [\n 'insufficient.*quota',\n 'billing',\n 'credit',\n 'exceeded.*quota',\n '402',\n ],\n },\n {\n category: ErrorCategory.API_SERVER_ERROR,\n patterns: ['500', '502', '503', '504', 'internal.*error', 'server.*error'],\n },\n\n // File errors\n {\n category: ErrorCategory.FILE_NOT_FOUND,\n patterns: ['ENOENT', 'no such file', 'file.*not.*found', 'does not exist'],\n },\n {\n category: ErrorCategory.FILE_PERMISSION,\n patterns: ['EACCES', 'EPERM', 'permission.*denied', 'access.*denied'],\n },\n {\n category: ErrorCategory.FILE_TOO_LARGE,\n patterns: ['file.*too.*large', 'EFBIG', 'size.*limit'],\n },\n\n // Model errors\n {\n category: ErrorCategory.MODEL_CONTEXT_LENGTH,\n patterns: [\n 'context.*length',\n 'token.*limit',\n 'max.*tokens',\n 'too.*long',\n 'exceeds.*maximum',\n ],\n },\n {\n category: ErrorCategory.MODEL_CONTENT_FILTER,\n patterns: ['content.*filter', 'safety', 'blocked', 'moderation'],\n },\n {\n category: ErrorCategory.MODEL_UNAVAILABLE,\n patterns: ['model.*not.*found', 'model.*unavailable', 'does not exist'],\n },\n\n // Config errors\n {\n category: ErrorCategory.CONFIG_API_KEY,\n patterns: [\n 'api.*key.*not.*set',\n 'missing.*api.*key',\n 'ANTHROPIC_API_KEY',\n 'OPENAI_API_KEY',\n ],\n },\n\n // System errors\n {\n category: ErrorCategory.SYSTEM_MEMORY,\n patterns: ['ENOMEM', 'out of memory', 'heap', 'memory.*limit'],\n },\n]\n\n/**\n * Classifies a raw error into a category\n */\nexport function classifyError(error: unknown): ErrorCategory {\n const errorString = getErrorString(error).toLowerCase()\n\n for (const { category, patterns } of ERROR_PATTERNS) {\n for (const pattern of patterns) {\n if (typeof pattern === 'string') {\n if (errorString.includes(pattern.toLowerCase())) {\n return category\n }\n } else if (pattern.test(errorString)) {\n return category\n }\n }\n }\n\n return ErrorCategory.UNKNOWN\n}\n\nfunction getErrorString(error: unknown): string {\n if (error instanceof Error) {\n return `${error.name}: ${error.message} ${error.stack || ''}`\n }\n return String(error)\n}\n\n// ============================================================================\n// User-Friendly Error Class\n// ============================================================================\n\nexport interface ErrorContext {\n /** Operation being performed (e.g., \"reading file\", \"calling API\") */\n operation?: string\n /** Model being used */\n model?: string\n /** File path involved */\n filePath?: string\n /** API endpoint */\n endpoint?: string\n /** Additional context */\n [key: string]: unknown\n}\n\nexport interface ErrorLogEntry {\n id: string\n timestamp: string\n category: ErrorCategory\n friendlyTitle: string\n technicalMessage: string\n stack?: string\n context: ErrorContext\n systemInfo: {\n platform: string\n nodeVersion: string\n mintoVersion: string\n }\n}\n\n/**\n * User-Friendly Error wrapper\n * Provides both user-facing messages and technical details\n */\nexport class UserFriendlyError extends Error {\n readonly id: string\n readonly category: ErrorCategory\n readonly friendlyMessage: FriendlyMessage\n readonly originalError: unknown\n readonly context: ErrorContext\n readonly timestamp: Date\n\n constructor(\n originalError: unknown,\n context: ErrorContext = {},\n categoryOverride?: ErrorCategory,\n ) {\n const category = categoryOverride || classifyError(originalError)\n const friendly = FRIENDLY_MESSAGES[category]\n\n super(friendly.title)\n this.name = 'UserFriendlyError'\n this.id = randomUUID().slice(0, 8)\n this.category = category\n this.friendlyMessage = friendly\n this.originalError = originalError\n this.context = context\n this.timestamp = new Date()\n\n // Preserve original stack\n if (originalError instanceof Error && originalError.stack) {\n this.stack = originalError.stack\n }\n }\n\n /**\n * Get user-facing display message\n */\n getUserMessage(): string {\n // Get fresh translations (in case language changed)\n const message = getFriendlyMessage(this.category)\n const suggestionLabel = t('friendlyError.suggestionLabel')\n const errorIdLabel = t('friendlyError.errorIdLabel')\n\n const lines = [\n `\u26A0\uFE0F ${message.title}`,\n '',\n message.description,\n '',\n `\uD83D\uDCA1 ${suggestionLabel}:`,\n ...message.suggestions.map(s => ` \u2022 ${s}`),\n '',\n `\uD83D\uDCCB ${errorIdLabel}: ${this.id}`,\n ]\n return lines.join('\\n')\n }\n\n /**\n * Get technical message for developers\n */\n getTechnicalMessage(): string {\n const original =\n this.originalError instanceof Error\n ? this.originalError.message\n : String(this.originalError)\n return `[${this.category}] ${original}`\n }\n\n /**\n * Create structured log entry\n */\n toLogEntry(): ErrorLogEntry {\n return {\n id: this.id,\n timestamp: this.timestamp.toISOString(),\n category: this.category,\n friendlyTitle: this.friendlyMessage.title,\n technicalMessage: this.getTechnicalMessage(),\n stack: this.stack,\n context: this.context,\n systemInfo: {\n platform: process.platform,\n nodeVersion: process.version,\n mintoVersion: getMintoVersion(),\n },\n }\n }\n}\n\n// ============================================================================\n// Error Logging\n// ============================================================================\n\nlet errorLogPath: string | null = null\n\nfunction getErrorLogPath(): string {\n if (!errorLogPath) {\n const logDir = path.join(process.env.HOME || '', '.minto', 'logs')\n errorLogPath = path.join(logDir, 'errors.jsonl')\n }\n return errorLogPath\n}\n\n/**\n * Log error to local file (JSONL format for easy analysis)\n */\nexport function logUserFriendlyError(error: UserFriendlyError): void {\n try {\n const logPath = getErrorLogPath()\n const logDir = path.dirname(logPath)\n\n // Ensure log directory exists\n if (!fs.existsSync(logDir)) {\n fs.mkdirSync(logDir, { recursive: true })\n }\n\n const entry = error.toLogEntry()\n fs.appendFileSync(logPath, JSON.stringify(entry) + '\\n')\n } catch {\n // Silent fail - don't let logging errors break the app\n }\n}\n\n/**\n * Get recent errors for debugging\n */\nexport function getRecentErrors(limit = 10): ErrorLogEntry[] {\n try {\n const logPath = getErrorLogPath()\n if (!fs.existsSync(logPath)) {\n return []\n }\n\n const content = fs.readFileSync(logPath, 'utf-8')\n const lines = content.trim().split('\\n').filter(Boolean)\n const entries = lines\n .slice(-limit)\n .map(line => {\n try {\n return JSON.parse(line) as ErrorLogEntry\n } catch {\n return null\n }\n })\n .filter((e): e is ErrorLogEntry => e !== null)\n\n return entries.reverse()\n } catch {\n return []\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction getMintoVersion(): string {\n try {\n const packageJsonPath = path.join(__dirname, '../../package.json')\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'))\n return packageJson.version || 'unknown'\n } catch {\n return 'unknown'\n }\n}\n\n/**\n * Wrap any error into a UserFriendlyError\n */\nexport function toUserFriendlyError(\n error: unknown,\n context?: ErrorContext,\n): UserFriendlyError {\n if (error instanceof UserFriendlyError) {\n return error\n }\n return new UserFriendlyError(error, context)\n}\n\n/**\n * Format error for display to user\n * Returns the friendly message, optionally with technical details\n */\nexport function formatErrorForUser(\n error: unknown,\n options: { showTechnical?: boolean; context?: ErrorContext } = {},\n): string {\n const friendly = toUserFriendlyError(error, options.context)\n\n // Log the error\n logUserFriendlyError(friendly)\n\n let message = friendly.getUserMessage()\n\n if (options.showTechnical) {\n const technicalLabel = t('friendlyError.technicalDetailsLabel')\n message += `\\n\\n\uD83D\uDD27 ${technicalLabel}: ${friendly.getTechnicalMessage()}`\n }\n\n return message\n}\n\n// ============================================================================\n// Exports for Integration\n// ============================================================================\n\nexport { FRIENDLY_MESSAGES, ERROR_PATTERNS }\n"],
5
+ "mappings": "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",
6
+ "names": ["ErrorCategory"]
7
+ }
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
- const VERSION = "0.1.7";
2
- const BUILD_DATE = "2026-01-05T08:18:26.755Z";
1
+ const VERSION = "0.3.0";
2
+ const BUILD_DATE = "2026-02-02T01:21:32.241Z";
3
3
  export {
4
4
  BUILD_DATE,
5
5
  VERSION
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/version.ts"],
4
- "sourcesContent": ["/**\n * Application version\n * This file is auto-generated during build process\n */\n\nexport const VERSION = '0.1.7'\nexport const BUILD_DATE = '2026-01-05T08:18:26.755Z'\n"],
4
+ "sourcesContent": ["/**\n * Application version\n * This file is auto-generated during build process\n */\n\nexport const VERSION = '0.3.0'\nexport const BUILD_DATE = '2026-02-02T01:21:32.241Z'\n"],
5
5
  "mappings": "AAKO,MAAM,UAAU;AAChB,MAAM,aAAa;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@within-7/minto",
3
- "version": "0.1.7",
3
+ "version": "0.3.0",
4
4
  "bin": {
5
5
  "minto": "cli.js"
6
6
  },
@@ -27,7 +27,8 @@
27
27
  "scripts": {
28
28
  "dev": "bun run ./src/entrypoints/cli.tsx --verbose",
29
29
  "build": "node scripts/build.mjs",
30
- "clean": "rm -rf cli.js",
30
+ "build:packages": "node scripts/build-platform-packages.mjs",
31
+ "clean": "rm -rf cli.js binaries packages",
31
32
  "prepublishOnly": "node scripts/build.mjs && node scripts/prepublish-check.js",
32
33
  "postinstall": "node scripts/postinstall.js || true",
33
34
  "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json}\"",
@@ -37,8 +38,18 @@
37
38
  "test": "cd tests && bun test",
38
39
  "typecheck": "tsc --noEmit",
39
40
  "prepare": "",
41
+ "publish:packages": "node scripts/publish-platform-packages.mjs",
40
42
  "publish:dev": "node scripts/publish-dev.js",
41
- "publish:release": "node scripts/publish-release.js"
43
+ "publish:release": "node scripts/publish-release.js",
44
+ "release": "node scripts/release-full.js",
45
+ "release:dry-run": "node scripts/release-full.js --dry-run"
46
+ },
47
+ "optionalDependencies": {
48
+ "@within-7/minto-darwin-arm64": "0.3.0",
49
+ "@within-7/minto-darwin-x64": "0.3.0",
50
+ "@within-7/minto-linux-arm64": "0.3.0",
51
+ "@within-7/minto-linux-x64": "0.3.0",
52
+ "@within-7/minto-win32-x64": "0.3.0"
42
53
  },
43
54
  "dependencies": {
44
55
  "@anthropic-ai/bedrock-sdk": "^0.12.6",
@@ -49,7 +60,6 @@
49
60
  "@modelcontextprotocol/sdk": "^1.15.1",
50
61
  "@types/lodash-es": "^4.17.12",
51
62
  "@types/react": "^19.1.8",
52
- "@within-7/minto": "0.1.5",
53
63
  "ansi-escapes": "^7.0.0",
54
64
  "chalk": "^5.4.1",
55
65
  "cli-highlight": "^2.1.11",
@@ -70,6 +80,7 @@
70
80
  "lodash-es": "^4.17.21",
71
81
  "lru-cache": "^11.1.0",
72
82
  "marked": "^15.0.12",
83
+ "minimatch": "10.1.1",
73
84
  "nanoid": "^5.1.5",
74
85
  "node-fetch": "^3.3.2",
75
86
  "node-html-parser": "^7.0.1",
@@ -92,6 +103,7 @@
92
103
  "devDependencies": {
93
104
  "@types/bun": "latest",
94
105
  "@types/jest": "^30.0.0",
106
+ "@types/minimatch": "6.0.0",
95
107
  "@types/node": "^24.1.0",
96
108
  "bun-types": "latest",
97
109
  "esbuild": "^0.25.9",
@@ -112,4 +124,4 @@
112
124
  "formdata-node": "^6.0.3",
113
125
  "node-domexception": "npm:domexception@^4.0.0"
114
126
  }
115
- }
127
+ }
@@ -1,11 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ /**
4
+ * Minto Post-Install Script
5
+ *
6
+ * This script runs after npm install to:
7
+ * 1. Check if the platform-specific binary was installed
8
+ * 2. Display helpful getting-started information
9
+ *
10
+ * The binary is installed automatically via optionalDependencies.
11
+ * If it fails (e.g., unsupported platform), we fall back to JS mode.
12
+ */
13
+
3
14
  const fs = require('fs');
4
15
  const path = require('path');
5
16
 
17
+ const PACKAGE_ROOT = path.join(__dirname, '..');
18
+
19
+ /**
20
+ * Get the package version from package.json
21
+ */
6
22
  function getPackageVersion() {
7
23
  try {
8
- const pkgPath = path.join(__dirname, '..', 'package.json');
24
+ const pkgPath = path.join(PACKAGE_ROOT, 'package.json');
9
25
  const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
10
26
  return pkg.version;
11
27
  } catch {
@@ -13,50 +29,124 @@ function getPackageVersion() {
13
29
  }
14
30
  }
15
31
 
16
- function postinstallNotice() {
17
- // Only print informational hints; never fail install.
18
- // Use console.error (stderr) to ensure output is visible in npm install
19
- try {
20
- const version = getPackageVersion();
21
- const isGlobal = process.env.npm_config_global === 'true';
32
+ /**
33
+ * Get the expected package name for this platform
34
+ */
35
+ function getPlatformPackageName() {
36
+ const platform = process.platform; // darwin, linux, win32
37
+ const arch = process.arch; // arm64, x64
38
+ return `@within-7/minto-${platform}-${arch}`;
39
+ }
22
40
 
23
- console.error('');
24
- console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
25
- console.error('');
26
- console.error(' ✨ Minto installed successfully!');
27
- console.error(' 📦 Version: ' + version);
28
- console.error('');
29
- console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
30
- console.error('');
31
- console.error(' 🚀 Quick Start:');
32
- console.error('');
41
+ /**
42
+ * Check if the platform binary package was installed
43
+ */
44
+ function checkBinaryInstalled() {
45
+ const packageName = getPlatformPackageName();
46
+ const binaryName = process.platform === 'win32' ? 'minto.exe' : 'minto';
47
+
48
+ // Check possible installation locations
49
+ const possiblePaths = [
50
+ // Standard npm install location
51
+ path.join(PACKAGE_ROOT, 'node_modules', packageName, binaryName),
52
+ // Hoisted location
53
+ path.join(PACKAGE_ROOT, '..', packageName, binaryName),
54
+ // Global install
55
+ path.join(PACKAGE_ROOT, '..', '..', packageName, binaryName),
56
+ ];
33
57
 
34
- if (isGlobal) {
35
- console.error(' minto # Start interactive mode');
36
- console.error(' minto --help # Show all commands');
37
- console.error(' mt # Short alias for minto');
38
- } else {
39
- console.error(' npx minto # Start interactive mode');
40
- console.error(' npx minto --help # Show all commands');
58
+ for (const binaryPath of possiblePaths) {
59
+ if (fs.existsSync(binaryPath)) {
60
+ // Ensure executable permission on Unix
61
+ if (process.platform !== 'win32') {
62
+ try {
63
+ fs.chmodSync(binaryPath, 0o755);
64
+ } catch {
65
+ // Ignore permission errors
66
+ }
67
+ }
68
+ return {
69
+ installed: true,
70
+ path: binaryPath,
71
+ packageName,
72
+ };
41
73
  }
74
+ }
42
75
 
76
+ return {
77
+ installed: false,
78
+ packageName,
79
+ };
80
+ }
81
+
82
+ /**
83
+ * Display installation success message
84
+ */
85
+ function displaySuccessMessage(binaryStatus) {
86
+ const version = getPackageVersion();
87
+ const isGlobal = process.env.npm_config_global === 'true';
88
+
89
+ console.error('');
90
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
91
+ console.error('');
92
+ console.error(' ✨ Minto 安装成功!');
93
+ console.error(' 📦 版本: ' + version);
94
+
95
+ if (binaryStatus.installed) {
96
+ console.error(' 🚀 运行模式: 原生二进制 (最佳性能)');
97
+ } else {
98
+ console.error(' 📋 运行模式: JavaScript');
99
+ console.error(' 💡 提示: 原生二进制不可用,将使用 JS 回退模式');
100
+ }
101
+
102
+ console.error('');
103
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
104
+ console.error('');
105
+ console.error(' 🚀 快速开始:');
106
+ console.error('');
107
+
108
+ if (isGlobal) {
109
+ console.error(' minto # 启动交互模式');
110
+ console.error(' minto --help # 查看所有命令');
111
+ } else {
112
+ console.error(' npx minto # 启动交互模式');
113
+ console.error(' npx minto --help # 查看所有命令');
114
+ }
115
+
116
+ console.error('');
117
+ console.error(' 📚 文档: https://within-7.com/minto');
118
+ console.error(' 🐛 问题反馈: https://github.com/within-7/minto/issues');
119
+ console.error('');
120
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
121
+ console.error('');
122
+
123
+ if (!isGlobal) {
124
+ console.error(' 💡 提示: 全局安装可以更方便地使用:');
125
+ console.error(' npm install -g @within-7/minto');
43
126
  console.error('');
44
- console.error(' 📚 Documentation: https://within-7.com/minto');
45
- console.error(' 🐛 Issues: https://github.com/within-7/minto/issues');
46
- console.error('');
47
- console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
48
- console.error('');
127
+ }
128
+ }
49
129
 
50
- if (!isGlobal) {
51
- console.error(' 💡 Tip: Install globally for easier access:');
52
- console.error(' npm install -g @within-7/minto');
53
- console.error('');
54
- }
130
+ /**
131
+ * Main postinstall function
132
+ */
133
+ function postinstall() {
134
+ // Only run during actual npm postinstall
135
+ if (process.env.npm_lifecycle_event !== 'postinstall') {
136
+ return;
137
+ }
138
+
139
+ try {
140
+ // Check if binary was installed
141
+ const binaryStatus = checkBinaryInstalled();
142
+
143
+ // Display success message
144
+ displaySuccessMessage(binaryStatus);
55
145
  } catch (err) {
56
- // Silently fail - postinstall should never break the installation
146
+ // Silently fail - postinstall should never break installation
147
+ // Users can still use JavaScript fallback mode
57
148
  }
58
149
  }
59
150
 
60
- if (process.env.npm_lifecycle_event === 'postinstall') {
61
- postinstallNotice();
62
- }
151
+ // Run postinstall
152
+ postinstall();