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,20 +1,39 @@
1
- import React, { useState } from 'react';
2
- import { Box, Text } from 'ink';
3
- import TextInput from 'ink-text-input';
4
- export const PasswordPrompt = ({ message, onSubmit, onCancel }) => {
5
- const [password, setPassword] = useState('');
6
- const handleSubmit = () => {
7
- if (password.trim()) {
8
- onSubmit(password);
9
- }
10
- };
11
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, paddingY: 0, marginY: 1 },
12
- React.createElement(Box, { marginY: 1 },
13
- React.createElement(Text, { color: "cyan", bold: true }, message)),
14
- React.createElement(Box, null,
15
- React.createElement(Text, { color: "#666666" }, "> "),
16
- React.createElement(TextInput, { value: password, onChange: setPassword, onSubmit: handleSubmit, placeholder: "Enter password...", mask: "*", showCursor: true })),
17
- React.createElement(Box, { marginTop: 1 },
18
- React.createElement(Text, { color: "#666666", dimColor: true }, "Press Enter to submit \u2022 Ctrl+C to cancel"))));
1
+ import React, { useState } from "react";
2
+ import { Box, Text } from "ink";
3
+ import TextInput from "ink-text-input";
4
+ const PasswordPrompt = ({ message, onSubmit, onCancel }) => {
5
+ const [password, setPassword] = useState("");
6
+ const handleSubmit = () => {
7
+ if (password.trim()) {
8
+ onSubmit(password);
9
+ }
10
+ };
11
+ return /* @__PURE__ */ React.createElement(
12
+ Box,
13
+ {
14
+ flexDirection: "column",
15
+ borderStyle: "round",
16
+ borderColor: "cyan",
17
+ paddingX: 1,
18
+ paddingY: 0,
19
+ marginY: 1
20
+ },
21
+ /* @__PURE__ */ React.createElement(Box, { marginY: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "cyan", bold: true }, message)),
22
+ /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "> "), /* @__PURE__ */ React.createElement(
23
+ TextInput,
24
+ {
25
+ value: password,
26
+ onChange: setPassword,
27
+ onSubmit: handleSubmit,
28
+ placeholder: "Enter password...",
29
+ mask: "*",
30
+ showCursor: true
31
+ }
32
+ )),
33
+ /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "Press Enter to submit \u2022 Ctrl+C to cancel"))
34
+ );
35
+ };
36
+ export {
37
+ PasswordPrompt
19
38
  };
20
39
  //# sourceMappingURL=PasswordPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordPrompt.js","sourceRoot":"","sources":["../../../src/ui/components/PasswordPrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAQvC,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC/F,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC;QAEV,oBAAC,GAAG,IAAC,OAAO,EAAE,CAAC;YACb,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,UAAE,OAAO,CAAQ,CACpC;QACN,oBAAC,GAAG;YACF,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,SAAa;YAClC,oBAAC,SAAS,IACR,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAC,mBAAmB,EAC/B,IAAI,EAAC,GAAG,EACR,UAAU,EAAE,IAAI,GAChB,CACE;QACN,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;YACf,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,0DAEvB,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/ui/components/PasswordPrompt.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport TextInput from 'ink-text-input';\r\n\r\ninterface PasswordPromptProps {\r\n message: string;\r\n onSubmit: (password: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport const PasswordPrompt: React.FC<PasswordPromptProps> = ({ message, onSubmit, onCancel }) => {\r\n const [password, setPassword] = useState('');\r\n\r\n const handleSubmit = () => {\r\n if (password.trim()) {\r\n onSubmit(password);\r\n }\r\n };\r\n\r\n return (\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"cyan\"\r\n paddingX={1}\r\n paddingY={0}\r\n marginY={1}\r\n >\r\n <Box marginY={1}>\r\n <Text color=\"cyan\" bold>{message}</Text>\r\n </Box>\r\n <Box>\r\n <Text color=\"#666666\">&gt; </Text>\r\n <TextInput\r\n value={password}\r\n onChange={setPassword}\r\n onSubmit={handleSubmit}\r\n placeholder=\"Enter password...\"\r\n mask=\"*\"\r\n showCursor={true}\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text color=\"#666666\" dimColor>\r\n Press Enter to submit • Ctrl+C to cancel\r\n </Text>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,SAAS,gBAAgB;AAChC,SAAS,KAAK,YAAY;AAC1B,OAAO,eAAe;AAQf,MAAM,iBAAgD,CAAC,EAAE,SAAS,UAAU,SAAS,MAAM;AAChG,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,EAAE;AAE3C,QAAM,eAAe,MAAM;AACzB,QAAI,SAAS,KAAK,GAAG;AACnB,eAAS,QAAQ;AAAA,IACnB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA;AAAA,IAET,oCAAC,OAAI,SAAS,KACZ,oCAAC,QAAK,OAAM,QAAO,MAAI,QAAE,OAAQ,CACnC;AAAA,IACA,oCAAC,WACC,oCAAC,QAAK,OAAM,aAAU,IAAK,GAC3B;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,QACV,aAAY;AAAA,QACZ,MAAK;AAAA,QACL,YAAY;AAAA;AAAA,IACd,CACF;AAAA,IACA,oCAAC,OAAI,WAAW,KACd,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,+CAE/B,CACF;AAAA,EACF;AAEJ;","names":[]}
