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,164 +1,97 @@
1
- /**
2
- * Workflow Creator Screen
3
- *
4
- * A screen for creating new workflows with step-by-step input.
5
- * Supports both command (exact) and instruction (interpreted) step types.
6
- *
7
- * Controls:
8
- * - Type step content and press Enter to add
9
- * - Ctrl+D to toggle between Command and Instruction mode
10
- * - Ctrl+S to save the workflow
11
- * - ESC to cancel and exit
12
- */
13
- import React, { useState, useCallback } from 'react';
14
- import { Box, Text, useInput } from 'ink';
15
- import TextInput from 'ink-text-input';
16
- export const WorkflowCreatorScreen = ({ onSave, onCancel, initialSteps }) => {
17
- // Initialize steps from initialSteps if provided (learn-workflow mode)
18
- const [steps, setSteps] = useState(initialSteps || []);
19
- const [currentInput, setCurrentInput] = useState('');
20
- const [stepType, setStepType] = useState('command');
21
- const [creatorState, setCreatorState] = useState('adding-steps');
22
- const [workflowName, setWorkflowName] = useState('');
23
- const [workflowDescription, setWorkflowDescription] = useState('');
24
- const [error, setError] = useState(null);
25
- const [isLearnedWorkflow] = useState(!!initialSteps && initialSteps.length > 0);
26
- // Handle keyboard shortcuts
27
- useInput((input, key) => {
28
- // ESC to cancel
29
- if (key.escape) {
30
- onCancel();
31
- return;
1
+ import React, { useState, useCallback } from "react";
2
+ import { Box, Text, useInput } from "ink";
3
+ import TextInput from "ink-text-input";
4
+ const WorkflowCreatorScreen = ({
5
+ onSave,
6
+ onCancel,
7
+ initialSteps
8
+ }) => {
9
+ const [steps, setSteps] = useState(initialSteps || []);
10
+ const [currentInput, setCurrentInput] = useState("");
11
+ const [stepType, setStepType] = useState("command");
12
+ const [creatorState, setCreatorState] = useState("adding-steps");
13
+ const [workflowName, setWorkflowName] = useState("");
14
+ const [workflowDescription, setWorkflowDescription] = useState("");
15
+ const [error, setError] = useState(null);
16
+ const [isLearnedWorkflow] = useState(!!initialSteps && initialSteps.length > 0);
17
+ useInput((input, key) => {
18
+ if (key.escape) {
19
+ onCancel();
20
+ return;
21
+ }
22
+ if (creatorState === "adding-steps") {
23
+ if (key.ctrl && input === "d") {
24
+ setStepType((prev) => prev === "command" ? "instruction" : "command");
25
+ return;
26
+ }
27
+ if (key.ctrl && input === "s") {
28
+ if (steps.length === 0) {
29
+ setError("Add at least one step before saving");
30
+ setTimeout(() => setError(null), 3e3);
31
+ return;
32
32
  }
33
- // Only handle shortcuts in adding-steps mode
34
- if (creatorState === 'adding-steps') {
35
- // Ctrl+D to toggle step type
36
- if (key.ctrl && input === 'd') {
37
- setStepType(prev => prev === 'command' ? 'instruction' : 'command');
38
- return;
39
- }
40
- // Ctrl+S to save (move to naming state)
41
- if (key.ctrl && input === 's') {
42
- if (steps.length === 0) {
43
- setError('Add at least one step before saving');
44
- setTimeout(() => setError(null), 3000);
45
- return;
46
- }
47
- setCreatorState('naming');
48
- return;
49
- }
50
- }
51
- });
52
- // Handle adding a step
53
- const handleAddStep = useCallback((content) => {
54
- if (!content.trim())
55
- return;
56
- setSteps(prev => [...prev, { type: stepType, content: content.trim() }]);
57
- setCurrentInput('');
58
- setError(null);
59
- }, [stepType]);
60
- // Handle workflow name submission
61
- const handleNameSubmit = useCallback((name) => {
62
- if (!name.trim()) {
63
- setError('Workflow name is required');
64
- setTimeout(() => setError(null), 3000);
65
- return;
66
- }
67
- setWorkflowName(name.trim());
68
- setCreatorState('description');
69
- }, []);
70
- // Handle description submission (optional)
71
- const handleDescriptionSubmit = useCallback((description) => {
72
- onSave(workflowName, steps, description.trim() || undefined);
73
- }, [workflowName, steps, onSave]);
74
- // Remove last step
75
- const handleRemoveLastStep = useCallback(() => {
76
- if (steps.length > 0) {
77
- setSteps(prev => prev.slice(0, -1));
78
- }
79
- }, [steps.length]);
80
- // Handle backspace on empty input to remove last step
81
- useInput((input, key) => {
82
- if (creatorState === 'adding-steps' && key.backspace && currentInput === '' && steps.length > 0) {
83
- // Don't remove step on regular backspace - only with Ctrl+Backspace
84
- }
85
- // Ctrl+Z to remove last step
86
- if (key.ctrl && input === 'z' && creatorState === 'adding-steps' && steps.length > 0) {
87
- handleRemoveLastStep();
88
- }
89
- });
90
- return (React.createElement(Box, { flexDirection: "column", paddingX: 1 },
91
- React.createElement(Box, { borderStyle: "round", borderColor: "#00ccff", paddingX: 2, paddingY: 1, marginBottom: 1 },
92
- React.createElement(Box, { flexDirection: "column" },
93
- React.createElement(Text, { color: "#00ccff", bold: true }, "\uD83D\uDCCB Workflow Creator"),
94
- React.createElement(Box, { marginTop: 1 },
95
- React.createElement(Text, { dimColor: true }, isLearnedWorkflow
96
- ? 'Review the steps captured from your learning session. You can edit, add, or remove steps.'
97
- : 'Create a new workflow by adding steps one at a time.')),
98
- isLearnedWorkflow && (React.createElement(Box, { marginTop: 1 },
99
- React.createElement(Text, { color: "#00cc66" },
100
- "\u2728 ",
101
- steps.length,
102
- " steps captured from learn-workflow mode"))),
103
- React.createElement(Box, { marginTop: 1, flexDirection: "column" },
104
- React.createElement(Text, { dimColor: true },
105
- React.createElement(Text, { color: "#ffd700" }, "Ctrl+D"),
106
- " Toggle between Command/Instruction mode"),
107
- React.createElement(Text, { dimColor: true },
108
- React.createElement(Text, { color: "#ffd700" }, "Ctrl+S"),
109
- " Save workflow"),
110
- React.createElement(Text, { dimColor: true },
111
- React.createElement(Text, { color: "#ffd700" }, "Ctrl+Z"),
112
- " Remove last step"),
113
- React.createElement(Text, { dimColor: true },
114
- React.createElement(Text, { color: "#ffd700" }, "ESC"),
115
- " Cancel")))),
116
- error && (React.createElement(Box, { marginBottom: 1 },
117
- React.createElement(Text, { color: "red" },
118
- "\u26A0\uFE0F ",
119
- error))),
120
- steps.length > 0 && (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
121
- React.createElement(Text, { bold: true, color: "#00cc66" },
122
- "Steps (",
123
- steps.length,
124
- "):"),
125
- steps.map((step, index) => (React.createElement(Box, { key: index, marginLeft: 1 },
126
- React.createElement(Text, null,
127
- React.createElement(Text, { color: "#888" },
128
- index + 1,
129
- "."),
130
- ' ',
131
- React.createElement(Text, { color: step.type === 'command' ? '#ffd700' : '#00ccff' },
132
- "[",
133
- step.type === 'command' ? '⚑CMD' : 'πŸ“INS',
134
- "]"),
135
- ' ',
136
- React.createElement(Text, null, step.content))))))),
137
- creatorState === 'adding-steps' && (React.createElement(Box, { flexDirection: "column" },
138
- React.createElement(Box, null,
139
- React.createElement(Text, null,
140
- "Mode: ",
141
- React.createElement(Text, { color: stepType === 'command' ? '#ffd700' : '#00ccff', bold: true }, stepType === 'command' ? '⚑ COMMAND' : 'πŸ“ INSTRUCTION'),
142
- React.createElement(Text, { dimColor: true }, " (Ctrl+D to switch)"))),
143
- React.createElement(Box, { marginTop: 1 },
144
- React.createElement(Text, { color: "#888" },
145
- "Step ",
146
- steps.length + 1,
147
- ": "),
148
- React.createElement(TextInput, { value: currentInput, onChange: setCurrentInput, onSubmit: handleAddStep, placeholder: stepType === 'command'
149
- ? 'Enter exact command to run...'
150
- : 'Describe what should happen...' })))),
151
- creatorState === 'naming' && (React.createElement(Box, { flexDirection: "column" },
152
- React.createElement(Text, { bold: true, color: "#00ccff" }, "Save Workflow"),
153
- React.createElement(Box, { marginTop: 1 },
154
- React.createElement(Text, null, "Workflow name: "),
155
- React.createElement(TextInput, { value: workflowName, onChange: setWorkflowName, onSubmit: handleNameSubmit, placeholder: "my-workflow" })))),
156
- creatorState === 'description' && (React.createElement(Box, { flexDirection: "column" },
157
- React.createElement(Text, { bold: true, color: "#00ccff" },
158
- "Save Workflow: ",
159
- workflowName),
160
- React.createElement(Box, { marginTop: 1 },
161
- React.createElement(Text, null, "Description (optional, press Enter to skip): "),
162
- React.createElement(TextInput, { value: workflowDescription, onChange: setWorkflowDescription, onSubmit: handleDescriptionSubmit, placeholder: "What does this workflow do?" }))))));
33
+ setCreatorState("naming");
34
+ return;
35
+ }
36
+ }
37
+ });
38
+ const handleAddStep = useCallback((content) => {
39
+ if (!content.trim()) return;
40
+ setSteps((prev) => [...prev, { type: stepType, content: content.trim() }]);
41
+ setCurrentInput("");
42
+ setError(null);
43
+ }, [stepType]);
44
+ const handleNameSubmit = useCallback((name) => {
45
+ if (!name.trim()) {
46
+ setError("Workflow name is required");
47
+ setTimeout(() => setError(null), 3e3);
48
+ return;
49
+ }
50
+ setWorkflowName(name.trim());
51
+ setCreatorState("description");
52
+ }, []);
53
+ const handleDescriptionSubmit = useCallback((description) => {
54
+ onSave(workflowName, steps, description.trim() || void 0);
55
+ }, [workflowName, steps, onSave]);
56
+ const handleRemoveLastStep = useCallback(() => {
57
+ if (steps.length > 0) {
58
+ setSteps((prev) => prev.slice(0, -1));
59
+ }
60
+ }, [steps.length]);
61
+ useInput((input, key) => {
62
+ if (creatorState === "adding-steps" && key.backspace && currentInput === "" && steps.length > 0) {
63
+ }
64
+ if (key.ctrl && input === "z" && creatorState === "adding-steps" && steps.length > 0) {
65
+ handleRemoveLastStep();
66
+ }
67
+ });
68
+ 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 }, "\u{1F4CB} Workflow Creator"), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, isLearnedWorkflow ? "Review the steps captured from your learning session. You can edit, add, or remove steps." : "Create a new workflow by adding steps one at a time.")), isLearnedWorkflow && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#00cc66" }, "\u2728 ", steps.length, " steps captured from learn-workflow mode")), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Ctrl+D"), " Toggle between Command/Instruction mode"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Ctrl+S"), " Save workflow"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Ctrl+Z"), " Remove last step"), /* @__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)), steps.length > 0 && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: "#00cc66" }, "Steps (", steps.length, "):"), steps.map((step, index) => /* @__PURE__ */ React.createElement(Box, { key: index, marginLeft: 1 }, /* @__PURE__ */ React.createElement(Text, null, /* @__PURE__ */ React.createElement(Text, { color: "#888" }, index + 1, "."), " ", /* @__PURE__ */ React.createElement(Text, { color: step.type === "command" ? "#ffd700" : "#00ccff" }, "[", step.type === "command" ? "\u26A1CMD" : "\u{1F4DD}INS", "]"), " ", /* @__PURE__ */ React.createElement(Text, null, step.content))))), creatorState === "adding-steps" && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, "Mode: ", /* @__PURE__ */ React.createElement(Text, { color: stepType === "command" ? "#ffd700" : "#00ccff", bold: true }, stepType === "command" ? "\u26A1 COMMAND" : "\u{1F4DD} INSTRUCTION"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " (Ctrl+D to switch)"))), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#888" }, "Step ", steps.length + 1, ": "), /* @__PURE__ */ React.createElement(
69
+ TextInput,
70
+ {
71
+ value: currentInput,
72
+ onChange: setCurrentInput,
73
+ onSubmit: handleAddStep,
74
+ placeholder: stepType === "command" ? "Enter exact command to run..." : "Describe what should happen..."
75
+ }
76
+ ))), creatorState === "naming" && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: "#00ccff" }, "Save Workflow"), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, null, "Workflow name: "), /* @__PURE__ */ React.createElement(
77
+ TextInput,
78
+ {
79
+ value: workflowName,
80
+ onChange: setWorkflowName,
81
+ onSubmit: handleNameSubmit,
82
+ placeholder: "my-workflow"
83
+ }
84
+ ))), creatorState === "description" && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: "#00ccff" }, "Save Workflow: ", workflowName), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, null, "Description (optional, press Enter to skip): "), /* @__PURE__ */ React.createElement(
85
+ TextInput,
86
+ {
87
+ value: workflowDescription,
88
+ onChange: setWorkflowDescription,
89
+ onSubmit: handleDescriptionSubmit,
90
+ placeholder: "What does this workflow do?"
91
+ }
92
+ ))));
93
+ };
94
+ export {
95
+ WorkflowCreatorScreen
163
96
  };
