@ranker/raxflow 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/dist/benchmark.d.ts +10 -0
  2. package/dist/benchmark.d.ts.map +1 -0
  3. package/dist/benchmark.js +123 -0
  4. package/dist/benchmark.js.map +1 -0
  5. package/dist/bin.d.ts +3 -0
  6. package/dist/bin.d.ts.map +1 -0
  7. package/dist/bin.js +141 -0
  8. package/dist/bin.js.map +1 -0
  9. package/dist/bootstrap.d.ts +8 -0
  10. package/dist/bootstrap.d.ts.map +1 -0
  11. package/dist/bootstrap.js +22 -0
  12. package/dist/bootstrap.js.map +1 -0
  13. package/dist/bridge-adapter-templates.d.ts +4 -0
  14. package/dist/bridge-adapter-templates.d.ts.map +1 -0
  15. package/dist/bridge-adapter-templates.js +185 -0
  16. package/dist/bridge-adapter-templates.js.map +1 -0
  17. package/dist/bridge-test.d.ts +7 -0
  18. package/dist/bridge-test.d.ts.map +1 -0
  19. package/dist/bridge-test.js +89 -0
  20. package/dist/bridge-test.js.map +1 -0
  21. package/dist/dashboard.d.ts +4 -0
  22. package/dist/dashboard.d.ts.map +1 -0
  23. package/{src/dashboard.ts → dist/dashboard.js} +8 -10
  24. package/dist/dashboard.js.map +1 -0
  25. package/dist/doctor.d.ts +6 -0
  26. package/dist/doctor.d.ts.map +1 -0
  27. package/dist/doctor.js +70 -0
  28. package/dist/doctor.js.map +1 -0
  29. package/dist/evolve.d.ts +7 -0
  30. package/dist/evolve.d.ts.map +1 -0
  31. package/{src/evolve.ts → dist/evolve.js} +7 -33
  32. package/dist/evolve.js.map +1 -0
  33. package/dist/host-init-templates.d.ts +16 -0
  34. package/dist/host-init-templates.d.ts.map +1 -0
  35. package/dist/host-init-templates.js +119 -0
  36. package/dist/host-init-templates.js.map +1 -0
  37. package/dist/hub/__tests__/commands.test.d.ts +2 -0
  38. package/dist/hub/__tests__/commands.test.d.ts.map +1 -0
  39. package/dist/hub/__tests__/commands.test.js +72 -0
  40. package/dist/hub/__tests__/commands.test.js.map +1 -0
  41. package/dist/hub/__tests__/history.test.d.ts +2 -0
  42. package/dist/hub/__tests__/history.test.d.ts.map +1 -0
  43. package/dist/hub/__tests__/history.test.js +119 -0
  44. package/dist/hub/__tests__/history.test.js.map +1 -0
  45. package/dist/hub/__tests__/parser.test.d.ts +2 -0
  46. package/dist/hub/__tests__/parser.test.d.ts.map +1 -0
  47. package/dist/hub/__tests__/parser.test.js +92 -0
  48. package/dist/hub/__tests__/parser.test.js.map +1 -0
  49. package/dist/hub/commands/agents.d.ts +3 -0
  50. package/dist/hub/commands/agents.d.ts.map +1 -0
  51. package/dist/hub/commands/agents.js +36 -0
  52. package/dist/hub/commands/agents.js.map +1 -0
  53. package/dist/hub/commands/index.d.ts +4 -0
  54. package/dist/hub/commands/index.d.ts.map +1 -0
  55. package/dist/hub/commands/index.js +123 -0
  56. package/dist/hub/commands/index.js.map +1 -0
  57. package/dist/hub/commands/logs.d.ts +3 -0
  58. package/dist/hub/commands/logs.d.ts.map +1 -0
  59. package/dist/hub/commands/logs.js +53 -0
  60. package/dist/hub/commands/logs.js.map +1 -0
  61. package/dist/hub/commands/memory.d.ts +3 -0
  62. package/dist/hub/commands/memory.d.ts.map +1 -0
  63. package/dist/hub/commands/memory.js +40 -0
  64. package/dist/hub/commands/memory.js.map +1 -0
  65. package/dist/hub/commands/metrics.d.ts +3 -0
  66. package/dist/hub/commands/metrics.d.ts.map +1 -0
  67. package/dist/hub/commands/metrics.js +35 -0
  68. package/dist/hub/commands/metrics.js.map +1 -0
  69. package/dist/hub/commands/providers.d.ts +3 -0
  70. package/dist/hub/commands/providers.d.ts.map +1 -0
  71. package/dist/hub/commands/providers.js +26 -0
  72. package/dist/hub/commands/providers.js.map +1 -0
  73. package/dist/hub/commands/run.d.ts +3 -0
  74. package/dist/hub/commands/run.d.ts.map +1 -0
  75. package/dist/hub/commands/run.js +31 -0
  76. package/dist/hub/commands/run.js.map +1 -0
  77. package/dist/hub/commands/status.d.ts +3 -0
  78. package/dist/hub/commands/status.d.ts.map +1 -0
  79. package/dist/hub/commands/status.js +61 -0
  80. package/dist/hub/commands/status.js.map +1 -0
  81. package/dist/hub/commands/workflows.d.ts +3 -0
  82. package/dist/hub/commands/workflows.d.ts.map +1 -0
  83. package/dist/hub/commands/workflows.js +45 -0
  84. package/dist/hub/commands/workflows.js.map +1 -0
  85. package/dist/hub/config-loader.d.ts +4 -0
  86. package/dist/hub/config-loader.d.ts.map +1 -0
  87. package/dist/hub/config-loader.js +27 -0
  88. package/dist/hub/config-loader.js.map +1 -0
  89. package/dist/hub/event-listener.d.ts +6 -0
  90. package/dist/hub/event-listener.d.ts.map +1 -0
  91. package/dist/hub/event-listener.js +12 -0
  92. package/dist/hub/event-listener.js.map +1 -0
  93. package/dist/hub/history.d.ts +13 -0
  94. package/dist/hub/history.d.ts.map +1 -0
  95. package/dist/hub/history.js +59 -0
  96. package/dist/hub/history.js.map +1 -0
  97. package/dist/hub/index.d.ts +4 -0
  98. package/dist/hub/index.d.ts.map +1 -0
  99. package/dist/hub/index.js +114 -0
  100. package/dist/hub/index.js.map +1 -0
  101. package/dist/hub/parser.d.ts +4 -0
  102. package/dist/hub/parser.d.ts.map +1 -0
  103. package/dist/hub/parser.js +98 -0
  104. package/dist/hub/parser.js.map +1 -0
  105. package/dist/hub/styles/borders.d.ts +23 -0
  106. package/dist/hub/styles/borders.d.ts.map +1 -0
  107. package/dist/hub/styles/borders.js +64 -0
  108. package/dist/hub/styles/borders.js.map +1 -0
  109. package/dist/hub/styles/colors.d.ts +63 -0
  110. package/dist/hub/styles/colors.d.ts.map +1 -0
  111. package/dist/hub/styles/colors.js +115 -0
  112. package/dist/hub/styles/colors.js.map +1 -0
  113. package/dist/hub/styles/typography.d.ts +34 -0
  114. package/dist/hub/styles/typography.d.ts.map +1 -0
  115. package/dist/hub/styles/typography.js +60 -0
  116. package/dist/hub/styles/typography.js.map +1 -0
  117. package/dist/hub/types.d.ts +27 -0
  118. package/dist/hub/types.d.ts.map +1 -0
  119. package/dist/hub/types.js +2 -0
  120. package/dist/hub/types.js.map +1 -0
  121. package/dist/index.d.ts +11 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/{src/index.ts → dist/index.js} +1 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/init-host.d.ts +10 -0
  126. package/dist/init-host.d.ts.map +1 -0
  127. package/dist/init-host.js +232 -0
  128. package/dist/init-host.js.map +1 -0
  129. package/dist/install.d.ts +8 -0
  130. package/dist/install.d.ts.map +1 -0
  131. package/dist/install.js +99 -0
  132. package/dist/install.js.map +1 -0
  133. package/dist/run.d.ts +16 -0
  134. package/dist/run.d.ts.map +1 -0
  135. package/dist/run.js +238 -0
  136. package/dist/run.js.map +1 -0
  137. package/dist/setup/components/ApiKeyInput.d.ts +25 -0
  138. package/dist/setup/components/ApiKeyInput.d.ts.map +1 -0
  139. package/dist/setup/components/ApiKeyInput.js +54 -0
  140. package/dist/setup/components/ApiKeyInput.js.map +1 -0
  141. package/dist/setup/components/AsciiBanner.d.ts +22 -0
  142. package/dist/setup/components/AsciiBanner.d.ts.map +1 -0
  143. package/{src/setup/components/AsciiBanner.tsx → dist/setup/components/AsciiBanner.js} +24 -94
  144. package/dist/setup/components/AsciiBanner.js.map +1 -0
  145. package/dist/setup/components/CliDetector.d.ts +17 -0
  146. package/dist/setup/components/CliDetector.d.ts.map +1 -0
  147. package/dist/setup/components/CliDetector.js +81 -0
  148. package/dist/setup/components/CliDetector.js.map +1 -0
  149. package/dist/setup/components/ModeSelector.d.ts +8 -0
  150. package/dist/setup/components/ModeSelector.d.ts.map +1 -0
  151. package/dist/setup/components/ModeSelector.js +76 -0
  152. package/dist/setup/components/ModeSelector.js.map +1 -0
  153. package/dist/setup/components/ProviderSelector.d.ts +18 -0
  154. package/dist/setup/components/ProviderSelector.d.ts.map +1 -0
  155. package/dist/setup/components/ProviderSelector.js +98 -0
  156. package/dist/setup/components/ProviderSelector.js.map +1 -0
  157. package/dist/setup/components/SetupWizard.d.ts +2 -0
  158. package/dist/setup/components/SetupWizard.d.ts.map +1 -0
  159. package/dist/setup/components/SetupWizard.js +212 -0
  160. package/dist/setup/components/SetupWizard.js.map +1 -0
  161. package/dist/setup/components/StepIndicator.d.ts +13 -0
  162. package/dist/setup/components/StepIndicator.d.ts.map +1 -0
  163. package/dist/setup/components/StepIndicator.js +18 -0
  164. package/dist/setup/components/StepIndicator.js.map +1 -0
  165. package/dist/setup/components/SuccessScreen.d.ts +18 -0
  166. package/dist/setup/components/SuccessScreen.d.ts.map +1 -0
  167. package/dist/setup/components/SuccessScreen.js +38 -0
  168. package/dist/setup/components/SuccessScreen.js.map +1 -0
  169. package/dist/setup/index.d.ts +12 -0
  170. package/dist/setup/index.d.ts.map +1 -0
  171. package/{src/setup/index.ts → dist/setup/index.js} +14 -19
  172. package/dist/setup/index.js.map +1 -0
  173. package/dist/setup/utils/cli-detection.d.ts +12 -0
  174. package/dist/setup/utils/cli-detection.d.ts.map +1 -0
  175. package/dist/setup/utils/cli-detection.js +83 -0
  176. package/dist/setup/utils/cli-detection.js.map +1 -0
  177. package/dist/setup/utils/config-writer.d.ts +43 -0
  178. package/dist/setup/utils/config-writer.d.ts.map +1 -0
  179. package/dist/setup/utils/config-writer.js +180 -0
  180. package/dist/setup/utils/config-writer.js.map +1 -0
  181. package/dist/styles.d.ts +12 -0
  182. package/dist/styles.d.ts.map +1 -0
  183. package/dist/styles.js +12 -0
  184. package/dist/styles.js.map +1 -0
  185. package/dist/tui/App.d.ts +3 -0
  186. package/dist/tui/App.d.ts.map +1 -0
  187. package/dist/tui/App.js +136 -0
  188. package/dist/tui/App.js.map +1 -0
  189. package/dist/tui/components/AgentStateIcon.d.ts +18 -0
  190. package/dist/tui/components/AgentStateIcon.d.ts.map +1 -0
  191. package/dist/tui/components/AgentStateIcon.js +57 -0
  192. package/dist/tui/components/AgentStateIcon.js.map +1 -0
  193. package/dist/tui/components/AnimatedBranch.d.ts +39 -0
  194. package/dist/tui/components/AnimatedBranch.d.ts.map +1 -0
  195. package/dist/tui/components/AnimatedBranch.js +64 -0
  196. package/dist/tui/components/AnimatedBranch.js.map +1 -0
  197. package/dist/tui/components/ChatPanel.d.ts +17 -0
  198. package/dist/tui/components/ChatPanel.d.ts.map +1 -0
  199. package/dist/tui/components/ChatPanel.js +51 -0
  200. package/dist/tui/components/ChatPanel.js.map +1 -0
  201. package/dist/tui/components/DAGPanel.d.ts +37 -0
  202. package/dist/tui/components/DAGPanel.d.ts.map +1 -0
  203. package/dist/tui/components/DAGPanel.js +52 -0
  204. package/dist/tui/components/DAGPanel.js.map +1 -0
  205. package/dist/tui/components/ExecutionTimeline.d.ts +34 -0
  206. package/dist/tui/components/ExecutionTimeline.d.ts.map +1 -0
  207. package/dist/tui/components/ExecutionTimeline.js +67 -0
  208. package/dist/tui/components/ExecutionTimeline.js.map +1 -0
  209. package/dist/tui/components/Header.d.ts +12 -0
  210. package/dist/tui/components/Header.d.ts.map +1 -0
  211. package/dist/tui/components/Header.js +32 -0
  212. package/dist/tui/components/Header.js.map +1 -0
  213. package/dist/tui/components/HelpOverlay.d.ts +7 -0
  214. package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
  215. package/dist/tui/components/HelpOverlay.js +60 -0
  216. package/dist/tui/components/HelpOverlay.js.map +1 -0
  217. package/dist/tui/components/InputBar.d.ts +10 -0
  218. package/dist/tui/components/InputBar.d.ts.map +1 -0
  219. package/dist/tui/components/InputBar.js +21 -0
  220. package/dist/tui/components/InputBar.js.map +1 -0
  221. package/dist/tui/components/LogsPanel.d.ts +10 -0
  222. package/dist/tui/components/MemoryPanel.d.ts +22 -0
  223. package/dist/tui/components/MetricsPanel.d.ts +19 -0
  224. package/dist/tui/components/StatusPanel.d.ts +24 -0
  225. package/dist/tui/components/TaskTree.d.ts +28 -0
  226. package/dist/tui/components/TaskTree.d.ts.map +1 -0
  227. package/dist/tui/components/TaskTree.js +29 -0
  228. package/dist/tui/components/TaskTree.js.map +1 -0
  229. package/dist/tui/components/animations/ProgressBar.d.ts +39 -0
  230. package/dist/tui/components/animations/ProgressBar.d.ts.map +1 -0
  231. package/dist/tui/components/animations/ProgressBar.js +39 -0
  232. package/dist/tui/components/animations/ProgressBar.js.map +1 -0
  233. package/dist/tui/components/animations/Pulse.d.ts +17 -0
  234. package/dist/tui/components/animations/Pulse.d.ts.map +1 -0
  235. package/dist/tui/components/animations/Pulse.js +47 -0
  236. package/dist/tui/components/animations/Pulse.js.map +1 -0
  237. package/dist/tui/components/animations/Spinner.d.ts +13 -0
  238. package/dist/tui/components/animations/Spinner.d.ts.map +1 -0
  239. package/dist/tui/components/animations/Spinner.js +36 -0
  240. package/dist/tui/components/animations/Spinner.js.map +1 -0
  241. package/dist/tui/components/animations/StatusAnimator.d.ts +27 -0
  242. package/dist/tui/components/animations/StatusAnimator.d.ts.map +1 -0
  243. package/dist/tui/components/animations/StatusAnimator.js +85 -0
  244. package/dist/tui/components/animations/StatusAnimator.js.map +1 -0
  245. package/dist/tui/components/animations/TypingEffect.d.ts +26 -0
  246. package/dist/tui/components/animations/TypingEffect.d.ts.map +1 -0
  247. package/dist/tui/components/animations/TypingEffect.js +59 -0
  248. package/dist/tui/components/animations/TypingEffect.js.map +1 -0
  249. package/{src/tui/components/animations/index.ts → dist/tui/components/animations/index.d.ts} +2 -10
  250. package/dist/tui/components/animations/index.d.ts.map +1 -0
  251. package/dist/tui/components/animations/index.js +6 -0
  252. package/dist/tui/components/animations/index.js.map +1 -0
  253. package/dist/tui/hooks/useAnimation.d.ts +42 -0
  254. package/dist/tui/hooks/useAnimation.d.ts.map +1 -0
  255. package/dist/tui/hooks/useAnimation.js +212 -0
  256. package/dist/tui/hooks/useAnimation.js.map +1 -0
  257. package/dist/tui/hooks/useAppState.d.ts +65 -0
  258. package/dist/tui/hooks/useAppState.d.ts.map +1 -0
  259. package/dist/tui/hooks/useAppState.js +293 -0
  260. package/dist/tui/hooks/useAppState.js.map +1 -0
  261. package/dist/tui/index.d.ts +3 -0
  262. package/dist/tui/index.d.ts.map +1 -0
  263. package/{src/tui/index.ts → dist/tui/index.js} +2 -3
  264. package/dist/tui/index.js.map +1 -0
  265. package/dist/tui/services/orchestrator.d.ts +16 -0
  266. package/dist/tui/services/orchestrator.d.ts.map +1 -0
  267. package/dist/tui/services/orchestrator.js +152 -0
  268. package/dist/tui/services/orchestrator.js.map +1 -0
  269. package/dist/tui/styles/borders.d.ts +31 -0
  270. package/dist/tui/styles/borders.d.ts.map +1 -0
  271. package/dist/tui/styles/borders.js +47 -0
  272. package/dist/tui/styles/borders.js.map +1 -0
  273. package/dist/tui/styles/colors.d.ts +18 -0
  274. package/dist/tui/styles/colors.d.ts.map +1 -0
  275. package/dist/tui/styles/colors.js +18 -0
  276. package/dist/tui/styles/colors.js.map +1 -0
  277. package/dist/tui/styles/index.d.ts +6 -0
  278. package/dist/tui/styles/index.d.ts.map +1 -0
  279. package/dist/tui/styles/index.js +6 -0
  280. package/dist/tui/styles/index.js.map +1 -0
  281. package/dist/tui/styles/indicators.d.ts +67 -0
  282. package/dist/tui/styles/indicators.d.ts.map +1 -0
  283. package/dist/tui/styles/indicators.js +42 -0
  284. package/dist/tui/styles/indicators.js.map +1 -0
  285. package/dist/tui/styles/layout.d.ts +21 -0
  286. package/dist/tui/styles/layout.d.ts.map +1 -0
  287. package/dist/tui/styles/layout.js +42 -0
  288. package/dist/tui/styles/layout.js.map +1 -0
  289. package/dist/tui/styles/providers.d.ts +77 -0
  290. package/dist/tui/styles/providers.d.ts.map +1 -0
  291. package/dist/tui/styles/providers.js +31 -0
  292. package/dist/tui/styles/providers.js.map +1 -0
  293. package/dist/tui/utils/animation.d.ts +44 -0
  294. package/dist/tui/utils/animation.d.ts.map +1 -0
  295. package/dist/tui/utils/animation.js +107 -0
  296. package/dist/tui/utils/animation.js.map +1 -0
  297. package/dist/vendor-manifests.d.ts +22 -0
  298. package/dist/vendor-manifests.d.ts.map +1 -0
  299. package/dist/vendor-manifests.js +94 -0
  300. package/dist/vendor-manifests.js.map +1 -0
  301. package/dist/ws-relay.d.ts +12 -0
  302. package/dist/ws-relay.d.ts.map +1 -0
  303. package/{src/ws-relay.ts → dist/ws-relay.js} +39 -47
  304. package/dist/ws-relay.js.map +1 -0
  305. package/package.json +5 -1
  306. package/dashboard/index.html +0 -420
  307. package/src/benchmark.ts +0 -156
  308. package/src/bin.ts +0 -156
  309. package/src/bootstrap.ts +0 -36
  310. package/src/bridge-adapter-templates.ts +0 -181
  311. package/src/bridge-test.ts +0 -107
  312. package/src/doctor.ts +0 -92
  313. package/src/host-init-templates.ts +0 -134
  314. package/src/hub/__tests__/commands.test.ts +0 -84
  315. package/src/hub/__tests__/history.test.ts +0 -137
  316. package/src/hub/__tests__/parser.test.ts +0 -105
  317. package/src/hub/commands/agents.ts +0 -53
  318. package/src/hub/commands/index.ts +0 -140
  319. package/src/hub/commands/logs.ts +0 -70
  320. package/src/hub/commands/memory.ts +0 -47
  321. package/src/hub/commands/metrics.ts +0 -49
  322. package/src/hub/commands/providers.ts +0 -39
  323. package/src/hub/commands/run.ts +0 -37
  324. package/src/hub/commands/status.ts +0 -69
  325. package/src/hub/commands/workflows.ts +0 -64
  326. package/src/hub/config-loader.ts +0 -37
  327. package/src/hub/event-listener.ts +0 -17
  328. package/src/hub/history.ts +0 -66
  329. package/src/hub/index.ts +0 -132
  330. package/src/hub/parser.ts +0 -107
  331. package/src/hub/styles/borders.ts +0 -74
  332. package/src/hub/styles/colors.ts +0 -129
  333. package/src/hub/styles/typography.ts +0 -68
  334. package/src/hub/types.ts +0 -31
  335. package/src/init-host.ts +0 -285
  336. package/src/install.ts +0 -118
  337. package/src/run.ts +0 -317
  338. package/src/setup/components/ApiKeyInput.tsx +0 -158
  339. package/src/setup/components/CliDetector.tsx +0 -230
  340. package/src/setup/components/ModeSelector.tsx +0 -137
  341. package/src/setup/components/ProviderSelector.tsx +0 -175
  342. package/src/setup/components/SetupWizard.tsx +0 -368
  343. package/src/setup/components/StepIndicator.tsx +0 -74
  344. package/src/setup/components/SuccessScreen.tsx +0 -229
  345. package/src/setup/utils/cli-detection.ts +0 -99
  346. package/src/setup/utils/config-writer.ts +0 -249
  347. package/src/styles.ts +0 -12
  348. package/src/tui/App.tsx +0 -183
  349. package/src/tui/components/AgentStateIcon.tsx +0 -84
  350. package/src/tui/components/AnimatedBranch.tsx +0 -134
  351. package/src/tui/components/ChatPanel.tsx +0 -128
  352. package/src/tui/components/DAGPanel.tsx +0 -212
  353. package/src/tui/components/ExecutionTimeline.tsx +0 -225
  354. package/src/tui/components/Header.tsx +0 -109
  355. package/src/tui/components/HelpOverlay.tsx +0 -140
  356. package/src/tui/components/InputBar.tsx +0 -69
  357. package/src/tui/components/LogsPanel.tsx +0 -132
  358. package/src/tui/components/MemoryPanel.tsx +0 -166
  359. package/src/tui/components/MetricsPanel.tsx +0 -152
  360. package/src/tui/components/StatusPanel.tsx +0 -140
  361. package/src/tui/components/TaskTree.tsx +0 -159
  362. package/src/tui/components/animations/ProgressBar.tsx +0 -160
  363. package/src/tui/components/animations/Pulse.tsx +0 -73
  364. package/src/tui/components/animations/Spinner.tsx +0 -54
  365. package/src/tui/components/animations/StatusAnimator.tsx +0 -153
  366. package/src/tui/components/animations/TypingEffect.tsx +0 -119
  367. package/src/tui/hooks/useAnimation.ts +0 -290
  368. package/src/tui/hooks/useAppState.ts +0 -403
  369. package/src/tui/services/orchestrator.ts +0 -195
  370. package/src/tui/styles/borders.ts +0 -51
  371. package/src/tui/styles/colors.ts +0 -19
  372. package/src/tui/styles/index.ts +0 -20
  373. package/src/tui/styles/indicators.ts +0 -54
  374. package/src/tui/styles/layout.ts +0 -44
  375. package/src/tui/styles/providers.ts +0 -32
  376. package/src/tui/utils/animation.ts +0 -124
  377. package/src/vendor-manifests.ts +0 -113
  378. package/tsconfig.json +0 -28
