@ranker/raxflow 0.2.2 → 0.2.4

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 (378) hide show
  1. package/dist/benchmark.d.ts +10 -0
  2. package/dist/benchmark.d.ts.map +1 -0
  3. package/dist/benchmark.js +123 -0
  4. package/dist/benchmark.js.map +1 -0
  5. package/dist/bin.d.ts +3 -0
  6. package/dist/bin.d.ts.map +1 -0
  7. package/dist/bin.js +141 -0
  8. package/dist/bin.js.map +1 -0
  9. package/dist/bootstrap.d.ts +8 -0
  10. package/dist/bootstrap.d.ts.map +1 -0
  11. package/dist/bootstrap.js +22 -0
  12. package/dist/bootstrap.js.map +1 -0
  13. package/dist/bridge-adapter-templates.d.ts +4 -0
  14. package/dist/bridge-adapter-templates.d.ts.map +1 -0
  15. package/dist/bridge-adapter-templates.js +185 -0
  16. package/dist/bridge-adapter-templates.js.map +1 -0
  17. package/dist/bridge-test.d.ts +7 -0
  18. package/dist/bridge-test.d.ts.map +1 -0
  19. package/dist/bridge-test.js +89 -0
  20. package/dist/bridge-test.js.map +1 -0
  21. package/dist/dashboard.d.ts +4 -0
  22. package/dist/dashboard.d.ts.map +1 -0
  23. package/{src/dashboard.ts → dist/dashboard.js} +8 -10
  24. package/dist/dashboard.js.map +1 -0
  25. package/dist/doctor.d.ts +6 -0
  26. package/dist/doctor.d.ts.map +1 -0
  27. package/dist/doctor.js +70 -0
  28. package/dist/doctor.js.map +1 -0
  29. package/dist/evolve.d.ts +7 -0
  30. package/dist/evolve.d.ts.map +1 -0
  31. package/{src/evolve.ts → dist/evolve.js} +7 -33
  32. package/dist/evolve.js.map +1 -0
  33. package/dist/host-init-templates.d.ts +16 -0
  34. package/dist/host-init-templates.d.ts.map +1 -0
  35. package/dist/host-init-templates.js +119 -0
  36. package/dist/host-init-templates.js.map +1 -0
  37. package/dist/hub/__tests__/commands.test.d.ts +2 -0
  38. package/dist/hub/__tests__/commands.test.d.ts.map +1 -0
  39. package/dist/hub/__tests__/commands.test.js +72 -0
  40. package/dist/hub/__tests__/commands.test.js.map +1 -0
  41. package/dist/hub/__tests__/history.test.d.ts +2 -0
  42. package/dist/hub/__tests__/history.test.d.ts.map +1 -0
  43. package/dist/hub/__tests__/history.test.js +119 -0
  44. package/dist/hub/__tests__/history.test.js.map +1 -0
  45. package/dist/hub/__tests__/parser.test.d.ts +2 -0
  46. package/dist/hub/__tests__/parser.test.d.ts.map +1 -0
  47. package/dist/hub/__tests__/parser.test.js +92 -0
  48. package/dist/hub/__tests__/parser.test.js.map +1 -0
  49. package/dist/hub/commands/agents.d.ts +3 -0
  50. package/dist/hub/commands/agents.d.ts.map +1 -0
  51. package/dist/hub/commands/agents.js +36 -0
  52. package/dist/hub/commands/agents.js.map +1 -0
  53. package/dist/hub/commands/index.d.ts +4 -0
  54. package/dist/hub/commands/index.d.ts.map +1 -0
  55. package/dist/hub/commands/index.js +123 -0
  56. package/dist/hub/commands/index.js.map +1 -0
  57. package/dist/hub/commands/logs.d.ts +3 -0
  58. package/dist/hub/commands/logs.d.ts.map +1 -0
  59. package/dist/hub/commands/logs.js +53 -0
  60. package/dist/hub/commands/logs.js.map +1 -0
  61. package/dist/hub/commands/memory.d.ts +3 -0
  62. package/dist/hub/commands/memory.d.ts.map +1 -0
  63. package/dist/hub/commands/memory.js +40 -0
  64. package/dist/hub/commands/memory.js.map +1 -0
  65. package/dist/hub/commands/metrics.d.ts +3 -0
  66. package/dist/hub/commands/metrics.d.ts.map +1 -0
  67. package/dist/hub/commands/metrics.js +35 -0
  68. package/dist/hub/commands/metrics.js.map +1 -0
  69. package/dist/hub/commands/providers.d.ts +3 -0
  70. package/dist/hub/commands/providers.d.ts.map +1 -0
  71. package/dist/hub/commands/providers.js +26 -0
  72. package/dist/hub/commands/providers.js.map +1 -0
  73. package/dist/hub/commands/run.d.ts +3 -0
  74. package/dist/hub/commands/run.d.ts.map +1 -0
  75. package/dist/hub/commands/run.js +31 -0
  76. package/dist/hub/commands/run.js.map +1 -0
  77. package/dist/hub/commands/status.d.ts +3 -0
  78. package/dist/hub/commands/status.d.ts.map +1 -0
  79. package/dist/hub/commands/status.js +61 -0
  80. package/dist/hub/commands/status.js.map +1 -0
  81. package/dist/hub/commands/workflows.d.ts +3 -0
  82. package/dist/hub/commands/workflows.d.ts.map +1 -0
  83. package/dist/hub/commands/workflows.js +45 -0
  84. package/dist/hub/commands/workflows.js.map +1 -0
  85. package/dist/hub/config-loader.d.ts +4 -0
  86. package/dist/hub/config-loader.d.ts.map +1 -0
  87. package/dist/hub/config-loader.js +27 -0
  88. package/dist/hub/config-loader.js.map +1 -0
  89. package/dist/hub/event-listener.d.ts +6 -0
  90. package/dist/hub/event-listener.d.ts.map +1 -0
  91. package/dist/hub/event-listener.js +12 -0
  92. package/dist/hub/event-listener.js.map +1 -0
  93. package/dist/hub/history.d.ts +13 -0
  94. package/dist/hub/history.d.ts.map +1 -0
  95. package/dist/hub/history.js +59 -0
  96. package/dist/hub/history.js.map +1 -0
  97. package/dist/hub/index.d.ts +4 -0
  98. package/dist/hub/index.d.ts.map +1 -0
  99. package/dist/hub/index.js +114 -0
  100. package/dist/hub/index.js.map +1 -0
  101. package/dist/hub/parser.d.ts +4 -0
  102. package/dist/hub/parser.d.ts.map +1 -0
  103. package/dist/hub/parser.js +98 -0
  104. package/dist/hub/parser.js.map +1 -0
  105. package/dist/hub/styles/borders.d.ts +23 -0
  106. package/dist/hub/styles/borders.d.ts.map +1 -0
  107. package/dist/hub/styles/borders.js +64 -0
  108. package/dist/hub/styles/borders.js.map +1 -0
  109. package/dist/hub/styles/colors.d.ts +63 -0
  110. package/dist/hub/styles/colors.d.ts.map +1 -0
  111. package/dist/hub/styles/colors.js +115 -0
  112. package/dist/hub/styles/colors.js.map +1 -0
  113. package/dist/hub/styles/typography.d.ts +34 -0
  114. package/dist/hub/styles/typography.d.ts.map +1 -0
  115. package/dist/hub/styles/typography.js +60 -0
  116. package/dist/hub/styles/typography.js.map +1 -0
  117. package/dist/hub/types.d.ts +27 -0
  118. package/dist/hub/types.d.ts.map +1 -0
  119. package/dist/hub/types.js +2 -0
  120. package/dist/hub/types.js.map +1 -0
  121. package/dist/index.d.ts +11 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/{src/index.ts → dist/index.js} +1 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/init-host.d.ts +10 -0
  126. package/dist/init-host.d.ts.map +1 -0
  127. package/dist/init-host.js +232 -0
  128. package/dist/init-host.js.map +1 -0
  129. package/dist/install.d.ts +8 -0
  130. package/dist/install.d.ts.map +1 -0
  131. package/dist/install.js +99 -0
  132. package/dist/install.js.map +1 -0
  133. package/dist/run.d.ts +16 -0
  134. package/dist/run.d.ts.map +1 -0
  135. package/dist/run.js +238 -0
  136. package/dist/run.js.map +1 -0
  137. package/dist/setup/components/ApiKeyInput.d.ts +25 -0
  138. package/dist/setup/components/ApiKeyInput.d.ts.map +1 -0
  139. package/dist/setup/components/ApiKeyInput.js +54 -0
  140. package/dist/setup/components/ApiKeyInput.js.map +1 -0
  141. package/dist/setup/components/AsciiBanner.d.ts +22 -0
  142. package/dist/setup/components/AsciiBanner.d.ts.map +1 -0
  143. package/{src/setup/components/AsciiBanner.tsx → dist/setup/components/AsciiBanner.js} +24 -94
  144. package/dist/setup/components/AsciiBanner.js.map +1 -0
  145. package/dist/setup/components/CliDetector.d.ts +17 -0
  146. package/dist/setup/components/CliDetector.d.ts.map +1 -0
  147. package/dist/setup/components/CliDetector.js +81 -0
  148. package/dist/setup/components/CliDetector.js.map +1 -0
  149. package/dist/setup/components/ModeSelector.d.ts +8 -0
  150. package/dist/setup/components/ModeSelector.d.ts.map +1 -0
  151. package/dist/setup/components/ModeSelector.js +76 -0
  152. package/dist/setup/components/ModeSelector.js.map +1 -0
  153. package/dist/setup/components/ProviderSelector.d.ts +18 -0
  154. package/dist/setup/components/ProviderSelector.d.ts.map +1 -0
  155. package/dist/setup/components/ProviderSelector.js +98 -0
  156. package/dist/setup/components/ProviderSelector.js.map +1 -0
  157. package/dist/setup/components/SetupWizard.d.ts +2 -0
  158. package/dist/setup/components/SetupWizard.d.ts.map +1 -0
  159. package/dist/setup/components/SetupWizard.js +212 -0
  160. package/dist/setup/components/SetupWizard.js.map +1 -0
  161. package/dist/setup/components/StepIndicator.d.ts +13 -0
  162. package/dist/setup/components/StepIndicator.d.ts.map +1 -0
  163. package/dist/setup/components/StepIndicator.js +18 -0
  164. package/dist/setup/components/StepIndicator.js.map +1 -0
  165. package/dist/setup/components/SuccessScreen.d.ts +18 -0
  166. package/dist/setup/components/SuccessScreen.d.ts.map +1 -0
  167. package/dist/setup/components/SuccessScreen.js +38 -0
  168. package/dist/setup/components/SuccessScreen.js.map +1 -0
  169. package/dist/setup/index.d.ts +12 -0
  170. package/dist/setup/index.d.ts.map +1 -0
  171. package/{src/setup/index.ts → dist/setup/index.js} +14 -19
  172. package/dist/setup/index.js.map +1 -0
  173. package/dist/setup/utils/cli-detection.d.ts +12 -0
  174. package/dist/setup/utils/cli-detection.d.ts.map +1 -0
  175. package/dist/setup/utils/cli-detection.js +83 -0
  176. package/dist/setup/utils/cli-detection.js.map +1 -0
  177. package/dist/setup/utils/config-writer.d.ts +43 -0
  178. package/dist/setup/utils/config-writer.d.ts.map +1 -0
  179. package/dist/setup/utils/config-writer.js +180 -0
  180. package/dist/setup/utils/config-writer.js.map +1 -0
  181. package/dist/styles.d.ts +12 -0
  182. package/dist/styles.d.ts.map +1 -0
  183. package/dist/styles.js +12 -0
  184. package/dist/styles.js.map +1 -0
  185. package/dist/tui/App.d.ts +3 -0
  186. package/dist/tui/App.d.ts.map +1 -0
  187. package/dist/tui/App.js +136 -0
  188. package/dist/tui/App.js.map +1 -0
  189. package/dist/tui/components/AgentStateIcon.d.ts +18 -0
  190. package/dist/tui/components/AgentStateIcon.d.ts.map +1 -0
  191. package/dist/tui/components/AgentStateIcon.js +57 -0
  192. package/dist/tui/components/AgentStateIcon.js.map +1 -0
  193. package/dist/tui/components/AnimatedBranch.d.ts +39 -0
  194. package/dist/tui/components/AnimatedBranch.d.ts.map +1 -0
  195. package/dist/tui/components/AnimatedBranch.js +64 -0
  196. package/dist/tui/components/AnimatedBranch.js.map +1 -0
  197. package/dist/tui/components/ChatPanel.d.ts +17 -0
  198. package/dist/tui/components/ChatPanel.d.ts.map +1 -0
  199. package/dist/tui/components/ChatPanel.js +51 -0
  200. package/dist/tui/components/ChatPanel.js.map +1 -0
  201. package/dist/tui/components/DAGPanel.d.ts +37 -0
  202. package/dist/tui/components/DAGPanel.d.ts.map +1 -0
  203. package/dist/tui/components/DAGPanel.js +52 -0
  204. package/dist/tui/components/DAGPanel.js.map +1 -0
  205. package/dist/tui/components/ExecutionTimeline.d.ts +34 -0
  206. package/dist/tui/components/ExecutionTimeline.d.ts.map +1 -0
  207. package/dist/tui/components/ExecutionTimeline.js +67 -0
  208. package/dist/tui/components/ExecutionTimeline.js.map +1 -0
  209. package/dist/tui/components/Header.d.ts +12 -0
  210. package/dist/tui/components/Header.d.ts.map +1 -0
  211. package/dist/tui/components/Header.js +32 -0
  212. package/dist/tui/components/Header.js.map +1 -0
  213. package/dist/tui/components/HelpOverlay.d.ts +7 -0
  214. package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
  215. package/dist/tui/components/HelpOverlay.js +60 -0
  216. package/dist/tui/components/HelpOverlay.js.map +1 -0
  217. package/dist/tui/components/InputBar.d.ts +10 -0
  218. package/dist/tui/components/InputBar.d.ts.map +1 -0
  219. package/dist/tui/components/InputBar.js +21 -0
  220. package/dist/tui/components/InputBar.js.map +1 -0
  221. package/dist/tui/components/LogsPanel.d.ts +10 -0
  222. package/dist/tui/components/MemoryPanel.d.ts +22 -0
  223. package/dist/tui/components/MetricsPanel.d.ts +19 -0
  224. package/dist/tui/components/StatusPanel.d.ts +24 -0
  225. package/dist/tui/components/TaskTree.d.ts +28 -0
  226. package/dist/tui/components/TaskTree.d.ts.map +1 -0
  227. package/dist/tui/components/TaskTree.js +29 -0
  228. package/dist/tui/components/TaskTree.js.map +1 -0
  229. package/dist/tui/components/animations/ProgressBar.d.ts +39 -0
  230. package/dist/tui/components/animations/ProgressBar.d.ts.map +1 -0
  231. package/dist/tui/components/animations/ProgressBar.js +39 -0
  232. package/dist/tui/components/animations/ProgressBar.js.map +1 -0
  233. package/dist/tui/components/animations/Pulse.d.ts +17 -0
  234. package/dist/tui/components/animations/Pulse.d.ts.map +1 -0
  235. package/dist/tui/components/animations/Pulse.js +47 -0
  236. package/dist/tui/components/animations/Pulse.js.map +1 -0
  237. package/dist/tui/components/animations/Spinner.d.ts +13 -0
  238. package/dist/tui/components/animations/Spinner.d.ts.map +1 -0
  239. package/dist/tui/components/animations/Spinner.js +36 -0
  240. package/dist/tui/components/animations/Spinner.js.map +1 -0
  241. package/dist/tui/components/animations/StatusAnimator.d.ts +27 -0
  242. package/dist/tui/components/animations/StatusAnimator.d.ts.map +1 -0
  243. package/dist/tui/components/animations/StatusAnimator.js +85 -0
  244. package/dist/tui/components/animations/StatusAnimator.js.map +1 -0
  245. package/dist/tui/components/animations/TypingEffect.d.ts +26 -0
  246. package/dist/tui/components/animations/TypingEffect.d.ts.map +1 -0
  247. package/dist/tui/components/animations/TypingEffect.js +59 -0
  248. package/dist/tui/components/animations/TypingEffect.js.map +1 -0
  249. package/{src/tui/components/animations/index.ts → dist/tui/components/animations/index.d.ts} +2 -10
  250. package/dist/tui/components/animations/index.d.ts.map +1 -0
  251. package/dist/tui/components/animations/index.js +6 -0
  252. package/dist/tui/components/animations/index.js.map +1 -0
  253. package/dist/tui/hooks/useAnimation.d.ts +42 -0
  254. package/dist/tui/hooks/useAnimation.d.ts.map +1 -0
  255. package/dist/tui/hooks/useAnimation.js +212 -0
  256. package/dist/tui/hooks/useAnimation.js.map +1 -0
  257. package/dist/tui/hooks/useAppState.d.ts +65 -0
  258. package/dist/tui/hooks/useAppState.d.ts.map +1 -0
  259. package/dist/tui/hooks/useAppState.js +293 -0
  260. package/dist/tui/hooks/useAppState.js.map +1 -0
  261. package/dist/tui/index.d.ts +3 -0
  262. package/dist/tui/index.d.ts.map +1 -0
  263. package/{src/tui/index.ts → dist/tui/index.js} +2 -3
  264. package/dist/tui/index.js.map +1 -0
  265. package/dist/tui/services/orchestrator.d.ts +16 -0
  266. package/dist/tui/services/orchestrator.d.ts.map +1 -0
  267. package/dist/tui/services/orchestrator.js +152 -0
  268. package/dist/tui/services/orchestrator.js.map +1 -0
  269. package/dist/tui/styles/borders.d.ts +31 -0
  270. package/dist/tui/styles/borders.d.ts.map +1 -0
  271. package/dist/tui/styles/borders.js +47 -0
  272. package/dist/tui/styles/borders.js.map +1 -0
  273. package/dist/tui/styles/colors.d.ts +18 -0
  274. package/dist/tui/styles/colors.d.ts.map +1 -0
  275. package/dist/tui/styles/colors.js +18 -0
  276. package/dist/tui/styles/colors.js.map +1 -0
  277. package/dist/tui/styles/index.d.ts +6 -0
  278. package/dist/tui/styles/index.d.ts.map +1 -0
  279. package/dist/tui/styles/index.js +6 -0
  280. package/dist/tui/styles/index.js.map +1 -0
  281. package/dist/tui/styles/indicators.d.ts +67 -0
  282. package/dist/tui/styles/indicators.d.ts.map +1 -0
  283. package/dist/tui/styles/indicators.js +42 -0
  284. package/dist/tui/styles/indicators.js.map +1 -0
  285. package/dist/tui/styles/layout.d.ts +21 -0
  286. package/dist/tui/styles/layout.d.ts.map +1 -0
  287. package/dist/tui/styles/layout.js +42 -0
  288. package/dist/tui/styles/layout.js.map +1 -0
  289. package/dist/tui/styles/providers.d.ts +77 -0
  290. package/dist/tui/styles/providers.d.ts.map +1 -0
  291. package/dist/tui/styles/providers.js +31 -0
  292. package/dist/tui/styles/providers.js.map +1 -0
  293. package/dist/tui/utils/animation.d.ts +44 -0
  294. package/dist/tui/utils/animation.d.ts.map +1 -0
  295. package/dist/tui/utils/animation.js +107 -0
  296. package/dist/tui/utils/animation.js.map +1 -0
  297. package/dist/vendor-manifests.d.ts +22 -0
  298. package/dist/vendor-manifests.d.ts.map +1 -0
  299. package/dist/vendor-manifests.js +94 -0
  300. package/dist/vendor-manifests.js.map +1 -0
  301. package/dist/ws-relay.d.ts +12 -0
  302. package/dist/ws-relay.d.ts.map +1 -0
  303. package/{src/ws-relay.ts → dist/ws-relay.js} +39 -47
  304. package/dist/ws-relay.js.map +1 -0
  305. package/package.json +5 -1
  306. package/dashboard/index.html +0 -420
  307. package/src/benchmark.ts +0 -156
  308. package/src/bin.ts +0 -156
  309. package/src/bootstrap.ts +0 -36
  310. package/src/bridge-adapter-templates.ts +0 -181
  311. package/src/bridge-test.ts +0 -107
  312. package/src/doctor.ts +0 -92
  313. package/src/host-init-templates.ts +0 -134
  314. package/src/hub/__tests__/commands.test.ts +0 -84
  315. package/src/hub/__tests__/history.test.ts +0 -137
  316. package/src/hub/__tests__/parser.test.ts +0 -105
  317. package/src/hub/commands/agents.ts +0 -53
  318. package/src/hub/commands/index.ts +0 -140
  319. package/src/hub/commands/logs.ts +0 -70
  320. package/src/hub/commands/memory.ts +0 -47
  321. package/src/hub/commands/metrics.ts +0 -49
  322. package/src/hub/commands/providers.ts +0 -39
  323. package/src/hub/commands/run.ts +0 -37
  324. package/src/hub/commands/status.ts +0 -69
  325. package/src/hub/commands/workflows.ts +0 -64
  326. package/src/hub/config-loader.ts +0 -37
  327. package/src/hub/event-listener.ts +0 -17
  328. package/src/hub/history.ts +0 -66
  329. package/src/hub/index.ts +0 -132
  330. package/src/hub/parser.ts +0 -107
  331. package/src/hub/styles/borders.ts +0 -74
  332. package/src/hub/styles/colors.ts +0 -129
  333. package/src/hub/styles/typography.ts +0 -68
  334. package/src/hub/types.ts +0 -31
  335. package/src/init-host.ts +0 -285
  336. package/src/install.ts +0 -118
  337. package/src/run.ts +0 -317
  338. package/src/setup/components/ApiKeyInput.tsx +0 -158
  339. package/src/setup/components/CliDetector.tsx +0 -230
  340. package/src/setup/components/ModeSelector.tsx +0 -137
  341. package/src/setup/components/ProviderSelector.tsx +0 -175
  342. package/src/setup/components/SetupWizard.tsx +0 -368
  343. package/src/setup/components/StepIndicator.tsx +0 -74
  344. package/src/setup/components/SuccessScreen.tsx +0 -229
  345. package/src/setup/utils/cli-detection.ts +0 -99
  346. package/src/setup/utils/config-writer.ts +0 -249
  347. package/src/styles.ts +0 -12
  348. package/src/tui/App.tsx +0 -183
  349. package/src/tui/components/AgentStateIcon.tsx +0 -84
  350. package/src/tui/components/AnimatedBranch.tsx +0 -134
  351. package/src/tui/components/ChatPanel.tsx +0 -128
  352. package/src/tui/components/DAGPanel.tsx +0 -212
  353. package/src/tui/components/ExecutionTimeline.tsx +0 -225
  354. package/src/tui/components/Header.tsx +0 -109
  355. package/src/tui/components/HelpOverlay.tsx +0 -140
  356. package/src/tui/components/InputBar.tsx +0 -69
  357. package/src/tui/components/LogsPanel.tsx +0 -132
  358. package/src/tui/components/MemoryPanel.tsx +0 -166
  359. package/src/tui/components/MetricsPanel.tsx +0 -152
  360. package/src/tui/components/StatusPanel.tsx +0 -140
  361. package/src/tui/components/TaskTree.tsx +0 -159
  362. package/src/tui/components/animations/ProgressBar.tsx +0 -160
  363. package/src/tui/components/animations/Pulse.tsx +0 -73
  364. package/src/tui/components/animations/Spinner.tsx +0 -54
  365. package/src/tui/components/animations/StatusAnimator.tsx +0 -153
  366. package/src/tui/components/animations/TypingEffect.tsx +0 -119
  367. package/src/tui/hooks/useAnimation.ts +0 -290
  368. package/src/tui/hooks/useAppState.ts +0 -403
  369. package/src/tui/services/orchestrator.ts +0 -195
  370. package/src/tui/styles/borders.ts +0 -51
  371. package/src/tui/styles/colors.ts +0 -19
  372. package/src/tui/styles/index.ts +0 -20
  373. package/src/tui/styles/indicators.ts +0 -54
  374. package/src/tui/styles/layout.ts +0 -44
  375. package/src/tui/styles/providers.ts +0 -32
  376. package/src/tui/utils/animation.ts +0 -124
  377. package/src/vendor-manifests.ts +0 -113
  378. package/tsconfig.json +0 -28
