@ranker/raxflow 0.2.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 (425) hide show
  1. package/dashboard/index.html +420 -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.map +1 -0
  6. package/dist/bin.js +141 -0
  7. package/dist/bin.js.map +1 -0
  8. package/dist/bootstrap.d.ts.map +1 -0
  9. package/dist/bootstrap.js +22 -0
  10. package/dist/bootstrap.js.map +1 -0
  11. package/dist/bridge-adapter-templates.d.ts.map +1 -0
  12. package/dist/bridge-adapter-templates.js +185 -0
  13. package/dist/bridge-adapter-templates.js.map +1 -0
  14. package/dist/bridge-test.d.ts.map +1 -0
  15. package/dist/bridge-test.js +89 -0
  16. package/dist/bridge-test.js.map +1 -0
  17. package/dist/dashboard.d.ts.map +1 -0
  18. package/dist/dashboard.js +49 -0
  19. package/dist/dashboard.js.map +1 -0
  20. package/dist/doctor.d.ts.map +1 -0
  21. package/dist/doctor.js +70 -0
  22. package/dist/doctor.js.map +1 -0
  23. package/dist/evolve.d.ts.map +1 -0
  24. package/dist/evolve.js +48 -0
  25. package/dist/evolve.js.map +1 -0
  26. package/dist/host-init-templates.d.ts.map +1 -0
  27. package/dist/host-init-templates.js +119 -0
  28. package/dist/host-init-templates.js.map +1 -0
  29. package/dist/hub/__tests__/commands.test.d.ts.map +1 -0
  30. package/dist/hub/__tests__/commands.test.js +72 -0
  31. package/dist/hub/__tests__/commands.test.js.map +1 -0
  32. package/dist/hub/__tests__/history.test.d.ts.map +1 -0
  33. package/dist/hub/__tests__/history.test.js +119 -0
  34. package/dist/hub/__tests__/history.test.js.map +1 -0
  35. package/dist/hub/__tests__/parser.test.d.ts.map +1 -0
  36. package/dist/hub/__tests__/parser.test.js +92 -0
  37. package/dist/hub/__tests__/parser.test.js.map +1 -0
  38. package/dist/hub/chat/ChatApp.d.ts +2 -0
  39. package/dist/hub/chat/ChatApp.d.ts.map +1 -0
  40. package/dist/hub/chat/ChatApp.js +146 -0
  41. package/dist/hub/chat/ChatApp.js.map +1 -0
  42. package/dist/hub/chat/components/ChatInput.d.ts +9 -0
  43. package/dist/hub/chat/components/ChatInput.d.ts.map +1 -0
  44. package/dist/hub/chat/components/ChatInput.js +19 -0
  45. package/dist/hub/chat/components/ChatInput.js.map +1 -0
  46. package/dist/hub/chat/components/MessageList.d.ts +7 -0
  47. package/dist/hub/chat/components/MessageList.d.ts.map +1 -0
  48. package/dist/hub/chat/components/MessageList.js +6 -0
  49. package/dist/hub/chat/components/MessageList.js.map +1 -0
  50. package/dist/hub/chat/context.d.ts.map +1 -0
  51. package/dist/hub/chat/context.js +42 -0
  52. package/dist/hub/chat/context.js.map +1 -0
  53. package/dist/hub/chat/hooks/useChatHistory.d.ts +7 -0
  54. package/dist/hub/chat/hooks/useChatHistory.d.ts.map +1 -0
  55. package/dist/hub/chat/hooks/useChatHistory.js +31 -0
  56. package/dist/hub/chat/hooks/useChatHistory.js.map +1 -0
  57. package/dist/hub/chat/index.d.ts.map +1 -0
  58. package/dist/hub/chat/index.js +7 -0
  59. package/dist/hub/chat/index.js.map +1 -0
  60. package/dist/hub/chat/intent-parser.d.ts.map +1 -0
  61. package/dist/hub/chat/intent-parser.js +48 -0
  62. package/dist/hub/chat/intent-parser.js.map +1 -0
  63. package/dist/hub/chat/types.d.ts.map +1 -0
  64. package/dist/hub/chat/types.js +2 -0
  65. package/dist/hub/chat/types.js.map +1 -0
  66. package/dist/hub/commands/agents.d.ts.map +1 -0
  67. package/dist/hub/commands/agents.js +36 -0
  68. package/dist/hub/commands/agents.js.map +1 -0
  69. package/dist/hub/commands/index.d.ts.map +1 -0
  70. package/dist/hub/commands/index.js +123 -0
  71. package/dist/hub/commands/index.js.map +1 -0
  72. package/dist/hub/commands/logs.d.ts.map +1 -0
  73. package/dist/hub/commands/logs.js +53 -0
  74. package/dist/hub/commands/logs.js.map +1 -0
  75. package/dist/hub/commands/memory.d.ts.map +1 -0
  76. package/dist/hub/commands/memory.js +40 -0
  77. package/dist/hub/commands/memory.js.map +1 -0
  78. package/dist/hub/commands/metrics.d.ts.map +1 -0
  79. package/dist/hub/commands/metrics.js +35 -0
  80. package/dist/hub/commands/metrics.js.map +1 -0
  81. package/dist/hub/commands/providers.d.ts.map +1 -0
  82. package/dist/hub/commands/providers.js +26 -0
  83. package/dist/hub/commands/providers.js.map +1 -0
  84. package/dist/hub/commands/run.d.ts.map +1 -0
  85. package/dist/hub/commands/run.js +31 -0
  86. package/dist/hub/commands/run.js.map +1 -0
  87. package/dist/hub/commands/status.d.ts.map +1 -0
  88. package/dist/hub/commands/status.js +61 -0
  89. package/dist/hub/commands/status.js.map +1 -0
  90. package/dist/hub/commands/workflows.d.ts.map +1 -0
  91. package/dist/hub/commands/workflows.js +45 -0
  92. package/dist/hub/commands/workflows.js.map +1 -0
  93. package/dist/hub/config-loader.d.ts.map +1 -0
  94. package/dist/hub/config-loader.js +27 -0
  95. package/dist/hub/config-loader.js.map +1 -0
  96. package/dist/hub/event-listener.d.ts +6 -0
  97. package/dist/hub/event-listener.d.ts.map +1 -0
  98. package/dist/hub/event-listener.js +12 -0
  99. package/dist/hub/event-listener.js.map +1 -0
  100. package/dist/hub/history.d.ts.map +1 -0
  101. package/dist/hub/history.js +59 -0
  102. package/dist/hub/history.js.map +1 -0
  103. package/dist/hub/index.d.ts.map +1 -0
  104. package/dist/hub/index.js +114 -0
  105. package/dist/hub/index.js.map +1 -0
  106. package/dist/hub/parser.d.ts.map +1 -0
  107. package/dist/hub/parser.js +98 -0
  108. package/dist/hub/parser.js.map +1 -0
  109. package/dist/hub/styles/borders.d.ts.map +1 -0
  110. package/dist/hub/styles/borders.js +64 -0
  111. package/dist/hub/styles/borders.js.map +1 -0
  112. package/dist/hub/styles/colors.d.ts.map +1 -0
  113. package/dist/hub/styles/colors.js +115 -0
  114. package/dist/hub/styles/colors.js.map +1 -0
  115. package/dist/hub/styles/typography.d.ts.map +1 -0
  116. package/dist/hub/styles/typography.js +60 -0
  117. package/dist/hub/styles/typography.js.map +1 -0
  118. package/dist/hub/tui/App.d.ts +2 -0
  119. package/dist/hub/tui/App.d.ts.map +1 -0
  120. package/dist/hub/tui/App.js +53 -0
  121. package/dist/hub/tui/App.js.map +1 -0
  122. package/dist/hub/tui/components/AgentQueue.d.ts +6 -0
  123. package/dist/hub/tui/components/AgentQueue.d.ts.map +1 -0
  124. package/dist/hub/tui/components/AgentQueue.js +20 -0
  125. package/dist/hub/tui/components/AgentQueue.js.map +1 -0
  126. package/dist/hub/tui/components/DAGPanel.d.ts +16 -0
  127. package/dist/hub/tui/components/DAGPanel.d.ts.map +1 -0
  128. package/dist/hub/tui/components/DAGPanel.js +51 -0
  129. package/dist/hub/tui/components/DAGPanel.js.map +1 -0
  130. package/dist/hub/tui/components/Header.d.ts +7 -0
  131. package/dist/hub/tui/components/Header.d.ts.map +1 -0
  132. package/dist/hub/tui/components/Header.js +17 -0
  133. package/dist/hub/tui/components/Header.js.map +1 -0
  134. package/dist/hub/tui/components/LogsPanel.d.ts +6 -0
  135. package/dist/hub/tui/components/LogsPanel.d.ts.map +1 -0
  136. package/dist/hub/tui/components/LogsPanel.js +26 -0
  137. package/dist/hub/tui/components/LogsPanel.js.map +1 -0
  138. package/dist/hub/tui/components/StatusBar.d.ts +8 -0
  139. package/dist/hub/tui/components/StatusBar.d.ts.map +1 -0
  140. package/dist/hub/tui/components/StatusBar.js +7 -0
  141. package/dist/hub/tui/components/StatusBar.js.map +1 -0
  142. package/dist/hub/tui/hooks/useEvents.d.ts +2 -0
  143. package/dist/hub/tui/hooks/useEvents.d.ts.map +1 -0
  144. package/dist/hub/tui/hooks/useEvents.js +13 -0
  145. package/dist/hub/tui/hooks/useEvents.js.map +1 -0
  146. package/dist/hub/tui/index.d.ts.map +1 -0
  147. package/dist/hub/tui/index.js +7 -0
  148. package/dist/hub/tui/index.js.map +1 -0
  149. package/dist/hub/tui/types.d.ts.map +1 -0
  150. package/dist/hub/tui/types.js +2 -0
  151. package/dist/hub/tui/types.js.map +1 -0
  152. package/dist/hub/types.d.ts.map +1 -0
  153. package/dist/hub/types.js +2 -0
  154. package/dist/hub/types.js.map +1 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +11 -0
  157. package/dist/index.js.map +1 -0
  158. package/dist/init-host.d.ts.map +1 -0
  159. package/dist/init-host.js +232 -0
  160. package/dist/init-host.js.map +1 -0
  161. package/dist/install.d.ts.map +1 -0
  162. package/dist/install.js +99 -0
  163. package/dist/install.js.map +1 -0
  164. package/dist/run.d.ts.map +1 -0
  165. package/dist/run.js +238 -0
  166. package/dist/run.js.map +1 -0
  167. package/dist/setup/components/ApiKeyInput.d.ts +25 -0
  168. package/dist/setup/components/ApiKeyInput.d.ts.map +1 -0
  169. package/dist/setup/components/ApiKeyInput.js +54 -0
  170. package/dist/setup/components/ApiKeyInput.js.map +1 -0
  171. package/dist/setup/components/AsciiBanner.d.ts +22 -0
  172. package/dist/setup/components/AsciiBanner.d.ts.map +1 -0
  173. package/dist/setup/components/AsciiBanner.js +55 -0
  174. package/dist/setup/components/AsciiBanner.js.map +1 -0
  175. package/dist/setup/components/CliDetector.d.ts +17 -0
  176. package/dist/setup/components/CliDetector.d.ts.map +1 -0
  177. package/dist/setup/components/CliDetector.js +79 -0
  178. package/dist/setup/components/CliDetector.js.map +1 -0
  179. package/dist/setup/components/ModeSelector.d.ts +8 -0
  180. package/dist/setup/components/ModeSelector.d.ts.map +1 -0
  181. package/dist/setup/components/ModeSelector.js +76 -0
  182. package/dist/setup/components/ModeSelector.js.map +1 -0
  183. package/dist/setup/components/ProviderSelector.d.ts +18 -0
  184. package/dist/setup/components/ProviderSelector.d.ts.map +1 -0
  185. package/dist/setup/components/ProviderSelector.js +97 -0
  186. package/dist/setup/components/ProviderSelector.js.map +1 -0
  187. package/dist/setup/components/SetupWizard.d.ts +2 -0
  188. package/dist/setup/components/SetupWizard.d.ts.map +1 -0
  189. package/dist/setup/components/SetupWizard.js +212 -0
  190. package/dist/setup/components/SetupWizard.js.map +1 -0
  191. package/dist/setup/components/StepIndicator.d.ts +13 -0
  192. package/dist/setup/components/StepIndicator.d.ts.map +1 -0
  193. package/dist/setup/components/StepIndicator.js +18 -0
  194. package/dist/setup/components/StepIndicator.js.map +1 -0
  195. package/dist/setup/components/SuccessScreen.d.ts +18 -0
  196. package/dist/setup/components/SuccessScreen.d.ts.map +1 -0
  197. package/dist/setup/components/SuccessScreen.js +38 -0
  198. package/dist/setup/components/SuccessScreen.js.map +1 -0
  199. package/dist/setup/index.d.ts +12 -0
  200. package/dist/setup/index.d.ts.map +1 -0
  201. package/dist/setup/index.js +29 -0
  202. package/dist/setup/index.js.map +1 -0
  203. package/dist/setup/utils/cli-detection.d.ts +12 -0
  204. package/dist/setup/utils/cli-detection.d.ts.map +1 -0
  205. package/dist/setup/utils/cli-detection.js +83 -0
  206. package/dist/setup/utils/cli-detection.js.map +1 -0
  207. package/dist/setup/utils/config-writer.d.ts +43 -0
  208. package/dist/setup/utils/config-writer.d.ts.map +1 -0
  209. package/dist/setup/utils/config-writer.js +180 -0
  210. package/dist/setup/utils/config-writer.js.map +1 -0
  211. package/dist/styles.d.ts.map +1 -0
  212. package/dist/styles.js +12 -0
  213. package/dist/styles.js.map +1 -0
  214. package/dist/tui/App.d.ts +3 -0
  215. package/dist/tui/App.d.ts.map +1 -0
  216. package/dist/tui/App.js +131 -0
  217. package/dist/tui/App.js.map +1 -0
  218. package/dist/tui/components/AgentStateIcon.d.ts +18 -0
  219. package/dist/tui/components/AgentStateIcon.d.ts.map +1 -0
  220. package/dist/tui/components/AgentStateIcon.js +57 -0
  221. package/dist/tui/components/AgentStateIcon.js.map +1 -0
  222. package/dist/tui/components/AnimatedBranch.d.ts +39 -0
  223. package/dist/tui/components/AnimatedBranch.d.ts.map +1 -0
  224. package/dist/tui/components/AnimatedBranch.js +64 -0
  225. package/dist/tui/components/AnimatedBranch.js.map +1 -0
  226. package/dist/tui/components/ChatPanel.d.ts +16 -0
  227. package/dist/tui/components/ChatPanel.d.ts.map +1 -0
  228. package/dist/tui/components/ChatPanel.js +50 -0
  229. package/dist/tui/components/ChatPanel.js.map +1 -0
  230. package/dist/tui/components/DAGPanel.d.ts +36 -0
  231. package/dist/tui/components/DAGPanel.d.ts.map +1 -0
  232. package/dist/tui/components/DAGPanel.js +51 -0
  233. package/dist/tui/components/DAGPanel.js.map +1 -0
  234. package/dist/tui/components/ExecutionTimeline.d.ts +34 -0
  235. package/dist/tui/components/ExecutionTimeline.d.ts.map +1 -0
  236. package/dist/tui/components/ExecutionTimeline.js +67 -0
  237. package/dist/tui/components/ExecutionTimeline.js.map +1 -0
  238. package/dist/tui/components/Header.d.ts +12 -0
  239. package/dist/tui/components/Header.d.ts.map +1 -0
  240. package/dist/tui/components/Header.js +32 -0
  241. package/dist/tui/components/Header.js.map +1 -0
  242. package/dist/tui/components/HelpOverlay.d.ts +7 -0
  243. package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
  244. package/dist/tui/components/HelpOverlay.js +60 -0
  245. package/dist/tui/components/HelpOverlay.js.map +1 -0
  246. package/dist/tui/components/InputBar.d.ts +10 -0
  247. package/dist/tui/components/InputBar.d.ts.map +1 -0
  248. package/dist/tui/components/InputBar.js +21 -0
  249. package/dist/tui/components/InputBar.js.map +1 -0
  250. package/dist/tui/components/LogsPanel.d.ts +9 -0
  251. package/dist/tui/components/LogsPanel.d.ts.map +1 -0
  252. package/dist/tui/components/LogsPanel.js +56 -0
  253. package/dist/tui/components/LogsPanel.js.map +1 -0
  254. package/dist/tui/components/MemoryPanel.d.ts +21 -0
  255. package/dist/tui/components/MemoryPanel.d.ts.map +1 -0
  256. package/dist/tui/components/MemoryPanel.js +51 -0
  257. package/dist/tui/components/MemoryPanel.js.map +1 -0
  258. package/dist/tui/components/MetricsPanel.d.ts +18 -0
  259. package/dist/tui/components/MetricsPanel.d.ts.map +1 -0
  260. package/dist/tui/components/MetricsPanel.js +27 -0
  261. package/dist/tui/components/MetricsPanel.js.map +1 -0
  262. package/dist/tui/components/StatusPanel.d.ts +23 -0
  263. package/dist/tui/components/StatusPanel.d.ts.map +1 -0
  264. package/dist/tui/components/StatusPanel.js +23 -0
  265. package/dist/tui/components/StatusPanel.js.map +1 -0
  266. package/dist/tui/components/TaskTree.d.ts +28 -0
  267. package/dist/tui/components/TaskTree.d.ts.map +1 -0
  268. package/dist/tui/components/TaskTree.js +29 -0
  269. package/dist/tui/components/TaskTree.js.map +1 -0
  270. package/dist/tui/components/animations/ProgressBar.d.ts +39 -0
  271. package/dist/tui/components/animations/ProgressBar.d.ts.map +1 -0
  272. package/dist/tui/components/animations/ProgressBar.js +39 -0
  273. package/dist/tui/components/animations/ProgressBar.js.map +1 -0
  274. package/dist/tui/components/animations/Pulse.d.ts +17 -0
  275. package/dist/tui/components/animations/Pulse.d.ts.map +1 -0
  276. package/dist/tui/components/animations/Pulse.js +47 -0
  277. package/dist/tui/components/animations/Pulse.js.map +1 -0
  278. package/dist/tui/components/animations/Spinner.d.ts +13 -0
  279. package/dist/tui/components/animations/Spinner.d.ts.map +1 -0
  280. package/dist/tui/components/animations/Spinner.js +36 -0
  281. package/dist/tui/components/animations/Spinner.js.map +1 -0
  282. package/dist/tui/components/animations/StatusAnimator.d.ts +27 -0
  283. package/dist/tui/components/animations/StatusAnimator.d.ts.map +1 -0
  284. package/dist/tui/components/animations/StatusAnimator.js +85 -0
  285. package/dist/tui/components/animations/StatusAnimator.js.map +1 -0
  286. package/dist/tui/components/animations/TypingEffect.d.ts +26 -0
  287. package/dist/tui/components/animations/TypingEffect.d.ts.map +1 -0
  288. package/dist/tui/components/animations/TypingEffect.js +59 -0
  289. package/dist/tui/components/animations/TypingEffect.js.map +1 -0
  290. package/dist/tui/components/animations/index.d.ts +8 -0
  291. package/dist/tui/components/animations/index.d.ts.map +1 -0
  292. package/dist/tui/components/animations/index.js +6 -0
  293. package/dist/tui/components/animations/index.js.map +1 -0
  294. package/dist/tui/hooks/useAnimation.d.ts +42 -0
  295. package/dist/tui/hooks/useAnimation.d.ts.map +1 -0
  296. package/dist/tui/hooks/useAnimation.js +212 -0
  297. package/dist/tui/hooks/useAnimation.js.map +1 -0
  298. package/dist/tui/hooks/useAppState.d.ts +65 -0
  299. package/dist/tui/hooks/useAppState.d.ts.map +1 -0
  300. package/dist/tui/hooks/useAppState.js +293 -0
  301. package/dist/tui/hooks/useAppState.js.map +1 -0
  302. package/dist/tui/index.d.ts +3 -0
  303. package/dist/tui/index.d.ts.map +1 -0
  304. package/dist/tui/index.js +8 -0
  305. package/dist/tui/index.js.map +1 -0
  306. package/dist/tui/services/orchestrator.d.ts +16 -0
  307. package/dist/tui/services/orchestrator.d.ts.map +1 -0
  308. package/dist/tui/services/orchestrator.js +152 -0
  309. package/dist/tui/services/orchestrator.js.map +1 -0
  310. package/dist/tui/styles/borders.d.ts +31 -0
  311. package/dist/tui/styles/borders.d.ts.map +1 -0
  312. package/dist/tui/styles/borders.js +47 -0
  313. package/dist/tui/styles/borders.js.map +1 -0
  314. package/dist/tui/styles/colors.d.ts +18 -0
  315. package/dist/tui/styles/colors.d.ts.map +1 -0
  316. package/dist/tui/styles/colors.js +18 -0
  317. package/dist/tui/styles/colors.js.map +1 -0
  318. package/dist/tui/styles/index.d.ts +6 -0
  319. package/dist/tui/styles/index.d.ts.map +1 -0
  320. package/dist/tui/styles/index.js +6 -0
  321. package/dist/tui/styles/index.js.map +1 -0
  322. package/dist/tui/styles/indicators.d.ts +67 -0
  323. package/dist/tui/styles/indicators.d.ts.map +1 -0
  324. package/dist/tui/styles/indicators.js +42 -0
  325. package/dist/tui/styles/indicators.js.map +1 -0
  326. package/dist/tui/styles/layout.d.ts +21 -0
  327. package/dist/tui/styles/layout.d.ts.map +1 -0
  328. package/dist/tui/styles/layout.js +42 -0
  329. package/dist/tui/styles/layout.js.map +1 -0
  330. package/dist/tui/styles/providers.d.ts +77 -0
  331. package/dist/tui/styles/providers.d.ts.map +1 -0
  332. package/dist/tui/styles/providers.js +31 -0
  333. package/dist/tui/styles/providers.js.map +1 -0
  334. package/dist/tui/utils/animation.d.ts +44 -0
  335. package/dist/tui/utils/animation.d.ts.map +1 -0
  336. package/dist/tui/utils/animation.js +107 -0
  337. package/dist/tui/utils/animation.js.map +1 -0
  338. package/dist/vendor-manifests.d.ts.map +1 -0
  339. package/dist/vendor-manifests.js +94 -0
  340. package/dist/vendor-manifests.js.map +1 -0
  341. package/dist/ws-relay.d.ts +12 -0
  342. package/dist/ws-relay.d.ts.map +1 -0
  343. package/dist/ws-relay.js +148 -0
  344. package/dist/ws-relay.js.map +1 -0
  345. package/package.json +34 -0
  346. package/src/benchmark.ts +156 -0
  347. package/src/bin.ts +156 -0
  348. package/src/bootstrap.ts +36 -0
  349. package/src/bridge-adapter-templates.ts +181 -0
  350. package/src/bridge-test.ts +107 -0
  351. package/src/dashboard.ts +51 -0
  352. package/src/doctor.ts +92 -0
  353. package/src/evolve.ts +74 -0
  354. package/src/host-init-templates.ts +134 -0
  355. package/src/hub/__tests__/commands.test.ts +84 -0
  356. package/src/hub/__tests__/history.test.ts +137 -0
  357. package/src/hub/__tests__/parser.test.ts +105 -0
  358. package/src/hub/commands/agents.ts +53 -0
  359. package/src/hub/commands/index.ts +140 -0
  360. package/src/hub/commands/logs.ts +70 -0
  361. package/src/hub/commands/memory.ts +47 -0
  362. package/src/hub/commands/metrics.ts +49 -0
  363. package/src/hub/commands/providers.ts +39 -0
  364. package/src/hub/commands/run.ts +37 -0
  365. package/src/hub/commands/status.ts +69 -0
  366. package/src/hub/commands/workflows.ts +64 -0
  367. package/src/hub/config-loader.ts +37 -0
  368. package/src/hub/event-listener.ts +17 -0
  369. package/src/hub/history.ts +66 -0
  370. package/src/hub/index.ts +132 -0
  371. package/src/hub/parser.ts +107 -0
  372. package/src/hub/styles/borders.ts +74 -0
  373. package/src/hub/styles/colors.ts +129 -0
  374. package/src/hub/styles/typography.ts +68 -0
  375. package/src/hub/types.ts +31 -0
  376. package/src/index.ts +10 -0
  377. package/src/init-host.ts +285 -0
  378. package/src/install.ts +118 -0
  379. package/src/run.ts +317 -0
  380. package/src/setup/components/ApiKeyInput.tsx +158 -0
  381. package/src/setup/components/AsciiBanner.tsx +125 -0
  382. package/src/setup/components/CliDetector.tsx +230 -0
  383. package/src/setup/components/ModeSelector.tsx +137 -0
  384. package/src/setup/components/ProviderSelector.tsx +174 -0
  385. package/src/setup/components/SetupWizard.tsx +368 -0
  386. package/src/setup/components/StepIndicator.tsx +74 -0
  387. package/src/setup/components/SuccessScreen.tsx +229 -0
  388. package/src/setup/index.ts +34 -0
  389. package/src/setup/utils/cli-detection.ts +99 -0
  390. package/src/setup/utils/config-writer.ts +249 -0
  391. package/src/styles.ts +12 -0
  392. package/src/tui/App.tsx +177 -0
  393. package/src/tui/components/AgentStateIcon.tsx +84 -0
  394. package/src/tui/components/AnimatedBranch.tsx +134 -0
  395. package/src/tui/components/ChatPanel.tsx +125 -0
  396. package/src/tui/components/DAGPanel.tsx +208 -0
  397. package/src/tui/components/ExecutionTimeline.tsx +225 -0
  398. package/src/tui/components/Header.tsx +109 -0
  399. package/src/tui/components/HelpOverlay.tsx +140 -0
  400. package/src/tui/components/InputBar.tsx +69 -0
  401. package/src/tui/components/LogsPanel.tsx +129 -0
  402. package/src/tui/components/MemoryPanel.tsx +163 -0
  403. package/src/tui/components/MetricsPanel.tsx +149 -0
  404. package/src/tui/components/StatusPanel.tsx +137 -0
  405. package/src/tui/components/TaskTree.tsx +159 -0
  406. package/src/tui/components/animations/ProgressBar.tsx +160 -0
  407. package/src/tui/components/animations/Pulse.tsx +73 -0
  408. package/src/tui/components/animations/Spinner.tsx +54 -0
  409. package/src/tui/components/animations/StatusAnimator.tsx +153 -0
  410. package/src/tui/components/animations/TypingEffect.tsx +119 -0
  411. package/src/tui/components/animations/index.ts +16 -0
  412. package/src/tui/hooks/useAnimation.ts +290 -0
  413. package/src/tui/hooks/useAppState.ts +403 -0
  414. package/src/tui/index.ts +9 -0
  415. package/src/tui/services/orchestrator.ts +195 -0
  416. package/src/tui/styles/borders.ts +51 -0
  417. package/src/tui/styles/colors.ts +19 -0
  418. package/src/tui/styles/index.ts +20 -0
  419. package/src/tui/styles/indicators.ts +54 -0
  420. package/src/tui/styles/layout.ts +44 -0
  421. package/src/tui/styles/providers.ts +32 -0
  422. package/src/tui/utils/animation.ts +124 -0
  423. package/src/vendor-manifests.ts +113 -0
  424. package/src/ws-relay.ts +156 -0
  425. package/tsconfig.json +28 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAYA,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA6FD,wBAAsB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAuMtE"}
