@claude-flow/cli 3.32.1 → 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 (657) hide show
  1. package/.claude/helpers/.helpers-version +1 -1
  2. package/.claude/helpers/helpers.manifest.json +3 -3
  3. package/.claude/helpers/statusline.cjs +24 -17
  4. package/.claude/helpers/statusline.js +19 -31
  5. package/catalog-manifest.json +2 -2
  6. package/package.json +1 -1
  7. package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +1 -1
  8. package/plugins/ruflo-metaharness/scripts/smoke.sh +8 -5
  9. package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +1 -1
  10. package/dist/src/agenticow/speculative-exploration.d.ts +0 -148
  11. package/dist/src/agenticow/speculative-exploration.js +0 -218
  12. package/dist/src/appliance/gguf-engine.d.ts +0 -91
  13. package/dist/src/appliance/gguf-engine.js +0 -425
  14. package/dist/src/appliance/ruvllm-bridge.d.ts +0 -102
  15. package/dist/src/appliance/ruvllm-bridge.js +0 -292
  16. package/dist/src/appliance/rvfa-builder.d.ts +0 -44
  17. package/dist/src/appliance/rvfa-builder.js +0 -329
  18. package/dist/src/appliance/rvfa-distribution.d.ts +0 -97
  19. package/dist/src/appliance/rvfa-distribution.js +0 -370
  20. package/dist/src/appliance/rvfa-format.d.ts +0 -111
  21. package/dist/src/appliance/rvfa-format.js +0 -393
  22. package/dist/src/appliance/rvfa-runner.d.ts +0 -69
  23. package/dist/src/appliance/rvfa-runner.js +0 -237
  24. package/dist/src/appliance/rvfa-signing.d.ts +0 -123
  25. package/dist/src/appliance/rvfa-signing.js +0 -347
  26. package/dist/src/autopilot-state.d.ts +0 -77
  27. package/dist/src/autopilot-state.js +0 -271
  28. package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +0 -18
  29. package/dist/src/benchmarks/gaia-agent-planning.smoke.js +0 -253
  30. package/dist/src/benchmarks/gaia-agent.d.ts +0 -198
  31. package/dist/src/benchmarks/gaia-agent.js +0 -651
  32. package/dist/src/benchmarks/gaia-causal-memory.d.ts +0 -133
  33. package/dist/src/benchmarks/gaia-causal-memory.js +0 -281
  34. package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +0 -22
  35. package/dist/src/benchmarks/gaia-causal-memory.smoke.js +0 -300
  36. package/dist/src/benchmarks/gaia-convergence.d.ts +0 -138
  37. package/dist/src/benchmarks/gaia-convergence.js +0 -260
  38. package/dist/src/benchmarks/gaia-convergence.smoke.d.ts +0 -19
  39. package/dist/src/benchmarks/gaia-convergence.smoke.js +0 -246
  40. package/dist/src/benchmarks/gaia-critic.d.ts +0 -123
  41. package/dist/src/benchmarks/gaia-critic.js +0 -312
  42. package/dist/src/benchmarks/gaia-critic.smoke.d.ts +0 -21
  43. package/dist/src/benchmarks/gaia-critic.smoke.js +0 -327
  44. package/dist/src/benchmarks/gaia-decomposer.d.ts +0 -125
  45. package/dist/src/benchmarks/gaia-decomposer.js +0 -350
  46. package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +0 -21
  47. package/dist/src/benchmarks/gaia-decomposer.smoke.js +0 -228
  48. package/dist/src/benchmarks/gaia-e2e-smoke.d.ts +0 -27
  49. package/dist/src/benchmarks/gaia-e2e-smoke.js +0 -136
  50. package/dist/src/benchmarks/gaia-extract.smoke.d.ts +0 -45
  51. package/dist/src/benchmarks/gaia-extract.smoke.js +0 -242
  52. package/dist/src/benchmarks/gaia-hardness/features.d.ts +0 -46
  53. package/dist/src/benchmarks/gaia-hardness/features.js +0 -170
  54. package/dist/src/benchmarks/gaia-hardness/predictor.d.ts +0 -105
  55. package/dist/src/benchmarks/gaia-hardness/predictor.js +0 -260
  56. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +0 -20
  57. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +0 -235
  58. package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +0 -51
  59. package/dist/src/benchmarks/gaia-hardness/train-data-loader.js +0 -179
  60. package/dist/src/benchmarks/gaia-judge.d.ts +0 -88
  61. package/dist/src/benchmarks/gaia-judge.js +0 -437
  62. package/dist/src/benchmarks/gaia-loader.d.ts +0 -87
  63. package/dist/src/benchmarks/gaia-loader.js +0 -326
  64. package/dist/src/benchmarks/gaia-tools/file_read.d.ts +0 -35
  65. package/dist/src/benchmarks/gaia-tools/file_read.js +0 -403
  66. package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +0 -126
  67. package/dist/src/benchmarks/gaia-tools/grounded_query.js +0 -225
  68. package/dist/src/benchmarks/gaia-tools/index.d.ts +0 -32
  69. package/dist/src/benchmarks/gaia-tools/index.js +0 -36
  70. package/dist/src/benchmarks/gaia-tools/types.d.ts +0 -62
  71. package/dist/src/benchmarks/gaia-tools/types.js +0 -12
  72. package/dist/src/benchmarks/gaia-tools/web_search.d.ts +0 -30
  73. package/dist/src/benchmarks/gaia-tools/web_search.js +0 -210
  74. package/dist/src/benchmarks/gaia-voting.d.ts +0 -88
  75. package/dist/src/benchmarks/gaia-voting.js +0 -297
  76. package/dist/src/benchmarks/gaia-voting.smoke.d.ts +0 -20
  77. package/dist/src/benchmarks/gaia-voting.smoke.js +0 -332
  78. package/dist/src/benchmarks/pretrain/index.d.ts +0 -58
  79. package/dist/src/benchmarks/pretrain/index.js +0 -404
  80. package/dist/src/business-pods/bbs-budget-tracker.d.ts +0 -139
  81. package/dist/src/business-pods/bbs-budget-tracker.js +0 -358
  82. package/dist/src/business-pods/domain-affinity-policy.d.ts +0 -47
  83. package/dist/src/business-pods/domain-affinity-policy.js +0 -65
  84. package/dist/src/business-pods/pod-schema.d.ts +0 -96
  85. package/dist/src/business-pods/pod-schema.js +0 -225
  86. package/dist/src/commands/advisor.d.ts +0 -15
  87. package/dist/src/commands/advisor.js +0 -94
  88. package/dist/src/commands/agent-wasm.d.ts +0 -14
  89. package/dist/src/commands/agent-wasm.js +0 -333
  90. package/dist/src/commands/agent.d.ts +0 -8
  91. package/dist/src/commands/agent.js +0 -927
  92. package/dist/src/commands/analyze.d.ts +0 -19
  93. package/dist/src/commands/analyze.js +0 -2047
  94. package/dist/src/commands/announcements.d.ts +0 -17
  95. package/dist/src/commands/announcements.js +0 -0
  96. package/dist/src/commands/appliance-advanced.d.ts +0 -9
  97. package/dist/src/commands/appliance-advanced.js +0 -215
  98. package/dist/src/commands/appliance.d.ts +0 -8
  99. package/dist/src/commands/appliance.js +0 -404
  100. package/dist/src/commands/autopilot.d.ts +0 -15
  101. package/dist/src/commands/autopilot.js +0 -407
  102. package/dist/src/commands/benchmark.d.ts +0 -10
  103. package/dist/src/commands/benchmark.js +0 -460
  104. package/dist/src/commands/claims.d.ts +0 -10
  105. package/dist/src/commands/claims.js +0 -620
  106. package/dist/src/commands/cleanup.d.ts +0 -13
  107. package/dist/src/commands/cleanup.js +0 -250
  108. package/dist/src/commands/completions.d.ts +0 -10
  109. package/dist/src/commands/completions.js +0 -539
  110. package/dist/src/commands/config.d.ts +0 -8
  111. package/dist/src/commands/config.js +0 -428
  112. package/dist/src/commands/daemon.d.ts +0 -59
  113. package/dist/src/commands/daemon.js +0 -1733
  114. package/dist/src/commands/deployment.d.ts +0 -10
  115. package/dist/src/commands/deployment.js +0 -672
  116. package/dist/src/commands/doctor.d.ts +0 -10
  117. package/dist/src/commands/doctor.js +0 -1695
  118. package/dist/src/commands/eject.d.ts +0 -33
  119. package/dist/src/commands/eject.js +0 -195
  120. package/dist/src/commands/embeddings.d.ts +0 -18
  121. package/dist/src/commands/embeddings.js +0 -1623
  122. package/dist/src/commands/funnel.d.ts +0 -18
  123. package/dist/src/commands/funnel.js +0 -302
  124. package/dist/src/commands/gaia-bench.d.ts +0 -40
  125. package/dist/src/commands/gaia-bench.js +0 -597
  126. package/dist/src/commands/guidance.d.ts +0 -8
  127. package/dist/src/commands/guidance.js +0 -556
  128. package/dist/src/commands/hive-mind.d.ts +0 -11
  129. package/dist/src/commands/hive-mind.js +0 -1319
  130. package/dist/src/commands/hooks.d.ts +0 -8
  131. package/dist/src/commands/hooks.js +0 -4595
  132. package/dist/src/commands/index.d.ts +0 -118
  133. package/dist/src/commands/index.js +0 -364
  134. package/dist/src/commands/init.d.ts +0 -13
  135. package/dist/src/commands/init.js +0 -1297
  136. package/dist/src/commands/issues.d.ts +0 -21
  137. package/dist/src/commands/issues.js +0 -567
  138. package/dist/src/commands/mcp.d.ts +0 -11
  139. package/dist/src/commands/mcp.js +0 -732
  140. package/dist/src/commands/memory-backup.d.ts +0 -11
  141. package/dist/src/commands/memory-backup.js +0 -46
  142. package/dist/src/commands/memory-distill.d.ts +0 -27
  143. package/dist/src/commands/memory-distill.js +0 -374
  144. package/dist/src/commands/memory.d.ts +0 -8
  145. package/dist/src/commands/memory.js +0 -1596
  146. package/dist/src/commands/metaharness.d.ts +0 -39
  147. package/dist/src/commands/metaharness.js +0 -215
  148. package/dist/src/commands/migrate.d.ts +0 -8
  149. package/dist/src/commands/migrate.js +0 -742
  150. package/dist/src/commands/neural.d.ts +0 -10
  151. package/dist/src/commands/neural.js +0 -4331
  152. package/dist/src/commands/performance.d.ts +0 -10
  153. package/dist/src/commands/performance.js +0 -583
  154. package/dist/src/commands/plugins.d.ts +0 -11
  155. package/dist/src/commands/plugins.js +0 -826
  156. package/dist/src/commands/process.d.ts +0 -10
  157. package/dist/src/commands/process.js +0 -694
  158. package/dist/src/commands/progress.d.ts +0 -11
  159. package/dist/src/commands/progress.js +0 -259
  160. package/dist/src/commands/providers.d.ts +0 -10
  161. package/dist/src/commands/providers.js +0 -502
  162. package/dist/src/commands/proxy.d.ts +0 -21
  163. package/dist/src/commands/proxy.js +0 -310
  164. package/dist/src/commands/route.d.ts +0 -16
  165. package/dist/src/commands/route.js +0 -822
  166. package/dist/src/commands/ruvector/backup.d.ts +0 -11
  167. package/dist/src/commands/ruvector/backup.js +0 -747
  168. package/dist/src/commands/ruvector/benchmark.d.ts +0 -11
  169. package/dist/src/commands/ruvector/benchmark.js +0 -490
  170. package/dist/src/commands/ruvector/import.d.ts +0 -18
  171. package/dist/src/commands/ruvector/import.js +0 -373
  172. package/dist/src/commands/ruvector/index.d.ts +0 -29
  173. package/dist/src/commands/ruvector/index.js +0 -129
  174. package/dist/src/commands/ruvector/init.d.ts +0 -11
  175. package/dist/src/commands/ruvector/init.js +0 -467
  176. package/dist/src/commands/ruvector/migrate.d.ts +0 -11
  177. package/dist/src/commands/ruvector/migrate.js +0 -498
  178. package/dist/src/commands/ruvector/optimize.d.ts +0 -11
  179. package/dist/src/commands/ruvector/optimize.js +0 -505
  180. package/dist/src/commands/ruvector/pg-utils.d.ts +0 -14
  181. package/dist/src/commands/ruvector/pg-utils.js +0 -41
  182. package/dist/src/commands/ruvector/setup.d.ts +0 -18
  183. package/dist/src/commands/ruvector/setup.js +0 -765
  184. package/dist/src/commands/ruvector/status.d.ts +0 -11
  185. package/dist/src/commands/ruvector/status.js +0 -479
  186. package/dist/src/commands/security.d.ts +0 -10
  187. package/dist/src/commands/security.js +0 -1007
  188. package/dist/src/commands/session.d.ts +0 -8
  189. package/dist/src/commands/session.js +0 -757
  190. package/dist/src/commands/settings.d.ts +0 -19
  191. package/dist/src/commands/settings.js +0 -180
  192. package/dist/src/commands/spinner.d.ts +0 -16
  193. package/dist/src/commands/spinner.js +0 -329
  194. package/dist/src/commands/start.d.ts +0 -8
  195. package/dist/src/commands/start.js +0 -418
  196. package/dist/src/commands/status.d.ts +0 -8
  197. package/dist/src/commands/status.js +0 -608
  198. package/dist/src/commands/swarm.d.ts +0 -8
  199. package/dist/src/commands/swarm.js +0 -891
  200. package/dist/src/commands/task.d.ts +0 -8
  201. package/dist/src/commands/task.js +0 -675
  202. package/dist/src/commands/transfer-store.d.ts +0 -13
  203. package/dist/src/commands/transfer-store.js +0 -428
  204. package/dist/src/commands/update.d.ts +0 -8
  205. package/dist/src/commands/update.js +0 -276
  206. package/dist/src/commands/verify.d.ts +0 -19
  207. package/dist/src/commands/verify.js +0 -261
  208. package/dist/src/commands/version.d.ts +0 -42
  209. package/dist/src/commands/version.js +0 -106
  210. package/dist/src/commands/workflow.d.ts +0 -8
  211. package/dist/src/commands/workflow.js +0 -617
  212. package/dist/src/config/harness-feedback-applier.d.ts +0 -50
  213. package/dist/src/config/harness-feedback-applier.js +0 -122
  214. package/dist/src/config/proven-config-refresh.d.ts +0 -39
  215. package/dist/src/config/proven-config-refresh.js +0 -154
  216. package/dist/src/config/proven-config-rvfa.d.ts +0 -23
  217. package/dist/src/config/proven-config-rvfa.js +0 -73
  218. package/dist/src/config/proven-config.d.ts +0 -86
  219. package/dist/src/config/proven-config.js +0 -176
  220. package/dist/src/config-adapter.d.ts +0 -15
  221. package/dist/src/config-adapter.js +0 -186
  222. package/dist/src/encryption/vault.d.ts +0 -94
  223. package/dist/src/encryption/vault.js +0 -172
  224. package/dist/src/fs-secure.d.ts +0 -86
  225. package/dist/src/fs-secure.js +0 -133
  226. package/dist/src/funnel/advisor-tip.d.ts +0 -58
  227. package/dist/src/funnel/advisor-tip.js +0 -92
  228. package/dist/src/funnel/attribution.d.ts +0 -37
  229. package/dist/src/funnel/attribution.js +0 -101
  230. package/dist/src/funnel/consent.d.ts +0 -22
  231. package/dist/src/funnel/consent.js +0 -58
  232. package/dist/src/funnel/credit-errors.d.ts +0 -31
  233. package/dist/src/funnel/credit-errors.js +0 -88
  234. package/dist/src/funnel/credit-notifier.d.ts +0 -44
  235. package/dist/src/funnel/credit-notifier.js +0 -74
  236. package/dist/src/funnel/disclosure.d.ts +0 -47
  237. package/dist/src/funnel/disclosure.js +0 -109
  238. package/dist/src/funnel/enrollment.d.ts +0 -36
  239. package/dist/src/funnel/enrollment.js +0 -64
  240. package/dist/src/funnel/environment.d.ts +0 -17
  241. package/dist/src/funnel/environment.js +0 -39
  242. package/dist/src/funnel/event-transport.d.ts +0 -51
  243. package/dist/src/funnel/event-transport.js +0 -199
  244. package/dist/src/funnel/events.d.ts +0 -42
  245. package/dist/src/funnel/events.js +0 -150
  246. package/dist/src/funnel/index.d.ts +0 -21
  247. package/dist/src/funnel/index.js +0 -21
  248. package/dist/src/funnel/insights.d.ts +0 -49
  249. package/dist/src/funnel/insights.js +0 -120
  250. package/dist/src/funnel/local-signals.d.ts +0 -15
  251. package/dist/src/funnel/local-signals.js +0 -68
  252. package/dist/src/funnel/message-transport.d.ts +0 -51
  253. package/dist/src/funnel/message-transport.js +0 -149
  254. package/dist/src/funnel/messages.d.ts +0 -55
  255. package/dist/src/funnel/messages.js +0 -160
  256. package/dist/src/funnel/payout.d.ts +0 -40
  257. package/dist/src/funnel/payout.js +0 -60
  258. package/dist/src/funnel/power-saver-notifier.d.ts +0 -44
  259. package/dist/src/funnel/power-saver-notifier.js +0 -92
  260. package/dist/src/funnel/precedence.d.ts +0 -16
  261. package/dist/src/funnel/precedence.js +0 -85
  262. package/dist/src/funnel/promo.d.ts +0 -41
  263. package/dist/src/funnel/promo.js +0 -144
  264. package/dist/src/funnel/rate-limit-notifier.d.ts +0 -55
  265. package/dist/src/funnel/rate-limit-notifier.js +0 -102
  266. package/dist/src/funnel/rotation.d.ts +0 -19
  267. package/dist/src/funnel/rotation.js +0 -70
  268. package/dist/src/funnel/state.d.ts +0 -13
  269. package/dist/src/funnel/state.js +0 -52
  270. package/dist/src/funnel/toggle-cooldown.d.ts +0 -17
  271. package/dist/src/funnel/toggle-cooldown.js +0 -32
  272. package/dist/src/funnel/types.d.ts +0 -98
  273. package/dist/src/funnel/types.js +0 -26
  274. package/dist/src/index.d.ts +0 -81
  275. package/dist/src/index.js +0 -609
  276. package/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
  277. package/dist/src/infrastructure/in-memory-repositories.js +0 -264
  278. package/dist/src/init/claudemd-generator.d.ts +0 -16
  279. package/dist/src/init/claudemd-generator.js +0 -368
  280. package/dist/src/init/executor.d.ts +0 -41
  281. package/dist/src/init/executor.js +0 -2142
  282. package/dist/src/init/helper-refresh.d.ts +0 -79
  283. package/dist/src/init/helper-refresh.js +0 -347
  284. package/dist/src/init/helper-signing.d.ts +0 -37
  285. package/dist/src/init/helper-signing.js +0 -67
  286. package/dist/src/init/helpers-generator.d.ts +0 -87
  287. package/dist/src/init/helpers-generator.js +0 -1456
  288. package/dist/src/init/index.d.ts +0 -13
  289. package/dist/src/init/index.js +0 -15
  290. package/dist/src/init/mcp-generator.d.ts +0 -26
  291. package/dist/src/init/mcp-generator.js +0 -126
  292. package/dist/src/init/memory-package-resolver.d.ts +0 -53
  293. package/dist/src/init/memory-package-resolver.js +0 -118
  294. package/dist/src/init/settings-generator.d.ts +0 -14
  295. package/dist/src/init/settings-generator.js +0 -462
  296. package/dist/src/init/statusline-generator.d.ts +0 -28
  297. package/dist/src/init/statusline-generator.js +0 -177
  298. package/dist/src/init/types.d.ts +0 -331
  299. package/dist/src/init/types.js +0 -276
  300. package/dist/src/log-filters.d.ts +0 -46
  301. package/dist/src/log-filters.js +0 -107
  302. package/dist/src/mcp-client.d.ts +0 -92
  303. package/dist/src/mcp-client.js +0 -397
  304. package/dist/src/mcp-server.d.ts +0 -163
  305. package/dist/src/mcp-server.js +0 -751
  306. package/dist/src/mcp-tools/agent-execute-core.d.ts +0 -115
  307. package/dist/src/mcp-tools/agent-execute-core.js +0 -587
  308. package/dist/src/mcp-tools/agent-tools.d.ts +0 -9
  309. package/dist/src/mcp-tools/agent-tools.js +0 -837
  310. package/dist/src/mcp-tools/agentbbs-tools.d.ts +0 -28
  311. package/dist/src/mcp-tools/agentbbs-tools.js +0 -394
  312. package/dist/src/mcp-tools/agentdb-tools.d.ts +0 -35
  313. package/dist/src/mcp-tools/agentdb-tools.js +0 -1473
  314. package/dist/src/mcp-tools/agenticow-loader.d.ts +0 -59
  315. package/dist/src/mcp-tools/agenticow-loader.js +0 -105
  316. package/dist/src/mcp-tools/agenticow-speculate-tools.d.ts +0 -24
  317. package/dist/src/mcp-tools/agenticow-speculate-tools.js +0 -209
  318. package/dist/src/mcp-tools/agenticow-tools.d.ts +0 -36
  319. package/dist/src/mcp-tools/agenticow-tools.js +0 -360
  320. package/dist/src/mcp-tools/analyze-tools.d.ts +0 -38
  321. package/dist/src/mcp-tools/analyze-tools.js +0 -346
  322. package/dist/src/mcp-tools/auto-install.d.ts +0 -83
  323. package/dist/src/mcp-tools/auto-install.js +0 -131
  324. package/dist/src/mcp-tools/autopilot-tools.d.ts +0 -12
  325. package/dist/src/mcp-tools/autopilot-tools.js +0 -231
  326. package/dist/src/mcp-tools/browser-intent-tools.d.ts +0 -162
  327. package/dist/src/mcp-tools/browser-intent-tools.js +0 -548
  328. package/dist/src/mcp-tools/browser-session-tools.d.ts +0 -27
  329. package/dist/src/mcp-tools/browser-session-tools.js +0 -398
  330. package/dist/src/mcp-tools/browser-tools.d.ts +0 -21
  331. package/dist/src/mcp-tools/browser-tools.js +0 -760
  332. package/dist/src/mcp-tools/business-pod-tools.d.ts +0 -20
  333. package/dist/src/mcp-tools/business-pod-tools.js +0 -169
  334. package/dist/src/mcp-tools/claims-tools.d.ts +0 -12
  335. package/dist/src/mcp-tools/claims-tools.js +0 -863
  336. package/dist/src/mcp-tools/config-tools.d.ts +0 -8
  337. package/dist/src/mcp-tools/config-tools.js +0 -411
  338. package/dist/src/mcp-tools/coordination-tools.d.ts +0 -13
  339. package/dist/src/mcp-tools/coordination-tools.js +0 -729
  340. package/dist/src/mcp-tools/daa-tools.d.ts +0 -13
  341. package/dist/src/mcp-tools/daa-tools.js +0 -534
  342. package/dist/src/mcp-tools/embeddings-tools.d.ts +0 -9
  343. package/dist/src/mcp-tools/embeddings-tools.js +0 -904
  344. package/dist/src/mcp-tools/github-tools.d.ts +0 -9
  345. package/dist/src/mcp-tools/github-tools.js +0 -659
  346. package/dist/src/mcp-tools/guidance-tools.d.ts +0 -15
  347. package/dist/src/mcp-tools/guidance-tools.js +0 -639
  348. package/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -8
  349. package/dist/src/mcp-tools/hive-mind-tools.js +0 -953
  350. package/dist/src/mcp-tools/hooks-tools.d.ts +0 -65
  351. package/dist/src/mcp-tools/hooks-tools.js +0 -4824
  352. package/dist/src/mcp-tools/http-fetch-tools.d.ts +0 -55
  353. package/dist/src/mcp-tools/http-fetch-tools.js +0 -329
  354. package/dist/src/mcp-tools/index.d.ts +0 -34
  355. package/dist/src/mcp-tools/index.js +0 -40
  356. package/dist/src/mcp-tools/managed-agent-tools.d.ts +0 -22
  357. package/dist/src/mcp-tools/managed-agent-tools.js +0 -357
  358. package/dist/src/mcp-tools/memory-tools.d.ts +0 -14
  359. package/dist/src/mcp-tools/memory-tools.js +0 -1330
  360. package/dist/src/mcp-tools/metaharness-tools.d.ts +0 -51
  361. package/dist/src/mcp-tools/metaharness-tools.js +0 -684
  362. package/dist/src/mcp-tools/neural-tools.d.ts +0 -54
  363. package/dist/src/mcp-tools/neural-tools.js +0 -1168
  364. package/dist/src/mcp-tools/performance-tools.d.ts +0 -16
  365. package/dist/src/mcp-tools/performance-tools.js +0 -675
  366. package/dist/src/mcp-tools/progress-tools.d.ts +0 -14
  367. package/dist/src/mcp-tools/progress-tools.js +0 -348
  368. package/dist/src/mcp-tools/request-tracker.d.ts +0 -17
  369. package/dist/src/mcp-tools/request-tracker.js +0 -27
  370. package/dist/src/mcp-tools/ruvllm-tools.d.ts +0 -9
  371. package/dist/src/mcp-tools/ruvllm-tools.js +0 -355
  372. package/dist/src/mcp-tools/security-tools.d.ts +0 -18
  373. package/dist/src/mcp-tools/security-tools.js +0 -556
  374. package/dist/src/mcp-tools/session-tools.d.ts +0 -8
  375. package/dist/src/mcp-tools/session-tools.js +0 -517
  376. package/dist/src/mcp-tools/swarm-tools.d.ts +0 -37
  377. package/dist/src/mcp-tools/swarm-tools.js +0 -390
  378. package/dist/src/mcp-tools/system-tools.d.ts +0 -13
  379. package/dist/src/mcp-tools/system-tools.js +0 -688
  380. package/dist/src/mcp-tools/task-tools.d.ts +0 -8
  381. package/dist/src/mcp-tools/task-tools.js +0 -487
  382. package/dist/src/mcp-tools/terminal-tools.d.ts +0 -8
  383. package/dist/src/mcp-tools/terminal-tools.js +0 -306
  384. package/dist/src/mcp-tools/testgen-tools.d.ts +0 -26
  385. package/dist/src/mcp-tools/testgen-tools.js +0 -168
  386. package/dist/src/mcp-tools/tool-loop-guardrail.d.ts +0 -31
  387. package/dist/src/mcp-tools/tool-loop-guardrail.js +0 -71
  388. package/dist/src/mcp-tools/transfer-tools.d.ts +0 -14
  389. package/dist/src/mcp-tools/transfer-tools.js +0 -447
  390. package/dist/src/mcp-tools/types.d.ts +0 -8
  391. package/dist/src/mcp-tools/types.js +0 -8
  392. package/dist/src/mcp-tools/validate-input.d.ts +0 -9
  393. package/dist/src/mcp-tools/validate-input.js +0 -9
  394. package/dist/src/mcp-tools/wasm-agent-tools.d.ts +0 -13
  395. package/dist/src/mcp-tools/wasm-agent-tools.js +0 -840
  396. package/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
  397. package/dist/src/mcp-tools/workflow-tools.js +0 -884
  398. package/dist/src/memory/bge-embedder.d.ts +0 -25
  399. package/dist/src/memory/bge-embedder.js +0 -121
  400. package/dist/src/memory/cross-encoder-rerank.d.ts +0 -33
  401. package/dist/src/memory/cross-encoder-rerank.js +0 -123
  402. package/dist/src/memory/embedding-policy.d.ts +0 -21
  403. package/dist/src/memory/embedding-policy.js +0 -30
  404. package/dist/src/memory/embedding-quantization.d.ts +0 -62
  405. package/dist/src/memory/embedding-quantization.js +0 -156
  406. package/dist/src/memory/ewc-consolidation.d.ts +0 -305
  407. package/dist/src/memory/ewc-consolidation.js +0 -611
  408. package/dist/src/memory/graph-edge-writer.d.ts +0 -95
  409. package/dist/src/memory/graph-edge-writer.js +0 -217
  410. package/dist/src/memory/hybrid-retrieval.d.ts +0 -77
  411. package/dist/src/memory/hybrid-retrieval.js +0 -192
  412. package/dist/src/memory/intelligence.d.ts +0 -405
  413. package/dist/src/memory/intelligence.js +0 -1316
  414. package/dist/src/memory/lucene-bm25.d.ts +0 -19
  415. package/dist/src/memory/lucene-bm25.js +0 -308
  416. package/dist/src/memory/memory-bridge.d.ts +0 -537
  417. package/dist/src/memory/memory-bridge.js +0 -2460
  418. package/dist/src/memory/memory-initializer.d.ts +0 -556
  419. package/dist/src/memory/memory-initializer.js +0 -3021
  420. package/dist/src/memory/neural-package-bridge.d.ts +0 -48
  421. package/dist/src/memory/neural-package-bridge.js +0 -87
  422. package/dist/src/memory/rabitq-index.d.ts +0 -60
  423. package/dist/src/memory/rabitq-index.js +0 -242
  424. package/dist/src/memory/sona-optimizer.d.ts +0 -267
  425. package/dist/src/memory/sona-optimizer.js +0 -779
  426. package/dist/src/memory/structured-distill.d.ts +0 -48
  427. package/dist/src/memory/structured-distill.js +0 -125
  428. package/dist/src/output.d.ts +0 -9
  429. package/dist/src/output.js +0 -9
  430. package/dist/src/parser.d.ts +0 -89
  431. package/dist/src/parser.js +0 -516
  432. package/dist/src/plugins/manager.d.ts +0 -133
  433. package/dist/src/plugins/manager.js +0 -415
  434. package/dist/src/plugins/store/discovery.d.ts +0 -99
  435. package/dist/src/plugins/store/discovery.js +0 -1224
  436. package/dist/src/plugins/store/index.d.ts +0 -76
  437. package/dist/src/plugins/store/index.js +0 -141
  438. package/dist/src/plugins/store/search.d.ts +0 -46
  439. package/dist/src/plugins/store/search.js +0 -230
  440. package/dist/src/plugins/store/types.d.ts +0 -279
  441. package/dist/src/plugins/store/types.js +0 -7
  442. package/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -7
  443. package/dist/src/plugins/tests/demo-plugin-store.js +0 -126
  444. package/dist/src/plugins/tests/standalone-test.d.ts +0 -12
  445. package/dist/src/plugins/tests/standalone-test.js +0 -188
  446. package/dist/src/plugins/tests/test-plugin-store.d.ts +0 -7
  447. package/dist/src/plugins/tests/test-plugin-store.js +0 -206
  448. package/dist/src/production/circuit-breaker.d.ts +0 -101
  449. package/dist/src/production/circuit-breaker.js +0 -241
  450. package/dist/src/production/error-handler.d.ts +0 -92
  451. package/dist/src/production/error-handler.js +0 -299
  452. package/dist/src/production/index.d.ts +0 -23
  453. package/dist/src/production/index.js +0 -18
  454. package/dist/src/production/monitoring.d.ts +0 -161
  455. package/dist/src/production/monitoring.js +0 -356
  456. package/dist/src/production/rate-limiter.d.ts +0 -80
  457. package/dist/src/production/rate-limiter.js +0 -201
  458. package/dist/src/production/retry.d.ts +0 -48
  459. package/dist/src/production/retry.js +0 -179
  460. package/dist/src/prompt.d.ts +0 -44
  461. package/dist/src/prompt.js +0 -501
  462. package/dist/src/runtime/headless.d.ts +0 -60
  463. package/dist/src/runtime/headless.js +0 -284
  464. package/dist/src/runtime/parent-death-watchdog.d.ts +0 -42
  465. package/dist/src/runtime/parent-death-watchdog.js +0 -70
  466. package/dist/src/ruvector/agent-wasm.d.ts +0 -228
  467. package/dist/src/ruvector/agent-wasm.js +0 -463
  468. package/dist/src/ruvector/ast-analyzer.d.ts +0 -67
  469. package/dist/src/ruvector/ast-analyzer.js +0 -277
  470. package/dist/src/ruvector/codemods/engine.d.ts +0 -45
  471. package/dist/src/ruvector/codemods/engine.js +0 -291
  472. package/dist/src/ruvector/codemods/scope-analysis.d.ts +0 -29
  473. package/dist/src/ruvector/codemods/scope-analysis.js +0 -162
  474. package/dist/src/ruvector/coverage-router.d.ts +0 -160
  475. package/dist/src/ruvector/coverage-router.js +0 -531
  476. package/dist/src/ruvector/coverage-tools.d.ts +0 -33
  477. package/dist/src/ruvector/coverage-tools.js +0 -157
  478. package/dist/src/ruvector/diff-classifier.d.ts +0 -175
  479. package/dist/src/ruvector/diff-classifier.js +0 -699
  480. package/dist/src/ruvector/diskann-backend.d.ts +0 -78
  481. package/dist/src/ruvector/diskann-backend.js +0 -310
  482. package/dist/src/ruvector/enhanced-model-router.d.ts +0 -172
  483. package/dist/src/ruvector/enhanced-model-router.js +0 -577
  484. package/dist/src/ruvector/graph-analyzer.d.ts +0 -187
  485. package/dist/src/ruvector/graph-analyzer.js +0 -929
  486. package/dist/src/ruvector/graph-backend.d.ts +0 -79
  487. package/dist/src/ruvector/graph-backend.js +0 -220
  488. package/dist/src/ruvector/index.d.ts +0 -38
  489. package/dist/src/ruvector/index.js +0 -86
  490. package/dist/src/ruvector/lora-adapter.d.ts +0 -292
  491. package/dist/src/ruvector/lora-adapter.js +0 -710
  492. package/dist/src/ruvector/model-prices.d.ts +0 -50
  493. package/dist/src/ruvector/model-prices.js +0 -72
  494. package/dist/src/ruvector/model-router.d.ts +0 -408
  495. package/dist/src/ruvector/model-router.js +0 -1162
  496. package/dist/src/ruvector/neural-router.d.ts +0 -182
  497. package/dist/src/ruvector/neural-router.js +0 -825
  498. package/dist/src/ruvector/output-verifier.d.ts +0 -83
  499. package/dist/src/ruvector/output-verifier.js +0 -277
  500. package/dist/src/ruvector/q-learning-router.d.ts +0 -227
  501. package/dist/src/ruvector/q-learning-router.js +0 -721
  502. package/dist/src/ruvector/router-calibrator.d.ts +0 -65
  503. package/dist/src/ruvector/router-calibrator.js +0 -120
  504. package/dist/src/ruvector/router-parallel-recorder.d.ts +0 -127
  505. package/dist/src/ruvector/router-parallel-recorder.js +0 -183
  506. package/dist/src/ruvector/router-trajectory.d.ts +0 -194
  507. package/dist/src/ruvector/router-trajectory.js +0 -281
  508. package/dist/src/ruvector/run-transcript-recorder.d.ts +0 -154
  509. package/dist/src/ruvector/run-transcript-recorder.js +0 -209
  510. package/dist/src/ruvector/ruvllm-wasm.d.ts +0 -179
  511. package/dist/src/ruvector/ruvllm-wasm.js +0 -379
  512. package/dist/src/ruvector/semantic-router.d.ts +0 -77
  513. package/dist/src/ruvector/semantic-router.js +0 -178
  514. package/dist/src/ruvector/task-embedder.d.ts +0 -56
  515. package/dist/src/ruvector/task-embedder.js +0 -237
  516. package/dist/src/ruvector/trajectory-tree.d.ts +0 -113
  517. package/dist/src/ruvector/trajectory-tree.js +0 -237
  518. package/dist/src/ruvector/vector-db.d.ts +0 -73
  519. package/dist/src/ruvector/vector-db.js +0 -301
  520. package/dist/src/ruvector/wasm-embedder.d.ts +0 -13
  521. package/dist/src/ruvector/wasm-embedder.js +0 -143
  522. package/dist/src/services/agentic-flow-bridge.d.ts +0 -50
  523. package/dist/src/services/agentic-flow-bridge.js +0 -95
  524. package/dist/src/services/ai-job-dedup.d.ts +0 -61
  525. package/dist/src/services/ai-job-dedup.js +0 -136
  526. package/dist/src/services/checkpoint-gate.d.ts +0 -140
  527. package/dist/src/services/checkpoint-gate.js +0 -223
  528. package/dist/src/services/claim-service.d.ts +0 -204
  529. package/dist/src/services/claim-service.js +0 -818
  530. package/dist/src/services/config-file-manager.d.ts +0 -37
  531. package/dist/src/services/config-file-manager.js +0 -224
  532. package/dist/src/services/container-worker-pool.d.ts +0 -204
  533. package/dist/src/services/container-worker-pool.js +0 -589
  534. package/dist/src/services/daemon-autostart.d.ts +0 -17
  535. package/dist/src/services/daemon-autostart.js +0 -102
  536. package/dist/src/services/distill-oracle.d.ts +0 -190
  537. package/dist/src/services/distill-oracle.js +0 -349
  538. package/dist/src/services/distill-tuning.d.ts +0 -111
  539. package/dist/src/services/distill-tuning.js +0 -510
  540. package/dist/src/services/evolve-proof.d.ts +0 -253
  541. package/dist/src/services/evolve-proof.js +0 -343
  542. package/dist/src/services/fable-harness.d.ts +0 -207
  543. package/dist/src/services/fable-harness.js +0 -388
  544. package/dist/src/services/git-workspace-identity.d.ts +0 -42
  545. package/dist/src/services/git-workspace-identity.js +0 -99
  546. package/dist/src/services/global-ai-budget.d.ts +0 -135
  547. package/dist/src/services/global-ai-budget.js +0 -415
  548. package/dist/src/services/harness-benchmark.d.ts +0 -68
  549. package/dist/src/services/harness-benchmark.js +0 -94
  550. package/dist/src/services/harness-canary.d.ts +0 -60
  551. package/dist/src/services/harness-canary.js +0 -69
  552. package/dist/src/services/harness-corpus-harvester.d.ts +0 -51
  553. package/dist/src/services/harness-corpus-harvester.js +0 -74
  554. package/dist/src/services/harness-flywheel-generations.d.ts +0 -115
  555. package/dist/src/services/harness-flywheel-generations.js +0 -360
  556. package/dist/src/services/harness-flywheel-runtime.d.ts +0 -25
  557. package/dist/src/services/harness-flywheel-runtime.js +0 -92
  558. package/dist/src/services/harness-flywheel.d.ts +0 -48
  559. package/dist/src/services/harness-flywheel.js +0 -207
  560. package/dist/src/services/harness-frozen-eval.d.ts +0 -22
  561. package/dist/src/services/harness-frozen-eval.js +0 -66
  562. package/dist/src/services/harness-hosts.d.ts +0 -40
  563. package/dist/src/services/harness-hosts.js +0 -88
  564. package/dist/src/services/harness-improvement-ledger.d.ts +0 -63
  565. package/dist/src/services/harness-improvement-ledger.js +0 -101
  566. package/dist/src/services/harness-loop.d.ts +0 -53
  567. package/dist/src/services/harness-loop.js +0 -85
  568. package/dist/src/services/harness-qualification.d.ts +0 -66
  569. package/dist/src/services/harness-qualification.js +0 -143
  570. package/dist/src/services/harness-replay.d.ts +0 -37
  571. package/dist/src/services/harness-replay.js +0 -92
  572. package/dist/src/services/harness-verify.d.ts +0 -33
  573. package/dist/src/services/harness-verify.js +0 -26
  574. package/dist/src/services/harness-worker.d.ts +0 -23
  575. package/dist/src/services/harness-worker.js +0 -66
  576. package/dist/src/services/headless-worker-executor.d.ts +0 -358
  577. package/dist/src/services/headless-worker-executor.js +0 -1269
  578. package/dist/src/services/index.d.ts +0 -13
  579. package/dist/src/services/index.js +0 -11
  580. package/dist/src/services/memory-backup.d.ts +0 -53
  581. package/dist/src/services/memory-backup.js +0 -198
  582. package/dist/src/services/memory-distillation.d.ts +0 -41
  583. package/dist/src/services/memory-distillation.js +0 -277
  584. package/dist/src/services/native-training.d.ts +0 -68
  585. package/dist/src/services/native-training.js +0 -141
  586. package/dist/src/services/registry-api.d.ts +0 -58
  587. package/dist/src/services/registry-api.js +0 -146
  588. package/dist/src/services/repo-supervisor.d.ts +0 -70
  589. package/dist/src/services/repo-supervisor.js +0 -228
  590. package/dist/src/services/ruvector-training.d.ts +0 -222
  591. package/dist/src/services/ruvector-training.js +0 -693
  592. package/dist/src/services/swarm-memory-branches.d.ts +0 -135
  593. package/dist/src/services/swarm-memory-branches.js +0 -213
  594. package/dist/src/services/weight-eft.d.ts +0 -305
  595. package/dist/src/services/weight-eft.js +0 -296
  596. package/dist/src/services/worker-daemon.d.ts +0 -439
  597. package/dist/src/services/worker-daemon.js +0 -1865
  598. package/dist/src/services/worker-queue.d.ts +0 -194
  599. package/dist/src/services/worker-queue.js +0 -513
  600. package/dist/src/services/workspace-lease.d.ts +0 -55
  601. package/dist/src/services/workspace-lease.js +0 -191
  602. package/dist/src/suggest.d.ts +0 -53
  603. package/dist/src/suggest.js +0 -200
  604. package/dist/src/transfer/anonymization/index.d.ts +0 -25
  605. package/dist/src/transfer/anonymization/index.js +0 -175
  606. package/dist/src/transfer/deploy-seraphine.d.ts +0 -13
  607. package/dist/src/transfer/deploy-seraphine.js +0 -205
  608. package/dist/src/transfer/export.d.ts +0 -25
  609. package/dist/src/transfer/export.js +0 -113
  610. package/dist/src/transfer/index.d.ts +0 -12
  611. package/dist/src/transfer/index.js +0 -31
  612. package/dist/src/transfer/ipfs/client.d.ts +0 -109
  613. package/dist/src/transfer/ipfs/client.js +0 -307
  614. package/dist/src/transfer/ipfs/upload.d.ts +0 -95
  615. package/dist/src/transfer/ipfs/upload.js +0 -413
  616. package/dist/src/transfer/models/seraphine.d.ts +0 -72
  617. package/dist/src/transfer/models/seraphine.js +0 -373
  618. package/dist/src/transfer/serialization/cfp.d.ts +0 -49
  619. package/dist/src/transfer/serialization/cfp.js +0 -183
  620. package/dist/src/transfer/storage/gcs.d.ts +0 -82
  621. package/dist/src/transfer/storage/gcs.js +0 -272
  622. package/dist/src/transfer/storage/index.d.ts +0 -6
  623. package/dist/src/transfer/storage/index.js +0 -6
  624. package/dist/src/transfer/store/discovery.d.ts +0 -84
  625. package/dist/src/transfer/store/discovery.js +0 -382
  626. package/dist/src/transfer/store/download.d.ts +0 -70
  627. package/dist/src/transfer/store/download.js +0 -334
  628. package/dist/src/transfer/store/index.d.ts +0 -84
  629. package/dist/src/transfer/store/index.js +0 -153
  630. package/dist/src/transfer/store/publish.d.ts +0 -76
  631. package/dist/src/transfer/store/publish.js +0 -294
  632. package/dist/src/transfer/store/registry.d.ts +0 -58
  633. package/dist/src/transfer/store/registry.js +0 -285
  634. package/dist/src/transfer/store/search.d.ts +0 -54
  635. package/dist/src/transfer/store/search.js +0 -232
  636. package/dist/src/transfer/store/tests/standalone-test.d.ts +0 -12
  637. package/dist/src/transfer/store/tests/standalone-test.js +0 -190
  638. package/dist/src/transfer/store/types.d.ts +0 -193
  639. package/dist/src/transfer/store/types.js +0 -6
  640. package/dist/src/transfer/test-seraphine.d.ts +0 -6
  641. package/dist/src/transfer/test-seraphine.js +0 -105
  642. package/dist/src/transfer/tests/test-store.d.ts +0 -7
  643. package/dist/src/transfer/tests/test-store.js +0 -214
  644. package/dist/src/transfer/types.d.ts +0 -245
  645. package/dist/src/transfer/types.js +0 -6
  646. package/dist/src/types.d.ts +0 -13
  647. package/dist/src/types.js +0 -13
  648. package/dist/src/update/checker.d.ts +0 -34
  649. package/dist/src/update/checker.js +0 -191
  650. package/dist/src/update/executor.d.ts +0 -33
  651. package/dist/src/update/executor.js +0 -217
  652. package/dist/src/update/index.d.ts +0 -33
  653. package/dist/src/update/index.js +0 -64
  654. package/dist/src/update/rate-limiter.d.ts +0 -20
  655. package/dist/src/update/rate-limiter.js +0 -96
  656. package/dist/src/update/validator.d.ts +0 -17
  657. 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