@@ -1,40 +1,29 @@
1
- /**
2
- * PlanAcceptedMessage Component
3
- * Displays a message when the plan is accepted and execution begins
4
- * Shows all tasks and subtasks as a static reference
5
- */
6
- import React from 'react';
7
- import { Box, Text } from 'ink';
8
- export const PlanAcceptedMessage = ({ planTitle, totalTasks, tasks }) => {
9
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00cc66", paddingX: 1, paddingY: 0, marginY: 0, alignSelf: "flex-start" },
10
- React.createElement(Box, null,
11
- React.createElement(Text, { color: "#00cc66", bold: true }, "\u2713 "),
12
- React.createElement(Text, { color: "#00cc66", bold: true }, "Plan Accepted"),
13
- planTitle && (React.createElement(Text, { color: "#888888" },
14
- " - ",
15
- planTitle))),
16
- tasks && tasks.length > 0 && (React.createElement(Box, { flexDirection: "column", marginTop: 0, marginLeft: 2 }, tasks.map((task, taskIndex) => (React.createElement(Box, { key: taskIndex, flexDirection: "column" },
17
- React.createElement(Box, null,
18
- React.createElement(Text, { color: "#00ccff" }, "[ ] "),
19
- React.createElement(Text, { color: "#cccccc", wrap: "wrap" },
20
- taskIndex + 1,
21
- ". ",
22
- task.description)),
23
- task.subtasks && task.subtasks.map((subtask, subIndex) => (React.createElement(Box, { key: subIndex, marginLeft: 3 },
24
- React.createElement(Text, { color: "#666666" }, "[ ] "),
25
- React.createElement(Text, { color: "#888888", wrap: "wrap" },
26
- taskIndex + 1,
27
- ".",
28
- subIndex + 1,
29
- ". ",
30
- subtask.description))))))))),
31
- React.createElement(Box, { marginTop: 0, marginLeft: 2 },
32
- React.createElement(Text, { color: "#666666", dimColor: true },
33
- "Starting execution of ",
34
- totalTasks || 0,
35
- " task",
36
- (totalTasks || 0) > 1 ? 's' : '',
37
- "..."))));
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ const PlanAcceptedMessage = ({
4
+ planTitle,
5
+ totalTasks,
6
+ tasks
7
+ }) => {
8
+ return /* @__PURE__ */ React.createElement(
9
+ Box,
10
+ {
11
+ flexDirection: "column",
12
+ borderStyle: "round",
13
+ borderColor: "#00cc66",
14
+ paddingX: 1,
15
+ paddingY: 0,
16
+ marginY: 0,
17
+ alignSelf: "flex-start"
18
+ },
19
+ /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "\u2713 "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Plan Accepted"), planTitle && /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " - ", planTitle)),
20
+ tasks && tasks.length > 0 && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginTop: 0, marginLeft: 2 }, tasks.map((task, taskIndex) => /* @__PURE__ */ React.createElement(Box, { key: taskIndex, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff" }, "[ ] "), /* @__PURE__ */ React.createElement(Text, { color: "#cccccc", wrap: "wrap" }, taskIndex + 1, ". ", task.description)), task.subtasks && task.subtasks.map((subtask, subIndex) => /* @__PURE__ */ React.createElement(Box, { key: subIndex, marginLeft: 3 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "[ ] "), /* @__PURE__ */ React.createElement(Text, { color: "#888888", wrap: "wrap" }, taskIndex + 1, ".", subIndex + 1, ". ", subtask.description)))))),
21
+ /* @__PURE__ */ React.createElement(Box, { marginTop: 0, marginLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "Starting execution of ", totalTasks || 0, " task", (totalTasks || 0) > 1 ? "s" : "", "..."))
22
+ );
23
+ };
24
+ var PlanAcceptedMessage_default = PlanAcceptedMessage;
25
+ export {
26
+ PlanAcceptedMessage,
27
+ PlanAcceptedMessage_default as default
38
28
  };
39
- export default PlanAcceptedMessage;
40
29
  //# sourceMappingURL=PlanAcceptedMessage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanAcceptedMessage.js","sourceRoot":"","sources":["../../../src/ui/components/PlanAcceptedMessage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAahC,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EACpE,SAAS,EACT,UAAU,EACV,KAAK,EACR,EAAE,EAAE;IACD,OAAO,CACH,oBAAC,GAAG,IACA,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,SAAS,EACrB,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC,EACV,SAAS,EAAC,YAAY;QAGtB,oBAAC,GAAG;YACA,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,oBAAU;YACpC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,0BAAqB;YAC9C,SAAS,IAAI,CACV,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;gBAAK,SAAS,CAAQ,CAC9C,CACC;QAGL,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1B,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,IAClD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAC5B,oBAAC,GAAG,IAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAC,QAAQ;YAEvC,oBAAC,GAAG;gBACA,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,WAAY;gBACjC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM;oBAC5B,SAAS,GAAG,CAAC;;oBAAI,IAAI,CAAC,WAAW,CAC/B,CACL;YAEL,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CACvD,oBAAC,GAAG,IAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;gBAC7B,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,WAAY;gBACjC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM;oBAC5B,SAAS,GAAG,CAAC;;oBAAG,QAAQ,GAAG,CAAC;;oBAAI,OAAO,CAAC,WAAW,CACjD,CACL,CACT,CAAC,CACA,CACT,CAAC,CACA,CACT;QAGD,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC5B,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ;;gBACH,UAAU,IAAI,CAAC;;gBAAO,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;sBAC1E,CACL,CACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"sources":["../../../src/ui/components/PlanAcceptedMessage.tsx"],"sourcesContent":["/**\r\n * PlanAcceptedMessage Component\r\n * Displays a message when the plan is accepted and execution begins\r\n * Shows all tasks and subtasks as a static reference\r\n */\r\n\r\nimport React from 'react';\r\nimport { Box, Text } from 'ink';\r\n\r\ninterface TaskItem {\r\n description: string;\r\n subtasks?: Array<{ description: string }>;\r\n}\r\n\r\ninterface PlanAcceptedMessageProps {\r\n planTitle?: string;\r\n totalTasks?: number;\r\n tasks?: TaskItem[];\r\n}\r\n\r\nexport const PlanAcceptedMessage: React.FC<PlanAcceptedMessageProps> = ({\r\n planTitle,\r\n totalTasks,\r\n tasks\r\n}) => {\r\n return (\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#00cc66\"\r\n paddingX={1}\r\n paddingY={0}\r\n marginY={0}\r\n alignSelf=\"flex-start\"\r\n >\r\n {/* Header */}\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ </Text>\r\n <Text color=\"#00cc66\" bold>Plan Accepted</Text>\r\n {planTitle && (\r\n <Text color=\"#888888\"> - {planTitle}</Text>\r\n )}\r\n </Box>\r\n\r\n {/* Task List */}\r\n {tasks && tasks.length > 0 && (\r\n <Box flexDirection=\"column\" marginTop={0} marginLeft={2}>\r\n {tasks.map((task, taskIndex) => (\r\n <Box key={taskIndex} flexDirection=\"column\">\r\n {/* Main task */}\r\n <Box>\r\n <Text color=\"#00ccff\">[ ] </Text>\r\n <Text color=\"#cccccc\" wrap=\"wrap\">\r\n {taskIndex + 1}. {task.description}\r\n </Text>\r\n </Box>\r\n {/* Subtasks */}\r\n {task.subtasks && task.subtasks.map((subtask, subIndex) => (\r\n <Box key={subIndex} marginLeft={3}>\r\n <Text color=\"#666666\">[ ] </Text>\r\n <Text color=\"#888888\" wrap=\"wrap\">\r\n {taskIndex + 1}.{subIndex + 1}. {subtask.description}\r\n </Text>\r\n </Box>\r\n ))}\r\n </Box>\r\n ))}\r\n </Box>\r\n )}\r\n\r\n {/* Starting message */}\r\n <Box marginTop={0} marginLeft={2}>\r\n <Text color=\"#666666\" dimColor>\r\n Starting execution of {totalTasks || 0} task{(totalTasks || 0) > 1 ? 's' : ''}...\r\n </Text>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default PlanAcceptedMessage;\r\n"],"mappings":"AAMA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAanB,MAAM,sBAA0D,CAAC;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAU;AAAA;AAAA,IAGV,oCAAC,WACG,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,SAAE,GAC7B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,eAAa,GACvC,aACG,oCAAC,QAAK,OAAM,aAAU,OAAI,SAAU,CAE5C;AAAA,IAGC,SAAS,MAAM,SAAS,KACrB,oCAAC,OAAI,eAAc,UAAS,WAAW,GAAG,YAAY,KACjD,MAAM,IAAI,CAAC,MAAM,cACd,oCAAC,OAAI,KAAK,WAAW,eAAc,YAE/B,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,MAAI,GAC1B,oCAAC,QAAK,OAAM,WAAU,MAAK,UACtB,YAAY,GAAE,MAAG,KAAK,WAC3B,CACJ,GAEC,KAAK,YAAY,KAAK,SAAS,IAAI,CAAC,SAAS,aAC1C,oCAAC,OAAI,KAAK,UAAU,YAAY,KAC5B,oCAAC,QAAK,OAAM,aAAU,MAAI,GAC1B,oCAAC,QAAK,OAAM,WAAU,MAAK,UACtB,YAAY,GAAE,KAAE,WAAW,GAAE,MAAG,QAAQ,WAC7C,CACJ,CACH,CACL,CACH,CACL;AAAA,IAIJ,oCAAC,OAAI,WAAW,GAAG,YAAY,KAC3B,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,0BACJ,cAAc,GAAE,UAAO,cAAc,KAAK,IAAI,MAAM,IAAG,KAClF,CACJ;AAAA,EACJ;AAER;AAEA,IAAO,8BAAQ;","names":[]}
@@ -1,52 +1,48 @@
1
- /**
2
- * PlanReviewScreen Component
3
- * Dedicated screen for reviewing and approving/editing a plan
4
- */
5
- import React from 'react';
6
- import { Box, Text, useInput } from 'ink';
7
- export const PlanReviewScreen = ({ plan, onApprove, onEdit }) => {
8
- // Handle keyboard input
9
- useInput((input, key) => {
10
- if (key.return || input.toLowerCase() === 'y') {
11
- onApprove();
12
- }
13
- else if (input.toLowerCase() === 'e' || input.toLowerCase() === 'n') {
14
- onEdit();
15
- }
16
- });
17
- return (React.createElement(Box, { flexDirection: "column", paddingX: 2, paddingY: 1 },
18
- React.createElement(Box, { borderStyle: "double", borderColor: "#ffaa00", paddingX: 2, paddingY: 1, marginBottom: 1 },
19
- React.createElement(Text, { color: "#ffaa00", bold: true }, "\uD83D\uDCCB PLAN REVIEW")),
20
- React.createElement(Box, { marginBottom: 1 },
21
- React.createElement(Text, { color: "#00ccff", bold: true }, plan.title)),
22
- plan.summary && (React.createElement(Box, { marginBottom: 1 },
23
- React.createElement(Text, { color: "#888888" }, plan.summary))),
24
- React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#666666", paddingX: 1, paddingY: 1, marginBottom: 1 },
25
- React.createElement(Text, { color: "#888888", dimColor: true }, "Tasks to execute:"),
26
- React.createElement(Box, { flexDirection: "column", marginTop: 1 }, plan.steps.map((step, index) => {
27
- const complexityColor = step.estimatedComplexity === 'high' ? '#ff6666' :
28
- step.estimatedComplexity === 'medium' ? '#ffaa00' : '#00cc66';
29
- const complexityLabel = step.estimatedComplexity ? ` [${step.estimatedComplexity}]` : '';
30
- return (React.createElement(Box, { key: step.id },
31
- React.createElement(Text, { color: "#888888" },
32
- index + 1,
33
- ". "),
34
- React.createElement(Text, null, step.description),
35
- step.estimatedComplexity && (React.createElement(Text, { color: complexityColor }, complexityLabel))));
36
- }))),
37
- React.createElement(Box, { marginTop: 1, flexDirection: "column" },
38
- React.createElement(Box, null,
39
- React.createElement(Text, { color: "#888888" }, "Press "),
40
- React.createElement(Text, { color: "#00cc66", bold: true }, "Enter"),
41
- React.createElement(Text, { color: "#888888" }, " or "),
42
- React.createElement(Text, { color: "#00cc66", bold: true }, "Y"),
43
- React.createElement(Text, { color: "#888888" }, " to proceed with plan")),
44
- React.createElement(Box, null,
45
- React.createElement(Text, { color: "#888888" }, "Press "),
46
- React.createElement(Text, { color: "#ffaa00", bold: true }, "E"),
47
- React.createElement(Text, { color: "#888888" }, " or "),
48
- React.createElement(Text, { color: "#ffaa00", bold: true }, "N"),
49
- React.createElement(Text, { color: "#888888" }, " to edit plan (provide feedback)")))));
1
+ import React from "react";
2
+ import { Box, Text, useInput } from "ink";
3
+ const PlanReviewScreen = ({
4
+ plan,
5
+ onApprove,
6
+ onEdit
7
+ }) => {
8
+ useInput((input, key) => {
9
+ if (key.return || input.toLowerCase() === "y") {
10
+ onApprove();
11
+ } else if (input.toLowerCase() === "e" || input.toLowerCase() === "n") {
12
+ onEdit();
13
+ }
14
+ });
15
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", paddingX: 2, paddingY: 1 }, /* @__PURE__ */ React.createElement(
16
+ Box,
17
+ {
18
+ borderStyle: "double",
19
+ borderColor: "#ffaa00",
20
+ paddingX: 2,
21
+ paddingY: 1,
22
+ marginBottom: 1
23
+ },
24
+ /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", bold: true }, "\u{1F4CB} PLAN REVIEW")
25
+ ), /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, plan.title)), plan.summary && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, plan.summary)), /* @__PURE__ */ React.createElement(
26
+ Box,
27
+ {
28
+ flexDirection: "column",
29
+ borderStyle: "round",
30
+ borderColor: "#666666",
31
+ paddingX: 1,
32
+ paddingY: 1,
33
+ marginBottom: 1
34
+ },
35
+ /* @__PURE__ */ React.createElement(Text, { color: "#888888", dimColor: true }, "Tasks to execute:"),
36
+ /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginTop: 1 }, plan.steps.map((step, index) => {
37
+ const complexityColor = step.estimatedComplexity === "high" ? "#ff6666" : step.estimatedComplexity === "medium" ? "#ffaa00" : "#00cc66";
38
+ const complexityLabel = step.estimatedComplexity ? ` [${step.estimatedComplexity}]` : "";
39
+ return /* @__PURE__ */ React.createElement(Box, { key: step.id }, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, index + 1, ". "), /* @__PURE__ */ React.createElement(Text, null, step.description), step.estimatedComplexity && /* @__PURE__ */ React.createElement(Text, { color: complexityColor }, complexityLabel));
40
+ }))
41
+ ), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, "Press "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Enter"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " or "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Y"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " to proceed with plan")), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, "Press "), /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", bold: true }, "E"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " or "), /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", bold: true }, "N"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " to edit plan (provide feedback)"))));
42
+ };
43
+ var PlanReviewScreen_default = PlanReviewScreen;
44
+ export {
45
+ PlanReviewScreen,
46
+ PlanReviewScreen_default as default
50
47
  };