164
97
  //# sourceMappingURL=WorkflowCreatorScreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowCreatorScreen.js","sourceRoot":"","sources":["../../../src/ui/components/WorkflowCreatorScreen.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ui/components/WorkflowCreatorScreen.tsx"],"sourcesContent":["/**\r\n * Workflow Creator Screen\r\n * \r\n * A screen for creating new workflows with step-by-step input.\r\n * Supports both command (exact) and instruction (interpreted) step types.\r\n * \r\n * Controls:\r\n * - Type step content and press Enter to add\r\n * - Ctrl+D to toggle between Command and Instruction mode\r\n * - Ctrl+S to save the workflow\r\n * - ESC to cancel and exit\r\n */\r\n\r\nimport React, { useState, useCallback } from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\nimport TextInput from 'ink-text-input';\r\n\r\ninterface WorkflowStep {\r\n type: 'command' | 'instruction';\r\n content: string;\r\n}\r\n\r\ninterface WorkflowCreatorScreenProps {\r\n onSave: (name: string, steps: WorkflowStep[], description?: string) => void;\r\n onCancel: () => void;\r\n initialSteps?: WorkflowStep[]; // Pre-populated steps from learn-workflow mode\r\n}\r\n\r\ntype CreatorState = 'adding-steps' | 'naming' | 'description';\r\n\r\nexport const WorkflowCreatorScreen: React.FC<WorkflowCreatorScreenProps> = ({\r\n onSave,\r\n onCancel,\r\n initialSteps\r\n}) => {\r\n // Initialize steps from initialSteps if provided (learn-workflow mode)\r\n const [steps, setSteps] = useState<WorkflowStep[]>(initialSteps || []);\r\n const [currentInput, setCurrentInput] = useState('');\r\n const [stepType, setStepType] = useState<'command' | 'instruction'>('command');\r\n const [creatorState, setCreatorState] = useState<CreatorState>('adding-steps');\r\n const [workflowName, setWorkflowName] = useState('');\r\n const [workflowDescription, setWorkflowDescription] = useState('');\r\n const [error, setError] = useState<string | null>(null);\r\n const [isLearnedWorkflow] = useState<boolean>(!!initialSteps && initialSteps.length > 0);\r\n\r\n // Handle keyboard shortcuts\r\n useInput((input, key) => {\r\n // ESC to cancel\r\n if (key.escape) {\r\n onCancel();\r\n return;\r\n }\r\n\r\n // Only handle shortcuts in adding-steps mode\r\n if (creatorState === 'adding-steps') {\r\n // Ctrl+D to toggle step type\r\n if (key.ctrl && input === 'd') {\r\n setStepType(prev => prev === 'command' ? 'instruction' : 'command');\r\n return;\r\n }\r\n\r\n // Ctrl+S to save (move to naming state)\r\n if (key.ctrl && input === 's') {\r\n if (steps.length === 0) {\r\n setError('Add at least one step before saving');\r\n setTimeout(() => setError(null), 3000);\r\n return;\r\n }\r\n setCreatorState('naming');\r\n return;\r\n }\r\n }\r\n });\r\n\r\n // Handle adding a step\r\n const handleAddStep = useCallback((content: string) => {\r\n if (!content.trim()) return;\r\n\r\n setSteps(prev => [...prev, { type: stepType, content: content.trim() }]);\r\n setCurrentInput('');\r\n setError(null);\r\n }, [stepType]);\r\n\r\n // Handle workflow name submission\r\n const handleNameSubmit = useCallback((name: string) => {\r\n if (!name.trim()) {\r\n setError('Workflow name is required');\r\n setTimeout(() => setError(null), 3000);\r\n return;\r\n }\r\n setWorkflowName(name.trim());\r\n setCreatorState('description');\r\n }, []);\r\n\r\n // Handle description submission (optional)\r\n const handleDescriptionSubmit = useCallback((description: string) => {\r\n onSave(workflowName, steps, description.trim() || undefined);\r\n }, [workflowName, steps, onSave]);\r\n\r\n // Remove last step\r\n const handleRemoveLastStep = useCallback(() => {\r\n if (steps.length > 0) {\r\n setSteps(prev => prev.slice(0, -1));\r\n }\r\n }, [steps.length]);\r\n\r\n // Handle backspace on empty input to remove last step\r\n useInput((input, key) => {\r\n if (creatorState === 'adding-steps' && key.backspace && currentInput === '' && steps.length > 0) {\r\n // Don't remove step on regular backspace - only with Ctrl+Backspace\r\n }\r\n // Ctrl+Z to remove last step\r\n if (key.ctrl && input === 'z' && creatorState === 'adding-steps' && steps.length > 0) {\r\n handleRemoveLastStep();\r\n }\r\n });\r\n\r\n return (\r\n <Box flexDirection=\"column\" paddingX={1}>\r\n {/* Header */}\r\n <Box borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={2} paddingY={1} marginBottom={1}>\r\n <Box flexDirection=\"column\">\r\n <Text color=\"#00ccff\" bold>πŸ“‹ Workflow Creator</Text>\r\n <Box marginTop={1}>\r\n <Text dimColor>\r\n {isLearnedWorkflow\r\n ? 'Review the steps captured from your learning session. You can edit, add, or remove steps.'\r\n : 'Create a new workflow by adding steps one at a time.'}\r\n </Text>\r\n </Box>\r\n {isLearnedWorkflow && (\r\n <Box marginTop={1}>\r\n <Text color=\"#00cc66\">✨ {steps.length} steps captured from learn-workflow mode</Text>\r\n </Box>\r\n )}\r\n <Box marginTop={1} flexDirection=\"column\">\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Ctrl+D</Text> Toggle between Command/Instruction mode\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Ctrl+S</Text> Save workflow\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Ctrl+Z</Text> Remove last step\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 message */}\r\n {error && (\r\n <Box marginBottom={1}>\r\n <Text color=\"red\">⚠️ {error}</Text>\r\n </Box>\r\n )}\r\n\r\n {/* Current steps */}\r\n {steps.length > 0 && (\r\n <Box flexDirection=\"column\" marginBottom={1}>\r\n <Text bold color=\"#00cc66\">Steps ({steps.length}):</Text>\r\n {steps.map((step, index) => (\r\n <Box key={index} marginLeft={1}>\r\n <Text>\r\n <Text color=\"#888\">{index + 1}.</Text>{' '}\r\n <Text color={step.type === 'command' ? '#ffd700' : '#00ccff'}>\r\n [{step.type === 'command' ? '⚑CMD' : 'πŸ“INS'}]\r\n </Text>{' '}\r\n <Text>{step.content}</Text>\r\n </Text>\r\n </Box>\r\n ))}\r\n </Box>\r\n )}\r\n\r\n {/* Input area */}\r\n {creatorState === 'adding-steps' && (\r\n <Box flexDirection=\"column\">\r\n <Box>\r\n <Text>\r\n Mode: <Text color={stepType === 'command' ? '#ffd700' : '#00ccff'} bold>\r\n {stepType === 'command' ? '⚑ COMMAND' : 'πŸ“ INSTRUCTION'}\r\n </Text>\r\n <Text dimColor> (Ctrl+D to switch)</Text>\r\n </Text>\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text color=\"#888\">Step {steps.length + 1}: </Text>\r\n <TextInput\r\n value={currentInput}\r\n onChange={setCurrentInput}\r\n onSubmit={handleAddStep}\r\n placeholder={stepType === 'command'\r\n ? 'Enter exact command to run...'\r\n : 'Describe what should happen...'}\r\n />\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Naming state */}\r\n {creatorState === 'naming' && (\r\n <Box flexDirection=\"column\">\r\n <Text bold color=\"#00ccff\">Save Workflow</Text>\r\n <Box marginTop={1}>\r\n <Text>Workflow name: </Text>\r\n <TextInput\r\n value={workflowName}\r\n onChange={setWorkflowName}\r\n onSubmit={handleNameSubmit}\r\n placeholder=\"my-workflow\"\r\n />\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Description state */}\r\n {creatorState === 'description' && (\r\n <Box flexDirection=\"column\">\r\n <Text bold color=\"#00ccff\">Save Workflow: {workflowName}</Text>\r\n <Box marginTop={1}>\r\n <Text>Description (optional, press Enter to skip): </Text>\r\n <TextInput\r\n value={workflowDescription}\r\n onChange={setWorkflowDescription}\r\n onSubmit={handleDescriptionSubmit}\r\n placeholder=\"What does this workflow do?\"\r\n />\r\n </Box>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"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","names":[]}
