@claude-flow/cli 3.28.0 → 3.30.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 (465) hide show
  1. package/.claude/agents/analysis/analyze-code-quality.md +178 -178
  2. package/.claude/agents/analysis/code-analyzer.md +209 -209
  3. package/.claude/agents/analysis/code-review/analyze-code-quality.md +178 -178
  4. package/.claude/agents/architecture/arch-system-design.md +156 -156
  5. package/.claude/agents/architecture/system-design/arch-system-design.md +154 -154
  6. package/.claude/agents/browser/browser-agent.yaml +182 -182
  7. package/.claude/agents/consensus/byzantine-coordinator.md +62 -62
  8. package/.claude/agents/consensus/crdt-synchronizer.md +996 -996
  9. package/.claude/agents/consensus/gossip-coordinator.md +62 -62
  10. package/.claude/agents/consensus/performance-benchmarker.md +850 -850
  11. package/.claude/agents/consensus/quorum-manager.md +822 -822
  12. package/.claude/agents/consensus/raft-manager.md +62 -62
  13. package/.claude/agents/consensus/security-manager.md +621 -621
  14. package/.claude/agents/core/planner.md +374 -374
  15. package/.claude/agents/custom/test-long-runner.md +44 -44
  16. package/.claude/agents/data/data-ml-model.md +444 -444
  17. package/.claude/agents/data/ml/data-ml-model.md +192 -192
  18. package/.claude/agents/development/backend/dev-backend-api.md +141 -141
  19. package/.claude/agents/development/dev-backend-api.md +344 -344
  20. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +163 -163
  21. package/.claude/agents/devops/ops-cicd-github.md +164 -164
  22. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +173 -173
  23. package/.claude/agents/documentation/docs-api-openapi.md +354 -354
  24. package/.claude/agents/flow-nexus/app-store.md +87 -87
  25. package/.claude/agents/flow-nexus/authentication.md +68 -68
  26. package/.claude/agents/flow-nexus/challenges.md +80 -80
  27. package/.claude/agents/flow-nexus/neural-network.md +87 -87
  28. package/.claude/agents/flow-nexus/payments.md +82 -82
  29. package/.claude/agents/flow-nexus/sandbox.md +75 -75
  30. package/.claude/agents/flow-nexus/swarm.md +75 -75
  31. package/.claude/agents/flow-nexus/user-tools.md +95 -95
  32. package/.claude/agents/flow-nexus/workflow.md +83 -83
  33. package/.claude/agents/github/code-review-swarm.md +377 -377
  34. package/.claude/agents/github/github-modes.md +172 -172
  35. package/.claude/agents/github/issue-tracker.md +575 -575
  36. package/.claude/agents/github/multi-repo-swarm.md +552 -552
  37. package/.claude/agents/github/pr-manager.md +437 -437
  38. package/.claude/agents/github/project-board-sync.md +508 -508
  39. package/.claude/agents/github/release-manager.md +604 -604
  40. package/.claude/agents/github/release-swarm.md +582 -582
  41. package/.claude/agents/github/repo-architect.md +397 -397
  42. package/.claude/agents/github/swarm-issue.md +572 -572
  43. package/.claude/agents/github/swarm-pr.md +427 -427
  44. package/.claude/agents/github/sync-coordinator.md +451 -451
  45. package/.claude/agents/github/workflow-automation.md +902 -902
  46. package/.claude/agents/goal/agent.md +815 -815
  47. package/.claude/agents/optimization/benchmark-suite.md +664 -664
  48. package/.claude/agents/optimization/load-balancer.md +430 -430
  49. package/.claude/agents/optimization/performance-monitor.md +671 -671
  50. package/.claude/agents/optimization/resource-allocator.md +673 -673
  51. package/.claude/agents/optimization/topology-optimizer.md +807 -807
  52. package/.claude/agents/payments/agentic-payments.md +126 -126
  53. package/.claude/agents/sona/sona-learning-optimizer.md +74 -74
  54. package/.claude/agents/sparc/architecture.md +698 -698
  55. package/.claude/agents/sparc/pseudocode.md +519 -519
  56. package/.claude/agents/sparc/refinement.md +801 -801
  57. package/.claude/agents/sparc/specification.md +477 -477
  58. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +224 -224
  59. package/.claude/agents/specialized/spec-mobile-react-native.md +226 -226
  60. package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
  61. package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
  62. package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
  63. package/.claude/agents/sublinear/performance-optimizer.md +367 -367
  64. package/.claude/agents/sublinear/trading-predictor.md +245 -245
  65. package/.claude/agents/swarm/adaptive-coordinator.md +1126 -1126
  66. package/.claude/agents/swarm/hierarchical-coordinator.md +709 -709
  67. package/.claude/agents/swarm/mesh-coordinator.md +962 -962
  68. package/.claude/agents/templates/automation-smart-agent.md +204 -204
  69. package/.claude/agents/templates/base-template-generator.md +289 -289
  70. package/.claude/agents/templates/coordinator-swarm-init.md +89 -89
  71. package/.claude/agents/templates/github-pr-manager.md +176 -176
  72. package/.claude/agents/templates/implementer-sparc-coder.md +258 -258
  73. package/.claude/agents/templates/memory-coordinator.md +186 -186
  74. package/.claude/agents/templates/orchestrator-task.md +138 -138
  75. package/.claude/agents/templates/performance-analyzer.md +198 -198
  76. package/.claude/agents/templates/sparc-coordinator.md +513 -513
  77. package/.claude/agents/testing/production-validator.md +394 -394
  78. package/.claude/agents/testing/tdd-london-swarm.md +243 -243
  79. package/.claude/agents/v3/aidefence-guardian.md +282 -282
  80. package/.claude/agents/v3/claims-authorizer.md +208 -208
  81. package/.claude/agents/v3/collective-intelligence-coordinator.md +993 -993
  82. package/.claude/agents/v3/ddd-domain-expert.md +220 -220
  83. package/.claude/agents/v3/injection-analyst.md +236 -236
  84. package/.claude/agents/v3/performance-engineer.md +1233 -1233
  85. package/.claude/agents/v3/pii-detector.md +151 -151
  86. package/.claude/agents/v3/reasoningbank-learner.md +213 -213
  87. package/.claude/agents/v3/security-architect-aidefence.md +410 -410
  88. package/.claude/agents/v3/security-architect.md +867 -867
  89. package/.claude/agents/v3/swarm-memory-manager.md +157 -157
  90. package/.claude/agents/v3/v3-integration-architect.md +205 -205
  91. package/.claude/commands/agents/README.md +50 -50
  92. package/.claude/commands/agents/agent-capabilities.md +140 -140
  93. package/.claude/commands/agents/agent-coordination.md +28 -28
  94. package/.claude/commands/agents/agent-spawning.md +28 -28
  95. package/.claude/commands/agents/agent-types.md +216 -216
  96. package/.claude/commands/agents/health.md +139 -139
  97. package/.claude/commands/agents/list.md +100 -100
  98. package/.claude/commands/agents/logs.md +130 -130
  99. package/.claude/commands/agents/metrics.md +122 -122
  100. package/.claude/commands/agents/pool.md +127 -127
  101. package/.claude/commands/agents/spawn.md +140 -140
  102. package/.claude/commands/agents/status.md +115 -115
  103. package/.claude/commands/agents/stop.md +102 -102
  104. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
  105. package/.claude/commands/analysis/README.md +9 -9
  106. package/.claude/commands/analysis/bottleneck-detect.md +162 -162
  107. package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
  108. package/.claude/commands/analysis/performance-report.md +25 -25
  109. package/.claude/commands/analysis/token-efficiency.md +44 -44
  110. package/.claude/commands/analysis/token-usage.md +25 -25
  111. package/.claude/commands/automation/README.md +9 -9
  112. package/.claude/commands/automation/auto-agent.md +122 -122
  113. package/.claude/commands/automation/self-healing.md +105 -105
  114. package/.claude/commands/automation/session-memory.md +89 -89
  115. package/.claude/commands/automation/smart-agents.md +72 -72
  116. package/.claude/commands/automation/smart-spawn.md +25 -25
  117. package/.claude/commands/automation/workflow-select.md +25 -25
  118. package/.claude/commands/claude-flow-help.md +103 -103
  119. package/.claude/commands/claude-flow-memory.md +107 -107
  120. package/.claude/commands/claude-flow-swarm.md +205 -205
  121. package/.claude/commands/coordination/README.md +9 -9
  122. package/.claude/commands/coordination/agent-spawn.md +25 -25
  123. package/.claude/commands/coordination/init.md +44 -44
  124. package/.claude/commands/coordination/orchestrate.md +43 -43
  125. package/.claude/commands/coordination/spawn.md +45 -45
  126. package/.claude/commands/coordination/swarm-init.md +85 -85
  127. package/.claude/commands/coordination/task-orchestrate.md +25 -25
  128. package/.claude/commands/github/README.md +11 -11
  129. package/.claude/commands/github/code-review-swarm.md +513 -513
  130. package/.claude/commands/github/code-review.md +25 -25
  131. package/.claude/commands/github/github-modes.md +146 -146
  132. package/.claude/commands/github/github-swarm.md +121 -121
  133. package/.claude/commands/github/issue-tracker.md +291 -291
  134. package/.claude/commands/github/issue-triage.md +25 -25
  135. package/.claude/commands/github/multi-repo-swarm.md +518 -518
  136. package/.claude/commands/github/pr-enhance.md +26 -26
  137. package/.claude/commands/github/pr-manager.md +169 -169
  138. package/.claude/commands/github/project-board-sync.md +470 -470
  139. package/.claude/commands/github/release-manager.md +339 -339
  140. package/.claude/commands/github/release-swarm.md +543 -543
  141. package/.claude/commands/github/repo-analyze.md +25 -25
  142. package/.claude/commands/github/repo-architect.md +366 -366
  143. package/.claude/commands/github/swarm-issue.md +484 -484
  144. package/.claude/commands/github/swarm-pr.md +287 -287
  145. package/.claude/commands/github/sync-coordinator.md +302 -302
  146. package/.claude/commands/github/workflow-automation.md +441 -441
  147. package/.claude/commands/hive-mind/README.md +17 -17
  148. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
  149. package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
  150. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
  151. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
  152. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
  153. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
  154. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
  155. package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
  156. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
  157. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
  158. package/.claude/commands/hive-mind/hive-mind.md +27 -27
  159. package/.claude/commands/hooks/README.md +11 -11
  160. package/.claude/commands/hooks/overview.md +57 -57
  161. package/.claude/commands/hooks/post-edit.md +117 -117
  162. package/.claude/commands/hooks/post-task.md +112 -112
  163. package/.claude/commands/hooks/pre-edit.md +113 -113
  164. package/.claude/commands/hooks/pre-task.md +111 -111
  165. package/.claude/commands/hooks/session-end.md +118 -118
  166. package/.claude/commands/hooks/setup.md +102 -102
  167. package/.claude/commands/memory/README.md +9 -9
  168. package/.claude/commands/memory/memory-persist.md +25 -25
  169. package/.claude/commands/memory/memory-search.md +25 -25
  170. package/.claude/commands/memory/memory-usage.md +25 -25
  171. package/.claude/commands/memory/neural.md +47 -47
  172. package/.claude/commands/monitoring/README.md +9 -9
  173. package/.claude/commands/monitoring/agent-metrics.md +25 -25
  174. package/.claude/commands/monitoring/agents.md +44 -44
  175. package/.claude/commands/monitoring/real-time-view.md +25 -25
  176. package/.claude/commands/monitoring/status.md +46 -46
  177. package/.claude/commands/monitoring/swarm-monitor.md +25 -25
  178. package/.claude/commands/optimization/README.md +9 -9
  179. package/.claude/commands/optimization/auto-topology.md +61 -61
  180. package/.claude/commands/optimization/cache-manage.md +25 -25
  181. package/.claude/commands/optimization/parallel-execute.md +25 -25
  182. package/.claude/commands/optimization/parallel-execution.md +49 -49
  183. package/.claude/commands/optimization/topology-optimize.md +25 -25
  184. package/.claude/commands/pair/README.md +260 -260
  185. package/.claude/commands/pair/commands.md +545 -545
  186. package/.claude/commands/pair/config.md +509 -509
  187. package/.claude/commands/pair/examples.md +511 -511
  188. package/.claude/commands/pair/modes.md +347 -347
  189. package/.claude/commands/pair/session.md +406 -406
  190. package/.claude/commands/pair/start.md +208 -208
  191. package/.claude/commands/sparc/analyzer.md +51 -51
  192. package/.claude/commands/sparc/architect.md +53 -53
  193. package/.claude/commands/sparc/ask.md +97 -97
  194. package/.claude/commands/sparc/batch-executor.md +54 -54
  195. package/.claude/commands/sparc/code.md +89 -89
  196. package/.claude/commands/sparc/coder.md +54 -54
  197. package/.claude/commands/sparc/debug.md +83 -83
  198. package/.claude/commands/sparc/debugger.md +54 -54
  199. package/.claude/commands/sparc/designer.md +53 -53
  200. package/.claude/commands/sparc/devops.md +109 -109
  201. package/.claude/commands/sparc/docs-writer.md +80 -80
  202. package/.claude/commands/sparc/documenter.md +54 -54
  203. package/.claude/commands/sparc/innovator.md +54 -54
  204. package/.claude/commands/sparc/integration.md +83 -83
  205. package/.claude/commands/sparc/mcp.md +117 -117
  206. package/.claude/commands/sparc/memory-manager.md +54 -54
  207. package/.claude/commands/sparc/optimizer.md +54 -54
  208. package/.claude/commands/sparc/orchestrator.md +131 -131
  209. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
  210. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
  211. package/.claude/commands/sparc/researcher.md +54 -54
  212. package/.claude/commands/sparc/reviewer.md +54 -54
  213. package/.claude/commands/sparc/security-review.md +80 -80
  214. package/.claude/commands/sparc/sparc-modes.md +174 -174
  215. package/.claude/commands/sparc/sparc.md +111 -111
  216. package/.claude/commands/sparc/spec-pseudocode.md +80 -80
  217. package/.claude/commands/sparc/supabase-admin.md +348 -348
  218. package/.claude/commands/sparc/swarm-coordinator.md +54 -54
  219. package/.claude/commands/sparc/tdd.md +54 -54
  220. package/.claude/commands/sparc/tester.md +54 -54
  221. package/.claude/commands/sparc/tutorial.md +79 -79
  222. package/.claude/commands/sparc/workflow-manager.md +54 -54
  223. package/.claude/commands/sparc.md +166 -166
  224. package/.claude/commands/stream-chain/pipeline.md +120 -120
  225. package/.claude/commands/stream-chain/run.md +69 -69
  226. package/.claude/commands/swarm/README.md +15 -15
  227. package/.claude/commands/swarm/analysis.md +95 -95
  228. package/.claude/commands/swarm/development.md +96 -96
  229. package/.claude/commands/swarm/examples.md +168 -168
  230. package/.claude/commands/swarm/maintenance.md +102 -102
  231. package/.claude/commands/swarm/optimization.md +117 -117
  232. package/.claude/commands/swarm/research.md +136 -136
  233. package/.claude/commands/swarm/swarm-analysis.md +8 -8
  234. package/.claude/commands/swarm/swarm-background.md +8 -8
  235. package/.claude/commands/swarm/swarm-init.md +19 -19
  236. package/.claude/commands/swarm/swarm-modes.md +8 -8
  237. package/.claude/commands/swarm/swarm-monitor.md +8 -8
  238. package/.claude/commands/swarm/swarm-spawn.md +19 -19
  239. package/.claude/commands/swarm/swarm-status.md +8 -8
  240. package/.claude/commands/swarm/swarm-strategies.md +8 -8
  241. package/.claude/commands/swarm/swarm.md +87 -87
  242. package/.claude/commands/swarm/testing.md +131 -131
  243. package/.claude/commands/training/README.md +9 -9
  244. package/.claude/commands/training/model-update.md +25 -25
  245. package/.claude/commands/training/neural-patterns.md +107 -107
  246. package/.claude/commands/training/neural-train.md +75 -75
  247. package/.claude/commands/training/pattern-learn.md +25 -25
  248. package/.claude/commands/training/specialization.md +62 -62
  249. package/.claude/commands/truth/start.md +142 -142
  250. package/.claude/commands/verify/check.md +49 -49
  251. package/.claude/commands/verify/start.md +127 -127
  252. package/.claude/commands/workflows/README.md +9 -9
  253. package/.claude/commands/workflows/development.md +77 -77
  254. package/.claude/commands/workflows/research.md +62 -62
  255. package/.claude/commands/workflows/workflow-create.md +25 -25
  256. package/.claude/commands/workflows/workflow-execute.md +25 -25
  257. package/.claude/commands/workflows/workflow-export.md +25 -25
  258. package/.claude/eval/human-relevance-frozen-v1.json +17 -17
  259. package/.claude/evolve-proof/generation-0.json +211 -211
  260. package/.claude/evolve-proof/real-generation-0.json +406 -406
  261. package/.claude/evolve-proof/real-generation-1.json +406 -406
  262. package/.claude/helpers/.helpers-version +1 -1
  263. package/.claude/helpers/README.md +96 -96
  264. package/.claude/helpers/adr-compliance.sh +186 -186
  265. package/.claude/helpers/auto-commit.sh +178 -178
  266. package/.claude/helpers/auto-memory-hook.mjs +430 -430
  267. package/.claude/helpers/checkpoint-manager.sh +251 -251
  268. package/.claude/helpers/daemon-manager.sh +252 -252
  269. package/.claude/helpers/ddd-tracker.sh +144 -144
  270. package/.claude/helpers/github-safe.js +156 -156
  271. package/.claude/helpers/github-setup.sh +45 -45
  272. package/.claude/helpers/guidance-hook.sh +13 -13
  273. package/.claude/helpers/guidance-hooks.sh +102 -102
  274. package/.claude/helpers/health-monitor.sh +108 -108
  275. package/.claude/helpers/helpers.manifest.json +6 -6
  276. package/.claude/helpers/hook-handler.cjs +564 -460
  277. package/.claude/helpers/intelligence.cjs +1058 -1058
  278. package/.claude/helpers/learning-hooks.sh +329 -329
  279. package/.claude/helpers/learning-optimizer.sh +127 -127
  280. package/.claude/helpers/learning-service.mjs +1144 -1144
  281. package/.claude/helpers/memory.js +83 -83
  282. package/.claude/helpers/metrics-db.mjs +503 -503
  283. package/.claude/helpers/pattern-consolidator.sh +86 -86
  284. package/.claude/helpers/perf-worker.sh +160 -160
  285. package/.claude/helpers/post-commit +16 -16
  286. package/.claude/helpers/pre-commit +26 -26
  287. package/.claude/helpers/quick-start.sh +19 -19
  288. package/.claude/helpers/router.js +105 -105
  289. package/.claude/helpers/security-scanner.sh +127 -127
  290. package/.claude/helpers/session.js +157 -157
  291. package/.claude/helpers/setup-mcp.sh +18 -18
  292. package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
  293. package/.claude/helpers/statusline-hook.sh +21 -21
  294. package/.claude/helpers/statusline.cjs +925 -925
  295. package/.claude/helpers/statusline.js +352 -352
  296. package/.claude/helpers/swarm-comms.sh +353 -353
  297. package/.claude/helpers/swarm-hooks.sh +761 -761
  298. package/.claude/helpers/swarm-monitor.sh +210 -210
  299. package/.claude/helpers/sync-v3-metrics.sh +245 -245
  300. package/.claude/helpers/update-v3-progress.sh +165 -165
  301. package/.claude/helpers/v3-quick-status.sh +57 -57
  302. package/.claude/helpers/v3.sh +110 -110
  303. package/.claude/helpers/validate-v3-config.sh +215 -215
  304. package/.claude/helpers/worker-manager.sh +170 -170
  305. package/.claude/proven-config.json +1 -1
  306. package/.claude/proven-config.manifest.json +37 -37
  307. package/.claude/proven-config.signed.json +41 -41
  308. package/.claude/settings.json +182 -182
  309. package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
  310. package/.claude/skills/agentdb-learning/SKILL.md +545 -545
  311. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
  312. package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
  313. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
  314. package/.claude/skills/browser/SKILL.md +204 -204
  315. package/.claude/skills/dual-mode/README.md +71 -71
  316. package/.claude/skills/dual-mode/dual-collect.md +103 -103
  317. package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
  318. package/.claude/skills/dual-mode/dual-spawn.md +81 -81
  319. package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
  320. package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
  321. package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
  322. package/.claude/skills/github-code-review/SKILL.md +1125 -1125
  323. package/.claude/skills/github-multi-repo/SKILL.md +862 -862
  324. package/.claude/skills/github-project-management/SKILL.md +1262 -1262
  325. package/.claude/skills/github-release-management/SKILL.md +1064 -1064
  326. package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
  327. package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
  328. package/.claude/skills/pair-programming/SKILL.md +1202 -1202
  329. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
  330. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
  331. package/.claude/skills/skill-builder/SKILL.md +910 -910
  332. package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
  333. package/.claude/skills/stream-chain/SKILL.md +560 -560
  334. package/.claude/skills/swarm-advanced/SKILL.md +970 -970
  335. package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
  336. package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
  337. package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
  338. package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
  339. package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
  340. package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
  341. package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
  342. package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
  343. package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
  344. package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
  345. package/.claude/skills/verification-quality/SKILL.md +691 -691
  346. package/README.md +419 -419
  347. package/bin/cli.js +314 -314
  348. package/bin/mcp-server.js +224 -224
  349. package/bin/preinstall.cjs +2 -2
  350. package/catalog-manifest.json +2 -2
  351. package/dist/src/benchmarks/gaia-critic.js +24 -24
  352. package/dist/src/business-pods/bbs-budget-tracker.js +53 -53
  353. package/dist/src/commands/announcements.d.ts +17 -0
  354. package/dist/src/commands/announcements.js +0 -0
  355. package/dist/src/commands/completions.js +409 -409
  356. package/dist/src/commands/daemon.js +44 -44
  357. package/dist/src/commands/embeddings.js +26 -26
  358. package/dist/src/commands/funnel.d.ts +10 -5
  359. package/dist/src/commands/funnel.js +206 -7
  360. package/dist/src/commands/hive-mind.js +97 -97
  361. package/dist/src/commands/hooks.js +9 -9
  362. package/dist/src/commands/index.js +4 -0
  363. package/dist/src/commands/init.js +94 -38
  364. package/dist/src/commands/memory.js +85 -1
  365. package/dist/src/commands/ruvector/backup.js +23 -23
  366. package/dist/src/commands/ruvector/benchmark.js +31 -31
  367. package/dist/src/commands/ruvector/import.js +14 -14
  368. package/dist/src/commands/ruvector/init.js +115 -115
  369. package/dist/src/commands/ruvector/migrate.js +99 -99
  370. package/dist/src/commands/ruvector/optimize.js +51 -51
  371. package/dist/src/commands/ruvector/setup.js +624 -624
  372. package/dist/src/commands/ruvector/status.js +38 -38
  373. package/dist/src/commands/spinner.d.ts +16 -0
  374. package/dist/src/commands/spinner.js +329 -0
  375. package/dist/src/config/proven-config.js +2 -2
  376. package/dist/src/funnel/consent.js +3 -0
  377. package/dist/src/funnel/disclosure.d.ts +1 -0
  378. package/dist/src/funnel/disclosure.js +12 -0
  379. package/dist/src/funnel/index.d.ts +2 -1
  380. package/dist/src/funnel/index.js +2 -1
  381. package/dist/src/funnel/payout.d.ts +40 -0
  382. package/dist/src/funnel/payout.js +60 -0
  383. package/dist/src/funnel/types.d.ts +13 -1
  384. package/dist/src/init/claudemd-generator.js +231 -231
  385. package/dist/src/init/executor.js +453 -453
  386. package/dist/src/init/helper-refresh.js +17 -0
  387. package/dist/src/init/helper-signing.d.ts +8 -1
  388. package/dist/src/init/helper-signing.js +9 -2
  389. package/dist/src/init/helpers-generator.js +751 -751
  390. package/dist/src/init/statusline-generator.js +955 -949
  391. package/dist/src/mcp-tools/agentdb-tools.js +15 -15
  392. package/dist/src/mcp-tools/browser-intent-tools.js +19 -19
  393. package/dist/src/memory/graph-edge-writer.js +22 -22
  394. package/dist/src/memory/memory-bridge.d.ts +10 -0
  395. package/dist/src/memory/memory-bridge.js +139 -88
  396. package/dist/src/memory/memory-initializer.d.ts +18 -0
  397. package/dist/src/memory/memory-initializer.js +539 -407
  398. package/dist/src/memory/rabitq-index.js +5 -5
  399. package/dist/src/runtime/headless.js +28 -28
  400. package/dist/src/ruvector/flash-attention.d.ts +195 -0
  401. package/dist/src/ruvector/flash-attention.js +643 -0
  402. package/dist/src/ruvector/moe-router.d.ts +206 -0
  403. package/dist/src/ruvector/moe-router.js +626 -0
  404. package/dist/src/services/distill-tuning.js +7 -7
  405. package/dist/src/services/event-stream.d.ts +25 -0
  406. package/dist/src/services/event-stream.js +27 -0
  407. package/dist/src/services/headless-worker-executor.js +84 -84
  408. package/dist/src/services/loop-worker-runner.d.ts +16 -0
  409. package/dist/src/services/loop-worker-runner.js +34 -0
  410. package/dist/src/services/memory-distillation.js +4 -4
  411. package/dist/src/services/runtime-capabilities.d.ts +22 -0
  412. package/dist/src/services/runtime-capabilities.js +45 -0
  413. package/dist/src/transfer/deploy-seraphine.js +23 -23
  414. package/package.json +134 -133
  415. package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +32 -32
  416. package/plugins/ruflo-metaharness/README.md +72 -72
  417. package/plugins/ruflo-metaharness/agents/metaharness-architect.md +58 -58
  418. package/plugins/ruflo-metaharness/commands/ruflo-metaharness.md +48 -48
  419. package/plugins/ruflo-metaharness/scripts/_darwin.mjs +210 -210
  420. package/plugins/ruflo-metaharness/scripts/_harness.mjs +330 -330
  421. package/plugins/ruflo-metaharness/scripts/_invoke.mjs +231 -231
  422. package/plugins/ruflo-metaharness/scripts/_redblue.mjs +143 -143
  423. package/plugins/ruflo-metaharness/scripts/_similarity.mjs +161 -161
  424. package/plugins/ruflo-metaharness/scripts/_spike-similarity.mjs +223 -223
  425. package/plugins/ruflo-metaharness/scripts/audit-list.mjs +158 -158
  426. package/plugins/ruflo-metaharness/scripts/audit-trend.mjs +272 -272
  427. package/plugins/ruflo-metaharness/scripts/bench-parse-mcp-scan.mjs +146 -146
  428. package/plugins/ruflo-metaharness/scripts/bench-recordpair-overhead.mjs +186 -186
  429. package/plugins/ruflo-metaharness/scripts/bench-similarity.mjs +177 -177
  430. package/plugins/ruflo-metaharness/scripts/bench.mjs +95 -95
  431. package/plugins/ruflo-metaharness/scripts/drift-from-history.mjs +363 -363
  432. package/plugins/ruflo-metaharness/scripts/evolve.mjs +404 -404
  433. package/plugins/ruflo-metaharness/scripts/genome.mjs +80 -80
  434. package/plugins/ruflo-metaharness/scripts/gepa.mjs +153 -153
  435. package/plugins/ruflo-metaharness/scripts/learn.mjs +127 -127
  436. package/plugins/ruflo-metaharness/scripts/mcp-scan.mjs +111 -111
  437. package/plugins/ruflo-metaharness/scripts/mint.mjs +126 -126
  438. package/plugins/ruflo-metaharness/scripts/oia-audit.mjs +228 -228
  439. package/plugins/ruflo-metaharness/scripts/redblue.mjs +286 -286
  440. package/plugins/ruflo-metaharness/scripts/router-parallel-analyze.mjs +250 -250
  441. package/plugins/ruflo-metaharness/scripts/score.mjs +92 -92
  442. package/plugins/ruflo-metaharness/scripts/security-bench.mjs +174 -174
  443. package/plugins/ruflo-metaharness/scripts/similarity.mjs +158 -158
  444. package/plugins/ruflo-metaharness/scripts/smoke.sh +2353 -2353
  445. package/plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs +165 -165
  446. package/plugins/ruflo-metaharness/scripts/test-mcp-tools.mjs +472 -472
  447. package/plugins/ruflo-metaharness/scripts/test-parallel-pipeline.mjs +204 -204
  448. package/plugins/ruflo-metaharness/scripts/test-pipeline-roundtrip.mjs +586 -586
  449. package/plugins/ruflo-metaharness/scripts/test-similarity.mjs +334 -334
  450. package/plugins/ruflo-metaharness/scripts/test-with-openrouter.mjs +229 -229
  451. package/plugins/ruflo-metaharness/scripts/threat-model.mjs +59 -59
  452. package/plugins/ruflo-metaharness/skills/harness-bench/SKILL.md +64 -64
  453. package/plugins/ruflo-metaharness/skills/harness-drift-from-history/SKILL.md +65 -65
  454. package/plugins/ruflo-metaharness/skills/harness-evolve/SKILL.md +131 -131
  455. package/plugins/ruflo-metaharness/skills/harness-genome/SKILL.md +54 -54
  456. package/plugins/ruflo-metaharness/skills/harness-gepa/SKILL.md +65 -65
  457. package/plugins/ruflo-metaharness/skills/harness-learn/SKILL.md +65 -65
  458. package/plugins/ruflo-metaharness/skills/harness-mcp-scan/SKILL.md +49 -49
  459. package/plugins/ruflo-metaharness/skills/harness-mint/SKILL.md +72 -72
  460. package/plugins/ruflo-metaharness/skills/harness-oia-audit/SKILL.md +79 -79
  461. package/plugins/ruflo-metaharness/skills/harness-score/SKILL.md +66 -66
  462. package/plugins/ruflo-metaharness/skills/harness-security-bench/SKILL.md +101 -101
  463. package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +67 -67
  464. package/plugins/ruflo-metaharness/skills/harness-threat-model/SKILL.md +41 -41
  465. package/scripts/postinstall.cjs +153 -153