51
- export default PlanReviewScreen;
52
48
  //# sourceMappingURL=PlanReviewScreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanReviewScreen.js","sourceRoot":"","sources":["../../../src/ui/components/PlanReviewScreen.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ui/components/PlanReviewScreen.tsx"],"sourcesContent":["/**\r\n * PlanReviewScreen Component\r\n * Dedicated screen for reviewing and approving/editing a plan\r\n */\r\n\r\nimport React from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\nimport { Plan } from '../../tools/plan-mode.js';\r\n\r\ninterface PlanReviewScreenProps {\r\n plan: Plan;\r\n onApprove: () => void;\r\n onEdit: () => void;\r\n}\r\n\r\nexport const PlanReviewScreen: React.FC<PlanReviewScreenProps> = ({\r\n plan,\r\n onApprove,\r\n onEdit\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() === 'e' || input.toLowerCase() === 'n') {\r\n onEdit();\r\n }\r\n });\r\n\r\n return (\r\n <Box flexDirection=\"column\" paddingX={2} paddingY={1}>\r\n {/* Header */}\r\n <Box\r\n borderStyle=\"double\"\r\n borderColor=\"#ffaa00\"\r\n paddingX={2}\r\n paddingY={1}\r\n marginBottom={1}\r\n >\r\n <Text color=\"#ffaa00\" bold>📋 PLAN REVIEW</Text>\r\n </Box>\r\n\r\n {/* Plan Title */}\r\n <Box marginBottom={1}>\r\n <Text color=\"#00ccff\" bold>{plan.title}</Text>\r\n </Box>\r\n\r\n {/* Plan Summary */}\r\n {plan.summary && (\r\n <Box marginBottom={1}>\r\n <Text color=\"#888888\">{plan.summary}</Text>\r\n </Box>\r\n )}\r\n\r\n {/* Tasks List */}\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#666666\"\r\n paddingX={1}\r\n paddingY={1}\r\n marginBottom={1}\r\n >\r\n <Text color=\"#888888\" dimColor>Tasks to execute:</Text>\r\n <Box flexDirection=\"column\" marginTop={1}>\r\n {plan.steps.map((step, index) => {\r\n const complexityColor = step.estimatedComplexity === 'high' ? '#ff6666' :\r\n step.estimatedComplexity === 'medium' ? '#ffaa00' : '#00cc66';\r\n const complexityLabel = step.estimatedComplexity ? ` [${step.estimatedComplexity}]` : '';\r\n\r\n return (\r\n <Box key={step.id}>\r\n <Text color=\"#888888\">{index + 1}. </Text>\r\n <Text>{step.description}</Text>\r\n {step.estimatedComplexity && (\r\n <Text color={complexityColor}>{complexityLabel}</Text>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n </Box>\r\n\r\n {/* Action Buttons */}\r\n <Box marginTop={1} flexDirection=\"column\">\r\n <Box>\r\n <Text color=\"#888888\">Press </Text>\r\n <Text color=\"#00cc66\" bold>Enter</Text>\r\n <Text color=\"#888888\"> or </Text>\r\n <Text color=\"#00cc66\" bold>Y</Text>\r\n <Text color=\"#888888\"> to proceed with plan</Text>\r\n </Box>\r\n <Box>\r\n <Text color=\"#888888\">Press </Text>\r\n <Text color=\"#ffaa00\" bold>E</Text>\r\n <Text color=\"#888888\"> or </Text>\r\n <Text color=\"#ffaa00\" bold>N</Text>\r\n <Text color=\"#888888\"> to edit plan (provide feedback)</Text>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default PlanReviewScreen;\r\n"],"mappings":"AAKA,OAAO,WAAW;AAClB,SAAS,KAAK,MAAM,gBAAgB;AAS7B,MAAM,mBAAoD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AAEF,WAAS,CAAC,OAAO,QAAQ;AACrB,QAAI,IAAI,UAAU,MAAM,YAAY,MAAM,KAAK;AAC3C,gBAAU;AAAA,IACd,WAAW,MAAM,YAAY,MAAM,OAAO,MAAM,YAAY,MAAM,KAAK;AACnE,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AAED,SACI,oCAAC,OAAI,eAAc,UAAS,UAAU,GAAG,UAAU,KAE/C;AAAA,IAAC;AAAA;AAAA,MACG,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA;AAAA,IAEd,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,uBAAc;AAAA,EAC7C,GAGA,oCAAC,OAAI,cAAc,KACf,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAE,KAAK,KAAM,CAC3C,GAGC,KAAK,WACF,oCAAC,OAAI,cAAc,KACf,oCAAC,QAAK,OAAM,aAAW,KAAK,OAAQ,CACxC,GAIJ;AAAA,IAAC;AAAA;AAAA,MACG,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA;AAAA,IAEd,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,mBAAiB;AAAA,IAChD,oCAAC,OAAI,eAAc,UAAS,WAAW,KAClC,KAAK,MAAM,IAAI,CAAC,MAAM,UAAU;AAC7B,YAAM,kBAAkB,KAAK,wBAAwB,SAAS,YAC1D,KAAK,wBAAwB,WAAW,YAAY;AACxD,YAAM,kBAAkB,KAAK,sBAAsB,KAAK,KAAK,mBAAmB,MAAM;AAEtF,aACI,oCAAC,OAAI,KAAK,KAAK,MACX,oCAAC,QAAK,OAAM,aAAW,QAAQ,GAAE,IAAE,GACnC,oCAAC,YAAM,KAAK,WAAY,GACvB,KAAK,uBACF,oCAAC,QAAK,OAAO,mBAAkB,eAAgB,CAEvD;AAAA,IAER,CAAC,CACL;AAAA,EACJ,GAGA,oCAAC,OAAI,WAAW,GAAG,eAAc,YAC7B,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,QAAM,GAC5B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,OAAK,GAChC,oCAAC,QAAK,OAAM,aAAU,MAAI,GAC1B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,GAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,uBAAqB,CAC/C,GACA,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,QAAM,GAC5B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,GAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,MAAI,GAC1B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,GAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,kCAAgC,CAC1D,CACJ,CACJ;AAER;AAEA,IAAO,2BAAQ;","names":[]}
