claude-flow 3.27.4 → 3.29.0

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 (689) hide show
  1. package/.claude/agents/MIGRATION_SUMMARY.md +221 -221
  2. package/.claude/agents/analysis/analyze-code-quality.md +57 -57
  3. package/.claude/agents/analysis/code-analyzer.md +188 -188
  4. package/.claude/agents/analysis/code-review/analyze-code-quality.md +57 -57
  5. package/.claude/agents/architecture/system-design/arch-system-design.md +35 -35
  6. package/.claude/agents/base-template-generator.md +41 -41
  7. package/.claude/agents/consensus/byzantine-coordinator.md +42 -42
  8. package/.claude/agents/consensus/crdt-synchronizer.md +976 -976
  9. package/.claude/agents/consensus/gossip-coordinator.md +42 -42
  10. package/.claude/agents/consensus/performance-benchmarker.md +830 -830
  11. package/.claude/agents/consensus/quorum-manager.md +802 -802
  12. package/.claude/agents/consensus/raft-manager.md +42 -42
  13. package/.claude/agents/consensus/security-manager.md +601 -601
  14. package/.claude/agents/core/coder.md +254 -254
  15. package/.claude/agents/core/planner.md +151 -151
  16. package/.claude/agents/core/researcher.md +173 -173
  17. package/.claude/agents/core/reviewer.md +308 -308
  18. package/.claude/agents/core/tester.md +299 -299
  19. package/.claude/agents/custom/test-long-runner.md +43 -43
  20. package/.claude/agents/data/ml/data-ml-model.md +75 -75
  21. package/.claude/agents/database-specialist.md +9 -9
  22. package/.claude/agents/development/backend/dev-backend-api.md +28 -28
  23. package/.claude/agents/development/dev-backend-api.md +177 -177
  24. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +51 -51
  25. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +62 -62
  26. package/.claude/agents/dual-mode/codex-coordinator.md +206 -206
  27. package/.claude/agents/dual-mode/codex-worker.md +190 -190
  28. package/.claude/agents/dual-mode/dual-orchestrator.md +253 -253
  29. package/.claude/agents/flow-nexus/app-store.md +87 -87
  30. package/.claude/agents/flow-nexus/authentication.md +68 -68
  31. package/.claude/agents/flow-nexus/challenges.md +80 -80
  32. package/.claude/agents/flow-nexus/neural-network.md +87 -87
  33. package/.claude/agents/flow-nexus/payments.md +82 -82
  34. package/.claude/agents/flow-nexus/sandbox.md +75 -75
  35. package/.claude/agents/flow-nexus/swarm.md +75 -75
  36. package/.claude/agents/flow-nexus/user-tools.md +95 -95
  37. package/.claude/agents/flow-nexus/workflow.md +83 -83
  38. package/.claude/agents/github/code-review-swarm.md +520 -520
  39. package/.claude/agents/github/github-modes.md +153 -153
  40. package/.claude/agents/github/issue-tracker.md +298 -298
  41. package/.claude/agents/github/multi-repo-swarm.md +524 -524
  42. package/.claude/agents/github/pr-manager.md +162 -162
  43. package/.claude/agents/github/project-board-sync.md +477 -477
  44. package/.claude/agents/github/release-manager.md +337 -337
  45. package/.claude/agents/github/release-swarm.md +550 -550
  46. package/.claude/agents/github/repo-architect.md +364 -364
  47. package/.claude/agents/github/swarm-issue.md +550 -550
  48. package/.claude/agents/github/swarm-pr.md +401 -401
  49. package/.claude/agents/github/sync-coordinator.md +424 -424
  50. package/.claude/agents/github/workflow-automation.md +604 -604
  51. package/.claude/agents/goal/agent.md +816 -816
  52. package/.claude/agents/goal/code-goal-planner.md +444 -444
  53. package/.claude/agents/goal/goal-planner.md +167 -167
  54. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +128 -128
  55. package/.claude/agents/hive-mind/queen-coordinator.md +201 -201
  56. package/.claude/agents/hive-mind/scout-explorer.md +240 -240
  57. package/.claude/agents/hive-mind/swarm-memory-manager.md +191 -191
  58. package/.claude/agents/hive-mind/worker-specialist.md +215 -215
  59. package/.claude/agents/neural/safla-neural.md +73 -73
  60. package/.claude/agents/optimization/benchmark-suite.md +662 -662
  61. package/.claude/agents/optimization/load-balancer.md +428 -428
  62. package/.claude/agents/optimization/performance-monitor.md +669 -669
  63. package/.claude/agents/optimization/resource-allocator.md +671 -671
  64. package/.claude/agents/optimization/topology-optimizer.md +805 -805
  65. package/.claude/agents/payments/agentic-payments.md +126 -126
  66. package/.claude/agents/project-coordinator.md +8 -8
  67. package/.claude/agents/python-specialist.md +9 -9
  68. package/.claude/agents/reasoning/agent.md +816 -816
  69. package/.claude/agents/reasoning/goal-planner.md +72 -72
  70. package/.claude/agents/security-auditor.md +9 -9
  71. package/.claude/agents/sona/sona-learning-optimizer.md +65 -65
  72. package/.claude/agents/sparc/architecture.md +452 -452
  73. package/.claude/agents/sparc/pseudocode.md +298 -298
  74. package/.claude/agents/sparc/refinement.md +503 -503
  75. package/.claude/agents/sparc/specification.md +257 -257
  76. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +87 -87
  77. package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
  78. package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
  79. package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
  80. package/.claude/agents/sublinear/performance-optimizer.md +367 -367
  81. package/.claude/agents/sublinear/trading-predictor.md +245 -245
  82. package/.claude/agents/swarm/adaptive-coordinator.md +363 -363
  83. package/.claude/agents/swarm/hierarchical-coordinator.md +299 -299
  84. package/.claude/agents/swarm/mesh-coordinator.md +362 -362
  85. package/.claude/agents/templates/automation-smart-agent.md +184 -184
  86. package/.claude/agents/templates/coordinator-swarm-init.md +82 -82
  87. package/.claude/agents/templates/github-pr-manager.md +154 -154
  88. package/.claude/agents/templates/implementer-sparc-coder.md +242 -242
  89. package/.claude/agents/templates/memory-coordinator.md +162 -162
  90. package/.claude/agents/templates/migration-plan.md +723 -723
  91. package/.claude/agents/templates/orchestrator-task.md +119 -119
  92. package/.claude/agents/templates/performance-analyzer.md +178 -178
  93. package/.claude/agents/templates/sparc-coordinator.md +162 -162
  94. package/.claude/agents/testing/production-validator.md +372 -372
  95. package/.claude/agents/testing/tdd-london-swarm.md +221 -221
  96. package/.claude/agents/testing/unit/tdd-london-swarm.md +221 -221
  97. package/.claude/agents/testing/validation/production-validator.md +372 -372
  98. package/.claude/agents/typescript-specialist.md +9 -9
  99. package/.claude/agents/v3/database-specialist.md +9 -9
  100. package/.claude/agents/v3/project-coordinator.md +8 -8
  101. package/.claude/agents/v3/python-specialist.md +9 -9
  102. package/.claude/agents/v3/test-architect.md +9 -9
  103. package/.claude/agents/v3/typescript-specialist.md +9 -9
  104. package/.claude/agents/v3/v3-integration-architect.md +311 -311
  105. package/.claude/agents/v3/v3-memory-specialist.md +280 -280
  106. package/.claude/agents/v3/v3-performance-engineer.md +362 -362
  107. package/.claude/agents/v3/v3-queen-coordinator.md +62 -62
  108. package/.claude/agents/v3/v3-security-architect.md +139 -139
  109. package/.claude/checkpoints/1767754460.json +8 -8
  110. package/.claude/commands/agents/README.md +10 -10
  111. package/.claude/commands/agents/agent-capabilities.md +21 -21
  112. package/.claude/commands/agents/agent-coordination.md +28 -28
  113. package/.claude/commands/agents/agent-spawning.md +28 -28
  114. package/.claude/commands/agents/agent-types.md +26 -26
  115. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
  116. package/.claude/commands/analysis/README.md +9 -9
  117. package/.claude/commands/analysis/bottleneck-detect.md +162 -162
  118. package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
  119. package/.claude/commands/analysis/performance-report.md +25 -25
  120. package/.claude/commands/analysis/token-efficiency.md +44 -44
  121. package/.claude/commands/analysis/token-usage.md +25 -25
  122. package/.claude/commands/automation/README.md +9 -9
  123. package/.claude/commands/automation/auto-agent.md +122 -122
  124. package/.claude/commands/automation/self-healing.md +105 -105
  125. package/.claude/commands/automation/session-memory.md +89 -89
  126. package/.claude/commands/automation/smart-agents.md +72 -72
  127. package/.claude/commands/automation/smart-spawn.md +25 -25
  128. package/.claude/commands/automation/workflow-select.md +25 -25
  129. package/.claude/commands/claude-flow-help.md +103 -103
  130. package/.claude/commands/claude-flow-memory.md +107 -107
  131. package/.claude/commands/claude-flow-swarm.md +205 -205
  132. package/.claude/commands/coordination/README.md +9 -9
  133. package/.claude/commands/coordination/agent-spawn.md +25 -25
  134. package/.claude/commands/coordination/init.md +44 -44
  135. package/.claude/commands/coordination/orchestrate.md +43 -43
  136. package/.claude/commands/coordination/spawn.md +45 -45
  137. package/.claude/commands/coordination/swarm-init.md +85 -85
  138. package/.claude/commands/coordination/task-orchestrate.md +25 -25
  139. package/.claude/commands/flow-nexus/app-store.md +123 -123
  140. package/.claude/commands/flow-nexus/challenges.md +119 -119
  141. package/.claude/commands/flow-nexus/login-registration.md +64 -64
  142. package/.claude/commands/flow-nexus/neural-network.md +133 -133
  143. package/.claude/commands/flow-nexus/payments.md +115 -115
  144. package/.claude/commands/flow-nexus/sandbox.md +82 -82
  145. package/.claude/commands/flow-nexus/swarm.md +86 -86
  146. package/.claude/commands/flow-nexus/user-tools.md +151 -151
  147. package/.claude/commands/flow-nexus/workflow.md +114 -114
  148. package/.claude/commands/github/README.md +11 -11
  149. package/.claude/commands/github/code-review-swarm.md +513 -513
  150. package/.claude/commands/github/code-review.md +25 -25
  151. package/.claude/commands/github/github-modes.md +146 -146
  152. package/.claude/commands/github/github-swarm.md +121 -121
  153. package/.claude/commands/github/issue-tracker.md +291 -291
  154. package/.claude/commands/github/issue-triage.md +25 -25
  155. package/.claude/commands/github/multi-repo-swarm.md +518 -518
  156. package/.claude/commands/github/pr-enhance.md +26 -26
  157. package/.claude/commands/github/pr-manager.md +169 -169
  158. package/.claude/commands/github/project-board-sync.md +470 -470
  159. package/.claude/commands/github/release-manager.md +337 -337
  160. package/.claude/commands/github/release-swarm.md +543 -543
  161. package/.claude/commands/github/repo-analyze.md +25 -25
  162. package/.claude/commands/github/repo-architect.md +366 -366
  163. package/.claude/commands/github/swarm-issue.md +481 -481
  164. package/.claude/commands/github/swarm-pr.md +284 -284
  165. package/.claude/commands/github/sync-coordinator.md +300 -300
  166. package/.claude/commands/github/workflow-automation.md +441 -441
  167. package/.claude/commands/hive-mind/README.md +17 -17
  168. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
  169. package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
  170. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
  171. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
  172. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
  173. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
  174. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
  175. package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
  176. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
  177. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
  178. package/.claude/commands/hive-mind/hive-mind.md +27 -27
  179. package/.claude/commands/hooks/README.md +11 -11
  180. package/.claude/commands/hooks/overview.md +57 -57
  181. package/.claude/commands/hooks/post-edit.md +117 -117
  182. package/.claude/commands/hooks/post-task.md +112 -112
  183. package/.claude/commands/hooks/pre-edit.md +113 -113
  184. package/.claude/commands/hooks/pre-task.md +111 -111
  185. package/.claude/commands/hooks/session-end.md +118 -118
  186. package/.claude/commands/hooks/setup.md +102 -102
  187. package/.claude/commands/memory/README.md +9 -9
  188. package/.claude/commands/memory/memory-persist.md +25 -25
  189. package/.claude/commands/memory/memory-search.md +25 -25
  190. package/.claude/commands/memory/memory-usage.md +25 -25
  191. package/.claude/commands/memory/neural.md +47 -47
  192. package/.claude/commands/monitoring/README.md +9 -9
  193. package/.claude/commands/monitoring/agent-metrics.md +25 -25
  194. package/.claude/commands/monitoring/agents.md +44 -44
  195. package/.claude/commands/monitoring/real-time-view.md +25 -25
  196. package/.claude/commands/monitoring/status.md +46 -46
  197. package/.claude/commands/monitoring/swarm-monitor.md +25 -25
  198. package/.claude/commands/optimization/README.md +9 -9
  199. package/.claude/commands/optimization/auto-topology.md +61 -61
  200. package/.claude/commands/optimization/cache-manage.md +25 -25
  201. package/.claude/commands/optimization/parallel-execute.md +25 -25
  202. package/.claude/commands/optimization/parallel-execution.md +49 -49
  203. package/.claude/commands/optimization/topology-optimize.md +25 -25
  204. package/.claude/commands/pair/README.md +260 -260
  205. package/.claude/commands/pair/commands.md +545 -545
  206. package/.claude/commands/pair/config.md +509 -509
  207. package/.claude/commands/pair/examples.md +511 -511
  208. package/.claude/commands/pair/modes.md +347 -347
  209. package/.claude/commands/pair/session.md +406 -406
  210. package/.claude/commands/pair/start.md +208 -208
  211. package/.claude/commands/sparc/analyzer.md +51 -51
  212. package/.claude/commands/sparc/architect.md +53 -53
  213. package/.claude/commands/sparc/ask.md +97 -97
  214. package/.claude/commands/sparc/batch-executor.md +54 -54
  215. package/.claude/commands/sparc/code.md +89 -89
  216. package/.claude/commands/sparc/coder.md +54 -54
  217. package/.claude/commands/sparc/debug.md +83 -83
  218. package/.claude/commands/sparc/debugger.md +54 -54
  219. package/.claude/commands/sparc/designer.md +53 -53
  220. package/.claude/commands/sparc/devops.md +109 -109
  221. package/.claude/commands/sparc/docs-writer.md +80 -80
  222. package/.claude/commands/sparc/documenter.md +54 -54
  223. package/.claude/commands/sparc/innovator.md +54 -54
  224. package/.claude/commands/sparc/integration.md +83 -83
  225. package/.claude/commands/sparc/mcp.md +117 -117
  226. package/.claude/commands/sparc/memory-manager.md +54 -54
  227. package/.claude/commands/sparc/optimizer.md +54 -54
  228. package/.claude/commands/sparc/orchestrator.md +131 -131
  229. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
  230. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
  231. package/.claude/commands/sparc/researcher.md +54 -54
  232. package/.claude/commands/sparc/reviewer.md +54 -54
  233. package/.claude/commands/sparc/security-review.md +80 -80
  234. package/.claude/commands/sparc/sparc-modes.md +174 -174
  235. package/.claude/commands/sparc/sparc.md +111 -111
  236. package/.claude/commands/sparc/spec-pseudocode.md +80 -80
  237. package/.claude/commands/sparc/supabase-admin.md +348 -348
  238. package/.claude/commands/sparc/swarm-coordinator.md +54 -54
  239. package/.claude/commands/sparc/tdd.md +54 -54
  240. package/.claude/commands/sparc/tester.md +54 -54
  241. package/.claude/commands/sparc/tutorial.md +79 -79
  242. package/.claude/commands/sparc/workflow-manager.md +54 -54
  243. package/.claude/commands/sparc.md +166 -166
  244. package/.claude/commands/stream-chain/pipeline.md +120 -120
  245. package/.claude/commands/stream-chain/run.md +69 -69
  246. package/.claude/commands/swarm/README.md +15 -15
  247. package/.claude/commands/swarm/analysis.md +95 -95
  248. package/.claude/commands/swarm/development.md +96 -96
  249. package/.claude/commands/swarm/examples.md +168 -168
  250. package/.claude/commands/swarm/maintenance.md +102 -102
  251. package/.claude/commands/swarm/optimization.md +117 -117
  252. package/.claude/commands/swarm/research.md +136 -136
  253. package/.claude/commands/swarm/swarm-analysis.md +8 -8
  254. package/.claude/commands/swarm/swarm-background.md +8 -8
  255. package/.claude/commands/swarm/swarm-init.md +19 -19
  256. package/.claude/commands/swarm/swarm-modes.md +8 -8
  257. package/.claude/commands/swarm/swarm-monitor.md +8 -8
  258. package/.claude/commands/swarm/swarm-spawn.md +19 -19
  259. package/.claude/commands/swarm/swarm-status.md +8 -8
  260. package/.claude/commands/swarm/swarm-strategies.md +8 -8
  261. package/.claude/commands/swarm/swarm.md +27 -27
  262. package/.claude/commands/swarm/testing.md +131 -131
  263. package/.claude/commands/training/README.md +9 -9
  264. package/.claude/commands/training/model-update.md +25 -25
  265. package/.claude/commands/training/neural-patterns.md +73 -73
  266. package/.claude/commands/training/neural-train.md +25 -25
  267. package/.claude/commands/training/pattern-learn.md +25 -25
  268. package/.claude/commands/training/specialization.md +62 -62
  269. package/.claude/commands/truth/start.md +142 -142
  270. package/.claude/commands/verify/check.md +49 -49
  271. package/.claude/commands/verify/start.md +127 -127
  272. package/.claude/commands/workflows/README.md +9 -9
  273. package/.claude/commands/workflows/development.md +77 -77
  274. package/.claude/commands/workflows/research.md +62 -62
  275. package/.claude/commands/workflows/workflow-create.md +25 -25
  276. package/.claude/commands/workflows/workflow-execute.md +25 -25
  277. package/.claude/commands/workflows/workflow-export.md +25 -25
  278. package/.claude/config/v3-dependency-optimization.json +265 -265
  279. package/.claude/config/v3-performance-targets.json +250 -250
  280. package/.claude/helpers/.helpers-version +1 -1
  281. package/.claude/helpers/README.md +96 -96
  282. package/.claude/helpers/adr-compliance.sh +186 -186
  283. package/.claude/helpers/aggressive-microcompact.mjs +36 -36
  284. package/.claude/helpers/auto-commit.sh +178 -178
  285. package/.claude/helpers/auto-memory-hook.mjs +430 -430
  286. package/.claude/helpers/checkpoint-manager.sh +251 -251
  287. package/.claude/helpers/context-persistence-hook.mjs +2001 -2001
  288. package/.claude/helpers/daemon-manager.sh +252 -252
  289. package/.claude/helpers/ddd-tracker.sh +144 -144
  290. package/.claude/helpers/github-safe.js +156 -156
  291. package/.claude/helpers/github-setup.sh +45 -45
  292. package/.claude/helpers/guidance-hook.sh +13 -13
  293. package/.claude/helpers/guidance-hooks.sh +102 -102
  294. package/.claude/helpers/health-monitor.sh +108 -108
  295. package/.claude/helpers/helpers.manifest.json +6 -5
  296. package/.claude/helpers/hook-handler.cjs +460 -311
  297. package/.claude/helpers/intelligence.cjs +1058 -1048
  298. package/.claude/helpers/learning-hooks.sh +329 -329
  299. package/.claude/helpers/learning-optimizer.sh +127 -127
  300. package/.claude/helpers/learning-service.mjs +1144 -1144
  301. package/.claude/helpers/memory.cjs +84 -84
  302. package/.claude/helpers/metrics-db.mjs +503 -503
  303. package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
  304. package/.claude/helpers/pattern-consolidator.sh +86 -86
  305. package/.claude/helpers/perf-worker.sh +160 -160
  306. package/.claude/helpers/quick-start.sh +19 -19
  307. package/.claude/helpers/router.cjs +62 -62
  308. package/.claude/helpers/security-scanner.sh +127 -127
  309. package/.claude/helpers/session.cjs +125 -125
  310. package/.claude/helpers/setup-mcp.sh +18 -18
  311. package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
  312. package/.claude/helpers/statusline.cjs +925 -925
  313. package/.claude/helpers/swarm-comms.sh +353 -353
  314. package/.claude/helpers/swarm-hooks.sh +761 -761
  315. package/.claude/helpers/swarm-monitor.sh +210 -210
  316. package/.claude/helpers/sync-v3-metrics.sh +245 -245
  317. package/.claude/helpers/update-v3-progress.sh +165 -165
  318. package/.claude/helpers/v3-quick-status.sh +57 -57
  319. package/.claude/helpers/v3.sh +110 -110
  320. package/.claude/helpers/validate-v3-config.sh +215 -215
  321. package/.claude/helpers/worker-manager.sh +170 -170
  322. package/.claude/mcp.json +12 -12
  323. package/.claude/proven-config.json +1 -1
  324. package/.claude/settings.json +285 -285
  325. package/.claude/settings.json.bak +526 -526
  326. package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
  327. package/.claude/skills/agentdb-learning/SKILL.md +545 -545
  328. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
  329. package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
  330. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
  331. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -645
  332. package/.claude/skills/browser/SKILL.md +204 -204
  333. package/.claude/skills/dual-mode/README.md +71 -71
  334. package/.claude/skills/dual-mode/dual-collect.md +103 -103
  335. package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
  336. package/.claude/skills/dual-mode/dual-spawn.md +81 -81
  337. package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
  338. package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
  339. package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
  340. package/.claude/skills/github-code-review/SKILL.md +1125 -1125
  341. package/.claude/skills/github-multi-repo/SKILL.md +862 -862
  342. package/.claude/skills/github-project-management/SKILL.md +1262 -1262
  343. package/.claude/skills/github-release-management/SKILL.md +1064 -1064
  344. package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
  345. package/.claude/skills/hive-mind-advanced/SKILL.md +709 -709
  346. package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
  347. package/.claude/skills/pair-programming/SKILL.md +1202 -1202
  348. package/.claude/skills/performance-analysis/SKILL.md +560 -560
  349. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
  350. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
  351. package/.claude/skills/skill-builder/SKILL.md +910 -910
  352. package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
  353. package/.claude/skills/stream-chain/SKILL.md +560 -560
  354. package/.claude/skills/swarm-advanced/SKILL.md +970 -970
  355. package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
  356. package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
  357. package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
  358. package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
  359. package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
  360. package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
  361. package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
  362. package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
  363. package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
  364. package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
  365. package/.claude/skills/verification-quality/SKILL.md +691 -691
  366. package/.claude/skills/worker-benchmarks/SKILL.md +129 -129
  367. package/.claude/skills/worker-integration/SKILL.md +147 -147
  368. package/.claude/statusline-command.sh +176 -176
  369. package/.claude/statusline.mjs +109 -109
  370. package/.claude/statusline.sh +431 -431
  371. package/.claude/workflows/full-system-test.js +65 -65
  372. package/.claude/workflows/intelligence-system-hardening.js +120 -120
  373. package/.claude/workflows/plugin-contract-audit.js +91 -91
  374. package/.claude-plugin/README.md +720 -720
  375. package/.claude-plugin/docs/INSTALLATION.md +261 -261
  376. package/.claude-plugin/docs/PLUGIN_SUMMARY.md +361 -361
  377. package/.claude-plugin/docs/QUICKSTART.md +361 -361
  378. package/.claude-plugin/docs/STRUCTURE.md +128 -128
  379. package/.claude-plugin/hooks/hooks.json +77 -77
  380. package/.claude-plugin/marketplace.json +185 -185
  381. package/.claude-plugin/plugin.json +71 -71
  382. package/.claude-plugin/scripts/install.sh +234 -234
  383. package/.claude-plugin/scripts/ruflo-hook.cjs +166 -166
  384. package/.claude-plugin/scripts/ruflo-hook.sh +37 -37
  385. package/.claude-plugin/scripts/uninstall.sh +36 -36
  386. package/.claude-plugin/scripts/verify.sh +108 -108
  387. package/LICENSE +21 -21
  388. package/README.md +419 -419
  389. package/bin/cli.js +11 -11
  390. package/bin/npx-repair.js +7 -7
  391. package/bin/npx-safe-launch.js +9 -9
  392. package/package.json +185 -185
  393. package/v3/@claude-flow/cli/README.md +419 -419
  394. package/v3/@claude-flow/cli/bin/cli.js +314 -314
  395. package/v3/@claude-flow/cli/bin/mcp-server.js +224 -224
  396. package/v3/@claude-flow/cli/bin/preinstall.cjs +2 -2
  397. package/v3/@claude-flow/cli/catalog-manifest.json +2 -2
  398. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.js +24 -24
  399. package/v3/@claude-flow/cli/dist/src/business-pods/bbs-budget-tracker.js +53 -53
  400. package/v3/@claude-flow/cli/dist/src/commands/completions.js +409 -409
  401. package/v3/@claude-flow/cli/dist/src/commands/daemon.d.ts +23 -0
  402. package/v3/@claude-flow/cli/dist/src/commands/daemon.js +216 -44
  403. package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +26 -26
  404. package/v3/@claude-flow/cli/dist/src/commands/funnel.d.ts +2 -0
  405. package/v3/@claude-flow/cli/dist/src/commands/funnel.js +110 -2
  406. package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +97 -97
  407. package/v3/@claude-flow/cli/dist/src/commands/hooks.js +9 -9
  408. package/v3/@claude-flow/cli/dist/src/commands/init.js +94 -38
  409. package/v3/@claude-flow/cli/dist/src/commands/memory.js +85 -1
  410. package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +23 -23
  411. package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +31 -31
  412. package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +14 -14
  413. package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +115 -115
  414. package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +99 -99
  415. package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
  416. package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +624 -624
  417. package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +38 -38
  418. package/v3/@claude-flow/cli/dist/src/config/proven-config.js +2 -2
  419. package/v3/@claude-flow/cli/dist/src/funnel/disclosure.d.ts +1 -0
  420. package/v3/@claude-flow/cli/dist/src/funnel/disclosure.js +12 -0
  421. package/v3/@claude-flow/cli/dist/src/funnel/index.d.ts +1 -1
  422. package/v3/@claude-flow/cli/dist/src/funnel/index.js +1 -1
  423. package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +231 -231
  424. package/v3/@claude-flow/cli/dist/src/init/executor.js +453 -453
  425. package/v3/@claude-flow/cli/dist/src/init/helper-signing.d.ts +8 -1
  426. package/v3/@claude-flow/cli/dist/src/init/helper-signing.js +9 -2
  427. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +751 -751
  428. package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +994 -951
  429. package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +15 -15
  430. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-intent-tools.js +19 -19
  431. package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.js +22 -22
  432. package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.d.ts +10 -0
  433. package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +139 -88
  434. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.d.ts +18 -0
  435. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +539 -407
  436. package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +5 -5
  437. package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
  438. package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.d.ts +195 -0
  439. package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.js +643 -0
  440. package/v3/@claude-flow/cli/dist/src/ruvector/moe-router.d.ts +206 -0
  441. package/v3/@claude-flow/cli/dist/src/ruvector/moe-router.js +626 -0
  442. package/v3/@claude-flow/cli/dist/src/services/distill-tuning.js +7 -7
  443. package/v3/@claude-flow/cli/dist/src/services/event-stream.d.ts +25 -0
  444. package/v3/@claude-flow/cli/dist/src/services/event-stream.js +27 -0
  445. package/v3/@claude-flow/cli/dist/src/services/global-ai-budget.d.ts +25 -0
  446. package/v3/@claude-flow/cli/dist/src/services/global-ai-budget.js +56 -0
  447. package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.d.ts +21 -0
  448. package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +152 -86
  449. package/v3/@claude-flow/cli/dist/src/services/loop-worker-runner.d.ts +16 -0
  450. package/v3/@claude-flow/cli/dist/src/services/loop-worker-runner.js +34 -0
  451. package/v3/@claude-flow/cli/dist/src/services/memory-distillation.js +4 -4
  452. package/v3/@claude-flow/cli/dist/src/services/repo-supervisor.d.ts +70 -0
  453. package/v3/@claude-flow/cli/dist/src/services/repo-supervisor.js +228 -0
  454. package/v3/@claude-flow/cli/dist/src/services/runtime-capabilities.d.ts +22 -0
  455. package/v3/@claude-flow/cli/dist/src/services/runtime-capabilities.js +45 -0
  456. package/v3/@claude-flow/cli/dist/src/services/worker-daemon.d.ts +26 -0
  457. package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +95 -5
  458. package/v3/@claude-flow/cli/dist/src/services/workspace-lease.d.ts +55 -0
  459. package/v3/@claude-flow/cli/dist/src/services/workspace-lease.js +191 -0
  460. package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
  461. package/v3/@claude-flow/cli/package.json +134 -133
  462. package/v3/@claude-flow/guidance/README.md +1195 -1195
  463. package/v3/@claude-flow/guidance/dist/adversarial.d.ts +284 -0
  464. package/v3/@claude-flow/guidance/dist/adversarial.js +572 -0
  465. package/v3/@claude-flow/guidance/dist/analyzer.d.ts +530 -0
  466. package/v3/@claude-flow/guidance/dist/analyzer.js +2587 -0
  467. package/v3/@claude-flow/guidance/dist/artifacts.d.ts +283 -0
  468. package/v3/@claude-flow/guidance/dist/artifacts.js +356 -0
  469. package/v3/@claude-flow/guidance/dist/authority.d.ts +290 -0
  470. package/v3/@claude-flow/guidance/dist/authority.js +558 -0
  471. package/v3/@claude-flow/guidance/dist/capabilities.d.ts +209 -0
  472. package/v3/@claude-flow/guidance/dist/capabilities.js +485 -0
  473. package/v3/@claude-flow/guidance/dist/coherence.d.ts +233 -0
  474. package/v3/@claude-flow/guidance/dist/coherence.js +372 -0
  475. package/v3/@claude-flow/guidance/dist/compiler.d.ts +87 -0
  476. package/v3/@claude-flow/guidance/dist/compiler.js +410 -0
  477. package/v3/@claude-flow/guidance/dist/conformance-kit.d.ts +225 -0
  478. package/v3/@claude-flow/guidance/dist/conformance-kit.js +629 -0
  479. package/v3/@claude-flow/guidance/dist/continue-gate.d.ts +214 -0
  480. package/v3/@claude-flow/guidance/dist/continue-gate.js +353 -0
  481. package/v3/@claude-flow/guidance/dist/crypto-utils.d.ts +17 -0
  482. package/v3/@claude-flow/guidance/dist/crypto-utils.js +24 -0
  483. package/v3/@claude-flow/guidance/dist/evolution.d.ts +282 -0
  484. package/v3/@claude-flow/guidance/dist/evolution.js +500 -0
  485. package/v3/@claude-flow/guidance/dist/gates.d.ts +79 -0
  486. package/v3/@claude-flow/guidance/dist/gates.js +302 -0
  487. package/v3/@claude-flow/guidance/dist/gateway.d.ts +206 -0
  488. package/v3/@claude-flow/guidance/dist/gateway.js +452 -0
  489. package/v3/@claude-flow/guidance/dist/generators.d.ts +153 -0
  490. package/v3/@claude-flow/guidance/dist/generators.js +682 -0
  491. package/v3/@claude-flow/guidance/dist/headless.d.ts +177 -0
  492. package/v3/@claude-flow/guidance/dist/headless.js +342 -0
  493. package/v3/@claude-flow/guidance/dist/hooks.d.ts +109 -0
  494. package/v3/@claude-flow/guidance/dist/hooks.js +347 -0
  495. package/v3/@claude-flow/guidance/dist/index.d.ts +205 -0
  496. package/v3/@claude-flow/guidance/dist/index.js +321 -0
  497. package/v3/@claude-flow/guidance/dist/ledger.d.ts +162 -0
  498. package/v3/@claude-flow/guidance/dist/ledger.js +375 -0
  499. package/v3/@claude-flow/guidance/dist/manifest-validator.d.ts +289 -0
  500. package/v3/@claude-flow/guidance/dist/manifest-validator.js +838 -0
  501. package/v3/@claude-flow/guidance/dist/memory-gate.d.ts +222 -0
  502. package/v3/@claude-flow/guidance/dist/memory-gate.js +382 -0
  503. package/v3/@claude-flow/guidance/dist/meta-governance.d.ts +265 -0
  504. package/v3/@claude-flow/guidance/dist/meta-governance.js +348 -0
  505. package/v3/@claude-flow/guidance/dist/optimizer.d.ts +104 -0
  506. package/v3/@claude-flow/guidance/dist/optimizer.js +329 -0
  507. package/v3/@claude-flow/guidance/dist/persistence.d.ts +189 -0
  508. package/v3/@claude-flow/guidance/dist/persistence.js +464 -0
  509. package/v3/@claude-flow/guidance/dist/proof.d.ts +185 -0
  510. package/v3/@claude-flow/guidance/dist/proof.js +238 -0
  511. package/v3/@claude-flow/guidance/dist/retriever.d.ts +172 -0
  512. package/v3/@claude-flow/guidance/dist/retriever.js +596 -0
  513. package/v3/@claude-flow/guidance/dist/ruvbot-integration.d.ts +370 -0
  514. package/v3/@claude-flow/guidance/dist/ruvbot-integration.js +738 -0
  515. package/v3/@claude-flow/guidance/dist/temporal.d.ts +426 -0
  516. package/v3/@claude-flow/guidance/dist/temporal.js +658 -0
  517. package/v3/@claude-flow/guidance/dist/trust.d.ts +283 -0
  518. package/v3/@claude-flow/guidance/dist/trust.js +473 -0
  519. package/v3/@claude-flow/guidance/dist/truth-anchors.d.ts +276 -0
  520. package/v3/@claude-flow/guidance/dist/truth-anchors.js +488 -0
  521. package/v3/@claude-flow/guidance/dist/types.d.ts +378 -0
  522. package/v3/@claude-flow/guidance/dist/types.js +10 -0
  523. package/v3/@claude-flow/guidance/dist/uncertainty.d.ts +372 -0
  524. package/v3/@claude-flow/guidance/dist/uncertainty.js +619 -0
  525. package/v3/@claude-flow/guidance/dist/wasm-kernel.d.ts +48 -0
  526. package/v3/@claude-flow/guidance/dist/wasm-kernel.js +158 -0
  527. package/v3/@claude-flow/guidance/package.json +198 -198
  528. package/v3/@claude-flow/shared/README.md +323 -323
  529. package/v3/@claude-flow/shared/dist/core/config/defaults.d.ts +41 -0
  530. package/v3/@claude-flow/shared/dist/core/config/defaults.js +186 -0
  531. package/v3/@claude-flow/shared/dist/core/config/index.d.ts +8 -0
  532. package/v3/@claude-flow/shared/dist/core/config/index.js +12 -0
  533. package/v3/@claude-flow/shared/dist/core/config/loader.d.ts +45 -0
  534. package/v3/@claude-flow/shared/dist/core/config/loader.js +238 -0
  535. package/v3/@claude-flow/shared/dist/core/config/schema.d.ts +1728 -0
  536. package/v3/@claude-flow/shared/dist/core/config/schema.js +160 -0
  537. package/v3/@claude-flow/shared/dist/core/config/validator.d.ts +92 -0
  538. package/v3/@claude-flow/shared/dist/core/config/validator.js +147 -0
  539. package/v3/@claude-flow/shared/dist/core/event-bus.d.ts +31 -0
  540. package/v3/@claude-flow/shared/dist/core/event-bus.js +197 -0
  541. package/v3/@claude-flow/shared/dist/core/index.d.ts +15 -0
  542. package/v3/@claude-flow/shared/dist/core/index.js +19 -0
  543. package/v3/@claude-flow/shared/dist/core/interfaces/agent.interface.d.ts +200 -0
  544. package/v3/@claude-flow/shared/dist/core/interfaces/agent.interface.js +6 -0
  545. package/v3/@claude-flow/shared/dist/core/interfaces/coordinator.interface.d.ts +310 -0
  546. package/v3/@claude-flow/shared/dist/core/interfaces/coordinator.interface.js +7 -0
  547. package/v3/@claude-flow/shared/dist/core/interfaces/event.interface.d.ts +224 -0
  548. package/v3/@claude-flow/shared/dist/core/interfaces/event.interface.js +46 -0
  549. package/v3/@claude-flow/shared/dist/core/interfaces/index.d.ts +10 -0
  550. package/v3/@claude-flow/shared/dist/core/interfaces/index.js +15 -0
  551. package/v3/@claude-flow/shared/dist/core/interfaces/memory.interface.d.ts +298 -0
  552. package/v3/@claude-flow/shared/dist/core/interfaces/memory.interface.js +7 -0
  553. package/v3/@claude-flow/shared/dist/core/interfaces/task.interface.d.ts +185 -0
  554. package/v3/@claude-flow/shared/dist/core/interfaces/task.interface.js +6 -0
  555. package/v3/@claude-flow/shared/dist/core/orchestrator/event-coordinator.d.ts +35 -0
  556. package/v3/@claude-flow/shared/dist/core/orchestrator/event-coordinator.js +101 -0
  557. package/v3/@claude-flow/shared/dist/core/orchestrator/health-monitor.d.ts +60 -0
  558. package/v3/@claude-flow/shared/dist/core/orchestrator/health-monitor.js +166 -0
  559. package/v3/@claude-flow/shared/dist/core/orchestrator/index.d.ts +46 -0
  560. package/v3/@claude-flow/shared/dist/core/orchestrator/index.js +64 -0
  561. package/v3/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.d.ts +56 -0
  562. package/v3/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.js +195 -0
  563. package/v3/@claude-flow/shared/dist/core/orchestrator/session-manager.d.ts +83 -0
  564. package/v3/@claude-flow/shared/dist/core/orchestrator/session-manager.js +193 -0
  565. package/v3/@claude-flow/shared/dist/core/orchestrator/task-manager.d.ts +49 -0
  566. package/v3/@claude-flow/shared/dist/core/orchestrator/task-manager.js +253 -0
  567. package/v3/@claude-flow/shared/dist/events/domain-events.d.ts +282 -0
  568. package/v3/@claude-flow/shared/dist/events/domain-events.js +165 -0
  569. package/v3/@claude-flow/shared/dist/events/event-store.d.ts +126 -0
  570. package/v3/@claude-flow/shared/dist/events/event-store.js +427 -0
  571. package/v3/@claude-flow/shared/dist/events/event-store.test.d.ts +8 -0
  572. package/v3/@claude-flow/shared/dist/events/event-store.test.js +293 -0
  573. package/v3/@claude-flow/shared/dist/events/example-usage.d.ts +10 -0
  574. package/v3/@claude-flow/shared/dist/events/example-usage.js +193 -0
  575. package/v3/@claude-flow/shared/dist/events/index.d.ts +21 -0
  576. package/v3/@claude-flow/shared/dist/events/index.js +22 -0
  577. package/v3/@claude-flow/shared/dist/events/projections.d.ts +177 -0
  578. package/v3/@claude-flow/shared/dist/events/projections.js +421 -0
  579. package/v3/@claude-flow/shared/dist/events/rvf-event-log.d.ts +82 -0
  580. package/v3/@claude-flow/shared/dist/events/rvf-event-log.js +340 -0
  581. package/v3/@claude-flow/shared/dist/events/state-reconstructor.d.ts +101 -0
  582. package/v3/@claude-flow/shared/dist/events/state-reconstructor.js +263 -0
  583. package/v3/@claude-flow/shared/dist/events.d.ts +80 -0
  584. package/v3/@claude-flow/shared/dist/events.js +249 -0
  585. package/v3/@claude-flow/shared/dist/hooks/example-usage.d.ts +42 -0
  586. package/v3/@claude-flow/shared/dist/hooks/example-usage.js +351 -0
  587. package/v3/@claude-flow/shared/dist/hooks/executor.d.ts +100 -0
  588. package/v3/@claude-flow/shared/dist/hooks/executor.js +267 -0
  589. package/v3/@claude-flow/shared/dist/hooks/hooks.test.d.ts +9 -0
  590. package/v3/@claude-flow/shared/dist/hooks/hooks.test.js +322 -0
  591. package/v3/@claude-flow/shared/dist/hooks/index.d.ts +52 -0
  592. package/v3/@claude-flow/shared/dist/hooks/index.js +51 -0
  593. package/v3/@claude-flow/shared/dist/hooks/registry.d.ts +133 -0
  594. package/v3/@claude-flow/shared/dist/hooks/registry.js +277 -0
  595. package/v3/@claude-flow/shared/dist/hooks/safety/bash-safety.d.ts +105 -0
  596. package/v3/@claude-flow/shared/dist/hooks/safety/bash-safety.js +481 -0
  597. package/v3/@claude-flow/shared/dist/hooks/safety/file-organization.d.ts +144 -0
  598. package/v3/@claude-flow/shared/dist/hooks/safety/file-organization.js +328 -0
  599. package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.d.ts +158 -0
  600. package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.js +450 -0
  601. package/v3/@claude-flow/shared/dist/hooks/safety/index.d.ts +17 -0
  602. package/v3/@claude-flow/shared/dist/hooks/safety/index.js +17 -0
  603. package/v3/@claude-flow/shared/dist/hooks/session-hooks.d.ts +234 -0
  604. package/v3/@claude-flow/shared/dist/hooks/session-hooks.js +334 -0
  605. package/v3/@claude-flow/shared/dist/hooks/task-hooks.d.ts +163 -0
  606. package/v3/@claude-flow/shared/dist/hooks/task-hooks.js +326 -0
  607. package/v3/@claude-flow/shared/dist/hooks/types.d.ts +267 -0
  608. package/v3/@claude-flow/shared/dist/hooks/types.js +62 -0
  609. package/v3/@claude-flow/shared/dist/hooks/verify-exports.test.d.ts +9 -0
  610. package/v3/@claude-flow/shared/dist/hooks/verify-exports.test.js +93 -0
  611. package/v3/@claude-flow/shared/dist/index.d.ts +20 -0
  612. package/v3/@claude-flow/shared/dist/index.js +50 -0
  613. package/v3/@claude-flow/shared/dist/mcp/connection-pool.d.ts +98 -0
  614. package/v3/@claude-flow/shared/dist/mcp/connection-pool.js +364 -0
  615. package/v3/@claude-flow/shared/dist/mcp/index.d.ts +69 -0
  616. package/v3/@claude-flow/shared/dist/mcp/index.js +84 -0
  617. package/v3/@claude-flow/shared/dist/mcp/server.d.ts +166 -0
  618. package/v3/@claude-flow/shared/dist/mcp/server.js +590 -0
  619. package/v3/@claude-flow/shared/dist/mcp/session-manager.d.ts +136 -0
  620. package/v3/@claude-flow/shared/dist/mcp/session-manager.js +335 -0
  621. package/v3/@claude-flow/shared/dist/mcp/tool-registry.d.ts +178 -0
  622. package/v3/@claude-flow/shared/dist/mcp/tool-registry.js +439 -0
  623. package/v3/@claude-flow/shared/dist/mcp/transport/http.d.ts +104 -0
  624. package/v3/@claude-flow/shared/dist/mcp/transport/http.js +476 -0
  625. package/v3/@claude-flow/shared/dist/mcp/transport/index.d.ts +102 -0
  626. package/v3/@claude-flow/shared/dist/mcp/transport/index.js +238 -0
  627. package/v3/@claude-flow/shared/dist/mcp/transport/stdio.d.ts +104 -0
  628. package/v3/@claude-flow/shared/dist/mcp/transport/stdio.js +263 -0
  629. package/v3/@claude-flow/shared/dist/mcp/transport/websocket.d.ts +133 -0
  630. package/v3/@claude-flow/shared/dist/mcp/transport/websocket.js +396 -0
  631. package/v3/@claude-flow/shared/dist/mcp/types.d.ts +436 -0
  632. package/v3/@claude-flow/shared/dist/mcp/types.js +54 -0
  633. package/v3/@claude-flow/shared/dist/plugin-interface.d.ts +544 -0
  634. package/v3/@claude-flow/shared/dist/plugin-interface.js +23 -0
  635. package/v3/@claude-flow/shared/dist/plugin-loader.d.ts +139 -0
  636. package/v3/@claude-flow/shared/dist/plugin-loader.js +434 -0
  637. package/v3/@claude-flow/shared/dist/plugin-registry.d.ts +183 -0
  638. package/v3/@claude-flow/shared/dist/plugin-registry.js +457 -0
  639. package/v3/@claude-flow/shared/dist/plugins/index.d.ts +10 -0
  640. package/v3/@claude-flow/shared/dist/plugins/index.js +10 -0
  641. package/v3/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.d.ts +106 -0
  642. package/v3/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.js +241 -0
  643. package/v3/@claude-flow/shared/dist/plugins/official/index.d.ts +10 -0
  644. package/v3/@claude-flow/shared/dist/plugins/official/index.js +10 -0
  645. package/v3/@claude-flow/shared/dist/plugins/official/maestro-plugin.d.ts +121 -0
  646. package/v3/@claude-flow/shared/dist/plugins/official/maestro-plugin.js +355 -0
  647. package/v3/@claude-flow/shared/dist/plugins/types.d.ts +93 -0
  648. package/v3/@claude-flow/shared/dist/plugins/types.js +9 -0
  649. package/v3/@claude-flow/shared/dist/resilience/bulkhead.d.ts +105 -0
  650. package/v3/@claude-flow/shared/dist/resilience/bulkhead.js +206 -0
  651. package/v3/@claude-flow/shared/dist/resilience/circuit-breaker.d.ts +132 -0
  652. package/v3/@claude-flow/shared/dist/resilience/circuit-breaker.js +233 -0
  653. package/v3/@claude-flow/shared/dist/resilience/index.d.ts +19 -0
  654. package/v3/@claude-flow/shared/dist/resilience/index.js +19 -0
  655. package/v3/@claude-flow/shared/dist/resilience/rate-limiter.d.ts +168 -0
  656. package/v3/@claude-flow/shared/dist/resilience/rate-limiter.js +314 -0
  657. package/v3/@claude-flow/shared/dist/resilience/retry.d.ts +91 -0
  658. package/v3/@claude-flow/shared/dist/resilience/retry.js +159 -0
  659. package/v3/@claude-flow/shared/dist/security/index.d.ts +10 -0
  660. package/v3/@claude-flow/shared/dist/security/index.js +12 -0
  661. package/v3/@claude-flow/shared/dist/security/input-validation.d.ts +73 -0
  662. package/v3/@claude-flow/shared/dist/security/input-validation.js +201 -0
  663. package/v3/@claude-flow/shared/dist/security/secure-random.d.ts +92 -0
  664. package/v3/@claude-flow/shared/dist/security/secure-random.js +142 -0
  665. package/v3/@claude-flow/shared/dist/services/index.d.ts +7 -0
  666. package/v3/@claude-flow/shared/dist/services/index.js +7 -0
  667. package/v3/@claude-flow/shared/dist/services/v3-progress.service.d.ts +124 -0
  668. package/v3/@claude-flow/shared/dist/services/v3-progress.service.js +402 -0
  669. package/v3/@claude-flow/shared/dist/types/agent.types.d.ts +137 -0
  670. package/v3/@claude-flow/shared/dist/types/agent.types.js +6 -0
  671. package/v3/@claude-flow/shared/dist/types/index.d.ts +11 -0
  672. package/v3/@claude-flow/shared/dist/types/index.js +17 -0
  673. package/v3/@claude-flow/shared/dist/types/mcp.types.d.ts +266 -0
  674. package/v3/@claude-flow/shared/dist/types/mcp.types.js +7 -0
  675. package/v3/@claude-flow/shared/dist/types/memory.types.d.ts +236 -0
  676. package/v3/@claude-flow/shared/dist/types/memory.types.js +7 -0
  677. package/v3/@claude-flow/shared/dist/types/swarm.types.d.ts +186 -0
  678. package/v3/@claude-flow/shared/dist/types/swarm.types.js +65 -0
  679. package/v3/@claude-flow/shared/dist/types/task.types.d.ts +178 -0
  680. package/v3/@claude-flow/shared/dist/types/task.types.js +32 -0
  681. package/v3/@claude-flow/shared/dist/types.d.ts +197 -0
  682. package/v3/@claude-flow/shared/dist/types.js +21 -0
  683. package/v3/@claude-flow/shared/dist/utils/secure-logger.d.ts +69 -0
  684. package/v3/@claude-flow/shared/dist/utils/secure-logger.js +208 -0
  685. package/v3/@claude-flow/shared/package.json +43 -43
  686. package/v3/README.md +493 -493
  687. package/.claude/security-scans/scan-all-standard.json +0 -321
  688. package/.claude/security-scans/scan-code-deep.json +0 -1209
  689. package/.claude/security-scans/scan-deps-full.json +0 -14
