@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
@@ -1,16 +1,47 @@
1
- import { useEffect, useState } from "react";
1
+ import { useEffect, useState, useRef } from "react";
2
2
  let globalSize = {
3
3
  columns: process.stdout.columns || 80,
4
4
  rows: process.stdout.rows || 24
5
5
  };
6
6
  const listeners = /* @__PURE__ */ new Set();
7
7
  let isListenerAttached = false;
8
+ let debounceTimer = null;
9
+ const resizeCallbacks = /* @__PURE__ */ new Set();
10
+ const RESIZE_DEBOUNCE_MS = 300;
11
+ const SIZE_CHANGE_THRESHOLD = 5;
12
+ let isInClearingCycle = false;
13
+ let lastSignificantResizeTime = 0;
14
+ const RESIZE_COOLDOWN_MS = 2e3;
8
15
  function updateAllListeners() {
9
- globalSize = {
10
- columns: process.stdout.columns || 80,
11
- rows: process.stdout.rows || 24
12
- };
13
- listeners.forEach((listener) => listener());
16
+ if (debounceTimer) {
17
+ clearTimeout(debounceTimer);
18
+ }
19
+ debounceTimer = setTimeout(() => {
20
+ const newColumns = process.stdout.columns || 80;
21
+ const newRows = process.stdout.rows || 24;
22
+ if (globalSize.columns !== newColumns || globalSize.rows !== newRows) {
23
+ const oldColumns = globalSize.columns;
24
+ const columnDiff = Math.abs(oldColumns - newColumns);
25
+ const isSignificantResize = columnDiff > SIZE_CHANGE_THRESHOLD;
26
+ globalSize = {
27
+ columns: newColumns,
28
+ rows: newRows
29
+ };
30
+ listeners.forEach((listener) => listener());
31
+ const now = Date.now();
32
+ const timeSinceLastResize = now - lastSignificantResizeTime;
33
+ const isCooldownExpired = timeSinceLastResize > RESIZE_COOLDOWN_MS;
34
+ if (isSignificantResize && !isInClearingCycle && isCooldownExpired) {
35
+ isInClearingCycle = true;
36
+ lastSignificantResizeTime = now;
37
+ resizeCallbacks.forEach((callback) => callback());
38
+ setTimeout(() => {
39
+ isInClearingCycle = false;
40
+ }, 500);
41
+ }
42
+ }
43
+ debounceTimer = null;
44
+ }, RESIZE_DEBOUNCE_MS);
14
45
  }
15
46
  function useTerminalSize() {
16
47
  const [size, setSize] = useState(globalSize);
@@ -27,12 +58,37 @@ function useTerminalSize() {
27
58
  if (listeners.size === 0 && isListenerAttached) {
28
59
  process.stdout.off("resize", updateAllListeners);
29
60
  isListenerAttached = false;
61
+ if (debounceTimer) {
62
+ clearTimeout(debounceTimer);
63
+ debounceTimer = null;
64
+ }
30
65
  }
31
66
  };
32
67
  }, []);
33
68
  return size;
34
69
  }
70
+ function useFullscreenExitCallback(callback) {
71
+ return useSignificantResizeCallback(callback);
72
+ }
73
+ function useSignificantResizeCallback(callback) {
74
+ const callbackRef = useRef(callback);
75
+ callbackRef.current = callback;
76
+ useEffect(() => {
77
+ if (!isListenerAttached) {
78
+ process.stdout.setMaxListeners(20);
79
+ process.stdout.on("resize", updateAllListeners);
80
+ isListenerAttached = true;
81
+ }
82
+ const wrappedCallback = () => callbackRef.current();
83
+ resizeCallbacks.add(wrappedCallback);
84
+ return () => {
85
+ resizeCallbacks.delete(wrappedCallback);
86
+ };
87
+ }, []);
88
+ }
35
89
  export {
90
+ useFullscreenExitCallback,
91
+ useSignificantResizeCallback,
36
92
  useTerminalSize
37
93
  };
38
94
  //# sourceMappingURL=useTerminalSize.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/useTerminalSize.ts"],
