@aigentic/claude-flow 3.7.0-alpha.69

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 (807) hide show
  1. package/.claude/agents/MIGRATION_SUMMARY.md +222 -0
  2. package/.claude/agents/analysis/analyze-code-quality.md +58 -0
  3. package/.claude/agents/analysis/code-analyzer.md +189 -0
  4. package/.claude/agents/analysis/code-review/analyze-code-quality.md +58 -0
  5. package/.claude/agents/architecture/arch-system-design.md +157 -0
  6. package/.claude/agents/architecture/system-design/arch-system-design.md +36 -0
  7. package/.claude/agents/base-template-generator.md +41 -0
  8. package/.claude/agents/browser/browser-agent.yaml +182 -0
  9. package/.claude/agents/consensus/byzantine-coordinator.md +43 -0
  10. package/.claude/agents/consensus/crdt-synchronizer.md +977 -0
  11. package/.claude/agents/consensus/gossip-coordinator.md +43 -0
  12. package/.claude/agents/consensus/performance-benchmarker.md +831 -0
  13. package/.claude/agents/consensus/quorum-manager.md +803 -0
  14. package/.claude/agents/consensus/raft-manager.md +43 -0
  15. package/.claude/agents/consensus/security-manager.md +602 -0
  16. package/.claude/agents/core/coder.md +255 -0
  17. package/.claude/agents/core/planner.md +152 -0
  18. package/.claude/agents/core/researcher.md +174 -0
  19. package/.claude/agents/core/reviewer.md +309 -0
  20. package/.claude/agents/core/tester.md +300 -0
  21. package/.claude/agents/custom/test-long-runner.md +43 -0
  22. package/.claude/agents/data/data-ml-model.md +445 -0
  23. package/.claude/agents/data/ml/data-ml-model.md +76 -0
  24. package/.claude/agents/database-specialist.md +9 -0
  25. package/.claude/agents/development/backend/dev-backend-api.md +29 -0
  26. package/.claude/agents/development/dev-backend-api.md +178 -0
  27. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +52 -0
  28. package/.claude/agents/devops/ops-cicd-github.md +165 -0
  29. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +63 -0
  30. package/.claude/agents/documentation/docs-api-openapi.md +355 -0
  31. package/.claude/agents/dual-mode/codex-coordinator.md +206 -0
  32. package/.claude/agents/dual-mode/codex-worker.md +190 -0
  33. package/.claude/agents/dual-mode/dual-orchestrator.md +253 -0
  34. package/.claude/agents/flow-nexus/app-store.md +88 -0
  35. package/.claude/agents/flow-nexus/authentication.md +69 -0
  36. package/.claude/agents/flow-nexus/challenges.md +81 -0
  37. package/.claude/agents/flow-nexus/neural-network.md +88 -0
  38. package/.claude/agents/flow-nexus/payments.md +83 -0
  39. package/.claude/agents/flow-nexus/sandbox.md +76 -0
  40. package/.claude/agents/flow-nexus/swarm.md +76 -0
  41. package/.claude/agents/flow-nexus/user-tools.md +96 -0
  42. package/.claude/agents/flow-nexus/workflow.md +84 -0
  43. package/.claude/agents/github/code-review-swarm.md +521 -0
  44. package/.claude/agents/github/github-modes.md +154 -0
  45. package/.claude/agents/github/issue-tracker.md +299 -0
  46. package/.claude/agents/github/multi-repo-swarm.md +525 -0
  47. package/.claude/agents/github/pr-manager.md +163 -0
  48. package/.claude/agents/github/project-board-sync.md +478 -0
  49. package/.claude/agents/github/release-manager.md +336 -0
  50. package/.claude/agents/github/release-swarm.md +551 -0
  51. package/.claude/agents/github/repo-architect.md +365 -0
  52. package/.claude/agents/github/swarm-issue.md +548 -0
  53. package/.claude/agents/github/swarm-pr.md +399 -0
  54. package/.claude/agents/github/sync-coordinator.md +423 -0
  55. package/.claude/agents/github/workflow-automation.md +605 -0
  56. package/.claude/agents/goal/agent.md +817 -0
  57. package/.claude/agents/goal/code-goal-planner.md +445 -0
  58. package/.claude/agents/goal/goal-planner.md +168 -0
  59. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +129 -0
  60. package/.claude/agents/hive-mind/queen-coordinator.md +202 -0
  61. package/.claude/agents/hive-mind/scout-explorer.md +241 -0
  62. package/.claude/agents/hive-mind/swarm-memory-manager.md +192 -0
  63. package/.claude/agents/hive-mind/worker-specialist.md +216 -0
  64. package/.claude/agents/neural/safla-neural.md +74 -0
  65. package/.claude/agents/optimization/benchmark-suite.md +663 -0
  66. package/.claude/agents/optimization/load-balancer.md +429 -0
  67. package/.claude/agents/optimization/performance-monitor.md +670 -0
  68. package/.claude/agents/optimization/resource-allocator.md +672 -0
  69. package/.claude/agents/optimization/topology-optimizer.md +806 -0
  70. package/.claude/agents/payments/agentic-payments.md +126 -0
  71. package/.claude/agents/project-coordinator.md +8 -0
  72. package/.claude/agents/python-specialist.md +9 -0
  73. package/.claude/agents/reasoning/agent.md +817 -0
  74. package/.claude/agents/reasoning/goal-planner.md +73 -0
  75. package/.claude/agents/security-auditor.md +9 -0
  76. package/.claude/agents/sona/sona-learning-optimizer.md +65 -0
  77. package/.claude/agents/sparc/architecture.md +453 -0
  78. package/.claude/agents/sparc/pseudocode.md +299 -0
  79. package/.claude/agents/sparc/refinement.md +504 -0
  80. package/.claude/agents/sparc/specification.md +258 -0
  81. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +88 -0
  82. package/.claude/agents/specialized/spec-mobile-react-native.md +227 -0
  83. package/.claude/agents/sublinear/consensus-coordinator.md +338 -0
  84. package/.claude/agents/sublinear/matrix-optimizer.md +185 -0
  85. package/.claude/agents/sublinear/pagerank-analyzer.md +299 -0
  86. package/.claude/agents/sublinear/performance-optimizer.md +368 -0
  87. package/.claude/agents/sublinear/trading-predictor.md +246 -0
  88. package/.claude/agents/swarm/adaptive-coordinator.md +364 -0
  89. package/.claude/agents/swarm/hierarchical-coordinator.md +300 -0
  90. package/.claude/agents/swarm/mesh-coordinator.md +363 -0
  91. package/.claude/agents/templates/automation-smart-agent.md +185 -0
  92. package/.claude/agents/templates/base-template-generator.md +289 -0
  93. package/.claude/agents/templates/coordinator-swarm-init.md +83 -0
  94. package/.claude/agents/templates/github-pr-manager.md +155 -0
  95. package/.claude/agents/templates/implementer-sparc-coder.md +243 -0
  96. package/.claude/agents/templates/memory-coordinator.md +163 -0
  97. package/.claude/agents/templates/migration-plan.md +724 -0
  98. package/.claude/agents/templates/orchestrator-task.md +120 -0
  99. package/.claude/agents/templates/performance-analyzer.md +179 -0
  100. package/.claude/agents/templates/sparc-coordinator.md +163 -0
  101. package/.claude/agents/testing/production-validator.md +373 -0
  102. package/.claude/agents/testing/tdd-london-swarm.md +222 -0
  103. package/.claude/agents/testing/unit/tdd-london-swarm.md +222 -0
  104. package/.claude/agents/testing/validation/production-validator.md +373 -0
  105. package/.claude/agents/typescript-specialist.md +9 -0
  106. package/.claude/agents/v3/adr-architect.md +184 -0
  107. package/.claude/agents/v3/aidefence-guardian.md +282 -0
  108. package/.claude/agents/v3/claims-authorizer.md +208 -0
  109. package/.claude/agents/v3/collective-intelligence-coordinator.md +993 -0
  110. package/.claude/agents/v3/database-specialist.md +9 -0
  111. package/.claude/agents/v3/ddd-domain-expert.md +220 -0
  112. package/.claude/agents/v3/injection-analyst.md +236 -0
  113. package/.claude/agents/v3/memory-specialist.md +995 -0
  114. package/.claude/agents/v3/performance-engineer.md +1233 -0
  115. package/.claude/agents/v3/pii-detector.md +151 -0
  116. package/.claude/agents/v3/project-coordinator.md +8 -0
  117. package/.claude/agents/v3/python-specialist.md +9 -0
  118. package/.claude/agents/v3/reasoningbank-learner.md +213 -0
  119. package/.claude/agents/v3/security-architect-aidefence.md +410 -0
  120. package/.claude/agents/v3/security-architect.md +867 -0
  121. package/.claude/agents/v3/security-auditor.md +771 -0
  122. package/.claude/agents/v3/sparc-orchestrator.md +182 -0
  123. package/.claude/agents/v3/swarm-memory-manager.md +157 -0
  124. package/.claude/agents/v3/test-architect.md +9 -0
  125. package/.claude/agents/v3/typescript-specialist.md +9 -0
  126. package/.claude/agents/v3/v3-integration-architect.md +312 -0
  127. package/.claude/agents/v3/v3-memory-specialist.md +281 -0
  128. package/.claude/agents/v3/v3-performance-engineer.md +363 -0
  129. package/.claude/agents/v3/v3-queen-coordinator.md +63 -0
  130. package/.claude/agents/v3/v3-security-architect.md +140 -0
  131. package/.claude/checkpoints/1767754460.json +8 -0
  132. package/.claude/commands/agents/README.md +10 -0
  133. package/.claude/commands/agents/agent-capabilities.md +21 -0
  134. package/.claude/commands/agents/agent-coordination.md +28 -0
  135. package/.claude/commands/agents/agent-spawning.md +28 -0
  136. package/.claude/commands/agents/agent-types.md +26 -0
  137. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +54 -0
  138. package/.claude/commands/analysis/README.md +9 -0
  139. package/.claude/commands/analysis/bottleneck-detect.md +162 -0
  140. package/.claude/commands/analysis/performance-bottlenecks.md +59 -0
  141. package/.claude/commands/analysis/performance-report.md +25 -0
  142. package/.claude/commands/analysis/token-efficiency.md +45 -0
  143. package/.claude/commands/analysis/token-usage.md +25 -0
  144. package/.claude/commands/automation/README.md +9 -0
  145. package/.claude/commands/automation/auto-agent.md +122 -0
  146. package/.claude/commands/automation/self-healing.md +106 -0
  147. package/.claude/commands/automation/session-memory.md +90 -0
  148. package/.claude/commands/automation/smart-agents.md +73 -0
  149. package/.claude/commands/automation/smart-spawn.md +25 -0
  150. package/.claude/commands/automation/workflow-select.md +25 -0
  151. package/.claude/commands/claude-flow-help.md +103 -0
  152. package/.claude/commands/claude-flow-memory.md +107 -0
  153. package/.claude/commands/claude-flow-swarm.md +205 -0
  154. package/.claude/commands/coordination/README.md +9 -0
  155. package/.claude/commands/coordination/agent-spawn.md +25 -0
  156. package/.claude/commands/coordination/init.md +44 -0
  157. package/.claude/commands/coordination/orchestrate.md +43 -0
  158. package/.claude/commands/coordination/spawn.md +45 -0
  159. package/.claude/commands/coordination/swarm-init.md +85 -0
  160. package/.claude/commands/coordination/task-orchestrate.md +25 -0
  161. package/.claude/commands/flow-nexus/app-store.md +124 -0
  162. package/.claude/commands/flow-nexus/challenges.md +120 -0
  163. package/.claude/commands/flow-nexus/login-registration.md +65 -0
  164. package/.claude/commands/flow-nexus/neural-network.md +134 -0
  165. package/.claude/commands/flow-nexus/payments.md +116 -0
  166. package/.claude/commands/flow-nexus/sandbox.md +83 -0
  167. package/.claude/commands/flow-nexus/swarm.md +87 -0
  168. package/.claude/commands/flow-nexus/user-tools.md +152 -0
  169. package/.claude/commands/flow-nexus/workflow.md +115 -0
  170. package/.claude/commands/github/README.md +11 -0
  171. package/.claude/commands/github/code-review-swarm.md +514 -0
  172. package/.claude/commands/github/code-review.md +25 -0
  173. package/.claude/commands/github/github-modes.md +147 -0
  174. package/.claude/commands/github/github-swarm.md +121 -0
  175. package/.claude/commands/github/issue-tracker.md +292 -0
  176. package/.claude/commands/github/issue-triage.md +25 -0
  177. package/.claude/commands/github/multi-repo-swarm.md +519 -0
  178. package/.claude/commands/github/pr-enhance.md +26 -0
  179. package/.claude/commands/github/pr-manager.md +170 -0
  180. package/.claude/commands/github/project-board-sync.md +471 -0
  181. package/.claude/commands/github/release-manager.md +338 -0
  182. package/.claude/commands/github/release-swarm.md +544 -0
  183. package/.claude/commands/github/repo-analyze.md +25 -0
  184. package/.claude/commands/github/repo-architect.md +367 -0
  185. package/.claude/commands/github/swarm-issue.md +482 -0
  186. package/.claude/commands/github/swarm-pr.md +285 -0
  187. package/.claude/commands/github/sync-coordinator.md +301 -0
  188. package/.claude/commands/github/workflow-automation.md +442 -0
  189. package/.claude/commands/hive-mind/README.md +17 -0
  190. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -0
  191. package/.claude/commands/hive-mind/hive-mind-init.md +18 -0
  192. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -0
  193. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -0
  194. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -0
  195. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -0
  196. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -0
  197. package/.claude/commands/hive-mind/hive-mind-status.md +8 -0
  198. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -0
  199. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -0
  200. package/.claude/commands/hive-mind/hive-mind.md +27 -0
  201. package/.claude/commands/hooks/README.md +11 -0
  202. package/.claude/commands/hooks/overview.md +58 -0
  203. package/.claude/commands/hooks/post-edit.md +117 -0
  204. package/.claude/commands/hooks/post-task.md +112 -0
  205. package/.claude/commands/hooks/pre-edit.md +113 -0
  206. package/.claude/commands/hooks/pre-task.md +111 -0
  207. package/.claude/commands/hooks/session-end.md +118 -0
  208. package/.claude/commands/hooks/setup.md +103 -0
  209. package/.claude/commands/memory/README.md +9 -0
  210. package/.claude/commands/memory/memory-persist.md +25 -0
  211. package/.claude/commands/memory/memory-search.md +25 -0
  212. package/.claude/commands/memory/memory-usage.md +25 -0
  213. package/.claude/commands/memory/neural.md +47 -0
  214. package/.claude/commands/monitoring/README.md +9 -0
  215. package/.claude/commands/monitoring/agent-metrics.md +25 -0
  216. package/.claude/commands/monitoring/agents.md +44 -0
  217. package/.claude/commands/monitoring/real-time-view.md +25 -0
  218. package/.claude/commands/monitoring/status.md +46 -0
  219. package/.claude/commands/monitoring/swarm-monitor.md +25 -0
  220. package/.claude/commands/optimization/README.md +9 -0
  221. package/.claude/commands/optimization/auto-topology.md +62 -0
  222. package/.claude/commands/optimization/cache-manage.md +25 -0
  223. package/.claude/commands/optimization/parallel-execute.md +25 -0
  224. package/.claude/commands/optimization/parallel-execution.md +50 -0
  225. package/.claude/commands/optimization/topology-optimize.md +25 -0
  226. package/.claude/commands/pair/README.md +261 -0
  227. package/.claude/commands/pair/commands.md +546 -0
  228. package/.claude/commands/pair/config.md +510 -0
  229. package/.claude/commands/pair/examples.md +512 -0
  230. package/.claude/commands/pair/modes.md +348 -0
  231. package/.claude/commands/pair/session.md +407 -0
  232. package/.claude/commands/pair/start.md +209 -0
  233. package/.claude/commands/sparc/analyzer.md +52 -0
  234. package/.claude/commands/sparc/architect.md +53 -0
  235. package/.claude/commands/sparc/ask.md +97 -0
  236. package/.claude/commands/sparc/batch-executor.md +54 -0
  237. package/.claude/commands/sparc/code.md +89 -0
  238. package/.claude/commands/sparc/coder.md +54 -0
  239. package/.claude/commands/sparc/debug.md +83 -0
  240. package/.claude/commands/sparc/debugger.md +54 -0
  241. package/.claude/commands/sparc/designer.md +53 -0
  242. package/.claude/commands/sparc/devops.md +109 -0
  243. package/.claude/commands/sparc/docs-writer.md +80 -0
  244. package/.claude/commands/sparc/documenter.md +54 -0
  245. package/.claude/commands/sparc/innovator.md +54 -0
  246. package/.claude/commands/sparc/integration.md +83 -0
  247. package/.claude/commands/sparc/mcp.md +117 -0
  248. package/.claude/commands/sparc/memory-manager.md +54 -0
  249. package/.claude/commands/sparc/optimizer.md +54 -0
  250. package/.claude/commands/sparc/orchestrator.md +132 -0
  251. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -0
  252. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -0
  253. package/.claude/commands/sparc/researcher.md +54 -0
  254. package/.claude/commands/sparc/reviewer.md +54 -0
  255. package/.claude/commands/sparc/security-review.md +80 -0
  256. package/.claude/commands/sparc/sparc-modes.md +174 -0
  257. package/.claude/commands/sparc/sparc.md +111 -0
  258. package/.claude/commands/sparc/spec-pseudocode.md +80 -0
  259. package/.claude/commands/sparc/supabase-admin.md +348 -0
  260. package/.claude/commands/sparc/swarm-coordinator.md +54 -0
  261. package/.claude/commands/sparc/tdd.md +54 -0
  262. package/.claude/commands/sparc/tester.md +54 -0
  263. package/.claude/commands/sparc/tutorial.md +79 -0
  264. package/.claude/commands/sparc/workflow-manager.md +54 -0
  265. package/.claude/commands/sparc.md +166 -0
  266. package/.claude/commands/stream-chain/pipeline.md +121 -0
  267. package/.claude/commands/stream-chain/run.md +70 -0
  268. package/.claude/commands/swarm/README.md +15 -0
  269. package/.claude/commands/swarm/analysis.md +95 -0
  270. package/.claude/commands/swarm/development.md +96 -0
  271. package/.claude/commands/swarm/examples.md +168 -0
  272. package/.claude/commands/swarm/maintenance.md +102 -0
  273. package/.claude/commands/swarm/optimization.md +117 -0
  274. package/.claude/commands/swarm/research.md +136 -0
  275. package/.claude/commands/swarm/swarm-analysis.md +8 -0
  276. package/.claude/commands/swarm/swarm-background.md +8 -0
  277. package/.claude/commands/swarm/swarm-init.md +19 -0
  278. package/.claude/commands/swarm/swarm-modes.md +8 -0
  279. package/.claude/commands/swarm/swarm-monitor.md +8 -0
  280. package/.claude/commands/swarm/swarm-spawn.md +19 -0
  281. package/.claude/commands/swarm/swarm-status.md +8 -0
  282. package/.claude/commands/swarm/swarm-strategies.md +8 -0
  283. package/.claude/commands/swarm/swarm.md +27 -0
  284. package/.claude/commands/swarm/testing.md +131 -0
  285. package/.claude/commands/training/README.md +9 -0
  286. package/.claude/commands/training/model-update.md +25 -0
  287. package/.claude/commands/training/neural-patterns.md +74 -0
  288. package/.claude/commands/training/neural-train.md +25 -0
  289. package/.claude/commands/training/pattern-learn.md +25 -0
  290. package/.claude/commands/training/specialization.md +63 -0
  291. package/.claude/commands/truth/start.md +143 -0
  292. package/.claude/commands/verify/check.md +50 -0
  293. package/.claude/commands/verify/start.md +128 -0
  294. package/.claude/commands/workflows/README.md +9 -0
  295. package/.claude/commands/workflows/development.md +78 -0
  296. package/.claude/commands/workflows/research.md +63 -0
  297. package/.claude/commands/workflows/workflow-create.md +25 -0
  298. package/.claude/commands/workflows/workflow-execute.md +25 -0
  299. package/.claude/commands/workflows/workflow-export.md +25 -0
  300. package/.claude/config/v3-dependency-optimization.json +266 -0
  301. package/.claude/config/v3-performance-targets.json +251 -0
  302. package/.claude/helpers/README.md +97 -0
  303. package/.claude/helpers/adr-compliance.sh +186 -0
  304. package/.claude/helpers/aggressive-microcompact.mjs +36 -0
  305. package/.claude/helpers/auto-commit.sh +178 -0
  306. package/.claude/helpers/auto-memory-hook.mjs +564 -0
  307. package/.claude/helpers/checkpoint-manager.sh +251 -0
  308. package/.claude/helpers/context-persistence-hook.mjs +1979 -0
  309. package/.claude/helpers/daemon-manager.sh +252 -0
  310. package/.claude/helpers/ddd-tracker.sh +144 -0
  311. package/.claude/helpers/github-safe.js +106 -0
  312. package/.claude/helpers/github-setup.sh +28 -0
  313. package/.claude/helpers/guidance-hook.sh +13 -0
  314. package/.claude/helpers/guidance-hooks.sh +102 -0
  315. package/.claude/helpers/health-monitor.sh +108 -0
  316. package/.claude/helpers/hook-handler.cjs +269 -0
  317. package/.claude/helpers/intelligence.cjs +230 -0
  318. package/.claude/helpers/learning-hooks.sh +329 -0
  319. package/.claude/helpers/learning-optimizer.sh +127 -0
  320. package/.claude/helpers/learning-service.mjs +1144 -0
  321. package/.claude/helpers/memory.cjs +84 -0
  322. package/.claude/helpers/memory.js +83 -0
  323. package/.claude/helpers/metrics-db.mjs +488 -0
  324. package/.claude/helpers/patch-aggressive-prune.mjs +184 -0
  325. package/.claude/helpers/pattern-consolidator.sh +86 -0
  326. package/.claude/helpers/perf-worker.sh +160 -0
  327. package/.claude/helpers/post-commit +16 -0
  328. package/.claude/helpers/pre-commit +26 -0
  329. package/.claude/helpers/quick-start.sh +19 -0
  330. package/.claude/helpers/router.cjs +62 -0
  331. package/.claude/helpers/router.js +66 -0
  332. package/.claude/helpers/security-scanner.sh +127 -0
  333. package/.claude/helpers/session.cjs +125 -0
  334. package/.claude/helpers/session.js +135 -0
  335. package/.claude/helpers/setup-mcp.sh +18 -0
  336. package/.claude/helpers/standard-checkpoint-hooks.sh +189 -0
  337. package/.claude/helpers/statusline-hook.sh +21 -0
  338. package/.claude/helpers/statusline.cjs +878 -0
  339. package/.claude/helpers/statusline.js +352 -0
  340. package/.claude/helpers/swarm-comms.sh +353 -0
  341. package/.claude/helpers/swarm-hooks.sh +761 -0
  342. package/.claude/helpers/swarm-monitor.sh +211 -0
  343. package/.claude/helpers/sync-v3-metrics.sh +245 -0
  344. package/.claude/helpers/update-v3-progress.sh +166 -0
  345. package/.claude/helpers/v3-quick-status.sh +58 -0
  346. package/.claude/helpers/v3.sh +111 -0
  347. package/.claude/helpers/validate-v3-config.sh +216 -0
  348. package/.claude/helpers/worker-manager.sh +170 -0
  349. package/.claude/mcp.json +13 -0
  350. package/.claude/scheduled_tasks.lock +1 -0
  351. package/.claude/settings.json +285 -0
  352. package/.claude/settings.json.bak +526 -0
  353. package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
  354. package/.claude/skills/agentdb-learning/SKILL.md +545 -0
  355. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
  356. package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
  357. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
  358. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
  359. package/.claude/skills/browser/SKILL.md +204 -0
  360. package/.claude/skills/dual-mode/README.md +71 -0
  361. package/.claude/skills/dual-mode/dual-collect.md +103 -0
  362. package/.claude/skills/dual-mode/dual-coordinate.md +85 -0
  363. package/.claude/skills/dual-mode/dual-spawn.md +81 -0
  364. package/.claude/skills/flow-nexus-neural/SKILL.md +727 -0
  365. package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -0
  366. package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -0
  367. package/.claude/skills/github-code-review/SKILL.md +1125 -0
  368. package/.claude/skills/github-multi-repo/SKILL.md +862 -0
  369. package/.claude/skills/github-project-management/SKILL.md +1263 -0
  370. package/.claude/skills/github-release-management/SKILL.md +1064 -0
  371. package/.claude/skills/github-workflow-automation/SKILL.md +1047 -0
  372. package/.claude/skills/hive-mind-advanced/SKILL.md +709 -0
  373. package/.claude/skills/hooks-automation/SKILL.md +1201 -0
  374. package/.claude/skills/pair-programming/SKILL.md +1202 -0
  375. package/.claude/skills/performance-analysis/SKILL.md +560 -0
  376. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
  377. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
  378. package/.claude/skills/skill-builder/SKILL.md +910 -0
  379. package/.claude/skills/sparc-methodology/SKILL.md +1106 -0
  380. package/.claude/skills/stream-chain/SKILL.md +560 -0
  381. package/.claude/skills/swarm-advanced/SKILL.md +970 -0
  382. package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
  383. package/.claude/skills/v3-cli-modernization/SKILL.md +872 -0
  384. package/.claude/skills/v3-core-implementation/SKILL.md +797 -0
  385. package/.claude/skills/v3-ddd-architecture/SKILL.md +442 -0
  386. package/.claude/skills/v3-integration-deep/SKILL.md +241 -0
  387. package/.claude/skills/v3-mcp-optimization/SKILL.md +777 -0
  388. package/.claude/skills/v3-memory-unification/SKILL.md +174 -0
  389. package/.claude/skills/v3-performance-optimization/SKILL.md +390 -0
  390. package/.claude/skills/v3-security-overhaul/SKILL.md +82 -0
  391. package/.claude/skills/v3-swarm-coordination/SKILL.md +340 -0
  392. package/.claude/skills/verification-quality/SKILL.md +691 -0
  393. package/.claude/skills/worker-benchmarks/SKILL.md +129 -0
  394. package/.claude/skills/worker-integration/SKILL.md +147 -0
  395. package/.claude/statusline-command.sh +176 -0
  396. package/.claude/statusline.mjs +109 -0
  397. package/.claude/statusline.sh +431 -0
  398. package/.claude-plugin/README.md +720 -0
  399. package/.claude-plugin/docs/INSTALLATION.md +261 -0
  400. package/.claude-plugin/docs/PLUGIN_SUMMARY.md +361 -0
  401. package/.claude-plugin/docs/QUICKSTART.md +361 -0
  402. package/.claude-plugin/docs/STRUCTURE.md +128 -0
  403. package/.claude-plugin/hooks/hooks.json +75 -0
  404. package/.claude-plugin/marketplace.json +170 -0
  405. package/.claude-plugin/plugin.json +71 -0
  406. package/.claude-plugin/scripts/install.sh +234 -0
  407. package/.claude-plugin/scripts/ruflo-hook.sh +33 -0
  408. package/.claude-plugin/scripts/uninstall.sh +36 -0
  409. package/.claude-plugin/scripts/verify.sh +108 -0
  410. package/LICENSE +21 -0
  411. package/README.md +410 -0
  412. package/bin/cli.js +11 -0
  413. package/bin/npx-repair.js +7 -0
  414. package/bin/npx-safe-launch.js +9 -0
  415. package/package.json +159 -0
  416. package/v3/@claude-flow/cli/README.md +410 -0
  417. package/v3/@claude-flow/cli/bin/cli.js +233 -0
  418. package/v3/@claude-flow/cli/bin/mcp-server.js +224 -0
  419. package/v3/@claude-flow/cli/bin/preinstall.cjs +2 -0
  420. package/v3/@claude-flow/cli/dist/src/appliance/gguf-engine.d.ts +91 -0
  421. package/v3/@claude-flow/cli/dist/src/appliance/gguf-engine.js +425 -0
  422. package/v3/@claude-flow/cli/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
  423. package/v3/@claude-flow/cli/dist/src/appliance/ruvllm-bridge.js +292 -0
  424. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-builder.d.ts +44 -0
  425. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-builder.js +329 -0
  426. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-distribution.d.ts +97 -0
  427. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-distribution.js +370 -0
  428. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-format.d.ts +111 -0
  429. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-format.js +393 -0
  430. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-runner.d.ts +69 -0
  431. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-runner.js +237 -0
  432. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-signing.d.ts +123 -0
  433. package/v3/@claude-flow/cli/dist/src/appliance/rvfa-signing.js +347 -0
  434. package/v3/@claude-flow/cli/dist/src/autopilot-state.d.ts +77 -0
  435. package/v3/@claude-flow/cli/dist/src/autopilot-state.js +271 -0
  436. package/v3/@claude-flow/cli/dist/src/benchmarks/pretrain/index.d.ts +58 -0
  437. package/v3/@claude-flow/cli/dist/src/benchmarks/pretrain/index.js +404 -0
  438. package/v3/@claude-flow/cli/dist/src/commands/agent-wasm.d.ts +14 -0
  439. package/v3/@claude-flow/cli/dist/src/commands/agent-wasm.js +333 -0
  440. package/v3/@claude-flow/cli/dist/src/commands/agent.d.ts +8 -0
  441. package/v3/@claude-flow/cli/dist/src/commands/agent.js +927 -0
  442. package/v3/@claude-flow/cli/dist/src/commands/analyze.d.ts +19 -0
  443. package/v3/@claude-flow/cli/dist/src/commands/analyze.js +2048 -0
  444. package/v3/@claude-flow/cli/dist/src/commands/appliance-advanced.d.ts +9 -0
  445. package/v3/@claude-flow/cli/dist/src/commands/appliance-advanced.js +215 -0
  446. package/v3/@claude-flow/cli/dist/src/commands/appliance.d.ts +8 -0
  447. package/v3/@claude-flow/cli/dist/src/commands/appliance.js +404 -0
  448. package/v3/@claude-flow/cli/dist/src/commands/autopilot.d.ts +15 -0
  449. package/v3/@claude-flow/cli/dist/src/commands/autopilot.js +362 -0
  450. package/v3/@claude-flow/cli/dist/src/commands/benchmark.d.ts +10 -0
  451. package/v3/@claude-flow/cli/dist/src/commands/benchmark.js +460 -0
  452. package/v3/@claude-flow/cli/dist/src/commands/claims.d.ts +10 -0
  453. package/v3/@claude-flow/cli/dist/src/commands/claims.js +620 -0
  454. package/v3/@claude-flow/cli/dist/src/commands/cleanup.d.ts +13 -0
  455. package/v3/@claude-flow/cli/dist/src/commands/cleanup.js +250 -0
  456. package/v3/@claude-flow/cli/dist/src/commands/completions.d.ts +10 -0
  457. package/v3/@claude-flow/cli/dist/src/commands/completions.js +539 -0
  458. package/v3/@claude-flow/cli/dist/src/commands/config.d.ts +8 -0
  459. package/v3/@claude-flow/cli/dist/src/commands/config.js +430 -0
  460. package/v3/@claude-flow/cli/dist/src/commands/daemon.d.ts +28 -0
  461. package/v3/@claude-flow/cli/dist/src/commands/daemon.js +1093 -0
  462. package/v3/@claude-flow/cli/dist/src/commands/deployment.d.ts +10 -0
  463. package/v3/@claude-flow/cli/dist/src/commands/deployment.js +672 -0
  464. package/v3/@claude-flow/cli/dist/src/commands/doctor.d.ts +10 -0
  465. package/v3/@claude-flow/cli/dist/src/commands/doctor.js +885 -0
  466. package/v3/@claude-flow/cli/dist/src/commands/embeddings.d.ts +18 -0
  467. package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +1623 -0
  468. package/v3/@claude-flow/cli/dist/src/commands/guidance.d.ts +8 -0
  469. package/v3/@claude-flow/cli/dist/src/commands/guidance.js +556 -0
  470. package/v3/@claude-flow/cli/dist/src/commands/hive-mind.d.ts +11 -0
  471. package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +1297 -0
  472. package/v3/@claude-flow/cli/dist/src/commands/hooks.d.ts +8 -0
  473. package/v3/@claude-flow/cli/dist/src/commands/hooks.js +4499 -0
  474. package/v3/@claude-flow/cli/dist/src/commands/index.d.ts +118 -0
  475. package/v3/@claude-flow/cli/dist/src/commands/index.js +344 -0
  476. package/v3/@claude-flow/cli/dist/src/commands/init.d.ts +8 -0
  477. package/v3/@claude-flow/cli/dist/src/commands/init.js +997 -0
  478. package/v3/@claude-flow/cli/dist/src/commands/issues.d.ts +21 -0
  479. package/v3/@claude-flow/cli/dist/src/commands/issues.js +567 -0
  480. package/v3/@claude-flow/cli/dist/src/commands/mcp.d.ts +11 -0
  481. package/v3/@claude-flow/cli/dist/src/commands/mcp.js +718 -0
  482. package/v3/@claude-flow/cli/dist/src/commands/memory.d.ts +8 -0
  483. package/v3/@claude-flow/cli/dist/src/commands/memory.js +1456 -0
  484. package/v3/@claude-flow/cli/dist/src/commands/migrate.d.ts +8 -0
  485. package/v3/@claude-flow/cli/dist/src/commands/migrate.js +742 -0
  486. package/v3/@claude-flow/cli/dist/src/commands/neural.d.ts +10 -0
  487. package/v3/@claude-flow/cli/dist/src/commands/neural.js +1531 -0
  488. package/v3/@claude-flow/cli/dist/src/commands/performance.d.ts +10 -0
  489. package/v3/@claude-flow/cli/dist/src/commands/performance.js +583 -0
  490. package/v3/@claude-flow/cli/dist/src/commands/plugins.d.ts +11 -0
  491. package/v3/@claude-flow/cli/dist/src/commands/plugins.js +826 -0
  492. package/v3/@claude-flow/cli/dist/src/commands/process.d.ts +10 -0
  493. package/v3/@claude-flow/cli/dist/src/commands/process.js +694 -0
  494. package/v3/@claude-flow/cli/dist/src/commands/progress.d.ts +11 -0
  495. package/v3/@claude-flow/cli/dist/src/commands/progress.js +259 -0
  496. package/v3/@claude-flow/cli/dist/src/commands/providers.d.ts +10 -0
  497. package/v3/@claude-flow/cli/dist/src/commands/providers.js +502 -0
  498. package/v3/@claude-flow/cli/dist/src/commands/route.d.ts +16 -0
  499. package/v3/@claude-flow/cli/dist/src/commands/route.js +813 -0
  500. package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.d.ts +11 -0
  501. package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +747 -0
  502. package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.d.ts +11 -0
  503. package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +490 -0
  504. package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.d.ts +18 -0
  505. package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +373 -0
  506. package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.d.ts +29 -0
  507. package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.js +129 -0
  508. package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.d.ts +11 -0
  509. package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +467 -0
  510. package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.d.ts +11 -0
  511. package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +498 -0
  512. package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.d.ts +11 -0
  513. package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +505 -0
  514. package/v3/@claude-flow/cli/dist/src/commands/ruvector/pg-utils.d.ts +14 -0
  515. package/v3/@claude-flow/cli/dist/src/commands/ruvector/pg-utils.js +41 -0
  516. package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.d.ts +18 -0
  517. package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +765 -0
  518. package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.d.ts +11 -0
  519. package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +479 -0
  520. package/v3/@claude-flow/cli/dist/src/commands/security.d.ts +10 -0
  521. package/v3/@claude-flow/cli/dist/src/commands/security.js +920 -0
  522. package/v3/@claude-flow/cli/dist/src/commands/session.d.ts +8 -0
  523. package/v3/@claude-flow/cli/dist/src/commands/session.js +757 -0
  524. package/v3/@claude-flow/cli/dist/src/commands/start.d.ts +8 -0
  525. package/v3/@claude-flow/cli/dist/src/commands/start.js +418 -0
  526. package/v3/@claude-flow/cli/dist/src/commands/status.d.ts +8 -0
  527. package/v3/@claude-flow/cli/dist/src/commands/status.js +591 -0
  528. package/v3/@claude-flow/cli/dist/src/commands/swarm.d.ts +8 -0
  529. package/v3/@claude-flow/cli/dist/src/commands/swarm.js +887 -0
  530. package/v3/@claude-flow/cli/dist/src/commands/task.d.ts +8 -0
  531. package/v3/@claude-flow/cli/dist/src/commands/task.js +675 -0
  532. package/v3/@claude-flow/cli/dist/src/commands/transfer-store.d.ts +13 -0
  533. package/v3/@claude-flow/cli/dist/src/commands/transfer-store.js +428 -0
  534. package/v3/@claude-flow/cli/dist/src/commands/update.d.ts +8 -0
  535. package/v3/@claude-flow/cli/dist/src/commands/update.js +276 -0
  536. package/v3/@claude-flow/cli/dist/src/commands/verify.d.ts +19 -0
  537. package/v3/@claude-flow/cli/dist/src/commands/verify.js +261 -0
  538. package/v3/@claude-flow/cli/dist/src/commands/workflow.d.ts +8 -0
  539. package/v3/@claude-flow/cli/dist/src/commands/workflow.js +617 -0
  540. package/v3/@claude-flow/cli/dist/src/config-adapter.d.ts +15 -0
  541. package/v3/@claude-flow/cli/dist/src/config-adapter.js +186 -0
  542. package/v3/@claude-flow/cli/dist/src/encryption/vault.d.ts +94 -0
  543. package/v3/@claude-flow/cli/dist/src/encryption/vault.js +172 -0
  544. package/v3/@claude-flow/cli/dist/src/fs-secure.d.ts +67 -0
  545. package/v3/@claude-flow/cli/dist/src/fs-secure.js +74 -0
  546. package/v3/@claude-flow/cli/dist/src/index.d.ts +81 -0
  547. package/v3/@claude-flow/cli/dist/src/index.js +538 -0
  548. package/v3/@claude-flow/cli/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
  549. package/v3/@claude-flow/cli/dist/src/infrastructure/in-memory-repositories.js +264 -0
  550. package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.d.ts +16 -0
  551. package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +363 -0
  552. package/v3/@claude-flow/cli/dist/src/init/executor.d.ts +41 -0
  553. package/v3/@claude-flow/cli/dist/src/init/executor.js +1904 -0
  554. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.d.ts +60 -0
  555. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +1185 -0
  556. package/v3/@claude-flow/cli/dist/src/init/index.d.ts +13 -0
  557. package/v3/@claude-flow/cli/dist/src/init/index.js +15 -0
  558. package/v3/@claude-flow/cli/dist/src/init/mcp-generator.d.ts +26 -0
  559. package/v3/@claude-flow/cli/dist/src/init/mcp-generator.js +116 -0
  560. package/v3/@claude-flow/cli/dist/src/init/settings-generator.d.ts +14 -0
  561. package/v3/@claude-flow/cli/dist/src/init/settings-generator.js +456 -0
  562. package/v3/@claude-flow/cli/dist/src/init/statusline-generator.d.ts +28 -0
  563. package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +937 -0
  564. package/v3/@claude-flow/cli/dist/src/init/types.d.ts +308 -0
  565. package/v3/@claude-flow/cli/dist/src/init/types.js +263 -0
  566. package/v3/@claude-flow/cli/dist/src/log-filters.d.ts +22 -0
  567. package/v3/@claude-flow/cli/dist/src/log-filters.js +36 -0
  568. package/v3/@claude-flow/cli/dist/src/mcp-client.d.ts +92 -0
  569. package/v3/@claude-flow/cli/dist/src/mcp-client.js +287 -0
  570. package/v3/@claude-flow/cli/dist/src/mcp-server.d.ts +163 -0
  571. package/v3/@claude-flow/cli/dist/src/mcp-server.js +732 -0
  572. package/v3/@claude-flow/cli/dist/src/mcp-tools/agent-execute-core.d.ts +92 -0
  573. package/v3/@claude-flow/cli/dist/src/mcp-tools/agent-execute-core.js +328 -0
  574. package/v3/@claude-flow/cli/dist/src/mcp-tools/agent-tools.d.ts +9 -0
  575. package/v3/@claude-flow/cli/dist/src/mcp-tools/agent-tools.js +716 -0
  576. package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.d.ts +33 -0
  577. package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +867 -0
  578. package/v3/@claude-flow/cli/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
  579. package/v3/@claude-flow/cli/dist/src/mcp-tools/analyze-tools.js +346 -0
  580. package/v3/@claude-flow/cli/dist/src/mcp-tools/auto-install.d.ts +83 -0
  581. package/v3/@claude-flow/cli/dist/src/mcp-tools/auto-install.js +131 -0
  582. package/v3/@claude-flow/cli/dist/src/mcp-tools/autopilot-tools.d.ts +12 -0
  583. package/v3/@claude-flow/cli/dist/src/mcp-tools/autopilot-tools.js +231 -0
  584. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-session-tools.d.ts +23 -0
  585. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-session-tools.js +324 -0
  586. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-tools.d.ts +13 -0
  587. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-tools.js +757 -0
  588. package/v3/@claude-flow/cli/dist/src/mcp-tools/claims-tools.d.ts +12 -0
  589. package/v3/@claude-flow/cli/dist/src/mcp-tools/claims-tools.js +863 -0
  590. package/v3/@claude-flow/cli/dist/src/mcp-tools/config-tools.d.ts +8 -0
  591. package/v3/@claude-flow/cli/dist/src/mcp-tools/config-tools.js +411 -0
  592. package/v3/@claude-flow/cli/dist/src/mcp-tools/coordination-tools.d.ts +13 -0
  593. package/v3/@claude-flow/cli/dist/src/mcp-tools/coordination-tools.js +729 -0
  594. package/v3/@claude-flow/cli/dist/src/mcp-tools/daa-tools.d.ts +13 -0
  595. package/v3/@claude-flow/cli/dist/src/mcp-tools/daa-tools.js +534 -0
  596. package/v3/@claude-flow/cli/dist/src/mcp-tools/embeddings-tools.d.ts +9 -0
  597. package/v3/@claude-flow/cli/dist/src/mcp-tools/embeddings-tools.js +904 -0
  598. package/v3/@claude-flow/cli/dist/src/mcp-tools/github-tools.d.ts +9 -0
  599. package/v3/@claude-flow/cli/dist/src/mcp-tools/github-tools.js +659 -0
  600. package/v3/@claude-flow/cli/dist/src/mcp-tools/guidance-tools.d.ts +15 -0
  601. package/v3/@claude-flow/cli/dist/src/mcp-tools/guidance-tools.js +639 -0
  602. package/v3/@claude-flow/cli/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
  603. package/v3/@claude-flow/cli/dist/src/mcp-tools/hive-mind-tools.js +953 -0
  604. package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.d.ts +46 -0
  605. package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +3939 -0
  606. package/v3/@claude-flow/cli/dist/src/mcp-tools/index.d.ts +27 -0
  607. package/v3/@claude-flow/cli/dist/src/mcp-tools/index.js +26 -0
  608. package/v3/@claude-flow/cli/dist/src/mcp-tools/managed-agent-tools.d.ts +22 -0
  609. package/v3/@claude-flow/cli/dist/src/mcp-tools/managed-agent-tools.js +357 -0
  610. package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.d.ts +14 -0
  611. package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js +1240 -0
  612. package/v3/@claude-flow/cli/dist/src/mcp-tools/neural-tools.d.ts +16 -0
  613. package/v3/@claude-flow/cli/dist/src/mcp-tools/neural-tools.js +793 -0
  614. package/v3/@claude-flow/cli/dist/src/mcp-tools/performance-tools.d.ts +16 -0
  615. package/v3/@claude-flow/cli/dist/src/mcp-tools/performance-tools.js +675 -0
  616. package/v3/@claude-flow/cli/dist/src/mcp-tools/progress-tools.d.ts +14 -0
  617. package/v3/@claude-flow/cli/dist/src/mcp-tools/progress-tools.js +348 -0
  618. package/v3/@claude-flow/cli/dist/src/mcp-tools/request-tracker.d.ts +17 -0
  619. package/v3/@claude-flow/cli/dist/src/mcp-tools/request-tracker.js +27 -0
  620. package/v3/@claude-flow/cli/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
  621. package/v3/@claude-flow/cli/dist/src/mcp-tools/ruvllm-tools.js +339 -0
  622. package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.d.ts +18 -0
  623. package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.js +556 -0
  624. package/v3/@claude-flow/cli/dist/src/mcp-tools/session-tools.d.ts +8 -0
  625. package/v3/@claude-flow/cli/dist/src/mcp-tools/session-tools.js +517 -0
  626. package/v3/@claude-flow/cli/dist/src/mcp-tools/swarm-tools.d.ts +9 -0
  627. package/v3/@claude-flow/cli/dist/src/mcp-tools/swarm-tools.js +388 -0
  628. package/v3/@claude-flow/cli/dist/src/mcp-tools/system-tools.d.ts +13 -0
  629. package/v3/@claude-flow/cli/dist/src/mcp-tools/system-tools.js +674 -0
  630. package/v3/@claude-flow/cli/dist/src/mcp-tools/task-tools.d.ts +8 -0
  631. package/v3/@claude-flow/cli/dist/src/mcp-tools/task-tools.js +487 -0
  632. package/v3/@claude-flow/cli/dist/src/mcp-tools/terminal-tools.d.ts +8 -0
  633. package/v3/@claude-flow/cli/dist/src/mcp-tools/terminal-tools.js +306 -0
  634. package/v3/@claude-flow/cli/dist/src/mcp-tools/transfer-tools.d.ts +14 -0
  635. package/v3/@claude-flow/cli/dist/src/mcp-tools/transfer-tools.js +447 -0
  636. package/v3/@claude-flow/cli/dist/src/mcp-tools/types.d.ts +8 -0
  637. package/v3/@claude-flow/cli/dist/src/mcp-tools/types.js +8 -0
  638. package/v3/@claude-flow/cli/dist/src/mcp-tools/validate-input.d.ts +9 -0
  639. package/v3/@claude-flow/cli/dist/src/mcp-tools/validate-input.js +9 -0
  640. package/v3/@claude-flow/cli/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
  641. package/v3/@claude-flow/cli/dist/src/mcp-tools/wasm-agent-tools.js +291 -0
  642. package/v3/@claude-flow/cli/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
  643. package/v3/@claude-flow/cli/dist/src/mcp-tools/workflow-tools.js +884 -0
  644. package/v3/@claude-flow/cli/dist/src/memory/ewc-consolidation.d.ts +295 -0
  645. package/v3/@claude-flow/cli/dist/src/memory/ewc-consolidation.js +601 -0
  646. package/v3/@claude-flow/cli/dist/src/memory/intelligence.d.ts +357 -0
  647. package/v3/@claude-flow/cli/dist/src/memory/intelligence.js +1200 -0
  648. package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.d.ts +492 -0
  649. package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +2101 -0
  650. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.d.ts +420 -0
  651. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +2376 -0
  652. package/v3/@claude-flow/cli/dist/src/memory/neural-package-bridge.d.ts +48 -0
  653. package/v3/@claude-flow/cli/dist/src/memory/neural-package-bridge.js +87 -0
  654. package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.d.ts +60 -0
  655. package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +242 -0
  656. package/v3/@claude-flow/cli/dist/src/memory/sona-optimizer.d.ts +267 -0
  657. package/v3/@claude-flow/cli/dist/src/memory/sona-optimizer.js +779 -0
  658. package/v3/@claude-flow/cli/dist/src/output.d.ts +9 -0
  659. package/v3/@claude-flow/cli/dist/src/output.js +9 -0
  660. package/v3/@claude-flow/cli/dist/src/parser.d.ts +69 -0
  661. package/v3/@claude-flow/cli/dist/src/parser.js +473 -0
  662. package/v3/@claude-flow/cli/dist/src/plugins/manager.d.ts +133 -0
  663. package/v3/@claude-flow/cli/dist/src/plugins/manager.js +402 -0
  664. package/v3/@claude-flow/cli/dist/src/plugins/store/discovery.d.ts +91 -0
  665. package/v3/@claude-flow/cli/dist/src/plugins/store/discovery.js +1202 -0
  666. package/v3/@claude-flow/cli/dist/src/plugins/store/index.d.ts +76 -0
  667. package/v3/@claude-flow/cli/dist/src/plugins/store/index.js +141 -0
  668. package/v3/@claude-flow/cli/dist/src/plugins/store/search.d.ts +46 -0
  669. package/v3/@claude-flow/cli/dist/src/plugins/store/search.js +230 -0
  670. package/v3/@claude-flow/cli/dist/src/plugins/store/types.d.ts +274 -0
  671. package/v3/@claude-flow/cli/dist/src/plugins/store/types.js +7 -0
  672. package/v3/@claude-flow/cli/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
  673. package/v3/@claude-flow/cli/dist/src/plugins/tests/demo-plugin-store.js +126 -0
  674. package/v3/@claude-flow/cli/dist/src/plugins/tests/standalone-test.d.ts +12 -0
  675. package/v3/@claude-flow/cli/dist/src/plugins/tests/standalone-test.js +188 -0
  676. package/v3/@claude-flow/cli/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
  677. package/v3/@claude-flow/cli/dist/src/plugins/tests/test-plugin-store.js +206 -0
  678. package/v3/@claude-flow/cli/dist/src/production/circuit-breaker.d.ts +101 -0
  679. package/v3/@claude-flow/cli/dist/src/production/circuit-breaker.js +241 -0
  680. package/v3/@claude-flow/cli/dist/src/production/error-handler.d.ts +92 -0
  681. package/v3/@claude-flow/cli/dist/src/production/error-handler.js +299 -0
  682. package/v3/@claude-flow/cli/dist/src/production/index.d.ts +23 -0
  683. package/v3/@claude-flow/cli/dist/src/production/index.js +18 -0
  684. package/v3/@claude-flow/cli/dist/src/production/monitoring.d.ts +161 -0
  685. package/v3/@claude-flow/cli/dist/src/production/monitoring.js +356 -0
  686. package/v3/@claude-flow/cli/dist/src/production/rate-limiter.d.ts +80 -0
  687. package/v3/@claude-flow/cli/dist/src/production/rate-limiter.js +201 -0
  688. package/v3/@claude-flow/cli/dist/src/production/retry.d.ts +48 -0
  689. package/v3/@claude-flow/cli/dist/src/production/retry.js +179 -0
  690. package/v3/@claude-flow/cli/dist/src/prompt.d.ts +44 -0
  691. package/v3/@claude-flow/cli/dist/src/prompt.js +501 -0
  692. package/v3/@claude-flow/cli/dist/src/runtime/headless.d.ts +60 -0
  693. package/v3/@claude-flow/cli/dist/src/runtime/headless.js +284 -0
  694. package/v3/@claude-flow/cli/dist/src/ruvector/agent-wasm.d.ts +193 -0
  695. package/v3/@claude-flow/cli/dist/src/ruvector/agent-wasm.js +354 -0
  696. package/v3/@claude-flow/cli/dist/src/ruvector/ast-analyzer.d.ts +67 -0
  697. package/v3/@claude-flow/cli/dist/src/ruvector/ast-analyzer.js +277 -0
  698. package/v3/@claude-flow/cli/dist/src/ruvector/coverage-router.d.ts +160 -0
  699. package/v3/@claude-flow/cli/dist/src/ruvector/coverage-router.js +531 -0
  700. package/v3/@claude-flow/cli/dist/src/ruvector/coverage-tools.d.ts +33 -0
  701. package/v3/@claude-flow/cli/dist/src/ruvector/coverage-tools.js +157 -0
  702. package/v3/@claude-flow/cli/dist/src/ruvector/diff-classifier.d.ts +175 -0
  703. package/v3/@claude-flow/cli/dist/src/ruvector/diff-classifier.js +699 -0
  704. package/v3/@claude-flow/cli/dist/src/ruvector/diskann-backend.d.ts +78 -0
  705. package/v3/@claude-flow/cli/dist/src/ruvector/diskann-backend.js +310 -0
  706. package/v3/@claude-flow/cli/dist/src/ruvector/enhanced-model-router.d.ts +146 -0
  707. package/v3/@claude-flow/cli/dist/src/ruvector/enhanced-model-router.js +529 -0
  708. package/v3/@claude-flow/cli/dist/src/ruvector/graph-analyzer.d.ts +187 -0
  709. package/v3/@claude-flow/cli/dist/src/ruvector/graph-analyzer.js +929 -0
  710. package/v3/@claude-flow/cli/dist/src/ruvector/graph-backend.d.ts +79 -0
  711. package/v3/@claude-flow/cli/dist/src/ruvector/graph-backend.js +220 -0
  712. package/v3/@claude-flow/cli/dist/src/ruvector/index.d.ts +38 -0
  713. package/v3/@claude-flow/cli/dist/src/ruvector/index.js +82 -0
  714. package/v3/@claude-flow/cli/dist/src/ruvector/lora-adapter.d.ts +240 -0
  715. package/v3/@claude-flow/cli/dist/src/ruvector/lora-adapter.js +550 -0
  716. package/v3/@claude-flow/cli/dist/src/ruvector/model-router.d.ts +241 -0
  717. package/v3/@claude-flow/cli/dist/src/ruvector/model-router.js +608 -0
  718. package/v3/@claude-flow/cli/dist/src/ruvector/q-learning-router.d.ts +211 -0
  719. package/v3/@claude-flow/cli/dist/src/ruvector/q-learning-router.js +681 -0
  720. package/v3/@claude-flow/cli/dist/src/ruvector/ruvllm-wasm.d.ts +179 -0
  721. package/v3/@claude-flow/cli/dist/src/ruvector/ruvllm-wasm.js +367 -0
  722. package/v3/@claude-flow/cli/dist/src/ruvector/semantic-router.d.ts +77 -0
  723. package/v3/@claude-flow/cli/dist/src/ruvector/semantic-router.js +178 -0
  724. package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.d.ts +73 -0
  725. package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.js +264 -0
  726. package/v3/@claude-flow/cli/dist/src/services/agentic-flow-bridge.d.ts +50 -0
  727. package/v3/@claude-flow/cli/dist/src/services/agentic-flow-bridge.js +95 -0
  728. package/v3/@claude-flow/cli/dist/src/services/claim-service.d.ts +204 -0
  729. package/v3/@claude-flow/cli/dist/src/services/claim-service.js +818 -0
  730. package/v3/@claude-flow/cli/dist/src/services/config-file-manager.d.ts +37 -0
  731. package/v3/@claude-flow/cli/dist/src/services/config-file-manager.js +233 -0
  732. package/v3/@claude-flow/cli/dist/src/services/container-worker-pool.d.ts +197 -0
  733. package/v3/@claude-flow/cli/dist/src/services/container-worker-pool.js +583 -0
  734. package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.d.ts +310 -0
  735. package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +1058 -0
  736. package/v3/@claude-flow/cli/dist/src/services/index.d.ts +13 -0
  737. package/v3/@claude-flow/cli/dist/src/services/index.js +11 -0
  738. package/v3/@claude-flow/cli/dist/src/services/registry-api.d.ts +58 -0
  739. package/v3/@claude-flow/cli/dist/src/services/registry-api.js +146 -0
  740. package/v3/@claude-flow/cli/dist/src/services/ruvector-training.d.ts +222 -0
  741. package/v3/@claude-flow/cli/dist/src/services/ruvector-training.js +688 -0
  742. package/v3/@claude-flow/cli/dist/src/services/worker-daemon.d.ts +323 -0
  743. package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +1323 -0
  744. package/v3/@claude-flow/cli/dist/src/services/worker-queue.d.ts +194 -0
  745. package/v3/@claude-flow/cli/dist/src/services/worker-queue.js +513 -0
  746. package/v3/@claude-flow/cli/dist/src/suggest.d.ts +53 -0
  747. package/v3/@claude-flow/cli/dist/src/suggest.js +200 -0
  748. package/v3/@claude-flow/cli/dist/src/transfer/anonymization/index.d.ts +25 -0
  749. package/v3/@claude-flow/cli/dist/src/transfer/anonymization/index.js +175 -0
  750. package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.d.ts +13 -0
  751. package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +205 -0
  752. package/v3/@claude-flow/cli/dist/src/transfer/export.d.ts +25 -0
  753. package/v3/@claude-flow/cli/dist/src/transfer/export.js +113 -0
  754. package/v3/@claude-flow/cli/dist/src/transfer/index.d.ts +12 -0
  755. package/v3/@claude-flow/cli/dist/src/transfer/index.js +31 -0
  756. package/v3/@claude-flow/cli/dist/src/transfer/ipfs/client.d.ts +109 -0
  757. package/v3/@claude-flow/cli/dist/src/transfer/ipfs/client.js +307 -0
  758. package/v3/@claude-flow/cli/dist/src/transfer/ipfs/upload.d.ts +95 -0
  759. package/v3/@claude-flow/cli/dist/src/transfer/ipfs/upload.js +413 -0
  760. package/v3/@claude-flow/cli/dist/src/transfer/models/seraphine.d.ts +72 -0
  761. package/v3/@claude-flow/cli/dist/src/transfer/models/seraphine.js +373 -0
  762. package/v3/@claude-flow/cli/dist/src/transfer/serialization/cfp.d.ts +49 -0
  763. package/v3/@claude-flow/cli/dist/src/transfer/serialization/cfp.js +183 -0
  764. package/v3/@claude-flow/cli/dist/src/transfer/storage/gcs.d.ts +82 -0
  765. package/v3/@claude-flow/cli/dist/src/transfer/storage/gcs.js +272 -0
  766. package/v3/@claude-flow/cli/dist/src/transfer/storage/index.d.ts +6 -0
  767. package/v3/@claude-flow/cli/dist/src/transfer/storage/index.js +6 -0
  768. package/v3/@claude-flow/cli/dist/src/transfer/store/discovery.d.ts +84 -0
  769. package/v3/@claude-flow/cli/dist/src/transfer/store/discovery.js +382 -0
  770. package/v3/@claude-flow/cli/dist/src/transfer/store/download.d.ts +70 -0
  771. package/v3/@claude-flow/cli/dist/src/transfer/store/download.js +334 -0
  772. package/v3/@claude-flow/cli/dist/src/transfer/store/index.d.ts +84 -0
  773. package/v3/@claude-flow/cli/dist/src/transfer/store/index.js +153 -0
  774. package/v3/@claude-flow/cli/dist/src/transfer/store/publish.d.ts +76 -0
  775. package/v3/@claude-flow/cli/dist/src/transfer/store/publish.js +294 -0
  776. package/v3/@claude-flow/cli/dist/src/transfer/store/registry.d.ts +58 -0
  777. package/v3/@claude-flow/cli/dist/src/transfer/store/registry.js +285 -0
  778. package/v3/@claude-flow/cli/dist/src/transfer/store/search.d.ts +54 -0
  779. package/v3/@claude-flow/cli/dist/src/transfer/store/search.js +232 -0
  780. package/v3/@claude-flow/cli/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
  781. package/v3/@claude-flow/cli/dist/src/transfer/store/tests/standalone-test.js +190 -0
  782. package/v3/@claude-flow/cli/dist/src/transfer/store/types.d.ts +193 -0
  783. package/v3/@claude-flow/cli/dist/src/transfer/store/types.js +6 -0
  784. package/v3/@claude-flow/cli/dist/src/transfer/test-seraphine.d.ts +6 -0
  785. package/v3/@claude-flow/cli/dist/src/transfer/test-seraphine.js +105 -0
  786. package/v3/@claude-flow/cli/dist/src/transfer/tests/test-store.d.ts +7 -0
  787. package/v3/@claude-flow/cli/dist/src/transfer/tests/test-store.js +214 -0
  788. package/v3/@claude-flow/cli/dist/src/transfer/types.d.ts +245 -0
  789. package/v3/@claude-flow/cli/dist/src/transfer/types.js +6 -0
  790. package/v3/@claude-flow/cli/dist/src/types.d.ts +13 -0
  791. package/v3/@claude-flow/cli/dist/src/types.js +13 -0
  792. package/v3/@claude-flow/cli/dist/src/update/checker.d.ts +34 -0
  793. package/v3/@claude-flow/cli/dist/src/update/checker.js +191 -0
  794. package/v3/@claude-flow/cli/dist/src/update/executor.d.ts +33 -0
  795. package/v3/@claude-flow/cli/dist/src/update/executor.js +217 -0
  796. package/v3/@claude-flow/cli/dist/src/update/index.d.ts +33 -0
  797. package/v3/@claude-flow/cli/dist/src/update/index.js +64 -0
  798. package/v3/@claude-flow/cli/dist/src/update/rate-limiter.d.ts +20 -0
  799. package/v3/@claude-flow/cli/dist/src/update/rate-limiter.js +96 -0
  800. package/v3/@claude-flow/cli/dist/src/update/validator.d.ts +17 -0
  801. package/v3/@claude-flow/cli/dist/src/update/validator.js +123 -0
  802. package/v3/@claude-flow/cli/package.json +133 -0
  803. package/v3/@claude-flow/guidance/README.md +1195 -0
  804. package/v3/@claude-flow/guidance/package.json +198 -0
  805. package/v3/@claude-flow/shared/README.md +323 -0
  806. package/v3/@claude-flow/shared/package.json +43 -0
  807. package/v3/README.md +493 -0
