@within-7/minto 0.4.2 → 0.4.3

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 (1263) hide show
  1. package/cli.cjs +32 -154
  2. package/cli.js +3255 -0
  3. package/package.json +21 -38
  4. package/scripts/postinstall.cjs +19 -136
  5. package/vendor/ripgrep/arm64-linux/rg +0 -0
  6. package/vendor/ripgrep/x64-darwin/rg +0 -0
  7. package/vendor/ripgrep/x64-linux/rg +0 -0
  8. package/vendor/ripgrep/x64-win32/rg.exe +0 -0
  9. package/dist/Tool.js +0 -46
  10. package/dist/Tool.js.map +0 -7
  11. package/dist/commands/agents/AgentsCommand.js +0 -2170
  12. package/dist/commands/agents/AgentsCommand.js.map +0 -7
  13. package/dist/commands/agents/constants.js +0 -58
  14. package/dist/commands/agents/constants.js.map +0 -7
  15. package/dist/commands/agents/index.js +0 -37
  16. package/dist/commands/agents/index.js.map +0 -7
  17. package/dist/commands/agents/types.js +0 -11
  18. package/dist/commands/agents/types.js.map +0 -7
  19. package/dist/commands/agents/utils/fileOperations.js +0 -245
  20. package/dist/commands/agents/utils/fileOperations.js.map +0 -7
  21. package/dist/commands/agents/utils/index.js +0 -23
  22. package/dist/commands/agents/utils/index.js.map +0 -7
  23. package/dist/commands/approvedTools.js +0 -36
  24. package/dist/commands/approvedTools.js.map +0 -7
  25. package/dist/commands/bug.js +0 -88
  26. package/dist/commands/bug.js.map +0 -7
  27. package/dist/commands/clear.js +0 -41
  28. package/dist/commands/clear.js.map +0 -7
  29. package/dist/commands/compact.js +0 -119
  30. package/dist/commands/compact.js.map +0 -7
  31. package/dist/commands/config.js +0 -20
  32. package/dist/commands/config.js.map +0 -7
  33. package/dist/commands/context.js +0 -118
  34. package/dist/commands/context.js.map +0 -7
  35. package/dist/commands/cost.js +0 -19
  36. package/dist/commands/cost.js.map +0 -7
  37. package/dist/commands/ctx_viz.js +0 -193
  38. package/dist/commands/ctx_viz.js.map +0 -7
  39. package/dist/commands/doctor.js +0 -171
  40. package/dist/commands/doctor.js.map +0 -7
  41. package/dist/commands/effort.js +0 -87
  42. package/dist/commands/effort.js.map +0 -7
  43. package/dist/commands/export.js +0 -747
  44. package/dist/commands/export.js.map +0 -7
  45. package/dist/commands/help.js +0 -20
  46. package/dist/commands/help.js.map +0 -7
  47. package/dist/commands/ide.js +0 -18
  48. package/dist/commands/ide.js.map +0 -7
  49. package/dist/commands/init.js +0 -38
  50. package/dist/commands/init.js.map +0 -7
  51. package/dist/commands/language.js +0 -110
  52. package/dist/commands/language.js.map +0 -7
  53. package/dist/commands/login.js +0 -128
  54. package/dist/commands/login.js.map +0 -7
  55. package/dist/commands/mcp-interactive.js +0 -485
  56. package/dist/commands/mcp-interactive.js.map +0 -7
  57. package/dist/commands/memory.js +0 -119
  58. package/dist/commands/memory.js.map +0 -7
  59. package/dist/commands/model.js +0 -497
  60. package/dist/commands/model.js.map +0 -7
  61. package/dist/commands/new.js +0 -56
  62. package/dist/commands/new.js.map +0 -7
  63. package/dist/commands/outputStyle.js +0 -64
  64. package/dist/commands/outputStyle.js.map +0 -7
  65. package/dist/commands/permissions.js +0 -113
  66. package/dist/commands/permissions.js.map +0 -7
  67. package/dist/commands/plugin/AddMarketplaceForm.js +0 -91
  68. package/dist/commands/plugin/AddMarketplaceForm.js.map +0 -7
  69. package/dist/commands/plugin/ConfirmDialog.js +0 -84
  70. package/dist/commands/plugin/ConfirmDialog.js.map +0 -7
  71. package/dist/commands/plugin/ErrorView.js +0 -34
  72. package/dist/commands/plugin/ErrorView.js.map +0 -7
  73. package/dist/commands/plugin/InstalledPluginsByMarketplace.js +0 -152
  74. package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +0 -7
  75. package/dist/commands/plugin/InstalledPluginsManager.js +0 -102
  76. package/dist/commands/plugin/InstalledPluginsManager.js.map +0 -7
  77. package/dist/commands/plugin/LoadingView.js +0 -14
  78. package/dist/commands/plugin/LoadingView.js.map +0 -7
  79. package/dist/commands/plugin/MainMenu.js +0 -67
  80. package/dist/commands/plugin/MainMenu.js.map +0 -7
  81. package/dist/commands/plugin/MarketplaceManager.js +0 -201
  82. package/dist/commands/plugin/MarketplaceManager.js.map +0 -7
  83. package/dist/commands/plugin/MarketplaceSelector.js +0 -124
  84. package/dist/commands/plugin/MarketplaceSelector.js.map +0 -7
  85. package/dist/commands/plugin/PlaceholderScreen.js +0 -31
  86. package/dist/commands/plugin/PlaceholderScreen.js.map +0 -7
  87. package/dist/commands/plugin/PluginBrowser.js +0 -183
  88. package/dist/commands/plugin/PluginBrowser.js.map +0 -7
  89. package/dist/commands/plugin/PluginDetailsInstall.js +0 -159
  90. package/dist/commands/plugin/PluginDetailsInstall.js.map +0 -7
  91. package/dist/commands/plugin/PluginDetailsManage.js +0 -210
  92. package/dist/commands/plugin/PluginDetailsManage.js.map +0 -7
  93. package/dist/commands/plugin/components.js +0 -16
  94. package/dist/commands/plugin/components.js.map +0 -7
  95. package/dist/commands/plugin/example-usage.js +0 -63
  96. package/dist/commands/plugin/example-usage.js.map +0 -7
  97. package/dist/commands/plugin/types.js +0 -1
  98. package/dist/commands/plugin/types.js.map +0 -7
  99. package/dist/commands/plugin/utils.js +0 -109
  100. package/dist/commands/plugin/utils.js.map +0 -7
  101. package/dist/commands/plugin.js +0 -1410
  102. package/dist/commands/plugin.js.map +0 -7
  103. package/dist/commands/quit.js +0 -20
  104. package/dist/commands/quit.js.map +0 -7
  105. package/dist/commands/refreshCommands.js +0 -48
  106. package/dist/commands/refreshCommands.js.map +0 -7
  107. package/dist/commands/resume.js +0 -71
  108. package/dist/commands/resume.js.map +0 -7
  109. package/dist/commands/review.js +0 -51
  110. package/dist/commands/review.js.map +0 -7
  111. package/dist/commands/sandbox.js +0 -203
  112. package/dist/commands/sandbox.js.map +0 -7
  113. package/dist/commands/sessions.js +0 -224
  114. package/dist/commands/sessions.js.map +0 -7
  115. package/dist/commands/setup.js +0 -653
  116. package/dist/commands/setup.js.map +0 -7
  117. package/dist/commands/stats.js +0 -292
  118. package/dist/commands/stats.js.map +0 -7
  119. package/dist/commands/status.js +0 -127
  120. package/dist/commands/status.js.map +0 -7
  121. package/dist/commands/tasks.js +0 -108
  122. package/dist/commands/tasks.js.map +0 -7
  123. package/dist/commands/terminalSetup.js +0 -174
  124. package/dist/commands/terminalSetup.js.map +0 -7
  125. package/dist/commands/todos.js +0 -123
  126. package/dist/commands/todos.js.map +0 -7
  127. package/dist/commands/undo.js +0 -227
  128. package/dist/commands/undo.js.map +0 -7
  129. package/dist/commands/vim.js +0 -22
  130. package/dist/commands/vim.js.map +0 -7
  131. package/dist/commands.js +0 -130
  132. package/dist/commands.js.map +0 -7
  133. package/dist/components/AgentDetailView.js +0 -126
  134. package/dist/components/AgentDetailView.js.map +0 -7
  135. package/dist/components/AgentResponseBlock.js +0 -41
  136. package/dist/components/AgentResponseBlock.js.map +0 -7
  137. package/dist/components/AgentThinkingBlock.js +0 -32
  138. package/dist/components/AgentThinkingBlock.js.map +0 -7
  139. package/dist/components/AgentViewBanner.js +0 -22
  140. package/dist/components/AgentViewBanner.js.map +0 -7
  141. package/dist/components/AsciiLogo.js +0 -18
  142. package/dist/components/AsciiLogo.js.map +0 -7
  143. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +0 -142
  144. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +0 -7
  145. package/dist/components/AskUserQuestionDialog/QuestionView.js +0 -55
  146. package/dist/components/AskUserQuestionDialog/QuestionView.js.map +0 -7
  147. package/dist/components/AskUserQuestionDialog/index.js +0 -7
  148. package/dist/components/AskUserQuestionDialog/index.js.map +0 -7
  149. package/dist/components/BackgroundTasksPanel.js +0 -177
  150. package/dist/components/BackgroundTasksPanel.js.map +0 -7
  151. package/dist/components/BashStreamingProgress.js +0 -24
  152. package/dist/components/BashStreamingProgress.js.map +0 -7
  153. package/dist/components/CollapsibleHint.js +0 -15
  154. package/dist/components/CollapsibleHint.js.map +0 -7
  155. package/dist/components/Config.js +0 -181
  156. package/dist/components/Config.js.map +0 -7
  157. package/dist/components/ConsoleOAuthFlow.js +0 -179
  158. package/dist/components/ConsoleOAuthFlow.js.map +0 -7
  159. package/dist/components/Cost.js +0 -14
  160. package/dist/components/Cost.js.map +0 -7
  161. package/dist/components/CostThresholdDialog.js +0 -38
  162. package/dist/components/CostThresholdDialog.js.map +0 -7
  163. package/dist/components/CustomSelect/option-map.js +0 -32
  164. package/dist/components/CustomSelect/option-map.js.map +0 -7
  165. package/dist/components/CustomSelect/select-option.js +0 -37
  166. package/dist/components/CustomSelect/select-option.js.map +0 -7
  167. package/dist/components/CustomSelect/select.js +0 -64
  168. package/dist/components/CustomSelect/select.js.map +0 -7
  169. package/dist/components/CustomSelect/theme.js +0 -1
  170. package/dist/components/CustomSelect/theme.js.map +0 -7
  171. package/dist/components/CustomSelect/use-select-state.js +0 -220
  172. package/dist/components/CustomSelect/use-select-state.js.map +0 -7
  173. package/dist/components/CustomSelect/use-select.js +0 -21
  174. package/dist/components/CustomSelect/use-select.js.map +0 -7
  175. package/dist/components/FallbackToolUseRejectedMessage.js +0 -11
  176. package/dist/components/FallbackToolUseRejectedMessage.js.map +0 -7
  177. package/dist/components/FileEditToolUpdatedMessage.js +0 -32
  178. package/dist/components/FileEditToolUpdatedMessage.js.map +0 -7
  179. package/dist/components/HeaderBar.js +0 -63
  180. package/dist/components/HeaderBar.js.map +0 -7
  181. package/dist/components/Help.js +0 -185
  182. package/dist/components/Help.js.map +0 -7
  183. package/dist/components/HighlightedCode.js +0 -31
  184. package/dist/components/HighlightedCode.js.map +0 -7
  185. package/dist/components/HistorySearchOverlay.js +0 -49
  186. package/dist/components/HistorySearchOverlay.js.map +0 -7
  187. package/dist/components/HotkeyHelpPanel.js +0 -154
  188. package/dist/components/HotkeyHelpPanel.js.map +0 -7
  189. package/dist/components/IdleNotificationBar.js +0 -10
  190. package/dist/components/IdleNotificationBar.js.map +0 -7
  191. package/dist/components/InfoPanel/InfoPanel.js +0 -123
  192. package/dist/components/InfoPanel/InfoPanel.js.map +0 -7
  193. package/dist/components/InfoPanel/index.js +0 -5
  194. package/dist/components/InfoPanel/index.js.map +0 -7
  195. package/dist/components/InfoPanel/types.js +0 -1
  196. package/dist/components/InfoPanel/types.js.map +0 -7
  197. package/dist/components/InteractionRoundBlock.js +0 -56
  198. package/dist/components/InteractionRoundBlock.js.map +0 -7
  199. package/dist/components/InvalidConfigDialog.js +0 -84
  200. package/dist/components/InvalidConfigDialog.js.map +0 -7
  201. package/dist/components/Link.js +0 -18
  202. package/dist/components/Link.js.map +0 -7
  203. package/dist/components/LogSelector.js +0 -50
  204. package/dist/components/LogSelector.js.map +0 -7
  205. package/dist/components/Logo.js +0 -55
  206. package/dist/components/Logo.js.map +0 -7
  207. package/dist/components/MCPServerApprovalDialog.js +0 -81
  208. package/dist/components/MCPServerApprovalDialog.js.map +0 -7
  209. package/dist/components/MCPServerDialogCopy.js +0 -12
  210. package/dist/components/MCPServerDialogCopy.js.map +0 -7
  211. package/dist/components/MCPServerMultiselectDialog.js +0 -82
  212. package/dist/components/MCPServerMultiselectDialog.js.map +0 -7
  213. package/dist/components/Message.js +0 -162
  214. package/dist/components/Message.js.map +0 -7
  215. package/dist/components/MessageResponse.js +0 -9
  216. package/dist/components/MessageResponse.js.map +0 -7
  217. package/dist/components/MessageSelector.js +0 -127
  218. package/dist/components/MessageSelector.js.map +0 -7
  219. package/dist/components/ModeIndicator.js +0 -39
  220. package/dist/components/ModeIndicator.js.map +0 -7
  221. package/dist/components/ModelConfig.js +0 -223
  222. package/dist/components/ModelConfig.js.map +0 -7
  223. package/dist/components/ModelListManager.js +0 -142
  224. package/dist/components/ModelListManager.js.map +0 -7
  225. package/dist/components/ModelSelector/BrandTextInput.js +0 -43
  226. package/dist/components/ModelSelector/BrandTextInput.js.map +0 -7
  227. package/dist/components/ModelSelector/ModelSelector.js +0 -2103
  228. package/dist/components/ModelSelector/ModelSelector.js.map +0 -7
  229. package/dist/components/ModelSelector/ScreenContainer.js +0 -27
  230. package/dist/components/ModelSelector/ScreenContainer.js.map +0 -7
  231. package/dist/components/ModelSelector/WizardContainer.js +0 -45
  232. package/dist/components/ModelSelector/WizardContainer.js.map +0 -7
  233. package/dist/components/ModelSelector/constants.js +0 -37
  234. package/dist/components/ModelSelector/constants.js.map +0 -7
  235. package/dist/components/ModelSelector/hooks/index.js +0 -5
  236. package/dist/components/ModelSelector/hooks/index.js.map +0 -7
  237. package/dist/components/ModelSelector/hooks/useEscapeNavigation.js +0 -21
  238. package/dist/components/ModelSelector/hooks/useEscapeNavigation.js.map +0 -7
  239. package/dist/components/ModelSelector/index.js +0 -15
  240. package/dist/components/ModelSelector/index.js.map +0 -7
  241. package/dist/components/ModelSelector/types.js +0 -1
  242. package/dist/components/ModelSelector/types.js.map +0 -7
  243. package/dist/components/Onboarding.js +0 -159
  244. package/dist/components/Onboarding.js.map +0 -7
  245. package/dist/components/OperationSummary.js +0 -130
  246. package/dist/components/OperationSummary.js.map +0 -7
  247. package/dist/components/PressEnterToContinue.js +0 -10
  248. package/dist/components/PressEnterToContinue.js.map +0 -7
  249. package/dist/components/ProgressBar.js +0 -74
  250. package/dist/components/ProgressBar.js.map +0 -7
  251. package/dist/components/ProjectOnboarding.js +0 -99
  252. package/dist/components/ProjectOnboarding.js.map +0 -7
  253. package/dist/components/PromptInput.js +0 -1067
  254. package/dist/components/PromptInput.js.map +0 -7
  255. package/dist/components/PulseLabel.js +0 -44
  256. package/dist/components/PulseLabel.js.map +0 -7
  257. package/dist/components/QuitSummary.js +0 -88
  258. package/dist/components/QuitSummary.js.map +0 -7
  259. package/dist/components/RequestStatusIndicator.js +0 -194
  260. package/dist/components/RequestStatusIndicator.js.map +0 -7
  261. package/dist/components/RewindPanel.js +0 -272
  262. package/dist/components/RewindPanel.js.map +0 -7
  263. package/dist/components/SensitiveFileWarning.js +0 -35
  264. package/dist/components/SensitiveFileWarning.js.map +0 -7
  265. package/dist/components/SentryErrorBoundary.js +0 -27
  266. package/dist/components/SentryErrorBoundary.js.map +0 -7
  267. package/dist/components/SimpleSelector/SimpleSelector.js +0 -154
  268. package/dist/components/SimpleSelector/SimpleSelector.js.map +0 -7
  269. package/dist/components/SimpleSelector/index.js +0 -5
  270. package/dist/components/SimpleSelector/index.js.map +0 -7
  271. package/dist/components/SimpleSelector/types.js +0 -1
  272. package/dist/components/SimpleSelector/types.js.map +0 -7
  273. package/dist/components/Spinner.js +0 -174
  274. package/dist/components/Spinner.js.map +0 -7
  275. package/dist/components/SpinnerSymbol.js +0 -72
  276. package/dist/components/SpinnerSymbol.js.map +0 -7
  277. package/dist/components/StartupStatus.js +0 -57
  278. package/dist/components/StartupStatus.js.map +0 -7
  279. package/dist/components/StatusOverlayContent.js +0 -21
  280. package/dist/components/StatusOverlayContent.js.map +0 -7
  281. package/dist/components/StreamingBashOutput.js +0 -71
  282. package/dist/components/StreamingBashOutput.js.map +0 -7
  283. package/dist/components/StreamingTextPreview.js +0 -29
  284. package/dist/components/StreamingTextPreview.js.map +0 -7
  285. package/dist/components/StructuredDiff.js +0 -146
  286. package/dist/components/StructuredDiff.js.map +0 -7
  287. package/dist/components/SubagentBlock.js +0 -197
  288. package/dist/components/SubagentBlock.js.map +0 -7
  289. package/dist/components/SubagentManager.js +0 -65
  290. package/dist/components/SubagentManager.js.map +0 -7
  291. package/dist/components/SubagentProgress.js +0 -123
  292. package/dist/components/SubagentProgress.js.map +0 -7
  293. package/dist/components/SubagentStatusMarker.js +0 -37
  294. package/dist/components/SubagentStatusMarker.js.map +0 -7
  295. package/dist/components/TabbedListView/ScrollableList.js +0 -117
  296. package/dist/components/TabbedListView/ScrollableList.js.map +0 -7
  297. package/dist/components/TabbedListView/SearchInput.js +0 -23
  298. package/dist/components/TabbedListView/SearchInput.js.map +0 -7
  299. package/dist/components/TabbedListView/TabBar.js +0 -25
  300. package/dist/components/TabbedListView/TabBar.js.map +0 -7
  301. package/dist/components/TabbedListView/TabbedListView.js +0 -292
  302. package/dist/components/TabbedListView/TabbedListView.js.map +0 -7
  303. package/dist/components/TabbedListView/index.js +0 -11
  304. package/dist/components/TabbedListView/index.js.map +0 -7
  305. package/dist/components/TabbedListView/types.js +0 -1
  306. package/dist/components/TabbedListView/types.js.map +0 -7
  307. package/dist/components/TaskCard.js +0 -176
  308. package/dist/components/TaskCard.js.map +0 -7
  309. package/dist/components/TeamMemberPanel.js +0 -107
  310. package/dist/components/TeamMemberPanel.js.map +0 -7
  311. package/dist/components/TextInput.js +0 -108
  312. package/dist/components/TextInput.js.map +0 -7
  313. package/dist/components/ThinkingSelector.js +0 -84
  314. package/dist/components/ThinkingSelector.js.map +0 -7
  315. package/dist/components/TimelineRenderer.js +0 -31
  316. package/dist/components/TimelineRenderer.js.map +0 -7
  317. package/dist/components/TitledDivider.js +0 -26
  318. package/dist/components/TitledDivider.js.map +0 -7
  319. package/dist/components/TodoChangeBlock.js +0 -30
  320. package/dist/components/TodoChangeBlock.js.map +0 -7
  321. package/dist/components/TodoChangeLine.js +0 -22
  322. package/dist/components/TodoChangeLine.js.map +0 -7
  323. package/dist/components/TodoItem.js +0 -35
  324. package/dist/components/TodoItem.js.map +0 -7
  325. package/dist/components/TodoPanel.js +0 -167
  326. package/dist/components/TodoPanel.js.map +0 -7
  327. package/dist/components/TokenCounter.js +0 -74
  328. package/dist/components/TokenCounter.js.map +0 -7
  329. package/dist/components/TokenWarning.js +0 -41
  330. package/dist/components/TokenWarning.js.map +0 -7
  331. package/dist/components/ToolExecutionBlock.js +0 -18
  332. package/dist/components/ToolExecutionBlock.js.map +0 -7
  333. package/dist/components/ToolUseLoader.js +0 -29
  334. package/dist/components/ToolUseLoader.js.map +0 -7
  335. package/dist/components/TreeConnector.js +0 -26
  336. package/dist/components/TreeConnector.js.map +0 -7
  337. package/dist/components/TrustDialog.js +0 -71
  338. package/dist/components/TrustDialog.js.map +0 -7
  339. package/dist/components/TurnCompletionIndicator.js +0 -18
  340. package/dist/components/TurnCompletionIndicator.js.map +0 -7
  341. package/dist/components/UserQueryBlock.js +0 -12
  342. package/dist/components/UserQueryBlock.js.map +0 -7
  343. package/dist/components/binary-feedback/BinaryFeedback.js +0 -50
  344. package/dist/components/binary-feedback/BinaryFeedback.js.map +0 -7
  345. package/dist/components/binary-feedback/BinaryFeedbackOption.js +0 -92
  346. package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +0 -7
  347. package/dist/components/binary-feedback/BinaryFeedbackView.js +0 -140
  348. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +0 -7
  349. package/dist/components/binary-feedback/utils.js +0 -108
  350. package/dist/components/binary-feedback/utils.js.map +0 -7
  351. package/dist/components/messages/AssistantBashOutputMessage.js +0 -23
  352. package/dist/components/messages/AssistantBashOutputMessage.js.map +0 -7
  353. package/dist/components/messages/AssistantLocalCommandOutputMessage.js +0 -36
  354. package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +0 -7
  355. package/dist/components/messages/AssistantRedactedThinkingMessage.js +0 -12
  356. package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +0 -7
  357. package/dist/components/messages/AssistantTextMessage.js +0 -92
  358. package/dist/components/messages/AssistantTextMessage.js.map +0 -7
  359. package/dist/components/messages/AssistantThinkingMessage.js +0 -42
  360. package/dist/components/messages/AssistantThinkingMessage.js.map +0 -7
  361. package/dist/components/messages/AssistantToolUseMessage.js +0 -108
  362. package/dist/components/messages/AssistantToolUseMessage.js.map +0 -7
  363. package/dist/components/messages/DefaultToolResultFallback.js +0 -11
  364. package/dist/components/messages/DefaultToolResultFallback.js.map +0 -7
  365. package/dist/components/messages/GroupRenderer.js +0 -54
  366. package/dist/components/messages/GroupRenderer.js.map +0 -7
  367. package/dist/components/messages/NestedTasksPreview.js +0 -24
  368. package/dist/components/messages/NestedTasksPreview.js.map +0 -7
  369. package/dist/components/messages/ParallelTasksGroupView.js +0 -101
  370. package/dist/components/messages/ParallelTasksGroupView.js.map +0 -7
  371. package/dist/components/messages/TaskInModuleView.js +0 -218
  372. package/dist/components/messages/TaskInModuleView.js.map +0 -7
  373. package/dist/components/messages/TaskOutputContent.js +0 -56
  374. package/dist/components/messages/TaskOutputContent.js.map +0 -7
  375. package/dist/components/messages/TaskProgressMessage.js +0 -11
  376. package/dist/components/messages/TaskProgressMessage.js.map +0 -7
  377. package/dist/components/messages/TaskToolMessage.js +0 -39
  378. package/dist/components/messages/TaskToolMessage.js.map +0 -7
  379. package/dist/components/messages/UserBashInputMessage.js +0 -18
  380. package/dist/components/messages/UserBashInputMessage.js.map +0 -7
  381. package/dist/components/messages/UserCommandMessage.js +0 -20
  382. package/dist/components/messages/UserCommandMessage.js.map +0 -7
  383. package/dist/components/messages/UserGuidanceMessage.js +0 -26
  384. package/dist/components/messages/UserGuidanceMessage.js.map +0 -7
  385. package/dist/components/messages/UserKodingInputMessage.js +0 -18
  386. package/dist/components/messages/UserKodingInputMessage.js.map +0 -7
  387. package/dist/components/messages/UserPromptMessage.js +0 -26
  388. package/dist/components/messages/UserPromptMessage.js.map +0 -7
  389. package/dist/components/messages/UserTeamNotificationMessage.js +0 -91
  390. package/dist/components/messages/UserTeamNotificationMessage.js.map +0 -7
  391. package/dist/components/messages/UserTextMessage.js +0 -33
  392. package/dist/components/messages/UserTextMessage.js.map +0 -7
  393. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +0 -11
  394. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +0 -7
  395. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +0 -15
  396. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +0 -7
  397. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +0 -27
  398. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +0 -7
  399. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +0 -64
  400. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +0 -7
  401. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +0 -33
  402. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +0 -7
  403. package/dist/components/messages/UserToolResultMessage/utils.js +0 -50
  404. package/dist/components/messages/UserToolResultMessage/utils.js.map +0 -7
  405. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -112
  406. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +0 -7
  407. package/dist/components/permissions/FallbackPermissionRequest.js +0 -131
  408. package/dist/components/permissions/FallbackPermissionRequest.js.map +0 -7
  409. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -159
  410. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +0 -7
  411. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -58
  412. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +0 -7
  413. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -153
  414. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +0 -7
  415. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -70
  416. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +0 -7
  417. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -212
  418. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +0 -7
  419. package/dist/components/permissions/PermissionRequest.js +0 -74
  420. package/dist/components/permissions/PermissionRequest.js.map +0 -7
  421. package/dist/components/permissions/PermissionRequestTitle.js +0 -52
  422. package/dist/components/permissions/PermissionRequestTitle.js.map +0 -7
  423. package/dist/components/permissions/PlanApprovalRequest.js +0 -164
  424. package/dist/components/permissions/PlanApprovalRequest.js.map +0 -7
  425. package/dist/components/permissions/hooks.js +0 -23
  426. package/dist/components/permissions/hooks.js.map +0 -7
  427. package/dist/components/permissions/toolUseOptions.js +0 -46
  428. package/dist/components/permissions/toolUseOptions.js.map +0 -7
  429. package/dist/components/permissions/utils.js +0 -21
  430. package/dist/components/permissions/utils.js.map +0 -7
  431. package/dist/constants/agentTeams.js +0 -17
  432. package/dist/constants/agentTeams.js.map +0 -7
  433. package/dist/constants/claude-asterisk-ascii-art.js +0 -242
  434. package/dist/constants/claude-asterisk-ascii-art.js.map +0 -7
  435. package/dist/constants/colors.js +0 -192
  436. package/dist/constants/colors.js.map +0 -7
  437. package/dist/constants/compressionPrompts.js +0 -73
  438. package/dist/constants/compressionPrompts.js.map +0 -7
  439. package/dist/constants/figures.js +0 -6
  440. package/dist/constants/figures.js.map +0 -7
  441. package/dist/constants/formatRules.js +0 -102
  442. package/dist/constants/formatRules.js.map +0 -7
  443. package/dist/constants/macros.js +0 -12
  444. package/dist/constants/macros.js.map +0 -7
  445. package/dist/constants/modelCapabilities.js +0 -239
  446. package/dist/constants/modelCapabilities.js.map +0 -7
  447. package/dist/constants/models.js +0 -1034
  448. package/dist/constants/models.js.map +0 -7
  449. package/dist/constants/oauth.js +0 -18
  450. package/dist/constants/oauth.js.map +0 -7
  451. package/dist/constants/product.js +0 -28
  452. package/dist/constants/product.js.map +0 -7
  453. package/dist/constants/prompts/agentPrompt.js +0 -31
  454. package/dist/constants/prompts/agentPrompt.js.map +0 -7
  455. package/dist/constants/prompts/autoMemory.js +0 -39
  456. package/dist/constants/prompts/autoMemory.js.map +0 -7
  457. package/dist/constants/prompts/codeConventions.js +0 -15
  458. package/dist/constants/prompts/codeConventions.js.map +0 -7
  459. package/dist/constants/prompts/doingTasks.js +0 -34
  460. package/dist/constants/prompts/doingTasks.js.map +0 -7
  461. package/dist/constants/prompts/envInfo.js +0 -16
  462. package/dist/constants/prompts/envInfo.js.map +0 -7
  463. package/dist/constants/prompts/executingWithCare.js +0 -17
  464. package/dist/constants/prompts/executingWithCare.js.map +0 -7
  465. package/dist/constants/prompts/identity.js +0 -10
  466. package/dist/constants/prompts/identity.js.map +0 -7
  467. package/dist/constants/prompts/index.js +0 -100
  468. package/dist/constants/prompts/index.js.map +0 -7
  469. package/dist/constants/prompts/taskManagement.js +0 -19
  470. package/dist/constants/prompts/taskManagement.js.map +0 -7
  471. package/dist/constants/prompts/teamOverlays.js +0 -50
  472. package/dist/constants/prompts/teamOverlays.js.map +0 -7
  473. package/dist/constants/prompts/toneAndStyle.js +0 -37
  474. package/dist/constants/prompts/toneAndStyle.js.map +0 -7
  475. package/dist/constants/prompts/toolUsagePolicy.js +0 -23
  476. package/dist/constants/prompts/toolUsagePolicy.js.map +0 -7
  477. package/dist/constants/prompts.js +0 -13
  478. package/dist/constants/prompts.js.map +0 -7
  479. package/dist/constants/providerRegistry.js +0 -235
  480. package/dist/constants/providerRegistry.js.map +0 -7
  481. package/dist/constants/providers.js +0 -35
  482. package/dist/constants/providers.js.map +0 -7
  483. package/dist/constants/releaseNotes.js +0 -9
  484. package/dist/constants/releaseNotes.js.map +0 -7
  485. package/dist/constants/symbols.js +0 -108
  486. package/dist/constants/symbols.js.map +0 -7
  487. package/dist/constants/timing.js +0 -39
  488. package/dist/constants/timing.js.map +0 -7
  489. package/dist/constants/toolInputExamples.js +0 -88
  490. package/dist/constants/toolInputExamples.js.map +0 -7
  491. package/dist/context/PermissionContext.js +0 -110
  492. package/dist/context/PermissionContext.js.map +0 -7
  493. package/dist/context.js +0 -367
  494. package/dist/context.js.map +0 -7
  495. package/dist/core/backupHook.js +0 -29
  496. package/dist/core/backupHook.js.map +0 -7
  497. package/dist/core/backupManager.js +0 -321
  498. package/dist/core/backupManager.js.map +0 -7
  499. package/dist/core/config/defaults.js +0 -93
  500. package/dist/core/config/defaults.js.map +0 -7
  501. package/dist/core/config/index.js +0 -111
  502. package/dist/core/config/index.js.map +0 -7
  503. package/dist/core/config/loader.js +0 -221
  504. package/dist/core/config/loader.js.map +0 -7
  505. package/dist/core/config/migrations.js +0 -128
  506. package/dist/core/config/migrations.js.map +0 -7
  507. package/dist/core/config/schema.js +0 -196
  508. package/dist/core/config/schema.js.map +0 -7
  509. package/dist/core/costTracker.js +0 -131
  510. package/dist/core/costTracker.js.map +0 -7
  511. package/dist/core/gitAutoCommit.js +0 -287
  512. package/dist/core/gitAutoCommit.js.map +0 -7
  513. package/dist/core/index.js +0 -7
  514. package/dist/core/index.js.map +0 -7
  515. package/dist/core/operationTracker.js +0 -212
  516. package/dist/core/operationTracker.js.map +0 -7
  517. package/dist/core/permissions/auditLog.js +0 -204
  518. package/dist/core/permissions/auditLog.js.map +0 -7
  519. package/dist/core/permissions/engine/index.js +0 -3
  520. package/dist/core/permissions/engine/index.js.map +0 -7
  521. package/dist/core/permissions/engine/permissionEngine.js +0 -106
  522. package/dist/core/permissions/engine/permissionEngine.js.map +0 -7
  523. package/dist/core/permissions/engine/types.js +0 -1
  524. package/dist/core/permissions/engine/types.js.map +0 -7
  525. package/dist/core/permissions/index.js +0 -84
  526. package/dist/core/permissions/index.js.map +0 -7
  527. package/dist/core/permissions/ruleEngine.js +0 -259
  528. package/dist/core/permissions/ruleEngine.js.map +0 -7
  529. package/dist/core/permissions/rules/allowedToolsRule.js +0 -62
  530. package/dist/core/permissions/rules/allowedToolsRule.js.map +0 -7
  531. package/dist/core/permissions/rules/autoEscalationRule.js +0 -296
  532. package/dist/core/permissions/rules/autoEscalationRule.js.map +0 -7
  533. package/dist/core/permissions/rules/index.js +0 -46
  534. package/dist/core/permissions/rules/index.js.map +0 -7
  535. package/dist/core/permissions/rules/planModeRule.js +0 -55
  536. package/dist/core/permissions/rules/planModeRule.js.map +0 -7
  537. package/dist/core/permissions/rules/projectBoundaryRule.js +0 -173
  538. package/dist/core/permissions/rules/projectBoundaryRule.js.map +0 -7
  539. package/dist/core/permissions/rules/safeModeRule.js +0 -65
  540. package/dist/core/permissions/rules/safeModeRule.js.map +0 -7
  541. package/dist/core/permissions/rules/sensitivePathsRule.js +0 -345
  542. package/dist/core/permissions/rules/sensitivePathsRule.js.map +0 -7
  543. package/dist/core/permissions/types.js +0 -127
  544. package/dist/core/permissions/types.js.map +0 -7
  545. package/dist/core/tokenStats.js +0 -9
  546. package/dist/core/tokenStats.js.map +0 -7
  547. package/dist/core/tokenStatsManager.js +0 -354
  548. package/dist/core/tokenStatsManager.js.map +0 -7
  549. package/dist/core/tools/executor.js +0 -143
  550. package/dist/core/tools/executor.js.map +0 -7
  551. package/dist/core/tools/index.js +0 -15
  552. package/dist/core/tools/index.js.map +0 -7
  553. package/dist/core/tools/registry.js +0 -183
  554. package/dist/core/tools/registry.js.map +0 -7
  555. package/dist/core/tools/types.js +0 -1
  556. package/dist/core/tools/types.js.map +0 -7
  557. package/dist/cost-tracker.js +0 -68
  558. package/dist/cost-tracker.js.map +0 -7
  559. package/dist/engine/AgentEngine.js +0 -902
  560. package/dist/engine/AgentEngine.js.map +0 -7
  561. package/dist/engine/EngineRegistry.js +0 -89
  562. package/dist/engine/EngineRegistry.js.map +0 -7
  563. package/dist/engine/foregroundAdapter.js +0 -191
  564. package/dist/engine/foregroundAdapter.js.map +0 -7
  565. package/dist/engine/index.js +0 -15
  566. package/dist/engine/index.js.map +0 -7
  567. package/dist/engine/types.js +0 -1
  568. package/dist/engine/types.js.map +0 -7
  569. package/dist/entrypoints/bootstrap.js +0 -56
  570. package/dist/entrypoints/bootstrap.js.map +0 -7
  571. package/dist/entrypoints/cli.js +0 -1721
  572. package/dist/entrypoints/cli.js.map +0 -7
  573. package/dist/entrypoints/mcp.js +0 -153
  574. package/dist/entrypoints/mcp.js.map +0 -7
  575. package/dist/history.js +0 -96
  576. package/dist/history.js.map +0 -7
  577. package/dist/hooks/useAgentEngine.js +0 -129
  578. package/dist/hooks/useAgentEngine.js.map +0 -7
  579. package/dist/hooks/useAgentTokenStats.js +0 -56
  580. package/dist/hooks/useAgentTokenStats.js.map +0 -7
  581. package/dist/hooks/useAgentTranscripts.js +0 -141
  582. package/dist/hooks/useAgentTranscripts.js.map +0 -7
  583. package/dist/hooks/useAnimationSync.js +0 -53
  584. package/dist/hooks/useAnimationSync.js.map +0 -7
  585. package/dist/hooks/useApiKeyVerification.js +0 -12
  586. package/dist/hooks/useApiKeyVerification.js.map +0 -7
  587. package/dist/hooks/useArrowKeyHistory.js +0 -52
  588. package/dist/hooks/useArrowKeyHistory.js.map +0 -7
  589. package/dist/hooks/useAskUser.js +0 -24
  590. package/dist/hooks/useAskUser.js.map +0 -7
  591. package/dist/hooks/useBackgroundShells.js +0 -29
  592. package/dist/hooks/useBackgroundShells.js.map +0 -7
  593. package/dist/hooks/useCanUseTool.js +0 -134
  594. package/dist/hooks/useCanUseTool.js.map +0 -7
  595. package/dist/hooks/useDeferredLoading.js +0 -67
  596. package/dist/hooks/useDeferredLoading.js.map +0 -7
  597. package/dist/hooks/useDoublePress.js +0 -31
  598. package/dist/hooks/useDoublePress.js.map +0 -7
  599. package/dist/hooks/useExitOnCtrlCD.js +0 -30
  600. package/dist/hooks/useExitOnCtrlCD.js.map +0 -7
  601. package/dist/hooks/useHistorySearch.js +0 -62
  602. package/dist/hooks/useHistorySearch.js.map +0 -7
  603. package/dist/hooks/useHookStatus.js +0 -40
  604. package/dist/hooks/useHookStatus.js.map +0 -7
  605. package/dist/hooks/useIdleNotifications.js +0 -66
  606. package/dist/hooks/useIdleNotifications.js.map +0 -7
  607. package/dist/hooks/useInterval.js +0 -18
  608. package/dist/hooks/useInterval.js.map +0 -7
  609. package/dist/hooks/useLogMessages.js +0 -41
  610. package/dist/hooks/useLogMessages.js.map +0 -7
  611. package/dist/hooks/useLogStartupTime.js +0 -10
  612. package/dist/hooks/useLogStartupTime.js.map +0 -7
  613. package/dist/hooks/useMessageGroups.js +0 -43
  614. package/dist/hooks/useMessageGroups.js.map +0 -7
  615. package/dist/hooks/useNotifyAfterTimeout.js +0 -42
  616. package/dist/hooks/useNotifyAfterTimeout.js.map +0 -7
  617. package/dist/hooks/usePermissionRequestLogging.js +0 -23
  618. package/dist/hooks/usePermissionRequestLogging.js.map +0 -7
  619. package/dist/hooks/useSessionTracking.js +0 -57
  620. package/dist/hooks/useSessionTracking.js.map +0 -7
  621. package/dist/hooks/useTeamMembers.js +0 -51
  622. package/dist/hooks/useTeamMembers.js.map +0 -7
  623. package/dist/hooks/useTerminalSize.js +0 -115
  624. package/dist/hooks/useTerminalSize.js.map +0 -7
  625. package/dist/hooks/useTextInput.js +0 -253
  626. package/dist/hooks/useTextInput.js.map +0 -7
  627. package/dist/hooks/useUnifiedCompletion.js +0 -1098
  628. package/dist/hooks/useUnifiedCompletion.js.map +0 -7
  629. package/dist/i18n/index.js +0 -109
  630. package/dist/i18n/index.js.map +0 -7
  631. package/dist/i18n/locales/en.js +0 -993
  632. package/dist/i18n/locales/en.js.map +0 -7
  633. package/dist/i18n/locales/index.js +0 -7
  634. package/dist/i18n/locales/index.js.map +0 -7
  635. package/dist/i18n/locales/zh-CN.js +0 -993
  636. package/dist/i18n/locales/zh-CN.js.map +0 -7
  637. package/dist/i18n/types.js +0 -8
  638. package/dist/i18n/types.js.map +0 -7
  639. package/dist/index.js +0 -5
  640. package/dist/index.js.map +0 -7
  641. package/dist/messages.js +0 -68
  642. package/dist/messages.js.map +0 -7
  643. package/dist/package.json +0 -4
  644. package/dist/permissions.js +0 -536
  645. package/dist/permissions.js.map +0 -7
  646. package/dist/query.js +0 -851
  647. package/dist/query.js.map +0 -7
  648. package/dist/screens/LogList.js +0 -55
  649. package/dist/screens/LogList.js.map +0 -7
  650. package/dist/screens/REPL.js +0 -1240
  651. package/dist/screens/REPL.js.map +0 -7
  652. package/dist/screens/ResumeConversation.js +0 -244
  653. package/dist/screens/ResumeConversation.js.map +0 -7
  654. package/dist/services/adapters/base.js +0 -29
  655. package/dist/services/adapters/base.js.map +0 -7
  656. package/dist/services/adapters/chatCompletions.js +0 -71
  657. package/dist/services/adapters/chatCompletions.js.map +0 -7
  658. package/dist/services/adapters/messageNormalizer.js +0 -354
  659. package/dist/services/adapters/messageNormalizer.js.map +0 -7
  660. package/dist/services/adapters/responsesAPI.js +0 -137
  661. package/dist/services/adapters/responsesAPI.js.map +0 -7
  662. package/dist/services/agentTeams/backends/headless.js +0 -108
  663. package/dist/services/agentTeams/backends/headless.js.map +0 -7
  664. package/dist/services/agentTeams/backends/inProcess.js +0 -102
  665. package/dist/services/agentTeams/backends/inProcess.js.map +0 -7
  666. package/dist/services/agentTeams/backends/resolver.js +0 -18
  667. package/dist/services/agentTeams/backends/resolver.js.map +0 -7
  668. package/dist/services/agentTeams/backends/tmux.js +0 -168
  669. package/dist/services/agentTeams/backends/tmux.js.map +0 -7
  670. package/dist/services/agentTeams/backends/types.js +0 -1
  671. package/dist/services/agentTeams/backends/types.js.map +0 -7
  672. package/dist/services/agentTeams/heartbeat.js +0 -88
  673. package/dist/services/agentTeams/heartbeat.js.map +0 -7
  674. package/dist/services/agentTeams/index.js +0 -75
  675. package/dist/services/agentTeams/index.js.map +0 -7
  676. package/dist/services/agentTeams/injectionChannel.js +0 -105
  677. package/dist/services/agentTeams/injectionChannel.js.map +0 -7
  678. package/dist/services/agentTeams/mailbox.js +0 -494
  679. package/dist/services/agentTeams/mailbox.js.map +0 -7
  680. package/dist/services/agentTeams/messageFormatter.js +0 -80
  681. package/dist/services/agentTeams/messageFormatter.js.map +0 -7
  682. package/dist/services/agentTeams/permissionDelegation.js +0 -71
  683. package/dist/services/agentTeams/permissionDelegation.js.map +0 -7
  684. package/dist/services/agentTeams/teamEvents.js +0 -45
  685. package/dist/services/agentTeams/teamEvents.js.map +0 -7
  686. package/dist/services/agentTeams/teamManager.js +0 -366
  687. package/dist/services/agentTeams/teamManager.js.map +0 -7
  688. package/dist/services/agentTeams/teamTaskStore.js +0 -343
  689. package/dist/services/agentTeams/teamTaskStore.js.map +0 -7
  690. package/dist/services/agentTeams/teammateSpawner.js +0 -161
  691. package/dist/services/agentTeams/teammateSpawner.js.map +0 -7
  692. package/dist/services/checkpointManager.js +0 -399
  693. package/dist/services/checkpointManager.js.map +0 -7
  694. package/dist/services/claude.js +0 -41
  695. package/dist/services/claude.js.map +0 -7
  696. package/dist/services/compressionService.js +0 -259
  697. package/dist/services/compressionService.js.map +0 -7
  698. package/dist/services/contextMonitor.js +0 -162
  699. package/dist/services/contextMonitor.js.map +0 -7
  700. package/dist/services/customCommands.js +0 -489
  701. package/dist/services/customCommands.js.map +0 -7
  702. package/dist/services/fileFreshness.js +0 -275
  703. package/dist/services/fileFreshness.js.map +0 -7
  704. package/dist/services/gpt5ConnectionTest.js +0 -263
  705. package/dist/services/gpt5ConnectionTest.js.map +0 -7
  706. package/dist/services/hookExecutor.js +0 -771
  707. package/dist/services/hookExecutor.js.map +0 -7
  708. package/dist/services/intelligentCompactor.js +0 -281
  709. package/dist/services/intelligentCompactor.js.map +0 -7
  710. package/dist/services/llm/anthropicProvider.js +0 -804
  711. package/dist/services/llm/anthropicProvider.js.map +0 -7
  712. package/dist/services/llm/dispatch.js +0 -237
  713. package/dist/services/llm/dispatch.js.map +0 -7
  714. package/dist/services/llm/index.js +0 -44
  715. package/dist/services/llm/index.js.map +0 -7
  716. package/dist/services/llm/mintoContext.js +0 -69
  717. package/dist/services/llm/mintoContext.js.map +0 -7
  718. package/dist/services/llm/openaiProvider.js +0 -601
  719. package/dist/services/llm/openaiProvider.js.map +0 -7
  720. package/dist/services/llm/types.js +0 -231
  721. package/dist/services/llm/types.js.map +0 -7
  722. package/dist/services/lspConfig.js +0 -109
  723. package/dist/services/lspConfig.js.map +0 -7
  724. package/dist/services/mainAgentCompressor.js +0 -84
  725. package/dist/services/mainAgentCompressor.js.map +0 -7
  726. package/dist/services/mcpClient.js +0 -997
  727. package/dist/services/mcpClient.js.map +0 -7
  728. package/dist/services/mcpServerApproval.js +0 -55
  729. package/dist/services/mcpServerApproval.js.map +0 -7
  730. package/dist/services/mentionProcessor.js +0 -214
  731. package/dist/services/mentionProcessor.js.map +0 -7
  732. package/dist/services/mintoAuth.js +0 -299
  733. package/dist/services/mintoAuth.js.map +0 -7
  734. package/dist/services/modelAdapterFactory.js +0 -47
  735. package/dist/services/modelAdapterFactory.js.map +0 -7
  736. package/dist/services/modelOrchestrator.js +0 -310
  737. package/dist/services/modelOrchestrator.js.map +0 -7
  738. package/dist/services/notifier.js +0 -49
  739. package/dist/services/notifier.js.map +0 -7
  740. package/dist/services/oauth.js +0 -249
  741. package/dist/services/oauth.js.map +0 -7
  742. package/dist/services/openai.js +0 -1120
  743. package/dist/services/openai.js.map +0 -7
  744. package/dist/services/outputStyles.js +0 -219
  745. package/dist/services/outputStyles.js.map +0 -7
  746. package/dist/services/plugins/index.js +0 -5
  747. package/dist/services/plugins/index.js.map +0 -7
  748. package/dist/services/plugins/lspServers.js +0 -188
  749. package/dist/services/plugins/lspServers.js.map +0 -7
  750. package/dist/services/plugins/pluginRuntime.js +0 -236
  751. package/dist/services/plugins/pluginRuntime.js.map +0 -7
  752. package/dist/services/plugins/pluginValidation.js +0 -228
  753. package/dist/services/plugins/pluginValidation.js.map +0 -7
  754. package/dist/services/plugins/skillMarketplace.js +0 -567
  755. package/dist/services/plugins/skillMarketplace.js.map +0 -7
  756. package/dist/services/responseStateManager.js +0 -102
  757. package/dist/services/responseStateManager.js.map +0 -7
  758. package/dist/services/sandbox/filesystemBoundary.js +0 -341
  759. package/dist/services/sandbox/filesystemBoundary.js.map +0 -7
  760. package/dist/services/sandbox/index.js +0 -14
  761. package/dist/services/sandbox/index.js.map +0 -7
  762. package/dist/services/sandbox/networkProxy.js +0 -293
  763. package/dist/services/sandbox/networkProxy.js.map +0 -7
  764. package/dist/services/sandbox/sandboxController.js +0 -582
  765. package/dist/services/sandbox/sandboxController.js.map +0 -7
  766. package/dist/services/sandbox/types.js +0 -50
  767. package/dist/services/sandbox/types.js.map +0 -7
  768. package/dist/services/sentry.js +0 -9
  769. package/dist/services/sentry.js.map +0 -7
  770. package/dist/services/sessionMemory.js +0 -279
  771. package/dist/services/sessionMemory.js.map +0 -7
  772. package/dist/services/sessionMemoryInjector.js +0 -77
  773. package/dist/services/sessionMemoryInjector.js.map +0 -7
  774. package/dist/services/subagentAbortManager.js +0 -95
  775. package/dist/services/subagentAbortManager.js.map +0 -7
  776. package/dist/services/subagentCompressor.js +0 -146
  777. package/dist/services/subagentCompressor.js.map +0 -7
  778. package/dist/services/systemReminder.js +0 -815
  779. package/dist/services/systemReminder.js.map +0 -7
  780. package/dist/services/taskRouter.js +0 -324
  781. package/dist/services/taskRouter.js.map +0 -7
  782. package/dist/services/taskStore.js +0 -415
  783. package/dist/services/taskStore.js.map +0 -7
  784. package/dist/services/topicDetector.js +0 -169
  785. package/dist/services/topicDetector.js.map +0 -7
  786. package/dist/services/vcr.js +0 -133
  787. package/dist/services/vcr.js.map +0 -7
  788. package/dist/tools/ArchitectTool/ArchitectTool.js +0 -126
  789. package/dist/tools/ArchitectTool/ArchitectTool.js.map +0 -7
  790. package/dist/tools/ArchitectTool/prompt.js +0 -18
  791. package/dist/tools/ArchitectTool/prompt.js.map +0 -7
  792. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -420
  793. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +0 -7
  794. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js +0 -158
  795. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +0 -7
  796. package/dist/tools/AskUserQuestionTool/index.js +0 -5
  797. package/dist/tools/AskUserQuestionTool/index.js.map +0 -7
  798. package/dist/tools/AskUserQuestionTool/prompt.js +0 -167
  799. package/dist/tools/AskUserQuestionTool/prompt.js.map +0 -7
  800. package/dist/tools/BaseTool.js +0 -72
  801. package/dist/tools/BaseTool.js.map +0 -7
  802. package/dist/tools/BashOutputTool/BashOutputTool.js +0 -120
  803. package/dist/tools/BashOutputTool/BashOutputTool.js.map +0 -7
  804. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +0 -14
  805. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +0 -7
  806. package/dist/tools/BashOutputTool/prompt.js +0 -13
  807. package/dist/tools/BashOutputTool/prompt.js.map +0 -7
  808. package/dist/tools/BashTool/BashTool.js +0 -353
  809. package/dist/tools/BashTool/BashTool.js.map +0 -7
  810. package/dist/tools/BashTool/BashToolResultMessage.js +0 -24
  811. package/dist/tools/BashTool/BashToolResultMessage.js.map +0 -7
  812. package/dist/tools/BashTool/OutputLine.js +0 -84
  813. package/dist/tools/BashTool/OutputLine.js.map +0 -7
  814. package/dist/tools/BashTool/prompt.js +0 -496
  815. package/dist/tools/BashTool/prompt.js.map +0 -7
  816. package/dist/tools/BashTool/utils.js +0 -89
  817. package/dist/tools/BashTool/utils.js.map +0 -7
  818. package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js +0 -121
  819. package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js.map +0 -7
  820. package/dist/tools/EnterWorktreeTool/prompt.js +0 -22
  821. package/dist/tools/EnterWorktreeTool/prompt.js.map +0 -7
  822. package/dist/tools/FileEditTool/FileEditTool.js +0 -278
  823. package/dist/tools/FileEditTool/FileEditTool.js.map +0 -7
  824. package/dist/tools/FileEditTool/prompt.js +0 -56
  825. package/dist/tools/FileEditTool/prompt.js.map +0 -7
  826. package/dist/tools/FileEditTool/utils.js +0 -48
  827. package/dist/tools/FileEditTool/utils.js.map +0 -7
  828. package/dist/tools/FileReadTool/FileReadTool.js +0 -427
  829. package/dist/tools/FileReadTool/FileReadTool.js.map +0 -7
  830. package/dist/tools/FileReadTool/prompt.js +0 -24
  831. package/dist/tools/FileReadTool/prompt.js.map +0 -7
  832. package/dist/tools/FileWriteTool/FileWriteTool.js +0 -211
  833. package/dist/tools/FileWriteTool/FileWriteTool.js.map +0 -7
  834. package/dist/tools/FileWriteTool/prompt.js +0 -21
  835. package/dist/tools/FileWriteTool/prompt.js.map +0 -7
  836. package/dist/tools/GlobTool/GlobTool.js +0 -100
  837. package/dist/tools/GlobTool/GlobTool.js.map +0 -7
  838. package/dist/tools/GlobTool/prompt.js +0 -23
  839. package/dist/tools/GlobTool/prompt.js.map +0 -7
  840. package/dist/tools/GrepTool/GrepTool.js +0 -417
  841. package/dist/tools/GrepTool/GrepTool.js.map +0 -7
  842. package/dist/tools/GrepTool/prompt.js +0 -22
  843. package/dist/tools/GrepTool/prompt.js.map +0 -7
  844. package/dist/tools/KillShellTool/KillShellTool.js +0 -92
  845. package/dist/tools/KillShellTool/KillShellTool.js.map +0 -7
  846. package/dist/tools/KillShellTool/KillShellToolResultMessage.js +0 -14
  847. package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +0 -7
  848. package/dist/tools/KillShellTool/prompt.js +0 -12
  849. package/dist/tools/KillShellTool/prompt.js.map +0 -7
  850. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +0 -109
  851. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +0 -7
  852. package/dist/tools/ListMcpResourcesTool/prompt.js +0 -19
  853. package/dist/tools/ListMcpResourcesTool/prompt.js.map +0 -7
  854. package/dist/tools/LspTool/LspTool.js +0 -673
  855. package/dist/tools/LspTool/LspTool.js.map +0 -7
  856. package/dist/tools/LspTool/prompt.js +0 -27
  857. package/dist/tools/LspTool/prompt.js.map +0 -7
  858. package/dist/tools/MCPSearchTool/MCPSearchTool.js +0 -172
  859. package/dist/tools/MCPSearchTool/MCPSearchTool.js.map +0 -7
  860. package/dist/tools/MCPSearchTool/prompt.js +0 -77
  861. package/dist/tools/MCPSearchTool/prompt.js.map +0 -7
  862. package/dist/tools/MCPTool/MCPTool.js +0 -97
  863. package/dist/tools/MCPTool/MCPTool.js.map +0 -7
  864. package/dist/tools/MCPTool/prompt.js +0 -7
  865. package/dist/tools/MCPTool/prompt.js.map +0 -7
  866. package/dist/tools/MemoryReadTool/MemoryReadTool.js +0 -117
  867. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +0 -7
  868. package/dist/tools/MemoryReadTool/prompt.js +0 -7
  869. package/dist/tools/MemoryReadTool/prompt.js.map +0 -7
  870. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +0 -78
  871. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +0 -7
  872. package/dist/tools/MemoryWriteTool/prompt.js +0 -7
  873. package/dist/tools/MemoryWriteTool/prompt.js.map +0 -7
  874. package/dist/tools/MultiEditTool/MultiEditTool.js +0 -328
  875. package/dist/tools/MultiEditTool/MultiEditTool.js.map +0 -7
  876. package/dist/tools/MultiEditTool/prompt.js +0 -47
  877. package/dist/tools/MultiEditTool/prompt.js.map +0 -7
  878. package/dist/tools/NotebookEditTool/NotebookEditTool.js +0 -257
  879. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +0 -7
  880. package/dist/tools/NotebookEditTool/prompt.js +0 -7
  881. package/dist/tools/NotebookEditTool/prompt.js.map +0 -7
  882. package/dist/tools/NotebookReadTool/NotebookReadTool.js +0 -218
  883. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +0 -7
  884. package/dist/tools/NotebookReadTool/prompt.js +0 -7
  885. package/dist/tools/NotebookReadTool/prompt.js.map +0 -7
  886. package/dist/tools/PlanModeTool/EnterPlanModeTool.js +0 -85
  887. package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +0 -7
  888. package/dist/tools/PlanModeTool/ExitPlanModeTool.js +0 -164
  889. package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +0 -7
  890. package/dist/tools/PlanModeTool/prompt.js +0 -43
  891. package/dist/tools/PlanModeTool/prompt.js.map +0 -7
  892. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +0 -130
  893. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js.map +0 -7
  894. package/dist/tools/ReadMcpResourceTool/prompt.js +0 -17
  895. package/dist/tools/ReadMcpResourceTool/prompt.js.map +0 -7
  896. package/dist/tools/SendMessageTool/SendMessageTool.js +0 -341
  897. package/dist/tools/SendMessageTool/SendMessageTool.js.map +0 -7
  898. package/dist/tools/SendMessageTool/prompt.js +0 -44
  899. package/dist/tools/SendMessageTool/prompt.js.map +0 -7
  900. package/dist/tools/SkillTool/SkillTool.js +0 -227
  901. package/dist/tools/SkillTool/SkillTool.js.map +0 -7
  902. package/dist/tools/SkillTool/prompt.js +0 -81
  903. package/dist/tools/SkillTool/prompt.js.map +0 -7
  904. package/dist/tools/SlashCommandTool/SlashCommandTool.js +0 -416
  905. package/dist/tools/SlashCommandTool/SlashCommandTool.js.map +0 -7
  906. package/dist/tools/SlashCommandTool/prompt.js +0 -35
  907. package/dist/tools/SlashCommandTool/prompt.js.map +0 -7
  908. package/dist/tools/TaskCreateTool/TaskCreateTool.js +0 -102
  909. package/dist/tools/TaskCreateTool/TaskCreateTool.js.map +0 -7
  910. package/dist/tools/TaskCreateTool/prompt.js +0 -58
  911. package/dist/tools/TaskCreateTool/prompt.js.map +0 -7
  912. package/dist/tools/TaskGetTool/TaskGetTool.js +0 -115
  913. package/dist/tools/TaskGetTool/TaskGetTool.js.map +0 -7
  914. package/dist/tools/TaskGetTool/prompt.js +0 -28
  915. package/dist/tools/TaskGetTool/prompt.js.map +0 -7
  916. package/dist/tools/TaskListTool/TaskListTool.js +0 -102
  917. package/dist/tools/TaskListTool/TaskListTool.js.map +0 -7
  918. package/dist/tools/TaskListTool/prompt.js +0 -42
  919. package/dist/tools/TaskListTool/prompt.js.map +0 -7
  920. package/dist/tools/TaskOutputTool/TaskOutputTool.js +0 -190
  921. package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +0 -7
  922. package/dist/tools/TaskOutputTool/prompt.js +0 -16
  923. package/dist/tools/TaskOutputTool/prompt.js.map +0 -7
  924. package/dist/tools/TaskStopTool/TaskStopTool.js +0 -150
  925. package/dist/tools/TaskStopTool/TaskStopTool.js.map +0 -7
  926. package/dist/tools/TaskStopTool/prompt.js +0 -15
  927. package/dist/tools/TaskStopTool/prompt.js.map +0 -7
  928. package/dist/tools/TaskTool/TaskTool.js +0 -1525
  929. package/dist/tools/TaskTool/TaskTool.js.map +0 -7
  930. package/dist/tools/TaskTool/constants.js +0 -11
  931. package/dist/tools/TaskTool/constants.js.map +0 -7
  932. package/dist/tools/TaskTool/prompt.js +0 -121
  933. package/dist/tools/TaskTool/prompt.js.map +0 -7
  934. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js +0 -148
  935. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js.map +0 -7
  936. package/dist/tools/TaskUpdateTool/prompt.js +0 -81
  937. package/dist/tools/TaskUpdateTool/prompt.js.map +0 -7
  938. package/dist/tools/TeamCreateTool/TeamCreateTool.js +0 -129
  939. package/dist/tools/TeamCreateTool/TeamCreateTool.js.map +0 -7
  940. package/dist/tools/TeamCreateTool/prompt.js +0 -58
  941. package/dist/tools/TeamCreateTool/prompt.js.map +0 -7
  942. package/dist/tools/TeamDeleteTool/TeamDeleteTool.js +0 -151
  943. package/dist/tools/TeamDeleteTool/TeamDeleteTool.js.map +0 -7
  944. package/dist/tools/TeamDeleteTool/prompt.js +0 -16
  945. package/dist/tools/TeamDeleteTool/prompt.js.map +0 -7
  946. package/dist/tools/ThinkTool/ThinkTool.js +0 -45
  947. package/dist/tools/ThinkTool/ThinkTool.js.map +0 -7
  948. package/dist/tools/ThinkTool/prompt.js +0 -16
  949. package/dist/tools/ThinkTool/prompt.js.map +0 -7
  950. package/dist/tools/TodoWriteTool/TodoWriteTool.js +0 -232
  951. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +0 -7
  952. package/dist/tools/TodoWriteTool/prompt.js +0 -87
  953. package/dist/tools/TodoWriteTool/prompt.js.map +0 -7
  954. package/dist/tools/URLFetcherTool/URLFetcherTool.js +0 -234
  955. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +0 -7
  956. package/dist/tools/URLFetcherTool/cache.js +0 -95
  957. package/dist/tools/URLFetcherTool/cache.js.map +0 -7
  958. package/dist/tools/URLFetcherTool/htmlToMarkdown.js +0 -44
  959. package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +0 -7
  960. package/dist/tools/URLFetcherTool/prompt.js +0 -28
  961. package/dist/tools/URLFetcherTool/prompt.js.map +0 -7
  962. package/dist/tools/WebSearchTool/WebSearchTool.js +0 -92
  963. package/dist/tools/WebSearchTool/WebSearchTool.js.map +0 -7
  964. package/dist/tools/WebSearchTool/prompt.js +0 -24
  965. package/dist/tools/WebSearchTool/prompt.js.map +0 -7
  966. package/dist/tools/WebSearchTool/searchProviders.js +0 -58
  967. package/dist/tools/WebSearchTool/searchProviders.js.map +0 -7
  968. package/dist/tools/lsTool/lsTool.js +0 -201
  969. package/dist/tools/lsTool/lsTool.js.map +0 -7
  970. package/dist/tools/lsTool/prompt.js +0 -5
  971. package/dist/tools/lsTool/prompt.js.map +0 -7
  972. package/dist/tools.js +0 -207
  973. package/dist/tools.js.map +0 -7
  974. package/dist/types/PermissionMode.js +0 -160
  975. package/dist/types/PermissionMode.js.map +0 -7
  976. package/dist/types/RequestContext.js +0 -47
  977. package/dist/types/RequestContext.js.map +0 -7
  978. package/dist/types/agentTeams.js +0 -1
  979. package/dist/types/agentTeams.js.map +0 -7
  980. package/dist/types/askUserQuestion.js +0 -1
  981. package/dist/types/askUserQuestion.js.map +0 -7
  982. package/dist/types/common.d.js +0 -1
  983. package/dist/types/common.d.js.map +0 -7
  984. package/dist/types/conversation.js +0 -1
  985. package/dist/types/conversation.js.map +0 -7
  986. package/dist/types/core.js +0 -1
  987. package/dist/types/core.js.map +0 -7
  988. package/dist/types/hooks.js +0 -47
  989. package/dist/types/hooks.js.map +0 -7
  990. package/dist/types/interactionRound.js +0 -1
  991. package/dist/types/interactionRound.js.map +0 -7
  992. package/dist/types/logs.js +0 -1
  993. package/dist/types/logs.js.map +0 -7
  994. package/dist/types/marketplace.js +0 -107
  995. package/dist/types/marketplace.js.map +0 -7
  996. package/dist/types/messageGroup.js +0 -36
  997. package/dist/types/messageGroup.js.map +0 -7
  998. package/dist/types/modelCapabilities.js +0 -1
  999. package/dist/types/modelCapabilities.js.map +0 -7
  1000. package/dist/types/notebook.js +0 -1
  1001. package/dist/types/notebook.js.map +0 -7
  1002. package/dist/types/plugin.js +0 -86
  1003. package/dist/types/plugin.js.map +0 -7
  1004. package/dist/types/subagent.js +0 -1
  1005. package/dist/types/subagent.js.map +0 -7
  1006. package/dist/types/thinking.js +0 -1
  1007. package/dist/types/thinking.js.map +0 -7
  1008. package/dist/utils/BackgroundShellManager.js +0 -378
  1009. package/dist/utils/BackgroundShellManager.js.map +0 -7
  1010. package/dist/utils/CircuitBreaker.js +0 -248
  1011. package/dist/utils/CircuitBreaker.js.map +0 -7
  1012. package/dist/utils/Cursor.js +0 -315
  1013. package/dist/utils/Cursor.js.map +0 -7
  1014. package/dist/utils/MessageBatchBuffer.js +0 -102
  1015. package/dist/utils/MessageBatchBuffer.js.map +0 -7
  1016. package/dist/utils/PersistentShell.js +0 -526
  1017. package/dist/utils/PersistentShell.js.map +0 -7
  1018. package/dist/utils/advancedFuzzyMatcher.js +0 -209
  1019. package/dist/utils/advancedFuzzyMatcher.js.map +0 -7
  1020. package/dist/utils/agentHookExecutor.js +0 -103
  1021. package/dist/utils/agentHookExecutor.js.map +0 -7
  1022. package/dist/utils/agentLoader.js +0 -655
  1023. package/dist/utils/agentLoader.js.map +0 -7
  1024. package/dist/utils/agentMemory.js +0 -134
  1025. package/dist/utils/agentMemory.js.map +0 -7
  1026. package/dist/utils/agentStorage.js +0 -59
  1027. package/dist/utils/agentStorage.js.map +0 -7
  1028. package/dist/utils/agentTranscripts.js +0 -641
  1029. package/dist/utils/agentTranscripts.js.map +0 -7
  1030. package/dist/utils/animationManager.js +0 -250
  1031. package/dist/utils/animationManager.js.map +0 -7
  1032. package/dist/utils/animationSync.js +0 -110
  1033. package/dist/utils/animationSync.js.map +0 -7
  1034. package/dist/utils/array.js +0 -7
  1035. package/dist/utils/array.js.map +0 -7
  1036. package/dist/utils/ask.js +0 -80
  1037. package/dist/utils/ask.js.map +0 -7
  1038. package/dist/utils/async.js +0 -167
  1039. package/dist/utils/async.js.map +0 -7
  1040. package/dist/utils/asyncFile.js +0 -215
  1041. package/dist/utils/asyncFile.js.map +0 -7
  1042. package/dist/utils/atomicWrite.js +0 -23
  1043. package/dist/utils/atomicWrite.js.map +0 -7
  1044. package/dist/utils/auth.js +0 -11
  1045. package/dist/utils/auth.js.map +0 -7
  1046. package/dist/utils/autoCompactCore.js +0 -203
  1047. package/dist/utils/autoCompactCore.js.map +0 -7
  1048. package/dist/utils/autoMemoryPaths.js +0 -89
  1049. package/dist/utils/autoMemoryPaths.js.map +0 -7
  1050. package/dist/utils/autoUpdater.js +0 -113
  1051. package/dist/utils/autoUpdater.js.map +0 -7
  1052. package/dist/utils/backgroundAgentManager.js +0 -231
  1053. package/dist/utils/backgroundAgentManager.js.map +0 -7
  1054. package/dist/utils/browser.js +0 -15
  1055. package/dist/utils/browser.js.map +0 -7
  1056. package/dist/utils/claudeCodeSync.js +0 -439
  1057. package/dist/utils/claudeCodeSync.js.map +0 -7
  1058. package/dist/utils/cleanup.js +0 -54
  1059. package/dist/utils/cleanup.js.map +0 -7
  1060. package/dist/utils/commands.js +0 -219
  1061. package/dist/utils/commands.js.map +0 -7
  1062. package/dist/utils/commonUnixCommands.js +0 -689
  1063. package/dist/utils/commonUnixCommands.js.map +0 -7
  1064. package/dist/utils/compressionMode.js +0 -47
  1065. package/dist/utils/compressionMode.js.map +0 -7
  1066. package/dist/utils/config.js +0 -716
  1067. package/dist/utils/config.js.map +0 -7
  1068. package/dist/utils/configPaths.js +0 -199
  1069. package/dist/utils/configPaths.js.map +0 -7
  1070. package/dist/utils/configSchema.js +0 -232
  1071. package/dist/utils/configSchema.js.map +0 -7
  1072. package/dist/utils/conversationRecovery.js +0 -54
  1073. package/dist/utils/conversationRecovery.js.map +0 -7
  1074. package/dist/utils/credentials/CredentialStore.js +0 -1
  1075. package/dist/utils/credentials/CredentialStore.js.map +0 -7
  1076. package/dist/utils/credentials/EncryptedFileStore.js +0 -157
  1077. package/dist/utils/credentials/EncryptedFileStore.js.map +0 -7
  1078. package/dist/utils/credentials/index.js +0 -51
  1079. package/dist/utils/credentials/index.js.map +0 -7
  1080. package/dist/utils/credentials/migration.js +0 -82
  1081. package/dist/utils/credentials/migration.js.map +0 -7
  1082. package/dist/utils/debugLogger.js +0 -889
  1083. package/dist/utils/debugLogger.js.map +0 -7
  1084. package/dist/utils/diff.js +0 -32
  1085. package/dist/utils/diff.js.map +0 -7
  1086. package/dist/utils/dualPath.js +0 -24
  1087. package/dist/utils/dualPath.js.map +0 -7
  1088. package/dist/utils/env.js +0 -45
  1089. package/dist/utils/env.js.map +0 -7
  1090. package/dist/utils/envConfig.js +0 -116
  1091. package/dist/utils/envConfig.js.map +0 -7
  1092. package/dist/utils/errorHandling.js +0 -89
  1093. package/dist/utils/errorHandling.js.map +0 -7
  1094. package/dist/utils/errors.js +0 -23
  1095. package/dist/utils/errors.js.map +0 -7
  1096. package/dist/utils/execFileNoThrow.js +0 -45
  1097. package/dist/utils/execFileNoThrow.js.map +0 -7
  1098. package/dist/utils/exit.js +0 -132
  1099. package/dist/utils/exit.js.map +0 -7
  1100. package/dist/utils/expertChatStorage.js +0 -78
  1101. package/dist/utils/expertChatStorage.js.map +0 -7
  1102. package/dist/utils/externalEditor.js +0 -155
  1103. package/dist/utils/externalEditor.js.map +0 -7
  1104. package/dist/utils/file.js +0 -282
  1105. package/dist/utils/file.js.map +0 -7
  1106. package/dist/utils/fileLock.js +0 -67
  1107. package/dist/utils/fileLock.js.map +0 -7
  1108. package/dist/utils/fileRecoveryCore.js +0 -41
  1109. package/dist/utils/fileRecoveryCore.js.map +0 -7
  1110. package/dist/utils/format.js +0 -119
  1111. package/dist/utils/format.js.map +0 -7
  1112. package/dist/utils/fuzzyMatcher.js +0 -258
  1113. package/dist/utils/fuzzyMatcher.js.map +0 -7
  1114. package/dist/utils/generators.js +0 -116
  1115. package/dist/utils/generators.js.map +0 -7
  1116. package/dist/utils/git.js +0 -83
  1117. package/dist/utils/git.js.map +0 -7
  1118. package/dist/utils/globalErrorHandler.js +0 -58
  1119. package/dist/utils/globalErrorHandler.js.map +0 -7
  1120. package/dist/utils/gpt5.js +0 -146
  1121. package/dist/utils/gpt5.js.map +0 -7
  1122. package/dist/utils/groupHandlers/index.js +0 -8
  1123. package/dist/utils/groupHandlers/index.js.map +0 -7
  1124. package/dist/utils/groupHandlers/parallelTasksHandler.js +0 -142
  1125. package/dist/utils/groupHandlers/parallelTasksHandler.js.map +0 -7
  1126. package/dist/utils/groupHandlers/taskHandler.js +0 -104
  1127. package/dist/utils/groupHandlers/taskHandler.js.map +0 -7
  1128. package/dist/utils/groupHandlers/types.js +0 -1
  1129. package/dist/utils/groupHandlers/types.js.map +0 -7
  1130. package/dist/utils/historyManager.js +0 -234
  1131. package/dist/utils/historyManager.js.map +0 -7
  1132. package/dist/utils/hookManager.js +0 -540
  1133. package/dist/utils/hookManager.js.map +0 -7
  1134. package/dist/utils/http.js +0 -7
  1135. package/dist/utils/http.js.map +0 -7
  1136. package/dist/utils/imagePaste.js +0 -29
  1137. package/dist/utils/imagePaste.js.map +0 -7
  1138. package/dist/utils/json.js +0 -16
  1139. package/dist/utils/json.js.map +0 -7
  1140. package/dist/utils/log.js +0 -333
  1141. package/dist/utils/log.js.map +0 -7
  1142. package/dist/utils/logRotation.js +0 -224
  1143. package/dist/utils/logRotation.js.map +0 -7
  1144. package/dist/utils/markdown.js +0 -464
  1145. package/dist/utils/markdown.js.map +0 -7
  1146. package/dist/utils/marketplaceManager.js +0 -545
  1147. package/dist/utils/marketplaceManager.js.map +0 -7
  1148. package/dist/utils/memSafety.js +0 -264
  1149. package/dist/utils/memSafety.js.map +0 -7
  1150. package/dist/utils/memoizeWithTTL.js +0 -25
  1151. package/dist/utils/memoizeWithTTL.js.map +0 -7
  1152. package/dist/utils/messageContextManager.js +0 -208
  1153. package/dist/utils/messageContextManager.js.map +0 -7
  1154. package/dist/utils/messageGroupManager.js +0 -274
  1155. package/dist/utils/messageGroupManager.js.map +0 -7
  1156. package/dist/utils/messages.js +0 -725
  1157. package/dist/utils/messages.js.map +0 -7
  1158. package/dist/utils/migration/index.js +0 -37
  1159. package/dist/utils/migration/index.js.map +0 -7
  1160. package/dist/utils/migration/migrateHistory.js +0 -273
  1161. package/dist/utils/migration/migrateHistory.js.map +0 -7
  1162. package/dist/utils/migration/migrateTodos.js +0 -323
  1163. package/dist/utils/migration/migrateTodos.js.map +0 -7
  1164. package/dist/utils/model.js +0 -846
  1165. package/dist/utils/model.js.map +0 -7
  1166. package/dist/utils/pasteCache.js +0 -313
  1167. package/dist/utils/pasteCache.js.map +0 -7
  1168. package/dist/utils/permissions/filesystem.js +0 -236
  1169. package/dist/utils/permissions/filesystem.js.map +0 -7
  1170. package/dist/utils/plan/planMode.js +0 -143
  1171. package/dist/utils/plan/planMode.js.map +0 -7
  1172. package/dist/utils/pluginInstaller.js +0 -518
  1173. package/dist/utils/pluginInstaller.js.map +0 -7
  1174. package/dist/utils/pluginLoader.js +0 -819
  1175. package/dist/utils/pluginLoader.js.map +0 -7
  1176. package/dist/utils/pluginRegistry.js +0 -111
  1177. package/dist/utils/pluginRegistry.js.map +0 -7
  1178. package/dist/utils/pluginValidator.js +0 -798
  1179. package/dist/utils/pluginValidator.js.map +0 -7
  1180. package/dist/utils/ptyCompat.js +0 -125
  1181. package/dist/utils/ptyCompat.js.map +0 -7
  1182. package/dist/utils/replStateMachine.js +0 -145
  1183. package/dist/utils/replStateMachine.js.map +0 -7
  1184. package/dist/utils/repoFetcher.js +0 -110
  1185. package/dist/utils/repoFetcher.js.map +0 -7
  1186. package/dist/utils/ripgrep.js +0 -236
  1187. package/dist/utils/ripgrep.js.map +0 -7
  1188. package/dist/utils/roundConverter.js +0 -262
  1189. package/dist/utils/roundConverter.js.map +0 -7
  1190. package/dist/utils/safeFetch.js +0 -45
  1191. package/dist/utils/safeFetch.js.map +0 -7
  1192. package/dist/utils/safePath.js +0 -132
  1193. package/dist/utils/safePath.js.map +0 -7
  1194. package/dist/utils/sanitizeInput.js +0 -32
  1195. package/dist/utils/sanitizeInput.js.map +0 -7
  1196. package/dist/utils/secureFile.js +0 -512
  1197. package/dist/utils/secureFile.js.map +0 -7
  1198. package/dist/utils/secureKeyStorage.js +0 -341
  1199. package/dist/utils/secureKeyStorage.js.map +0 -7
  1200. package/dist/utils/sensitiveFiles.js +0 -125
  1201. package/dist/utils/sensitiveFiles.js.map +0 -7
  1202. package/dist/utils/session/sessionPlugins.js +0 -67
  1203. package/dist/utils/session/sessionPlugins.js.map +0 -7
  1204. package/dist/utils/sessionIndex.js +0 -192
  1205. package/dist/utils/sessionIndex.js.map +0 -7
  1206. package/dist/utils/sessionState.js +0 -22
  1207. package/dist/utils/sessionState.js.map +0 -7
  1208. package/dist/utils/sessionTracker.js +0 -170
  1209. package/dist/utils/sessionTracker.js.map +0 -7
  1210. package/dist/utils/simpleMode.js +0 -7
  1211. package/dist/utils/simpleMode.js.map +0 -7
  1212. package/dist/utils/skillLoader.js +0 -230
  1213. package/dist/utils/skillLoader.js.map +0 -7
  1214. package/dist/utils/state.js +0 -24
  1215. package/dist/utils/state.js.map +0 -7
  1216. package/dist/utils/stats.js +0 -417
  1217. package/dist/utils/stats.js.map +0 -7
  1218. package/dist/utils/streamingState.js +0 -62
  1219. package/dist/utils/streamingState.js.map +0 -7
  1220. package/dist/utils/stringSubstitution.js +0 -106
  1221. package/dist/utils/stringSubstitution.js.map +0 -7
  1222. package/dist/utils/style.js +0 -34
  1223. package/dist/utils/style.js.map +0 -7
  1224. package/dist/utils/taskDisplayUtils.js +0 -258
  1225. package/dist/utils/taskDisplayUtils.js.map +0 -7
  1226. package/dist/utils/teamConfig.js +0 -624
  1227. package/dist/utils/teamConfig.js.map +0 -7
  1228. package/dist/utils/terminal.js +0 -59
  1229. package/dist/utils/terminal.js.map +0 -7
  1230. package/dist/utils/theme.js +0 -134
  1231. package/dist/utils/theme.js.map +0 -7
  1232. package/dist/utils/thinking.js +0 -63
  1233. package/dist/utils/thinking.js.map +0 -7
  1234. package/dist/utils/todoChangeCalculator.js +0 -64
  1235. package/dist/utils/todoChangeCalculator.js.map +0 -7
  1236. package/dist/utils/todoStorage.js +0 -413
  1237. package/dist/utils/todoStorage.js.map +0 -7
  1238. package/dist/utils/tokenProgress.js +0 -55
  1239. package/dist/utils/tokenProgress.js.map +0 -7
  1240. package/dist/utils/tokens.js +0 -30
  1241. package/dist/utils/tokens.js.map +0 -7
  1242. package/dist/utils/toolExecutionController.js +0 -109
  1243. package/dist/utils/toolExecutionController.js.map +0 -7
  1244. package/dist/utils/toolRiskClassification.js +0 -210
  1245. package/dist/utils/toolRiskClassification.js.map +0 -7
  1246. package/dist/utils/toolTimeout.js +0 -136
  1247. package/dist/utils/toolTimeout.js.map +0 -7
  1248. package/dist/utils/tooling/safeRender.js +0 -115
  1249. package/dist/utils/tooling/safeRender.js.map +0 -7
  1250. package/dist/utils/tooling/toolError.js +0 -12
  1251. package/dist/utils/tooling/toolError.js.map +0 -7
  1252. package/dist/utils/unaryLogging.js +0 -6
  1253. package/dist/utils/unaryLogging.js.map +0 -7
  1254. package/dist/utils/user.js +0 -40
  1255. package/dist/utils/user.js.map +0 -7
  1256. package/dist/utils/userFriendlyError.js +0 -346
  1257. package/dist/utils/userFriendlyError.js.map +0 -7
  1258. package/dist/utils/validate.js +0 -132
  1259. package/dist/utils/validate.js.map +0 -7
  1260. package/dist/version.js +0 -7
  1261. package/dist/version.js.map +0 -7
  1262. package/dist/yoga.wasm +0 -0
  1263. /package/{dist/utils/vendor → vendor}/ripgrep/arm64-darwin/rg +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/PromptInput.tsx"],