@@ -0,0 +1,81 @@
1
+ import React, { useCallback, useState } from "react";
2
+ import { Box, Text, useInput } from "ink";
3
+ import TextInput from "ink-text-input";
4
+ import { MultiLineInput } from "./MultiLineInput.js";
5
+ const RulesEditorScreen = ({
6
+ mode,
7
+ initialName,
8
+ initialContent,
9
+ onSave,
10
+ onCancel
11
+ }) => {
12
+ const [editorState, setEditorState] = useState("editing");
13
+ const [content, setContent] = useState(initialContent || "");
14
+ const [ruleName, setRuleName] = useState(initialName || "");
15
+ const [error, setError] = useState(null);
16
+ const screenTitle = mode === "edit" ? "Edit Rule" : "Create Rule";
17
+ const editorViewportHeight = 12;
18
+ const showTransientError = useCallback((message) => {
19
+ setError(message);
20
+ setTimeout(() => setError(null), 3e3);
21
+ }, []);
22
+ useInput((input, key) => {
23
+ if (key.escape) {
24
+ onCancel();
25
+ return;
26
+ }
27
+ if (editorState === "editing" && key.ctrl && input.toLowerCase() === "s") {
28
+ if (!content.trim()) {
29
+ showTransientError("Rule content cannot be empty.");
30
+ return;
31
+ }
32
+ setEditorState("naming");
33
+ }
34
+ });
35
+ const handleNameSubmit = useCallback((name) => {
36
+ if (!name.trim()) {
37
+ showTransientError("Rule name is required.");
38
+ return;
39
+ }
40
+ const result = onSave(name.trim(), content, initialName);
41
+ if (!result.success) {
42
+ showTransientError(result.error || "Failed to save rule.");
43
+ }
44
+ }, [content, initialName, onSave, showTransientError]);
45
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", paddingX: 1 }, /* @__PURE__ */ React.createElement(Box, { borderStyle: "round", borderColor: "#00ccff", paddingX: 2, paddingY: 1, marginBottom: 1 }, /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, screenTitle), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Write reusable instructions here. Save them, then reference them inside prompts with", /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, " @rules:<name>"), ".")), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Enter"), " New line"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Ctrl+S"), " Save and name this rule"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Ctrl/Cmd+Arrow"), " Move by word"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Home / End"), " Jump within the current line"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "ESC"), " Cancel")))), error && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "red" }, "\u26A0\uFE0F ", error)), editorState === "editing" && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, initialName && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Editing rule: ", /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, initialName))), /* @__PURE__ */ React.createElement(
46
+ Box,
47
+ {
48
+ borderStyle: "round",
49
+ borderColor: "#257aa5ff",
50
+ paddingX: 1,
51
+ paddingY: 0,
52
+ width: "100%",
53
+ minHeight: editorViewportHeight + 2
54
+ },
55
+ /* @__PURE__ */ React.createElement(
56
+ MultiLineInput,
57
+ {
58
+ value: content,
59
+ onChange: setContent,
60
+ onSubmit: () => {
61
+ },
62
+ submitOnEnter: false,
63
+ minHeight: editorViewportHeight,
64
+ maxHeight: editorViewportHeight,
65
+ placeholder: "Type reusable instructions here..."
66
+ }
67
+ )
68
+ )), editorState === "naming" && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: "#00ccff" }, "Save Rule"), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, null, "Rule name: "), /* @__PURE__ */ React.createElement(
69
+ TextInput,
70
+ {
71
+ value: ruleName,
72
+ onChange: setRuleName,
73
+ onSubmit: handleNameSubmit,
74
+ placeholder: "frontend-review"
75
+ }
76
+ )), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Names are normalized for mentions, for example ", /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "frontend review"), "becomes ", /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "frontend-review"), "."))));
77
+ };
78
+ export {
79
+ RulesEditorScreen
80
+ };
81
+ //# sourceMappingURL=RulesEditorScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/components/RulesEditorScreen.tsx"],"sourcesContent":["/**\r\n * Rules Editor Screen\r\n *\r\n * A multiline editor for reusable prompt rules referenced via @rules:<name>.\r\n */\r\n\r\nimport React, { useCallback, useState } from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\nimport TextInput from 'ink-text-input';\r\nimport { MultiLineInput } from './MultiLineInput.js';\r\nimport { SaveRuleResult } from '../../types/rule.js';\r\n\r\ninterface RulesEditorScreenProps {\r\n mode: 'add' | 'edit';\r\n initialName?: string;\r\n initialContent?: string;\r\n onSave: (name: string, content: string, previousName?: string) => SaveRuleResult;\r\n onCancel: () => void;\r\n}\r\n\r\ntype EditorState = 'editing' | 'naming';\r\n\r\nexport const RulesEditorScreen: React.FC<RulesEditorScreenProps> = ({\r\n mode,\r\n initialName,\r\n initialContent,\r\n onSave,\r\n onCancel\r\n}) => {\r\n const [editorState, setEditorState] = useState<EditorState>('editing');\r\n const [content, setContent] = useState(initialContent || '');\r\n const [ruleName, setRuleName] = useState(initialName || '');\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n const screenTitle = mode === 'edit' ? 'Edit Rule' : 'Create Rule';\r\n const editorViewportHeight = 12;\r\n\r\n const showTransientError = useCallback((message: string) => {\r\n setError(message);\r\n setTimeout(() => setError(null), 3000);\r\n }, []);\r\n\r\n useInput((input, key) => {\r\n if (key.escape) {\r\n onCancel();\r\n return;\r\n }\r\n\r\n if (editorState === 'editing' && key.ctrl && input.toLowerCase() === 's') {\r\n if (!content.trim()) {\r\n showTransientError('Rule content cannot be empty.');\r\n return;\r\n }\r\n\r\n setEditorState('naming');\r\n }\r\n });\r\n\r\n const handleNameSubmit = useCallback((name: string) => {\r\n if (!name.trim()) {\r\n showTransientError('Rule name is required.');\r\n return;\r\n }\r\n\r\n const result = onSave(name.trim(), content, initialName);\r\n if (!result.success) {\r\n showTransientError(result.error || 'Failed to save rule.');\r\n }\r\n }, [content, initialName, onSave, showTransientError]);\r\n\r\n return (\r\n <Box flexDirection=\"column\" paddingX={1}>\r\n <Box borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={2} paddingY={1} marginBottom={1}>\r\n <Box flexDirection=\"column\">\r\n <Text color=\"#00ccff\" bold>{screenTitle}</Text>\r\n <Box marginTop={1}>\r\n <Text dimColor>\r\n Write reusable instructions here. Save them, then reference them inside prompts with\r\n <Text color=\"#ffd700\"> @rules:&lt;name&gt;</Text>.\r\n </Text>\r\n </Box>\r\n <Box marginTop={1} flexDirection=\"column\">\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Enter</Text> New line\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Ctrl+S</Text> Save and name this rule\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Ctrl/Cmd+Arrow</Text> Move by word\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Home / End</Text> Jump within the current line\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">ESC</Text> Cancel\r\n </Text>\r\n </Box>\r\n </Box>\r\n </Box>\r\n\r\n {error && (\r\n <Box marginBottom={1}>\r\n <Text color=\"red\">⚠️ {error}</Text>\r\n </Box>\r\n )}\r\n\r\n {editorState === 'editing' && (\r\n <Box flexDirection=\"column\">\r\n {initialName && (\r\n <Box marginBottom={1}>\r\n <Text dimColor>\r\n Editing rule: <Text color=\"#00ccff\" bold>{initialName}</Text>\r\n </Text>\r\n </Box>\r\n )}\r\n <Box\r\n borderStyle=\"round\"\r\n borderColor=\"#257aa5ff\"\r\n paddingX={1}\r\n paddingY={0}\r\n width=\"100%\"\r\n minHeight={editorViewportHeight + 2}\r\n >\r\n <MultiLineInput\r\n value={content}\r\n onChange={setContent}\r\n onSubmit={() => {\r\n // The rules editor saves via Ctrl+S so Enter always inserts a newline.\r\n }}\r\n submitOnEnter={false}\r\n minHeight={editorViewportHeight}\r\n maxHeight={editorViewportHeight}\r\n placeholder=\"Type reusable instructions here...\"\r\n />\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {editorState === 'naming' && (\r\n <Box flexDirection=\"column\">\r\n <Text bold color=\"#00ccff\">Save Rule</Text>\r\n <Box marginTop={1}>\r\n <Text>Rule name: </Text>\r\n <TextInput\r\n value={ruleName}\r\n onChange={setRuleName}\r\n onSubmit={handleNameSubmit}\r\n placeholder=\"frontend-review\"\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text dimColor>\r\n Names are normalized for mentions, for example <Text color=\"#ffd700\">frontend review</Text>\r\n becomes <Text color=\"#ffd700\">frontend-review</Text>.\r\n </Text>\r\n </Box>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"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","names":[]}
@@ -1,10 +1,21 @@
1
- import React from 'react';
2
- import { Box, Text } from 'ink';
3
- import SelectInput from 'ink-select-input';
4
- export const SelectPrompt = ({ message, choices, onSelect }) => {
5
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00ccff", paddingX: 1 },
6
- React.createElement(Text, { color: "#00ccff", bold: true }, message),
7
- React.createElement(Box, { marginTop: 1 },
8
- React.createElement(SelectInput, { items: choices, onSelect: (item) => onSelect(item.value) }))));
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ import SelectInput from "ink-select-input";
4
+ const SelectPrompt = ({
5
+ message,
6
+ choices,
7
+ onSelect,
8
+ width
9
+ }) => {
10
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00ccff", paddingX: 1, width }, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, message), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(
11
+ SelectInput,
12
+ {
13
+ items: choices,
14
+ onSelect: (item) => onSelect(item.value)
15
+ }
16
+ )));
17
+ };
18
+ export {
19
+ SelectPrompt
9
20
  };
