@within-7/minto 0.4.1 → 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 (1153) hide show
  1. package/cli.cjs +32 -154
  2. package/cli.js +3255 -0
  3. package/package.json +25 -40
  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 -39
  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 -40
  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 -116
  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/mcp-interactive.js +0 -485
  54. package/dist/commands/mcp-interactive.js.map +0 -7
  55. package/dist/commands/memory.js +0 -168
  56. package/dist/commands/memory.js.map +0 -7
  57. package/dist/commands/model.js +0 -497
  58. package/dist/commands/model.js.map +0 -7
  59. package/dist/commands/new.js +0 -56
  60. package/dist/commands/new.js.map +0 -7
  61. package/dist/commands/outputStyle.js +0 -64
  62. package/dist/commands/outputStyle.js.map +0 -7
  63. package/dist/commands/permissions.js +0 -113
  64. package/dist/commands/permissions.js.map +0 -7
  65. package/dist/commands/plugin/AddMarketplaceForm.js +0 -91
  66. package/dist/commands/plugin/AddMarketplaceForm.js.map +0 -7
  67. package/dist/commands/plugin/ConfirmDialog.js +0 -84
  68. package/dist/commands/plugin/ConfirmDialog.js.map +0 -7
  69. package/dist/commands/plugin/ErrorView.js +0 -34
  70. package/dist/commands/plugin/ErrorView.js.map +0 -7
  71. package/dist/commands/plugin/InstalledPluginsByMarketplace.js +0 -152
  72. package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +0 -7
  73. package/dist/commands/plugin/InstalledPluginsManager.js +0 -102
  74. package/dist/commands/plugin/InstalledPluginsManager.js.map +0 -7
  75. package/dist/commands/plugin/LoadingView.js +0 -14
  76. package/dist/commands/plugin/LoadingView.js.map +0 -7
  77. package/dist/commands/plugin/MainMenu.js +0 -67
  78. package/dist/commands/plugin/MainMenu.js.map +0 -7
  79. package/dist/commands/plugin/MarketplaceManager.js +0 -201
  80. package/dist/commands/plugin/MarketplaceManager.js.map +0 -7
  81. package/dist/commands/plugin/MarketplaceSelector.js +0 -124
  82. package/dist/commands/plugin/MarketplaceSelector.js.map +0 -7
  83. package/dist/commands/plugin/PlaceholderScreen.js +0 -31
  84. package/dist/commands/plugin/PlaceholderScreen.js.map +0 -7
  85. package/dist/commands/plugin/PluginBrowser.js +0 -183
  86. package/dist/commands/plugin/PluginBrowser.js.map +0 -7
  87. package/dist/commands/plugin/PluginDetailsInstall.js +0 -159
  88. package/dist/commands/plugin/PluginDetailsInstall.js.map +0 -7
  89. package/dist/commands/plugin/PluginDetailsManage.js +0 -210
  90. package/dist/commands/plugin/PluginDetailsManage.js.map +0 -7
  91. package/dist/commands/plugin/components.js +0 -16
  92. package/dist/commands/plugin/components.js.map +0 -7
  93. package/dist/commands/plugin/example-usage.js +0 -63
  94. package/dist/commands/plugin/example-usage.js.map +0 -7
  95. package/dist/commands/plugin/types.js +0 -1
  96. package/dist/commands/plugin/types.js.map +0 -7
  97. package/dist/commands/plugin/utils.js +0 -109
  98. package/dist/commands/plugin/utils.js.map +0 -7
  99. package/dist/commands/plugin.js +0 -1410
  100. package/dist/commands/plugin.js.map +0 -7
  101. package/dist/commands/quit.js +0 -18
  102. package/dist/commands/quit.js.map +0 -7
  103. package/dist/commands/refreshCommands.js +0 -48
  104. package/dist/commands/refreshCommands.js.map +0 -7
  105. package/dist/commands/resume.js +0 -271
  106. package/dist/commands/resume.js.map +0 -7
  107. package/dist/commands/review.js +0 -51
  108. package/dist/commands/review.js.map +0 -7
  109. package/dist/commands/sandbox.js +0 -203
  110. package/dist/commands/sandbox.js.map +0 -7
  111. package/dist/commands/sessions.js +0 -224
  112. package/dist/commands/sessions.js.map +0 -7
  113. package/dist/commands/setup.js +0 -653
  114. package/dist/commands/setup.js.map +0 -7
  115. package/dist/commands/stats.js +0 -292
  116. package/dist/commands/stats.js.map +0 -7
  117. package/dist/commands/status.js +0 -127
  118. package/dist/commands/status.js.map +0 -7
  119. package/dist/commands/tasks.js +0 -108
  120. package/dist/commands/tasks.js.map +0 -7
  121. package/dist/commands/terminalSetup.js +0 -170
  122. package/dist/commands/terminalSetup.js.map +0 -7
  123. package/dist/commands/todos.js +0 -123
  124. package/dist/commands/todos.js.map +0 -7
  125. package/dist/commands/undo.js +0 -227
  126. package/dist/commands/undo.js.map +0 -7
  127. package/dist/commands/vim.js +0 -22
  128. package/dist/commands/vim.js.map +0 -7
  129. package/dist/commands.js +0 -128
  130. package/dist/commands.js.map +0 -7
  131. package/dist/components/AgentResponseBlock.js +0 -41
  132. package/dist/components/AgentResponseBlock.js.map +0 -7
  133. package/dist/components/AgentThinkingBlock.js +0 -32
  134. package/dist/components/AgentThinkingBlock.js.map +0 -7
  135. package/dist/components/AsciiLogo.js +0 -18
  136. package/dist/components/AsciiLogo.js.map +0 -7
  137. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +0 -142
  138. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +0 -7
  139. package/dist/components/AskUserQuestionDialog/QuestionView.js +0 -55
  140. package/dist/components/AskUserQuestionDialog/QuestionView.js.map +0 -7
  141. package/dist/components/AskUserQuestionDialog/index.js +0 -7
  142. package/dist/components/AskUserQuestionDialog/index.js.map +0 -7
  143. package/dist/components/BackgroundTasksPanel.js +0 -177
  144. package/dist/components/BackgroundTasksPanel.js.map +0 -7
  145. package/dist/components/BashStreamingProgress.js +0 -24
  146. package/dist/components/BashStreamingProgress.js.map +0 -7
  147. package/dist/components/CollapsibleHint.js +0 -15
  148. package/dist/components/CollapsibleHint.js.map +0 -7
  149. package/dist/components/Config.js +0 -181
  150. package/dist/components/Config.js.map +0 -7
  151. package/dist/components/ConsoleOAuthFlow.js +0 -179
  152. package/dist/components/ConsoleOAuthFlow.js.map +0 -7
  153. package/dist/components/Cost.js +0 -14
  154. package/dist/components/Cost.js.map +0 -7
  155. package/dist/components/CostThresholdDialog.js +0 -38
  156. package/dist/components/CostThresholdDialog.js.map +0 -7
  157. package/dist/components/CustomSelect/option-map.js +0 -32
  158. package/dist/components/CustomSelect/option-map.js.map +0 -7
  159. package/dist/components/CustomSelect/select-option.js +0 -37
  160. package/dist/components/CustomSelect/select-option.js.map +0 -7
  161. package/dist/components/CustomSelect/select.js +0 -64
  162. package/dist/components/CustomSelect/select.js.map +0 -7
  163. package/dist/components/CustomSelect/theme.js +0 -1
  164. package/dist/components/CustomSelect/theme.js.map +0 -7
  165. package/dist/components/CustomSelect/use-select-state.js +0 -220
  166. package/dist/components/CustomSelect/use-select-state.js.map +0 -7
  167. package/dist/components/CustomSelect/use-select.js +0 -21
  168. package/dist/components/CustomSelect/use-select.js.map +0 -7
  169. package/dist/components/FallbackToolUseRejectedMessage.js +0 -11
  170. package/dist/components/FallbackToolUseRejectedMessage.js.map +0 -7
  171. package/dist/components/FileEditToolUpdatedMessage.js +0 -32
  172. package/dist/components/FileEditToolUpdatedMessage.js.map +0 -7
  173. package/dist/components/HeaderBar.js +0 -63
  174. package/dist/components/HeaderBar.js.map +0 -7
  175. package/dist/components/Help.js +0 -178
  176. package/dist/components/Help.js.map +0 -7
  177. package/dist/components/HighlightedCode.js +0 -31
  178. package/dist/components/HighlightedCode.js.map +0 -7
  179. package/dist/components/HistorySearchOverlay.js +0 -49
  180. package/dist/components/HistorySearchOverlay.js.map +0 -7
  181. package/dist/components/HotkeyHelpPanel.js +0 -136
  182. package/dist/components/HotkeyHelpPanel.js.map +0 -7
  183. package/dist/components/InfoPanel/InfoPanel.js +0 -123
  184. package/dist/components/InfoPanel/InfoPanel.js.map +0 -7
  185. package/dist/components/InfoPanel/index.js +0 -5
  186. package/dist/components/InfoPanel/index.js.map +0 -7
  187. package/dist/components/InfoPanel/types.js +0 -1
  188. package/dist/components/InfoPanel/types.js.map +0 -7
  189. package/dist/components/InteractionRoundBlock.js +0 -56
  190. package/dist/components/InteractionRoundBlock.js.map +0 -7
  191. package/dist/components/InvalidConfigDialog.js +0 -84
  192. package/dist/components/InvalidConfigDialog.js.map +0 -7
  193. package/dist/components/Link.js +0 -18
  194. package/dist/components/Link.js.map +0 -7
  195. package/dist/components/LogSelector.js +0 -50
  196. package/dist/components/LogSelector.js.map +0 -7
  197. package/dist/components/Logo.js +0 -55
  198. package/dist/components/Logo.js.map +0 -7
  199. package/dist/components/MCPServerApprovalDialog.js +0 -81
  200. package/dist/components/MCPServerApprovalDialog.js.map +0 -7
  201. package/dist/components/MCPServerDialogCopy.js +0 -12
  202. package/dist/components/MCPServerDialogCopy.js.map +0 -7
  203. package/dist/components/MCPServerMultiselectDialog.js +0 -82
  204. package/dist/components/MCPServerMultiselectDialog.js.map +0 -7
  205. package/dist/components/Message.js +0 -162
  206. package/dist/components/Message.js.map +0 -7
  207. package/dist/components/MessageResponse.js +0 -9
  208. package/dist/components/MessageResponse.js.map +0 -7
  209. package/dist/components/MessageSelector.js +0 -127
  210. package/dist/components/MessageSelector.js.map +0 -7
  211. package/dist/components/ModeIndicator.js +0 -39
  212. package/dist/components/ModeIndicator.js.map +0 -7
  213. package/dist/components/ModelConfig.js +0 -223
  214. package/dist/components/ModelConfig.js.map +0 -7
  215. package/dist/components/ModelListManager.js +0 -142
  216. package/dist/components/ModelListManager.js.map +0 -7
  217. package/dist/components/ModelSelector/BrandTextInput.js +0 -43
  218. package/dist/components/ModelSelector/BrandTextInput.js.map +0 -7
  219. package/dist/components/ModelSelector/ModelSelector.js +0 -2068
  220. package/dist/components/ModelSelector/ModelSelector.js.map +0 -7
  221. package/dist/components/ModelSelector/ScreenContainer.js +0 -27
  222. package/dist/components/ModelSelector/ScreenContainer.js.map +0 -7
  223. package/dist/components/ModelSelector/WizardContainer.js +0 -45
  224. package/dist/components/ModelSelector/WizardContainer.js.map +0 -7
  225. package/dist/components/ModelSelector/constants.js +0 -37
  226. package/dist/components/ModelSelector/constants.js.map +0 -7
  227. package/dist/components/ModelSelector/hooks/index.js +0 -5
  228. package/dist/components/ModelSelector/hooks/index.js.map +0 -7
  229. package/dist/components/ModelSelector/hooks/useEscapeNavigation.js +0 -21
  230. package/dist/components/ModelSelector/hooks/useEscapeNavigation.js.map +0 -7
  231. package/dist/components/ModelSelector/index.js +0 -15
  232. package/dist/components/ModelSelector/index.js.map +0 -7
  233. package/dist/components/ModelSelector/types.js +0 -1
  234. package/dist/components/ModelSelector/types.js.map +0 -7
  235. package/dist/components/Onboarding.js +0 -159
  236. package/dist/components/Onboarding.js.map +0 -7
  237. package/dist/components/OperationSummary.js +0 -130
  238. package/dist/components/OperationSummary.js.map +0 -7
  239. package/dist/components/PressEnterToContinue.js +0 -10
  240. package/dist/components/PressEnterToContinue.js.map +0 -7
  241. package/dist/components/ProgressBar.js +0 -74
  242. package/dist/components/ProgressBar.js.map +0 -7
  243. package/dist/components/ProjectOnboarding.js +0 -99
  244. package/dist/components/ProjectOnboarding.js.map +0 -7
  245. package/dist/components/PromptInput.js +0 -996
  246. package/dist/components/PromptInput.js.map +0 -7
  247. package/dist/components/PulseLabel.js +0 -44
  248. package/dist/components/PulseLabel.js.map +0 -7
  249. package/dist/components/QuitSummary.js +0 -88
  250. package/dist/components/QuitSummary.js.map +0 -7
  251. package/dist/components/RequestStatusIndicator.js +0 -194
  252. package/dist/components/RequestStatusIndicator.js.map +0 -7
  253. package/dist/components/SensitiveFileWarning.js +0 -35
  254. package/dist/components/SensitiveFileWarning.js.map +0 -7
  255. package/dist/components/SentryErrorBoundary.js +0 -27
  256. package/dist/components/SentryErrorBoundary.js.map +0 -7
  257. package/dist/components/SimpleSelector/SimpleSelector.js +0 -154
  258. package/dist/components/SimpleSelector/SimpleSelector.js.map +0 -7
  259. package/dist/components/SimpleSelector/index.js +0 -5
  260. package/dist/components/SimpleSelector/index.js.map +0 -7
  261. package/dist/components/SimpleSelector/types.js +0 -1
  262. package/dist/components/SimpleSelector/types.js.map +0 -7
  263. package/dist/components/Spinner.js +0 -185
  264. package/dist/components/Spinner.js.map +0 -7
  265. package/dist/components/SpinnerSymbol.js +0 -72
  266. package/dist/components/SpinnerSymbol.js.map +0 -7
  267. package/dist/components/StartupStatus.js +0 -57
  268. package/dist/components/StartupStatus.js.map +0 -7
  269. package/dist/components/StatusOverlayContent.js +0 -21
  270. package/dist/components/StatusOverlayContent.js.map +0 -7
  271. package/dist/components/StreamingBashOutput.js +0 -71
  272. package/dist/components/StreamingBashOutput.js.map +0 -7
  273. package/dist/components/StructuredDiff.js +0 -146
  274. package/dist/components/StructuredDiff.js.map +0 -7
  275. package/dist/components/SubagentBlock.js +0 -196
  276. package/dist/components/SubagentBlock.js.map +0 -7
  277. package/dist/components/SubagentManager.js +0 -65
  278. package/dist/components/SubagentManager.js.map +0 -7
  279. package/dist/components/SubagentProgress.js +0 -123
  280. package/dist/components/SubagentProgress.js.map +0 -7
  281. package/dist/components/SubagentStatusMarker.js +0 -37
  282. package/dist/components/SubagentStatusMarker.js.map +0 -7
  283. package/dist/components/TabbedListView/ScrollableList.js +0 -117
  284. package/dist/components/TabbedListView/ScrollableList.js.map +0 -7
  285. package/dist/components/TabbedListView/SearchInput.js +0 -23
  286. package/dist/components/TabbedListView/SearchInput.js.map +0 -7
  287. package/dist/components/TabbedListView/TabBar.js +0 -25
  288. package/dist/components/TabbedListView/TabBar.js.map +0 -7
  289. package/dist/components/TabbedListView/TabbedListView.js +0 -246
  290. package/dist/components/TabbedListView/TabbedListView.js.map +0 -7
  291. package/dist/components/TabbedListView/index.js +0 -11
  292. package/dist/components/TabbedListView/index.js.map +0 -7
  293. package/dist/components/TabbedListView/types.js +0 -1
  294. package/dist/components/TabbedListView/types.js.map +0 -7
  295. package/dist/components/TaskCard.js +0 -176
  296. package/dist/components/TaskCard.js.map +0 -7
  297. package/dist/components/TextInput.js +0 -108
  298. package/dist/components/TextInput.js.map +0 -7
  299. package/dist/components/TimelineRenderer.js +0 -31
  300. package/dist/components/TimelineRenderer.js.map +0 -7
  301. package/dist/components/TodoChangeBlock.js +0 -30
  302. package/dist/components/TodoChangeBlock.js.map +0 -7
  303. package/dist/components/TodoChangeLine.js +0 -22
  304. package/dist/components/TodoChangeLine.js.map +0 -7
  305. package/dist/components/TodoItem.js +0 -35
  306. package/dist/components/TodoItem.js.map +0 -7
  307. package/dist/components/TodoPanel.js +0 -166
  308. package/dist/components/TodoPanel.js.map +0 -7
  309. package/dist/components/TokenCounter.js +0 -74
  310. package/dist/components/TokenCounter.js.map +0 -7
  311. package/dist/components/TokenWarning.js +0 -20
  312. package/dist/components/TokenWarning.js.map +0 -7
  313. package/dist/components/ToolExecutionBlock.js +0 -18
  314. package/dist/components/ToolExecutionBlock.js.map +0 -7
  315. package/dist/components/ToolUseLoader.js +0 -29
  316. package/dist/components/ToolUseLoader.js.map +0 -7
  317. package/dist/components/TreeConnector.js +0 -26
  318. package/dist/components/TreeConnector.js.map +0 -7
  319. package/dist/components/TrustDialog.js +0 -71
  320. package/dist/components/TrustDialog.js.map +0 -7
  321. package/dist/components/TurnCompletionIndicator.js +0 -18
  322. package/dist/components/TurnCompletionIndicator.js.map +0 -7
  323. package/dist/components/UserQueryBlock.js +0 -12
  324. package/dist/components/UserQueryBlock.js.map +0 -7
  325. package/dist/components/binary-feedback/BinaryFeedback.js +0 -50
  326. package/dist/components/binary-feedback/BinaryFeedback.js.map +0 -7
  327. package/dist/components/binary-feedback/BinaryFeedbackOption.js +0 -92
  328. package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +0 -7
  329. package/dist/components/binary-feedback/BinaryFeedbackView.js +0 -140
  330. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +0 -7
  331. package/dist/components/binary-feedback/utils.js +0 -108
  332. package/dist/components/binary-feedback/utils.js.map +0 -7
  333. package/dist/components/messages/AssistantBashOutputMessage.js +0 -23
  334. package/dist/components/messages/AssistantBashOutputMessage.js.map +0 -7
  335. package/dist/components/messages/AssistantLocalCommandOutputMessage.js +0 -36
  336. package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +0 -7
  337. package/dist/components/messages/AssistantRedactedThinkingMessage.js +0 -12
  338. package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +0 -7
  339. package/dist/components/messages/AssistantTextMessage.js +0 -89
  340. package/dist/components/messages/AssistantTextMessage.js.map +0 -7
  341. package/dist/components/messages/AssistantThinkingMessage.js +0 -42
  342. package/dist/components/messages/AssistantThinkingMessage.js.map +0 -7
  343. package/dist/components/messages/AssistantToolUseMessage.js +0 -100
  344. package/dist/components/messages/AssistantToolUseMessage.js.map +0 -7
  345. package/dist/components/messages/GroupRenderer.js +0 -54
  346. package/dist/components/messages/GroupRenderer.js.map +0 -7
  347. package/dist/components/messages/NestedTasksPreview.js +0 -24
  348. package/dist/components/messages/NestedTasksPreview.js.map +0 -7
  349. package/dist/components/messages/ParallelTasksGroupView.js +0 -93
  350. package/dist/components/messages/ParallelTasksGroupView.js.map +0 -7
  351. package/dist/components/messages/TaskInModuleView.js +0 -218
  352. package/dist/components/messages/TaskInModuleView.js.map +0 -7
  353. package/dist/components/messages/TaskOutputContent.js +0 -56
  354. package/dist/components/messages/TaskOutputContent.js.map +0 -7
  355. package/dist/components/messages/TaskProgressMessage.js +0 -11
  356. package/dist/components/messages/TaskProgressMessage.js.map +0 -7
  357. package/dist/components/messages/TaskToolMessage.js +0 -39
  358. package/dist/components/messages/TaskToolMessage.js.map +0 -7
  359. package/dist/components/messages/UserBashInputMessage.js +0 -18
  360. package/dist/components/messages/UserBashInputMessage.js.map +0 -7
  361. package/dist/components/messages/UserCommandMessage.js +0 -20
  362. package/dist/components/messages/UserCommandMessage.js.map +0 -7
  363. package/dist/components/messages/UserKodingInputMessage.js +0 -18
  364. package/dist/components/messages/UserKodingInputMessage.js.map +0 -7
  365. package/dist/components/messages/UserPromptMessage.js +0 -25
  366. package/dist/components/messages/UserPromptMessage.js.map +0 -7
  367. package/dist/components/messages/UserTextMessage.js +0 -25
  368. package/dist/components/messages/UserTextMessage.js.map +0 -7
  369. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +0 -11
  370. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +0 -7
  371. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +0 -15
  372. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +0 -7
  373. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +0 -25
  374. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +0 -7
  375. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +0 -47
  376. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +0 -7
  377. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +0 -22
  378. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +0 -7
  379. package/dist/components/messages/UserToolResultMessage/utils.js +0 -50
  380. package/dist/components/messages/UserToolResultMessage/utils.js.map +0 -7
  381. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -112
  382. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +0 -7
  383. package/dist/components/permissions/FallbackPermissionRequest.js +0 -131
  384. package/dist/components/permissions/FallbackPermissionRequest.js.map +0 -7
  385. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -159
  386. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +0 -7
  387. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -58
  388. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +0 -7
  389. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -153
  390. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +0 -7
  391. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -70
  392. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +0 -7
  393. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -212
  394. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +0 -7
  395. package/dist/components/permissions/PermissionRequest.js +0 -70
  396. package/dist/components/permissions/PermissionRequest.js.map +0 -7
  397. package/dist/components/permissions/PermissionRequestTitle.js +0 -52
  398. package/dist/components/permissions/PermissionRequestTitle.js.map +0 -7
  399. package/dist/components/permissions/hooks.js +0 -23
  400. package/dist/components/permissions/hooks.js.map +0 -7
  401. package/dist/components/permissions/toolUseOptions.js +0 -46
  402. package/dist/components/permissions/toolUseOptions.js.map +0 -7
  403. package/dist/components/permissions/utils.js +0 -21
  404. package/dist/components/permissions/utils.js.map +0 -7
  405. package/dist/constants/claude-asterisk-ascii-art.js +0 -242
  406. package/dist/constants/claude-asterisk-ascii-art.js.map +0 -7
  407. package/dist/constants/colors.js +0 -192
  408. package/dist/constants/colors.js.map +0 -7
  409. package/dist/constants/compressionPrompts.js +0 -73
  410. package/dist/constants/compressionPrompts.js.map +0 -7
  411. package/dist/constants/figures.js +0 -6
  412. package/dist/constants/figures.js.map +0 -7
  413. package/dist/constants/formatRules.js +0 -102
  414. package/dist/constants/formatRules.js.map +0 -7
  415. package/dist/constants/macros.js +0 -11
  416. package/dist/constants/macros.js.map +0 -7
  417. package/dist/constants/modelCapabilities.js +0 -239
  418. package/dist/constants/modelCapabilities.js.map +0 -7
  419. package/dist/constants/models.js +0 -1034
  420. package/dist/constants/models.js.map +0 -7
  421. package/dist/constants/oauth.js +0 -18
  422. package/dist/constants/oauth.js.map +0 -7
  423. package/dist/constants/product.js +0 -28
  424. package/dist/constants/product.js.map +0 -7
  425. package/dist/constants/prompts/agentPrompt.js +0 -30
  426. package/dist/constants/prompts/agentPrompt.js.map +0 -7
  427. package/dist/constants/prompts/codeConventions.js +0 -27
  428. package/dist/constants/prompts/codeConventions.js.map +0 -7
  429. package/dist/constants/prompts/doingTasks.js +0 -15
  430. package/dist/constants/prompts/doingTasks.js.map +0 -7
  431. package/dist/constants/prompts/envInfo.js +0 -17
  432. package/dist/constants/prompts/envInfo.js.map +0 -7
  433. package/dist/constants/prompts/executingWithCare.js +0 -17
  434. package/dist/constants/prompts/executingWithCare.js.map +0 -7
  435. package/dist/constants/prompts/identity.js +0 -10
  436. package/dist/constants/prompts/identity.js.map +0 -7
  437. package/dist/constants/prompts/index.js +0 -78
  438. package/dist/constants/prompts/index.js.map +0 -7
  439. package/dist/constants/prompts/taskManagement.js +0 -60
  440. package/dist/constants/prompts/taskManagement.js.map +0 -7
  441. package/dist/constants/prompts/toneAndStyle.js +0 -62
  442. package/dist/constants/prompts/toneAndStyle.js.map +0 -7
  443. package/dist/constants/prompts/toolUsagePolicy.js +0 -38
  444. package/dist/constants/prompts/toolUsagePolicy.js.map +0 -7
  445. package/dist/constants/prompts.js +0 -13
  446. package/dist/constants/prompts.js.map +0 -7
  447. package/dist/constants/providerRegistry.js +0 -235
  448. package/dist/constants/providerRegistry.js.map +0 -7
  449. package/dist/constants/providers.js +0 -35
  450. package/dist/constants/providers.js.map +0 -7
  451. package/dist/constants/releaseNotes.js +0 -9
  452. package/dist/constants/releaseNotes.js.map +0 -7
  453. package/dist/constants/symbols.js +0 -108
  454. package/dist/constants/symbols.js.map +0 -7
  455. package/dist/constants/timing.js +0 -39
  456. package/dist/constants/timing.js.map +0 -7
  457. package/dist/constants/toolInputExamples.js +0 -88
  458. package/dist/constants/toolInputExamples.js.map +0 -7
  459. package/dist/context/PermissionContext.js +0 -110
  460. package/dist/context/PermissionContext.js.map +0 -7
  461. package/dist/context.js +0 -334
  462. package/dist/context.js.map +0 -7
  463. package/dist/core/backupHook.js +0 -29
  464. package/dist/core/backupHook.js.map +0 -7
  465. package/dist/core/backupManager.js +0 -321
  466. package/dist/core/backupManager.js.map +0 -7
  467. package/dist/core/config/defaults.js +0 -93
  468. package/dist/core/config/defaults.js.map +0 -7
  469. package/dist/core/config/index.js +0 -111
  470. package/dist/core/config/index.js.map +0 -7
  471. package/dist/core/config/loader.js +0 -221
  472. package/dist/core/config/loader.js.map +0 -7
  473. package/dist/core/config/migrations.js +0 -128
  474. package/dist/core/config/migrations.js.map +0 -7
  475. package/dist/core/config/schema.js +0 -196
  476. package/dist/core/config/schema.js.map +0 -7
  477. package/dist/core/costTracker.js +0 -131
  478. package/dist/core/costTracker.js.map +0 -7
  479. package/dist/core/gitAutoCommit.js +0 -287
  480. package/dist/core/gitAutoCommit.js.map +0 -7
  481. package/dist/core/index.js +0 -7
  482. package/dist/core/index.js.map +0 -7
  483. package/dist/core/operationTracker.js +0 -212
  484. package/dist/core/operationTracker.js.map +0 -7
  485. package/dist/core/permissions/auditLog.js +0 -204
  486. package/dist/core/permissions/auditLog.js.map +0 -7
  487. package/dist/core/permissions/engine/index.js +0 -3
  488. package/dist/core/permissions/engine/index.js.map +0 -7
  489. package/dist/core/permissions/engine/permissionEngine.js +0 -106
  490. package/dist/core/permissions/engine/permissionEngine.js.map +0 -7
  491. package/dist/core/permissions/engine/types.js +0 -1
  492. package/dist/core/permissions/engine/types.js.map +0 -7
  493. package/dist/core/permissions/index.js +0 -84
  494. package/dist/core/permissions/index.js.map +0 -7
  495. package/dist/core/permissions/ruleEngine.js +0 -259
  496. package/dist/core/permissions/ruleEngine.js.map +0 -7
  497. package/dist/core/permissions/rules/allowedToolsRule.js +0 -62
  498. package/dist/core/permissions/rules/allowedToolsRule.js.map +0 -7
  499. package/dist/core/permissions/rules/autoEscalationRule.js +0 -296
  500. package/dist/core/permissions/rules/autoEscalationRule.js.map +0 -7
  501. package/dist/core/permissions/rules/index.js +0 -46
  502. package/dist/core/permissions/rules/index.js.map +0 -7
  503. package/dist/core/permissions/rules/planModeRule.js +0 -55
  504. package/dist/core/permissions/rules/planModeRule.js.map +0 -7
  505. package/dist/core/permissions/rules/projectBoundaryRule.js +0 -173
  506. package/dist/core/permissions/rules/projectBoundaryRule.js.map +0 -7
  507. package/dist/core/permissions/rules/safeModeRule.js +0 -65
  508. package/dist/core/permissions/rules/safeModeRule.js.map +0 -7
  509. package/dist/core/permissions/rules/sensitivePathsRule.js +0 -345
  510. package/dist/core/permissions/rules/sensitivePathsRule.js.map +0 -7
  511. package/dist/core/permissions/types.js +0 -127
  512. package/dist/core/permissions/types.js.map +0 -7
  513. package/dist/core/tokenStats.js +0 -9
  514. package/dist/core/tokenStats.js.map +0 -7
  515. package/dist/core/tokenStatsManager.js +0 -354
  516. package/dist/core/tokenStatsManager.js.map +0 -7
  517. package/dist/core/tools/executor.js +0 -143
  518. package/dist/core/tools/executor.js.map +0 -7
  519. package/dist/core/tools/index.js +0 -15
  520. package/dist/core/tools/index.js.map +0 -7
  521. package/dist/core/tools/registry.js +0 -183
  522. package/dist/core/tools/registry.js.map +0 -7
  523. package/dist/core/tools/types.js +0 -1
  524. package/dist/core/tools/types.js.map +0 -7
  525. package/dist/cost-tracker.js +0 -68
  526. package/dist/cost-tracker.js.map +0 -7
  527. package/dist/entrypoints/bootstrap.js +0 -56
  528. package/dist/entrypoints/bootstrap.js.map +0 -7
  529. package/dist/entrypoints/cli.js +0 -1390
  530. package/dist/entrypoints/cli.js.map +0 -7
  531. package/dist/entrypoints/mcp.js +0 -153
  532. package/dist/entrypoints/mcp.js.map +0 -7
  533. package/dist/history.js +0 -96
  534. package/dist/history.js.map +0 -7
  535. package/dist/hooks/useAgentTokenStats.js +0 -72
  536. package/dist/hooks/useAgentTokenStats.js.map +0 -7
  537. package/dist/hooks/useAgentTranscripts.js +0 -141
  538. package/dist/hooks/useAgentTranscripts.js.map +0 -7
  539. package/dist/hooks/useAnimationSync.js +0 -53
  540. package/dist/hooks/useAnimationSync.js.map +0 -7
  541. package/dist/hooks/useApiKeyVerification.js +0 -12
  542. package/dist/hooks/useApiKeyVerification.js.map +0 -7
  543. package/dist/hooks/useArrowKeyHistory.js +0 -52
  544. package/dist/hooks/useArrowKeyHistory.js.map +0 -7
  545. package/dist/hooks/useAskUser.js +0 -24
  546. package/dist/hooks/useAskUser.js.map +0 -7
  547. package/dist/hooks/useBackgroundShells.js +0 -29
  548. package/dist/hooks/useBackgroundShells.js.map +0 -7
  549. package/dist/hooks/useCanUseTool.js +0 -89
  550. package/dist/hooks/useCanUseTool.js.map +0 -7
  551. package/dist/hooks/useDeferredLoading.js +0 -64
  552. package/dist/hooks/useDeferredLoading.js.map +0 -7
  553. package/dist/hooks/useDoublePress.js +0 -31
  554. package/dist/hooks/useDoublePress.js.map +0 -7
  555. package/dist/hooks/useExitOnCtrlCD.js +0 -30
  556. package/dist/hooks/useExitOnCtrlCD.js.map +0 -7
  557. package/dist/hooks/useHistorySearch.js +0 -62
  558. package/dist/hooks/useHistorySearch.js.map +0 -7
  559. package/dist/hooks/useHookStatus.js +0 -40
  560. package/dist/hooks/useHookStatus.js.map +0 -7
  561. package/dist/hooks/useInterval.js +0 -18
  562. package/dist/hooks/useInterval.js.map +0 -7
  563. package/dist/hooks/useLogMessages.js +0 -41
  564. package/dist/hooks/useLogMessages.js.map +0 -7
  565. package/dist/hooks/useLogStartupTime.js +0 -10
  566. package/dist/hooks/useLogStartupTime.js.map +0 -7
  567. package/dist/hooks/useMessageGroups.js +0 -43
  568. package/dist/hooks/useMessageGroups.js.map +0 -7
  569. package/dist/hooks/useNotifyAfterTimeout.js +0 -42
  570. package/dist/hooks/useNotifyAfterTimeout.js.map +0 -7
  571. package/dist/hooks/usePermissionRequestLogging.js +0 -23
  572. package/dist/hooks/usePermissionRequestLogging.js.map +0 -7
  573. package/dist/hooks/useSessionTracking.js +0 -55
  574. package/dist/hooks/useSessionTracking.js.map +0 -7
  575. package/dist/hooks/useTerminalSize.js +0 -115
  576. package/dist/hooks/useTerminalSize.js.map +0 -7
  577. package/dist/hooks/useTextInput.js +0 -253
  578. package/dist/hooks/useTextInput.js.map +0 -7
  579. package/dist/hooks/useUnifiedCompletion.js +0 -1098
  580. package/dist/hooks/useUnifiedCompletion.js.map +0 -7
  581. package/dist/i18n/index.js +0 -109
  582. package/dist/i18n/index.js.map +0 -7
  583. package/dist/i18n/locales/en.js +0 -928
  584. package/dist/i18n/locales/en.js.map +0 -7
  585. package/dist/i18n/locales/index.js +0 -7
  586. package/dist/i18n/locales/index.js.map +0 -7
  587. package/dist/i18n/locales/zh-CN.js +0 -928
  588. package/dist/i18n/locales/zh-CN.js.map +0 -7
  589. package/dist/i18n/types.js +0 -8
  590. package/dist/i18n/types.js.map +0 -7
  591. package/dist/index.js +0 -5
  592. package/dist/index.js.map +0 -7
  593. package/dist/messages.js +0 -68
  594. package/dist/messages.js.map +0 -7
  595. package/dist/package.json +0 -4
  596. package/dist/permissions.js +0 -430
  597. package/dist/permissions.js.map +0 -7
  598. package/dist/query.js +0 -753
  599. package/dist/query.js.map +0 -7
  600. package/dist/screens/LogList.js +0 -55
  601. package/dist/screens/LogList.js.map +0 -7
  602. package/dist/screens/REPL.js +0 -1097
  603. package/dist/screens/REPL.js.map +0 -7
  604. package/dist/screens/ResumeConversation.js +0 -59
  605. package/dist/screens/ResumeConversation.js.map +0 -7
  606. package/dist/services/adapters/base.js +0 -29
  607. package/dist/services/adapters/base.js.map +0 -7
  608. package/dist/services/adapters/chatCompletions.js +0 -71
  609. package/dist/services/adapters/chatCompletions.js.map +0 -7
  610. package/dist/services/adapters/messageNormalizer.js +0 -354
  611. package/dist/services/adapters/messageNormalizer.js.map +0 -7
  612. package/dist/services/adapters/responsesAPI.js +0 -137
  613. package/dist/services/adapters/responsesAPI.js.map +0 -7
  614. package/dist/services/agentTeams/index.js +0 -35
  615. package/dist/services/agentTeams/index.js.map +0 -7
  616. package/dist/services/agentTeams/mailbox.js +0 -114
  617. package/dist/services/agentTeams/mailbox.js.map +0 -7
  618. package/dist/services/agentTeams/teamManager.js +0 -149
  619. package/dist/services/agentTeams/teamManager.js.map +0 -7
  620. package/dist/services/agentTeams/teamTaskStore.js +0 -114
  621. package/dist/services/agentTeams/teamTaskStore.js.map +0 -7
  622. package/dist/services/agentTeams/teammateSpawner.js +0 -80
  623. package/dist/services/agentTeams/teammateSpawner.js.map +0 -7
  624. package/dist/services/checkpointManager.js +0 -399
  625. package/dist/services/checkpointManager.js.map +0 -7
  626. package/dist/services/claude.js +0 -41
  627. package/dist/services/claude.js.map +0 -7
  628. package/dist/services/compressionService.js +0 -259
  629. package/dist/services/compressionService.js.map +0 -7
  630. package/dist/services/contextMonitor.js +0 -162
  631. package/dist/services/contextMonitor.js.map +0 -7
  632. package/dist/services/customCommands.js +0 -489
  633. package/dist/services/customCommands.js.map +0 -7
  634. package/dist/services/fileFreshness.js +0 -275
  635. package/dist/services/fileFreshness.js.map +0 -7
  636. package/dist/services/gpt5ConnectionTest.js +0 -263
  637. package/dist/services/gpt5ConnectionTest.js.map +0 -7
  638. package/dist/services/hookExecutor.js +0 -728
  639. package/dist/services/hookExecutor.js.map +0 -7
  640. package/dist/services/intelligentCompactor.js +0 -281
  641. package/dist/services/intelligentCompactor.js.map +0 -7
  642. package/dist/services/llm/anthropicProvider.js +0 -807
  643. package/dist/services/llm/anthropicProvider.js.map +0 -7
  644. package/dist/services/llm/dispatch.js +0 -218
  645. package/dist/services/llm/dispatch.js.map +0 -7
  646. package/dist/services/llm/index.js +0 -44
  647. package/dist/services/llm/index.js.map +0 -7
  648. package/dist/services/llm/mintoContext.js +0 -69
  649. package/dist/services/llm/mintoContext.js.map +0 -7
  650. package/dist/services/llm/openaiProvider.js +0 -622
  651. package/dist/services/llm/openaiProvider.js.map +0 -7
  652. package/dist/services/llm/types.js +0 -157
  653. package/dist/services/llm/types.js.map +0 -7
  654. package/dist/services/lspConfig.js +0 -109
  655. package/dist/services/lspConfig.js.map +0 -7
  656. package/dist/services/mainAgentCompressor.js +0 -84
  657. package/dist/services/mainAgentCompressor.js.map +0 -7
  658. package/dist/services/mcpClient.js +0 -921
  659. package/dist/services/mcpClient.js.map +0 -7
  660. package/dist/services/mcpServerApproval.js +0 -55
  661. package/dist/services/mcpServerApproval.js.map +0 -7
  662. package/dist/services/mentionProcessor.js +0 -214
  663. package/dist/services/mentionProcessor.js.map +0 -7
  664. package/dist/services/modelAdapterFactory.js +0 -47
  665. package/dist/services/modelAdapterFactory.js.map +0 -7
  666. package/dist/services/modelOrchestrator.js +0 -310
  667. package/dist/services/modelOrchestrator.js.map +0 -7
  668. package/dist/services/notifier.js +0 -49
  669. package/dist/services/notifier.js.map +0 -7
  670. package/dist/services/oauth.js +0 -249
  671. package/dist/services/oauth.js.map +0 -7
  672. package/dist/services/openai.js +0 -1049
  673. package/dist/services/openai.js.map +0 -7
  674. package/dist/services/outputStyles.js +0 -219
  675. package/dist/services/outputStyles.js.map +0 -7
  676. package/dist/services/plugins/index.js +0 -5
  677. package/dist/services/plugins/index.js.map +0 -7
  678. package/dist/services/plugins/lspServers.js +0 -188
  679. package/dist/services/plugins/lspServers.js.map +0 -7
  680. package/dist/services/plugins/pluginRuntime.js +0 -230
  681. package/dist/services/plugins/pluginRuntime.js.map +0 -7
  682. package/dist/services/plugins/pluginValidation.js +0 -226
  683. package/dist/services/plugins/pluginValidation.js.map +0 -7
  684. package/dist/services/plugins/skillMarketplace.js +0 -567
  685. package/dist/services/plugins/skillMarketplace.js.map +0 -7
  686. package/dist/services/responseStateManager.js +0 -102
  687. package/dist/services/responseStateManager.js.map +0 -7
  688. package/dist/services/sandbox/filesystemBoundary.js +0 -341
  689. package/dist/services/sandbox/filesystemBoundary.js.map +0 -7
  690. package/dist/services/sandbox/index.js +0 -14
  691. package/dist/services/sandbox/index.js.map +0 -7
  692. package/dist/services/sandbox/networkProxy.js +0 -293
  693. package/dist/services/sandbox/networkProxy.js.map +0 -7
  694. package/dist/services/sandbox/sandboxController.js +0 -574
  695. package/dist/services/sandbox/sandboxController.js.map +0 -7
  696. package/dist/services/sandbox/types.js +0 -50
  697. package/dist/services/sandbox/types.js.map +0 -7
  698. package/dist/services/sentry.js +0 -9
  699. package/dist/services/sentry.js.map +0 -7
  700. package/dist/services/sessionMemory.js +0 -279
  701. package/dist/services/sessionMemory.js.map +0 -7
  702. package/dist/services/subagentAbortManager.js +0 -95
  703. package/dist/services/subagentAbortManager.js.map +0 -7
  704. package/dist/services/subagentCompressor.js +0 -146
  705. package/dist/services/subagentCompressor.js.map +0 -7
  706. package/dist/services/systemReminder.js +0 -693
  707. package/dist/services/systemReminder.js.map +0 -7
  708. package/dist/services/taskRouter.js +0 -324
  709. package/dist/services/taskRouter.js.map +0 -7
  710. package/dist/services/taskStore.js +0 -224
  711. package/dist/services/taskStore.js.map +0 -7
  712. package/dist/services/vcr.js +0 -133
  713. package/dist/services/vcr.js.map +0 -7
  714. package/dist/tools/ArchitectTool/ArchitectTool.js +0 -126
  715. package/dist/tools/ArchitectTool/ArchitectTool.js.map +0 -7
  716. package/dist/tools/ArchitectTool/prompt.js +0 -18
  717. package/dist/tools/ArchitectTool/prompt.js.map +0 -7
  718. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -433
  719. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +0 -7
  720. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js +0 -158
  721. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +0 -7
  722. package/dist/tools/AskUserQuestionTool/index.js +0 -5
  723. package/dist/tools/AskUserQuestionTool/index.js.map +0 -7
  724. package/dist/tools/AskUserQuestionTool/prompt.js +0 -167
  725. package/dist/tools/AskUserQuestionTool/prompt.js.map +0 -7
  726. package/dist/tools/BaseTool.js +0 -72
  727. package/dist/tools/BaseTool.js.map +0 -7
  728. package/dist/tools/BashOutputTool/BashOutputTool.js +0 -120
  729. package/dist/tools/BashOutputTool/BashOutputTool.js.map +0 -7
  730. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +0 -14
  731. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +0 -7
  732. package/dist/tools/BashOutputTool/prompt.js +0 -13
  733. package/dist/tools/BashOutputTool/prompt.js.map +0 -7
  734. package/dist/tools/BashTool/BashTool.js +0 -330
  735. package/dist/tools/BashTool/BashTool.js.map +0 -7
  736. package/dist/tools/BashTool/BashToolResultMessage.js +0 -24
  737. package/dist/tools/BashTool/BashToolResultMessage.js.map +0 -7
  738. package/dist/tools/BashTool/OutputLine.js +0 -84
  739. package/dist/tools/BashTool/OutputLine.js.map +0 -7
  740. package/dist/tools/BashTool/prompt.js +0 -519
  741. package/dist/tools/BashTool/prompt.js.map +0 -7
  742. package/dist/tools/BashTool/utils.js +0 -51
  743. package/dist/tools/BashTool/utils.js.map +0 -7
  744. package/dist/tools/FileEditTool/FileEditTool.js +0 -273
  745. package/dist/tools/FileEditTool/FileEditTool.js.map +0 -7
  746. package/dist/tools/FileEditTool/prompt.js +0 -60
  747. package/dist/tools/FileEditTool/prompt.js.map +0 -7
  748. package/dist/tools/FileEditTool/utils.js +0 -48
  749. package/dist/tools/FileEditTool/utils.js.map +0 -7
  750. package/dist/tools/FileReadTool/FileReadTool.js +0 -305
  751. package/dist/tools/FileReadTool/FileReadTool.js.map +0 -7
  752. package/dist/tools/FileReadTool/prompt.js +0 -25
  753. package/dist/tools/FileReadTool/prompt.js.map +0 -7
  754. package/dist/tools/FileWriteTool/FileWriteTool.js +0 -211
  755. package/dist/tools/FileWriteTool/FileWriteTool.js.map +0 -7
  756. package/dist/tools/FileWriteTool/prompt.js +0 -23
  757. package/dist/tools/FileWriteTool/prompt.js.map +0 -7
  758. package/dist/tools/GlobTool/GlobTool.js +0 -99
  759. package/dist/tools/GlobTool/GlobTool.js.map +0 -7
  760. package/dist/tools/GlobTool/prompt.js +0 -23
  761. package/dist/tools/GlobTool/prompt.js.map +0 -7
  762. package/dist/tools/GrepTool/GrepTool.js +0 -406
  763. package/dist/tools/GrepTool/GrepTool.js.map +0 -7
  764. package/dist/tools/GrepTool/prompt.js +0 -22
  765. package/dist/tools/GrepTool/prompt.js.map +0 -7
  766. package/dist/tools/KillShellTool/KillShellTool.js +0 -92
  767. package/dist/tools/KillShellTool/KillShellTool.js.map +0 -7
  768. package/dist/tools/KillShellTool/KillShellToolResultMessage.js +0 -14
  769. package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +0 -7
  770. package/dist/tools/KillShellTool/prompt.js +0 -12
  771. package/dist/tools/KillShellTool/prompt.js.map +0 -7
  772. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +0 -109
  773. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +0 -7
  774. package/dist/tools/ListMcpResourcesTool/prompt.js +0 -19
  775. package/dist/tools/ListMcpResourcesTool/prompt.js.map +0 -7
  776. package/dist/tools/LspTool/LspTool.js +0 -673
  777. package/dist/tools/LspTool/LspTool.js.map +0 -7
  778. package/dist/tools/LspTool/prompt.js +0 -27
  779. package/dist/tools/LspTool/prompt.js.map +0 -7
  780. package/dist/tools/MCPTool/MCPTool.js +0 -97
  781. package/dist/tools/MCPTool/MCPTool.js.map +0 -7
  782. package/dist/tools/MCPTool/prompt.js +0 -7
  783. package/dist/tools/MCPTool/prompt.js.map +0 -7
  784. package/dist/tools/MemoryReadTool/MemoryReadTool.js +0 -117
  785. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +0 -7
  786. package/dist/tools/MemoryReadTool/prompt.js +0 -7
  787. package/dist/tools/MemoryReadTool/prompt.js.map +0 -7
  788. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +0 -78
  789. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +0 -7
  790. package/dist/tools/MemoryWriteTool/prompt.js +0 -7
  791. package/dist/tools/MemoryWriteTool/prompt.js.map +0 -7
  792. package/dist/tools/MultiEditTool/MultiEditTool.js +0 -328
  793. package/dist/tools/MultiEditTool/MultiEditTool.js.map +0 -7
  794. package/dist/tools/MultiEditTool/prompt.js +0 -50
  795. package/dist/tools/MultiEditTool/prompt.js.map +0 -7
  796. package/dist/tools/NotebookEditTool/NotebookEditTool.js +0 -257
  797. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +0 -7
  798. package/dist/tools/NotebookEditTool/prompt.js +0 -7
  799. package/dist/tools/NotebookEditTool/prompt.js.map +0 -7
  800. package/dist/tools/NotebookReadTool/NotebookReadTool.js +0 -218
  801. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +0 -7
  802. package/dist/tools/NotebookReadTool/prompt.js +0 -7
  803. package/dist/tools/NotebookReadTool/prompt.js.map +0 -7
  804. package/dist/tools/PlanModeTool/EnterPlanModeTool.js +0 -81
  805. package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +0 -7
  806. package/dist/tools/PlanModeTool/ExitPlanModeTool.js +0 -111
  807. package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +0 -7
  808. package/dist/tools/PlanModeTool/prompt.js +0 -94
  809. package/dist/tools/PlanModeTool/prompt.js.map +0 -7
  810. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +0 -130
  811. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js.map +0 -7
  812. package/dist/tools/ReadMcpResourceTool/prompt.js +0 -17
  813. package/dist/tools/ReadMcpResourceTool/prompt.js.map +0 -7
  814. package/dist/tools/SkillTool/SkillTool.js +0 -227
  815. package/dist/tools/SkillTool/SkillTool.js.map +0 -7
  816. package/dist/tools/SkillTool/prompt.js +0 -81
  817. package/dist/tools/SkillTool/prompt.js.map +0 -7
  818. package/dist/tools/SlashCommandTool/SlashCommandTool.js +0 -416
  819. package/dist/tools/SlashCommandTool/SlashCommandTool.js.map +0 -7
  820. package/dist/tools/SlashCommandTool/prompt.js +0 -35
  821. package/dist/tools/SlashCommandTool/prompt.js.map +0 -7
  822. package/dist/tools/TaskCreateTool/TaskCreateTool.js +0 -102
  823. package/dist/tools/TaskCreateTool/TaskCreateTool.js.map +0 -7
  824. package/dist/tools/TaskCreateTool/prompt.js +0 -47
  825. package/dist/tools/TaskCreateTool/prompt.js.map +0 -7
  826. package/dist/tools/TaskGetTool/TaskGetTool.js +0 -115
  827. package/dist/tools/TaskGetTool/TaskGetTool.js.map +0 -7
  828. package/dist/tools/TaskGetTool/prompt.js +0 -28
  829. package/dist/tools/TaskGetTool/prompt.js.map +0 -7
  830. package/dist/tools/TaskListTool/TaskListTool.js +0 -102
  831. package/dist/tools/TaskListTool/TaskListTool.js.map +0 -7
  832. package/dist/tools/TaskListTool/prompt.js +0 -27
  833. package/dist/tools/TaskListTool/prompt.js.map +0 -7
  834. package/dist/tools/TaskOutputTool/TaskOutputTool.js +0 -190
  835. package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +0 -7
  836. package/dist/tools/TaskOutputTool/prompt.js +0 -15
  837. package/dist/tools/TaskOutputTool/prompt.js.map +0 -7
  838. package/dist/tools/TaskStopTool/TaskStopTool.js +0 -150
  839. package/dist/tools/TaskStopTool/TaskStopTool.js.map +0 -7
  840. package/dist/tools/TaskStopTool/prompt.js +0 -15
  841. package/dist/tools/TaskStopTool/prompt.js.map +0 -7
  842. package/dist/tools/TaskTool/TaskTool.js +0 -861
  843. package/dist/tools/TaskTool/TaskTool.js.map +0 -7
  844. package/dist/tools/TaskTool/constants.js +0 -5
  845. package/dist/tools/TaskTool/constants.js.map +0 -7
  846. package/dist/tools/TaskTool/prompt.js +0 -117
  847. package/dist/tools/TaskTool/prompt.js.map +0 -7
  848. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js +0 -134
  849. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js.map +0 -7
  850. package/dist/tools/TaskUpdateTool/prompt.js +0 -81
  851. package/dist/tools/TaskUpdateTool/prompt.js.map +0 -7
  852. package/dist/tools/ThinkTool/ThinkTool.js +0 -45
  853. package/dist/tools/ThinkTool/ThinkTool.js.map +0 -7
  854. package/dist/tools/ThinkTool/prompt.js +0 -16
  855. package/dist/tools/ThinkTool/prompt.js.map +0 -7
  856. package/dist/tools/TodoWriteTool/TodoWriteTool.js +0 -232
  857. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +0 -7
  858. package/dist/tools/TodoWriteTool/prompt.js +0 -87
  859. package/dist/tools/TodoWriteTool/prompt.js.map +0 -7
  860. package/dist/tools/URLFetcherTool/URLFetcherTool.js +0 -143
  861. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +0 -7
  862. package/dist/tools/URLFetcherTool/cache.js +0 -95
  863. package/dist/tools/URLFetcherTool/cache.js.map +0 -7
  864. package/dist/tools/URLFetcherTool/htmlToMarkdown.js +0 -44
  865. package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +0 -7
  866. package/dist/tools/URLFetcherTool/prompt.js +0 -27
  867. package/dist/tools/URLFetcherTool/prompt.js.map +0 -7
  868. package/dist/tools/WebSearchTool/WebSearchTool.js +0 -91
  869. package/dist/tools/WebSearchTool/WebSearchTool.js.map +0 -7
  870. package/dist/tools/WebSearchTool/prompt.js +0 -23
  871. package/dist/tools/WebSearchTool/prompt.js.map +0 -7
  872. package/dist/tools/WebSearchTool/searchProviders.js +0 -58
  873. package/dist/tools/WebSearchTool/searchProviders.js.map +0 -7
  874. package/dist/tools/lsTool/lsTool.js +0 -201
  875. package/dist/tools/lsTool/lsTool.js.map +0 -7
  876. package/dist/tools/lsTool/prompt.js +0 -5
  877. package/dist/tools/lsTool/prompt.js.map +0 -7
  878. package/dist/tools.js +0 -127
  879. package/dist/tools.js.map +0 -7
  880. package/dist/types/PermissionMode.js +0 -131
  881. package/dist/types/PermissionMode.js.map +0 -7
  882. package/dist/types/RequestContext.js +0 -47
  883. package/dist/types/RequestContext.js.map +0 -7
  884. package/dist/types/agentTeams.js +0 -1
  885. package/dist/types/agentTeams.js.map +0 -7
  886. package/dist/types/askUserQuestion.js +0 -1
  887. package/dist/types/askUserQuestion.js.map +0 -7
  888. package/dist/types/common.d.js +0 -1
  889. package/dist/types/common.d.js.map +0 -7
  890. package/dist/types/conversation.js +0 -1
  891. package/dist/types/conversation.js.map +0 -7
  892. package/dist/types/core.js +0 -1
  893. package/dist/types/core.js.map +0 -7
  894. package/dist/types/hooks.js +0 -45
  895. package/dist/types/hooks.js.map +0 -7
  896. package/dist/types/interactionRound.js +0 -1
  897. package/dist/types/interactionRound.js.map +0 -7
  898. package/dist/types/logs.js +0 -1
  899. package/dist/types/logs.js.map +0 -7
  900. package/dist/types/marketplace.js +0 -107
  901. package/dist/types/marketplace.js.map +0 -7
  902. package/dist/types/messageGroup.js +0 -36
  903. package/dist/types/messageGroup.js.map +0 -7
  904. package/dist/types/modelCapabilities.js +0 -1
  905. package/dist/types/modelCapabilities.js.map +0 -7
  906. package/dist/types/notebook.js +0 -1
  907. package/dist/types/notebook.js.map +0 -7
  908. package/dist/types/plugin.js +0 -84
  909. package/dist/types/plugin.js.map +0 -7
  910. package/dist/types/subagent.js +0 -1
  911. package/dist/types/subagent.js.map +0 -7
  912. package/dist/types/thinking.js +0 -1
  913. package/dist/types/thinking.js.map +0 -7
  914. package/dist/utils/BackgroundShellManager.js +0 -378
  915. package/dist/utils/BackgroundShellManager.js.map +0 -7
  916. package/dist/utils/CircuitBreaker.js +0 -242
  917. package/dist/utils/CircuitBreaker.js.map +0 -7
  918. package/dist/utils/Cursor.js +0 -315
  919. package/dist/utils/Cursor.js.map +0 -7
  920. package/dist/utils/MessageBatchBuffer.js +0 -102
  921. package/dist/utils/MessageBatchBuffer.js.map +0 -7
  922. package/dist/utils/PersistentShell.js +0 -526
  923. package/dist/utils/PersistentShell.js.map +0 -7
  924. package/dist/utils/advancedFuzzyMatcher.js +0 -209
  925. package/dist/utils/advancedFuzzyMatcher.js.map +0 -7
  926. package/dist/utils/agentHookExecutor.js +0 -103
  927. package/dist/utils/agentHookExecutor.js.map +0 -7
  928. package/dist/utils/agentLoader.js +0 -518
  929. package/dist/utils/agentLoader.js.map +0 -7
  930. package/dist/utils/agentMemory.js +0 -134
  931. package/dist/utils/agentMemory.js.map +0 -7
  932. package/dist/utils/agentStorage.js +0 -59
  933. package/dist/utils/agentStorage.js.map +0 -7
  934. package/dist/utils/agentTranscripts.js +0 -641
  935. package/dist/utils/agentTranscripts.js.map +0 -7
  936. package/dist/utils/animationManager.js +0 -213
  937. package/dist/utils/animationManager.js.map +0 -7
  938. package/dist/utils/animationSync.js +0 -110
  939. package/dist/utils/animationSync.js.map +0 -7
  940. package/dist/utils/array.js +0 -7
  941. package/dist/utils/array.js.map +0 -7
  942. package/dist/utils/ask.js +0 -79
  943. package/dist/utils/ask.js.map +0 -7
  944. package/dist/utils/async.js +0 -167
  945. package/dist/utils/async.js.map +0 -7
  946. package/dist/utils/asyncFile.js +0 -215
  947. package/dist/utils/asyncFile.js.map +0 -7
  948. package/dist/utils/auth.js +0 -11
  949. package/dist/utils/auth.js.map +0 -7
  950. package/dist/utils/autoCompactCore.js +0 -186
  951. package/dist/utils/autoCompactCore.js.map +0 -7
  952. package/dist/utils/autoUpdater.js +0 -113
  953. package/dist/utils/autoUpdater.js.map +0 -7
  954. package/dist/utils/backgroundAgentManager.js +0 -231
  955. package/dist/utils/backgroundAgentManager.js.map +0 -7
  956. package/dist/utils/browser.js +0 -15
  957. package/dist/utils/browser.js.map +0 -7
  958. package/dist/utils/claudeCodeSync.js +0 -439
  959. package/dist/utils/claudeCodeSync.js.map +0 -7
  960. package/dist/utils/cleanup.js +0 -54
  961. package/dist/utils/cleanup.js.map +0 -7
  962. package/dist/utils/commands.js +0 -219
  963. package/dist/utils/commands.js.map +0 -7
  964. package/dist/utils/commonUnixCommands.js +0 -689
  965. package/dist/utils/commonUnixCommands.js.map +0 -7
  966. package/dist/utils/compressionMode.js +0 -47
  967. package/dist/utils/compressionMode.js.map +0 -7
  968. package/dist/utils/config.js +0 -691
  969. package/dist/utils/config.js.map +0 -7
  970. package/dist/utils/configPaths.js +0 -199
  971. package/dist/utils/configPaths.js.map +0 -7
  972. package/dist/utils/configSchema.js +0 -227
  973. package/dist/utils/configSchema.js.map +0 -7
  974. package/dist/utils/conversationRecovery.js +0 -54
  975. package/dist/utils/conversationRecovery.js.map +0 -7
  976. package/dist/utils/credentials/CredentialStore.js +0 -1
  977. package/dist/utils/credentials/CredentialStore.js.map +0 -7
  978. package/dist/utils/credentials/EncryptedFileStore.js +0 -157
  979. package/dist/utils/credentials/EncryptedFileStore.js.map +0 -7
  980. package/dist/utils/credentials/index.js +0 -37
  981. package/dist/utils/credentials/index.js.map +0 -7
  982. package/dist/utils/credentials/migration.js +0 -82
  983. package/dist/utils/credentials/migration.js.map +0 -7
  984. package/dist/utils/debugLogger.js +0 -889
  985. package/dist/utils/debugLogger.js.map +0 -7
  986. package/dist/utils/diff.js +0 -32
  987. package/dist/utils/diff.js.map +0 -7
  988. package/dist/utils/env.js +0 -45
  989. package/dist/utils/env.js.map +0 -7
  990. package/dist/utils/envConfig.js +0 -116
  991. package/dist/utils/envConfig.js.map +0 -7
  992. package/dist/utils/errorHandling.js +0 -89
  993. package/dist/utils/errorHandling.js.map +0 -7
  994. package/dist/utils/errors.js +0 -23
  995. package/dist/utils/errors.js.map +0 -7
  996. package/dist/utils/execFileNoThrow.js +0 -45
  997. package/dist/utils/execFileNoThrow.js.map +0 -7
  998. package/dist/utils/exit.js +0 -73
  999. package/dist/utils/exit.js.map +0 -7
  1000. package/dist/utils/expertChatStorage.js +0 -78
  1001. package/dist/utils/expertChatStorage.js.map +0 -7
  1002. package/dist/utils/file.js +0 -282
  1003. package/dist/utils/file.js.map +0 -7
  1004. package/dist/utils/fileRecoveryCore.js +0 -41
  1005. package/dist/utils/fileRecoveryCore.js.map +0 -7
  1006. package/dist/utils/format.js +0 -109
  1007. package/dist/utils/format.js.map +0 -7
  1008. package/dist/utils/fuzzyMatcher.js +0 -258
  1009. package/dist/utils/fuzzyMatcher.js.map +0 -7
  1010. package/dist/utils/generators.js +0 -116
  1011. package/dist/utils/generators.js.map +0 -7
  1012. package/dist/utils/git.js +0 -83
  1013. package/dist/utils/git.js.map +0 -7
  1014. package/dist/utils/globalErrorHandler.js +0 -149
  1015. package/dist/utils/globalErrorHandler.js.map +0 -7
  1016. package/dist/utils/gpt5.js +0 -146
  1017. package/dist/utils/gpt5.js.map +0 -7
  1018. package/dist/utils/groupHandlers/index.js +0 -8
  1019. package/dist/utils/groupHandlers/index.js.map +0 -7
  1020. package/dist/utils/groupHandlers/parallelTasksHandler.js +0 -140
  1021. package/dist/utils/groupHandlers/parallelTasksHandler.js.map +0 -7
  1022. package/dist/utils/groupHandlers/taskHandler.js +0 -104
  1023. package/dist/utils/groupHandlers/taskHandler.js.map +0 -7
  1024. package/dist/utils/groupHandlers/types.js +0 -1
  1025. package/dist/utils/groupHandlers/types.js.map +0 -7
  1026. package/dist/utils/historyManager.js +0 -234
  1027. package/dist/utils/historyManager.js.map +0 -7
  1028. package/dist/utils/hookManager.js +0 -482
  1029. package/dist/utils/hookManager.js.map +0 -7
  1030. package/dist/utils/http.js +0 -7
  1031. package/dist/utils/http.js.map +0 -7
  1032. package/dist/utils/imagePaste.js +0 -29
  1033. package/dist/utils/imagePaste.js.map +0 -7
  1034. package/dist/utils/json.js +0 -16
  1035. package/dist/utils/json.js.map +0 -7
  1036. package/dist/utils/log.js +0 -329
  1037. package/dist/utils/log.js.map +0 -7
  1038. package/dist/utils/logRotation.js +0 -224
  1039. package/dist/utils/logRotation.js.map +0 -7
  1040. package/dist/utils/markdown.js +0 -246
  1041. package/dist/utils/markdown.js.map +0 -7
  1042. package/dist/utils/marketplaceManager.js +0 -545
  1043. package/dist/utils/marketplaceManager.js.map +0 -7
  1044. package/dist/utils/memSafety.js +0 -264
  1045. package/dist/utils/memSafety.js.map +0 -7
  1046. package/dist/utils/memoizeWithTTL.js +0 -25
  1047. package/dist/utils/memoizeWithTTL.js.map +0 -7
  1048. package/dist/utils/messageContextManager.js +0 -195
  1049. package/dist/utils/messageContextManager.js.map +0 -7
  1050. package/dist/utils/messageGroupManager.js +0 -274
  1051. package/dist/utils/messageGroupManager.js.map +0 -7
  1052. package/dist/utils/messages.js +0 -667
  1053. package/dist/utils/messages.js.map +0 -7
  1054. package/dist/utils/migration/index.js +0 -37
  1055. package/dist/utils/migration/index.js.map +0 -7
  1056. package/dist/utils/migration/migrateHistory.js +0 -273
  1057. package/dist/utils/migration/migrateHistory.js.map +0 -7
  1058. package/dist/utils/migration/migrateTodos.js +0 -323
  1059. package/dist/utils/migration/migrateTodos.js.map +0 -7
  1060. package/dist/utils/model.js +0 -846
  1061. package/dist/utils/model.js.map +0 -7
  1062. package/dist/utils/pasteCache.js +0 -309
  1063. package/dist/utils/pasteCache.js.map +0 -7
  1064. package/dist/utils/permissions/filesystem.js +0 -236
  1065. package/dist/utils/permissions/filesystem.js.map +0 -7
  1066. package/dist/utils/plan/planMode.js +0 -143
  1067. package/dist/utils/plan/planMode.js.map +0 -7
  1068. package/dist/utils/pluginInstaller.js +0 -518
  1069. package/dist/utils/pluginInstaller.js.map +0 -7
  1070. package/dist/utils/pluginLoader.js +0 -801
  1071. package/dist/utils/pluginLoader.js.map +0 -7
  1072. package/dist/utils/pluginRegistry.js +0 -111
  1073. package/dist/utils/pluginRegistry.js.map +0 -7
  1074. package/dist/utils/pluginValidator.js +0 -798
  1075. package/dist/utils/pluginValidator.js.map +0 -7
  1076. package/dist/utils/ptyCompat.js +0 -125
  1077. package/dist/utils/ptyCompat.js.map +0 -7
  1078. package/dist/utils/replStateMachine.js +0 -145
  1079. package/dist/utils/replStateMachine.js.map +0 -7
  1080. package/dist/utils/repoFetcher.js +0 -110
  1081. package/dist/utils/repoFetcher.js.map +0 -7
  1082. package/dist/utils/ripgrep.js +0 -236
  1083. package/dist/utils/ripgrep.js.map +0 -7
  1084. package/dist/utils/roundConverter.js +0 -262
  1085. package/dist/utils/roundConverter.js.map +0 -7
  1086. package/dist/utils/safeFetch.js +0 -45
  1087. package/dist/utils/safeFetch.js.map +0 -7
  1088. package/dist/utils/safePath.js +0 -132
  1089. package/dist/utils/safePath.js.map +0 -7
  1090. package/dist/utils/sanitizeInput.js +0 -32
  1091. package/dist/utils/sanitizeInput.js.map +0 -7
  1092. package/dist/utils/secureFile.js +0 -512
  1093. package/dist/utils/secureFile.js.map +0 -7
  1094. package/dist/utils/secureKeyStorage.js +0 -312
  1095. package/dist/utils/secureKeyStorage.js.map +0 -7
  1096. package/dist/utils/sensitiveFiles.js +0 -125
  1097. package/dist/utils/sensitiveFiles.js.map +0 -7
  1098. package/dist/utils/session/sessionPlugins.js +0 -67
  1099. package/dist/utils/session/sessionPlugins.js.map +0 -7
  1100. package/dist/utils/sessionIndex.js +0 -192
  1101. package/dist/utils/sessionIndex.js.map +0 -7
  1102. package/dist/utils/sessionState.js +0 -22
  1103. package/dist/utils/sessionState.js.map +0 -7
  1104. package/dist/utils/sessionTracker.js +0 -170
  1105. package/dist/utils/sessionTracker.js.map +0 -7
  1106. package/dist/utils/skillLoader.js +0 -230
  1107. package/dist/utils/skillLoader.js.map +0 -7
  1108. package/dist/utils/state.js +0 -24
  1109. package/dist/utils/state.js.map +0 -7
  1110. package/dist/utils/stats.js +0 -417
  1111. package/dist/utils/stats.js.map +0 -7
  1112. package/dist/utils/streamingState.js +0 -52
  1113. package/dist/utils/streamingState.js.map +0 -7
  1114. package/dist/utils/stringSubstitution.js +0 -106
  1115. package/dist/utils/stringSubstitution.js.map +0 -7
  1116. package/dist/utils/style.js +0 -34
  1117. package/dist/utils/style.js.map +0 -7
  1118. package/dist/utils/taskDisplayUtils.js +0 -257
  1119. package/dist/utils/taskDisplayUtils.js.map +0 -7
  1120. package/dist/utils/teamConfig.js +0 -624
  1121. package/dist/utils/teamConfig.js.map +0 -7
  1122. package/dist/utils/terminal.js +0 -59
  1123. package/dist/utils/terminal.js.map +0 -7
  1124. package/dist/utils/theme.js +0 -134
  1125. package/dist/utils/theme.js.map +0 -7
  1126. package/dist/utils/thinking.js +0 -59
  1127. package/dist/utils/thinking.js.map +0 -7
  1128. package/dist/utils/todoChangeCalculator.js +0 -64
  1129. package/dist/utils/todoChangeCalculator.js.map +0 -7
  1130. package/dist/utils/todoStorage.js +0 -413
  1131. package/dist/utils/todoStorage.js.map +0 -7
  1132. package/dist/utils/tokens.js +0 -30
  1133. package/dist/utils/tokens.js.map +0 -7
  1134. package/dist/utils/toolExecutionController.js +0 -109
  1135. package/dist/utils/toolExecutionController.js.map +0 -7
  1136. package/dist/utils/toolRiskClassification.js +0 -201
  1137. package/dist/utils/toolRiskClassification.js.map +0 -7
  1138. package/dist/utils/toolTimeout.js +0 -136
  1139. package/dist/utils/toolTimeout.js.map +0 -7
  1140. package/dist/utils/tooling/safeRender.js +0 -115
  1141. package/dist/utils/tooling/safeRender.js.map +0 -7
  1142. package/dist/utils/unaryLogging.js +0 -6
  1143. package/dist/utils/unaryLogging.js.map +0 -7
  1144. package/dist/utils/user.js +0 -40
  1145. package/dist/utils/user.js.map +0 -7
  1146. package/dist/utils/userFriendlyError.js +0 -346
  1147. package/dist/utils/userFriendlyError.js.map +0 -7
  1148. package/dist/utils/validate.js +0 -132
  1149. package/dist/utils/validate.js.map +0 -7
  1150. package/dist/version.js +0 -7
  1151. package/dist/version.js.map +0 -7
  1152. package/dist/yoga.wasm +0 -0
  1153. /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 {\n getGlobalConfig,\n saveGlobalConfig,\n getVerboseLabel,\n} from '@utils/config'\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 { 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 // Computed from displayMode for backward compatibility\n verboseToggleMessage?: string | null // Message to show after verbose toggle (survives remount)\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 onRollbackConversation?: () => boolean // Phase 4.1: Esc Esc rollback\n onToggleTodoPanel?: () => void // Ctrl+T: Toggle TodoPanel\n onToggleVerbose?: (verbose: boolean) => void | Promise<void> // Ctrl+O: Toggle verbose mode\n onToggleBackgroundPanel?: () => void // View background tasks\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 // Waiting list feature: queue prompts during task execution\n queuedPrompts?: string[] // List of queued prompts waiting to be processed\n onQueuePrompt?: (prompt: string) => void // Callback to add prompt to queue\n onPopQueuedPrompt?: () => string | undefined // Callback to pop last prompt from queue (for up arrow)\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}\n\nfunction getPastedTextPrompt(text: string): string {\n const newlineCount = (text.match(/\\r\\n|\\r|\\n/g) || []).length\n return `[Pasted text +${newlineCount} lines] `\n}\nfunction PromptInput({\n commands,\n forkNumber,\n messageLogName,\n isDisabled,\n isLoading,\n onQuery,\n debug,\n verbose,\n verboseToggleMessage,\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 onToggleVerbose,\n onModelChange,\n onRollbackConversation,\n onToggleBackgroundPanel,\n backgroundShellCount = 0,\n isBackgroundPanelOpen = false,\n queuedPrompts = [],\n onQueuePrompt,\n onPopQueuedPrompt,\n onInterrupt,\n isOverlayActive = false,\n unmount,\n startupItems,\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\n // Ctrl-D double-tap tracking\n const [ctrlDCount, setCtrlDCount] = useState(0)\n const [ctrlDTimer, setCtrlDTimer] = useState<NodeJS.Timeout | null>(null)\n\n // Unified Esc double-tap tracking for all Esc actions\n // All Esc actions require double-tap to prevent accidental triggers\n const [escCount, setEscCount] = useState(0)\n const [escTimer, setEscTimer] = useState<NodeJS.Timeout | null>(null)\n const ESC_DOUBLE_TAP_WINDOW = 500 // ms - tighter window for intentional double-tap\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 // Show verbose toggle message from parent (survives remount)\n useEffect(() => {\n if (verboseToggleMessage) {\n setHotkeyMessage({ show: true, text: verboseToggleMessage })\n }\n }, [verboseToggleMessage])\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 // 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 // Priority: 1) Pop from queued prompts (if any and input is empty), 2) History navigation\n const handleHistoryUp = () => {\n if (!completionActive) {\n // If input is empty and there are queued prompts, pop the last one\n if (\n input.trim() === '' &&\n queuedPrompts.length > 0 &&\n onPopQueuedPrompt\n ) {\n const poppedPrompt = onPopQueuedPrompt()\n if (poppedPrompt) {\n onInputChange(poppedPrompt)\n setCursorOffset(poppedPrompt.length)\n return\n }\n }\n onHistoryUp()\n }\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 // Show confirmation to user (simplified - in real UI might show dialog)\n const confirmed = confirm(\n decision.reason || 'Hook requested approval. Continue?',\n )\n if (!confirmed) {\n return // Don't submit\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 // Waiting list feature: queue prompt when busy instead of rejecting\n if (isLoading) {\n if (onQueuePrompt && input.trim()) {\n onQueuePrompt(input.trim())\n onInputChange('')\n setMessage({\n show: true,\n text: `Queued: \"${input.slice(0, 30)}${input.length > 30 ? '...' : ''}\" (${queuedPrompts.length + 1} in queue)`,\n })\n setTimeout(() => setMessage({ show: false }), 2000)\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 // Intercept exit commands and call process.exit(0) directly\n // This matches Kode-cli's working pattern where process.on('exit') handler prints the cost summary\n // The simple pattern: exit command \u2192 process.exit(0) \u2192 'exit' event \u2192 print summary\n // Include both with and without slash prefix\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 }\n\n let finalInput = input\n if (pastedText) {\n // Create the prompt pattern that would have been used for this pasted text\n const pastedPrompt = getPastedTextPrompt(pastedText)\n if (finalInput.includes(pastedPrompt)) {\n finalInput = finalInput.replace(pastedPrompt, pastedText)\n } // otherwise, ignore the pastedText if the user has modified the prompt\n }\n onInputChange('')\n onModeChange('prompt')\n // Suggestions are now handled by unified completion\n setPastedImage(null)\n setPastedText(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 // Get prompt with newline count (or cache info if cached)\n let pastedPrompt: string\n if (cacheEntry) {\n // Use cache 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 // 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 verbose mode (on/off)\n if (key.ctrl && inputChar === 'o') {\n // Use props.verbose (current UI state) as the source of truth for toggling\n // This ensures the toggle always reflects what user sees on screen\n const newVerbose = !verbose\n\n // Update global config to persist the preference\n const config = getGlobalConfig()\n saveGlobalConfig({\n ...config,\n verbose: newVerbose,\n })\n\n // Show feedback with mode name\n setHotkeyMessage({\n show: true,\n text: `${getVerboseLabel(newVerbose)} (Ctrl+O)`,\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n\n // Notify parent component to update verbose mode\n if (onToggleVerbose) {\n onToggleVerbose(newVerbose)\n }\n\n return true\n }\n\n // Ctrl+T: Toggle TodoPanel visibility\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+? 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 // 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 now unified in handleSpecialKey callback\n // All ESC actions require double-tap to prevent accidental triggers\n // - Double-tap with input: clears input\n // - Double-tap without input + loading: interrupts task\n // Message selector is now accessed via Ctrl+H or other hotkey\n\n // Tab (without Shift) for thinking mode toggle (Phase 4.2)\n // Only when completion is NOT active\n if (key.tab && !key.shift && !completionActive) {\n const config = getGlobalConfig()\n const newThinking = !config.thinking\n\n // Update global config\n saveGlobalConfig({\n ...config,\n thinking: newThinking,\n })\n\n // Show feedback\n setMessage({\n show: true,\n text: newThinking\n ? t('prompts.thinkingModeEnabled')\n : t('prompts.thinkingModeDisabled'),\n })\n setTimeout(() => setMessage({ show: false }), 2000)\n\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+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: All actions require double-tap to prevent accidental triggers\n // Priority logic:\n // 1. If input has content: double-tap clears input\n // 2. If input is empty + loading: double-tap interrupts task\n // 3. Single tap always shows hint, never performs action\n if (key.escape) {\n // Increment Esc count for double-tap detection\n const newEscCount = escCount + 1\n setEscCount(newEscCount)\n\n // Reset timer and start new one\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-tap detected - perform action based on state\n setEscCount(0) // Reset after action\n\n if (input.length > 0) {\n // Clear input\n onInputChange('')\n setHotkeyMessage({\n show: true,\n text: t('prompts.inputClearedEscEsc'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 1000)\n return true\n } else if (isLoading && onInterrupt) {\n // Interrupt task\n onInterrupt()\n setHotkeyMessage({\n show: true,\n text: t('prompts.interruptedEscEsc'),\n })\n setTimeout(() => setHotkeyMessage({ show: false }), 2000)\n return true\n }\n } else {\n // First tap - show appropriate hint\n if (input.length > 0) {\n setHotkeyMessage({\n show: true,\n text: t('prompts.pressEscAgainClear'),\n })\n } else if (isLoading) {\n setHotkeyMessage({\n show: true,\n text: t('prompts.pressEscAgainInterrupt'),\n })\n }\n setTimeout(() => setHotkeyMessage({ show: false }), 1500)\n return true // Consume the key to prevent other handlers\n }\n }\n\n return false // Not handled, allow normal processing\n },\n [\n handleQuickModelSwitch,\n isLoading,\n input.length,\n onInputChange,\n onInterrupt,\n escCount,\n escTimer,\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 />\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 {/* \u6392\u961F\u4EFB\u52A1 - \u7B49\u5F85\u5904\u7406\u7684\u63D0\u793A\uFF0C\u4F7F\u7528\u54C1\u724C\u914D\u8272 */}\n {queuedPrompts.length > 0 && (\n <Box flexDirection=\"column\" marginTop={1}>\n <Box paddingLeft={2}>\n <Text color={BRAND_GRADIENT.MIDDLE}>\n \u2500\u2500 {t('ui.hints.queued')} ({queuedPrompts.length})\n </Text>\n <Text color={SEMANTIC_COLORS.dim}>\n {' '}\n \u00B7 {t('ui.hints.willRunAfter')} \u00B7{' '}\n <Text color={SEMANTIC_COLORS.secondary}>\u2191</Text>{' '}\n {t('ui.hints.toEdit')} \u2500\u2500\n </Text>\n </Box>\n {queuedPrompts.map((prompt, index) => (\n <Box key={index} paddingLeft={2}>\n <Text color={BRAND_GRADIENT.START}>\u25C7 </Text>\n <Text color={SEMANTIC_COLORS.secondary}>\n {prompt.length > 60 ? prompt.slice(0, 60) + '...' : prompt}\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={queuedPrompts.length > 0 ? 0 : 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 || !!onQueuePrompt)\n }\n onSubmit={onSubmit}\n onChange={onChange}\n value={input}\n onHistoryUp={handleHistoryUp}\n onHistoryDown={handleHistoryDown}\n onHistoryReset={() => resetHistory()}\n placeholder={submitCount > 0 ? undefined : placeholder}\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 && !onQueuePrompt)}\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 {queuedPrompts.length > 0 && (\n <Text color={BRAND_GRADIENT.MIDDLE}>\n \u00B7 \uD83D\uDCCB {queuedPrompts.length} {t('ui.hints.queued')}\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 {queuedPrompts.length > 0 && (\n <Text color={BRAND_GRADIENT.MIDDLE}>\n \u2502 \uD83D\uDCCB {queuedPrompts.length} {t('ui.hints.queued')}\n </Text>\n )}\n {isLoading && onQueuePrompt && queuedPrompts.length === 0 && (\n <Text color={SEMANTIC_COLORS.dim}>\n \u2502 {t('ui.hints.typeToQueue')}\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 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// Simple exit function matching Kode-cli's working pattern\n// Cost summary is printed by process.on('exit') handler in exit.ts\nfunction exit(): never {\n setTerminalTitle('')\n process.exit(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
- }