4
- "sourcesContent": ["import { Box, Text, useInput } from 'ink'\nimport { sample } from 'lodash-es'\nimport * as React from 'react'\nimport { type Message } from '@query'\nimport { processUserInput } from '@utils/messages'\nimport { useArrowKeyHistory } from '@hooks/useArrowKeyHistory'\nimport { useUnifiedCompletion } from '@hooks/useUnifiedCompletion'\nimport { useHistorySearch } from '@hooks/useHistorySearch'\nimport { addToHistory, getHistory } from '@history'\nimport {\n cachePaste,\n createPlaceholder,\n expandPlaceholder,\n type PasteCacheEntry,\n} from '@utils/pasteCache'\nimport TextInput from './TextInput'\nimport { HistorySearchOverlay } from './HistorySearchOverlay'\nimport {\n HotkeyHelpPanel,\n ContextAwareHints,\n type InputContext,\n} from './HotkeyHelpPanel'\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { countTokens } from '@utils/tokens'\nimport { SentryErrorBoundary } from './SentryErrorBoundary'\nimport { StartupStatusBar, type StartupItem } from './StartupStatus'\nimport type { Command } from '@commands'\nimport type { SetToolJSXFn, Tool } from '@tool'\nimport { TokenWarning, WARNING_THRESHOLD } from './TokenWarning'\nimport { useTerminalSize } from '@hooks/useTerminalSize'\nimport { getTheme } from '@utils/theme'\nimport { BRAND_GRADIENT, SEMANTIC_COLORS } from '@constants/colors'\nimport { getModelManager, reloadModelManager } from '@utils/model'\nimport { setTerminalTitle, clearScreen } from '@utils/terminal'\nimport terminalSetup, {\n isShiftEnterKeyBindingInstalled,\n handleHashCommand,\n} from '@commands/terminalSetup'\nimport { usePermissionContext } from '@context/PermissionContext'\nimport { getHookManager } from '@utils/hookManager'\nimport { debug as debugLogger } from '@utils/debugLogger'\nimport { PROJECT_FILE } from '@constants/product'\nimport { openInExternalEditor, resolveEditor } from '@utils/externalEditor'\nimport { t } from '@i18n'\n\n// Async function to interpret the '#' command input using AI\nasync function interpretHashCommand(input: string): Promise<string> {\n // Use the AI to interpret the input\n try {\n const { queryQuick } = await import('@services/claude')\n\n // Create a prompt for the model to interpret the hash command\n const systemPrompt = [\n \"You're helping the user structure notes that will be added to their KODING.md file.\",\n \"Format the user's input into a well-structured note that will be useful for later reference.\",\n 'Add appropriate markdown formatting, headings, bullet points, or other structural elements as needed.',\n 'The goal is to transform the raw note into something that will be more useful when reviewed later.',\n 'You should keep the original meaning but make the structure clear.',\n ]\n\n // Send the request to the AI\n const result = await queryQuick({\n systemPrompt,\n userPrompt: `Transform this note for KODING.md: ${input}`,\n })\n\n // Extract the content from the response\n if (typeof result.message.content === 'string') {\n return result.message.content\n } else if (Array.isArray(result.message.content)) {\n return result.message.content\n .filter(block => block.type === 'text')\n .map(block => (block.type === 'text' ? block.text : ''))\n .join('\\n')\n }\n\n return `# ${input}\\n\\n_Added on ${new Date().toLocaleString()}_`\n } catch (e) {\n // If interpretation fails, return the input with minimal formatting\n return `# ${input}\\n\\n_Added on ${new Date().toLocaleString()}_`\n }\n}\n\ntype Props = {\n commands: Command[]\n forkNumber: number\n messageLogName: string\n isDisabled: boolean\n isLoading: boolean\n onQuery: (\n newMessages: Message[],\n abortController?: AbortController,\n ) => Promise<void>\n debug: boolean\n verbose: boolean // Derived from screen mode (screen === 'transcript')\n messages: Message[]\n setToolJSX: SetToolJSXFn\n tools: Tool[]\n input: string\n onInputChange: (value: string) => void\n mode: 'bash' | 'prompt' | 'koding'\n onModeChange: (mode: 'bash' | 'prompt' | 'koding') => void\n submitCount: number\n onSubmitCountChange: (updater: (prev: number) => number) => void\n setIsLoading: (isLoading: boolean) => void\n setAbortController: (abortController: AbortController | null) => void\n onShowMessageSelector: () => void\n setForkConvoWithMessagesOnTheNextRender: (\n forkConvoWithMessages: Message[],\n ) => void\n readFileTimestamps: { [filename: string]: number }\n abortController: AbortController | null\n onModelChange?: () => void\n onShowRewindPanel?: () => void // Double-Esc: show rewind panel\n onToggleTodoPanel?: () => void // Ctrl+T: Toggle TodoPanel\n onToggleThinkingSelector?: () => void // \u2325T: Toggle thinking mode selector\n onToggleScreen?: () => void | Promise<void> // Ctrl+O: Toggle screen mode (prompt \u2194 transcript)\n onToggleShowAllInTranscript?: () => void | Promise<void> // Ctrl+E: Show/hide previous messages in transcript mode\n screen?: 'prompt' | 'transcript' // Current screen mode\n onToggleBackgroundPanel?: () => void // View background tasks\n onToggleTeamPanel?: () => void // Shift+Down: Toggle team panel\n onCycleTeammate?: (direction: 'next' | 'prev') => void // Shift+Down/Up: Cycle teammate focus\n onToggleAgentView?: () => void // Ctrl+J: Toggle agent view\n onKillAllAgents?: () => void // Ctrl+F: Kill all background agents\n backgroundShellCount?: number // Number of active background shells\n isBackgroundPanelOpen?: boolean // Whether background panel is currently visible\n fallbackMode?: boolean // Whether to use limited input mode (raw mode not supported)\n // Message injection: push user guidance into injection channel during active query\n onInjectMessage?: (input: string) => void // Callback to inject message into running query\n onRemoveQueuedMessage?: () => string | undefined // Remove last user message from injection channel (for queue editing)\n injectionPending?: boolean // Whether injection channel has pending messages\n getQueuedUserMessages?: () => string[] // Peek at user messages in injection channel (for visual sync on agent switch)\n // Unified interrupt callback - handles all cleanup when ESC cancels a request\n onInterrupt?: () => void\n // Whether an overlay (like TabbedListView) is active below PromptInput\n isOverlayActive?: boolean\n // Unmount current REPL (for commands that need to replace the entire UI, like /resume)\n unmount?: () => void\n // Startup status items (MCP servers, version check) shown in footer while loading\n startupItems?: StartupItem[]\n // Team member info for inline agent context display\n teamMembers?: { name: string; status: string }[]\n hasActiveTeam?: boolean\n // Focused agent name for placeholder (e.g., \"Message @team-lead...\")\n focusedAgentName?: string | null\n}\n\nfunction getPastedTextPrompt(text: string): string {\n const newlineCount = (text.match(/\\r\\n|\\r|\\n/g) || []).length\n return `[Pasted text #1 +${newlineCount} lines]`\n}\nfunction PromptInput({\n commands,\n forkNumber,\n messageLogName,\n isDisabled,\n isLoading,\n onQuery,\n debug,\n verbose,\n messages,\n setToolJSX,\n tools,\n input,\n onInputChange,\n mode,\n onModeChange,\n submitCount,\n onSubmitCountChange,\n setIsLoading,\n fallbackMode = false,\n abortController,\n setAbortController,\n onShowMessageSelector,\n setForkConvoWithMessagesOnTheNextRender,\n readFileTimestamps,\n onToggleTodoPanel,\n onToggleThinkingSelector,\n onToggleScreen,\n onToggleShowAllInTranscript,\n screen = 'prompt',\n onModelChange,\n onShowRewindPanel,\n onToggleBackgroundPanel,\n onToggleTeamPanel,\n onCycleTeammate,\n onToggleAgentView,\n onKillAllAgents,\n backgroundShellCount = 0,\n isBackgroundPanelOpen = false,\n onInjectMessage,\n onRemoveQueuedMessage,\n injectionPending = false,\n getQueuedUserMessages,\n onInterrupt,\n isOverlayActive = false,\n unmount,\n startupItems,\n teamMembers = [],\n hasActiveTeam = false,\n focusedAgentName,\n}: Props): React.ReactNode {\n const [exitMessage, setExitMessage] = useState<{\n show: boolean\n key?: string\n }>({ show: false })\n const [message, setMessage] = useState<{ show: boolean; text?: string }>({\n show: false,\n })\n const [modelSwitchMessage, setModelSwitchMessage] = useState<{\n show: boolean\n text?: string\n }>({\n show: false,\n })\n const [pastedImage, setPastedImage] = useState<string | null>(null)\n const [placeholder, setPlaceholder] = useState('')\n const [cursorOffset, setCursorOffset] = useState<number>(input.length)\n const [pastedText, setPastedText] = useState<string | null>(null)\n // Store the exact placeholder shown in input, so submit can match it for replacement\n const pastedPlaceholderRef = useRef<string | null>(null)\n\n // Ctrl-D double-tap tracking\n const [ctrlDCount, setCtrlDCount] = useState(0)\n const [ctrlDTimer, setCtrlDTimer] = useState<NodeJS.Timeout | null>(null)\n\n // Esc double-tap tracking for rollback detection\n // Single Esc = immediate action (clear/interrupt), Double Esc = rollback\n const [escCount, setEscCount] = useState(0)\n const [escTimer, setEscTimer] = useState<NodeJS.Timeout | null>(null)\n const ESC_DOUBLE_TAP_WINDOW = 500 // ms\n\n // Ctrl+F double-tap tracking for kill all agents\n const [ctrlFCount, setCtrlFCount] = useState(0)\n const [ctrlFTimer, setCtrlFTimer] = useState<NodeJS.Timeout | null>(null)\n\n // Cleanup timers on unmount to prevent memory leaks\n useEffect(() => {\n return () => {\n if (ctrlDTimer) clearTimeout(ctrlDTimer)\n if (escTimer) clearTimeout(escTimer)\n if (ctrlFTimer) clearTimeout(ctrlFTimer)\n }\n }, [ctrlDTimer, escTimer, ctrlFTimer])\n\n // Hotkey feedback messages (for Ctrl-C, Ctrl-L, Ctrl-O)\n const [hotkeyMessage, setHotkeyMessage] = useState<{\n show: boolean\n text?: string\n }>({ show: false })\n\n // Hotkey help panel visibility\n const [showHotkeyHelp, setShowHotkeyHelp] = useState(false)\n\n // Background task indicator focus state\n const [backgroundIndicatorFocused, setBackgroundIndicatorFocused] =\n useState(false)\n\n // Visual queue: derived from injection channel (single source of truth)\n const queuedMessages = getQueuedUserMessages?.() ?? []\n\n // Permission context for mode management\n const { cycleMode, currentMode, getModeConfig } = usePermissionContext()\n\n // Show temporary feedback when permission mode changes (including back to default)\n const prevModeRef = useRef(currentMode)\n useEffect(() => {\n if (currentMode !== prevModeRef.current) {\n const config = getModeConfig()\n const text =\n currentMode === 'default'\n ? 'default mode (shift+tab to cycle)'\n : `${config.inlineIcon} ${config.inlineLabel} (shift+tab to cycle)`\n setHotkeyMessage({ show: true, text })\n setTimeout(() => setHotkeyMessage({ show: false }), 3000)\n prevModeRef.current = currentMode\n }\n }, [currentMode, getModeConfig])\n\n // useEffect(() => {\n // getExampleCommands().then(commands => {\n // setPlaceholder(`Try \"${sample(commands)}\"`)\n // })\n // }, [])\n\n // Get terminal size once and derive all values from it\n const terminalSize = useTerminalSize()\n const { columns } = terminalSize\n // Calculate text input columns: terminal width - 6 (3 for mode indicator, 3 for padding/borders)\n const textInputColumns = columns - 6\n\n const commandWidth = useMemo(\n () => Math.max(...commands.map(cmd => cmd.userFacingName().length)) + 5,\n [commands],\n )\n\n // Unified completion system - one hook to rule them all (now with terminal behavior)\n const {\n suggestions,\n selectedIndex,\n isActive: completionActive,\n emptyDirMessage,\n } = useUnifiedCompletion({\n input,\n cursorOffset,\n onInputChange,\n setCursorOffset,\n commands,\n onSubmit,\n })\n\n // Phase 3: History search with Ctrl-R\n const history = useMemo(() => getHistory(), [submitCount]) // Refresh on submit\n const historySearch = useHistorySearch(history)\n\n // Get theme early for memoized rendering\n const theme = getTheme()\n\n // Compute current input context for context-aware hints\n const inputContext: InputContext = useMemo(() => {\n if (isLoading) return 'loading'\n if (historySearch.isActive) return 'history_search'\n if (completionActive) return 'completion'\n if (input.startsWith('/')) return 'slash_command'\n if (input.trim().length > 0) return 'typing'\n return 'idle'\n }, [isLoading, historySearch.isActive, completionActive, input])\n\n // Visible window size for suggestions - show limited items with scrolling\n const MAX_VISIBLE_SUGGESTIONS = 8\n\n // Calculate visible window for suggestions (pagination logic)\n const visibleSuggestions = useMemo(() => {\n if (suggestions.length === 0) return []\n\n // If all suggestions fit in window, show them all\n if (suggestions.length <= MAX_VISIBLE_SUGGESTIONS) {\n return suggestions.map((s, i) => ({ ...s, globalIndex: i }))\n }\n\n // Calculate scroll window to keep selected item visible\n const halfWindow = Math.floor(MAX_VISIBLE_SUGGESTIONS / 2)\n let startIndex = Math.max(0, selectedIndex - halfWindow)\n let endIndex = startIndex + MAX_VISIBLE_SUGGESTIONS\n\n // Adjust if we're near the end\n if (endIndex > suggestions.length) {\n endIndex = suggestions.length\n startIndex = Math.max(0, endIndex - MAX_VISIBLE_SUGGESTIONS)\n }\n\n return suggestions\n .slice(startIndex, endIndex)\n .map((s, i) => ({ ...s, globalIndex: startIndex + i }))\n }, [suggestions, selectedIndex])\n\n // Memoized completion suggestions rendering - with scroll indicators\n const renderedSuggestions = useMemo(() => {\n if (suggestions.length === 0) return null\n\n const hasMoreAbove =\n visibleSuggestions.length > 0 && visibleSuggestions[0].globalIndex > 0\n const hasMoreBelow =\n visibleSuggestions.length > 0 &&\n visibleSuggestions[visibleSuggestions.length - 1].globalIndex <\n suggestions.length - 1\n\n return (\n <>\n {hasMoreAbove && (\n <Box>\n <Text color={SEMANTIC_COLORS.dim}>\n {' '}\n \u2191 {visibleSuggestions[0].globalIndex} more above...\n </Text>\n </Box>\n )}\n {visibleSuggestions.map(suggestion => {\n const isSelected = suggestion.globalIndex === selectedIndex\n const isAgent = suggestion.type === 'agent'\n\n // Simple color logic - brand gradient for selection\n const displayColor = isSelected\n ? BRAND_GRADIENT.START\n : isAgent && suggestion.metadata?.color\n ? suggestion.metadata.color\n : undefined\n\n return (\n <Box\n key={`${suggestion.type}-${suggestion.value}-${suggestion.globalIndex}`}\n flexDirection=\"row\"\n >\n <Text\n color={\n displayColor ||\n (!isSelected ? SEMANTIC_COLORS.dim : undefined)\n }\n >\n {isSelected ? '\u25C6 ' : ' '}\n {suggestion.displayValue}\n </Text>\n </Box>\n )\n })}\n {hasMoreBelow && (\n <Box>\n <Text color={SEMANTIC_COLORS.dim}>\n {' '}\n \u2193{' '}\n {suggestions.length -\n visibleSuggestions[visibleSuggestions.length - 1].globalIndex -\n 1}{' '}\n more below...\n </Text>\n </Box>\n )}\n </>\n )\n }, [suggestions, selectedIndex, visibleSuggestions, theme.suggestion])\n\n const onChange = useCallback(\n (value: string) => {\n if (value.startsWith('!')) {\n onModeChange('bash')\n return\n }\n if (value.startsWith('#')) {\n onModeChange('koding')\n return\n }\n onInputChange(value)\n },\n [onModeChange, onInputChange],\n )\n\n // Handle Shift+M model switching with enhanced debugging\n const handleQuickModelSwitch = useCallback(async () => {\n const modelManager = getModelManager()\n const currentTokens = countTokens(messages)\n\n // Get debug info for better error reporting\n const debugInfo = modelManager.getModelSwitchingDebugInfo()\n\n const switchResult = modelManager.switchToNextModel(currentTokens)\n\n if (switchResult.success && switchResult.modelName) {\n // Successful switch - use enhanced message from model manager\n onSubmitCountChange(prev => prev + 1)\n setModelSwitchMessage({\n show: true,\n text:\n switchResult.message || `\u2705 Switched to ${switchResult.modelName}`,\n })\n setTimeout(() => setModelSwitchMessage({ show: false }), 3000)\n } else if (switchResult.blocked && switchResult.message) {\n // Context overflow - show detailed message\n setModelSwitchMessage({\n show: true,\n text: switchResult.message,\n })\n setTimeout(() => setModelSwitchMessage({ show: false }), 5000)\n } else {\n // Enhanced error reporting with debug info\n let errorMessage = switchResult.message\n\n if (!errorMessage) {\n if (debugInfo.totalModels === 0) {\n errorMessage = '\u274C No models configured. Use /model to add models.'\n } else if (debugInfo.activeModels === 0) {\n errorMessage = `\u274C No active models (${debugInfo.totalModels} total, all inactive). Use /model to activate models.`\n } else if (debugInfo.activeModels === 1) {\n // Show ALL models including inactive ones for debugging\n const allModelNames = debugInfo.availableModels\n .map(m => `${m.name}${m.isActive ? '' : ' (inactive)'}`)\n .join(', ')\n errorMessage = `\u26A0\uFE0F Only 1 active model out of ${debugInfo.totalModels} total models: ${allModelNames}. ALL configured models will be activated for switching.`\n } else {\n errorMessage = `\u274C Model switching failed (${debugInfo.activeModels} active, ${debugInfo.totalModels} total models available)`\n }\n }\n\n setModelSwitchMessage({\n show: true,\n text: errorMessage,\n })\n setTimeout(() => setModelSwitchMessage({ show: false }), 6000)\n }\n }, [onSubmitCountChange, messages])\n\n const { resetHistory, onHistoryUp, onHistoryDown } = useArrowKeyHistory(\n (value: string, mode: 'bash' | 'prompt' | 'koding') => {\n onChange(value)\n onModeChange(mode)\n },\n input,\n )\n\n // Only use history navigation when there are no suggestions\n const handleHistoryUp = () => {\n if (completionActive) return\n // If queue has messages and input is empty, pop last message for editing\n if (isLoading && queuedMessages.length > 0 && !input.trim()) {\n // Remove from injection channel (single source of truth) and load into input\n const removed = onRemoveQueuedMessage?.()\n if (removed) {\n onInputChange(removed)\n }\n return\n }\n onHistoryUp()\n }\n\n const handleHistoryDown = () => {\n if (!completionActive) {\n onHistoryDown()\n }\n }\n\n async function onSubmit(input: string, isSubmittingSlashCommand = false) {\n // UserPromptSubmit hook\n const hookManager = getHookManager()\n if (hookManager && input && input.trim()) {\n try {\n const decision = await hookManager.executeUserPromptSubmit(input)\n\n if (!decision.shouldContinue) {\n if (decision.shouldAskUser) {\n // Hook advisory \u2014 log warning and continue (confirm() not available in Node.js terminal)\n process.stderr.write(\n `\\n\u26A0 Hook: ${decision.reason || 'Hook requested pause.'}\\n`,\n )\n } else {\n // Blocked by hook\n setMessage({\n show: true,\n text: decision.reason || 'Blocked by hook',\n })\n setTimeout(() => setMessage({ show: false }), 3000)\n return\n }\n }\n } catch (err) {\n debugLogger.error('UserPromptSubmit hook failed', { error: err })\n // Continue on error (fail-safe)\n }\n }\n\n // Special handling for \"put a verbose summary\" and similar action prompts in koding mode\n if (\n (mode === 'koding' || input.startsWith('#')) &&\n input.match(/^(#\\s*)?(put|create|generate|write|give|provide)/i)\n ) {\n try {\n // Store the original input for history\n const originalInput = input\n\n // Strip the # prefix if present\n const cleanInput = mode === 'koding' ? input : input.substring(1).trim()\n\n // Add to history and clear input field\n addToHistory(mode === 'koding' ? `#${input}` : input)\n onInputChange('')\n\n // Create additional context to inform the assistant this is for KODING.md\n const kodingContext = `The user is using Koding mode. Format your response as a comprehensive, well-structured document suitable for adding to ${PROJECT_FILE}. Use proper markdown formatting with headings, lists, code blocks, etc. The response should be complete and ready to add to ${PROJECT_FILE} documentation.`\n\n // Switch to prompt mode but tag the submission for later capture\n onModeChange('prompt')\n\n // \uD83D\uDD27 Fix Koding mode: clean up previous state\n if (abortController) {\n abortController.abort()\n }\n setIsLoading(false)\n await new Promise(resolve => setTimeout(resolve, 0))\n\n // Set loading state - AbortController now created in onQuery\n setIsLoading(true)\n\n // Process as a normal user input but with special handling\n const messages = await processUserInput(\n cleanInput,\n 'prompt', // Use prompt mode for processing\n setToolJSX,\n {\n options: {\n commands,\n forkNumber,\n messageLogName,\n tools,\n verbose,\n maxThinkingTokens: 0,\n // Add context flag for koding mode\n isKodingRequest: true,\n kodingContext,\n },\n messageId: undefined,\n abortController: abortController || new AbortController(), // Temporary controller, actual one created in onQuery\n readFileTimestamps,\n setForkConvoWithMessagesOnTheNextRender,\n unmount: unmount || (() => {}),\n },\n pastedImage ?? null,\n )\n\n // Send query and capture response\n if (messages.length) {\n await onQuery(messages)\n\n // After query completes, the last message should be the assistant's response\n // We'll set up a one-time listener to capture and save that response\n // This will be handled by the REPL component or message handler\n }\n\n return\n } catch (e) {\n // If something fails, log the error\n console.error('Error processing Koding request:', e)\n }\n }\n\n // If in koding mode or input starts with '#', interpret it using AI before appending to MINTO.md\n else if (mode === 'koding' || input.startsWith('#')) {\n try {\n // Strip the # if we're in koding mode and the user didn't type it (since it's implied)\n const contentToInterpret =\n mode === 'koding' && !input.startsWith('#')\n ? input.trim()\n : input.substring(1).trim()\n\n const interpreted = await interpretHashCommand(contentToInterpret)\n handleHashCommand(interpreted)\n } catch (e) {\n // If interpretation fails, log the error\n }\n onInputChange('')\n addToHistory(mode === 'koding' ? `#${input}` : input)\n onModeChange('prompt')\n return\n }\n if (input === '') {\n return\n }\n if (isDisabled) {\n return\n }\n\n // Intercept exit commands FIRST \u2014 must run before isLoading/injection check\n // so that \"quit\" always exits, even during an active query.\n // exit() uses dynamic import (async), so we must return immediately to\n // prevent the code from continuing to send the input as a normal message.\n const exitCommands = [\n 'exit',\n 'quit',\n ':q',\n ':q!',\n ':wq',\n ':wq!',\n '/exit',\n '/quit',\n '/q',\n ]\n if (exitCommands.includes(input.trim())) {\n exit()\n return\n }\n\n // Queue user messages during active query \u2014 push to injection channel (single source of truth)\n if (isLoading) {\n if (onInjectMessage && input.trim()) {\n onInjectMessage(input.trim())\n onInputChange('')\n }\n return\n }\n\n // Handle Enter key when completions are active\n // If there are suggestions showing, Enter should complete the selection, not send the message\n if (suggestions.length > 0 && completionActive) {\n // The completion is handled by useUnifiedCompletion hook\n // Just return to prevent message sending\n return\n }\n\n let finalInput = input\n if (pastedText) {\n // Use the exact placeholder that was inserted into the input field\n const storedPlaceholder = pastedPlaceholderRef.current\n if (storedPlaceholder && finalInput.includes(storedPlaceholder)) {\n finalInput = finalInput.replace(storedPlaceholder, pastedText)\n } else {\n // Fallback: try the standard prompt format\n const pastedPrompt = getPastedTextPrompt(pastedText)\n if (finalInput.includes(pastedPrompt)) {\n finalInput = finalInput.replace(pastedPrompt, pastedText)\n }\n }\n }\n\n onInputChange('')\n onModeChange('prompt')\n // Suggestions are now handled by unified completion\n setPastedImage(null)\n setPastedText(null)\n pastedPlaceholderRef.current = null\n onSubmitCountChange(_ => _ + 1)\n\n setIsLoading(true)\n\n const newAbortController = new AbortController()\n setAbortController(newAbortController)\n\n const messages = await processUserInput(\n finalInput,\n mode,\n setToolJSX,\n {\n options: {\n commands,\n forkNumber,\n messageLogName,\n tools,\n verbose,\n maxThinkingTokens: 0,\n },\n messageId: undefined,\n abortController: newAbortController,\n readFileTimestamps,\n setForkConvoWithMessagesOnTheNextRender,\n unmount: unmount || (() => {}),\n },\n pastedImage ?? null,\n )\n\n if (messages.length) {\n onQuery(messages, newAbortController)\n } else {\n // Local JSX commands\n addToHistory(input)\n resetHistory()\n return\n }\n\n for (const message of messages) {\n if (message.type === 'user') {\n const inputToAdd = mode === 'bash' ? `!${input}` : input\n addToHistory(inputToAdd)\n resetHistory()\n }\n }\n }\n\n function onImagePaste(image: string) {\n onModeChange('prompt')\n setPastedImage(image)\n }\n\n function onTextPaste(rawText: string) {\n // Replace any \\r with \\n first to match useTextInput's conversion behavior\n const text = rawText.replace(/\\r/g, '\\n')\n\n // Try to cache large paste content (> 1000 chars)\n const cacheEntry = cachePaste(text)\n\n // Generate a unified placeholder (CC-style for both cached and non-cached)\n let pastedPrompt: string\n if (cacheEntry) {\n // Use CC-style placeholder for large pastes\n pastedPrompt = createPlaceholder(cacheEntry)\n debugLogger.trace('PASTE_CACHED', {\n length: text.length,\n hash: cacheEntry.hash.slice(0, 8),\n })\n } else {\n // Use standard prompt for smaller pastes\n pastedPrompt = getPastedTextPrompt(text)\n }\n\n // Store the exact placeholder for matching on submit\n pastedPlaceholderRef.current = pastedPrompt\n\n // Update the input with a visual indicator that text has been pasted\n const newInput =\n input.slice(0, cursorOffset) + pastedPrompt + input.slice(cursorOffset)\n onInputChange(newInput)\n\n // Update cursor position to be after the inserted indicator\n setCursorOffset(cursorOffset + pastedPrompt.length)\n\n // Still set the pastedText state for actual submission\n setPastedText(text)\n }\n\n // IMPORTANT: useInput must be called unconditionally (React Hook rule)\n // In fallback mode, we provide an empty handler to satisfy the Hook requirement\n useInput(\n fallbackMode\n ? () => {} // Fallback mode: no-op handler\n : (inputChar, key) => {\n // ========== NORMAL MODE: Full interactive input handling ==========\n // ========== NEW HOTKEYS (Phase 1) ==========\n\n // Ctrl-C: Enhanced cancel/interrupt\n if (key.ctrl && inputChar === 'c') {\n if (isLoading) {\n // Cancel ongoing request\n if (abortController && !abortController.signal.aborted) {\n abortController.abort()\n }\n setIsLoading(false)\n setHotkeyMessage({\n show: true,\n text: t('prompts.interruptedCtrlC'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n } else if (input.length > 0) {\n // Clear input\n onInputChange('')\n setHotkeyMessage({ show: true, text: t('prompts.inputCleared') })\n setTimeout(() => setHotkeyMessage({ show: false }), 1000)\n } else {\n // Hint for exit (optional: could implement double Ctrl-C to exit)\n setHotkeyMessage({\n show: true,\n text: t('prompts.pressCtrlDToExit'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n }\n return true\n }\n\n // ESC interrupt is now handled in handleSpecialKey (passed to TextInput)\n // TextInput's internal handler clears input on double-ESC\n // We only need to handle interrupt here as a fallback when input is empty\n\n // Ctrl-D: Graceful EOF exit (double-tap safety)\n if (key.ctrl && inputChar === 'd') {\n if (input.length > 0) {\n // If there's input, just clear it\n onInputChange('')\n setHotkeyMessage({\n show: true,\n text: t('prompts.inputClearedCtrlD'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 1000)\n return true\n }\n\n // Empty input: increment Ctrl-D count for double-tap safety\n setCtrlDCount(prev => prev + 1)\n\n if (ctrlDTimer) clearTimeout(ctrlDTimer)\n const timer = setTimeout(() => setCtrlDCount(0), 1000)\n setCtrlDTimer(timer)\n\n if (ctrlDCount >= 1) {\n // Second Ctrl-D: graceful exit\n setHotkeyMessage({\n show: true,\n text: t('prompts.exitingGracefully'),\n })\n setTimeout(() => exit(), 500)\n } else {\n // First Ctrl-D: show hint\n setHotkeyMessage({\n show: true,\n text: t('prompts.pressCtrlDAgain'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n }\n\n return true\n }\n\n // Ctrl-L: Clear screen\n if (key.ctrl && inputChar === 'l') {\n clearScreen()\n setHotkeyMessage({ show: true, text: t('prompts.screenCleared') })\n setTimeout(() => setHotkeyMessage({ show: false }), 1000)\n return true\n }\n\n // Ctrl-O: Toggle screen mode (prompt \u2194 transcript)\n if (key.ctrl && inputChar === 'o') {\n onToggleScreen?.()\n return true\n }\n\n // Ctrl-E: Show/hide previous messages (only in transcript mode)\n if (key.ctrl && inputChar === 'e' && screen === 'transcript') {\n onToggleShowAllInTranscript?.()\n return true\n }\n\n // Ctrl+T: Toggle TodoPanel visibility (aligned with Claude Code)\n if (key.ctrl && inputChar === 't') {\n if (onToggleTodoPanel) {\n onToggleTodoPanel()\n setHotkeyMessage({\n show: true,\n text: t('prompts.todoPanelToggled'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n }\n return true\n }\n\n // Phase 4.3: Ctrl-B: Quick bash command execution\n // Note: Moving to background is handled by StreamingBashOutput component\n if (key.ctrl && inputChar === 'b') {\n if (!input || input.trim().length === 0) {\n setHotkeyMessage({\n show: true,\n text: t('prompts.typeCommandFirst'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n return true\n }\n\n // If already in bash mode (starts with !), just submit\n if (mode === 'bash') {\n setHotkeyMessage({\n show: true,\n text: t('prompts.executingBash'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 1000)\n // Let it submit normally via Enter handling\n onSubmit(input)\n return true\n }\n\n // Otherwise, convert to bash command and submit\n const bashCommand = `!${input}`\n setHotkeyMessage({\n show: true,\n text: 'Executing bash command... (Ctrl-B)',\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 1000)\n\n // Submit as bash command\n onSubmit(bashCommand)\n return true\n }\n\n // Ctrl+G: Open external editor for prompt composition\n if (key.ctrl && inputChar === 'g') {\n if (isLoading) return true // Don't open editor while loading\n\n const { name: editorName } = resolveEditor()\n setHotkeyMessage({\n show: true,\n text: t('prompts.openingEditor', { editor: editorName }),\n })\n\n // Use setTimeout(0) to let Ink render the message before\n // we release raw mode and hand off to the editor\n setTimeout(() => {\n try {\n const result = openInExternalEditor(input)\n if (result !== null) {\n // Editor returned new content \u2014 replace input\n onInputChange(result)\n setCursorOffset(result.length)\n setHotkeyMessage({\n show: true,\n text: t('prompts.editorDone'),\n })\n } else {\n setHotkeyMessage({\n show: true,\n text: t('prompts.editorNoChange'),\n })\n }\n } catch {\n setHotkeyMessage({\n show: true,\n text: t('prompts.editorFailed', { editor: editorName }),\n })\n }\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n }, 0)\n\n return true\n }\n\n // Ctrl+? or Ctrl+/: Toggle hotkey help panel\n if (key.ctrl && (inputChar === '?' || inputChar === '/')) {\n setShowHotkeyHelp(prev => !prev)\n return true\n }\n\n // Phase 3: Ctrl-R: Reverse history search\n if (key.ctrl && inputChar === 'r') {\n if (!historySearch.isActive) {\n // Activate history search\n historySearch.activate()\n return true\n }\n // If already active, cycle to next match (move up in history)\n historySearch.moveUp()\n return true\n }\n\n // History search mode: handle special keys\n if (historySearch.isActive) {\n // Esc: Cancel search\n if (key.escape) {\n historySearch.reset()\n return true\n }\n\n // Enter: Select current item and exit search\n if (key.return) {\n if (historySearch.selectedItem) {\n onInputChange(historySearch.selectedItem)\n }\n historySearch.reset()\n return true\n }\n\n // Up/Down: Navigate through results\n if (key.upArrow) {\n historySearch.moveUp()\n return true\n }\n if (key.downArrow) {\n historySearch.moveDown()\n return true\n }\n\n // Any other character: Update search term\n if (inputChar && !key.ctrl && !key.meta) {\n historySearch.setSearchTerm(historySearch.searchTerm + inputChar)\n return true\n }\n\n // Backspace: Remove character from search\n if (key.backspace || key.delete) {\n if (historySearch.searchTerm.length > 0) {\n historySearch.setSearchTerm(\n historySearch.searchTerm.slice(0, -1),\n )\n } else {\n // No search term, cancel search\n historySearch.reset()\n }\n return true\n }\n }\n\n // Background task indicator navigation\n if (backgroundIndicatorFocused) {\n // Up arrow: return focus to input\n if (key.upArrow) {\n setBackgroundIndicatorFocused(false)\n return true\n }\n\n // Enter: open background tasks panel\n if (key.return) {\n if (onToggleBackgroundPanel) {\n onToggleBackgroundPanel()\n }\n setBackgroundIndicatorFocused(false)\n return true\n }\n\n // Esc: unfocus indicator\n if (key.escape) {\n setBackgroundIndicatorFocused(false)\n return true\n }\n\n return true // Consume all other input when indicator is focused\n }\n\n // Down arrow when input is active: focus background indicator if it exists\n if (key.downArrow && backgroundShellCount > 0 && !completionActive) {\n setBackgroundIndicatorFocused(true)\n return true\n }\n\n // ========== EXISTING HOTKEYS ==========\n\n // Shift+Down: Now handled in handleSpecialKey (before TextInput processes keys)\n\n // For bash mode, only exit when deleting the last character (which would be the '!' character)\n if (mode === 'bash' && (key.backspace || key.delete)) {\n // Check the current input state, not the inputChar parameter\n // If current input is empty, we're about to delete the '!' character, so exit bash mode\n if (input === '') {\n onModeChange('prompt')\n }\n return undefined\n }\n\n // For koding mode, only exit when deleting the last character (which would be the '#' character)\n if (mode === 'koding' && (key.backspace || key.delete)) {\n // Check the current input state, not the inputChar parameter\n // If current input is empty, we're about to delete the '#' character, so exit koding mode\n if (input === '') {\n onModeChange('prompt')\n }\n return undefined\n }\n\n // For other modes, keep the original behavior\n if (inputChar === '' && (key.escape || key.backspace || key.delete)) {\n onModeChange('prompt')\n }\n\n // NOTE: ESC handling is in handleSpecialKey callback\n // Single Esc = clear input / interrupt task\n // Double Esc = rollback conversation\n\n // \u2325T (Option+T): Open thinking mode selector\n if (key.meta && inputChar === 't') {\n onToggleThinkingSelector?.()\n return true // Explicitly handled\n }\n\n // Shift+Tab for mode cycling (retains legacy keyboard behavior)\n if (key.shift && key.tab) {\n cycleMode()\n return true // Explicitly handled\n }\n\n return false // Not handled, allow other hooks\n },\n { isActive: !isBackgroundPanelOpen && !fallbackMode && !isOverlayActive },\n )\n\n // Handle special key combinations before character input\n // This runs BEFORE TextInput's internal handling, preventing double-processing\n // ESC handling is consolidated here - no separate useCancelRequest hook needed\n const handleSpecialKey = useCallback(\n (inputChar: string, key: any): boolean => {\n // Shift+Down: Toggle team panel (expand/collapse agent list)\n if (key.downArrow && key.shift && !key.ctrl && !key.meta) {\n onToggleTeamPanel?.()\n return true\n }\n\n // Shift+Up: Also toggle team panel (symmetric with Shift+Down)\n if (key.upArrow && key.shift && !key.ctrl && !key.meta) {\n onToggleTeamPanel?.()\n return true\n }\n\n // Ctrl+J: Toggle agent view\n if (key.ctrl && inputChar === 'j') {\n if (hasActiveTeam && onToggleAgentView) {\n onToggleAgentView()\n }\n return true\n }\n\n // Ctrl+F: Kill all background agents (double-tap safety)\n if (key.ctrl && inputChar === 'f') {\n if (hasActiveTeam && onKillAllAgents) {\n setCtrlFCount(prev => prev + 1)\n if (ctrlFTimer) clearTimeout(ctrlFTimer)\n const timer = setTimeout(() => setCtrlFCount(0), 2000)\n setCtrlFTimer(timer)\n\n if (ctrlFCount >= 1) {\n // Second press within 2s: kill all\n setCtrlFCount(0)\n onKillAllAgents()\n setHotkeyMessage({\n show: true,\n text: t('prompts.allAgentsKilled'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n } else {\n // First press: show confirmation\n setHotkeyMessage({\n show: true,\n text: t('prompts.pressCtrlFAgain'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n }\n return true\n }\n return false // Let Ctrl+F pass through when no active team\n }\n\n // Shift+M for model switching - only when input is empty to avoid conflict with typing uppercase \"M\"\n if (\n key.shift &&\n (inputChar === 'M' || inputChar === 'm') &&\n input.length === 0\n ) {\n handleQuickModelSwitch()\n return true // Prevent character from being input\n }\n\n // ESC: Single tap = immediate action, Double tap = rollback\n // Priority: completion/overlay Esc > single Esc (clear/interrupt) > double Esc (rollback)\n if (key.escape) {\n // Don't handle Esc when completion popup is active \u2014 let it close first\n if (completionActive) {\n return false\n }\n\n // Double-tap detection for rollback\n const newEscCount = escCount + 1\n setEscCount(newEscCount)\n\n if (escTimer) clearTimeout(escTimer)\n const timer = setTimeout(() => setEscCount(0), ESC_DOUBLE_TAP_WINDOW)\n setEscTimer(timer)\n\n if (newEscCount >= 2) {\n // Double Esc: Show rewind panel\n setEscCount(0)\n onShowRewindPanel?.()\n return true\n }\n\n // Single Esc: immediate action based on current state\n if (input.length > 0) {\n // Clear input\n onInputChange('')\n setHotkeyMessage({\n show: true,\n text: t('prompts.inputClearedEsc'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 1000)\n } else if (isLoading && onInterrupt) {\n // Interrupt running task\n onInterrupt()\n setHotkeyMessage({\n show: true,\n text: t('prompts.interruptedEsc'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n } else {\n // Idle + empty input: show rewind hint\n setHotkeyMessage({\n show: true,\n text: t('prompts.escEscToRollback'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 1500)\n }\n\n return true\n }\n\n return false // Not handled, allow normal processing\n },\n [\n handleQuickModelSwitch,\n isLoading,\n input.length,\n onInputChange,\n onInterrupt,\n onShowRewindPanel,\n onToggleTeamPanel,\n onCycleTeammate,\n onToggleAgentView,\n onKillAllAgents,\n hasActiveTeam,\n completionActive,\n escCount,\n escTimer,\n ctrlFCount,\n ctrlFTimer,\n ],\n )\n\n // textInputColumns is now calculated at the top of the component from terminalSize\n const tokenUsage = useMemo(() => countTokens(messages), [messages])\n\n // \uD83D\uDD27 Fix: Track model ID changes to detect external config updates\n const modelManager = getModelManager()\n const currentModelId = (modelManager.getModel('main') as any)?.id || null\n\n const modelInfo = useMemo(() => {\n // Force fresh ModelManager instance to detect config changes\n const freshModelManager = getModelManager()\n const currentModel = freshModelManager.getModel('main')\n if (!currentModel) {\n return null\n }\n\n return {\n name: currentModel.modelName, // \uD83D\uDD27 Fix: Use actual model name, not display name\n id: (currentModel as any).id, // \u6DFB\u52A0\u6A21\u578BID\u7528\u4E8E\u8C03\u8BD5\n provider: currentModel.provider, // \u6DFB\u52A0\u63D0\u4F9B\u5546\u4FE1\u606F\n contextLength: currentModel.contextLength,\n currentTokens: tokenUsage,\n }\n }, [tokenUsage, modelSwitchMessage.show, submitCount, currentModelId]) // Track model ID to detect config changes\n\n return (\n <Box flexDirection=\"column\">\n {/* Fallback mode warning */}\n {fallbackMode && (\n <Box marginBottom={1}>\n <Text color={SEMANTIC_COLORS.running}>\n {t('prompts.limitedInputMode')}\n </Text>\n <Text color={SEMANTIC_COLORS.dim}>\n {' '}\n ({t('prompts.limitedInputModeDetail')})\n </Text>\n </Box>\n )}\n\n {/* Hotkey help panel */}\n {showHotkeyHelp && (\n <HotkeyHelpPanel\n isVisible={showHotkeyHelp}\n onClose={() => setShowHotkeyHelp(false)}\n hasActiveTeam={hasActiveTeam}\n />\n )}\n\n {/* Phase 3: History search overlay */}\n {historySearch.isActive && (\n <HistorySearchOverlay\n searchTerm={historySearch.searchTerm}\n results={historySearch.filteredResults}\n selectedIndex={historySearch.selectedIndex}\n />\n )}\n\n {/* AI \u6A21\u578B\u4FE1\u606F - \u53F3\u4E0A\u89D2\u663E\u793A\uFF0C\u4F7F\u7528\u54C1\u724C\u914D\u8272 */}\n {modelInfo && (\n <Box justifyContent=\"flex-end\" marginBottom={1}>\n <Text color={SEMANTIC_COLORS.dim}>\n <Text color={BRAND_GRADIENT.START}>\u25C6</Text>{' '}\n <Text color={SEMANTIC_COLORS.secondary}>{modelInfo.name}</Text>\n <Text color={SEMANTIC_COLORS.dim}>\n {' '}\n \u00B7 {Math.round(modelInfo.currentTokens / 1000)}k /{' '}\n {Math.round(modelInfo.contextLength / 1000)}k\n </Text>\n </Text>\n </Box>\n )}\n\n {/* Visual queue: show queued messages above the input box (CC-compatible) */}\n {isLoading && queuedMessages.length > 0 && (\n <Box flexDirection=\"column\" paddingLeft={2} marginTop={0}>\n {queuedMessages.map((msg, i) => (\n <Box key={i}>\n <Text color={SEMANTIC_COLORS.dim}>\n <Text color={BRAND_GRADIENT.START}>\u276F</Text> {msg}\n </Text>\n </Box>\n ))}\n </Box>\n )}\n\n {/* Input box with top/bottom borders only (no side borders) */}\n <Box\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n borderTop={true}\n borderBottom={true}\n borderLeft={false}\n borderRight={false}\n borderColor={\n isOverlayActive\n ? SEMANTIC_COLORS.muted\n : mode === 'bash'\n ? SEMANTIC_COLORS.running\n : mode === 'koding'\n ? SEMANTIC_COLORS.info\n : BRAND_GRADIENT.START\n }\n borderDimColor={false}\n borderStyle=\"single\"\n marginTop={1}\n width=\"100%\"\n >\n <Box\n alignItems=\"flex-start\"\n alignSelf=\"flex-start\"\n flexWrap=\"nowrap\"\n justifyContent=\"flex-start\"\n width={3}\n >\n {mode === 'bash' ? (\n <Text color={SEMANTIC_COLORS.running}>&nbsp;!&nbsp;</Text>\n ) : mode === 'koding' ? (\n <Text color={SEMANTIC_COLORS.info}>&nbsp;#&nbsp;</Text>\n ) : (\n <Text\n color={\n isOverlayActive\n ? SEMANTIC_COLORS.muted\n : isLoading\n ? SEMANTIC_COLORS.dim\n : BRAND_GRADIENT.START\n }\n bold={!isOverlayActive}\n >\n &nbsp;\u276F&nbsp;\n </Text>\n )}\n </Box>\n <Box paddingRight={1}>\n <TextInput\n multiline\n focus={\n !isBackgroundPanelOpen &&\n !isOverlayActive &&\n (!isLoading || !!onInjectMessage)\n }\n onSubmit={onSubmit}\n onChange={onChange}\n value={input}\n onHistoryUp={handleHistoryUp}\n onHistoryDown={handleHistoryDown}\n onHistoryReset={() => resetHistory()}\n placeholder={\n isLoading && queuedMessages.length > 0\n ? t('ui.hints.pressUpToEditQueue')\n : focusedAgentName\n ? `Message @${focusedAgentName}...`\n : submitCount > 0\n ? undefined\n : placeholder\n }\n onExit={() => process.exit(0)}\n onExitMessage={(show, key) => setExitMessage({ show, key })}\n onMessage={(show, text) => setMessage({ show, text })}\n onImagePaste={onImagePaste}\n columns={textInputColumns}\n isDimmed={isDisabled || (isLoading && !onInjectMessage)}\n disableCursorMovementForUpDownKeys={completionActive}\n cursorOffset={cursorOffset}\n onChangeCursorOffset={setCursorOffset}\n onPaste={onTextPaste}\n onSpecialKey={handleSpecialKey}\n />\n </Box>\n </Box>\n {!completionActive && suggestions.length === 0 && (\n <Box\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n paddingX={2}\n paddingY={0}\n >\n <Box justifyContent=\"flex-start\" gap={1}>\n {exitMessage.show ? (\n <Text color={SEMANTIC_COLORS.dim}>\n {t('prompts.pressCtrlDAgain')}\n </Text>\n ) : message.show ? (\n <Text color={SEMANTIC_COLORS.dim}>{message.text}</Text>\n ) : hotkeyMessage.show ? (\n <Text color={BRAND_GRADIENT.START}>{hotkeyMessage.text}</Text>\n ) : modelSwitchMessage.show ? (\n <Text color={BRAND_GRADIENT.START}>\n {modelSwitchMessage.text}\n </Text>\n ) : verbose ? (\n // Verbose mode: full static hints (\u5546\u52A1\u7528\u6237\u53CB\u597D) - \u4F7F\u7528\u54C1\u724C\u914D\u8272\n <>\n <Text\n color={\n mode === 'bash'\n ? BRAND_GRADIENT.MIDDLE\n : SEMANTIC_COLORS.dim\n }\n >\n <Text\n color={\n mode === 'bash'\n ? BRAND_GRADIENT.MIDDLE\n : SEMANTIC_COLORS.secondary\n }\n >\n !\n </Text>{' '}\n {t('ui.hints.executeCommand')}\n </Text>\n <Text\n color={\n mode === 'koding'\n ? SEMANTIC_COLORS.info\n : SEMANTIC_COLORS.dim\n }\n >\n \u00B7{' '}\n <Text\n color={\n mode === 'koding'\n ? SEMANTIC_COLORS.info\n : SEMANTIC_COLORS.secondary\n }\n >\n #\n </Text>{' '}\n {t('ui.hints.recordNote')}\n </Text>\n <Text color={SEMANTIC_COLORS.dim}>\n \u00B7 <Text color={SEMANTIC_COLORS.secondary}>/</Text>{' '}\n {t('ui.hints.featureMenu')} \u00B7{' '}\n <Text color={SEMANTIC_COLORS.secondary}>ctrl+?</Text>{' '}\n {t('common.help')}\n </Text>\n {backgroundShellCount > 0 && (\n <Text\n color={\n backgroundIndicatorFocused\n ? BRAND_GRADIENT.START\n : BRAND_GRADIENT.MIDDLE\n }\n backgroundColor={\n backgroundIndicatorFocused\n ? BRAND_GRADIENT.START\n : undefined\n }\n >\n \u00B7 {backgroundIndicatorFocused ? '\u25BA ' : ''}\n {t('ui.hints.backgroundTasks', {\n count: backgroundShellCount,\n })}\n </Text>\n )}\n {injectionPending && (\n <Text color={BRAND_GRADIENT.MIDDLE}>\n \u00B7 {t('ui.hints.injectionPending')}\n </Text>\n )}\n {hasActiveTeam &&\n teamMembers.filter(m => m.status !== 'stopped').length >\n 0 && (\n <Text color={BRAND_GRADIENT.MIDDLE}>\n \u00B7{' '}\n {teamMembers\n .filter(m => m.status !== 'stopped')\n .map(m => `@${m.name}`)\n .join(' ')}\n \u00B7 {teamMembers.filter(m => m.status === 'working').length}{' '}\n active \u00B7 shift+\u2193 to expand\n </Text>\n )}\n </>\n ) : (\n // Normal mode: context-aware hints with 0.1.7 style\n <>\n <ContextAwareHints context={inputContext} compact />\n {backgroundShellCount > 0 && (\n <Text\n color={\n backgroundIndicatorFocused\n ? BRAND_GRADIENT.START\n : BRAND_GRADIENT.MIDDLE\n }\n backgroundColor={\n backgroundIndicatorFocused\n ? BRAND_GRADIENT.START\n : undefined\n }\n >\n \u2502 {backgroundIndicatorFocused ? '\u25BA ' : ''}\n {t('ui.hints.backgroundTasks', {\n count: backgroundShellCount,\n })}\n </Text>\n )}\n {injectionPending && (\n <Text color={BRAND_GRADIENT.MIDDLE}>\n \u2502 {t('ui.hints.injectionPending')}\n </Text>\n )}\n {hasActiveTeam &&\n teamMembers.filter(m => m.status !== 'stopped').length >\n 0 && (\n <Text color={BRAND_GRADIENT.MIDDLE}>\n \u2502{' '}\n {teamMembers\n .filter(m => m.status !== 'stopped')\n .map(m => `@${m.name}`)\n .join(' ')}\n \u00B7 {teamMembers.filter(m => m.status === 'working').length}{' '}\n active \u00B7 shift+\u2193 to expand\n </Text>\n )}\n </>\n )}\n </Box>\n <SentryErrorBoundary\n children={\n <Box justifyContent=\"flex-end\" gap={1}>\n {/* Startup status in footer while loading, then normal newline hint */}\n {startupItems?.some(s => s.status === 'loading') ? (\n <StartupStatusBar items={startupItems} />\n ) : (\n !debug &&\n tokenUsage < WARNING_THRESHOLD && (\n <>\n {/* Compact persistent mode badge for non-default modes */}\n {currentMode !== 'default' &&\n (() => {\n const mc = getModeConfig()\n return (\n <Text color={mc.inlineColor}>\n {mc.inlineIcon} {mc.compactLabel} \u00B7\n </Text>\n )\n })()}\n <Text color={SEMANTIC_COLORS.dim}>\n <Text color={SEMANTIC_COLORS.secondary}>\n {terminalSetup.isEnabled &&\n isShiftEnterKeyBindingInstalled()\n ? 'shift + \u23CE'\n : '\\\\\u23CE'}\n </Text>{' '}\n {t('ui.hints.forNewline')}\n </Text>\n </>\n )\n )}\n <TokenWarning tokenUsage={tokenUsage} />\n </Box>\n }\n />\n </Box>\n )}\n\n {/* Unified completion suggestions - optimized rendering */}\n {suggestions.length > 0 && (\n <Box\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n paddingX={2}\n paddingY={0}\n >\n <Box flexDirection=\"column\">\n {renderedSuggestions}\n\n {/* \u7B80\u6D01\u64CD\u4F5C\u63D0\u793A\u6846 - \u5305\u542B\u5217\u8868\u4F4D\u7F6E\u4FE1\u606F\uFF0C\u4F7F\u7528\u54C1\u724C\u914D\u8272 */}\n <Box\n marginTop={1}\n paddingX={3}\n borderStyle=\"round\"\n borderColor={BRAND_GRADIENT.START}\n >\n <Text\n color={\n emptyDirMessage ? BRAND_GRADIENT.END : SEMANTIC_COLORS.dim\n }\n >\n {emptyDirMessage ||\n (() => {\n const selected = suggestions[selectedIndex]\n const positionInfo =\n suggestions.length > 1\n ? `[${selectedIndex + 1}/${suggestions.length}] `\n : ''\n\n if (!selected) {\n return `${positionInfo}${t('ui.hints.completion.navigate')}`\n }\n if (selected?.value.endsWith('/')) {\n return `${positionInfo}${t('ui.hints.completion.enterDirectory')}`\n } else if (selected?.type === 'agent') {\n return `${positionInfo}${t('ui.hints.completion.selectAgent')}`\n } else {\n return `${positionInfo}${t('ui.hints.completion.insertReference')}`\n }\n })()}\n </Text>\n </Box>\n </Box>\n <SentryErrorBoundary\n children={\n <Box justifyContent=\"flex-end\" gap={1}>\n <TokenWarning tokenUsage={countTokens(messages)} />\n </Box>\n }\n />\n </Box>\n )}\n </Box>\n )\n}\n\nexport default memo(PromptInput)\n\n// Graceful exit: shuts down MCP clients, kills child processes, then exits.\n// Cost summary is printed by useCostSummary's signal-exit handler.\n// NOTE: gracefulExit is async but always calls process.exit() internally,\n// so the process will terminate even though we fire-and-forget here.\nfunction exit(): void {\n setTerminalTitle('')\n // Dynamic import to avoid circular deps at module load time\n import('@utils/exit').then(({ gracefulExit }) => gracefulExit(0))\n}\n"],
5
- "mappings": "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",
6
- "names": ["modelManager", "mode", "input", "messages", "message"]
7
- }
@@ -1,44 +0,0 @@
1
- import React, { useRef } from "react";
2
- import { Text } from "ink";
3
- import { BRAND_GRADIENT } from "../constants/colors.js";
4
- import { useUnifiedAnimation } from "../utils/animationManager.js";
5
- const CHARACTERS = process.platform === "darwin" ? ["\xB7", "\u2722", "\u2733", "\u2217", "\u273B", "\u273D"] : ["\xB7", "\u2722", "*", "\u2217", "\u273B", "\u273D"];
6
- const SPINNER_FRAMES = [...CHARACTERS, ...[...CHARACTERS].reverse()];
7
- function lerpColor(a, b, t) {
8
- const ha = parseInt(a.replace("#", ""), 16);
9
- const hb = parseInt(b.replace("#", ""), 16);
10
- const rA = ha >> 16 & 255, gA = ha >> 8 & 255, bA = ha & 255;
11
- const rB = hb >> 16 & 255, gB = hb >> 8 & 255, bB = hb & 255;
12
- const r = Math.round(rA + (rB - rA) * t);
13
- const g = Math.round(gA + (gB - gA) * t);
14
- const bl = Math.round(bA + (bB - bA) * t);
15
- return `#${(1 << 24 | r << 16 | g << 8 | bl).toString(16).slice(1)}`;
16
- }
17
- const COLOR_STEPS = SPINNER_FRAMES.length;
18
- const PULSE_TABLE = Array.from(
19
- { length: COLOR_STEPS },
20
- (_, i) => Math.sin(i / (COLOR_STEPS - 1) * Math.PI)
21
- );
22
- const COLOR_DIM = "#555555";
23
- function PulseLabel({
24
- label,
25
- bright = BRAND_GRADIENT.MIDDLE,
26
- dim = COLOR_DIM,
27
- isActive = true,
28
- id = "pulse-label"
29
- }) {
30
- const startTimeRef = useRef(Date.now());
31
- const { spinnerFrame } = useUnifiedAnimation({
32
- enabled: isActive,
33
- startTime: startTimeRef.current,
34
- spinnerFrameCount: SPINNER_FRAMES.length,
35
- componentId: id
36
- });
37
- const color = isActive ? lerpColor(dim, bright, PULSE_TABLE[spinnerFrame] ?? 0) : bright;
38
- const char = SPINNER_FRAMES[spinnerFrame] ?? SPINNER_FRAMES[0];
39
- return /* @__PURE__ */ React.createElement(Text, { color }, char, " ", label);
40
- }
41
- export {
42
- PulseLabel
43
- };
44
- //# sourceMappingURL=PulseLabel.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/PulseLabel.tsx"],
4
- "sourcesContent": ["/**\n * PulseLabel \u2014 reusable inline loading indicator.\n *\n * Combines two visual effects:\n * 1. Cycling spinner character (\u00B7 \u2722 \u2733 \u2217 \u273B \u273D), same as the main Spinner\n * 2. Breathing text color (dim \u2194 bright), smooth sine-wave interpolation\n *\n * Both the spinner character and the label text share the same breathing color,\n * creating a unified \"alive\" loading indicator.\n *\n * Usage:\n * <PulseLabel label=\"MCP servers\" />\n * <PulseLabel label=\"Connecting\" bright=\"#22c55e\" />\n */\n\nimport React, { useRef } from 'react'\nimport { Text } from 'ink'\nimport { BRAND_GRADIENT } from '@constants/colors'\nimport { useUnifiedAnimation } from '@utils/animationManager'\n\n// \u2500\u2500 Spinner characters (same set as Spinner.tsx) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst CHARACTERS =\n process.platform === 'darwin'\n ? ['\u00B7', '\u2722', '\u2733', '\u2217', '\u273B', '\u273D']\n : ['\u00B7', '\u2722', '*', '\u2217', '\u273B', '\u273D']\n\nconst SPINNER_FRAMES = [...CHARACTERS, ...[...CHARACTERS].reverse()]\n\n// \u2500\u2500 Color breathing table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Interpolate between two hex colors. t=0 \u2192 colorA, t=1 \u2192 colorB */\nfunction lerpColor(a: string, b: string, t: number): string {\n const ha = parseInt(a.replace('#', ''), 16)\n const hb = parseInt(b.replace('#', ''), 16)\n\n const rA = (ha >> 16) & 0xff,\n gA = (ha >> 8) & 0xff,\n bA = ha & 0xff\n const rB = (hb >> 16) & 0xff,\n gB = (hb >> 8) & 0xff,\n bB = hb & 0xff\n\n const r = Math.round(rA + (rB - rA) * t)\n const g = Math.round(gA + (gB - gA) * t)\n const bl = Math.round(bA + (bB - bA) * t)\n\n return `#${((1 << 24) | (r << 16) | (g << 8) | bl).toString(16).slice(1)}`\n}\n\n// Use same frame count as spinner so both animations stay in sync\nconst COLOR_STEPS = SPINNER_FRAMES.length\nconst PULSE_TABLE = Array.from({ length: COLOR_STEPS }, (_, i) =>\n Math.sin((i / (COLOR_STEPS - 1)) * Math.PI),\n)\n\nconst COLOR_DIM = '#555555'\n\n// \u2500\u2500 Component \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ninterface PulseLabelProps {\n /** Text to display after the spinner character */\n label: string\n /** Bright end of the breathing range (default: BRAND_GRADIENT.MIDDLE) */\n bright?: string\n /** Dim end of the breathing range (default: #555555) */\n dim?: string\n /** Whether the animation is active (default: true) */\n isActive?: boolean\n /** Unique id when multiple PulseLabels coexist (default: 'pulse-label') */\n id?: string\n}\n\nexport function PulseLabel({\n label,\n bright = BRAND_GRADIENT.MIDDLE,\n dim = COLOR_DIM,\n isActive = true,\n id = 'pulse-label',\n}: PulseLabelProps): React.ReactNode {\n const startTimeRef = useRef(Date.now())\n\n const { spinnerFrame } = useUnifiedAnimation({\n enabled: isActive,\n startTime: startTimeRef.current,\n spinnerFrameCount: SPINNER_FRAMES.length,\n componentId: id,\n })\n\n const color = isActive\n ? lerpColor(dim, bright, PULSE_TABLE[spinnerFrame] ?? 0)\n : bright\n\n const char = SPINNER_FRAMES[spinnerFrame] ?? SPINNER_FRAMES[0]\n\n return (\n <Text color={color}>\n {char} {label}\n </Text>\n )\n}\n"],
5
- "mappings": "AAeA,OAAO,SAAS,cAAc;AAC9B,SAAS,YAAY;AACrB,SAAS,sBAAsB;AAC/B,SAAS,2BAA2B;AAGpC,MAAM,aACJ,QAAQ,aAAa,WACjB,CAAC,QAAK,UAAK,UAAK,UAAK,UAAK,QAAG,IAC7B,CAAC,QAAK,UAAK,KAAK,UAAK,UAAK,QAAG;AAEnC,MAAM,iBAAiB,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC;AAKnE,SAAS,UAAU,GAAW,GAAW,GAAmB;AAC1D,QAAM,KAAK,SAAS,EAAE,QAAQ,KAAK,EAAE,GAAG,EAAE;AAC1C,QAAM,KAAK,SAAS,EAAE,QAAQ,KAAK,EAAE,GAAG,EAAE;AAE1C,QAAM,KAAM,MAAM,KAAM,KACtB,KAAM,MAAM,IAAK,KACjB,KAAK,KAAK;AACZ,QAAM,KAAM,MAAM,KAAM,KACtB,KAAM,MAAM,IAAK,KACjB,KAAK,KAAK;AAEZ,QAAM,IAAI,KAAK,MAAM,MAAM,KAAK,MAAM,CAAC;AACvC,QAAM,IAAI,KAAK,MAAM,MAAM,KAAK,MAAM,CAAC;AACvC,QAAM,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,CAAC;AAExC,SAAO,KAAM,KAAK,KAAO,KAAK,KAAO,KAAK,IAAK,IAAI,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAC1E;AAGA,MAAM,cAAc,eAAe;AACnC,MAAM,cAAc,MAAM;AAAA,EAAK,EAAE,QAAQ,YAAY;AAAA,EAAG,CAAC,GAAG,MAC1D,KAAK,IAAK,KAAK,cAAc,KAAM,KAAK,EAAE;AAC5C;AAEA,MAAM,YAAY;AAiBX,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,SAAS,eAAe;AAAA,EACxB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,KAAK;AACP,GAAqC;AACnC,QAAM,eAAe,OAAO,KAAK,IAAI,CAAC;AAEtC,QAAM,EAAE,aAAa,IAAI,oBAAoB;AAAA,IAC3C,SAAS;AAAA,IACT,WAAW,aAAa;AAAA,IACxB,mBAAmB,eAAe;AAAA,IAClC,aAAa;AAAA,EACf,CAAC;AAED,QAAM,QAAQ,WACV,UAAU,KAAK,QAAQ,YAAY,YAAY,KAAK,CAAC,IACrD;AAEJ,QAAM,OAAO,eAAe,YAAY,KAAK,eAAe,CAAC;AAE7D,SACE,oCAAC,QAAK,SACH,MAAK,KAAE,KACV;AAEJ;",
6
- "names": []
7
- }
@@ -1,88 +0,0 @@
1
- import { Box, Text } from "ink";
2
- import * as React from "react";
3
- import {
4
- getTotalCost,
5
- getTotalDuration,
6
- getTotalAPIDuration
7
- } from "../cost-tracker.js";
8
- import { SESSION_ID } from "../utils/log.js";
9
- import { getTheme } from "../utils/theme.js";
10
- import { formatDuration } from "../utils/format.js";
11
- function QuitSummary({
12
- messages,
13
- onClose
14
- }) {
15
- const theme = getTheme();
16
- const toolCallStats = React.useMemo(() => {
17
- let totalCalls = 0;
18
- let successfulCalls = 0;
19
- let failedCalls = 0;
20
- messages.forEach((message) => {
21
- if (message.type === "assistant" && Array.isArray(message.message.content)) {
22
- message.message.content.forEach((block) => {
23
- if (block.type === "tool_use") {
24
- totalCalls++;
25
- }
26
- });
27
- }
28
- if (message.type === "user" && Array.isArray(message.message.content)) {
29
- message.message.content.forEach((block) => {
30
- if (block.type === "tool_result") {
31
- if (!block.is_error) {
32
- successfulCalls++;
33
- } else {
34
- failedCalls++;
35
- }
36
- }
37
- });
38
- }
39
- });
40
- const successRate = totalCalls > 0 ? successfulCalls / totalCalls * 100 : 0;
41
- return {
42
- total: totalCalls,
43
- successful: successfulCalls,
44
- failed: failedCalls,
45
- successRate
46
- };
47
- }, [messages]);
48
- const totalDuration = getTotalDuration();
49
- const apiDuration = getTotalAPIDuration();
50
- const toolDuration = totalDuration - apiDuration;
51
- const totalCost = getTotalCost();
52
- const wallTimeStr = formatDuration(totalDuration);
53
- const apiTimeStr = formatDuration(apiDuration);
54
- const toolTimeStr = formatDuration(toolDuration);
55
- const apiPercentage = totalDuration > 0 ? (apiDuration / totalDuration * 100).toFixed(1) : "0.0";
56
- const toolPercentage = totalDuration > 0 ? (toolDuration / totalDuration * 100).toFixed(1) : "0.0";
57
- React.useEffect(() => {
58
- const timer = setTimeout(() => {
59
- onClose();
60
- }, 3e3);
61
- return () => clearTimeout(timer);
62
- }, [onClose]);
63
- return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", paddingY: 1 }, /* @__PURE__ */ React.createElement(
64
- Box,
65
- {
66
- borderStyle: "round",
67
- borderColor: theme.minto,
68
- flexDirection: "column",
69
- paddingX: 2,
70
- paddingY: 1
71
- },
72
- /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: theme.success }, "Agent powering down. Goodbye!")),
73
- /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true }, "Interaction Summary")),
74
- /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, "Session ID: ", SESSION_ID)),
75
- /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, "Tool Calls: ", toolCallStats.total, " ( \u2713 ", toolCallStats.successful, " \u2717", " ", toolCallStats.failed, " )")),
76
- /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, null, "Success Rate: ", toolCallStats.successRate.toFixed(1), "%")),
77
- /* @__PURE__ */ React.createElement(Box, { marginTop: 1, marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true }, "Performance")),
78
- /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, "Wall Time: ", wallTimeStr)),
79
- /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, "Agent Active: ", apiTimeStr)),
80
- /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, " ", "\xBB API Time: ", apiTimeStr, " (", apiPercentage, "%)")),
81
- /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, null, " ", "\xBB Tool Time: ", toolTimeStr, " (", toolPercentage, "%)")),
82
- totalCost > 0 && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, null, "Total Cost: $", totalCost > 0.5 ? totalCost.toFixed(2) : totalCost.toFixed(4)))
83
- ));
84
- }
85
- export {
86
- QuitSummary
87
- };
88
- //# sourceMappingURL=QuitSummary.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/QuitSummary.tsx"],
4
- "sourcesContent": ["import { Box, Text } from 'ink'\nimport * as React from 'react'\nimport {\n getTotalCost,\n getTotalDuration,\n getTotalAPIDuration,\n} from '../cost-tracker'\nimport { SESSION_ID } from '../utils/log'\nimport type { Message } from '../query'\nimport { getTheme } from '@utils/theme'\nimport { formatDuration } from '@utils/format'\n\ninterface QuitSummaryProps {\n messages: Message[]\n onClose: () => void\n}\n\nexport function QuitSummary({\n messages,\n onClose,\n}: QuitSummaryProps): React.ReactNode {\n const theme = getTheme()\n\n // Calculate tool call statistics\n const toolCallStats = React.useMemo(() => {\n let totalCalls = 0\n let successfulCalls = 0\n let failedCalls = 0\n\n messages.forEach(message => {\n if (\n message.type === 'assistant' &&\n Array.isArray(message.message.content)\n ) {\n message.message.content.forEach(block => {\n if (block.type === 'tool_use') {\n totalCalls++\n }\n })\n }\n if (message.type === 'user' && Array.isArray(message.message.content)) {\n message.message.content.forEach(block => {\n if (block.type === 'tool_result') {\n if (!block.is_error) {\n successfulCalls++\n } else {\n failedCalls++\n }\n }\n })\n }\n })\n\n const successRate =\n totalCalls > 0 ? (successfulCalls / totalCalls) * 100 : 0\n\n return {\n total: totalCalls,\n successful: successfulCalls,\n failed: failedCalls,\n successRate,\n }\n }, [messages])\n\n const totalDuration = getTotalDuration()\n const apiDuration = getTotalAPIDuration()\n const toolDuration = totalDuration - apiDuration\n const totalCost = getTotalCost()\n\n // Format durations\n const wallTimeStr = formatDuration(totalDuration)\n const apiTimeStr = formatDuration(apiDuration)\n const toolTimeStr = formatDuration(toolDuration)\n const apiPercentage =\n totalDuration > 0 ? ((apiDuration / totalDuration) * 100).toFixed(1) : '0.0'\n const toolPercentage =\n totalDuration > 0\n ? ((toolDuration / totalDuration) * 100).toFixed(1)\n : '0.0'\n\n React.useEffect(() => {\n // Automatically close after 3 seconds\n const timer = setTimeout(() => {\n onClose()\n }, 3000)\n\n return () => clearTimeout(timer)\n }, [onClose])\n\n return (\n <Box flexDirection=\"column\" paddingY={1}>\n <Box\n borderStyle=\"round\"\n borderColor={theme.minto}\n flexDirection=\"column\"\n paddingX={2}\n paddingY={1}\n >\n <Box marginBottom={1}>\n <Text bold color={theme.success}>\n Agent powering down. Goodbye!\n </Text>\n </Box>\n\n <Box marginBottom={1}>\n <Text bold>Interaction Summary</Text>\n </Box>\n\n <Box>\n <Text>Session ID: {SESSION_ID}</Text>\n </Box>\n\n <Box>\n <Text>\n Tool Calls: {toolCallStats.total} ( \u2713 {toolCallStats.successful} \u2717{' '}\n {toolCallStats.failed} )\n </Text>\n </Box>\n\n <Box marginBottom={1}>\n <Text>Success Rate: {toolCallStats.successRate.toFixed(1)}%</Text>\n </Box>\n\n <Box marginTop={1} marginBottom={1}>\n <Text bold>Performance</Text>\n </Box>\n\n <Box>\n <Text>Wall Time: {wallTimeStr}</Text>\n </Box>\n\n <Box>\n <Text>Agent Active: {apiTimeStr}</Text>\n </Box>\n\n <Box>\n <Text>\n {' '}\n \u00BB API Time: {apiTimeStr} ({apiPercentage}%)\n </Text>\n </Box>\n\n <Box marginBottom={1}>\n <Text>\n {' '}\n \u00BB Tool Time: {toolTimeStr} ({toolPercentage}%)\n </Text>\n </Box>\n\n {totalCost > 0 && (\n <Box marginTop={1}>\n <Text>\n Total Cost: $\n {totalCost > 0.5 ? totalCost.toFixed(2) : totalCost.toFixed(4)}\n </Text>\n </Box>\n )}\n </Box>\n </Box>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,194 +0,0 @@
1
- import { Box, Text } from "ink";
2
- import * as React from "react";
3
- import { useRef, useMemo } from "react";
4
- import { getTheme } from "../utils/theme.js";
5
- import { getGlobalConfig } from "../utils/config.js";
6
- import { getStreamingState } from "../utils/streamingState.js";
7
- import { useUnifiedAnimation } from "../utils/animationManager.js";
8
- const PHASE_INDICATORS = {
9
- thinking: "\u25D0",
10
- deep_thinking: "\u{1F9E0}",
11
- generating: "\u25D1",
12
- tool_use: "\u25D2",
13
- waiting: "\u25D3",
14
- retrying: "\u{1F504}",
15
- permission: "\u{1F510}",
16
- compacting: "\u{1F4E6}",
17
- concurrent: "\u26A1"
18
- };
19
- const DOTS = ["", ".", "..", "..."];
20
- function getStatusDisplayMode() {
21
- const config = getGlobalConfig();
22
- return config.statusDisplayMode || "compact";
23
- }
24
- function MinimalIndicator({
25
- isActive
26
- }) {
27
- const theme = getTheme();
28
- const startTimeRef = useRef(Date.now());
29
- const { spinnerFrame } = useUnifiedAnimation({
30
- enabled: isActive,
31
- startTime: startTimeRef.current,
32
- spinnerFrameCount: 4,
33
- // For DOTS array
34
- componentId: "minimal-indicator"
35
- });
36
- const streamState = useMemo(() => getStreamingState(), [spinnerFrame]);
37
- if (!isActive) return null;
38
- const indicator = PHASE_INDICATORS[streamState.phase];
39
- const phaseColors = {
40
- thinking: theme.minto,
41
- deep_thinking: theme.minto,
42
- generating: theme.success,
43
- tool_use: theme.warning,
44
- waiting: theme.secondaryText,
45
- retrying: theme.error,
46
- permission: theme.info,
47
- compacting: theme.info,
48
- concurrent: theme.success
49
- };
50
- return /* @__PURE__ */ React.createElement(Text, { color: phaseColors[streamState.phase] }, indicator, DOTS[spinnerFrame]);
51
- }
52
- function CompactIndicator({
53
- isActive,
54
- statusText
55
- }) {
56
- const theme = getTheme();
57
- const startTimeRef = useRef(Date.now());
58
- React.useEffect(() => {
59
- if (isActive) {
60
- startTimeRef.current = Date.now();
61
- }
62
- }, [isActive]);
63
- const { spinnerFrame, elapsedTime } = useUnifiedAnimation({
64
- enabled: isActive,
65
- startTime: startTimeRef.current,
66
- spinnerFrameCount: 4,
67
- componentId: "compact-indicator"
68
- });
69
- const streamState = useMemo(() => getStreamingState(), [spinnerFrame]);
70
- if (!isActive) return null;
71
- const phaseLabels = {
72
- thinking: "thinking",
73
- deep_thinking: "deep thinking",
74
- generating: "generating",
75
- tool_use: streamState.toolName ? `\u2192${streamState.toolName}` : "tool",
76
- waiting: "waiting",
77
- retrying: "retrying",
78
- permission: "permission",
79
- compacting: "compacting",
80
- concurrent: "concurrent"
81
- };
82
- const phaseColors = {
83
- thinking: theme.minto,
84
- deep_thinking: theme.minto,
85
- generating: theme.success,
86
- tool_use: theme.warning,
87
- waiting: theme.secondaryText,
88
- retrying: theme.error,
89
- permission: theme.info,
90
- compacting: theme.info,
91
- concurrent: theme.success
92
- };
93
- const displayText = statusText || phaseLabels[streamState.phase];
94
- return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: phaseColors[streamState.phase] }, PHASE_INDICATORS[streamState.phase], " ", displayText), /* @__PURE__ */ React.createElement(Text, { color: theme.secondaryText }, " ", elapsedTime, "s"));
95
- }
96
- function DetailedIndicator({
97
- isActive,
98
- statusText
99
- }) {
100
- const theme = getTheme();
101
- const startTimeRef = useRef(Date.now());
102
- React.useEffect(() => {
103
- if (isActive) {
104
- startTimeRef.current = Date.now();
105
- }
106
- }, [isActive]);
107
- const { spinnerFrame, elapsedTime } = useUnifiedAnimation({
108
- enabled: isActive,
109
- startTime: startTimeRef.current,
110
- spinnerFrameCount: 4,
111
- componentId: "detailed-indicator"
112
- });
113
- const streamState = useMemo(() => getStreamingState(), [spinnerFrame]);
114
- if (!isActive) return null;
115
- const getDetailedDisplay = () => {
116
- switch (streamState.phase) {
117
- case "tool_use":
118
- return streamState.toolName ? `Using ${streamState.toolName}` : "Executing tool";
119
- case "generating":
120
- if (streamState.chunkCount) {
121
- return `Generating (${streamState.chunkCount} chunks)`;
122
- }
123
- return "Generating response";
124
- case "waiting":
125
- return "Waiting for API response";
126
- case "thinking":
127
- default:
128
- return statusText || "Processing request";
129
- }
130
- };
131
- const phaseColors = {
132
- thinking: theme.minto,
133
- deep_thinking: theme.minto,
134
- generating: theme.success,
135
- tool_use: theme.warning,
136
- waiting: theme.secondaryText,
137
- retrying: theme.error,
138
- permission: theme.info,
139
- compacting: theme.info,
140
- concurrent: theme.success
141
- };
142
- return /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, { color: phaseColors[streamState.phase] }, PHASE_INDICATORS[streamState.phase], " ", getDetailedDisplay()), /* @__PURE__ */ React.createElement(Text, { color: theme.secondaryText }, " [", elapsedTime, "s]"), streamState.tokenCount && /* @__PURE__ */ React.createElement(Text, { color: theme.secondaryText }, " ", "(", streamState.tokenCount, " tokens)"));
143
- }
144
- function RequestStatusIndicator({
145
- mode,
146
- isActive,
147
- statusText
148
- }) {
149
- const displayMode = mode || getStatusDisplayMode();
150
- if (displayMode === "hidden" || !isActive) {
151
- return null;
152
- }
153
- switch (displayMode) {
154
- case "minimal":
155
- return /* @__PURE__ */ React.createElement(MinimalIndicator, { isActive });
156
- case "detailed":
157
- return /* @__PURE__ */ React.createElement(DetailedIndicator, { isActive, statusText });
158
- case "compact":
159
- default:
160
- return /* @__PURE__ */ React.createElement(CompactIndicator, { isActive, statusText });
161
- }
162
- }
163
- function StatusBadge({
164
- isActive
165
- }) {
166
- const theme = getTheme();
167
- const startTimeRef = useRef(Date.now());
168
- const { spinnerFrame } = useUnifiedAnimation({
169
- enabled: isActive,
170
- startTime: startTimeRef.current,
171
- spinnerFrameCount: 4,
172
- componentId: "status-badge"
173
- });
174
- const streamState = useMemo(() => getStreamingState(), [spinnerFrame]);
175
- if (!isActive) return null;
176
- const phaseColors = {
177
- thinking: theme.minto,
178
- deep_thinking: theme.minto,
179
- generating: theme.success,
180
- tool_use: theme.warning,
181
- waiting: theme.secondaryText,
182
- retrying: theme.error,
183
- permission: theme.info,
184
- compacting: theme.info,
185
- concurrent: theme.success
186
- };
187
- return /* @__PURE__ */ React.createElement(Text, { color: phaseColors[streamState.phase] }, "[", PHASE_INDICATORS[streamState.phase], "]");
188
- }
189
- export {
190
- RequestStatusIndicator,
191
- StatusBadge,
192
- getStatusDisplayMode
193
- };
194
- //# sourceMappingURL=RequestStatusIndicator.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/RequestStatusIndicator.tsx"],
4
- "sourcesContent": ["/**\n * Request Status Indicator Component\n *\n * A lightweight, configurable status indicator for API requests.\n * Can be toggled via config to show minimal or detailed status.\n *\n * Uses unified animation manager to prevent screen flickering.\n */\n\nimport { Box, Text } from 'ink'\nimport * as React from 'react'\nimport { useRef, useMemo } from 'react'\nimport { getTheme } from '@utils/theme'\nimport { getGlobalConfig } from '@utils/config'\nimport { getStreamingState, type StreamingPhase } from '@utils/streamingState'\nimport { useUnifiedAnimation } from '@utils/animationManager'\n\nexport type StatusDisplayMode = 'minimal' | 'compact' | 'detailed' | 'hidden'\n\ninterface Props {\n /** Override the display mode from config */\n mode?: StatusDisplayMode\n /** Whether a request is currently active */\n isActive: boolean\n /** Optional custom status text */\n statusText?: string\n}\n\n// Phase indicators for minimal mode\nconst PHASE_INDICATORS: Record<StreamingPhase, string> = {\n thinking: '\u25D0',\n deep_thinking: '\uD83E\uDDE0',\n generating: '\u25D1',\n tool_use: '\u25D2',\n waiting: '\u25D3',\n retrying: '\uD83D\uDD04',\n permission: '\uD83D\uDD10',\n compacting: '\uD83D\uDCE6',\n concurrent: '\u26A1',\n}\n\n// Animated dots for minimal mode\nconst DOTS = ['', '.', '..', '...']\n\n/**\n * Get the configured status display mode\n */\nexport function getStatusDisplayMode(): StatusDisplayMode {\n const config = getGlobalConfig()\n return (config as any).statusDisplayMode || 'compact'\n}\n\n/**\n * Minimal status indicator - just a spinning symbol\n * Uses unified animation manager instead of setInterval\n */\nfunction MinimalIndicator({\n isActive,\n}: {\n isActive: boolean\n}): React.ReactNode {\n const theme = getTheme()\n const startTimeRef = useRef(Date.now())\n\n // Use unified animation manager - 4 frames for dots animation\n const { spinnerFrame } = useUnifiedAnimation({\n enabled: isActive,\n startTime: startTimeRef.current,\n spinnerFrameCount: 4, // For DOTS array\n componentId: 'minimal-indicator',\n })\n\n // Get streaming state on each render (updates when spinnerFrame changes)\n const streamState = useMemo(() => getStreamingState(), [spinnerFrame])\n\n if (!isActive) return null\n\n const indicator = PHASE_INDICATORS[streamState.phase]\n const phaseColors: Record<StreamingPhase, string> = {\n thinking: theme.minto,\n deep_thinking: theme.minto,\n generating: theme.success,\n tool_use: theme.warning,\n waiting: theme.secondaryText,\n retrying: theme.error,\n permission: theme.info,\n compacting: theme.info,\n concurrent: theme.success,\n }\n\n return (\n <Text color={phaseColors[streamState.phase]}>\n {indicator}\n {DOTS[spinnerFrame]}\n </Text>\n )\n}\n\n/**\n * Compact status indicator - symbol + short phase name\n * Uses unified animation manager instead of setInterval\n */\nfunction CompactIndicator({\n isActive,\n statusText,\n}: {\n isActive: boolean\n statusText?: string\n}): React.ReactNode {\n const theme = getTheme()\n const startTimeRef = useRef(Date.now())\n\n // Reset start time when becoming active\n React.useEffect(() => {\n if (isActive) {\n startTimeRef.current = Date.now()\n }\n }, [isActive])\n\n // Use unified animation manager\n const { spinnerFrame, elapsedTime } = useUnifiedAnimation({\n enabled: isActive,\n startTime: startTimeRef.current,\n spinnerFrameCount: 4,\n componentId: 'compact-indicator',\n })\n\n // Get streaming state on each render (updates when spinnerFrame changes)\n const streamState = useMemo(() => getStreamingState(), [spinnerFrame])\n\n if (!isActive) return null\n\n const phaseLabels: Record<StreamingPhase, string> = {\n thinking: 'thinking',\n deep_thinking: 'deep thinking',\n generating: 'generating',\n tool_use: streamState.toolName ? `\u2192${streamState.toolName}` : 'tool',\n waiting: 'waiting',\n retrying: 'retrying',\n permission: 'permission',\n compacting: 'compacting',\n concurrent: 'concurrent',\n }\n\n const phaseColors: Record<StreamingPhase, string> = {\n thinking: theme.minto,\n deep_thinking: theme.minto,\n generating: theme.success,\n tool_use: theme.warning,\n waiting: theme.secondaryText,\n retrying: theme.error,\n permission: theme.info,\n compacting: theme.info,\n concurrent: theme.success,\n }\n\n const displayText = statusText || phaseLabels[streamState.phase]\n\n return (\n <Box>\n <Text color={phaseColors[streamState.phase]}>\n {PHASE_INDICATORS[streamState.phase]} {displayText}\n </Text>\n <Text color={theme.secondaryText}> {elapsedTime}s</Text>\n </Box>\n )\n}\n\n/**\n * Detailed status indicator - full info with tokens and chunks\n * Uses unified animation manager instead of setInterval\n */\nfunction DetailedIndicator({\n isActive,\n statusText,\n}: {\n isActive: boolean\n statusText?: string\n}): React.ReactNode {\n const theme = getTheme()\n const startTimeRef = useRef(Date.now())\n\n // Reset start time when becoming active\n React.useEffect(() => {\n if (isActive) {\n startTimeRef.current = Date.now()\n }\n }, [isActive])\n\n // Use unified animation manager\n const { spinnerFrame, elapsedTime } = useUnifiedAnimation({\n enabled: isActive,\n startTime: startTimeRef.current,\n spinnerFrameCount: 4,\n componentId: 'detailed-indicator',\n })\n\n // Get streaming state on each render (updates when spinnerFrame changes)\n const streamState = useMemo(() => getStreamingState(), [spinnerFrame])\n\n if (!isActive) return null\n\n const getDetailedDisplay = () => {\n switch (streamState.phase) {\n case 'tool_use':\n return streamState.toolName\n ? `Using ${streamState.toolName}`\n : 'Executing tool'\n case 'generating':\n if (streamState.chunkCount) {\n return `Generating (${streamState.chunkCount} chunks)`\n }\n return 'Generating response'\n case 'waiting':\n return 'Waiting for API response'\n case 'thinking':\n default:\n return statusText || 'Processing request'\n }\n }\n\n const phaseColors: Record<StreamingPhase, string> = {\n thinking: theme.minto,\n deep_thinking: theme.minto,\n generating: theme.success,\n tool_use: theme.warning,\n waiting: theme.secondaryText,\n retrying: theme.error,\n permission: theme.info,\n compacting: theme.info,\n concurrent: theme.success,\n }\n\n return (\n <Box flexDirection=\"row\">\n <Text color={phaseColors[streamState.phase]}>\n {PHASE_INDICATORS[streamState.phase]} {getDetailedDisplay()}\n </Text>\n <Text color={theme.secondaryText}> [{elapsedTime}s]</Text>\n {streamState.tokenCount && (\n <Text color={theme.secondaryText}>\n {' '}\n ({streamState.tokenCount} tokens)\n </Text>\n )}\n </Box>\n )\n}\n\n/**\n * Main Request Status Indicator\n *\n * Renders different status displays based on config setting:\n * - hidden: Nothing shown\n * - minimal: Just a spinning indicator\n * - compact: Indicator + phase + time (default)\n * - detailed: Full info including tokens/chunks\n */\nexport function RequestStatusIndicator({\n mode,\n isActive,\n statusText,\n}: Props): React.ReactNode {\n const displayMode = mode || getStatusDisplayMode()\n\n if (displayMode === 'hidden' || !isActive) {\n return null\n }\n\n switch (displayMode) {\n case 'minimal':\n return <MinimalIndicator isActive={isActive} />\n case 'detailed':\n return <DetailedIndicator isActive={isActive} statusText={statusText} />\n case 'compact':\n default:\n return <CompactIndicator isActive={isActive} statusText={statusText} />\n }\n}\n\n/**\n * Inline status badge for use in headers/footers\n * Uses unified animation manager instead of setInterval\n */\nexport function StatusBadge({\n isActive,\n}: {\n isActive: boolean\n}): React.ReactNode {\n const theme = getTheme()\n const startTimeRef = useRef(Date.now())\n\n // Use unified animation manager\n const { spinnerFrame } = useUnifiedAnimation({\n enabled: isActive,\n startTime: startTimeRef.current,\n spinnerFrameCount: 4,\n componentId: 'status-badge',\n })\n\n // Get streaming state on each render (updates when spinnerFrame changes)\n const streamState = useMemo(() => getStreamingState(), [spinnerFrame])\n\n if (!isActive) return null\n\n const phaseColors: Record<StreamingPhase, string> = {\n thinking: theme.minto,\n deep_thinking: theme.minto,\n generating: theme.success,\n tool_use: theme.warning,\n waiting: theme.secondaryText,\n retrying: theme.error,\n permission: theme.info,\n compacting: theme.info,\n concurrent: theme.success,\n }\n\n return (\n <Text color={phaseColors[streamState.phase]}>\n [{PHASE_INDICATORS[streamState.phase]}]\n </Text>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }