@claude-flow/cli 3.7.0-alpha.1 → 3.7.0-alpha.10

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 (476) hide show
  1. package/.claude/agents/analysis/analyze-code-quality.md +178 -178
  2. package/.claude/agents/analysis/code-analyzer.md +209 -209
  3. package/.claude/agents/analysis/code-review/analyze-code-quality.md +178 -178
  4. package/.claude/agents/architecture/arch-system-design.md +156 -156
  5. package/.claude/agents/architecture/system-design/arch-system-design.md +154 -154
  6. package/.claude/agents/browser/browser-agent.yaml +182 -182
  7. package/.claude/agents/consensus/byzantine-coordinator.md +62 -62
  8. package/.claude/agents/consensus/crdt-synchronizer.md +996 -996
  9. package/.claude/agents/consensus/gossip-coordinator.md +62 -62
  10. package/.claude/agents/consensus/performance-benchmarker.md +850 -850
  11. package/.claude/agents/consensus/quorum-manager.md +822 -822
  12. package/.claude/agents/consensus/raft-manager.md +62 -62
  13. package/.claude/agents/consensus/security-manager.md +621 -621
  14. package/.claude/agents/core/coder.md +452 -452
  15. package/.claude/agents/core/planner.md +374 -374
  16. package/.claude/agents/core/researcher.md +368 -368
  17. package/.claude/agents/core/reviewer.md +519 -519
  18. package/.claude/agents/core/tester.md +511 -511
  19. package/.claude/agents/custom/test-long-runner.md +44 -44
  20. package/.claude/agents/data/data-ml-model.md +444 -444
  21. package/.claude/agents/data/ml/data-ml-model.md +192 -192
  22. package/.claude/agents/development/backend/dev-backend-api.md +141 -141
  23. package/.claude/agents/development/dev-backend-api.md +344 -344
  24. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +163 -163
  25. package/.claude/agents/devops/ops-cicd-github.md +164 -164
  26. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +173 -173
  27. package/.claude/agents/documentation/docs-api-openapi.md +354 -354
  28. package/.claude/agents/flow-nexus/app-store.md +87 -87
  29. package/.claude/agents/flow-nexus/authentication.md +68 -68
  30. package/.claude/agents/flow-nexus/challenges.md +80 -80
  31. package/.claude/agents/flow-nexus/neural-network.md +87 -87
  32. package/.claude/agents/flow-nexus/payments.md +82 -82
  33. package/.claude/agents/flow-nexus/sandbox.md +75 -75
  34. package/.claude/agents/flow-nexus/swarm.md +75 -75
  35. package/.claude/agents/flow-nexus/user-tools.md +95 -95
  36. package/.claude/agents/flow-nexus/workflow.md +83 -83
  37. package/.claude/agents/github/code-review-swarm.md +377 -377
  38. package/.claude/agents/github/github-modes.md +172 -172
  39. package/.claude/agents/github/issue-tracker.md +575 -575
  40. package/.claude/agents/github/multi-repo-swarm.md +552 -552
  41. package/.claude/agents/github/pr-manager.md +437 -437
  42. package/.claude/agents/github/project-board-sync.md +508 -508
  43. package/.claude/agents/github/release-manager.md +604 -604
  44. package/.claude/agents/github/release-swarm.md +582 -582
  45. package/.claude/agents/github/repo-architect.md +397 -397
  46. package/.claude/agents/github/swarm-issue.md +572 -572
  47. package/.claude/agents/github/swarm-pr.md +427 -427
  48. package/.claude/agents/github/sync-coordinator.md +451 -451
  49. package/.claude/agents/github/workflow-automation.md +902 -902
  50. package/.claude/agents/goal/agent.md +815 -815
  51. package/.claude/agents/goal/goal-planner.md +72 -72
  52. package/.claude/agents/optimization/benchmark-suite.md +664 -664
  53. package/.claude/agents/optimization/load-balancer.md +430 -430
  54. package/.claude/agents/optimization/performance-monitor.md +671 -671
  55. package/.claude/agents/optimization/resource-allocator.md +673 -673
  56. package/.claude/agents/optimization/topology-optimizer.md +807 -807
  57. package/.claude/agents/payments/agentic-payments.md +126 -126
  58. package/.claude/agents/sona/sona-learning-optimizer.md +74 -74
  59. package/.claude/agents/sparc/architecture.md +698 -698
  60. package/.claude/agents/sparc/pseudocode.md +519 -519
  61. package/.claude/agents/sparc/refinement.md +801 -801
  62. package/.claude/agents/sparc/specification.md +477 -477
  63. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +224 -224
  64. package/.claude/agents/specialized/spec-mobile-react-native.md +226 -226
  65. package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
  66. package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
  67. package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
  68. package/.claude/agents/sublinear/performance-optimizer.md +367 -367
  69. package/.claude/agents/sublinear/trading-predictor.md +245 -245
  70. package/.claude/agents/swarm/adaptive-coordinator.md +1126 -1126
  71. package/.claude/agents/swarm/hierarchical-coordinator.md +709 -709
  72. package/.claude/agents/swarm/mesh-coordinator.md +962 -962
  73. package/.claude/agents/templates/automation-smart-agent.md +204 -204
  74. package/.claude/agents/templates/base-template-generator.md +289 -289
  75. package/.claude/agents/templates/coordinator-swarm-init.md +89 -89
  76. package/.claude/agents/templates/github-pr-manager.md +176 -176
  77. package/.claude/agents/templates/implementer-sparc-coder.md +258 -258
  78. package/.claude/agents/templates/memory-coordinator.md +186 -186
  79. package/.claude/agents/templates/orchestrator-task.md +138 -138
  80. package/.claude/agents/templates/performance-analyzer.md +198 -198
  81. package/.claude/agents/templates/sparc-coordinator.md +513 -513
  82. package/.claude/agents/testing/production-validator.md +394 -394
  83. package/.claude/agents/testing/tdd-london-swarm.md +243 -243
  84. package/.claude/agents/v3/adr-architect.md +184 -184
  85. package/.claude/agents/v3/aidefence-guardian.md +282 -282
  86. package/.claude/agents/v3/claims-authorizer.md +208 -208
  87. package/.claude/agents/v3/collective-intelligence-coordinator.md +993 -993
  88. package/.claude/agents/v3/ddd-domain-expert.md +220 -220
  89. package/.claude/agents/v3/injection-analyst.md +236 -236
  90. package/.claude/agents/v3/memory-specialist.md +995 -995
  91. package/.claude/agents/v3/performance-engineer.md +1233 -1233
  92. package/.claude/agents/v3/pii-detector.md +151 -151
  93. package/.claude/agents/v3/reasoningbank-learner.md +213 -213
  94. package/.claude/agents/v3/security-architect-aidefence.md +410 -410
  95. package/.claude/agents/v3/security-architect.md +867 -867
  96. package/.claude/agents/v3/security-auditor.md +771 -771
  97. package/.claude/agents/v3/sparc-orchestrator.md +182 -182
  98. package/.claude/agents/v3/swarm-memory-manager.md +157 -157
  99. package/.claude/agents/v3/v3-integration-architect.md +205 -205
  100. package/.claude/commands/agents/README.md +50 -50
  101. package/.claude/commands/agents/agent-capabilities.md +140 -140
  102. package/.claude/commands/agents/agent-coordination.md +28 -28
  103. package/.claude/commands/agents/agent-spawning.md +28 -28
  104. package/.claude/commands/agents/agent-types.md +216 -216
  105. package/.claude/commands/agents/health.md +139 -139
  106. package/.claude/commands/agents/list.md +100 -100
  107. package/.claude/commands/agents/logs.md +130 -130
  108. package/.claude/commands/agents/metrics.md +122 -122
  109. package/.claude/commands/agents/pool.md +127 -127
  110. package/.claude/commands/agents/spawn.md +140 -140
  111. package/.claude/commands/agents/status.md +115 -115
  112. package/.claude/commands/agents/stop.md +102 -102
  113. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
  114. package/.claude/commands/analysis/README.md +9 -9
  115. package/.claude/commands/analysis/bottleneck-detect.md +162 -162
  116. package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
  117. package/.claude/commands/analysis/performance-report.md +25 -25
  118. package/.claude/commands/analysis/token-efficiency.md +44 -44
  119. package/.claude/commands/analysis/token-usage.md +25 -25
  120. package/.claude/commands/automation/README.md +9 -9
  121. package/.claude/commands/automation/auto-agent.md +122 -122
  122. package/.claude/commands/automation/self-healing.md +105 -105
  123. package/.claude/commands/automation/session-memory.md +89 -89
  124. package/.claude/commands/automation/smart-agents.md +72 -72
  125. package/.claude/commands/automation/smart-spawn.md +25 -25
  126. package/.claude/commands/automation/workflow-select.md +25 -25
  127. package/.claude/commands/claude-flow-help.md +103 -103
  128. package/.claude/commands/claude-flow-memory.md +107 -107
  129. package/.claude/commands/claude-flow-swarm.md +205 -205
  130. package/.claude/commands/coordination/README.md +9 -9
  131. package/.claude/commands/coordination/agent-spawn.md +25 -25
  132. package/.claude/commands/coordination/init.md +44 -44
  133. package/.claude/commands/coordination/orchestrate.md +43 -43
  134. package/.claude/commands/coordination/spawn.md +45 -45
  135. package/.claude/commands/coordination/swarm-init.md +85 -85
  136. package/.claude/commands/coordination/task-orchestrate.md +25 -25
  137. package/.claude/commands/flow-nexus/app-store.md +123 -123
  138. package/.claude/commands/flow-nexus/challenges.md +119 -119
  139. package/.claude/commands/flow-nexus/login-registration.md +64 -64
  140. package/.claude/commands/flow-nexus/neural-network.md +133 -133
  141. package/.claude/commands/flow-nexus/payments.md +115 -115
  142. package/.claude/commands/flow-nexus/sandbox.md +82 -82
  143. package/.claude/commands/flow-nexus/swarm.md +86 -86
  144. package/.claude/commands/flow-nexus/user-tools.md +151 -151
  145. package/.claude/commands/flow-nexus/workflow.md +114 -114
  146. package/.claude/commands/github/README.md +11 -11
  147. package/.claude/commands/github/code-review-swarm.md +513 -513
  148. package/.claude/commands/github/code-review.md +25 -25
  149. package/.claude/commands/github/github-modes.md +146 -146
  150. package/.claude/commands/github/github-swarm.md +121 -121
  151. package/.claude/commands/github/issue-tracker.md +291 -291
  152. package/.claude/commands/github/issue-triage.md +25 -25
  153. package/.claude/commands/github/multi-repo-swarm.md +518 -518
  154. package/.claude/commands/github/pr-enhance.md +26 -26
  155. package/.claude/commands/github/pr-manager.md +169 -169
  156. package/.claude/commands/github/project-board-sync.md +470 -470
  157. package/.claude/commands/github/release-manager.md +337 -337
  158. package/.claude/commands/github/release-swarm.md +543 -543
  159. package/.claude/commands/github/repo-analyze.md +25 -25
  160. package/.claude/commands/github/repo-architect.md +366 -366
  161. package/.claude/commands/github/swarm-issue.md +481 -481
  162. package/.claude/commands/github/swarm-pr.md +284 -284
  163. package/.claude/commands/github/sync-coordinator.md +300 -300
  164. package/.claude/commands/github/workflow-automation.md +441 -441
  165. package/.claude/commands/hive-mind/README.md +17 -17
  166. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
  167. package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
  168. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
  169. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
  170. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
  171. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
  172. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
  173. package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
  174. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
  175. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
  176. package/.claude/commands/hive-mind/hive-mind.md +27 -27
  177. package/.claude/commands/hooks/README.md +11 -11
  178. package/.claude/commands/hooks/overview.md +57 -57
  179. package/.claude/commands/hooks/post-edit.md +117 -117
  180. package/.claude/commands/hooks/post-task.md +112 -112
  181. package/.claude/commands/hooks/pre-edit.md +113 -113
  182. package/.claude/commands/hooks/pre-task.md +111 -111
  183. package/.claude/commands/hooks/session-end.md +118 -118
  184. package/.claude/commands/hooks/setup.md +102 -102
  185. package/.claude/commands/memory/README.md +9 -9
  186. package/.claude/commands/memory/memory-persist.md +25 -25
  187. package/.claude/commands/memory/memory-search.md +25 -25
  188. package/.claude/commands/memory/memory-usage.md +25 -25
  189. package/.claude/commands/memory/neural.md +47 -47
  190. package/.claude/commands/monitoring/README.md +9 -9
  191. package/.claude/commands/monitoring/agent-metrics.md +25 -25
  192. package/.claude/commands/monitoring/agents.md +44 -44
  193. package/.claude/commands/monitoring/real-time-view.md +25 -25
  194. package/.claude/commands/monitoring/status.md +46 -46
  195. package/.claude/commands/monitoring/swarm-monitor.md +25 -25
  196. package/.claude/commands/optimization/README.md +9 -9
  197. package/.claude/commands/optimization/auto-topology.md +61 -61
  198. package/.claude/commands/optimization/cache-manage.md +25 -25
  199. package/.claude/commands/optimization/parallel-execute.md +25 -25
  200. package/.claude/commands/optimization/parallel-execution.md +49 -49
  201. package/.claude/commands/optimization/topology-optimize.md +25 -25
  202. package/.claude/commands/pair/README.md +260 -260
  203. package/.claude/commands/pair/commands.md +545 -545
  204. package/.claude/commands/pair/config.md +509 -509
  205. package/.claude/commands/pair/examples.md +511 -511
  206. package/.claude/commands/pair/modes.md +347 -347
  207. package/.claude/commands/pair/session.md +406 -406
  208. package/.claude/commands/pair/start.md +208 -208
  209. package/.claude/commands/sparc/analyzer.md +51 -51
  210. package/.claude/commands/sparc/architect.md +53 -53
  211. package/.claude/commands/sparc/ask.md +97 -97
  212. package/.claude/commands/sparc/batch-executor.md +54 -54
  213. package/.claude/commands/sparc/code.md +89 -89
  214. package/.claude/commands/sparc/coder.md +54 -54
  215. package/.claude/commands/sparc/debug.md +83 -83
  216. package/.claude/commands/sparc/debugger.md +54 -54
  217. package/.claude/commands/sparc/designer.md +53 -53
  218. package/.claude/commands/sparc/devops.md +109 -109
  219. package/.claude/commands/sparc/docs-writer.md +80 -80
  220. package/.claude/commands/sparc/documenter.md +54 -54
  221. package/.claude/commands/sparc/innovator.md +54 -54
  222. package/.claude/commands/sparc/integration.md +83 -83
  223. package/.claude/commands/sparc/mcp.md +117 -117
  224. package/.claude/commands/sparc/memory-manager.md +54 -54
  225. package/.claude/commands/sparc/optimizer.md +54 -54
  226. package/.claude/commands/sparc/orchestrator.md +131 -131
  227. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
  228. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
  229. package/.claude/commands/sparc/researcher.md +54 -54
  230. package/.claude/commands/sparc/reviewer.md +54 -54
  231. package/.claude/commands/sparc/security-review.md +80 -80
  232. package/.claude/commands/sparc/sparc-modes.md +174 -174
  233. package/.claude/commands/sparc/sparc.md +111 -111
  234. package/.claude/commands/sparc/spec-pseudocode.md +80 -80
  235. package/.claude/commands/sparc/supabase-admin.md +348 -348
  236. package/.claude/commands/sparc/swarm-coordinator.md +54 -54
  237. package/.claude/commands/sparc/tdd.md +54 -54
  238. package/.claude/commands/sparc/tester.md +54 -54
  239. package/.claude/commands/sparc/tutorial.md +79 -79
  240. package/.claude/commands/sparc/workflow-manager.md +54 -54
  241. package/.claude/commands/sparc.md +166 -166
  242. package/.claude/commands/stream-chain/pipeline.md +120 -120
  243. package/.claude/commands/stream-chain/run.md +69 -69
  244. package/.claude/commands/swarm/README.md +15 -15
  245. package/.claude/commands/swarm/analysis.md +95 -95
  246. package/.claude/commands/swarm/development.md +96 -96
  247. package/.claude/commands/swarm/examples.md +168 -168
  248. package/.claude/commands/swarm/maintenance.md +102 -102
  249. package/.claude/commands/swarm/optimization.md +117 -117
  250. package/.claude/commands/swarm/research.md +136 -136
  251. package/.claude/commands/swarm/swarm-analysis.md +8 -8
  252. package/.claude/commands/swarm/swarm-background.md +8 -8
  253. package/.claude/commands/swarm/swarm-init.md +19 -19
  254. package/.claude/commands/swarm/swarm-modes.md +8 -8
  255. package/.claude/commands/swarm/swarm-monitor.md +8 -8
  256. package/.claude/commands/swarm/swarm-spawn.md +19 -19
  257. package/.claude/commands/swarm/swarm-status.md +8 -8
  258. package/.claude/commands/swarm/swarm-strategies.md +8 -8
  259. package/.claude/commands/swarm/swarm.md +87 -87
  260. package/.claude/commands/swarm/testing.md +131 -131
  261. package/.claude/commands/training/README.md +9 -9
  262. package/.claude/commands/training/model-update.md +25 -25
  263. package/.claude/commands/training/neural-patterns.md +107 -107
  264. package/.claude/commands/training/neural-train.md +75 -75
  265. package/.claude/commands/training/pattern-learn.md +25 -25
  266. package/.claude/commands/training/specialization.md +62 -62
  267. package/.claude/commands/truth/start.md +142 -142
  268. package/.claude/commands/verify/check.md +49 -49
  269. package/.claude/commands/verify/start.md +127 -127
  270. package/.claude/commands/workflows/README.md +9 -9
  271. package/.claude/commands/workflows/development.md +77 -77
  272. package/.claude/commands/workflows/research.md +62 -62
  273. package/.claude/commands/workflows/workflow-create.md +25 -25
  274. package/.claude/commands/workflows/workflow-execute.md +25 -25
  275. package/.claude/commands/workflows/workflow-export.md +25 -25
  276. package/.claude/helpers/README.md +96 -96
  277. package/.claude/helpers/adr-compliance.sh +186 -186
  278. package/.claude/helpers/auto-commit.sh +178 -178
  279. package/.claude/helpers/auto-memory-hook.mjs +368 -368
  280. package/.claude/helpers/checkpoint-manager.sh +251 -251
  281. package/.claude/helpers/daemon-manager.sh +252 -252
  282. package/.claude/helpers/ddd-tracker.sh +144 -144
  283. package/.claude/helpers/github-safe.js +121 -121
  284. package/.claude/helpers/github-setup.sh +28 -28
  285. package/.claude/helpers/guidance-hook.sh +13 -13
  286. package/.claude/helpers/guidance-hooks.sh +102 -102
  287. package/.claude/helpers/health-monitor.sh +108 -108
  288. package/.claude/helpers/hook-handler.cjs +278 -278
  289. package/.claude/helpers/intelligence.cjs +1031 -1031
  290. package/.claude/helpers/learning-hooks.sh +329 -329
  291. package/.claude/helpers/learning-optimizer.sh +127 -127
  292. package/.claude/helpers/learning-service.mjs +1144 -1144
  293. package/.claude/helpers/memory.js +83 -83
  294. package/.claude/helpers/metrics-db.mjs +488 -488
  295. package/.claude/helpers/pattern-consolidator.sh +86 -86
  296. package/.claude/helpers/perf-worker.sh +160 -160
  297. package/.claude/helpers/post-commit +16 -16
  298. package/.claude/helpers/pre-commit +26 -26
  299. package/.claude/helpers/quick-start.sh +19 -19
  300. package/.claude/helpers/router.js +66 -66
  301. package/.claude/helpers/security-scanner.sh +127 -127
  302. package/.claude/helpers/session.js +135 -135
  303. package/.claude/helpers/setup-mcp.sh +18 -18
  304. package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
  305. package/.claude/helpers/statusline-hook.sh +21 -21
  306. package/.claude/helpers/statusline.cjs +575 -575
  307. package/.claude/helpers/statusline.js +321 -321
  308. package/.claude/helpers/swarm-comms.sh +353 -353
  309. package/.claude/helpers/swarm-hooks.sh +761 -761
  310. package/.claude/helpers/swarm-monitor.sh +210 -210
  311. package/.claude/helpers/sync-v3-metrics.sh +245 -245
  312. package/.claude/helpers/update-v3-progress.sh +165 -165
  313. package/.claude/helpers/v3-quick-status.sh +57 -57
  314. package/.claude/helpers/v3.sh +110 -110
  315. package/.claude/helpers/validate-v3-config.sh +215 -215
  316. package/.claude/helpers/worker-manager.sh +170 -170
  317. package/.claude/settings.json +182 -182
  318. package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
  319. package/.claude/skills/agentdb-learning/SKILL.md +545 -545
  320. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
  321. package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
  322. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
  323. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -645
  324. package/.claude/skills/aidefence-scan.md +151 -151
  325. package/.claude/skills/aidefence.yaml +297 -297
  326. package/.claude/skills/browser/SKILL.md +204 -204
  327. package/.claude/skills/flow-nexus-neural/SKILL.md +738 -738
  328. package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -1157
  329. package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -610
  330. package/.claude/skills/github-code-review/SKILL.md +1140 -1140
  331. package/.claude/skills/github-multi-repo/SKILL.md +874 -874
  332. package/.claude/skills/github-project-management/SKILL.md +1290 -1277
  333. package/.claude/skills/github-release-management/SKILL.md +1081 -1081
  334. package/.claude/skills/github-workflow-automation/SKILL.md +1065 -1065
  335. package/.claude/skills/hive-mind-advanced/SKILL.md +712 -712
  336. package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
  337. package/.claude/skills/pair-programming/SKILL.md +1202 -1202
  338. package/.claude/skills/performance-analysis/SKILL.md +563 -563
  339. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
  340. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
  341. package/.claude/skills/secure-review.md +181 -181
  342. package/.claude/skills/skill-builder/SKILL.md +910 -910
  343. package/.claude/skills/sparc-methodology/SKILL.md +1115 -1115
  344. package/.claude/skills/stream-chain/SKILL.md +563 -563
  345. package/.claude/skills/swarm-advanced/SKILL.md +973 -973
  346. package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
  347. package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
  348. package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
  349. package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
  350. package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
  351. package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
  352. package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
  353. package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
  354. package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
  355. package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
  356. package/.claude/skills/verification-quality/SKILL.md +649 -649
  357. package/.claude/skills/worker-benchmarks/skill.md +135 -135
  358. package/.claude/skills/worker-integration/skill.md +154 -154
  359. package/README.md +393 -391
  360. package/bin/cli.js +220 -220
  361. package/bin/mcp-server.js +224 -224
  362. package/bin/preinstall.cjs +2 -2
  363. package/dist/src/commands/agent-wasm.js +2 -2
  364. package/dist/src/commands/agent-wasm.js.map +1 -1
  365. package/dist/src/commands/completions.js +409 -409
  366. package/dist/src/commands/daemon.d.ts.map +1 -1
  367. package/dist/src/commands/daemon.js +19 -3
  368. package/dist/src/commands/daemon.js.map +1 -1
  369. package/dist/src/commands/doctor.d.ts.map +1 -1
  370. package/dist/src/commands/doctor.js +105 -23
  371. package/dist/src/commands/doctor.js.map +1 -1
  372. package/dist/src/commands/embeddings.js +26 -26
  373. package/dist/src/commands/hive-mind.d.ts.map +1 -1
  374. package/dist/src/commands/hive-mind.js +122 -104
  375. package/dist/src/commands/hive-mind.js.map +1 -1
  376. package/dist/src/commands/hooks.d.ts.map +1 -1
  377. package/dist/src/commands/hooks.js +34 -21
  378. package/dist/src/commands/hooks.js.map +1 -1
  379. package/dist/src/commands/memory.d.ts.map +1 -1
  380. package/dist/src/commands/memory.js +68 -0
  381. package/dist/src/commands/memory.js.map +1 -1
  382. package/dist/src/commands/ruvector/backup.js +23 -23
  383. package/dist/src/commands/ruvector/benchmark.js +31 -31
  384. package/dist/src/commands/ruvector/import.js +14 -14
  385. package/dist/src/commands/ruvector/init.js +115 -115
  386. package/dist/src/commands/ruvector/migrate.js +99 -99
  387. package/dist/src/commands/ruvector/optimize.js +51 -51
  388. package/dist/src/commands/ruvector/setup.js +624 -624
  389. package/dist/src/commands/ruvector/status.js +38 -38
  390. package/dist/src/index.d.ts +5 -1
  391. package/dist/src/index.d.ts.map +1 -1
  392. package/dist/src/index.js +59 -18
  393. package/dist/src/index.js.map +1 -1
  394. package/dist/src/init/claudemd-generator.js +226 -226
  395. package/dist/src/init/executor.d.ts.map +1 -1
  396. package/dist/src/init/executor.js +511 -453
  397. package/dist/src/init/executor.js.map +1 -1
  398. package/dist/src/init/helpers-generator.js +645 -645
  399. package/dist/src/init/settings-generator.d.ts.map +1 -1
  400. package/dist/src/init/settings-generator.js +11 -5
  401. package/dist/src/init/settings-generator.js.map +1 -1
  402. package/dist/src/init/statusline-generator.js +858 -858
  403. package/dist/src/init/types.d.ts +7 -0
  404. package/dist/src/init/types.d.ts.map +1 -1
  405. package/dist/src/init/types.js.map +1 -1
  406. package/dist/src/mcp-tools/agentdb-tools.d.ts +3 -0
  407. package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -1
  408. package/dist/src/mcp-tools/agentdb-tools.js +108 -0
  409. package/dist/src/mcp-tools/agentdb-tools.js.map +1 -1
  410. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  411. package/dist/src/mcp-tools/hooks-tools.js +4 -2
  412. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  413. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  414. package/dist/src/mcp-tools/memory-tools.js +19 -0
  415. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  416. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  417. package/dist/src/mcp-tools/neural-tools.js +14 -1
  418. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  419. package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
  420. package/dist/src/mcp-tools/security-tools.js +28 -3
  421. package/dist/src/mcp-tools/security-tools.js.map +1 -1
  422. package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
  423. package/dist/src/mcp-tools/swarm-tools.js +72 -3
  424. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  425. package/dist/src/mcp-tools/wasm-agent-tools.js +1 -1
  426. package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -1
  427. package/dist/src/memory/intelligence.d.ts.map +1 -1
  428. package/dist/src/memory/intelligence.js +28 -3
  429. package/dist/src/memory/intelligence.js.map +1 -1
  430. package/dist/src/memory/memory-bridge.d.ts +69 -0
  431. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  432. package/dist/src/memory/memory-bridge.js +319 -66
  433. package/dist/src/memory/memory-bridge.js.map +1 -1
  434. package/dist/src/memory/memory-initializer.d.ts +5 -0
  435. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  436. package/dist/src/memory/memory-initializer.js +369 -363
  437. package/dist/src/memory/memory-initializer.js.map +1 -1
  438. package/dist/src/memory/neural-package-bridge.d.ts +48 -0
  439. package/dist/src/memory/neural-package-bridge.d.ts.map +1 -0
  440. package/dist/src/memory/neural-package-bridge.js +87 -0
  441. package/dist/src/memory/neural-package-bridge.js.map +1 -0
  442. package/dist/src/memory/rabitq-index.js +5 -5
  443. package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
  444. package/dist/src/memory/sona-optimizer.js +1 -0
  445. package/dist/src/memory/sona-optimizer.js.map +1 -1
  446. package/dist/src/parser.d.ts +9 -0
  447. package/dist/src/parser.d.ts.map +1 -1
  448. package/dist/src/parser.js +11 -0
  449. package/dist/src/parser.js.map +1 -1
  450. package/dist/src/runtime/headless.js +28 -28
  451. package/dist/src/ruvector/agent-wasm.d.ts.map +1 -1
  452. package/dist/src/ruvector/agent-wasm.js +4 -1
  453. package/dist/src/ruvector/agent-wasm.js.map +1 -1
  454. package/dist/src/ruvector/index.d.ts +0 -2
  455. package/dist/src/ruvector/index.d.ts.map +1 -1
  456. package/dist/src/ruvector/index.js +8 -2
  457. package/dist/src/ruvector/index.js.map +1 -1
  458. package/dist/src/ruvector/model-router.d.ts +22 -1
  459. package/dist/src/ruvector/model-router.d.ts.map +1 -1
  460. package/dist/src/ruvector/model-router.js +125 -5
  461. package/dist/src/ruvector/model-router.js.map +1 -1
  462. package/dist/src/services/headless-worker-executor.js +84 -84
  463. package/dist/src/transfer/deploy-seraphine.js +23 -23
  464. package/dist/tsconfig.tsbuildinfo +1 -1
  465. package/package.json +5 -4
  466. package/scripts/deploy-ipfs-node.sh +153 -153
  467. package/scripts/postinstall.cjs +153 -153
  468. package/scripts/publish-registry.ts +345 -345
  469. package/scripts/publish.sh +57 -57
  470. package/scripts/setup-ipfs-registry.md +366 -366
  471. package/dist/src/services/event-stream.d.ts.map +0 -1
  472. package/dist/src/services/event-stream.js.map +0 -1
  473. package/dist/src/services/loop-worker-runner.d.ts.map +0 -1
  474. package/dist/src/services/loop-worker-runner.js.map +0 -1
  475. package/dist/src/services/runtime-capabilities.d.ts.map +0 -1
  476. package/dist/src/services/runtime-capabilities.js.map +0 -1
