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":"ConnectionStatusMessage.js","sourceRoot":"","sources":["../../../src/ui/components/ConnectionStatusMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAalC;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA2C,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACrG,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC;YACzB,KAAK,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC;YACzB,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;YAC/B,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC;QAChC,CAAC;IACL,CAAC,CAAC;IAEF,mCAAmC;IACnC,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACjC,OAAO,CACH,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAC,YAAY;YACtH,oBAAC,GAAG;gBACA,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;oBAAC,oBAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,CAAO;gBACpD,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;oBAAiB,YAAY,EAAE;sCAAuB,CACzE,CACJ,CACT,CAAC;IACN,CAAC;IAED,2CAA2C;IAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,CACH,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAC,YAAY;YACtH,oBAAC,GAAG;gBACA,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,mBAAS;gBACnC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;oBAA2B,YAAY,EAAE;mCAAoB;gBACjF,MAAM,CAAC,gBAAgB,IAAI,CACxB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;oBAAI,YAAY,EAAE;;oBAAG,MAAM,CAAC,gBAAgB;wBAAS,CAC7E,CACC,CACJ,CACT,CAAC;IACN,CAAC;IAED,cAAc;IACd,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,CACH,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAC,YAAY;YACtH,oBAAC,GAAG;gBACA,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,mBAAS;gBACnC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;oBAAwB,YAAY,EAAE;mCAAoB,CAC7E;YACL,MAAM,CAAC,KAAK,IAAI,CACb,oBAAC,GAAG,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;gBAC7B,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;oBAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAQ,CAC/F,CACT,CACC,CACT,CAAC;IACN,CAAC;IAED,qDAAqD;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACnC,OAAO,CACH,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAC,YAAY;YACtH,oBAAC,GAAG;gBACA,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,mBAAS;gBACnC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;oBAAqB,YAAY,EAAE;mCAAoB;gBAC3E,MAAM,CAAC,gBAAgB,IAAI,CACxB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;oBAAI,YAAY,EAAE;;oBAAG,MAAM,CAAC,gBAAgB;wBAAS,CAC7E,CACC;YACL,MAAM,CAAC,KAAK,IAAI,CACb,oBAAC,GAAG;gBACA,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;oBAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAQ,CAChG,CACT,CACC,CACT,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;IACxB,mCAAmC;IACnC,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM;QACtD,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,IAAI;QAC/C,SAAS,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,MAAM,CAAC,gBAAgB;QACvE,SAAS,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1D,CAAC,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/ui/components/ConnectionStatusMessage.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport Spinner from 'ink-spinner';\r\n\r\nexport interface ConnectionStatus {\r\n type: 'ssh' | 'wsl' | 'docker';\r\n status: 'connecting' | 'connected' | 'error' | 'disconnected';\r\n connectionString?: string; // e.g., \"rohan@localhost\" for SSH, \"Ubuntu\" for WSL\r\n error?: string;\r\n}\r\n\r\ninterface ConnectionStatusMessageProps {\r\n status: ConnectionStatus;\r\n}\r\n\r\n/**\r\n * Dynamic connection status message that shows a spinner while connecting\r\n * and transforms to a static \"Connected\" message once connected.\r\n */\r\nexport const ConnectionStatusMessage: React.FC<ConnectionStatusMessageProps> = React.memo(({ status }) => {\r\n const getTypeLabel = () => {\r\n switch (status.type) {\r\n case 'ssh': return 'ssh';\r\n case 'wsl': return 'WSL';\r\n case 'docker': return 'Docker';\r\n default: return status.type;\r\n }\r\n };\r\n\r\n // CONNECTING state - shows spinner\r\n if (status.status === 'connecting') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#9945FF\" paddingX={1} marginBottom={1} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00ccff\"><Spinner type=\"dots\" /></Text>\r\n <Text color=\"#9945FF\"> Tunnelling to {getTypeLabel()} environment...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // CONNECTED state - static success message\r\n if (status.status === 'connected') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00cc66\" paddingX={1} marginBottom={1} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓</Text>\r\n <Text color=\"#00cc66\"> Established Wormhole to {getTypeLabel()} environment</Text>\r\n {status.connectionString && (\r\n <Text color=\"#666666\"> [{getTypeLabel()} {status.connectionString}]</Text>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // ERROR state\r\n if (status.status === 'error') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff3366\" paddingX={1} marginBottom={1} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#ff3366\" bold>✗</Text>\r\n <Text color=\"#ff3366\"> Failed to connect to {getTypeLabel()} environment</Text>\r\n </Box>\r\n {status.error && (\r\n <Box paddingLeft={1} marginTop={0}>\r\n <Text color=\"#ff3366\">{status.error.slice(0, 300)}{status.error.length > 300 ? '...' : ''}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n // DISCONNECTED state - shows disconnect notification\r\n if (status.status === 'disconnected') {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff9900\" paddingX={1} marginBottom={1} alignSelf=\"flex-start\">\r\n <Box>\r\n <Text color=\"#ff9900\" bold>✗</Text>\r\n <Text color=\"#ff9900\"> Disconnected from {getTypeLabel()} environment</Text>\r\n {status.connectionString && (\r\n <Text color=\"#666666\"> [{getTypeLabel()} {status.connectionString}]</Text>\r\n )}\r\n </Box>\r\n {status.error && (\r\n <Box>\r\n <Text color=\"#ff9900\"> {status.error.slice(0, 300)}{status.error.length > 300 ? '...' : ''}</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n return null;\r\n}, (prevProps, nextProps) => {\r\n // Only re-render if status changes\r\n return prevProps.status.status === nextProps.status.status &&\r\n prevProps.status.type === nextProps.status.type &&\r\n prevProps.status.connectionString === nextProps.status.connectionString &&\r\n prevProps.status.error === nextProps.status.error;\r\n});\r\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAC1B,OAAO,aAAa;AAiBb,MAAM,0BAAkE,MAAM,KAAK,CAAC,EAAE,OAAO,MAAM;AACtG,QAAM,eAAe,MAAM;AACvB,YAAQ,OAAO,MAAM;AAAA,MACjB,KAAK;AAAO,eAAO;AAAA,MACnB,KAAK;AAAO,eAAO;AAAA,MACnB,KAAK;AAAU,eAAO;AAAA,MACtB;AAAS,eAAO,OAAO;AAAA,IAC3B;AAAA,EACJ;AAGA,MAAI,OAAO,WAAW,cAAc;AAChC,WACI,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,cAAc,GAAG,WAAU,gBAC1G,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,oCAAC,WAAQ,MAAK,QAAO,CAAE,GAC7C,oCAAC,QAAK,OAAM,aAAU,mBAAgB,aAAa,GAAE,iBAAe,CACxE,CACJ;AAAA,EAER;AAGA,MAAI,OAAO,WAAW,aAAa;AAC/B,WACI,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,cAAc,GAAG,WAAU,gBAC1G,oCAAC,WACG,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,QAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,6BAA0B,aAAa,GAAE,cAAY,GAC1E,OAAO,oBACJ,oCAAC,QAAK,OAAM,aAAU,MAAG,aAAa,GAAE,KAAE,OAAO,kBAAiB,GAAC,CAE3E,CACJ;AAAA,EAER;AAGA,MAAI,OAAO,WAAW,SAAS;AAC3B,WACI,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,cAAc,GAAG,WAAU,gBAC1G,oCAAC,WACG,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,QAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,0BAAuB,aAAa,GAAE,cAAY,CAC5E,GACC,OAAO,SACJ,oCAAC,OAAI,aAAa,GAAG,WAAW,KAC5B,oCAAC,QAAK,OAAM,aAAW,OAAO,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,MAAM,SAAS,MAAM,QAAQ,EAAG,CAC9F,CAER;AAAA,EAER;AAGA,MAAI,OAAO,WAAW,gBAAgB;AAClC,WACI,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,cAAc,GAAG,WAAU,gBAC1G,oCAAC,WACG,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,QAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,uBAAoB,aAAa,GAAE,cAAY,GACpE,OAAO,oBACJ,oCAAC,QAAK,OAAM,aAAU,MAAG,aAAa,GAAE,KAAE,OAAO,kBAAiB,GAAC,CAE3E,GACC,OAAO,SACJ,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,KAAE,OAAO,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,MAAM,SAAS,MAAM,QAAQ,EAAG,CAC/F,CAER;AAAA,EAER;AAEA,SAAO;AACX,GAAG,CAAC,WAAW,cAAc;AAEzB,SAAO,UAAU,OAAO,WAAW,UAAU,OAAO,UAChD,UAAU,OAAO,SAAS,UAAU,OAAO,QAC3C,UAAU,OAAO,qBAAqB,UAAU,OAAO,oBACvD,UAAU,OAAO,UAAU,UAAU,OAAO;AACpD,CAAC;","names":[]}
@@ -1,55 +1,40 @@
1
- import React from 'react';
2
- import { Box, Text } from 'ink';
3
- // Format number with K suffix for readability (e.g., 2155 -> "2.2K", 10000 -> "10K")
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
4
3
  const formatTokens = (tokens) => {
5
- if (tokens >= 1000000) {
6
- return `${(tokens / 1000000).toFixed(1)}M`;
7
- }
8
- if (tokens >= 1000) {
9
- return `${(tokens / 1000).toFixed(tokens >= 10000 ? 0 : 1)}K`;
10
- }
11
- return tokens.toString();
4
+ if (tokens >= 1e6) {
5
+ return `${(tokens / 1e6).toFixed(1)}M`;
6
+ }
7
+ if (tokens >= 1e3) {
8
+ return `${(tokens / 1e3).toFixed(tokens >= 1e4 ? 0 : 1)}K`;
9
+ }
10
+ return tokens.toString();
12
11
  };
13
- // Get circular progress indicator character based on percentage REMAINING
14
- // Uses Unicode pie chart characters - starts FULL and empties as context fills
15
12
  const getCircularIndicator = (percentageUsed) => {
16
- const percentageRemaining = 100 - percentageUsed;
17
- if (percentageRemaining <= 0)
18
- return '○'; // Empty circle - context full
19
- if (percentageRemaining <= 12.5)
20
- return '◔'; // Nearly empty
21
- if (percentageRemaining <= 25)
22
- return '◔'; // Quarter remaining
23
- if (percentageRemaining <= 37.5)
24
- return '◑'; // 3/8 remaining
25
- if (percentageRemaining <= 50)
26
- return '◑'; // Half remaining
27
- if (percentageRemaining <= 62.5)
28
- return '◕'; // 5/8 remaining
29
- if (percentageRemaining <= 75)
30
- return '◕'; // 3/4 remaining
31
- if (percentageRemaining <= 87.5)
32
- return '◕'; // 7/8 remaining
33
- return '●'; // Full circle - plenty of space
13
+ const percentageRemaining = 100 - percentageUsed;
14
+ if (percentageRemaining <= 0) return "\u25CB";
15
+ if (percentageRemaining <= 12.5) return "\u25D4";
16
+ if (percentageRemaining <= 25) return "\u25D4";
17
+ if (percentageRemaining <= 37.5) return "\u25D1";
18
+ if (percentageRemaining <= 50) return "\u25D1";
19
+ if (percentageRemaining <= 62.5) return "\u25D5";
20
+ if (percentageRemaining <= 75) return "\u25D5";
21
+ if (percentageRemaining <= 87.5) return "\u25D5";
22
+ return "\u25CF";
34
23
  };
35
- export const ContextWindowIndicator = React.memo(({ currentTokens, maxTokens }) => {
36
- // Calculate percentage used for color determination
37
- const percentageUsed = Math.min((currentTokens / maxTokens) * 100, 100);
38
- // Determine color based on usage
39
- const getColor = () => {
40
- if (percentageUsed < 50)
41
- return '#00cc66'; // Green - plenty of room
42
- if (percentageUsed < 75)
43
- return '#ffaa00'; // Yellow - getting full
44
- return '#ff4444'; // Red - nearly full
45
- };
46
- const circleIndicator = getCircularIndicator(percentageUsed);
47
- return (React.createElement(Box, null,
48
- React.createElement(Text, { color: getColor() },
49
- circleIndicator,
50
- " ",
51
- formatTokens(currentTokens),
52
- "/",
53
- formatTokens(maxTokens))));
24
+ const ContextWindowIndicator = React.memo(({
25
+ currentTokens,
26
+ maxTokens
27
+ }) => {
28
+ const percentageUsed = Math.min(currentTokens / maxTokens * 100, 100);
29
+ const getColor = () => {
30
+ if (percentageUsed < 50) return "#00cc66";
31
+ if (percentageUsed < 75) return "#ffaa00";
32
+ return "#ff4444";
33
+ };
34
+ const circleIndicator = getCircularIndicator(percentageUsed);
35
+ return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: getColor() }, circleIndicator, " ", formatTokens(currentTokens), "/", formatTokens(maxTokens)));
54
36
  });