@@ -1,368 +0,0 @@
1
- import React, { useState, useCallback, useEffect } from "react";
2
- import { Box, Text, useApp, useInput } from "ink";
3
- import { AsciiBanner } from "./AsciiBanner.js";
4
- import { StepIndicator } from "./StepIndicator.js";
5
- import { ProviderSelector, PROVIDERS } from "./ProviderSelector.js";
6
- import { ApiKeyCollector } from "./ApiKeyInput.js";
7
- import { ModeSelector } from "./ModeSelector.js";
8
- import { CliDetector, CliSelector, DetectedCli } from "./CliDetector.js";
9
- import { SuccessScreen, ErrorScreen } from "./SuccessScreen.js";
10
- import {
11
- writeRaxrc,
12
- writeHubBootstrap,
13
- writeStandaloneConfig,
14
- SetupConfig,
15
- } from "../utils/config-writer.js";
16
-
17
- type SetupStep =
18
- | "welcome"
19
- | "providers"
20
- | "apikeys"
21
- | "mode"
22
- | "hub"
23
- | "cli-select"
24
- | "standalone"
25
- | "complete"
26
- | "error";
27
-
28
- const STEPS = ["Welcome", "Providers", "API Keys", "Mode", "Configure", "Complete"];
29
- const TOTAL_STEPS = 5;
30
-
31
- interface WizardState {
32
- step: SetupStep;
33
- selectedProviders: string[];
34
- apiKeys: Record<string, string>;
35
- mode: "hub" | "standalone" | "both" | null;
36
- detectedClis: DetectedCli[];
37
- selectedClis: string[];
38
- filesCreated: string[];
39
- error: string | null;
40
- currentKeyIndex: number;
41
- }
42
-
43
- export function SetupWizard() {
44
- const { exit } = useApp();
45
-
46
- const [state, setState] = useState<WizardState>({
47
- step: "welcome",
48
- selectedProviders: [],
49
- apiKeys: {},
50
- mode: null,
51
- detectedClis: [],
52
- selectedClis: [],
53
- filesCreated: [],
54
- error: null,
55
- currentKeyIndex: 0,
56
- });
57
-
58
- const PRIMARY = "#f97316";
59
-
60
- const getStepNumber = useCallback(() => {
61
- switch (state.step) {
62
- case "welcome":
63
- return 1;
64
- case "providers":
65
- return 2;
66
- case "apikeys":
67
- return 2;
68
- case "mode":
69
- return 3;
70
- case "hub":
71
- case "cli-select":
72
- case "standalone":
73
- return 4;
74
- case "complete":
75
- return 5;
76
- default:
77
- return 1;
78
- }
79
- }, [state.step]);
80
-
81
- useInput((input, key) => {
82
- if (state.step === "welcome") {
83
- if (key.return || input === " ") {
84
- setState((s) => ({ ...s, step: "providers" }));
85
- }
86
- }
87
-
88
- if (state.step === "complete") {
89
- exit();
90
- }
91
-
92
- if (state.step === "error") {
93
- if (input.toLowerCase() === "e" || key.escape) {
94
- exit();
95
- }
96
- }
97
-
98
- if (key.ctrl && input === "c") {
99
- exit();
100
- }
101
- });
102
-
103
- const handleProviderToggle = useCallback((providerId: string) => {
104
- setState((s) => ({
105
- ...s,
106
- selectedProviders: s.selectedProviders.includes(providerId)
107
- ? s.selectedProviders.filter((id) => id !== providerId)
108
- : [...s.selectedProviders, providerId],
109
- }));
110
- }, []);
111
-
112
- const handleProviderContinue = useCallback(() => {
113
- const providersNeedingKeys = PROVIDERS.filter(
114
- (p) => p.requiresApiKey && state.selectedProviders.includes(p.id)
115
- );
116
-
117
- if (providersNeedingKeys.length > 0) {
118
- setState((s) => ({ ...s, step: "apikeys", currentKeyIndex: 0 }));
119
- } else {
120
- setState((s) => ({ ...s, step: "mode" }));
121
- }
122
- }, [state.selectedProviders]);
123
-
124
- const handleApiKeySet = useCallback((providerId: string, key: string) => {
125
- setState((s) => ({
126
- ...s,
127
- apiKeys: { ...s.apiKeys, [providerId]: key },
128
- step: "mode",
129
- }));
130
- }, []);
131
-
132
- const handleApiKeySkip = useCallback(() => {
133
- setState((s) => ({ ...s, step: "mode" }));
134
- }, []);
135
-
136
- const handleModeSelect = useCallback((mode: "hub" | "standalone" | "both") => {
137
- setState((s) => ({ ...s, mode }));
138
- }, []);
139
-
140
- const handleModeContinue = useCallback(() => {
141
- if (state.mode === "hub" || state.mode === "both") {
142
- setState((s) => ({ ...s, step: "hub" }));
143
- } else {
144
- setState((s) => ({ ...s, step: "standalone" }));
145
- }
146
- }, [state.mode]);
147
-
148
- const handleClisDetected = useCallback((clis: DetectedCli[]) => {
149
- setState((s) => ({ ...s, detectedClis: clis }));
150
- }, []);
151
-
152
- const handleHubContinue = useCallback(() => {
153
- const availableClis = state.detectedClis.filter((c) => c.detected);
154
- if (availableClis.length > 0) {
155
- setState((s) => ({ ...s, step: "cli-select" }));
156
- } else {
157
- setState((s) => ({ ...s, step: "standalone" }));
158
- }
159
- }, [state.detectedClis]);
160
-
161
- const handleCliToggle = useCallback((cliId: string) => {
162
- setState((s) => ({
163
- ...s,
164
- selectedClis: s.selectedClis.includes(cliId)
165
- ? s.selectedClis.filter((id) => id !== cliId)
166
- : [...s.selectedClis, cliId],
167
- }));
168
- }, []);
169
-
170
- const handleCliSelectContinue = useCallback(() => {
171
- setState((s) => ({ ...s, step: "standalone" }));
172
- }, []);
173
-
174
- const handleBack = useCallback((targetStep: SetupStep) => {
175
- setState((s) => ({ ...s, step: targetStep }));
176
- }, []);
177
-
178
- const runFinalSetup = useCallback(async () => {
179
- try {
180
- const config: SetupConfig = {
181
- mode: state.mode!,
182
- providers: state.selectedProviders.map((id) => ({
183
- id,
184
- name: PROVIDERS.find((p) => p.id === id)?.name || id,
185
- apiKey: state.apiKeys[id],
186
- })),
187
- defaultProvider: state.selectedProviders[0] === "host" ? "host" : state.selectedProviders[0] || "openai",
188
- hubTargets: state.selectedClis,
189
- projectPath: process.cwd(),
190
- };
191
-
192
- const files: string[] = [];
193
-
194
- const raxrcPath = await writeRaxrc(process.cwd(), config);
195
- files.push(raxrcPath);
196
-
197
- if (state.mode === "hub" || state.mode === "both") {
198
- for (const cliId of state.selectedClis) {
199
- const cli = state.detectedClis.find((c) => c.id === cliId);
200
- if (cli?.configPath) {
201
- const bootstrapPath = await writeHubBootstrap(
202
- cliId,
203
- cli.configPath,
204
- process.cwd()
205
- );
206
- files.push(bootstrapPath);
207
- }
208
- }
209
- }
210
-
211
- if (state.mode === "standalone" || state.mode === "both") {
212
- const { raxFlowDir, globalDir } = await writeStandaloneConfig(process.cwd());
213
- files.push(raxFlowDir);
214
- files.push(globalDir);
215
- }
216
-
217
- setState((s) => ({
218
- ...s,
219
- filesCreated: files,
220
- step: "complete",
221
- }));
222
- } catch (err) {
223
- setState((s) => ({
224
- ...s,
225
- error: err instanceof Error ? err.message : "Unknown error",
226
- step: "error",
227
- }));
228
- }
229
- }, [state.mode, state.selectedProviders, state.apiKeys, state.selectedClis, state.detectedClis]);
230
-
231
- useEffect(() => {
232
- if (state.step === "standalone") {
233
- runFinalSetup();
234
- }
235
- }, [state.step, runFinalSetup]);
236
-
237
- const renderStep = () => {
238
- switch (state.step) {
239
- case "welcome":
240
- return (
241
- <Box flexDirection="column" alignItems="center">
242
- <AsciiBanner />
243
- <Box marginTop={2} marginBottom={1}>
244
- <Text color="#a1a1aa">
245
- Welcome to the RAXFLOW Setup Wizard
246
- </Text>
247
- </Box>
248
- <Box marginBottom={1}>
249
- <Text color="#71717a" dimColor>
250
- This wizard will help you configure RAXFLOW for your environment.
251
- </Text>
252
- </Box>
253
- <Box marginTop={2}>
254
- <Text color={PRIMARY}>Press ENTER to continue...</Text>
255
- </Box>
256
- </Box>
257
- );
258
-
259
- case "providers":
260
- return (
261
- <ProviderSelector
262
- selectedProviders={state.selectedProviders}
263
- onToggle={handleProviderToggle}
264
- onContinue={handleProviderContinue}
265
- onBack={() => handleBack("welcome")}
266
- />
267
- );
268
-
269
- case "apikeys": {
270
- const providersNeedingKeys = PROVIDERS.filter(
271
- (p) => p.requiresApiKey && state.selectedProviders.includes(p.id)
272
- );
273
- return (
274
- <ApiKeyCollector
275
- providers={providersNeedingKeys}
276
- currentIndex={state.currentKeyIndex}
277
- keys={state.apiKeys}
278
- onSetKey={handleApiKeySet}
279
- onSkip={handleApiKeySkip}
280
- onBack={() => handleBack("providers")}
281
- />
282
- );
283
- }
284
-
285
- case "mode":
286
- return (
287
- <ModeSelector
288
- selectedMode={state.mode}
289
- onSelect={handleModeSelect}
290
- onContinue={handleModeContinue}
291
- />
292
- );
293
-
294
- case "hub":
295
- return (
296
- <CliDetector
297
- onDetected={handleClisDetected}
298
- onContinue={handleHubContinue}
299
- onBack={() => handleBack("mode")}
300
- />
301
- );
302
-
303
- case "cli-select":
304
- return (
305
- <CliSelector
306
- detectedClis={state.detectedClis}
307
- selectedClis={state.selectedClis}
308
- onToggle={handleCliToggle}
309
- onContinue={handleCliSelectContinue}
310
- onBack={() => handleBack("hub")}
311
- />
312
- );
313
-
314
- case "standalone":
315
- return (
316
- <Box flexDirection="column" alignItems="center">
317
- <Text color="#f59e0b">Setting up standalone configuration...</Text>
318
- </Box>
319
- );
320
-
321
- case "complete":
322
- return (
323
- <SuccessScreen
324
- summary={{
325
- mode: state.mode!,
326
- providers: state.selectedProviders,
327
- hubTargets: state.selectedClis,
328
- filesCreated: state.filesCreated,
329
- }}
330
- onExit={exit}
331
- />
332
- );
333
-
334
- case "error":
335
- return (
336
- <ErrorScreen
337
- error={state.error || "Unknown error"}
338
- onExit={exit}
339
- />
340
- );
341
-
342
- default:
343
- return null;
344
- }
345
- };
346
-
347
- return (
348
- <Box flexDirection="column" padding={1} height="100%">
349
- {state.step !== "welcome" && state.step !== "complete" && state.step !== "error" && (
350
- <StepIndicator
351
- currentStep={getStepNumber()}
352
- totalSteps={TOTAL_STEPS}
353
- steps={STEPS}
354
- />
355
- )}
356
- <Box flexGrow={1} flexDirection="column">
357
- {renderStep()}
358
- </Box>
359
- {state.step !== "welcome" && state.step !== "complete" && state.step !== "error" && (
360
- <Box marginTop={1}>
361
- <Text color="#71717a" dimColor>
362
- Ctrl+C to exit
363
- </Text>
364
- </Box>
365
- )}
366
- </Box>
367
- );
368
- }
@@ -1,74 +0,0 @@
1
- import React from "react";
2
- import { Box, Text } from "ink";
3
-
4
- interface StepIndicatorProps {
5
- currentStep: number;
6
- totalSteps: number;
7
- steps: string[];
8
- }
9
-
10
- export function StepIndicator({ currentStep, totalSteps, steps }: StepIndicatorProps) {
11
- const PRIMARY = "#f97316";
12
- const SECONDARY = "#a1a1aa";
13
- const BORDER = "#27272a";
14
-
15
- return (
16
- <Box flexDirection="column" marginBottom={1}>
17
- <Box>
18
- <Text color={SECONDARY}>╭</Text>
19
- <Text color={BORDER}>{"─".repeat(58)}</Text>
20
- <Text color={SECONDARY}>╮</Text>
21
- </Box>
22
-
23
- <Box>
24
- <Text color={SECONDARY}>│</Text>
25
- <Box width={58} flexDirection="row">
26
- {steps.map((step, index) => {
27
- const stepNum = index + 1;
28
- const isActive = stepNum === currentStep;
29
- const isCompleted = stepNum < currentStep;
30
-
31
- return (
32
- <Box key={index} marginRight={1}>
33
- {isCompleted ? (
34
- <Text color="#22c55e">✓</Text>
35
- ) : isActive ? (
36
- <Text color={PRIMARY} bold>{`[${stepNum}]`}</Text>
37
- ) : (
38
- <Text color={SECONDARY}>{` ${stepNum} `}</Text>
39
- )}
40
- <Text color={isActive ? PRIMARY : SECONDARY}> {step}</Text>
41
- </Box>
42
- );
43
- })}
44
- </Box>
45
- <Text color={SECONDARY}>│</Text>
46
- </Box>
47
-
48
- <Box>
49
- <Text color={SECONDARY}>╰</Text>
50
- <Text color={BORDER}>{"─".repeat(58)}</Text>
51
- <Text color={SECONDARY}>╯</Text>
52
- </Box>
53
- </Box>
54
- );
55
- }
56
-
57
- interface CompactStepIndicatorProps {
58
- currentStep: number;
59
- totalSteps: number;
60
- }
61
-
62
- export function CompactStepIndicator({ currentStep, totalSteps }: CompactStepIndicatorProps) {
63
- const PRIMARY = "#f97316";
64
-
65
- return (
66
- <Box>
67
- <Text color={PRIMARY} bold>
68
- STEP {currentStep}/{totalSteps}
69
- </Text>
70
- <Text color="#27272a"> │ </Text>
71
- <Text color="#a1a1aa">{"●".repeat(currentStep)}{"○".repeat(totalSteps - currentStep)}</Text>
72
- </Box>
73
- );
74
- }
@@ -1,229 +0,0 @@
1
- import React, { useState, useEffect } from "react";
2
- import { Box, Text } from "ink";
3
-
4
- interface SuccessScreenProps {
5
- summary: {
6
- mode: "hub" | "standalone" | "both";
7
- providers: string[];
8
- hubTargets?: string[];
9
- filesCreated: string[];
10
- warnings?: string[];
11
- };
12
- onExit: () => void;
13
- }
14
-
15
- const CHECKMARK_ANIMATION = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
16
- const SUCCESS_FRAMES = ["✓", "✓", "✓"];
17
-
18
- export function SuccessScreen({ summary, onExit }: SuccessScreenProps) {
19
- const [animFrame, setAnimFrame] = useState(0);
20
- const [showContent, setShowContent] = useState(false);
21
- const PRIMARY = "#f97316";
22
-
23
- useEffect(() => {
24
- const animInterval = setInterval(() => {
25
- setAnimFrame((prev) => {
26
- if (prev < CHECKMARK_ANIMATION.length - 1) {
27
- return prev + 1;
28
- } else {
29
- setShowContent(true);
30
- clearInterval(animInterval);
31
- return prev;
32
- }
33
- });
34
- }, 80);
35
-
36
- return () => clearInterval(animInterval);
37
- }, []);
38
-
39
- useEffect(() => {
40
- if (showContent) {
41
- const timer = setTimeout(() => {
42
- // Auto-close after showing content
43
- }, 5000);
44
- return () => clearTimeout(timer);
45
- }
46
- }, [showContent]);
47
-
48
- return (
49
- <Box flexDirection="column" alignItems="center">
50
- {!showContent ? (
51
- <Box>
52
- <Text color="#22c55e">{CHECKMARK_ANIMATION[animFrame]}</Text>
53
- <Text color="#a1a1aa"> Finalizing setup...</Text>
54
- </Box>
55
- ) : (
56
- <>
57
- <Box marginBottom={1}>
58
- <Text color="#22c55e" bold>
59
- ╔═══════════════════════════════════════════════════════╗
60
- </Text>
61
- </Box>
62
-
63
- <Box>
64
- <Text color="#22c55e" bold>
65
-
66
- </Text>
67
- <Text color="#22c55e" bold>
68
- {" ✓ SETUP COMPLETE "}
69
- </Text>
70
- <Text color="#22c55e" bold>
71
-
72
- </Text>
73
- </Box>
74
-
75
- <Box>
76
- <Text color="#27272a" bold>
77
- ╚═══════════════════════════════════════════════════════╝
78
- </Text>
79
- </Box>
80
-
81
- <Box marginTop={2} flexDirection="column">
82
- <Box marginBottom={1}>
83
- <Text color={PRIMARY} bold>
84
- CONFIGURATION SUMMARY
85
- </Text>
86
- </Box>
87
-
88
- <Box>
89
- <Text color="#a1a1aa">Mode: </Text>
90
- <Text color="#ffffff" bold>
91
- {summary.mode.toUpperCase()}
92
- </Text>
93
- </Box>
94
-
95
- <Box>
96
- <Text color="#a1a1aa">Providers: </Text>
97
- <Text color="#22c55e">{summary.providers.join(", ")}</Text>
98
- </Box>
99
-
100
- {summary.hubTargets && summary.hubTargets.length > 0 && (
101
- <Box>
102
- <Text color="#a1a1aa">Hub Integration: </Text>
103
- <Text color="#f59e0b">{summary.hubTargets.join(", ")}</Text>
104
- </Box>
105
- )}
106
-
107
- <Box marginTop={1}>
108
- <Text color={PRIMARY} bold>
109
- FILES CREATED
110
- </Text>
111
- </Box>
112
-
113
- {summary.filesCreated.map((file, index) => (
114
- <Box key={index}>
115
- <Text color="#22c55e"> ● </Text>
116
- <Text color="#a1a1aa">{file}</Text>
117
- </Box>
118
- ))}
119
-
120
- {summary.warnings && summary.warnings.length > 0 && (
121
- <>
122
- <Box marginTop={1}>
123
- <Text color="#f59e0b" bold>
124
- WARNINGS
125
- </Text>
126
- </Box>
127
- {summary.warnings.map((warning, index) => (
128
- <Box key={index}>
129
- <Text color="#f59e0b"> ⚠ </Text>
130
- <Text color="#a1a1aa">{warning}</Text>
131
- </Box>
132
- ))}
133
- </>
134
- )}
135
- </Box>
136
-
137
- <Box marginTop={2} flexDirection="column">
138
- <Box marginBottom={1}>
139
- <Text color={PRIMARY} bold>
140
- NEXT STEPS
141
- </Text>
142
- </Box>
143
-
144
- <Box>
145
- <Text color="#71717a">1. Run </Text>
146
- <Text color="#f59e0b">raxflow doctor</Text>
147
- <Text color="#71717a"> to verify setup</Text>
148
- </Box>
149
-
150
- <Box>
151
- <Text color="#71717a">2. Try </Text>
152
- <Text color="#f59e0b">raxflow</Text>
153
- <Text color="#71717a"> to launch the hub</Text>
154
- </Box>
155
-
156
- <Box>
157
- <Text color="#71717a">3. Run </Text>
158
- <Text color="#f59e0b">raxflow run --prompt "..." --stream</Text>
159
- <Text color="#71717a"> to execute</Text>
160
- </Box>
161
- </Box>
162
-
163
- <Box marginTop={2}>
164
- <Text color="#27272a">{"─".repeat(55)}</Text>
165
- </Box>
166
-
167
- <Box marginTop={1}>
168
- <Text color={PRIMARY}>
169
- RAXFLOW is now the operational backbone of your CLI workflow.
170
- </Text>
171
- </Box>
172
-
173
- <Box marginTop={1}>
174
- <Text color="#71717a" dimColor>
175
- Press any key to exit...
176
- </Text>
177
- </Box>
178
- </>
179
- )}
180
- </Box>
181
- );
182
- }
183
-
184
- export function ErrorScreen({
185
- error,
186
- onRetry,
187
- onExit,
188
- }: {
189
- error: string;
190
- onRetry?: () => void;
191
- onExit: () => void;
192
- }) {
193
- return (
194
- <Box flexDirection="column" alignItems="center">
195
- <Box marginBottom={1}>
196
- <Text color="#ef4444" bold>
197
- ╔═══════════════════════════════════════════════════════╗
198
- </Text>
199
- </Box>
200
-
201
- <Box>
202
- <Text color="#ef4444" bold>
203
-
204
- </Text>
205
- <Text color="#ef4444" bold>
206
- {" ✗ SETUP FAILED "}
207
- </Text>
208
- <Text color="#ef4444" bold>
209
-
210
- </Text>
211
- </Box>
212
-
213
- <Box>
214
- <Text color="#27272a" bold>
215
- ╚═══════════════════════════════════════════════════════╝
216
- </Text>
217
- </Box>
218
-
219
- <Box marginTop={1}>
220
- <Text color="#ef4444">{error}</Text>
221
- </Box>
222
-
223
- <Box marginTop={2}>
224
- {onRetry && <Text color="#f59e0b">[R] Retry</Text>}
225
- <Text color="#71717a"> [E] Exit</Text>
226
- </Box>
227
- </Box>
228
- );
229
- }