@claude-flow/cli 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 (464) 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/README.md +96 -96
  263. package/.claude/helpers/adr-compliance.sh +186 -186
  264. package/.claude/helpers/auto-commit.sh +178 -178
  265. package/.claude/helpers/auto-memory-hook.mjs +430 -430
  266. package/.claude/helpers/checkpoint-manager.sh +251 -251
  267. package/.claude/helpers/daemon-manager.sh +252 -252
  268. package/.claude/helpers/ddd-tracker.sh +144 -144
  269. package/.claude/helpers/github-safe.js +156 -156
  270. package/.claude/helpers/github-setup.sh +45 -45
  271. package/.claude/helpers/guidance-hook.sh +13 -13
  272. package/.claude/helpers/guidance-hooks.sh +102 -102
  273. package/.claude/helpers/health-monitor.sh +108 -108
  274. package/.claude/helpers/helpers.manifest.json +6 -6
  275. package/.claude/helpers/hook-handler.cjs +460 -460
  276. package/.claude/helpers/intelligence.cjs +1058 -1058
  277. package/.claude/helpers/learning-hooks.sh +329 -329
  278. package/.claude/helpers/learning-optimizer.sh +127 -127
  279. package/.claude/helpers/learning-service.mjs +1144 -1144
  280. package/.claude/helpers/memory.js +83 -83
  281. package/.claude/helpers/metrics-db.mjs +503 -503
  282. package/.claude/helpers/pattern-consolidator.sh +86 -86
  283. package/.claude/helpers/perf-worker.sh +160 -160
  284. package/.claude/helpers/post-commit +16 -16
  285. package/.claude/helpers/pre-commit +26 -26
  286. package/.claude/helpers/quick-start.sh +19 -19
  287. package/.claude/helpers/router.js +105 -105
  288. package/.claude/helpers/security-scanner.sh +127 -127
  289. package/.claude/helpers/session.js +157 -157
  290. package/.claude/helpers/setup-mcp.sh +18 -18
  291. package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
  292. package/.claude/helpers/statusline-hook.sh +21 -21
  293. package/.claude/helpers/statusline.cjs +925 -925
  294. package/.claude/helpers/statusline.js +352 -352
  295. package/.claude/helpers/swarm-comms.sh +353 -353
  296. package/.claude/helpers/swarm-hooks.sh +761 -761
  297. package/.claude/helpers/swarm-monitor.sh +210 -210
  298. package/.claude/helpers/sync-v3-metrics.sh +245 -245
  299. package/.claude/helpers/update-v3-progress.sh +165 -165
  300. package/.claude/helpers/v3-quick-status.sh +57 -57
  301. package/.claude/helpers/v3.sh +110 -110
  302. package/.claude/helpers/validate-v3-config.sh +215 -215
  303. package/.claude/helpers/worker-manager.sh +170 -170
  304. package/.claude/proven-config.json +1 -1
  305. package/.claude/proven-config.manifest.json +37 -37
  306. package/.claude/proven-config.signed.json +41 -41
  307. package/.claude/settings.json +182 -182
  308. package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
  309. package/.claude/skills/agentdb-learning/SKILL.md +545 -545
  310. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
  311. package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
  312. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
  313. package/.claude/skills/browser/SKILL.md +204 -204
  314. package/.claude/skills/dual-mode/README.md +71 -71
  315. package/.claude/skills/dual-mode/dual-collect.md +103 -103
  316. package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
  317. package/.claude/skills/dual-mode/dual-spawn.md +81 -81
  318. package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
  319. package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
  320. package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
  321. package/.claude/skills/github-code-review/SKILL.md +1125 -1125
  322. package/.claude/skills/github-multi-repo/SKILL.md +862 -862
  323. package/.claude/skills/github-project-management/SKILL.md +1262 -1262
  324. package/.claude/skills/github-release-management/SKILL.md +1064 -1064
  325. package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
  326. package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
  327. package/.claude/skills/pair-programming/SKILL.md +1202 -1202
  328. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
  329. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
  330. package/.claude/skills/skill-builder/SKILL.md +910 -910
  331. package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
  332. package/.claude/skills/stream-chain/SKILL.md +560 -560
  333. package/.claude/skills/swarm-advanced/SKILL.md +970 -970
  334. package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
  335. package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
  336. package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
  337. package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
  338. package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
  339. package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
  340. package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
  341. package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
  342. package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
  343. package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
  344. package/.claude/skills/verification-quality/SKILL.md +691 -691
  345. package/README.md +419 -419
  346. package/bin/cli.js +314 -314
  347. package/bin/mcp-server.js +224 -224
  348. package/bin/preinstall.cjs +2 -2
  349. package/catalog-manifest.json +2 -2
  350. package/dist/src/benchmarks/gaia-critic.js +24 -24
  351. package/dist/src/business-pods/bbs-budget-tracker.js +53 -53
  352. package/dist/src/commands/completions.js +409 -409
  353. package/dist/src/commands/daemon.d.ts +23 -0
  354. package/dist/src/commands/daemon.js +216 -44
  355. package/dist/src/commands/embeddings.js +26 -26
  356. package/dist/src/commands/funnel.d.ts +2 -0
  357. package/dist/src/commands/funnel.js +110 -2
  358. package/dist/src/commands/hive-mind.js +97 -97
  359. package/dist/src/commands/hooks.js +9 -9
  360. package/dist/src/commands/init.js +94 -38
  361. package/dist/src/commands/memory.js +85 -1
  362. package/dist/src/commands/ruvector/backup.js +23 -23
  363. package/dist/src/commands/ruvector/benchmark.js +31 -31
  364. package/dist/src/commands/ruvector/import.js +14 -14
  365. package/dist/src/commands/ruvector/init.js +115 -115
  366. package/dist/src/commands/ruvector/migrate.js +99 -99
  367. package/dist/src/commands/ruvector/optimize.js +51 -51
  368. package/dist/src/commands/ruvector/setup.js +624 -624
  369. package/dist/src/commands/ruvector/status.js +38 -38
  370. package/dist/src/config/proven-config.js +2 -2
  371. package/dist/src/funnel/disclosure.d.ts +1 -0
  372. package/dist/src/funnel/disclosure.js +12 -0
  373. package/dist/src/funnel/index.d.ts +1 -1
  374. package/dist/src/funnel/index.js +1 -1
  375. package/dist/src/init/claudemd-generator.js +231 -231
  376. package/dist/src/init/executor.js +453 -453
  377. package/dist/src/init/helper-signing.d.ts +8 -1
  378. package/dist/src/init/helper-signing.js +9 -2
  379. package/dist/src/init/helpers-generator.js +751 -751
  380. package/dist/src/init/statusline-generator.js +994 -951
  381. package/dist/src/mcp-tools/agentdb-tools.js +15 -15
  382. package/dist/src/mcp-tools/browser-intent-tools.js +19 -19
  383. package/dist/src/memory/graph-edge-writer.js +22 -22
  384. package/dist/src/memory/memory-bridge.d.ts +10 -0
  385. package/dist/src/memory/memory-bridge.js +139 -88
  386. package/dist/src/memory/memory-initializer.d.ts +18 -0
  387. package/dist/src/memory/memory-initializer.js +539 -407
  388. package/dist/src/memory/rabitq-index.js +5 -5
  389. package/dist/src/runtime/headless.js +28 -28
  390. package/dist/src/ruvector/flash-attention.d.ts +195 -0
  391. package/dist/src/ruvector/flash-attention.js +643 -0
  392. package/dist/src/ruvector/moe-router.d.ts +206 -0
  393. package/dist/src/ruvector/moe-router.js +626 -0
  394. package/dist/src/services/distill-tuning.js +7 -7
  395. package/dist/src/services/event-stream.d.ts +25 -0
  396. package/dist/src/services/event-stream.js +27 -0
  397. package/dist/src/services/global-ai-budget.d.ts +25 -0
  398. package/dist/src/services/global-ai-budget.js +56 -0
  399. package/dist/src/services/headless-worker-executor.d.ts +21 -0
  400. package/dist/src/services/headless-worker-executor.js +152 -86
  401. package/dist/src/services/loop-worker-runner.d.ts +16 -0
  402. package/dist/src/services/loop-worker-runner.js +34 -0
  403. package/dist/src/services/memory-distillation.js +4 -4
  404. package/dist/src/services/repo-supervisor.d.ts +70 -0
  405. package/dist/src/services/repo-supervisor.js +228 -0
  406. package/dist/src/services/runtime-capabilities.d.ts +22 -0
  407. package/dist/src/services/runtime-capabilities.js +45 -0
  408. package/dist/src/services/worker-daemon.d.ts +26 -0
  409. package/dist/src/services/worker-daemon.js +95 -5
  410. package/dist/src/services/workspace-lease.d.ts +55 -0
  411. package/dist/src/services/workspace-lease.js +191 -0
  412. package/dist/src/transfer/deploy-seraphine.js +23 -23
  413. package/package.json +134 -133
  414. package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +32 -32
  415. package/plugins/ruflo-metaharness/README.md +72 -72
  416. package/plugins/ruflo-metaharness/agents/metaharness-architect.md +58 -58
  417. package/plugins/ruflo-metaharness/commands/ruflo-metaharness.md +48 -48
  418. package/plugins/ruflo-metaharness/scripts/_darwin.mjs +210 -210
  419. package/plugins/ruflo-metaharness/scripts/_harness.mjs +330 -330
  420. package/plugins/ruflo-metaharness/scripts/_invoke.mjs +231 -231
  421. package/plugins/ruflo-metaharness/scripts/_redblue.mjs +143 -143
  422. package/plugins/ruflo-metaharness/scripts/_similarity.mjs +161 -161
  423. package/plugins/ruflo-metaharness/scripts/_spike-similarity.mjs +223 -223
  424. package/plugins/ruflo-metaharness/scripts/audit-list.mjs +158 -158
  425. package/plugins/ruflo-metaharness/scripts/audit-trend.mjs +272 -272
  426. package/plugins/ruflo-metaharness/scripts/bench-parse-mcp-scan.mjs +146 -146
  427. package/plugins/ruflo-metaharness/scripts/bench-recordpair-overhead.mjs +186 -186
  428. package/plugins/ruflo-metaharness/scripts/bench-similarity.mjs +177 -177
  429. package/plugins/ruflo-metaharness/scripts/bench.mjs +95 -95
  430. package/plugins/ruflo-metaharness/scripts/drift-from-history.mjs +363 -363
  431. package/plugins/ruflo-metaharness/scripts/evolve.mjs +404 -404
  432. package/plugins/ruflo-metaharness/scripts/genome.mjs +80 -80
  433. package/plugins/ruflo-metaharness/scripts/gepa.mjs +153 -153
  434. package/plugins/ruflo-metaharness/scripts/learn.mjs +127 -127
  435. package/plugins/ruflo-metaharness/scripts/mcp-scan.mjs +111 -111
  436. package/plugins/ruflo-metaharness/scripts/mint.mjs +126 -126
  437. package/plugins/ruflo-metaharness/scripts/oia-audit.mjs +228 -228
  438. package/plugins/ruflo-metaharness/scripts/redblue.mjs +286 -286
  439. package/plugins/ruflo-metaharness/scripts/router-parallel-analyze.mjs +250 -250
  440. package/plugins/ruflo-metaharness/scripts/score.mjs +92 -92
  441. package/plugins/ruflo-metaharness/scripts/security-bench.mjs +174 -174
  442. package/plugins/ruflo-metaharness/scripts/similarity.mjs +158 -158
  443. package/plugins/ruflo-metaharness/scripts/smoke.sh +2353 -2353
  444. package/plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs +165 -165
  445. package/plugins/ruflo-metaharness/scripts/test-mcp-tools.mjs +472 -472
  446. package/plugins/ruflo-metaharness/scripts/test-parallel-pipeline.mjs +204 -204
  447. package/plugins/ruflo-metaharness/scripts/test-pipeline-roundtrip.mjs +586 -586
  448. package/plugins/ruflo-metaharness/scripts/test-similarity.mjs +334 -334
  449. package/plugins/ruflo-metaharness/scripts/test-with-openrouter.mjs +229 -229
  450. package/plugins/ruflo-metaharness/scripts/threat-model.mjs +59 -59
  451. package/plugins/ruflo-metaharness/skills/harness-bench/SKILL.md +64 -64
  452. package/plugins/ruflo-metaharness/skills/harness-drift-from-history/SKILL.md +65 -65
  453. package/plugins/ruflo-metaharness/skills/harness-evolve/SKILL.md +131 -131
  454. package/plugins/ruflo-metaharness/skills/harness-genome/SKILL.md +54 -54
  455. package/plugins/ruflo-metaharness/skills/harness-gepa/SKILL.md +65 -65
  456. package/plugins/ruflo-metaharness/skills/harness-learn/SKILL.md +65 -65
  457. package/plugins/ruflo-metaharness/skills/harness-mcp-scan/SKILL.md +49 -49
  458. package/plugins/ruflo-metaharness/skills/harness-mint/SKILL.md +72 -72
  459. package/plugins/ruflo-metaharness/skills/harness-oia-audit/SKILL.md +79 -79
  460. package/plugins/ruflo-metaharness/skills/harness-score/SKILL.md +66 -66
  461. package/plugins/ruflo-metaharness/skills/harness-security-bench/SKILL.md +101 -101
  462. package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +67 -67
  463. package/plugins/ruflo-metaharness/skills/harness-threat-model/SKILL.md +41 -41
  464. package/scripts/postinstall.cjs +153 -153