37
+ export {
38
+ ContextWindowIndicator
39
+ };
55
40
  //# sourceMappingURL=ContextWindowIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextWindowIndicator.js","sourceRoot":"","sources":["../../../src/ui/components/ContextWindowIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAOhC,qFAAqF;AACrF,MAAM,YAAY,GAAG,CAAC,MAAc,EAAU,EAAE;IAC9C,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEF,0EAA0E;AAC1E,+EAA+E;AAC/E,MAAM,oBAAoB,GAAG,CAAC,cAAsB,EAAU,EAAE;IAC9D,MAAM,mBAAmB,GAAG,GAAG,GAAG,cAAc,CAAC;IACjD,IAAI,mBAAmB,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,CAAM,8BAA8B;IAC7E,IAAI,mBAAmB,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC,CAAG,eAAe;IAC9D,IAAI,mBAAmB,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC,CAAK,oBAAoB;IACnE,IAAI,mBAAmB,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC,CAAG,gBAAgB;IAC/D,IAAI,mBAAmB,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC,CAAK,iBAAiB;IAChE,IAAI,mBAAmB,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC,CAAG,gBAAgB;IAC/D,IAAI,mBAAmB,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC,CAAK,gBAAgB;IAC/D,IAAI,mBAAmB,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC,CAAG,gBAAgB;IAC/D,OAAO,GAAG,CAAC,CAAqC,gCAAgC;AAClF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAA0C,KAAK,CAAC,IAAI,CAAC,CAAC,EACvF,aAAa,EACb,SAAS,EACV,EAAE,EAAE;IACH,oDAAoD;IACpD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IAExE,iCAAiC;IACjC,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,cAAc,GAAG,EAAE;YAAE,OAAO,SAAS,CAAC,CAAC,yBAAyB;QACpE,IAAI,cAAc,GAAG,EAAE;YAAE,OAAO,SAAS,CAAC,CAAC,wBAAwB;QACnE,OAAO,SAAS,CAAC,CAAC,oBAAoB;IACxC,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAE7D,OAAO,CACL,oBAAC,GAAG;QACF,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,EAAE;YACpB,eAAe;;YAAG,YAAY,CAAC,aAAa,CAAC;;YAAG,YAAY,CAAC,SAAS,CAAC,CACnE,CACH,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/ui/components/ContextWindowIndicator.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text } from 'ink';\r\n\r\ninterface ContextWindowIndicatorProps {\r\n currentTokens: number;\r\n maxTokens: number;\r\n}\r\n\r\n// Format number with K suffix for readability (e.g., 2155 -> \"2.2K\", 10000 -> \"10K\")\r\nconst formatTokens = (tokens: number): string => {\r\n if (tokens >= 1000000) {\r\n return `${(tokens / 1000000).toFixed(1)}M`;\r\n }\r\n if (tokens >= 1000) {\r\n return `${(tokens / 1000).toFixed(tokens >= 10000 ? 0 : 1)}K`;\r\n }\r\n return tokens.toString();\r\n};\r\n\r\n// Get circular progress indicator character based on percentage REMAINING\r\n// Uses Unicode pie chart characters - starts FULL and empties as context fills\r\nconst getCircularIndicator = (percentageUsed: number): string => {\r\n const percentageRemaining = 100 - percentageUsed;\r\n if (percentageRemaining <= 0) return '○'; // Empty circle - context full\r\n if (percentageRemaining <= 12.5) return '◔'; // Nearly empty\r\n if (percentageRemaining <= 25) return '◔'; // Quarter remaining\r\n if (percentageRemaining <= 37.5) return '◑'; // 3/8 remaining\r\n if (percentageRemaining <= 50) return '◑'; // Half remaining\r\n if (percentageRemaining <= 62.5) return '◕'; // 5/8 remaining\r\n if (percentageRemaining <= 75) return '◕'; // 3/4 remaining\r\n if (percentageRemaining <= 87.5) return '◕'; // 7/8 remaining\r\n return '●'; // Full circle - plenty of space\r\n};\r\n\r\nexport const ContextWindowIndicator: React.FC<ContextWindowIndicatorProps> = React.memo(({\r\n currentTokens,\r\n maxTokens\r\n}) => {\r\n // Calculate percentage used for color determination\r\n const percentageUsed = Math.min((currentTokens / maxTokens) * 100, 100);\r\n\r\n // Determine color based on usage\r\n const getColor = () => {\r\n if (percentageUsed < 50) return '#00cc66'; // Green - plenty of room\r\n if (percentageUsed < 75) return '#ffaa00'; // Yellow - getting full\r\n return '#ff4444'; // Red - nearly full\r\n };\r\n\r\n const circleIndicator = getCircularIndicator(percentageUsed);\r\n\r\n return (\r\n <Box>\r\n <Text color={getColor()}>\r\n {circleIndicator} {formatTokens(currentTokens)}/{formatTokens(maxTokens)}\r\n </Text>\r\n </Box>\r\n );\r\n});\r\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAQ1B,MAAM,eAAe,CAAC,WAA2B;AAC/C,MAAI,UAAU,KAAS;AACrB,WAAO,IAAI,SAAS,KAAS,QAAQ,CAAC,CAAC;AAAA,EACzC;AACA,MAAI,UAAU,KAAM;AAClB,WAAO,IAAI,SAAS,KAAM,QAAQ,UAAU,MAAQ,IAAI,CAAC,CAAC;AAAA,EAC5D;AACA,SAAO,OAAO,SAAS;AACzB;AAIA,MAAM,uBAAuB,CAAC,mBAAmC;AAC/D,QAAM,sBAAsB,MAAM;AAClC,MAAI,uBAAuB,EAAG,QAAO;AACrC,MAAI,uBAAuB,KAAM,QAAO;AACxC,MAAI,uBAAuB,GAAI,QAAO;AACtC,MAAI,uBAAuB,KAAM,QAAO;AACxC,MAAI,uBAAuB,GAAI,QAAO;AACtC,MAAI,uBAAuB,KAAM,QAAO;AACxC,MAAI,uBAAuB,GAAI,QAAO;AACtC,MAAI,uBAAuB,KAAM,QAAO;AACxC,SAAO;AACT;AAEO,MAAM,yBAAgE,MAAM,KAAK,CAAC;AAAA,EACvF;AAAA,EACA;AACF,MAAM;AAEJ,QAAM,iBAAiB,KAAK,IAAK,gBAAgB,YAAa,KAAK,GAAG;AAGtE,QAAM,WAAW,MAAM;AACrB,QAAI,iBAAiB,GAAI,QAAO;AAChC,QAAI,iBAAiB,GAAI,QAAO;AAChC,WAAO;AAAA,EACT;AAEA,QAAM,kBAAkB,qBAAqB,cAAc;AAE3D,SACE,oCAAC,WACC,oCAAC,QAAK,OAAO,SAAS,KACnB,iBAAgB,KAAE,aAAa,aAAa,GAAE,KAAE,aAAa,SAAS,CACzE,CACF;AAEJ,CAAC;","names":[]}