@@ -7,348 +7,348 @@ import { generateStatuslineScript, generateStatuslineHook } from './statusline-g
7
7
  * Generate pre-commit hook script
8
8
  */
9
9
  export function generatePreCommitHook() {
10
- return `#!/bin/bash
11
- # Ruflo Pre-Commit Hook
12
- # Validates code quality before commit
13
-
14
- set -e
15
-
16
- echo "🔍 Running Ruflo pre-commit checks..."
17
-
18
- # Get staged files
19
- STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM)
20
-
21
- # Run validation for each staged file
22
- for FILE in $STAGED_FILES; do
23
- if [[ "$FILE" =~ \\.(ts|js|tsx|jsx)$ ]]; then
24
- echo " Validating: $FILE"
25
- npx @claude-flow/cli hooks pre-edit --file "$FILE" --validate-syntax 2>/dev/null || true
26
- fi
27
- done
28
-
29
- # Run tests if available
30
- if [ -f "package.json" ] && grep -q '"test"' package.json; then
31
- echo "🧪 Running tests..."
32
- npm test --if-present 2>/dev/null || echo " Tests skipped or failed"
33
- fi
34
-
35
- echo "✅ Pre-commit checks complete"
10
+ return `#!/bin/bash
11
+ # Ruflo Pre-Commit Hook
12
+ # Validates code quality before commit
13
+
14
+ set -e
15
+
16
+ echo "🔍 Running Ruflo pre-commit checks..."
17
+
18
+ # Get staged files
19
+ STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM)
20
+
21
+ # Run validation for each staged file
22
+ for FILE in $STAGED_FILES; do
23
+ if [[ "$FILE" =~ \\.(ts|js|tsx|jsx)$ ]]; then
24
+ echo " Validating: $FILE"
25
+ npx @claude-flow/cli hooks pre-edit --file "$FILE" --validate-syntax 2>/dev/null || true
26
+ fi
27
+ done
28
+
29
+ # Run tests if available
30
+ if [ -f "package.json" ] && grep -q '"test"' package.json; then
31
+ echo "🧪 Running tests..."
32
+ npm test --if-present 2>/dev/null || echo " Tests skipped or failed"
33
+ fi
34
+
35
+ echo "✅ Pre-commit checks complete"
36
36
  `;
37
37
  }
38
38
  /**
39
39
  * Generate post-commit hook script
40
40
  */
41
41
  export function generatePostCommitHook() {
42
- return `#!/bin/bash
43
- # Ruflo Post-Commit Hook
44
- # Records commit metrics and trains patterns
45
-
46
- COMMIT_HASH=$(git rev-parse HEAD)
47
- COMMIT_MSG=$(git log -1 --pretty=%B)
48
-
49
- echo "📊 Recording commit metrics..."
50
-
51
- # Notify ruflo of commit
52
- npx ruflo@latest hooks notify \\
53
- --message "Commit: $COMMIT_MSG" \\
54
- --level info \\
55
- --metadata '{"hash": "'$COMMIT_HASH'"}' 2>/dev/null || true
56
-
57
- echo "✅ Commit recorded"
42
+ return `#!/bin/bash
43
+ # Ruflo Post-Commit Hook
44
+ # Records commit metrics and trains patterns
45
+
46
+ COMMIT_HASH=$(git rev-parse HEAD)
47
+ COMMIT_MSG=$(git log -1 --pretty=%B)
48
+
49
+ echo "📊 Recording commit metrics..."
50
+
51
+ # Notify ruflo of commit
52
+ npx ruflo@latest hooks notify \\
53
+ --message "Commit: $COMMIT_MSG" \\
54
+ --level info \\
55
+ --metadata '{"hash": "'$COMMIT_HASH'"}' 2>/dev/null || true
56
+
57
+ echo "✅ Commit recorded"
58
58
  `;