package/dist/run.js ADDED
@@ -0,0 +1,238 @@
1
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import * as readline from "node:readline/promises";
5
+ import { stdin as input, stdout as output } from "node:process";
6
+ import { CoreOrchestrator } from "rax-flow-core";
7
+ import { buildOfficialAgentsRuntime } from "rax-flow-agents";
8
+ import { ClaudeAdapter, GenericRestAdapter, HostBridgeAdapter, OpenAIAdapter } from "rax-flow-providers";
9
+ import { WebSocketRelay } from "./ws-relay.js";
10
+ import { c } from "./styles.js";
11
+ async function loadConfig(cwd) {
12
+ const file = path.join(cwd, ".raxrc");
13
+ const raw = await readFile(file, "utf8");
14
+ return JSON.parse(raw);
15
+ }
16
+ async function loadWorkflow(cwd, workflowPath) {
17
+ const file = workflowPath
18
+ ? path.resolve(cwd, workflowPath)
19
+ : path.join(cwd, ".raxflow", "workflows", "fullstack-feature.json");
20
+ try {
21
+ const raw = await readFile(file, "utf8");
22
+ return JSON.parse(raw);
23
+ }
24
+ catch {
25
+ return undefined;
26
+ }
27
+ }
28
+ function createProviders(config, bridgeCommandOverride) {
29
+ const providers = {};
30
+ const hostCfg = config.providers?.host;
31
+ const bridgeCommand = bridgeCommandOverride ?? process.env[hostCfg?.bridgeCommandEnv ?? "RAX_HOST_BRIDGE_COMMAND"];
32
+ providers.host = new HostBridgeAdapter({
33
+ model: hostCfg?.model ?? "host-managed",
34
+ mode: hostCfg?.mode ?? "auto",
35
+ command: bridgeCommand,
36
+ timeoutMs: hostCfg?.timeoutMs ?? 20000
37
+ });
38
+ const openaiKey = process.env[config.providers?.openai?.apiKeyEnv ?? "OPENAI_API_KEY"];
39
+ if (openaiKey) {
40
+ providers.openai = new OpenAIAdapter(openaiKey, config.providers?.openai?.baseUrl);
41
+ }
42
+ const claudeKey = process.env[config.providers?.claude?.apiKeyEnv ?? "ANTHROPIC_API_KEY"];
43
+ if (claudeKey) {
44
+ providers.claude = new ClaudeAdapter(claudeKey, config.providers?.claude?.baseUrl);
45
+ }
46
+ const restEndpoint = config.providers?.rest?.endpoint;
47
+ if (restEndpoint) {
48
+ const restToken = process.env[config.providers?.rest?.tokenEnv ?? "RAX_REST_TOKEN"];
49
+ providers.rest = new GenericRestAdapter(restEndpoint, restToken);
50
+ }
51
+ return providers;
52
+ }
53
+ function cachePath(cwd) {
54
+ return path.join(cwd, ".raxflow", "cache", "semantic-cache.json");
55
+ }
56
+ async function saveHistory(cwd, taskId, data) {
57
+ const dir = path.join(cwd, ".raxflow", "history");
58
+ await mkdir(dir, { recursive: true });
59
+ const file = path.join(dir, `${taskId}.json`);
60
+ await writeFile(file, JSON.stringify(data, null, 2));
61
+ }
62
+ async function askApproval(nodeId, agent, data) {
63
+ const rl = readline.createInterface({ input, output });
64
+ console.log(c.magenta("\n--- [HUMAN INTERVENTION REQUIRED] ---"));
65
+ console.log(c.cyan(`Step: ${nodeId} | Agent: ${agent}`));
66
+ console.log(c.white("Candidate Output Data:"));
67
+ console.log(JSON.stringify(data, null, 2));
68
+ const answer = await rl.question(c.yellow("\nApprove? [Y to accept, or type your feedback to reject/fix]: "));
69
+ rl.close();
70
+ if (answer.toLowerCase() === "y" || answer === "") {
71
+ return { approved: true };
72
+ }
73
+ else {
74
+ return { approved: false, feedback: answer };
75
+ }
76
+ }
77
+ export async function runWorkflow(options) {
78
+ let config;
79
+ try {
80
+ config = await loadConfig(options.cwd);
81
+ }
82
+ catch {
83
+ console.error(c.red("Missing .raxrc. Run `raxflow install` first."));
84
+ return 1;
85
+ }
86
+ const providers = createProviders(config, options.bridgeCommandOverride);
87
+ const selectedDefault = options.providerOverride ?? config.defaultProvider ?? "host";
88
+ // Pre-flight check: Ensure Zero-Error compliance for Bridge integration
89
+ if (selectedDefault === "host") {
90
+ const health = await providers.host.healthCheck();
91
+ if (!health) {
92
+ console.error(c.red(`[Error] Host Bridge connectivity failed.`));
93
+ console.error(c.yellow(`Check your .raxrc or set RAX_HOST_BRIDGE_COMMAND env var.`));
94
+ console.log("Tip: run `raxflow doctor` for detailed diagnostics.");
95
+ return 1;
96
+ }
97
+ }
98
+ const selectedStrong = config.strongProvider ?? "host";
99
+ const agents = buildOfficialAgentsRuntime({
100
+ providers,
101
+ defaultProvider: selectedDefault,
102
+ strongProvider: selectedStrong,
103
+ providerModels: {
104
+ host: config.providers?.host?.model ?? "host-managed",
105
+ openai: config.providers?.openai?.model ?? "gpt-4.1-mini",
106
+ claude: config.providers?.claude?.model ?? "claude-3-5-sonnet-latest",
107
+ rest: config.providers?.rest?.model ?? "generic-llm"
108
+ }
109
+ });
110
+ const workflow = await loadWorkflow(options.cwd, options.workflowPath);
111
+ // Memory System: Quantum Semantic Graph Memory (QSGM)
112
+ const memoryDir = path.join(options.cwd, ".raxflow", "memory");
113
+ const { LocalVectorStore, GraphMemory, MemoryManager } = await import("rax-flow-core");
114
+ const vectorStore = new LocalVectorStore(path.join(memoryDir, "vector-index.json"));
115
+ await vectorStore.load();
116
+ const graphMemory = new GraphMemory(path.join(memoryDir, "graph-memory.json"));
117
+ await graphMemory.load();
118
+ const memoryManager = new MemoryManager(vectorStore, graphMemory);
119
+ const orchestrator = new CoreOrchestrator(providers, agents, { memory: memoryManager }, { maxParallel: options.maxParallel ?? 4, cacheTtlMs: 1000 * 60 * 60 * 24 });
120
+ // Governance System: Enterprise security & compliance
121
+ const { GovernancePlugin, PIIPolicy } = await import("rax-flow-core");
122
+ const governancePlugin = new GovernancePlugin([new PIIPolicy()], path.join(options.cwd, ".raxflow", "audit"), orchestrator.events);
123
+ orchestrator.registerPlugin(governancePlugin);
124
+ // Register Memory Plugin if an embedding provider is available (OpenAI in this case)
125
+ if (providers.openai) {
126
+ const { LongTermMemoryPlugin } = await import("rax-flow-core");
127
+ orchestrator.registerPlugin(new LongTermMemoryPlugin(memoryManager, providers.openai));
128
+ }
129
+ let relay;
130
+ if (options.ui) {
131
+ relay = new WebSocketRelay(3002);
132
+ relay.start(orchestrator.events);
133
+ }
134
+ const persistentCacheFile = cachePath(options.cwd);
135
+ if (!options.noCachePersist) {
136
+ await orchestrator.loadCache(persistentCacheFile);
137
+ }
138
+ const sessionEvents = [];
139
+ orchestrator.onEvent(e => sessionEvents.push(e));
140
+ // Connect WebSocket relay resolutions to orchestrator
141
+ orchestrator.onEvent((event) => {
142
+ if (event.type === "INTERNAL_RESOLVE_APPROVAL") {
143
+ orchestrator.resolveApproval(event.taskId, event.nodeId, event.approved, event.feedback);
144
+ }
145
+ });
146
+ if (options.stream) {
147
+ orchestrator.onEvent((event) => {
148
+ if (event.type === "graph_ready") {
149
+ console.log(c.magenta(c.bold(`\n--- [DAG FLOW] ---`)));
150
+ const edgeCount = event.workflow.nodes.reduce((acc, n) => acc + (n.dependsOn?.length || 0), 0);
151
+ console.log(c.gray(`Tasks: ${event.workflow.nodes.length} | Edges: ${edgeCount}`));
152
+ }
153
+ if (event.type === "node_start") {
154
+ const retryPrefix = event.retry > 0 ? c.yellow(` (Retry ${event.retry})`) : "";
155
+ console.log(`${c.blue("◆")} ${c.bold(event.nodeId)}${retryPrefix} ${c.gray(`[${event.agent}]`)}`);
156
+ }
157
+ if (event.type === "node_awaiting_approval") {
158
+ if (options.yolo) {
159
+ orchestrator.resolveApproval(event.taskId, event.nodeId, true);
160
+ }
161
+ else {
162
+ (async () => {
163
+ const { approved, feedback } = await askApproval(event.nodeId, event.agent, event.data);
164
+ orchestrator.resolveApproval(event.taskId, event.nodeId, approved, feedback);
165
+ })();
166
+ }
167
+ }
168
+ if (event.type === "node_end") {
169
+ const confColor = event.confidence >= 0.8 ? c.green : (event.confidence >= 0.6 ? c.yellow : c.red);
170
+ const icon = event.success ? c.green("✔") : c.red("✘");
171
+ console.log(` ${icon} ${confColor(`conf: ${(event.confidence * 100).toFixed(0)}%`)} ${c.gray(`cost: $${(event.costUsd || 0).toFixed(5)}`)}`);
172
+ }
173
+ if (event.type === "node_error") {
174
+ console.log(` ${c.red("!")} ${c.red(event.message)}`);
175
+ }
176
+ if (event.type === "audit_record" && event.mutation) {
177
+ console.log(c.magenta(`\n🧬 [Genetic Mutation Generated]`));
178
+ console.log(c.magenta(` Reason: ${event.mutation.reason ?? "Optimization"}`));
179
+ }
180
+ });
181
+ }
182
+ const taskId = `task_${Date.now()}_${Math.floor(Math.random() * 1000)}`;
183
+ const result = await orchestrator.run({
184
+ taskId,
185
+ userPrompt: options.prompt,
186
+ context: {
187
+ cli: true,
188
+ host: os.hostname()
189
+ }
190
+ }, workflow);
191
+ if (relay) {
192
+ await new Promise((resolve) => setTimeout(resolve, 2000));
193
+ relay.stop();
194
+ }
195
+ if (!options.noCachePersist) {
196
+ await orchestrator.saveCache(persistentCacheFile);
197
+ }
198
+ // Save to history
199
+ await saveHistory(options.cwd, taskId, {
200
+ taskId,
201
+ timestamp: Date.now(),
202
+ prompt: options.prompt,
203
+ result: result.result,
204
+ metrics: result.metrics,
205
+ workflow: result.workflow,
206
+ events: sessionEvents
207
+ });
208
+ if (options.asJson) {
209
+ console.log(JSON.stringify(result, null, 2));
210
+ return 0;
211
+ }
212
+ // Final Summary Table
213
+ console.log(c.bold(c.cyan(`\n\n--- [RUN SUMMARY] ---`)));
214
+ const tableData = [
215
+ ["Task ID", taskId],
216
+ ["Main Agent", result.result.agent],
217
+ ["Status", result.result.success ? c.green("SUCCESS") : c.red("FAILED")],
218
+ ["Confidence", `${(result.result.confidence * 100).toFixed(1)}%`],
219
+ ["Retries", result.metrics.retries.toString()],
220
+ ["Escalations", result.metrics.escalations.toString()],
221
+ ["Latency", `${(result.metrics.totalLatencyMs / 1000).toFixed(2)}s`],
222
+ ["Total Cost", c.yellow(`$${(result.metrics.totalCostUsd || 0).toFixed(5)}`)]
223
+ ];
224
+ for (const [key, value] of tableData) {
225
+ console.log(`${c.bold(key.padEnd(15))} : ${value}`);
226
+ }
227
+ if (result.result.logs.length > 0) {
228
+ console.log(c.bold(`\nTrace Logs:`));
229
+ for (const line of result.result.logs.slice(-5)) {
230
+ console.log(c.gray(` • ${line}`));
231
+ }
232
+ if (result.result.logs.length > 5) {
233
+ console.log(c.gray(` ... and ${result.result.logs.length - 5} more lines.`));
234
+ }
235
+ }
236
+ return 0;
237
+ }
238
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ interface ApiKeyInputProps {
2
+ providerId: string;
3
+ providerName: string;
4
+ currentKey?: string;
5
+ envVar?: string;
6
+ onSetKey: (key: string) => void;
7
+ onSkip: () => void;
8
+ onBack: () => void;
9
+ }
10
+ export declare function ApiKeyInput({ providerId, providerName, currentKey, envVar, onSetKey, onSkip, onBack, }: ApiKeyInputProps): import("react/jsx-runtime").JSX.Element;
11
+ interface ApiKeyCollectorProps {
12
+ providers: Array<{
13
+ id: string;
14
+ name: string;
15
+ requiresApiKey: boolean;
16
+ }>;
17
+ currentIndex: number;
18
+ keys: Record<string, string>;
19
+ onSetKey: (providerId: string, key: string) => void;
20
+ onSkip: () => void;
21
+ onBack: () => void;
22
+ }
23
+ export declare function ApiKeyCollector({ providers, currentIndex, keys, onSetKey, onSkip, onBack, }: ApiKeyCollectorProps): import("react/jsx-runtime").JSX.Element | null;
24
+ export {};
25
+ //# sourceMappingURL=ApiKeyInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiKeyInput.d.ts","sourceRoot":"","sources":["../../../src/setup/components/ApiKeyInput.tsx"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,gBAAgB,2CA0FlB;AAED,UAAU,oBAAoB;IAC5B,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAUD,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,oBAAoB,kDAmBtB"}
@@ -0,0 +1,54 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Box, Text, useInput } from "ink";
4
+ import TextInput from "ink-text-input";
5
+ export function ApiKeyInput({ providerId, providerName, currentKey, envVar, onSetKey, onSkip, onBack, }) {
6
+ const [inputValue, setInputValue] = useState(currentKey || "");
7
+ const [isEditing, setIsEditing] = useState(true);
8
+ const [showKey, setShowKey] = useState(false);
9
+ const PRIMARY = "#f97316";
10
+ const envValue = process.env[envVar || ""];
11
+ useInput((input, key) => {
12
+ if (!isEditing) {
13
+ if (key.return || input === "s") {
14
+ onSkip();
15
+ }
16
+ else if (input === "b") {
17
+ onBack();
18
+ }
19
+ else if (input === "e") {
20
+ setIsEditing(true);
21
+ }
22
+ }
23
+ });
24
+ const handleSubmit = (value) => {
25
+ if (value.trim()) {
26
+ onSetKey(value.trim());
27
+ }
28
+ else {
29
+ setIsEditing(false);
30
+ }
31
+ };
32
+ const maskedValue = (key) => {
33
+ if (key.length <= 8)
34
+ return "••••••••";
35
+ return key.slice(0, 4) + "•".repeat(8) + key.slice(-4);
36
+ };
37
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: PRIMARY, bold: true, children: ["CONFIGURE ", providerName.toUpperCase()] }) }), envValue && (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "#22c55e", children: "\u2713" }), _jsx(Text, { color: "#a1a1aa", children: " Found key in " }), _jsx(Text, { color: "#f59e0b", children: envVar })] })), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#a1a1aa", children: "Enter your API key (or leave empty to skip):" }) }), isEditing ? (_jsxs(Box, { children: [_jsx(Text, { color: "#27272a", children: "> " }), _jsx(TextInput, { value: inputValue, onChange: setInputValue, onSubmit: handleSubmit, placeholder: envValue ? "Press Enter to use env variable" : "sk-...", showCursor: true })] })) : (_jsx(Box, { flexDirection: "column", children: inputValue && (_jsxs(Box, { children: [_jsx(Text, { color: "#22c55e", children: "\u2713 Key set: " }), _jsx(Text, { color: "#a1a1aa", children: showKey ? inputValue : maskedValue(inputValue) })] })) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#27272a", children: "─".repeat(50) }) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "#71717a", children: "[E] Edit" }), _jsx(Text, { color: "#71717a", children: " [S] Skip" }), _jsx(Text, { color: "#71717a", children: " [B] Back" })] })] }));
38
+ }
39
+ const ENV_VAR_MAP = {
40
+ anthropic: "ANTHROPIC_API_KEY",
41
+ openai: "OPENAI_API_KEY",
42
+ gemini: "GOOGLE_API_KEY",
43
+ mistral: "MISTRAL_API_KEY",
44
+ groq: "GROQ_API_KEY",
45
+ };
46
+ export function ApiKeyCollector({ providers, currentIndex, keys, onSetKey, onSkip, onBack, }) {
47
+ const providersNeedingKeys = providers.filter((p) => p.requiresApiKey);
48
+ const currentProvider = providersNeedingKeys[currentIndex];
49
+ if (!currentProvider) {
50
+ return null;
51
+ }
52
+ return (_jsx(ApiKeyInput, { providerId: currentProvider.id, providerName: currentProvider.name, currentKey: keys[currentProvider.id], envVar: ENV_VAR_MAP[currentProvider.id], onSetKey: (key) => onSetKey(currentProvider.id, key), onSkip: onSkip, onBack: onBack }));
53
+ }
54
+ //# sourceMappingURL=ApiKeyInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiKeyInput.js","sourceRoot":"","sources":["../../../src/setup/components/ApiKeyInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ interface AsciiBannerProps {
3
+ compact?: boolean;
4
+ showTagline?: boolean;
5
+ }
6
+ export declare function AsciiBanner({ compact, showTagline }: AsciiBannerProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function IndustrialDivider({ width }: {
8
+ width?: number;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ export declare function IndustrialBox({ children, title, width, active, }: {
11
+ children: React.ReactNode;
12
+ title?: string;
13
+ width?: number;
14
+ active?: boolean;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ export declare function StatusIndicator({ status, label, active }: {
17
+ status: "online" | "offline" | "running" | "pending" | "done" | "error";
18
+ label: string;
19
+ active?: boolean;
20
+ }): import("react/jsx-runtime").JSX.Element;
21
+ export {};
22
+ //# sourceMappingURL=AsciiBanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsciiBanner.d.ts","sourceRoot":"","sources":["../../../src/setup/components/AsciiBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAiC1B,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAe,EAAE,WAAkB,EAAE,EAAE,gBAAgB,2CAmBpF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,KAAU,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,2CASnE;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,KAAU,EACV,MAAc,GACf,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,2CAeA;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,KAAK,EACL,MAAc,EACf,EAAE;IACD,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,2CAmBA"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ const PRIMARY = "#f97316";
4
+ const SECONDARY = "#a1a1aa";
5
+ const RAX_FLOW_ASCII = `
6
+ ╔══════════════════════════════════════════════════════════════════════════╗
7
+ ║ ██████╗ █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗ ║
8
+ ║ ██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██╔══██╗████╗ ██║██╔════╝██╔════╝ ║
9
+ ║ ██████╔╝███████║██║ █████╔╝ ███████║██╔██╗ ██║██║ █████╗ ║
10
+ ║ ██╔══██╗██╔══██║██║ ██╔═██╗ ██╔══██║██║╚██╗██║██║ ██╔══╝ ║
11
+ ║ ██║ ██║██║ ██║╚██████╗██║ ██╗██║ ██║██║ ╚████║╚██████╗███████╗ ║
12
+ ║ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝ ║
13
+ ╠══════════════════════════════════════════════════════════════════════════╣
14
+ ║ [■■■■■■■■■■] ORCHESTRATOR THAT EVOLVES WITH YOUR HOST TOOLS [■■■■■■] ║
15
+ ╚══════════════════════════════════════════════════════════════════════════╝`;
16
+ const RAX_FLOW_ASCII_COMPACT = `
17
+ ╔═══════════════════════════════════════════════════════╗
18
+ ║ ██████╗ █████╗ ██████╗ ██╗ ██╗███████╗ ║
19
+ ║ ██╔══██╗██╔══██╗██╔════╝ ██║ ██║██╔════╝ ║
20
+ ║ ██████╔╝███████║██║ █████║█████╗ ║
21
+ ║ ██╔══██╗██╔══██║██║ ██╔═██║██╔══╝ ║
22
+ ║ ██║ ██║██║ ██║╚██████╗ ██║ ██║███████╗ ║
23
+ ║ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ║
24
+ ╠═══════════════════════════════════════════════════════╣
25
+ ║ [■■■■■] ORCHESTRATOR [■■■■■] ║
26
+ ╚═══════════════════════════════════════════════════════╝`;
27
+ const GEAR_PATTERN = " ⚙ ";
28
+ const CIRCUIT_PATTERN = " │├┤│ ";
29
+ export function AsciiBanner({ compact = false, showTagline = true }) {
30
+ const ascii = compact ? RAX_FLOW_ASCII_COMPACT : RAX_FLOW_ASCII;
31
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { children: _jsx(Text, { color: PRIMARY, bold: true, children: ascii }) }), showTagline && (_jsx(Box, { marginTop: 1, justifyContent: "center", children: _jsx(Text, { color: SECONDARY, dimColor: true, children: compact ? "Setup Wizard v1.0" : "Multi-Agent Orchestration Framework • Setup Wizard v1.0" }) }))] }));
32
+ }
33
+ export function IndustrialDivider({ width = 60 }) {
34
+ const segment = "─".repeat(Math.floor(width / 3));
35
+ const full = `╟${segment}╂${segment}╂${segment}╢`;
36
+ return (_jsx(Box, { children: _jsx(Text, { color: "#27272a", children: full }) }));
37
+ }
38
+ export function IndustrialBox({ children, title, width = 60, active = false, }) {
39
+ const borderColor = active ? PRIMARY : "#27272a";
40
+ const innerWidth = width - 4;
41
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: borderColor, children: `┌${title ? `─ ${title} ` : ""}${"─".repeat(innerWidth - (title?.length || 0) - 2)}┐` }), _jsx(Box, { flexDirection: "column", borderStyle: "single", borderColor: borderColor, children: children }), _jsx(Text, { color: borderColor, children: `└${"─".repeat(innerWidth)}┘` })] }));
42
+ }
43
+ export function StatusIndicator({ status, label, active = false }) {
44
+ const indicators = {
45
+ online: { char: "●", color: "#22c55e" },
46
+ offline: { char: "○", color: "#71717a" },
47
+ running: { char: "▶", color: "#f59e0b" },
48
+ pending: { char: "◐", color: "#a1a1aa" },
49
+ done: { char: "✓", color: "#22c55e" },
50
+ error: { char: "✗", color: "#ef4444" },
51
+ };
52
+ const { char, color } = indicators[status];
53
+ return (_jsxs(Box, { children: [_jsx(Text, { color: active ? PRIMARY : color, children: char }), _jsx(Text, { children: " " }), _jsx(Text, { color: active ? PRIMARY : "#ffffff", children: label })] }));
54
+ }
55
+ //# sourceMappingURL=AsciiBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsciiBanner.js","sourceRoot":"","sources":["../../../src/setup/components/AsciiBanner.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,SAAS,GAAG,SAAS,CAAC;AAE5B,MAAM,cAAc,GAAG;;;;;;;;;;6EAUsD,CAAC;AAE9E,MAAM,sBAAsB,GAAG;;;;;;;;;;0DAU2B,CAAC;AAE3D,MAAM,YAAY,GAAG,KAAK,CAAC;AAC3B,MAAM,eAAe,GAAG,QAAQ,CAAC;AAOjC,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAoB;IACnF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,cAAc,CAAC;IAEhE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,EAAE,IAAI,kBACvB,KAAK,GACD,GACH,EACL,WAAW,IAAI,CACd,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,cAAc,EAAC,QAAQ,YACxC,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,kBAC7B,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,yDAAyD,GACrF,GACH,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,GAAG,EAAE,EAAsB;IAClE,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC;IAElD,OAAO,CACL,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,IAAI,GAAQ,GAC/B,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,KAAK,GAMf;IACC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;IAE7B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,YACrB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GACjF,EACP,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,WAAW,YACtE,QAAQ,GACL,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,YAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAQ,IAC5D,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,EACN,KAAK,EACL,MAAM,GAAG,KAAK,EAKf;IACC,MAAM,UAAU,GAAoD;QAClE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE;QACvC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE;QACxC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE;QACxC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE;QACxC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE;QACrC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE;KACvC,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAE3C,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,YAAG,IAAI,GAAQ,EACpD,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,YAAG,KAAK,GAAQ,IACrD,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { DetectedCli } from "../utils/cli-detection.js";
2
+ export type { DetectedCli };
3
+ interface CliDetectorProps {
4
+ onDetected: (clis: DetectedCli[]) => void;
5
+ onContinue: () => void;
6
+ onBack: () => void;
7
+ }
8
+ export declare function CliDetector({ onDetected, onContinue, onBack }: CliDetectorProps): import("react/jsx-runtime").JSX.Element;
9
+ interface CliSelectorProps {
10
+ detectedClis: DetectedCli[];
11
+ selectedClis: string[];
12
+ onToggle: (cliId: string) => void;
13
+ onContinue: () => void;
14
+ onBack: () => void;
15
+ }
16
+ export declare function CliSelector({ detectedClis, selectedClis, onToggle, onContinue, onBack, }: CliSelectorProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=CliDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CliDetector.d.ts","sourceRoot":"","sources":["../../../src/setup/components/CliDetector.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAuB,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7E,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,UAAU,gBAAgB;IACxB,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC1C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,gBAAgB,2CA6G/E;AAED,UAAU,gBAAgB;IACxB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,MAAM,GACP,EAAE,gBAAgB,2CA2FlB"}
@@ -0,0 +1,79 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect } from "react";
3
+ import { Box, Text, useInput } from "ink";
4
+ import Spinner from "ink-spinner";
5
+ import { detectInstalledClis } from "../utils/cli-detection.js";
6
+ export function CliDetector({ onDetected, onContinue, onBack }) {
7
+ const [detecting, setDetecting] = useState(true);
8
+ const [detectedClis, setDetectedClis] = useState([]);
9
+ const [error, setError] = useState(null);
10
+ const PRIMARY = "#f97316";
11
+ useEffect(() => {
12
+ detectInstalledClis()
13
+ .then((clis) => {
14
+ setDetectedClis(clis);
15
+ onDetected(clis);
16
+ setDetecting(false);
17
+ })
18
+ .catch((err) => {
19
+ setError(err.message);
20
+ setDetecting(false);
21
+ });
22
+ }, [onDetected]);
23
+ useInput((input, key) => {
24
+ if (!detecting) {
25
+ if (key.return || input === "c") {
26
+ onContinue();
27
+ }
28
+ else if (input === "b") {
29
+ onBack();
30
+ }
31
+ }
32
+ });
33
+ if (detecting) {
34
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: PRIMARY, bold: true, children: "DETECTING INSTALLED TOOLS" }) }), _jsxs(Box, { children: [_jsx(Text, { color: "#f59e0b", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { color: "#a1a1aa", children: " Scanning for compatible CLI tools..." })] })] }));
35
+ }
36
+ if (error) {
37
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "#ef4444", children: ["Error detecting CLIs: ", error] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#71717a", children: "[B] Back" }) })] }));
38
+ }
39
+ const availableClis = detectedClis.filter((c) => c.detected);
40
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: PRIMARY, bold: true, children: "DETECTED TOOLS" }) }), _jsx(Box, { flexDirection: "column", marginBottom: 1, children: detectedClis.map((cli) => (_jsxs(Box, { children: [_jsx(Text, { color: cli.detected ? "#22c55e" : "#71717a", children: cli.detected ? "●" : "○" }), _jsx(Text, { children: " " }), _jsx(Text, { color: cli.detected ? "#ffffff" : "#71717a", children: cli.name }), cli.version && (_jsxs(Text, { color: "#a1a1aa", children: [" v", cli.version.split(" ")[0]] })), cli.configPath && (_jsxs(Text, { color: "#71717a", dimColor: true, children: [" ", "(", cli.configPath, ")"] }))] }, cli.id))) }), availableClis.length === 0 && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#f59e0b", children: "\u26A0 No compatible CLI tools detected. You can still use cloud providers." }) })), _jsx(Box, { children: _jsx(Text, { color: "#27272a", children: "─".repeat(50) }) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "#22c55e", children: "[C] Continue" }), _jsx(Text, { color: "#71717a", children: " [B] Back" })] })] }));
41
+ }
42
+ export function CliSelector({ detectedClis, selectedClis, onToggle, onContinue, onBack, }) {
43
+ const [focusedIndex, setFocusedIndex] = useState(0);
44
+ const availableClis = detectedClis.filter((c) => c.detected);
45
+ const PRIMARY = "#f97316";
46
+ useInput((input, key) => {
47
+ if (key.upArrow) {
48
+ setFocusedIndex((prev) => prev === 0 ? availableClis.length : prev - 1);
49
+ }
50
+ else if (key.downArrow) {
51
+ setFocusedIndex((prev) => prev === availableClis.length ? 0 : prev + 1);
52
+ }
53
+ else if (key.return) {
54
+ if (focusedIndex === availableClis.length) {
55
+ onContinue();
56
+ }
57
+ else {
58
+ onToggle(availableClis[focusedIndex].id);
59
+ }
60
+ }
61
+ else if (input === " ") {
62
+ if (focusedIndex < availableClis.length) {
63
+ onToggle(availableClis[focusedIndex].id);
64
+ }
65
+ }
66
+ else if (input === "b") {
67
+ onBack();
68
+ }
69
+ });
70
+ if (availableClis.length === 0) {
71
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "#f59e0b", children: "No CLI tools detected. Skipping hub setup..." }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#22c55e", children: "[C] Continue" }) })] }));
72
+ }
73
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: PRIMARY, bold: true, children: "SELECT TOOLS TO INTEGRATE" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#a1a1aa", dimColor: true, children: "Use \u2191/\u2193 to navigate, SPACE to toggle, ENTER to continue" }) }), _jsx(Box, { flexDirection: "column", children: availableClis.map((cli, index) => {
74
+ const isSelected = selectedClis.includes(cli.id);
75
+ const isFocused = index === focusedIndex;
76
+ return (_jsxs(Box, { children: [_jsx(Text, { color: isFocused ? PRIMARY : "#27272a", children: isFocused ? "▶ " : " " }), _jsxs(Text, { color: isSelected ? "#22c55e" : "#a1a1aa", children: ["[", isSelected ? "■" : " ", "]"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: isFocused ? "#ffffff" : "#a1a1aa", bold: isFocused, children: cli.name }), cli.version && (_jsxs(Text, { color: "#71717a", children: [" ", cli.version.split(" ")[0]] }))] }, cli.id));
77
+ }) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: focusedIndex === availableClis.length ? PRIMARY : "#a1a1aa", children: focusedIndex === availableClis.length ? "▶ " : " " }), _jsx(Text, { color: "#22c55e", children: "[CONTINUE]" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#71717a", children: "[B] Back" }) })] }));
78
+ }
79
+ //# sourceMappingURL=CliDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CliDetector.js","sourceRoot":"","sources":["../../../src/setup/components/CliDetector.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAe,MAAM,2BAA2B,CAAC;AAU7E,MAAM,UAAU,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAoB;IAC9E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,EAAE,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,SAAS,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,EAAE;aAClB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBAChC,UAAU,EAAE,CAAC;YACf,CAAC;iBAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBACzB,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,EAAE,IAAI,gDAEnB,GACH,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YACnB,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,GAClB,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,sDAA6C,IAC9D,IACF,CACP,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,uCAAwB,KAAK,IAAQ,EAC1D,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,yBAAgB,GACjC,IACF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE7D,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,EAAE,IAAI,qCAEnB,GACH,EAEN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,YACxC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACzB,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,YAC9C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GACpB,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,YAC9C,GAAG,CAAC,IAAI,GACJ,EACN,GAAG,CAAC,OAAO,IAAI,CACd,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,mBAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAQ,CAC3D,EACA,GAAG,CAAC,UAAU,IAAI,CACjB,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,mBAC3B,GAAG,OACF,GAAG,CAAC,UAAU,SACX,CACR,KAhBO,GAAG,CAAC,EAAE,CAiBV,CACP,CAAC,GACE,EAEL,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,CAC7B,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,4FAEd,GACH,CACP,EAED,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,GACzC,EAEN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,6BAAoB,EACzC,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,2BAAkB,IACnC,IACF,CACP,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,MAAM,GACW;IACjB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,SAAS,CAAC;IAE1B,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,CACvB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAC7C,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACzB,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,CACvB,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAC7C,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,YAAY,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC1C,UAAU,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,IAAI,YAAY,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;gBACxC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,6DAAoD,EACzE,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,6BAAoB,GACrC,IACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,EAAE,IAAI,gDAEnB,GACH,EAEN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,wFAEvB,GACH,EAEN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACjD,MAAM,SAAS,GAAG,KAAK,KAAK,YAAY,CAAC;oBAEzC,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,YACzC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GACnB,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,kBAC3C,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SACnB,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,YAC5D,GAAG,CAAC,IAAI,GACJ,EACN,GAAG,CAAC,OAAO,IAAI,CACd,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,kBAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAQ,CAC1D,KAbO,GAAG,CAAC,EAAE,CAcV,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,EAEN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,YACrE,YAAY,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAC/C,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,2BAAkB,IACnC,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,yBAAgB,GACjC,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface ModeSelectorProps {
2
+ selectedMode: "hub" | "standalone" | "both" | null;
3
+ onSelect: (mode: "hub" | "standalone" | "both") => void;
4
+ onContinue: () => void;
5
+ }
6
+ export declare function ModeSelector({ selectedMode, onSelect, onContinue }: ModeSelectorProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=ModeSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModeSelector.d.ts","sourceRoot":"","sources":["../../../src/setup/components/ModeSelector.tsx"],"names":[],"mappings":"AAGA,UAAU,iBAAiB;IACzB,YAAY,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC;IACnD,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,KAAK,IAAI,CAAC;IACxD,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAsCD,wBAAgB,YAAY,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,iBAAiB,2CA2FrF"}