@@ -1,110 +1,108 @@
1
- /**
2
- * DetailedPlanReviewScreen Component
3
- *
4
- * Enhanced plan approval screen with two visual boxes:
5
- * 1. Task Summary Box - Shows hierarchical task list with subtasks
6
- * 2. Approval Box - Yes/No controls
7
- */
8
- import React, { useState } from 'react';
9
- import { Box, Text, useInput, useStdout } from 'ink';
10
- export const DetailedPlanReviewScreen = ({ plan, onApprove, onEdit }) => {
11
- const { stdout } = useStdout();
12
- const terminalHeight = stdout?.rows || 24;
13
- // Calculate available height for task list (leave room for header, approval box, etc.)
14
- const headerHeight = 6; // Header box + margins
15
- const approvalBoxHeight = 5; // Approval box + margins
16
- const designSummaryHeight = plan.designSummary ? Math.min(8, plan.designSummary.split('\n').length + 2) : 0;
17
- const availableTaskHeight = Math.max(8, terminalHeight - headerHeight - approvalBoxHeight - designSummaryHeight - 4);
18
- // Scroll state for task list
19
- const [scrollOffset, setScrollOffset] = useState(0);
20
- // Calculate total task list height
21
- const taskListItems = [];
22
- plan.steps.forEach((step, taskIndex) => {
23
- const statusIcon = step.status === 'completed' ? '[x]' : '[ ]';
24
- taskListItems.push({
25
- type: 'task',
26
- content: `${taskIndex + 1}. ${step.description}`,
27
- status: statusIcon
28
- });
29
- step.subtasks?.forEach((subtask, subIndex) => {
30
- const subStatusIcon = subtask.status === 'completed' ? '[x]' : '[ ]';
31
- taskListItems.push({
32
- type: 'subtask',
33
- content: ` ${taskIndex + 1}.${subIndex + 1}. ${subtask.description}`,
34
- status: subStatusIcon
35
- });
36
- });
1
+ import React, { useState } from "react";
2
+ import { Box, Text, useInput, useStdout } from "ink";
3
+ const DetailedPlanReviewScreen = ({
4
+ plan,
5
+ onApprove,
6
+ onEdit
7
+ }) => {
8
+ const { stdout } = useStdout();
9
+ const terminalHeight = stdout?.rows || 24;
10
+ const headerHeight = 6;
11
+ const approvalBoxHeight = 5;
12
+ const designSummaryHeight = plan.designSummary ? Math.min(8, plan.designSummary.split("\n").length + 2) : 0;
13
+ const availableTaskHeight = Math.max(8, terminalHeight - headerHeight - approvalBoxHeight - designSummaryHeight - 4);
14
+ const [scrollOffset, setScrollOffset] = useState(0);
15
+ const taskListItems = [];
16
+ plan.steps.forEach((step, taskIndex) => {
17
+ const statusIcon = step.status === "completed" ? "[x]" : "[ ]";
18
+ taskListItems.push({
19
+ type: "task",
20
+ content: `${taskIndex + 1}. ${step.description}`,
21
+ status: statusIcon
37
22
  });
38
- const maxScroll = Math.max(0, taskListItems.length - availableTaskHeight);
39
- // Handle keyboard input
40
- useInput((input, key) => {
41
- if (key.return || input.toLowerCase() === 'y') {
42
- onApprove();
43
- }
44
- else if (input.toLowerCase() === 'n') {
45
- onEdit();
46
- }
47
- else if (key.upArrow) {
48
- setScrollOffset(prev => Math.max(0, prev - 1));
49
- }
50
- else if (key.downArrow) {
51
- setScrollOffset(prev => Math.min(maxScroll, prev + 1));
52
- }
23
+ step.subtasks?.forEach((subtask, subIndex) => {
24
+ const subStatusIcon = subtask.status === "completed" ? "[x]" : "[ ]";
25
+ taskListItems.push({
26
+ type: "subtask",
27
+ content: ` ${taskIndex + 1}.${subIndex + 1}. ${subtask.description}`,
28
+ status: subStatusIcon
29
+ });
53
30
  });
54
- // Get visible task items
55
- const visibleItems = taskListItems.slice(scrollOffset, scrollOffset + availableTaskHeight);
56
- const showScrollUp = scrollOffset > 0;
57
- const showScrollDown = scrollOffset < maxScroll;
58
- // Count totals
59
- const totalTasks = plan.steps.length;
60
- const totalSubtasks = plan.steps.reduce((acc, step) => acc + (step.subtasks?.length || 0), 0);
61
- const totalItems = totalSubtasks > 0 ? totalSubtasks : totalTasks;
62
- return (React.createElement(Box, { flexDirection: "column", paddingX: 1, paddingY: 0 },
63
- React.createElement(Box, { borderStyle: "double", borderColor: "#ffaa00", paddingX: 2, paddingY: 0, marginBottom: 1 },
64
- React.createElement(Text, { color: "#ffaa00", bold: true }, "\uD83D\uDCCB PLAN REVIEW: "),
65
- React.createElement(Text, { color: "#00ccff", bold: true }, plan.title)),
66
- plan.designSummary && (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#4a4a4a", paddingX: 1, paddingY: 0, marginBottom: 1 },
67
- React.createElement(Text, { color: "#666666", dimColor: true }, "\uD83D\uDCD6 Design Summary:"),
68
- React.createElement(Box, { marginLeft: 1 },
69
- React.createElement(Text, { color: "#888888", wrap: "truncate-end" }, plan.designSummary.length > 300
70
- ? plan.designSummary.substring(0, 300) + '...'
71
- : plan.designSummary)))),
72
- plan.summary && (React.createElement(Box, { marginBottom: 1, marginLeft: 1 },
73
- React.createElement(Text, { color: "#888888" }, plan.summary))),
74
- React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00ccff", paddingX: 1, paddingY: 0, marginBottom: 1 },
75
- React.createElement(Box, null,
76
- React.createElement(Text, { color: "#00ccff", bold: true }, "\uD83D\uDCDD Tasks"),
77
- React.createElement(Text, { color: "#666666" },
78
- " (",
79
- totalItems,
80
- " items in ",
81
- totalTasks,
82
- " phases)")),
83
- showScrollUp && (React.createElement(Box, { justifyContent: "center" },
84
- React.createElement(Text, { color: "#666666" }, "\u2191 scroll up (\u2191 key)"))),
85
- React.createElement(Box, { flexDirection: "column", marginY: 0 }, visibleItems.map((item, index) => {
86
- const isTask = item.type === 'task';
87
- return (React.createElement(Box, { key: scrollOffset + index },
88
- React.createElement(Text, { color: isTask ? '#cccccc' : '#999999', wrap: "wrap" },
89
- item.status,
90
- " ",
91
- item.content)));
92
- })),
93
- showScrollDown && (React.createElement(Box, { justifyContent: "center" },
94
- React.createElement(Text, { color: "#666666" }, "\u2193 scroll down (\u2193 key)")))),
95
- React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00cc66", paddingX: 2, paddingY: 0 },
96
- React.createElement(Text, { color: "#00cc66", bold: true }, "Approve Plan?"),
97
- React.createElement(Box, { marginTop: 0 },
98
- React.createElement(Box, { marginRight: 4 },
99
- React.createElement(Text, { color: "#888888" }, "Press "),
100
- React.createElement(Text, { color: "#00cc66", bold: true }, "Y"),
101
- React.createElement(Text, { color: "#888888" }, " or "),
102
- React.createElement(Text, { color: "#00cc66", bold: true }, "Enter"),
103
- React.createElement(Text, { color: "#888888" }, " to approve")),
104
- React.createElement(Box, null,
105
- React.createElement(Text, { color: "#888888" }, "Press "),
106
- React.createElement(Text, { color: "#ff6666", bold: true }, "N"),
107
- React.createElement(Text, { color: "#888888" }, " to reject"))))));
31
+ });
32
+ const maxScroll = Math.max(0, taskListItems.length - availableTaskHeight);
33
+ useInput((input, key) => {
34
+ if (key.return || input.toLowerCase() === "y") {
35
+ onApprove();
36
+ } else if (input.toLowerCase() === "n") {
37
+ onEdit();
38
+ } else if (key.upArrow) {
39
+ setScrollOffset((prev) => Math.max(0, prev - 1));
40
+ } else if (key.downArrow) {
41
+ setScrollOffset((prev) => Math.min(maxScroll, prev + 1));
42
+ }
43
+ });
44
+ const visibleItems = taskListItems.slice(scrollOffset, scrollOffset + availableTaskHeight);
45
+ const showScrollUp = scrollOffset > 0;
46
+ const showScrollDown = scrollOffset < maxScroll;
47
+ const totalTasks = plan.steps.length;
48
+ const totalSubtasks = plan.steps.reduce((acc, step) => acc + (step.subtasks?.length || 0), 0);
49
+ const totalItems = totalSubtasks > 0 ? totalSubtasks : totalTasks;
50
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", paddingX: 1, paddingY: 0 }, /* @__PURE__ */ React.createElement(
51
+ Box,
52
+ {
53
+ borderStyle: "double",
54
+ borderColor: "#ffaa00",
55
+ paddingX: 2,
56
+ paddingY: 0,
57
+ marginBottom: 1
58
+ },
59
+ /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", bold: true }, "\u{1F4CB} PLAN REVIEW: "),
60
+ /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, plan.title)
61
+ ), plan.designSummary && /* @__PURE__ */ React.createElement(
62
+ Box,
63
+ {
64
+ flexDirection: "column",
65
+ borderStyle: "round",
66
+ borderColor: "#4a4a4a",
67
+ paddingX: 1,
68
+ paddingY: 0,
69
+ marginBottom: 1
70
+ },
71
+ /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "\u{1F4D6} Design Summary:"),
72
+ /* @__PURE__ */ React.createElement(Box, { marginLeft: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#888888", wrap: "truncate-end" }, plan.designSummary.length > 300 ? plan.designSummary.substring(0, 300) + "..." : plan.designSummary))
73
+ ), plan.summary && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1, marginLeft: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, plan.summary)), /* @__PURE__ */ React.createElement(
74
+ Box,
75
+ {
76
+ flexDirection: "column",
77
+ borderStyle: "round",
78
+ borderColor: "#00ccff",
79
+ paddingX: 1,
80
+ paddingY: 0,
81
+ marginBottom: 1
82
+ },
83
+ /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, "\u{1F4DD} Tasks"), /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, " (", totalItems, " items in ", totalTasks, " phases)")),
84
+ showScrollUp && /* @__PURE__ */ React.createElement(Box, { justifyContent: "center" }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "\u2191 scroll up (\u2191 key)")),
85
+ /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginY: 0 }, visibleItems.map((item, index) => {
86
+ const isTask = item.type === "task";
87
+ return /* @__PURE__ */ React.createElement(Box, { key: scrollOffset + index }, /* @__PURE__ */ React.createElement(Text, { color: isTask ? "#cccccc" : "#999999", wrap: "wrap" }, item.status, " ", item.content));
88
+ })),
89
+ showScrollDown && /* @__PURE__ */ React.createElement(Box, { justifyContent: "center" }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "\u2193 scroll down (\u2193 key)"))
90
+ ), /* @__PURE__ */ React.createElement(
91
+ Box,
92
+ {
93
+ flexDirection: "column",
94
+ borderStyle: "round",
95
+ borderColor: "#00cc66",
96
+ paddingX: 2,
97
+ paddingY: 0
98
+ },
99
+ /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Approve Plan?"),
100
+ /* @__PURE__ */ React.createElement(Box, { marginTop: 0 }, /* @__PURE__ */ React.createElement(Box, { marginRight: 4 }, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, "Press "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Y"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " or "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Enter"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " to approve")), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, "Press "), /* @__PURE__ */ React.createElement(Text, { color: "#ff6666", bold: true }, "N"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " to reject")))
101
+ ));
102
+ };
103
+ var DetailedPlanReviewScreen_default = DetailedPlanReviewScreen;
104
+ export {
105
+ DetailedPlanReviewScreen,
106
+ DetailedPlanReviewScreen_default as default
108
107
  };