@@ -1,99 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import { access } from "node:fs/promises";
3
- import { constants } from "node:fs";
4
- import path from "node:path";
5
- import os from "node:os";
6
-
7
- export interface DetectedCli {
8
- id: string;
9
- name: string;
10
- detected: boolean;
11
- configPath?: string;
12
- version?: string;
13
- }
14
-
15
- const CLI_CONFIG_PATHS: Record<string, string[]> = {
16
- "claude-code": [
17
- path.join(os.homedir(), ".claude"),
18
- path.join(os.homedir(), ".config", "claude-code"),
19
- ],
20
- codex: [
21
- path.join(os.homedir(), ".codex"),
22
- path.join(os.homedir(), ".config", "codex"),
23
- ],
24
- opencode: [
25
- path.join(os.homedir(), ".opencode"),
26
- path.join(os.homedir(), ".config", "opencode"),
27
- ],
28
- kilo: [
29
- path.join(os.homedir(), ".kilo"),
30
- path.join(os.homedir(), ".config", "kilo"),
31
- ],
32
- };
33
-
34
- const CLI_BOOTSTRAP_FILES: Record<string, string> = {
35
- "claude-code": "CLAUDE.md",
36
- codex: "CODEX.md",
37
- opencode: "OPENCODE.md",
38
- kilo: "KILO.md",
39
- };
40
-
41
- export function getCliBootstrapFile(cliId: string): string {
42
- return CLI_BOOTSTRAP_FILES[cliId] || "README.md";
43
- }
44
-
45
- export async function detectInstalledClis(): Promise<DetectedCli[]> {
46
- const candidates = [
47
- { id: "claude-code", name: "Claude Code", cmd: "claude-code --version" },
48
- { id: "codex", name: "Codex", cmd: "codex --version" },
49
- { id: "opencode", name: "OpenCode", cmd: "opencode --version" },
50
- { id: "kilo", name: "Kilo", cmd: "kilo --version" },
51
- ];
52
-
53
- const results: DetectedCli[] = [];
54
-
55
- for (const cli of candidates) {
56
- let detected = false;
57
- let version: string | undefined;
58
- let configPath: string | undefined;
59
-
60
- try {
61
- const output = execSync(cli.cmd, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] });
62
- detected = true;
63
- version = output.trim().split("\n")[0];
64
- } catch {
65
- // Not in PATH, check config directories
66
- }
67
-
68
- // Check for config directories even if not in PATH
69
- const configPaths = CLI_CONFIG_PATHS[cli.id] || [];
70
- for (const p of configPaths) {
71
- try {
72
- await access(p, constants.F_OK);
73
- configPath = p;
74
- if (!detected) detected = true;
75
- break;
76
- } catch {
77
- // Directory doesn't exist
78
- }
79
- }
80
-
81
- results.push({
82
- id: cli.id,
83
- name: cli.name,
84
- detected,
85
- configPath,
86
- version,
87
- });
88
- }
89
-
90
- return results;
91
- }
92
-
93
- export async function detectInstalledClisFast(): Promise<DetectedCli[]> {
94
- return detectInstalledClis();
95
- }
96
-
97
- export function getCliConfigPath(cliId: string): string | undefined {
98
- return (CLI_CONFIG_PATHS[cliId] || [])[0];
99
- }
@@ -1,249 +0,0 @@
1
- import { mkdir, writeFile, access } from "node:fs/promises";
2
- import { constants } from "node:fs";
3
- import path from "node:path";
4
- import os from "node:os";
5
-
6
- export interface ProviderConfig {
7
- id: string;
8
- name: string;
9
- apiKey?: string;
10
- model?: string;
11
- apiKeyEnv?: string;
12
- }
13
-
14
- export interface SetupConfig {
15
- mode: "hub" | "standalone" | "both";
16
- providers: ProviderConfig[];
17
- defaultProvider: string;
18
- hubTargets: string[];
19
- projectPath: string;
20
- }
21
-
22
- export interface RaxrcConfig {
23
- version: number;
24
- defaultProvider: string;
25
- strongProvider?: string;
26
- providers: Record<string, {
27
- model?: string;
28
- apiKeyEnv?: string;
29
- apiKey?: string;
30
- mode?: string;
31
- bridgeCommand?: string;
32
- bridgeCommandEnv?: string;
33
- }>;
34
- privacyMode: boolean;
35
- verifyFixLoops: number;
36
- }
37
-
38
- const ENV_VAR_MAP: Record<string, string> = {
39
- anthropic: "ANTHROPIC_API_KEY",
40
- openai: "OPENAI_API_KEY",
41
- gemini: "GOOGLE_API_KEY",
42
- mistral: "MISTRAL_API_KEY",
43
- groq: "GROQ_API_KEY",
44
- };
45
-
46
- const MODEL_MAP: Record<string, string> = {
47
- anthropic: "claude-3-5-sonnet-latest",
48
- openai: "gpt-4o",
49
- gemini: "gemini-2.0-flash",
50
- mistral: "mistral-large-latest",
51
- groq: "llama-3.3-70b-versatile",
52
- };
53
-
54
- export async function ensureDirectory(dir: string): Promise<void> {
55
- try {
56
- await access(dir, constants.F_OK);
57
- } catch {
58
- await mkdir(dir, { recursive: true });
59
- }
60
- }
61
-
62
- export async function writeRaxrc(targetDir: string, config: SetupConfig): Promise<string> {
63
- const raxrc: RaxrcConfig = {
64
- version: 1,
65
- defaultProvider: config.defaultProvider,
66
- providers: {},
67
- privacyMode: true,
68
- verifyFixLoops: 3,
69
- };
70
-
71
- // Add host provider if hub mode
72
- if (config.mode === "hub" || config.mode === "both") {
73
- const primaryTarget = config.hubTargets[0] || "claude-code";
74
- raxrc.providers.host = {
75
- model: primaryTarget,
76
- mode: "auto",
77
- bridgeCommand: primaryTarget,
78
- bridgeCommandEnv: "RAX_HOST_BRIDGE_COMMAND",
79
- };
80
- }
81
-
82
- // Add configured providers
83
- for (const provider of config.providers) {
84
- if (provider.id === "host") continue;
85
-
86
- raxrc.providers[provider.id] = {
87
- model: provider.model || MODEL_MAP[provider.id] || "unknown",
88
- apiKeyEnv: ENV_VAR_MAP[provider.id] || `${provider.id.toUpperCase()}_API_KEY`,
89
- };
90
-
91
- if (provider.apiKey) {
92
- raxrc.providers[provider.id].apiKey = provider.apiKey;
93
- }
94
- }
95
-
96
- // Ensure at least one fallback
97
- if (!raxrc.providers.openai) {
98
- raxrc.providers.openai = {
99
- model: "gpt-4o",
100
- apiKeyEnv: "OPENAI_API_KEY",
101
- };
102
- }
103
-
104
- if (!raxrc.providers.anthropic) {
105
- raxrc.providers.anthropic = {
106
- model: "claude-3-5-sonnet-latest",
107
- apiKeyEnv: "ANTHROPIC_API_KEY",
108
- };
109
- }
110
-
111
- const filePath = path.join(targetDir, ".raxrc");
112
- await writeFile(filePath, JSON.stringify(raxrc, null, 2) + "\n", "utf-8");
113
- return filePath;
114
- }
115
-
116
- export async function writeHubBootstrap(
117
- targetCli: string,
118
- configPath: string,
119
- projectPath: string
120
- ): Promise<string> {
121
- const bootstrapFileName = getBootstrapFileName(targetCli);
122
- const raxFlowDir = path.join(configPath, ".raxflow");
123
-
124
- await ensureDirectory(raxFlowDir);
125
- await ensureDirectory(path.join(raxFlowDir, "workflows"));
126
-
127
- const bootstrapContent = generateBootstrapContent(targetCli, projectPath);
128
- const bootstrapPath = path.join(configPath, bootstrapFileName);
129
-
130
- await writeFile(bootstrapPath, bootstrapContent, "utf-8");
131
-
132
- // Create example workflow
133
- const exampleWorkflow = {
134
- id: "default-workflow",
135
- nodes: [
136
- { id: "analyze", agent: "IntentClassifierAgent", dependsOn: [] },
137
- { id: "spec", agent: "SpecAgent", dependsOn: ["analyze"] },
138
- { id: "implement", agent: "CodeGeneratorAgent", dependsOn: ["spec"] },
139
- { id: "verify", agent: "ValidatorAgent", dependsOn: ["implement"] },
140
- ],
141
- };
142
-
143
- const workflowPath = path.join(raxFlowDir, "workflows", "default.json");
144
- await writeFile(workflowPath, JSON.stringify(exampleWorkflow, null, 2) + "\n", "utf-8");
145
-
146
- return bootstrapPath;
147
- }
148
-
149
- function getBootstrapFileName(cliId: string): string {
150
- const map: Record<string, string> = {
151
- "claude-code": "CLAUDE.md",
152
- codex: "CODEX.md",
153
- opencode: "OPENCODE.md",
154
- kilo: "KILO.md",
155
- };
156
- return map[cliId] || "RAXFLOW.md";
157
- }
158
-
159
- function generateBootstrapContent(cliId: string, projectPath: string): string {
160
- return `# RAXFLOW Bootstrap Configuration
161
-
162
- This project is configured to work with RAXFLOW orchestration.
163
-
164
- ## Project Context
165
- - Path: ${projectPath}
166
- - CLI: ${cliId}
167
-
168
- ## Available Commands
169
- - \`raxflow run --prompt "..." --stream\` - Execute orchestrated workflow
170
- - \`raxflow doctor\` - Check system health
171
- - \`raxflow status\` - View current state
172
-
173
- ## Workflows
174
- Workflows are stored in \`.raxflow/workflows/\` directory.
175
-
176
- ## Provider Configuration
177
- See \`.raxrc\` in the project root for provider settings.
178
- `;
179
- }
180
-
181
- export async function writeStandaloneConfig(projectPath: string): Promise<{
182
- raxFlowDir: string;
183
- workflowsDir: string;
184
- globalDir: string;
185
- }> {
186
- const raxFlowDir = path.join(projectPath, ".raxflow");
187
- const workflowsDir = path.join(raxFlowDir, "workflows");
188
- const globalDir = path.join(os.homedir(), ".raxflow");
189
-
190
- await ensureDirectory(raxFlowDir);
191
- await ensureDirectory(workflowsDir);
192
- await ensureDirectory(globalDir);
193
-
194
- // Create default workflow
195
- const defaultWorkflow = {
196
- id: "default",
197
- name: "Default Workflow",
198
- nodes: [
199
- { id: "classify", agent: "IntentClassifierAgent", dependsOn: [] },
200
- { id: "plan", agent: "TaskPlannerAgent", dependsOn: ["classify"] },
201
- { id: "code", agent: "CodeGeneratorAgent", dependsOn: ["plan"] },
202
- { id: "test", agent: "TestAgent", dependsOn: ["code"] },
203
- { id: "fix", agent: "FixAgent", dependsOn: ["test"] },
204
- ],
205
- };
206
-
207
- const workflowPath = path.join(workflowsDir, "default.json");
208
- await writeFile(workflowPath, JSON.stringify(defaultWorkflow, null, 2) + "\n", "utf-8");
209
-
210
- // Create global config
211
- const globalConfigPath = path.join(globalDir, "config.json");
212
- const globalConfig = {
213
- version: 1,
214
- createdAt: new Date().toISOString(),
215
- lastUsed: new Date().toISOString(),
216
- };
217
- await writeFile(globalConfigPath, JSON.stringify(globalConfig, null, 2) + "\n", "utf-8");
218
-
219
- return { raxFlowDir, workflowsDir, globalDir };
220
- }
221
-
222
- export async function validateSetup(projectPath: string): Promise<{
223
- valid: boolean;
224
- errors: string[];
225
- warnings: string[];
226
- }> {
227
- const errors: string[] = [];
228
- const warnings: string[] = [];
229
-
230
- // Check .raxrc exists
231
- try {
232
- await access(path.join(projectPath, ".raxrc"), constants.F_OK);
233
- } catch {
234
- errors.push(".raxrc configuration file not found");
235
- }
236
-
237
- // Check .raxflow directory
238
- try {
239
- await access(path.join(projectPath, ".raxflow"), constants.F_OK);
240
- } catch {
241
- warnings.push(".raxflow directory not found (optional for hub mode)");
242
- }
243
-
244
- return {
245
- valid: errors.length === 0,
246
- errors,
247
- warnings,
248
- };
249
- }
package/src/styles.ts DELETED
@@ -1,12 +0,0 @@
1
- export const c = {
2
- blue: (s: string) => `\u001b[34m${s}\u001b[0m`,
3
- green: (s: string) => `\u001b[32m${s}\u001b[0m`,
4
- yellow: (s: string) => `\u001b[33m${s}\u001b[0m`,
5
- red: (s: string) => `\u001b[31m${s}\u001b[0m`,
6
- magenta: (s: string) => `\u001b[35m${s}\u001b[0m`,
7
- cyan: (s: string) => `\u001b[36m${s}\u001b[0m`,
8
- white: (s: string) => `\u001b[37m${s}\u001b[0m`,
9
- gray: (s: string) => `\u001b[90m${s}\u001b[0m`,
10
- bold: (s: string) => `\u001b[1m${s}\u001b[22m`
11
- };
12
-
package/src/tui/App.tsx DELETED
@@ -1,183 +0,0 @@
1
- import React, { useState, useEffect, useRef, useMemo, useCallback } from "react";
2
- import { Box, Text, useApp, useInput, useStdout } from "ink";
3
- import { Header } from "./components/Header.js";
4
- import { ChatPanel } from "./components/ChatPanel.js";
5
- import { StatusPanel } from "./components/StatusPanel.js";
6
- import { DAGPanel } from "./components/DAGPanel.js";
7
- import { LogsPanel } from "./components/LogsPanel.js";
8
- import { MetricsPanel } from "./components/MetricsPanel.js";
9
- import { MemoryPanel } from "./components/MemoryPanel.js";
10
- import { InputBar } from "./components/InputBar.js";
11
- import { HelpOverlay } from "./components/HelpOverlay.js";
12
- import { useAppState } from "./hooks/useAppState.js";
13
-
14
- type ActivePanel = "chat" | "dag" | "status" | "logs" | "metrics" | "memory";
15
-
16
- const PANEL_ORDER: ActivePanel[] = ["chat", "dag", "status", "logs", "metrics", "memory"];
17
- const TICK_INTERVAL = 200;
18
-
19
- export const App = React.memo(function App() {
20
- const { exit } = useApp();
21
- const { stdout } = useStdout();
22
- const { state, processCommand } = useAppState();
23
- const [activePanel, setActivePanel] = useState<ActivePanel>("chat");
24
- const [showHelp, setShowHelp] = useState(false);
25
- const [tick, setTick] = useState(0);
26
- const [viewMode, setViewMode] = useState<"full" | "compact">("full");
27
- const intervalRef = useRef<NodeJS.Timeout | null>(null);
28
-
29
- const terminalHeight = stdout?.rows || 24;
30
- const headerHeight = 5;
31
- const inputBarHeight = 4;
32
- const availableHeight = Math.max(8, terminalHeight - headerHeight - inputBarHeight);
33
-
34
- useEffect(() => {
35
- intervalRef.current = setInterval(() => {
36
- setTick((t) => t + 1);
37
- }, TICK_INTERVAL);
38
- return () => {
39
- if (intervalRef.current) clearInterval(intervalRef.current);
40
- };
41
- }, []);
42
-
43
- const handleTab = useCallback(() => {
44
- setActivePanel((current) => {
45
- const currentIndex = PANEL_ORDER.indexOf(current);
46
- return PANEL_ORDER[(currentIndex + 1) % PANEL_ORDER.length];
47
- });
48
- }, []);
49
-
50
- useInput((input, key) => {
51
- if (key.ctrl && (input === "c" || input === "d")) {
52
- exit();
53
- return;
54
- }
55
- if (key.escape) {
56
- if (showHelp) {
57
- setShowHelp(false);
58
- }
59
- return;
60
- }
61
- if (input === "?" && !showHelp) {
62
- setShowHelp(true);
63
- return;
64
- }
65
- if (showHelp) return;
66
-
67
- if (key.tab) {
68
- handleTab();
69
- return;
70
- }
71
-
72
- if (key.leftArrow) {
73
- setViewMode((v) => (v === "full" ? "compact" : "full"));
74
- }
75
- });
76
-
77
- const handleSubmit = useCallback((input: string) => {
78
- const trimmed = input.trim();
79
- if (!trimmed) return;
80
-
81
- if (trimmed === "exit" || trimmed === "quit") {
82
- exit();
83
- return;
84
- }
85
-
86
- if (trimmed === "?" || trimmed === "/help") {
87
- setShowHelp((s) => !s);
88
- return;
89
- }
90
-
91
- processCommand(trimmed);
92
- }, [exit, processCommand]);
93
-
94
- const handleDismissHelp = useCallback(() => setShowHelp(false), []);
95
-
96
- const headerProps = useMemo(() => ({
97
- projectName: state.projectName,
98
- agentCount: state.agentCount,
99
- provider: state.provider,
100
- status: state.status,
101
- tick,
102
- activePanel,
103
- }), [state.projectName, state.agentCount, state.provider, state.status, tick, activePanel]);
104
-
105
- const chatPanelProps = useMemo(() => ({
106
- messages: state.messages,
107
- isProcessing: state.isProcessing,
108
- isActive: activePanel === "chat",
109
- }), [state.messages, state.isProcessing, activePanel]);
110
-
111
- const dagPanelProps = useMemo(() => ({
112
- workflowState: state.workflowState,
113
- tick,
114
- isActive: activePanel === "dag",
115
- }), [state.workflowState, tick, activePanel]);
116
-
117
- const logsPanelProps = useMemo(() => ({
118
- logs: state.logs,
119
- isActive: activePanel === "logs",
120
- }), [state.logs, activePanel]);
121
-
122
- const metricsPanelProps = useMemo(() => ({
123
- metrics: state.metrics,
124
- fitness: state.fitness,
125
- isActive: activePanel === "metrics",
126
- tick,
127
- }), [state.metrics, state.fitness, activePanel, tick]);
128
-
129
- const memoryPanelProps = useMemo(() => ({
130
- nodes: [] as never[],
131
- edges: [] as never[],
132
- nodeCount: 247,
133
- cacheHitRate: 94,
134
- isActive: activePanel === "memory",
135
- tick,
136
- }), [activePanel, tick]);
137
-
138
- const statusPanelProps = useMemo(() => ({
139
- agents: state.agents,
140
- providers: state.providers,
141
- fitness: state.fitness,
142
- currentWorkflow: state.currentWorkflow,
143
- isActive: activePanel === "status",
144
- tick,
145
- }), [state.agents, state.providers, state.fitness, state.currentWorkflow, activePanel, tick]);
146
-
147
- const inputBarProps = useMemo(() => ({
148
- onSubmit: handleSubmit,
149
- suggestions: state.suggestions,
150
- isProcessing: state.isProcessing,
151
- projectName: state.projectName,
152
- }), [handleSubmit, state.suggestions, state.isProcessing, state.projectName]);
153
-
154
- return (
155
- <Box flexDirection="column" height={terminalHeight} width="100%">
156
- <Header {...headerProps} />
157
-
158
- {showHelp ? (
159
- <HelpOverlay onDismiss={handleDismissHelp} />
160
- ) : (
161
- <>
162
- <Box flexDirection="row" width="100%" height={availableHeight}>
163
- <ChatPanel {...chatPanelProps} maxHeight={availableHeight} />
164
- <DAGPanel {...dagPanelProps} maxHeight={availableHeight} />
165
- {viewMode === "full" && (
166
- <>
167
- <LogsPanel {...logsPanelProps} maxHeight={availableHeight} />
168
- <Box flexDirection="column">
169
- <MetricsPanel {...metricsPanelProps} maxHeight={Math.floor(availableHeight / 2)} />
170
- <MemoryPanel {...memoryPanelProps} maxHeight={Math.floor(availableHeight / 2)} />
171
- </Box>
172
- </>
173
- )}
174
- {viewMode === "compact" && (
175
- <StatusPanel {...statusPanelProps} maxHeight={availableHeight} />
176
- )}
177
- </Box>
178
- <InputBar {...inputBarProps} />
179
- </>
180
- )}
181
- </Box>
182
- );
183
- });
@@ -1,84 +0,0 @@
1
- import React, { memo, useMemo } from "react";
2
- import { Text } from "ink";
3
- import { tuiColors } from "../styles/index.js";
4
-
5
- const THINKING_FRAMES = ["◠", "◡", "◠", "◡"];
6
- const PROCESSING_FRAMES = ["▶", "▷", "▶", "▷"];
7
- const RUNNING_FRAMES = ["●", "◉", "●", "○"];
8
- const WAITING_FRAMES = ["◐", "◓", "◐", "◓"];
9
-
10
- export type AgentState = 'idle' | 'thinking' | 'processing' | 'running' | 'success' | 'error' | 'waiting';
11
-
12
- interface AgentStateIconProps {
13
- state: AgentState;
14
- animated?: boolean;
15
- tick?: number;
16
- }
17
-
18
- const STATE_CONFIG: Record<AgentState, { icon: string; color: string; animated: boolean; frames?: string[] }> = {
19
- idle: { icon: "○", color: tuiColors.textTertiary, animated: false },
20
- thinking: { icon: "◠", color: tuiColors.warning, animated: true, frames: THINKING_FRAMES },
21
- processing: { icon: "▶", color: tuiColors.primary, animated: true, frames: PROCESSING_FRAMES },
22
- running: { icon: "●", color: tuiColors.success, animated: true, frames: RUNNING_FRAMES },
23
- success: { icon: "✓", color: tuiColors.success, animated: false },
24
- error: { icon: "✗", color: tuiColors.error, animated: false },
25
- waiting: { icon: "◐", color: tuiColors.warning, animated: true, frames: WAITING_FRAMES },
26
- };
27
-
28
- export const AgentStateIcon = memo(function AgentStateIcon({ state, animated = true, tick = 0 }: AgentStateIconProps) {
29
- const config = STATE_CONFIG[state];
30
- const showAnimation = animated && config.animated && config.frames;
31
-
32
- const icon = useMemo(() => {
33
- if (showAnimation && config.frames) {
34
- return config.frames[tick % config.frames.length];
35
- }
36
- return config.icon;
37
- }, [showAnimation, config.frames, config.icon, tick]);
38
-
39
- return <Text color={config.color}>{icon}</Text>;
40
- });
41
-
42
- export function useAgentStateFrame(state: AgentState, tick: number): string {
43
- const config = STATE_CONFIG[state];
44
- if (config.frames) {
45
- return config.frames[tick % config.frames.length];
46
- }
47
- return config.icon;
48
- }
49
-
50
- const STATE_LABELS: Record<AgentState, string> = {
51
- idle: "pending",
52
- thinking: "thinking...",
53
- processing: "processing",
54
- running: "running",
55
- success: "done",
56
- error: "error",
57
- waiting: "waiting",
58
- };
59
-
60
- interface AgentStateWithLabelProps {
61
- state: AgentState;
62
- label: string;
63
- tick: number;
64
- }
65
-
66
- export const AgentStateWithLabel = memo(function AgentStateWithLabel({ state, label, tick }: AgentStateWithLabelProps) {
67
- return (
68
- <>
69
- <AgentStateIcon state={state} tick={tick} />
70
- <Text color={tuiColors.textSecondary}> {label}</Text>
71
- <Text color={tuiColors.textTertiary}> {STATE_LABELS[state]}</Text>
72
- </>
73
- );
74
- });
75
-
76
- export const agentStateColors: Record<AgentState, string> = {
77
- idle: tuiColors.textTertiary,
78
- thinking: tuiColors.warning,
79
- processing: tuiColors.primary,
80
- running: tuiColors.success,
81
- success: tuiColors.success,
82
- error: tuiColors.error,
83
- waiting: tuiColors.warning,
84
- };