@claude-flow/cli 3.32.2 → 3.32.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 (655) hide show
  1. package/.claude/helpers/helpers.manifest.json +3 -3
  2. package/.claude/helpers/statusline.cjs +38 -38
  3. package/catalog-manifest.json +2 -2
  4. package/package.json +2 -2
  5. package/plugins/ruflo-metaharness/scripts/smoke.sh +11 -11
  6. package/dist/src/agenticow/speculative-exploration.d.ts +0 -148
  7. package/dist/src/agenticow/speculative-exploration.js +0 -218
  8. package/dist/src/appliance/gguf-engine.d.ts +0 -91
  9. package/dist/src/appliance/gguf-engine.js +0 -425
  10. package/dist/src/appliance/ruvllm-bridge.d.ts +0 -102
  11. package/dist/src/appliance/ruvllm-bridge.js +0 -292
  12. package/dist/src/appliance/rvfa-builder.d.ts +0 -44
  13. package/dist/src/appliance/rvfa-builder.js +0 -329
  14. package/dist/src/appliance/rvfa-distribution.d.ts +0 -97
  15. package/dist/src/appliance/rvfa-distribution.js +0 -370
  16. package/dist/src/appliance/rvfa-format.d.ts +0 -111
  17. package/dist/src/appliance/rvfa-format.js +0 -393
  18. package/dist/src/appliance/rvfa-runner.d.ts +0 -69
  19. package/dist/src/appliance/rvfa-runner.js +0 -237
  20. package/dist/src/appliance/rvfa-signing.d.ts +0 -123
  21. package/dist/src/appliance/rvfa-signing.js +0 -347
  22. package/dist/src/autopilot-state.d.ts +0 -77
  23. package/dist/src/autopilot-state.js +0 -271
  24. package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +0 -18
  25. package/dist/src/benchmarks/gaia-agent-planning.smoke.js +0 -253
  26. package/dist/src/benchmarks/gaia-agent.d.ts +0 -198
  27. package/dist/src/benchmarks/gaia-agent.js +0 -651
  28. package/dist/src/benchmarks/gaia-causal-memory.d.ts +0 -133
  29. package/dist/src/benchmarks/gaia-causal-memory.js +0 -281
  30. package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +0 -22
  31. package/dist/src/benchmarks/gaia-causal-memory.smoke.js +0 -300
  32. package/dist/src/benchmarks/gaia-convergence.d.ts +0 -138
  33. package/dist/src/benchmarks/gaia-convergence.js +0 -260
  34. package/dist/src/benchmarks/gaia-convergence.smoke.d.ts +0 -19
  35. package/dist/src/benchmarks/gaia-convergence.smoke.js +0 -246
  36. package/dist/src/benchmarks/gaia-critic.d.ts +0 -123
  37. package/dist/src/benchmarks/gaia-critic.js +0 -312
  38. package/dist/src/benchmarks/gaia-critic.smoke.d.ts +0 -21
  39. package/dist/src/benchmarks/gaia-critic.smoke.js +0 -327
  40. package/dist/src/benchmarks/gaia-decomposer.d.ts +0 -125
  41. package/dist/src/benchmarks/gaia-decomposer.js +0 -350
  42. package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +0 -21
  43. package/dist/src/benchmarks/gaia-decomposer.smoke.js +0 -228
  44. package/dist/src/benchmarks/gaia-e2e-smoke.d.ts +0 -27
  45. package/dist/src/benchmarks/gaia-e2e-smoke.js +0 -136
  46. package/dist/src/benchmarks/gaia-extract.smoke.d.ts +0 -45
  47. package/dist/src/benchmarks/gaia-extract.smoke.js +0 -242
  48. package/dist/src/benchmarks/gaia-hardness/features.d.ts +0 -46
  49. package/dist/src/benchmarks/gaia-hardness/features.js +0 -170
  50. package/dist/src/benchmarks/gaia-hardness/predictor.d.ts +0 -105
  51. package/dist/src/benchmarks/gaia-hardness/predictor.js +0 -260
  52. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +0 -20
  53. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +0 -235
  54. package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +0 -51
  55. package/dist/src/benchmarks/gaia-hardness/train-data-loader.js +0 -179
  56. package/dist/src/benchmarks/gaia-judge.d.ts +0 -88
  57. package/dist/src/benchmarks/gaia-judge.js +0 -437
  58. package/dist/src/benchmarks/gaia-loader.d.ts +0 -87
  59. package/dist/src/benchmarks/gaia-loader.js +0 -326
  60. package/dist/src/benchmarks/gaia-tools/file_read.d.ts +0 -35
  61. package/dist/src/benchmarks/gaia-tools/file_read.js +0 -403
  62. package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +0 -126
  63. package/dist/src/benchmarks/gaia-tools/grounded_query.js +0 -225
  64. package/dist/src/benchmarks/gaia-tools/index.d.ts +0 -32
  65. package/dist/src/benchmarks/gaia-tools/index.js +0 -36
  66. package/dist/src/benchmarks/gaia-tools/types.d.ts +0 -62
  67. package/dist/src/benchmarks/gaia-tools/types.js +0 -12
  68. package/dist/src/benchmarks/gaia-tools/web_search.d.ts +0 -30
  69. package/dist/src/benchmarks/gaia-tools/web_search.js +0 -210
  70. package/dist/src/benchmarks/gaia-voting.d.ts +0 -88
  71. package/dist/src/benchmarks/gaia-voting.js +0 -297
  72. package/dist/src/benchmarks/gaia-voting.smoke.d.ts +0 -20
  73. package/dist/src/benchmarks/gaia-voting.smoke.js +0 -332
  74. package/dist/src/benchmarks/pretrain/index.d.ts +0 -58
  75. package/dist/src/benchmarks/pretrain/index.js +0 -404
  76. package/dist/src/business-pods/bbs-budget-tracker.d.ts +0 -139
  77. package/dist/src/business-pods/bbs-budget-tracker.js +0 -358
  78. package/dist/src/business-pods/domain-affinity-policy.d.ts +0 -47
  79. package/dist/src/business-pods/domain-affinity-policy.js +0 -65
  80. package/dist/src/business-pods/pod-schema.d.ts +0 -96
  81. package/dist/src/business-pods/pod-schema.js +0 -225
  82. package/dist/src/commands/advisor.d.ts +0 -15
  83. package/dist/src/commands/advisor.js +0 -94
  84. package/dist/src/commands/agent-wasm.d.ts +0 -14
  85. package/dist/src/commands/agent-wasm.js +0 -333
  86. package/dist/src/commands/agent.d.ts +0 -8
  87. package/dist/src/commands/agent.js +0 -927
  88. package/dist/src/commands/analyze.d.ts +0 -19
  89. package/dist/src/commands/analyze.js +0 -2047
  90. package/dist/src/commands/announcements.d.ts +0 -17
  91. package/dist/src/commands/announcements.js +0 -0
  92. package/dist/src/commands/appliance-advanced.d.ts +0 -9
  93. package/dist/src/commands/appliance-advanced.js +0 -215
  94. package/dist/src/commands/appliance.d.ts +0 -8
  95. package/dist/src/commands/appliance.js +0 -404
  96. package/dist/src/commands/autopilot.d.ts +0 -15
  97. package/dist/src/commands/autopilot.js +0 -407
  98. package/dist/src/commands/benchmark.d.ts +0 -10
  99. package/dist/src/commands/benchmark.js +0 -460
  100. package/dist/src/commands/claims.d.ts +0 -10
  101. package/dist/src/commands/claims.js +0 -620
  102. package/dist/src/commands/cleanup.d.ts +0 -13
  103. package/dist/src/commands/cleanup.js +0 -250
  104. package/dist/src/commands/completions.d.ts +0 -10
  105. package/dist/src/commands/completions.js +0 -539
  106. package/dist/src/commands/config.d.ts +0 -8
  107. package/dist/src/commands/config.js +0 -428
  108. package/dist/src/commands/daemon.d.ts +0 -59
  109. package/dist/src/commands/daemon.js +0 -1733
  110. package/dist/src/commands/deployment.d.ts +0 -10
  111. package/dist/src/commands/deployment.js +0 -672
  112. package/dist/src/commands/doctor.d.ts +0 -10
  113. package/dist/src/commands/doctor.js +0 -1695
  114. package/dist/src/commands/eject.d.ts +0 -33
  115. package/dist/src/commands/eject.js +0 -195
  116. package/dist/src/commands/embeddings.d.ts +0 -18
  117. package/dist/src/commands/embeddings.js +0 -1623
  118. package/dist/src/commands/funnel.d.ts +0 -18
  119. package/dist/src/commands/funnel.js +0 -302
  120. package/dist/src/commands/gaia-bench.d.ts +0 -40
  121. package/dist/src/commands/gaia-bench.js +0 -597
  122. package/dist/src/commands/guidance.d.ts +0 -8
  123. package/dist/src/commands/guidance.js +0 -556
  124. package/dist/src/commands/hive-mind.d.ts +0 -11
  125. package/dist/src/commands/hive-mind.js +0 -1319
  126. package/dist/src/commands/hooks.d.ts +0 -8
  127. package/dist/src/commands/hooks.js +0 -4606
  128. package/dist/src/commands/index.d.ts +0 -118
  129. package/dist/src/commands/index.js +0 -364
  130. package/dist/src/commands/init.d.ts +0 -13
  131. package/dist/src/commands/init.js +0 -1297
  132. package/dist/src/commands/issues.d.ts +0 -21
  133. package/dist/src/commands/issues.js +0 -567
  134. package/dist/src/commands/mcp.d.ts +0 -11
  135. package/dist/src/commands/mcp.js +0 -732
  136. package/dist/src/commands/memory-backup.d.ts +0 -11
  137. package/dist/src/commands/memory-backup.js +0 -46
  138. package/dist/src/commands/memory-distill.d.ts +0 -27
  139. package/dist/src/commands/memory-distill.js +0 -374
  140. package/dist/src/commands/memory.d.ts +0 -8
  141. package/dist/src/commands/memory.js +0 -1596
  142. package/dist/src/commands/metaharness.d.ts +0 -39
  143. package/dist/src/commands/metaharness.js +0 -215
  144. package/dist/src/commands/migrate.d.ts +0 -8
  145. package/dist/src/commands/migrate.js +0 -742
  146. package/dist/src/commands/neural.d.ts +0 -10
  147. package/dist/src/commands/neural.js +0 -4331
  148. package/dist/src/commands/performance.d.ts +0 -10
  149. package/dist/src/commands/performance.js +0 -583
  150. package/dist/src/commands/plugins.d.ts +0 -11
  151. package/dist/src/commands/plugins.js +0 -826
  152. package/dist/src/commands/process.d.ts +0 -10
  153. package/dist/src/commands/process.js +0 -694
  154. package/dist/src/commands/progress.d.ts +0 -11
  155. package/dist/src/commands/progress.js +0 -259
  156. package/dist/src/commands/providers.d.ts +0 -10
  157. package/dist/src/commands/providers.js +0 -502
  158. package/dist/src/commands/proxy.d.ts +0 -21
  159. package/dist/src/commands/proxy.js +0 -310
  160. package/dist/src/commands/route.d.ts +0 -16
  161. package/dist/src/commands/route.js +0 -822
  162. package/dist/src/commands/ruvector/backup.d.ts +0 -11
  163. package/dist/src/commands/ruvector/backup.js +0 -747
  164. package/dist/src/commands/ruvector/benchmark.d.ts +0 -11
  165. package/dist/src/commands/ruvector/benchmark.js +0 -490
  166. package/dist/src/commands/ruvector/import.d.ts +0 -18
  167. package/dist/src/commands/ruvector/import.js +0 -373
  168. package/dist/src/commands/ruvector/index.d.ts +0 -29
  169. package/dist/src/commands/ruvector/index.js +0 -129
  170. package/dist/src/commands/ruvector/init.d.ts +0 -11
  171. package/dist/src/commands/ruvector/init.js +0 -467
  172. package/dist/src/commands/ruvector/migrate.d.ts +0 -11
  173. package/dist/src/commands/ruvector/migrate.js +0 -498
  174. package/dist/src/commands/ruvector/optimize.d.ts +0 -11
  175. package/dist/src/commands/ruvector/optimize.js +0 -505
  176. package/dist/src/commands/ruvector/pg-utils.d.ts +0 -14
  177. package/dist/src/commands/ruvector/pg-utils.js +0 -41
  178. package/dist/src/commands/ruvector/setup.d.ts +0 -18
  179. package/dist/src/commands/ruvector/setup.js +0 -765
  180. package/dist/src/commands/ruvector/status.d.ts +0 -11
  181. package/dist/src/commands/ruvector/status.js +0 -479
  182. package/dist/src/commands/security.d.ts +0 -10
  183. package/dist/src/commands/security.js +0 -1012
  184. package/dist/src/commands/session.d.ts +0 -8
  185. package/dist/src/commands/session.js +0 -757
  186. package/dist/src/commands/settings.d.ts +0 -19
  187. package/dist/src/commands/settings.js +0 -180
  188. package/dist/src/commands/spinner.d.ts +0 -16
  189. package/dist/src/commands/spinner.js +0 -329
  190. package/dist/src/commands/start.d.ts +0 -8
  191. package/dist/src/commands/start.js +0 -418
  192. package/dist/src/commands/status.d.ts +0 -8
  193. package/dist/src/commands/status.js +0 -608
  194. package/dist/src/commands/swarm.d.ts +0 -8
  195. package/dist/src/commands/swarm.js +0 -891
  196. package/dist/src/commands/task.d.ts +0 -8
  197. package/dist/src/commands/task.js +0 -675
  198. package/dist/src/commands/transfer-store.d.ts +0 -13
  199. package/dist/src/commands/transfer-store.js +0 -428
  200. package/dist/src/commands/update.d.ts +0 -8
  201. package/dist/src/commands/update.js +0 -276
  202. package/dist/src/commands/verify.d.ts +0 -19
  203. package/dist/src/commands/verify.js +0 -261
  204. package/dist/src/commands/version.d.ts +0 -42
  205. package/dist/src/commands/version.js +0 -106
  206. package/dist/src/commands/workflow.d.ts +0 -8
  207. package/dist/src/commands/workflow.js +0 -617
  208. package/dist/src/config/harness-feedback-applier.d.ts +0 -50
  209. package/dist/src/config/harness-feedback-applier.js +0 -122
  210. package/dist/src/config/proven-config-refresh.d.ts +0 -39
  211. package/dist/src/config/proven-config-refresh.js +0 -154
  212. package/dist/src/config/proven-config-rvfa.d.ts +0 -23
  213. package/dist/src/config/proven-config-rvfa.js +0 -73
  214. package/dist/src/config/proven-config.d.ts +0 -86
  215. package/dist/src/config/proven-config.js +0 -176
  216. package/dist/src/config-adapter.d.ts +0 -15
  217. package/dist/src/config-adapter.js +0 -186
  218. package/dist/src/encryption/vault.d.ts +0 -94
  219. package/dist/src/encryption/vault.js +0 -172
  220. package/dist/src/fs-secure.d.ts +0 -86
  221. package/dist/src/fs-secure.js +0 -133
  222. package/dist/src/funnel/advisor-tip.d.ts +0 -58
  223. package/dist/src/funnel/advisor-tip.js +0 -92
  224. package/dist/src/funnel/attribution.d.ts +0 -37
  225. package/dist/src/funnel/attribution.js +0 -101
  226. package/dist/src/funnel/consent.d.ts +0 -22
  227. package/dist/src/funnel/consent.js +0 -58
  228. package/dist/src/funnel/credit-errors.d.ts +0 -31
  229. package/dist/src/funnel/credit-errors.js +0 -88
  230. package/dist/src/funnel/credit-notifier.d.ts +0 -44
  231. package/dist/src/funnel/credit-notifier.js +0 -74
  232. package/dist/src/funnel/disclosure.d.ts +0 -47
  233. package/dist/src/funnel/disclosure.js +0 -109
  234. package/dist/src/funnel/enrollment.d.ts +0 -36
  235. package/dist/src/funnel/enrollment.js +0 -64
  236. package/dist/src/funnel/environment.d.ts +0 -17
  237. package/dist/src/funnel/environment.js +0 -39
  238. package/dist/src/funnel/event-transport.d.ts +0 -51
  239. package/dist/src/funnel/event-transport.js +0 -199
  240. package/dist/src/funnel/events.d.ts +0 -42
  241. package/dist/src/funnel/events.js +0 -150
  242. package/dist/src/funnel/index.d.ts +0 -21
  243. package/dist/src/funnel/index.js +0 -21
  244. package/dist/src/funnel/insights.d.ts +0 -50
  245. package/dist/src/funnel/insights.js +0 -120
  246. package/dist/src/funnel/local-signals.d.ts +0 -20
  247. package/dist/src/funnel/local-signals.js +0 -77
  248. package/dist/src/funnel/message-transport.d.ts +0 -51
  249. package/dist/src/funnel/message-transport.js +0 -149
  250. package/dist/src/funnel/messages.d.ts +0 -55
  251. package/dist/src/funnel/messages.js +0 -160
  252. package/dist/src/funnel/payout.d.ts +0 -40
  253. package/dist/src/funnel/payout.js +0 -60
  254. package/dist/src/funnel/power-saver-notifier.d.ts +0 -44
  255. package/dist/src/funnel/power-saver-notifier.js +0 -92
  256. package/dist/src/funnel/precedence.d.ts +0 -16
  257. package/dist/src/funnel/precedence.js +0 -85
  258. package/dist/src/funnel/promo.d.ts +0 -41
  259. package/dist/src/funnel/promo.js +0 -144
  260. package/dist/src/funnel/rate-limit-notifier.d.ts +0 -55
  261. package/dist/src/funnel/rate-limit-notifier.js +0 -102
  262. package/dist/src/funnel/rotation.d.ts +0 -19
  263. package/dist/src/funnel/rotation.js +0 -70
  264. package/dist/src/funnel/state.d.ts +0 -13
  265. package/dist/src/funnel/state.js +0 -52
  266. package/dist/src/funnel/toggle-cooldown.d.ts +0 -17
  267. package/dist/src/funnel/toggle-cooldown.js +0 -32
  268. package/dist/src/funnel/types.d.ts +0 -98
  269. package/dist/src/funnel/types.js +0 -26
  270. package/dist/src/index.d.ts +0 -81
  271. package/dist/src/index.js +0 -609
  272. package/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
  273. package/dist/src/infrastructure/in-memory-repositories.js +0 -264
  274. package/dist/src/init/claudemd-generator.d.ts +0 -16
  275. package/dist/src/init/claudemd-generator.js +0 -368
  276. package/dist/src/init/executor.d.ts +0 -41
  277. package/dist/src/init/executor.js +0 -2142
  278. package/dist/src/init/helper-refresh.d.ts +0 -79
  279. package/dist/src/init/helper-refresh.js +0 -347
  280. package/dist/src/init/helper-signing.d.ts +0 -37
  281. package/dist/src/init/helper-signing.js +0 -67
  282. package/dist/src/init/helpers-generator.d.ts +0 -87
  283. package/dist/src/init/helpers-generator.js +0 -1456
  284. package/dist/src/init/index.d.ts +0 -13
  285. package/dist/src/init/index.js +0 -15
  286. package/dist/src/init/mcp-generator.d.ts +0 -26
  287. package/dist/src/init/mcp-generator.js +0 -126
  288. package/dist/src/init/memory-package-resolver.d.ts +0 -53
  289. package/dist/src/init/memory-package-resolver.js +0 -118
  290. package/dist/src/init/settings-generator.d.ts +0 -14
  291. package/dist/src/init/settings-generator.js +0 -462
  292. package/dist/src/init/statusline-generator.d.ts +0 -28
  293. package/dist/src/init/statusline-generator.js +0 -177
  294. package/dist/src/init/types.d.ts +0 -331
  295. package/dist/src/init/types.js +0 -276
  296. package/dist/src/log-filters.d.ts +0 -46
  297. package/dist/src/log-filters.js +0 -107
  298. package/dist/src/mcp-client.d.ts +0 -92
  299. package/dist/src/mcp-client.js +0 -397
  300. package/dist/src/mcp-server.d.ts +0 -163
  301. package/dist/src/mcp-server.js +0 -751
  302. package/dist/src/mcp-tools/agent-execute-core.d.ts +0 -115
  303. package/dist/src/mcp-tools/agent-execute-core.js +0 -587
  304. package/dist/src/mcp-tools/agent-tools.d.ts +0 -9
  305. package/dist/src/mcp-tools/agent-tools.js +0 -837
  306. package/dist/src/mcp-tools/agentbbs-tools.d.ts +0 -28
  307. package/dist/src/mcp-tools/agentbbs-tools.js +0 -394
  308. package/dist/src/mcp-tools/agentdb-tools.d.ts +0 -35
  309. package/dist/src/mcp-tools/agentdb-tools.js +0 -1473
  310. package/dist/src/mcp-tools/agenticow-loader.d.ts +0 -59
  311. package/dist/src/mcp-tools/agenticow-loader.js +0 -105
  312. package/dist/src/mcp-tools/agenticow-speculate-tools.d.ts +0 -24
  313. package/dist/src/mcp-tools/agenticow-speculate-tools.js +0 -209
  314. package/dist/src/mcp-tools/agenticow-tools.d.ts +0 -36
  315. package/dist/src/mcp-tools/agenticow-tools.js +0 -360
  316. package/dist/src/mcp-tools/analyze-tools.d.ts +0 -38
  317. package/dist/src/mcp-tools/analyze-tools.js +0 -346
  318. package/dist/src/mcp-tools/auto-install.d.ts +0 -83
  319. package/dist/src/mcp-tools/auto-install.js +0 -131
  320. package/dist/src/mcp-tools/autopilot-tools.d.ts +0 -12
  321. package/dist/src/mcp-tools/autopilot-tools.js +0 -231
  322. package/dist/src/mcp-tools/browser-intent-tools.d.ts +0 -162
  323. package/dist/src/mcp-tools/browser-intent-tools.js +0 -548
  324. package/dist/src/mcp-tools/browser-session-tools.d.ts +0 -27
  325. package/dist/src/mcp-tools/browser-session-tools.js +0 -398
  326. package/dist/src/mcp-tools/browser-tools.d.ts +0 -21
  327. package/dist/src/mcp-tools/browser-tools.js +0 -760
  328. package/dist/src/mcp-tools/business-pod-tools.d.ts +0 -20
  329. package/dist/src/mcp-tools/business-pod-tools.js +0 -169
  330. package/dist/src/mcp-tools/claims-tools.d.ts +0 -12
  331. package/dist/src/mcp-tools/claims-tools.js +0 -863
  332. package/dist/src/mcp-tools/config-tools.d.ts +0 -8
  333. package/dist/src/mcp-tools/config-tools.js +0 -411
  334. package/dist/src/mcp-tools/coordination-tools.d.ts +0 -13
  335. package/dist/src/mcp-tools/coordination-tools.js +0 -729
  336. package/dist/src/mcp-tools/daa-tools.d.ts +0 -13
  337. package/dist/src/mcp-tools/daa-tools.js +0 -534
  338. package/dist/src/mcp-tools/embeddings-tools.d.ts +0 -9
  339. package/dist/src/mcp-tools/embeddings-tools.js +0 -904
  340. package/dist/src/mcp-tools/github-tools.d.ts +0 -9
  341. package/dist/src/mcp-tools/github-tools.js +0 -659
  342. package/dist/src/mcp-tools/guidance-tools.d.ts +0 -15
  343. package/dist/src/mcp-tools/guidance-tools.js +0 -639
  344. package/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -8
  345. package/dist/src/mcp-tools/hive-mind-tools.js +0 -953
  346. package/dist/src/mcp-tools/hooks-tools.d.ts +0 -65
  347. package/dist/src/mcp-tools/hooks-tools.js +0 -4836
  348. package/dist/src/mcp-tools/http-fetch-tools.d.ts +0 -55
  349. package/dist/src/mcp-tools/http-fetch-tools.js +0 -329
  350. package/dist/src/mcp-tools/index.d.ts +0 -34
  351. package/dist/src/mcp-tools/index.js +0 -40
  352. package/dist/src/mcp-tools/managed-agent-tools.d.ts +0 -22
  353. package/dist/src/mcp-tools/managed-agent-tools.js +0 -357
  354. package/dist/src/mcp-tools/memory-tools.d.ts +0 -14
  355. package/dist/src/mcp-tools/memory-tools.js +0 -1330
  356. package/dist/src/mcp-tools/metaharness-tools.d.ts +0 -51
  357. package/dist/src/mcp-tools/metaharness-tools.js +0 -684
  358. package/dist/src/mcp-tools/neural-tools.d.ts +0 -54
  359. package/dist/src/mcp-tools/neural-tools.js +0 -1168
  360. package/dist/src/mcp-tools/performance-tools.d.ts +0 -16
  361. package/dist/src/mcp-tools/performance-tools.js +0 -675
  362. package/dist/src/mcp-tools/progress-tools.d.ts +0 -14
  363. package/dist/src/mcp-tools/progress-tools.js +0 -348
  364. package/dist/src/mcp-tools/request-tracker.d.ts +0 -17
  365. package/dist/src/mcp-tools/request-tracker.js +0 -27
  366. package/dist/src/mcp-tools/ruvllm-tools.d.ts +0 -9
  367. package/dist/src/mcp-tools/ruvllm-tools.js +0 -355
  368. package/dist/src/mcp-tools/security-tools.d.ts +0 -18
  369. package/dist/src/mcp-tools/security-tools.js +0 -556
  370. package/dist/src/mcp-tools/session-tools.d.ts +0 -8
  371. package/dist/src/mcp-tools/session-tools.js +0 -517
  372. package/dist/src/mcp-tools/swarm-tools.d.ts +0 -37
  373. package/dist/src/mcp-tools/swarm-tools.js +0 -390
  374. package/dist/src/mcp-tools/system-tools.d.ts +0 -13
  375. package/dist/src/mcp-tools/system-tools.js +0 -688
  376. package/dist/src/mcp-tools/task-tools.d.ts +0 -8
  377. package/dist/src/mcp-tools/task-tools.js +0 -487
  378. package/dist/src/mcp-tools/terminal-tools.d.ts +0 -8
  379. package/dist/src/mcp-tools/terminal-tools.js +0 -306
  380. package/dist/src/mcp-tools/testgen-tools.d.ts +0 -26
  381. package/dist/src/mcp-tools/testgen-tools.js +0 -168
  382. package/dist/src/mcp-tools/tool-loop-guardrail.d.ts +0 -31
  383. package/dist/src/mcp-tools/tool-loop-guardrail.js +0 -71
  384. package/dist/src/mcp-tools/transfer-tools.d.ts +0 -14
  385. package/dist/src/mcp-tools/transfer-tools.js +0 -447
  386. package/dist/src/mcp-tools/types.d.ts +0 -8
  387. package/dist/src/mcp-tools/types.js +0 -8
  388. package/dist/src/mcp-tools/validate-input.d.ts +0 -9
  389. package/dist/src/mcp-tools/validate-input.js +0 -9
  390. package/dist/src/mcp-tools/wasm-agent-tools.d.ts +0 -13
  391. package/dist/src/mcp-tools/wasm-agent-tools.js +0 -840
  392. package/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
  393. package/dist/src/mcp-tools/workflow-tools.js +0 -884
  394. package/dist/src/memory/bge-embedder.d.ts +0 -25
  395. package/dist/src/memory/bge-embedder.js +0 -121
  396. package/dist/src/memory/cross-encoder-rerank.d.ts +0 -33
  397. package/dist/src/memory/cross-encoder-rerank.js +0 -123
  398. package/dist/src/memory/embedding-policy.d.ts +0 -21
  399. package/dist/src/memory/embedding-policy.js +0 -30
  400. package/dist/src/memory/embedding-quantization.d.ts +0 -62
  401. package/dist/src/memory/embedding-quantization.js +0 -156
  402. package/dist/src/memory/ewc-consolidation.d.ts +0 -305
  403. package/dist/src/memory/ewc-consolidation.js +0 -611
  404. package/dist/src/memory/graph-edge-writer.d.ts +0 -95
  405. package/dist/src/memory/graph-edge-writer.js +0 -217
  406. package/dist/src/memory/hybrid-retrieval.d.ts +0 -77
  407. package/dist/src/memory/hybrid-retrieval.js +0 -192
  408. package/dist/src/memory/intelligence.d.ts +0 -405
  409. package/dist/src/memory/intelligence.js +0 -1316
  410. package/dist/src/memory/lucene-bm25.d.ts +0 -19
  411. package/dist/src/memory/lucene-bm25.js +0 -308
  412. package/dist/src/memory/memory-bridge.d.ts +0 -537
  413. package/dist/src/memory/memory-bridge.js +0 -2460
  414. package/dist/src/memory/memory-initializer.d.ts +0 -556
  415. package/dist/src/memory/memory-initializer.js +0 -3021
  416. package/dist/src/memory/neural-package-bridge.d.ts +0 -48
  417. package/dist/src/memory/neural-package-bridge.js +0 -87
  418. package/dist/src/memory/rabitq-index.d.ts +0 -60
  419. package/dist/src/memory/rabitq-index.js +0 -242
  420. package/dist/src/memory/sona-optimizer.d.ts +0 -267
  421. package/dist/src/memory/sona-optimizer.js +0 -779
  422. package/dist/src/memory/structured-distill.d.ts +0 -48
  423. package/dist/src/memory/structured-distill.js +0 -125
  424. package/dist/src/output.d.ts +0 -9
  425. package/dist/src/output.js +0 -9
  426. package/dist/src/parser.d.ts +0 -89
  427. package/dist/src/parser.js +0 -516
  428. package/dist/src/plugins/manager.d.ts +0 -133
  429. package/dist/src/plugins/manager.js +0 -415
  430. package/dist/src/plugins/store/discovery.d.ts +0 -99
  431. package/dist/src/plugins/store/discovery.js +0 -1224
  432. package/dist/src/plugins/store/index.d.ts +0 -76
  433. package/dist/src/plugins/store/index.js +0 -141
  434. package/dist/src/plugins/store/search.d.ts +0 -46
  435. package/dist/src/plugins/store/search.js +0 -230
  436. package/dist/src/plugins/store/types.d.ts +0 -279
  437. package/dist/src/plugins/store/types.js +0 -7
  438. package/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -7
  439. package/dist/src/plugins/tests/demo-plugin-store.js +0 -126
  440. package/dist/src/plugins/tests/standalone-test.d.ts +0 -12
  441. package/dist/src/plugins/tests/standalone-test.js +0 -188
  442. package/dist/src/plugins/tests/test-plugin-store.d.ts +0 -7
  443. package/dist/src/plugins/tests/test-plugin-store.js +0 -206
  444. package/dist/src/production/circuit-breaker.d.ts +0 -101
  445. package/dist/src/production/circuit-breaker.js +0 -241
  446. package/dist/src/production/error-handler.d.ts +0 -92
  447. package/dist/src/production/error-handler.js +0 -299
  448. package/dist/src/production/index.d.ts +0 -23
  449. package/dist/src/production/index.js +0 -18
  450. package/dist/src/production/monitoring.d.ts +0 -161
  451. package/dist/src/production/monitoring.js +0 -356
  452. package/dist/src/production/rate-limiter.d.ts +0 -80
  453. package/dist/src/production/rate-limiter.js +0 -201
  454. package/dist/src/production/retry.d.ts +0 -48
  455. package/dist/src/production/retry.js +0 -179
  456. package/dist/src/prompt.d.ts +0 -44
  457. package/dist/src/prompt.js +0 -501
  458. package/dist/src/runtime/headless.d.ts +0 -60
  459. package/dist/src/runtime/headless.js +0 -284
  460. package/dist/src/runtime/parent-death-watchdog.d.ts +0 -42
  461. package/dist/src/runtime/parent-death-watchdog.js +0 -70
  462. package/dist/src/ruvector/agent-wasm.d.ts +0 -228
  463. package/dist/src/ruvector/agent-wasm.js +0 -463
  464. package/dist/src/ruvector/ast-analyzer.d.ts +0 -67
  465. package/dist/src/ruvector/ast-analyzer.js +0 -277
  466. package/dist/src/ruvector/codemods/engine.d.ts +0 -45
  467. package/dist/src/ruvector/codemods/engine.js +0 -291
  468. package/dist/src/ruvector/codemods/scope-analysis.d.ts +0 -29
  469. package/dist/src/ruvector/codemods/scope-analysis.js +0 -162
  470. package/dist/src/ruvector/coverage-router.d.ts +0 -160
  471. package/dist/src/ruvector/coverage-router.js +0 -531
  472. package/dist/src/ruvector/coverage-tools.d.ts +0 -33
  473. package/dist/src/ruvector/coverage-tools.js +0 -157
  474. package/dist/src/ruvector/diff-classifier.d.ts +0 -175
  475. package/dist/src/ruvector/diff-classifier.js +0 -699
  476. package/dist/src/ruvector/diskann-backend.d.ts +0 -78
  477. package/dist/src/ruvector/diskann-backend.js +0 -310
  478. package/dist/src/ruvector/enhanced-model-router.d.ts +0 -172
  479. package/dist/src/ruvector/enhanced-model-router.js +0 -577
  480. package/dist/src/ruvector/graph-analyzer.d.ts +0 -187
  481. package/dist/src/ruvector/graph-analyzer.js +0 -929
  482. package/dist/src/ruvector/graph-backend.d.ts +0 -79
  483. package/dist/src/ruvector/graph-backend.js +0 -220
  484. package/dist/src/ruvector/index.d.ts +0 -38
  485. package/dist/src/ruvector/index.js +0 -86
  486. package/dist/src/ruvector/lora-adapter.d.ts +0 -292
  487. package/dist/src/ruvector/lora-adapter.js +0 -710
  488. package/dist/src/ruvector/model-prices.d.ts +0 -50
  489. package/dist/src/ruvector/model-prices.js +0 -72
  490. package/dist/src/ruvector/model-router.d.ts +0 -408
  491. package/dist/src/ruvector/model-router.js +0 -1162
  492. package/dist/src/ruvector/neural-router.d.ts +0 -182
  493. package/dist/src/ruvector/neural-router.js +0 -825
  494. package/dist/src/ruvector/output-verifier.d.ts +0 -83
  495. package/dist/src/ruvector/output-verifier.js +0 -277
  496. package/dist/src/ruvector/q-learning-router.d.ts +0 -227
  497. package/dist/src/ruvector/q-learning-router.js +0 -721
  498. package/dist/src/ruvector/router-calibrator.d.ts +0 -65
  499. package/dist/src/ruvector/router-calibrator.js +0 -120
  500. package/dist/src/ruvector/router-parallel-recorder.d.ts +0 -127
  501. package/dist/src/ruvector/router-parallel-recorder.js +0 -183
  502. package/dist/src/ruvector/router-trajectory.d.ts +0 -194
  503. package/dist/src/ruvector/router-trajectory.js +0 -281
  504. package/dist/src/ruvector/run-transcript-recorder.d.ts +0 -154
  505. package/dist/src/ruvector/run-transcript-recorder.js +0 -209
  506. package/dist/src/ruvector/ruvllm-wasm.d.ts +0 -179
  507. package/dist/src/ruvector/ruvllm-wasm.js +0 -379
  508. package/dist/src/ruvector/semantic-router.d.ts +0 -77
  509. package/dist/src/ruvector/semantic-router.js +0 -178
  510. package/dist/src/ruvector/task-embedder.d.ts +0 -56
  511. package/dist/src/ruvector/task-embedder.js +0 -237
  512. package/dist/src/ruvector/trajectory-tree.d.ts +0 -113
  513. package/dist/src/ruvector/trajectory-tree.js +0 -237
  514. package/dist/src/ruvector/vector-db.d.ts +0 -73
  515. package/dist/src/ruvector/vector-db.js +0 -301
  516. package/dist/src/ruvector/wasm-embedder.d.ts +0 -13
  517. package/dist/src/ruvector/wasm-embedder.js +0 -143
  518. package/dist/src/security/builtin-aidefence.d.ts +0 -34
  519. package/dist/src/security/builtin-aidefence.js +0 -86
  520. package/dist/src/services/agentic-flow-bridge.d.ts +0 -50
  521. package/dist/src/services/agentic-flow-bridge.js +0 -95
  522. package/dist/src/services/ai-job-dedup.d.ts +0 -61
  523. package/dist/src/services/ai-job-dedup.js +0 -136
  524. package/dist/src/services/checkpoint-gate.d.ts +0 -140
  525. package/dist/src/services/checkpoint-gate.js +0 -223
  526. package/dist/src/services/claim-service.d.ts +0 -204
  527. package/dist/src/services/claim-service.js +0 -818
  528. package/dist/src/services/config-file-manager.d.ts +0 -37
  529. package/dist/src/services/config-file-manager.js +0 -224
  530. package/dist/src/services/container-worker-pool.d.ts +0 -204
  531. package/dist/src/services/container-worker-pool.js +0 -589
  532. package/dist/src/services/daemon-autostart.d.ts +0 -17
  533. package/dist/src/services/daemon-autostart.js +0 -102
  534. package/dist/src/services/distill-oracle.d.ts +0 -190
  535. package/dist/src/services/distill-oracle.js +0 -349
  536. package/dist/src/services/distill-tuning.d.ts +0 -111
  537. package/dist/src/services/distill-tuning.js +0 -510
  538. package/dist/src/services/evolve-proof.d.ts +0 -253
  539. package/dist/src/services/evolve-proof.js +0 -343
  540. package/dist/src/services/fable-harness.d.ts +0 -208
  541. package/dist/src/services/fable-harness.js +0 -388
  542. package/dist/src/services/git-workspace-identity.d.ts +0 -42
  543. package/dist/src/services/git-workspace-identity.js +0 -99
  544. package/dist/src/services/global-ai-budget.d.ts +0 -135
  545. package/dist/src/services/global-ai-budget.js +0 -415
  546. package/dist/src/services/harness-benchmark.d.ts +0 -68
  547. package/dist/src/services/harness-benchmark.js +0 -94
  548. package/dist/src/services/harness-canary.d.ts +0 -60
  549. package/dist/src/services/harness-canary.js +0 -69
  550. package/dist/src/services/harness-corpus-harvester.d.ts +0 -51
  551. package/dist/src/services/harness-corpus-harvester.js +0 -74
  552. package/dist/src/services/harness-flywheel-generations.d.ts +0 -115
  553. package/dist/src/services/harness-flywheel-generations.js +0 -360
  554. package/dist/src/services/harness-flywheel-runtime.d.ts +0 -25
  555. package/dist/src/services/harness-flywheel-runtime.js +0 -92
  556. package/dist/src/services/harness-flywheel.d.ts +0 -48
  557. package/dist/src/services/harness-flywheel.js +0 -207
  558. package/dist/src/services/harness-frozen-eval.d.ts +0 -22
  559. package/dist/src/services/harness-frozen-eval.js +0 -66
  560. package/dist/src/services/harness-hosts.d.ts +0 -40
  561. package/dist/src/services/harness-hosts.js +0 -88
  562. package/dist/src/services/harness-improvement-ledger.d.ts +0 -63
  563. package/dist/src/services/harness-improvement-ledger.js +0 -101
  564. package/dist/src/services/harness-loop.d.ts +0 -53
  565. package/dist/src/services/harness-loop.js +0 -85
  566. package/dist/src/services/harness-qualification.d.ts +0 -66
  567. package/dist/src/services/harness-qualification.js +0 -143
  568. package/dist/src/services/harness-replay.d.ts +0 -37
  569. package/dist/src/services/harness-replay.js +0 -92
  570. package/dist/src/services/harness-verify.d.ts +0 -33
  571. package/dist/src/services/harness-verify.js +0 -26
  572. package/dist/src/services/harness-worker.d.ts +0 -23
  573. package/dist/src/services/harness-worker.js +0 -66
  574. package/dist/src/services/headless-worker-executor.d.ts +0 -358
  575. package/dist/src/services/headless-worker-executor.js +0 -1269
  576. package/dist/src/services/index.d.ts +0 -13
  577. package/dist/src/services/index.js +0 -11
  578. package/dist/src/services/memory-backup.d.ts +0 -53
  579. package/dist/src/services/memory-backup.js +0 -198
  580. package/dist/src/services/memory-distillation.d.ts +0 -41
  581. package/dist/src/services/memory-distillation.js +0 -277
  582. package/dist/src/services/native-training.d.ts +0 -68
  583. package/dist/src/services/native-training.js +0 -141
  584. package/dist/src/services/registry-api.d.ts +0 -58
  585. package/dist/src/services/registry-api.js +0 -146
  586. package/dist/src/services/repo-supervisor.d.ts +0 -70
  587. package/dist/src/services/repo-supervisor.js +0 -228
  588. package/dist/src/services/ruvector-training.d.ts +0 -222
  589. package/dist/src/services/ruvector-training.js +0 -693
  590. package/dist/src/services/swarm-memory-branches.d.ts +0 -135
  591. package/dist/src/services/swarm-memory-branches.js +0 -213
  592. package/dist/src/services/weight-eft.d.ts +0 -305
  593. package/dist/src/services/weight-eft.js +0 -296
  594. package/dist/src/services/worker-daemon.d.ts +0 -439
  595. package/dist/src/services/worker-daemon.js +0 -1865
  596. package/dist/src/services/worker-queue.d.ts +0 -194
  597. package/dist/src/services/worker-queue.js +0 -513
  598. package/dist/src/services/workspace-lease.d.ts +0 -55
  599. package/dist/src/services/workspace-lease.js +0 -191
  600. package/dist/src/suggest.d.ts +0 -53
  601. package/dist/src/suggest.js +0 -200
  602. package/dist/src/transfer/anonymization/index.d.ts +0 -25
  603. package/dist/src/transfer/anonymization/index.js +0 -175
  604. package/dist/src/transfer/deploy-seraphine.d.ts +0 -13
  605. package/dist/src/transfer/deploy-seraphine.js +0 -205
  606. package/dist/src/transfer/export.d.ts +0 -25
  607. package/dist/src/transfer/export.js +0 -113
  608. package/dist/src/transfer/index.d.ts +0 -12
  609. package/dist/src/transfer/index.js +0 -31
  610. package/dist/src/transfer/ipfs/client.d.ts +0 -109
  611. package/dist/src/transfer/ipfs/client.js +0 -307
  612. package/dist/src/transfer/ipfs/upload.d.ts +0 -95
  613. package/dist/src/transfer/ipfs/upload.js +0 -413
  614. package/dist/src/transfer/models/seraphine.d.ts +0 -72
  615. package/dist/src/transfer/models/seraphine.js +0 -373
  616. package/dist/src/transfer/serialization/cfp.d.ts +0 -49
  617. package/dist/src/transfer/serialization/cfp.js +0 -183
  618. package/dist/src/transfer/storage/gcs.d.ts +0 -82
  619. package/dist/src/transfer/storage/gcs.js +0 -272
  620. package/dist/src/transfer/storage/index.d.ts +0 -6
  621. package/dist/src/transfer/storage/index.js +0 -6
  622. package/dist/src/transfer/store/discovery.d.ts +0 -84
  623. package/dist/src/transfer/store/discovery.js +0 -382
  624. package/dist/src/transfer/store/download.d.ts +0 -70
  625. package/dist/src/transfer/store/download.js +0 -334
  626. package/dist/src/transfer/store/index.d.ts +0 -84
  627. package/dist/src/transfer/store/index.js +0 -153
  628. package/dist/src/transfer/store/publish.d.ts +0 -76
  629. package/dist/src/transfer/store/publish.js +0 -294
  630. package/dist/src/transfer/store/registry.d.ts +0 -58
  631. package/dist/src/transfer/store/registry.js +0 -285
  632. package/dist/src/transfer/store/search.d.ts +0 -54
  633. package/dist/src/transfer/store/search.js +0 -232
  634. package/dist/src/transfer/store/tests/standalone-test.d.ts +0 -12
  635. package/dist/src/transfer/store/tests/standalone-test.js +0 -190
  636. package/dist/src/transfer/store/types.d.ts +0 -193
  637. package/dist/src/transfer/store/types.js +0 -6
  638. package/dist/src/transfer/test-seraphine.d.ts +0 -6
  639. package/dist/src/transfer/test-seraphine.js +0 -105
  640. package/dist/src/transfer/tests/test-store.d.ts +0 -7
  641. package/dist/src/transfer/tests/test-store.js +0 -214
  642. package/dist/src/transfer/types.d.ts +0 -245
  643. package/dist/src/transfer/types.js +0 -6
  644. package/dist/src/types.d.ts +0 -13
  645. package/dist/src/types.js +0 -13
  646. package/dist/src/update/checker.d.ts +0 -34
  647. package/dist/src/update/checker.js +0 -191
  648. package/dist/src/update/executor.d.ts +0 -33
  649. package/dist/src/update/executor.js +0 -217
  650. package/dist/src/update/index.d.ts +0 -33
  651. package/dist/src/update/index.js +0 -64
  652. package/dist/src/update/rate-limiter.d.ts +0 -20
  653. package/dist/src/update/rate-limiter.js +0 -96
  654. package/dist/src/update/validator.d.ts +0 -17
  655. package/dist/src/update/validator.js +0 -123