@@ -0,0 +1,228 @@
1
+ /**
2
+ * #2661 root-fix — one repository-level supervisor.
3
+ *
4
+ * Ten worktree daemons of the same repository independently deciding "is it
5
+ * time to run audit/optimize/testgaps" every tick is the redundant-scheduler
6
+ * half of the original cardinality bug — the budget ledger and job dedup
7
+ * (global-ai-budget.ts, ai-job-dedup.ts) already bound and dedupe the actual
8
+ * `claude --print` spend, but every daemon still runs its own timer and its
9
+ * own "should I launch" decision. This module elects exactly ONE daemon per
10
+ * repositoryId to own the recurring AI-worker schedule; every other worktree
11
+ * of that repository stays a lease-only participant (workspace-lease.ts) —
12
+ * it keeps running its cheap, $0 local-only workers (map/consolidate/backup)
13
+ * on its own schedule, but does not attempt headless (`claude --print`)
14
+ * execution for its recurring ticks. An explicit `daemon trigger --headless`
15
+ * in a non-supervisor worktree is still honored (still budget/dedup-gated) —
16
+ * this module only governs the unattended recurring schedule.
17
+ *
18
+ * Election is a simple lock-protected takeover, same pattern as
19
+ * global-ai-budget.ts:
20
+ * - No record, a dead PID, or a stale heartbeat (>SUPERVISOR_STALE_MS) →
21
+ * the calling daemon takes over.
22
+ * - A live supervisor with a fresh heartbeat → the calling daemon is not
23
+ * elected; it does nothing (never overwrites a healthy supervisor).
24
+ *
25
+ * The registry lives under the user's home directory so every worktree's
26
+ * daemon can see it:
27
+ *
28
+ * ~/.claude-flow/supervisors/<repositoryId>.json
29
+ */
30
+ import * as fs from 'fs';
31
+ import { join } from 'path';
32
+ import { homedir } from 'os';
33
+ // Longer than any plausible daemon heartbeat interval (daemons renew via the
34
+ // existing 60s lifecycle-monitor tick) so a merely-slow tick never triggers
35
+ // a false takeover, but short enough that a crashed supervisor's worktree
36
+ // yields the schedule within a few minutes rather than indefinitely.
37
+ export const SUPERVISOR_STALE_MS = 3 * 60 * 1000;
38
+ const LOCK_STALE_MS = 10_000;
39
+ function delay(ms) {
40
+ return new Promise((r) => setTimeout(r, ms));
41
+ }
42
+ function isProcessAlive(pid) {
43
+ try {
44
+ process.kill(pid, 0);
45
+ return true;
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
51
+ /** Invariant 9 (#2661): registry files must never be symlinks. */
52
+ function assertNotSymlink(path) {
53
+ try {
54
+ const st = fs.lstatSync(path);
55
+ if (st.isSymbolicLink()) {
56
+ throw new Error(`Repo-supervisor file is a symlink (refusing): ${path}`);
57
+ }
58
+ }
59
+ catch (e) {
60
+ if (e.code === 'ENOENT')
61
+ return;
62
+ throw e;
63
+ }
64
+ }
65
+ export class RepoSupervisorRegistry {
66
+ dir;
67
+ constructor(options) {
68
+ this.dir = options?.baseDir
69
+ ?? process.env.RUFLO_AI_BUDGET_DIR
70
+ ?? join(homedir(), '.claude-flow');
71
+ }
72
+ fileFor(repositoryId) {
73
+ return join(this.dir, 'supervisors', `${repositoryId}.json`);
74
+ }
75
+ ensureDir() {
76
+ const dir = join(this.dir, 'supervisors');
77
+ if (!fs.existsSync(dir))
78
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
79
+ }
80
+ async withLock(repositoryId, fn) {
81
+ this.ensureDir();
82
+ const lockFile = `${this.fileFor(repositoryId)}.lock`;
83
+ const deadline = Date.now() + 2000;
84
+ for (;;) {
85
+ try {
86
+ const fd = fs.openSync(lockFile, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY, 0o600);
87
+ fs.writeSync(fd, String(process.pid));
88
+ fs.closeSync(fd);
89
+ try {
90
+ return fn();
91
+ }
92
+ finally {
93
+ try {
94
+ fs.unlinkSync(lockFile);
95
+ }
96
+ catch { /* already gone */ }
97
+ }
98
+ }
99
+ catch (e) {
100
+ if (e.code !== 'EEXIST')
101
+ throw e;
102
+ try {
103
+ const st = fs.lstatSync(lockFile);
104
+ if (Date.now() - st.mtimeMs > LOCK_STALE_MS) {
105
+ fs.unlinkSync(lockFile);
106
+ continue;
107
+ }
108
+ }
109
+ catch { /* raced — retry */ }
110
+ if (Date.now() > deadline)
111
+ throw new Error('timed out acquiring repo-supervisor lock');
112
+ await delay(25);
113
+ }
114
+ }
115
+ }
116
+ readRecord(repositoryId) {
117
+ const file = this.fileFor(repositoryId);
118
+ assertNotSymlink(file);
119
+ if (!fs.existsSync(file))
120
+ return null;
121
+ try {
122
+ const raw = JSON.parse(fs.readFileSync(file, 'utf-8'));
123
+ if (raw && typeof raw.pid === 'number' && typeof raw.lastHeartbeat === 'number') {
124
+ return raw;
125
+ }
126
+ }
127
+ catch { /* corrupt — treat as absent */ }
128
+ return null;
129
+ }
130
+ writeRecord(repositoryId, record) {
131
+ const file = this.fileFor(repositoryId);
132
+ assertNotSymlink(file);
133
+ const tmp = `${file}.tmp.${process.pid}`;
134
+ fs.writeFileSync(tmp, JSON.stringify(record), { mode: 0o600 });
135
+ fs.renameSync(tmp, file);
136
+ }
137
+ isStale(record, now) {
138
+ return now - record.lastHeartbeat > SUPERVISOR_STALE_MS || !isProcessAlive(record.pid);
139
+ }
140
+ /**
141
+ * Attempt election (or renewal, if this process already holds it). Safe
142
+ * and cheap to call on every daemon tick — a no-op write when nothing
143
+ * needs to change would still cost a lock+read+write, so callers should
144
+ * still throttle to their own heartbeat cadence rather than calling this
145
+ * per-worker-tick.
146
+ */
147
+ async electOrRenew(repositoryId, worktreeRoot) {
148
+ try {
149
+ return await this.withLock(repositoryId, () => {
150
+ const now = Date.now();
151
+ const existing = this.readRecord(repositoryId);
152
+ if (existing && existing.pid === process.pid && existing.worktreeRoot === worktreeRoot) {
153
+ const renewed = { ...existing, lastHeartbeat: now };
154
+ this.writeRecord(repositoryId, renewed);
155
+ return { isSupervisor: true, record: renewed };
156
+ }
157
+ if (!existing || this.isStale(existing, now)) {
158
+ const record = { worktreeRoot, pid: process.pid, electedAt: now, lastHeartbeat: now };
159
+ this.writeRecord(repositoryId, record);
160
+ return { isSupervisor: true, record };
161
+ }
162
+ // A live supervisor already owns this repository — never overwrite it.
163
+ return { isSupervisor: false, record: existing };
164
+ });
165
+ }
166
+ catch {
167
+ // Fail closed on the SCHEDULE side too: if we can't safely coordinate,
168
+ // assume we are NOT the supervisor rather than risk two daemons both
169
+ // believing they own the schedule. The budget ledger is the actual
170
+ // hard invariant either way.
171
+ return { isSupervisor: false, record: null };
172
+ }
173
+ }
174
+ /** Cheap read-only check — does NOT renew or elect. */
175
+ isSupervisor(repositoryId, worktreeRoot) {
176
+ try {
177
+ const existing = this.readRecord(repositoryId);
178
+ if (!existing)
179
+ return false;
180
+ const now = Date.now();
181
+ if (this.isStale(existing, now))
182
+ return false;
183
+ return existing.pid === process.pid && existing.worktreeRoot === worktreeRoot;
184
+ }
185
+ catch {
186
+ return false;
187
+ }
188
+ }
189
+ /** Release supervisor status on graceful shutdown, so the next tick elsewhere can take over promptly. Best-effort. */
190
+ async release(repositoryId, worktreeRoot) {
191
+ try {
192
+ await this.withLock(repositoryId, () => {
193
+ const existing = this.readRecord(repositoryId);
194
+ if (existing && existing.pid === process.pid && existing.worktreeRoot === worktreeRoot) {
195
+ const file = this.fileFor(repositoryId);
196
+ try {
197
+ fs.unlinkSync(file);
198
+ }
199
+ catch { /* already gone */ }
200
+ }
201
+ });
202
+ }
203
+ catch { /* best-effort */ }
204
+ }
205
+ /** Snapshot for `daemon status --all`. Read-only, never mutates. */
206
+ getRecord(repositoryId) {
207
+ try {
208
+ const existing = this.readRecord(repositoryId);
209
+ if (!existing || this.isStale(existing, Date.now()))
210
+ return null;
211
+ return existing;
212
+ }
213
+ catch {
214
+ return null;
215
+ }
216
+ }
217
+ }
218
+ let registryInstance = null;
219
+ export function getRepoSupervisorRegistry() {
220
+ if (!registryInstance)
221
+ registryInstance = new RepoSupervisorRegistry();
222
+ return registryInstance;
223
+ }
224
+ /** Test hook: reset the singleton (e.g. after changing RUFLO_AI_BUDGET_DIR). */
225
+ export function resetRepoSupervisorRegistryForTests() {
226
+ registryInstance = null;
227
+ }
228
+ //# sourceMappingURL=repo-supervisor.js.map
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ADR-091 Phase 1 -- Runtime Capabilities Detection
3
+ *
4
+ * Detects the host environment and exposes which execution primitives are
5
+ * available so that higher-level services can choose the right path:
6
+ * 1. claude-code-native -- full Claude Code tooling (loop, monitor, cron, teams)
7
+ * 2. mcp-fallback -- MCP transport active but native tools missing
8
+ * 3. ci-daemon -- headless / CI, use detached daemon
9
+ */
10
+ export interface RuntimeCapabilities {
11
+ loop: boolean;
12
+ monitor: boolean;
13
+ cron: boolean;
14
+ teams: boolean;
15
+ worktreeIsolation: boolean;
16
+ pushNotification: boolean;
17
+ }
18
+ export type RuntimeTier = 'claude-code-native' | 'mcp-fallback' | 'ci-daemon';
19
+ export declare function detectCapabilities(): RuntimeCapabilities;
20
+ export declare function getRuntimeTier(): RuntimeTier;
21
+ export declare function getCacheWarmDelay(providerCacheTtlSeconds?: number): number;
22
+ //# sourceMappingURL=runtime-capabilities.d.ts.map
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ADR-091 Phase 1 -- Runtime Capabilities Detection
3
+ *
4
+ * Detects the host environment and exposes which execution primitives are
5
+ * available so that higher-level services can choose the right path:
6
+ * 1. claude-code-native -- full Claude Code tooling (loop, monitor, cron, teams)
7
+ * 2. mcp-fallback -- MCP transport active but native tools missing
8
+ * 3. ci-daemon -- headless / CI, use detached daemon
9
+ */
10
+ function isClaudeCodeNative() {
11
+ return !!(process.env.CLAUDE_CODE ||
12
+ process.env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS);
13
+ }
14
+ function isMcpTransportActive() {
15
+ return (!process.stdin.isTTY &&
16
+ process.env.CLAUDE_FLOW_MCP_TRANSPORT === 'stdio');
17
+ }
18
+ function isCiOrHeadless() {
19
+ return !!(process.env.CI || process.env.CLAUDE_FLOW_HEADLESS);
20
+ }
21
+ export function detectCapabilities() {
22
+ const native = isClaudeCodeNative();
23
+ const teamsEnabled = !!process.env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS;
24
+ return {
25
+ loop: native,
26
+ monitor: native,
27
+ cron: native,
28
+ teams: native && teamsEnabled,
29
+ worktreeIsolation: native,
30
+ pushNotification: native,
31
+ };
32
+ }
33
+ export function getRuntimeTier() {
34
+ if (isClaudeCodeNative())
35
+ return 'claude-code-native';
36
+ if (isMcpTransportActive())
37
+ return 'mcp-fallback';
38
+ if (isCiOrHeadless())
39
+ return 'ci-daemon';
40
+ return 'mcp-fallback';
41
+ }
42
+ export function getCacheWarmDelay(providerCacheTtlSeconds) {
43
+ return Math.min(270, (providerCacheTtlSeconds ?? 300) * 0.9);
44
+ }
45
+ //# sourceMappingURL=runtime-capabilities.js.map
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import { EventEmitter } from 'events';
14
14
  import { HeadlessWorkerExecutor } from './headless-worker-executor.js';
15
+ import { type SupervisorRecord } from './repo-supervisor.js';
15
16
  export type WorkerType = 'ultralearn' | 'optimize' | 'consolidate' | 'predict' | 'audit' | 'map' | 'preload' | 'deepdive' | 'document' | 'refactor' | 'benchmark' | 'testgaps' | 'backup' | 'harness';
16
17
  interface WorkerConfig {
17
18
  type: WorkerType;
@@ -45,6 +46,12 @@ interface DaemonStatus {
45
46
  startedAt?: Date;
46
47
  workers: Map<WorkerType, WorkerState>;
47
48
  config: DaemonConfig;
49
+ supervisor?: {
50
+ repositoryId: string;
51
+ isSupervisor: boolean;
52
+ record: SupervisorRecord | null;
53
+ activeLeases: number;
54
+ } | null;
48
55
  }
49
56
  export interface DaemonConfig {
50
57
  autoStart: boolean;
@@ -79,6 +86,8 @@ export declare class WorkerDaemon extends EventEmitter {
79
86
  private headlessAvailable;
80
87
  private headlessInitPromise;
81
88
  private originalConfig?;
89
+ private gitIdentity;
90
+ private lastSupervisorRenewalMs;
82
91
  constructor(projectRoot: string, config?: Partial<DaemonConfig>);
83
92
  /**
84
93
  * Initialize headless executor if Claude Code is available
@@ -264,6 +273,23 @@ export declare class WorkerDaemon extends EventEmitter {
264
273
  * service timers — leaving a zombie that reports stopped but never exits.
265
274
  */
266
275
  private selfShutdown;
276
+ /**
277
+ * #2661 root-fix — heartbeat this worktree's lease and attempt/renew
278
+ * repository-supervisor election. Best-effort: any failure here must
279
+ * never affect worker scheduling correctness (the budget ledger remains
280
+ * the hard invariant regardless of supervisor state) — a daemon that
281
+ * can't safely coordinate simply falls back to "not supervisor" and runs
282
+ * its cheap local-only workers, same as any other lease-only worktree.
283
+ */
284
+ private renewLeaseAndSupervisor;
285
+ /**
286
+ * Cheap read-only check: does THIS daemon currently hold repository
287
+ * supervisor status? Used to gate recurring headless (`claude --print`)
288
+ * execution — see repo-supervisor.ts's module doc comment for the full
289
+ * rationale. Never true when AI workers are disabled or the git identity
290
+ * couldn't be resolved (e.g. a non-git directory).
291
+ */
292
+ private isRepositorySupervisor;
267
293
  /**
268
294
  * Get daemon status
269
295
  */
@@ -22,6 +22,9 @@ import { HeadlessWorkerExecutor, isHeadlessWorker, } from './headless-worker-exe
22
22
  // quick_check-gated, so it's safe to call unconditionally on every tick.
23
23
  import { runDistillation, defaultMemoryDbPath } from './memory-distillation.js';
24
24
  import { backupMemoryDb } from './memory-backup.js';
25
+ import { resolveGitWorkspaceIdentity } from './git-workspace-identity.js';
26
+ import { getWorkspaceLeaseRegistry } from './workspace-lease.js';
27
+ import { getRepoSupervisorRegistry } from './repo-supervisor.js';
25
28
  // Default worker configurations with improved intervals (P0 fix: map 5min -> 15min)
26
29
  const DEFAULT_WORKERS = [
27
30
  { type: 'map', intervalMs: 15 * 60 * 1000, offsetMs: 0, priority: 'normal', description: 'Codebase mapping', enabled: true },
@@ -112,6 +115,11 @@ export class WorkerDaemon extends EventEmitter {
112
115
  // Preserve the original constructor config so we can detect explicit overrides
113
116
  // during state restoration (R1: constructor config takes priority over stale state)
114
117
  originalConfig;
118
+ // #2661 root-fix — resolved once (git identity doesn't change at runtime)
119
+ // and reused for lease heartbeats + supervisor election, both gated on
120
+ // aiWorkersEnabled since they only matter for the recurring AI schedule.
121
+ gitIdentity = null;
122
+ lastSupervisorRenewalMs = 0;
115
123
  constructor(projectRoot, config) {
116
124
  super();
117
125
  this.projectRoot = projectRoot;
@@ -739,6 +747,14 @@ export class WorkerDaemon extends EventEmitter {
739
747
  this.startedAt = new Date();
740
748
  this.writePidFile();
741
749
  this.emit('started', { pid: process.pid, startedAt: this.startedAt });
750
+ // #2661 root-fix — resolve repository identity and register/attempt
751
+ // election immediately at start, not just on the first 60s lifecycle
752
+ // tick, so `daemon status` reflects supervisor state right away. Only
753
+ // meaningful when AI workers are enabled (see field doc comment).
754
+ if (this.config.aiWorkersEnabled) {
755
+ this.gitIdentity = resolveGitWorkspaceIdentity(this.projectRoot);
756
+ void this.renewLeaseAndSupervisor();
757
+ }
742
758
  // Schedule all enabled workers
743
759
  for (const workerConfig of this.config.workers) {
744
760
  if (workerConfig.enabled) {
@@ -867,6 +883,19 @@ export class WorkerDaemon extends EventEmitter {
867
883
  }
868
884
  catch { /* best-effort */ }
869
885
  }
886
+ // #2661 root-fix — release this worktree's lease and, if held,
887
+ // supervisor status, so a sibling worktree's daemon can take over the
888
+ // schedule within its next tick instead of waiting out the 3-minute
889
+ // supervisor staleness window. Best-effort — a graceful release is an
890
+ // optimization; the staleness timeout is what actually bounds a crash.
891
+ if (this.config.aiWorkersEnabled && this.gitIdentity) {
892
+ const { repositoryId, worktreeRoot } = this.gitIdentity;
893
+ try {
894
+ await getRepoSupervisorRegistry().release(repositoryId, worktreeRoot);
895
+ await getWorkspaceLeaseRegistry().release(repositoryId, worktreeRoot);
896
+ }
897
+ catch { /* best-effort */ }
898
+ }
870
899
  this.running = false;
871
900
  this.removePidFile();
872
901
  this.saveState();
@@ -896,6 +925,13 @@ export class WorkerDaemon extends EventEmitter {
896
925
  const reason = this.lifecycleShutdownReason(Date.now());
897
926
  if (reason) {
898
927
  void this.selfShutdown(reason);
928
+ return;
929
+ }
930
+ // #2661 root-fix — renew this worktree's lease + supervisor status on
931
+ // the same cadence. Both windows (15min lease TTL, 3min supervisor
932
+ // staleness) comfortably outlive a single missed 60s tick.
933
+ if (this.config.aiWorkersEnabled) {
934
+ void this.renewLeaseAndSupervisor();
899
935
  }
900
936
  }, CHECK_INTERVAL_MS);
901
937
  if (typeof this.lifecycleTimer.unref === 'function') {
@@ -971,16 +1007,58 @@ export class WorkerDaemon extends EventEmitter {
971
1007
  catch { /* best-effort — we are exiting regardless */ }
972
1008
  process.exit(0);
973
1009
  }
1010
+ /**
1011
+ * #2661 root-fix — heartbeat this worktree's lease and attempt/renew
1012
+ * repository-supervisor election. Best-effort: any failure here must
1013
+ * never affect worker scheduling correctness (the budget ledger remains
1014
+ * the hard invariant regardless of supervisor state) — a daemon that
1015
+ * can't safely coordinate simply falls back to "not supervisor" and runs
1016
+ * its cheap local-only workers, same as any other lease-only worktree.
1017
+ */
1018
+ async renewLeaseAndSupervisor() {
1019
+ if (!this.gitIdentity)
1020
+ return;
1021
+ const { repositoryId, worktreeRoot } = this.gitIdentity;
1022
+ try {
1023
+ await getWorkspaceLeaseRegistry().heartbeat(repositoryId, worktreeRoot);
1024
+ await getRepoSupervisorRegistry().electOrRenew(repositoryId, worktreeRoot);
1025
+ this.lastSupervisorRenewalMs = Date.now();
1026
+ }
1027
+ catch { /* best-effort — see docstring */ }
1028
+ }
1029
+ /**
1030
+ * Cheap read-only check: does THIS daemon currently hold repository
1031
+ * supervisor status? Used to gate recurring headless (`claude --print`)
1032
+ * execution — see repo-supervisor.ts's module doc comment for the full
1033
+ * rationale. Never true when AI workers are disabled or the git identity
1034
+ * couldn't be resolved (e.g. a non-git directory).
1035
+ */
1036
+ isRepositorySupervisor() {
1037
+ if (!this.config.aiWorkersEnabled || !this.gitIdentity)
1038
+ return false;
1039
+ return getRepoSupervisorRegistry().isSupervisor(this.gitIdentity.repositoryId, this.gitIdentity.worktreeRoot);
1040
+ }
974
1041
  /**
975
1042
  * Get daemon status
976
1043
  */
977
1044
  getStatus() {
1045
+ let supervisor = null;
1046
+ if (this.config.aiWorkersEnabled && this.gitIdentity) {
1047
+ const { repositoryId, worktreeRoot } = this.gitIdentity;
1048
+ supervisor = {
1049
+ repositoryId,
1050
+ isSupervisor: getRepoSupervisorRegistry().isSupervisor(repositoryId, worktreeRoot),
1051
+ record: getRepoSupervisorRegistry().getRecord(repositoryId),
1052
+ activeLeases: getWorkspaceLeaseRegistry().listActive(repositoryId).length,
1053
+ };
1054
+ }
978
1055
  return {
979
1056
  running: this.running,
980
1057
  pid: process.pid,
981
1058
  startedAt: this.startedAt,
982
1059
  workers: new Map(this.workers),
983
1060
  config: this.config,
1061
+ supervisor,
984
1062
  };
985
1063
  }
986
1064
  /**
@@ -1038,7 +1116,7 @@ export class WorkerDaemon extends EventEmitter {
1038
1116
  /**
1039
1117
  * Execute a worker with timeout protection
1040
1118
  */
1041
- async executeWorker(workerConfig) {
1119
+ async executeWorker(workerConfig, opts) {
1042
1120
  const state = this.workers.get(workerConfig.type);
1043
1121
  const workerId = `${workerConfig.type}_${Date.now()}`;
1044
1122
  const startTime = Date.now();
@@ -1052,7 +1130,7 @@ export class WorkerDaemon extends EventEmitter {
1052
1130
  try {
1053
1131
  // Execute worker logic with timeout (P1 fix)
1054
1132
  // Pass cleanup callback to kill orphan child processes on timeout (#1117)
1055
- const output = await this.runWithTimeout(() => this.runWorkerLogic(workerConfig), this.config.workerTimeoutMs, `Worker ${workerConfig.type} timed out after ${this.config.workerTimeoutMs / 1000}s`, () => {
1133
+ const output = await this.runWithTimeout(() => this.runWorkerLogic(workerConfig, opts), this.config.workerTimeoutMs, `Worker ${workerConfig.type} timed out after ${this.config.workerTimeoutMs / 1000}s`, () => {
1056
1134
  // On timeout, cancel any headless execution to prevent orphan processes
1057
1135
  if (this.headlessExecutor) {
1058
1136
  this.headlessExecutor.cancelAll();
@@ -1148,12 +1226,21 @@ export class WorkerDaemon extends EventEmitter {
1148
1226
  /**
1149
1227
  * Run the actual worker logic
1150
1228
  */
1151
- async runWorkerLogic(workerConfig) {
1229
+ async runWorkerLogic(workerConfig, opts) {
1152
1230
  // Check if this is a headless worker type and headless execution is available.
1153
1231
  // #2661 — aiWorkersEnabled is re-checked here (not just at init) as
1154
1232
  // defence in depth: no code path may promote a worker to `claude --print`
1155
1233
  // without explicit consent.
1156
- if (this.config.aiWorkersEnabled && isHeadlessWorker(workerConfig.type) && this.headlessAvailable && this.headlessExecutor) {
1234
+ //
1235
+ // #2661 root-fix — the RECURRING schedule additionally requires this
1236
+ // daemon to be the elected repository supervisor (see repo-supervisor.ts):
1237
+ // ten worktree daemons of one repository must not each independently
1238
+ // decide "is it time to run audit" every tick. An explicit
1239
+ // `daemon trigger --headless` (opts.manualTrigger) is still honored
1240
+ // regardless of supervisor status — it's a one-off, user-initiated
1241
+ // action, still budget/dedup-gated the same as any other launch.
1242
+ const supervisorGateOk = opts?.manualTrigger === true || this.isRepositorySupervisor();
1243
+ if (this.config.aiWorkersEnabled && supervisorGateOk && isHeadlessWorker(workerConfig.type) && this.headlessAvailable && this.headlessExecutor) {
1157
1244
  try {
1158
1245
  this.log('info', `Running ${workerConfig.type} in headless mode (Claude Code AI)`);
1159
1246
  const result = await this.headlessExecutor.execute(workerConfig.type);
@@ -1671,7 +1758,10 @@ export class WorkerDaemon extends EventEmitter {
1671
1758
  // use headless correctly. Scheduled fires already wait long enough
1672
1759
  // (timer + offset) that this is a no-op for them.
1673
1760
  await this.headlessInitPromise;
1674
- return this.executeWorker(workerConfig);
1761
+ // #2661 root-fix — an explicit manual trigger bypasses the repository-
1762
+ // supervisor gate (still budget/dedup-gated) — see runWorkerLogic()'s
1763
+ // doc comment.
1764
+ return this.executeWorker(workerConfig, { manualTrigger: true });
1675
1765
  }
1676
1766
  /**
1677
1767
  * Enable/disable a worker
@@ -0,0 +1,55 @@
1
+ /**
2
+ * #2661 root-fix — worktree leases.
3
+ *
4
+ * Registers which worktrees of a repository are currently "alive" (have a
5
+ * running daemon actively heartbeating), independent of whether that
6
+ * worktree's daemon is the elected repository supervisor (see
7
+ * repo-supervisor.ts). A lease expires after 15 minutes without a heartbeat
8
+ * — a removed worktree, or a daemon that crashed without a graceful
9
+ * shutdown, becomes ineligible within one expiry window instead of lingering
10
+ * forever in the registry.
11
+ *
12
+ * The registry lives under the user's home directory (not the workspace) so
13
+ * it is visible to every worktree's daemon, keyed by repositoryId:
14
+ *
15
+ * ~/.claude-flow/leases/<repositoryId>.json
16
+ *
17
+ * This is deliberately a thin, single-purpose registry — repo-supervisor.ts
18
+ * is the piece that actually elects one process to own the recurring AI
19
+ * worker schedule; leases only answer "which worktrees are currently live"
20
+ * for status reporting and future supervisor-dispatched work.
21
+ */
22
+ export declare const LEASE_TTL_MS: number;
23
+ export interface LeaseRecord {
24
+ worktreeRoot: string;
25
+ pid: number;
26
+ registeredAt: number;
27
+ lastHeartbeat: number;
28
+ }
29
+ export declare class WorkspaceLeaseRegistry {
30
+ private readonly dir;
31
+ constructor(options?: {
32
+ baseDir?: string;
33
+ });
34
+ private fileFor;
35
+ private ensureDir;
36
+ private withLock;
37
+ private readFile;
38
+ private writeFile;
39
+ /** Register or renew this process's lease on a worktree. Best-effort. */
40
+ heartbeat(repositoryId: string, worktreeRoot: string): Promise<void>;
41
+ /** Release this worktree's lease on graceful shutdown. Best-effort. */
42
+ release(repositoryId: string, worktreeRoot: string): Promise<void>;
43
+ /**
44
+ * Active leases for a repository — expired (>15 min stale) or dead-PID
45
+ * entries are excluded, not just filtered at read time, so callers never
46
+ * see a worktree that's actually gone.
47
+ */
48
+ listActive(repositoryId: string): LeaseRecord[];
49
+ /** True when the given worktree currently holds a live (non-expired) lease. */
50
+ isLeaseActive(repositoryId: string, worktreeRoot: string): boolean;
51
+ }
52
+ export declare function getWorkspaceLeaseRegistry(): WorkspaceLeaseRegistry;
53
+ /** Test hook: reset the singleton (e.g. after changing RUFLO_AI_BUDGET_DIR). */
54
+ export declare function resetWorkspaceLeaseRegistryForTests(): void;
55
+ //# sourceMappingURL=workspace-lease.d.ts.map