@@ -1431,33 +1431,33 @@ const installSupervisorCommand = {
1431
1431
  const plistDir = join(home, 'Library', 'LaunchAgents');
1432
1432
  const plistPath = join(plistDir, 'io.ruv.ruflo.daemon.plist');
1433
1433
  const logDir = join(projectRoot, '.claude-flow', 'logs');
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>
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>
1461
1461
  `;
1462
1462
  if (dryRun) {
1463
1463
  output.writeln(plist);
@@ -1498,23 +1498,23 @@ const installSupervisorCommand = {
1498
1498
  // Linux: systemd-user
1499
1499
  const unitDir = join(home, '.config', 'systemd', 'user');
1500
1500
  const unitPath = join(unitDir, 'ruflo-daemon.service');
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
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
1518
1518
  `;
1519
1519
  if (dryRun) {
1520
1520
  output.writeln(unit);
@@ -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`);
@@ -1,11 +1,16 @@
1
1
  /**
2
2
  * `ruflo funnel` — user control surface for the Cognitum lifecycle funnel
3
- * (ADR-301/305/309).
3
+ * (ADR-301/305/309/317).
4
4
  *
5
- * funnel status effective state and which precedence source decided it
6
- * funnel disable user-level opt-out (all surfaces) + delete funnel data
7
- * funnel enable re-enable at the user tier (cannot override env/enterprise)
8
- * funnel id print the pseudonymous funnel ID, if one exists
5
+ * funnel status effective state and which precedence source decided it
6
+ * funnel disable user-level opt-out (all surfaces) + delete funnel data
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
10
+ * funnel enroll opt in to the 50/50 revenue share on Cognitum sponsor spend (ADR-317)
11
+ * funnel earnings show accrued and paid revenue-share balance
12
+ * funnel unenroll revoke local enrollment (funnel itself stays enabled)
13
+ * funnel id print the pseudonymous funnel ID, if one exists
9
14
  */
10
15
  import type { Command } from '../types.js';
11
16
  export declare const funnelCommand: Command;
@@ -1,14 +1,24 @@
1
1
  /**
2
2
  * `ruflo funnel` — user control surface for the Cognitum lifecycle funnel
3
- * (ADR-301/305/309).
3
+ * (ADR-301/305/309/317).
4
4
  *
5
- * funnel status effective state and which precedence source decided it
6
- * funnel disable user-level opt-out (all surfaces) + delete funnel data
7
- * funnel enable re-enable at the user tier (cannot override env/enterprise)
8
- * funnel id print the pseudonymous funnel ID, if one exists
5
+ * funnel status effective state and which precedence source decided it
6
+ * funnel disable user-level opt-out (all surfaces) + delete funnel data
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
10
+ * funnel enroll opt in to the 50/50 revenue share on Cognitum sponsor spend (ADR-317)
11
+ * funnel earnings show accrued and paid revenue-share balance
12
+ * funnel unenroll revoke local enrollment (funnel itself stays enabled)
13
+ * funnel id print the pseudonymous funnel ID, if one exists
9
14
  */
15
+ import { execFile } from 'node:child_process';
16
+ import * as fs from 'node:fs';
17
+ import * as os from 'node:os';
18
+ import * as path from 'node:path';
10
19
  import { output } from '../output.js';
11
- import { deleteFunnelData, funnelStateDir, getDisclosure, getFunnelId, readConsents, recordDisclosureDeclined, recordDisclosureReenabled, resolveFunnelEnabled, } from '../funnel/index.js';
20
+ import { deleteEnrollment, deleteFunnelData, funnelStateDir, getDisclosure, getEnrollment, getFunnelId, isEarningEligible, promoEligible, readConsents, recordDisclosureAccepted, recordDisclosureDeclined, recordDisclosureReenabled, resolveFunnelEnabled, } from '../funnel/index.js';
21
+ import { hasConsent, recordConsent } from '../funnel/consent.js';
12
22
  import { readStateJson, writeStateJson } from '../funnel/state.js';
13
23
  function setUserConfigEnabled(enabled) {
14
24
  const cfg = readStateJson('funnel.json') ?? {};
@@ -75,6 +85,191 @@ const enableSub = {
75
85
  return { success: true, data: decision };
76
86
  },
77
87
  };
88
+ const acceptSub = {
89
+ name: 'accept',
90
+ description: 'Acknowledge the disclosure so rotation starts immediately (skips the 24h grace window)',
91
+ action: async () => {
92
+ const decision = resolveFunnelEnabled();
93
+ if (!decision.enabled) {
94
+ output.printWarning(`Funnel is currently disabled by: ${decision.decidedBy}. Run 'ruflo funnel enable' first, then re-run accept.`);
95
+ return { success: false, data: decision };
96
+ }
97
+ const current = getDisclosure();
98
+ if (current.state === 'disclosed_disabled') {
99
+ output.printWarning("Disclosure is in a declined state. Run 'ruflo funnel enable' first, then re-run accept.");
100
+ return { success: false, data: current };
101
+ }
102
+ const rec = recordDisclosureAccepted();
103
+ const eligible = promoEligible();
104
+ output.printSuccess(`Disclosure accepted (firstShownAt backdated to ${rec.firstShownAt}). Promo rotation eligible: ${eligible}.`);
105
+ return { success: true, data: { record: rec, eligible } };
106
+ },
107
+ };
108
+ // Reads the memoized promo written by the statusline renderer. Same file
109
+ // path as .claude/helpers/statusline.cjs's PROMO_MEMO_FILE — kept in sync
110
+ // by convention. Returns null on any error so a broken memo can't crash
111
+ // the subcommand.
112
+ function readCurrentPromo() {
113
+ try {
114
+ const memoPath = path.join(os.homedir(), '.ruflo', 'statusline-promo.json');
115
+ const raw = JSON.parse(fs.readFileSync(memoPath, 'utf-8'));
116
+ if (raw && raw.promo && typeof raw.promo === 'object')
117
+ return raw.promo;
118
+ }
119
+ catch { /* memo absent or corrupt — treat as "nothing shown yet" */ }
120
+ return null;
121
+ }
122
+ // Allowlist mirrors the OSC 8 hyperlink allowlist in the statusline renderer.
123
+ // Never open a URL whose host isn't on this list, even if a corrupted memo
124
+ // somehow lands one there — the memo is user-writable so we must not treat
125
+ // it as trusted. Kept in sync with .claude/helpers/statusline.cjs's
126
+ // PROMO_LINK_HOSTS.
127
+ const OPEN_ALLOWED_HOSTS = new Set([
128
+ 'cognitum.one', 'www.cognitum.one', 'docs.cognitum.one',
129
+ 'agentics.org', 'www.agentics.org',
130
+ 'funnel.ruv.io',
131
+ 'cognitum-analytics-63rzcdswba-uc.a.run.app',
132
+ ]);
133
+ // Open a URL using the platform's default browser handler. execFile (not
134
+ // exec) — no shell involved, so nothing in the URL can be interpreted as a
135
+ // shell command even in the pathological case where allowlisting is
136
+ // bypassed. Runs detached + hidden so no cmd window flashes on Windows.
137
+ function openInBrowser(url) {
138
+ return new Promise((resolve, reject) => {
139
+ const platform = process.platform;
140
+ const [cmd, args] = platform === 'win32'
141
+ // "start" needs an empty title argument first, else the first quoted
142
+ // arg becomes the title and the URL is ignored. cmd /c is required to
143
+ // invoke the built-in start command.
144
+ ? ['cmd', ['/c', 'start', '""', url]]
145
+ : platform === 'darwin'
146
+ ? ['open', [url]]
147
+ : ['xdg-open', [url]];
148
+ execFile(cmd, args, { windowsHide: true }, (err) => (err ? reject(err) : resolve()));
149
+ });
150
+ }
151
+ const openSub = {
152
+ name: 'open',
153
+ description: 'Open the currently-shown statusline promo URL in the default browser',
154
+ action: async () => {
155
+ const promo = readCurrentPromo();
156
+ if (!promo) {
157
+ output.printWarning("No promo has been shown yet. Wait for the statusline to render one, then re-run 'ruflo funnel open'.");
158
+ return { success: false };
159
+ }
160
+ if (!promo.url) {
161
+ output.printWarning(`Current promo (kind=${promo.kind ?? 'unknown'}) has no URL. Nothing to open: "${promo.text}"`);
162
+ return { success: false, data: promo };
163
+ }
164
+ let parsed;
165
+ try {
166
+ parsed = new URL(promo.url);
167
+ }
168
+ catch {
169
+ output.printError(`Promo URL is malformed: ${promo.url}`);
170
+ return { success: false, data: promo };
171
+ }
172
+ if (parsed.protocol !== 'https:' || !OPEN_ALLOWED_HOSTS.has(parsed.hostname)) {
173
+ output.printError(`Refusing to open URL — not on the allowlist: ${parsed.protocol}//${parsed.hostname}`);
174
+ return { success: false, data: { url: promo.url } };
175
+ }
176
+ try {
177
+ await openInBrowser(parsed.href);
178
+ output.printSuccess(`Opened: ${parsed.href}`);
179
+ return { success: true, data: { url: parsed.href } };
180
+ }
181
+ catch (err) {
182
+ output.printError(`Failed to open URL: ${err instanceof Error ? err.message : String(err)}`);
183
+ output.writeln(`URL for manual copy: ${parsed.href}`);
184
+ return { success: false, data: { url: parsed.href } };
185
+ }
186
+ },
187
+ };
188
+ // ─── ADR-317: developer revenue-share subcommands ─────────────────────────
189
+ const ENROLL_URL = 'https://funnel.ruv.io/enroll';
190
+ const enrollSub = {
191
+ name: 'enroll',
192
+ description: 'Opt in to the 50/50 revenue share on Cognitum sponsor spend (ADR-317, Phase 0)',
193
+ action: async () => {
194
+ const decision = resolveFunnelEnabled();
195
+ if (!decision.enabled) {
196
+ output.printWarning(`Funnel is currently disabled by: ${decision.decidedBy}. Enable it (ruflo funnel enable) before enrolling — there's nothing to earn from until the funnel is on.`);
197
+ return { success: false, data: decision };
198
+ }
199
+ const disclosure = getDisclosure();
200
+ if (disclosure.state !== 'disclosed_enabled') {
201
+ output.printWarning("The Cognitum disclosure hasn't been shown/accepted yet. Run 'ruflo funnel accept' first, then re-run enroll.");
202
+ return { success: false, data: disclosure };
203
+ }
204
+ // Phase 0: record local consent so downstream attribution knows the user
205
+ // WANTS to enroll, but the backend endpoint that returns a real token is
206
+ // not live yet — this ADR ships in a version before the payout backend.
207
+ recordConsent('rev-share-payout', true, 'cli-funnel-enroll');
208
+ output.writeln('Consent recorded for rev-share-payout.');
209
+ output.writeln('');
210
+ output.writeln('The backend enrollment endpoint (Stripe Connect + KYC) is not yet live.');
211
+ output.writeln('When it ships, this command will open your browser to:');
212
+ output.writeln('');
213
+ output.writeln(` ${ENROLL_URL}`);
214
+ output.writeln('');
215
+ output.writeln("Meanwhile, your consent is on file. Track the rollout at ADR-317 (v3/docs/adr/).");
216
+ return { success: true, data: { consent: 'granted', enrollment: 'pending-backend' } };
217
+ },
218
+ };
219
+ const earningsSub = {
220
+ name: 'earnings',
221
+ description: 'Show accrued and paid revenue-share balance (ADR-317)',
222
+ options: [
223
+ { name: 'json', description: 'Output as JSON', type: 'boolean', default: false },
224
+ ],
225
+ action: async (ctx) => {
226
+ const consented = hasConsent('rev-share-payout');
227
+ const rec = getEnrollment();
228
+ const eligible = isEarningEligible();
229
+ const summary = {
230
+ consent: consented ? 'granted' : 'not-granted',
231
+ enrollment: rec ? { kyc_status: rec.kyc_status, enrolled_at: rec.enrolled_at, payout_account_last4: rec.payout_account_last4 } : null,
232
+ earning_eligible: eligible,
233
+ note: rec
234
+ ? 'Earnings endpoint (funnel.ruv.io/v1/earnings) is not yet live — see ADR-317 Phase 1.'
235
+ : 'Not enrolled. Run `ruflo funnel enroll` to opt in.',
236
+ };
237
+ if (ctx.flags.json) {
238
+ output.printJson(summary);
239
+ }
240
+ else {
241
+ output.writeln(`Consent: ${summary.consent}`);
242
+ output.writeln(`Enrolled: ${rec ? 'yes' : 'no'}`);
243
+ if (rec) {
244
+ output.writeln(` KYC: ${rec.kyc_status}`);
245
+ output.writeln(` Payout account: ****${rec.payout_account_last4}`);
246
+ output.writeln(` Since: ${rec.enrolled_at}`);
247
+ }
248
+ output.writeln(`Earning: ${eligible ? 'yes' : 'no'}`);
249
+ output.writeln('');
250
+ output.writeln(summary.note);
251
+ }
252
+ return { success: true, data: summary };
253
+ },
254
+ };
255
+ const unenrollSub = {
256
+ name: 'unenroll',
257
+ description: 'Revoke rev-share enrollment locally (funnel itself stays enabled)',
258
+ action: async () => {
259
+ const hadEnrollment = !!getEnrollment();
260
+ const hadConsent = hasConsent('rev-share-payout');
261
+ recordConsent('rev-share-payout', false, 'cli-funnel-unenroll');
262
+ deleteEnrollment();
263
+ if (hadEnrollment || hadConsent) {
264
+ output.printSuccess('Unenrolled locally. Funnel messages still render; your install just no longer earns.');
265
+ output.writeln('Note: server-side revocation happens on next contact with funnel.ruv.io — the backend endpoint is not yet live (ADR-317 Phase 1).');
266
+ }
267
+ else {
268
+ output.writeln('Nothing to unenroll — no local enrollment record and no rev-share consent was set.');
269
+ }
270
+ return { success: true, data: { previouslyEnrolled: hadEnrollment, previouslyConsented: hadConsent } };
271
+ },
272
+ };
78
273
  const idSub = {
79
274
  name: 'id',
80
275
  description: 'Print the pseudonymous funnel ID (exists only with telemetry consent)',
@@ -92,9 +287,13 @@ const idSub = {
92
287
  export const funnelCommand = {
93
288
  name: 'funnel',
94
289
  description: 'Control the Cognitum lifecycle funnel surfaces (tips, enrollment, notices)',
95
- subcommands: [statusSub, disableSub, enableSub, idSub],
290
+ subcommands: [statusSub, disableSub, enableSub, acceptSub, openSub, enrollSub, earningsSub, unenrollSub, idSub],
96
291
  examples: [
97
292
  { command: 'ruflo funnel status', description: 'Effective state + deciding source' },
293
+ { command: 'ruflo funnel accept', description: 'Skip the 24h grace so rotation starts now' },
294
+ { command: 'ruflo funnel open', description: 'Open the current promo URL in the browser' },
295
+ { command: 'ruflo funnel enroll', description: 'Opt in to 50/50 rev share (ADR-317)' },
296
+ { command: 'ruflo funnel earnings', description: 'Show accrued and paid balance' },
98
297
  { command: 'ruflo funnel disable', description: 'Turn off every funnel surface' },
99
298
  ],
100
299
  action: statusSub.action,
@@ -51,103 +51,103 @@ function generateHiveMindPrompt(swarmId, swarmName, objective, workers, workerGr
51
51
  const queenType = flags.queenType || 'strategic';
52
52
  const consensusAlgorithm = flags.consensus || 'byzantine';
53
53
  const topology = flags.topology || 'hierarchical-mesh';
54
- return `🧠 HIVE MIND COLLECTIVE INTELLIGENCE SYSTEM
55
- ═══════════════════════════════════════════════
56
-
57
- You are the Queen coordinator of a Hive Mind swarm with collective intelligence capabilities.
58
-
59
- HIVE MIND CONFIGURATION:
60
- 📌 Swarm ID: ${swarmId}
61
- 📌 Swarm Name: ${swarmName}
62
- 🎯 Objective: ${objective}
63
- 👑 Queen Type: ${queenType}
64
- 🐝 Worker Count: ${workers.length}
65
- 🔗 Topology: ${topology}
66
- 🤝 Consensus Algorithm: ${consensusAlgorithm}
67
- ⏰ Initialized: ${currentTime}
68
-
69
- WORKER DISTRIBUTION:
70
- ${workerTypes.map(type => `• ${type}: ${workerGroups[type].length} agents`).join('\n')}
71
-
72
- 🔧 AVAILABLE MCP TOOLS FOR HIVE MIND COORDINATION:
73
-
74
- 1️⃣ **COLLECTIVE INTELLIGENCE**
75
- mcp__ruflo__hive-mind_consensus - Democratic decision making
76
- mcp__ruflo__hive-mind_memory - Share knowledge across the hive
77
- mcp__ruflo__hive-mind_broadcast - Broadcast to all workers
78
- mcp__ruflo__neural_patterns - Neural pattern recognition
79
-
80
- 2️⃣ **QUEEN COORDINATION**
81
- mcp__ruflo__hive-mind_status - Monitor swarm health
82
- mcp__ruflo__task_create - Create and delegate tasks
83
- mcp__ruflo__coordination_orchestrate - Orchestrate task distribution
84
- mcp__ruflo__agent_spawn - Spawn additional workers
85
-
86
- 3️⃣ **WORKER MANAGEMENT**
87
- mcp__ruflo__agent_list - List all active agents
88
- mcp__ruflo__agent_status - Check agent status
89
- mcp__ruflo__agent_health - Check worker health
90
- mcp__ruflo__hive-mind_join - Add agent to hive
91
- mcp__ruflo__hive-mind_leave - Remove agent from hive
92
-
93
- 4️⃣ **TASK ORCHESTRATION**
94
- mcp__ruflo__task_assign - Assign tasks to workers
95
- mcp__ruflo__task_status - Track task progress
96
- mcp__ruflo__task_complete - Mark tasks complete
97
- mcp__ruflo__workflow_create - Create workflows
98
-
99
- 5️⃣ **MEMORY & LEARNING**
100
- mcp__ruflo__memory_store - Store collective knowledge
101
- mcp__ruflo__memory_retrieve - Access shared memory
102
- mcp__ruflo__memory_search - Search memory patterns
103
- mcp__ruflo__neural_train - Learn from experiences
104
- mcp__ruflo__hooks_intelligence_pattern-store - Store patterns
105
-
106
- 📋 HIVE MIND EXECUTION PROTOCOL:
107
-
108
- 1. **INITIALIZATION PHASE**
109
- - Verify all workers are online and responsive
110
- - Establish communication channels
111
- - Load previous session state if available
112
- - Initialize shared memory space
113
-
114
- 2. **TASK DISTRIBUTION PHASE**
115
- - Analyze the objective and decompose into subtasks
116
- - Assign tasks based on worker specializations
117
- - Set up task dependencies and ordering
118
- - Monitor parallel execution
119
-
120
- 3. **COORDINATION PHASE**
121
- - Use consensus for critical decisions
122
- - Aggregate results from workers
123
- - Resolve conflicts using ${consensusAlgorithm} consensus
124
- - Share learnings across the hive
125
-
126
- 4. **COMPLETION PHASE**
127
- - Verify all subtasks are complete
128
- - Consolidate results
129
- - Store learnings in collective memory
130
- - Report final status
131
-
132
- 🎯 YOUR OBJECTIVE:
133
- ${objective}
134
-
135
- ⚠️ CRITICAL — TOOL PREFERENCE RULES (#1422):
136
- • You MUST use Ruflo MCP tools (mcp__ruflo__*) for ALL orchestration tasks
137
- • Do NOT use Claude native Task/Agent tools for swarm coordination — use mcp__ruflo__agent_spawn, mcp__ruflo__task_assign, etc.
138
- • Native Claude tools (Read, Write, Edit, Bash, Grep, Glob) should ONLY be used for file operations and shell commands
139
- • All agent spawning, task assignment, memory, and coordination MUST go through mcp__ruflo__* tools
140
- • If a Ruflo MCP tool exists for an operation, always prefer it over any native equivalent
141
-
142
- 💡 COORDINATION TIPS:
143
- • Use mcp__ruflo__hive-mind_broadcast for swarm-wide announcements
144
- • Check worker status regularly with mcp__ruflo__hive-mind_status
145
- • Store important decisions in shared memory for persistence
146
- • Use consensus for any decisions affecting multiple workers
147
- • Use mcp__ruflo__task_assign to assign tasks to workers, then mcp__ruflo__task_complete when done
148
-
149
- 🚀 BEGIN HIVE MIND COORDINATION NOW!
150
- Start by checking the current hive status and then proceed with the objective.
54
+ return `🧠 HIVE MIND COLLECTIVE INTELLIGENCE SYSTEM
55
+ ═══════════════════════════════════════════════
56
+
57
+ You are the Queen coordinator of a Hive Mind swarm with collective intelligence capabilities.
58
+
59
+ HIVE MIND CONFIGURATION:
60
+ 📌 Swarm ID: ${swarmId}
61
+ 📌 Swarm Name: ${swarmName}
62
+ 🎯 Objective: ${objective}
63
+ 👑 Queen Type: ${queenType}
64
+ 🐝 Worker Count: ${workers.length}
65
+ 🔗 Topology: ${topology}
66
+ 🤝 Consensus Algorithm: ${consensusAlgorithm}
67
+ ⏰ Initialized: ${currentTime}
68
+
69
+ WORKER DISTRIBUTION:
70
+ ${workerTypes.map(type => `• ${type}: ${workerGroups[type].length} agents`).join('\n')}
71
+
72
+ 🔧 AVAILABLE MCP TOOLS FOR HIVE MIND COORDINATION:
73
+
74
+ 1️⃣ **COLLECTIVE INTELLIGENCE**
75
+ mcp__ruflo__hive-mind_consensus - Democratic decision making
76
+ mcp__ruflo__hive-mind_memory - Share knowledge across the hive
77
+ mcp__ruflo__hive-mind_broadcast - Broadcast to all workers
78
+ mcp__ruflo__neural_patterns - Neural pattern recognition
79
+
80
+ 2️⃣ **QUEEN COORDINATION**
81
+ mcp__ruflo__hive-mind_status - Monitor swarm health
82
+ mcp__ruflo__task_create - Create and delegate tasks
83
+ mcp__ruflo__coordination_orchestrate - Orchestrate task distribution
84
+ mcp__ruflo__agent_spawn - Spawn additional workers
85
+
86
+ 3️⃣ **WORKER MANAGEMENT**
87
+ mcp__ruflo__agent_list - List all active agents
88
+ mcp__ruflo__agent_status - Check agent status
89
+ mcp__ruflo__agent_health - Check worker health
90
+ mcp__ruflo__hive-mind_join - Add agent to hive
91
+ mcp__ruflo__hive-mind_leave - Remove agent from hive
92
+
93
+ 4️⃣ **TASK ORCHESTRATION**
94
+ mcp__ruflo__task_assign - Assign tasks to workers
95
+ mcp__ruflo__task_status - Track task progress
96
+ mcp__ruflo__task_complete - Mark tasks complete
97
+ mcp__ruflo__workflow_create - Create workflows
98
+
99
+ 5️⃣ **MEMORY & LEARNING**
100
+ mcp__ruflo__memory_store - Store collective knowledge
101
+ mcp__ruflo__memory_retrieve - Access shared memory
102
+ mcp__ruflo__memory_search - Search memory patterns
103
+ mcp__ruflo__neural_train - Learn from experiences
104
+ mcp__ruflo__hooks_intelligence_pattern-store - Store patterns
105
+
106
+ 📋 HIVE MIND EXECUTION PROTOCOL:
107
+
108
+ 1. **INITIALIZATION PHASE**
109
+ - Verify all workers are online and responsive
110
+ - Establish communication channels
111
+ - Load previous session state if available
112
+ - Initialize shared memory space
113
+
114
+ 2. **TASK DISTRIBUTION PHASE**
115
+ - Analyze the objective and decompose into subtasks
116
+ - Assign tasks based on worker specializations
117
+ - Set up task dependencies and ordering
118
+ - Monitor parallel execution
119
+
120
+ 3. **COORDINATION PHASE**
121
+ - Use consensus for critical decisions
122
+ - Aggregate results from workers
123
+ - Resolve conflicts using ${consensusAlgorithm} consensus
124
+ - Share learnings across the hive
125
+
126
+ 4. **COMPLETION PHASE**
127
+ - Verify all subtasks are complete
128
+ - Consolidate results
129
+ - Store learnings in collective memory
130
+ - Report final status
131
+
132
+ 🎯 YOUR OBJECTIVE:
133
+ ${objective}
134
+
135
+ ⚠️ CRITICAL — TOOL PREFERENCE RULES (#1422):
136
+ • You MUST use Ruflo MCP tools (mcp__ruflo__*) for ALL orchestration tasks
137
+ • Do NOT use Claude native Task/Agent tools for swarm coordination — use mcp__ruflo__agent_spawn, mcp__ruflo__task_assign, etc.
138
+ • Native Claude tools (Read, Write, Edit, Bash, Grep, Glob) should ONLY be used for file operations and shell commands
139
+ • All agent spawning, task assignment, memory, and coordination MUST go through mcp__ruflo__* tools
140
+ • If a Ruflo MCP tool exists for an operation, always prefer it over any native equivalent
141
+
142
+ 💡 COORDINATION TIPS:
143
+ • Use mcp__ruflo__hive-mind_broadcast for swarm-wide announcements
144
+ • Check worker status regularly with mcp__ruflo__hive-mind_status
145
+ • Store important decisions in shared memory for persistence
146
+ • Use consensus for any decisions affecting multiple workers
147
+ • Use mcp__ruflo__task_assign to assign tasks to workers, then mcp__ruflo__task_complete when done
148
+
149
+ 🚀 BEGIN HIVE MIND COORDINATION NOW!
150
+ Start by checking the current hive status and then proceed with the objective.
151
151
  `;
152
152
  }
153
153
  /**