@ranker/raxflow 0.2.2 → 0.2.3

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 +79 -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
package/src/install.ts DELETED
@@ -1,118 +0,0 @@
1
- import { mkdir, writeFile, access, copyFile } from "node:fs/promises";
2
- import { constants } from "node:fs";
3
- import { execSync } from "node:child_process";
4
- import path from "node:path";
5
- import os from "node:os";
6
- import { c } from "./styles.js";
7
-
8
- interface InstallOptions {
9
- cwd: string;
10
- openUi: boolean;
11
- autoConfirm?: boolean;
12
- }
13
-
14
- async function detectBridges(): Promise<string[]> {
15
- const candidates = [
16
- { id: "claude-code", cmd: "claude-code --version" },
17
- { id: "codex", cmd: "codex --version" },
18
- { id: "opencode", cmd: "opencode --version" },
19
- { id: "kilo", cmd: "kilo --version" }
20
- ];
21
-
22
- const detected: string[] = [];
23
- for (const tool of candidates) {
24
- try {
25
- execSync(tool.cmd, { stdio: "ignore" });
26
- detected.push(tool.id);
27
- } catch {
28
- // Not in path
29
- }
30
- }
31
- return detected;
32
- }
33
-
34
- async function ensureRaxrc(targetDir: string, detectedBridge?: string): Promise<string> {
35
- const file = path.join(targetDir, ".raxrc");
36
- const body = {
37
- version: 1,
38
- defaultProvider: detectedBridge ? "host" : "openai",
39
- strongProvider: "openai",
40
- providers: {
41
- host: {
42
- model: detectedBridge ?? "host-managed",
43
- mode: "auto",
44
- bridgeCommand: detectedBridge ?? "claude-code", // Store direct command if found
45
- bridgeCommandEnv: "RAX_HOST_BRIDGE_COMMAND"
46
- },
47
- openai: { model: "gpt-4o", apiKeyEnv: "OPENAI_API_KEY" },
48
- claude: { model: "claude-3-5-sonnet-latest", apiKeyEnv: "ANTHROPIC_API_KEY" }
49
- },
50
- privacyMode: true,
51
- verifyFixLoops: 3
52
- };
53
- await writeFile(file, `${JSON.stringify(body, null, 2)}\n`, "utf8");
54
- return file;
55
- }
56
-
57
- async function ensureExampleWorkflow(targetDir: string): Promise<string> {
58
- const workflowsDir = path.join(targetDir, ".raxflow", "workflows");
59
- await mkdir(workflowsDir, { recursive: true });
60
- const file = path.join(workflowsDir, "fullstack-feature.json");
61
- const sample = {
62
- id: "fullstack-feature",
63
- nodes: [
64
- { id: "analyze", agent: "IntentClassifierAgent", dependsOn: [] },
65
- { id: "spec", agent: "SpecAgent", dependsOn: ["analyze"] },
66
- { id: "implement", agent: "CodeGeneratorAgent", dependsOn: ["spec"] },
67
- { id: "verify", agent: "ValidatorAgent", dependsOn: ["implement"] }
68
- ]
69
- };
70
- await writeFile(file, `${JSON.stringify(sample, null, 2)}\n`, "utf8");
71
- return file;
72
- }
73
-
74
- async function validateEnvironment(): Promise<{ ok: boolean; missing: string[] }> {
75
- const optional = ["OPENAI_API_KEY", "RAX_HOST_BRIDGE_COMMAND"];
76
- const missing = optional.filter((k) => !process.env[k]);
77
- return { ok: true, missing };
78
- }
79
-
80
- export async function runInstall(options: InstallOptions): Promise<number> {
81
- console.log(c.blue("RAXFLOW Installer - Professional Setup"));
82
-
83
- console.log("- Scanning for local coding tools...");
84
- const detected = await detectBridges();
85
- if (detected.length > 0) {
86
- console.log(c.green(` [OK] Detected: ${detected.join(", ")}`));
87
- } else {
88
- console.log(c.yellow(" [!] No local coding tools (Claude Code/Codex) detected in PATH."));
89
- }
90
-
91
- const primaryBridge = detected[0];
92
- const raxrc = await ensureRaxrc(options.cwd, primaryBridge);
93
- const workflow = await ensureExampleWorkflow(options.cwd);
94
-
95
- console.log(c.green(`- Project Initialized: ${raxrc}`));
96
- console.log(c.green(`- Default Blueprint Created: ${workflow}`));
97
-
98
- const env = await validateEnvironment();
99
- if (env.missing.length > 0) {
100
- console.log(c.yellow(`- Note: Optional env vars missing: ${env.missing.join(", ")}`));
101
- }
102
-
103
- const localHome = path.join(os.homedir(), ".raxflow");
104
- await mkdir(localHome, { recursive: true });
105
-
106
- console.log("\n" + c.blue("--- Zero-Error Compliance Checklist ---"));
107
- console.log(c.green("✓ Host Bridge Architecture: Scalable & Compliant"));
108
- console.log(c.green("✓ Dynamic Planner: Enabled (Self-Optimizing)"));
109
- console.log(c.green("✓ Long-term Memory: Configured"));
110
-
111
- console.log("\n" + c.yellow("Next Logical Steps:"));
112
- console.log("1. Run `raxflow doctor` to verify bridge connectivity.");
113
- console.log("2. Launch a task: `raxflow run --prompt \"Implement feature Y\" --stream`.");
114
-
115
- console.log("\n" + c.green("RAXFLOW is now the operational backbone of your CLI workflow."));
116
- return 0;
117
- }
118
-
package/src/run.ts DELETED
@@ -1,317 +0,0 @@
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
-
7
- import { CoreOrchestrator, WorkflowGraph } from "rax-flow-core";
8
- import { buildOfficialAgentsRuntime } from "rax-flow-agents";
9
- import { ClaudeAdapter, GenericRestAdapter, HostBridgeAdapter, OpenAIAdapter } from "rax-flow-providers";
10
- import { WebSocketRelay } from "./ws-relay.js";
11
- import { c } from "./styles.js";
12
-
13
- interface RunOptions {
14
- cwd: string;
15
- prompt: string;
16
- workflowPath?: string;
17
- asJson?: boolean;
18
- stream?: boolean;
19
- maxParallel?: number;
20
- noCachePersist?: boolean;
21
- providerOverride?: string;
22
- bridgeCommandOverride?: string;
23
- ui?: boolean;
24
- yolo?: boolean;
25
- }
26
-
27
-
28
- interface RaxConfig {
29
- defaultProvider?: string;
30
- strongProvider?: string;
31
- providers?: {
32
- host?: { model?: string; mode?: "auto" | "bridge-only" | "mock"; bridgeCommandEnv?: string; timeoutMs?: number };
33
- openai?: { model?: string; apiKeyEnv?: string; baseUrl?: string };
34
- claude?: { model?: string; apiKeyEnv?: string; baseUrl?: string };
35
- rest?: { endpoint?: string; tokenEnv?: string; model?: string };
36
- };
37
- }
38
-
39
- async function loadConfig(cwd: string): Promise<RaxConfig> {
40
- const file = path.join(cwd, ".raxrc");
41
- const raw = await readFile(file, "utf8");
42
- return JSON.parse(raw) as RaxConfig;
43
- }
44
-
45
- async function loadWorkflow(cwd: string, workflowPath?: string): Promise<WorkflowGraph | undefined> {
46
- const file = workflowPath
47
- ? path.resolve(cwd, workflowPath)
48
- : path.join(cwd, ".raxflow", "workflows", "fullstack-feature.json");
49
-
50
- try {
51
- const raw = await readFile(file, "utf8");
52
- return JSON.parse(raw) as WorkflowGraph;
53
- } catch {
54
- return undefined;
55
- }
56
- }
57
-
58
- function createProviders(config: RaxConfig, bridgeCommandOverride?: string) {
59
- const providers: Record<string, OpenAIAdapter | ClaudeAdapter | GenericRestAdapter | HostBridgeAdapter> = {};
60
-
61
- const hostCfg = config.providers?.host;
62
- const bridgeCommand = bridgeCommandOverride ?? process.env[hostCfg?.bridgeCommandEnv ?? "RAX_HOST_BRIDGE_COMMAND"];
63
- providers.host = new HostBridgeAdapter({
64
- model: hostCfg?.model ?? "host-managed",
65
- mode: hostCfg?.mode ?? "auto",
66
- command: bridgeCommand,
67
- timeoutMs: hostCfg?.timeoutMs ?? 20000
68
- });
69
-
70
- const openaiKey = process.env[config.providers?.openai?.apiKeyEnv ?? "OPENAI_API_KEY"];
71
- if (openaiKey) {
72
- providers.openai = new OpenAIAdapter(openaiKey, config.providers?.openai?.baseUrl);
73
- }
74
-
75
- const claudeKey = process.env[config.providers?.claude?.apiKeyEnv ?? "ANTHROPIC_API_KEY"];
76
- if (claudeKey) {
77
- providers.claude = new ClaudeAdapter(claudeKey, config.providers?.claude?.baseUrl);
78
- }
79
-
80
- const restEndpoint = config.providers?.rest?.endpoint;
81
- if (restEndpoint) {
82
- const restToken = process.env[config.providers?.rest?.tokenEnv ?? "RAX_REST_TOKEN"];
83
- providers.rest = new GenericRestAdapter(restEndpoint, restToken);
84
- }
85
-
86
- return providers;
87
- }
88
-
89
- function cachePath(cwd: string): string {
90
- return path.join(cwd, ".raxflow", "cache", "semantic-cache.json");
91
- }
92
-
93
- async function saveHistory(cwd: string, taskId: string, data: any) {
94
- const dir = path.join(cwd, ".raxflow", "history");
95
- await mkdir(dir, { recursive: true });
96
- const file = path.join(dir, `${taskId}.json`);
97
- await writeFile(file, JSON.stringify(data, null, 2));
98
- }
99
-
100
- async function askApproval(nodeId: string, agent: string, data: any): Promise<{ approved: boolean; feedback?: string }> {
101
- const rl = readline.createInterface({ input, output });
102
- console.log(c.magenta("\n--- [HUMAN INTERVENTION REQUIRED] ---"));
103
- console.log(c.cyan(`Step: ${nodeId} | Agent: ${agent}`));
104
- console.log(c.white("Candidate Output Data:"));
105
- console.log(JSON.stringify(data, null, 2));
106
-
107
- const answer = await rl.question(c.yellow("\nApprove? [Y to accept, or type your feedback to reject/fix]: "));
108
- rl.close();
109
-
110
- if (answer.toLowerCase() === "y" || answer === "") {
111
- return { approved: true };
112
- } else {
113
- return { approved: false, feedback: answer };
114
- }
115
- }
116
-
117
-
118
- export async function runWorkflow(options: RunOptions): Promise<number> {
119
- let config: RaxConfig;
120
- try {
121
- config = await loadConfig(options.cwd);
122
- } catch {
123
- console.error(c.red("Missing .raxrc. Run `raxflow install` first."));
124
- return 1;
125
- }
126
- const providers = createProviders(config, options.bridgeCommandOverride);
127
- const selectedDefault = options.providerOverride ?? config.defaultProvider ?? "host";
128
-
129
- // Pre-flight check: Ensure Zero-Error compliance for Bridge integration
130
- if (selectedDefault === "host") {
131
- const health = await providers.host.healthCheck();
132
- if (!health) {
133
- console.error(c.red(`[Error] Host Bridge connectivity failed.`));
134
- console.error(c.yellow(`Check your .raxrc or set RAX_HOST_BRIDGE_COMMAND env var.`));
135
- console.log("Tip: run `raxflow doctor` for detailed diagnostics.");
136
- return 1;
137
- }
138
- }
139
-
140
- const selectedStrong = config.strongProvider ?? "host";
141
-
142
-
143
- const agents = buildOfficialAgentsRuntime({
144
- providers,
145
- defaultProvider: selectedDefault,
146
- strongProvider: selectedStrong,
147
- providerModels: {
148
- host: config.providers?.host?.model ?? "host-managed",
149
- openai: config.providers?.openai?.model ?? "gpt-4.1-mini",
150
- claude: config.providers?.claude?.model ?? "claude-3-5-sonnet-latest",
151
- rest: config.providers?.rest?.model ?? "generic-llm"
152
- }
153
- });
154
-
155
- const workflow = await loadWorkflow(options.cwd, options.workflowPath);
156
- // Memory System: Quantum Semantic Graph Memory (QSGM)
157
- const memoryDir = path.join(options.cwd, ".raxflow", "memory");
158
- const { LocalVectorStore, GraphMemory, MemoryManager } = await import("rax-flow-core");
159
-
160
- const vectorStore = new LocalVectorStore(path.join(memoryDir, "vector-index.json"));
161
- await vectorStore.load();
162
-
163
- const graphMemory = new GraphMemory(path.join(memoryDir, "graph-memory.json"));
164
- await graphMemory.load();
165
-
166
- const memoryManager = new MemoryManager(vectorStore, graphMemory);
167
-
168
- const orchestrator = new CoreOrchestrator(providers, agents, { memory: memoryManager }, { maxParallel: options.maxParallel ?? 4, cacheTtlMs: 1000 * 60 * 60 * 24 });
169
-
170
- // Governance System: Enterprise security & compliance
171
- const { GovernancePlugin, PIIPolicy } = await import("rax-flow-core");
172
- const governancePlugin = new GovernancePlugin(
173
- [new PIIPolicy()],
174
- path.join(options.cwd, ".raxflow", "audit"),
175
- orchestrator.events
176
- );
177
- orchestrator.registerPlugin(governancePlugin);
178
-
179
-
180
- // Register Memory Plugin if an embedding provider is available (OpenAI in this case)
181
- if (providers.openai) {
182
- const { LongTermMemoryPlugin } = await import("rax-flow-core");
183
- orchestrator.registerPlugin(new LongTermMemoryPlugin(memoryManager, providers.openai as any));
184
- }
185
-
186
-
187
-
188
- let relay: WebSocketRelay | undefined;
189
-
190
- if (options.ui) {
191
- relay = new WebSocketRelay(3002);
192
- relay.start(orchestrator.events);
193
- }
194
-
195
- const persistentCacheFile = cachePath(options.cwd);
196
- if (!options.noCachePersist) {
197
- await orchestrator.loadCache(persistentCacheFile);
198
- }
199
-
200
- const sessionEvents: any[] = [];
201
- orchestrator.onEvent(e => sessionEvents.push(e));
202
-
203
- // Connect WebSocket relay resolutions to orchestrator
204
- orchestrator.onEvent((event: any) => {
205
- if (event.type === "INTERNAL_RESOLVE_APPROVAL") {
206
- orchestrator.resolveApproval(event.taskId, event.nodeId, event.approved, event.feedback);
207
- }
208
- });
209
-
210
- if (options.stream) {
211
- orchestrator.onEvent((event) => {
212
- if (event.type === "graph_ready") {
213
- console.log(c.magenta(c.bold(`\n--- [DAG FLOW] ---`)));
214
- const edgeCount = event.workflow.nodes.reduce((acc: number, n: any) => acc + (n.dependsOn?.length || 0), 0);
215
- console.log(c.gray(`Tasks: ${event.workflow.nodes.length} | Edges: ${edgeCount}`));
216
- }
217
-
218
- if (event.type === "node_start") {
219
- const retryPrefix = event.retry > 0 ? c.yellow(` (Retry ${event.retry})`) : "";
220
- console.log(`${c.blue("◆")} ${c.bold(event.nodeId)}${retryPrefix} ${c.gray(`[${event.agent}]`)}`);
221
- }
222
-
223
- if (event.type === "node_awaiting_approval") {
224
- if (options.yolo) {
225
- orchestrator.resolveApproval(event.taskId, event.nodeId, true);
226
- } else {
227
- (async () => {
228
- const { approved, feedback } = await askApproval(event.nodeId, event.agent, event.data);
229
- orchestrator.resolveApproval(event.taskId, event.nodeId, approved, feedback);
230
- })();
231
- }
232
- }
233
-
234
- if (event.type === "node_end") {
235
- const confColor = event.confidence >= 0.8 ? c.green : (event.confidence >= 0.6 ? c.yellow : c.red);
236
- const icon = event.success ? c.green("✔") : c.red("✘");
237
- console.log(` ${icon} ${confColor(`conf: ${(event.confidence * 100).toFixed(0)}%`)} ${c.gray(`cost: $${(event.costUsd || 0).toFixed(5)}`)}`);
238
- }
239
-
240
- if (event.type === "node_error") {
241
- console.log(` ${c.red("!")} ${c.red(event.message)}`);
242
- }
243
-
244
- if (event.type === "audit_record" && event.mutation) {
245
- console.log(c.magenta(`\n🧬 [Genetic Mutation Generated]`));
246
- console.log(c.magenta(` Reason: ${event.mutation.reason ?? "Optimization"}`));
247
- }
248
- });
249
- }
250
-
251
- const taskId = `task_${Date.now()}_${Math.floor(Math.random() * 1000)}`;
252
- const result = await orchestrator.run(
253
- {
254
- taskId,
255
- userPrompt: options.prompt,
256
- context: {
257
- cli: true,
258
- host: os.hostname()
259
- }
260
- },
261
- workflow
262
- );
263
-
264
- if (relay) {
265
- await new Promise((resolve) => setTimeout(resolve, 2000));
266
- relay.stop();
267
- }
268
-
269
- if (!options.noCachePersist) {
270
- await orchestrator.saveCache(persistentCacheFile);
271
- }
272
-
273
- // Save to history
274
- await saveHistory(options.cwd, taskId, {
275
- taskId,
276
- timestamp: Date.now(),
277
- prompt: options.prompt,
278
- result: result.result,
279
- metrics: result.metrics,
280
- workflow: result.workflow,
281
- events: sessionEvents
282
- });
283
-
284
- if (options.asJson) {
285
- console.log(JSON.stringify(result, null, 2));
286
- return 0;
287
- }
288
-
289
- // Final Summary Table
290
- console.log(c.bold(c.cyan(`\n\n--- [RUN SUMMARY] ---`)));
291
- const tableData = [
292
- ["Task ID", taskId],
293
- ["Main Agent", result.result.agent],
294
- ["Status", result.result.success ? c.green("SUCCESS") : c.red("FAILED")],
295
- ["Confidence", `${(result.result.confidence * 100).toFixed(1)}%`],
296
- ["Retries", result.metrics.retries.toString()],
297
- ["Escalations", result.metrics.escalations.toString()],
298
- ["Latency", `${(result.metrics.totalLatencyMs / 1000).toFixed(2)}s`],
299
- ["Total Cost", c.yellow(`$${(result.metrics.totalCostUsd || 0).toFixed(5)}`)]
300
- ];
301
-
302
- for (const [key, value] of tableData) {
303
- console.log(`${c.bold(key.padEnd(15))} : ${value}`);
304
- }
305
-
306
- if (result.result.logs.length > 0) {
307
- console.log(c.bold(`\nTrace Logs:`));
308
- for (const line of result.result.logs.slice(-5)) {
309
- console.log(c.gray(` • ${line}`));
310
- }
311
- if (result.result.logs.length > 5) {
312
- console.log(c.gray(` ... and ${result.result.logs.length - 5} more lines.`));
313
- }
314
- }
315
-
316
- return 0;
317
- }
@@ -1,158 +0,0 @@
1
- import React, { useState } from "react";
2
- import { Box, Text, useInput } from "ink";
3
- import TextInput from "ink-text-input";
4
-
5
- interface ApiKeyInputProps {
6
- providerId: string;
7
- providerName: string;
8
- currentKey?: string;
9
- envVar?: string;
10
- onSetKey: (key: string) => void;
11
- onSkip: () => void;
12
- onBack: () => void;
13
- }
14
-
15
- export function ApiKeyInput({
16
- providerId,
17
- providerName,
18
- currentKey,
19
- envVar,
20
- onSetKey,
21
- onSkip,
22
- onBack,
23
- }: ApiKeyInputProps) {
24
- const [inputValue, setInputValue] = useState(currentKey || "");
25
- const [isEditing, setIsEditing] = useState(true);
26
- const [showKey, setShowKey] = useState(false);
27
- const PRIMARY = "#f97316";
28
-
29
- const envValue = process.env[envVar || ""];
30
-
31
- useInput((input, key) => {
32
- if (!isEditing) {
33
- if (key.return || input === "s") {
34
- onSkip();
35
- } else if (input === "b") {
36
- onBack();
37
- } else if (input === "e") {
38
- setIsEditing(true);
39
- }
40
- }
41
- });
42
-
43
- const handleSubmit = (value: string) => {
44
- if (value.trim()) {
45
- onSetKey(value.trim());
46
- } else {
47
- setIsEditing(false);
48
- }
49
- };
50
-
51
- const maskedValue = (key: string) => {
52
- if (key.length <= 8) return "••••••••";
53
- return key.slice(0, 4) + "•".repeat(8) + key.slice(-4);
54
- };
55
-
56
- return (
57
- <Box flexDirection="column">
58
- <Box marginBottom={1}>
59
- <Text color={PRIMARY} bold>
60
- CONFIGURE {providerName.toUpperCase()}
61
- </Text>
62
- </Box>
63
-
64
- {envValue && (
65
- <Box marginBottom={1}>
66
- <Text color="#22c55e">✓</Text>
67
- <Text color="#a1a1aa">
68
- {" Found key in "}
69
- </Text>
70
- <Text color="#f59e0b">{envVar}</Text>
71
- </Box>
72
- )}
73
-
74
- <Box marginBottom={1}>
75
- <Text color="#a1a1aa">Enter your API key (or leave empty to skip):</Text>
76
- </Box>
77
-
78
- {isEditing ? (
79
- <Box>
80
- <Text color="#27272a">{"> "}</Text>
81
- <TextInput
82
- value={inputValue}
83
- onChange={setInputValue}
84
- onSubmit={handleSubmit}
85
- placeholder={envValue ? "Press Enter to use env variable" : "sk-..."}
86
- showCursor={true}
87
- />
88
- </Box>
89
- ) : (
90
- <Box flexDirection="column">
91
- {inputValue && (
92
- <Box>
93
- <Text color="#22c55e">✓ Key set: </Text>
94
- <Text color="#a1a1aa">
95
- {showKey ? inputValue : maskedValue(inputValue)}
96
- </Text>
97
- </Box>
98
- )}
99
- </Box>
100
- )}
101
-
102
- <Box marginTop={1}>
103
- <Text color="#27272a">{"─".repeat(50)}</Text>
104
- </Box>
105
-
106
- <Box marginTop={1}>
107
- <Text color="#71717a">[E] Edit</Text>
108
- <Text color="#71717a"> [S] Skip</Text>
109
- <Text color="#71717a"> [B] Back</Text>
110
- </Box>
111
- </Box>
112
- );
113
- }
114
-
115
- interface ApiKeyCollectorProps {
116
- providers: Array<{ id: string; name: string; requiresApiKey: boolean }>;
117
- currentIndex: number;
118
- keys: Record<string, string>;
119
- onSetKey: (providerId: string, key: string) => void;
120
- onSkip: () => void;
121
- onBack: () => void;
122
- }
123
-
124
- const ENV_VAR_MAP: Record<string, string> = {
125
- anthropic: "ANTHROPIC_API_KEY",
126
- openai: "OPENAI_API_KEY",
127
- gemini: "GOOGLE_API_KEY",
128
- mistral: "MISTRAL_API_KEY",
129
- groq: "GROQ_API_KEY",
130
- };
131
-
132
- export function ApiKeyCollector({
133
- providers,
134
- currentIndex,
135
- keys,
136
- onSetKey,
137
- onSkip,
138
- onBack,
139
- }: ApiKeyCollectorProps) {
140
- const providersNeedingKeys = providers.filter((p) => p.requiresApiKey);
141
- const currentProvider = providersNeedingKeys[currentIndex];
142
-
143
- if (!currentProvider) {
144
- return null;
145
- }
146
-
147
- return (
148
- <ApiKeyInput
149
- providerId={currentProvider.id}
150
- providerName={currentProvider.name}
151
- currentKey={keys[currentProvider.id]}
152
- envVar={ENV_VAR_MAP[currentProvider.id]}
153
- onSetKey={(key) => onSetKey(currentProvider.id, key)}
154
- onSkip={onSkip}
155
- onBack={onBack}
156
- />
157
- );
158
- }