10
21
  //# sourceMappingURL=SelectPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectPrompt.js","sourceRoot":"","sources":["../../../src/ui/components/SelectPrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAQ3C,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,OAAO,EACP,OAAO,EACP,QAAQ,EACT,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC;QAC/E,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,UAAE,OAAO,CAAQ;QAC3C,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;YACf,oBAAC,WAAW,IACV,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GACxC,CACE,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/ui/components/SelectPrompt.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport SelectInput from 'ink-select-input';\r\n\r\ninterface SelectPromptProps {\r\n message: string;\r\n choices: Array<{ label: string; value: string }>;\r\n onSelect: (value: string) => void;\r\n width?: number;\r\n}\r\n\r\nexport const SelectPrompt: React.FC<SelectPromptProps> = ({\r\n message,\r\n choices,\r\n onSelect,\r\n width\r\n}) => {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} width={width}>\r\n <Text color=\"#00ccff\" bold>{message}</Text>\r\n <Box marginTop={1}>\r\n <SelectInput\r\n items={choices}\r\n onSelect={(item) => onSelect(item.value)}\r\n />\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAC1B,OAAO,iBAAiB;AASjB,MAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SACE,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,SACjF,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAE,OAAQ,GACpC,oCAAC,OAAI,WAAW,KACd;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU,CAAC,SAAS,SAAS,KAAK,KAAK;AAAA;AAAA,EACzC,CACF,CACF;AAEJ;","names":[]}