59
59
  }
60
60
  /**
61
61
  * Generate session manager script
62
62
  */
63
63
  export function generateSessionManager() {
64
- return `#!/usr/bin/env node
65
- /**
66
- * Ruflo Session Manager
67
- * Handles session lifecycle: start, restore, end
68
- */
69
-
70
- const fs = require('fs');
71
- const path = require('path');
72
-
73
- const SESSION_DIR = path.join(process.cwd(), '.claude-flow', 'sessions');
74
- const SESSION_FILE = path.join(SESSION_DIR, 'current.json');
75
-
76
- const commands = {
77
- start: () => {
78
- const sessionId = \`session-\${Date.now()}\`;
79
- const session = {
80
- id: sessionId,
81
- startedAt: new Date().toISOString(),
82
- cwd: process.cwd(),
83
- context: {},
84
- metrics: {
85
- edits: 0,
86
- commands: 0,
87
- tasks: 0,
88
- errors: 0,
89
- },
90
- };
91
-
92
- fs.mkdirSync(SESSION_DIR, { recursive: true });
93
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
94
-
95
- console.log(\`Session started: \${sessionId}\`);
96
- return session;
97
- },
98
-
99
- restore: () => {
100
- if (!fs.existsSync(SESSION_FILE)) {
101
- console.log('No session to restore');
102
- return null;
103
- }
104
-
105
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
106
- session.restoredAt = new Date().toISOString();
107
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
108
-
109
- console.log(\`Session restored: \${session.id}\`);
110
- return session;
111
- },
112
-
113
- end: () => {
114
- if (!fs.existsSync(SESSION_FILE)) {
115
- console.log('No active session');
116
- return null;
117
- }
118
-
119
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
120
- session.endedAt = new Date().toISOString();
121
- session.duration = Date.now() - new Date(session.startedAt).getTime();
122
-
123
- // Archive session
124
- const archivePath = path.join(SESSION_DIR, \`\${session.id}.json\`);
125
- fs.writeFileSync(archivePath, JSON.stringify(session, null, 2));
126
- fs.unlinkSync(SESSION_FILE);
127
-
128
- console.log(\`Session ended: \${session.id}\`);
129
- console.log(\`Duration: \${Math.round(session.duration / 1000 / 60)} minutes\`);
130
- console.log(\`Metrics: \${JSON.stringify(session.metrics)}\`);
131
-
132
- return session;
133
- },
134
-
135
- status: () => {
136
- if (!fs.existsSync(SESSION_FILE)) {
137
- console.log('No active session');
138
- return null;
139
- }
140
-
141
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
142
- const duration = Date.now() - new Date(session.startedAt).getTime();
143
-
144
- console.log(\`Session: \${session.id}\`);
145
- console.log(\`Started: \${session.startedAt}\`);
146
- console.log(\`Duration: \${Math.round(duration / 1000 / 60)} minutes\`);
147
- console.log(\`Metrics: \${JSON.stringify(session.metrics)}\`);
148
-
149
- return session;
150
- },
151
-
152
- update: (key, value) => {
153
- if (!fs.existsSync(SESSION_FILE)) {
154
- console.log('No active session');
155
- return null;
156
- }
157
-
158
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
159
- session.context[key] = value;
160
- session.updatedAt = new Date().toISOString();
161
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
162
-
163
- return session;
164
- },
165
-
166
- metric: (name) => {
167
- if (!fs.existsSync(SESSION_FILE)) {
168
- return null;
169
- }
170
-
171
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
172
- if (session.metrics[name] !== undefined) {
173
- session.metrics[name]++;
174
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
175
- }
176
-
177
- return session;
178
- },
179
- };
180
-
181
- // CLI
182
- const [,, command, ...args] = process.argv;
183
-
184
- if (command && commands[command]) {
185
- commands[command](...args);
186
- } else {
187
- console.log('Usage: session.js <start|restore|end|status|update|metric> [args]');
188
- }
189
-
190
- module.exports = commands;
64
+ return `#!/usr/bin/env node
65
+ /**
66
+ * Ruflo Session Manager
67
+ * Handles session lifecycle: start, restore, end
68
+ */
69
+
70
+ const fs = require('fs');
71
+ const path = require('path');
72
+
73
+ const SESSION_DIR = path.join(process.cwd(), '.claude-flow', 'sessions');
74
+ const SESSION_FILE = path.join(SESSION_DIR, 'current.json');
75
+
76
+ const commands = {
77
+ start: () => {
78
+ const sessionId = \`session-\${Date.now()}\`;
79
+ const session = {
80
+ id: sessionId,
81
+ startedAt: new Date().toISOString(),
82
+ cwd: process.cwd(),
83
+ context: {},
84
+ metrics: {
85
+ edits: 0,
86
+ commands: 0,
87
+ tasks: 0,
88
+ errors: 0,
89
+ },
90
+ };
91
+
92
+ fs.mkdirSync(SESSION_DIR, { recursive: true });
93
+ fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
94
+
95
+ console.log(\`Session started: \${sessionId}\`);
96
+ return session;
97
+ },
98
+
99
+ restore: () => {
100
+ if (!fs.existsSync(SESSION_FILE)) {
101
+ console.log('No session to restore');
102
+ return null;
103
+ }
104
+
105
+ const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
106
+ session.restoredAt = new Date().toISOString();
107
+ fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
108
+
109
+ console.log(\`Session restored: \${session.id}\`);
110
+ return session;
111
+ },
112
+
113
+ end: () => {
114
+ if (!fs.existsSync(SESSION_FILE)) {
115
+ console.log('No active session');
116
+ return null;
117
+ }
118
+
119
+ const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
120
+ session.endedAt = new Date().toISOString();
121
+ session.duration = Date.now() - new Date(session.startedAt).getTime();
122
+
123
+ // Archive session
124
+ const archivePath = path.join(SESSION_DIR, \`\${session.id}.json\`);
125
+ fs.writeFileSync(archivePath, JSON.stringify(session, null, 2));
126
+ fs.unlinkSync(SESSION_FILE);
127
+
128
+ console.log(\`Session ended: \${session.id}\`);
129
+ console.log(\`Duration: \${Math.round(session.duration / 1000 / 60)} minutes\`);
130
+ console.log(\`Metrics: \${JSON.stringify(session.metrics)}\`);
131
+
132
+ return session;
133
+ },
134
+
135
+ status: () => {
136
+ if (!fs.existsSync(SESSION_FILE)) {
137
+ console.log('No active session');
138
+ return null;
139
+ }
140
+
141
+ const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
142
+ const duration = Date.now() - new Date(session.startedAt).getTime();
143
+
144
+ console.log(\`Session: \${session.id}\`);
145
+ console.log(\`Started: \${session.startedAt}\`);
146
+ console.log(\`Duration: \${Math.round(duration / 1000 / 60)} minutes\`);
147
+ console.log(\`Metrics: \${JSON.stringify(session.metrics)}\`);
148
+
149
+ return session;
150
+ },
151
+
152
+ update: (key, value) => {
153
+ if (!fs.existsSync(SESSION_FILE)) {
154
+ console.log('No active session');
155
+ return null;
156
+ }
157
+
158
+ const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
159
+ session.context[key] = value;
160
+ session.updatedAt = new Date().toISOString();
161
+ fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
162
+
163
+ return session;
164
+ },
165
+
166
+ metric: (name) => {
167
+ if (!fs.existsSync(SESSION_FILE)) {
168
+ return null;
169
+ }
170
+
171
+ const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
172
+ if (session.metrics[name] !== undefined) {
173
+ session.metrics[name]++;
174
+ fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
175
+ }
176
+
177
+ return session;
178
+ },
179
+ };
180
+
181
+ // CLI
182
+ const [,, command, ...args] = process.argv;
183
+
184
+ if (command && commands[command]) {
185
+ commands[command](...args);
186
+ } else {
187
+ console.log('Usage: session.js <start|restore|end|status|update|metric> [args]');
188
+ }
189
+
190
+ module.exports = commands;
191
191
  `;
192
192
  }
193
193
  /**
194
194
  * Generate agent router script
195
195
  */
196
196
  export function generateAgentRouter() {
197
- return `#!/usr/bin/env node
198
- /**
199
- * Ruflo Agent Router
200
- * Routes tasks to optimal agents based on learned patterns
201
- */
202
-
203
- const AGENT_CAPABILITIES = {
204
- coder: ['code-generation', 'refactoring', 'debugging', 'implementation'],
205
- tester: ['unit-testing', 'integration-testing', 'coverage', 'test-generation'],
206
- reviewer: ['code-review', 'security-audit', 'quality-check', 'best-practices'],
207
- researcher: ['web-search', 'documentation', 'analysis', 'summarization'],
208
- architect: ['system-design', 'architecture', 'patterns', 'scalability'],
209
- 'backend-dev': ['api', 'database', 'server', 'authentication'],
210
- 'frontend-dev': ['ui', 'react', 'css', 'components'],
211
- devops: ['ci-cd', 'docker', 'deployment', 'infrastructure'],
212
- };
213
-
214
- const TASK_PATTERNS = {
215
- // Code patterns
216
- 'implement|create|build|add|write code': 'coder',
217
- 'test|spec|coverage|unit test|integration': 'tester',
218
- 'review|audit|check|validate|security': 'reviewer',
219
- 'research|find|search|documentation|explore': 'researcher',
220
- 'design|architect|structure|plan': 'architect',
221
-
222
- // Domain patterns
223
- 'api|endpoint|server|backend|database': 'backend-dev',
224
- 'ui|frontend|component|react|css|style': 'frontend-dev',
225
- 'deploy|docker|ci|cd|pipeline|infrastructure': 'devops',
226
- };
227
-
228
- function routeTask(task) {
229
- const taskLower = task.toLowerCase();
230
-
231
- // Check patterns
232
- for (const [pattern, agent] of Object.entries(TASK_PATTERNS)) {
233
- const regex = new RegExp(pattern, 'i');
234
- if (regex.test(taskLower)) {
235
- return {
236
- agent,
237
- confidence: 0.8,
238
- reason: \`Matched pattern: \${pattern}\`,
239
- };
240
- }
241
- }
242
-
243
- // Default to coder for unknown tasks
244
- return {
245
- agent: 'coder',
246
- confidence: 0.5,
247
- reason: 'Default routing - no specific pattern matched',
248
- };
249
- }
250
-
251
- // CLI
252
- const task = process.argv.slice(2).join(' ');
253
-
254
- if (task) {
255
- const result = routeTask(task);
256
- console.log(JSON.stringify(result, null, 2));
257
- } else {
258
- console.log('Usage: router.js <task description>');
259
- console.log('\\nAvailable agents:', Object.keys(AGENT_CAPABILITIES).join(', '));
260
- }
261
-
262
- module.exports = { routeTask, AGENT_CAPABILITIES, TASK_PATTERNS };
197
+ return `#!/usr/bin/env node
198
+ /**
199
+ * Ruflo Agent Router
200
+ * Routes tasks to optimal agents based on learned patterns
201
+ */
202
+
203
+ const AGENT_CAPABILITIES = {
204
+ coder: ['code-generation', 'refactoring', 'debugging', 'implementation'],
205
+ tester: ['unit-testing', 'integration-testing', 'coverage', 'test-generation'],
206
+ reviewer: ['code-review', 'security-audit', 'quality-check', 'best-practices'],
207
+ researcher: ['web-search', 'documentation', 'analysis', 'summarization'],
208
+ architect: ['system-design', 'architecture', 'patterns', 'scalability'],
209
+ 'backend-dev': ['api', 'database', 'server', 'authentication'],
210
+ 'frontend-dev': ['ui', 'react', 'css', 'components'],
211
+ devops: ['ci-cd', 'docker', 'deployment', 'infrastructure'],
212
+ };
213
+
214
+ const TASK_PATTERNS = {
215
+ // Code patterns
216
+ 'implement|create|build|add|write code': 'coder',
217
+ 'test|spec|coverage|unit test|integration': 'tester',
218
+ 'review|audit|check|validate|security': 'reviewer',
219
+ 'research|find|search|documentation|explore': 'researcher',
220
+ 'design|architect|structure|plan': 'architect',
221
+
222
+ // Domain patterns
223
+ 'api|endpoint|server|backend|database': 'backend-dev',
224
+ 'ui|frontend|component|react|css|style': 'frontend-dev',
225
+ 'deploy|docker|ci|cd|pipeline|infrastructure': 'devops',
226
+ };
227
+
228
+ function routeTask(task) {
229
+ const taskLower = task.toLowerCase();
230
+
231
+ // Check patterns
232
+ for (const [pattern, agent] of Object.entries(TASK_PATTERNS)) {
233
+ const regex = new RegExp(pattern, 'i');
234
+ if (regex.test(taskLower)) {
235
+ return {
236
+ agent,
237
+ confidence: 0.8,
238
+ reason: \`Matched pattern: \${pattern}\`,
239
+ };
240
+ }
241
+ }
242
+
243
+ // Default to coder for unknown tasks
244
+ return {
245
+ agent: 'coder',
246
+ confidence: 0.5,
247
+ reason: 'Default routing - no specific pattern matched',
248
+ };
249
+ }
250
+
251
+ // CLI
252
+ const task = process.argv.slice(2).join(' ');
253
+
254
+ if (task) {
255
+ const result = routeTask(task);
256
+ console.log(JSON.stringify(result, null, 2));
257
+ } else {
258
+ console.log('Usage: router.js <task description>');
259
+ console.log('\\nAvailable agents:', Object.keys(AGENT_CAPABILITIES).join(', '));
260
+ }
261
+
262
+ module.exports = { routeTask, AGENT_CAPABILITIES, TASK_PATTERNS };
263
263
  `;
264
264
  }
265
265
  /**
266
266
  * Generate memory helper script
267
267
  */
268
268
  export function generateMemoryHelper() {
269
- return `#!/usr/bin/env node
270
- /**
271
- * Ruflo Memory Helper
272
- * Simple key-value memory for cross-session context
273
- */
274
-
275
- const fs = require('fs');
276
- const path = require('path');
277
-
278
- const MEMORY_DIR = path.join(process.cwd(), '.claude-flow', 'data');
279
- const MEMORY_FILE = path.join(MEMORY_DIR, 'memory.json');
280
-
281
- function loadMemory() {
282
- try {
283
- if (fs.existsSync(MEMORY_FILE)) {
284
- return JSON.parse(fs.readFileSync(MEMORY_FILE, 'utf-8'));
285
- }
286
- } catch (e) {
287
- // Ignore
288
- }
289
- return {};
290
- }
291
-
292
- function saveMemory(memory) {
293
- fs.mkdirSync(MEMORY_DIR, { recursive: true });
294
- fs.writeFileSync(MEMORY_FILE, JSON.stringify(memory, null, 2));
295
- }
296
-
297
- const commands = {
298
- get: (key) => {
299
- const memory = loadMemory();
300
- const value = key ? memory[key] : memory;
301
- console.log(JSON.stringify(value, null, 2));
302
- return value;
303
- },
304
-
305
- set: (key, value) => {
306
- if (!key) {
307
- console.error('Key required');
308
- return;
309
- }
310
- const memory = loadMemory();
311
- memory[key] = value;
312
- memory._updated = new Date().toISOString();
313
- saveMemory(memory);
314
- console.log(\`Set: \${key}\`);
315
- },
316
-
317
- delete: (key) => {
318
- if (!key) {
319
- console.error('Key required');
320
- return;
321
- }
322
- const memory = loadMemory();
323
- delete memory[key];
324
- saveMemory(memory);
325
- console.log(\`Deleted: \${key}\`);
326
- },
327
-
328
- clear: () => {
329
- saveMemory({});
330
- console.log('Memory cleared');
331
- },
332
-
333
- keys: () => {
334
- const memory = loadMemory();
335
- const keys = Object.keys(memory).filter(k => !k.startsWith('_'));
336
- console.log(keys.join('\\n'));
337
- return keys;
338
- },
339
- };
340
-
341
- // CLI
342
- const [,, command, key, ...valueParts] = process.argv;
343
- const value = valueParts.join(' ');
344
-
345
- if (command && commands[command]) {
346
- commands[command](key, value);
347
- } else {
348
- console.log('Usage: memory.js <get|set|delete|clear|keys> [key] [value]');
349
- }
350
-
351
- module.exports = commands;
269
+ return `#!/usr/bin/env node
270
+ /**
271
+ * Ruflo Memory Helper
272
+ * Simple key-value memory for cross-session context
273
+ */
274
+
275
+ const fs = require('fs');
276
+ const path = require('path');
277
+
278
+ const MEMORY_DIR = path.join(process.cwd(), '.claude-flow', 'data');
279
+ const MEMORY_FILE = path.join(MEMORY_DIR, 'memory.json');
280
+
281
+ function loadMemory() {
282
+ try {
283
+ if (fs.existsSync(MEMORY_FILE)) {
284
+ return JSON.parse(fs.readFileSync(MEMORY_FILE, 'utf-8'));
285
+ }
286
+ } catch (e) {
287
+ // Ignore
288
+ }
289
+ return {};
290
+ }
291
+
292
+ function saveMemory(memory) {
293
+ fs.mkdirSync(MEMORY_DIR, { recursive: true });
294
+ fs.writeFileSync(MEMORY_FILE, JSON.stringify(memory, null, 2));
295
+ }
296
+
297
+ const commands = {
298
+ get: (key) => {
299
+ const memory = loadMemory();
300
+ const value = key ? memory[key] : memory;
301
+ console.log(JSON.stringify(value, null, 2));
302
+ return value;
303
+ },
304
+
305
+ set: (key, value) => {
306
+ if (!key) {
307
+ console.error('Key required');
308
+ return;
309
+ }
310
+ const memory = loadMemory();
311
+ memory[key] = value;
312
+ memory._updated = new Date().toISOString();
313
+ saveMemory(memory);
314
+ console.log(\`Set: \${key}\`);
315
+ },
316
+
317
+ delete: (key) => {
318
+ if (!key) {
319
+ console.error('Key required');
320
+ return;
321
+ }
322
+ const memory = loadMemory();
323
+ delete memory[key];
324
+ saveMemory(memory);
325
+ console.log(\`Deleted: \${key}\`);
326
+ },
327
+
328
+ clear: () => {
329
+ saveMemory({});
330
+ console.log('Memory cleared');
331
+ },
332
+
333
+ keys: () => {
334
+ const memory = loadMemory();
335
+ const keys = Object.keys(memory).filter(k => !k.startsWith('_'));
336
+ console.log(keys.join('\\n'));
337
+ return keys;
338
+ },
339
+ };
340
+
341
+ // CLI
342
+ const [,, command, key, ...valueParts] = process.argv;
343
+ const value = valueParts.join(' ');
344
+
345
+ if (command && commands[command]) {
346
+ commands[command](key, value);
347
+ } else {
348
+ console.log('Usage: memory.js <get|set|delete|clear|keys> [key] [value]');
349
+ }
350
+
351
+ module.exports = commands;
352
352
  `;
353
353
  }
354
354
  /**
@@ -808,351 +808,351 @@ export function generateIntelligenceStub() {
808
808
  * @claude-flow/memory is not installed. Gets overwritten when source copy succeeds.
809
809
  */
810
810
  export function generateAutoMemoryHook() {
811
- return `#!/usr/bin/env node
812
- /**
813
- * Auto Memory Bridge Hook (ADR-048/049) — Minimal Fallback
814
- * Full version is copied from package source when available.
815
- *
816
- * Usage:
817
- * node auto-memory-hook.mjs import # SessionStart
818
- * node auto-memory-hook.mjs sync # SessionEnd / Stop
819
- * node auto-memory-hook.mjs status # Show bridge status
820
- */
821
-
822
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
823
- import { join, dirname } from 'path';
824
- import { fileURLToPath } from 'url';
825
-
826
- const __filename = fileURLToPath(import.meta.url);
827
- const __dirname = dirname(__filename);
828
- const PROJECT_ROOT = join(__dirname, '../..');
829
- const DATA_DIR = join(PROJECT_ROOT, '.claude-flow', 'data');
830
- const STORE_PATH = join(DATA_DIR, 'auto-memory-store.json');
831
-
832
- const DIM = '\\x1b[2m';
833
- const RESET = '\\x1b[0m';
834
- const dim = (msg) => console.log(\` \${DIM}\${msg}\${RESET}\`);
835
-
836
- // Ensure data dir
837
- if (!existsSync(DATA_DIR)) mkdirSync(DATA_DIR, { recursive: true });
838
-
839
- async function loadMemoryPackage() {
840
- // Strategy 1: Use createRequire for CJS-style resolution (handles nested node_modules
841
- // when installed as a transitive dependency via npx ruflo / npx claude-flow)
842
- try {
843
- const { createRequire } = await import('module');
844
- const require = createRequire(join(PROJECT_ROOT, 'package.json'));
845
- return require('@claude-flow/memory');
846
- } catch { /* fall through */ }
847
-
848
- // Strategy 2: ESM import (works when @claude-flow/memory is a direct dependency)
849
- try { return await import('@claude-flow/memory'); } catch { /* fall through */ }
850
-
851
- // Strategy 3: Walk up from PROJECT_ROOT looking for the package in any node_modules
852
- let searchDir = PROJECT_ROOT;
853
- const { parse } = await import('path');
854
- while (searchDir !== parse(searchDir).root) {
855
- const candidate = join(searchDir, 'node_modules', '@claude-flow', 'memory', 'dist', 'index.js');
856
- if (existsSync(candidate)) {
857
- try { return await import(\`file://\${candidate}\`); } catch { /* fall through */ }
858
- }
859
- searchDir = dirname(searchDir);
860
- }
861
-
862
- return null;
863
- }
864
-
865
- async function doImport() {
866
- const memPkg = await loadMemoryPackage();
867
-
868
- if (!memPkg || !memPkg.AutoMemoryBridge) {
869
- dim('Memory package not available — auto memory import skipped (non-critical)');
870
- return;
871
- }
872
-
873
- // Full implementation deferred to copied version
874
- dim('Auto memory import available — run init --upgrade for full support');
875
- }
876
-
877
- async function doSync() {
878
- if (!existsSync(STORE_PATH)) {
879
- dim('No entries to sync');
880
- return;
881
- }
882
-
883
- const memPkg = await loadMemoryPackage();
884
-
885
- if (!memPkg || !memPkg.AutoMemoryBridge) {
886
- dim('Memory package not available — sync skipped (non-critical)');
887
- return;
888
- }
889
-
890
- dim('Auto memory sync available — run init --upgrade for full support');
891
- }
892
-
893
- function doStatus() {
894
- console.log('\\n=== Auto Memory Bridge Status ===\\n');
895
- console.log(' Package: Fallback mode (run init --upgrade for full)');
896
- console.log(\` Store: \${existsSync(STORE_PATH) ? 'Initialized' : 'Not initialized'}\`);
897
- console.log('');
898
- }
899
-
900
- // Suppress unhandled rejection warnings from dynamic import() failures
901
- process.on('unhandledRejection', () => {});
902
-
903
- const command = process.argv[2] || 'status';
904
-
905
- try {
906
- switch (command) {
907
- case 'import': await doImport(); break;
908
- case 'sync': await doSync(); break;
909
- case 'status': doStatus(); break;
910
- default:
911
- console.log('Usage: auto-memory-hook.mjs <import|sync|status>');
912
- process.exit(1);
913
- }
914
- } catch (err) {
915
- // Hooks must never crash Claude Code - fail silently
916
- dim(\`Error (non-critical): \${err.message}\`);
917
- }
918
- // Ensure clean exit for Claude Code hooks (exit 0 = success)
919
- process.exit(0);
811
+ return `#!/usr/bin/env node
812
+ /**
813
+ * Auto Memory Bridge Hook (ADR-048/049) — Minimal Fallback
814
+ * Full version is copied from package source when available.
815
+ *
816
+ * Usage:
817
+ * node auto-memory-hook.mjs import # SessionStart
818
+ * node auto-memory-hook.mjs sync # SessionEnd / Stop
819
+ * node auto-memory-hook.mjs status # Show bridge status
820
+ */
821
+
822
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
823
+ import { join, dirname } from 'path';
824
+ import { fileURLToPath } from 'url';
825
+
826
+ const __filename = fileURLToPath(import.meta.url);
827
+ const __dirname = dirname(__filename);
828
+ const PROJECT_ROOT = join(__dirname, '../..');
829
+ const DATA_DIR = join(PROJECT_ROOT, '.claude-flow', 'data');
830
+ const STORE_PATH = join(DATA_DIR, 'auto-memory-store.json');
831
+
832
+ const DIM = '\\x1b[2m';
833
+ const RESET = '\\x1b[0m';
834
+ const dim = (msg) => console.log(\` \${DIM}\${msg}\${RESET}\`);
835
+
836
+ // Ensure data dir
837
+ if (!existsSync(DATA_DIR)) mkdirSync(DATA_DIR, { recursive: true });
838
+
839
+ async function loadMemoryPackage() {
840
+ // Strategy 1: Use createRequire for CJS-style resolution (handles nested node_modules
841
+ // when installed as a transitive dependency via npx ruflo / npx claude-flow)
842
+ try {
843
+ const { createRequire } = await import('module');
844
+ const require = createRequire(join(PROJECT_ROOT, 'package.json'));
845
+ return require('@claude-flow/memory');
846
+ } catch { /* fall through */ }
847
+
848
+ // Strategy 2: ESM import (works when @claude-flow/memory is a direct dependency)
849
+ try { return await import('@claude-flow/memory'); } catch { /* fall through */ }
850
+
851
+ // Strategy 3: Walk up from PROJECT_ROOT looking for the package in any node_modules
852
+ let searchDir = PROJECT_ROOT;
853
+ const { parse } = await import('path');
854
+ while (searchDir !== parse(searchDir).root) {
855
+ const candidate = join(searchDir, 'node_modules', '@claude-flow', 'memory', 'dist', 'index.js');
856
+ if (existsSync(candidate)) {
857
+ try { return await import(\`file://\${candidate}\`); } catch { /* fall through */ }
858
+ }
859
+ searchDir = dirname(searchDir);
860
+ }
861
+
862
+ return null;
863
+ }
864
+
865
+ async function doImport() {
866
+ const memPkg = await loadMemoryPackage();
867
+
868
+ if (!memPkg || !memPkg.AutoMemoryBridge) {
869
+ dim('Memory package not available — auto memory import skipped (non-critical)');
870
+ return;
871
+ }
872
+
873
+ // Full implementation deferred to copied version
874
+ dim('Auto memory import available — run init --upgrade for full support');
875
+ }
876
+
877
+ async function doSync() {
878
+ if (!existsSync(STORE_PATH)) {
879
+ dim('No entries to sync');
880
+ return;
881
+ }
882
+
883
+ const memPkg = await loadMemoryPackage();
884
+
885
+ if (!memPkg || !memPkg.AutoMemoryBridge) {
886
+ dim('Memory package not available — sync skipped (non-critical)');
887
+ return;
888
+ }
889
+
890
+ dim('Auto memory sync available — run init --upgrade for full support');
891
+ }
892
+
893
+ function doStatus() {
894
+ console.log('\\n=== Auto Memory Bridge Status ===\\n');
895
+ console.log(' Package: Fallback mode (run init --upgrade for full)');
896
+ console.log(\` Store: \${existsSync(STORE_PATH) ? 'Initialized' : 'Not initialized'}\`);
897
+ console.log('');
898
+ }
899
+
900
+ // Suppress unhandled rejection warnings from dynamic import() failures
901
+ process.on('unhandledRejection', () => {});
902
+
903
+ const command = process.argv[2] || 'status';
904
+
905
+ try {
906
+ switch (command) {
907
+ case 'import': await doImport(); break;
908
+ case 'sync': await doSync(); break;
909
+ case 'status': doStatus(); break;
910
+ default:
911
+ console.log('Usage: auto-memory-hook.mjs <import|sync|status>');
912
+ process.exit(1);
913
+ }
914
+ } catch (err) {
915
+ // Hooks must never crash Claude Code - fail silently
916
+ dim(\`Error (non-critical): \${err.message}\`);
917
+ }
918
+ // Ensure clean exit for Claude Code hooks (exit 0 = success)
919
+ process.exit(0);
920
920
  `;
921
921
  }
922
922
  /**
923
923
  * Generate Windows PowerShell daemon manager
924
924
  */
925
925
  export function generateWindowsDaemonManager() {
926
- return `# RuFlo V3 Daemon Manager for Windows
927
- # PowerShell script for managing background processes
928
-
929
- param(
930
- [Parameter(Position=0)]
931
- [ValidateSet('start', 'stop', 'status', 'restart')]
932
- [string]$Action = 'status'
933
- )
934
-
935
- $ErrorActionPreference = 'SilentlyContinue'
936
- $ClaudeFlowDir = Join-Path $PWD '.claude-flow'
937
- $PidDir = Join-Path $ClaudeFlowDir 'pids'
938
-
939
- # Ensure directories exist
940
- if (-not (Test-Path $PidDir)) {
941
- New-Item -ItemType Directory -Path $PidDir -Force | Out-Null
942
- }
943
-
944
- function Get-DaemonStatus {
945
- param([string]$Name, [string]$PidFile)
946
-
947
- if (Test-Path $PidFile) {
948
- $pid = Get-Content $PidFile
949
- $process = Get-Process -Id $pid -ErrorAction SilentlyContinue
950
- if ($process) {
951
- return @{ Running = $true; Pid = $pid }
952
- }
953
- }
954
- return @{ Running = $false; Pid = $null }
955
- }
956
-
957
- function Start-SwarmMonitor {
958
- $pidFile = Join-Path $PidDir 'swarm-monitor.pid'
959
- $status = Get-DaemonStatus -Name 'swarm-monitor' -PidFile $pidFile
960
-
961
- if ($status.Running) {
962
- Write-Host "Swarm monitor already running (PID: $($status.Pid))" -ForegroundColor Yellow
963
- return
964
- }
965
-
966
- Write-Host "Starting swarm monitor..." -ForegroundColor Cyan
967
- $process = Start-Process -FilePath 'node' -ArgumentList @(
968
- '-e',
969
- 'setInterval(() => { require("fs").writeFileSync(".claude-flow/metrics/swarm-activity.json", JSON.stringify({swarm:{active:true,agent_count:0},timestamp:Date.now()})) }, 5000)'
970
- ) -PassThru -WindowStyle Hidden
971
-
972
- $process.Id | Out-File $pidFile
973
- Write-Host "Swarm monitor started (PID: $($process.Id))" -ForegroundColor Green
974
- }
975
-
976
- function Stop-SwarmMonitor {
977
- $pidFile = Join-Path $PidDir 'swarm-monitor.pid'
978
- $status = Get-DaemonStatus -Name 'swarm-monitor' -PidFile $pidFile
979
-
980
- if (-not $status.Running) {
981
- Write-Host "Swarm monitor not running" -ForegroundColor Yellow
982
- return
983
- }
984
-
985
- Stop-Process -Id $status.Pid -Force
986
- Remove-Item $pidFile -Force
987
- Write-Host "Swarm monitor stopped" -ForegroundColor Green
988
- }
989
-
990
- function Show-Status {
991
- Write-Host ""
992
- Write-Host "RuFlo V3 Daemon Status" -ForegroundColor Cyan
993
- Write-Host "=============================" -ForegroundColor Cyan
994
-
995
- $swarmPid = Join-Path $PidDir 'swarm-monitor.pid'
996
- $swarmStatus = Get-DaemonStatus -Name 'swarm-monitor' -PidFile $swarmPid
997
-
998
- if ($swarmStatus.Running) {
999
- Write-Host " Swarm Monitor: RUNNING (PID: $($swarmStatus.Pid))" -ForegroundColor Green
1000
- } else {
1001
- Write-Host " Swarm Monitor: STOPPED" -ForegroundColor Red
1002
- }
1003
- Write-Host ""
1004
- }
1005
-
1006
- switch ($Action) {
1007
- 'start' {
1008
- Start-SwarmMonitor
1009
- Show-Status
1010
- }
1011
- 'stop' {
1012
- Stop-SwarmMonitor
1013
- Show-Status
1014
- }
1015
- 'restart' {
1016
- Stop-SwarmMonitor
1017
- Start-Sleep -Seconds 1
1018
- Start-SwarmMonitor
1019
- Show-Status
1020
- }
1021
- 'status' {
1022
- Show-Status
1023
- }
1024
- }
926
+ return `# RuFlo V3 Daemon Manager for Windows
927
+ # PowerShell script for managing background processes
928
+
929
+ param(
930
+ [Parameter(Position=0)]
931
+ [ValidateSet('start', 'stop', 'status', 'restart')]
932
+ [string]$Action = 'status'
933
+ )
934
+
935
+ $ErrorActionPreference = 'SilentlyContinue'
936
+ $ClaudeFlowDir = Join-Path $PWD '.claude-flow'
937
+ $PidDir = Join-Path $ClaudeFlowDir 'pids'
938
+
939
+ # Ensure directories exist
940
+ if (-not (Test-Path $PidDir)) {
941
+ New-Item -ItemType Directory -Path $PidDir -Force | Out-Null
942
+ }
943
+
944
+ function Get-DaemonStatus {
945
+ param([string]$Name, [string]$PidFile)
946
+
947
+ if (Test-Path $PidFile) {
948
+ $pid = Get-Content $PidFile
949
+ $process = Get-Process -Id $pid -ErrorAction SilentlyContinue
950
+ if ($process) {
951
+ return @{ Running = $true; Pid = $pid }
952
+ }
953
+ }
954
+ return @{ Running = $false; Pid = $null }
955
+ }
956
+
957
+ function Start-SwarmMonitor {
958
+ $pidFile = Join-Path $PidDir 'swarm-monitor.pid'
959
+ $status = Get-DaemonStatus -Name 'swarm-monitor' -PidFile $pidFile
960
+
961
+ if ($status.Running) {
962
+ Write-Host "Swarm monitor already running (PID: $($status.Pid))" -ForegroundColor Yellow
963
+ return
964
+ }
965
+
966
+ Write-Host "Starting swarm monitor..." -ForegroundColor Cyan
967
+ $process = Start-Process -FilePath 'node' -ArgumentList @(
968
+ '-e',
969
+ 'setInterval(() => { require("fs").writeFileSync(".claude-flow/metrics/swarm-activity.json", JSON.stringify({swarm:{active:true,agent_count:0},timestamp:Date.now()})) }, 5000)'
970
+ ) -PassThru -WindowStyle Hidden
971
+
972
+ $process.Id | Out-File $pidFile
973
+ Write-Host "Swarm monitor started (PID: $($process.Id))" -ForegroundColor Green
974
+ }
975
+
976
+ function Stop-SwarmMonitor {
977
+ $pidFile = Join-Path $PidDir 'swarm-monitor.pid'
978
+ $status = Get-DaemonStatus -Name 'swarm-monitor' -PidFile $pidFile
979
+
980
+ if (-not $status.Running) {
981
+ Write-Host "Swarm monitor not running" -ForegroundColor Yellow
982
+ return
983
+ }
984
+
985
+ Stop-Process -Id $status.Pid -Force
986
+ Remove-Item $pidFile -Force
987
+ Write-Host "Swarm monitor stopped" -ForegroundColor Green
988
+ }
989
+
990
+ function Show-Status {
991
+ Write-Host ""
992
+ Write-Host "RuFlo V3 Daemon Status" -ForegroundColor Cyan
993
+ Write-Host "=============================" -ForegroundColor Cyan
994
+
995
+ $swarmPid = Join-Path $PidDir 'swarm-monitor.pid'
996
+ $swarmStatus = Get-DaemonStatus -Name 'swarm-monitor' -PidFile $swarmPid
997
+
998
+ if ($swarmStatus.Running) {
999
+ Write-Host " Swarm Monitor: RUNNING (PID: $($swarmStatus.Pid))" -ForegroundColor Green
1000
+ } else {
1001
+ Write-Host " Swarm Monitor: STOPPED" -ForegroundColor Red
1002
+ }
1003
+ Write-Host ""
1004
+ }
1005
+
1006
+ switch ($Action) {
1007
+ 'start' {
1008
+ Start-SwarmMonitor
1009
+ Show-Status
1010
+ }
1011
+ 'stop' {
1012
+ Stop-SwarmMonitor
1013
+ Show-Status
1014
+ }
1015
+ 'restart' {
1016
+ Stop-SwarmMonitor
1017
+ Start-Sleep -Seconds 1
1018
+ Start-SwarmMonitor
1019
+ Show-Status
1020
+ }
1021
+ 'status' {
1022
+ Show-Status
1023
+ }
1024
+ }
1025
1025
  `;
1026
1026
  }
1027
1027
  /**
1028
1028
  * Generate Windows batch file wrapper
1029
1029
  */
1030
1030
  export function generateWindowsBatchWrapper() {
1031
- return `@echo off
1032
- REM RuFlo V3 - Windows Batch Wrapper
1033
- REM Routes to PowerShell daemon manager
1034
-
1035
- PowerShell -ExecutionPolicy Bypass -File "%~dp0daemon-manager.ps1" %*
1031
+ return `@echo off
1032
+ REM RuFlo V3 - Windows Batch Wrapper
1033
+ REM Routes to PowerShell daemon manager
1034
+
1035
+ PowerShell -ExecutionPolicy Bypass -File "%~dp0daemon-manager.ps1" %*
1036
1036
  `;
1037
1037
  }
1038
1038
  /**
1039
1039
  * Generate cross-platform session manager
1040
1040
  */
1041
1041
  export function generateCrossPlatformSessionManager() {
1042
- return `#!/usr/bin/env node
1043
- /**
1044
- * Ruflo Cross-Platform Session Manager
1045
- * Works on Windows, macOS, and Linux
1046
- */
1047
-
1048
- const fs = require('fs');
1049
- const path = require('path');
1050
- const os = require('os');
1051
-
1052
- // Platform-specific paths
1053
- const platform = os.platform();
1054
- const homeDir = os.homedir();
1055
-
1056
- // Get data directory based on platform
1057
- function getDataDir() {
1058
- const localDir = path.join(process.cwd(), '.claude-flow', 'sessions');
1059
- if (fs.existsSync(path.dirname(localDir))) {
1060
- return localDir;
1061
- }
1062
-
1063
- switch (platform) {
1064
- case 'win32':
1065
- return path.join(process.env.APPDATA || homeDir, 'claude-flow', 'sessions');
1066
- case 'darwin':
1067
- return path.join(homeDir, 'Library', 'Application Support', 'claude-flow', 'sessions');
1068
- default:
1069
- return path.join(homeDir, '.claude-flow', 'sessions');
1070
- }
1071
- }
1072
-
1073
- const SESSION_DIR = getDataDir();
1074
- const SESSION_FILE = path.join(SESSION_DIR, 'current.json');
1075
-
1076
- // Ensure directory exists
1077
- function ensureDir(dir) {
1078
- if (!fs.existsSync(dir)) {
1079
- fs.mkdirSync(dir, { recursive: true });
1080
- }
1081
- }
1082
-
1083
- const commands = {
1084
- start: () => {
1085
- ensureDir(SESSION_DIR);
1086
- const sessionId = \`session-\${Date.now()}\`;
1087
- const session = {
1088
- id: sessionId,
1089
- startedAt: new Date().toISOString(),
1090
- platform: platform,
1091
- cwd: process.cwd(),
1092
- context: {},
1093
- metrics: { edits: 0, commands: 0, tasks: 0, errors: 0 }
1094
- };
1095
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
1096
- console.log(\`Session started: \${sessionId}\`);
1097
- return session;
1098
- },
1099
-
1100
- restore: () => {
1101
- if (!fs.existsSync(SESSION_FILE)) {
1102
- console.log('No session to restore');
1103
- return null;
1104
- }
1105
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
1106
- session.restoredAt = new Date().toISOString();
1107
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
1108
- console.log(\`Session restored: \${session.id}\`);
1109
- return session;
1110
- },
1111
-
1112
- end: () => {
1113
- if (!fs.existsSync(SESSION_FILE)) {
1114
- console.log('No active session');
1115
- return null;
1116
- }
1117
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
1118
- session.endedAt = new Date().toISOString();
1119
- session.duration = Date.now() - new Date(session.startedAt).getTime();
1120
-
1121
- const archivePath = path.join(SESSION_DIR, \`\${session.id}.json\`);
1122
- fs.writeFileSync(archivePath, JSON.stringify(session, null, 2));
1123
- fs.unlinkSync(SESSION_FILE);
1124
-
1125
- console.log(\`Session ended: \${session.id}\`);
1126
- console.log(\`Duration: \${Math.round(session.duration / 1000 / 60)} minutes\`);
1127
- return session;
1128
- },
1129
-
1130
- status: () => {
1131
- if (!fs.existsSync(SESSION_FILE)) {
1132
- console.log('No active session');
1133
- return null;
1134
- }
1135
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
1136
- const duration = Date.now() - new Date(session.startedAt).getTime();
1137
- console.log(\`Session: \${session.id}\`);
1138
- console.log(\`Platform: \${session.platform}\`);
1139
- console.log(\`Started: \${session.startedAt}\`);
1140
- console.log(\`Duration: \${Math.round(duration / 1000 / 60)} minutes\`);
1141
- return session;
1142
- }
1143
- };
1144
-
1145
- // CLI
1146
- const [,, command, ...args] = process.argv;
1147
- if (command && commands[command]) {
1148
- commands[command](...args);
1149
- } else {
1150
- console.log('Usage: session.js <start|restore|end|status>');
1151
- console.log(\`Platform: \${platform}\`);
1152
- console.log(\`Data dir: \${SESSION_DIR}\`);
1153
- }
1154
-
1155
- module.exports = commands;
1042
+ return `#!/usr/bin/env node
1043
+ /**
1044
+ * Ruflo Cross-Platform Session Manager
1045
+ * Works on Windows, macOS, and Linux
1046
+ */
1047
+
1048
+ const fs = require('fs');
1049
+ const path = require('path');
1050
+ const os = require('os');
1051
+
1052
+ // Platform-specific paths
1053
+ const platform = os.platform();
1054
+ const homeDir = os.homedir();
1055
+
1056
+ // Get data directory based on platform
1057
+ function getDataDir() {
1058
+ const localDir = path.join(process.cwd(), '.claude-flow', 'sessions');
1059
+ if (fs.existsSync(path.dirname(localDir))) {
1060
+ return localDir;
1061
+ }
1062
+
1063
+ switch (platform) {
1064
+ case 'win32':
1065
+ return path.join(process.env.APPDATA || homeDir, 'claude-flow', 'sessions');
1066
+ case 'darwin':
1067
+ return path.join(homeDir, 'Library', 'Application Support', 'claude-flow', 'sessions');
1068
+ default:
1069
+ return path.join(homeDir, '.claude-flow', 'sessions');
1070
+ }
1071
+ }
1072
+
1073
+ const SESSION_DIR = getDataDir();
1074
+ const SESSION_FILE = path.join(SESSION_DIR, 'current.json');
1075
+
1076
+ // Ensure directory exists
1077
+ function ensureDir(dir) {
1078
+ if (!fs.existsSync(dir)) {
1079
+ fs.mkdirSync(dir, { recursive: true });
1080
+ }
1081
+ }
1082
+
1083
+ const commands = {
1084
+ start: () => {
1085
+ ensureDir(SESSION_DIR);
1086
+ const sessionId = \`session-\${Date.now()}\`;
1087
+ const session = {
1088
+ id: sessionId,
1089
+ startedAt: new Date().toISOString(),
1090
+ platform: platform,
1091
+ cwd: process.cwd(),
1092
+ context: {},
1093
+ metrics: { edits: 0, commands: 0, tasks: 0, errors: 0 }
1094
+ };
1095
+ fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
1096
+ console.log(\`Session started: \${sessionId}\`);
1097
+ return session;
1098
+ },
1099
+
1100
+ restore: () => {
1101
+ if (!fs.existsSync(SESSION_FILE)) {
1102
+ console.log('No session to restore');
1103
+ return null;
1104
+ }
1105
+ const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
1106
+ session.restoredAt = new Date().toISOString();
1107
+ fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
1108
+ console.log(\`Session restored: \${session.id}\`);
1109
+ return session;
1110
+ },
1111
+
1112
+ end: () => {
1113
+ if (!fs.existsSync(SESSION_FILE)) {
1114
+ console.log('No active session');
1115
+ return null;
1116
+ }
1117
+ const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
1118
+ session.endedAt = new Date().toISOString();
1119
+ session.duration = Date.now() - new Date(session.startedAt).getTime();
1120
+
1121
+ const archivePath = path.join(SESSION_DIR, \`\${session.id}.json\`);
1122
+ fs.writeFileSync(archivePath, JSON.stringify(session, null, 2));
1123
+ fs.unlinkSync(SESSION_FILE);
1124
+
1125
+ console.log(\`Session ended: \${session.id}\`);
1126
+ console.log(\`Duration: \${Math.round(session.duration / 1000 / 60)} minutes\`);
1127
+ return session;
1128
+ },
1129
+
1130
+ status: () => {
1131
+ if (!fs.existsSync(SESSION_FILE)) {
1132
+ console.log('No active session');
1133
+ return null;
1134
+ }
1135
+ const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
1136
+ const duration = Date.now() - new Date(session.startedAt).getTime();
1137
+ console.log(\`Session: \${session.id}\`);
1138
+ console.log(\`Platform: \${session.platform}\`);
1139
+ console.log(\`Started: \${session.startedAt}\`);
1140
+ console.log(\`Duration: \${Math.round(duration / 1000 / 60)} minutes\`);
1141
+ return session;
1142
+ }
1143
+ };
1144
+
1145
+ // CLI
1146
+ const [,, command, ...args] = process.argv;
1147
+ if (command && commands[command]) {
1148
+ commands[command](...args);
1149
+ } else {
1150
+ console.log('Usage: session.js <start|restore|end|status>');
1151
+ console.log(\`Platform: \${platform}\`);
1152
+ console.log(\`Data dir: \${SESSION_DIR}\`);
1153
+ }
1154
+
1155
+ module.exports = commands;
1156
1156
  `;
1157
1157
  }
1158
1158
  /**