@within-7/minto 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/dist/Tool.js +7 -0
  2. package/dist/Tool.js.map +2 -2
  3. package/dist/commands/agents/AgentsCommand.js +1 -1
  4. package/dist/commands/agents/AgentsCommand.js.map +2 -2
  5. package/dist/commands/agents/constants.js +2 -2
  6. package/dist/commands/agents/constants.js.map +2 -2
  7. package/dist/commands/clear.js +4 -3
  8. package/dist/commands/clear.js.map +2 -2
  9. package/dist/commands/compact.js +2 -2
  10. package/dist/commands/compact.js.map +1 -1
  11. package/dist/commands/context.js +3 -1
  12. package/dist/commands/context.js.map +2 -2
  13. package/dist/commands/login.js +128 -0
  14. package/dist/commands/login.js.map +7 -0
  15. package/dist/commands/memory.js +33 -82
  16. package/dist/commands/memory.js.map +2 -2
  17. package/dist/commands/quit.js +3 -1
  18. package/dist/commands/quit.js.map +2 -2
  19. package/dist/commands/resume.js +39 -239
  20. package/dist/commands/resume.js.map +2 -2
  21. package/dist/commands/tasks.js +1 -1
  22. package/dist/commands/tasks.js.map +2 -2
  23. package/dist/commands/terminalSetup.js +6 -2
  24. package/dist/commands/terminalSetup.js.map +2 -2
  25. package/dist/commands.js +2 -0
  26. package/dist/commands.js.map +2 -2
  27. package/dist/components/AgentDetailView.js +126 -0
  28. package/dist/components/AgentDetailView.js.map +7 -0
  29. package/dist/components/AgentThinkingBlock.js +1 -1
  30. package/dist/components/AgentThinkingBlock.js.map +2 -2
  31. package/dist/components/AgentViewBanner.js +22 -0
  32. package/dist/components/AgentViewBanner.js.map +7 -0
  33. package/dist/components/HeaderBar.js +1 -1
  34. package/dist/components/HeaderBar.js.map +2 -2
  35. package/dist/components/Help.js +8 -1
  36. package/dist/components/Help.js.map +2 -2
  37. package/dist/components/HotkeyHelpPanel.js +26 -8
  38. package/dist/components/HotkeyHelpPanel.js.map +2 -2
  39. package/dist/components/IdleNotificationBar.js +10 -0
  40. package/dist/components/IdleNotificationBar.js.map +7 -0
  41. package/dist/components/ModelSelector/ModelSelector.js +55 -20
  42. package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
  43. package/dist/components/PromptInput.js +186 -115
  44. package/dist/components/PromptInput.js.map +2 -2
  45. package/dist/components/RewindPanel.js +272 -0
  46. package/dist/components/RewindPanel.js.map +7 -0
  47. package/dist/components/Spinner.js +10 -21
  48. package/dist/components/Spinner.js.map +2 -2
  49. package/dist/components/StreamingTextPreview.js +29 -0
  50. package/dist/components/StreamingTextPreview.js.map +7 -0
  51. package/dist/components/SubagentBlock.js +3 -2
  52. package/dist/components/SubagentBlock.js.map +2 -2
  53. package/dist/components/SubagentProgress.js +4 -4
  54. package/dist/components/SubagentProgress.js.map +2 -2
  55. package/dist/components/TabbedListView/SearchInput.js +1 -1
  56. package/dist/components/TabbedListView/SearchInput.js.map +2 -2
  57. package/dist/components/TabbedListView/TabbedListView.js +87 -41
  58. package/dist/components/TabbedListView/TabbedListView.js.map +2 -2
  59. package/dist/components/TaskCard.js +4 -4
  60. package/dist/components/TaskCard.js.map +2 -2
  61. package/dist/components/TeamMemberPanel.js +107 -0
  62. package/dist/components/TeamMemberPanel.js.map +7 -0
  63. package/dist/components/ThinkingSelector.js +84 -0
  64. package/dist/components/ThinkingSelector.js.map +7 -0
  65. package/dist/components/TitledDivider.js +26 -0
  66. package/dist/components/TitledDivider.js.map +7 -0
  67. package/dist/components/TodoPanel.js +31 -30
  68. package/dist/components/TodoPanel.js.map +2 -2
  69. package/dist/components/TokenWarning.js +28 -7
  70. package/dist/components/TokenWarning.js.map +2 -2
  71. package/dist/components/messages/AssistantTextMessage.js +5 -2
  72. package/dist/components/messages/AssistantTextMessage.js.map +2 -2
  73. package/dist/components/messages/AssistantToolUseMessage.js +9 -1
  74. package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
  75. package/dist/components/messages/DefaultToolResultFallback.js +11 -0
  76. package/dist/components/messages/DefaultToolResultFallback.js.map +7 -0
  77. package/dist/components/messages/ParallelTasksGroupView.js +14 -6
  78. package/dist/components/messages/ParallelTasksGroupView.js.map +2 -2
  79. package/dist/components/messages/TaskInModuleView.js +27 -27
  80. package/dist/components/messages/TaskInModuleView.js.map +2 -2
  81. package/dist/components/messages/UserGuidanceMessage.js +26 -0
  82. package/dist/components/messages/UserGuidanceMessage.js.map +7 -0
  83. package/dist/components/messages/UserPromptMessage.js +2 -1
  84. package/dist/components/messages/UserPromptMessage.js.map +2 -2
  85. package/dist/components/messages/UserTeamNotificationMessage.js +91 -0
  86. package/dist/components/messages/UserTeamNotificationMessage.js.map +7 -0
  87. package/dist/components/messages/UserTextMessage.js +8 -0
  88. package/dist/components/messages/UserTextMessage.js.map +2 -2
  89. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +4 -2
  90. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +2 -2
  91. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +18 -1
  92. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +2 -2
  93. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +12 -1
  94. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +2 -2
  95. package/dist/components/permissions/PermissionRequest.js +4 -0
  96. package/dist/components/permissions/PermissionRequest.js.map +2 -2
  97. package/dist/components/permissions/PlanApprovalRequest.js +164 -0
  98. package/dist/components/permissions/PlanApprovalRequest.js.map +7 -0
  99. package/dist/constants/agentTeams.js +17 -0
  100. package/dist/constants/agentTeams.js.map +7 -0
  101. package/dist/constants/macros.js +2 -1
  102. package/dist/constants/macros.js.map +2 -2
  103. package/dist/constants/prompts/agentPrompt.js +1 -0
  104. package/dist/constants/prompts/agentPrompt.js.map +2 -2
  105. package/dist/constants/prompts/autoMemory.js +39 -0
  106. package/dist/constants/prompts/autoMemory.js.map +7 -0
  107. package/dist/constants/prompts/codeConventions.js +1 -13
  108. package/dist/constants/prompts/codeConventions.js.map +2 -2
  109. package/dist/constants/prompts/doingTasks.js +21 -2
  110. package/dist/constants/prompts/doingTasks.js.map +2 -2
  111. package/dist/constants/prompts/envInfo.js +6 -7
  112. package/dist/constants/prompts/envInfo.js.map +2 -2
  113. package/dist/constants/prompts/index.js +27 -5
  114. package/dist/constants/prompts/index.js.map +2 -2
  115. package/dist/constants/prompts/taskManagement.js +2 -43
  116. package/dist/constants/prompts/taskManagement.js.map +2 -2
  117. package/dist/constants/prompts/teamOverlays.js +50 -0
  118. package/dist/constants/prompts/teamOverlays.js.map +7 -0
  119. package/dist/constants/prompts/toneAndStyle.js +4 -29
  120. package/dist/constants/prompts/toneAndStyle.js.map +2 -2
  121. package/dist/constants/prompts/toolUsagePolicy.js +7 -22
  122. package/dist/constants/prompts/toolUsagePolicy.js.map +2 -2
  123. package/dist/constants/toolInputExamples.js +2 -2
  124. package/dist/constants/toolInputExamples.js.map +2 -2
  125. package/dist/context.js +39 -6
  126. package/dist/context.js.map +2 -2
  127. package/dist/core/backupManager.js +1 -1
  128. package/dist/core/backupManager.js.map +2 -2
  129. package/dist/core/permissions/rules/planModeRule.js +1 -1
  130. package/dist/core/permissions/rules/planModeRule.js.map +1 -1
  131. package/dist/core/permissions/rules/safeModeRule.js +1 -1
  132. package/dist/core/permissions/rules/safeModeRule.js.map +1 -1
  133. package/dist/engine/AgentEngine.js +902 -0
  134. package/dist/engine/AgentEngine.js.map +7 -0
  135. package/dist/engine/EngineRegistry.js +89 -0
  136. package/dist/engine/EngineRegistry.js.map +7 -0
  137. package/dist/engine/foregroundAdapter.js +191 -0
  138. package/dist/engine/foregroundAdapter.js.map +7 -0
  139. package/dist/engine/index.js +15 -0
  140. package/dist/engine/index.js.map +7 -0
  141. package/dist/engine/types.js +1 -0
  142. package/dist/engine/types.js.map +7 -0
  143. package/dist/entrypoints/cli.js +410 -79
  144. package/dist/entrypoints/cli.js.map +3 -3
  145. package/dist/hooks/useAgentEngine.js +129 -0
  146. package/dist/hooks/useAgentEngine.js.map +7 -0
  147. package/dist/hooks/useAgentTokenStats.js +0 -16
  148. package/dist/hooks/useAgentTokenStats.js.map +2 -2
  149. package/dist/hooks/useCanUseTool.js +47 -2
  150. package/dist/hooks/useCanUseTool.js.map +2 -2
  151. package/dist/hooks/useDeferredLoading.js +4 -1
  152. package/dist/hooks/useDeferredLoading.js.map +2 -2
  153. package/dist/hooks/useIdleNotifications.js +66 -0
  154. package/dist/hooks/useIdleNotifications.js.map +7 -0
  155. package/dist/hooks/useSessionTracking.js +9 -7
  156. package/dist/hooks/useSessionTracking.js.map +2 -2
  157. package/dist/hooks/useTeamMembers.js +51 -0
  158. package/dist/hooks/useTeamMembers.js.map +7 -0
  159. package/dist/i18n/locales/en.js +77 -12
  160. package/dist/i18n/locales/en.js.map +2 -2
  161. package/dist/i18n/locales/zh-CN.js +77 -12
  162. package/dist/i18n/locales/zh-CN.js.map +2 -2
  163. package/dist/i18n/types.js.map +1 -1
  164. package/dist/messages.js.map +2 -2
  165. package/dist/permissions.js +113 -7
  166. package/dist/permissions.js.map +2 -2
  167. package/dist/query.js +135 -37
  168. package/dist/query.js.map +2 -2
  169. package/dist/screens/REPL.js +504 -361
  170. package/dist/screens/REPL.js.map +3 -3
  171. package/dist/screens/ResumeConversation.js +199 -14
  172. package/dist/screens/ResumeConversation.js.map +2 -2
  173. package/dist/services/adapters/base.js.map +1 -1
  174. package/dist/services/agentTeams/backends/headless.js +108 -0
  175. package/dist/services/agentTeams/backends/headless.js.map +7 -0
  176. package/dist/services/agentTeams/backends/inProcess.js +102 -0
  177. package/dist/services/agentTeams/backends/inProcess.js.map +7 -0
  178. package/dist/services/agentTeams/backends/resolver.js +18 -0
  179. package/dist/services/agentTeams/backends/resolver.js.map +7 -0
  180. package/dist/services/agentTeams/backends/tmux.js +168 -0
  181. package/dist/services/agentTeams/backends/tmux.js.map +7 -0
  182. package/dist/services/agentTeams/backends/types.js +1 -0
  183. package/dist/services/agentTeams/backends/types.js.map +7 -0
  184. package/dist/services/agentTeams/heartbeat.js +88 -0
  185. package/dist/services/agentTeams/heartbeat.js.map +7 -0
  186. package/dist/services/agentTeams/index.js +42 -2
  187. package/dist/services/agentTeams/index.js.map +2 -2
  188. package/dist/services/agentTeams/injectionChannel.js +105 -0
  189. package/dist/services/agentTeams/injectionChannel.js.map +7 -0
  190. package/dist/services/agentTeams/mailbox.js +410 -30
  191. package/dist/services/agentTeams/mailbox.js.map +2 -2
  192. package/dist/services/agentTeams/messageFormatter.js +80 -0
  193. package/dist/services/agentTeams/messageFormatter.js.map +7 -0
  194. package/dist/services/agentTeams/permissionDelegation.js +71 -0
  195. package/dist/services/agentTeams/permissionDelegation.js.map +7 -0
  196. package/dist/services/agentTeams/teamEvents.js +45 -0
  197. package/dist/services/agentTeams/teamEvents.js.map +7 -0
  198. package/dist/services/agentTeams/teamManager.js +251 -34
  199. package/dist/services/agentTeams/teamManager.js.map +2 -2
  200. package/dist/services/agentTeams/teamTaskStore.js +290 -61
  201. package/dist/services/agentTeams/teamTaskStore.js.map +2 -2
  202. package/dist/services/agentTeams/teammateSpawner.js +99 -18
  203. package/dist/services/agentTeams/teammateSpawner.js.map +2 -2
  204. package/dist/services/hookExecutor.js +51 -8
  205. package/dist/services/hookExecutor.js.map +2 -2
  206. package/dist/services/llm/anthropicProvider.js +56 -59
  207. package/dist/services/llm/anthropicProvider.js.map +2 -2
  208. package/dist/services/llm/dispatch.js +24 -5
  209. package/dist/services/llm/dispatch.js.map +2 -2
  210. package/dist/services/llm/openaiProvider.js +115 -136
  211. package/dist/services/llm/openaiProvider.js.map +3 -3
  212. package/dist/services/llm/types.js +89 -15
  213. package/dist/services/llm/types.js.map +2 -2
  214. package/dist/services/mcpClient.js +80 -4
  215. package/dist/services/mcpClient.js.map +2 -2
  216. package/dist/services/mintoAuth.js +299 -0
  217. package/dist/services/mintoAuth.js.map +7 -0
  218. package/dist/services/oauth.js +3 -3
  219. package/dist/services/oauth.js.map +2 -2
  220. package/dist/services/openai.js +91 -20
  221. package/dist/services/openai.js.map +2 -2
  222. package/dist/services/plugins/pluginRuntime.js +11 -5
  223. package/dist/services/plugins/pluginRuntime.js.map +2 -2
  224. package/dist/services/plugins/pluginValidation.js +4 -2
  225. package/dist/services/plugins/pluginValidation.js.map +2 -2
  226. package/dist/services/sandbox/sandboxController.js +11 -3
  227. package/dist/services/sandbox/sandboxController.js.map +2 -2
  228. package/dist/services/sessionMemoryInjector.js +77 -0
  229. package/dist/services/sessionMemoryInjector.js.map +7 -0
  230. package/dist/services/systemReminder.js +130 -8
  231. package/dist/services/systemReminder.js.map +2 -2
  232. package/dist/services/taskStore.js +199 -8
  233. package/dist/services/taskStore.js.map +3 -3
  234. package/dist/services/topicDetector.js +169 -0
  235. package/dist/services/topicDetector.js.map +7 -0
  236. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -13
  237. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
  238. package/dist/tools/BashTool/BashTool.js +51 -28
  239. package/dist/tools/BashTool/BashTool.js.map +2 -2
  240. package/dist/tools/BashTool/prompt.js +95 -118
  241. package/dist/tools/BashTool/prompt.js.map +2 -2
  242. package/dist/tools/BashTool/utils.js +39 -1
  243. package/dist/tools/BashTool/utils.js.map +2 -2
  244. package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js +121 -0
  245. package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js.map +7 -0
  246. package/dist/tools/EnterWorktreeTool/prompt.js +22 -0
  247. package/dist/tools/EnterWorktreeTool/prompt.js.map +7 -0
  248. package/dist/tools/FileEditTool/FileEditTool.js +9 -4
  249. package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
  250. package/dist/tools/FileEditTool/prompt.js +3 -7
  251. package/dist/tools/FileEditTool/prompt.js.map +2 -2
  252. package/dist/tools/FileReadTool/FileReadTool.js +125 -3
  253. package/dist/tools/FileReadTool/FileReadTool.js.map +2 -2
  254. package/dist/tools/FileReadTool/prompt.js +1 -2
  255. package/dist/tools/FileReadTool/prompt.js.map +2 -2
  256. package/dist/tools/FileWriteTool/prompt.js +3 -5
  257. package/dist/tools/FileWriteTool/prompt.js.map +2 -2
  258. package/dist/tools/GlobTool/GlobTool.js +3 -2
  259. package/dist/tools/GlobTool/GlobTool.js.map +2 -2
  260. package/dist/tools/GrepTool/GrepTool.js +16 -5
  261. package/dist/tools/GrepTool/GrepTool.js.map +2 -2
  262. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +2 -2
  263. package/dist/tools/MCPSearchTool/MCPSearchTool.js +172 -0
  264. package/dist/tools/MCPSearchTool/MCPSearchTool.js.map +7 -0
  265. package/dist/tools/MCPSearchTool/prompt.js +77 -0
  266. package/dist/tools/MCPSearchTool/prompt.js.map +7 -0
  267. package/dist/tools/MultiEditTool/prompt.js +4 -7
  268. package/dist/tools/MultiEditTool/prompt.js.map +2 -2
  269. package/dist/tools/PlanModeTool/EnterPlanModeTool.js +12 -8
  270. package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +2 -2
  271. package/dist/tools/PlanModeTool/ExitPlanModeTool.js +54 -1
  272. package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +2 -2
  273. package/dist/tools/PlanModeTool/prompt.js +23 -74
  274. package/dist/tools/PlanModeTool/prompt.js.map +2 -2
  275. package/dist/tools/SendMessageTool/SendMessageTool.js +341 -0
  276. package/dist/tools/SendMessageTool/SendMessageTool.js.map +7 -0
  277. package/dist/tools/SendMessageTool/prompt.js +44 -0
  278. package/dist/tools/SendMessageTool/prompt.js.map +7 -0
  279. package/dist/tools/TaskCreateTool/prompt.js +15 -4
  280. package/dist/tools/TaskCreateTool/prompt.js.map +2 -2
  281. package/dist/tools/TaskListTool/prompt.js +18 -3
  282. package/dist/tools/TaskListTool/prompt.js.map +2 -2
  283. package/dist/tools/TaskOutputTool/prompt.js +4 -3
  284. package/dist/tools/TaskOutputTool/prompt.js.map +2 -2
  285. package/dist/tools/TaskTool/TaskTool.js +762 -98
  286. package/dist/tools/TaskTool/TaskTool.js.map +3 -3
  287. package/dist/tools/TaskTool/constants.js +8 -2
  288. package/dist/tools/TaskTool/constants.js.map +2 -2
  289. package/dist/tools/TaskTool/prompt.js +74 -70
  290. package/dist/tools/TaskTool/prompt.js.map +2 -2
  291. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js +15 -1
  292. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js.map +2 -2
  293. package/dist/tools/TeamCreateTool/TeamCreateTool.js +129 -0
  294. package/dist/tools/TeamCreateTool/TeamCreateTool.js.map +7 -0
  295. package/dist/tools/TeamCreateTool/prompt.js +58 -0
  296. package/dist/tools/TeamCreateTool/prompt.js.map +7 -0
  297. package/dist/tools/TeamDeleteTool/TeamDeleteTool.js +151 -0
  298. package/dist/tools/TeamDeleteTool/TeamDeleteTool.js.map +7 -0
  299. package/dist/tools/TeamDeleteTool/prompt.js +16 -0
  300. package/dist/tools/TeamDeleteTool/prompt.js.map +7 -0
  301. package/dist/tools/URLFetcherTool/URLFetcherTool.js +106 -15
  302. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +2 -2
  303. package/dist/tools/URLFetcherTool/prompt.js +3 -2
  304. package/dist/tools/URLFetcherTool/prompt.js.map +2 -2
  305. package/dist/tools/WebSearchTool/WebSearchTool.js +2 -1
  306. package/dist/tools/WebSearchTool/WebSearchTool.js.map +2 -2
  307. package/dist/tools/WebSearchTool/prompt.js +5 -4
  308. package/dist/tools/WebSearchTool/prompt.js.map +2 -2
  309. package/dist/tools.js +100 -20
  310. package/dist/tools.js.map +2 -2
  311. package/dist/types/PermissionMode.js +35 -6
  312. package/dist/types/PermissionMode.js.map +2 -2
  313. package/dist/types/hooks.js +2 -0
  314. package/dist/types/hooks.js.map +2 -2
  315. package/dist/types/plugin.js +2 -0
  316. package/dist/types/plugin.js.map +3 -3
  317. package/dist/utils/CircuitBreaker.js +15 -9
  318. package/dist/utils/CircuitBreaker.js.map +2 -2
  319. package/dist/utils/agentLoader.js +249 -112
  320. package/dist/utils/agentLoader.js.map +2 -2
  321. package/dist/utils/animationManager.js +40 -3
  322. package/dist/utils/animationManager.js.map +2 -2
  323. package/dist/utils/ask.js +7 -6
  324. package/dist/utils/ask.js.map +2 -2
  325. package/dist/utils/atomicWrite.js +23 -0
  326. package/dist/utils/atomicWrite.js.map +7 -0
  327. package/dist/utils/autoCompactCore.js +73 -56
  328. package/dist/utils/autoCompactCore.js.map +2 -2
  329. package/dist/utils/autoMemoryPaths.js +89 -0
  330. package/dist/utils/autoMemoryPaths.js.map +7 -0
  331. package/dist/utils/config.js +63 -38
  332. package/dist/utils/config.js.map +2 -2
  333. package/dist/utils/configSchema.js +13 -8
  334. package/dist/utils/configSchema.js.map +2 -2
  335. package/dist/utils/credentials/index.js +14 -0
  336. package/dist/utils/credentials/index.js.map +2 -2
  337. package/dist/utils/dualPath.js +24 -0
  338. package/dist/utils/dualPath.js.map +7 -0
  339. package/dist/utils/exit.js +66 -7
  340. package/dist/utils/exit.js.map +2 -2
  341. package/dist/utils/externalEditor.js +155 -0
  342. package/dist/utils/externalEditor.js.map +7 -0
  343. package/dist/utils/fileLock.js +67 -0
  344. package/dist/utils/fileLock.js.map +7 -0
  345. package/dist/utils/format.js +24 -14
  346. package/dist/utils/format.js.map +2 -2
  347. package/dist/utils/globalErrorHandler.js +5 -96
  348. package/dist/utils/globalErrorHandler.js.map +3 -3
  349. package/dist/utils/groupHandlers/parallelTasksHandler.js +5 -3
  350. package/dist/utils/groupHandlers/parallelTasksHandler.js.map +2 -2
  351. package/dist/utils/groupHandlers/taskHandler.js +2 -2
  352. package/dist/utils/groupHandlers/taskHandler.js.map +2 -2
  353. package/dist/utils/hookManager.js +64 -6
  354. package/dist/utils/hookManager.js.map +2 -2
  355. package/dist/utils/log.js +6 -2
  356. package/dist/utils/log.js.map +2 -2
  357. package/dist/utils/markdown.js +237 -19
  358. package/dist/utils/markdown.js.map +2 -2
  359. package/dist/utils/messageContextManager.js +18 -5
  360. package/dist/utils/messageContextManager.js.map +2 -2
  361. package/dist/utils/messageGroupManager.js +1 -1
  362. package/dist/utils/messageGroupManager.js.map +2 -2
  363. package/dist/utils/messages.js +104 -46
  364. package/dist/utils/messages.js.map +2 -2
  365. package/dist/utils/model.js +2 -2
  366. package/dist/utils/model.js.map +2 -2
  367. package/dist/utils/pasteCache.js +8 -4
  368. package/dist/utils/pasteCache.js.map +2 -2
  369. package/dist/utils/pluginLoader.js +18 -0
  370. package/dist/utils/pluginLoader.js.map +2 -2
  371. package/dist/utils/secureKeyStorage.js +36 -7
  372. package/dist/utils/secureKeyStorage.js.map +2 -2
  373. package/dist/utils/simpleMode.js +7 -0
  374. package/dist/utils/simpleMode.js.map +7 -0
  375. package/dist/utils/streamingState.js +11 -1
  376. package/dist/utils/streamingState.js.map +2 -2
  377. package/dist/utils/taskDisplayUtils.js +2 -1
  378. package/dist/utils/taskDisplayUtils.js.map +2 -2
  379. package/dist/utils/teamConfig.js +2 -2
  380. package/dist/utils/teamConfig.js.map +2 -2
  381. package/dist/utils/thinking.js +6 -2
  382. package/dist/utils/thinking.js.map +3 -3
  383. package/dist/utils/tokenProgress.js +55 -0
  384. package/dist/utils/tokenProgress.js.map +7 -0
  385. package/dist/utils/toolRiskClassification.js +26 -17
  386. package/dist/utils/toolRiskClassification.js.map +2 -2
  387. package/dist/utils/tooling/toolError.js +12 -0
  388. package/dist/utils/tooling/toolError.js.map +7 -0
  389. package/dist/version.js +2 -2
  390. package/dist/version.js.map +1 -1
  391. package/package.json +10 -8
