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
@@ -31,6 +31,29 @@ export declare function daemonCommandLineBelongsToWorkspace(commandLine: string,
31
31
  * Returns null for pre-#1914 daemons that never stamped a workspace.
32
32
  */
33
33
  export declare function extractWorkspaceFromDaemonLine(commandLine: string): string | null;
34
+ /**
35
+ * #2661 root-fix — one-time upgrade migration warning. A user who had
36
+ * `aiWorkersEnabled: true` configured BEFORE this fix landed (old config
37
+ * file or RUFLO_DAEMON_AI_WORKERS=1) and already has multiple worktree
38
+ * daemons running is exactly the P0 scenario the issue describes — surface
39
+ * it plainly, ONCE ever (not on every `daemon start`, which would just be
40
+ * noise once the user has seen and acted on it). The supervisor/lease
41
+ * mechanism (task #9) already makes only one of those daemons actually
42
+ * schedule AI workers going forward; this warning's job is purely to make
43
+ * a pre-existing fleet VISIBLE the first time this code runs, not to take
44
+ * any destructive action — nothing here stops or kills another daemon.
45
+ *
46
+ * `opts` exists for tests ONLY, mirroring the injectable-dependency pattern
47
+ * used elsewhere in this codebase (e.g. helper-refresh.ts's
48
+ * sourceDirOverride) — real callers always use the defaults.
49
+ */
50
+ export declare function maybeShowMultiDaemonMigrationWarning(opts?: {
51
+ markerFile?: string;
52
+ fleetScanner?: () => Promise<Array<{
53
+ pid: number;
54
+ workspace: string | null;
55
+ }>>;
56
+ }): Promise<void>;
34
57
  export declare const daemonCommand: Command;
35
58
  export default daemonCommand;
36
59
  //# sourceMappingURL=daemon.d.ts.map
@@ -7,6 +7,7 @@ import { getDaemon, startDaemon, stopDaemon } from '../services/worker-daemon.js
7
7
  import { fork } from 'child_process';
8
8
  import { fileURLToPath } from 'url';
9
9
  import { dirname, join, resolve } from 'path';
10
+ import { homedir } from 'os';
10
11
  import * as fs from 'fs';
11
12
  // Start daemon subcommand
12
13
  const startCommand = {
@@ -580,6 +581,11 @@ async function startBackgroundDaemon(projectRoot, quiet, forwarded = {}) {
580
581
  }
581
582
  }
582
583
  catch { /* best-effort visibility — never fail the start */ }
584
+ // #2661 root-fix — one-time migration warning for a pre-existing
585
+ // multi-daemon fleet that already had AI workers enabled before this
586
+ // fix landed. Separate from the always-shown notice above: this one
587
+ // fires at most once ever, and only for the genuinely risky shape.
588
+ await maybeShowMultiDaemonMigrationWarning();
583
589
  }
584
590
  return { success: true };
585
591
  }
@@ -942,6 +948,68 @@ async function scanRunningDaemons() {
942
948
  return [];
943
949
  }
944
950
  }