4
- "sourcesContent": ["import { useEffect, useState } from 'react'\n\n// Global state to share across all hook instances\nlet globalSize = {\n columns: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n}\n\nconst listeners = new Set<() => void>()\nlet isListenerAttached = false\n\nfunction updateAllListeners() {\n globalSize = {\n columns: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n }\n listeners.forEach(listener => listener())\n}\n\nexport function useTerminalSize() {\n const [size, setSize] = useState(globalSize)\n\n useEffect(() => {\n // Add this component's listener to the set\n const updateSize = () => setSize({ ...globalSize })\n listeners.add(updateSize)\n\n // Only attach the global resize listener once\n if (!isListenerAttached) {\n // Increase max listeners to prevent warnings\n process.stdout.setMaxListeners(20)\n process.stdout.on('resize', updateAllListeners)\n isListenerAttached = true\n }\n\n return () => {\n // Remove this component's listener\n listeners.delete(updateSize)\n\n // If no more listeners, remove the global listener\n if (listeners.size === 0 && isListenerAttached) {\n process.stdout.off('resize', updateAllListeners)\n isListenerAttached = false\n }\n }\n }, [])\n\n return size\n}\n"],
5
- "mappings": "AAAA,SAAS,WAAW,gBAAgB;AAGpC,IAAI,aAAa;AAAA,EACf,SAAS,QAAQ,OAAO,WAAW;AAAA,EACnC,MAAM,QAAQ,OAAO,QAAQ;AAC/B;AAEA,MAAM,YAAY,oBAAI,IAAgB;AACtC,IAAI,qBAAqB;AAEzB,SAAS,qBAAqB;AAC5B,eAAa;AAAA,IACX,SAAS,QAAQ,OAAO,WAAW;AAAA,IACnC,MAAM,QAAQ,OAAO,QAAQ;AAAA,EAC/B;AACA,YAAU,QAAQ,cAAY,SAAS,CAAC;AAC1C;AAEO,SAAS,kBAAkB;AAChC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,UAAU;AAE3C,YAAU,MAAM;AAEd,UAAM,aAAa,MAAM,QAAQ,EAAE,GAAG,WAAW,CAAC;AAClD,cAAU,IAAI,UAAU;AAGxB,QAAI,CAAC,oBAAoB;AAEvB,cAAQ,OAAO,gBAAgB,EAAE;AACjC,cAAQ,OAAO,GAAG,UAAU,kBAAkB;AAC9C,2BAAqB;AAAA,IACvB;AAEA,WAAO,MAAM;AAEX,gBAAU,OAAO,UAAU;AAG3B,UAAI,UAAU,SAAS,KAAK,oBAAoB;AAC9C,gBAAQ,OAAO,IAAI,UAAU,kBAAkB;AAC/C,6BAAqB;AAAA,MACvB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;",
4
+ "sourcesContent": ["import { useEffect, useState, useRef, useCallback } from 'react'\n\n// Global state to share across all hook instances\nlet globalSize = {\n columns: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n}\n\nconst listeners = new Set<() => void>()\nlet isListenerAttached = false\nlet debounceTimer: NodeJS.Timeout | null = null\n\n// Callbacks to trigger full re-render when significant resize occurs\nconst resizeCallbacks = new Set<() => void>()\n\n// Debounce delay in ms - prevents rapid-fire re-renders during resize\n// Increased from 150ms to 300ms to better handle window focus transitions\nconst RESIZE_DEBOUNCE_MS = 300\n\n// Threshold for detecting any significant size change (either direction)\n// Any resize > 5 columns should trigger a re-render to prevent ghost artifacts\nconst SIZE_CHANGE_THRESHOLD = 5\n\n// Track if we're currently in a fullscreen exit clearing cycle to prevent re-triggers\nlet isInClearingCycle = false\n\n// Track last significant resize time to prevent rapid re-triggers (e.g., from window focus changes)\nlet lastSignificantResizeTime = 0\nconst RESIZE_COOLDOWN_MS = 2000 // 2 second cooldown between significant resize triggers\n\nfunction updateAllListeners() {\n // Clear any pending debounce\n if (debounceTimer) {\n clearTimeout(debounceTimer)\n }\n\n // Debounce the resize event to prevent multiple rapid re-renders\n debounceTimer = setTimeout(() => {\n const newColumns = process.stdout.columns || 80\n const newRows = process.stdout.rows || 24\n\n // Only update if dimensions actually changed\n if (globalSize.columns !== newColumns || globalSize.rows !== newRows) {\n const oldColumns = globalSize.columns\n\n // Detect if screen size changed significantly (in either direction)\n // This catches both entering and exiting fullscreen, as well as manual window resizing\n const columnDiff = Math.abs(oldColumns - newColumns)\n const isSignificantResize = columnDiff > SIZE_CHANGE_THRESHOLD\n\n globalSize = {\n columns: newColumns,\n rows: newRows,\n }\n listeners.forEach(listener => listener())\n\n // If significant resize and not already in clearing cycle, trigger callbacks\n // The clearing cycle lock prevents multiple triggers during the clear/re-render process\n // Also enforce a cooldown period to prevent rapid re-triggers from window focus changes\n const now = Date.now()\n const timeSinceLastResize = now - lastSignificantResizeTime\n const isCooldownExpired = timeSinceLastResize > RESIZE_COOLDOWN_MS\n\n if (isSignificantResize && !isInClearingCycle && isCooldownExpired) {\n isInClearingCycle = true\n lastSignificantResizeTime = now\n resizeCallbacks.forEach(callback => callback())\n // Release the lock after a delay to allow re-render to complete\n setTimeout(() => {\n isInClearingCycle = false\n }, 500)\n }\n }\n debounceTimer = null\n }, RESIZE_DEBOUNCE_MS)\n}\n\nexport function useTerminalSize() {\n const [size, setSize] = useState(globalSize)\n\n useEffect(() => {\n // Add this component's listener to the set\n const updateSize = () => setSize({ ...globalSize })\n listeners.add(updateSize)\n\n // Only attach the global resize listener once\n if (!isListenerAttached) {\n // Increase max listeners to prevent warnings\n process.stdout.setMaxListeners(20)\n process.stdout.on('resize', updateAllListeners)\n isListenerAttached = true\n }\n\n return () => {\n // Remove this component's listener\n listeners.delete(updateSize)\n\n // If no more listeners, remove the global listener\n if (listeners.size === 0 && isListenerAttached) {\n process.stdout.off('resize', updateAllListeners)\n isListenerAttached = false\n // Clear any pending debounce\n if (debounceTimer) {\n clearTimeout(debounceTimer)\n debounceTimer = null\n }\n }\n }\n }, [])\n\n return size\n}\n\n/**\n * Hook to register a callback that fires when a significant resize occurs.\n * This is detected when the terminal width changes by more than 5 columns.\n * Useful for triggering a full UI re-render to clear ghost artifacts.\n *\n * @deprecated Use useSignificantResizeCallback instead (same function, clearer name)\n */\nexport function useFullscreenExitCallback(callback: () => void) {\n return useSignificantResizeCallback(callback)\n}\n\n/**\n * Hook to register a callback that fires when a significant terminal resize occurs.\n * This is detected when the terminal width changes by more than SIZE_CHANGE_THRESHOLD columns.\n * Useful for triggering a full UI re-render to clear ghost artifacts caused by Ink's\n * differential rendering.\n */\nexport function useSignificantResizeCallback(callback: () => void) {\n const callbackRef = useRef(callback)\n callbackRef.current = callback\n\n useEffect(() => {\n // Ensure the global resize listener is attached\n // This is needed because this hook might be called\n // before any component calls useTerminalSize()\n if (!isListenerAttached) {\n process.stdout.setMaxListeners(20)\n process.stdout.on('resize', updateAllListeners)\n isListenerAttached = true\n }\n\n const wrappedCallback = () => callbackRef.current()\n resizeCallbacks.add(wrappedCallback)\n\n return () => {\n resizeCallbacks.delete(wrappedCallback)\n }\n }, [])\n}\n"],
5
+ "mappings": "AAAA,SAAS,WAAW,UAAU,cAA2B;AAGzD,IAAI,aAAa;AAAA,EACf,SAAS,QAAQ,OAAO,WAAW;AAAA,EACnC,MAAM,QAAQ,OAAO,QAAQ;AAC/B;AAEA,MAAM,YAAY,oBAAI,IAAgB;AACtC,IAAI,qBAAqB;AACzB,IAAI,gBAAuC;AAG3C,MAAM,kBAAkB,oBAAI,IAAgB;AAI5C,MAAM,qBAAqB;AAI3B,MAAM,wBAAwB;AAG9B,IAAI,oBAAoB;AAGxB,IAAI,4BAA4B;AAChC,MAAM,qBAAqB;AAE3B,SAAS,qBAAqB;AAE5B,MAAI,eAAe;AACjB,iBAAa,aAAa;AAAA,EAC5B;AAGA,kBAAgB,WAAW,MAAM;AAC/B,UAAM,aAAa,QAAQ,OAAO,WAAW;AAC7C,UAAM,UAAU,QAAQ,OAAO,QAAQ;AAGvC,QAAI,WAAW,YAAY,cAAc,WAAW,SAAS,SAAS;AACpE,YAAM,aAAa,WAAW;AAI9B,YAAM,aAAa,KAAK,IAAI,aAAa,UAAU;AACnD,YAAM,sBAAsB,aAAa;AAEzC,mBAAa;AAAA,QACX,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AACA,gBAAU,QAAQ,cAAY,SAAS,CAAC;AAKxC,YAAM,MAAM,KAAK,IAAI;AACrB,YAAM,sBAAsB,MAAM;AAClC,YAAM,oBAAoB,sBAAsB;AAEhD,UAAI,uBAAuB,CAAC,qBAAqB,mBAAmB;AAClE,4BAAoB;AACpB,oCAA4B;AAC5B,wBAAgB,QAAQ,cAAY,SAAS,CAAC;AAE9C,mBAAW,MAAM;AACf,8BAAoB;AAAA,QACtB,GAAG,GAAG;AAAA,MACR;AAAA,IACF;AACA,oBAAgB;AAAA,EAClB,GAAG,kBAAkB;AACvB;AAEO,SAAS,kBAAkB;AAChC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,UAAU;AAE3C,YAAU,MAAM;AAEd,UAAM,aAAa,MAAM,QAAQ,EAAE,GAAG,WAAW,CAAC;AAClD,cAAU,IAAI,UAAU;AAGxB,QAAI,CAAC,oBAAoB;AAEvB,cAAQ,OAAO,gBAAgB,EAAE;AACjC,cAAQ,OAAO,GAAG,UAAU,kBAAkB;AAC9C,2BAAqB;AAAA,IACvB;AAEA,WAAO,MAAM;AAEX,gBAAU,OAAO,UAAU;AAG3B,UAAI,UAAU,SAAS,KAAK,oBAAoB;AAC9C,gBAAQ,OAAO,IAAI,UAAU,kBAAkB;AAC/C,6BAAqB;AAErB,YAAI,eAAe;AACjB,uBAAa,aAAa;AAC1B,0BAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;AASO,SAAS,0BAA0B,UAAsB;AAC9D,SAAO,6BAA6B,QAAQ;AAC9C;AAQO,SAAS,6BAA6B,UAAsB;AACjE,QAAM,cAAc,OAAO,QAAQ;AACnC,cAAY,UAAU;AAEtB,YAAU,MAAM;AAId,QAAI,CAAC,oBAAoB;AACvB,cAAQ,OAAO,gBAAgB,EAAE;AACjC,cAAQ,OAAO,GAAG,UAAU,kBAAkB;AAC9C,2BAAqB;AAAA,IACvB;AAEA,UAAM,kBAAkB,MAAM,YAAY,QAAQ;AAClD,oBAAgB,IAAI,eAAe;AAEnC,WAAO,MAAM;AACX,sBAAgB,OAAO,eAAe;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,CAAC;AACP;",
6
6
  "names": []