@@ -0,0 +1,1904 @@
1
+ /**
2
+ * Init Executor
3
+ * Main execution logic for V3 initialization
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ import { createRequire } from 'module';
9
+ import { dirname } from 'path';
10
+ // ESM-compatible __dirname
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ import { detectPlatform, DEFAULT_INIT_OPTIONS } from './types.js';
14
+ import { generateSettingsJson, generateSettings } from './settings-generator.js';
15
+ import { generateMCPJson } from './mcp-generator.js';
16
+ import { generateStatuslineScript } from './statusline-generator.js';
17
+ import { generatePreCommitHook, generatePostCommitHook, generateSessionManager, generateAgentRouter, generateMemoryHelper, generateHookHandler, generateIntelligenceStub, generateAutoMemoryHook, } from './helpers-generator.js';
18
+ import { generateClaudeMd } from './claudemd-generator.js';
19
+ /**
20
+ * Skills to copy based on configuration
21
+ */
22
+ const SKILLS_MAP = {
23
+ core: [
24
+ 'swarm-orchestration',
25
+ 'swarm-advanced',
26
+ 'sparc-methodology',
27
+ 'hooks-automation',
28
+ 'pair-programming',
29
+ 'verification-quality',
30
+ 'stream-chain',
31
+ 'skill-builder',
32
+ ],
33
+ browser: ['browser'], // agent-browser integration
34
+ dualMode: ['dual-mode'], // Claude Code + Codex hybrid execution
35
+ agentdb: [
36
+ 'agentdb-advanced',
37
+ 'agentdb-learning',
38
+ 'agentdb-memory-patterns',
39
+ 'agentdb-optimization',
40
+ 'agentdb-vector-search',
41
+ 'reasoningbank-agentdb',
42
+ 'reasoningbank-intelligence',
43
+ ],
44
+ github: [
45
+ 'github-code-review',
46
+ 'github-multi-repo',
47
+ 'github-project-management',
48
+ 'github-release-management',
49
+ 'github-workflow-automation',
50
+ ],
51
+ flowNexus: [
52
+ 'flow-nexus-neural',
53
+ 'flow-nexus-platform',
54
+ 'flow-nexus-swarm',
55
+ ],
56
+ v3: [
57
+ 'v3-cli-modernization',
58
+ 'v3-core-implementation',
59
+ 'v3-ddd-architecture',
60
+ 'v3-integration-deep',
61
+ 'v3-mcp-optimization',
62
+ 'v3-memory-unification',
63
+ 'v3-performance-optimization',
64
+ 'v3-security-overhaul',
65
+ 'v3-swarm-coordination',
66
+ ],
67
+ };
68
+ /**
69
+ * Commands to copy based on configuration
70
+ */
71
+ const COMMANDS_MAP = {
72
+ core: ['claude-flow-help.md', 'claude-flow-swarm.md', 'claude-flow-memory.md'],
73
+ analysis: ['analysis'],
74
+ automation: ['automation'],
75
+ github: ['github'],
76
+ hooks: ['hooks'],
77
+ monitoring: ['monitoring'],
78
+ optimization: ['optimization'],
79
+ sparc: ['sparc'],
80
+ };
81
+ /**
82
+ * Agents to copy based on configuration
83
+ */
84
+ const AGENTS_MAP = {
85
+ core: ['core'],
86
+ consensus: ['consensus'],
87
+ github: ['github'],
88
+ hiveMind: ['hive-mind'],
89
+ sparc: ['sparc'],
90
+ swarm: ['swarm'],
91
+ browser: ['browser'], // agent-browser integration
92
+ dualMode: ['dual-mode'], // Claude Code + Codex hybrid execution
93
+ // V3-specific agents
94
+ v3: ['v3'],
95
+ optimization: ['optimization'],
96
+ templates: ['templates'],
97
+ testing: ['testing'],
98
+ sublinear: ['sublinear'],
99
+ flowNexus: ['flow-nexus'],
100
+ analysis: ['analysis'],
101
+ architecture: ['architecture'],
102
+ development: ['development'],
103
+ devops: ['devops'],
104
+ documentation: ['documentation'],
105
+ specialized: ['specialized'],
106
+ goal: ['goal'],
107
+ sona: ['sona'],
108
+ payments: ['payments'],
109
+ data: ['data'],
110
+ custom: ['custom'],
111
+ };
112
+ /**
113
+ * Directory structure to create
114
+ */
115
+ const DIRECTORIES = {
116
+ claude: [
117
+ '.claude',
118
+ '.claude/skills',
119
+ '.claude/commands',
120
+ '.claude/agents',
121
+ '.claude/helpers',
122
+ ],
123
+ runtime: [
124
+ '.claude-flow',
125
+ '.claude-flow/data',
126
+ '.claude-flow/logs',
127
+ '.claude-flow/sessions',
128
+ '.claude-flow/hooks',
129
+ '.claude-flow/agents',
130
+ '.claude-flow/workflows',
131
+ ],
132
+ };
133
+ /**
134
+ * Execute initialization
135
+ */
136
+ export async function executeInit(options) {
137
+ // Detect platform
138
+ const platform = detectPlatform();
139
+ const result = {
140
+ success: true,
141
+ platform,
142
+ created: {
143
+ directories: [],
144
+ files: [],
145
+ },
146
+ skipped: [],
147
+ errors: [],
148
+ summary: {
149
+ skillsCount: 0,
150
+ commandsCount: 0,
151
+ agentsCount: 0,
152
+ hooksEnabled: 0,
153
+ },
154
+ };
155
+ const targetDir = options.targetDir;
156
+ try {
157
+ // Create directory structure
158
+ await createDirectories(targetDir, options, result);
159
+ // Generate and write settings.json
160
+ if (options.components.settings) {
161
+ await writeSettings(targetDir, options, result);
162
+ }
163
+ // Generate and write .mcp.json
164
+ if (options.components.mcp) {
165
+ await writeMCPConfig(targetDir, options, result);
166
+ }
167
+ // Copy skills
168
+ if (options.components.skills) {
169
+ await copySkills(targetDir, options, result);
170
+ }
171
+ // Copy commands
172
+ if (options.components.commands) {
173
+ await copyCommands(targetDir, options, result);
174
+ }
175
+ // Copy agents
176
+ if (options.components.agents) {
177
+ await copyAgents(targetDir, options, result);
178
+ }
179
+ // Generate helpers
180
+ if (options.components.helpers) {
181
+ await writeHelpers(targetDir, options, result);
182
+ }
183
+ // Generate statusline
184
+ if (options.components.statusline) {
185
+ await writeStatusline(targetDir, options, result);
186
+ }
187
+ // Generate runtime config
188
+ if (options.components.runtime) {
189
+ await writeRuntimeConfig(targetDir, options, result);
190
+ }
191
+ // Create initial metrics for statusline (prevents "all zeros" display)
192
+ if (options.components.statusline) {
193
+ await writeInitialMetrics(targetDir, options, result);
194
+ }
195
+ // Generate CLAUDE.md
196
+ if (options.components.claudeMd) {
197
+ await writeClaudeMd(targetDir, options, result);
198
+ }
199
+ // Count enabled hooks
200
+ result.summary.hooksEnabled = countEnabledHooks(options);
201
+ }
202
+ catch (error) {
203
+ result.success = false;
204
+ result.errors.push(error instanceof Error ? error.message : String(error));
205
+ }
206
+ return result;
207
+ }
208
+ /**
209
+ * Merge new settings into existing settings.json
210
+ * Preserves user customizations while adding new features like Agent Teams
211
+ * Uses platform-specific commands for Mac, Linux, and Windows
212
+ */
213
+ function mergeSettingsForUpgrade(existing) {
214
+ const merged = { ...existing };
215
+ const platform = detectPlatform();
216
+ const isWindows = platform.os === 'windows';
217
+ // Platform-specific command wrappers
218
+ // Windows: Use PowerShell-compatible commands
219
+ // Mac/Linux: Use bash-compatible commands with 2>/dev/null
220
+ // NOTE: teammateIdleCmd and taskCompletedCmd were removed.
221
+ // TeammateIdle/TaskCompleted are not valid Claude Code hook events and caused warnings.
222
+ // Agent Teams hook config lives in claudeFlow.agentTeams.hooks instead.
223
+ // 1. Merge env vars (preserve existing, add new)
224
+ const existingEnv = existing.env || {};
225
+ merged.env = {
226
+ ...existingEnv,
227
+ CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS: '1',
228
+ CLAUDE_FLOW_V3_ENABLED: existingEnv.CLAUDE_FLOW_V3_ENABLED || 'true',
229
+ CLAUDE_FLOW_HOOKS_ENABLED: existingEnv.CLAUDE_FLOW_HOOKS_ENABLED || 'true',
230
+ };
231
+ // 2. Merge hooks (preserve existing, add new Agent Teams + auto-memory hooks)
232
+ const existingHooks = existing.hooks || {};
233
+ merged.hooks = { ...existingHooks };
234
+ // Cross-platform auto-memory hook commands that resolve paths via git root.
235
+ // Uses node -e with git rev-parse so hooks work regardless of CWD (#1259, #1284).
236
+ const gitRootResolver = "var c=require('child_process'),p=require('path'),u=require('url'),r;"
237
+ + "try{r=c.execSync('git rev-parse --show-toplevel',{encoding:'utf8'}).trim()}"
238
+ + 'catch(e){r=process.cwd()}';
239
+ const autoMemoryScript = '.claude/helpers/auto-memory-hook.mjs';
240
+ const autoMemoryImportCmd = `node -e "${gitRootResolver}var f=p.join(r,'${autoMemoryScript}');import(u.pathToFileURL(f).href)" import`;
241
+ const autoMemorySyncCmd = `node -e "${gitRootResolver}var f=p.join(r,'${autoMemoryScript}');import(u.pathToFileURL(f).href)" sync`;
242
+ // Add auto-memory import to SessionStart (if not already present)
243
+ const sessionStartHooks = existingHooks.SessionStart;
244
+ const hasAutoMemoryImport = sessionStartHooks?.some(group => group.hooks?.some(h => h.command?.includes('auto-memory-hook')));
245
+ if (!hasAutoMemoryImport) {
246
+ const startHooks = merged.hooks;
247
+ if (!startHooks.SessionStart) {
248
+ startHooks.SessionStart = [{ hooks: [] }];
249
+ }
250
+ const startGroup = startHooks.SessionStart[0];
251
+ if (!startGroup.hooks)
252
+ startGroup.hooks = [];
253
+ startGroup.hooks.push({
254
+ type: 'command',
255
+ command: autoMemoryImportCmd,
256
+ timeout: 6000,
257
+ continueOnError: true,
258
+ });
259
+ }
260
+ // Add auto-memory sync to SessionEnd (if not already present)
261
+ const sessionEndHooks = existingHooks.SessionEnd;
262
+ const hasAutoMemorySync = sessionEndHooks?.some(group => group.hooks?.some(h => h.command?.includes('auto-memory-hook')));
263
+ if (!hasAutoMemorySync) {
264
+ const endHooks = merged.hooks;
265
+ if (!endHooks.SessionEnd) {
266
+ endHooks.SessionEnd = [{ hooks: [] }];
267
+ }
268
+ const endGroup = endHooks.SessionEnd[0];
269
+ if (!endGroup.hooks)
270
+ endGroup.hooks = [];
271
+ // Insert at beginning so sync runs before other cleanup
272
+ endGroup.hooks.unshift({
273
+ type: 'command',
274
+ command: autoMemorySyncCmd,
275
+ timeout: 8000,
276
+ continueOnError: true,
277
+ });
278
+ }
279
+ // NOTE: TeammateIdle and TaskCompleted are NOT valid Claude Code hook events.
280
+ // They cause warnings when present in settings.json hooks.
281
+ // Remove them if they exist from a previous init.
282
+ delete merged.hooks.TeammateIdle;
283
+ delete merged.hooks.TaskCompleted;
284
+ // Their configuration lives in claudeFlow.agentTeams.hooks instead.
285
+ // 3. Fix statusLine config (remove invalid fields, ensure correct format)
286
+ // Claude Code only supports: type, command, padding
287
+ const existingStatusLine = existing.statusLine;
288
+ if (existingStatusLine) {
289
+ merged.statusLine = {
290
+ type: 'command',
291
+ command: existingStatusLine.command || `node -e "var c=require('child_process'),p=require('path'),r;try{r=c.execSync('git rev-parse --show-toplevel',{encoding:'utf8'}).trim()}catch(e){r=process.cwd()}var s=p.join(r,'.claude/helpers/statusline.cjs');process.argv.splice(1,0,s);require(s)"`,
292
+ // Remove invalid fields: refreshMs, enabled (not supported by Claude Code)
293
+ };
294
+ }
295
+ // 4. Merge claudeFlow settings (preserve existing, add agentTeams + memory)
296
+ const existingClaudeFlow = existing.claudeFlow || {};
297
+ const existingMemory = existingClaudeFlow.memory || {};
298
+ merged.claudeFlow = {
299
+ ...existingClaudeFlow,
300
+ version: existingClaudeFlow.version || '3.0.0',
301
+ enabled: existingClaudeFlow.enabled !== false,
302
+ agentTeams: {
303
+ enabled: true,
304
+ teammateMode: 'auto',
305
+ taskListEnabled: true,
306
+ mailboxEnabled: true,
307
+ coordination: {
308
+ autoAssignOnIdle: true,
309
+ trainPatternsOnComplete: true,
310
+ notifyLeadOnComplete: true,
311
+ sharedMemoryNamespace: 'agent-teams',
312
+ },
313
+ hooks: {
314
+ teammateIdle: { enabled: true, autoAssign: true, checkTaskList: true },
315
+ taskCompleted: { enabled: true, trainPatterns: true, notifyLead: true },
316
+ },
317
+ },
318
+ memory: {
319
+ ...existingMemory,
320
+ learningBridge: existingMemory.learningBridge ?? { enabled: true },
321
+ memoryGraph: existingMemory.memoryGraph ?? { enabled: true },
322
+ agentScopes: existingMemory.agentScopes ?? { enabled: true },
323
+ },
324
+ };
325
+ return merged;
326
+ }
327
+ /**
328
+ * Execute upgrade - updates helpers and creates missing metrics without losing data
329
+ * This is safe for existing users who want the latest statusline fixes
330
+ * @param targetDir - Target directory
331
+ * @param upgradeSettings - If true, merge new settings into existing settings.json
332
+ */
333
+ export async function executeUpgrade(targetDir, upgradeSettings = false) {
334
+ const result = {
335
+ success: true,
336
+ updated: [],
337
+ created: [],
338
+ preserved: [],
339
+ errors: [],
340
+ settingsUpdated: [],
341
+ };
342
+ try {
343
+ // Ensure required directories exist
344
+ const dirs = [
345
+ '.claude/helpers',
346
+ '.claude-flow/metrics',
347
+ '.claude-flow/security',
348
+ '.claude-flow/learning',
349
+ ];
350
+ for (const dir of dirs) {
351
+ const fullPath = path.join(targetDir, dir);
352
+ if (!fs.existsSync(fullPath)) {
353
+ fs.mkdirSync(fullPath, { recursive: true });
354
+ }
355
+ }
356
+ // 0. ALWAYS update critical helpers (force overwrite)
357
+ const sourceHelpersForUpgrade = findSourceHelpersDir();
358
+ if (sourceHelpersForUpgrade) {
359
+ const criticalHelpers = ['auto-memory-hook.mjs', 'hook-handler.cjs', 'intelligence.cjs'];
360
+ for (const helperName of criticalHelpers) {
361
+ const targetPath = path.join(targetDir, '.claude', 'helpers', helperName);
362
+ const sourcePath = path.join(sourceHelpersForUpgrade, helperName);
363
+ if (fs.existsSync(sourcePath)) {
364
+ if (fs.existsSync(targetPath)) {
365
+ result.updated.push(`.claude/helpers/${helperName}`);
366
+ }
367
+ else {
368
+ result.created.push(`.claude/helpers/${helperName}`);
369
+ }
370
+ fs.copyFileSync(sourcePath, targetPath);
371
+ try {
372
+ fs.chmodSync(targetPath, '755');
373
+ }
374
+ catch { }
375
+ }
376
+ }
377
+ }
378
+ else {
379
+ // Source not found (npx with broken paths) — use generated fallbacks
380
+ const generatedCritical = {
381
+ 'hook-handler.cjs': generateHookHandler(),
382
+ 'intelligence.cjs': generateIntelligenceStub(),
383
+ 'auto-memory-hook.mjs': generateAutoMemoryHook(),
384
+ };
385
+ for (const [helperName, content] of Object.entries(generatedCritical)) {
386
+ const targetPath = path.join(targetDir, '.claude', 'helpers', helperName);
387
+ if (fs.existsSync(targetPath)) {
388
+ result.updated.push(`.claude/helpers/${helperName}`);
389
+ }
390
+ else {
391
+ result.created.push(`.claude/helpers/${helperName}`);
392
+ }
393
+ fs.writeFileSync(targetPath, content, 'utf-8');
394
+ try {
395
+ fs.chmodSync(targetPath, '755');
396
+ }
397
+ catch { }
398
+ }
399
+ }
400
+ // 1. ALWAYS update statusline helper (force overwrite)
401
+ const statuslinePath = path.join(targetDir, '.claude', 'helpers', 'statusline.cjs');
402
+ // Use default options with statusline config
403
+ const upgradeOptions = {
404
+ ...DEFAULT_INIT_OPTIONS,
405
+ targetDir,
406
+ force: true,
407
+ statusline: {
408
+ ...DEFAULT_INIT_OPTIONS.statusline,
409
+ refreshInterval: 5000,
410
+ },
411
+ };
412
+ const statuslineContent = generateStatuslineScript(upgradeOptions);
413
+ if (fs.existsSync(statuslinePath)) {
414
+ result.updated.push('.claude/helpers/statusline.cjs');
415
+ }
416
+ else {
417
+ result.created.push('.claude/helpers/statusline.cjs');
418
+ }
419
+ fs.writeFileSync(statuslinePath, statuslineContent, 'utf-8');
420
+ // 2. Create MISSING metrics files only (preserve existing data)
421
+ const metricsDir = path.join(targetDir, '.claude-flow', 'metrics');
422
+ const securityDir = path.join(targetDir, '.claude-flow', 'security');
423
+ // v3-progress.json
424
+ const progressPath = path.join(metricsDir, 'v3-progress.json');
425
+ if (!fs.existsSync(progressPath)) {
426
+ const progress = {
427
+ version: '3.0.0',
428
+ initialized: new Date().toISOString(),
429
+ domains: { completed: 0, total: 5, status: 'INITIALIZING' },
430
+ ddd: { progress: 0, modules: 0, totalFiles: 0, totalLines: 0 },
431
+ swarm: { activeAgents: 0, maxAgents: 15, topology: 'hierarchical-mesh' },
432
+ learning: { status: 'READY', patternsLearned: 0, sessionsCompleted: 0 },
433
+ _note: 'Metrics will update as you use Ruflo'
434
+ };
435
+ fs.writeFileSync(progressPath, JSON.stringify(progress, null, 2), 'utf-8');
436
+ result.created.push('.claude-flow/metrics/v3-progress.json');
437
+ }
438
+ else {
439
+ result.preserved.push('.claude-flow/metrics/v3-progress.json');
440
+ }
441
+ // swarm-activity.json
442
+ const activityPath = path.join(metricsDir, 'swarm-activity.json');
443
+ if (!fs.existsSync(activityPath)) {
444
+ const activity = {
445
+ timestamp: new Date().toISOString(),
446
+ processes: { agentic_flow: 0, mcp_server: 0, estimated_agents: 0 },
447
+ swarm: { active: false, agent_count: 0, coordination_active: false },
448
+ integration: { agentic_flow_active: false, mcp_active: false },
449
+ _initialized: true
450
+ };
451
+ fs.writeFileSync(activityPath, JSON.stringify(activity, null, 2), 'utf-8');
452
+ result.created.push('.claude-flow/metrics/swarm-activity.json');
453
+ }
454
+ else {
455
+ result.preserved.push('.claude-flow/metrics/swarm-activity.json');
456
+ }
457
+ // learning.json
458
+ const learningPath = path.join(metricsDir, 'learning.json');
459
+ if (!fs.existsSync(learningPath)) {
460
+ const learning = {
461
+ initialized: new Date().toISOString(),
462
+ routing: { accuracy: 0, decisions: 0 },
463
+ patterns: { shortTerm: 0, longTerm: 0, quality: 0 },
464
+ sessions: { total: 0, current: null },
465
+ _note: 'Intelligence grows as you use Ruflo'
466
+ };
467
+ fs.writeFileSync(learningPath, JSON.stringify(learning, null, 2), 'utf-8');
468
+ result.created.push('.claude-flow/metrics/learning.json');
469
+ }
470
+ else {
471
+ result.preserved.push('.claude-flow/metrics/learning.json');
472
+ }
473
+ // audit-status.json
474
+ const auditPath = path.join(securityDir, 'audit-status.json');
475
+ if (!fs.existsSync(auditPath)) {
476
+ const audit = {
477
+ initialized: new Date().toISOString(),
478
+ status: 'PENDING',
479
+ cvesFixed: 0,
480
+ totalCves: 3,
481
+ lastScan: null,
482
+ _note: 'Run: npx @claude-flow/cli@latest security scan'
483
+ };
484
+ fs.writeFileSync(auditPath, JSON.stringify(audit, null, 2), 'utf-8');
485
+ result.created.push('.claude-flow/security/audit-status.json');
486
+ }
487
+ else {
488
+ result.preserved.push('.claude-flow/security/audit-status.json');
489
+ }
490
+ // 3. Merge settings if requested
491
+ if (upgradeSettings) {
492
+ const settingsPath = path.join(targetDir, '.claude', 'settings.json');
493
+ if (fs.existsSync(settingsPath)) {
494
+ try {
495
+ const existingSettings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
496
+ const mergedSettings = mergeSettingsForUpgrade(existingSettings);
497
+ fs.writeFileSync(settingsPath, JSON.stringify(mergedSettings, null, 2), 'utf-8');
498
+ result.updated.push('.claude/settings.json');
499
+ result.settingsUpdated = [
500
+ 'env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS',
501
+ 'hooks.SessionStart (auto-memory import)',
502
+ 'hooks.SessionEnd (auto-memory sync)',
503
+ 'hooks.TeammateIdle (removed — not a valid Claude Code hook)',
504
+ 'hooks.TaskCompleted (removed — not a valid Claude Code hook)',
505
+ 'claudeFlow.agentTeams',
506
+ 'claudeFlow.memory (learningBridge, memoryGraph, agentScopes)',
507
+ ];
508
+ }
509
+ catch (settingsError) {
510
+ result.errors.push(`Settings merge failed: ${settingsError instanceof Error ? settingsError.message : String(settingsError)}`);
511
+ }
512
+ }
513
+ else {
514
+ // Create new settings.json with defaults
515
+ const defaultSettings = generateSettings(DEFAULT_INIT_OPTIONS);
516
+ fs.writeFileSync(settingsPath, JSON.stringify(defaultSettings, null, 2), 'utf-8');
517
+ result.created.push('.claude/settings.json');
518
+ result.settingsUpdated = ['Created new settings.json with Agent Teams'];
519
+ }
520
+ }
521
+ }
522
+ catch (error) {
523
+ result.success = false;
524
+ result.errors.push(error instanceof Error ? error.message : String(error));
525
+ }
526
+ return result;
527
+ }
528
+ /**
529
+ * Execute upgrade with --add-missing flag
530
+ * Adds any new skills, agents, and commands that don't exist yet
531
+ * @param targetDir - Target directory
532
+ * @param upgradeSettings - If true, merge new settings into existing settings.json
533
+ */
534
+ export async function executeUpgradeWithMissing(targetDir, upgradeSettings = false) {
535
+ // First do the normal upgrade (pass through upgradeSettings)
536
+ const result = await executeUpgrade(targetDir, upgradeSettings);
537
+ if (!result.success) {
538
+ return result;
539
+ }
540
+ // Initialize tracking arrays
541
+ result.addedSkills = [];
542
+ result.addedAgents = [];
543
+ result.addedCommands = [];
544
+ try {
545
+ // Ensure target directories exist
546
+ const skillsDir = path.join(targetDir, '.claude', 'skills');
547
+ const agentsDir = path.join(targetDir, '.claude', 'agents');
548
+ const commandsDir = path.join(targetDir, '.claude', 'commands');
549
+ for (const dir of [skillsDir, agentsDir, commandsDir]) {
550
+ if (!fs.existsSync(dir)) {
551
+ fs.mkdirSync(dir, { recursive: true });
552
+ }
553
+ }
554
+ // Find source directories
555
+ const sourceSkillsDir = findSourceDir('skills');
556
+ const sourceAgentsDir = findSourceDir('agents');
557
+ const sourceCommandsDir = findSourceDir('commands');
558
+ // Debug: Log source directories found
559
+ if (process.env.DEBUG || process.env.CLAUDE_FLOW_DEBUG) {
560
+ console.log('[DEBUG] Source directories:');
561
+ console.log(` Skills: ${sourceSkillsDir || 'NOT FOUND'}`);
562
+ console.log(` Agents: ${sourceAgentsDir || 'NOT FOUND'}`);
563
+ console.log(` Commands: ${sourceCommandsDir || 'NOT FOUND'}`);
564
+ }
565
+ // Add missing skills
566
+ if (sourceSkillsDir) {
567
+ const allSkills = Object.values(SKILLS_MAP).flat();
568
+ const debugMode = process.env.DEBUG || process.env.CLAUDE_FLOW_DEBUG;
569
+ if (debugMode) {
570
+ console.log(`[DEBUG] Checking ${allSkills.length} skills from SKILLS_MAP`);
571
+ }
572
+ for (const skillName of [...new Set(allSkills)]) {
573
+ const sourcePath = path.join(sourceSkillsDir, skillName);
574
+ const targetPath = path.join(skillsDir, skillName);
575
+ const sourceExists = fs.existsSync(sourcePath);
576
+ const targetExists = fs.existsSync(targetPath);
577
+ if (debugMode) {
578
+ console.log(`[DEBUG] Skill '${skillName}': source=${sourceExists}, target=${targetExists}`);
579
+ }
580
+ if (sourceExists && !targetExists) {
581
+ copyDirRecursive(sourcePath, targetPath);
582
+ result.addedSkills.push(skillName);
583
+ result.created.push(`.claude/skills/${skillName}`);
584
+ }
585
+ }
586
+ }
587
+ // Add missing agents
588
+ if (sourceAgentsDir) {
589
+ const allAgents = Object.values(AGENTS_MAP).flat();
590
+ for (const agentCategory of [...new Set(allAgents)]) {
591
+ const sourcePath = path.join(sourceAgentsDir, agentCategory);
592
+ const targetPath = path.join(agentsDir, agentCategory);
593
+ if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
594
+ copyDirRecursive(sourcePath, targetPath);
595
+ result.addedAgents.push(agentCategory);
596
+ result.created.push(`.claude/agents/${agentCategory}`);
597
+ }
598
+ }
599
+ }
600
+ // Add missing commands
601
+ if (sourceCommandsDir) {
602
+ const allCommands = Object.values(COMMANDS_MAP).flat();
603
+ for (const cmdName of [...new Set(allCommands)]) {
604
+ const sourcePath = path.join(sourceCommandsDir, cmdName);
605
+ const targetPath = path.join(commandsDir, cmdName);
606
+ if (fs.existsSync(sourcePath) && !fs.existsSync(targetPath)) {
607
+ if (fs.statSync(sourcePath).isDirectory()) {
608
+ copyDirRecursive(sourcePath, targetPath);
609
+ }
610
+ else {
611
+ fs.copyFileSync(sourcePath, targetPath);
612
+ }
613
+ result.addedCommands.push(cmdName);
614
+ result.created.push(`.claude/commands/${cmdName}`);
615
+ }
616
+ }
617
+ }
618
+ }
619
+ catch (error) {
620
+ result.errors.push(`Add missing failed: ${error instanceof Error ? error.message : String(error)}`);
621
+ }
622
+ return result;
623
+ }
624
+ /**
625
+ * Create directory structure
626
+ */
627
+ async function createDirectories(targetDir, options, result) {
628
+ const dirs = [
629
+ ...DIRECTORIES.claude,
630
+ ...(options.components.runtime ? DIRECTORIES.runtime : []),
631
+ ];
632
+ for (const dir of dirs) {
633
+ const fullPath = path.join(targetDir, dir);
634
+ if (!fs.existsSync(fullPath)) {
635
+ fs.mkdirSync(fullPath, { recursive: true });
636
+ result.created.directories.push(dir);
637
+ }
638
+ }
639
+ }
640
+ /**
641
+ * Write settings.json
642
+ */
643
+ async function writeSettings(targetDir, options, result) {
644
+ const settingsPath = path.join(targetDir, '.claude', 'settings.json');
645
+ const generated = JSON.parse(generateSettingsJson(options));
646
+ if (fs.existsSync(settingsPath) && !options.force) {
647
+ // Merge hooks/env/permissions into existing settings instead of skipping
648
+ try {
649
+ const existing = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
650
+ let merged = false;
651
+ // Merge hooks (the critical missing piece — #1484)
652
+ if (generated.hooks && !existing.hooks) {
653
+ existing.hooks = generated.hooks;
654
+ merged = true;
655
+ }
656
+ // Merge env vars (for CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS etc.)
657
+ if (generated.env) {
658
+ existing.env = { ...(existing.env || {}), ...generated.env };
659
+ merged = true;
660
+ }
661
+ // Merge permissions (add ruflo allow rules)
662
+ if (generated.permissions?.allow) {
663
+ const existingAllow = existing.permissions?.allow || [];
664
+ const newRules = generated.permissions.allow.filter((r) => !existingAllow.includes(r));
665
+ if (newRules.length > 0) {
666
+ existing.permissions = existing.permissions || {};
667
+ existing.permissions.allow = [...existingAllow, ...newRules];
668
+ merged = true;
669
+ }
670
+ }
671
+ if (merged) {
672
+ fs.writeFileSync(settingsPath, JSON.stringify(existing, null, 2), 'utf-8');
673
+ result.created.files.push('.claude/settings.json (merged hooks)');
674
+ }
675
+ else {
676
+ result.skipped.push('.claude/settings.json');
677
+ }
678
+ }
679
+ catch {
680
+ // Existing file is corrupt — overwrite
681
+ fs.writeFileSync(settingsPath, JSON.stringify(generated, null, 2), 'utf-8');
682
+ result.created.files.push('.claude/settings.json');
683
+ }
684
+ return;
685
+ }
686
+ fs.writeFileSync(settingsPath, JSON.stringify(generated, null, 2), 'utf-8');
687
+ result.created.files.push('.claude/settings.json');
688
+ }
689
+ /**
690
+ * #1779 — Walk parents of `targetDir` plus the user-global Claude Code
691
+ * config locations, looking for any `.mcp.json` (or `~/.claude.json`)
692
+ * that already declares a `ruflo`-keyed MCP server. We use this to skip
693
+ * writing our own `claude-flow`-keyed entry when the user has already
694
+ * registered the same binary under the new name — that's exactly the
695
+ * "same MCP server twice under two different prefixes" duplication the
696
+ * issue describes.
697
+ *
698
+ * Returns the path of the file that already declares `ruflo` (so we can
699
+ * surface it in the skipped-message), or null if none found.
700
+ */
701
+ function detectExistingRufloMCP(targetDir) {
702
+ const home = (process.env.HOME ?? process.env.USERPROFILE) ?? '';
703
+ const candidates = new Set();
704
+ // User-global Claude Code config locations
705
+ if (home) {
706
+ candidates.add(path.join(home, '.claude.json'));
707
+ candidates.add(path.join(home, '.claude', 'mcp.json'));
708
+ }
709
+ // Walk parents of targetDir up to root, checking for .mcp.json at each
710
+ const targetResolved = path.resolve(targetDir);
711
+ let dir = targetResolved;
712
+ const targetAncestors = new Set();
713
+ while (true) {
714
+ candidates.add(path.join(dir, '.mcp.json'));
715
+ targetAncestors.add(normalizeProjectKey(dir));
716
+ const parent = path.dirname(dir);
717
+ if (parent === dir)
718
+ break;
719
+ dir = parent;
720
+ }
721
+ // Skip the targetDir itself — that's the one we're about to write
722
+ candidates.delete(path.join(targetResolved, '.mcp.json'));
723
+ for (const candidate of candidates) {
724
+ if (!fs.existsSync(candidate))
725
+ continue;
726
+ try {
727
+ const parsed = JSON.parse(fs.readFileSync(candidate, 'utf-8'));
728
+ if (!parsed || typeof parsed !== 'object')
729
+ continue;
730
+ // (a) Top-level mcpServers (legacy / global form)
731
+ if (parsed.mcpServers && typeof parsed.mcpServers === 'object') {
732
+ if ('ruflo' in parsed.mcpServers)
733
+ return candidate;
734
+ }
735
+ // (b) #1840: Claude Code project-scoped registrations under
736
+ // parsed.projects[<projectPath>].mcpServers.ruflo. Match by
737
+ // normalized path against targetDir or any of its ancestors so
738
+ // a `claude mcp add ruflo` in this repo is detected even when
739
+ // Claude stored the key with different casing/slash style.
740
+ if (parsed.projects && typeof parsed.projects === 'object') {
741
+ for (const [projectKey, projectVal] of Object.entries(parsed.projects)) {
742
+ if (!projectVal || typeof projectVal !== 'object')
743
+ continue;
744
+ const projectMcp = projectVal.mcpServers;
745
+ if (!projectMcp || typeof projectMcp !== 'object')
746
+ continue;
747
+ if (!('ruflo' in projectMcp))
748
+ continue;
749
+ if (targetAncestors.has(normalizeProjectKey(projectKey))) {
750
+ return `${candidate} (projects[${projectKey}])`;
751
+ }
752
+ }
753
+ }
754
+ }
755
+ catch { /* malformed JSON — ignore */ }
756
+ }
757
+ return null;
758
+ }
759
+ /**
760
+ * Normalize a project path key for cross-platform comparison.
761
+ * Claude Code stores Windows paths like "C:/Users/.../Project" while
762
+ * Node's `path.resolve()` may emit "C:\Users\...\Project". Lowercase +
763
+ * forward-slash gives a stable comparison key on both platforms.
764
+ */
765
+ function normalizeProjectKey(p) {
766
+ return path.resolve(p).replace(/\\/g, '/').toLowerCase();
767
+ }
768
+ /**
769
+ * Write .mcp.json
770
+ */
771
+ async function writeMCPConfig(targetDir, options, result) {
772
+ const mcpPath = path.join(targetDir, '.mcp.json');
773
+ if (fs.existsSync(mcpPath) && !options.force) {
774
+ result.skipped.push('.mcp.json');
775
+ return;
776
+ }
777
+ // #1779 — Skip writing if the user already has a `ruflo`-keyed MCP
778
+ // server registered elsewhere (parent .mcp.json, ~/.claude.json, etc).
779
+ // Writing our `claude-flow`-keyed entry on top of that produces the
780
+ // duplicate-registration the issue describes (~250 duplicate tools).
781
+ // Force-mode (`--force`) bypasses this guard for users who actually
782
+ // want both registrations.
783
+ if (!options.force) {
784
+ const existingRufloPath = detectExistingRufloMCP(targetDir);
785
+ if (existingRufloPath) {
786
+ result.skipped.push(`.mcp.json (existing 'ruflo' MCP registration found at ${existingRufloPath} — would create duplicate; pass --force to write anyway)`);
787
+ return;
788
+ }
789
+ }
790
+ const content = generateMCPJson(options);
791
+ fs.writeFileSync(mcpPath, content, 'utf-8');
792
+ result.created.files.push('.mcp.json');
793
+ }
794
+ /**
795
+ * Copy skills from source
796
+ */
797
+ async function copySkills(targetDir, options, result) {
798
+ const skillsConfig = options.skills;
799
+ const targetSkillsDir = path.join(targetDir, '.claude', 'skills');
800
+ // Determine which skills to copy
801
+ const skillsToCopy = [];
802
+ if (skillsConfig.all) {
803
+ // Copy all available skills
804
+ Object.values(SKILLS_MAP).forEach(skills => skillsToCopy.push(...skills));
805
+ }
806
+ else {
807
+ if (skillsConfig.core)
808
+ skillsToCopy.push(...SKILLS_MAP.core);
809
+ if (skillsConfig.agentdb)
810
+ skillsToCopy.push(...SKILLS_MAP.agentdb);
811
+ if (skillsConfig.github)
812
+ skillsToCopy.push(...SKILLS_MAP.github);
813
+ if (skillsConfig.flowNexus)
814
+ skillsToCopy.push(...SKILLS_MAP.flowNexus);
815
+ if (skillsConfig.browser)
816
+ skillsToCopy.push(...SKILLS_MAP.browser);
817
+ if (skillsConfig.v3)
818
+ skillsToCopy.push(...SKILLS_MAP.v3);
819
+ if (skillsConfig.dualMode)
820
+ skillsToCopy.push(...SKILLS_MAP.dualMode);
821
+ }
822
+ // Find source skills directory
823
+ const sourceSkillsDir = findSourceDir('skills', options.sourceBaseDir);
824
+ if (!sourceSkillsDir) {
825
+ result.errors.push('Could not find source skills directory');
826
+ return;
827
+ }
828
+ // Copy each skill
829
+ for (const skillName of [...new Set(skillsToCopy)]) {
830
+ const sourcePath = path.join(sourceSkillsDir, skillName);
831
+ const targetPath = path.join(targetSkillsDir, skillName);
832
+ if (fs.existsSync(sourcePath)) {
833
+ if (!fs.existsSync(targetPath) || options.force) {
834
+ copyDirRecursive(sourcePath, targetPath);
835
+ result.created.files.push(`.claude/skills/${skillName}`);
836
+ result.summary.skillsCount++;
837
+ }
838
+ else {
839
+ result.skipped.push(`.claude/skills/${skillName}`);
840
+ }
841
+ }
842
+ }
843
+ }
844
+ /**
845
+ * Copy commands from source
846
+ */
847
+ async function copyCommands(targetDir, options, result) {
848
+ const commandsConfig = options.commands;
849
+ const targetCommandsDir = path.join(targetDir, '.claude', 'commands');
850
+ // Determine which commands to copy
851
+ const commandsToCopy = [];
852
+ if (commandsConfig.all) {
853
+ Object.values(COMMANDS_MAP).forEach(cmds => commandsToCopy.push(...cmds));
854
+ }
855
+ else {
856
+ if (commandsConfig.core)
857
+ commandsToCopy.push(...COMMANDS_MAP.core);
858
+ if (commandsConfig.analysis)
859
+ commandsToCopy.push(...COMMANDS_MAP.analysis);
860
+ if (commandsConfig.automation)
861
+ commandsToCopy.push(...COMMANDS_MAP.automation);
862
+ if (commandsConfig.github)
863
+ commandsToCopy.push(...COMMANDS_MAP.github);
864
+ if (commandsConfig.hooks)
865
+ commandsToCopy.push(...COMMANDS_MAP.hooks);
866
+ if (commandsConfig.monitoring)
867
+ commandsToCopy.push(...COMMANDS_MAP.monitoring);
868
+ if (commandsConfig.optimization)
869
+ commandsToCopy.push(...COMMANDS_MAP.optimization);
870
+ if (commandsConfig.sparc)
871
+ commandsToCopy.push(...COMMANDS_MAP.sparc);
872
+ }
873
+ // Find source commands directory
874
+ const sourceCommandsDir = findSourceDir('commands', options.sourceBaseDir);
875
+ if (!sourceCommandsDir) {
876
+ result.errors.push('Could not find source commands directory');
877
+ return;
878
+ }
879
+ // Copy each command/directory
880
+ for (const cmdName of [...new Set(commandsToCopy)]) {
881
+ const sourcePath = path.join(sourceCommandsDir, cmdName);
882
+ const targetPath = path.join(targetCommandsDir, cmdName);
883
+ if (fs.existsSync(sourcePath)) {
884
+ if (!fs.existsSync(targetPath) || options.force) {
885
+ if (fs.statSync(sourcePath).isDirectory()) {
886
+ copyDirRecursive(sourcePath, targetPath);
887
+ }
888
+ else {
889
+ fs.copyFileSync(sourcePath, targetPath);
890
+ }
891
+ result.created.files.push(`.claude/commands/${cmdName}`);
892
+ result.summary.commandsCount++;
893
+ }
894
+ else {
895
+ result.skipped.push(`.claude/commands/${cmdName}`);
896
+ }
897
+ }
898
+ }
899
+ }
900
+ /**
901
+ * Copy agents from source
902
+ */
903
+ async function copyAgents(targetDir, options, result) {
904
+ const agentsConfig = options.agents;
905
+ const targetAgentsDir = path.join(targetDir, '.claude', 'agents');
906
+ // Determine which agents to copy
907
+ const agentsToCopy = [];
908
+ if (agentsConfig.all) {
909
+ Object.values(AGENTS_MAP).forEach(agents => agentsToCopy.push(...agents));
910
+ }
911
+ else {
912
+ if (agentsConfig.core)
913
+ agentsToCopy.push(...AGENTS_MAP.core);
914
+ if (agentsConfig.consensus)
915
+ agentsToCopy.push(...AGENTS_MAP.consensus);
916
+ if (agentsConfig.github)
917
+ agentsToCopy.push(...AGENTS_MAP.github);
918
+ if (agentsConfig.hiveMind)
919
+ agentsToCopy.push(...AGENTS_MAP.hiveMind);
920
+ if (agentsConfig.sparc)
921
+ agentsToCopy.push(...AGENTS_MAP.sparc);
922
+ if (agentsConfig.swarm)
923
+ agentsToCopy.push(...AGENTS_MAP.swarm);
924
+ if (agentsConfig.browser)
925
+ agentsToCopy.push(...AGENTS_MAP.browser);
926
+ // V3-specific agent categories
927
+ if (agentsConfig.v3)
928
+ agentsToCopy.push(...(AGENTS_MAP.v3 || []));
929
+ if (agentsConfig.optimization)
930
+ agentsToCopy.push(...(AGENTS_MAP.optimization || []));
931
+ if (agentsConfig.testing)
932
+ agentsToCopy.push(...(AGENTS_MAP.testing || []));
933
+ // Dual-mode agents (Claude Code + Codex hybrid)
934
+ if (agentsConfig.dualMode)
935
+ agentsToCopy.push(...(AGENTS_MAP.dualMode || []));
936
+ }
937
+ // Find source agents directory
938
+ const sourceAgentsDir = findSourceDir('agents', options.sourceBaseDir);
939
+ if (!sourceAgentsDir) {
940
+ result.errors.push('Could not find source agents directory');
941
+ return;
942
+ }
943
+ // Copy each agent category
944
+ for (const agentCategory of [...new Set(agentsToCopy)]) {
945
+ const sourcePath = path.join(sourceAgentsDir, agentCategory);
946
+ const targetPath = path.join(targetAgentsDir, agentCategory);
947
+ if (fs.existsSync(sourcePath)) {
948
+ if (!fs.existsSync(targetPath) || options.force) {
949
+ copyDirRecursive(sourcePath, targetPath);
950
+ // Count agent files (.md only — .yaml agents were migrated to .md)
951
+ const mdFiles = countFiles(sourcePath, '.md');
952
+ result.summary.agentsCount += mdFiles;
953
+ result.created.files.push(`.claude/agents/${agentCategory}`);
954
+ }
955
+ else {
956
+ result.skipped.push(`.claude/agents/${agentCategory}`);
957
+ }
958
+ }
959
+ }
960
+ }
961
+ /**
962
+ * Find source helpers directory.
963
+ * Validates that the directory contains hook-handler.cjs to avoid
964
+ * returning the target directory or an incomplete source.
965
+ */
966
+ function findSourceHelpersDir(sourceBaseDir) {
967
+ const possiblePaths = [];
968
+ const SENTINEL_FILE = 'hook-handler.cjs'; // Must exist in valid source
969
+ // If explicit source base directory is provided, check it first
970
+ if (sourceBaseDir) {
971
+ possiblePaths.push(path.join(sourceBaseDir, '.claude', 'helpers'));
972
+ }
973
+ // Strategy 1: require.resolve to find package root (most reliable for npx)
974
+ try {
975
+ const esmRequire = createRequire(import.meta.url);
976
+ const pkgJsonPath = esmRequire.resolve('@claude-flow/cli/package.json');
977
+ const pkgRoot = path.dirname(pkgJsonPath);
978
+ possiblePaths.push(path.join(pkgRoot, '.claude', 'helpers'));
979
+ }
980
+ catch {
981
+ // Not installed as a package — skip
982
+ }
983
+ // Strategy 2: __dirname-based (dist/src/init -> package root)
984
+ const packageRoot = path.resolve(__dirname, '..', '..', '..');
985
+ const packageHelpers = path.join(packageRoot, '.claude', 'helpers');
986
+ possiblePaths.push(packageHelpers);
987
+ // Strategy 3: Walk up from __dirname looking for package root
988
+ let currentDir = __dirname;
989
+ for (let i = 0; i < 10; i++) {
990
+ const parentDir = path.dirname(currentDir);
991
+ if (parentDir === currentDir)
992
+ break; // hit filesystem root
993
+ const helpersPath = path.join(parentDir, '.claude', 'helpers');
994
+ possiblePaths.push(helpersPath);
995
+ currentDir = parentDir;
996
+ }
997
+ // Strategy 4: Check cwd-relative paths (for local dev)
998
+ const cwdBased = [
999
+ path.join(process.cwd(), '.claude', 'helpers'),
1000
+ path.join(process.cwd(), '..', '.claude', 'helpers'),
1001
+ path.join(process.cwd(), '..', '..', '.claude', 'helpers'),
1002
+ ];
1003
+ possiblePaths.push(...cwdBased);
1004
+ // Return first path that exists AND contains the sentinel file
1005
+ for (const p of possiblePaths) {
1006
+ if (fs.existsSync(p) && fs.existsSync(path.join(p, SENTINEL_FILE))) {
1007
+ return p;
1008
+ }
1009
+ }
1010
+ return null;
1011
+ }
1012
+ /**
1013
+ * Write helper scripts
1014
+ */
1015
+ async function writeHelpers(targetDir, options, result) {
1016
+ const helpersDir = path.join(targetDir, '.claude', 'helpers');
1017
+ // Find source helpers directory (works for npm package and local dev)
1018
+ const sourceHelpersDir = findSourceHelpersDir(options.sourceBaseDir);
1019
+ // Try to copy existing helpers from source first
1020
+ if (sourceHelpersDir && fs.existsSync(sourceHelpersDir)) {
1021
+ const helperFiles = fs.readdirSync(sourceHelpersDir);
1022
+ let copiedCount = 0;
1023
+ for (const file of helperFiles) {
1024
+ const sourcePath = path.join(sourceHelpersDir, file);
1025
+ const destPath = path.join(helpersDir, file);
1026
+ // Skip directories and only copy files
1027
+ if (!fs.statSync(sourcePath).isFile())
1028
+ continue;
1029
+ if (!fs.existsSync(destPath) || options.force) {
1030
+ fs.copyFileSync(sourcePath, destPath);
1031
+ // Make shell scripts and mjs files executable
1032
+ if (file.endsWith('.sh') || file.endsWith('.mjs')) {
1033
+ fs.chmodSync(destPath, '755');
1034
+ }
1035
+ result.created.files.push(`.claude/helpers/${file}`);
1036
+ copiedCount++;
1037
+ }
1038
+ else {
1039
+ result.skipped.push(`.claude/helpers/${file}`);
1040
+ }
1041
+ }
1042
+ if (copiedCount > 0) {
1043
+ return; // Skip generating if we copied from source
1044
+ }
1045
+ }
1046
+ // Fall back to generating helpers if source not available
1047
+ const helpers = {
1048
+ 'pre-commit': generatePreCommitHook(),
1049
+ 'post-commit': generatePostCommitHook(),
1050
+ 'session.js': generateSessionManager(),
1051
+ 'router.js': generateAgentRouter(),
1052
+ 'memory.js': generateMemoryHelper(),
1053
+ 'hook-handler.cjs': generateHookHandler(),
1054
+ 'intelligence.cjs': generateIntelligenceStub(),
1055
+ 'auto-memory-hook.mjs': generateAutoMemoryHook(),
1056
+ };
1057
+ for (const [name, content] of Object.entries(helpers)) {
1058
+ const filePath = path.join(helpersDir, name);
1059
+ if (!fs.existsSync(filePath) || options.force) {
1060
+ fs.writeFileSync(filePath, content, 'utf-8');
1061
+ // Make shell scripts executable
1062
+ if (!name.endsWith('.js')) {
1063
+ fs.chmodSync(filePath, '755');
1064
+ }
1065
+ result.created.files.push(`.claude/helpers/${name}`);
1066
+ }
1067
+ else {
1068
+ result.skipped.push(`.claude/helpers/${name}`);
1069
+ }
1070
+ }
1071
+ }
1072
+ /**
1073
+ * Find source .claude directory for statusline files
1074
+ */
1075
+ function findSourceClaudeDir(sourceBaseDir) {
1076
+ const possiblePaths = [];
1077
+ // If explicit source base directory is provided, check it first
1078
+ if (sourceBaseDir) {
1079
+ possiblePaths.push(path.join(sourceBaseDir, '.claude'));
1080
+ }
1081
+ // IMPORTANT: Check the package's own .claude directory
1082
+ // Go up 3 levels: dist/src/init -> dist/src -> dist -> root
1083
+ const packageRoot = path.resolve(__dirname, '..', '..', '..');
1084
+ const packageClaude = path.join(packageRoot, '.claude');
1085
+ if (fs.existsSync(packageClaude)) {
1086
+ possiblePaths.unshift(packageClaude); // Add to beginning (highest priority)
1087
+ }
1088
+ // From dist/src/init -> go up to project root
1089
+ let currentDir = __dirname;
1090
+ for (let i = 0; i < 10; i++) {
1091
+ const parentDir = path.dirname(currentDir);
1092
+ const claudePath = path.join(parentDir, '.claude');
1093
+ if (fs.existsSync(claudePath)) {
1094
+ possiblePaths.push(claudePath);
1095
+ }
1096
+ currentDir = parentDir;
1097
+ }
1098
+ for (const p of possiblePaths) {
1099
+ if (fs.existsSync(p)) {
1100
+ return p;
1101
+ }
1102
+ }
1103
+ return null;
1104
+ }
1105
+ /**
1106
+ * Write statusline configuration
1107
+ */
1108
+ async function writeStatusline(targetDir, options, result) {
1109
+ const claudeDir = path.join(targetDir, '.claude');
1110
+ const helpersDir = path.join(targetDir, '.claude', 'helpers');
1111
+ // Find source .claude directory (works for npm package and local dev)
1112
+ const sourceClaudeDir = findSourceClaudeDir(options.sourceBaseDir);
1113
+ // Try to copy existing advanced statusline files from source
1114
+ const advancedStatuslineFiles = [
1115
+ { src: 'statusline.sh', dest: 'statusline.sh', dir: claudeDir },
1116
+ { src: 'statusline.mjs', dest: 'statusline.mjs', dir: claudeDir },
1117
+ ];
1118
+ if (sourceClaudeDir) {
1119
+ for (const file of advancedStatuslineFiles) {
1120
+ const sourcePath = path.join(sourceClaudeDir, file.src);
1121
+ const destPath = path.join(file.dir, file.dest);
1122
+ if (fs.existsSync(sourcePath)) {
1123
+ if (!fs.existsSync(destPath) || options.force) {
1124
+ fs.copyFileSync(sourcePath, destPath);
1125
+ // Make shell scripts and mjs executable
1126
+ if (file.src.endsWith('.sh') || file.src.endsWith('.mjs')) {
1127
+ fs.chmodSync(destPath, '755');
1128
+ }
1129
+ result.created.files.push(`.claude/${file.dest}`);
1130
+ }
1131
+ else {
1132
+ result.skipped.push(`.claude/${file.dest}`);
1133
+ }
1134
+ }
1135
+ }
1136
+ }
1137
+ // ALWAYS generate statusline.cjs — the generated version includes AgentDB
1138
+ // vectors/size, tests, ADRs, hooks, and integration stats that the
1139
+ // pre-installed static copy in the npm package lacks.
1140
+ // This must overwrite any copy from writeHelpers() which copies the legacy file.
1141
+ const statuslineScript = generateStatuslineScript(options);
1142
+ const statuslinePath = path.join(helpersDir, 'statusline.cjs');
1143
+ fs.writeFileSync(statuslinePath, statuslineScript, 'utf-8');
1144
+ result.created.files.push('.claude/helpers/statusline.cjs');
1145
+ }
1146
+ /**
1147
+ * Write runtime configuration (.claude-flow/)
1148
+ */
1149
+ async function writeRuntimeConfig(targetDir, options, result) {
1150
+ const configPath = path.join(targetDir, '.claude-flow', 'config.yaml');
1151
+ if (fs.existsSync(configPath) && !options.force) {
1152
+ result.skipped.push('.claude-flow/config.yaml');
1153
+ return;
1154
+ }
1155
+ const config = `# RuFlo V3 Runtime Configuration
1156
+ # Generated: ${new Date().toISOString()}
1157
+
1158
+ version: "3.0.0"
1159
+
1160
+ swarm:
1161
+ topology: ${options.runtime.topology}
1162
+ maxAgents: ${options.runtime.maxAgents}
1163
+ autoScale: true
1164
+ coordinationStrategy: consensus
1165
+
1166
+ memory:
1167
+ backend: ${options.runtime.memoryBackend}
1168
+ enableHNSW: ${options.runtime.enableHNSW}
1169
+ persistPath: .claude-flow/data
1170
+ cacheSize: 100
1171
+ # ADR-049: Self-Learning Memory
1172
+ learningBridge:
1173
+ enabled: ${options.runtime.enableLearningBridge ?? options.runtime.enableNeural}
1174
+ sonaMode: balanced
1175
+ confidenceDecayRate: 0.005
1176
+ accessBoostAmount: 0.03
1177
+ consolidationThreshold: 10
1178
+ memoryGraph:
1179
+ enabled: ${options.runtime.enableMemoryGraph ?? true}
1180
+ pageRankDamping: 0.85
1181
+ maxNodes: 5000
1182
+ similarityThreshold: 0.8
1183
+ agentScopes:
1184
+ enabled: ${options.runtime.enableAgentScopes ?? true}
1185
+ defaultScope: project
1186
+
1187
+ neural:
1188
+ enabled: ${options.runtime.enableNeural}
1189
+ modelPath: .claude-flow/neural
1190
+
1191
+ hooks:
1192
+ enabled: true
1193
+ autoExecute: true
1194
+
1195
+ mcp:
1196
+ autoStart: ${options.mcp.autoStart}
1197
+ port: ${options.mcp.port}
1198
+ `;
1199
+ fs.writeFileSync(configPath, config, 'utf-8');
1200
+ result.created.files.push('.claude-flow/config.yaml');
1201
+ // Write .gitignore
1202
+ const gitignorePath = path.join(targetDir, '.claude-flow', '.gitignore');
1203
+ const gitignore = `# Claude Flow runtime files
1204
+ data/
1205
+ logs/
1206
+ sessions/
1207
+ neural/
1208
+ *.log
1209
+ *.tmp
1210
+ `;
1211
+ if (!fs.existsSync(gitignorePath) || options.force) {
1212
+ fs.writeFileSync(gitignorePath, gitignore, 'utf-8');
1213
+ result.created.files.push('.claude-flow/.gitignore');
1214
+ }
1215
+ // Write CAPABILITIES.md with full system overview
1216
+ await writeCapabilitiesDoc(targetDir, options, result);
1217
+ }
1218
+ /**
1219
+ * Write initial metrics files for statusline
1220
+ * Creates baseline data so statusline shows meaningful state instead of all zeros
1221
+ */
1222
+ async function writeInitialMetrics(targetDir, options, result) {
1223
+ const metricsDir = path.join(targetDir, '.claude-flow', 'metrics');
1224
+ const learningDir = path.join(targetDir, '.claude-flow', 'learning');
1225
+ const securityDir = path.join(targetDir, '.claude-flow', 'security');
1226
+ // Ensure directories exist
1227
+ for (const dir of [metricsDir, learningDir, securityDir]) {
1228
+ if (!fs.existsSync(dir)) {
1229
+ fs.mkdirSync(dir, { recursive: true });
1230
+ }
1231
+ }
1232
+ // Create initial v3-progress.json
1233
+ const progressPath = path.join(metricsDir, 'v3-progress.json');
1234
+ if (!fs.existsSync(progressPath) || options.force) {
1235
+ const progress = {
1236
+ version: '3.0.0',
1237
+ initialized: new Date().toISOString(),
1238
+ domains: {
1239
+ completed: 0,
1240
+ total: 5,
1241
+ status: 'INITIALIZING'
1242
+ },
1243
+ ddd: {
1244
+ progress: 0,
1245
+ modules: 0,
1246
+ totalFiles: 0,
1247
+ totalLines: 0
1248
+ },
1249
+ swarm: {
1250
+ activeAgents: 0,
1251
+ maxAgents: options.runtime.maxAgents,
1252
+ topology: options.runtime.topology
1253
+ },
1254
+ learning: {
1255
+ status: 'READY',
1256
+ patternsLearned: 0,
1257
+ sessionsCompleted: 0
1258
+ },
1259
+ _note: 'Metrics will update as you use Ruflo. Run: npx ruflo@latest daemon start'
1260
+ };
1261
+ fs.writeFileSync(progressPath, JSON.stringify(progress, null, 2), 'utf-8');
1262
+ result.created.files.push('.claude-flow/metrics/v3-progress.json');
1263
+ }
1264
+ // Create initial swarm-activity.json
1265
+ const activityPath = path.join(metricsDir, 'swarm-activity.json');
1266
+ if (!fs.existsSync(activityPath) || options.force) {
1267
+ const activity = {
1268
+ timestamp: new Date().toISOString(),
1269
+ processes: {
1270
+ agentic_flow: 0,
1271
+ mcp_server: 0,
1272
+ estimated_agents: 0
1273
+ },
1274
+ swarm: {
1275
+ active: false,
1276
+ agent_count: 0,
1277
+ coordination_active: false
1278
+ },
1279
+ integration: {
1280
+ agentic_flow_active: false,
1281
+ mcp_active: false
1282
+ },
1283
+ _initialized: true
1284
+ };
1285
+ fs.writeFileSync(activityPath, JSON.stringify(activity, null, 2), 'utf-8');
1286
+ result.created.files.push('.claude-flow/metrics/swarm-activity.json');
1287
+ }
1288
+ // Create initial learning.json
1289
+ const learningPath = path.join(metricsDir, 'learning.json');
1290
+ if (!fs.existsSync(learningPath) || options.force) {
1291
+ const learning = {
1292
+ initialized: new Date().toISOString(),
1293
+ routing: {
1294
+ accuracy: 0,
1295
+ decisions: 0
1296
+ },
1297
+ patterns: {
1298
+ shortTerm: 0,
1299
+ longTerm: 0,
1300
+ quality: 0
1301
+ },
1302
+ sessions: {
1303
+ total: 0,
1304
+ current: null
1305
+ },
1306
+ _note: 'Intelligence grows as you use Ruflo'
1307
+ };
1308
+ fs.writeFileSync(learningPath, JSON.stringify(learning, null, 2), 'utf-8');
1309
+ result.created.files.push('.claude-flow/metrics/learning.json');
1310
+ }
1311
+ // Create initial audit-status.json
1312
+ const auditPath = path.join(securityDir, 'audit-status.json');
1313
+ if (!fs.existsSync(auditPath) || options.force) {
1314
+ const audit = {
1315
+ initialized: new Date().toISOString(),
1316
+ status: 'PENDING',
1317
+ cvesFixed: 0,
1318
+ totalCves: 3,
1319
+ lastScan: null,
1320
+ _note: 'Run: npx @claude-flow/cli@latest security scan'
1321
+ };
1322
+ fs.writeFileSync(auditPath, JSON.stringify(audit, null, 2), 'utf-8');
1323
+ result.created.files.push('.claude-flow/security/audit-status.json');
1324
+ }
1325
+ }
1326
+ /**
1327
+ * Write CAPABILITIES.md - comprehensive overview of all Ruflo features
1328
+ */
1329
+ async function writeCapabilitiesDoc(targetDir, options, result) {
1330
+ const capabilitiesPath = path.join(targetDir, '.claude-flow', 'CAPABILITIES.md');
1331
+ if (fs.existsSync(capabilitiesPath) && !options.force) {
1332
+ result.skipped.push('.claude-flow/CAPABILITIES.md');
1333
+ return;
1334
+ }
1335
+ const capabilities = `# RuFlo V3 - Complete Capabilities Reference
1336
+ > Generated: ${new Date().toISOString()}
1337
+ > Full documentation: https://github.com/ruvnet/claude-flow
1338
+
1339
+ ## 📋 Table of Contents
1340
+
1341
+ 1. [Overview](#overview)
1342
+ 2. [Swarm Orchestration](#swarm-orchestration)
1343
+ 3. [Available Agents (60+)](#available-agents)
1344
+ 4. [CLI Commands (26 Commands, 140+ Subcommands)](#cli-commands)
1345
+ 5. [Hooks System (27 Hooks + 12 Workers)](#hooks-system)
1346
+ 6. [Memory & Intelligence (RuVector)](#memory--intelligence)
1347
+ 7. [Hive-Mind Consensus](#hive-mind-consensus)
1348
+ 8. [Performance Targets](#performance-targets)
1349
+ 9. [Integration Ecosystem](#integration-ecosystem)
1350
+
1351
+ ---
1352
+
1353
+ ## Overview
1354
+
1355
+ RuFlo V3 is a domain-driven design architecture for multi-agent AI coordination with:
1356
+
1357
+ - **15-Agent Swarm Coordination** with hierarchical and mesh topologies
1358
+ - **HNSW Vector Search** - 150x-12,500x faster pattern retrieval
1359
+ - **SONA Neural Learning** - Self-optimizing with <0.05ms adaptation
1360
+ - **Byzantine Fault Tolerance** - Queen-led consensus mechanisms
1361
+ - **MCP Server Integration** - Model Context Protocol support
1362
+
1363
+ ### Current Configuration
1364
+ | Setting | Value |
1365
+ |---------|-------|
1366
+ | Topology | ${options.runtime.topology} |
1367
+ | Max Agents | ${options.runtime.maxAgents} |
1368
+ | Memory Backend | ${options.runtime.memoryBackend} |
1369
+ | HNSW Indexing | ${options.runtime.enableHNSW ? 'Enabled' : 'Disabled'} |
1370
+ | Neural Learning | ${options.runtime.enableNeural ? 'Enabled' : 'Disabled'} |
1371
+ | LearningBridge | ${options.runtime.enableLearningBridge ? 'Enabled (SONA + ReasoningBank)' : 'Disabled'} |
1372
+ | Knowledge Graph | ${options.runtime.enableMemoryGraph ? 'Enabled (PageRank + Communities)' : 'Disabled'} |
1373
+ | Agent Scopes | ${options.runtime.enableAgentScopes ? 'Enabled (project/local/user)' : 'Disabled'} |
1374
+
1375
+ ---
1376
+
1377
+ ## Swarm Orchestration
1378
+
1379
+ ### Topologies
1380
+ | Topology | Description | Best For |
1381
+ |----------|-------------|----------|
1382
+ | \`hierarchical\` | Queen controls workers directly | Anti-drift, tight control |
1383
+ | \`mesh\` | Fully connected peer network | Distributed tasks |
1384
+ | \`hierarchical-mesh\` | V3 hybrid (recommended) | 10+ agents |
1385
+ | \`ring\` | Circular communication | Sequential workflows |
1386
+ | \`star\` | Central coordinator | Simple coordination |
1387
+ | \`adaptive\` | Dynamic based on load | Variable workloads |
1388
+
1389
+ ### Strategies
1390
+ - \`balanced\` - Even distribution across agents
1391
+ - \`specialized\` - Clear roles, no overlap (anti-drift)
1392
+ - \`adaptive\` - Dynamic task routing
1393
+
1394
+ ### Quick Commands
1395
+ \`\`\`bash
1396
+ # Initialize swarm
1397
+ npx @claude-flow/cli@latest swarm init --topology hierarchical --max-agents 8 --strategy specialized
1398
+
1399
+ # Check status
1400
+ npx @claude-flow/cli@latest swarm status
1401
+
1402
+ # Monitor activity
1403
+ npx @claude-flow/cli@latest swarm monitor
1404
+ \`\`\`
1405
+
1406
+ ---
1407
+
1408
+ ## Available Agents
1409
+
1410
+ ### Core Development (5)
1411
+ \`coder\`, \`reviewer\`, \`tester\`, \`planner\`, \`researcher\`
1412
+
1413
+ ### V3 Specialized (4)
1414
+ \`security-architect\`, \`security-auditor\`, \`memory-specialist\`, \`performance-engineer\`
1415
+
1416
+ ### Swarm Coordination (5)
1417
+ \`hierarchical-coordinator\`, \`mesh-coordinator\`, \`adaptive-coordinator\`, \`collective-intelligence-coordinator\`, \`swarm-memory-manager\`
1418
+
1419
+ ### Consensus & Distributed (7)
1420
+ \`byzantine-coordinator\`, \`raft-manager\`, \`gossip-coordinator\`, \`consensus-builder\`, \`crdt-synchronizer\`, \`quorum-manager\`, \`security-manager\`
1421
+
1422
+ ### Performance & Optimization (5)
1423
+ \`perf-analyzer\`, \`performance-benchmarker\`, \`task-orchestrator\`, \`memory-coordinator\`, \`smart-agent\`
1424
+
1425
+ ### GitHub & Repository (9)
1426
+ \`github-modes\`, \`pr-manager\`, \`code-review-swarm\`, \`issue-tracker\`, \`release-manager\`, \`workflow-automation\`, \`project-board-sync\`, \`repo-architect\`, \`multi-repo-swarm\`
1427
+
1428
+ ### SPARC Methodology (6)
1429
+ \`sparc-coord\`, \`sparc-coder\`, \`specification\`, \`pseudocode\`, \`architecture\`, \`refinement\`
1430
+
1431
+ ### Specialized Development (8)
1432
+ \`backend-dev\`, \`mobile-dev\`, \`ml-developer\`, \`cicd-engineer\`, \`api-docs\`, \`system-architect\`, \`code-analyzer\`, \`base-template-generator\`
1433
+
1434
+ ### Testing & Validation (2)
1435
+ \`tdd-london-swarm\`, \`production-validator\`
1436
+
1437
+ ### Agent Routing by Task
1438
+ | Task Type | Recommended Agents | Topology |
1439
+ |-----------|-------------------|----------|
1440
+ | Bug Fix | researcher, coder, tester | mesh |
1441
+ | New Feature | coordinator, architect, coder, tester, reviewer | hierarchical |
1442
+ | Refactoring | architect, coder, reviewer | mesh |
1443
+ | Performance | researcher, perf-engineer, coder | hierarchical |
1444
+ | Security | security-architect, auditor, reviewer | hierarchical |
1445
+ | Docs | researcher, api-docs | mesh |
1446
+
1447
+ ---
1448
+
1449
+ ## CLI Commands
1450
+
1451
+ ### Core Commands (12)
1452
+ | Command | Subcommands | Description |
1453
+ |---------|-------------|-------------|
1454
+ | \`init\` | 4 | Project initialization |
1455
+ | \`agent\` | 8 | Agent lifecycle management |
1456
+ | \`swarm\` | 6 | Multi-agent coordination |
1457
+ | \`memory\` | 11 | AgentDB with HNSW search |
1458
+ | \`mcp\` | 9 | MCP server management |
1459
+ | \`task\` | 6 | Task assignment |
1460
+ | \`session\` | 7 | Session persistence |
1461
+ | \`config\` | 7 | Configuration |
1462
+ | \`status\` | 3 | System monitoring |
1463
+ | \`workflow\` | 6 | Workflow templates |
1464
+ | \`hooks\` | 17 | Self-learning hooks |
1465
+ | \`hive-mind\` | 6 | Consensus coordination |
1466
+
1467
+ ### Advanced Commands (14)
1468
+ | Command | Subcommands | Description |
1469
+ |---------|-------------|-------------|
1470
+ | \`daemon\` | 5 | Background workers |
1471
+ | \`neural\` | 5 | Pattern training |
1472
+ | \`security\` | 6 | Security scanning |
1473
+ | \`performance\` | 5 | Profiling & benchmarks |
1474
+ | \`providers\` | 5 | AI provider config |
1475
+ | \`plugins\` | 5 | Plugin management |
1476
+ | \`deployment\` | 5 | Deploy management |
1477
+ | \`embeddings\` | 4 | Vector embeddings |
1478
+ | \`claims\` | 4 | Authorization |
1479
+ | \`migrate\` | 5 | V2→V3 migration |
1480
+ | \`process\` | 4 | Process management |
1481
+ | \`doctor\` | 1 | Health diagnostics |
1482
+ | \`completions\` | 4 | Shell completions |
1483
+
1484
+ ### Example Commands
1485
+ \`\`\`bash
1486
+ # Initialize
1487
+ npx @claude-flow/cli@latest init --wizard
1488
+
1489
+ # Spawn agent
1490
+ npx @claude-flow/cli@latest agent spawn -t coder --name my-coder
1491
+
1492
+ # Memory operations
1493
+ npx @claude-flow/cli@latest memory store --key "pattern" --value "data" --namespace patterns
1494
+ npx @claude-flow/cli@latest memory search --query "authentication"
1495
+
1496
+ # Diagnostics
1497
+ npx @claude-flow/cli@latest doctor --fix
1498
+ \`\`\`
1499
+
1500
+ ---
1501
+
1502
+ ## Hooks System
1503
+
1504
+ ### 27 Available Hooks
1505
+
1506
+ #### Core Hooks (6)
1507
+ | Hook | Description |
1508
+ |------|-------------|
1509
+ | \`pre-edit\` | Context before file edits |
1510
+ | \`post-edit\` | Record edit outcomes |
1511
+ | \`pre-command\` | Risk assessment |
1512
+ | \`post-command\` | Command metrics |
1513
+ | \`pre-task\` | Task start + agent suggestions |
1514
+ | \`post-task\` | Task completion learning |
1515
+
1516
+ #### Session Hooks (4)
1517
+ | Hook | Description |
1518
+ |------|-------------|
1519
+ | \`session-start\` | Start/restore session |
1520
+ | \`session-end\` | Persist state |
1521
+ | \`session-restore\` | Restore previous |
1522
+ | \`notify\` | Cross-agent notifications |
1523
+
1524
+ #### Intelligence Hooks (5)
1525
+ | Hook | Description |
1526
+ |------|-------------|
1527
+ | \`route\` | Optimal agent routing |
1528
+ | \`explain\` | Routing decisions |
1529
+ | \`pretrain\` | Bootstrap intelligence |
1530
+ | \`build-agents\` | Generate configs |
1531
+ | \`transfer\` | Pattern transfer |
1532
+
1533
+ #### Coverage Hooks (3)
1534
+ | Hook | Description |
1535
+ |------|-------------|
1536
+ | \`coverage-route\` | Coverage-based routing |
1537
+ | \`coverage-suggest\` | Improvement suggestions |
1538
+ | \`coverage-gaps\` | Gap analysis |
1539
+
1540
+ ### 12 Background Workers
1541
+ | Worker | Priority | Purpose |
1542
+ |--------|----------|---------|
1543
+ | \`ultralearn\` | normal | Deep knowledge |
1544
+ | \`optimize\` | high | Performance |
1545
+ | \`consolidate\` | low | Memory consolidation |
1546
+ | \`predict\` | normal | Predictive preload |
1547
+ | \`audit\` | critical | Security |
1548
+ | \`map\` | normal | Codebase mapping |
1549
+ | \`preload\` | low | Resource preload |
1550
+ | \`deepdive\` | normal | Deep analysis |
1551
+ | \`document\` | normal | Auto-docs |
1552
+ | \`refactor\` | normal | Suggestions |
1553
+ | \`benchmark\` | normal | Benchmarking |
1554
+ | \`testgaps\` | normal | Coverage gaps |
1555
+
1556
+ ---
1557
+
1558
+ ## Memory & Intelligence
1559
+
1560
+ ### RuVector Intelligence System
1561
+ - **SONA**: Self-Optimizing Neural Architecture (<0.05ms)
1562
+ - **MoE**: Mixture of Experts routing
1563
+ - **HNSW**: 150x-12,500x faster search
1564
+ - **EWC++**: Prevents catastrophic forgetting
1565
+ - **Flash Attention**: 2.49x-7.47x speedup
1566
+ - **Int8 Quantization**: 3.92x memory reduction
1567
+
1568
+ ### 4-Step Intelligence Pipeline
1569
+ 1. **RETRIEVE** - HNSW pattern search
1570
+ 2. **JUDGE** - Success/failure verdicts
1571
+ 3. **DISTILL** - LoRA learning extraction
1572
+ 4. **CONSOLIDATE** - EWC++ preservation
1573
+
1574
+ ### Self-Learning Memory (ADR-049)
1575
+
1576
+ | Component | Status | Description |
1577
+ |-----------|--------|-------------|
1578
+ | **LearningBridge** | ${options.runtime.enableLearningBridge ? '✅ Enabled' : '⏸ Disabled'} | Connects insights to SONA/ReasoningBank neural pipeline |
1579
+ | **MemoryGraph** | ${options.runtime.enableMemoryGraph ? '✅ Enabled' : '⏸ Disabled'} | PageRank knowledge graph + community detection |
1580
+ | **AgentMemoryScope** | ${options.runtime.enableAgentScopes ? '✅ Enabled' : '⏸ Disabled'} | 3-scope agent memory (project/local/user) |
1581
+
1582
+ **LearningBridge** - Insights trigger learning trajectories. Confidence evolves: +0.03 on access, -0.005/hour decay. Consolidation runs the JUDGE/DISTILL/CONSOLIDATE pipeline.
1583
+
1584
+ **MemoryGraph** - Builds a knowledge graph from entry references. PageRank identifies influential insights. Communities group related knowledge. Graph-aware ranking blends vector + structural scores.
1585
+
1586
+ **AgentMemoryScope** - Maps Claude Code 3-scope directories:
1587
+ - \`project\`: \`<gitRoot>/.claude/agent-memory/<agent>/\`
1588
+ - \`local\`: \`<gitRoot>/.claude/agent-memory-local/<agent>/\`
1589
+ - \`user\`: \`~/.claude/agent-memory/<agent>/\`
1590
+
1591
+ High-confidence insights (>0.8) can transfer between agents.
1592
+
1593
+ ### Memory Commands
1594
+ \`\`\`bash
1595
+ # Store pattern
1596
+ npx @claude-flow/cli@latest memory store --key "name" --value "data" --namespace patterns
1597
+
1598
+ # Semantic search
1599
+ npx @claude-flow/cli@latest memory search --query "authentication"
1600
+
1601
+ # List entries
1602
+ npx @claude-flow/cli@latest memory list --namespace patterns
1603
+
1604
+ # Initialize database
1605
+ npx @claude-flow/cli@latest memory init --force
1606
+ \`\`\`
1607
+
1608
+ ---
1609
+
1610
+ ## Hive-Mind Consensus
1611
+
1612
+ ### Queen Types
1613
+ | Type | Role |
1614
+ |------|------|
1615
+ | Strategic Queen | Long-term planning |
1616
+ | Tactical Queen | Execution coordination |
1617
+ | Adaptive Queen | Dynamic optimization |
1618
+
1619
+ ### Worker Types (8)
1620
+ \`researcher\`, \`coder\`, \`analyst\`, \`tester\`, \`architect\`, \`reviewer\`, \`optimizer\`, \`documenter\`
1621
+
1622
+ ### Consensus Mechanisms
1623
+ | Mechanism | Fault Tolerance | Use Case |
1624
+ |-----------|-----------------|----------|
1625
+ | \`byzantine\` | f < n/3 faulty | Adversarial |
1626
+ | \`raft\` | f < n/2 failed | Leader-based |
1627
+ | \`gossip\` | Eventually consistent | Large scale |
1628
+ | \`crdt\` | Conflict-free | Distributed |
1629
+ | \`quorum\` | Configurable | Flexible |
1630
+
1631
+ ### Hive-Mind Commands
1632
+ \`\`\`bash
1633
+ # Initialize
1634
+ npx @claude-flow/cli@latest hive-mind init --queen-type strategic
1635
+
1636
+ # Status
1637
+ npx @claude-flow/cli@latest hive-mind status
1638
+
1639
+ # Spawn workers
1640
+ npx @claude-flow/cli@latest hive-mind spawn --count 5 --type worker
1641
+
1642
+ # Consensus
1643
+ npx @claude-flow/cli@latest hive-mind consensus --propose "task"
1644
+ \`\`\`
1645
+
1646
+ ---
1647
+
1648
+ ## Performance Targets
1649
+
1650
+ | Metric | Target | Status |
1651
+ |--------|--------|--------|
1652
+ | HNSW Search | 150x-12,500x faster | ✅ Implemented |
1653
+ | Memory Reduction | 50-75% | ✅ Implemented (3.92x) |
1654
+ | SONA Integration | Pattern learning | ✅ Implemented |
1655
+ | Flash Attention | 2.49x-7.47x | 🔄 In Progress |
1656
+ | MCP Response | <100ms | ✅ Achieved |
1657
+ | CLI Startup | <500ms | ✅ Achieved |
1658
+ | SONA Adaptation | <0.05ms | 🔄 In Progress |
1659
+ | Graph Build (1k) | <200ms | ✅ 2.78ms (71.9x headroom) |
1660
+ | PageRank (1k) | <100ms | ✅ 12.21ms (8.2x headroom) |
1661
+ | Insight Recording | <5ms/each | ✅ 0.12ms (41x headroom) |
1662
+ | Consolidation | <500ms | ✅ 0.26ms (1,955x headroom) |
1663
+ | Knowledge Transfer | <100ms | ✅ 1.25ms (80x headroom) |
1664
+
1665
+ ---
1666
+
1667
+ ## Integration Ecosystem
1668
+
1669
+ ### Integrated Packages
1670
+ | Package | Version | Purpose |
1671
+ |---------|---------|---------|
1672
+ | agentic-flow | 3.0.0-alpha.1 | Core coordination + ReasoningBank + Router |
1673
+ | agentdb | 3.0.0-alpha.10 | Vector database + 8 controllers |
1674
+ | @ruvector/attention | 0.1.3 | Flash attention |
1675
+ | @ruvector/sona | 0.1.5 | Neural learning |
1676
+
1677
+ ### Optional Integrations
1678
+ | Package | Command |
1679
+ |---------|---------|
1680
+ | ruv-swarm | \`npx ruv-swarm mcp start\` |
1681
+ | flow-nexus | \`npx flow-nexus@latest mcp start\` |
1682
+ | agentic-jujutsu | \`npx agentic-jujutsu@latest\` |
1683
+
1684
+ ### MCP Server Setup
1685
+ \`\`\`bash
1686
+ # Add Ruflo MCP
1687
+ claude mcp add ruflo -- npx -y ruflo@latest
1688
+
1689
+ # Optional servers
1690
+ claude mcp add ruv-swarm -- npx -y ruv-swarm mcp start
1691
+ claude mcp add flow-nexus -- npx -y flow-nexus@latest mcp start
1692
+ \`\`\`
1693
+
1694
+ ---
1695
+
1696
+ ## Quick Reference
1697
+
1698
+ ### Essential Commands
1699
+ \`\`\`bash
1700
+ # Setup
1701
+ npx ruflo@latest init --wizard
1702
+ npx ruflo@latest daemon start
1703
+ npx ruflo@latest doctor --fix
1704
+
1705
+ # Swarm
1706
+ npx ruflo@latest swarm init --topology hierarchical --max-agents 8
1707
+ npx ruflo@latest swarm status
1708
+
1709
+ # Agents
1710
+ npx ruflo@latest agent spawn -t coder
1711
+ npx ruflo@latest agent list
1712
+
1713
+ # Memory
1714
+ npx ruflo@latest memory search --query "patterns"
1715
+
1716
+ # Hooks
1717
+ npx ruflo@latest hooks pre-task --description "task"
1718
+ npx ruflo@latest hooks worker dispatch --trigger optimize
1719
+ \`\`\`
1720
+
1721
+ ### File Structure
1722
+ \`\`\`
1723
+ .claude-flow/
1724
+ ├── config.yaml # Runtime configuration
1725
+ ├── CAPABILITIES.md # This file
1726
+ ├── data/ # Memory storage
1727
+ ├── logs/ # Operation logs
1728
+ ├── sessions/ # Session state
1729
+ ├── hooks/ # Custom hooks
1730
+ ├── agents/ # Agent configs
1731
+ └── workflows/ # Workflow templates
1732
+ \`\`\`
1733
+
1734
+ ---
1735
+
1736
+ **Full Documentation**: https://github.com/ruvnet/claude-flow
1737
+ **Issues**: https://github.com/ruvnet/claude-flow/issues
1738
+ `;
1739
+ fs.writeFileSync(capabilitiesPath, capabilities, 'utf-8');
1740
+ result.created.files.push('.claude-flow/CAPABILITIES.md');
1741
+ }
1742
+ /**
1743
+ * Write CLAUDE.md with swarm guidance
1744
+ */
1745
+ async function writeClaudeMd(targetDir, options, result) {
1746
+ const claudeMdPath = path.join(targetDir, 'CLAUDE.md');
1747
+ if (fs.existsSync(claudeMdPath) && !options.force) {
1748
+ result.skipped.push('CLAUDE.md');
1749
+ }
1750
+ else {
1751
+ // Determine template: explicit option > infer from components > 'standard'
1752
+ const inferredTemplate = (!options.components.commands && !options.components.agents) ? 'minimal' : undefined;
1753
+ const content = generateClaudeMd(options, inferredTemplate);
1754
+ fs.writeFileSync(claudeMdPath, content, 'utf-8');
1755
+ result.created.files.push('CLAUDE.md');
1756
+ }
1757
+ // Also write/append global ~/.claude/CLAUDE.md so ruflo tools are used automatically (#1497).
1758
+ // Opt-out via --no-global / options.skipGlobalClaudeMd (#1744 — keeps global rules file pristine
1759
+ // for users who don't want a per-machine pointer block).
1760
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
1761
+ if (homeDir && !options.skipGlobalClaudeMd) {
1762
+ const globalClaudeDir = path.join(homeDir, '.claude');
1763
+ const globalClaudeMd = path.join(globalClaudeDir, 'CLAUDE.md');
1764
+ const rufloBlock = [
1765
+ '',
1766
+ '# Ruflo Integration (auto-generated by ruflo init)',
1767
+ 'When working on multi-file tasks or complex features, use ToolSearch to find and invoke ruflo MCP tools.',
1768
+ 'Key tools: memory_store, memory_search, hooks_route, swarm_init, agent_spawn.',
1769
+ 'Check system-reminder tags for [INTELLIGENCE] pattern suggestions before starting work.',
1770
+ '',
1771
+ ].join('\n');
1772
+ try {
1773
+ if (!fs.existsSync(globalClaudeDir)) {
1774
+ fs.mkdirSync(globalClaudeDir, { recursive: true });
1775
+ }
1776
+ if (fs.existsSync(globalClaudeMd)) {
1777
+ const existing = fs.readFileSync(globalClaudeMd, 'utf-8');
1778
+ if (!existing.includes('Ruflo Integration')) {
1779
+ fs.appendFileSync(globalClaudeMd, rufloBlock);
1780
+ result.created.files.push('~/.claude/CLAUDE.md (appended ruflo block)');
1781
+ }
1782
+ }
1783
+ else {
1784
+ fs.writeFileSync(globalClaudeMd, rufloBlock.trimStart(), 'utf-8');
1785
+ result.created.files.push('~/.claude/CLAUDE.md');
1786
+ }
1787
+ }
1788
+ catch {
1789
+ // Non-critical — global CLAUDE.md is best-effort
1790
+ }
1791
+ }
1792
+ else if (options.skipGlobalClaudeMd) {
1793
+ result.skipped.push('~/.claude/CLAUDE.md (--no-global)');
1794
+ }
1795
+ }
1796
+ /**
1797
+ * Find source directory for skills/commands/agents
1798
+ */
1799
+ function findSourceDir(type, sourceBaseDir) {
1800
+ // Build list of possible paths to check
1801
+ const possiblePaths = [];
1802
+ // If explicit source base directory is provided, use it first
1803
+ if (sourceBaseDir) {
1804
+ possiblePaths.push(path.join(sourceBaseDir, '.claude', type));
1805
+ }
1806
+ // IMPORTANT: Check the package's own .claude directory first
1807
+ // This is the primary path when running as an npm package
1808
+ // __dirname is typically /path/to/node_modules/@claude-flow/cli/dist/src/init
1809
+ // We need to go up 3 levels to reach the package root (dist/src/init -> dist/src -> dist -> root)
1810
+ const packageRoot = path.resolve(__dirname, '..', '..', '..');
1811
+ const packageDotClaude = path.join(packageRoot, '.claude', type);
1812
+ if (fs.existsSync(packageDotClaude)) {
1813
+ possiblePaths.unshift(packageDotClaude); // Add to beginning (highest priority)
1814
+ }
1815
+ // From dist/src/init -> go up to project root
1816
+ const distPath = __dirname;
1817
+ // Try to find the project root by looking for .claude directory
1818
+ let currentDir = distPath;
1819
+ for (let i = 0; i < 10; i++) {
1820
+ const parentDir = path.dirname(currentDir);
1821
+ const dotClaudePath = path.join(parentDir, '.claude', type);
1822
+ if (fs.existsSync(dotClaudePath)) {
1823
+ possiblePaths.push(dotClaudePath);
1824
+ }
1825
+ currentDir = parentDir;
1826
+ }
1827
+ // Also check relative to process.cwd() for development
1828
+ const cwdBased = [
1829
+ path.join(process.cwd(), '.claude', type),
1830
+ path.join(process.cwd(), '..', '.claude', type),
1831
+ path.join(process.cwd(), '..', '..', '.claude', type),
1832
+ ];
1833
+ possiblePaths.push(...cwdBased);
1834
+ // Check v2 directory for agents
1835
+ if (type === 'agents') {
1836
+ possiblePaths.push(path.join(process.cwd(), 'v2', '.claude', type), path.join(process.cwd(), '..', 'v2', '.claude', type));
1837
+ }
1838
+ // Plugin directory
1839
+ possiblePaths.push(path.join(process.cwd(), 'plugin', type), path.join(process.cwd(), '..', 'plugin', type));
1840
+ for (const p of possiblePaths) {
1841
+ if (fs.existsSync(p)) {
1842
+ return p;
1843
+ }
1844
+ }
1845
+ return null;
1846
+ }
1847
+ /**
1848
+ * Copy directory recursively
1849
+ */
1850
+ function copyDirRecursive(src, dest) {
1851
+ fs.mkdirSync(dest, { recursive: true });
1852
+ const entries = fs.readdirSync(src, { withFileTypes: true });
1853
+ for (const entry of entries) {
1854
+ const srcPath = path.join(src, entry.name);
1855
+ const destPath = path.join(dest, entry.name);
1856
+ if (entry.isDirectory()) {
1857
+ copyDirRecursive(srcPath, destPath);
1858
+ }
1859
+ else {
1860
+ fs.copyFileSync(srcPath, destPath);
1861
+ }
1862
+ }
1863
+ }
1864
+ /**
1865
+ * Count files with extension in directory
1866
+ */
1867
+ function countFiles(dir, ext) {
1868
+ let count = 0;
1869
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
1870
+ for (const entry of entries) {
1871
+ const fullPath = path.join(dir, entry.name);
1872
+ if (entry.isDirectory()) {
1873
+ count += countFiles(fullPath, ext);
1874
+ }
1875
+ else if (entry.name.endsWith(ext)) {
1876
+ count++;
1877
+ }
1878
+ }
1879
+ return count;
1880
+ }
1881
+ /**
1882
+ * Count enabled hooks
1883
+ */
1884
+ function countEnabledHooks(options) {
1885
+ const hooks = options.hooks;
1886
+ let count = 0;
1887
+ if (hooks.preToolUse)
1888
+ count++;
1889
+ if (hooks.postToolUse)
1890
+ count++;
1891
+ if (hooks.userPromptSubmit)
1892
+ count++;
1893
+ if (hooks.sessionStart)
1894
+ count++;
1895
+ if (hooks.stop)
1896
+ count++;
1897
+ if (hooks.preCompact)
1898
+ count++;
1899
+ if (hooks.notification)
1900
+ count++;
1901
+ return count;
1902
+ }
1903
+ export default executeInit;
1904
+ //# sourceMappingURL=executor.js.map