109
- export default DetailedPlanReviewScreen;
110
108
  //# sourceMappingURL=DetailedPlanReviewScreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailedPlanReviewScreen.js","sourceRoot":"","sources":["../../../src/ui/components/DetailedPlanReviewScreen.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ui/components/DetailedPlanReviewScreen.tsx"],"sourcesContent":["/**\r\n * DetailedPlanReviewScreen Component\r\n * \r\n * Enhanced plan approval screen with two visual boxes:\r\n * 1. Task Summary Box - Shows hierarchical task list with subtasks\r\n * 2. Approval Box - Yes/No controls\r\n */\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { Box, Text, useInput, useStdout } from 'ink';\r\nimport { Plan, PlanStep, PlanSubtask } from '../../tools/plan-mode.js';\r\n\r\ninterface DetailedPlanReviewScreenProps {\r\n plan: Plan;\r\n onApprove: () => void;\r\n onEdit: () => void;\r\n}\r\n\r\nexport const DetailedPlanReviewScreen: React.FC<DetailedPlanReviewScreenProps> = ({\r\n plan,\r\n onApprove,\r\n onEdit\r\n}) => {\r\n const { stdout } = useStdout();\r\n const terminalHeight = stdout?.rows || 24;\r\n\r\n // Calculate available height for task list (leave room for header, approval box, etc.)\r\n const headerHeight = 6; // Header box + margins\r\n const approvalBoxHeight = 5; // Approval box + margins\r\n const designSummaryHeight = plan.designSummary ? Math.min(8, plan.designSummary.split('\\n').length + 2) : 0;\r\n const availableTaskHeight = Math.max(8, terminalHeight - headerHeight - approvalBoxHeight - designSummaryHeight - 4);\r\n\r\n // Scroll state for task list\r\n const [scrollOffset, setScrollOffset] = useState(0);\r\n\r\n // Calculate total task list height\r\n const taskListItems: Array<{ type: 'task' | 'subtask'; content: string; status: string }> = [];\r\n plan.steps.forEach((step, taskIndex) => {\r\n const statusIcon = step.status === 'completed' ? '[x]' : '[ ]';\r\n taskListItems.push({\r\n type: 'task',\r\n content: `${taskIndex + 1}. ${step.description}`,\r\n status: statusIcon\r\n });\r\n\r\n step.subtasks?.forEach((subtask, subIndex) => {\r\n const subStatusIcon = subtask.status === 'completed' ? '[x]' : '[ ]';\r\n taskListItems.push({\r\n type: 'subtask',\r\n content: ` ${taskIndex + 1}.${subIndex + 1}. ${subtask.description}`,\r\n status: subStatusIcon\r\n });\r\n });\r\n });\r\n\r\n const maxScroll = Math.max(0, taskListItems.length - availableTaskHeight);\r\n\r\n // Handle keyboard input\r\n useInput((input, key) => {\r\n if (key.return || input.toLowerCase() === 'y') {\r\n onApprove();\r\n } else if (input.toLowerCase() === 'n') {\r\n onEdit();\r\n } else if (key.upArrow) {\r\n setScrollOffset(prev => Math.max(0, prev - 1));\r\n } else if (key.downArrow) {\r\n setScrollOffset(prev => Math.min(maxScroll, prev + 1));\r\n }\r\n });\r\n\r\n // Get visible task items\r\n const visibleItems = taskListItems.slice(scrollOffset, scrollOffset + availableTaskHeight);\r\n const showScrollUp = scrollOffset > 0;\r\n const showScrollDown = scrollOffset < maxScroll;\r\n\r\n // Count totals\r\n const totalTasks = plan.steps.length;\r\n const totalSubtasks = plan.steps.reduce((acc, step) => acc + (step.subtasks?.length || 0), 0);\r\n const totalItems = totalSubtasks > 0 ? totalSubtasks : totalTasks;\r\n\r\n return (\r\n <Box flexDirection=\"column\" paddingX={1} paddingY={0}>\r\n {/* Header */}\r\n <Box\r\n borderStyle=\"double\"\r\n borderColor=\"#ffaa00\"\r\n paddingX={2}\r\n paddingY={0}\r\n marginBottom={1}\r\n >\r\n <Text color=\"#ffaa00\" bold>📋 PLAN REVIEW: </Text>\r\n <Text color=\"#00ccff\" bold>{plan.title}</Text>\r\n </Box>\r\n\r\n {/* Design Summary (collapsible/truncated if too long) */}\r\n {plan.designSummary && (\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#4a4a4a\"\r\n paddingX={1}\r\n paddingY={0}\r\n marginBottom={1}\r\n >\r\n <Text color=\"#666666\" dimColor>📖 Design Summary:</Text>\r\n <Box marginLeft={1}>\r\n <Text color=\"#888888\" wrap=\"truncate-end\">\r\n {plan.designSummary.length > 300\r\n ? plan.designSummary.substring(0, 300) + '...'\r\n : plan.designSummary}\r\n </Text>\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Summary */}\r\n {plan.summary && (\r\n <Box marginBottom={1} marginLeft={1}>\r\n <Text color=\"#888888\">{plan.summary}</Text>\r\n </Box>\r\n )}\r\n\r\n {/* Task Summary Box */}\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#00ccff\"\r\n paddingX={1}\r\n paddingY={0}\r\n marginBottom={1}\r\n >\r\n {/* Tasks Header */}\r\n <Box>\r\n <Text color=\"#00ccff\" bold>📝 Tasks</Text>\r\n <Text color=\"#666666\"> ({totalItems} items in {totalTasks} phases)</Text>\r\n </Box>\r\n\r\n {/* Scroll indicator (up) */}\r\n {showScrollUp && (\r\n <Box justifyContent=\"center\">\r\n <Text color=\"#666666\">↑ scroll up (↑ key)</Text>\r\n </Box>\r\n )}\r\n\r\n {/* Task List */}\r\n <Box flexDirection=\"column\" marginY={0}>\r\n {visibleItems.map((item, index) => {\r\n const isTask = item.type === 'task';\r\n return (\r\n <Box key={scrollOffset + index}>\r\n <Text color={isTask ? '#cccccc' : '#999999'} wrap=\"wrap\">\r\n {item.status} {item.content}\r\n </Text>\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n\r\n {/* Scroll indicator (down) */}\r\n {showScrollDown && (\r\n <Box justifyContent=\"center\">\r\n <Text color=\"#666666\">↓ scroll down (↓ key)</Text>\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n {/* Approval Box */}\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#00cc66\"\r\n paddingX={2}\r\n paddingY={0}\r\n >\r\n <Text color=\"#00cc66\" bold>Approve Plan?</Text>\r\n <Box marginTop={0}>\r\n <Box marginRight={4}>\r\n <Text color=\"#888888\">Press </Text>\r\n <Text color=\"#00cc66\" bold>Y</Text>\r\n <Text color=\"#888888\"> or </Text>\r\n <Text color=\"#00cc66\" bold>Enter</Text>\r\n <Text color=\"#888888\"> to approve</Text>\r\n </Box>\r\n <Box>\r\n <Text color=\"#888888\">Press </Text>\r\n <Text color=\"#ff6666\" bold>N</Text>\r\n <Text color=\"#888888\"> to reject</Text>\r\n </Box>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default DetailedPlanReviewScreen;\r\n"],"mappings":"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","names":[]}