7
7
  }
@@ -12,6 +12,7 @@ import {
12
12
  getEssentialCommands,
13
13
  getMinimalFallbackCommands
14
14
  } from "../utils/commonUnixCommands.js";
15
+ import { listMCPResources } from "../services/mcpClient.js";
15
16
  const INITIAL_STATE = {
16
17
  suggestions: [],
17
18
  selectedIndex: 0,
@@ -143,6 +144,15 @@ function useUnifiedCompletion({
143
144
  // Use cursor position as end
144
145
  };
145
146
  }
147
+ if (word.startsWith("mcp:") || word.includes("mcp:")) {
148
+ const mcpPrefix = word.includes("mcp:") ? word.slice(word.indexOf("mcp:") + 4) : "";
149
+ return {
150
+ type: "mcp",
151
+ prefix: mcpPrefix,
152
+ startPos: start,
153
+ endPos: cursorOffset
154
+ };
155
+ }
146
156
  return {
147
157
  type: "file",
148
158
  prefix: word,
@@ -356,6 +366,29 @@ function useUnifiedCompletion({
356
366
  setModelSuggestions([]);
357
367
  }
358
368
  }, []);
369
+ const [mcpResourceSuggestions, setMcpResourceSuggestions] = useState([]);
370
+ useEffect(() => {
371
+ listMCPResources().then((resources) => {
372
+ const suggestions2 = resources.map((resource) => ({
373
+ value: resource.uri,
374
+ displayValue: `\u{1F50C} ${resource.name} :: ${resource.description || resource.uri}`,
375
+ type: "mcp-resource",
376
+ score: 80,
377
+ metadata: {
378
+ uri: resource.uri,
379
+ serverName: resource.serverName,
380
+ mimeType: resource.mimeType
381
+ }
382
+ }));
383
+ setMcpResourceSuggestions(suggestions2);
384
+ }).catch((error) => {
385
+ console.warn(
386
+ "[useUnifiedCompletion] MCP resources not available:",
387
+ error
388
+ );
389
+ setMcpResourceSuggestions([]);
390
+ });
391
+ }, []);
359
392
  useEffect(() => {
360
393
  getActiveAgents().then((agents) => {
361
394
  const suggestions2 = agents.map((config) => {
@@ -583,11 +616,42 @@ function useUnifiedCompletion({
583
616
  },
584
617
  [agentSuggestions, modelSuggestions, calculateMatchScore]
585
618
  );
619
+ const generateMcpResourceSuggestions = useCallback(
620
+ (prefix) => {
621
+ if (mcpResourceSuggestions.length === 0) {
622
+ return [
623
+ {
624
+ value: "",
625
+ displayValue: "\u26A0\uFE0F No MCP resources available",
626
+ type: "mcp-resource",
627
+ score: 0,
628
+ metadata: { isPlaceholder: true }
629
+ }
630
+ ];
631
+ }
632
+ if (!prefix) {
633
+ return mcpResourceSuggestions;
634
+ }
635
+ const lowerPrefix = prefix.toLowerCase();
636
+ return mcpResourceSuggestions.filter((s) => {
637
+ const uri = s.value.toLowerCase();
638
+ const name = s.metadata?.uri?.toLowerCase() || "";
639
+ const server = s.metadata?.serverName?.toLowerCase() || "";
640
+ return uri.includes(lowerPrefix) || name.includes(lowerPrefix) || server.includes(lowerPrefix);
641
+ }).map((s) => ({
642
+ ...s,
643
+ score: s.value.toLowerCase().startsWith(lowerPrefix) ? 100 : 80
644
+ })).sort((a, b) => b.score - a.score);
645
+ },
646
+ [mcpResourceSuggestions]
647
+ );
586
648
  const generateSuggestions = useCallback(
587
649
  (context) => {
588
650
  switch (context.type) {
589
651
  case "command":
590
652
  return generateCommandSuggestions(context.prefix);
653
+ case "mcp":
654
+ return generateMcpResourceSuggestions(context.prefix);
591
655
  case "agent": {
592
656
  const mentionSuggestions = generateMentionSuggestions(context.prefix);
593
657
  const fileSuggestions = generateFileSuggestions(context.prefix, true);
@@ -653,6 +717,7 @@ function useUnifiedCompletion({
653
717
  },
654
718
  [
655
719
  generateCommandSuggestions,
720
+ generateMcpResourceSuggestions,
656
721
  generateMentionSuggestions,
657
722
  generateFileSuggestions,
658
723
  generateUnixCommandSuggestions,
@@ -664,6 +729,8 @@ function useUnifiedCompletion({
664
729
  let completion;
665
730
  if (context.type === "command") {
666
731
  completion = `/${suggestion.value} `;
732
+ } else if (context.type === "mcp") {
733
+ completion = `mcp:${suggestion.value} `;
667
734
  } else if (context.type === "agent") {
668
735
  if (suggestion.type === "agent") {
669
736
  completion = `@${suggestion.value} `;
@@ -971,6 +1038,8 @@ function useUnifiedCompletion({
971
1038
  return true;
972
1039
  case "agent":
973
1040
  return true;
1041
+ case "mcp":
1042
+ return true;
974
1043
  case "file":
975
1044
  const prefix = context.prefix;
976
1045
  if (prefix.startsWith("./") || prefix.startsWith("../") || prefix.startsWith("/") || prefix.startsWith("~") || prefix.includes("/")) {