@@ -0,0 +1,44 @@
1
+ import React, { useState, useEffect } from "react";
2
+ import { Text } from "ink";
3
+ const SHIMMER_HALF_WIDTH = 6;
4
+ const SHIMMER_SPEED_MS = 65;
5
+ const SHIMMER_GRADIENT = ["#ffffff", "#cccccc", "#888888"];
6
+ const SHIMMER_GRADIENT_DIM = ["#999999", "#6a6a6a", "#4a4a4a"];
7
+ function getShimmerColor(dist, baseColor, dim) {
8
+ if (dist >= SHIMMER_HALF_WIDTH) return baseColor;
9
+ const gradient = dim ? SHIMMER_GRADIENT_DIM : SHIMMER_GRADIENT;
10
+ const idx = Math.min(
11
+ gradient.length - 1,
12
+ Math.floor(dist / SHIMMER_HALF_WIDTH * gradient.length)
13
+ );
14
+ return gradient[idx] ?? baseColor;
15
+ }
16
+ const ShimmerText = ({
17
+ text,
18
+ baseColor = "#555555",
19
+ bold = false,
20
+ dimShimmer = false
21
+ }) => {
22
+ const [shimmerPos, setShimmerPos] = useState(-SHIMMER_HALF_WIDTH);
23
+ useEffect(() => {
24
+ const interval = setInterval(() => {
25
+ setShimmerPos((pos) => {
26
+ const next = pos + 1;
27
+ return next > text.length + SHIMMER_HALF_WIDTH ? -SHIMMER_HALF_WIDTH : next;
28
+ });
29
+ }, SHIMMER_SPEED_MS);
30
+ return () => clearInterval(interval);
31
+ }, [text.length]);
32
+ if (!text) return null;
33
+ const len = text.length;
34
+ const shimStart = Math.max(0, shimmerPos - SHIMMER_HALF_WIDTH);
35
+ const shimEnd = Math.min(len, shimmerPos + SHIMMER_HALF_WIDTH);
36
+ const preText = shimStart > 0 ? text.slice(0, shimStart) : "";
37
+ const shimChars = Array.from(text.slice(shimStart, shimEnd));
38
+ const postText = shimEnd < len ? text.slice(shimEnd) : "";
39
+ return /* @__PURE__ */ React.createElement(Text, { bold }, preText ? /* @__PURE__ */ React.createElement(Text, { color: baseColor }, preText) : null, shimChars.map((char, i) => /* @__PURE__ */ React.createElement(Text, { key: shimStart + i, color: getShimmerColor(Math.abs(shimStart + i - shimmerPos), baseColor, dimShimmer) }, char)), postText ? /* @__PURE__ */ React.createElement(Text, { color: baseColor }, postText) : null);
40
+ };
41
+ export {
42
+ ShimmerText
43
+ };
44
+ //# sourceMappingURL=ShimmerText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/components/ShimmerText.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\r\nimport { Text } from 'ink';\r\n\r\nconst SHIMMER_HALF_WIDTH = 6; // chars each side of the peak that receive highlight\r\nconst SHIMMER_SPEED_MS = 65; // ms per step — lower = faster sweep\r\nconst SHIMMER_GRADIENT = ['#ffffff', '#cccccc', '#888888'] as const;\r\nconst SHIMMER_GRADIENT_DIM = ['#999999', '#6a6a6a', '#4a4a4a'] as const;\r\n\r\nfunction getShimmerColor(dist: number, baseColor: string, dim: boolean): string {\r\n if (dist >= SHIMMER_HALF_WIDTH) return baseColor;\r\n const gradient = dim ? SHIMMER_GRADIENT_DIM : SHIMMER_GRADIENT;\r\n const idx = Math.min(\r\n gradient.length - 1,\r\n Math.floor((dist / SHIMMER_HALF_WIDTH) * gradient.length)\r\n );\r\n return gradient[idx] ?? baseColor;\r\n}\r\n\r\ninterface ShimmerTextProps {\r\n text: string;\r\n /** Color of the text outside the shimmer window */\r\n baseColor?: string;\r\n bold?: boolean;\r\n /** Use a subtler, dimmer shimmer gradient instead of the full white peak */\r\n dimShimmer?: boolean;\r\n}\r\n\r\n/**\r\n * Renders text with a white shimmer that sweeps left-to-right continuously.\r\n * Peaks at white (or light grey if dimShimmer=true), fades back to `baseColor`.\r\n */\r\nexport const ShimmerText: React.FC<ShimmerTextProps> = ({\r\n text,\r\n baseColor = '#555555',\r\n bold = false,\r\n dimShimmer = false,\r\n}) => {\r\n const [shimmerPos, setShimmerPos] = useState(-SHIMMER_HALF_WIDTH);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setShimmerPos(pos => {\r\n const next = pos + 1;\r\n // Once the shimmer has fully exited the right side, restart from the left\r\n return next > text.length + SHIMMER_HALF_WIDTH ? -SHIMMER_HALF_WIDTH : next;\r\n });\r\n }, SHIMMER_SPEED_MS);\r\n return () => clearInterval(interval);\r\n }, [text.length]);\r\n\r\n if (!text) return null;\r\n\r\n const len = text.length;\r\n const shimStart = Math.max(0, shimmerPos - SHIMMER_HALF_WIDTH);\r\n const shimEnd = Math.min(len, shimmerPos + SHIMMER_HALF_WIDTH);\r\n\r\n const preText = shimStart > 0 ? text.slice(0, shimStart) : '';\r\n const shimChars = Array.from(text.slice(shimStart, shimEnd));\r\n const postText = shimEnd < len ? text.slice(shimEnd) : '';\r\n\r\n return (\r\n <Text bold={bold}>\r\n {preText ? <Text color={baseColor}>{preText}</Text> : null}\r\n {shimChars.map((char, i) => (\r\n <Text key={shimStart + i} color={getShimmerColor(Math.abs(shimStart + i - shimmerPos), baseColor, dimShimmer)}>\r\n {char}\r\n </Text>\r\n ))}\r\n {postText ? <Text color={baseColor}>{postText}</Text> : null}\r\n </Text>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,SAAS,UAAU,iBAAiB;AAC3C,SAAS,YAAY;AAErB,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,mBAAyB,CAAC,WAAW,WAAW,SAAS;AAC/D,MAAM,uBAAyB,CAAC,WAAW,WAAW,SAAS;AAE/D,SAAS,gBAAgB,MAAc,WAAmB,KAAsB;AAC9E,MAAI,QAAQ,mBAAoB,QAAO;AACvC,QAAM,WAAW,MAAM,uBAAuB;AAC9C,QAAM,MAAM,KAAK;AAAA,IACf,SAAS,SAAS;AAAA,IAClB,KAAK,MAAO,OAAO,qBAAsB,SAAS,MAAM;AAAA,EAC1D;AACA,SAAO,SAAS,GAAG,KAAK;AAC1B;AAeO,MAAM,cAA0C,CAAC;AAAA,EACtD;AAAA,EACA,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,aAAa;AACf,MAAM;AACJ,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,CAAC,kBAAkB;AAEhE,YAAU,MAAM;AACd,UAAM,WAAW,YAAY,MAAM;AACjC,oBAAc,SAAO;AACnB,cAAM,OAAO,MAAM;AAEnB,eAAO,OAAO,KAAK,SAAS,qBAAqB,CAAC,qBAAqB;AAAA,MACzE,CAAC;AAAA,IACH,GAAG,gBAAgB;AACnB,WAAO,MAAM,cAAc,QAAQ;AAAA,EACrC,GAAG,CAAC,KAAK,MAAM,CAAC;AAEhB,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,MAAM,KAAK;AACjB,QAAM,YAAY,KAAK,IAAI,GAAG,aAAa,kBAAkB;AAC7D,QAAM,UAAU,KAAK,IAAI,KAAK,aAAa,kBAAkB;AAE7D,QAAM,UAAU,YAAY,IAAI,KAAK,MAAM,GAAG,SAAS,IAAI;AAC3D,QAAM,YAAY,MAAM,KAAK,KAAK,MAAM,WAAW,OAAO,CAAC;AAC3D,QAAM,WAAW,UAAU,MAAM,KAAK,MAAM,OAAO,IAAI;AAEvD,SACE,oCAAC,QAAK,QACH,UAAU,oCAAC,QAAK,OAAO,aAAY,OAAQ,IAAU,MACrD,UAAU,IAAI,CAAC,MAAM,MACpB,oCAAC,QAAK,KAAK,YAAY,GAAG,OAAO,gBAAgB,KAAK,IAAI,YAAY,IAAI,UAAU,GAAG,WAAW,UAAU,KACzG,IACH,CACD,GACA,WAAW,oCAAC,QAAK,OAAO,aAAY,QAAS,IAAU,IAC1D;AAEJ;","names":[]}
@@ -1,24 +1,51 @@
1
- import React from 'react';
2
- import { Box, Text } from 'ink';
3
- export const SlashCommandAutocomplete = ({ commands, selectedIndex, maxVisibleItems, scrollOffset }) => {
4
- if (commands.length === 0 || maxVisibleItems === 0)
5
- return null;
6
- // Calculate the visible window of commands
7
- const visibleCommands = commands.slice(scrollOffset, scrollOffset + maxVisibleItems);
8
- // Determine if we need scroll indicators
9
- const hasMoreAbove = scrollOffset > 0;
10
- const hasMoreBelow = scrollOffset + maxVisibleItems < commands.length;
11
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "white", paddingX: 1, marginLeft: 1, marginTop: 0 },
12
- hasMoreAbove && (React.createElement(Text, { color: "#666666", dimColor: true }, "\u2191 more")),
13
- visibleCommands.map((cmd, index) => {
14
- const actualIndex = scrollOffset + index;
15
- const isSelected = actualIndex === selectedIndex;
16
- return (React.createElement(Box, { key: cmd.name, paddingX: 1 },
17
- React.createElement(Text, { color: isSelected ? '#00ccff' : '#666666', bold: isSelected, inverse: isSelected }, cmd.name),
18
- React.createElement(Text, { color: "#666666" },
19
- " ",
20
- cmd.description)));
21
- }),
22
- hasMoreBelow && (React.createElement(Text, { color: "#666666", dimColor: true }, "\u2193 more"))));
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ const SlashCommandAutocomplete = ({
4
+ commands,
5
+ selectedIndex,
6
+ maxVisibleItems,
7
+ scrollOffset
8
+ }) => {
9
+ if (commands.length === 0 || maxVisibleItems === 0) return null;
10
+ const visibleCommands = commands.slice(scrollOffset, scrollOffset + maxVisibleItems);
11
+ const hasMoreAbove = scrollOffset > 0;
12
+ const hasMoreBelow = scrollOffset + maxVisibleItems < commands.length;
13
+ return /* @__PURE__ */ React.createElement(
14
+ Box,
15
+ {
16
+ flexDirection: "column",
17
+ borderStyle: "round",
18
+ borderColor: "white",
19
+ paddingX: 1,
20
+ marginLeft: 1,
21
+ marginTop: 0
22
+ },
23
+ hasMoreAbove && /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "\u2191 more"),
24
+ visibleCommands.map((cmd, index) => {
25
+ const actualIndex = scrollOffset + index;
26
+ const isSelected = actualIndex === selectedIndex;
27
+ return /* @__PURE__ */ React.createElement(
28
+ Box,
29
+ {
30
+ key: cmd.name,
31
+ paddingX: 1
32
+ },
33
+ /* @__PURE__ */ React.createElement(
34
+ Text,
35
+ {
36
+ color: isSelected ? "#00ccff" : "#666666",
37
+ bold: isSelected,
38
+ inverse: isSelected
39
+ },
40
+ cmd.name
41
+ ),
42
+ /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, " ", cmd.description)
43
+ );
44
+ }),
45
+ hasMoreBelow && /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "\u2193 more")
46
+ );
47
+ };
48
+ export {
49
+ SlashCommandAutocomplete
23
50
  };
24
51
  //# sourceMappingURL=SlashCommandAutocomplete.js.map