@@ -24,11 +24,6 @@ import { useTerminalSize } from "../hooks/useTerminalSize.js";
24
24
  import { getTheme } from "../utils/theme.js";
25
25
  import { BRAND_GRADIENT, SEMANTIC_COLORS } from "../constants/colors.js";
26
26
  import { getModelManager } from "../utils/model.js";
27
- import {
28
- getGlobalConfig,
29
- saveGlobalConfig,
30
- getVerboseLabel
31
- } from "../utils/config.js";
32
27
  import { setTerminalTitle, clearScreen } from "../utils/terminal.js";
33
28
  import terminalSetup, {
34
29
  isShiftEnterKeyBindingInstalled,
@@ -38,6 +33,7 @@ import { usePermissionContext } from "../context/PermissionContext.js";
38
33
  import { getHookManager } from "../utils/hookManager.js";
39
34
  import { debug as debugLogger } from "../utils/debugLogger.js";
40
35
  import { PROJECT_FILE } from "../constants/product.js";
36
+ import { openInExternalEditor, resolveEditor } from "../utils/externalEditor.js";
41
37
  import { t } from "../i18n/index.js";
42
38
  async function interpretHashCommand(input) {
43
39
  try {
@@ -69,7 +65,7 @@ _Added on ${(/* @__PURE__ */ new Date()).toLocaleString()}_`;
69
65
  }
70
66
  function getPastedTextPrompt(text) {
71
67
  const newlineCount = (text.match(/\r\n|\r|\n/g) || []).length;
72
- return `[Pasted text +${newlineCount} lines] `;
68
+ return `[Pasted text #1 +${newlineCount} lines]`;
73
69
  }
74
70
  function PromptInput({
75
71
  commands,
@@ -80,7 +76,6 @@ function PromptInput({
80
76
  onQuery,
81
77
  debug,
82
78
  verbose,
83
- verboseToggleMessage,
84
79
  messages,
85
80
  setToolJSX,
86
81
  tools,
@@ -98,19 +93,30 @@ function PromptInput({
98
93
  setForkConvoWithMessagesOnTheNextRender,
99
94
  readFileTimestamps,
100
95
  onToggleTodoPanel,
101
- onToggleVerbose,
96
+ onToggleThinkingSelector,
97
+ onToggleScreen,
98
+ onToggleShowAllInTranscript,
99
+ screen = "prompt",
102
100
  onModelChange,
103
- onRollbackConversation,
101
+ onShowRewindPanel,
104
102
  onToggleBackgroundPanel,
103
+ onToggleTeamPanel,
104
+ onCycleTeammate,
105
+ onToggleAgentView,
106
+ onKillAllAgents,
105
107
  backgroundShellCount = 0,
106
108
  isBackgroundPanelOpen = false,
107
- queuedPrompts = [],
108
- onQueuePrompt,
109
- onPopQueuedPrompt,
109
+ onInjectMessage,
110
+ onRemoveQueuedMessage,
111
+ injectionPending = false,
112
+ getQueuedUserMessages,
110
113
  onInterrupt,
111
114
  isOverlayActive = false,
112
115
  unmount,
113
- startupItems
116
+ startupItems,
117
+ teamMembers = [],
118
+ hasActiveTeam = false,
119
+ focusedAgentName
114
120
  }) {
115
121
  const [exitMessage, setExitMessage] = useState({ show: false });
116
122
  const [message, setMessage] = useState({
@@ -123,19 +129,25 @@ function PromptInput({
123
129
  const [placeholder, setPlaceholder] = useState("");
124
130
  const [cursorOffset, setCursorOffset] = useState(input.length);
125
131
  const [pastedText, setPastedText] = useState(null);
132
+ const pastedPlaceholderRef = useRef(null);
126
133
  const [ctrlDCount, setCtrlDCount] = useState(0);
127
134
  const [ctrlDTimer, setCtrlDTimer] = useState(null);
128
135
  const [escCount, setEscCount] = useState(0);
129
136
  const [escTimer, setEscTimer] = useState(null);
130
137
  const ESC_DOUBLE_TAP_WINDOW = 500;
131
- const [hotkeyMessage, setHotkeyMessage] = useState({ show: false });
138
+ const [ctrlFCount, setCtrlFCount] = useState(0);
139
+ const [ctrlFTimer, setCtrlFTimer] = useState(null);
132
140
  useEffect(() => {
133
- if (verboseToggleMessage) {
134
- setHotkeyMessage({ show: true, text: verboseToggleMessage });
135
- }
136
- }, [verboseToggleMessage]);
141
+ return () => {
142
+ if (ctrlDTimer) clearTimeout(ctrlDTimer);
143
+ if (escTimer) clearTimeout(escTimer);
144
+ if (ctrlFTimer) clearTimeout(ctrlFTimer);
145
+ };
146
+ }, [ctrlDTimer, escTimer, ctrlFTimer]);
147
+ const [hotkeyMessage, setHotkeyMessage] = useState({ show: false });
137
148
  const [showHotkeyHelp, setShowHotkeyHelp] = useState(false);
138
149
  const [backgroundIndicatorFocused, setBackgroundIndicatorFocused] = useState(false);
150
+ const queuedMessages = getQueuedUserMessages?.() ?? [];
139
151
  const { cycleMode, currentMode, getModeConfig } = usePermissionContext();
140
152
  const prevModeRef = useRef(currentMode);
141
153
  useEffect(() => {
@@ -279,17 +291,15 @@ function PromptInput({
279
291
  input
280
292
  );
281
293
  const handleHistoryUp = () => {
282
- if (!completionActive) {
283
- if (input.trim() === "" && queuedPrompts.length > 0 && onPopQueuedPrompt) {
284
- const poppedPrompt = onPopQueuedPrompt();
285
- if (poppedPrompt) {
286
- onInputChange(poppedPrompt);
287
- setCursorOffset(poppedPrompt.length);
288
- return;
289
- }
294
+ if (completionActive) return;
295
+ if (isLoading && queuedMessages.length > 0 && !input.trim()) {
296
+ const removed = onRemoveQueuedMessage?.();
297
+ if (removed) {
298
+ onInputChange(removed);
290
299
  }
291
- onHistoryUp();
300
+ return;
292
301
  }
302
+ onHistoryUp();
293
303
  };
294
304
  const handleHistoryDown = () => {
295
305
  if (!completionActive) {
@@ -303,12 +313,11 @@ function PromptInput({
303
313
  const decision = await hookManager.executeUserPromptSubmit(input2);
304
314
  if (!decision.shouldContinue) {
305
315
  if (decision.shouldAskUser) {
306
- const confirmed = confirm(
307
- decision.reason || "Hook requested approval. Continue?"
316
+ process.stderr.write(
317
+ `
318
+ \u26A0 Hook: ${decision.reason || "Hook requested pause."}
319
+ `
308
320
  );
309
- if (!confirmed) {
310
- return;
311
- }
312
321
  } else {
313
322
  setMessage({
314
323
  show: true,
@@ -388,21 +397,6 @@ function PromptInput({
388
397
  if (isDisabled) {
389
398
  return;
390
399
  }
391
- if (isLoading) {
392
- if (onQueuePrompt && input2.trim()) {
393
- onQueuePrompt(input2.trim());
394
- onInputChange("");
395
- setMessage({
396
- show: true,
397
- text: `Queued: "${input2.slice(0, 30)}${input2.length > 30 ? "..." : ""}" (${queuedPrompts.length + 1} in queue)`
398
- });
399
- setTimeout(() => setMessage({ show: false }), 2e3);
400
- }
401
- return;
402
- }
403
- if (suggestions.length > 0 && completionActive) {
404
- return;
405
- }
406
400
  const exitCommands = [
407
401
  "exit",
408
402
  "quit",
@@ -416,18 +410,35 @@ function PromptInput({
416
410
  ];
417
411
  if (exitCommands.includes(input2.trim())) {
418
412
  exit();
413
+ return;
414
+ }
415
+ if (isLoading) {
416
+ if (onInjectMessage && input2.trim()) {
417
+ onInjectMessage(input2.trim());
418
+ onInputChange("");
419
+ }
420
+ return;
421
+ }
422
+ if (suggestions.length > 0 && completionActive) {
423
+ return;
419
424
  }
420
425
  let finalInput = input2;
421
426
  if (pastedText) {
422
- const pastedPrompt = getPastedTextPrompt(pastedText);
423
- if (finalInput.includes(pastedPrompt)) {
424
- finalInput = finalInput.replace(pastedPrompt, pastedText);
427
+ const storedPlaceholder = pastedPlaceholderRef.current;
428
+ if (storedPlaceholder && finalInput.includes(storedPlaceholder)) {
429
+ finalInput = finalInput.replace(storedPlaceholder, pastedText);
430
+ } else {
431
+ const pastedPrompt = getPastedTextPrompt(pastedText);
432
+ if (finalInput.includes(pastedPrompt)) {
433
+ finalInput = finalInput.replace(pastedPrompt, pastedText);
434
+ }
425
435
  }
426
436
  }
427
437
  onInputChange("");
428
438
  onModeChange("prompt");
429
439
  setPastedImage(null);
430
440
  setPastedText(null);
441
+ pastedPlaceholderRef.current = null;
431
442
  onSubmitCountChange((_) => _ + 1);
432
443
  setIsLoading(true);
433
444
  const newAbortController = new AbortController();
@@ -486,6 +497,7 @@ function PromptInput({
486
497
  } else {
487
498
  pastedPrompt = getPastedTextPrompt(text);
488
499
  }
500
+ pastedPlaceholderRef.current = pastedPrompt;
489
501
  const newInput = input.slice(0, cursorOffset) + pastedPrompt + input.slice(cursorOffset);
490
502
  onInputChange(newInput);
491
503
  setCursorOffset(cursorOffset + pastedPrompt.length);
@@ -554,20 +566,11 @@ function PromptInput({
554
566
  return true;
555
567
  }
556
568
  if (key.ctrl && inputChar === "o") {
557
- const newVerbose = !verbose;
558
- const config = getGlobalConfig();
559
- saveGlobalConfig({
560
- ...config,
561
- verbose: newVerbose
562
- });
563
- setHotkeyMessage({
564
- show: true,
565
- text: `${getVerboseLabel(newVerbose)} (Ctrl+O)`
566
- });
567
- setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
568
- if (onToggleVerbose) {
569
- onToggleVerbose(newVerbose);
570
- }
569
+ onToggleScreen?.();
570
+ return true;
571
+ }
572
+ if (key.ctrl && inputChar === "e" && screen === "transcript") {
573
+ onToggleShowAllInTranscript?.();
571
574
  return true;
572
575
  }
573
576
  if (key.ctrl && inputChar === "t") {
@@ -608,6 +611,39 @@ function PromptInput({
608
611
  onSubmit(bashCommand);
609
612
  return true;
610
613
  }
614
+ if (key.ctrl && inputChar === "g") {
615
+ if (isLoading) return true;
616
+ const { name: editorName } = resolveEditor();
617
+ setHotkeyMessage({
618
+ show: true,
619
+ text: t("prompts.openingEditor", { editor: editorName })
620
+ });
621
+ setTimeout(() => {
622
+ try {
623
+ const result = openInExternalEditor(input);
624
+ if (result !== null) {
625
+ onInputChange(result);
626
+ setCursorOffset(result.length);
627
+ setHotkeyMessage({
628
+ show: true,
629
+ text: t("prompts.editorDone")
630
+ });
631
+ } else {
632
+ setHotkeyMessage({
633
+ show: true,
634
+ text: t("prompts.editorNoChange")
635
+ });
636
+ }
637
+ } catch {
638
+ setHotkeyMessage({
639
+ show: true,
640
+ text: t("prompts.editorFailed", { editor: editorName })
641
+ });
642
+ }
643
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
644
+ }, 0);
645
+ return true;
646
+ }
611
647
  if (key.ctrl && (inputChar === "?" || inputChar === "/")) {
612
648
  setShowHotkeyHelp((prev) => !prev);
613
649
  return true;
@@ -692,18 +728,8 @@ function PromptInput({
692
728
  if (inputChar === "" && (key.escape || key.backspace || key.delete)) {
693
729
  onModeChange("prompt");
694
730
  }
695
- if (key.tab && !key.shift && !completionActive) {
696
- const config = getGlobalConfig();
697
- const newThinking = !config.thinking;
698
- saveGlobalConfig({
699
- ...config,
700
- thinking: newThinking
701
- });
702
- setMessage({
703
- show: true,
704
- text: newThinking ? t("prompts.thinkingModeEnabled") : t("prompts.thinkingModeDisabled")
705
- });
706
- setTimeout(() => setMessage({ show: false }), 2e3);
731
+ if (key.meta && inputChar === "t") {
732
+ onToggleThinkingSelector?.();
707
733
  return true;
708
734
  }
709
735
  if (key.shift && key.tab) {
@@ -716,11 +742,53 @@ function PromptInput({
716
742
  );
717
743
  const handleSpecialKey = useCallback(
718
744
  (inputChar, key) => {
745
+ if (key.downArrow && key.shift && !key.ctrl && !key.meta) {
746
+ onToggleTeamPanel?.();
747
+ return true;
748
+ }
749
+ if (key.upArrow && key.shift && !key.ctrl && !key.meta) {
750
+ onToggleTeamPanel?.();
751
+ return true;
752
+ }
753
+ if (key.ctrl && inputChar === "j") {
754
+ if (hasActiveTeam && onToggleAgentView) {
755
+ onToggleAgentView();
756
+ }
757
+ return true;
758
+ }
759
+ if (key.ctrl && inputChar === "f") {
760
+ if (hasActiveTeam && onKillAllAgents) {
761
+ setCtrlFCount((prev) => prev + 1);
762
+ if (ctrlFTimer) clearTimeout(ctrlFTimer);
763
+ const timer = setTimeout(() => setCtrlFCount(0), 2e3);
764
+ setCtrlFTimer(timer);
765
+ if (ctrlFCount >= 1) {
766
+ setCtrlFCount(0);
767
+ onKillAllAgents();
768
+ setHotkeyMessage({
769
+ show: true,
770
+ text: t("prompts.allAgentsKilled")
771
+ });
772
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
773
+ } else {
774
+ setHotkeyMessage({
775
+ show: true,
776
+ text: t("prompts.pressCtrlFAgain")
777
+ });
778
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
779
+ }
780
+ return true;
781
+ }
782
+ return false;
783
+ }
719
784
  if (key.shift && (inputChar === "M" || inputChar === "m") && input.length === 0) {
720
785
  handleQuickModelSwitch();
721
786
  return true;
722
787
  }
723
788
  if (key.escape) {
789
+ if (completionActive) {
790
+ return false;
791
+ }
724
792
  const newEscCount = escCount + 1;
725
793
  setEscCount(newEscCount);
726
794
  if (escTimer) clearTimeout(escTimer);
@@ -728,38 +796,31 @@ function PromptInput({
728
796
  setEscTimer(timer);
729
797
  if (newEscCount >= 2) {
730
798
  setEscCount(0);
731
- if (input.length > 0) {
732
- onInputChange("");
733
- setHotkeyMessage({
734
- show: true,
735
- text: t("prompts.inputClearedEscEsc")
736
- });
737
- setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
738
- return true;
739
- } else if (isLoading && onInterrupt) {
740
- onInterrupt();
741
- setHotkeyMessage({
742
- show: true,
743
- text: t("prompts.interruptedEscEsc")
744
- });
745
- setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
746
- return true;
747
- }
799
+ onShowRewindPanel?.();
800
+ return true;
801
+ }
802
+ if (input.length > 0) {
803
+ onInputChange("");
804
+ setHotkeyMessage({
805
+ show: true,
806
+ text: t("prompts.inputClearedEsc")
807
+ });
808
+ setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
809
+ } else if (isLoading && onInterrupt) {
810
+ onInterrupt();
811
+ setHotkeyMessage({
812
+ show: true,
813
+ text: t("prompts.interruptedEsc")
814
+ });
815
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
748
816
  } else {
749
- if (input.length > 0) {
750
- setHotkeyMessage({
751
- show: true,
752
- text: t("prompts.pressEscAgainClear")
753
- });
754
- } else if (isLoading) {
755
- setHotkeyMessage({
756
- show: true,
757
- text: t("prompts.pressEscAgainInterrupt")
758
- });
759
- }
817
+ setHotkeyMessage({
818
+ show: true,
819
+ text: t("prompts.escEscToRollback")
820
+ });
760
821
  setTimeout(() => setHotkeyMessage({ show: false }), 1500);
761
- return true;
762
822
  }
823
+ return true;
763
824
  }
764
825
  return false;
765
826
  },
@@ -769,8 +830,17 @@ function PromptInput({
769
830
  input.length,
770
831
  onInputChange,
771
832
  onInterrupt,
833
+ onShowRewindPanel,
834
+ onToggleTeamPanel,
835
+ onCycleTeammate,
836
+ onToggleAgentView,
837
+ onKillAllAgents,
838
+ hasActiveTeam,
839
+ completionActive,
772
840
  escCount,
773
- escTimer
841
+ escTimer,
842
+ ctrlFCount,
843
+ ctrlFTimer
774
844
  ]
775
845
  );
776
846
  const tokenUsage = useMemo(() => countTokens(messages), [messages]);
@@ -797,7 +867,8 @@ function PromptInput({
797
867
  HotkeyHelpPanel,
798
868
  {
799
869
  isVisible: showHotkeyHelp,
800
- onClose: () => setShowHotkeyHelp(false)
870
+ onClose: () => setShowHotkeyHelp(false),
871
+ hasActiveTeam
801
872
  }
802
873
  ), historySearch.isActive && /* @__PURE__ */ React.createElement(
803
874
  HistorySearchOverlay,
@@ -806,7 +877,7 @@ function PromptInput({
806
877
  results: historySearch.filteredResults,
807
878
  selectedIndex: historySearch.selectedIndex
808
879
  }
809
- ), modelInfo && /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u25C6"), " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, modelInfo.name), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\xB7 ", Math.round(modelInfo.currentTokens / 1e3), "k /", " ", Math.round(modelInfo.contextLength / 1e3), "k"))), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginTop: 1 }, /* @__PURE__ */ React.createElement(Box, { paddingLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2500\u2500 ", t("ui.hints.queued"), " (", queuedPrompts.length, ")"), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\xB7 ", t("ui.hints.willRunAfter"), " \xB7", " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, "\u2191"), " ", t("ui.hints.toEdit"), " \u2500\u2500")), queuedPrompts.map((prompt, index) => /* @__PURE__ */ React.createElement(Box, { key: index, paddingLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u25C7 "), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, prompt.length > 60 ? prompt.slice(0, 60) + "..." : prompt)))), /* @__PURE__ */ React.createElement(
880
+ ), modelInfo && /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u25C6"), " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.secondary }, modelInfo.name), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", "\xB7 ", Math.round(modelInfo.currentTokens / 1e3), "k /", " ", Math.round(modelInfo.contextLength / 1e3), "k"))), isLoading && queuedMessages.length > 0 && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", paddingLeft: 2, marginTop: 0 }, queuedMessages.map((msg, i) => /* @__PURE__ */ React.createElement(Box, { key: i }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.START }, "\u276F"), " ", msg)))), /* @__PURE__ */ React.createElement(
810
881
  Box,
811
882
  {
812
883
  alignItems: "flex-start",
@@ -818,7 +889,7 @@ function PromptInput({
818
889
  borderColor: isOverlayActive ? SEMANTIC_COLORS.muted : mode === "bash" ? SEMANTIC_COLORS.running : mode === "koding" ? SEMANTIC_COLORS.info : BRAND_GRADIENT.START,
819
890
  borderDimColor: false,
820
891
  borderStyle: "single",
821
- marginTop: queuedPrompts.length > 0 ? 0 : 1,
892
+ marginTop: 1,
822
893
  width: "100%"
823
894
  },
824
895
  /* @__PURE__ */ React.createElement(
@@ -843,20 +914,20 @@ function PromptInput({
843
914
  TextInput,
844
915
  {
845
916
  multiline: true,
846
- focus: !isBackgroundPanelOpen && !isOverlayActive && (!isLoading || !!onQueuePrompt),
917
+ focus: !isBackgroundPanelOpen && !isOverlayActive && (!isLoading || !!onInjectMessage),
847
918
  onSubmit,
848
919
  onChange,
849
920
  value: input,
850
921
  onHistoryUp: handleHistoryUp,
851
922
  onHistoryDown: handleHistoryDown,
852
923
  onHistoryReset: () => resetHistory(),
853
- placeholder: submitCount > 0 ? void 0 : placeholder,
924
+ placeholder: isLoading && queuedMessages.length > 0 ? t("ui.hints.pressUpToEditQueue") : focusedAgentName ? `Message @${focusedAgentName}...` : submitCount > 0 ? void 0 : placeholder,
854
925
  onExit: () => process.exit(0),
855
926
  onExitMessage: (show, key) => setExitMessage({ show, key }),
856
927
  onMessage: (show, text) => setMessage({ show, text }),
857
928
  onImagePaste,
858
929
  columns: textInputColumns,
859
- isDimmed: isDisabled || isLoading && !onQueuePrompt,
930
+ isDimmed: isDisabled || isLoading && !onInjectMessage,
860
931
  disableCursorMovementForUpDownKeys: completionActive,
861
932
  cursorOffset,
862
933
  onChangeCursorOffset: setCursorOffset,
@@ -915,7 +986,7 @@ function PromptInput({
915
986
  t("ui.hints.backgroundTasks", {
916
987
  count: backgroundShellCount
917
988
  })
918
- ), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\xB7 \u{1F4CB} ", queuedPrompts.length, " ", t("ui.hints.queued")))
989
+ ), injectionPending && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\xB7 ", t("ui.hints.injectionPending")), hasActiveTeam && teamMembers.filter((m) => m.status !== "stopped").length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\xB7", " ", teamMembers.filter((m) => m.status !== "stopped").map((m) => `@${m.name}`).join(" "), "\xB7 ", teamMembers.filter((m) => m.status === "working").length, " ", "active \xB7 shift+\u2193 to expand"))
919
990
  ) : (
920
991
  // Normal mode: context-aware hints with 0.1.7 style
921
992
  /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ContextAwareHints, { context: inputContext, compact: true }), backgroundShellCount > 0 && /* @__PURE__ */ React.createElement(
@@ -929,7 +1000,7 @@ function PromptInput({
929
1000
  t("ui.hints.backgroundTasks", {
930
1001
  count: backgroundShellCount
931
1002
  })
932
- ), queuedPrompts.length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2502 \u{1F4CB} ", queuedPrompts.length, " ", t("ui.hints.queued")), isLoading && onQueuePrompt && queuedPrompts.length === 0 && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "\u2502 ", t("ui.hints.typeToQueue")))
1003
+ ), injectionPending && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2502 ", t("ui.hints.injectionPending")), hasActiveTeam && teamMembers.filter((m) => m.status !== "stopped").length > 0 && /* @__PURE__ */ React.createElement(Text, { color: BRAND_GRADIENT.MIDDLE }, "\u2502", " ", teamMembers.filter((m) => m.status !== "stopped").map((m) => `@${m.name}`).join(" "), "\xB7 ", teamMembers.filter((m) => m.status === "working").length, " ", "active \xB7 shift+\u2193 to expand"))
933
1004
  )),
934
1005
  /* @__PURE__ */ React.createElement(
935
1006
  SentryErrorBoundary,
@@ -988,7 +1059,7 @@ function PromptInput({
988
1059
  var PromptInput_default = memo(PromptInput);
989
1060
  function exit() {
990
1061
  setTerminalTitle("");
991
- process.exit(0);
1062
+ import("../utils/exit.js").then(({ gracefulExit }) => gracefulExit(0));
992
1063
  }
993
1064
  export {
994
1065
  PromptInput_default as default