951
+ function defaultMultiDaemonWarningMarker() {
952
+ return join(homedir(), '.claude-flow', 'multi-daemon-warning-shown.json');
953
+ }
954
+ /**
955
+ * #2661 root-fix — one-time upgrade migration warning. A user who had
956
+ * `aiWorkersEnabled: true` configured BEFORE this fix landed (old config
957
+ * file or RUFLO_DAEMON_AI_WORKERS=1) and already has multiple worktree
958
+ * daemons running is exactly the P0 scenario the issue describes — surface
959
+ * it plainly, ONCE ever (not on every `daemon start`, which would just be
960
+ * noise once the user has seen and acted on it). The supervisor/lease
961
+ * mechanism (task #9) already makes only one of those daemons actually
962
+ * schedule AI workers going forward; this warning's job is purely to make
963
+ * a pre-existing fleet VISIBLE the first time this code runs, not to take
964
+ * any destructive action — nothing here stops or kills another daemon.
965
+ *
966
+ * `opts` exists for tests ONLY, mirroring the injectable-dependency pattern
967
+ * used elsewhere in this codebase (e.g. helper-refresh.ts's
968
+ * sourceDirOverride) — real callers always use the defaults.
969
+ */
970
+ export async function maybeShowMultiDaemonMigrationWarning(opts) {
971
+ const markerFile = opts?.markerFile ?? defaultMultiDaemonWarningMarker();
972
+ try {
973
+ if (fs.existsSync(markerFile))
974
+ return;
975
+ const fleet = await (opts?.fleetScanner ?? scanRunningDaemons)();
976
+ if (fleet.length <= 1)
977
+ return;
978
+ let anyAiEnabled = false;
979
+ for (const d of fleet) {
980
+ if (!d.workspace)
981
+ continue;
982
+ try {
983
+ const statePath = join(d.workspace, '.claude-flow', 'daemon-state.json');
984
+ if (!fs.existsSync(statePath))
985
+ continue;
986
+ const st = JSON.parse(fs.readFileSync(statePath, 'utf-8'));
987
+ if (st?.config?.aiWorkersEnabled === true) {
988
+ anyAiEnabled = true;
989
+ break;
990
+ }
991
+ }
992
+ catch { /* unreadable state — skip this daemon */ }
993
+ }
994
+ // Only the genuinely risky shape (pre-existing fleet + AI workers
995
+ // enabled somewhere in it) warrants the migration warning. A harmless
996
+ // multi-daemon fleet with AI workers off everywhere already gets the
997
+ // lighter, always-shown fleet-size notice at daemon start.
998
+ if (anyAiEnabled) {
999
+ output.writeln();
1000
+ output.printWarning(`Ruflo found ${fleet.length} worktree daemons. Scheduled AI workers are now supervisor-gated.`);
1001
+ output.printInfo('Inspect: ruflo daemon status --all');
1002
+ output.printInfo('Stop all: ruflo daemon stop --all');
1003
+ output.printInfo('Pause autonomous launches: ruflo daemon budget pause');
1004
+ output.writeln();
1005
+ }
1006
+ const dir = dirname(markerFile);
1007
+ if (!fs.existsSync(dir))
1008
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
1009
+ fs.writeFileSync(markerFile, JSON.stringify({ shownAt: new Date().toISOString(), fleetSize: fleet.length, anyAiEnabled }), { mode: 0o600 });
1010
+ }
1011
+ catch { /* best-effort visibility — never fail the command */ }
1012
+ }
945
1013
  /**
946
1014
  * #2356: render the global `daemon status --all` view. For each running daemon
947
1015
  * it reads that workspace's daemon-state.json to show age + configured TTL,
@@ -1010,6 +1078,39 @@ async function renderAllDaemonsStatus() {
1010
1078
  if (daemons.length > 1) {
1011
1079
  output.printInfo('Stop all daemons across workspaces with: ruflo daemon stop --all');
1012
1080
  }
1081
+ // #2661 root-fix — repository supervisor state, one row per distinct
1082
+ // repository among the scanned daemons' workspaces. Resolving identity
1083
+ // per workspace is cheap (a couple of `git rev-parse` calls, cached).
1084
+ try {
1085
+ const { resolveGitWorkspaceIdentity } = await import('../services/git-workspace-identity.js');
1086
+ const { getRepoSupervisorRegistry } = await import('../services/repo-supervisor.js');
1087
+ const { getWorkspaceLeaseRegistry } = await import('../services/workspace-lease.js');
1088
+ const seenRepos = new Map(); // repositoryId -> a representative workspace path
1089
+ for (const d of daemons) {
1090
+ if (!d.workspace)
1091
+ continue;
1092
+ const identity = resolveGitWorkspaceIdentity(d.workspace);
1093
+ if (identity.isGit && !seenRepos.has(identity.repositoryId)) {
1094
+ seenRepos.set(identity.repositoryId, d.workspace);
1095
+ }
1096
+ }
1097
+ if (seenRepos.size > 0) {
1098
+ const supervisorReg = getRepoSupervisorRegistry();
1099
+ const leaseReg = getWorkspaceLeaseRegistry();
1100
+ const lines = [];
1101
+ for (const [repositoryId, sampleWorkspace] of seenRepos) {
1102
+ const record = supervisorReg.getRecord(repositoryId);
1103
+ const activeLeases = leaseReg.listActive(repositoryId).length;
1104
+ const label = repositoryId.slice(0, 12);
1105
+ lines.push(record
1106
+ ? ` ${label}… supervisor: ${record.worktreeRoot} (pid ${record.pid}) | active leases: ${activeLeases}`
1107
+ : ` ${label}… supervisor: ${output.dim('none elected')} | active leases: ${activeLeases}`);
1108
+ }
1109
+ output.writeln();
1110
+ output.printBox(lines.join('\n'), 'Repository Supervisors (#2661 root-fix)');
1111
+ }
1112
+ }
1113
+ catch { /* supervisor registry unavailable — skip the panel */ }
1013
1114
  // #2661: user-global AI launch usage — the shared budget every daemon