@@ -1,64 +1,33 @@
1
- /**
2
- * Converts Ink key events into ANSI escape sequences for the child process.
3
- * This acts as a "translator" between Ink's key objects and the raw ANSI codes
4
- * that terminal programs expect, emulating PTY behavior without native dependencies.
5
- */
6
- export function encodeKeyToAnsi(input, key) {
7
- if (!key)
8
- return input;
9
- // 1. Handle Enter - always \r for PTY
10
- // PTY drivers handle \r β†’ \r\n translation internally.
11
- // Using \r\n on Windows caused SSH sessions to echo an extra newline,
12
- // producing duplicate prompts after each command.
13
- if (key.return) {
14
- return '\r';
1
+ function encodeKeyToAnsi(input, key) {
2
+ if (!key) return input;
3
+ if (key.return) {
4
+ return "\r";
5
+ }
6
+ if (key.backspace || key.delete) {
7
+ return "\x7F";
8
+ }
9
+ if (key.tab) return " ";
10
+ if (key.upArrow) return "\x1B[A";
11
+ if (key.downArrow) return "\x1B[B";
12
+ if (key.rightArrow) return "\x1B[C";
13
+ if (key.leftArrow) return "\x1B[D";
14
+ if (key.pageUp) return "\x1B[5~";
15
+ if (key.pageDown) return "\x1B[6~";
16
+ if (key.ctrl) {
17
+ if (input === "c") return "";
18
+ if (input === "d") return "";
19
+ if (input === "z") return "";
20
+ if (input === "l") return "\f";
21
+ if (input === "u") return "";
22
+ if (input && input.length === 1 && input >= "a" && input <= "z") {
23
+ const charCode = input.charCodeAt(0);
24
+ return String.fromCharCode(charCode - 96);
15
25
  }
16
- // 2. Handle Backspace
17
- // \x7f (DEL) is the most compatible "delete previous" code
18
- if (key.backspace || key.delete) {
19
- return '\x7f';
20
- }
21
- // 3. Handle Tab
22
- if (key.tab)
23
- return '\t';
24
- // 4. Handle Arrows (ANSI / VT100 sequences)
25
- if (key.upArrow)
26
- return '\u001B[A';
27
- if (key.downArrow)
28
- return '\u001B[B';
29
- if (key.rightArrow)
30
- return '\u001B[C';
31
- if (key.leftArrow)
32
- return '\u001B[D';
33
- // 5. Handle Navigation
34
- if (key.pageUp)
35
- return '\u001B[5~';
36
- if (key.pageDown)
37
- return '\u001B[6~';
38
- // 6. Handle Control Keys
39
- if (key.ctrl) {
40
- if (input === 'c')
41
- return '\u0003'; // SIGINT
42
- if (input === 'd')
43
- return '\u0004'; // EOT
44
- if (input === 'z')
45
- return '\u001A'; // SIGTSTP
46
- if (input === 'l')
47
- return '\u000C'; // Clear screen
48
- if (input === 'u')
49
- return '\u0015'; // Clear line
50
- // Generic Ctrl+A to Ctrl+Z handling
51
- // If input is a single letter a-z
52
- if (input && input.length === 1 && input >= 'a' && input <= 'z') {
53
- const charCode = input.charCodeAt(0);
54
- // 'a' is 97. We want \x01 (1). So 97 - 96 = 1.
55
- return String.fromCharCode(charCode - 96);
56
- }
57
- }
58
- // 7. Handle Escape
59
- if (key.escape)
60
- return '\u001B';
61
- // 8. Default: Return the character itself
62
- return input;
26
+ }
27
+ if (key.escape) return "\x1B";
28
+ return input;
63
29
  }
30
+ export {
31
+ encodeKeyToAnsi
32
+ };
64
33
  //# sourceMappingURL=ansi-encoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ansi-encoder.js","sourceRoot":"","sources":["../../src/utils/ansi-encoder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,GAAQ;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,sCAAsC;IACtC,uDAAuD;IACvD,sEAAsE;IACtE,kDAAkD;IAClD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,2DAA2D;IAC3D,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gBAAgB;IAChB,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEzB,4CAA4C;IAC5C,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,UAAU,CAAC;IACnC,IAAI,GAAG,CAAC,SAAS;QAAE,OAAO,UAAU,CAAC;IACrC,IAAI,GAAG,CAAC,UAAU;QAAE,OAAO,UAAU,CAAC;IACtC,IAAI,GAAG,CAAC,SAAS;QAAE,OAAO,UAAU,CAAC;IAErC,uBAAuB;IACvB,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC;IACnC,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,WAAW,CAAC;IAErC,yBAAyB;IACzB,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,CAAC,SAAS;QAC7C,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,CAAC,MAAM;QAC1C,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,CAAC,UAAU;QAC9C,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,CAAC,eAAe;QACnD,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC,CAAC,aAAa;QAEjD,oCAAoC;QACpC,kCAAkC;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrC,+CAA+C;YAC/C,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAEhC,0CAA0C;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/ansi-encoder.ts"],"sourcesContent":["/**\r\n * Converts Ink key events into ANSI escape sequences for the child process.\r\n * This acts as a \"translator\" between Ink's key objects and the raw ANSI codes\r\n * that terminal programs expect, emulating PTY behavior without native dependencies.\r\n */\r\n\r\nexport function encodeKeyToAnsi(input: string, key: any): string {\r\n if (!key) return input;\r\n\r\n // 1. Handle Enter - always \\r for PTY\r\n // PTY drivers handle \\r β†’ \\r\\n translation internally.\r\n // Using \\r\\n on Windows caused SSH sessions to echo an extra newline,\r\n // producing duplicate prompts after each command.\r\n if (key.return) {\r\n return '\\r';\r\n }\r\n\r\n // 2. Handle Backspace\r\n // \\x7f (DEL) is the most compatible \"delete previous\" code\r\n if (key.backspace || key.delete) {\r\n return '\\x7f';\r\n }\r\n\r\n // 3. Handle Tab\r\n if (key.tab) return '\\t';\r\n\r\n // 4. Handle Arrows (ANSI / VT100 sequences)\r\n if (key.upArrow) return '\\u001B[A';\r\n if (key.downArrow) return '\\u001B[B';\r\n if (key.rightArrow) return '\\u001B[C';\r\n if (key.leftArrow) return '\\u001B[D';\r\n\r\n // 5. Handle Navigation\r\n if (key.pageUp) return '\\u001B[5~';\r\n if (key.pageDown) return '\\u001B[6~';\r\n\r\n // 6. Handle Control Keys\r\n if (key.ctrl) {\r\n if (input === 'c') return '\\u0003'; // SIGINT\r\n if (input === 'd') return '\\u0004'; // EOT\r\n if (input === 'z') return '\\u001A'; // SIGTSTP\r\n if (input === 'l') return '\\u000C'; // Clear screen\r\n if (input === 'u') return '\\u0015'; // Clear line\r\n\r\n // Generic Ctrl+A to Ctrl+Z handling\r\n // If input is a single letter a-z\r\n if (input && input.length === 1 && input >= 'a' && input <= 'z') {\r\n const charCode = input.charCodeAt(0);\r\n // 'a' is 97. We want \\x01 (1). So 97 - 96 = 1.\r\n return String.fromCharCode(charCode - 96);\r\n }\r\n }\r\n\r\n // 7. Handle Escape\r\n if (key.escape) return '\\u001B';\r\n\r\n // 8. Default: Return the character itself\r\n return input;\r\n}\r\n"],"mappings":"AAMO,SAAS,gBAAgB,OAAe,KAAkB;AAC/D,MAAI,CAAC,IAAK,QAAO;AAMjB,MAAI,IAAI,QAAQ;AACd,WAAO;AAAA,EACT;AAIA,MAAI,IAAI,aAAa,IAAI,QAAQ;AAC/B,WAAO;AAAA,EACT;AAGA,MAAI,IAAI,IAAK,QAAO;AAGpB,MAAI,IAAI,QAAS,QAAO;AACxB,MAAI,IAAI,UAAW,QAAO;AAC1B,MAAI,IAAI,WAAY,QAAO;AAC3B,MAAI,IAAI,UAAW,QAAO;AAG1B,MAAI,IAAI,OAAQ,QAAO;AACvB,MAAI,IAAI,SAAU,QAAO;AAGzB,MAAI,IAAI,MAAM;AACZ,QAAI,UAAU,IAAK,QAAO;AAC1B,QAAI,UAAU,IAAK,QAAO;AAC1B,QAAI,UAAU,IAAK,QAAO;AAC1B,QAAI,UAAU,IAAK,QAAO;AAC1B,QAAI,UAAU,IAAK,QAAO;AAI1B,QAAI,SAAS,MAAM,WAAW,KAAK,SAAS,OAAO,SAAS,KAAK;AAC/D,YAAM,WAAW,MAAM,WAAW,CAAC;AAEnC,aAAO,OAAO,aAAa,WAAW,EAAE;AAAA,IAC1C;AAAA,EACF;AAGA,MAAI,IAAI,OAAQ,QAAO;AAGvB,SAAO;AACT;","names":[]}