@@ -0,0 +1,27 @@
1
+ /**
2
+ * NDJSON Event Stream for CLI --stream mode
3
+ *
4
+ * Emits newline-delimited JSON events to stdout for consumption
5
+ * by Claude Code's Monitor tool. Each event includes schema versioning.
6
+ *
7
+ * @see ADR-091: NDJSON event streaming infrastructure
8
+ */
9
+ import { randomBytes } from 'crypto';
10
+ /** Generate a short unique run ID (e.g. run_m1abc_3f2a1b) */
11
+ export function createRunId() {
12
+ return `run_${Date.now().toString(36)}_${randomBytes(3).toString('hex')}`;
13
+ }
14
+ /** Write one NDJSON line to stdout with schema and timestamp auto-populated */
15
+ export function emitEvent(event) {
16
+ const full = Object.assign({ schema: 'ruflo.event.v1', ts: new Date().toISOString() }, event);
17
+ process.stdout.write(JSON.stringify(full) + '\n');
18
+ }
19
+ /** Convenience wrapper that binds a runId to an emitter */
20
+ export function createEventEmitter(runId) {
21
+ return {
22
+ emit(event, data) {
23
+ emitEvent({ runId, event, ...data });
24
+ },
25
+ };
26
+ }
27
+ //# sourceMappingURL=event-stream.js.map
@@ -80,6 +80,31 @@ export declare class GlobalAiBudget {
80
80
  * daemon pauses ALL autonomous Claude launches for the cooldown window.
81
81
  */
82
82
  recordQuotaError(detail: string): Promise<void>;
83
+ /**
84
+ * #2661 root-fix — manual pause, via `ruflo daemon budget pause`. Distinct
85
+ * from the automatic quota-error circuit breaker only in duration (open-
86
+ * ended, until explicitly resumed, instead of a fixed cooldown) and
87
+ * reason text — the enforcement path in reserve() is identical, so a
88
+ * manual pause is just as hard a stop as a quota-triggered one.
89
+ */
90
+ pause(reason?: string): Promise<void>;
91
+ /** #2661 root-fix — `ruflo daemon budget resume`. Clears ANY pause (manual or quota-triggered). */
92
+ resume(): Promise<void>;
93
+ /**
94
+ * #2661 root-fix — structured per-launch token telemetry. Best-effort,
95
+ * receipt-only: usage is recorded as a distinct receipt keyed by permitId
96
+ * rather than mutated into the launch ledger, so a usage-recording failure
97
+ * can never corrupt the budget-enforcement ledger. Only operational
98
+ * metadata — never prompts or source content.
99
+ */
100
+ recordUsage(permitId: string | undefined, usage: {
101
+ workerType: string;
102
+ model: string;
103
+ inputTokens?: number;
104
+ outputTokens?: number;
105
+ durationMs?: number;
106
+ costUsd?: number;
107
+ }): void;
83
108
  /** Snapshot for `daemon status` / diagnostics. */
84
109
  getUsage(): {
85
110
  lastHour: number;
@@ -221,6 +221,62 @@ export class GlobalAiBudget {
221
221
  unlock?.();
222
222
  }
223
223
  }
224
+ /**
225
+ * #2661 root-fix — manual pause, via `ruflo daemon budget pause`. Distinct
226
+ * from the automatic quota-error circuit breaker only in duration (open-
227
+ * ended, until explicitly resumed, instead of a fixed cooldown) and
228
+ * reason text — the enforcement path in reserve() is identical, so a
229
+ * manual pause is just as hard a stop as a quota-triggered one.
230
+ */
231
+ async pause(reason) {
232
+ let unlock = null;
233
+ try {
234
+ unlock = await this.acquireLock();
235
+ const now = Date.now();
236
+ const ledger = this.readLedger(now);
237
+ // Sentinel far-future timestamp rather than a real duration — resume()
238
+ // is the only thing that clears it. year ~2255, safely beyond any
239
+ // realistic process lifetime, and still a valid finite JS timestamp.
240
+ ledger.pausedUntil = 9_000_000_000_000;
241
+ ledger.pauseReason = (reason ?? 'manual pause (ruflo daemon budget pause)').slice(0, 200);
242
+ this.writeLedger(ledger);
243
+ this.appendReceipt({ event: 'manual-pause', at: now, reason: ledger.pauseReason });
244
+ }
245
+ finally {
246
+ unlock?.();
247
+ }
248
+ }
249
+ /** #2661 root-fix — `ruflo daemon budget resume`. Clears ANY pause (manual or quota-triggered). */
250
+ async resume() {
251
+ let unlock = null;
252
+ try {
253
+ unlock = await this.acquireLock();
254
+ const now = Date.now();
255
+ const ledger = this.readLedger(now);
256
+ const wasPaused = ledger.pausedUntil !== undefined && ledger.pausedUntil > now;
257
+ ledger.pausedUntil = undefined;
258
+ ledger.pauseReason = undefined;
259
+ this.writeLedger(ledger);
260
+ if (wasPaused) {
261
+ this.appendReceipt({ event: 'manual-resume', at: now });
262
+ }
263
+ }
264
+ finally {
265
+ unlock?.();
266
+ }
267
+ }
268
+ /**
269
+ * #2661 root-fix — structured per-launch token telemetry. Best-effort,
270
+ * receipt-only: usage is recorded as a distinct receipt keyed by permitId
271
+ * rather than mutated into the launch ledger, so a usage-recording failure
272
+ * can never corrupt the budget-enforcement ledger. Only operational
273
+ * metadata — never prompts or source content.
274
+ */
275
+ recordUsage(permitId, usage) {
276
+ if (!permitId || permitId.startsWith('bypass_'))
277
+ return;
278
+ this.appendReceipt({ event: 'usage', at: Date.now(), permitId, ...usage });
279
+ }
224
280
  /** Snapshot for `daemon status` / diagnostics. */
225
281
  getUsage() {
226
282
  try {
@@ -119,6 +119,10 @@ export interface HeadlessExecutionResult {
119
119
  durationMs: number;
120
120
  /** Estimated tokens used (if available) */
121
121
  tokensUsed?: number;
122
+ /** #2661 root-fix — structured usage, when `claude --print --output-format json` exposed it. */
123
+ inputTokens?: number;
124
+ outputTokens?: number;
125
+ costUsd?: number;
122
126
  /** Model used for execution */
123
127
  model: string;
124
128
  /** Sandbox mode used */
@@ -190,6 +194,23 @@ export declare function isLocalWorker(type: WorkerType): type is LocalWorkerType
190
194
  * Get model ID from model type
191
195
  */
192
196
  export declare function getModelId(model: ModelType): string;
197
+ export interface ClaudePrintEnvelope {
198
+ result: string;
199
+ inputTokens?: number;
200
+ outputTokens?: number;
201
+ costUsd?: number;
202
+ durationMs?: number;
203
+ }
204
+ /**
205
+ * #2661 root-fix — best-effort parse of `claude --print --output-format
206
+ * json`'s response envelope. Deliberately lenient: probes a couple of
207
+ * plausible field-name shapes (the CLI's JSON schema is not a versioned
208
+ * public contract) and returns null on anything unexpected rather than
209
+ * throwing, so a schema mismatch degrades to "no usage captured" — the
210
+ * caller then falls back to the raw stdout text, exactly today's behavior.
211
+ * Exported for direct unit testing without spawning a real process.
212
+ */
213
+ export declare function parseClaudePrintJsonEnvelope(raw: string): ClaudePrintEnvelope | null;
193
214
  /**
194
215
  * Get worker configuration by type
195
216
  */
@@ -78,18 +78,18 @@ export const HEADLESS_WORKER_CONFIGS = {
78
78
  description: 'AI-powered security analysis',
79
79
  enabled: true,
80
80
  headless: {
81
- promptTemplate: `Analyze this codebase for security vulnerabilities:
82
- - Check for hardcoded secrets (API keys, passwords)
83
- - Identify SQL injection risks
84
- - Find XSS vulnerabilities
85
- - Check for insecure dependencies
86
- - Identify authentication/authorization issues
87
-
88
- Provide a JSON report with:
89
- {
90
- "vulnerabilities": [{ "severity": "high|medium|low", "file": "...", "line": N, "description": "..." }],
91
- "riskScore": 0-100,
92
- "recommendations": ["..."]
81
+ promptTemplate: `Analyze this codebase for security vulnerabilities:
82
+ - Check for hardcoded secrets (API keys, passwords)
83
+ - Identify SQL injection risks
84
+ - Find XSS vulnerabilities
85
+ - Check for insecure dependencies
86
+ - Identify authentication/authorization issues
87
+
88
+ Provide a JSON report with:
89
+ {
90
+ "vulnerabilities": [{ "severity": "high|medium|low", "file": "...", "line": N, "description": "..." }],
91
+ "riskScore": 0-100,
92
+ "recommendations": ["..."]
93
93
  }`,
94
94
  sandbox: 'strict',
95
95
  model: 'haiku',
@@ -106,13 +106,13 @@ Provide a JSON report with:
106
106
  description: 'AI optimization suggestions',
107
107
  enabled: true,
108
108
  headless: {
109
- promptTemplate: `Analyze this codebase for performance optimizations:
110
- - Identify N+1 query patterns
111
- - Find unnecessary re-renders in React
112
- - Suggest caching opportunities
113
- - Identify memory leaks
114
- - Find redundant computations
115
-
109
+ promptTemplate: `Analyze this codebase for performance optimizations:
110
+ - Identify N+1 query patterns
111
+ - Find unnecessary re-renders in React
112
+ - Suggest caching opportunities
113
+ - Identify memory leaks
114
+ - Find redundant computations
115
+
116
116
  Provide actionable suggestions with code examples.`,
117
117
  sandbox: 'permissive',
118
118
  model: 'sonnet',
@@ -129,13 +129,13 @@ Provide actionable suggestions with code examples.`,
129
129
  description: 'AI test gap analysis',
130
130
  enabled: true,
131
131
  headless: {
132
- promptTemplate: `Analyze test coverage and identify gaps:
133
- - Find untested functions and classes
134
- - Identify edge cases not covered
135
- - Suggest new test scenarios
136
- - Check for missing error handling tests
137
- - Identify integration test gaps
138
-
132
+ promptTemplate: `Analyze test coverage and identify gaps:
133
+ - Find untested functions and classes
134
+ - Identify edge cases not covered
135
+ - Suggest new test scenarios
136
+ - Check for missing error handling tests
137
+ - Identify integration test gaps
138
+
139
139
  For each gap, provide a test skeleton.`,
140
140
  sandbox: 'permissive',
141
141
  model: 'sonnet',
@@ -152,13 +152,13 @@ For each gap, provide a test skeleton.`,
152
152
  description: 'AI documentation generation',
153
153
  enabled: false,
154
154
  headless: {
155
- promptTemplate: `Generate documentation for undocumented code:
156
- - Add JSDoc comments to functions
157
- - Create README sections for modules
158
- - Document API endpoints
159
- - Add inline comments for complex logic
160
- - Generate usage examples
161
-
155
+ promptTemplate: `Generate documentation for undocumented code:
156
+ - Add JSDoc comments to functions
157
+ - Create README sections for modules
158
+ - Document API endpoints
159
+ - Add inline comments for complex logic
160
+ - Generate usage examples
161
+
162
162
  Focus on public APIs and exported functions.`,
163
163
  sandbox: 'permissive',
164
164
  model: 'haiku',
@@ -175,19 +175,19 @@ Focus on public APIs and exported functions.`,
175
175
  description: 'Deep knowledge acquisition',
176
176
  enabled: false,
177
177
  headless: {
178
- promptTemplate: `Deeply analyze this codebase to learn:
179
- - Architectural patterns used
180
- - Coding conventions
181
- - Domain-specific terminology
182
- - Common patterns and idioms
183
- - Team preferences
184
-
185
- Provide insights as JSON:
186
- {
187
- "architecture": { "patterns": [...], "style": "..." },
188
- "conventions": { "naming": "...", "formatting": "..." },
189
- "domains": ["..."],
190
- "insights": ["..."]
178
+ promptTemplate: `Deeply analyze this codebase to learn:
179
+ - Architectural patterns used
180
+ - Coding conventions
181
+ - Domain-specific terminology
182
+ - Common patterns and idioms
183
+ - Team preferences
184
+
185
+ Provide insights as JSON:
186
+ {
187
+ "architecture": { "patterns": [...], "style": "..." },
188
+ "conventions": { "naming": "...", "formatting": "..." },
189
+ "domains": ["..."],
190
+ "insights": ["..."]
191
191
  }`,
192
192
  sandbox: 'strict',
193
193
  model: 'opus',
@@ -204,13 +204,13 @@ Provide insights as JSON:
204
204
  description: 'AI refactoring suggestions',
205
205
  enabled: false,
206
206
  headless: {
207
- promptTemplate: `Suggest refactoring opportunities:
208
- - Identify code duplication
209
- - Suggest better abstractions
210
- - Find opportunities for design patterns
211
- - Identify overly complex functions
212
- - Suggest module reorganization
213
-
207
+ promptTemplate: `Suggest refactoring opportunities:
208
+ - Identify code duplication
209
+ - Suggest better abstractions
210
+ - Find opportunities for design patterns
211
+ - Identify overly complex functions
212
+ - Suggest module reorganization
213
+
214
214
  Provide before/after code examples.`,
215
215
  sandbox: 'permissive',
216
216
  model: 'sonnet',
@@ -227,13 +227,13 @@ Provide before/after code examples.`,
227
227
  description: 'Deep code analysis',
228
228
  enabled: false,
229
229
  headless: {
230
- promptTemplate: `Perform deep analysis of this codebase:
231
- - Understand data flow
232
- - Map dependencies
233
- - Identify architectural issues
234
- - Find potential bugs
235
- - Analyze error handling
236
-
230
+ promptTemplate: `Perform deep analysis of this codebase:
231
+ - Understand data flow
232
+ - Map dependencies
233
+ - Identify architectural issues
234
+ - Find potential bugs
235
+ - Analyze error handling
236
+
237
237
  Provide comprehensive report.`,
238
238
  sandbox: 'strict',
239
239
  model: 'opus',
@@ -250,18 +250,18 @@ Provide comprehensive report.`,
250
250
  description: 'Predictive preloading',
251
251
  enabled: false,
252
252
  headless: {
253
- promptTemplate: `Based on recent activity, predict what the developer needs:
254
- - Files likely to be edited next
255
- - Tests that should be run
256
- - Documentation to reference
257
- - Dependencies to check
258
-
259
- Provide preload suggestions as JSON:
260
- {
261
- "filesToPreload": ["..."],
262
- "testsToRun": ["..."],
263
- "docsToReference": ["..."],
264
- "confidence": 0.0-1.0
253
+ promptTemplate: `Based on recent activity, predict what the developer needs:
254
+ - Files likely to be edited next
255
+ - Tests that should be run
256
+ - Documentation to reference
257
+ - Dependencies to check
258
+
259
+ Provide preload suggestions as JSON:
260
+ {
261
+ "filesToPreload": ["..."],
262
+ "testsToRun": ["..."],
263
+ "docsToReference": ["..."],
264
+ "confidence": 0.0-1.0
265
265
  }`,
266
266
  sandbox: 'strict',
267
267
  model: 'haiku',
@@ -336,6 +336,42 @@ export function isLocalWorker(type) {
336
336
  export function getModelId(model) {
337
337
  return MODEL_IDS[model];
338
338
  }
339
+ /**
340
+ * #2661 root-fix — best-effort parse of `claude --print --output-format
341
+ * json`'s response envelope. Deliberately lenient: probes a couple of
342
+ * plausible field-name shapes (the CLI's JSON schema is not a versioned
343
+ * public contract) and returns null on anything unexpected rather than
344
+ * throwing, so a schema mismatch degrades to "no usage captured" — the
345
+ * caller then falls back to the raw stdout text, exactly today's behavior.
346
+ * Exported for direct unit testing without spawning a real process.
347
+ */
348
+ export function parseClaudePrintJsonEnvelope(raw) {
349
+ const trimmed = raw.trim();
350
+ if (!trimmed || trimmed[0] !== '{')
351
+ return null;
352
+ let parsed;
353
+ try {
354
+ parsed = JSON.parse(trimmed);
355
+ }
356
+ catch {
357
+ return null;
358
+ }
359
+ if (!parsed || typeof parsed !== 'object')
360
+ return null;
361
+ const obj = parsed;
362
+ const result = typeof obj.result === 'string' ? obj.result : undefined;
363
+ if (result === undefined)
364
+ return null; // not the envelope shape we expect
365
+ const usage = (obj.usage && typeof obj.usage === 'object') ? obj.usage : undefined;
366
+ const numOrUndef = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : undefined);
367
+ return {
368
+ result,
369
+ inputTokens: numOrUndef(usage?.input_tokens ?? usage?.inputTokens),
370
+ outputTokens: numOrUndef(usage?.output_tokens ?? usage?.outputTokens),
371
+ costUsd: numOrUndef(obj.total_cost_usd ?? obj.cost_usd ?? obj.totalCostUsd),
372
+ durationMs: numOrUndef(obj.duration_ms ?? obj.durationMs),
373
+ };
374
+ }
339
375
  /**
340
376
  * Get worker configuration by type
341
377
  */
@@ -721,6 +757,9 @@ export class HeadlessWorkerExecutor extends EventEmitter {
721
757
  parsedOutput,
722
758
  durationMs: Date.now() - startTime,
723
759
  tokensUsed: result.tokensUsed,
760
+ inputTokens: result.inputTokens,
761
+ outputTokens: result.outputTokens,
762
+ costUsd: result.costUsd,
724
763
  model: headless.model || 'sonnet',
725
764
  sandboxMode: headless.sandbox,
726
765
  workerType,
@@ -730,6 +769,17 @@ export class HeadlessWorkerExecutor extends EventEmitter {
730
769
  };
731
770
  // Log result
732
771
  this.logExecution(executionId, 'result', JSON.stringify(executionResult, null, 2));
772
+ // #2661 root-fix — structured per-launch telemetry, receipted
773
+ // regardless of success/failure (a failed launch still spent
774
+ // whatever tokens it spent before erroring).
775
+ budget.recordUsage(permit.permitId, {
776
+ workerType,
777
+ model,
778
+ inputTokens: result.inputTokens,
779
+ outputTokens: result.outputTokens,
780
+ durationMs: result.apiDurationMs ?? executionResult.durationMs,
781
+ costUsd: result.costUsd,
782
+ });
733
783
  // #2661 invariant 5 — record the success so sibling worktrees at the
734
784
  // same HEAD skip this job for the rest of the freshness window.
735
785
  if (result.success) {
@@ -930,20 +980,20 @@ export class HeadlessWorkerExecutor extends EventEmitter {
930
980
  */
931
981
  buildPrompt(template, context) {
932
982
  if (!context) {
933
- return `${template}
934
-
935
- ## Instructions
936
-
983
+ return `${template}
984
+
985
+ ## Instructions
986
+
937
987
  Analyze the codebase and provide your response following the format specified in the task.`;
938
988
  }
939
- return `${template}
940
-
941
- ## Codebase Context
942
-
943
- ${context}
944
-
945
- ## Instructions
946
-
989
+ return `${template}
990
+
991
+ ## Codebase Context
992
+
993
+ ${context}
994
+
995
+ ## Instructions
996
+
947
997
  Analyze the above codebase context and provide your response following the format specified in the task.`;
948
998
  }
949
999
  /**
@@ -988,7 +1038,15 @@ Analyze the above codebase context and provide your response following the forma
988
1038
  // diagnosed as a 5-second redispatch + subprocess-table growth.
989
1039
  // `detached: true` puts the child in its own process group so we
990
1040
  // can signal the whole tree with `process.kill(-pid, sig)`.
991
- const child = spawn('claude', ['--print'], {
1041
+ // #2661 root-fix structured usage telemetry. `--output-format json`
1042
+ // wraps the response in an envelope carrying `result` (the actual
1043
+ // text — what `output` must still contain, unchanged for every
1044
+ // existing downstream parser) alongside `usage`/cost/duration
1045
+ // metadata. Parsing is lenient (parseClaudePrintJsonEnvelope below)
1046
+ // and ALWAYS falls back to the raw text on any mismatch — a schema
1047
+ // surprise from an older/newer `claude` CLI must degrade to exactly
1048
+ // today's behavior (no usage captured), never break analysis output.
1049
+ const child = spawn('claude', ['--print', '--output-format', 'json'], {
992
1050
  cwd: this.projectRoot,
993
1051
  env,
994
1052
  stdio: ['pipe', 'pipe', 'pipe'],
@@ -1068,9 +1126,17 @@ Analyze the above codebase context and provide your response following the forma
1068
1126
  return;
1069
1127
  resolved = true;
1070
1128
  cleanup();
1129
+ const envelope = parseClaudePrintJsonEnvelope(stdout);
1071
1130
  resolve({
1072
1131
  success: code === 0,
1073
- output: stdout || stderr,
1132
+ output: envelope?.result ?? stdout ?? stderr,
1133
+ inputTokens: envelope?.inputTokens,
1134
+ outputTokens: envelope?.outputTokens,
1135
+ tokensUsed: envelope
1136
+ ? (envelope.inputTokens ?? 0) + (envelope.outputTokens ?? 0)
1137
+ : undefined,
1138
+ costUsd: envelope?.costUsd,
1139
+ apiDurationMs: envelope?.durationMs,
1074
1140
  error: code !== 0 ? stderr || `Process exited with code ${code}` : undefined,
1075
1141
  });
1076
1142
  });
@@ -0,0 +1,16 @@
1
+ /**
2
+ * ADR-091 Phase 2 -- Stateless Loop Worker Runner
3
+ *
4
+ * Designed for /loop execution: runs a single worker iteration and returns
5
+ * metadata that the caller can use with ScheduleWakeup.
6
+ */
7
+ export interface LoopWorkerResult {
8
+ workerType: string;
9
+ success: boolean;
10
+ suggestedDelay: number;
11
+ reason: string;
12
+ loopPrompt: string;
13
+ metrics?: Record<string, unknown>;
14
+ }
15
+ export declare function runLoopWorker(workerType: string): Promise<LoopWorkerResult>;
16
+ //# sourceMappingURL=loop-worker-runner.d.ts.map
@@ -0,0 +1,34 @@
1
+ /**
2
+ * ADR-091 Phase 2 -- Stateless Loop Worker Runner
3
+ *
4
+ * Designed for /loop execution: runs a single worker iteration and returns
5
+ * metadata that the caller can use with ScheduleWakeup.
6
+ */
7
+ import { execSync } from 'child_process';
8
+ import { getCacheWarmDelay } from './runtime-capabilities.js';
9
+ export async function runLoopWorker(workerType) {
10
+ const startMs = Date.now();
11
+ let success = false;
12
+ let reason = '';
13
+ try {
14
+ const safeWorkerType = workerType.replace(/[^a-zA-Z0-9_-]/g, '');
15
+ const stdout = execSync(`npx @claude-flow/cli hooks worker dispatch --trigger ${safeWorkerType}`, { encoding: 'utf-8', timeout: 120_000, stdio: ['ignore', 'pipe', 'pipe'] });
16
+ success = true;
17
+ reason = stdout.trim().slice(0, 200) || `${workerType} completed`;
18
+ }
19
+ catch (err) {
20
+ const msg = err instanceof Error ? err.message : String(err);
21
+ reason = `${workerType} failed: ${msg.slice(0, 200)}`;
22
+ }
23
+ const durationMs = Date.now() - startMs;
24
+ const suggestedDelay = getCacheWarmDelay();
25
+ return {
26
+ workerType,
27
+ success,
28
+ suggestedDelay,
29
+ reason,
30
+ loopPrompt: `Run ${workerType} worker and report results`,
31
+ metrics: { durationMs, timestamp: new Date().toISOString() },
32
+ };
33
+ }
34
+ //# sourceMappingURL=loop-worker-runner.js.map
@@ -116,10 +116,10 @@ export async function runDistillation(options) {
116
116
  return { ...report, corrupt: true, skipped: 'memory DB reports corruption — run recoverMemoryDatabase first' };
117
117
  }
118
118
  // M0: incremental cursor table (per namespace, by monotonic rowid).
119
- db.exec(`CREATE TABLE IF NOT EXISTS distill_state (
120
- namespace TEXT PRIMARY KEY,
121
- last_rowid INTEGER NOT NULL DEFAULT 0,
122
- last_run_at INTEGER
119
+ db.exec(`CREATE TABLE IF NOT EXISTS distill_state (
120
+ namespace TEXT PRIMARY KEY,
121
+ last_rowid INTEGER NOT NULL DEFAULT 0,
122
+ last_run_at INTEGER
123
123
  )`);
124
124
  // Which namespaces to process.
125
125
  const nsAll = db.prepare("SELECT DISTINCT COALESCE(namespace,'default') AS ns FROM memory_entries WHERE embedding IS NOT NULL").all().map(r => r.ns);
@@ -0,0 +1,70 @@
1
+ /**
2
+ * #2661 root-fix — one repository-level supervisor.
3
+ *
4
+ * Ten worktree daemons of the same repository independently deciding "is it
5
+ * time to run audit/optimize/testgaps" every tick is the redundant-scheduler
6
+ * half of the original cardinality bug — the budget ledger and job dedup
7
+ * (global-ai-budget.ts, ai-job-dedup.ts) already bound and dedupe the actual
8
+ * `claude --print` spend, but every daemon still runs its own timer and its
9
+ * own "should I launch" decision. This module elects exactly ONE daemon per
10
+ * repositoryId to own the recurring AI-worker schedule; every other worktree
11
+ * of that repository stays a lease-only participant (workspace-lease.ts) —
12
+ * it keeps running its cheap, $0 local-only workers (map/consolidate/backup)
13
+ * on its own schedule, but does not attempt headless (`claude --print`)
14
+ * execution for its recurring ticks. An explicit `daemon trigger --headless`
15
+ * in a non-supervisor worktree is still honored (still budget/dedup-gated) —
16
+ * this module only governs the unattended recurring schedule.
17
+ *
18
+ * Election is a simple lock-protected takeover, same pattern as
19
+ * global-ai-budget.ts:
20
+ * - No record, a dead PID, or a stale heartbeat (>SUPERVISOR_STALE_MS) →
21
+ * the calling daemon takes over.
22
+ * - A live supervisor with a fresh heartbeat → the calling daemon is not
23
+ * elected; it does nothing (never overwrites a healthy supervisor).
24
+ *
25
+ * The registry lives under the user's home directory so every worktree's
26
+ * daemon can see it:
27
+ *
28
+ * ~/.claude-flow/supervisors/<repositoryId>.json
29
+ */
30
+ export declare const SUPERVISOR_STALE_MS: number;
31
+ export interface SupervisorRecord {
32
+ worktreeRoot: string;
33
+ pid: number;
34
+ electedAt: number;
35
+ lastHeartbeat: number;
36
+ }
37
+ export interface SupervisorElectionResult {
38
+ isSupervisor: boolean;
39
+ record: SupervisorRecord | null;
40
+ }
41
+ export declare class RepoSupervisorRegistry {
42
+ private readonly dir;
43
+ constructor(options?: {
44
+ baseDir?: string;
45
+ });
46
+ private fileFor;
47
+ private ensureDir;
48
+ private withLock;
49
+ private readRecord;
50
+ private writeRecord;
51
+ private isStale;
52
+ /**
53
+ * Attempt election (or renewal, if this process already holds it). Safe
54
+ * and cheap to call on every daemon tick — a no-op write when nothing
55
+ * needs to change would still cost a lock+read+write, so callers should
56
+ * still throttle to their own heartbeat cadence rather than calling this
57
+ * per-worker-tick.
58
+ */
59
+ electOrRenew(repositoryId: string, worktreeRoot: string): Promise<SupervisorElectionResult>;
60
+ /** Cheap read-only check — does NOT renew or elect. */
61
+ isSupervisor(repositoryId: string, worktreeRoot: string): boolean;
62
+ /** Release supervisor status on graceful shutdown, so the next tick elsewhere can take over promptly. Best-effort. */
63
+ release(repositoryId: string, worktreeRoot: string): Promise<void>;
64
+ /** Snapshot for `daemon status --all`. Read-only, never mutates. */
65
+ getRecord(repositoryId: string): SupervisorRecord | null;
66
+ }
67
+ export declare function getRepoSupervisorRegistry(): RepoSupervisorRegistry;
68
+ /** Test hook: reset the singleton (e.g. after changing RUFLO_AI_BUDGET_DIR). */
69
+ export declare function resetRepoSupervisorRegistryForTests(): void;
70
+ //# sourceMappingURL=repo-supervisor.d.ts.map