1014
1115
  // draws from, independent of worktree count.
1015
1116
  try {
@@ -1330,33 +1431,33 @@ const installSupervisorCommand = {
1330
1431
  const plistDir = join(home, 'Library', 'LaunchAgents');
1331
1432
  const plistPath = join(plistDir, 'io.ruv.ruflo.daemon.plist');
1332
1433
  const logDir = join(projectRoot, '.claude-flow', 'logs');
1333
- const plist = `<?xml version="1.0" encoding="UTF-8"?>
1334
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
1335
- <plist version="1.0">
1336
- <dict>
1337
- <key>Label</key><string>io.ruv.ruflo.daemon</string>
1338
- <key>ProgramArguments</key>
1339
- <array>
1340
- <string>${nodeBin}</string>
1341
- <string>${cliJs}</string>
1342
- <string>daemon</string><string>start</string><string>--foreground</string><string>--quiet</string>
1343
- </array>
1344
- <key>WorkingDirectory</key><string>${projectRoot}</string>
1345
- <key>RunAtLoad</key><true/>
1346
- <key>KeepAlive</key>
1347
- <dict>
1348
- <key>SuccessfulExit</key><false/>
1349
- <key>Crashed</key><true/>
1350
- </dict>
1351
- <key>ThrottleInterval</key><integer>10</integer>
1352
- <key>StandardOutPath</key><string>${logDir}/supervisor.out.log</string>
1353
- <key>StandardErrorPath</key><string>${logDir}/supervisor.err.log</string>
1354
- <key>EnvironmentVariables</key>
1355
- <dict>
1356
- <key>CLAUDE_FLOW_DAEMON</key><string>1</string>
1357
- </dict>
1358
- </dict>
1359
- </plist>
1434
+ const plist = `<?xml version="1.0" encoding="UTF-8"?>
1435
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
1436
+ <plist version="1.0">
1437
+ <dict>
1438
+ <key>Label</key><string>io.ruv.ruflo.daemon</string>
1439
+ <key>ProgramArguments</key>
1440
+ <array>
1441
+ <string>${nodeBin}</string>
1442
+ <string>${cliJs}</string>
1443
+ <string>daemon</string><string>start</string><string>--foreground</string><string>--quiet</string>
1444
+ </array>
1445
+ <key>WorkingDirectory</key><string>${projectRoot}</string>
1446
+ <key>RunAtLoad</key><true/>
1447
+ <key>KeepAlive</key>
1448
+ <dict>
1449
+ <key>SuccessfulExit</key><false/>
1450
+ <key>Crashed</key><true/>
1451
+ </dict>
1452
+ <key>ThrottleInterval</key><integer>10</integer>
1453
+ <key>StandardOutPath</key><string>${logDir}/supervisor.out.log</string>
1454
+ <key>StandardErrorPath</key><string>${logDir}/supervisor.err.log</string>
1455
+ <key>EnvironmentVariables</key>
1456
+ <dict>
1457
+ <key>CLAUDE_FLOW_DAEMON</key><string>1</string>
1458
+ </dict>
1459
+ </dict>
1460
+ </plist>
1360
1461
  `;
1361
1462
  if (dryRun) {
1362
1463
  output.writeln(plist);
@@ -1397,23 +1498,23 @@ const installSupervisorCommand = {
1397
1498
  // Linux: systemd-user
1398
1499
  const unitDir = join(home, '.config', 'systemd', 'user');
1399
1500
  const unitPath = join(unitDir, 'ruflo-daemon.service');
1400
- const unit = `[Unit]
1401
- Description=RuFlo background worker daemon
1402
- After=default.target
1403
-
1404
- [Service]
1405
- Type=simple
1406
- WorkingDirectory=${projectRoot}
1407
- Environment=CLAUDE_FLOW_DAEMON=1
1408
- ExecStart=${nodeBin} ${cliJs} daemon start --foreground --quiet
1409
- Restart=on-failure
1410
- RestartSec=10
1411
- # Restart on Crashed (signal) too
1412
- StartLimitIntervalSec=300
1413
- StartLimitBurst=5
1414
-
1415
- [Install]
1416
- WantedBy=default.target
1501
+ const unit = `[Unit]
1502
+ Description=RuFlo background worker daemon
1503
+ After=default.target
1504
+
1505
+ [Service]
1506
+ Type=simple
1507
+ WorkingDirectory=${projectRoot}
1508
+ Environment=CLAUDE_FLOW_DAEMON=1
1509
+ ExecStart=${nodeBin} ${cliJs} daemon start --foreground --quiet
1510
+ Restart=on-failure
1511
+ RestartSec=10
1512
+ # Restart on Crashed (signal) too
1513
+ StartLimitIntervalSec=300
1514
+ StartLimitBurst=5
1515
+
1516
+ [Install]
1517
+ WantedBy=default.target
1417
1518
  `;
1418
1519
  if (dryRun) {
1419
1520
  output.writeln(unit);
@@ -1496,6 +1597,76 @@ const uninstallSupervisorCommand = {
1496
1597
  return { success: false, exitCode: 1 };
1497
1598
  },
1498
1599
  };
1600
+ // #2661 root-fix — `daemon budget show|pause|resume`. The budget state was
1601
+ // previously visible only inline in `daemon status --all`; these give it an
1602
+ // independently scriptable surface (e.g. `ruflo daemon budget pause` before
1603
+ // a long interactive session, `... resume` after).
1604
+ const budgetShowCommand = {
1605
+ name: 'show',
1606
+ description: 'Show the user-global AI launch budget (launches, active children, circuit-breaker state)',
1607
+ options: [],
1608
+ examples: [{ command: 'claude-flow daemon budget show', description: 'Show current budget usage and limits' }],
1609
+ action: async () => {
1610
+ const { getGlobalAiBudget } = await import('../services/global-ai-budget.js');
1611
+ const budget = getGlobalAiBudget();
1612
+ const usage = budget.getUsage();
1613
+ const limits = budget.getLimits();
1614
+ output.writeln();
1615
+ const byWs = usage.byWorkspace.slice(0, 10).map((w) => ` ${w.launches}× ${w.workspace}`);
1616
+ output.printBox([
1617
+ `Launches (last hour): ${usage.lastHour}/${limits.maxLaunchesPerHour}`,
1618
+ `Launches (last 24h): ${usage.lastDay}/${limits.maxLaunchesPerDay}`,
1619
+ `Active Claude children: ${usage.active}/${limits.maxConcurrentGlobal}`,
1620
+ usage.pausedUntil
1621
+ ? output.warning(`PAUSED until ${new Date(usage.pausedUntil).toISOString()} (${usage.pauseReason ?? 'quota error'})`)
1622
+ : `Circuit breaker: ${output.dim('closed (normal)')}`,
1623
+ ...(byWs.length > 0 ? ['Launches by workspace (24h):', ...byWs] : []),
1624
+ ].join('\n'), 'Global AI Budget');
1625
+ return { success: true, data: { usage, limits } };
1626
+ },
1627
+ };
1628
+ const budgetPauseCommand = {
1629
+ name: 'pause',
1630
+ description: 'Pause ALL autonomous Claude launches across every daemon until resumed',
1631
+ options: [
1632
+ { name: 'reason', short: 'r', type: 'string', description: 'Optional reason recorded in the pause receipt' },
1633
+ ],
1634
+ examples: [{ command: 'claude-flow daemon budget pause --reason "conserving quota for a demo"', description: 'Pause autonomous launches' }],
1635
+ action: async (ctx) => {
1636
+ const { getGlobalAiBudget } = await import('../services/global-ai-budget.js');
1637
+ await getGlobalAiBudget().pause(ctx.flags.reason);
1638
+ output.printSuccess('Autonomous AI worker launches paused across all daemons. Resume with: ruflo daemon budget resume');
1639
+ return { success: true };
1640
+ },
1641
+ };
1642
+ const budgetResumeCommand = {
1643
+ name: 'resume',
1644
+ description: 'Resume autonomous Claude launches (clears a manual pause or a quota-triggered circuit-breaker pause)',
1645
+ options: [],
1646
+ examples: [{ command: 'claude-flow daemon budget resume', description: 'Resume autonomous launches' }],
1647
+ action: async () => {
1648
+ const { getGlobalAiBudget } = await import('../services/global-ai-budget.js');
1649
+ await getGlobalAiBudget().resume();
1650
+ output.printSuccess('Autonomous AI worker launches resumed.');
1651
+ return { success: true };
1652
+ },
1653
+ };
1654
+ const budgetCommand = {
1655
+ name: 'budget',
1656
+ description: 'Inspect and control the user-global AI launch budget (#2661)',
1657
+ subcommands: [budgetShowCommand, budgetPauseCommand, budgetResumeCommand],
1658
+ options: [],
1659
+ examples: [
1660
+ { command: 'claude-flow daemon budget show', description: 'Show current usage/limits' },
1661
+ { command: 'claude-flow daemon budget pause', description: 'Pause all autonomous launches' },
1662
+ { command: 'claude-flow daemon budget resume', description: 'Resume autonomous launches' },
1663
+ ],
1664
+ // Bare `daemon budget` (no subcommand) shows usage — same as `show`.
1665
+ action: async (ctx) => {
1666
+ const result = await budgetShowCommand.action(ctx);
1667
+ return result ?? { success: true };
1668
+ },
1669
+ };
1499
1670
  // Main daemon command
1500
1671
  export const daemonCommand = {
1501
1672
  name: 'daemon',
@@ -1506,6 +1677,7 @@ export const daemonCommand = {
1506
1677
  statusCommand,
1507
1678
  triggerCommand,
1508
1679
  enableCommand,
1680
+ budgetCommand,
1509
1681
  installSupervisorCommand,
1510
1682
  uninstallSupervisorCommand,
1511
1683
  ],
@@ -147,13 +147,13 @@ const searchCommand = {
147
147
  // Get all entries with embeddings from database
148
148
  // Parameterized query to prevent SQL injection (CRIT-01)
149
149
  const embeddingSql = namespace !== 'all'
150
- ? `SELECT id, key, namespace, content, embedding, embedding_dimensions
151
- FROM memory_entries
152
- WHERE status = 'active' AND embedding IS NOT NULL AND namespace = ?
150
+ ? `SELECT id, key, namespace, content, embedding, embedding_dimensions
151
+ FROM memory_entries
152
+ WHERE status = 'active' AND embedding IS NOT NULL AND namespace = ?
153
153
  LIMIT 1000`
154
- : `SELECT id, key, namespace, content, embedding, embedding_dimensions
155
- FROM memory_entries
156
- WHERE status = 'active' AND embedding IS NOT NULL
154
+ : `SELECT id, key, namespace, content, embedding, embedding_dimensions
155
+ FROM memory_entries
156
+ WHERE status = 'active' AND embedding IS NOT NULL
157
157
  LIMIT 1000`;
158
158
  const embeddingStmt = db.prepare(embeddingSql);
159
159
  if (namespace !== 'all') {
@@ -192,16 +192,16 @@ const searchCommand = {
192
192
  const likePattern = `%${query}%`;
193
193
  const remainingLimit = Math.max(0, limit - results.length);
194
194
  const keywordSql = namespace !== 'all'
195
- ? `SELECT id, key, namespace, content
196
- FROM memory_entries
197
- WHERE status = 'active'
198
- AND (content LIKE ? OR key LIKE ?)
199
- AND namespace = ?
195
+ ? `SELECT id, key, namespace, content
196
+ FROM memory_entries
197
+ WHERE status = 'active'
198
+ AND (content LIKE ? OR key LIKE ?)
199
+ AND namespace = ?
200
200
  LIMIT ?`
201
- : `SELECT id, key, namespace, content
202
- FROM memory_entries
203
- WHERE status = 'active'
204
- AND (content LIKE ? OR key LIKE ?)
201
+ : `SELECT id, key, namespace, content
202
+ FROM memory_entries
203
+ WHERE status = 'active'
204
+ AND (content LIKE ? OR key LIKE ?)
205
205
  LIMIT ?`;
206
206
  const keywordStmt = db.prepare(keywordSql);
207
207
  if (namespace !== 'all') {
@@ -408,17 +408,17 @@ const collectionsCommand = {
408
408
  const fileBuffer = fs.readFileSync(fullDbPath);
409
409
  const db = new SQL.Database(fileBuffer);
410
410
  // Get collection stats from database
411
- const statsQuery = db.exec(`
412
- SELECT
413
- namespace,
414
- COUNT(*) as total_entries,
415
- SUM(CASE WHEN embedding IS NOT NULL THEN 1 ELSE 0 END) as with_embeddings,
416
- AVG(embedding_dimensions) as avg_dimensions,
417
- SUM(LENGTH(content)) as total_content_size
418
- FROM memory_entries
419
- WHERE status = 'active'
420
- GROUP BY namespace
421
- ORDER BY total_entries DESC
411
+ const statsQuery = db.exec(`
412
+ SELECT
413
+ namespace,
414
+ COUNT(*) as total_entries,
415
+ SUM(CASE WHEN embedding IS NOT NULL THEN 1 ELSE 0 END) as with_embeddings,
416
+ AVG(embedding_dimensions) as avg_dimensions,
417
+ SUM(LENGTH(content)) as total_content_size
418
+ FROM memory_entries
419
+ WHERE status = 'active'
420
+ GROUP BY namespace
421
+ ORDER BY total_entries DESC
422
422
  `);
423
423
  // Get vector index info
424
424
  const indexQuery = db.exec(`SELECT name, dimensions, hnsw_m FROM vector_indexes`);
@@ -5,6 +5,8 @@
5
5
  * funnel status effective state and which precedence source decided it
6
6
  * funnel disable user-level opt-out (all surfaces) + delete funnel data
7
7
  * funnel enable re-enable at the user tier (cannot override env/enterprise)
8
+ * funnel accept acknowledge the disclosure so rotation starts immediately
9
+ * funnel open open the currently-shown promo URL in the default browser
8
10
  * funnel id print the pseudonymous funnel ID, if one exists
9
11
  */
10
12
  import type { Command } from '../types.js';
@@ -5,10 +5,16 @@
5
5
  * funnel status effective state and which precedence source decided it
6
6
  * funnel disable user-level opt-out (all surfaces) + delete funnel data
7
7
  * funnel enable re-enable at the user tier (cannot override env/enterprise)
8
+ * funnel accept acknowledge the disclosure so rotation starts immediately
9
+ * funnel open open the currently-shown promo URL in the default browser
8
10
  * funnel id print the pseudonymous funnel ID, if one exists
9
11
  */
12
+ import { execFile } from 'node:child_process';
13
+ import * as fs from 'node:fs';
14
+ import * as os from 'node:os';
15
+ import * as path from 'node:path';
10
16
  import { output } from '../output.js';
11
- import { deleteFunnelData, funnelStateDir, getDisclosure, getFunnelId, readConsents, recordDisclosureDeclined, recordDisclosureReenabled, resolveFunnelEnabled, } from '../funnel/index.js';
17
+ import { deleteFunnelData, funnelStateDir, getDisclosure, getFunnelId, promoEligible, readConsents, recordDisclosureAccepted, recordDisclosureDeclined, recordDisclosureReenabled, resolveFunnelEnabled, } from '../funnel/index.js';
12
18
  import { readStateJson, writeStateJson } from '../funnel/state.js';
13
19
  function setUserConfigEnabled(enabled) {
14
20
  const cfg = readStateJson('funnel.json') ?? {};
@@ -75,6 +81,106 @@ const enableSub = {
75
81
  return { success: true, data: decision };
76
82
  },
77
83
  };
84
+ const acceptSub = {
85
+ name: 'accept',
86
+ description: 'Acknowledge the disclosure so rotation starts immediately (skips the 24h grace window)',
87
+ action: async () => {
88
+ const decision = resolveFunnelEnabled();
89
+ if (!decision.enabled) {
90
+ output.printWarning(`Funnel is currently disabled by: ${decision.decidedBy}. Run 'ruflo funnel enable' first, then re-run accept.`);
91
+ return { success: false, data: decision };
92
+ }
93
+ const current = getDisclosure();
94
+ if (current.state === 'disclosed_disabled') {
95
+ output.printWarning("Disclosure is in a declined state. Run 'ruflo funnel enable' first, then re-run accept.");
96
+ return { success: false, data: current };
97
+ }
98
+ const rec = recordDisclosureAccepted();
99
+ const eligible = promoEligible();
100
+ output.printSuccess(`Disclosure accepted (firstShownAt backdated to ${rec.firstShownAt}). Promo rotation eligible: ${eligible}.`);
101
+ return { success: true, data: { record: rec, eligible } };
102
+ },
103
+ };
104
+ // Reads the memoized promo written by the statusline renderer. Same file
105
+ // path as .claude/helpers/statusline.cjs's PROMO_MEMO_FILE — kept in sync
106
+ // by convention. Returns null on any error so a broken memo can't crash
107
+ // the subcommand.
108
+ function readCurrentPromo() {
109
+ try {
110
+ const memoPath = path.join(os.homedir(), '.ruflo', 'statusline-promo.json');
111
+ const raw = JSON.parse(fs.readFileSync(memoPath, 'utf-8'));
112
+ if (raw && raw.promo && typeof raw.promo === 'object')
113
+ return raw.promo;
114
+ }
115
+ catch { /* memo absent or corrupt — treat as "nothing shown yet" */ }
116
+ return null;
117
+ }
118
+ // Allowlist mirrors the OSC 8 hyperlink allowlist in the statusline renderer.
119
+ // Never open a URL whose host isn't on this list, even if a corrupted memo
120
+ // somehow lands one there — the memo is user-writable so we must not treat
121
+ // it as trusted. Kept in sync with .claude/helpers/statusline.cjs's
122
+ // PROMO_LINK_HOSTS.
123
+ const OPEN_ALLOWED_HOSTS = new Set([
124
+ 'cognitum.one', 'www.cognitum.one', 'docs.cognitum.one',
125
+ 'agentics.org', 'www.agentics.org',
126
+ 'funnel.ruv.io',
127
+ 'cognitum-analytics-63rzcdswba-uc.a.run.app',
128
+ ]);
129
+ // Open a URL using the platform's default browser handler. execFile (not
130
+ // exec) — no shell involved, so nothing in the URL can be interpreted as a
131
+ // shell command even in the pathological case where allowlisting is
132
+ // bypassed. Runs detached + hidden so no cmd window flashes on Windows.
133
+ function openInBrowser(url) {
134
+ return new Promise((resolve, reject) => {
135
+ const platform = process.platform;
136
+ const [cmd, args] = platform === 'win32'
137
+ // "start" needs an empty title argument first, else the first quoted
138
+ // arg becomes the title and the URL is ignored. cmd /c is required to
139
+ // invoke the built-in start command.
140
+ ? ['cmd', ['/c', 'start', '""', url]]
141
+ : platform === 'darwin'
142
+ ? ['open', [url]]
143
+ : ['xdg-open', [url]];
144
+ execFile(cmd, args, { windowsHide: true }, (err) => (err ? reject(err) : resolve()));
145
+ });
146
+ }
147
+ const openSub = {
148
+ name: 'open',
149
+ description: 'Open the currently-shown statusline promo URL in the default browser',
150
+ action: async () => {
151
+ const promo = readCurrentPromo();
152
+ if (!promo) {
153
+ output.printWarning("No promo has been shown yet. Wait for the statusline to render one, then re-run 'ruflo funnel open'.");
154
+ return { success: false };
155
+ }
156
+ if (!promo.url) {
157
+ output.printWarning(`Current promo (kind=${promo.kind ?? 'unknown'}) has no URL. Nothing to open: "${promo.text}"`);
158
+ return { success: false, data: promo };
159
+ }
160
+ let parsed;
161
+ try {
162
+ parsed = new URL(promo.url);
163
+ }
164
+ catch {
165
+ output.printError(`Promo URL is malformed: ${promo.url}`);
166
+ return { success: false, data: promo };
167
+ }
168
+ if (parsed.protocol !== 'https:' || !OPEN_ALLOWED_HOSTS.has(parsed.hostname)) {
169
+ output.printError(`Refusing to open URL — not on the allowlist: ${parsed.protocol}//${parsed.hostname}`);
170
+ return { success: false, data: { url: promo.url } };
171
+ }
172
+ try {
173
+ await openInBrowser(parsed.href);
174
+ output.printSuccess(`Opened: ${parsed.href}`);
175
+ return { success: true, data: { url: parsed.href } };
176
+ }
177
+ catch (err) {
178
+ output.printError(`Failed to open URL: ${err instanceof Error ? err.message : String(err)}`);
179
+ output.writeln(`URL for manual copy: ${parsed.href}`);
180
+ return { success: false, data: { url: parsed.href } };
181
+ }
182
+ },
183
+ };
78
184
  const idSub = {
79
185
  name: 'id',
80
186
  description: 'Print the pseudonymous funnel ID (exists only with telemetry consent)',
@@ -92,9 +198,11 @@ const idSub = {
92
198
  export const funnelCommand = {
93
199
  name: 'funnel',
94
200
  description: 'Control the Cognitum lifecycle funnel surfaces (tips, enrollment, notices)',
95
- subcommands: [statusSub, disableSub, enableSub, idSub],
201
+ subcommands: [statusSub, disableSub, enableSub, acceptSub, openSub, idSub],
96
202
  examples: [
97
203
  { command: 'ruflo funnel status', description: 'Effective state + deciding source' },
204
+ { command: 'ruflo funnel accept', description: 'Skip the 24h grace so rotation starts now' },
205
+ { command: 'ruflo funnel open', description: 'Open the current promo URL in the browser' },
98
206
  { command: 'ruflo funnel disable', description: 'Turn off every funnel surface' },
99
207
  ],
100
208
  action: statusSub.action,