@@ -1,1297 +0,0 @@
1
- /**
2
- * V3 CLI Init Command
3
- * Comprehensive initialization for Claude Flow with Claude Code integration
4
- */
5
- import { output } from '../output.js';
6
- import { confirm, select, multiSelect, input } from '../prompt.js';
7
- import * as fs from 'fs';
8
- import * as path from 'path';
9
- import { spawnSync } from 'node:child_process';
10
- import { executeInit, executeUpgrade, executeUpgradeWithMissing, DEFAULT_INIT_OPTIONS, MINIMAL_INIT_OPTIONS, FULL_INIT_OPTIONS, } from '../init/index.js';
11
- import { ENROLLMENT_SCREEN, recordEnrollmentOutcome, shouldOfferEnrollment, } from '../funnel/enrollment.js';
12
- import { commandExists } from '../services/harness-hosts.js';
13
- /**
14
- * ADR-302 post-init capability enrollment. One-time, interactive-TTY-only,
15
- * skippable with --no-signup, auto-skipped in CI/automation. Never throws
16
- * and never affects init's exit code. Accepting records the `account`
17
- * consent receipt only — no other capability is enabled by this prompt.
18
- */
19
- async function offerCapabilityEnrollment(ctx) {
20
- try {
21
- const noSignup = Boolean(ctx.flags['no-signup'] || ctx.flags.noSignup);
22
- if (ctx.flags.format === 'json')
23
- return; // scripted output stays pure
24
- if (!shouldOfferEnrollment({ noSignup, cwd: ctx.cwd }))
25
- return;
26
- output.writeln();
27
- output.writeln(ENROLLMENT_SCREEN);
28
- output.writeln();
29
- const accepted = await confirm({
30
- message: 'Create a free Cognitum account now?',
31
- default: false,
32
- });
33
- recordEnrollmentOutcome(Boolean(accepted));
34
- output.writeln();
35
- if (accepted) {
36
- output.printInfo('Create your free account at https://cognitum.one');
37
- output.writeln(output.dim(' CLI sign-in (`ruflo auth login`) ships with the ADR-306 auth release.'));
38
- }
39
- else {
40
- output.writeln(output.dim('You can enable later at https://cognitum.one — this prompt will not repeat.'));
41
- }
42
- }
43
- catch {
44
- // Enrollment is optional; init success is never affected.
45
- }
46
- }
47
- async function resolveCodexInitializer(cwd) {
48
- // Use a variable to prevent TypeScript from statically resolving the optional module
49
- const codexModuleId = '@claude-flow/codex';
50
- const resolutionStrategies = [
51
- // Strategy 1: Direct import (works if installed as CLI dependency)
52
- async () => (await import(codexModuleId)).CodexInitializer,
53
- // Strategy 2: Project node_modules (works if installed in user's project)
54
- async () => {
55
- const projectPath = path.join(cwd, 'node_modules', '@claude-flow', 'codex', 'dist', 'index.js');
56
- if (fs.existsSync(projectPath)) {
57
- const mod = await import(`file://${projectPath}`);
58
- return mod.CodexInitializer;
59
- }
60
- throw new Error('Not found in project');
61
- },
62
- // Strategy 3: Global node_modules
63
- async () => {
64
- const { execSync } = await import('child_process');
65
- const globalPath = execSync('npm root -g', { encoding: 'utf-8' }).trim();
66
- const codexPath = path.join(globalPath, '@claude-flow', 'codex', 'dist', 'index.js');
67
- if (fs.existsSync(codexPath)) {
68
- const mod = await import(`file://${codexPath}`);
69
- return mod.CodexInitializer;
70
- }
71
- throw new Error('Not found globally');
72
- },
73
- ];
74
- for (const strategy of resolutionStrategies) {
75
- try {
76
- const ctor = await strategy();
77
- if (ctor)
78
- return ctor;
79
- }
80
- catch {
81
- // Try next strategy
82
- }
83
- }
84
- return undefined;
85
- }
86
- // Keep Codex out of the CLI dependency graph so cold `npx ruflo --version`
87
- // remains fast (#2561). An explicit `init --codex` may fetch the small,
88
- // stable adapter on demand when it is not already installed by an umbrella
89
- // package, the current project, or the global npm prefix.
90
- export function runCodexInitializerCli(cwd, options) {
91
- const npxArgs = [
92
- '-y',
93
- '@claude-flow/codex@latest',
94
- 'init',
95
- '--template',
96
- options.template,
97
- ...(options.force ? ['--force'] : []),
98
- ...(options.dual ? ['--dual'] : []),
99
- ];
100
- const result = process.platform === 'win32'
101
- ? spawnSync(process.env.ComSpec || 'cmd.exe', ['/d', '/s', '/c', ['npx', ...npxArgs].join(' ')], { cwd, stdio: 'inherit', windowsHide: true })
102
- : spawnSync('npx', npxArgs, { cwd, stdio: 'inherit' });
103
- if (result.error)
104
- throw result.error;
105
- return result.status === 0;
106
- }
107
- // #2666-adjacent — quietly wire up Codex too when a plain `ruflo init` (no
108
- // --codex/--dual) runs on a machine that also has the OpenAI Codex CLI on
109
- // PATH: registers its MCP server and installs skills alongside the Claude
110
- // Code setup that just happened. Best-effort and silent-by-default — must
111
- // never fail or noisily interrupt a normal init. Opt out with
112
- // --no-codex-detect. Skipped entirely under --skip-claude (runtime-only
113
- // init) and scripted `--format json` output.
114
- async function maybeAutoDetectCodex(ctx, options) {
115
- try {
116
- if (ctx.flags['no-codex-detect'] === true)
117
- return;
118
- if (ctx.flags.format === 'json')
119
- return; // scripted output stays pure
120
- if (!commandExists('codex'))
121
- return;
122
- const CodexInitializer = await resolveCodexInitializer(ctx.cwd);
123
- if (!CodexInitializer) {
124
- output.writeln();
125
- output.printInfo('Detected the OpenAI Codex CLI — install @claude-flow/codex to auto-configure its MCP server and skills:');
126
- output.writeln(output.dim(' npm install @claude-flow/codex && ruflo init --codex'));
127
- return;
128
- }
129
- const initializer = new CodexInitializer();
130
- const result = await initializer.initialize({
131
- projectPath: ctx.cwd,
132
- template: (options.minimal ? 'minimal' : options.full ? 'full' : 'default'),
133
- force: options.force,
134
- dual: false, // Claude Code files were already written by the main init flow above
135
- });
136
- if (!result.success)
137
- return; // best-effort — never fail the primary init over this
138
- output.writeln();
139
- output.printBox([
140
- `AGENTS.md: Codex project instructions`,
141
- `.agents/config.toml: MCP server + skills config`,
142
- `.agents/skills/: ${result.skillsGenerated.length} skills`,
143
- ].join('\n'), 'OpenAI Codex detected — configured');
144
- }
145
- catch {
146
- // Codex auto-detect is a bonus, never a requirement — swallow everything.
147
- }
148
- }
149
- // Cross-agent skill registration via skills.sh. Runs `npx --yes skills add
150
- // ruvnet/ruflo --skill ruflo --yes` so the *single* canonical ruflo skill
151
- // (SKILL.md at the ruvnet/ruflo repo root — describes the platform + entry
152
- // points) reaches whatever agent the project uses (Claude Code, Cursor,
153
- // Copilot, Gemini, Cline, …). Users who want ALL 267 plugin-specific skills
154
- // can run `npx skills add ruvnet/ruflo --all` themselves. Best-effort — never
155
- // fails init. Opt-out: --no-skills-sh flag OR RUFLO_NO_SKILLS_SH=1. Skipped
156
- // under --skip-claude and scripted `--format json` output.
157
- //
158
- // windowsHide silences the console flash the npx child would otherwise produce
159
- // (anthropics/claude-code#14828 spawn hazard applies to hook-fired spawns,
160
- // but our own subprocess spawns should always set this).
161
- async function maybeInstallSkillsSh(ctx) {
162
- try {
163
- if (ctx.flags['no-skills-sh'] === true)
164
- return;
165
- if (ctx.flags.format === 'json')
166
- return;
167
- if (/^(1|true|on|yes)$/i.test(String(process.env.RUFLO_NO_SKILLS_SH || '')))
168
- return;
169
- // Idempotency gate: if this project has already registered ruflo with
170
- // skills.sh, don't re-clone the repo + re-fire a fresh install telemetry
171
- // event on every `ruflo init --force` / `init upgrade` / etc. Each install
172
- // pings skills.sh's leaderboard AND clones the whole ruvnet/ruflo repo
173
- // (~50MB) — re-running per-init would silently inflate our own metrics
174
- // (GitHub unique-cloners, skills.sh rank) and waste user bandwidth. This
175
- // check makes the registration once-per-project, matching the intent.
176
- const nodePath = await import('path');
177
- const nodeFs = await import('fs');
178
- const marker = nodePath.join(ctx.cwd, '.agents', 'skills', 'ruflo');
179
- if (nodeFs.existsSync(marker)) {
180
- output.writeln();
181
- output.writeln(output.dim(' skills.sh registration already present at .agents/skills/ruflo — skipping'));
182
- return;
183
- }
184
- const npxCmd = process.platform === 'win32' ? 'npx.cmd' : 'npx';
185
- if (!commandExists('npx'))
186
- return;
187
- output.writeln();
188
- output.printInfo('Registering the core `ruflo` skill with skills.sh (cross-agent catalog)…');
189
- const { spawnSync } = await import('child_process');
190
- const result = spawnSync(npxCmd, ['--yes', 'skills', 'add', 'ruvnet/ruflo', '--skill', 'ruflo', '--yes'], { cwd: ctx.cwd, stdio: 'pipe', timeout: 60_000, windowsHide: true, encoding: 'utf-8' });
191
- if (result.status === 0) {
192
- output.writeln(output.success(' ✓ ruflo registered via skills.sh — the platform skill is available to any agent in this project'));
193
- output.writeln(output.dim(' Want all 267 plugin skills? npx skills add ruvnet/ruflo --all'));
194
- output.writeln(output.dim(' Opt out next time: --no-skills-sh or RUFLO_NO_SKILLS_SH=1'));
195
- }
196
- else {
197
- // Common non-fatal reasons: offline, npx cache miss, skills CLI version
198
- // mismatch, unknown package. Log a soft note; users can retry manually.
199
- output.writeln(output.dim(' skills.sh registration skipped (network or npx cache) — retry with: npx skills add ruvnet/ruflo --skill ruflo --yes'));
200
- }
201
- }
202
- catch {
203
- // Skills.sh registration is a bonus, never a requirement — swallow everything.
204
- }
205
- }
206
- // Codex initialization action
207
- async function initCodexAction(ctx, options) {
208
- const { force, minimal, full, dualMode } = options;
209
- output.writeln();
210
- output.writeln(output.bold('Initializing RuFlo V3 for OpenAI Codex'));
211
- output.writeln();
212
- // Determine template
213
- const template = minimal ? 'minimal' : full ? 'full' : 'default';
214
- const spinner = output.createSpinner({ text: 'Initializing Codex project...' });
215
- spinner.start();
216
- try {
217
- const CodexInitializer = await resolveCodexInitializer(ctx.cwd);
218
- if (!CodexInitializer) {
219
- spinner.stop();
220
- output.printInfo('Fetching the stable Codex adapter for this initialization...');
221
- const success = runCodexInitializerCli(ctx.cwd, { template, force, dual: dualMode });
222
- if (!success) {
223
- output.printError('Codex initialization failed while running @claude-flow/codex@latest.');
224
- return { success: false, exitCode: 1 };
225
- }
226
- return { success: true, data: { adapter: '@claude-flow/codex@latest' } };
227
- }
228
- const initializer = new CodexInitializer();
229
- const result = await initializer.initialize({
230
- projectPath: ctx.cwd,
231
- template: template,
232
- force,
233
- dual: dualMode,
234
- });
235
- if (!result.success) {
236
- spinner.fail('Codex initialization failed');
237
- if (result.errors) {
238
- for (const error of result.errors) {
239
- output.printError(error);
240
- }
241
- }
242
- return { success: false, exitCode: 1 };
243
- }
244
- spinner.succeed('Codex project initialized successfully!');
245
- output.writeln();
246
- // Display summary
247
- const summary = [];
248
- summary.push(`Files: ${result.filesCreated.length} created`);
249
- summary.push(`Skills: ${result.skillsGenerated.length} installed`);
250
- output.printBox(summary.join('\n'), 'Summary');
251
- output.writeln();
252
- // Show what was created
253
- output.printBox([
254
- `AGENTS.md: Main project instructions`,
255
- `.agents/config.toml: Project configuration`,
256
- `.agents/skills/: ${result.skillsGenerated.length} skills`,
257
- `.codex/: Local overrides (gitignored)`,
258
- dualMode ? `CLAUDE.md: Claude Code compatibility` : '',
259
- ].filter(Boolean).join('\n'), 'OpenAI Codex Integration');
260
- output.writeln();
261
- // Warnings
262
- if (result.warnings && result.warnings.length > 0) {
263
- output.printWarning('Warnings:');
264
- for (const warning of result.warnings.slice(0, 5)) {
265
- output.printInfo(` • ${warning}`);
266
- }
267
- if (result.warnings.length > 5) {
268
- output.printInfo(` ... and ${result.warnings.length - 5} more`);
269
- }
270
- output.writeln();
271
- }
272
- // Next steps
273
- output.writeln(output.bold('Next steps:'));
274
- output.printList([
275
- `Review ${output.highlight('AGENTS.md')} for project instructions`,
276
- `Add skills with ${output.highlight('$skill-name')} syntax`,
277
- `Configure ${output.highlight('.agents/config.toml')} for your project`,
278
- dualMode ? `Claude Code users can use ${output.highlight('CLAUDE.md')}` : '',
279
- ].filter(Boolean));
280
- return { success: true, data: result };
281
- }
282
- catch (error) {
283
- spinner.fail('Codex initialization failed');
284
- const errorMessage = error instanceof Error ? error.message : String(error);
285
- // Handle module not found error gracefully
286
- if (errorMessage.includes('Cannot find module') || errorMessage.includes('@claude-flow/codex')) {
287
- output.printError('The @claude-flow/codex package is not installed.');
288
- output.printInfo('Install it with: npm install @claude-flow/codex');
289
- output.writeln();
290
- output.printInfo('Alternatively, copy skills manually from .claude/skills/ to .agents/skills/');
291
- }
292
- else {
293
- output.printError(`Failed to initialize: ${errorMessage}`);
294
- }
295
- return { success: false, exitCode: 1 };
296
- }
297
- }
298
- // Check if project is already initialized with ruflo.
299
- // #2207: .claude/settings.json alone is NOT a ruflo marker — it's created by
300
- // Claude Code itself and exists in every Claude Code project. We require a
301
- // ruflo-specific signal: either a claudeFlow section in settings.json, OR a
302
- // .mcp.json with a 'claude-flow' or 'ruflo' server key, OR the ruflo-only
303
- // .claude-flow/config.yaml. Using the bare file-existence check was causing
304
- // false-positives for new users whose only existing file was Claude Code's own
305
- // settings.json.
306
- function isInitialized(cwd) {
307
- const claudeFlowPath = path.join(cwd, '.claude-flow', 'config.yaml');
308
- const mcpJsonPath = path.join(cwd, '.mcp.json');
309
- const settingsPath = path.join(cwd, '.claude', 'settings.json');
310
- // Check .claude-flow/config.yaml — ruflo-specific, always reliable
311
- const hasClaudeFlow = fs.existsSync(claudeFlowPath);
312
- // Check .claude/settings.json for ruflo-specific content (claudeFlow section)
313
- let hasRufloSettings = false;
314
- if (fs.existsSync(settingsPath)) {
315
- try {
316
- const parsed = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
317
- hasRufloSettings =
318
- parsed != null &&
319
- typeof parsed === 'object' &&
320
- 'claudeFlow' in parsed;
321
- }
322
- catch { /* malformed — ignore */ }
323
- }
324
- // Check .mcp.json for ruflo/claude-flow server key
325
- let hasRufloMcp = false;
326
- if (fs.existsSync(mcpJsonPath)) {
327
- try {
328
- const parsed = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));
329
- hasRufloMcp =
330
- parsed != null &&
331
- typeof parsed === 'object' &&
332
- parsed.mcpServers != null &&
333
- typeof parsed.mcpServers === 'object' &&
334
- ('claude-flow' in parsed.mcpServers ||
335
- 'ruflo' in parsed.mcpServers);
336
- }
337
- catch { /* malformed — ignore */ }
338
- }
339
- return {
340
- claude: hasRufloSettings || hasRufloMcp,
341
- claudeFlow: hasClaudeFlow,
342
- };
343
- }
344
- // Init subcommand (default)
345
- const initAction = async (ctx) => {
346
- const force = ctx.flags.force;
347
- const minimal = ctx.flags.minimal;
348
- const full = ctx.flags.full;
349
- const skipClaude = ctx.flags['skip-claude'];
350
- const onlyClaude = ctx.flags['only-claude'];
351
- // #2098A — the parser handles `--no-foo` by stripping the prefix and
352
- // storing `flags.foo = false` (parser.ts:291-294), not by storing
353
- // `flags['no-foo'] = true`. So `--no-global` lands as
354
- // `ctx.flags.global === false`. The old read of `flags['no-global']`
355
- // was always undefined and silently no-op'd — every user with the flag
356
- // set still got `~/.claude/CLAUDE.md` modified. Read the real key.
357
- const noGlobal = ctx.flags['no-global'] === true || ctx.flags['global'] === false;
358
- const allAgents = ctx.flags['all-agents'];
359
- const cloudMcp = ctx.flags['cloud-mcp'];
360
- const codexMode = ctx.flags.codex;
361
- const dualMode = ctx.flags.dual;
362
- const cwd = ctx.cwd;
363
- // If codex mode, use the Codex initializer
364
- if (codexMode || dualMode) {
365
- return initCodexAction(ctx, { codexMode, dualMode, force, minimal, full });
366
- }
367
- // Check if already initialized
368
- const initialized = isInitialized(cwd);
369
- const hasExisting = initialized.claude || initialized.claudeFlow;
370
- if (hasExisting && !force) {
371
- output.printWarning('RuFlo appears to be already initialized');
372
- if (initialized.claude)
373
- output.printInfo(' Found: .claude/settings.json');
374
- if (initialized.claudeFlow)
375
- output.printInfo(' Found: .claude-flow/config.yaml');
376
- output.printInfo('Use --force to reinitialize');
377
- if (ctx.interactive) {
378
- const proceed = await confirm({
379
- message: 'Do you want to reinitialize? This will overwrite existing configuration.',
380
- default: false,
381
- });
382
- if (!proceed) {
383
- return { success: true, message: 'Initialization cancelled' };
384
- }
385
- }
386
- else {
387
- return { success: false, exitCode: 1, message: 'Already initialized' };
388
- }
389
- }
390
- output.writeln();
391
- output.writeln(output.bold('Initializing RuFlo V3'));
392
- output.writeln();
393
- // Build init options based on flags
394
- let options;
395
- if (minimal) {
396
- options = { ...MINIMAL_INIT_OPTIONS, targetDir: cwd, force };
397
- }
398
- else if (full) {
399
- options = { ...FULL_INIT_OPTIONS, targetDir: cwd, force };
400
- // #2356: keep auth-gated cloud MCP servers opt-in even under --full. They
401
- // require a login, get committed into .mcp.json, and add per-session MCP
402
- // tool-definition token cost. --cloud-mcp restores the all-three behavior.
403
- if (!cloudMcp) {
404
- options.mcp = { ...options.mcp, ruvSwarm: false, flowNexus: false };
405
- }
406
- }
407
- else {
408
- options = { ...DEFAULT_INIT_OPTIONS, targetDir: cwd, force };
409
- }
410
- // Handle --skip-claude and --only-claude flags
411
- if (skipClaude) {
412
- options.components.settings = false;
413
- options.components.skills = false;
414
- options.components.commands = false;
415
- options.components.agents = false;
416
- options.components.helpers = false;
417
- options.components.statusline = false;
418
- options.components.mcp = false;
419
- options.components.claudeMd = false;
420
- }
421
- if (onlyClaude) {
422
- options.components.runtime = false;
423
- }
424
- // ADR-128 Phase 3 — restore full agent set (98 agents) when user explicitly
425
- // requests it. Default is the ~24-agent substrate (core, consensus, swarm,
426
- // sparc, testing). Pass --all-agents to get the old behavior.
427
- if (allAgents) {
428
- options.agents.all = true;
429
- }
430
- // #1744 — opt-out of the user-global ~/.claude/CLAUDE.md "Ruflo Integration"
431
- // pointer block. Default behavior (off) preserves current install for users
432
- // who rely on it; opting in via --no-global keeps the global file pristine.
433
- if (noGlobal) {
434
- options.skipGlobalClaudeMd = true;
435
- }
436
- // Create spinner
437
- const spinner = output.createSpinner({ text: 'Initializing...' });
438
- spinner.start();
439
- try {
440
- // Execute initialization
441
- const result = await executeInit(options);
442
- if (!result.success) {
443
- spinner.fail('Initialization failed');
444
- for (const error of result.errors) {
445
- output.printError(error);
446
- }
447
- return { success: false, exitCode: 1 };
448
- }
449
- spinner.succeed('RuFlo V3 initialized successfully!');
450
- output.writeln();
451
- // Display summary
452
- const summary = [];
453
- if (result.created.directories.length > 0) {
454
- summary.push(`Directories: ${result.created.directories.length} created`);
455
- }
456
- if (result.created.files.length > 0) {
457
- summary.push(`Files: ${result.created.files.length} created`);
458
- }
459
- if (result.skipped.length > 0) {
460
- summary.push(`Skipped: ${result.skipped.length} (already exist)`);
461
- }
462
- output.printBox(summary.join('\n'), 'Summary');
463
- output.writeln();
464
- // Show what was created
465
- if (options.components.claudeMd || options.components.settings || options.components.skills || options.components.commands || options.components.agents) {
466
- output.printBox([
467
- options.components.claudeMd ? `CLAUDE.md: Swarm guidance & configuration` : '',
468
- options.components.settings ? `Settings: .claude/settings.json` : '',
469
- options.components.skills ? `Skills: .claude/skills/ (${result.summary.skillsCount} skills)` : '',
470
- options.components.commands ? `Commands: .claude/commands/ (${result.summary.commandsCount} commands)` : '',
471
- options.components.agents ? `Agents: .claude/agents/ (${result.summary.agentsCount} agents)` : '',
472
- options.components.helpers ? `Helpers: .claude/helpers/` : '',
473
- options.components.mcp ? `MCP: .mcp.json` : '',
474
- ].filter(Boolean).join('\n'), 'Claude Code Integration');
475
- output.writeln();
476
- }
477
- if (options.components.runtime) {
478
- output.printBox([
479
- `Config: .claude-flow/config.yaml`,
480
- `Data: .claude-flow/data/`,
481
- `Logs: .claude-flow/logs/`,
482
- `Sessions: .claude-flow/sessions/`,
483
- ].join('\n'), 'V3 Runtime');
484
- output.writeln();
485
- }
486
- // Hooks summary
487
- if (result.summary.hooksEnabled > 0) {
488
- output.printInfo(`Hooks: ${result.summary.hooksEnabled} hook types enabled in settings.json`);
489
- output.writeln();
490
- }
491
- // #2666-adjacent — auto-detect + configure OpenAI Codex CLI if present
492
- if (!skipClaude) {
493
- await maybeAutoDetectCodex(ctx, { force, minimal, full });
494
- await maybeInstallSkillsSh(ctx);
495
- }
496
- // Handle --start-all or --start-daemon
497
- const startAll = ctx.flags['start-all'] || ctx.flags.startAll;
498
- const startDaemon = ctx.flags['start-daemon'] || ctx.flags.startDaemon || startAll;
499
- if (startDaemon || startAll) {
500
- output.writeln();
501
- output.printInfo('Starting services...');
502
- const { execSync } = await import('child_process');
503
- // Initialize memory database
504
- if (startAll) {
505
- try {
506
- output.writeln(output.dim(' Initializing memory database...'));
507
- execSync('npx @claude-flow/cli@latest memory init 2>/dev/null', {
508
- stdio: 'pipe',
509
- cwd: ctx.cwd,
510
- timeout: 30000
511
- });
512
- output.writeln(output.success(' ✓ Memory initialized'));
513
- }
514
- catch {
515
- output.writeln(output.dim(' Memory database already exists'));
516
- }
517
- }
518
- // Start daemon — #2407 fix
519
- //
520
- // The previous version used `daemon start ... &` (shell background)
521
- // which made execSync return as soon as the shell forked, BEFORE the
522
- // daemon process wrote its PID file. Concurrent init runs
523
- // (devcontainer setup + VS Code task + MCP hook firing within ~500 ms)
524
- // all saw an empty PID file via getBackgroundDaemonPid(), so
525
- // daemon.ts:99-103's dedup short-circuit didn't fire — every caller
526
- // spawned its own daemon. One incident accumulated 39 zombie daemons
527
- // holding ~8.5 GiB resident, which together with macOS compressor
528
- // pressure (27 GiB compressed) caused the configd watchdog timeout
529
- // and the 2026-06-15 21:06 kernel panic.
530
- //
531
- // Fix: drop the shell `&`. `daemon start` (default non-foreground
532
- // mode) already forks its own detached background process via
533
- // startBackgroundDaemon() AND writes the PID file BEFORE returning,
534
- // so execSync without `&` waits for the dedup-relevant PID-file
535
- // write but does NOT wait for the daemon itself to exit. Timeout
536
- // bumped to 30s for npx cold-cache scenarios.
537
- if (startDaemon) {
538
- try {
539
- output.writeln(output.dim(' Starting daemon...'));
540
- execSync('npx @claude-flow/cli@latest daemon start 2>/dev/null', {
541
- stdio: 'pipe',
542
- cwd: ctx.cwd,
543
- timeout: 30000
544
- });
545
- output.writeln(output.success(' ✓ Daemon started'));
546
- }
547
- catch {
548
- // Daemon dedup hit (already running) OR spawn timed out.
549
- // Either way the worst case is a single retry on next init,
550
- // not a forked race producing N zombies.
551
- output.writeln(output.warning(' Daemon may already be running'));
552
- }
553
- }
554
- // Initialize swarm
555
- if (startAll) {
556
- try {
557
- output.writeln(output.dim(' Initializing swarm...'));
558
- execSync('npx @claude-flow/cli@latest swarm init --topology hierarchical 2>/dev/null', {
559
- stdio: 'pipe',
560
- cwd: ctx.cwd,
561
- timeout: 30000
562
- });
563
- output.writeln(output.success(' ✓ Swarm initialized'));
564
- }
565
- catch {
566
- output.writeln(output.dim(' Swarm initialization skipped'));
567
- }
568
- }
569
- output.writeln();
570
- output.printSuccess('All services started');
571
- }
572
- // Handle --with-embeddings
573
- const withEmbeddings = ctx.flags['with-embeddings'] || ctx.flags.withEmbeddings;
574
- const embeddingModel = (ctx.flags['embedding-model'] || ctx.flags.embeddingModel || 'Xenova/all-MiniLM-L6-v2');
575
- if (withEmbeddings) {
576
- output.writeln();
577
- output.printInfo('Initializing ONNX embedding subsystem...');
578
- const { execFileSync: execFileInit } = await import('child_process');
579
- // Validate embeddingModel: must match pattern org/model-name (CRIT-02)
580
- if (!/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9._-]+$/.test(embeddingModel)) {
581
- throw new Error(`Invalid embedding model name: ${embeddingModel}`);
582
- }
583
- try {
584
- output.writeln(output.dim(` Model: ${embeddingModel}`));
585
- output.writeln(output.dim(' Hyperbolic: Enabled (Poincaré ball)'));
586
- execFileInit('npx', [
587
- '@claude-flow/cli@latest', 'embeddings', 'init',
588
- '--model', embeddingModel,
589
- '--no-download', '--force',
590
- ], {
591
- stdio: 'pipe',
592
- cwd: ctx.cwd,
593
- timeout: 30000,
594
- });
595
- output.writeln(output.success(' ✓ Embeddings initialized'));
596
- output.writeln(output.dim(' Run "embeddings init --download" to download model'));
597
- }
598
- catch (err) {
599
- output.writeln(output.warning(' Embedding initialization skipped (run manually)'));
600
- }
601
- }
602
- if (!startDaemon && !startAll) {
603
- const bin = (process.argv[1] || '').includes('ruflo') ? 'ruflo' : 'claude-flow';
604
- output.writeln(output.bold('Next steps:'));
605
- output.printList([
606
- `Run ${output.highlight(`${bin} daemon start`)} to start background workers`,
607
- // Memory is initialized automatically during init (persistent by
608
- // default — see executor.ts) — no separate `memory init` step needed
609
- // unless the DB was skipped (MINIMAL_INIT_OPTIONS) or needs --force.
610
- `Run ${output.highlight(`${bin} swarm init`)} to initialize a swarm`,
611
- `Or use ${output.highlight(`${bin} init --start-all`)} to do all of the above`,
612
- options.components.settings ? `Review ${output.highlight('.claude/settings.json')} for hook configurations` : '',
613
- // ADR-150 — surface the new metaharness scorecard to every new user.
614
- // Optional dep; the command degrades gracefully when not installed.
615
- `Run ${output.highlight(`${bin} metaharness score`)} for a 5-dim harness readiness scorecard (ADR-150)`,
616
- ].filter(Boolean));
617
- }
618
- if (ctx.flags.format === 'json') {
619
- output.printJson(result);
620
- }
621
- await offerCapabilityEnrollment(ctx);
622
- return { success: true, data: result };
623
- }
624
- catch (error) {
625
- spinner.fail('Initialization failed');
626
- output.printError(`Failed to initialize: ${error instanceof Error ? error.message : String(error)}`);
627
- return { success: false, exitCode: 1 };
628
- }
629
- };
630
- // Wizard subcommand for interactive setup
631
- const wizardCommand = {
632
- name: 'wizard',
633
- description: 'Interactive setup wizard for comprehensive configuration',
634
- action: async (ctx) => {
635
- output.writeln();
636
- output.writeln(output.bold('RuFlo V3 Setup Wizard'));
637
- output.writeln(output.dim('Answer questions to configure your project'));
638
- output.writeln();
639
- try {
640
- // Start with base options
641
- const options = { ...DEFAULT_INIT_OPTIONS, targetDir: ctx.cwd };
642
- // Configuration preset
643
- const preset = await select({
644
- message: 'Select configuration preset:',
645
- options: [
646
- { value: 'default', label: 'Default', hint: 'Recommended settings for most projects' },
647
- { value: 'minimal', label: 'Minimal', hint: 'Core features only' },
648
- { value: 'full', label: 'Full', hint: 'All features enabled' },
649
- { value: 'custom', label: 'Custom', hint: 'Choose each component' },
650
- ],
651
- });
652
- if (preset === 'minimal') {
653
- Object.assign(options, MINIMAL_INIT_OPTIONS);
654
- options.targetDir = ctx.cwd;
655
- }
656
- else if (preset === 'full') {
657
- Object.assign(options, FULL_INIT_OPTIONS);
658
- options.targetDir = ctx.cwd;
659
- }
660
- else if (preset === 'custom') {
661
- // Component selection
662
- const components = await multiSelect({
663
- message: 'Select components to initialize:',
664
- options: [
665
- { value: 'claudeMd', label: 'CLAUDE.md', hint: 'Swarm guidance and project configuration', selected: true },
666
- { value: 'settings', label: 'settings.json', hint: 'Claude Code hooks configuration', selected: true },
667
- { value: 'skills', label: 'Skills', hint: 'Claude Code skills in .claude/skills/', selected: true },
668
- { value: 'commands', label: 'Commands', hint: 'Claude Code commands in .claude/commands/', selected: true },
669
- { value: 'agents', label: 'Agents', hint: 'Agent definitions in .claude/agents/', selected: true },
670
- { value: 'helpers', label: 'Helpers', hint: 'Utility scripts in .claude/helpers/', selected: true },
671
- { value: 'statusline', label: 'Statusline', hint: 'Shell statusline integration', selected: false },
672
- { value: 'mcp', label: 'MCP', hint: '.mcp.json for MCP server configuration', selected: true },
673
- { value: 'runtime', label: 'Runtime', hint: '.claude-flow/ directory for V3 runtime', selected: true },
674
- ],
675
- });
676
- options.components.claudeMd = components.includes('claudeMd');
677
- options.components.settings = components.includes('settings');
678
- options.components.skills = components.includes('skills');
679
- options.components.commands = components.includes('commands');
680
- options.components.agents = components.includes('agents');
681
- options.components.helpers = components.includes('helpers');
682
- options.components.statusline = components.includes('statusline');
683
- options.components.mcp = components.includes('mcp');
684
- options.components.runtime = components.includes('runtime');
685
- // Skills selection
686
- if (options.components.skills) {
687
- const skillSets = await multiSelect({
688
- message: 'Select skill sets:',
689
- options: [
690
- { value: 'core', label: 'Core', hint: 'Swarm, memory, SPARC skills', selected: true },
691
- { value: 'agentdb', label: 'AgentDB', hint: 'Vector database skills', selected: true },
692
- { value: 'github', label: 'GitHub', hint: 'GitHub integration skills', selected: true },
693
- { value: 'flowNexus', label: 'Flow Nexus', hint: 'Cloud platform skills', selected: false },
694
- { value: 'v3', label: 'V3', hint: 'V3 implementation skills', selected: true },
695
- ],
696
- });
697
- options.skills.core = skillSets.includes('core');
698
- options.skills.agentdb = skillSets.includes('agentdb');
699
- options.skills.github = skillSets.includes('github');
700
- options.skills.flowNexus = skillSets.includes('flowNexus');
701
- options.skills.v3 = skillSets.includes('v3');
702
- }
703
- // Hooks selection
704
- if (options.components.settings) {
705
- const hooks = await multiSelect({
706
- message: 'Select hooks to enable:',
707
- options: [
708
- { value: 'preToolUse', label: 'PreToolUse', hint: 'Before tool execution', selected: true },
709
- { value: 'postToolUse', label: 'PostToolUse', hint: 'After tool execution', selected: true },
710
- { value: 'userPromptSubmit', label: 'UserPromptSubmit', hint: 'Task routing', selected: true },
711
- { value: 'sessionStart', label: 'SessionStart', hint: 'Session initialization', selected: true },
712
- { value: 'stop', label: 'Stop', hint: 'Task completion evaluation', selected: true },
713
- { value: 'notification', label: 'Notification', hint: 'Swarm notifications', selected: true },
714
- { value: 'permissionRequest', label: 'PermissionRequest', hint: 'Auto-allow claude-flow tools', selected: true },
715
- ],
716
- });
717
- options.hooks.preToolUse = hooks.includes('preToolUse');
718
- options.hooks.postToolUse = hooks.includes('postToolUse');
719
- options.hooks.userPromptSubmit = hooks.includes('userPromptSubmit');
720
- options.hooks.sessionStart = hooks.includes('sessionStart');
721
- options.hooks.stop = hooks.includes('stop');
722
- options.hooks.notification = hooks.includes('notification');
723
- }
724
- }
725
- // Swarm topology (for all presets)
726
- const topology = await select({
727
- message: 'Select swarm topology:',
728
- options: [
729
- { value: 'hierarchical-mesh', label: 'Hierarchical Mesh', hint: 'Best for complex projects (recommended)' },
730
- { value: 'mesh', label: 'Mesh', hint: 'Peer-to-peer coordination' },
731
- { value: 'hierarchical', label: 'Hierarchical', hint: 'Tree-based coordination' },
732
- { value: 'adaptive', label: 'Adaptive', hint: 'Dynamic topology switching' },
733
- ],
734
- });
735
- options.runtime.topology = topology;
736
- // Max agents
737
- const maxAgents = await input({
738
- message: 'Maximum concurrent agents:',
739
- default: String(options.runtime.maxAgents),
740
- validate: (v) => {
741
- const n = parseInt(v);
742
- return (!isNaN(n) && n > 0 && n <= 50) || 'Enter a number between 1 and 50';
743
- },
744
- });
745
- options.runtime.maxAgents = parseInt(maxAgents);
746
- // Memory backend
747
- const memoryBackend = await select({
748
- message: 'Select memory backend:',
749
- options: [
750
- { value: 'hybrid', label: 'Hybrid', hint: 'SQLite + AgentDB (recommended)' },
751
- { value: 'agentdb', label: 'AgentDB', hint: '150x faster vector search' },
752
- { value: 'sqlite', label: 'SQLite', hint: 'Standard SQL storage' },
753
- { value: 'memory', label: 'In-Memory', hint: 'Fast but non-persistent' },
754
- ],
755
- });
756
- options.runtime.memoryBackend = memoryBackend;
757
- // HNSW indexing
758
- if (memoryBackend === 'agentdb' || memoryBackend === 'hybrid') {
759
- const enableHNSW = await confirm({
760
- message: 'Enable HNSW indexing for faster vector search?',
761
- default: true,
762
- });
763
- options.runtime.enableHNSW = enableHNSW;
764
- }
765
- // Neural learning
766
- const enableNeural = await confirm({
767
- message: 'Enable neural pattern learning?',
768
- default: options.runtime.enableNeural,
769
- });
770
- options.runtime.enableNeural = enableNeural;
771
- // ADR-049: Self-Learning Memory capabilities
772
- if (memoryBackend === 'agentdb' || memoryBackend === 'hybrid') {
773
- const enableSelfLearning = await confirm({
774
- message: 'Enable self-learning memory? (LearningBridge + Knowledge Graph + Agent Scopes)',
775
- default: true,
776
- });
777
- options.runtime.enableLearningBridge = enableSelfLearning && enableNeural;
778
- options.runtime.enableMemoryGraph = enableSelfLearning;
779
- options.runtime.enableAgentScopes = enableSelfLearning;
780
- }
781
- else {
782
- options.runtime.enableLearningBridge = false;
783
- options.runtime.enableMemoryGraph = false;
784
- options.runtime.enableAgentScopes = false;
785
- }
786
- // Embeddings configuration
787
- const enableEmbeddings = await confirm({
788
- message: 'Enable ONNX embedding system with hyperbolic support?',
789
- default: true,
790
- });
791
- let embeddingModel = 'Xenova/all-MiniLM-L6-v2';
792
- if (enableEmbeddings) {
793
- embeddingModel = await select({
794
- message: 'Select embedding model:',
795
- options: [
796
- { value: 'Xenova/all-MiniLM-L6-v2', label: 'MiniLM L6 (384d)', hint: 'Fast, good quality (recommended)' },
797
- { value: 'Xenova/all-mpnet-base-v2', label: 'MPNet Base (768d)', hint: 'Higher quality, more memory' },
798
- ],
799
- });
800
- }
801
- // Execute initialization
802
- output.writeln();
803
- const spinner = output.createSpinner({ text: 'Initializing...' });
804
- spinner.start();
805
- const result = await executeInit(options);
806
- if (!result.success) {
807
- spinner.fail('Initialization failed');
808
- for (const error of result.errors) {
809
- output.printError(error);
810
- }
811
- return { success: false, exitCode: 1 };
812
- }
813
- spinner.succeed('Setup complete!');
814
- // Initialize embeddings if enabled
815
- let embeddingsInitialized = false;
816
- if (enableEmbeddings) {
817
- output.writeln();
818
- output.printInfo('Initializing ONNX embedding subsystem...');
819
- const { execFileSync } = await import('child_process');
820
- // Validate embeddingModel: must match pattern org/model-name (CRIT-02)
821
- if (!/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9._-]+$/.test(embeddingModel)) {
822
- throw new Error(`Invalid embedding model name: ${embeddingModel}`);
823
- }
824
- try {
825
- execFileSync('npx', [
826
- '@claude-flow/cli@latest', 'embeddings', 'init',
827
- '--model', embeddingModel,
828
- '--no-download', '--force',
829
- ], {
830
- stdio: 'pipe',
831
- cwd: ctx.cwd,
832
- timeout: 30000,
833
- });
834
- output.writeln(output.success(' ✓ Embeddings configured'));
835
- embeddingsInitialized = true;
836
- }
837
- catch {
838
- output.writeln(output.dim(' Embeddings will be configured on first use'));
839
- }
840
- }
841
- output.writeln();
842
- // Summary table
843
- output.printTable({
844
- columns: [
845
- { key: 'setting', header: 'Setting', width: 20 },
846
- { key: 'value', header: 'Value', width: 40 },
847
- ],
848
- data: [
849
- { setting: 'Preset', value: preset },
850
- { setting: 'Topology', value: options.runtime.topology },
851
- { setting: 'Max Agents', value: String(options.runtime.maxAgents) },
852
- { setting: 'Memory Backend', value: options.runtime.memoryBackend },
853
- { setting: 'HNSW Indexing', value: options.runtime.enableHNSW ? 'Enabled' : 'Disabled' },
854
- { setting: 'Neural Learning', value: options.runtime.enableNeural ? 'Enabled' : 'Disabled' },
855
- { setting: 'Self-Learning', value: options.runtime.enableLearningBridge ? 'LearningBridge + Graph + Scopes' : 'Disabled' },
856
- { setting: 'Embeddings', value: enableEmbeddings ? `${embeddingModel} (hyperbolic)` : 'Disabled' },
857
- { setting: 'Skills', value: `${result.summary.skillsCount} installed` },
858
- { setting: 'Commands', value: `${result.summary.commandsCount} installed` },
859
- { setting: 'Agents', value: `${result.summary.agentsCount} installed` },
860
- { setting: 'Hooks', value: `${result.summary.hooksEnabled} enabled` },
861
- ],
862
- });
863
- await offerCapabilityEnrollment(ctx);
864
- return { success: true, data: result };
865
- }
866
- catch (error) {
867
- if (error instanceof Error && error.message === 'User cancelled') {
868
- output.printInfo('Setup cancelled');
869
- return { success: true };
870
- }
871
- throw error;
872
- }
873
- },
874
- };
875
- // Check subcommand
876
- const checkCommand = {
877
- name: 'check',
878
- description: 'Check if RuFlo is initialized',
879
- action: async (ctx) => {
880
- const initialized = isInitialized(ctx.cwd);
881
- const result = {
882
- initialized: initialized.claude || initialized.claudeFlow,
883
- claude: initialized.claude,
884
- claudeFlow: initialized.claudeFlow,
885
- paths: {
886
- claudeSettings: initialized.claude ? path.join(ctx.cwd, '.claude', 'settings.json') : null,
887
- claudeFlowConfig: initialized.claudeFlow ? path.join(ctx.cwd, '.claude-flow', 'config.yaml') : null,
888
- },
889
- };
890
- if (ctx.flags.format === 'json') {
891
- output.printJson(result);
892
- return { success: true, data: result };
893
- }
894
- if (result.initialized) {
895
- output.printSuccess('RuFlo is initialized');
896
- if (initialized.claude) {
897
- output.printInfo(` Claude Code: .claude/settings.json`);
898
- }
899
- if (initialized.claudeFlow) {
900
- output.printInfo(` V3 Runtime: .claude-flow/config.yaml`);
901
- }
902
- }
903
- else {
904
- output.printWarning('RuFlo is not initialized in this directory');
905
- output.printInfo('Run "ruflo init" to initialize');
906
- }
907
- return { success: true, data: result };
908
- },
909
- };
910
- // Skills subcommand
911
- const skillsCommand = {
912
- name: 'skills',
913
- description: 'Initialize only skills',
914
- options: [
915
- { name: 'all', description: 'Install all skills', type: 'boolean', default: false },
916
- { name: 'core', description: 'Install core skills', type: 'boolean', default: true },
917
- { name: 'agentdb', description: 'Install AgentDB skills', type: 'boolean', default: false },
918
- { name: 'github', description: 'Install GitHub skills', type: 'boolean', default: false },
919
- { name: 'v3', description: 'Install V3 skills', type: 'boolean', default: false },
920
- ],
921
- action: async (ctx) => {
922
- const options = {
923
- ...MINIMAL_INIT_OPTIONS,
924
- targetDir: ctx.cwd,
925
- force: ctx.flags.force,
926
- components: {
927
- settings: false,
928
- skills: true,
929
- commands: false,
930
- agents: false,
931
- helpers: false,
932
- statusline: false,
933
- mcp: false,
934
- runtime: false,
935
- claudeMd: false,
936
- },
937
- skills: {
938
- all: ctx.flags.all,
939
- core: ctx.flags.core,
940
- agentdb: ctx.flags.agentdb,
941
- github: ctx.flags.github,
942
- flowNexus: false,
943
- browser: false,
944
- v3: ctx.flags.v3,
945
- dualMode: false,
946
- },
947
- };
948
- const spinner = output.createSpinner({ text: 'Installing skills...' });
949
- spinner.start();
950
- const result = await executeInit(options);
951
- if (result.success) {
952
- spinner.succeed(`Installed ${result.summary.skillsCount} skills`);
953
- }
954
- else {
955
- spinner.fail('Failed to install skills');
956
- for (const error of result.errors) {
957
- output.printError(error);
958
- }
959
- }
960
- return { success: result.success, data: result };
961
- },
962
- };
963
- // Hooks subcommand
964
- const hooksCommand = {
965
- name: 'hooks',
966
- description: 'Initialize only hooks configuration',
967
- options: [
968
- { name: 'all', description: 'Enable all hooks', type: 'boolean', default: true },
969
- { name: 'minimal', description: 'Enable only essential hooks', type: 'boolean', default: false },
970
- ],
971
- action: async (ctx) => {
972
- const minimal = ctx.flags.minimal;
973
- const options = {
974
- ...DEFAULT_INIT_OPTIONS,
975
- targetDir: ctx.cwd,
976
- force: ctx.flags.force,
977
- components: {
978
- settings: true,
979
- skills: false,
980
- commands: false,
981
- agents: false,
982
- // #2350: helpers MUST ship with the hooks subcommand. The hook entries
983
- // in settings.json point at `.claude/helpers/hook-handler.cjs`; if
984
- // that file doesn't exist, settings-generator (#1744 fix) drops the
985
- // hooks block entirely — so the one subcommand whose stated purpose
986
- // is "Initialize only hooks configuration" produced settings.json
987
- // with no `hooks` key while reporting "N hooks enabled".
988
- helpers: true,
989
- statusline: false,
990
- mcp: false,
991
- runtime: false,
992
- claudeMd: false,
993
- },
994
- hooks: minimal
995
- ? {
996
- preToolUse: true,
997
- postToolUse: true,
998
- userPromptSubmit: false,
999
- sessionStart: false,
1000
- stop: false,
1001
- preCompact: false,
1002
- notification: false,
1003
- teammateIdle: false,
1004
- taskCompleted: false,
1005
- timeout: 5000,
1006
- continueOnError: true,
1007
- }
1008
- : DEFAULT_INIT_OPTIONS.hooks,
1009
- };
1010
- const spinner = output.createSpinner({ text: 'Creating hooks configuration...' });
1011
- spinner.start();
1012
- const result = await executeInit(options);
1013
- if (result.success) {
1014
- spinner.succeed(`Created settings.json with ${result.summary.hooksEnabled} hooks enabled`);
1015
- }
1016
- else {
1017
- spinner.fail('Failed to create hooks configuration');
1018
- for (const error of result.errors) {
1019
- output.printError(error);
1020
- }
1021
- }
1022
- return { success: result.success, data: result };
1023
- },
1024
- };
1025
- // Upgrade subcommand - updates helpers without losing user data
1026
- const upgradeCommand = {
1027
- name: 'upgrade',
1028
- description: 'Update statusline and helpers while preserving existing data',
1029
- options: [
1030
- {
1031
- name: 'verbose',
1032
- short: 'v',
1033
- description: 'Show detailed output',
1034
- type: 'boolean',
1035
- default: false,
1036
- },
1037
- {
1038
- name: 'add-missing',
1039
- short: 'a',
1040
- description: 'Add any new skills, agents, and commands that are missing',
1041
- type: 'boolean',
1042
- default: false,
1043
- },
1044
- {
1045
- name: 'settings',
1046
- short: 's',
1047
- description: 'Merge new settings (Agent Teams, hooks) into existing settings.json',
1048
- type: 'boolean',
1049
- default: false,
1050
- },
1051
- ],
1052
- action: async (ctx) => {
1053
- const addMissing = (ctx.flags['add-missing'] || ctx.flags.addMissing);
1054
- const upgradeSettings = (ctx.flags.settings);
1055
- output.writeln();
1056
- output.writeln(output.bold('Upgrading RuFlo'));
1057
- if (addMissing && upgradeSettings) {
1058
- output.writeln(output.dim('Updates helpers, settings, and adds any missing skills/agents/commands'));
1059
- }
1060
- else if (addMissing) {
1061
- output.writeln(output.dim('Updates helpers and adds any missing skills/agents/commands'));
1062
- }
1063
- else if (upgradeSettings) {
1064
- output.writeln(output.dim('Updates helpers and merges new settings (Agent Teams, hooks)'));
1065
- }
1066
- else {
1067
- output.writeln(output.dim('Updates helpers while preserving your existing data'));
1068
- }
1069
- output.writeln();
1070
- const spinnerText = upgradeSettings
1071
- ? 'Upgrading helpers and settings...'
1072
- : (addMissing ? 'Upgrading and adding missing assets...' : 'Upgrading...');
1073
- const spinner = output.createSpinner({ text: spinnerText });
1074
- spinner.start();
1075
- try {
1076
- const result = addMissing
1077
- ? await executeUpgradeWithMissing(ctx.cwd, upgradeSettings)
1078
- : await executeUpgrade(ctx.cwd, upgradeSettings);
1079
- if (!result.success) {
1080
- spinner.fail('Upgrade failed');
1081
- for (const error of result.errors) {
1082
- output.printError(error);
1083
- }
1084
- return { success: false, exitCode: 1 };
1085
- }
1086
- spinner.succeed('Upgrade complete!');
1087
- output.writeln();
1088
- // Show what was updated
1089
- if (result.updated.length > 0) {
1090
- output.printBox(result.updated.map(f => `✓ ${f}`).join('\n'), 'Updated (latest version)');
1091
- output.writeln();
1092
- }
1093
- // Show what was created
1094
- if (result.created.length > 0) {
1095
- output.printBox(result.created.map(f => `+ ${f}`).join('\n'), 'Created (new files)');
1096
- output.writeln();
1097
- }
1098
- // Show what was preserved
1099
- if (result.preserved.length > 0 && ctx.flags.verbose) {
1100
- output.printBox(result.preserved.map(f => `• ${f}`).join('\n'), 'Preserved (existing data kept)');
1101
- output.writeln();
1102
- }
1103
- else if (result.preserved.length > 0) {
1104
- output.printInfo(`Preserved ${result.preserved.length} existing data files`);
1105
- output.writeln();
1106
- }
1107
- // Show added assets (when --add-missing flag is used)
1108
- if (result.addedSkills && result.addedSkills.length > 0) {
1109
- output.printBox(result.addedSkills.map(s => `+ ${s}`).join('\n'), `Added Skills (${result.addedSkills.length} new)`);
1110
- output.writeln();
1111
- }
1112
- if (result.addedAgents && result.addedAgents.length > 0) {
1113
- output.printBox(result.addedAgents.map(a => `+ ${a}`).join('\n'), `Added Agents (${result.addedAgents.length} new)`);
1114
- output.writeln();
1115
- }
1116
- if (result.addedCommands && result.addedCommands.length > 0) {
1117
- output.printBox(result.addedCommands.map(c => `+ ${c}`).join('\n'), `Added Commands (${result.addedCommands.length} new)`);
1118
- output.writeln();
1119
- }
1120
- // Show settings updates
1121
- if (result.settingsUpdated && result.settingsUpdated.length > 0) {
1122
- output.printBox(result.settingsUpdated.map(s => `+ ${s}`).join('\n'), 'Settings Updated');
1123
- output.writeln();
1124
- }
1125
- output.printSuccess('Your statusline helper has been updated to the latest version');
1126
- output.printInfo('Existing metrics and learning data were preserved');
1127
- // Show settings summary
1128
- if (upgradeSettings && result.settingsUpdated && result.settingsUpdated.length > 0) {
1129
- output.printSuccess('Settings.json updated with new Agent Teams configuration');
1130
- }
1131
- // Show summary for --add-missing
1132
- if (addMissing) {
1133
- const totalAdded = (result.addedSkills?.length || 0) + (result.addedAgents?.length || 0) + (result.addedCommands?.length || 0);
1134
- if (totalAdded > 0) {
1135
- output.printSuccess(`Added ${totalAdded} missing assets to your project`);
1136
- }
1137
- else {
1138
- output.printInfo('All skills, agents, and commands are already up to date');
1139
- }
1140
- }
1141
- if (ctx.flags.format === 'json') {
1142
- output.printJson(result);
1143
- }
1144
- return { success: true, data: result };
1145
- }
1146
- catch (error) {
1147
- spinner.fail('Upgrade failed');
1148
- output.printError(`Failed to upgrade: ${error instanceof Error ? error.message : String(error)}`);
1149
- return { success: false, exitCode: 1 };
1150
- }
1151
- },
1152
- };
1153
- // Main init command
1154
- export const initCommand = {
1155
- name: 'init',
1156
- description: 'Initialize RuFlo in the current directory',
1157
- subcommands: [wizardCommand, checkCommand, skillsCommand, hooksCommand, upgradeCommand],
1158
- options: [
1159
- {
1160
- name: 'force',
1161
- short: 'f',
1162
- description: 'Overwrite existing configuration',
1163
- type: 'boolean',
1164
- default: false,
1165
- },
1166
- {
1167
- name: 'minimal',
1168
- short: 'm',
1169
- description: 'Create minimal configuration',
1170
- type: 'boolean',
1171
- default: false,
1172
- },
1173
- {
1174
- name: 'full',
1175
- description: 'Create full configuration with all components',
1176
- type: 'boolean',
1177
- default: false,
1178
- },
1179
- {
1180
- // #2356: under --full, the auth-gated cloud MCP servers (ruv-swarm,
1181
- // flow-nexus) get written into a committed .mcp.json and add MCP
1182
- // tool-definition token cost every session. Keep them opt-in even with
1183
- // --full; pass --cloud-mcp to register them.
1184
- name: 'cloud-mcp',
1185
- description: 'Register auth-gated cloud MCP servers (ruv-swarm, flow-nexus) in .mcp.json (only relevant with --full)',
1186
- type: 'boolean',
1187
- default: false,
1188
- },
1189
- {
1190
- name: 'skip-claude',
1191
- description: 'Skip .claude/ directory creation (runtime only)',
1192
- type: 'boolean',
1193
- default: false,
1194
- },
1195
- {
1196
- // ADR-302 — skip the one-time post-init capability enrollment prompt.
1197
- name: 'no-signup',
1198
- description: 'Skip the post-init Cognitum capability enrollment prompt',
1199
- type: 'boolean',
1200
- default: false,
1201
- },
1202
- {
1203
- name: 'only-claude',
1204
- description: 'Only create .claude/ directory (skip runtime)',
1205
- type: 'boolean',
1206
- default: false,
1207
- },
1208
- {
1209
- name: 'no-global',
1210
- description: 'Skip the ~/.claude/CLAUDE.md "Ruflo Integration" pointer block (#1744)',
1211
- type: 'boolean',
1212
- default: false,
1213
- },
1214
- {
1215
- name: 'start-all',
1216
- description: 'Auto-start daemon, memory, and swarm after init',
1217
- type: 'boolean',
1218
- default: false,
1219
- },
1220
- {
1221
- name: 'start-daemon',
1222
- description: 'Auto-start daemon after init',
1223
- type: 'boolean',
1224
- default: false,
1225
- },
1226
- {
1227
- name: 'with-embeddings',
1228
- description: 'Initialize ONNX embedding subsystem with hyperbolic support',
1229
- type: 'boolean',
1230
- default: false,
1231
- },
1232
- {
1233
- name: 'embedding-model',
1234
- description: 'ONNX embedding model to use',
1235
- type: 'string',
1236
- default: 'Xenova/all-MiniLM-L6-v2',
1237
- choices: ['Xenova/all-MiniLM-L6-v2', 'Xenova/all-mpnet-base-v2'],
1238
- },
1239
- {
1240
- name: 'codex',
1241
- description: 'Initialize for OpenAI Codex CLI (creates AGENTS.md, .agents/)',
1242
- type: 'boolean',
1243
- default: false,
1244
- },
1245
- {
1246
- name: 'dual',
1247
- description: 'Initialize for both Claude Code and OpenAI Codex',
1248
- type: 'boolean',
1249
- default: false,
1250
- },
1251
- {
1252
- name: 'no-codex-detect',
1253
- description: 'Skip auto-detecting the OpenAI Codex CLI and configuring its MCP server + skills',
1254
- type: 'boolean',
1255
- default: false,
1256
- },
1257
- {
1258
- name: 'no-skills-sh',
1259
- description: 'Skip the post-init `npx skills add ruvnet/ruflo` registration (also honored via RUFLO_NO_SKILLS_SH=1)',
1260
- type: 'boolean',
1261
- default: false,
1262
- },
1263
- {
1264
- name: 'all-agents',
1265
- description: 'Install all agent categories (ADR-128: default is ~24 substrate agents; this restores the full set of ~89)',
1266
- type: 'boolean',
1267
- default: false,
1268
- },
1269
- ],
1270
- examples: [
1271
- { command: 'claude-flow init', description: 'Initialize with default configuration' },
1272
- { command: 'claude-flow init --start-all', description: 'Initialize and start daemon, memory, swarm' },
1273
- { command: 'claude-flow init --start-daemon', description: 'Initialize and start daemon only' },
1274
- { command: 'claude-flow init --minimal', description: 'Initialize with minimal configuration' },
1275
- { command: 'claude-flow init --full', description: 'Initialize with all components' },
1276
- { command: 'claude-flow init --force', description: 'Reinitialize and overwrite existing config' },
1277
- { command: 'claude-flow init --only-claude', description: 'Only create Claude Code integration' },
1278
- { command: 'claude-flow init --skip-claude', description: 'Only create V3 runtime' },
1279
- { command: 'claude-flow init wizard', description: 'Interactive setup wizard' },
1280
- { command: 'claude-flow init --with-embeddings', description: 'Initialize with ONNX embeddings' },
1281
- { command: 'claude-flow init --with-embeddings --embedding-model Xenova/all-mpnet-base-v2', description: 'Use larger embedding model' },
1282
- { command: 'claude-flow init skills --all', description: 'Install all available skills' },
1283
- { command: 'claude-flow init hooks --minimal', description: 'Create minimal hooks configuration' },
1284
- { command: 'claude-flow init upgrade', description: 'Update helpers while preserving data' },
1285
- { command: 'claude-flow init upgrade --settings', description: 'Update helpers and merge new settings (Agent Teams)' },
1286
- { command: 'claude-flow init upgrade --verbose', description: 'Show detailed upgrade info' },
1287
- { command: 'claude-flow init --codex', description: 'Initialize for OpenAI Codex (AGENTS.md)' },
1288
- { command: 'claude-flow init --codex --full', description: 'Codex init with all 137+ skills' },
1289
- { command: 'claude-flow init --dual', description: 'Initialize for both Claude Code and Codex' },
1290
- { command: 'claude-flow init --no-codex-detect', description: 'Skip auto-configuring OpenAI Codex even if it is installed' },
1291
- { command: 'claude-flow init --no-skills-sh', description: 'Skip the post-init skills.sh registration' },
1292
- { command: 'claude-flow init --all-agents', description: 'Install all agent categories (~89 agents; ADR-128 opt-in)' },
1293
- ],
1294
- action: initAction,
1295
- };
1296
- export default initCommand;
1297
- //# sourceMappingURL=init.js.map