centaurus-cli 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/dist/ai/types.js +0 -1
  2. package/dist/ai/types.js.map +1 -1
  3. package/dist/cli-adapter.js +5047 -5158
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/commands/CommandParser.js +372 -315
  6. package/dist/commands/CommandParser.js.map +1 -1
  7. package/dist/config/build-config.js +11 -42
  8. package/dist/config/build-config.js.map +1 -1
  9. package/dist/config/defaultConfig.js +94 -82
  10. package/dist/config/defaultConfig.js.map +1 -1
  11. package/dist/config/manager.js +144 -160
  12. package/dist/config/manager.js.map +1 -1
  13. package/dist/config/mcp-config-manager.js +411 -364
  14. package/dist/config/mcp-config-manager.js.map +1 -1
  15. package/dist/config/models.js +118 -185
  16. package/dist/config/models.js.map +1 -1
  17. package/dist/config/slash-commands.js +186 -184
  18. package/dist/config/slash-commands.js.map +1 -1
  19. package/dist/config/types.js +33 -26
  20. package/dist/config/types.js.map +1 -1
  21. package/dist/context/command-detector.js +63 -67
  22. package/dist/context/command-detector.js.map +1 -1
  23. package/dist/context/context-manager.js +533 -518
  24. package/dist/context/context-manager.js.map +1 -1
  25. package/dist/context/handlers/docker-handler.js +518 -576
  26. package/dist/context/handlers/docker-handler.js.map +1 -1
  27. package/dist/context/handlers/ssh-handler.js +1050 -1109
  28. package/dist/context/handlers/ssh-handler.js.map +1 -1
  29. package/dist/context/handlers/wsl-handler.js +558 -630
  30. package/dist/context/handlers/wsl-handler.js.map +1 -1
  31. package/dist/context/index.js +42 -6
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/context/subshell-handler.js +0 -4
  34. package/dist/context/subshell-handler.js.map +1 -1
  35. package/dist/context/types.js +20 -31
  36. package/dist/context/types.js.map +1 -1
  37. package/dist/hooks/useConnectivity.js +13 -10
  38. package/dist/hooks/useConnectivity.js.map +1 -1
  39. package/dist/hooks/useTerminalDimensions.js +67 -79
  40. package/dist/hooks/useTerminalDimensions.js.map +1 -1
  41. package/dist/index.js +228 -251
  42. package/dist/index.js.map +1 -1
  43. package/dist/mcp/mcp-command-handler.js +297 -260
  44. package/dist/mcp/mcp-command-handler.js.map +1 -1
  45. package/dist/mcp/mcp-server-manager.js +139 -155
  46. package/dist/mcp/mcp-server-manager.js.map +1 -1
  47. package/dist/mcp/mcp-tool-wrapper.js +74 -94
  48. package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
  49. package/dist/services/ai-autocomplete-agent.js +169 -181
  50. package/dist/services/ai-autocomplete-agent.js.map +1 -1
  51. package/dist/services/ai-context-injector.js +180 -93
  52. package/dist/services/ai-context-injector.js.map +1 -1
  53. package/dist/services/ai-service-client.js +513 -456
  54. package/dist/services/ai-service-client.js.map +1 -1
  55. package/dist/services/api-client.js +443 -441
  56. package/dist/services/api-client.js.map +1 -1
  57. package/dist/services/auth-handler.js +162 -198
  58. package/dist/services/auth-handler.js.map +1 -1
  59. package/dist/services/background-task-manager.js +258 -282
  60. package/dist/services/background-task-manager.js.map +1 -1
  61. package/dist/services/checkpoint-manager.js +1526 -1512
  62. package/dist/services/checkpoint-manager.js.map +1 -1
  63. package/dist/services/clipboard-service.js +151 -200
  64. package/dist/services/clipboard-service.js.map +1 -1
  65. package/dist/services/connectivity-manager.js +63 -65
  66. package/dist/services/connectivity-manager.js.map +1 -1
  67. package/dist/services/conversation-manager.js +118 -121
  68. package/dist/services/conversation-manager.js.map +1 -1
  69. package/dist/services/environment-context-injector.js +160 -187
  70. package/dist/services/environment-context-injector.js.map +1 -1
  71. package/dist/services/fast-context-agent.js +203 -243
  72. package/dist/services/fast-context-agent.js.map +1 -1
  73. package/dist/services/input-detection-agent.js +190 -202
  74. package/dist/services/input-detection-agent.js.map +1 -1
  75. package/dist/services/input-requirement-detector.js +155 -189
  76. package/dist/services/input-requirement-detector.js.map +1 -1
  77. package/dist/services/local-chat-storage.js +342 -365
  78. package/dist/services/local-chat-storage.js.map +1 -1
  79. package/dist/services/monitored-shell-manager.js +225 -233
  80. package/dist/services/monitored-shell-manager.js.map +1 -1
  81. package/dist/services/ollama-service.js +293 -310
  82. package/dist/services/ollama-service.js.map +1 -1
  83. package/dist/services/rules-storage.js +142 -0
  84. package/dist/services/rules-storage.js.map +1 -0
  85. package/dist/services/session-quota-manager.js +219 -235
  86. package/dist/services/session-quota-manager.js.map +1 -1
  87. package/dist/services/shell-input-agent.js +299 -334
  88. package/dist/services/shell-input-agent.js.map +1 -1
  89. package/dist/services/sub-agent-manager.js +459 -501
  90. package/dist/services/sub-agent-manager.js.map +1 -1
  91. package/dist/services/warpify-detector.js +133 -183
  92. package/dist/services/warpify-detector.js.map +1 -1
  93. package/dist/services/workflow-storage.js +202 -217
  94. package/dist/services/workflow-storage.js.map +1 -1
  95. package/dist/test-ssh-handler.js +148 -193
  96. package/dist/test-ssh-handler.js.map +1 -1
  97. package/dist/tools/add-mcp.js +161 -0
  98. package/dist/tools/add-mcp.js.map +1 -0
  99. package/dist/tools/background-command.js +240 -273
  100. package/dist/tools/background-command.js.map +1 -1
  101. package/dist/tools/command.js +447 -440
  102. package/dist/tools/command.js.map +1 -1
  103. package/dist/tools/create-image.js +172 -202
  104. package/dist/tools/create-image.js.map +1 -1
  105. package/dist/tools/enter-remote-session.js +169 -215
  106. package/dist/tools/enter-remote-session.js.map +1 -1
  107. package/dist/tools/fast-context.js +60 -67
  108. package/dist/tools/fast-context.js.map +1 -1
  109. package/dist/tools/file-ops.js +601 -572
  110. package/dist/tools/file-ops.js.map +1 -1
  111. package/dist/tools/find-files.js +262 -303
  112. package/dist/tools/find-files.js.map +1 -1
  113. package/dist/tools/get-diff.js +423 -406
  114. package/dist/tools/get-diff.js.map +1 -1
  115. package/dist/tools/grep-search.js +966 -948
  116. package/dist/tools/grep-search.js.map +1 -1
  117. package/dist/tools/inspect-symbol.js +308 -323
  118. package/dist/tools/inspect-symbol.js.map +1 -1
  119. package/dist/tools/plan-mode.js +459 -503
  120. package/dist/tools/plan-mode.js.map +1 -1
  121. package/dist/tools/read-binary-file.js +160 -190
  122. package/dist/tools/read-binary-file.js.map +1 -1
  123. package/dist/tools/registry.js +100 -84
  124. package/dist/tools/registry.js.map +1 -1
  125. package/dist/tools/reproduce_issue.js +170 -151
  126. package/dist/tools/reproduce_issue.js.map +1 -1
  127. package/dist/tools/sub-agent.js +223 -228
  128. package/dist/tools/sub-agent.js.map +1 -1
  129. package/dist/tools/task-complete.js +28 -27
  130. package/dist/tools/task-complete.js.map +1 -1
  131. package/dist/tools/types.js +0 -1
  132. package/dist/tools/types.js.map +1 -1
  133. package/dist/tools/validation.js +96 -118
  134. package/dist/tools/validation.js.map +1 -1
  135. package/dist/tools/web-search.js +194 -194
  136. package/dist/tools/web-search.js.map +1 -1
  137. package/dist/tools/workflow-tool.js +77 -82
  138. package/dist/tools/workflow-tool.js.map +1 -1
  139. package/dist/types/index.js +0 -1
  140. package/dist/types/index.js.map +1 -1
  141. package/dist/types/rule.js +1 -0
  142. package/dist/types/rule.js.map +1 -0
  143. package/dist/types/workflow.js +0 -7
  144. package/dist/types/workflow.js.map +1 -1
  145. package/dist/ui/components/AgentTimer.js +24 -25
  146. package/dist/ui/components/AgentTimer.js.map +1 -1
  147. package/dist/ui/components/App.js +3266 -3263
  148. package/dist/ui/components/App.js.map +1 -1
  149. package/dist/ui/components/AuthScreen.js +22 -34
  150. package/dist/ui/components/AuthScreen.js.map +1 -1
  151. package/dist/ui/components/AuthWelcomeScreen.js +30 -24
  152. package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
  153. package/dist/ui/components/Breadcrumbs.js +53 -82
  154. package/dist/ui/components/Breadcrumbs.js.map +1 -1
  155. package/dist/ui/components/CircularSelectInput.js +59 -67
  156. package/dist/ui/components/CircularSelectInput.js.map +1 -1
  157. package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
  158. package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
  159. package/dist/ui/components/CodeBlock.js +24 -42
  160. package/dist/ui/components/CodeBlock.js.map +1 -1
  161. package/dist/ui/components/ConfigViewer.js +18 -25
  162. package/dist/ui/components/ConfigViewer.js.map +1 -1
  163. package/dist/ui/components/ConfirmPrompt.js +49 -71
  164. package/dist/ui/components/ConfirmPrompt.js.map +1 -1
  165. package/dist/ui/components/ConnectionStatusMessage.js +32 -83
  166. package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
  167. package/dist/ui/components/ContextWindowIndicator.js +34 -49
  168. package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
  169. package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
  170. package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
  171. package/dist/ui/components/DiffViewer.js +68 -121
  172. package/dist/ui/components/DiffViewer.js.map +1 -1
  173. package/dist/ui/components/ErrorBoundary.js +40 -48
  174. package/dist/ui/components/ErrorBoundary.js.map +1 -1
  175. package/dist/ui/components/FileCreationPreview.js +29 -60
  176. package/dist/ui/components/FileCreationPreview.js.map +1 -1
  177. package/dist/ui/components/FileOperation.js +34 -29
  178. package/dist/ui/components/FileOperation.js.map +1 -1
  179. package/dist/ui/components/FileTagAutocomplete.js +55 -25
  180. package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
  181. package/dist/ui/components/FontRecommendation.js.map +1 -1
  182. package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
  183. package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
  184. package/dist/ui/components/InputBox.js +1620 -2150
  185. package/dist/ui/components/InputBox.js.map +1 -1
  186. package/dist/ui/components/InteractiveShell.js +234 -352
  187. package/dist/ui/components/InteractiveShell.js.map +1 -1
  188. package/dist/ui/components/KeyboardHelp.js +34 -35
  189. package/dist/ui/components/KeyboardHelp.js.map +1 -1
  190. package/dist/ui/components/LoadingIndicator.js +22 -25
  191. package/dist/ui/components/LoadingIndicator.js.map +1 -1
  192. package/dist/ui/components/MCPAddScreen.js +40 -51
  193. package/dist/ui/components/MCPAddScreen.js.map +1 -1
  194. package/dist/ui/components/MCPListScreen.js +40 -48
  195. package/dist/ui/components/MCPListScreen.js.map +1 -1
  196. package/dist/ui/components/MCPServerListScreen.js +49 -56
  197. package/dist/ui/components/MCPServerListScreen.js.map +1 -1
  198. package/dist/ui/components/MarkdownRenderer.js +69 -96
  199. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  200. package/dist/ui/components/MessageBox.js +66 -48
  201. package/dist/ui/components/MessageBox.js.map +1 -1
  202. package/dist/ui/components/MessageDisplay.js +150 -142
  203. package/dist/ui/components/MessageDisplay.js.map +1 -1
  204. package/dist/ui/components/MonitorModeAIPanel.js +46 -65
  205. package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
  206. package/dist/ui/components/MultiLineInput.js +243 -277
  207. package/dist/ui/components/MultiLineInput.js.map +1 -1
  208. package/dist/ui/components/PasswordPrompt.js +37 -18
  209. package/dist/ui/components/PasswordPrompt.js.map +1 -1
  210. package/dist/ui/components/PlanAcceptedMessage.js +27 -38
  211. package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
  212. package/dist/ui/components/PlanReviewScreen.js +46 -50
  213. package/dist/ui/components/PlanReviewScreen.js.map +1 -1
  214. package/dist/ui/components/RulesEditorScreen.js +81 -0
  215. package/dist/ui/components/RulesEditorScreen.js.map +1 -0
  216. package/dist/ui/components/SelectPrompt.js +19 -8
  217. package/dist/ui/components/SelectPrompt.js.map +1 -1
  218. package/dist/ui/components/ShimmerText.js +44 -0
  219. package/dist/ui/components/ShimmerText.js.map +1 -0
  220. package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
  221. package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
  222. package/dist/ui/components/StatusBar.js +56 -87
  223. package/dist/ui/components/StatusBar.js.map +1 -1
  224. package/dist/ui/components/StreamingMessageDisplay.js +116 -99
  225. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  226. package/dist/ui/components/TaskCompletedMessage.js +28 -23
  227. package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
  228. package/dist/ui/components/TaskProgressIndicator.js +44 -70
  229. package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
  230. package/dist/ui/components/ThinkingDisplay.js +44 -41
  231. package/dist/ui/components/ThinkingDisplay.js.map +1 -1
  232. package/dist/ui/components/ToolExecutionMessage.js +772 -1326
  233. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  234. package/dist/ui/components/ToolExecutionStatus.js +53 -84
  235. package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
  236. package/dist/ui/components/ToolResult.js +22 -15
  237. package/dist/ui/components/ToolResult.js.map +1 -1
  238. package/dist/ui/components/VersionUpdatePrompt.js +88 -120
  239. package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
  240. package/dist/ui/components/WelcomeBanner.js +176 -26
  241. package/dist/ui/components/WelcomeBanner.js.map +1 -1
  242. package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
  243. package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
  244. package/dist/utils/ansi-encoder.js +30 -61
  245. package/dist/utils/ansi-encoder.js.map +1 -1
  246. package/dist/utils/chat-formatter.js +327 -305
  247. package/dist/utils/chat-formatter.js.map +1 -1
  248. package/dist/utils/command-history.js +152 -174
  249. package/dist/utils/command-history.js.map +1 -1
  250. package/dist/utils/context-sanitizer.js +49 -112
  251. package/dist/utils/context-sanitizer.js.map +1 -1
  252. package/dist/utils/conversation-logger.js +292 -324
  253. package/dist/utils/conversation-logger.js.map +1 -1
  254. package/dist/utils/custom-commands-manager.js +126 -131
  255. package/dist/utils/custom-commands-manager.js.map +1 -1
  256. package/dist/utils/editor-utils.js +732 -837
  257. package/dist/utils/editor-utils.js.map +1 -1
  258. package/dist/utils/file.js +174 -213
  259. package/dist/utils/file.js.map +1 -1
  260. package/dist/utils/git-stats.js +169 -0
  261. package/dist/utils/git-stats.js.map +1 -0
  262. package/dist/utils/input-classifier.js +960 -482
  263. package/dist/utils/input-classifier.js.map +1 -1
  264. package/dist/utils/logger.js +48 -73
  265. package/dist/utils/logger.js.map +1 -1
  266. package/dist/utils/markdown-parser.js +277 -310
  267. package/dist/utils/markdown-parser.js.map +1 -1
  268. package/dist/utils/rule-reference-resolver.js +54 -0
  269. package/dist/utils/rule-reference-resolver.js.map +1 -0
  270. package/dist/utils/shell.js +144 -156
  271. package/dist/utils/shell.js.map +1 -1
  272. package/dist/utils/state.js +23 -22
  273. package/dist/utils/state.js.map +1 -1
  274. package/dist/utils/syntax-checker.js +279 -327
  275. package/dist/utils/syntax-checker.js.map +1 -1
  276. package/dist/utils/terminal-output.js +199 -302
  277. package/dist/utils/terminal-output.js.map +1 -1
  278. package/dist/utils/text-clipboard.js +47 -70
  279. package/dist/utils/text-clipboard.js.map +1 -1
  280. package/dist/utils/unicode-sanitizer.js +134 -197
  281. package/dist/utils/unicode-sanitizer.js.map +1 -1
  282. package/dist/utils/version-checker.js +46 -56
  283. package/dist/utils/version-checker.js.map +1 -1
  284. package/package.json +6 -4
  285. package/dist/ai/types.d.ts +0 -20
  286. package/dist/ai/types.d.ts.map +0 -1
  287. package/dist/cli-adapter.d.ts +0 -514
  288. package/dist/cli-adapter.d.ts.map +0 -1
  289. package/dist/commands/CommandParser.d.ts +0 -27
  290. package/dist/commands/CommandParser.d.ts.map +0 -1
  291. package/dist/config/build-config.d.ts +0 -42
  292. package/dist/config/build-config.d.ts.map +0 -1
  293. package/dist/config/defaultConfig.d.ts +0 -79
  294. package/dist/config/defaultConfig.d.ts.map +0 -1
  295. package/dist/config/manager.d.ts +0 -62
  296. package/dist/config/manager.d.ts.map +0 -1
  297. package/dist/config/mcp-config-manager.d.ts +0 -79
  298. package/dist/config/mcp-config-manager.d.ts.map +0 -1
  299. package/dist/config/models.d.ts +0 -83
  300. package/dist/config/models.d.ts.map +0 -1
  301. package/dist/config/slash-commands.d.ts +0 -23
  302. package/dist/config/slash-commands.d.ts.map +0 -1
  303. package/dist/config/types.d.ts +0 -35
  304. package/dist/config/types.d.ts.map +0 -1
  305. package/dist/context/command-detector.d.ts +0 -50
  306. package/dist/context/command-detector.d.ts.map +0 -1
  307. package/dist/context/context-manager.d.ts +0 -157
  308. package/dist/context/context-manager.d.ts.map +0 -1
  309. package/dist/context/handlers/docker-handler.d.ts +0 -130
  310. package/dist/context/handlers/docker-handler.d.ts.map +0 -1
  311. package/dist/context/handlers/ssh-handler.d.ts +0 -201
  312. package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
  313. package/dist/context/handlers/wsl-handler.d.ts +0 -146
  314. package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
  315. package/dist/context/index.d.ts +0 -8
  316. package/dist/context/index.d.ts.map +0 -1
  317. package/dist/context/subshell-handler.d.ts +0 -165
  318. package/dist/context/subshell-handler.d.ts.map +0 -1
  319. package/dist/context/types.d.ts +0 -70
  320. package/dist/context/types.d.ts.map +0 -1
  321. package/dist/hooks/useConnectivity.d.ts +0 -2
  322. package/dist/hooks/useConnectivity.d.ts.map +0 -1
  323. package/dist/hooks/useTerminalDimensions.d.ts +0 -41
  324. package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
  325. package/dist/index.d.ts +0 -9
  326. package/dist/index.d.ts.map +0 -1
  327. package/dist/mcp/mcp-command-handler.d.ts +0 -47
  328. package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
  329. package/dist/mcp/mcp-server-manager.d.ts +0 -30
  330. package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
  331. package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
  332. package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
  333. package/dist/services/ai-autocomplete-agent.d.ts +0 -39
  334. package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
  335. package/dist/services/ai-context-injector.d.ts +0 -41
  336. package/dist/services/ai-context-injector.d.ts.map +0 -1
  337. package/dist/services/ai-service-client.d.ts +0 -128
  338. package/dist/services/ai-service-client.d.ts.map +0 -1
  339. package/dist/services/api-client.d.ts +0 -353
  340. package/dist/services/api-client.d.ts.map +0 -1
  341. package/dist/services/auth-handler.d.ts +0 -30
  342. package/dist/services/auth-handler.d.ts.map +0 -1
  343. package/dist/services/background-task-manager.d.ts +0 -114
  344. package/dist/services/background-task-manager.d.ts.map +0 -1
  345. package/dist/services/checkpoint-manager.d.ts +0 -204
  346. package/dist/services/checkpoint-manager.d.ts.map +0 -1
  347. package/dist/services/clipboard-service.d.ts +0 -37
  348. package/dist/services/clipboard-service.d.ts.map +0 -1
  349. package/dist/services/connectivity-manager.d.ts +0 -18
  350. package/dist/services/connectivity-manager.d.ts.map +0 -1
  351. package/dist/services/conversation-manager.d.ts +0 -73
  352. package/dist/services/conversation-manager.d.ts.map +0 -1
  353. package/dist/services/environment-context-injector.d.ts +0 -69
  354. package/dist/services/environment-context-injector.d.ts.map +0 -1
  355. package/dist/services/fast-context-agent.d.ts +0 -12
  356. package/dist/services/fast-context-agent.d.ts.map +0 -1
  357. package/dist/services/input-detection-agent.d.ts +0 -40
  358. package/dist/services/input-detection-agent.d.ts.map +0 -1
  359. package/dist/services/input-requirement-detector.d.ts +0 -28
  360. package/dist/services/input-requirement-detector.d.ts.map +0 -1
  361. package/dist/services/local-chat-storage.d.ts +0 -182
  362. package/dist/services/local-chat-storage.d.ts.map +0 -1
  363. package/dist/services/monitored-shell-manager.d.ts +0 -120
  364. package/dist/services/monitored-shell-manager.d.ts.map +0 -1
  365. package/dist/services/ollama-service.d.ts +0 -197
  366. package/dist/services/ollama-service.d.ts.map +0 -1
  367. package/dist/services/session-quota-manager.d.ts +0 -101
  368. package/dist/services/session-quota-manager.d.ts.map +0 -1
  369. package/dist/services/shell-input-agent.d.ts +0 -89
  370. package/dist/services/shell-input-agent.d.ts.map +0 -1
  371. package/dist/services/sub-agent-manager.d.ts +0 -140
  372. package/dist/services/sub-agent-manager.d.ts.map +0 -1
  373. package/dist/services/warpify-detector.d.ts +0 -43
  374. package/dist/services/warpify-detector.d.ts.map +0 -1
  375. package/dist/services/workflow-storage.d.ts +0 -72
  376. package/dist/services/workflow-storage.d.ts.map +0 -1
  377. package/dist/test-ssh-handler.d.ts +0 -8
  378. package/dist/test-ssh-handler.d.ts.map +0 -1
  379. package/dist/tools/background-command.d.ts +0 -11
  380. package/dist/tools/background-command.d.ts.map +0 -1
  381. package/dist/tools/command.d.ts +0 -3
  382. package/dist/tools/command.d.ts.map +0 -1
  383. package/dist/tools/create-image.d.ts +0 -10
  384. package/dist/tools/create-image.d.ts.map +0 -1
  385. package/dist/tools/enter-remote-session.d.ts +0 -48
  386. package/dist/tools/enter-remote-session.d.ts.map +0 -1
  387. package/dist/tools/fast-context.d.ts +0 -3
  388. package/dist/tools/fast-context.d.ts.map +0 -1
  389. package/dist/tools/file-ops.d.ts +0 -7
  390. package/dist/tools/file-ops.d.ts.map +0 -1
  391. package/dist/tools/find-files.d.ts +0 -49
  392. package/dist/tools/find-files.d.ts.map +0 -1
  393. package/dist/tools/get-diff.d.ts +0 -14
  394. package/dist/tools/get-diff.d.ts.map +0 -1
  395. package/dist/tools/grep-search.d.ts +0 -155
  396. package/dist/tools/grep-search.d.ts.map +0 -1
  397. package/dist/tools/inspect-symbol.d.ts +0 -32
  398. package/dist/tools/inspect-symbol.d.ts.map +0 -1
  399. package/dist/tools/plan-mode.d.ts +0 -140
  400. package/dist/tools/plan-mode.d.ts.map +0 -1
  401. package/dist/tools/read-binary-file.d.ts +0 -10
  402. package/dist/tools/read-binary-file.d.ts.map +0 -1
  403. package/dist/tools/registry.d.ts +0 -31
  404. package/dist/tools/registry.d.ts.map +0 -1
  405. package/dist/tools/reproduce_issue.d.ts +0 -2
  406. package/dist/tools/reproduce_issue.d.ts.map +0 -1
  407. package/dist/tools/sub-agent.d.ts +0 -9
  408. package/dist/tools/sub-agent.d.ts.map +0 -1
  409. package/dist/tools/task-complete.d.ts +0 -3
  410. package/dist/tools/task-complete.d.ts.map +0 -1
  411. package/dist/tools/types.d.ts +0 -40
  412. package/dist/tools/types.d.ts.map +0 -1
  413. package/dist/tools/validation.d.ts +0 -47
  414. package/dist/tools/validation.d.ts.map +0 -1
  415. package/dist/tools/web-search.d.ts +0 -24
  416. package/dist/tools/web-search.d.ts.map +0 -1
  417. package/dist/tools/workflow-tool.d.ts +0 -11
  418. package/dist/tools/workflow-tool.d.ts.map +0 -1
  419. package/dist/types/index.d.ts +0 -123
  420. package/dist/types/index.d.ts.map +0 -1
  421. package/dist/types/workflow.d.ts +0 -110
  422. package/dist/types/workflow.d.ts.map +0 -1
  423. package/dist/ui/components/AgentTimer.d.ts +0 -7
  424. package/dist/ui/components/AgentTimer.d.ts.map +0 -1
  425. package/dist/ui/components/App.d.ts +0 -197
  426. package/dist/ui/components/App.d.ts.map +0 -1
  427. package/dist/ui/components/AuthScreen.d.ts +0 -8
  428. package/dist/ui/components/AuthScreen.d.ts.map +0 -1
  429. package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
  430. package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
  431. package/dist/ui/components/Breadcrumbs.d.ts +0 -13
  432. package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
  433. package/dist/ui/components/CircularSelectInput.d.ts +0 -24
  434. package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
  435. package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
  436. package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
  437. package/dist/ui/components/CodeBlock.d.ts +0 -9
  438. package/dist/ui/components/CodeBlock.d.ts.map +0 -1
  439. package/dist/ui/components/ConfigViewer.d.ts +0 -11
  440. package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
  441. package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
  442. package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
  443. package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
  444. package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
  445. package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
  446. package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
  447. package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
  448. package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
  449. package/dist/ui/components/DiffViewer.d.ts +0 -9
  450. package/dist/ui/components/DiffViewer.d.ts.map +0 -1
  451. package/dist/ui/components/ErrorBoundary.d.ts +0 -17
  452. package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
  453. package/dist/ui/components/FileCreationPreview.d.ts +0 -8
  454. package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
  455. package/dist/ui/components/FileOperation.d.ts +0 -10
  456. package/dist/ui/components/FileOperation.d.ts.map +0 -1
  457. package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
  458. package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
  459. package/dist/ui/components/FontRecommendation.d.ts +0 -1
  460. package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
  461. package/dist/ui/components/InputBox.d.ts +0 -42
  462. package/dist/ui/components/InputBox.d.ts.map +0 -1
  463. package/dist/ui/components/InteractiveShell.d.ts +0 -30
  464. package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
  465. package/dist/ui/components/KeyboardHelp.d.ts +0 -7
  466. package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
  467. package/dist/ui/components/LoadingIndicator.d.ts +0 -3
  468. package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
  469. package/dist/ui/components/MCPAddScreen.d.ts +0 -13
  470. package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
  471. package/dist/ui/components/MCPListScreen.d.ts +0 -17
  472. package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
  473. package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
  474. package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
  475. package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
  476. package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
  477. package/dist/ui/components/MessageBox.d.ts +0 -10
  478. package/dist/ui/components/MessageBox.d.ts.map +0 -1
  479. package/dist/ui/components/MessageDisplay.d.ts +0 -14
  480. package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
  481. package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
  482. package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
  483. package/dist/ui/components/MultiLineInput.d.ts +0 -13
  484. package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
  485. package/dist/ui/components/PasswordPrompt.d.ts +0 -9
  486. package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
  487. package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
  488. package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
  489. package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
  490. package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
  491. package/dist/ui/components/SelectPrompt.d.ts +0 -12
  492. package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
  493. package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
  494. package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
  495. package/dist/ui/components/StatusBar.d.ts +0 -14
  496. package/dist/ui/components/StatusBar.d.ts.map +0 -1
  497. package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
  498. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
  499. package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
  500. package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
  501. package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
  502. package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
  503. package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
  504. package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
  505. package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
  506. package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
  507. package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
  508. package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
  509. package/dist/ui/components/ToolResult.d.ts +0 -10
  510. package/dist/ui/components/ToolResult.d.ts.map +0 -1
  511. package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
  512. package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
  513. package/dist/ui/components/WelcomeBanner.d.ts +0 -3
  514. package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
  515. package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
  516. package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
  517. package/dist/utils/ansi-encoder.d.ts +0 -7
  518. package/dist/utils/ansi-encoder.d.ts.map +0 -1
  519. package/dist/utils/chat-formatter.d.ts +0 -12
  520. package/dist/utils/chat-formatter.d.ts.map +0 -1
  521. package/dist/utils/command-history.d.ts +0 -24
  522. package/dist/utils/command-history.d.ts.map +0 -1
  523. package/dist/utils/context-sanitizer.d.ts +0 -50
  524. package/dist/utils/context-sanitizer.d.ts.map +0 -1
  525. package/dist/utils/conversation-logger.d.ts +0 -142
  526. package/dist/utils/conversation-logger.d.ts.map +0 -1
  527. package/dist/utils/custom-commands-manager.d.ts +0 -59
  528. package/dist/utils/custom-commands-manager.d.ts.map +0 -1
  529. package/dist/utils/editor-utils.d.ts +0 -101
  530. package/dist/utils/editor-utils.d.ts.map +0 -1
  531. package/dist/utils/file.d.ts +0 -61
  532. package/dist/utils/file.d.ts.map +0 -1
  533. package/dist/utils/input-classifier.d.ts +0 -25
  534. package/dist/utils/input-classifier.d.ts.map +0 -1
  535. package/dist/utils/logger.d.ts +0 -17
  536. package/dist/utils/logger.d.ts.map +0 -1
  537. package/dist/utils/markdown-parser.d.ts +0 -60
  538. package/dist/utils/markdown-parser.d.ts.map +0 -1
  539. package/dist/utils/shell.d.ts +0 -47
  540. package/dist/utils/shell.d.ts.map +0 -1
  541. package/dist/utils/state.d.ts +0 -13
  542. package/dist/utils/state.d.ts.map +0 -1
  543. package/dist/utils/syntax-checker.d.ts +0 -24
  544. package/dist/utils/syntax-checker.d.ts.map +0 -1
  545. package/dist/utils/terminal-output.d.ts +0 -25
  546. package/dist/utils/terminal-output.d.ts.map +0 -1
  547. package/dist/utils/text-clipboard.d.ts +0 -12
  548. package/dist/utils/text-clipboard.d.ts.map +0 -1
  549. package/dist/utils/unicode-sanitizer.d.ts +0 -44
  550. package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
  551. package/dist/utils/version-checker.d.ts +0 -14
  552. package/dist/utils/version-checker.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/ui/components/App.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ui/components/App.tsx"],"sourcesContent":["import React, { useState, useCallback, useMemo, useEffect } from 'react';\r\nimport { Box, Text, useApp, useInput, Static } from 'ink';\r\nimport SelectInput from 'ink-select-input';\r\nimport { CircularSelectInput } from './CircularSelectInput.js';\r\nimport stripAnsi from 'strip-ansi';\r\nimport TextInput from 'ink-text-input';\r\nimport * as fs from 'fs';\r\nimport * as path from 'path';\r\nimport { quickLog } from '../../utils/conversation-logger.js';\r\nimport { WelcomeBanner } from './WelcomeBanner.js';\r\nimport { InputBox } from './InputBox.js';\r\nimport { MessageDisplay, countFilesInMessage } from './MessageDisplay.js';\r\nimport { StreamingMessageDisplay } from './StreamingMessageDisplay.js';\r\nimport { StatusBar } from './StatusBar.js';\r\nimport { LoadingIndicator } from './LoadingIndicator.js';\r\nimport { AgentTimer } from './AgentTimer.js';\r\nimport { SelectPrompt } from './SelectPrompt.js';\r\nimport { ConfirmPrompt } from './ConfirmPrompt.js';\r\nimport { KeyboardHelp } from './KeyboardHelp.js';\r\nimport { CodeBlock } from './CodeBlock.js';\r\nimport { FileCreationPreview } from './FileCreationPreview.js';\r\nimport { DiffViewer } from './DiffViewer.js';\r\nimport { PasswordPrompt } from './PasswordPrompt.js';\r\nimport { VersionUpdatePrompt } from './VersionUpdatePrompt.js';\r\nimport { InteractiveShell } from './InteractiveShell.js';\r\nimport { Message } from '../../types/index.js';\r\nimport { SubshellContext } from '../../context/types.js';\r\nimport { checkForUpdates, VersionInfo } from '../../utils/version-checker.js';\r\nimport { runInteractiveEditor, runWSLEditor, runDockerEditor, runSSHEditor, runNestedDockerSSHEditor } from '../../utils/editor-utils.js';\r\nimport { Plan, PlanStep } from '../../tools/plan-mode.js';\r\nimport { DetailedPlanReviewScreen } from './DetailedPlanReviewScreen.js';\r\nimport { TaskCompletedMessage } from './TaskCompletedMessage.js';\r\nimport { PlanAcceptedMessage } from './PlanAcceptedMessage.js';\r\nimport { MCPAddScreen } from './MCPAddScreen.js';\r\nimport { MCPServerListScreen } from './MCPServerListScreen.js';\r\nimport { MCPListScreen } from './MCPListScreen.js';\r\nimport { WorkflowCreatorScreen } from './WorkflowCreatorScreen.js';\r\nimport { RulesEditorScreen } from './RulesEditorScreen.js';\r\nimport { processTerminalOutput } from '../../utils/terminal-output.js';\r\nimport { BackgroundTaskManager } from '../../services/background-task-manager.js';\r\nimport { MonitorModeAIPanel } from './MonitorModeAIPanel.js';\r\nimport { MonitoredShellManager } from '../../services/monitored-shell-manager.js';\r\nimport { detectInputRequirement, extractPromptContext, getInputTypeDescription } from '../../services/input-requirement-detector.js';\r\nimport { ShellInputAgent } from '../../services/shell-input-agent.js';\r\nimport { InputDetectionAgent } from '../../services/input-detection-agent.js';\r\nimport { detectWarpifySession, getSessionDescription, WarpifySession } from '../../services/warpify-detector.js';\r\n\r\nimport { ConnectionStatusMessage, ConnectionStatus } from './ConnectionStatusMessage.js';\r\nimport { useConnectivity } from '../../hooks/useConnectivity.js';\r\nimport { ClipboardFile } from '../../services/clipboard-service.js';\r\nimport { apiClient } from '../../services/api-client.js';\r\nimport { conversationManager } from '../../services/conversation-manager.js';\r\nimport { localChatStorage } from '../../services/local-chat-storage.js';\r\nimport { logDebug, logError } from '../../utils/logger.js';\r\nimport { getTerminalDimensions } from '../../hooks/useTerminalDimensions.js';\r\nimport { ConfigManager } from '../../config/manager.js';\r\nimport { getGitDiffStats, getRemoteGitDiffStats } from '../../utils/git-stats.js';\r\nimport { RulesEditorRequest, SaveRuleResult } from '../../types/rule.js';\r\n\r\n/**\r\n * Check if a file path is outside the current working directory.\r\n * Returns true if the path is NOT within the CWD or its subdirectories.\r\n */\r\nfunction isOutsideCwd(filePath: string | undefined, cwd: string | undefined): boolean {\r\n if (!filePath || !cwd) return false;\r\n\r\n try {\r\n // Normalize paths for cross-platform comparison\r\n // IMPORTANT: Resolve filePath against cwd to handle relative paths correctly\r\n // This ensures remote paths (SSH/Docker) are resolved against their session CWD, not local process.cwd()\r\n const normalizedFilePath = path.resolve(cwd, filePath).toLowerCase();\r\n const normalizedCwd = path.resolve(cwd).toLowerCase();\r\n\r\n // Check if the file path starts with the CWD (meaning it's inside or a subdirectory)\r\n return !normalizedFilePath.startsWith(normalizedCwd);\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n// Banner item with stable timestamp - created once outside component\r\nconst BANNER_ITEM = { id: '__banner__', role: '__banner__' as any, content: '', timestamp: new Date(0) };\r\n\r\nconst MessageList: React.FC<{\r\n history: Message[],\r\n current: Message | null,\r\n showBanner: boolean\r\n}> = React.memo(({ history, current, showBanner }) => {\r\n // Create static items array with banner as permanent first item\r\n const staticItems = React.useMemo(() => {\r\n return showBanner ? [BANNER_ITEM, ...history] : history;\r\n }, [history, showBanner]);\r\n\r\n // Calculate cumulative file counts for each message (for global numbering)\r\n const fileCountsUpTo = React.useMemo(() => {\r\n const counts: number[] = [];\r\n let cumulative = 0;\r\n for (const msg of history) {\r\n counts.push(cumulative);\r\n if (msg.role === 'user') {\r\n cumulative += countFilesInMessage(msg.content);\r\n }\r\n }\r\n return counts;\r\n }, [history]);\r\n\r\n // Get file count for current message (all files in history)\r\n const totalHistoryFiles = fileCountsUpTo.length > 0\r\n ? fileCountsUpTo[fileCountsUpTo.length - 1] + (history[history.length - 1]?.role === 'user' ? countFilesInMessage(history[history.length - 1].content) : 0)\r\n : 0;\r\n\r\n return (\r\n <Box flexDirection=\"column\" marginY={1}>\r\n {/* Static content - banner + message history */}\r\n <Static items={staticItems}>\r\n {(item, index) => {\r\n if (item.id === '__banner__') {\r\n return <WelcomeBanner key=\"__banner__\" />;\r\n }\r\n // Special rendering for task completion messages\r\n const msg = item as Message;\r\n // Calculate history index (account for banner if present)\r\n const historyIndex = showBanner ? index - 1 : index;\r\n const fileCountBefore = fileCountsUpTo[historyIndex] || 0;\r\n\r\n if (msg.taskCompletion) {\r\n return (\r\n <TaskCompletedMessage\r\n key={item.id}\r\n taskNumber={msg.taskCompletion.taskNumber}\r\n totalTasks={msg.taskCompletion.totalTasks}\r\n taskDescription={msg.taskCompletion.taskDescription}\r\n completionNote={msg.taskCompletion.completionNote}\r\n />\r\n );\r\n }\r\n // Special rendering for plan accepted messages\r\n if (msg.planAccepted) {\r\n return (\r\n <PlanAcceptedMessage\r\n key={item.id}\r\n planTitle={msg.planAccepted.planTitle}\r\n totalTasks={msg.planAccepted.totalTasks}\r\n tasks={msg.planAccepted.tasks}\r\n />\r\n );\r\n }\r\n return <MessageDisplay key={item.id} message={item} fileCountBefore={fileCountBefore} />;\r\n }}\r\n </Static>\r\n {/* Current dynamic message - use streaming display only if shouldStream is true AND terminal is large enough */}\r\n {/* Only show current message if it's not already in history (prevent duplication) */}\r\n {current && !history.some(msg => msg.id === current.id) && (() => {\r\n // Get terminal dimensions to determine if streaming should be enabled\r\n const dimensions = getTerminalDimensions();\r\n const canStream = current.role === 'assistant' &&\r\n current.shouldStream !== false &&\r\n dimensions.shouldEnableStreaming;\r\n\r\n if (canStream) {\r\n return (\r\n <StreamingMessageDisplay\r\n key={current.id}\r\n message={current}\r\n maxLines={dimensions.maxStreamingLines}\r\n />\r\n );\r\n } else {\r\n return <MessageDisplay key={current.id} message={current} fileCountBefore={totalHistoryFiles} />;\r\n }\r\n })()}\r\n </Box>\r\n );\r\n}, (prevProps, nextProps) => {\r\n // Custom comparison to prevent unnecessary re-renders\r\n // Only re-render if history length changed, current message changed, or showBanner changed\r\n // IMPORTANT: Also check thoughts for thinking updates\r\n const prevThoughts = prevProps.current?.thoughts;\r\n const nextThoughts = nextProps.current?.thoughts;\r\n const thoughtsEqual = prevThoughts === nextThoughts ||\r\n (prevThoughts && nextThoughts &&\r\n prevThoughts.length === nextThoughts.length &&\r\n prevThoughts.every((t, i) => t === nextThoughts[i]));\r\n\r\n return (\r\n prevProps.history.length === nextProps.history.length &&\r\n prevProps.current?.id === nextProps.current?.id &&\r\n prevProps.current?.content === nextProps.current?.content &&\r\n prevProps.current?.thinkingDuration === nextProps.current?.thinkingDuration &&\r\n thoughtsEqual &&\r\n prevProps.showBanner === nextProps.showBanner\r\n );\r\n});\r\n\r\ninterface ApprovalRequest {\r\n message: string;\r\n risky: boolean;\r\n preview?: { type: 'code' | 'diff'; content: string; language?: string; fullDiff?: string };\r\n resolve: (approved: boolean) => void;\r\n operationType?: 'write_file' | 'write_to_file' | 'edit_file' | 'execute_command' | 'multi_edit_file';\r\n operationDetails?: {\r\n file_path?: string;\r\n command?: string;\r\n operation?: string;\r\n Cwd?: string;\r\n [key: string]: any;\r\n };\r\n /** True if this operation targets a path outside the current working directory */\r\n isOutsideCwd?: boolean;\r\n}\r\n\r\nconst ApprovalSection: React.FC<{\r\n approvalRequest: ApprovalRequest;\r\n onApprove: (approved: boolean) => void;\r\n}> = React.memo(({ approvalRequest, onApprove }) => {\r\n // Memoize callbacks to prevent re-renders\r\n const handleYes = React.useCallback(() => onApprove(true), [onApprove]);\r\n const handleNo = React.useCallback(() => onApprove(false), [onApprove]);\r\n\r\n // Generate warning message if operation is outside CWD\r\n const warningMessage = approvalRequest.isOutsideCwd\r\n ? 'This operation targets a location OUTSIDE your current working directory!'\r\n : undefined;\r\n\r\n return (\r\n <Box flexDirection=\"column\" marginY={1}>\r\n {approvalRequest.preview && approvalRequest.preview.type === 'code' && (\r\n <FileCreationPreview\r\n content={approvalRequest.preview.content}\r\n filePath={approvalRequest.operationDetails?.file_path || 'New File'}\r\n />\r\n )}\r\n {approvalRequest.preview && approvalRequest.preview.type === 'diff' && (\r\n <DiffViewer\r\n diff={approvalRequest.preview.content}\r\n filePath={approvalRequest.operationDetails?.file_path || 'Modified File'}\r\n fullDiff={approvalRequest.preview.fullDiff}\r\n />\r\n )}\r\n <ConfirmPrompt\r\n message={approvalRequest.message}\r\n onYes={handleYes}\r\n onNo={handleNo}\r\n warningMessage={warningMessage}\r\n />\r\n </Box>\r\n );\r\n}, (prevProps, nextProps) => {\r\n // Only re-render if the approval request message or isOutsideCwd changes\r\n return prevProps.approvalRequest.message === nextProps.approvalRequest.message &&\r\n prevProps.approvalRequest.isOutsideCwd === nextProps.approvalRequest.isOutsideCwd;\r\n});\r\n\r\n// Simple rename input screen component\r\nconst RenameInputScreen: React.FC<{\r\n currentTitle: string;\r\n onRename: (newTitle: string) => void;\r\n onCancel: () => void;\r\n}> = ({ currentTitle, onRename, onCancel }) => {\r\n const [value, setValue] = React.useState(currentTitle);\r\n\r\n useInput((input, key) => {\r\n if (key.escape) {\r\n onCancel();\r\n }\r\n });\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1}>\r\n <Text color=\"#00ccff\" bold>✏️ Rename Chat</Text>\r\n <Box marginTop={1}>\r\n <Text>Current name: <Text color=\"#00cc66\">{currentTitle}</Text></Text>\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text>New name: </Text>\r\n <TextInput\r\n value={value}\r\n onChange={setValue}\r\n onSubmit={(newTitle) => {\r\n if (newTitle.trim()) {\r\n onRename(newTitle.trim());\r\n }\r\n }}\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text dimColor>Press Enter to save, ESC to cancel</Text>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\ntype ScreenState = 'chat' | 'approval' | 'picker' | 'help' | 'plan-approval' | 'password-prompt' | 'version-update' | 'chat-picker' | 'chat-delete-picker' | 'chat-list-view' | 'chat-rename-picker' | 'chat-rename-input' | 'background-task-list' | 'background-task-cancel' | 'mcp-add' | 'mcp-remove' | 'mcp-enable' | 'mcp-disable' | 'mcp-list' | 'workflow-creator' | 'rules-editor';\r\n\r\nconst CHAT_MANAGEMENT_SCREENS: ScreenState[] = [\r\n 'chat-picker',\r\n 'chat-delete-picker',\r\n 'chat-list-view',\r\n 'chat-rename-picker',\r\n 'chat-rename-input'\r\n];\r\n\r\nconst isChatManagementScreen = (screen: ScreenState): boolean => CHAT_MANAGEMENT_SCREENS.includes(screen);\r\n\r\ninterface PlanApprovalRequest {\r\n plan: Plan;\r\n resolve: (approved: boolean) => void;\r\n}\r\n\r\ninterface ShellState {\r\n command: string;\r\n cwd: string;\r\n output: string;\r\n isRunning: boolean;\r\n exitCode?: number;\r\n error?: string;\r\n isFocused: boolean;\r\n onResize?: (cols: number, rows: number) => void;\r\n remoteContext?: string; // For SSH/WSL/Docker environments\r\n isBackgroundTask?: boolean; // True when viewing a background task (no history addition on exit)\r\n backgroundTaskId?: string; // ID of the background task for input routing\r\n // Agent control mode fields\r\n shellId?: string; // Unique ID for the shell session\r\n isAgentControlled?: boolean; // Whether AI agent is providing input\r\n monitoringMessages?: Array<{\r\n id: string;\r\n type: 'thinking' | 'tool_call' | 'text' | 'input_sent';\r\n content: string;\r\n timestamp: Date;\r\n isAnswered?: boolean; // For 'thinking' type: true when the prompt has been answered\r\n }>;\r\n isAgentStarted?: boolean;\r\n}\r\n\r\ninterface AppState {\r\n screen: ScreenState;\r\n messageHistory: Message[]; // Permanent history for Static component\r\n currentMessage: Message | null; // Current dynamic message being updated\r\n autoAcceptMode: boolean;\r\n isLoading: boolean;\r\n loadingMessage: string;\r\n currentModel: string;\r\n planMode: boolean;\r\n commandMode: boolean;\r\n backgroundMode: boolean; // Background shell mode for running commands in background\r\n currentWorkingDirectory: string;\r\n showExitWarning: boolean;\r\n commandHistory: string[];\r\n subshellContext?: SubshellContext; // Current subshell context\r\n subshellContextStack?: SubshellContext[]; // Stack of subshell contexts for nested display\r\n versionInfo?: VersionInfo;\r\n checkingVersion: boolean;\r\n isAiWorking: boolean; // Track if AI is actively working (streaming, tool execution, etc.)\r\n currentTokens: number; // Current token usage in conversation\r\n maxTokens: number; // Maximum tokens for current model\r\n contextLimitReached: boolean; // True when context window is ≥80% full\r\n backgroundTaskCount: number; // Number of running background tasks\r\n subAgentCount: number; // Number of running sub-agents\r\n shellState?: ShellState; // Active shell execution state\r\n isInteractiveEditorMode: boolean; // True when vim/nano/etc is running (Ink paused)\r\n pickerOptions?: {\r\n message: string;\r\n choices: Array<{ label: string; value: string }>;\r\n type: 'model' | 'local-model';\r\n };\r\n chatPickerChats?: Array<{ id: string; title: string; createdAt: string; updatedAt: string; messageCount: number; environment?: string }>;\r\n currentChatId?: string | null; // Currently loaded chat ID for highlighting\r\n renameChatId?: string; // Chat ID being renamed (for two-stage flow)\r\n renameChatTitle?: string; // Original title of chat being renamed\r\n approvalRequest?: ApprovalRequest;\r\n planApprovalRequest?: PlanApprovalRequest;\r\n passwordRequest?: {\r\n message: string;\r\n resolve: (password: string) => void;\r\n reject: () => void;\r\n };\r\n connectionStatus?: ConnectionStatus; // Current connection status for SSH/WSL/Docker\r\n backgroundTasks?: Array<{ id: string; command: string; cwd: string; durationMs: number; isRunning: boolean; outputPreview: string }>; // For background task picker screens\r\n sessionQuotaExhausted: boolean;\r\n sessionQuotaTimeRemaining: string;\r\n // MCP management screens\r\n mcpServers?: Array<{ name: string; command: string; args?: string[]; enabled?: boolean }>;\r\n mcpListData?: Array<{ name: string; enabled: boolean; status: 'connected' | 'disconnected' | 'error' | 'connecting'; tools: Array<{ name: string }> }>;\r\n aiAutoSuggest?: boolean; // Enable AI-powered command auto-suggestions\r\n workflowCreatorInitialSteps?: Array<{ type: 'command' | 'instruction'; content: string }>; // Initial steps for workflow creator from learn-workflow mode\r\n rulesEditorRequest?: RulesEditorRequest;\r\n interruptQueue: string[]; // Queue of user messages that interrupted AI response\r\n commandQueue: string[]; // Queue of session shell commands waiting to execute\r\n messageListKey: number; // Incremented on chat restore to force MessageList/Static remount\r\n chatDeletePickerSession: number; // Incremented to force fresh delete picker state on reopen\r\n gitDiffStats: { additions: number; deletions: number } | null; // Git diff stats for breadcrumb display\r\n lastFileChangeSummary: { filesChanged: number; insertions: number; deletions: number } | null; // File changes from last task_complete\r\n}\r\n\r\ninterface AppProps {\r\n onMessage: (message: string) => Promise<void>;\r\n onCancelRequest: () => void;\r\n initialModel: string;\r\n initialPlanMode: boolean;\r\n onResponseReceived: (callback: (message: string) => void) => void;\r\n onDirectMessage: (callback: (message: string) => void) => void; // For slash commands - adds directly to history\r\n onResponseStream: (callback: (chunk: string) => void) => void;\r\n onClearStreamedResponse: (callback: () => void) => void; // Clear streamed text when task_complete has summary\r\n onThoughtStream: (callback: (thought: string) => void) => void;\r\n onThoughtComplete: (callback: (durationSeconds: number) => void) => void;\r\n onPickerSetup: (callback: (options: { message: string; choices: Array<{ label: string; value: string }>; type: 'model' | 'local-model' }) => void) => void;\r\n onPickerSelection: (selection: string, type: 'model' | 'local-model') => Promise<void>;\r\n onToolExecutionUpdate: (callback: (update: { toolName: string; status: 'pending' | 'executing' | 'completed' | 'error'; result?: string; error?: string; arguments?: Record<string, any> }) => void) => void;\r\n onToolApprovalRequest: (callback: (request: { message: string; risky: boolean; preview?: { type: 'code' | 'diff'; content: string; language?: string; fullDiff?: string }; operationType?: 'write_file' | 'write_to_file' | 'edit_file' | 'execute_command' | 'multi_edit_file'; operationDetails?: Record<string, any> }) => Promise<boolean>) => void;\r\n onToolStreamingOutput: (callback: (update: { toolName: string; chunk: string; type: 'stdout' | 'stderr' }) => void) => void;\r\n onPlanModeChange: (callback: (planMode: boolean) => void) => void;\r\n onPlanApprovalRequest: (callback: (plan: Plan) => Promise<boolean>) => void;\r\n onPlanCreated: (callback: (plan: Plan) => void) => void;\r\n onTaskCompleted: (callback: (task: PlanStep, taskNumber: number, totalTasks: number, completionNote?: string, taskDescription?: string) => void) => void;\r\n onFileChangeSummary: (callback: (data: { filesChanged: number; insertions: number; deletions: number }) => void) => void;\r\n onCommandModeChange: (callback: (commandMode: boolean) => void) => void;\r\n onToggleCommandMode: () => void;\r\n onBackgroundModeChange: (callback: (backgroundMode: boolean) => void) => void;\r\n onToggleBackgroundMode: () => void;\r\n onBackgroundTaskCountChange: (callback: (count: number) => void) => void;\r\n onSubAgentCountChange: (callback: (count: number) => void) => void;\r\n onSetAutoModeSetup: (callback: (enabled: boolean) => void) => void;\r\n\r\n onCwdChange: (callback: (cwd: string) => void) => void;\r\n onModelChange: (callback: (modelName: string, contextWindow: number) => void) => void;\r\n onSubshellContextChange: (callback: (context: SubshellContext, stack?: SubshellContext[]) => void) => void;\r\n onPasswordRequest: (callback: (message: string) => Promise<string>) => void;\r\n onShellInput: (input: string) => void;\r\n onShellSignal: (signal: string) => void;\r\n onKillProcess: () => void;\r\n onInteractiveEditorMode: (callback: (active: boolean, command?: string, cwd?: string, remoteContext?: SubshellContext) => void) => void;\r\n onConnectionStatusUpdate: (callback: (status: ConnectionStatus) => void) => void;\r\n onTokenCountUpdate: (callback: (tokens: number) => void) => void;\r\n onContextLimitReached: (callback: (reached: boolean) => void) => void;\r\n onChatPickerSetup: (callback: (chats: Array<{ id: string; title: string; createdAt: string; updatedAt: string; messageCount: number; environment?: string }>, currentChatId: string | null) => void) => void;\r\n onChatPickerSelection: (chatId: string) => Promise<void>;\r\n onChatDeletePickerSetup: (callback: (chats: Array<{ id: string; title: string; createdAt: string; updatedAt: string; messageCount: number }>, currentChatId: string | null) => void) => void;\r\n onChatDeletePickerSelection: (chatId: string) => Promise<void>;\r\n onChatListSetup: (callback: (chats: Array<{ id: string; title: string; createdAt: string; updatedAt: string; messageCount: number }>, currentChatId: string | null) => void) => void;\r\n onChatRenamePickerSetup: (callback: (chats: Array<{ id: string; title: string; createdAt: string; updatedAt: string; messageCount: number }>, currentChatId: string | null) => void) => void;\r\n onChatRename: (chatId: string, newTitle: string) => void;\r\n onRestoreMessagesSetup: (callback: (messages: Message[]) => void) => void;\r\n onUIMessageHistoryUpdate: (messages: Message[]) => void;\r\n onBackgroundTaskListSetup: (callback: (tasks: Array<{ id: string; command: string; cwd: string; durationMs: number; isRunning: boolean; outputPreview: string }>) => void) => void;\r\n onBackgroundTaskSelection: (taskId: string) => void; // When user selects a task to view\r\n onBackgroundTaskCancelSetup: (callback: (tasks: Array<{ id: string; command: string; cwd: string; durationMs: number; isRunning: boolean; outputPreview: string }>) => void) => void;\r\n onBackgroundTaskCancel: (taskId: string) => void; // When user selects a task to cancel\r\n onBackgroundTaskViewSetup: (callback: (task: { id: string; command: string; cwd: string; output: string; isRunning: boolean; onOutput: (handler: (chunk: string) => void) => void; onComplete: (handler: (exitCode: number) => void) => void }) => void) => void;\r\n onSessionQuotaUpdate: (callback: (remaining: number, canSend: boolean, timeRemaining: string) => void) => void;\r\n // MCP management callbacks\r\n onMCPAddScreenSetup: (callback: () => void) => void;\r\n onMCPRemoveScreenSetup: (callback: (servers: Array<{ name: string; command: string; args?: string[]; enabled?: boolean }>) => void) => void;\r\n onMCPEnableScreenSetup: (callback: (servers: Array<{ name: string; command: string; args?: string[]; enabled?: boolean }>) => void) => void;\r\n onMCPDisableScreenSetup: (callback: (servers: Array<{ name: string; command: string; args?: string[]; enabled?: boolean }>) => void) => void;\r\n onMCPListScreenSetup: (callback: (servers: Array<{ name: string; enabled: boolean; status: 'connected' | 'disconnected' | 'error' | 'connecting'; tools: Array<{ name: string }> }>) => void) => void;\r\n onMCPAddServer: (config: any) => { success: boolean; error?: string };\r\n onMCPRemoveServer: (name: string) => void;\r\n onMCPEnableServer: (name: string) => void;\r\n onMCPDisableServer: (name: string) => void;\r\n onMCPValidateConfig: (jsonString: string) => { valid: boolean; config?: any; error?: string };\r\n onPromptAnswered: (callback: (shellId: string) => void) => void;\r\n getMainConversation: () => any[]; // Get main agent's conversation history for shell input context\r\n onWarpifySession: (command: string, type: 'ssh' | 'wsl' | 'docker', connectionString?: string) => Promise<boolean>;\r\n onAiAutoSuggestChange: (callback: (enabled: boolean) => void) => void;\r\n // Workflow callbacks\r\n\r\n onWorkflowCreatorSetup: (callback: (initialSteps?: Array<{ type: 'command' | 'instruction'; content: string }>) => void) => void;\r\n onWorkflowSave: (name: string, steps: Array<{ type: 'command' | 'instruction'; content: string }>, description?: string) => void;\r\n onRulesEditorSetup: (callback: (request: RulesEditorRequest) => void) => void;\r\n onRuleSave: (name: string, content: string, previousName?: string) => SaveRuleResult;\r\n getCheckpoints: () => Array<{ id: string; prompt: string; timestamp: Date }>; // Get checkpoints for revert autocomplete\r\n onRevertToCheckpointSetup: (callback: (checkpointIndex: number, prompt: string) => void) => void; // Callback for UI truncation on revert\r\n onSetInputSetup: (callback: (value: string) => void) => void; // Setup callback for setting input\r\n onInterruptQueueUpdate: (callback: (queue: string[]) => void) => void;\r\n onQueuedMessageDispatched: (callback: (message: string) => void) => void; // Fires when a queued message starts being processed\r\n onCommandQueueUpdate: (callback: (queue: string[]) => void) => void;\r\n onQueuedCommandDispatched: (callback: (command: string) => void) => void; // Fires when a queued command starts executing\r\n}\r\n\r\nexport const App: React.FC<AppProps> = ({ onMessage, onCancelRequest, initialModel, initialPlanMode, onResponseReceived, onDirectMessage, onResponseStream, onClearStreamedResponse, onThoughtStream, onThoughtComplete, onPickerSetup, onPickerSelection, onToolExecutionUpdate, onToolApprovalRequest, onToolStreamingOutput, onPlanModeChange, onPlanApprovalRequest, onPlanCreated, onTaskCompleted, onFileChangeSummary, onCommandModeChange, onToggleCommandMode, onBackgroundModeChange, onToggleBackgroundMode, onBackgroundTaskCountChange, onSubAgentCountChange, onSetAutoModeSetup, onCwdChange, onModelChange, onSubshellContextChange, onPasswordRequest, onShellInput, onShellSignal, onKillProcess, onInteractiveEditorMode, onConnectionStatusUpdate, onTokenCountUpdate, onContextLimitReached, onChatPickerSetup, onChatPickerSelection, onChatDeletePickerSetup, onChatDeletePickerSelection, onChatListSetup, onChatRenamePickerSetup, onChatRename, onRestoreMessagesSetup, onUIMessageHistoryUpdate, onBackgroundTaskListSetup, onBackgroundTaskSelection, onBackgroundTaskCancelSetup, onBackgroundTaskCancel, onBackgroundTaskViewSetup, onSessionQuotaUpdate, onMCPAddScreenSetup, onMCPRemoveScreenSetup, onMCPEnableScreenSetup, onMCPDisableScreenSetup, onMCPListScreenSetup, onMCPAddServer, onMCPRemoveServer, onMCPEnableServer, onMCPDisableServer, onMCPValidateConfig, onPromptAnswered, getMainConversation, onWarpifySession,\r\n onAiAutoSuggestChange,\r\n onWorkflowCreatorSetup,\r\n onWorkflowSave,\r\n onRulesEditorSetup,\r\n onRuleSave,\r\n getCheckpoints,\r\n onRevertToCheckpointSetup,\r\n onSetInputSetup,\r\n onInterruptQueueUpdate,\r\n onQueuedMessageDispatched,\r\n onCommandQueueUpdate,\r\n onQueuedCommandDispatched }) => {\r\n\r\n\r\n\r\n const { exit } = useApp();\r\n // Calculate limit for paginated lists (75% of terminal height)\r\n const listLimit = Math.max(5, Math.floor((process.stdout.rows || 24) * 0.75));\r\n const autoAcceptRef = React.useRef(false);\r\n const cwdRef = React.useRef(process.cwd()); // Track CWD for async callback access\r\n const isAiWorkingRef = React.useRef(false); // Track active AI work across stale callback closures\r\n const setAutoModeCallbackRef = React.useRef<((enabled: boolean) => void) | null>(null);\r\n // Number of queued-dispatch user bubbles to skip because we already rendered\r\n // an optimistic user bubble (e.g. file upload messages).\r\n const queuedDispatchSkipCountRef = React.useRef<number>(0);\r\n const optimisticAttachmentEntriesRef = React.useRef<Array<{ messageId: string; finalMessage: string | null }>>([]);\r\n const pendingAttachmentQueuePreviewsRef = React.useRef<Array<{ id: string; preview: string; finalMessage: string | null }>>([]);\r\n\r\n // Connectivity State\r\n const isConnected = useConnectivity();\r\n\r\n // Agent control mode refs for input detection\r\n const lastOutputTimeRef = React.useRef<number>(Date.now());\r\n const inputDetectionPendingRef = React.useRef<boolean>(false);\r\n const detectionDebounceRef = React.useRef<NodeJS.Timeout | null>(null);\r\n\r\n\r\n // Helper to clear screen\r\n const clearScreen = useCallback(() => {\r\n process.stdout.write('\\x1b[2J\\x1b[3J\\x1b[H');\r\n }, []);\r\n\r\n // Helper to get max tokens for a model (reads from cached backend config if available)\r\n const getMaxTokensForModel = useCallback((model: string): number => {\r\n try {\r\n // Use sync function that reads from cached backend config\r\n const { getModelContextWindowSync } = require('../../config/models.js');\r\n return getModelContextWindowSync(model);\r\n } catch (error) {\r\n // Fallback defaults if import fails\r\n if (model.toLowerCase().includes('kimi')) return 128000;\r\n if (model.toLowerCase().includes('gemini')) return 1000000;\r\n return 1000000;\r\n }\r\n }, []);\r\n\r\n // Helper to estimate tokens (rough approximation: 1 token ≈ 4 characters)\r\n const estimateTokens = useCallback((text: string): number => {\r\n return Math.ceil(text.length / 4);\r\n }, []);\r\n\r\n // Helper to calculate total tokens from messages\r\n const calculateTotalTokens = useCallback((messages: Message[]): number => {\r\n let total = 0;\r\n for (const msg of messages) {\r\n total += estimateTokens(msg.content);\r\n }\r\n return total;\r\n }, [estimateTokens]);\r\n\r\n const [state, setState] = useState<AppState>({\r\n screen: 'chat',\r\n messageHistory: [],\r\n currentMessage: null,\r\n autoAcceptMode: false,\r\n isLoading: false,\r\n loadingMessage: '',\r\n currentModel: initialModel || 'gemini-2.5-flash',\r\n planMode: initialPlanMode || false,\r\n commandMode: false,\r\n backgroundMode: false,\r\n currentWorkingDirectory: process.cwd(),\r\n showExitWarning: false,\r\n commandHistory: [],\r\n subshellContext: undefined,\r\n subshellContextStack: undefined,\r\n versionInfo: undefined,\r\n checkingVersion: true,\r\n isAiWorking: false,\r\n currentTokens: 0,\r\n maxTokens: getMaxTokensForModel(initialModel || 'gemini-2.5-flash'),\r\n contextLimitReached: false,\r\n shellState: undefined,\r\n isInteractiveEditorMode: false,\r\n pickerOptions: undefined,\r\n approvalRequest: undefined,\r\n planApprovalRequest: undefined,\r\n passwordRequest: undefined,\r\n connectionStatus: undefined,\r\n backgroundTaskCount: 0,\r\n subAgentCount: 0,\r\n sessionQuotaExhausted: false,\r\n sessionQuotaTimeRemaining: '',\r\n aiAutoSuggest: false,\r\n rulesEditorRequest: undefined,\r\n interruptQueue: [],\r\n commandQueue: [],\r\n messageListKey: 0,\r\n chatDeletePickerSession: 0,\r\n gitDiffStats: null,\r\n lastFileChangeSummary: null,\r\n });\r\n\r\n // Track last terminal width to detect actual width changes\r\n const lastTerminalWidthRef = React.useRef(process.stdout.columns || 80);\r\n // Track if we're currently in the middle of a clean-ui cycle to prevent re-entrancy\r\n const isCleaningRef = React.useRef(false);\r\n // Ref to store history during clean cycle (avoids closure issues)\r\n const savedHistoryRef = React.useRef<Message[]>([]);\r\n const savedCurrentRef = React.useRef<Message | null>(null);\r\n // Debounce timer ref\r\n const resizeDebounceRef = React.useRef<NodeJS.Timeout | null>(null);\r\n const restoreMessagesTimeoutRef = React.useRef<NodeJS.Timeout | null>(null);\r\n // Preserve input text across screen transitions (approval screens, etc.)\r\n // Using ref to avoid re-renders when value changes\r\n const preservedInputTextRef = React.useRef<string>('');\r\n\r\n // Handle terminal resize events using the same logic as /clean-ui command\r\n // Uses debounce to wait until width is stable before triggering clean-ui\r\n React.useEffect(() => {\r\n const DEBOUNCE_MS = 300; // Wait 300ms after last resize before acting\r\n\r\n const handleResize = () => {\r\n const newWidth = process.stdout.columns || 80;\r\n\r\n // Clear any existing debounce timer\r\n if (resizeDebounceRef.current) {\r\n clearTimeout(resizeDebounceRef.current);\r\n }\r\n\r\n // Set new debounce timer - only act when resizing stops\r\n resizeDebounceRef.current = setTimeout(() => {\r\n const oldWidth = lastTerminalWidthRef.current;\r\n\r\n // Only act if width actually changed and we're not already cleaning\r\n if (newWidth !== oldWidth && !isCleaningRef.current) {\r\n lastTerminalWidthRef.current = newWidth;\r\n isCleaningRef.current = true;\r\n\r\n // Step 1: Clear screen and save current state to refs\r\n clearScreen();\r\n\r\n // Save state before clearing\r\n setState(prev => {\r\n savedHistoryRef.current = [...prev.messageHistory];\r\n savedCurrentRef.current = prev.currentMessage;\r\n\r\n // Return cleared state to force unmount of all message components\r\n return {\r\n ...prev,\r\n messageHistory: [],\r\n currentMessage: null\r\n };\r\n });\r\n\r\n // Step 2: After delay, clear again and restore from refs\r\n setTimeout(() => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n messageHistory: savedHistoryRef.current,\r\n currentMessage: savedCurrentRef.current,\r\n // Increment key to force Static remount so banner + history re-render\r\n messageListKey: (prev.messageListKey ?? 0) + 1,\r\n }));\r\n isCleaningRef.current = false;\r\n }, 100);\r\n }\r\n }, DEBOUNCE_MS);\r\n };\r\n\r\n process.stdout.on('resize', handleResize);\r\n\r\n return () => {\r\n process.stdout.off('resize', handleResize);\r\n // Clear debounce timer on cleanup\r\n if (resizeDebounceRef.current) {\r\n clearTimeout(resizeDebounceRef.current);\r\n }\r\n };\r\n }, [clearScreen]);\r\n\r\n // Handle global keyboard shortcuts\r\n useInput((input, key) => {\r\n // Escape key handling for background task screens\r\n if (key.escape) {\r\n if (state.screen === 'background-task-list' || state.screen === 'background-task-cancel') {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n backgroundTasks: undefined // Clear the list\r\n }));\r\n }\r\n }\r\n });\r\n\r\n // Check for version updates on mount\r\n React.useEffect(() => {\r\n checkForUpdates().then(versionInfo => {\r\n setState(prev => ({\r\n ...prev,\r\n versionInfo,\r\n checkingVersion: false,\r\n screen: versionInfo.hasUpdate ? 'version-update' : 'chat'\r\n }));\r\n }).catch(() => {\r\n // If version check fails, just continue to chat\r\n setState(prev => ({\r\n ...prev,\r\n checkingVersion: false\r\n }));\r\n });\r\n }, []);\r\n\r\n // Fetch models config async and update maxTokens once loaded\r\n // This ensures correct context window even on initial load\r\n React.useEffect(() => {\r\n const loadModelsConfig = async () => {\r\n try {\r\n // Initialize ConfigManager to load general settings\r\n const configManager = new ConfigManager();\r\n const generalConfig = configManager.load();\r\n\r\n setState(prev => ({\r\n ...prev,\r\n aiAutoSuggest: generalConfig.aiAutoSuggest === true\r\n }));\r\n\r\n // Import quickLog for debugging\r\n // Import quickLog for debugging\r\n const { quickLog } = await import('../../utils/conversation-logger.js');\r\n quickLog(`[${new Date().toISOString()}] [App] loadModelsConfig effect starting, currentModel: ${initialModel}\\n`);\r\n\r\n const { fetchModelsConfig, getModelContextWindowSync } = await import('../../config/models.js');\r\n quickLog(`[${new Date().toISOString()}] [App] fetchModelsConfig imported, calling...\\n`);\r\n\r\n const config = await fetchModelsConfig(); // This populates the cache\r\n quickLog(`[${new Date().toISOString()}] [App] fetchModelsConfig returned, models count: ${config?.models?.length || 0}\\n`);\r\n\r\n // Now get maxTokens with the cached config\r\n const newMaxTokens = getModelContextWindowSync(initialModel || 'gemini-2.5-flash');\r\n quickLog(`[${new Date().toISOString()}] [App] Got newMaxTokens: ${newMaxTokens} for model \"${initialModel}\"\\n`);\r\n\r\n setState(prev => ({\r\n ...prev,\r\n maxTokens: newMaxTokens\r\n }));\r\n quickLog(`[${new Date().toISOString()}] [App] Updated state.maxTokens to ${newMaxTokens}\\n`);\r\n } catch (error: any) {\r\n // Log errors to file\r\n try {\r\n const { quickLog } = await import('../../utils/conversation-logger.js');\r\n quickLog(`[${new Date().toISOString()}] [App] loadModelsConfig ERROR: ${error?.message || error}\\n`);\r\n } catch { }\r\n }\r\n };\r\n loadModelsConfig();\r\n }, [initialModel]);\r\n\r\n // Keep ref in sync with state\r\n React.useEffect(() => {\r\n autoAcceptRef.current = state.autoAcceptMode;\r\n }, [state.autoAcceptMode]);\r\n\r\n // Keep CWD ref in sync with state\r\n React.useEffect(() => {\r\n cwdRef.current = state.currentWorkingDirectory;\r\n }, [state.currentWorkingDirectory]);\r\n\r\n // Keep AI working ref in sync with state\r\n React.useEffect(() => {\r\n isAiWorkingRef.current = state.isAiWorking;\r\n }, [state.isAiWorking]);\r\n\r\n // Push shell output updates to InputDetectionAgent when agent control is active\r\n // This ensures the detection agent always has the latest output for polling\r\n React.useEffect(() => {\r\n if (state.shellState?.isAgentControlled && state.shellState?.shellId && state.shellState?.output) {\r\n InputDetectionAgent.updateOutput(state.shellState.shellId, state.shellState.output);\r\n }\r\n }, [state.shellState?.output, state.shellState?.isAgentControlled, state.shellState?.shellId]);\r\n\r\n // Handle interrupt queue updates\r\n React.useEffect(() => {\r\n onInterruptQueueUpdate((queue: string[]) => {\r\n setState(prev => {\r\n let nextHistory = prev.messageHistory;\r\n const queuedSet = new Set(queue);\r\n const queuedOptimisticEntries = optimisticAttachmentEntriesRef.current.filter(\r\n entry => entry.finalMessage && queuedSet.has(entry.finalMessage)\r\n );\r\n\r\n if (queuedOptimisticEntries.length > 0) {\r\n const queuedIds = new Set(queuedOptimisticEntries.map(entry => entry.messageId));\r\n nextHistory = prev.messageHistory.filter(msg => !queuedIds.has(msg.id));\r\n\r\n optimisticAttachmentEntriesRef.current = optimisticAttachmentEntriesRef.current.filter(\r\n entry => !queuedIds.has(entry.messageId)\r\n );\r\n\r\n queuedDispatchSkipCountRef.current = Math.max(\r\n 0,\r\n queuedDispatchSkipCountRef.current - queuedOptimisticEntries.length\r\n );\r\n }\r\n\r\n // Keep locally queued attachment previews visible until backend queue includes\r\n // their final uploaded message form.\r\n const remainingPendingPreviews = pendingAttachmentQueuePreviewsRef.current.filter(\r\n entry => !(entry.finalMessage && queuedSet.has(entry.finalMessage))\r\n );\r\n pendingAttachmentQueuePreviewsRef.current = remainingPendingPreviews;\r\n const previewTail = remainingPendingPreviews\r\n .map(entry => entry.preview)\r\n .filter(preview => !queuedSet.has(preview));\r\n const displayQueue = [...queue, ...previewTail];\r\n\r\n return { ...prev, interruptQueue: displayQueue, messageHistory: nextHistory };\r\n });\r\n });\r\n }, [onInterruptQueueUpdate]);\r\n\r\n // Handle queued message dispatch: add user message to history when it's actually being processed\r\n // This ensures the correct order: only show the message when it's the AI's next turn, not when queued\r\n React.useEffect(() => {\r\n onQueuedMessageDispatched((message: string) => {\r\n const dispatchedPreviewEntries = pendingAttachmentQueuePreviewsRef.current.filter(\r\n entry => entry.finalMessage === message || entry.preview === message\r\n );\r\n if (dispatchedPreviewEntries.length > 0) {\r\n const dispatchedPreviewIds = new Set(dispatchedPreviewEntries.map(entry => entry.id));\r\n pendingAttachmentQueuePreviewsRef.current = pendingAttachmentQueuePreviewsRef.current.filter(\r\n entry => !dispatchedPreviewIds.has(entry.id)\r\n );\r\n }\r\n\r\n const shouldSkipQueuedBubble = queuedDispatchSkipCountRef.current > 0;\r\n if (shouldSkipQueuedBubble) {\r\n queuedDispatchSkipCountRef.current -= 1;\r\n optimisticAttachmentEntriesRef.current = optimisticAttachmentEntriesRef.current.slice(1);\r\n }\r\n\r\n setState(prev => {\r\n // Move current message to history if present (skip thought-only)\r\n const baseHistory = prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage]\r\n : prev.messageHistory;\r\n let nextInterruptQueue = prev.interruptQueue;\r\n if (dispatchedPreviewEntries.length > 0) {\r\n nextInterruptQueue = [...prev.interruptQueue];\r\n for (const entry of dispatchedPreviewEntries) {\r\n const idx = nextInterruptQueue.indexOf(entry.preview);\r\n if (idx !== -1) nextInterruptQueue.splice(idx, 1);\r\n }\r\n }\r\n\r\n if (shouldSkipQueuedBubble) {\r\n return {\r\n ...prev,\r\n messageHistory: baseHistory,\r\n interruptQueue: nextInterruptQueue,\r\n currentMessage: null,\r\n isLoading: true,\r\n loadingMessage: 'Processing your request...',\r\n isAiWorking: true\r\n };\r\n }\r\n\r\n const userMessage: Message = {\r\n id: `user-queued-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'user',\r\n content: message,\r\n timestamp: new Date()\r\n };\r\n const newHistory = [...baseHistory, userMessage];\r\n return {\r\n ...prev,\r\n messageHistory: newHistory,\r\n interruptQueue: nextInterruptQueue,\r\n currentMessage: null,\r\n isLoading: true,\r\n loadingMessage: 'Processing your request...',\r\n isAiWorking: true\r\n };\r\n });\r\n });\r\n }, [onQueuedMessageDispatched]);\r\n\r\n // Handle session command queue updates\r\n React.useEffect(() => {\r\n onCommandQueueUpdate((queue: string[]) => {\r\n setState(prev => ({ ...prev, commandQueue: queue }));\r\n });\r\n }, [onCommandQueueUpdate]);\r\n\r\n // Handle queued command dispatch.\r\n // Intentionally do not add a user \"You: $ ...\" bubble.\r\n // Command-mode UX should show only the shell execution box.\r\n React.useEffect(() => {\r\n onQueuedCommandDispatched((_command: string) => {\r\n // No-op by design (kept for future extensibility).\r\n });\r\n }, [onQueuedCommandDispatched]);\r\n\r\n // Ref to track if we should strictly block incoming AI updates (Zombie Agent Protection)\r\n // This is set to true when an Agent-Controlled shell exits, essentially killing the \"AI Agent\"\r\n // associated with it from the UI perspective. It is reset when the user manually inputs a new message.\r\n const ignoreIncomingAIUpdatesRef = React.useRef<boolean>(false);\r\n // True only during Alt+E warpify transition, used to suppress expected shell termination noise.\r\n const warpifyInProgressRef = React.useRef<boolean>(false);\r\n const warpifyTerminatingCommandRef = React.useRef<string | null>(null);\r\n\r\n // NOTE: Token count is now updated via onTokenCountUpdate callback from cli-adapter\r\n // which tracks the actual AI conversation history including system prompt.\r\n // The old UI-based calculation has been removed to avoid overwriting correct values.\r\n\r\n // Track if we're currently streaming\r\n const isStreamingRef = React.useRef(false);\r\n\r\n // Buffer content when terminal is too small for streaming display\r\n // Content will only be shown once complete to prevent flickering\r\n const bufferedContentRef = React.useRef<string>('');\r\n const bufferedMessageIdRef = React.useRef<string | null>(null);\r\n\r\n // Set up callback to receive streaming chunks - only once on mount\r\n React.useEffect(() => {\r\n onResponseStream((chunk: string) => {\r\n // CIRCUIT BREAKER: Block incoming messages from \"Zombie Agents\"\r\n if (ignoreIncomingAIUpdatesRef.current) return;\r\n\r\n isStreamingRef.current = true; // Mark that we're streaming\r\n\r\n // Check if terminal is large enough for streaming\r\n const dimensions = getTerminalDimensions();\r\n const enableStreaming = dimensions.shouldEnableStreaming;\r\n\r\n // If streaming is disabled, buffer content silently\r\n // Content will only appear once complete (in onResponseReceived)\r\n if (!enableStreaming) {\r\n // Accumulate content in buffer\r\n bufferedContentRef.current += chunk;\r\n\r\n // Create or update a minimal placeholder message (shows loading state)\r\n setState(prev => {\r\n // If we already have a message with buffered content, just maintain working state\r\n if (prev.currentMessage && prev.currentMessage.role === 'assistant' && prev.currentMessage.shouldStream === false) {\r\n return {\r\n ...prev,\r\n isAiWorking: true\r\n };\r\n }\r\n\r\n // Create minimal placeholder message (content hidden while streaming)\r\n const now = new Date();\r\n const messageId = `assistant-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;\r\n bufferedMessageIdRef.current = messageId;\r\n const newMessage: Message = {\r\n id: messageId,\r\n role: 'assistant',\r\n content: '', // Empty - content will be set when complete\r\n timestamp: now,\r\n shouldStream: false // Never show streaming display\r\n };\r\n return {\r\n ...prev,\r\n currentMessage: newMessage,\r\n isLoading: false,\r\n isAiWorking: true\r\n };\r\n });\r\n return;\r\n }\r\n\r\n // Normal streaming mode - update content in real-time\r\n setState(prev => {\r\n // If we have a current assistant message (possibly created by thoughts), append to it\r\n if (prev.currentMessage && prev.currentMessage.role === 'assistant') {\r\n return {\r\n ...prev,\r\n currentMessage: {\r\n ...prev.currentMessage,\r\n content: prev.currentMessage.content + chunk,\r\n // Update shouldStream based on current terminal size\r\n shouldStream: enableStreaming\r\n },\r\n isAiWorking: true // Keep AI working state active\r\n };\r\n }\r\n\r\n // Otherwise create a new message\r\n const now = new Date();\r\n const newMessage: Message = {\r\n id: `assistant-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'assistant',\r\n content: chunk,\r\n timestamp: now,\r\n // Set shouldStream based on terminal size\r\n // If terminal is too small, disable streaming to prevent flickering\r\n shouldStream: enableStreaming\r\n };\r\n return {\r\n ...prev,\r\n currentMessage: newMessage,\r\n isLoading: false,\r\n isAiWorking: true // AI is actively working\r\n };\r\n });\r\n });\r\n }, [onResponseStream]);\r\n\r\n // Set up callback to clear streamed response when task_complete has a summary\r\n // This prevents showing both the streamed text AND the task_complete summary\r\n React.useEffect(() => {\r\n onClearStreamedResponse(() => {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] onClearStreamedResponse called - clearing current message content\\n`);\r\n } catch (e) {\r\n // Ignore logging errors\r\n }\r\n\r\n setState(prev => {\r\n // Clear the current message's content (not the whole message, so thoughts and thinking are preserved)\r\n if (prev.currentMessage && prev.currentMessage.role === 'assistant') {\r\n return {\r\n ...prev,\r\n currentMessage: {\r\n ...prev.currentMessage,\r\n content: '' // Clear the content - task_complete will stream the summary next\r\n }\r\n };\r\n }\r\n return prev;\r\n });\r\n });\r\n }, [onClearStreamedResponse]);\r\n\r\n // Ref to accumulate all thought text across multiple chunks\r\n const thoughtAccumulatorRef = React.useRef<string>('');\r\n\r\n // Set up callback to receive thought chunks\r\n React.useEffect(() => {\r\n onThoughtStream((thought: string) => {\r\n // CIRCUIT BREAKER: Block incoming thoughts from \"Zombie Agents\"\r\n if (ignoreIncomingAIUpdatesRef.current) return;\r\n\r\n // Debug logging to file\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Received thought chunk (${thought.length} chars): ${thought.substring(0, 100)}\\n`);\r\n } catch (e) {\r\n // Ignore logging errors\r\n }\r\n\r\n setState(prev => {\r\n // Check if current message is a thought-only message (empty content with thinkingDuration)\r\n // These should NOT trigger new message creation - they're waiting for tool execution\r\n const isThoughtOnlyMessage = prev.currentMessage?.role === 'assistant' &&\r\n prev.currentMessage.content.trim() === '' &&\r\n prev.currentMessage.thinkingDuration !== undefined;\r\n\r\n // If we don't have a current assistant message, OR the current one already has thinkingDuration\r\n // (meaning it's from a completed turn), create a new one for the thoughts\r\n // BUT: Don't create new if current is a thought-only message waiting for tool\r\n const needsNewMessage = !prev.currentMessage ||\r\n prev.currentMessage.role !== 'assistant' ||\r\n (prev.currentMessage.thinkingDuration !== undefined && !isThoughtOnlyMessage);\r\n\r\n if (needsNewMessage) {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Creating new assistant message for thoughts (reason: ${!prev.currentMessage ? 'no current' : prev.currentMessage.role !== 'assistant' ? 'not assistant' : 'has thinkingDuration'})\\n`);\r\n } catch (e) {\r\n // Ignore logging errors\r\n }\r\n\r\n // Reset accumulator for new message\r\n thoughtAccumulatorRef.current = thought;\r\n\r\n // Split accumulated text into lines and get last 3\r\n const allLines = thoughtAccumulatorRef.current.split('\\n').filter(line => line.trim());\r\n const last3Lines = allLines.slice(-3);\r\n\r\n const now = new Date();\r\n const newMessage: Message = {\r\n id: `assistant-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'assistant',\r\n content: '', // Empty content initially, will be filled when text arrives\r\n timestamp: now,\r\n shouldStream: true,\r\n thoughts: last3Lines\r\n };\r\n\r\n // If we have a completed assistant message (with thinkingDuration), move it to history\r\n // BUT: Don't move thought-only messages - they're waiting for tool execution\r\n let newHistory = prev.messageHistory;\r\n if (prev.currentMessage && prev.currentMessage.role === 'assistant' &&\r\n prev.currentMessage.thinkingDuration !== undefined &&\r\n prev.currentMessage.content.trim() !== '') { // Only move if has actual content\r\n newHistory = [...prev.messageHistory, prev.currentMessage];\r\n }\r\n\r\n return {\r\n ...prev,\r\n messageHistory: newHistory,\r\n currentMessage: newMessage,\r\n isLoading: false,\r\n isAiWorking: true\r\n };\r\n }\r\n\r\n // If current is thought-only message, just skip this new thought chunk\r\n // (don't accumulate - the tool will handle displaying)\r\n if (isThoughtOnlyMessage) {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Skipping thought chunk - current is thought-only message waiting for tool\\n`);\r\n } catch (e) { }\r\n return prev;\r\n }\r\n\r\n // Accumulate the new thought chunk with existing thought text\r\n // Concatenate directly - chunks may be partial words/phrases, real newlines come from the model\r\n thoughtAccumulatorRef.current += thought;\r\n\r\n // Split ALL accumulated thought text by actual newlines from the model and get last 3\r\n const allLines = thoughtAccumulatorRef.current.split('\\n').filter(line => line.trim());\r\n const last3Lines = allLines.slice(-3);\r\n\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Accumulated ${allLines.length} total lines, showing last 3: ${JSON.stringify(last3Lines)}\\n`);\r\n } catch (e) {\r\n // Ignore logging errors\r\n }\r\n\r\n return {\r\n ...prev,\r\n currentMessage: {\r\n ...prev.currentMessage,\r\n thoughts: last3Lines,\r\n thinkingDuration: undefined // Clear duration while thinking\r\n }\r\n };\r\n });\r\n });\r\n }, [onThoughtStream]);\r\n\r\n // Set up callback for when thinking completes\r\n React.useEffect(() => {\r\n onThoughtComplete((durationSeconds: number) => {\r\n // CIRCUIT BREAKER: Block incoming thought completion from \"Zombie Agents\"\r\n if (ignoreIncomingAIUpdatesRef.current) return;\r\n\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] onThoughtComplete called with ${durationSeconds}s\\n`);\r\n } catch (e) {\r\n // Ignore\r\n }\r\n\r\n // Reset thought accumulator for next thinking session\r\n thoughtAccumulatorRef.current = '';\r\n\r\n setState(prev => {\r\n // Only update if we have a current assistant message\r\n if (!prev.currentMessage || prev.currentMessage.role !== 'assistant') {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] No current assistant message for thought completion\\n`);\r\n } catch (e) {\r\n // Ignore\r\n }\r\n return prev;\r\n }\r\n\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Setting thinkingDuration to ${durationSeconds}s on message ${prev.currentMessage.id}\\n`);\r\n } catch (e) {\r\n // Ignore\r\n }\r\n\r\n return {\r\n ...prev,\r\n currentMessage: {\r\n ...prev.currentMessage,\r\n thoughts: undefined, // Clear thoughts\r\n thinkingDuration: durationSeconds // Set duration\r\n }\r\n };\r\n });\r\n });\r\n }, [onThoughtComplete]);\r\n\r\n // Helper function to check if a message should be skipped (thought-only with no content or tools)\r\n const shouldSkipMessage = useCallback((message: Message | null): boolean => {\r\n if (!message) return false;\r\n\r\n // Skip if it's an assistant message with only thinking duration and no content or tool execution\r\n if (message.role === 'assistant' &&\r\n message.thinkingDuration !== undefined &&\r\n message.content.trim() === '' &&\r\n !message.toolExecution) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }, []);\r\n\r\n // Common route for static informational messages (slash/background/etc).\r\n // Important: when AI is actively working, these messages must append to static\r\n // history only and must NOT disrupt current dynamic execution/thinking UI state.\r\n const appendStaticInfoMessage = useCallback((message: string) => {\r\n setState(prev => {\r\n const staticInfoMessage: Message = {\r\n id: `system-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'assistant',\r\n content: message,\r\n timestamp: new Date(),\r\n shouldStream: false\r\n };\r\n\r\n // If AI is currently active, do not mutate dynamic execution/thinking state.\r\n if (prev.isAiWorking) {\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, staticInfoMessage]\r\n };\r\n }\r\n\r\n // Idle path: maintain previous behavior of finalizing current message first.\r\n const newHistory = prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage]\r\n : prev.messageHistory;\r\n\r\n return {\r\n ...prev,\r\n messageHistory: [...newHistory, staticInfoMessage],\r\n currentMessage: null,\r\n isLoading: false,\r\n isAiWorking: false\r\n };\r\n });\r\n }, [shouldSkipMessage]);\r\n\r\n // Set up callback for direct messages (slash commands) - add directly to history\r\n React.useEffect(() => {\r\n onDirectMessage((message: string) => {\r\n // CIRCUIT BREAKER: Block incoming direct messages from \"Zombie Agents\"\r\n if (ignoreIncomingAIUpdatesRef.current) return;\r\n appendStaticInfoMessage(message);\r\n });\r\n }, [onDirectMessage, appendStaticInfoMessage]);\r\n\r\n // Set up callback to receive complete responses (for slash commands and non-streaming responses)\r\n React.useEffect(() => {\r\n onResponseReceived((message: string) => {\r\n // CIRCUIT BREAKER: Block incoming responses from \"Zombie Agents\"\r\n if (ignoreIncomingAIUpdatesRef.current) return;\r\n\r\n // If we were streaming, move the current message to history immediately\r\n if (isStreamingRef.current) {\r\n isStreamingRef.current = false; // Reset for next message\r\n\r\n // Check if we have buffered content (from disabled streaming mode)\r\n const hasBufferedContent = bufferedContentRef.current.length > 0;\r\n const bufferedContent = bufferedContentRef.current;\r\n\r\n // Clear buffer for next use\r\n bufferedContentRef.current = '';\r\n bufferedMessageIdRef.current = null;\r\n\r\n setState(prev => {\r\n // Move the completed streaming message to history\r\n if (prev.currentMessage && prev.currentMessage.role === 'assistant') {\r\n // Check if this message is already in history (prevent duplicates)\r\n const alreadyInHistory = prev.messageHistory.some(msg => msg.id === prev.currentMessage?.id);\r\n\r\n if (alreadyInHistory) {\r\n // Message already added, just clear current\r\n return {\r\n ...prev,\r\n currentMessage: null,\r\n isLoading: false,\r\n isAiWorking: false // AI finished working\r\n };\r\n }\r\n\r\n // Create complete message with full content\r\n // If we had buffered content, use that instead of the (empty) currentMessage content\r\n const completeMessage: Message = {\r\n ...prev.currentMessage,\r\n content: hasBufferedContent ? bufferedContent : prev.currentMessage.content,\r\n shouldStream: false\r\n };\r\n\r\n // Add the complete message to history\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, completeMessage],\r\n currentMessage: null,\r\n isLoading: false,\r\n isAiWorking: false // AI finished working\r\n };\r\n }\r\n\r\n // CRITICAL: If currentMessage is NOT an assistant (e.g., it's a tool message),\r\n // but we have a message to finalize (from task_complete), we need to find and update\r\n // the most recent assistant message in history with the full content.\r\n if (message && message.length > 0) {\r\n // Find the most recent assistant message in history to update\r\n const lastAssistantIndex = prev.messageHistory.findIndex((msg, i) =>\r\n msg.role === 'assistant' &&\r\n i === prev.messageHistory.map((m, idx) => m.role === 'assistant' ? idx : -1).filter(idx => idx >= 0).pop()\r\n );\r\n\r\n if (lastAssistantIndex >= 0) {\r\n const lastAssistant = prev.messageHistory[lastAssistantIndex];\r\n // Only update if the current content is shorter than what we're providing\r\n // (meaning the message was moved to history mid-stream)\r\n if (lastAssistant.content.length < message.length) {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] onResponseReceived: Updating history assistant message from ${lastAssistant.content.length} chars to ${message.length} chars\\n`);\r\n } catch (e) { }\r\n\r\n const updatedHistory = [...prev.messageHistory];\r\n updatedHistory[lastAssistantIndex] = {\r\n ...lastAssistant,\r\n content: message,\r\n shouldStream: false\r\n };\r\n\r\n return {\r\n ...prev,\r\n messageHistory: updatedHistory,\r\n currentMessage: null,\r\n isLoading: false,\r\n isAiWorking: false\r\n };\r\n }\r\n }\r\n }\r\n\r\n return {\r\n ...prev,\r\n isLoading: false,\r\n isAiWorking: false // AI finished working\r\n };\r\n });\r\n return;\r\n }\r\n\r\n // For command mode, add output directly to history (no flickering)\r\n setState(prev => {\r\n if (prev.commandMode) {\r\n const now = new Date();\r\n const outputMessage: Message = {\r\n id: `output-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'assistant',\r\n content: message,\r\n timestamp: now,\r\n shouldStream: false,\r\n isCommandMode: true\r\n };\r\n\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, outputMessage],\r\n currentMessage: null,\r\n isLoading: false,\r\n isAiWorking: false // AI finished working\r\n };\r\n }\r\n\r\n // For non-streaming responses (like slash commands), display the complete message\r\n const now = new Date();\r\n const newMessage: Message = {\r\n id: `assistant-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'assistant',\r\n content: message,\r\n timestamp: now,\r\n shouldStream: false // Command responses should appear instantly\r\n };\r\n\r\n // If we have a current message that's an assistant message, move it to history (skip thought-only)\r\n if (prev.currentMessage && prev.currentMessage.role === 'assistant' && !shouldSkipMessage(prev.currentMessage)) {\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, prev.currentMessage],\r\n currentMessage: newMessage,\r\n isLoading: false,\r\n isAiWorking: false // AI finished working\r\n };\r\n }\r\n\r\n // Otherwise just set as current\r\n return {\r\n ...prev,\r\n currentMessage: newMessage,\r\n isLoading: false,\r\n isAiWorking: false // AI finished working\r\n };\r\n });\r\n });\r\n }, [onResponseReceived]);\r\n\r\n // Ref to track pending shell start (to avoid flickering for fast commands)\r\n const pendingShellRef = React.useRef<{\r\n timeoutId: NodeJS.Timeout;\r\n command: string;\r\n cwd: string;\r\n output: string;\r\n remoteContext?: string;\r\n } | null>(null);\r\n\r\n // Set up callback to show pickers - only once on mount\r\n React.useEffect(() => {\r\n onPickerSetup((options: { message: string; choices: Array<{ label: string; value: string }>; type: 'model' | 'local-model' }) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'picker',\r\n pickerOptions: options,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for chat picker\r\n React.useEffect(() => {\r\n onChatPickerSetup((chats, currentChatId) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat-picker',\r\n chatPickerChats: chats,\r\n currentChatId: currentChatId,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for chat delete picker\r\n React.useEffect(() => {\r\n onChatDeletePickerSetup((chats, currentChatId) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat-delete-picker',\r\n chatPickerChats: chats,\r\n currentChatId: currentChatId,\r\n chatDeletePickerSession: (prev.chatDeletePickerSession ?? 0) + 1,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for read-only chat list view\r\n React.useEffect(() => {\r\n onChatListSetup((chats, currentChatId) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat-list-view',\r\n chatPickerChats: chats,\r\n currentChatId: currentChatId,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for chat rename picker\r\n React.useEffect(() => {\r\n onChatRenamePickerSetup((chats, currentChatId) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat-rename-picker',\r\n chatPickerChats: chats,\r\n currentChatId: currentChatId,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for background mode change\r\n React.useEffect(() => {\r\n onBackgroundModeChange((backgroundMode) => {\r\n setState(prev => ({\r\n ...prev,\r\n backgroundMode\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for background task count change\r\n React.useEffect(() => {\r\n onBackgroundTaskCountChange((count) => {\r\n setState(prev => ({\r\n ...prev,\r\n backgroundTaskCount: count\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for sub-agent count change\r\n React.useEffect(() => {\r\n onSubAgentCountChange((count) => {\r\n setState(prev => ({\r\n ...prev,\r\n subAgentCount: count\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n React.useEffect(() => {\r\n onAiAutoSuggestChange((enabled) => {\r\n setState(prev => ({\r\n ...prev,\r\n aiAutoSuggest: enabled\r\n }));\r\n });\r\n }, [onAiAutoSuggestChange]);\r\n\r\n // Set up callback for setting Auto mode (used after background task starts)\r\n\r\n React.useEffect(() => {\r\n onSetAutoModeSetup((enabled) => {\r\n // Call the InputBox's setAutoMode callback if registered\r\n if (setAutoModeCallbackRef.current) {\r\n setAutoModeCallbackRef.current(enabled);\r\n }\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for message restoration (when resuming a chat)\r\n React.useEffect(() => {\r\n onRestoreMessagesSetup((restoredMessages) => {\r\n // Use two-phase restore to work around Ink's Static component caching:\r\n // 1. First, clear messageHistory to unmount the Static component\r\n // 2. Then after a short delay, set the restored messages\r\n // This ensures Static re-renders fresh with the new message list\r\n quickLog(`[${new Date().toISOString()}] [App] onRestoreMessagesSetup callback invoked with ${restoredMessages.length} messages\\n`);\r\n quickLog(`[${new Date().toISOString()}] [App] First message: ${restoredMessages[0]?.role} - \"${restoredMessages[0]?.content?.substring(0, 50)}...\"\\n`);\r\n quickLog(`[${new Date().toISOString()}] [App] Last message: ${restoredMessages[restoredMessages.length - 1]?.role} - \"${restoredMessages[restoredMessages.length - 1]?.content?.substring(0, 50)}...\"\\n`);\r\n\r\n // Cancel any pending restore phase from a previous request to avoid interleaving.\r\n if (restoreMessagesTimeoutRef.current) {\r\n clearTimeout(restoreMessagesTimeoutRef.current);\r\n restoreMessagesTimeoutRef.current = null;\r\n }\r\n\r\n // Phase 1: Clear screen and empty message history to unmount Static\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n messageHistory: [],\r\n currentMessage: null,\r\n isLoading: false\r\n }));\r\n quickLog(`[${new Date().toISOString()}] [App] Phase 1: Cleared messageHistory to unmount Static\\n`);\r\n\r\n // Phase 2: After brief delay, restore the messages\r\n restoreMessagesTimeoutRef.current = setTimeout(() => {\r\n restoreMessagesTimeoutRef.current = null;\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n messageHistory: restoredMessages,\r\n // Increment messageListKey to force MessageList/Static component remount.\r\n // This resets Ink Static's internal rendered-item counter, ensuring ALL\r\n // restored messages render correctly (prevents first message being skipped\r\n // if any system messages were added between Phase 1 and Phase 2).\r\n messageListKey: (prev.messageListKey ?? 0) + 1,\r\n isLoading: false\r\n }));\r\n quickLog(`[${new Date().toISOString()}] [App] Phase 2: Restored ${restoredMessages.length} messages to messageHistory\\n`);\r\n }, 50); // Short delay to allow React to unmount and remount Static\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for revert to checkpoint (truncates UI message history)\r\n React.useEffect(() => {\r\n onRevertToCheckpointSetup((checkpointIndex, prompt) => {\r\n setState(prev => {\r\n let truncateAtIndex = -1;\r\n\r\n // Message history length check for safety\r\n if (typeof checkpointIndex === 'number' && checkpointIndex >= 0 && checkpointIndex < prev.messageHistory.length) {\r\n // Use the explicit index provided by the checkpoint\r\n truncateAtIndex = checkpointIndex;\r\n quickLog(`[${new Date().toISOString()}] [App] Revert: using explicit checkpoint index ${checkpointIndex}\\n`);\r\n\r\n // Verify it matches the prompt (sanity check)\r\n const targetMsg = prev.messageHistory[checkpointIndex];\r\n if (targetMsg.role === 'user' && (!targetMsg.content || !targetMsg.content.includes(prompt.slice(0, 20)))) {\r\n quickLog(`[${new Date().toISOString()}] [App] Revert WARNING: Message at index ${checkpointIndex} does not match prompt \"${prompt.slice(0, 20)}...\"\\n`);\r\n // We still use the index as it's likely more reliable than string matching for duplicates\r\n }\r\n } else {\r\n // Fallback: Find the user message via prompt matching\r\n // Search BACKWARDS to find the most recent occurrence (handling duplicates better)\r\n for (let i = prev.messageHistory.length - 1; i >= 0; i--) {\r\n const msg = prev.messageHistory[i];\r\n if (msg.role === 'user' && msg.content && msg.content.includes(prompt.slice(0, 50))) {\r\n truncateAtIndex = i;\r\n quickLog(`[${new Date().toISOString()}] [App] Revert: found message by prompt at index ${i}\\n`);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (truncateAtIndex >= 0) {\r\n // Truncate EXCLUSIVELY (remove the target message and everything after)\r\n // This allows the user to edit and resubmit the reverted message\r\n const truncatedHistory = prev.messageHistory.slice(0, truncateAtIndex);\r\n quickLog(`[${new Date().toISOString()}] [App] Reverted UI: truncated message history from ${prev.messageHistory.length} to ${truncatedHistory.length} messages (exclusive)\\n`);\r\n\r\n return {\r\n ...prev,\r\n messageHistory: truncatedHistory,\r\n currentMessage: null, // Clear any current message\r\n isLoading: false,\r\n isAiWorking: false\r\n };\r\n }\r\n\r\n // If we couldn't find the message, log but don't crash\r\n quickLog(`[${new Date().toISOString()}] [App] Revert: could not find message matching prompt \"${prompt.slice(0, 50)}\"\\n`);\r\n return prev;\r\n });\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for background task list picker\r\n React.useEffect(() => {\r\n onBackgroundTaskListSetup((tasks) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'background-task-list',\r\n backgroundTasks: tasks,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for background task cancel picker\r\n React.useEffect(() => {\r\n onBackgroundTaskCancelSetup((tasks) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'background-task-cancel',\r\n backgroundTasks: tasks,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for viewing a background task in focus mode (live streaming shell)\r\n React.useEffect(() => {\r\n onBackgroundTaskViewSetup((task) => {\r\n clearScreen();\r\n // Set up shell state for the background task - this displays in InteractiveShell\r\n // isFocused: true to start directly in focus mode\r\n // isBackgroundTask: true to prevent adding to history on exit\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n shellState: {\r\n command: `[Background Task] ${task.command}`,\r\n cwd: task.cwd,\r\n output: task.output,\r\n isRunning: task.isRunning,\r\n exitCode: undefined,\r\n error: undefined,\r\n isFocused: true, // Start directly in focus mode\r\n remoteContext: undefined,\r\n isBackgroundTask: true, // Flag to prevent history addition\r\n backgroundTaskId: task.id // Store task ID for input routing\r\n },\r\n isLoading: false,\r\n isAiWorking: false // Don't show AI working for background tasks\r\n }));\r\n\r\n // Subscribe to output updates - append to shell output\r\n task.onOutput((chunk) => {\r\n setState(prev => {\r\n if (!prev.shellState || !prev.shellState.isBackgroundTask) return prev;\r\n return {\r\n ...prev,\r\n shellState: {\r\n ...prev.shellState,\r\n output: prev.shellState.output + chunk\r\n }\r\n };\r\n });\r\n });\r\n\r\n // Subscribe to task completion\r\n task.onComplete((exitCode) => {\r\n // Debug logging\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App.tsx] task.onComplete called: exitCode=${exitCode}\\n`);\r\n } catch (e) { }\r\n\r\n setState(prev => {\r\n // If user already exited focus mode, don't do anything\r\n if (!prev.shellState || !prev.shellState.isBackgroundTask) {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App.tsx] task.onComplete: shellState not active, ignoring\\n`);\r\n } catch (e) { }\r\n return prev;\r\n }\r\n\r\n // Task completed - mark as done and update display\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App.tsx] task.onComplete: marking task as complete\\n`);\r\n } catch (e) { }\r\n\r\n return {\r\n ...prev,\r\n shellState: {\r\n ...prev.shellState,\r\n isRunning: false,\r\n exitCode\r\n }\r\n };\r\n });\r\n\r\n // After a brief delay, automatically return to chat\r\n // This gives the user time to see the final output\r\n setTimeout(() => {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App.tsx] task.onComplete: clearing shellState to return to chat\\n`);\r\n } catch (e) { }\r\n\r\n clearScreen();\r\n setState(prev => {\r\n // Only clear if still showing this background task\r\n if (prev.shellState?.isBackgroundTask) {\r\n return {\r\n ...prev,\r\n shellState: undefined\r\n };\r\n }\r\n return prev;\r\n });\r\n }, 500); // 500ms delay to see final output\r\n });\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for MCP Add screen\r\n React.useEffect(() => {\r\n onMCPAddScreenSetup(() => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'mcp-add',\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for Workflow Creator screen\r\n React.useEffect(() => {\r\n onWorkflowCreatorSetup((initialSteps) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'workflow-creator',\r\n isLoading: false,\r\n workflowCreatorInitialSteps: initialSteps\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for Rules Editor screen\r\n React.useEffect(() => {\r\n onRulesEditorSetup((request) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'rules-editor',\r\n isLoading: false,\r\n rulesEditorRequest: request\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for MCP Remove screen\r\n React.useEffect(() => {\r\n onMCPRemoveScreenSetup((servers) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'mcp-remove',\r\n mcpServers: servers,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for MCP Enable screen\r\n React.useEffect(() => {\r\n onMCPEnableScreenSetup((servers) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'mcp-enable',\r\n mcpServers: servers,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for MCP Disable screen\r\n React.useEffect(() => {\r\n onMCPDisableScreenSetup((servers) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'mcp-disable',\r\n mcpServers: servers,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for MCP List screen\r\n React.useEffect(() => {\r\n onMCPListScreenSetup((servers) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'mcp-list',\r\n mcpListData: servers,\r\n isLoading: false\r\n }));\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Sync UI message history to CLI adapter whenever it changes\r\n React.useEffect(() => {\r\n onUIMessageHistoryUpdate(state.messageHistory);\r\n }, [state.messageHistory]);\r\n\r\n // Set up callback for tool execution updates\r\n React.useEffect(() => {\r\n onToolExecutionUpdate((update) => {\r\n // CIRCUIT BREAKER: Block incoming tool updates from \"Zombie Agents\"\r\n if (ignoreIncomingAIUpdatesRef.current) return;\r\n\r\n // Special handling for execute_command\r\n if (update.toolName === 'execute_command') {\r\n const isCommandModeExecution = !!update.arguments?.commandModeExecution;\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] execute_command update: ${JSON.stringify(update)}\\n`);\r\n } catch (e) { }\r\n\r\n // STARTING EXECUTION\r\n if (update.status === 'executing') {\r\n // Special handling for shell_input - DO NOT overwrite shell state\r\n // The agent is sending input to an EXISTING shell, so we must preserve the current shell state\r\n if (update.arguments?.shell_input) {\r\n setState(prev => ({\r\n ...prev,\r\n // Move current message to history if needed\r\n messageHistory: prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage]\r\n : prev.messageHistory,\r\n // Update current message to show the tool execution\r\n currentMessage: {\r\n id: `tool-execute_command-${Date.now()}`,\r\n role: 'tool',\r\n content: '',\r\n timestamp: new Date(),\r\n toolExecution: { ...update }\r\n },\r\n isLoading: false,\r\n isAiWorking: true\r\n }));\r\n return;\r\n }\r\n\r\n const command = update.arguments?.command || update.arguments?.CommandLine || update.arguments?.commandLine || '';\r\n\r\n // Start a pending shell with a short delay\r\n // This prevents the UI from flickering for very fast commands (like ls)\r\n // and prevents duplication by allowing us to skip the interactive shell entirely\r\n const timeoutId = setTimeout(() => {\r\n // If this timeout fires, it means the command is taking longer than 50ms\r\n // So we should show the interactive shell\r\n if (pendingShellRef.current) {\r\n const bufferedOutput = pendingShellRef.current.output;\r\n const cmd = pendingShellRef.current.command;\r\n const cwd = pendingShellRef.current.cwd;\r\n\r\n pendingShellRef.current = null; // Clear pending state\r\n\r\n setState(prev => ({\r\n ...prev,\r\n shellState: {\r\n shellId: `shell-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`,\r\n command: cmd,\r\n cwd: cwd,\r\n output: bufferedOutput,\r\n isRunning: true,\r\n exitCode: undefined,\r\n error: undefined,\r\n isFocused: false,\r\n isPty: update.arguments?.isPty || false,\r\n remoteContext: update.arguments?.remoteContext,\r\n isAgentStarted: !isCommandModeExecution\r\n },\r\n // IMPORTANT: Always preserve current message by moving it to history first (skip thought-only)\r\n messageHistory: prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage]\r\n : prev.messageHistory,\r\n currentMessage: {\r\n id: `tool-execute_command-${Date.now()}`,\r\n role: 'tool',\r\n content: '',\r\n timestamp: new Date(),\r\n toolExecution: { ...update }\r\n },\r\n isLoading: false,\r\n isAiWorking: isCommandModeExecution ? false : true\r\n }));\r\n }\r\n }, 50);\r\n\r\n pendingShellRef.current = {\r\n timeoutId,\r\n command,\r\n // Use the cwd from update.arguments (already computed correctly in cli-adapter.ts)\r\n // This has the correct remote CWD for WSL/Docker/SSH contexts\r\n cwd: update.arguments?.cwd || state.currentWorkingDirectory,\r\n remoteContext: update.arguments?.remoteContext,\r\n output: ''\r\n };\r\n\r\n return;\r\n }\r\n\r\n // COMPLETION / ERROR\r\n if (update.status === 'completed' || update.status === 'error') {\r\n const updateCommand = update.arguments?.command || update.arguments?.CommandLine || update.arguments?.commandLine || '';\r\n const terminatingCommand = warpifyTerminatingCommandRef.current || '';\r\n const isWarpifyTerminationUpdate = !terminatingCommand || !updateCommand || updateCommand === terminatingCommand;\r\n\r\n // During warpify, the PTY shell is intentionally terminated (SIGTERM).\r\n // Ignore the resulting execute_command completion/error update so we don't\r\n // show a false red shell card that can replace the tunneling status message.\r\n if (warpifyInProgressRef.current && isWarpifyTerminationUpdate) {\r\n if (pendingShellRef.current) {\r\n clearTimeout(pendingShellRef.current.timeoutId);\r\n pendingShellRef.current = null;\r\n }\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Suppressed execute_command ${update.status} during warpify transition\\n`);\r\n } catch (e) { }\r\n return;\r\n }\r\n\r\n // Check if we have a pending shell (fast command)\r\n if (pendingShellRef.current) {\r\n // Command finished VERY fast (within 50ms)\r\n // Clear the timeout so we don't show the interactive shell\r\n clearTimeout(pendingShellRef.current.timeoutId);\r\n\r\n const bufferedOutput = pendingShellRef.current.output;\r\n pendingShellRef.current = null;\r\n\r\n // Add directly to history\r\n setState(prev => {\r\n // Process terminal output to properly handle carriage returns\r\n // This prevents duplication from intermediate states (spinners, progress bars)\r\n // IMPORTANT: Use bufferedOutput OR update.result, NOT both (they contain the same data)\r\n const rawOutput = bufferedOutput || update.result || '';\r\n const finalOutput = processTerminalOutput(rawOutput);\r\n const errorMsg = update.error;\r\n\r\n const shellMessage: Message = {\r\n id: `shell-${Date.now()}`,\r\n role: 'tool',\r\n content: '',\r\n timestamp: new Date(),\r\n toolExecution: {\r\n toolName: 'execute_command',\r\n status: update.status as 'completed' | 'error',\r\n result: finalOutput,\r\n error: errorMsg,\r\n arguments: update.arguments\r\n }\r\n };\r\n\r\n // Move current message to history if exists (skip thought-only)\r\n const newHistory = prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage]\r\n : prev.messageHistory;\r\n\r\n return {\r\n ...prev,\r\n shellState: undefined,\r\n messageHistory: [...newHistory, shellMessage],\r\n currentMessage: null,\r\n isAiWorking: isCommandModeExecution ? false : prev.isAiWorking\r\n };\r\n });\r\n return;\r\n }\r\n\r\n // Normal case: Interactive shell was already shown, now finishing\r\n setState(prev => {\r\n // Don't add tool messages if we're not on chat screen\r\n if (prev.screen !== 'chat') {\r\n return prev;\r\n }\r\n\r\n // Process terminal output to properly handle carriage returns\r\n // This prevents duplication from intermediate states (spinners, progress bars)\r\n const rawOutput = prev.shellState?.output || update.result || '';\r\n const finalOutput = processTerminalOutput(rawOutput);\r\n const errorMsg = update.error;\r\n\r\n const shellMessage: Message = {\r\n id: `shell-${Date.now()}`,\r\n role: 'tool',\r\n content: '',\r\n timestamp: new Date(),\r\n toolExecution: {\r\n toolName: 'execute_command',\r\n status: update.status as 'completed' | 'error',\r\n result: finalOutput,\r\n error: errorMsg,\r\n arguments: update.arguments\r\n }\r\n };\r\n\r\n // Check if this was just an input string sent to an existing shell\r\n const isShellInput = update.arguments?.shell_input;\r\n\r\n // Reset input detection pending flag so we can detect NEXT prompt\r\n if (update.status === 'completed' || update.status === 'error') {\r\n inputDetectionPendingRef.current = false;\r\n }\r\n\r\n // Check if we hit a dead shell error during agent control\r\n const isDeadShellError = update.status === 'error' && update.error?.includes('No active interactive shell');\r\n\r\n // STRICT ISOLATION TRIGGER: If agent-controlled shell is done (completed or dead), kill the agent loop\r\n // LOGIC SPLIT:\r\n // 1. Manual Shell (User started, then Alt+I): Strict Sub-Agent behavior. Kill IMMEDIATELY on exit/completion.\r\n // 2. Agent Shell (Agent started via execute_command): Main Agent behavior. Kill only on ERROR. Allow success pass-through.\r\n const isAgentStarted = prev.shellState?.isAgentStarted;\r\n const shouldKill = isAgentStarted ? isDeadShellError : (update.status === 'completed' || isDeadShellError);\r\n\r\n if (prev.shellState?.isAgentControlled && shouldKill) {\r\n try { quickLog(`[${new Date().toISOString()}] [App] Strict Isolation: Agent Controlled shell exited/died. Engaging circuit breaker. (AgentStarted: ${isAgentStarted})\\n`); } catch (e) { }\r\n ignoreIncomingAIUpdatesRef.current = true;\r\n // Terminate the shell input agent session\r\n if (prev.shellState?.shellId) {\r\n ShellInputAgent.terminateSession(prev.shellState.shellId);\r\n }\r\n }\r\n\r\n return {\r\n ...prev,\r\n // If it's just shell input, preserve the shell state UNLESS it's a dead shell error\r\n shellState: (isShellInput && !isDeadShellError) ? prev.shellState : undefined,\r\n messageHistory: [...prev.messageHistory, shellMessage],\r\n currentMessage: null,\r\n // Determine if AI should keep working:\r\n // - Normal shell input: preserve state (keep thrusting if in chain)\r\n // - Agent-started shell completed successfully: preserve state (agent loop continues)\r\n // - Dead shell error or manual shell completed: STOP thrusting (reset to false)\r\n isAiWorking: isCommandModeExecution\r\n ? false\r\n : (isShellInput && !isDeadShellError) ? prev.isAiWorking\r\n : (isAgentStarted && !shouldKill) ? prev.isAiWorking\r\n : false\r\n };\r\n });\r\n return;\r\n }\r\n }\r\n\r\n setState(prev => {\r\n // Debug logging to trace tool display issues\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] onToolExecutionUpdate setState - toolName: ${update.toolName}, status: ${update.status}\\n`);\r\n quickLog(`[${new Date().toISOString()}] [App] Current state: screen=${prev.screen}, currentMessage.role=${prev.currentMessage?.role}, currentMessage.id=${prev.currentMessage?.id}, historyLen=${prev.messageHistory.length}\\n`);\r\n if (prev.currentMessage?.thinkingDuration !== undefined) {\r\n quickLog(`[${new Date().toISOString()}] [App] Current message has thinkingDuration: ${prev.currentMessage.thinkingDuration}s\\n`);\r\n }\r\n } catch (e) { }\r\n\r\n // IMPORTANT: When on approval screen, we still need to track completed tools \r\n // but we should NOT try to update the display (will be handled when returning to chat)\r\n // For 'executing' status on approval screen, the tool is waiting for approval, so skip\r\n if (prev.screen !== 'chat') {\r\n // Only track completed tools, skip executing tools (they need approval flow)\r\n if (update.status === 'completed' || update.status === 'error') {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Tool ${update.toolName} completed while on ${prev.screen} screen, adding to history\\n`);\r\n } catch (e) { }\r\n\r\n // Add completed tool directly to history\r\n const completedToolMessage: Message = {\r\n id: `tool-${update.toolName}-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'tool',\r\n content: '',\r\n timestamp: new Date(),\r\n toolExecution: { ...update }\r\n };\r\n\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, completedToolMessage],\r\n isAiWorking: true\r\n };\r\n }\r\n // Skip 'executing' status when not on chat screen\r\n return prev;\r\n }\r\n\r\n const toolMessage: Message = {\r\n id: `tool-${update.toolName}-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'tool',\r\n content: '',\r\n timestamp: new Date(),\r\n toolExecution: { ...update }\r\n };\r\n\r\n // If current message is a tool with matching execution, update it and move to history\r\n if (prev.currentMessage?.role === 'tool' &&\r\n prev.currentMessage.toolExecution?.status === 'executing' &&\r\n update.status !== 'executing') {\r\n // Tool completed - move to history with updated status\r\n // Note: We now match ANY executing tool, not just same toolName (handles overlapping tools)\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Tool ${update.toolName} completed, moving current tool to history\\n`);\r\n } catch (e) { }\r\n\r\n const completedToolMessage: Message = {\r\n ...prev.currentMessage,\r\n toolExecution: { ...update }\r\n };\r\n\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, completedToolMessage],\r\n currentMessage: null,\r\n isAiWorking: true\r\n };\r\n }\r\n\r\n // For pending status, don't modify state yet - wait for executing\r\n // This ensures thought-only messages stay as currentMessage until executing arrives\r\n if (update.status === 'pending') {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Tool ${update.toolName} pending - skipping state modification, waiting for executing\\n`);\r\n } catch (e) { }\r\n return prev; // Return unchanged state\r\n }\r\n\r\n // If starting new tool execution\r\n if (update.status === 'executing') {\r\n // IMPORTANT: Always preserve current message by moving it to history first\r\n let newHistory = prev.messageHistory;\r\n let pendingThinkingDuration: number | undefined = undefined;\r\n\r\n if (prev.currentMessage) {\r\n // Check if this is a thought-only message (empty content but has thinkingDuration)\r\n const isThoughtOnlyMessage = prev.currentMessage.role === 'assistant' &&\r\n prev.currentMessage.content.trim() === '' &&\r\n prev.currentMessage.thinkingDuration !== undefined;\r\n\r\n if (isThoughtOnlyMessage) {\r\n // Carry the thinkingDuration to the tool message, don't add empty message to history\r\n pendingThinkingDuration = prev.currentMessage.thinkingDuration;\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Skipping thought-only message (no content), saving thinkingDuration ${pendingThinkingDuration}s for tool ${update.toolName}\\n`);\r\n } catch (e) { }\r\n } else {\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Moving current message (${prev.currentMessage.role}) to history for new tool ${update.toolName}\\n`);\r\n } catch (e) { }\r\n // Move ANY current message to history before showing tool\r\n newHistory = [...prev.messageHistory, prev.currentMessage];\r\n }\r\n }\r\n\r\n // Create tool message with thinkingDuration if applicable\r\n const toolMessageWithDuration: Message = {\r\n ...toolMessage,\r\n thinkingDuration: pendingThinkingDuration\r\n };\r\n\r\n return {\r\n ...prev,\r\n messageHistory: newHistory,\r\n currentMessage: toolMessageWithDuration,\r\n isLoading: false,\r\n isAiWorking: true\r\n };\r\n }\r\n\r\n // For completed tools without a current executing one (edge case)\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Tool ${update.toolName} completed without current executing tool, adding to history\\n`);\r\n } catch (e) { }\r\n\r\n let newHistory = prev.messageHistory;\r\n if (prev.currentMessage && !shouldSkipMessage(prev.currentMessage)) {\r\n newHistory = [...prev.messageHistory, prev.currentMessage];\r\n }\r\n\r\n return {\r\n ...prev,\r\n messageHistory: [...newHistory, toolMessage],\r\n currentMessage: null,\r\n isAiWorking: true\r\n };\r\n });\r\n });\r\n }, []); // Empty dependency array - only register once\r\n\r\n // Set up callback for connection status updates (SSH/WSL/Docker)\r\n React.useEffect(() => {\r\n onConnectionStatusUpdate((status: ConnectionStatus) => {\r\n setState(prev => {\r\n // If connecting, set as current dynamic message\r\n if (status.status === 'connecting') {\r\n // Create a connection status message\r\n const connectionMessage: Message = {\r\n id: `connection-${Date.now()}`,\r\n role: 'connection' as any, // Special role for connection status\r\n content: '',\r\n timestamp: new Date(),\r\n connectionStatus: status\r\n };\r\n\r\n // Move current message to history if exists (skip thought-only messages)\r\n const newHistory = prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage]\r\n : prev.messageHistory;\r\n\r\n return {\r\n ...prev,\r\n messageHistory: newHistory,\r\n connectionStatus: status,\r\n currentMessage: connectionMessage\r\n };\r\n }\r\n\r\n // If connected, error, or disconnected, update the current message and move to history\r\n if (status.status === 'connected' || status.status === 'error' || status.status === 'disconnected') {\r\n // Create the final connection status message\r\n const finalConnectionMessage: Message = {\r\n id: `connection-${Date.now()}`,\r\n role: 'connection' as any,\r\n content: '',\r\n timestamp: new Date(),\r\n connectionStatus: status\r\n };\r\n\r\n // If current message is a connection message, replace it and move to history\r\n if (prev.currentMessage?.connectionStatus) {\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, finalConnectionMessage],\r\n connectionStatus: undefined,\r\n currentMessage: null\r\n };\r\n }\r\n\r\n // Otherwise just add to history (skip thought-only messages)\r\n const newHistory = prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage, finalConnectionMessage]\r\n : [...prev.messageHistory, finalConnectionMessage];\r\n\r\n return {\r\n ...prev,\r\n messageHistory: newHistory,\r\n connectionStatus: undefined,\r\n currentMessage: null\r\n };\r\n }\r\n\r\n return prev;\r\n });\r\n });\r\n }, [onConnectionStatusUpdate]);\r\n\r\n // Set up callback for tool approval requests\r\n React.useEffect(() => {\r\n onToolApprovalRequest(async (request: { message: string; risky: boolean; preview?: { type: 'code' | 'diff'; content: string; language?: string; fullDiff?: string }; operationType?: 'write_file' | 'write_to_file' | 'edit_file' | 'execute_command' | 'multi_edit_file'; operationDetails?: Record<string, any> }) => {\r\n // Determine if operation targets a path outside CWD\r\n let operationOutsideCwd = false;\r\n const currentCwd = cwdRef.current;\r\n\r\n if (currentCwd) {\r\n if (request.operationType === 'execute_command') {\r\n // For commands, check the Cwd parameter\r\n const commandCwd = request.operationDetails?.Cwd;\r\n if (commandCwd) {\r\n operationOutsideCwd = isOutsideCwd(commandCwd, currentCwd);\r\n }\r\n } else if (request.operationType === 'write_file' ||\r\n request.operationType === 'write_to_file' ||\r\n request.operationType === 'edit_file' ||\r\n request.operationType === 'multi_edit_file') {\r\n // For file operations, check the file_path\r\n const filePath = request.operationDetails?.file_path;\r\n if (filePath) {\r\n operationOutsideCwd = isOutsideCwd(filePath, currentCwd);\r\n }\r\n }\r\n }\r\n\r\n // Auto-approve if auto-accept mode is on AND operation is NOT outside CWD\r\n // Operations outside CWD always require explicit user approval for safety\r\n if (autoAcceptRef.current && !operationOutsideCwd) {\r\n return true;\r\n }\r\n\r\n // Check if this is a file operation with preview (write_file, write_to_file, edit_file, or multi_edit_file)\r\n const isFileOperation = (\r\n request.operationType === 'write_file' ||\r\n request.operationType === 'write_to_file' ||\r\n request.operationType === 'edit_file' ||\r\n request.operationType === 'multi_edit_file'\r\n ) && request.preview;\r\n\r\n if (isFileOperation) {\r\n // File operations: Clear screen and switch to approval screen (focused view)\r\n clearScreen();\r\n\r\n return new Promise<boolean>((resolve) => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'approval',\r\n approvalRequest: {\r\n message: request.message,\r\n risky: request.risky,\r\n preview: request.preview,\r\n operationType: request.operationType,\r\n operationDetails: request.operationDetails,\r\n isOutsideCwd: operationOutsideCwd,\r\n resolve: (approved: boolean) => {\r\n // First unmount the approval section to stop rendering\r\n setState(prev => ({\r\n ...prev,\r\n approvalRequest: undefined,\r\n }));\r\n\r\n // Use a small timeout to let the unmount visual update flush\r\n // Then clear screen and return to chat\r\n setTimeout(() => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat' as ScreenState,\r\n }));\r\n resolve(approved);\r\n }, 10);\r\n }\r\n },\r\n isLoading: false\r\n }));\r\n });\r\n } else {\r\n // Command operations: Stay in chat screen (inline approval)\r\n return new Promise<boolean>((resolve) => {\r\n setState(prev => ({\r\n ...prev,\r\n approvalRequest: {\r\n message: request.message,\r\n risky: request.risky,\r\n preview: request.preview,\r\n operationType: request.operationType,\r\n operationDetails: request.operationDetails,\r\n isOutsideCwd: operationOutsideCwd,\r\n resolve: (approved: boolean) => {\r\n // Clear approval request\r\n setState(prev => ({\r\n ...prev,\r\n approvalRequest: undefined,\r\n }));\r\n\r\n resolve(approved);\r\n }\r\n },\r\n isLoading: false\r\n }));\r\n });\r\n }\r\n });\r\n }, [clearScreen]);\r\n\r\n // Set up callback for tool streaming output\r\n React.useEffect(() => {\r\n onToolStreamingOutput((update) => {\r\n // Handle pending shell buffer\r\n if (update.toolName === 'execute_command' && pendingShellRef.current) {\r\n pendingShellRef.current.output += update.chunk;\r\n return;\r\n }\r\n\r\n // Update last output time for stall detection\r\n lastOutputTimeRef.current = Date.now();\r\n\r\n setState(prev => {\r\n // While modal screens are open, avoid per-chunk history/currentMessage mutations\r\n // unless an interactive shell is actively visible. This prevents hidden streaming\r\n // updates from creating heavy render churn and memory pressure.\r\n if (prev.screen !== 'chat' && !prev.shellState) {\r\n return prev;\r\n }\r\n\r\n // Update shell state if it's an execute_command\r\n if (update.toolName === 'execute_command' && prev.shellState) {\r\n const newOutput = prev.shellState.output + update.chunk;\r\n\r\n // If agent control is enabled, schedule input detection\r\n if (prev.shellState.isAgentControlled && prev.shellState.isRunning && !inputDetectionPendingRef.current) {\r\n // Clear previous debounce timer\r\n if (detectionDebounceRef.current) {\r\n clearTimeout(detectionDebounceRef.current);\r\n }\r\n\r\n // Debounce: wait 500ms after last output before checking for input requirement\r\n // This ensures we don't trigger prematurely during fast output\r\n detectionDebounceRef.current = setTimeout(() => {\r\n const timeSinceLastOutput = Date.now() - lastOutputTimeRef.current;\r\n const detection = detectInputRequirement(newOutput, timeSinceLastOutput, 1000);\r\n\r\n if (detection.requiresInput && detection.confidence !== 'low') {\r\n inputDetectionPendingRef.current = true;\r\n\r\n // Add monitoring message\r\n const promptContext = extractPromptContext(newOutput);\r\n const inputType = getInputTypeDescription(detection);\r\n\r\n setState(innerPrev => {\r\n if (!innerPrev.shellState) return innerPrev;\r\n\r\n const newMessage = {\r\n id: `msg-${Date.now()}`,\r\n type: 'thinking' as const,\r\n content: `Detected input prompt: \"${promptContext}\" (${inputType})`,\r\n timestamp: new Date()\r\n };\r\n\r\n return {\r\n ...innerPrev,\r\n shellState: {\r\n ...innerPrev.shellState,\r\n monitoringMessages: [...(innerPrev.shellState.monitoringMessages || []), newMessage]\r\n }\r\n };\r\n });\r\n\r\n // Trigger AI re-prompting with shell context via isolated ShellInputAgent\r\n const shellId = prev.shellState?.shellId;\r\n if (shellId && ShellInputAgent.isSessionActive(shellId)) {\r\n ShellInputAgent.handleInputPrompt(\r\n shellId,\r\n newOutput,\r\n promptContext,\r\n inputType,\r\n detection.confidence\r\n );\r\n } else {\r\n quickLog(`[${new Date().toISOString()}] [Debounce] ShellInputAgent session not active! shellId=${shellId}\\n`);\r\n }\r\n\r\n // Reset pending flag after a delay to allow for next detection\r\n setTimeout(() => {\r\n inputDetectionPendingRef.current = false;\r\n }, 3000);\r\n }\r\n }, 500);\r\n }\r\n\r\n return {\r\n ...prev,\r\n shellState: {\r\n ...prev.shellState,\r\n output: newOutput\r\n }\r\n };\r\n }\r\n\r\n // Update tool in currentMessage if it matches\r\n let updatedCurrentMessage = prev.currentMessage;\r\n if (prev.currentMessage?.role === 'tool' &&\r\n prev.currentMessage.toolExecution?.toolName === update.toolName &&\r\n prev.currentMessage.toolExecution?.status === 'executing') {\r\n const existingOutput = prev.currentMessage.toolExecution.streamingOutput || '';\r\n updatedCurrentMessage = {\r\n ...prev.currentMessage,\r\n toolExecution: {\r\n ...prev.currentMessage.toolExecution,\r\n streamingOutput: existingOutput + update.chunk\r\n }\r\n };\r\n }\r\n\r\n // Also update any matching executing tool in messageHistory\r\n let messageHistoryChanged = false;\r\n const updatedHistory = prev.messageHistory.map(msg => {\r\n if (msg.role === 'tool' &&\r\n msg.toolExecution?.toolName === update.toolName &&\r\n msg.toolExecution?.status === 'executing') {\r\n messageHistoryChanged = true;\r\n const existingOutput = msg.toolExecution.streamingOutput || '';\r\n return {\r\n ...msg,\r\n toolExecution: {\r\n ...msg.toolExecution,\r\n streamingOutput: existingOutput + update.chunk\r\n }\r\n };\r\n }\r\n return msg;\r\n });\r\n\r\n if (updatedCurrentMessage !== prev.currentMessage || messageHistoryChanged) {\r\n return {\r\n ...prev,\r\n currentMessage: updatedCurrentMessage,\r\n messageHistory: updatedHistory\r\n };\r\n }\r\n\r\n return prev;\r\n });\r\n });\r\n }, [onMessage]);\r\n\r\n // Set up callback to receive plan mode changes\r\n React.useEffect(() => {\r\n onPlanModeChange((planMode: boolean) => {\r\n setState(prev => ({\r\n ...prev,\r\n planMode\r\n }));\r\n });\r\n }, [onPlanModeChange]);\r\n\r\n // Set up callback to receive command mode changes\r\n React.useEffect(() => {\r\n onCommandModeChange((commandMode: boolean) => {\r\n setState(prev => ({\r\n ...prev,\r\n commandMode\r\n }));\r\n });\r\n }, [onCommandModeChange]);\r\n\r\n // Set up callback to receive CWD changes\r\n React.useEffect(() => {\r\n onCwdChange((cwd: string) => {\r\n setState(prev => ({\r\n ...prev,\r\n currentWorkingDirectory: cwd\r\n }));\r\n });\r\n }, [onCwdChange]);\r\n\r\n // Function to update git diff stats\r\n // Supports both local and remote (SSH/WSL/Docker, including nested) contexts.\r\n const gitStatsRequestIdRef = React.useRef(0);\r\n const updateGitDiffStats = useCallback(async (cwd?: string, context?: SubshellContext) => {\r\n const targetCwd = cwd || state.currentWorkingDirectory || process.cwd();\r\n const activeContext = context || state.subshellContext;\r\n const requestId = ++gitStatsRequestIdRef.current;\r\n\r\n try {\r\n let stats;\r\n\r\n if (\r\n activeContext &&\r\n activeContext.type !== 'local' &&\r\n activeContext.handler &&\r\n typeof activeContext.handler.executeCommand === 'function'\r\n ) {\r\n stats = await getRemoteGitDiffStats(activeContext.handler, targetCwd);\r\n } else {\r\n stats = getGitDiffStats(targetCwd);\r\n }\r\n\r\n // Ignore stale async responses so quick context/CWD switches don't flicker wrong stats.\r\n if (requestId !== gitStatsRequestIdRef.current) {\r\n return;\r\n }\r\n\r\n if (stats.isGitRepo) {\r\n setState(prev => ({\r\n ...prev,\r\n gitDiffStats: {\r\n additions: stats.additions,\r\n deletions: stats.deletions,\r\n }\r\n }));\r\n } else {\r\n setState(prev => ({\r\n ...prev,\r\n gitDiffStats: null\r\n }));\r\n }\r\n } catch (error) {\r\n if (requestId !== gitStatsRequestIdRef.current) {\r\n return;\r\n }\r\n\r\n // Not a git repo or git not available\r\n setState(prev => ({\r\n ...prev,\r\n gitDiffStats: null\r\n }));\r\n }\r\n }, [state.currentWorkingDirectory, state.subshellContext]);\r\n\r\n // Update git diff stats when CWD changes\r\n React.useEffect(() => {\r\n void updateGitDiffStats(state.currentWorkingDirectory, state.subshellContext);\r\n }, [state.currentWorkingDirectory, state.subshellContext?.sessionId, state.subshellContext?.type]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Update git diff stats when AI finishes working (after each conversation turn)\r\n const prevIsAiWorkingRef = React.useRef(state.isAiWorking);\r\n React.useEffect(() => {\r\n // Only update when isAiWorking changes from true to false\r\n if (prevIsAiWorkingRef.current === true && state.isAiWorking === false) {\r\n void updateGitDiffStats(state.currentWorkingDirectory, state.subshellContext);\r\n }\r\n prevIsAiWorkingRef.current = state.isAiWorking;\r\n }, [state.isAiWorking, state.currentWorkingDirectory, state.subshellContext?.sessionId, state.subshellContext?.type]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Set up callback to receive model changes\r\n React.useEffect(() => {\r\n onModelChange((modelName: string, contextWindow: number) => {\r\n // Update both currentModel AND maxTokens when model changes\r\n // contextWindow is passed directly from cli-adapter, no lookup needed\r\n setState(prev => ({\r\n ...prev,\r\n currentModel: modelName,\r\n maxTokens: contextWindow\r\n }));\r\n });\r\n }, [onModelChange]);\r\n\r\n // Set up callback to receive subshell context changes\r\n React.useEffect(() => {\r\n onSubshellContextChange((context, stack) => {\r\n setState(prev => ({\r\n ...prev,\r\n subshellContext: context,\r\n subshellContextStack: stack\r\n }));\r\n });\r\n }, [onSubshellContextChange]);\r\n\r\n // Set up callback to receive actual AI context token count from cli-adapter\r\n React.useEffect(() => {\r\n onTokenCountUpdate((tokens: number) => {\r\n setState(prev => ({\r\n ...prev,\r\n currentTokens: tokens\r\n }));\r\n });\r\n }, [onTokenCountUpdate]);\r\n\r\n // Set up callback to receive context limit state from cli-adapter\r\n React.useEffect(() => {\r\n onContextLimitReached((reached: boolean) => {\r\n setState(prev => ({\r\n ...prev,\r\n contextLimitReached: reached\r\n }));\r\n });\r\n }, [onContextLimitReached]);\r\n\r\n // Set up callback to receive session quota updates from cli-adapter\r\n React.useEffect(() => {\r\n onSessionQuotaUpdate((remaining: number, canSend: boolean, timeRemaining: string) => {\r\n setState(prev => ({\r\n ...prev,\r\n sessionQuotaExhausted: !canSend,\r\n sessionQuotaTimeRemaining: timeRemaining\r\n }));\r\n });\r\n }, [onSessionQuotaUpdate]);\r\n\r\n // Set up callback for when AI answers a shell prompt (updates thinking message to show tick)\r\n React.useEffect(() => {\r\n onPromptAnswered((shellId: string) => {\r\n setState(prev => {\r\n if (!prev.shellState || prev.shellState.shellId !== shellId) {\r\n return prev;\r\n }\r\n\r\n // Find the last 'thinking' message that isn't already answered and mark it\r\n const messages = prev.shellState.monitoringMessages || [];\r\n let updated = false;\r\n const updatedMessages = [...messages].reverse().map((msg, idx) => {\r\n if (!updated && msg.type === 'thinking' && !msg.isAnswered) {\r\n updated = true;\r\n return { ...msg, isAnswered: true };\r\n }\r\n return msg;\r\n }).reverse();\r\n\r\n if (!updated) {\r\n return prev;\r\n }\r\n\r\n return {\r\n ...prev,\r\n shellState: {\r\n ...prev.shellState,\r\n monitoringMessages: updatedMessages\r\n }\r\n };\r\n });\r\n });\r\n }, [onPromptAnswered]);\r\n\r\n // Set up callback for plan approval requests\r\n React.useEffect(() => {\r\n onPlanApprovalRequest(async (plan: Plan) => {\r\n // Switch to plan approval screen\r\n return new Promise<boolean>((resolve) => {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'plan-approval',\r\n planApprovalRequest: {\r\n plan,\r\n resolve\r\n },\r\n isLoading: false\r\n }));\r\n });\r\n });\r\n }, [clearScreen]);\r\n\r\n // Set up callback for plan created notification (optional - for future use)\r\n React.useEffect(() => {\r\n onPlanCreated((plan: Plan) => {\r\n // The plan will be displayed via the plan-approval screen\r\n // This callback can be used for additional notifications if needed\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App] Plan created: ${plan.title} with ${plan.steps.length} tasks\\n`);\r\n } catch (e) { }\r\n });\r\n }, [onPlanCreated]);\r\n\r\n // Set up callback for task completion\r\n React.useEffect(() => {\r\n onTaskCompleted((task: PlanStep, taskNumber: number, totalTasks: number, completionNote?: string, taskDescription?: string) => {\r\n // Add task completion message to history\r\n setState(prev => {\r\n const taskCompletedMessage: Message = {\r\n id: `task-complete-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'system',\r\n content: '', // We'll render this specially\r\n timestamp: new Date(),\r\n taskCompletion: {\r\n taskNumber,\r\n totalTasks,\r\n // Use the passed taskDescription if available (for subtasks), otherwise fall back to task.description\r\n taskDescription: taskDescription || task.description,\r\n completionNote\r\n }\r\n };\r\n\r\n // Move current message to history if exists (skip thought-only)\r\n const newHistory = prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage, taskCompletedMessage]\r\n : [...prev.messageHistory, taskCompletedMessage];\r\n\r\n return {\r\n ...prev,\r\n messageHistory: newHistory,\r\n currentMessage: null\r\n };\r\n });\r\n });\r\n }, [onTaskCompleted]);\r\n\r\n // Set up callback for file change summary after task_complete\r\n React.useEffect(() => {\r\n onFileChangeSummary((data) => {\r\n setState(prev => ({ ...prev, lastFileChangeSummary: data }));\r\n });\r\n }, [onFileChangeSummary]);\r\n\r\n // Set up callback for password requests\r\n React.useEffect(() => {\r\n onPasswordRequest(async (message: string) => {\r\n // Switch to password prompt screen\r\n return new Promise<string>((resolve, reject) => {\r\n setState(prev => ({\r\n ...prev,\r\n // Keep chat screen when possible so connection/tunneling status remains visible.\r\n // Use dedicated password screen only if we're currently in another modal screen.\r\n screen: prev.screen === 'chat' ? 'chat' : 'password-prompt',\r\n passwordRequest: {\r\n message,\r\n resolve: (password: string) => {\r\n // Return to chat screen if we were in dedicated password screen mode\r\n setState(prev2 => ({\r\n ...prev2,\r\n screen: prev2.screen === 'password-prompt' ? 'chat' : prev2.screen,\r\n passwordRequest: undefined\r\n }));\r\n resolve(password);\r\n },\r\n reject: () => {\r\n // Return to chat screen if we were in dedicated password screen mode\r\n setState(prev2 => ({\r\n ...prev2,\r\n screen: prev2.screen === 'password-prompt' ? 'chat' : prev2.screen,\r\n passwordRequest: undefined\r\n }));\r\n reject(new Error('Password input cancelled'));\r\n }\r\n },\r\n isLoading: false\r\n }));\r\n });\r\n });\r\n }, [clearScreen]);\r\n\r\n // Set up callback for interactive editor mode (vim, nano, etc.)\r\n // Ref to hold the current editor process for cleanup\r\n const editorProcessRef = React.useRef<{ kill: () => void } | null>(null);\r\n\r\n React.useEffect(() => {\r\n onInteractiveEditorMode((active: boolean, command?: string, cwd?: string, remoteContext?: SubshellContext, parentContext?: SubshellContext) => {\r\n if (active && command && cwd) {\r\n // Enter interactive editor mode\r\n setState(prev => ({ ...prev, isInteractiveEditorMode: true }));\r\n\r\n // Common exit handler for all editor types\r\n const handleEditorExit = (exitCode: number) => {\r\n editorProcessRef.current = null;\r\n // Clear screen before restoring Ink UI\r\n clearScreen();\r\n // Editor exited, restore Ink UI\r\n setState(prev => ({ ...prev, isInteractiveEditorMode: false }));\r\n };\r\n\r\n // Wait a frame for React to process the state change\r\n setTimeout(() => {\r\n // Choose appropriate editor runner based on context\r\n if (!remoteContext || remoteContext.type === 'local') {\r\n // Local context: use standard interactive editor\r\n editorProcessRef.current = runInteractiveEditor(command, cwd, handleEditorExit);\r\n } else if (remoteContext.type === 'wsl') {\r\n // WSL context: use WSL editor with distribution name\r\n const distribution = remoteContext.metadata?.distroName || 'Ubuntu';\r\n editorProcessRef.current = runWSLEditor(distribution, command, cwd, handleEditorExit);\r\n } else if (remoteContext.type === 'docker') {\r\n // Docker context: check if nested inside SSH or local\r\n const containerId = remoteContext.metadata?.containerId || '';\r\n\r\n if (parentContext && parentContext.type === 'ssh') {\r\n // Nested Docker inside SSH: use SSH-tunneled editor\r\n const sshClient = parentContext.handler?.client;\r\n if (sshClient) {\r\n editorProcessRef.current = runNestedDockerSSHEditor(sshClient, containerId, command, cwd, handleEditorExit);\r\n } else {\r\n logError('SSH client not available for nested Docker editor', new Error('No SSH client'));\r\n setState(prev => ({ ...prev, isInteractiveEditorMode: false }));\r\n }\r\n } else {\r\n // Local Docker: use standard interactive editor\r\n editorProcessRef.current = runDockerEditor(containerId, command, cwd, handleEditorExit);\r\n }\r\n } else if (remoteContext.type === 'ssh') {\r\n // SSH context: use SSH editor with client\r\n const sshClient = remoteContext.handler?.client;\r\n if (sshClient) {\r\n editorProcessRef.current = runSSHEditor(sshClient, command, cwd, handleEditorExit);\r\n } else {\r\n // Fallback if no client available\r\n logError('SSH client not available for editor mode', new Error('No SSH client'));\r\n setState(prev => ({ ...prev, isInteractiveEditorMode: false }));\r\n }\r\n }\r\n }, 50);\r\n } else {\r\n // Exit interactive editor mode (cleanup)\r\n if (editorProcessRef.current) {\r\n editorProcessRef.current.kill();\r\n editorProcessRef.current = null;\r\n }\r\n clearScreen();\r\n setState(prev => ({ ...prev, isInteractiveEditorMode: false }));\r\n }\r\n });\r\n }, [onInteractiveEditorMode, clearScreen]);\r\n\r\n // Track Ctrl+C presses for double-press exit\r\n const ctrlCPressedRef = React.useRef(false);\r\n const ctrlCTimeoutRef = React.useRef<NodeJS.Timeout | null>(null);\r\n const exitWarningTimeoutRef = React.useRef<NodeJS.Timeout | null>(null);\r\n\r\n // Cleanup timeouts on unmount\r\n React.useEffect(() => {\r\n return () => {\r\n if (ctrlCTimeoutRef.current) {\r\n clearTimeout(ctrlCTimeoutRef.current);\r\n }\r\n if (exitWarningTimeoutRef.current) {\r\n clearTimeout(exitWarningTimeoutRef.current);\r\n }\r\n if (restoreMessagesTimeoutRef.current) {\r\n clearTimeout(restoreMessagesTimeoutRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n // Global keyboard shortcuts\r\n useInput((input, key) => {\r\n // If shell is focused, don't handle any global shortcuts (let InteractiveShell handle them)\r\n if (state.shellState?.isFocused) {\r\n return;\r\n }\r\n\r\n // Ctrl+F handling - toggle shell focus\r\n if (key.ctrl && input === 'f') {\r\n if (state.shellState && state.shellState.isRunning) {\r\n // Clear screen when entering/exiting focus mode to remove persisted Static content\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n shellState: prev.shellState ? {\r\n ...prev.shellState,\r\n isFocused: !prev.shellState.isFocused\r\n } : undefined\r\n }));\r\n return;\r\n }\r\n }\r\n\r\n // ESC key handling - cancel AI execution\r\n if (key.escape) {\r\n // If in a picker screen, return to chat\r\n // If in chat-rename-input, go back to rename picker\r\n if (state.screen === 'chat-rename-input') {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat-rename-picker',\r\n renameChatId: undefined,\r\n renameChatTitle: undefined\r\n }));\r\n return;\r\n }\r\n\r\n // If in a picker screen, return to chat\r\n if (isChatManagementScreen(state.screen)) {\r\n clearScreen();\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n chatPickerChats: undefined\r\n }));\r\n return;\r\n }\r\n\r\n // If in an MCP screen, return to chat\r\n if (state.screen === 'mcp-add' || state.screen === 'mcp-remove' || state.screen === 'mcp-enable' || state.screen === 'mcp-disable' || state.screen === 'mcp-list') {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n mcpServers: undefined\r\n }));\r\n return;\r\n }\r\n\r\n // If AI is working, cancel the operation\r\n if (state.isLoading || state.isAiWorking) {\r\n // Cancel the current AI request\r\n onCancelRequest();\r\n\r\n setState(prev => ({\r\n ...prev,\r\n isLoading: false,\r\n isAiWorking: false,\r\n currentMessage: null\r\n }));\r\n\r\n // Add cancellation message to history\r\n const cancelMessage: Message = {\r\n id: `system-cancel-${Date.now()}`,\r\n role: 'system',\r\n content: '⚠️ Operation cancelled by user (ESC pressed).',\r\n timestamp: new Date()\r\n };\r\n\r\n setState(prev => ({\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, cancelMessage]\r\n }));\r\n\r\n return;\r\n }\r\n }\r\n\r\n // Ctrl+C handling - double press to exit\r\n if (key.ctrl && input === 'c') {\r\n // If shell is running, kill it\r\n if (state.shellState && state.shellState.isRunning) {\r\n onKillProcess();\r\n return;\r\n }\r\n\r\n // If AI is loading/executing, first Ctrl+C cancels the operation\r\n if (state.isLoading || state.isAiWorking) {\r\n // Cancel the current AI request\r\n onCancelRequest();\r\n\r\n setState(prev => ({\r\n ...prev,\r\n isLoading: false,\r\n isAiWorking: false,\r\n currentMessage: null,\r\n showExitWarning: true\r\n }));\r\n\r\n // Add cancellation message to history\r\n const cancelMessage: Message = {\r\n id: `system-cancel-${Date.now()}`,\r\n role: 'system',\r\n content: '⚠️ Operation cancelled by user.',\r\n timestamp: new Date()\r\n };\r\n\r\n setState(prev => ({\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, cancelMessage]\r\n }));\r\n\r\n // Set flag for second press\r\n ctrlCPressedRef.current = true;\r\n\r\n // Hide warning after 5 seconds\r\n if (exitWarningTimeoutRef.current) {\r\n clearTimeout(exitWarningTimeoutRef.current);\r\n }\r\n exitWarningTimeoutRef.current = setTimeout(() => {\r\n setState(prev => ({ ...prev, showExitWarning: false }));\r\n ctrlCPressedRef.current = false;\r\n }, 5000);\r\n\r\n return;\r\n }\r\n\r\n // If already pressed once recently, exit\r\n if (ctrlCPressedRef.current) {\r\n exit();\r\n return;\r\n }\r\n\r\n // First press when not loading - show warning\r\n ctrlCPressedRef.current = true;\r\n\r\n setState(prev => ({\r\n ...prev,\r\n showExitWarning: true\r\n }));\r\n\r\n // Hide warning after 5 seconds\r\n if (exitWarningTimeoutRef.current) {\r\n clearTimeout(exitWarningTimeoutRef.current);\r\n }\r\n exitWarningTimeoutRef.current = setTimeout(() => {\r\n setState(prev => ({ ...prev, showExitWarning: false }));\r\n ctrlCPressedRef.current = false;\r\n }, 5000);\r\n\r\n return;\r\n }\r\n\r\n\r\n }, { isActive: !state.isInteractiveEditorMode });\r\n\r\n const handleSubmit = useCallback(async (value: string, clipboardFiles?: ClipboardFile[]) => {\r\n // Trim the value to remove any leading/trailing whitespace or newlines\r\n const trimmedValue = value.trim();\r\n const wasAiWorkingBeforeSubmit = isAiWorkingRef.current;\r\n\r\n if (!trimmedValue) return; // Don't submit empty values\r\n\r\n // Check if this is a slash command\r\n const isSlashCommand = trimmedValue.startsWith('/');\r\n\r\n // Check if this is the clear command (slash or no slash)\r\n const lowerValue = trimmedValue.toLowerCase();\r\n if (lowerValue === '/clear' || lowerValue === 'clear' || lowerValue === '/cls' || lowerValue === 'cls' || lowerValue === '/reset') {\r\n // Soft Clear: Push history up by creating a blank space\r\n // We do NOT use clearScreen() here because that wipes the scrollback buffer (\\x1b[3J)\r\n // Instead, we add a \"spacer\" message that pushes previous content up out of the viewport\r\n\r\n const height = process.stdout.rows || 24;\r\n // Use \\u200B (Zero Width Space) to prevent trim() from emptying the string\r\n // in MessageDisplay.tsx, which would cause it to not render.\r\n const spacer = Array(height).fill('\\u200B\\n').join('');\r\n\r\n const clearMessage: Message = {\r\n id: `clear-${Date.now()}`,\r\n role: 'system',\r\n content: spacer,\r\n timestamp: new Date(),\r\n isSpacer: true\r\n };\r\n\r\n setState(prev => ({\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, clearMessage],\r\n currentMessage: null,\r\n // We don't reset other state (tokens, loading) to preserve context\r\n }));\r\n return;\r\n }\r\n\r\n // Check if this is the /clean-ui command (refresh UI without clearing history)\r\n if (trimmedValue === '/clean-ui' || trimmedValue === '/refresh-ui' || trimmedValue === '/redraw') {\r\n // Clear the terminal screen first\r\n clearScreen();\r\n\r\n // Use functional setState to capture current history, clear it, then restore\r\n // This forces a complete re-render of all messages with proper numbering\r\n setState(prev => {\r\n const savedHistory = [...prev.messageHistory];\r\n const savedCurrent = prev.currentMessage;\r\n\r\n // Schedule restoration after the clear takes effect\r\n setTimeout(() => {\r\n clearScreen(); // Clear again to ensure clean slate\r\n setState(innerPrev => ({\r\n ...innerPrev,\r\n messageHistory: savedHistory,\r\n currentMessage: savedCurrent,\r\n // Increment key to force Static remount so banner + history re-render\r\n messageListKey: (innerPrev.messageListKey ?? 0) + 1,\r\n }));\r\n }, 100);\r\n\r\n // Return cleared state to force unmount of all message components\r\n return {\r\n ...prev,\r\n messageHistory: [],\r\n currentMessage: null\r\n };\r\n });\r\n\r\n return;\r\n }\r\n\r\n const hasFilesToUpload = !!(clipboardFiles && clipboardFiles.length > 0);\r\n const shouldRenderOptimisticAttachmentBubble = hasFilesToUpload && !wasAiWorkingBeforeSubmit;\r\n let userMessageId: string | null = null;\r\n let didRegisterQueuedDispatchSkip = false;\r\n let pendingQueuePreviewId: string | null = null;\r\n let pendingQueuePreviewText: string | null = null;\r\n let didCreatePendingQueuePreview = false;\r\n\r\n // In command mode, command bubbles are rendered when the CLI dispatches\r\n // execution from the session command queue. This keeps UI order aligned\r\n // with actual command start order.\r\n if (!state.commandMode && !isSlashCommand) {\r\n // For regular text-only messages, we keep existing queued-dispatch behavior.\r\n // For attachment uploads, render the user bubble immediately so upload latency\r\n // does not delay visible feedback in chat history.\r\n if (hasFilesToUpload) {\r\n let initialDisplayContent = trimmedValue;\r\n for (const file of clipboardFiles || []) {\r\n const markerType = file.mimeType?.startsWith('image/') ? 'IMAGE' : 'FILE';\r\n initialDisplayContent = `${initialDisplayContent} [${markerType}: ${file.displayName} (gs://uploading)]`;\r\n }\r\n\r\n if (shouldRenderOptimisticAttachmentBubble) {\r\n userMessageId = `user-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;\r\n queuedDispatchSkipCountRef.current += 1;\r\n didRegisterQueuedDispatchSkip = true;\r\n optimisticAttachmentEntriesRef.current = [\r\n ...optimisticAttachmentEntriesRef.current,\r\n { messageId: userMessageId, finalMessage: null }\r\n ];\r\n\r\n const optimisticMessage: Message = {\r\n id: userMessageId,\r\n role: 'user',\r\n content: initialDisplayContent,\r\n timestamp: new Date()\r\n };\r\n\r\n setState(prev => {\r\n const newHistory = prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage, optimisticMessage]\r\n : [...prev.messageHistory, optimisticMessage];\r\n\r\n return {\r\n ...prev,\r\n messageHistory: newHistory,\r\n currentMessage: null,\r\n isLoading: true,\r\n loadingMessage: 'Uploading file(s)...',\r\n isAiWorking: true\r\n };\r\n });\r\n } else {\r\n // If a request is already active, this message will be queued as an interrupt.\r\n // Show it immediately in the queue preview while upload is in progress.\r\n pendingQueuePreviewId = `queued-preview-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;\r\n pendingQueuePreviewText = initialDisplayContent;\r\n didCreatePendingQueuePreview = true;\r\n pendingAttachmentQueuePreviewsRef.current = [\r\n ...pendingAttachmentQueuePreviewsRef.current,\r\n { id: pendingQueuePreviewId, preview: pendingQueuePreviewText, finalMessage: null }\r\n ];\r\n setState(prev => ({\r\n ...prev,\r\n interruptQueue: [...prev.interruptQueue, pendingQueuePreviewText!],\r\n isLoading: true,\r\n loadingMessage: 'Uploading file(s)...',\r\n isAiWorking: true\r\n }));\r\n }\r\n } else {\r\n // Text-only messages are added by onQueuedMessageDispatched for proper interrupt ordering.\r\n setState(prev => ({\r\n ...prev,\r\n isLoading: true,\r\n loadingMessage: 'Processing your request...',\r\n isAiWorking: true\r\n }));\r\n }\r\n } else if (!state.commandMode) {\r\n // For slash commands, just show loading state\r\n setState(prev => ({\r\n ...prev,\r\n isLoading: true,\r\n loadingMessage: 'Processing command...',\r\n isAiWorking: true // AI is starting to work\r\n }));\r\n }\r\n\r\n // Add to command history (avoid duplicates of the last command)\r\n setState(prev => ({\r\n ...prev,\r\n commandHistory: prev.commandHistory[prev.commandHistory.length - 1] === trimmedValue\r\n ? prev.commandHistory\r\n : [...prev.commandHistory, trimmedValue]\r\n }));\r\n\r\n try {\r\n // Upload clipboard files if present\r\n let messageWithFiles = trimmedValue;\r\n\r\n // Debug logging for clipboard files\r\n logDebug(`[CLIPBOARD] clipboardFiles count: ${clipboardFiles?.length || 0}`);\r\n logDebug(`[CLIPBOARD] currentChatId: ${state.currentChatId || 'null'}`);\r\n\r\n if (clipboardFiles && clipboardFiles.length > 0) {\r\n // Check for existing conversation ID - conversationManager is the single source of truth\r\n // This ensures we use the same conversation that cli-adapter uses\r\n let conversationId = conversationManager.getCurrentConversationId() || state.currentChatId;\r\n\r\n logDebug(`[CLIPBOARD] conversationManager ID: ${conversationManager.getCurrentConversationId() || 'null'}`);\r\n logDebug(`[CLIPBOARD] state.currentChatId: ${state.currentChatId || 'null'}`);\r\n\r\n if (!conversationId) {\r\n // No conversation exists anywhere - create one via conversationManager\r\n // This will set the internal state that cli-adapter's ensureConversationStarted checks\r\n logDebug(`[CLIPBOARD] No existing conversation - creating new one for file upload`);\r\n try {\r\n const newConversation = await conversationManager.startNewConversation(\r\n 'New Chat',\r\n state.currentModel || 'gemini-2-flash-preview',\r\n 'google',\r\n undefined // workingDirectory - will use process.cwd()\r\n );\r\n conversationId = newConversation.id;\r\n // Update UI state with the new chat ID\r\n setState(prev => ({ ...prev, currentChatId: conversationId }));\r\n logDebug(`[CLIPBOARD] Created new conversation: ${conversationId}`);\r\n\r\n // Delay to ensure DB transaction is fully committed before file upload\r\n // Note: Backend now handles FK constraint violations gracefully, but extra delay helps ensure consistency\r\n logDebug(`[CLIPBOARD] Waiting for DB commit...`);\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n logDebug(`[CLIPBOARD] Proceeding with upload`);\r\n } catch (createError) {\r\n logError('Failed to create conversation for file upload', createError instanceof Error ? createError : undefined);\r\n // Mark the upload as failed - don't use temp IDs that will fail FK constraint\r\n for (let i = 0; i < clipboardFiles.length; i++) {\r\n messageWithFiles = messageWithFiles.replace(/#image\\b/i, '[FILE UPLOAD FAILED - No conversation]');\r\n }\r\n logDebug(`[CLIPBOARD] Skipping upload due to conversation creation failure`);\r\n }\r\n }\r\n\r\n // Only attempt upload if we have a valid conversation ID\r\n if (conversationId && !conversationId.startsWith('temp_')) {\r\n logDebug(`[CLIPBOARD] Starting upload for ${clipboardFiles.length} files with conversationId: ${conversationId}`);\r\n\r\n // Upload each clipboard file and build the final message content\r\n const uploadedFileMarkers: string[] = [];\r\n for (const file of clipboardFiles) {\r\n try {\r\n logDebug(`[CLIPBOARD] Uploading file: ${file.displayName}, size: ${file.sizeBytes} bytes`);\r\n const uploadResult = await apiClient.uploadFile(\r\n conversationId,\r\n file.displayName,\r\n file.mimeType,\r\n file.base64Data\r\n );\r\n\r\n logDebug(`[CLIPBOARD] Upload success! gcsUri: ${uploadResult.gcsUri || 'none'}`);\r\n\r\n const markerType = file.mimeType?.startsWith('image/') ? 'IMAGE' : 'FILE';\r\n\r\n // Append file reference info to message (for AI to know a file was attached)\r\n // The backend will use gcsUri for Vertex AI multimodal input\r\n if (uploadResult.gcsUri) {\r\n // Build the real file marker with actual GCS URI\r\n messageWithFiles = `${messageWithFiles} [${markerType}: ${uploadResult.fileName} (${uploadResult.gcsUri})]`;\r\n uploadedFileMarkers.push(`[${markerType}: ${uploadResult.fileName} (${uploadResult.gcsUri})]`);\r\n logDebug(`[CLIPBOARD] Appended file marker: [${markerType}: ${uploadResult.fileName} (${uploadResult.gcsUri})]`);\r\n }\r\n } catch (uploadError) {\r\n // Log error but continue - file upload is optional\r\n const markerType = file.mimeType?.startsWith('image/') ? 'IMAGE' : 'FILE';\r\n logError('Failed to upload clipboard file', uploadError instanceof Error ? uploadError : undefined);\r\n // Add a failed marker so user knows upload failed\r\n uploadedFileMarkers.push(`[${markerType}: ${file.displayName} (upload failed)]`);\r\n }\r\n }\r\n\r\n // Update the optimistic user message with actual GCS URIs\r\n if (userMessageId) {\r\n setState(prev => {\r\n const updatedHistory = prev.messageHistory.map(msg => {\r\n if (msg.id === userMessageId) {\r\n let newContent = trimmedValue;\r\n for (const marker of uploadedFileMarkers) {\r\n newContent = `${newContent} ${marker}`;\r\n }\r\n return { ...msg, content: newContent };\r\n }\r\n return msg;\r\n });\r\n return { ...prev, messageHistory: updatedHistory };\r\n });\r\n }\r\n } else {\r\n // No valid conversation ID - update message to show upload failed\r\n if (userMessageId) {\r\n setState(prev => {\r\n const updatedHistory = prev.messageHistory.map(msg => {\r\n if (msg.id === userMessageId) {\r\n const newContent = msg.content.replace(/\\(gs:\\/\\/uploading\\)/g, '(upload failed - no conversation)');\r\n return { ...msg, content: newContent };\r\n }\r\n return msg;\r\n });\r\n return { ...prev, messageHistory: updatedHistory };\r\n });\r\n }\r\n } // End: if (conversationId && !startsWith temp_)\r\n } // End: if (clipboardFiles && clipboardFiles.length > 0)\r\n\r\n if (userMessageId) {\r\n optimisticAttachmentEntriesRef.current = optimisticAttachmentEntriesRef.current.map(entry =>\r\n entry.messageId === userMessageId ? { ...entry, finalMessage: messageWithFiles } : entry\r\n );\r\n }\r\n if (pendingQueuePreviewId) {\r\n pendingAttachmentQueuePreviewsRef.current = pendingAttachmentQueuePreviewsRef.current.map(entry =>\r\n entry.id === pendingQueuePreviewId ? { ...entry, finalMessage: messageWithFiles } : entry\r\n );\r\n }\r\n\r\n await onMessage(messageWithFiles);\r\n } catch (error: any) {\r\n // If onMessage failed before queued-dispatch callback fired, clear stale skip entry.\r\n if (didRegisterQueuedDispatchSkip && queuedDispatchSkipCountRef.current > 0) {\r\n queuedDispatchSkipCountRef.current -= 1;\r\n }\r\n if (userMessageId) {\r\n optimisticAttachmentEntriesRef.current = optimisticAttachmentEntriesRef.current.filter(\r\n entry => entry.messageId !== userMessageId\r\n );\r\n }\r\n if (pendingQueuePreviewId) {\r\n pendingAttachmentQueuePreviewsRef.current = pendingAttachmentQueuePreviewsRef.current.filter(\r\n entry => entry.id !== pendingQueuePreviewId\r\n );\r\n }\r\n\r\n // Add error message\r\n setState(prev => {\r\n const errorMessage: Message = {\r\n id: `system-error-${Date.now()}`,\r\n role: 'system',\r\n content: `❌ Error: ${error.message || 'Unknown error occurred'}`,\r\n timestamp: new Date()\r\n };\r\n\r\n // Move current to history if exists and add error (skip thought-only)\r\n const newHistory = prev.currentMessage && !shouldSkipMessage(prev.currentMessage)\r\n ? [...prev.messageHistory, prev.currentMessage, errorMessage]\r\n : [...prev.messageHistory, errorMessage];\r\n let nextInterruptQueue = prev.interruptQueue;\r\n if (didCreatePendingQueuePreview && pendingQueuePreviewText) {\r\n nextInterruptQueue = [...prev.interruptQueue];\r\n const idx = nextInterruptQueue.indexOf(pendingQueuePreviewText);\r\n if (idx !== -1) nextInterruptQueue.splice(idx, 1);\r\n }\r\n\r\n return {\r\n ...prev,\r\n messageHistory: newHistory,\r\n interruptQueue: nextInterruptQueue,\r\n currentMessage: null,\r\n isLoading: false,\r\n isAiWorking: false // AI finished working\r\n };\r\n });\r\n } finally {\r\n setState(prev => ({\r\n ...prev,\r\n isLoading: false,\r\n // Preserve active work state if this submit happened while another AI turn was already running\r\n // (e.g. queued interrupts return immediately and should not clear the existing thinking line).\r\n isAiWorking: wasAiWorkingBeforeSubmit ? prev.isAiWorking : false\r\n }));\r\n }\r\n }, [onMessage]);\r\n\r\n const handleToggleAutoAccept = useCallback(() => {\r\n setState(prev => ({\r\n ...prev,\r\n autoAcceptMode: !prev.autoAcceptMode\r\n }));\r\n }, []);\r\n\r\n // Handler for preserving input text across screen transitions\r\n const handleInputValueChange = useCallback((value: string) => {\r\n preservedInputTextRef.current = value;\r\n }, []);\r\n\r\n // Memoize session commands to prevent unnecessary re-renders in InputBox\r\n const sessionCommands = useMemo(() => {\r\n return state.messageHistory\r\n .filter(m => m.role === 'user')\r\n .map(m => m.content);\r\n }, [state.messageHistory]);\r\n\r\n // If in interactive editor mode, render minimal UI to keep Ink mounted\r\n // but don't render any visible content - the editor has the screen\r\n if (state.isInteractiveEditorMode) {\r\n return <Box />;\r\n }\r\n\r\n return (\r\n <Box flexDirection=\"column\">\r\n {/* Render based on current screen */}\r\n {state.screen === 'chat' && (\r\n <>\r\n {/* Hide message list when shell is focused to make shell fullscreen */}\r\n {!state.shellState?.isFocused && (\r\n <MessageList\r\n key={`msglist-${state.messageListKey}`}\r\n history={state.messageHistory}\r\n current={state.currentMessage}\r\n showBanner={true}\r\n />\r\n )}\r\n\r\n {/* Show interactive shell if running */}\r\n {/* Only show during streaming (isRunning) if terminal is big enough */}\r\n {/* When terminal is too small, shell output only appears when complete via ToolExecutionMessage */}\r\n {state.shellState && (getTerminalDimensions().shouldEnableStreaming || !state.shellState.isRunning) && (\r\n <InteractiveShell\r\n command={state.shellState.command}\r\n cwd={state.shellState.cwd}\r\n isRunning={state.shellState.isRunning}\r\n output={state.shellState.output}\r\n exitCode={state.shellState.exitCode}\r\n error={state.shellState.error}\r\n isFocused={state.shellState.isFocused}\r\n onResize={state.shellState.onResize}\r\n remoteContext={state.shellState.remoteContext}\r\n onInput={(input) => {\r\n // Debug logging\r\n try {\r\n quickLog(`[${new Date().toISOString()}] [App.tsx onInput] input: ${JSON.stringify(input)}, isBackgroundTask: ${state.shellState?.isBackgroundTask}, backgroundTaskId: ${state.shellState?.backgroundTaskId}\\n`);\r\n } catch (e) { }\r\n\r\n // Check if this is a background task\r\n if (state.shellState?.isBackgroundTask && state.shellState?.backgroundTaskId) {\r\n // Route input to background task\r\n BackgroundTaskManager.sendInput(state.shellState.backgroundTaskId, input);\r\n return;\r\n }\r\n // PTY MODE: Send everything immediately\r\n onShellInput(input);\r\n }}\r\n onFocusChange={(focused) => {\r\n // Clear screen when entering/exiting focus mode\r\n clearScreen();\r\n\r\n // Special handling for background tasks\r\n if (!focused && state.shellState?.isBackgroundTask) {\r\n // Exiting focus mode for a background task:\r\n // Just clear shellState and return to chat, no history message\r\n // The task continues running in background\r\n setState(prev => ({\r\n ...prev,\r\n shellState: undefined // Clear completely, no preview\r\n }));\r\n return;\r\n }\r\n\r\n // Normal shell focus change\r\n setState(prev => ({\r\n ...prev,\r\n shellState: prev.shellState ? {\r\n ...prev.shellState,\r\n isFocused: focused\r\n } : undefined\r\n }));\r\n }}\r\n onSignal={(signal) => {\r\n // Check if this is a background task\r\n if (state.shellState?.isBackgroundTask && state.shellState?.backgroundTaskId) {\r\n // Route signal to background task\r\n const nodeSignal = signal === 'SIGINT' ? 'SIGINT' :\r\n signal === 'SIGTERM' ? 'SIGTERM' :\r\n signal === 'SIGKILL' ? 'SIGKILL' : 'SIGINT';\r\n BackgroundTaskManager.sendSignal(state.shellState.backgroundTaskId, nodeSignal as NodeJS.Signals);\r\n return;\r\n }\r\n onShellSignal(signal);\r\n }}\r\n shellId={state.shellState.shellId}\r\n isAgentControlled={state.shellState.isAgentControlled}\r\n onToggleAgentControl={() => {\r\n // Toggle agent control mode\r\n const wasAgentControlled = state.shellState?.isAgentControlled;\r\n const willBeAgentControlled = !wasAgentControlled;\r\n const currentOutput = state.shellState?.output || '';\r\n const isShellRunning = state.shellState?.isRunning;\r\n\r\n // Log the toggle using the imported quickLog\r\n quickLog(`[${new Date().toISOString()}] [AgentControl] Toggle: ${wasAgentControlled} -> ${willBeAgentControlled}, output length: ${currentOutput.length}, isRunning: ${isShellRunning}\\n`);\r\n\r\n setState(prev => ({\r\n ...prev,\r\n shellState: prev.shellState ? {\r\n ...prev.shellState,\r\n isAgentControlled: willBeAgentControlled,\r\n monitoringMessages: willBeAgentControlled ? [] : prev.shellState.monitoringMessages\r\n } : undefined\r\n }));\r\n\r\n // Start or terminate ShellInputAgent session\r\n const shellId = state.shellState?.shellId;\r\n const shellCommand = state.shellState?.command || '';\r\n const shellCwd = state.shellState?.cwd || process.cwd();\r\n\r\n if (willBeAgentControlled && shellId) {\r\n // Start isolated shell input agent session with main conversation context\r\n const mainConversation = getMainConversation();\r\n ShellInputAgent.startSession(shellId, shellCommand, shellCwd, mainConversation);\r\n quickLog(`[${new Date().toISOString()}] [AgentControl] Started ShellInputAgent session for ${shellId}\\n`);\r\n\r\n // Start AI-based input detection polling\r\n InputDetectionAgent.startPolling(\r\n shellId,\r\n currentOutput, // Pass current output directly\r\n shellCommand,\r\n shellCwd\r\n );\r\n quickLog(`[${new Date().toISOString()}] [AgentControl] Started AI-based input detection polling for ${shellId}\\n`);\r\n } else if (!willBeAgentControlled && shellId) {\r\n // Stop AI-based input detection polling\r\n InputDetectionAgent.stopPolling(shellId);\r\n quickLog(`[${new Date().toISOString()}] [AgentControl] Stopped AI-based input detection polling for ${shellId}\\n`);\r\n\r\n // Terminate shell input agent session\r\n ShellInputAgent.terminateSession(shellId);\r\n quickLog(`[${new Date().toISOString()}] [AgentControl] Terminated ShellInputAgent session for ${shellId}\\n`);\r\n }\r\n }}\r\n onWarpifySession={state.shellState?.isBackgroundTask ? undefined : async () => {\r\n // Warpify: Detect if there's an active remote session and establish ssh2 connection\r\n const shellCommand = state.shellState?.command || '';\r\n const currentOutput = state.shellState?.output || '';\r\n const session = detectWarpifySession(shellCommand, currentOutput);\r\n\r\n quickLog(`[${new Date().toISOString()}] [Warpify] Command: \"${shellCommand}\", Detected: ${JSON.stringify(session)}\\n`);\r\n\r\n if (session.type === 'none') {\r\n // No remote session detected - show message briefly\r\n setState(prev => ({\r\n ...prev,\r\n connectionStatus: {\r\n type: 'ssh',\r\n status: 'error',\r\n error: 'No remote session detected. Enter an SSH/WSL/Docker session first.'\r\n }\r\n }));\r\n setTimeout(() => {\r\n setState(prev => ({\r\n ...prev,\r\n connectionStatus: undefined\r\n }));\r\n }, 3000);\r\n return;\r\n }\r\n\r\n // Remote session detected - warpify it!\r\n const description = getSessionDescription(session);\r\n quickLog(`[${new Date().toISOString()}] [Warpify] Warpifying: ${description}\\n`);\r\n warpifyInProgressRef.current = true;\r\n warpifyTerminatingCommandRef.current = shellCommand;\r\n\r\n try {\r\n // Terminate the PTY session (we'll use ssh2 handler instead)\r\n onShellSignal('SIGTERM');\r\n\r\n // Capture history commands\r\n const historyMessages: Message[] = [];\r\n\r\n // 1. Add the command the user typed (e.g., \"ssh user@host\")\r\n if (shellCommand) {\r\n historyMessages.push({\r\n id: `warpify-cmd-${Date.now()}`,\r\n role: 'user',\r\n content: shellCommand,\r\n timestamp: new Date(),\r\n isCommandMode: false // Treat as a normal chat message for history\r\n });\r\n }\r\n\r\n // 2. Add the terminal output (e.g., login banner, password prompt output)\r\n if (currentOutput && currentOutput.trim().length > 0) {\r\n historyMessages.push({\r\n id: `warpify-out-${Date.now()}`,\r\n role: 'tool', // Use 'tool' role to mimic command execution output\r\n content: '',\r\n timestamp: new Date(),\r\n toolExecution: {\r\n toolName: 'execute_command',\r\n status: 'completed',\r\n result: currentOutput, // This contains the PTY output including ANSI codes\r\n arguments: {\r\n command: shellCommand,\r\n isPty: true\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Clear shell-related UI state and append captured history\r\n // Reset isAiWorking to prevent \"Boosting...\" spinner from appearing\r\n setState(prev => ({\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, ...historyMessages],\r\n shellState: undefined,\r\n currentMessage: null,\r\n isAiWorking: false\r\n }));\r\n\r\n // Clear screen\r\n clearScreen();\r\n\r\n // Establish proper ssh2 connection via cli-adapter\r\n // This will prompt for password and set up full SSH functionality\r\n const success = await onWarpifySession(\r\n shellCommand,\r\n session.type as 'ssh' | 'wsl' | 'docker',\r\n session.connectionString\r\n );\r\n\r\n if (!success) {\r\n // Connection failed - error already shown by cli.warpifySession\r\n quickLog(`[${new Date().toISOString()}] [Warpify] Failed to establish ssh2 connection\\n`);\r\n }\r\n } finally {\r\n // Keep suppression active briefly so delayed shell completion events are ignored.\r\n setTimeout(() => {\r\n warpifyInProgressRef.current = false;\r\n warpifyTerminatingCommandRef.current = null;\r\n }, 400);\r\n }\r\n }}\r\n />\r\n\r\n )}\r\n\r\n {/* Agent control monitoring panel - show below shell when agent controlled */}\r\n {state.shellState?.isAgentControlled && state.shellState?.isFocused && state.shellState?.isRunning && (\r\n <MonitorModeAIPanel\r\n messages={[\r\n ...(state.shellState.monitoringMessages || []),\r\n // Inject current assistant message if present (so AI thoughts/responses appear in panel)\r\n ...(state.currentMessage?.role === 'assistant' && state.currentMessage.content ? [{\r\n id: state.currentMessage.id,\r\n type: 'text' as const, // Cast to literal type to match MonitorMessage interface\r\n content: state.currentMessage.content,\r\n timestamp: state.currentMessage.timestamp\r\n }] : [])\r\n ]}\r\n maxHeight={Math.floor((process.stdout.rows || 24) / 2) - 5}\r\n isActive={true}\r\n />\r\n )}\r\n\r\n {/* Status row: thinking indicator (left) + session file changes (right) */}\r\n {((state.isAiWorking && !state.shellState && !state.approvalRequest &&\r\n !(state.currentMessage?.toolExecution?.status === 'executing')) ||\r\n (state.lastFileChangeSummary && state.lastFileChangeSummary.filesChanged > 0)) && (\r\n <Box marginBottom={1} flexDirection=\"row\" justifyContent=\"space-between\" width=\"100%\">\r\n <Box paddingLeft={1}>\r\n {state.isAiWorking && !state.shellState && !state.approvalRequest &&\r\n !(state.currentMessage?.toolExecution?.status === 'executing') && (\r\n <>\r\n <LoadingIndicator key=\"loading-indicator\" />\r\n <AgentTimer key=\"agent-timer\" />\r\n </>\r\n )}\r\n </Box>\r\n {state.lastFileChangeSummary && state.lastFileChangeSummary.filesChanged > 0 && (\r\n <Box paddingRight={1} flexDirection=\"row\">\r\n <Text color=\"#666666\">{state.lastFileChangeSummary.filesChanged} file{state.lastFileChangeSummary.filesChanged !== 1 ? 's' : ''} changed </Text>\r\n {state.lastFileChangeSummary.insertions > 0 && (\r\n <Text color=\"green\">+{state.lastFileChangeSummary.insertions}</Text>\r\n )}\r\n {state.lastFileChangeSummary.insertions > 0 && state.lastFileChangeSummary.deletions > 0 && (\r\n <Text color=\"#666666\"> </Text>\r\n )}\r\n {state.lastFileChangeSummary.deletions > 0 && (\r\n <Text color=\"red\">-{state.lastFileChangeSummary.deletions}</Text>\r\n )}\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n\r\n {/* Interrupt Queue display */}\r\n {state.interruptQueue && state.interruptQueue.length > 0 && (\r\n <Box flexDirection=\"column\" marginBottom={1}>\r\n {state.interruptQueue.map((msg, i) => (\r\n <Text key={`interrupt-${i}`} color=\"gray\" dimColor>\r\n [Queued Interrupt {i + 1}/{state.interruptQueue.length}] {msg}\r\n </Text>\r\n ))}\r\n </Box>\r\n )}\r\n\r\n {/* Session Command Queue display */}\r\n {state.commandQueue && state.commandQueue.length > 0 && (\r\n <Box flexDirection=\"column\" marginBottom={1}>\r\n {state.commandQueue.map((command, i) => (\r\n <Text key={`queued-command-${i}`} color=\"#00cc66\">\r\n [Queued Command {i + 1}/{state.commandQueue.length}] $ {command}\r\n </Text>\r\n ))}\r\n </Box>\r\n )}\r\n\r\n {/* Show approval prompt inline for commands, or input box (hide when shell is focused) */}\r\n {!state.shellState?.isFocused && (\r\n state.passwordRequest ? (\r\n <PasswordPrompt\r\n message={state.passwordRequest.message}\r\n onSubmit={(password: string) => {\r\n const resolve = state.passwordRequest?.resolve;\r\n if (resolve) {\r\n resolve(password);\r\n }\r\n }}\r\n onCancel={() => {\r\n const reject = state.passwordRequest?.reject;\r\n if (reject) {\r\n reject();\r\n }\r\n }}\r\n />\r\n ) : state.approvalRequest ? (\r\n <ApprovalSection\r\n key={`approval-${state.approvalRequest.message}`}\r\n approvalRequest={state.approvalRequest}\r\n onApprove={(approved: boolean) => {\r\n const resolve = state.approvalRequest?.resolve;\r\n if (resolve) {\r\n resolve(approved);\r\n }\r\n }}\r\n />\r\n ) : (\r\n <InputBox\r\n key=\"input-box\"\r\n onSubmit={(value, clipboardImages) => {\r\n // Reset \"Zombie Agent\" protection on new manual input\r\n ignoreIncomingAIUpdatesRef.current = false;\r\n\r\n // Clear preserved input on submit\r\n preservedInputTextRef.current = '';\r\n handleSubmit(value, clipboardImages);\r\n }}\r\n autoAcceptMode={state.autoAcceptMode}\r\n model={state.currentModel}\r\n planMode={state.planMode}\r\n commandMode={state.commandMode}\r\n backgroundMode={state.backgroundMode}\r\n currentWorkingDirectory={state.currentWorkingDirectory}\r\n commandHistory={state.commandHistory}\r\n onToggleAutoAccept={handleToggleAutoAccept}\r\n onToggleCommandMode={onToggleCommandMode}\r\n onToggleBackgroundMode={onToggleBackgroundMode}\r\n isActive={true}\r\n subshellContext={state.subshellContext}\r\n subshellContextStack={state.subshellContextStack}\r\n currentTokens={state.currentTokens}\r\n maxTokens={state.maxTokens}\r\n contextLimitReached={state.contextLimitReached}\r\n isShellRunning={state.shellState?.isRunning}\r\n backgroundTaskCount={state.backgroundTaskCount}\r\n subAgentCount={state.subAgentCount}\r\n initialValue={preservedInputTextRef.current}\r\n onValueChange={handleInputValueChange}\r\n onSetAutoModeSetup={(callback) => {\r\n setAutoModeCallbackRef.current = callback;\r\n }}\r\n sessionQuotaExhausted={state.sessionQuotaExhausted}\r\n sessionQuotaTimeRemaining={state.sessionQuotaTimeRemaining}\r\n aiAutoSuggestEnabled={state.aiAutoSuggest}\r\n sessionCommands={sessionCommands}\r\n getCheckpoints={getCheckpoints}\r\n onSetInputSetup={onSetInputSetup}\r\n gitDiffStats={state.gitDiffStats}\r\n />\r\n\r\n )\r\n )}\r\n\r\n {state.showExitWarning && (\r\n <Box marginTop={1}>\r\n <Text color=\"#ffaa00\" bold>⚠️ Press Ctrl+C again to exit</Text>\r\n </Box>\r\n )}\r\n\r\n {!isConnected && (\r\n <Box marginTop={0} marginLeft={state.showExitWarning ? 2 : 0}>\r\n <Text color=\"red\" bold>⚠️ No internet connection</Text>\r\n </Box>\r\n )}\r\n </>\r\n )}\r\n\r\n {state.screen === 'approval' && state.approvalRequest && (\r\n <ApprovalSection\r\n key={`approval-${state.approvalRequest.message}`}\r\n approvalRequest={state.approvalRequest}\r\n onApprove={(approved: boolean) => {\r\n const resolve = state.approvalRequest?.resolve;\r\n if (resolve) {\r\n resolve(approved);\r\n }\r\n }}\r\n />\r\n )}\r\n\r\n {state.screen === 'help' && (\r\n <KeyboardHelp onClose={() => setState(prev => ({ ...prev, screen: 'chat' }))} />\r\n )}\r\n\r\n {state.screen === 'picker' && state.pickerOptions && (\r\n <SelectPrompt\r\n message={state.pickerOptions.message}\r\n choices={state.pickerOptions.choices}\r\n onSelect={async (value) => {\r\n setState(prev => ({ ...prev, screen: 'chat', isLoading: true }));\r\n try {\r\n await onPickerSelection(value, state.pickerOptions!.type);\r\n // Model name will be updated via onModelChange callback\r\n // Just update loading state here\r\n setState(prev => ({\r\n ...prev,\r\n isLoading: false,\r\n isAiWorking: false\r\n }));\r\n } catch (error: any) {\r\n setState(prev => {\r\n const errorMessage: Message = {\r\n id: `system-error-${Date.now()}`,\r\n role: 'system',\r\n content: `❌ Error: ${error.message || 'Unknown error occurred'}`,\r\n timestamp: new Date()\r\n };\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, errorMessage],\r\n currentMessage: null,\r\n isLoading: false,\r\n isAiWorking: false\r\n };\r\n });\r\n }\r\n }}\r\n />\r\n )}\r\n\r\n {state.screen === 'chat-picker' && state.chatPickerChats && (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1}>\r\n <Text color=\"#00ccff\" bold>📚 Resume a Previous Chat</Text>\r\n <Box marginTop={1}>\r\n <CircularSelectInput\r\n limit={listLimit}\r\n items={state.chatPickerChats.map((chat) => {\r\n const date = new Date(chat.updatedAt).toLocaleDateString();\r\n const time = new Date(chat.updatedAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\r\n const isCurrent = chat.id === state.currentChatId;\r\n const env = chat.environment || 'local';\r\n // Format: Title [environment] date time - N msgs\r\n return {\r\n label: `${isCurrent ? '● ' : ' '}${chat.title}`,\r\n envLabel: `[${env}]`,\r\n dateLabel: `${date} ${time}`,\r\n msgLabel: `${chat.messageCount} msgs`,\r\n value: chat.id,\r\n isCurrent,\r\n environment: env\r\n };\r\n })}\r\n itemComponent={({ isSelected, label, isCurrent, envLabel, dateLabel, msgLabel, environment }: { isSelected: boolean; label: string; isCurrent?: boolean; envLabel?: string; dateLabel?: string; msgLabel?: string; environment?: string }) => (\r\n <Box>\r\n <Text color={isSelected ? '#00ccff' : (isCurrent ? '#00cc66' : 'white')} bold={isSelected || isCurrent}>\r\n {isSelected ? '> ' : ' '}{label}\r\n </Text>\r\n <Text color={environment === 'local' ? 'gray' : (environment?.startsWith('ssh') ? '#ff9966' : environment?.startsWith('wsl') ? '#66ff99' : '#66ccff')}> {envLabel}</Text>\r\n <Text color=\"gray\"> {dateLabel}</Text>\r\n <Text color=\"gray\"> - </Text>\r\n <Text color=\"gray\">{msgLabel}</Text>\r\n </Box>\r\n )}\r\n onSelect={async (item) => {\r\n setState(prev => ({ ...prev, screen: 'chat', isLoading: true }));\r\n try {\r\n await onChatPickerSelection(item.value);\r\n setState(prev => ({\r\n ...prev,\r\n isLoading: false,\r\n isAiWorking: false\r\n }));\r\n } catch (error: any) {\r\n setState(prev => {\r\n const errorMessage: Message = {\r\n id: `system-error-${Date.now()}`,\r\n role: 'system',\r\n content: `❌ Error: ${error.message || 'Failed to load chat'}`,\r\n timestamp: new Date()\r\n };\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, errorMessage],\r\n currentMessage: null,\r\n isLoading: false,\r\n isAiWorking: false\r\n };\r\n });\r\n }\r\n }}\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text dimColor>Press ESC to return to chat</Text>\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {state.screen === 'chat-delete-picker' && state.chatPickerChats && (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1}>\r\n <Text color=\"#00ccff\" bold>🗑️ Select a Chat to Delete</Text>\r\n <Box marginTop={1}>\r\n <CircularSelectInput\r\n key={`chat-delete-picker-${state.chatDeletePickerSession}`}\r\n limit={listLimit}\r\n isActive={state.screen === 'chat-delete-picker'}\r\n resetKey={state.chatDeletePickerSession}\r\n items={state.chatPickerChats.map((chat) => {\r\n const date = new Date(chat.updatedAt).toLocaleDateString();\r\n const time = new Date(chat.updatedAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\r\n const isCurrent = chat.id === state.currentChatId;\r\n const env = chat.environment || 'local';\r\n return {\r\n label: `${isCurrent ? '● ' : ' '}${chat.title}`,\r\n envLabel: `[${env}]`,\r\n dateLabel: `${date} ${time}`,\r\n msgLabel: `${chat.messageCount} msgs`,\r\n value: chat.id,\r\n isCurrent,\r\n environment: env\r\n };\r\n })}\r\n itemComponent={({ isSelected, label, isCurrent, envLabel, dateLabel, msgLabel, environment }: { isSelected: boolean; label: string; isCurrent?: boolean; envLabel?: string; dateLabel?: string; msgLabel?: string; environment?: string }) => (\r\n <Box>\r\n <Text color={isSelected ? '#00ccff' : (isCurrent ? '#00cc66' : 'white')} bold={isSelected || isCurrent}>\r\n {isSelected ? '> ' : ' '}{label}\r\n </Text>\r\n <Text color={environment === 'local' ? 'gray' : (environment?.startsWith('ssh') ? '#ff9966' : environment?.startsWith('wsl') ? '#66ff99' : '#66ccff')}> {envLabel}</Text>\r\n <Text color=\"gray\"> {dateLabel}</Text>\r\n <Text color=\"gray\"> - </Text>\r\n <Text color=\"gray\">{msgLabel}</Text>\r\n </Box>\r\n )}\r\n onSelect={async (item) => {\r\n setState(prev => ({ ...prev, screen: 'chat', isLoading: false }));\r\n try {\r\n await onChatDeletePickerSelection(item.value);\r\n } catch (error: any) {\r\n setState(prev => {\r\n const errorMessage: Message = {\r\n id: `system-error-${Date.now()}`,\r\n role: 'system',\r\n content: `❌ Error: ${error.message || 'Failed to delete chat'}`,\r\n timestamp: new Date()\r\n };\r\n return {\r\n ...prev,\r\n messageHistory: [...prev.messageHistory, errorMessage],\r\n currentMessage: null,\r\n isLoading: false,\r\n isAiWorking: false\r\n };\r\n });\r\n }\r\n }}\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text dimColor>Press ESC to return to chat</Text>\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {state.screen === 'chat-list-view' && state.chatPickerChats && (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1}>\r\n <Text color=\"#00ccff\" bold>📚 Saved Chats ({state.chatPickerChats.length})</Text>\r\n <Box marginTop={1}>\r\n <CircularSelectInput\r\n limit={listLimit}\r\n items={state.chatPickerChats.map((chat) => {\r\n const date = new Date(chat.updatedAt).toLocaleDateString();\r\n const time = new Date(chat.updatedAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\r\n const isCurrent = chat.id === state.currentChatId;\r\n const env = chat.environment || 'local';\r\n return {\r\n label: `${isCurrent ? '● ' : ' '}${chat.title}`,\r\n envLabel: `[${env}]`,\r\n dateLabel: `${date} ${time}`,\r\n msgLabel: `${chat.messageCount} msgs`,\r\n value: chat.id,\r\n isCurrent,\r\n environment: env\r\n };\r\n })}\r\n itemComponent={({ isSelected, label, isCurrent, envLabel, dateLabel, msgLabel, environment }: { isSelected: boolean; label: string; isCurrent?: boolean; envLabel?: string; dateLabel?: string; msgLabel?: string; environment?: string }) => (\r\n <Box>\r\n <Text color={isSelected ? '#00ccff' : (isCurrent ? '#00cc66' : 'white')} bold={isSelected || isCurrent}>\r\n {isSelected ? '> ' : ' '}{label}\r\n </Text>\r\n <Text color={environment === 'local' ? 'gray' : (environment?.startsWith('ssh') ? '#ff9966' : environment?.startsWith('wsl') ? '#66ff99' : '#66ccff')}> {envLabel}</Text>\r\n <Text color=\"gray\"> {dateLabel}</Text>\r\n <Text color=\"gray\"> - </Text>\r\n <Text color=\"gray\">{msgLabel}</Text>\r\n </Box>\r\n )}\r\n onSelect={() => {\r\n // Just close the view\r\n setState(prev => ({ ...prev, screen: 'chat' }));\r\n }}\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text dimColor>Press ESC to return to chat</Text>\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {state.screen === 'chat-rename-picker' && state.chatPickerChats && (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1}>\r\n <Text color=\"#00ccff\" bold>✏️ Select a Chat to Rename</Text>\r\n <Box marginTop={1}>\r\n <CircularSelectInput\r\n limit={listLimit}\r\n items={state.chatPickerChats.map((chat) => {\r\n const date = new Date(chat.updatedAt).toLocaleDateString();\r\n const time = new Date(chat.updatedAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\r\n const isCurrent = chat.id === state.currentChatId;\r\n const env = chat.environment || 'local';\r\n return {\r\n label: `${isCurrent ? '● ' : ' '}${chat.title}`,\r\n envLabel: `[${env}]`,\r\n dateLabel: `${date} ${time}`,\r\n msgLabel: `${chat.messageCount} msgs`,\r\n value: chat.id,\r\n title: chat.title,\r\n isCurrent,\r\n environment: env\r\n };\r\n })}\r\n itemComponent={({ isSelected, label, isCurrent, envLabel, dateLabel, msgLabel, environment }: { isSelected: boolean; label: string; isCurrent?: boolean; envLabel?: string; dateLabel?: string; msgLabel?: string; environment?: string }) => (\r\n <Box>\r\n <Text color={isSelected ? '#00ccff' : (isCurrent ? '#00cc66' : 'white')} bold={isSelected || isCurrent}>\r\n {isSelected ? '> ' : ' '}{label}\r\n </Text>\r\n <Text color={environment === 'local' ? 'gray' : (environment?.startsWith('ssh') ? '#ff9966' : environment?.startsWith('wsl') ? '#66ff99' : '#66ccff')}> {envLabel}</Text>\r\n <Text color=\"gray\"> {dateLabel}</Text>\r\n <Text color=\"gray\"> - </Text>\r\n <Text color=\"gray\">{msgLabel}</Text>\r\n </Box>\r\n )}\r\n onSelect={(item: any) => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat-rename-input',\r\n renameChatId: item.value,\r\n renameChatTitle: item.title\r\n }));\r\n }}\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text dimColor>Press ESC to return to chat</Text>\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {state.screen === 'chat-rename-input' && state.renameChatId && (\r\n <RenameInputScreen\r\n currentTitle={state.renameChatTitle || ''}\r\n onRename={(newTitle) => {\r\n if (newTitle.trim()) {\r\n onChatRename(state.renameChatId!, newTitle.trim());\r\n }\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n chatPickerChats: undefined,\r\n renameChatId: undefined,\r\n renameChatTitle: undefined\r\n }));\r\n }}\r\n onCancel={() => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat-rename-picker',\r\n renameChatId: undefined,\r\n renameChatTitle: undefined\r\n }));\r\n }}\r\n />\r\n )}\r\n\r\n\r\n {state.screen === 'plan-approval' && state.planApprovalRequest && (\r\n <DetailedPlanReviewScreen\r\n plan={state.planApprovalRequest.plan}\r\n onApprove={() => {\r\n const resolve = state.planApprovalRequest?.resolve;\r\n const plan = state.planApprovalRequest?.plan;\r\n if (resolve) {\r\n resolve(true);\r\n }\r\n\r\n // Add \"Plan Accepted\" message to history\r\n const planAcceptedMessage: Message = {\r\n id: `plan-accepted-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\r\n role: 'system',\r\n content: '',\r\n timestamp: new Date(),\r\n planAccepted: {\r\n planTitle: plan?.title,\r\n totalTasks: plan?.steps?.length,\r\n tasks: plan?.steps?.map(step => ({\r\n description: step.description,\r\n subtasks: step.subtasks?.map(st => ({ description: st.description }))\r\n }))\r\n }\r\n };\r\n\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n planApprovalRequest: undefined,\r\n messageHistory: [...prev.messageHistory, planAcceptedMessage],\r\n isLoading: true,\r\n isAiWorking: true\r\n }));\r\n }}\r\n onEdit={() => {\r\n const resolve = state.planApprovalRequest?.resolve;\r\n if (resolve) {\r\n resolve(false);\r\n }\r\n\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n planApprovalRequest: undefined\r\n }));\r\n }}\r\n />\r\n )}\r\n\r\n {state.screen === 'password-prompt' && state.passwordRequest && (\r\n <PasswordPrompt\r\n message={state.passwordRequest.message}\r\n onSubmit={(password: string) => {\r\n const resolve = state.passwordRequest?.resolve;\r\n if (resolve) {\r\n resolve(password);\r\n }\r\n }}\r\n onCancel={() => {\r\n const reject = state.passwordRequest?.reject;\r\n if (reject) {\r\n reject();\r\n }\r\n }}\r\n />\r\n )}\r\n\r\n {state.screen === 'version-update' && state.versionInfo && (\r\n <Box flexDirection=\"column\">\r\n <WelcomeBanner />\r\n <VersionUpdatePrompt\r\n currentVersion={state.versionInfo.currentVersion}\r\n latestVersion={state.versionInfo.latestVersion}\r\n onComplete={() => {\r\n // If update fails, continue to chat screen\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat'\r\n }));\r\n }}\r\n />\r\n </Box>\r\n )}\r\n\r\n {/* Background Task List Screen */}\r\n {state.screen === 'background-task-list' && state.backgroundTasks && (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#9966ff\" paddingX={1}>\r\n <Text color=\"#9966ff\" bold>Running Background Tasks</Text>\r\n <Text dimColor>Select a task to view its output in focus mode</Text>\r\n <Box marginTop={1}>\r\n <SelectInput\r\n items={state.backgroundTasks.map((task) => {\r\n const durationSec = Math.round(task.durationMs / 1000);\r\n return {\r\n label: task.command.length > 50 ? task.command.slice(0, 47) + '...' : task.command,\r\n value: task.id,\r\n cwd: task.cwd,\r\n duration: `${durationSec}s`,\r\n isRunning: task.isRunning,\r\n outputPreview: task.outputPreview // Pass raw preview, sanitize in component\r\n };\r\n })}\r\n itemComponent={({ isSelected, label, cwd, duration, isRunning, outputPreview }: { isSelected: boolean; label: string; cwd?: string; duration?: string; isRunning?: boolean; outputPreview?: string }) => {\r\n // Calculate max width for wrapping (terminal width - border padding - left padding)\r\n const terminalWidth = process.stdout.columns || 80;\r\n const maxTextWidth = Math.max(terminalWidth - 10, 40);\r\n\r\n // Truncate cwd if too long\r\n const truncatedCwd = cwd && cwd.length > maxTextWidth\r\n ? cwd.slice(0, maxTextWidth - 3) + '...'\r\n : cwd;\r\n\r\n // Truncate output preview if too long (accounting for └─ prefix)\r\n const maxPreviewWidth = maxTextWidth - 3;\r\n\r\n // Sanitize: Strip ANSI codes and replace newlines with spaces\r\n const cleanPreview = outputPreview ? stripAnsi(outputPreview).replace(/[\\r\\n]+/g, ' ').trim() : '';\r\n\r\n const truncatedPreview = cleanPreview.length > maxPreviewWidth\r\n ? cleanPreview.slice(0, maxPreviewWidth - 3) + '...'\r\n : cleanPreview;\r\n\r\n return (\r\n <Box flexDirection=\"column\">\r\n <Box>\r\n <Text color={isSelected ? '#9966ff' : 'white'} bold={isSelected}>\r\n {isSelected ? '> ' : ' '}{label}\r\n </Text>\r\n <Text color={isRunning ? '#00cc66' : '#ffaa00'}> [{isRunning ? 'running' : 'done'}]</Text>\r\n <Text color=\"gray\"> {duration}</Text>\r\n </Box>\r\n <Box paddingLeft={4}>\r\n <Text color=\"gray\" wrap=\"truncate\">{truncatedCwd}</Text>\r\n </Box>\r\n {truncatedPreview && (\r\n <Box paddingLeft={4}>\r\n <Text color=\"gray\" dimColor wrap=\"truncate\">└─ {truncatedPreview}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }}\r\n onSelect={(item) => {\r\n setState(prev => ({ ...prev, screen: 'chat', isLoading: false }));\r\n onBackgroundTaskSelection(item.value);\r\n }}\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text dimColor>Press ESC to return to chat</Text>\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Background Task Cancel Screen */}\r\n {state.screen === 'background-task-cancel' && state.backgroundTasks && (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff6666\" paddingX={1}>\r\n <Text color=\"#ff6666\" bold>Cancel a Background Task</Text>\r\n <Text dimColor>Select a task to terminate it</Text>\r\n <Box marginTop={1}>\r\n <SelectInput\r\n items={state.backgroundTasks.map((task) => {\r\n const durationSec = Math.round(task.durationMs / 1000);\r\n return {\r\n label: task.command.length > 50 ? task.command.slice(0, 47) + '...' : task.command,\r\n value: task.id,\r\n cwd: task.cwd,\r\n duration: `${durationSec}s`,\r\n isRunning: task.isRunning\r\n };\r\n })}\r\n itemComponent={({ isSelected, label, cwd, duration, isRunning }: { isSelected: boolean; label: string; cwd?: string; duration?: string; isRunning?: boolean }) => {\r\n // Calculate max width for wrapping (terminal width - border padding - left padding)\r\n const terminalWidth = process.stdout.columns || 80;\r\n const maxTextWidth = Math.max(terminalWidth - 10, 40);\r\n\r\n // Truncate cwd if too long\r\n const truncatedCwd = cwd && cwd.length > maxTextWidth\r\n ? cwd.slice(0, maxTextWidth - 3) + '...'\r\n : cwd;\r\n\r\n return (\r\n <Box flexDirection=\"column\">\r\n <Box>\r\n <Text color={isSelected ? '#ff6666' : 'white'} bold={isSelected}>\r\n {isSelected ? '> ' : ' '}{label}\r\n </Text>\r\n <Text color={isRunning ? '#00cc66' : '#ffaa00'}> [{isRunning ? 'running' : 'done'}]</Text>\r\n <Text color=\"gray\"> {duration}</Text>\r\n </Box>\r\n <Box paddingLeft={4}>\r\n <Text color=\"gray\" wrap=\"truncate\">{truncatedCwd}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }}\r\n onSelect={(item) => {\r\n setState(prev => ({ ...prev, screen: 'chat', isLoading: false }));\r\n onBackgroundTaskCancel(item.value);\r\n }}\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text dimColor>Press ESC to return to chat</Text>\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* MCP Add Screen */}\r\n {state.screen === 'mcp-add' && (\r\n <MCPAddScreen\r\n onAdd={(config) => {\r\n const result = onMCPAddServer(config);\r\n if (result.success) {\r\n // Return to chat with success message\r\n const successMessage: Message = {\r\n id: `mcp-add-${Date.now()}`,\r\n role: 'system',\r\n content: `✅ MCP server \"${config.name}\" added successfully!\\n\\nRun \\`/mcp refresh\\` to connect to the new server.`,\r\n timestamp: new Date()\r\n };\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n messageHistory: [...prev.messageHistory, successMessage]\r\n }));\r\n }\r\n }}\r\n onCancel={() => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat'\r\n }));\r\n }}\r\n validateConfig={onMCPValidateConfig}\r\n />\r\n )}\r\n\r\n {/* MCP Remove Screen */}\r\n {state.screen === 'mcp-remove' && state.mcpServers && (\r\n <MCPServerListScreen\r\n mode=\"remove\"\r\n servers={state.mcpServers}\r\n onSelect={(serverName) => {\r\n onMCPRemoveServer(serverName);\r\n const successMessage: Message = {\r\n id: `mcp-remove-${Date.now()}`,\r\n role: 'system',\r\n content: `✅ MCP server \"${serverName}\" removed from configuration.`,\r\n timestamp: new Date()\r\n };\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n mcpServers: undefined,\r\n messageHistory: [...prev.messageHistory, successMessage]\r\n }));\r\n }}\r\n onCancel={() => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n mcpServers: undefined\r\n }));\r\n }}\r\n />\r\n )}\r\n\r\n {/* MCP Enable Screen */}\r\n {state.screen === 'mcp-enable' && state.mcpServers && (\r\n <MCPServerListScreen\r\n mode=\"enable\"\r\n servers={state.mcpServers}\r\n onSelect={(serverName) => {\r\n onMCPEnableServer(serverName);\r\n const successMessage: Message = {\r\n id: `mcp-enable-${Date.now()}`,\r\n role: 'system',\r\n content: `✅ MCP server \"${serverName}\" enabled!\\n\\nRun \\`/mcp refresh\\` to connect.`,\r\n timestamp: new Date()\r\n };\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n mcpServers: undefined,\r\n messageHistory: [...prev.messageHistory, successMessage]\r\n }));\r\n }}\r\n onCancel={() => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n mcpServers: undefined\r\n }));\r\n }}\r\n />\r\n )}\r\n\r\n {/* MCP Disable Screen */}\r\n {state.screen === 'mcp-disable' && state.mcpServers && (\r\n <MCPServerListScreen\r\n mode=\"disable\"\r\n servers={state.mcpServers}\r\n onSelect={(serverName) => {\r\n onMCPDisableServer(serverName);\r\n const successMessage: Message = {\r\n id: `mcp-disable-${Date.now()}`,\r\n role: 'system',\r\n content: `⏸️ MCP server \"${serverName}\" disabled. AI will no longer use its tools.`,\r\n timestamp: new Date()\r\n };\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n mcpServers: undefined,\r\n messageHistory: [...prev.messageHistory, successMessage]\r\n }));\r\n }}\r\n onCancel={() => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n mcpServers: undefined\r\n }));\r\n }}\r\n />\r\n )}\r\n\r\n {/* MCP List Screen */}\r\n {state.screen === 'mcp-list' && state.mcpListData && (\r\n <MCPListScreen\r\n servers={state.mcpListData}\r\n onClose={() => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n mcpListData: undefined\r\n }));\r\n }}\r\n />\r\n )}\r\n\r\n {/* Workflow Creator Screen */}\r\n {state.screen === 'workflow-creator' && (\r\n <WorkflowCreatorScreen\r\n initialSteps={state.workflowCreatorInitialSteps}\r\n onSave={(name, steps, description) => {\r\n onWorkflowSave(name, steps, description);\r\n const successMessage: Message = {\r\n id: `workflow-created-${Date.now()}`,\r\n role: 'system',\r\n content: `✅ Workflow \"${name}\" saved successfully with ${steps.length} steps!\\n\\nRun it with: /workflow run ${name}`,\r\n timestamp: new Date()\r\n };\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n messageHistory: [...prev.messageHistory, successMessage],\r\n workflowCreatorInitialSteps: undefined // Clear initial steps\r\n }));\r\n }}\r\n onCancel={() => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n workflowCreatorInitialSteps: undefined // Clear initial steps\r\n }));\r\n }}\r\n />\r\n )}\r\n\r\n {state.screen === 'rules-editor' && state.rulesEditorRequest && (\r\n <RulesEditorScreen\r\n mode={state.rulesEditorRequest.mode}\r\n initialName={state.rulesEditorRequest.initialName}\r\n initialContent={state.rulesEditorRequest.initialContent}\r\n onSave={(name, content, previousName) => {\r\n const result = onRuleSave(name, content, previousName);\r\n\r\n if (!result.success) {\r\n return result;\r\n }\r\n\r\n const savedName = result.savedName || name;\r\n const renamedNote = result.renamedFrom && result.renamedFrom !== savedName\r\n ? ` Renamed from \"${result.renamedFrom}\".`\r\n : '';\r\n\r\n const successMessage: Message = {\r\n id: `rule-saved-${Date.now()}`,\r\n role: 'system',\r\n content: `✅ Rule \"${savedName}\" saved successfully.${renamedNote}\\n\\nUse it in prompts with: @rules:${savedName}`,\r\n timestamp: new Date()\r\n };\r\n\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n rulesEditorRequest: undefined,\r\n messageHistory: [...prev.messageHistory, successMessage]\r\n }));\r\n return result;\r\n }}\r\n onCancel={() => {\r\n setState(prev => ({\r\n ...prev,\r\n screen: 'chat',\r\n rulesEditorRequest: undefined\r\n }));\r\n }}\r\n />\r\n )}\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"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","names":["quickLog","allLines","last3Lines","now","newHistory","prev"]}