claude-flow 3.32.8 → 3.32.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/.claude/.proven-config-version +1 -0
  2. package/.claude/agents/MIGRATION_SUMMARY.md +221 -221
  3. package/.claude/agents/analysis/analyze-code-quality.md +57 -57
  4. package/.claude/agents/analysis/code-analyzer.md +188 -188
  5. package/.claude/agents/analysis/code-review/analyze-code-quality.md +57 -57
  6. package/.claude/agents/architecture/system-design/arch-system-design.md +35 -35
  7. package/.claude/agents/base-template-generator.md +41 -41
  8. package/.claude/agents/consensus/byzantine-coordinator.md +42 -42
  9. package/.claude/agents/consensus/crdt-synchronizer.md +976 -976
  10. package/.claude/agents/consensus/gossip-coordinator.md +42 -42
  11. package/.claude/agents/consensus/performance-benchmarker.md +830 -830
  12. package/.claude/agents/consensus/quorum-manager.md +802 -802
  13. package/.claude/agents/consensus/raft-manager.md +42 -42
  14. package/.claude/agents/consensus/security-manager.md +601 -601
  15. package/.claude/agents/core/coder.md +254 -254
  16. package/.claude/agents/core/planner.md +151 -151
  17. package/.claude/agents/core/researcher.md +173 -173
  18. package/.claude/agents/core/reviewer.md +308 -308
  19. package/.claude/agents/core/tester.md +299 -299
  20. package/.claude/agents/custom/test-long-runner.md +43 -43
  21. package/.claude/agents/data/ml/data-ml-model.md +75 -75
  22. package/.claude/agents/database-specialist.md +9 -9
  23. package/.claude/agents/development/backend/dev-backend-api.md +28 -28
  24. package/.claude/agents/development/dev-backend-api.md +177 -177
  25. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +51 -51
  26. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +62 -62
  27. package/.claude/agents/dual-mode/codex-coordinator.md +206 -206
  28. package/.claude/agents/dual-mode/codex-worker.md +190 -190
  29. package/.claude/agents/dual-mode/dual-orchestrator.md +253 -253
  30. package/.claude/agents/flow-nexus/app-store.md +87 -87
  31. package/.claude/agents/flow-nexus/authentication.md +68 -68
  32. package/.claude/agents/flow-nexus/challenges.md +80 -80
  33. package/.claude/agents/flow-nexus/neural-network.md +87 -87
  34. package/.claude/agents/flow-nexus/payments.md +82 -82
  35. package/.claude/agents/flow-nexus/sandbox.md +75 -75
  36. package/.claude/agents/flow-nexus/swarm.md +75 -75
  37. package/.claude/agents/flow-nexus/user-tools.md +95 -95
  38. package/.claude/agents/flow-nexus/workflow.md +83 -83
  39. package/.claude/agents/github/code-review-swarm.md +520 -520
  40. package/.claude/agents/github/github-modes.md +153 -153
  41. package/.claude/agents/github/issue-tracker.md +298 -298
  42. package/.claude/agents/github/multi-repo-swarm.md +524 -524
  43. package/.claude/agents/github/pr-manager.md +162 -162
  44. package/.claude/agents/github/project-board-sync.md +477 -477
  45. package/.claude/agents/github/release-manager.md +337 -337
  46. package/.claude/agents/github/release-swarm.md +550 -550
  47. package/.claude/agents/github/repo-architect.md +364 -364
  48. package/.claude/agents/github/swarm-issue.md +550 -550
  49. package/.claude/agents/github/swarm-pr.md +401 -401
  50. package/.claude/agents/github/sync-coordinator.md +424 -424
  51. package/.claude/agents/github/workflow-automation.md +604 -604
  52. package/.claude/agents/goal/agent.md +816 -816
  53. package/.claude/agents/goal/code-goal-planner.md +444 -444
  54. package/.claude/agents/goal/goal-planner.md +167 -167
  55. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +128 -128
  56. package/.claude/agents/hive-mind/queen-coordinator.md +201 -201
  57. package/.claude/agents/hive-mind/scout-explorer.md +240 -240
  58. package/.claude/agents/hive-mind/swarm-memory-manager.md +191 -191
  59. package/.claude/agents/hive-mind/worker-specialist.md +215 -215
  60. package/.claude/agents/neural/safla-neural.md +73 -73
  61. package/.claude/agents/optimization/benchmark-suite.md +662 -662
  62. package/.claude/agents/optimization/load-balancer.md +428 -428
  63. package/.claude/agents/optimization/performance-monitor.md +669 -669
  64. package/.claude/agents/optimization/resource-allocator.md +671 -671
  65. package/.claude/agents/optimization/topology-optimizer.md +805 -805
  66. package/.claude/agents/payments/agentic-payments.md +126 -126
  67. package/.claude/agents/project-coordinator.md +8 -8
  68. package/.claude/agents/python-specialist.md +9 -9
  69. package/.claude/agents/reasoning/agent.md +816 -816
  70. package/.claude/agents/reasoning/goal-planner.md +72 -72
  71. package/.claude/agents/security-auditor.md +9 -9
  72. package/.claude/agents/sona/sona-learning-optimizer.md +65 -65
  73. package/.claude/agents/sparc/architecture.md +452 -452
  74. package/.claude/agents/sparc/pseudocode.md +298 -298
  75. package/.claude/agents/sparc/refinement.md +503 -503
  76. package/.claude/agents/sparc/specification.md +257 -257
  77. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +87 -87
  78. package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
  79. package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
  80. package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
  81. package/.claude/agents/sublinear/performance-optimizer.md +367 -367
  82. package/.claude/agents/sublinear/trading-predictor.md +245 -245
  83. package/.claude/agents/swarm/adaptive-coordinator.md +363 -363
  84. package/.claude/agents/swarm/hierarchical-coordinator.md +299 -299
  85. package/.claude/agents/swarm/mesh-coordinator.md +362 -362
  86. package/.claude/agents/templates/automation-smart-agent.md +184 -184
  87. package/.claude/agents/templates/coordinator-swarm-init.md +82 -82
  88. package/.claude/agents/templates/github-pr-manager.md +154 -154
  89. package/.claude/agents/templates/implementer-sparc-coder.md +242 -242
  90. package/.claude/agents/templates/memory-coordinator.md +162 -162
  91. package/.claude/agents/templates/migration-plan.md +723 -723
  92. package/.claude/agents/templates/orchestrator-task.md +119 -119
  93. package/.claude/agents/templates/performance-analyzer.md +178 -178
  94. package/.claude/agents/templates/sparc-coordinator.md +162 -162
  95. package/.claude/agents/testing/production-validator.md +372 -372
  96. package/.claude/agents/testing/tdd-london-swarm.md +221 -221
  97. package/.claude/agents/testing/unit/tdd-london-swarm.md +221 -221
  98. package/.claude/agents/testing/validation/production-validator.md +372 -372
  99. package/.claude/agents/typescript-specialist.md +9 -9
  100. package/.claude/agents/v3/database-specialist.md +9 -9
  101. package/.claude/agents/v3/project-coordinator.md +8 -8
  102. package/.claude/agents/v3/python-specialist.md +9 -9
  103. package/.claude/agents/v3/test-architect.md +9 -9
  104. package/.claude/agents/v3/typescript-specialist.md +9 -9
  105. package/.claude/agents/v3/v3-integration-architect.md +311 -311
  106. package/.claude/agents/v3/v3-memory-specialist.md +280 -280
  107. package/.claude/agents/v3/v3-performance-engineer.md +362 -362
  108. package/.claude/agents/v3/v3-queen-coordinator.md +62 -62
  109. package/.claude/agents/v3/v3-security-architect.md +139 -139
  110. package/.claude/checkpoints/1767754460.json +8 -8
  111. package/.claude/commands/agents/README.md +10 -10
  112. package/.claude/commands/agents/agent-capabilities.md +21 -21
  113. package/.claude/commands/agents/agent-coordination.md +28 -28
  114. package/.claude/commands/agents/agent-spawning.md +28 -28
  115. package/.claude/commands/agents/agent-types.md +26 -26
  116. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
  117. package/.claude/commands/analysis/README.md +9 -9
  118. package/.claude/commands/analysis/bottleneck-detect.md +162 -162
  119. package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
  120. package/.claude/commands/analysis/performance-report.md +25 -25
  121. package/.claude/commands/analysis/token-efficiency.md +44 -44
  122. package/.claude/commands/analysis/token-usage.md +25 -25
  123. package/.claude/commands/automation/README.md +9 -9
  124. package/.claude/commands/automation/auto-agent.md +122 -122
  125. package/.claude/commands/automation/self-healing.md +105 -105
  126. package/.claude/commands/automation/session-memory.md +89 -89
  127. package/.claude/commands/automation/smart-agents.md +72 -72
  128. package/.claude/commands/automation/smart-spawn.md +25 -25
  129. package/.claude/commands/automation/workflow-select.md +25 -25
  130. package/.claude/commands/claude-flow-help.md +103 -103
  131. package/.claude/commands/claude-flow-memory.md +107 -107
  132. package/.claude/commands/claude-flow-swarm.md +205 -205
  133. package/.claude/commands/coordination/README.md +9 -9
  134. package/.claude/commands/coordination/agent-spawn.md +25 -25
  135. package/.claude/commands/coordination/init.md +44 -44
  136. package/.claude/commands/coordination/orchestrate.md +43 -43
  137. package/.claude/commands/coordination/spawn.md +45 -45
  138. package/.claude/commands/coordination/swarm-init.md +85 -85
  139. package/.claude/commands/coordination/task-orchestrate.md +25 -25
  140. package/.claude/commands/flow-nexus/app-store.md +123 -123
  141. package/.claude/commands/flow-nexus/challenges.md +119 -119
  142. package/.claude/commands/flow-nexus/login-registration.md +64 -64
  143. package/.claude/commands/flow-nexus/neural-network.md +133 -133
  144. package/.claude/commands/flow-nexus/payments.md +115 -115
  145. package/.claude/commands/flow-nexus/sandbox.md +82 -82
  146. package/.claude/commands/flow-nexus/swarm.md +86 -86
  147. package/.claude/commands/flow-nexus/user-tools.md +151 -151
  148. package/.claude/commands/flow-nexus/workflow.md +114 -114
  149. package/.claude/commands/github/README.md +11 -11
  150. package/.claude/commands/github/code-review-swarm.md +513 -513
  151. package/.claude/commands/github/code-review.md +25 -25
  152. package/.claude/commands/github/github-modes.md +146 -146
  153. package/.claude/commands/github/github-swarm.md +121 -121
  154. package/.claude/commands/github/issue-tracker.md +291 -291
  155. package/.claude/commands/github/issue-triage.md +25 -25
  156. package/.claude/commands/github/multi-repo-swarm.md +518 -518
  157. package/.claude/commands/github/pr-enhance.md +26 -26
  158. package/.claude/commands/github/pr-manager.md +169 -169
  159. package/.claude/commands/github/project-board-sync.md +470 -470
  160. package/.claude/commands/github/release-manager.md +337 -337
  161. package/.claude/commands/github/release-swarm.md +543 -543
  162. package/.claude/commands/github/repo-analyze.md +25 -25
  163. package/.claude/commands/github/repo-architect.md +366 -366
  164. package/.claude/commands/github/swarm-issue.md +481 -481
  165. package/.claude/commands/github/swarm-pr.md +284 -284
  166. package/.claude/commands/github/sync-coordinator.md +300 -300
  167. package/.claude/commands/github/workflow-automation.md +441 -441
  168. package/.claude/commands/hive-mind/README.md +17 -17
  169. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
  170. package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
  171. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
  172. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
  173. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
  174. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
  175. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
  176. package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
  177. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
  178. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
  179. package/.claude/commands/hive-mind/hive-mind.md +27 -27
  180. package/.claude/commands/hooks/README.md +11 -11
  181. package/.claude/commands/hooks/overview.md +57 -57
  182. package/.claude/commands/hooks/post-edit.md +117 -117
  183. package/.claude/commands/hooks/post-task.md +112 -112
  184. package/.claude/commands/hooks/pre-edit.md +113 -113
  185. package/.claude/commands/hooks/pre-task.md +111 -111
  186. package/.claude/commands/hooks/session-end.md +118 -118
  187. package/.claude/commands/hooks/setup.md +102 -102
  188. package/.claude/commands/memory/README.md +9 -9
  189. package/.claude/commands/memory/memory-persist.md +25 -25
  190. package/.claude/commands/memory/memory-search.md +25 -25
  191. package/.claude/commands/memory/memory-usage.md +25 -25
  192. package/.claude/commands/memory/neural.md +47 -47
  193. package/.claude/commands/monitoring/README.md +9 -9
  194. package/.claude/commands/monitoring/agent-metrics.md +25 -25
  195. package/.claude/commands/monitoring/agents.md +44 -44
  196. package/.claude/commands/monitoring/real-time-view.md +25 -25
  197. package/.claude/commands/monitoring/status.md +46 -46
  198. package/.claude/commands/monitoring/swarm-monitor.md +25 -25
  199. package/.claude/commands/optimization/README.md +9 -9
  200. package/.claude/commands/optimization/auto-topology.md +61 -61
  201. package/.claude/commands/optimization/cache-manage.md +25 -25
  202. package/.claude/commands/optimization/parallel-execute.md +25 -25
  203. package/.claude/commands/optimization/parallel-execution.md +49 -49
  204. package/.claude/commands/optimization/topology-optimize.md +25 -25
  205. package/.claude/commands/pair/README.md +260 -260
  206. package/.claude/commands/pair/commands.md +545 -545
  207. package/.claude/commands/pair/config.md +509 -509
  208. package/.claude/commands/pair/examples.md +511 -511
  209. package/.claude/commands/pair/modes.md +347 -347
  210. package/.claude/commands/pair/session.md +406 -406
  211. package/.claude/commands/pair/start.md +208 -208
  212. package/.claude/commands/sparc/analyzer.md +51 -51
  213. package/.claude/commands/sparc/architect.md +53 -53
  214. package/.claude/commands/sparc/ask.md +97 -97
  215. package/.claude/commands/sparc/batch-executor.md +54 -54
  216. package/.claude/commands/sparc/code.md +89 -89
  217. package/.claude/commands/sparc/coder.md +54 -54
  218. package/.claude/commands/sparc/debug.md +83 -83
  219. package/.claude/commands/sparc/debugger.md +54 -54
  220. package/.claude/commands/sparc/designer.md +53 -53
  221. package/.claude/commands/sparc/devops.md +109 -109
  222. package/.claude/commands/sparc/docs-writer.md +80 -80
  223. package/.claude/commands/sparc/documenter.md +54 -54
  224. package/.claude/commands/sparc/innovator.md +54 -54
  225. package/.claude/commands/sparc/integration.md +83 -83
  226. package/.claude/commands/sparc/mcp.md +117 -117
  227. package/.claude/commands/sparc/memory-manager.md +54 -54
  228. package/.claude/commands/sparc/optimizer.md +54 -54
  229. package/.claude/commands/sparc/orchestrator.md +131 -131
  230. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
  231. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
  232. package/.claude/commands/sparc/researcher.md +54 -54
  233. package/.claude/commands/sparc/reviewer.md +54 -54
  234. package/.claude/commands/sparc/security-review.md +80 -80
  235. package/.claude/commands/sparc/sparc-modes.md +174 -174
  236. package/.claude/commands/sparc/sparc.md +111 -111
  237. package/.claude/commands/sparc/spec-pseudocode.md +80 -80
  238. package/.claude/commands/sparc/supabase-admin.md +348 -348
  239. package/.claude/commands/sparc/swarm-coordinator.md +54 -54
  240. package/.claude/commands/sparc/tdd.md +54 -54
  241. package/.claude/commands/sparc/tester.md +54 -54
  242. package/.claude/commands/sparc/tutorial.md +79 -79
  243. package/.claude/commands/sparc/workflow-manager.md +54 -54
  244. package/.claude/commands/sparc.md +166 -166
  245. package/.claude/commands/stream-chain/pipeline.md +120 -120
  246. package/.claude/commands/stream-chain/run.md +69 -69
  247. package/.claude/commands/swarm/README.md +15 -15
  248. package/.claude/commands/swarm/analysis.md +95 -95
  249. package/.claude/commands/swarm/development.md +96 -96
  250. package/.claude/commands/swarm/examples.md +168 -168
  251. package/.claude/commands/swarm/maintenance.md +102 -102
  252. package/.claude/commands/swarm/optimization.md +117 -117
  253. package/.claude/commands/swarm/research.md +136 -136
  254. package/.claude/commands/swarm/swarm-analysis.md +8 -8
  255. package/.claude/commands/swarm/swarm-background.md +8 -8
  256. package/.claude/commands/swarm/swarm-init.md +19 -19
  257. package/.claude/commands/swarm/swarm-modes.md +8 -8
  258. package/.claude/commands/swarm/swarm-monitor.md +8 -8
  259. package/.claude/commands/swarm/swarm-spawn.md +19 -19
  260. package/.claude/commands/swarm/swarm-status.md +8 -8
  261. package/.claude/commands/swarm/swarm-strategies.md +8 -8
  262. package/.claude/commands/swarm/swarm.md +27 -27
  263. package/.claude/commands/swarm/testing.md +131 -131
  264. package/.claude/commands/training/README.md +9 -9
  265. package/.claude/commands/training/model-update.md +25 -25
  266. package/.claude/commands/training/neural-patterns.md +73 -73
  267. package/.claude/commands/training/neural-train.md +25 -25
  268. package/.claude/commands/training/pattern-learn.md +25 -25
  269. package/.claude/commands/training/specialization.md +62 -62
  270. package/.claude/commands/truth/start.md +142 -142
  271. package/.claude/commands/verify/check.md +49 -49
  272. package/.claude/commands/verify/start.md +127 -127
  273. package/.claude/commands/workflows/README.md +9 -9
  274. package/.claude/commands/workflows/development.md +77 -77
  275. package/.claude/commands/workflows/research.md +62 -62
  276. package/.claude/commands/workflows/workflow-create.md +25 -25
  277. package/.claude/commands/workflows/workflow-execute.md +25 -25
  278. package/.claude/commands/workflows/workflow-export.md +25 -25
  279. package/.claude/config/v3-dependency-optimization.json +265 -265
  280. package/.claude/config/v3-performance-targets.json +250 -250
  281. package/.claude/helpers/.LOCKED +2 -2
  282. package/.claude/helpers/.helpers-version +1 -0
  283. package/.claude/helpers/README.md +96 -96
  284. package/.claude/helpers/adr-compliance.sh +186 -186
  285. package/.claude/helpers/aggressive-microcompact.mjs +36 -36
  286. package/.claude/helpers/auto-commit.sh +178 -178
  287. package/.claude/helpers/auto-memory-hook.mjs +430 -430
  288. package/.claude/helpers/checkpoint-manager.sh +251 -251
  289. package/.claude/helpers/context-persistence-hook.mjs +2001 -2001
  290. package/.claude/helpers/daemon-manager.sh +252 -252
  291. package/.claude/helpers/ddd-tracker.sh +144 -144
  292. package/.claude/helpers/github-safe.js +156 -156
  293. package/.claude/helpers/github-setup.sh +45 -45
  294. package/.claude/helpers/guidance-hook.sh +13 -13
  295. package/.claude/helpers/guidance-hooks.sh +102 -102
  296. package/.claude/helpers/health-monitor.sh +108 -108
  297. package/.claude/helpers/helpers.manifest.json +13 -0
  298. package/.claude/helpers/hook-handler.cjs +464 -464
  299. package/.claude/helpers/intelligence.cjs +1058 -1058
  300. package/.claude/helpers/learning-hooks.sh +329 -329
  301. package/.claude/helpers/learning-optimizer.sh +127 -127
  302. package/.claude/helpers/learning-service.mjs +1144 -1144
  303. package/.claude/helpers/memory.cjs +84 -84
  304. package/.claude/helpers/metrics-db.mjs +503 -503
  305. package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
  306. package/.claude/helpers/pattern-consolidator.sh +86 -86
  307. package/.claude/helpers/perf-worker.sh +160 -160
  308. package/.claude/helpers/quick-start.sh +19 -19
  309. package/.claude/helpers/router.cjs +62 -62
  310. package/.claude/helpers/security-scanner.sh +127 -127
  311. package/.claude/helpers/session.cjs +125 -125
  312. package/.claude/helpers/setup-mcp.sh +18 -18
  313. package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
  314. package/.claude/helpers/statusline.cjs +211 -2
  315. package/.claude/helpers/swarm-comms.sh +353 -353
  316. package/.claude/helpers/swarm-hooks.sh +761 -761
  317. package/.claude/helpers/swarm-monitor.sh +210 -210
  318. package/.claude/helpers/sync-v3-metrics.sh +245 -245
  319. package/.claude/helpers/update-v3-progress.sh +165 -165
  320. package/.claude/helpers/v3-quick-status.sh +57 -57
  321. package/.claude/helpers/v3.sh +110 -110
  322. package/.claude/helpers/validate-v3-config.sh +215 -215
  323. package/.claude/helpers/worker-manager.sh +170 -170
  324. package/.claude/mcp.json +12 -12
  325. package/.claude/proven-config.json +42 -0
  326. package/.claude/settings.json +284 -284
  327. package/.claude/settings.json.bak +526 -526
  328. package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
  329. package/.claude/skills/agentdb-learning/SKILL.md +545 -545
  330. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
  331. package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
  332. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
  333. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -645
  334. package/.claude/skills/browser/SKILL.md +204 -204
  335. package/.claude/skills/dual-mode/README.md +71 -71
  336. package/.claude/skills/dual-mode/dual-collect.md +103 -103
  337. package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
  338. package/.claude/skills/dual-mode/dual-spawn.md +81 -81
  339. package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
  340. package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
  341. package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
  342. package/.claude/skills/github-code-review/SKILL.md +1125 -1125
  343. package/.claude/skills/github-multi-repo/SKILL.md +862 -862
  344. package/.claude/skills/github-project-management/SKILL.md +1262 -1262
  345. package/.claude/skills/github-release-management/SKILL.md +1064 -1064
  346. package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
  347. package/.claude/skills/hive-mind-advanced/SKILL.md +709 -709
  348. package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
  349. package/.claude/skills/pair-programming/SKILL.md +1202 -1202
  350. package/.claude/skills/performance-analysis/SKILL.md +560 -560
  351. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
  352. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
  353. package/.claude/skills/skill-builder/SKILL.md +910 -910
  354. package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
  355. package/.claude/skills/stream-chain/SKILL.md +560 -560
  356. package/.claude/skills/swarm-advanced/SKILL.md +970 -970
  357. package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
  358. package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
  359. package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
  360. package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
  361. package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
  362. package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
  363. package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
  364. package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
  365. package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
  366. package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
  367. package/.claude/skills/verification-quality/SKILL.md +691 -691
  368. package/.claude/skills/worker-benchmarks/SKILL.md +129 -129
  369. package/.claude/skills/worker-integration/SKILL.md +147 -147
  370. package/.claude/statusline-command.sh +176 -176
  371. package/.claude/statusline.mjs +109 -109
  372. package/.claude/statusline.sh +431 -431
  373. package/.claude/workflows/full-system-test.js +65 -65
  374. package/.claude/workflows/intelligence-system-hardening.js +120 -120
  375. package/.claude/workflows/plugin-contract-audit.js +91 -91
  376. package/.claude-plugin/README.md +720 -720
  377. package/.claude-plugin/docs/INSTALLATION.md +261 -261
  378. package/.claude-plugin/docs/PLUGIN_SUMMARY.md +361 -361
  379. package/.claude-plugin/docs/QUICKSTART.md +361 -361
  380. package/.claude-plugin/docs/STRUCTURE.md +128 -128
  381. package/.claude-plugin/hooks/hooks.json +79 -77
  382. package/.claude-plugin/marketplace.json +185 -185
  383. package/.claude-plugin/plugin.json +71 -71
  384. package/.claude-plugin/scripts/install.sh +234 -234
  385. package/.claude-plugin/scripts/ruflo-hook.cjs +166 -166
  386. package/.claude-plugin/scripts/ruflo-hook.sh +52 -52
  387. package/.claude-plugin/scripts/uninstall.sh +36 -36
  388. package/.claude-plugin/scripts/verify.sh +108 -108
  389. package/LICENSE +21 -21
  390. package/README.md +419 -419
  391. package/bin/cli.js +11 -11
  392. package/bin/npx-repair.js +7 -7
  393. package/bin/npx-safe-launch.js +9 -9
  394. package/package.json +192 -186
  395. package/v3/@claude-flow/cli/README.md +419 -419
  396. package/v3/@claude-flow/cli/bin/cli.js +314 -314
  397. package/v3/@claude-flow/cli/bin/mcp-server.js +224 -224
  398. package/v3/@claude-flow/cli/bin/preinstall.cjs +2 -2
  399. package/v3/@claude-flow/cli/catalog-manifest.json +2 -2
  400. package/v3/@claude-flow/cli/dist/src/autopilot-state.js +24 -7
  401. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.js +24 -24
  402. package/v3/@claude-flow/cli/dist/src/business-pods/bbs-budget-tracker.js +53 -53
  403. package/v3/@claude-flow/cli/dist/src/commands/completions.js +409 -409
  404. package/v3/@claude-flow/cli/dist/src/commands/daemon.js +44 -44
  405. package/v3/@claude-flow/cli/dist/src/commands/doctor.js +267 -20
  406. package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +26 -26
  407. package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +97 -97
  408. package/v3/@claude-flow/cli/dist/src/commands/hooks.js +74 -11
  409. package/v3/@claude-flow/cli/dist/src/commands/init.js +202 -34
  410. package/v3/@claude-flow/cli/dist/src/commands/memory.js +12 -1
  411. package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +23 -23
  412. package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +31 -31
  413. package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +14 -14
  414. package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +115 -115
  415. package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +99 -99
  416. package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
  417. package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +624 -624
  418. package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +38 -38
  419. package/v3/@claude-flow/cli/dist/src/config/proven-config.js +2 -2
  420. package/v3/@claude-flow/cli/dist/src/funnel/disclosure.js +13 -2
  421. package/v3/@claude-flow/cli/dist/src/funnel/message-transport.d.ts +11 -4
  422. package/v3/@claude-flow/cli/dist/src/funnel/message-transport.js +11 -4
  423. package/v3/@claude-flow/cli/dist/src/funnel/messages.d.ts +12 -10
  424. package/v3/@claude-flow/cli/dist/src/funnel/messages.js +83 -11
  425. package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +231 -231
  426. package/v3/@claude-flow/cli/dist/src/init/executor.js +453 -453
  427. package/v3/@claude-flow/cli/dist/src/init/helper-signing.js +2 -2
  428. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +751 -751
  429. package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +24 -24
  430. package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +15 -15
  431. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-intent-tools.js +19 -19
  432. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-tools.js +8 -0
  433. package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +21 -0
  434. package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js +4 -3
  435. package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.d.ts +9 -0
  436. package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.js +35 -22
  437. package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +189 -93
  438. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +479 -407
  439. package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +5 -5
  440. package/v3/@claude-flow/cli/dist/src/parser.js +25 -9
  441. package/v3/@claude-flow/cli/dist/src/proxy/verify.js +2 -2
  442. package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
  443. package/v3/@claude-flow/cli/dist/src/services/distill-tuning.js +7 -7
  444. package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
  445. package/v3/@claude-flow/cli/dist/src/services/memory-distillation.js +4 -4
  446. package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +7 -4
  447. package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
  448. package/v3/@claude-flow/cli/package.json +137 -135
  449. package/v3/@claude-flow/guidance/README.md +1195 -1195
  450. package/v3/@claude-flow/guidance/package.json +198 -198
  451. package/v3/@claude-flow/shared/README.md +323 -323
  452. package/v3/@claude-flow/shared/dist/events/event-store.js +31 -31
  453. package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.js +3 -3
  454. package/v3/@claude-flow/shared/package.json +43 -43
  455. package/v3/README.md +493 -493
@@ -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);
@@ -5,7 +5,7 @@
5
5
  * Created with ruv.io
6
6
  */
7
7
  import { output } from '../output.js';
8
- import { existsSync, readFileSync, statSync } from 'fs';
8
+ import { existsSync, readFileSync, statSync, openSync, readSync, closeSync } from 'fs';
9
9
  import { join, dirname } from 'path';
10
10
  import { fileURLToPath } from 'url';
11
11
  import { createHash } from 'crypto';
@@ -216,6 +216,16 @@ async function checkDaemonStatus() {
216
216
  }
217
217
  }
218
218
  // Check memory database
219
+ //
220
+ // #2737: renamed the reported row from "Memory Database" to "Memory Database
221
+ // Presence" — this check is existsSync()+statSync() ONLY, it never opens the
222
+ // file or queries it, so it PASSES for any file that exists and can be
223
+ // stat'd, corrupt or not. It was the ONLY memory probe in the default
224
+ // `allChecks` run (the real integrity checks were --component memory only),
225
+ // so a corrupt .swarm/memory.db could sail through a bare `doctor` run as
226
+ // "healthy". The name change makes the check's actual scope honest; the
227
+ // behavior below is unchanged. See checkMemoryStructuralIntegrity below for
228
+ // the new default-run check that actually opens the file.
219
229
  async function checkMemoryDatabase() {
220
230
  // Authoritative path comes from `getMemoryRoot()` (honors
221
231
  // `CLAUDE_FLOW_MEMORY_PATH`, claude-flow.config.json's `memory.persistPath`,
@@ -238,14 +248,14 @@ async function checkMemoryDatabase() {
238
248
  try {
239
249
  const stats = statSync(dbPath);
240
250
  const sizeMB = (stats.size / 1024 / 1024).toFixed(2);
241
- return { name: 'Memory Database', status: 'pass', message: `${dbPath} (${sizeMB} MB)` };
251
+ return { name: 'Memory Database Presence', status: 'pass', message: `${dbPath} (${sizeMB} MB) — existence/size only, not a health check (see Memory Structural Integrity)` };
242
252
  }
243
253
  catch {
244
- return { name: 'Memory Database', status: 'warn', message: `${dbPath} (unable to stat)` };
254
+ return { name: 'Memory Database Presence', status: 'warn', message: `${dbPath} (unable to stat)` };
245
255
  }
246
256
  }
247
257
  }
248
- return { name: 'Memory Database', status: 'warn', message: 'Not initialized', fix: 'claude-flow memory configure --backend hybrid' };
258
+ return { name: 'Memory Database Presence', status: 'warn', message: 'Not initialized', fix: 'claude-flow memory configure --backend hybrid' };
249
259
  }
250
260
  // ═══════════════════════════════════════════════════════════════════════════
251
261
  // #2677 — memory doctor: functional checks (stuinfla)
@@ -305,46 +315,282 @@ async function tryOpenSqlJs(dbPath) {
305
315
  return null;
306
316
  }
307
317
  }
308
- // Check 1 sql.js can open it AND PRAGMA integrity_check returns 'ok'.
309
- // Two fail modes handled distinctly per "UNKNOWN is never PASS":
310
- // - Open fails: warn ("cannot open; encrypted DB or corrupt — doctor
311
- // can't distinguish from this side")
312
- // - Open succeeds but pragma != 'ok': fail (definite corruption)
318
+ // ── #2737 shared helpers: encryption-at-rest carve-out ─────────────────────
319
+ //
320
+ // "file is not a database" / "malformed" from sql.js or better-sqlite3 is
321
+ // EXACTLY the signal a legitimately RFE1-encrypted-at-rest memory.db also
322
+ // produces when opened without decrypting (ADR-096). Before either the new
323
+ // default-run check or the strengthened checkMemoryIntegrity below concludes
324
+ // "malformed = fail", they sniff for the RFE1 magic using the SAME detector
325
+ // checkEncryptionAtRest uses (isEncryptedBlob), so the two checks can never
326
+ // disagree about what counts as "encrypted".
327
+ /** Read just the first `len` bytes of a file without loading the whole file
328
+ * into memory — a multi-GB memory.db shouldn't get fully buffered just to
329
+ * check a 4-byte magic. Returns fewer bytes (or empty) when the file is
330
+ * shorter than `len`; isEncryptedBlob() correctly treats a too-short blob
331
+ * as "not encrypted", so callers don't need to special-case that. */
332
+ function readHeaderBytes(path, len) {
333
+ const fd = openSync(path, 'r');
334
+ try {
335
+ const buf = Buffer.alloc(len);
336
+ const bytesRead = readSync(fd, buf, 0, len, 0);
337
+ return buf.subarray(0, bytesRead);
338
+ }
339
+ finally {
340
+ closeSync(fd);
341
+ }
342
+ }
343
+ // RFE1 wire format is magic(4) + iv(12) + ciphertext(N) + tag(16); the
344
+ // shortest possible blob is 32 bytes. 64 gives headroom without importing
345
+ // vault.ts's private MIN_BLOB_LEN constant.
346
+ const ENCRYPTION_SNIFF_LEN = 64;
347
+ /** True iff `dbPath` is a legitimately RFE1-encrypted-at-rest file. A read
348
+ * failure (permissions, races) is treated as "not encrypted" — callers
349
+ * still hit their own open/query error handling right after, so nothing
350
+ * gets silently swallowed. */
351
+ function isMemoryDbEncryptedAtRest(dbPath) {
352
+ try {
353
+ return isEncryptedBlob(readHeaderBytes(dbPath, ENCRYPTION_SNIFF_LEN));
354
+ }
355
+ catch {
356
+ return false;
357
+ }
358
+ }
359
+ // #2737 part 1 — bare `doctor` (no --component flag) never actually opened
360
+ // memory.db: checkMemoryDatabase above is existsSync()+statSync() only, so
361
+ // it PASSES on any file that exists and can be stat'd, corrupt or not, and
362
+ // it was the ONLY memory probe `allChecks` ran. The real integrity checks
363
+ // (checkMemoryIntegrity/Content/EmbeddingCoverage below) were, and remain,
364
+ // --component memory only.
365
+ //
366
+ // This is a NEW, cheaper, native check added to the default `allChecks` run
367
+ // (not a replacement for the deep trio):
368
+ // - better-sqlite3 (native) instead of sql.js: it's WAL-aware because
369
+ // SQLite itself resolves any sibling -wal file next to the main image;
370
+ // sql.js is WAL-blind — tryOpenSqlJs() above only readFileSync()s the
371
+ // main file and hands the raw bytes to the WASM build, so any
372
+ // committed-but-not-checkpointed rows sitting in a -wal file are
373
+ // invisible to it.
374
+ // - PRAGMA quick_check, not integrity_check: per sqlite.org, quick_check
375
+ // "is like integrity_check except that it does not verify UNIQUE
376
+ // constraints and does not verify that index content matches table
377
+ // content" — bounded enough to run unconditionally on every bare
378
+ // `doctor` call. The full integrity_check (with those extra
379
+ // cross-checks) is what the strengthened checkMemoryIntegrity below
380
+ // runs when better-sqlite3 is available.
381
+ // Explicitly labeled "structural-only" in both the row name and every
382
+ // message so nobody mistakes this cheap default-run probe for the deeper
383
+ // --component memory one.
384
+ async function checkMemoryStructuralIntegrity() {
385
+ const NAME = 'Memory Structural Integrity (quick_check)';
386
+ const dbPath = await resolveMemoryDbPath();
387
+ if (!dbPath) {
388
+ // Not-yet-initialized project — Memory Database Presence above already
389
+ // surfaces this; "UNKNOWN is never PASS" still applies, so this stays a
390
+ // warn rather than a silent skip, but doesn't pile on a second red for
391
+ // the same root cause.
392
+ return {
393
+ name: NAME,
394
+ status: 'warn',
395
+ message: 'no memory.db found (see Memory Database Presence above) — structural-only check skipped',
396
+ };
397
+ }
398
+ // Encryption-at-rest carve-out (#2737 part 3) — see helpers above.
399
+ if (isMemoryDbEncryptedAtRest(dbPath)) {
400
+ return {
401
+ name: NAME,
402
+ status: 'warn',
403
+ message: `${dbPath} — RFE1-encrypted at rest; structural-only check can't run without decrypting (expected, not corruption — see Encryption at Rest)`,
404
+ };
405
+ }
406
+ let Database;
407
+ try {
408
+ Database = (await import('better-sqlite3')).default;
409
+ }
410
+ catch {
411
+ return {
412
+ name: NAME,
413
+ status: 'warn',
414
+ message: `${dbPath} — better-sqlite3 not installed; structural-only check skipped (optional native module)`,
415
+ fix: 'npm install better-sqlite3 (enables WAL-aware structural checks on every `doctor` run)',
416
+ };
417
+ }
418
+ let db;
419
+ try {
420
+ db = new Database(dbPath, { readonly: true, fileMustExist: true });
421
+ }
422
+ catch (e) {
423
+ const msg = e.message || String(e);
424
+ // Encryption already ruled out above — an unencrypted file
425
+ // better-sqlite3 can't even open is definitive corruption.
426
+ // #2737 part 3: fail, not warn.
427
+ return {
428
+ name: NAME,
429
+ status: 'fail',
430
+ message: `${dbPath} — better-sqlite3 failed to open: ${msg} (unencrypted; definitively malformed) [structural-only]`,
431
+ fix: 'back up .swarm/memory.db then `claude-flow memory init --force`',
432
+ };
433
+ }
434
+ try {
435
+ const rows = db.pragma('quick_check');
436
+ const values = rows.map((r) => String(Object.values(r)[0]));
437
+ if (values.length === 1 && values[0] === 'ok') {
438
+ return {
439
+ name: NAME,
440
+ status: 'pass',
441
+ message: `${dbPath} — PRAGMA quick_check: ok [structural-only, native + WAL-aware]`,
442
+ };
443
+ }
444
+ return {
445
+ name: NAME,
446
+ status: 'fail',
447
+ message: `${dbPath} — PRAGMA quick_check: ${values.slice(0, 3).join('; ')}${values.length > 3 ? ` (+${values.length - 3} more)` : ''} [structural-only]`,
448
+ fix: 'back up .swarm/memory.db then `claude-flow memory init --force`',
449
+ };
450
+ }
451
+ catch (e) {
452
+ const msg = e.message || String(e);
453
+ // Encryption ruled out above; DB opened but the pragma itself threw —
454
+ // still definitive, unencrypted breakage. Fail, not warn.
455
+ return {
456
+ name: NAME,
457
+ status: 'fail',
458
+ message: `${dbPath} — quick_check probe threw: ${msg} (unencrypted) [structural-only]`,
459
+ fix: 'back up .swarm/memory.db then `claude-flow memory init --force`',
460
+ };
461
+ }
462
+ finally {
463
+ try {
464
+ db.close();
465
+ }
466
+ catch { /* best-effort */ }
467
+ }
468
+ }
469
+ // Check 1 (--component memory, deep path) — #2737 part 2 strengthens this:
470
+ // prefer native better-sqlite3 PRAGMA integrity_check (adds index↔table
471
+ // cross-checking + UNIQUE verification that quick_check above deliberately
472
+ // skips, and is WAL-aware — see checkMemoryStructuralIntegrity's comment)
473
+ // when better-sqlite3 is available, falling back to the original sql.js
474
+ // probe when it's not. The sql.js fallback is main-image-only (WAL-blind);
475
+ // its message says so explicitly so operators know its limits.
476
+ //
477
+ // #2737 part 3: with the encryption carve-out applied up front on BOTH
478
+ // paths, a "file is not a database" / "malformed" result is now definitive,
479
+ // unencrypted corruption in every branch below — fail, not warn (the
480
+ // previous version treated this as an ambiguous warn because it couldn't
481
+ // tell corruption from encryption; that ambiguity is what the carve-out
482
+ // resolves).
313
483
  async function checkMemoryIntegrity() {
314
484
  const dbPath = await resolveMemoryDbPath();
315
485
  if (!dbPath)
316
- return { name: 'Memory Integrity', status: 'warn', message: 'no memory.db found (see Memory Database check above)' };
486
+ return { name: 'Memory Integrity', status: 'warn', message: 'no memory.db found (see Memory Database Presence check above)' };
487
+ if (isMemoryDbEncryptedAtRest(dbPath)) {
488
+ return {
489
+ name: 'Memory Integrity',
490
+ status: 'warn',
491
+ message: `${dbPath} — RFE1-encrypted at rest; integrity check can't run without decrypting (expected, not corruption — see Encryption at Rest)`,
492
+ };
493
+ }
494
+ // Prefer native better-sqlite3 (WAL-aware, full integrity_check). Module
495
+ // load is isolated in its own try/catch so ONLY "not installed" falls
496
+ // through to the sql.js fallback below — once the module loaded, any
497
+ // open/query failure is resolved (fail) right here, not silently
498
+ // reclassified as "sql.js fallback, main-image-only" by an outer catch.
499
+ let Database;
500
+ try {
501
+ Database = (await import('better-sqlite3')).default;
502
+ }
503
+ catch {
504
+ Database = null; // not installed — fall through to the sql.js fallback below.
505
+ }
506
+ if (Database) {
507
+ let db;
508
+ try {
509
+ db = new Database(dbPath, { readonly: true, fileMustExist: true });
510
+ }
511
+ catch (e) {
512
+ const msg = e.message || String(e);
513
+ return {
514
+ name: 'Memory Integrity',
515
+ status: 'fail',
516
+ message: `${dbPath} — better-sqlite3 failed to open: ${msg} (unencrypted; definitively malformed) [native, WAL-aware]`,
517
+ fix: 'back up .swarm/memory.db then `claude-flow memory init --force`',
518
+ };
519
+ }
520
+ try {
521
+ const rows = db.pragma('integrity_check');
522
+ const values = rows.map((r) => String(Object.values(r)[0]));
523
+ if (values.length === 1 && values[0] === 'ok') {
524
+ return { name: 'Memory Integrity', status: 'pass', message: `${dbPath} — PRAGMA integrity_check: ok [native, WAL-aware]` };
525
+ }
526
+ return {
527
+ name: 'Memory Integrity',
528
+ status: 'fail',
529
+ message: `${dbPath} — PRAGMA integrity_check: ${values.slice(0, 3).join('; ')}${values.length > 3 ? ` (+${values.length - 3} more)` : ''} [native, WAL-aware]`,
530
+ fix: 'back up .swarm/memory.db then `claude-flow memory init --force`',
531
+ };
532
+ }
533
+ catch (e) {
534
+ // DB opened but the pragma itself threw — still definitive,
535
+ // unencrypted breakage (encryption ruled out above). Fail, not warn,
536
+ // and NOT a fall-through to the sql.js fallback: better-sqlite3 IS
537
+ // installed and just gave us the answer.
538
+ const msg = e.message || String(e);
539
+ return {
540
+ name: 'Memory Integrity',
541
+ status: 'fail',
542
+ message: `${dbPath} — integrity_check probe threw: ${msg} (unencrypted; definitively malformed) [native, WAL-aware]`,
543
+ fix: 'back up .swarm/memory.db then `claude-flow memory init --force`',
544
+ };
545
+ }
546
+ finally {
547
+ try {
548
+ db.close();
549
+ }
550
+ catch { /* best-effort */ }
551
+ }
552
+ }
553
+ // Fallback: sql.js — main-image-only (WAL-blind). tryOpenSqlJs()
554
+ // readFileSync()s the base file directly, so any committed-but-not-
555
+ // checkpointed rows sitting in a sibling -wal file are invisible here.
556
+ // Install better-sqlite3 for the WAL-aware path above.
317
557
  const db = await tryOpenSqlJs(dbPath);
318
558
  if (!db) {
559
+ // Encryption already ruled out above — an unencrypted file sql.js can't
560
+ // even open is definitive corruption too.
319
561
  return {
320
562
  name: 'Memory Integrity',
321
- status: 'warn',
322
- message: `${dbPath} — sql.js can't open (encrypted DB or corrupt; doctor can't tell which from outside)`,
323
- fix: 'if encrypted: expected. if not: back up + `claude-flow memory init --force` to rebuild',
563
+ status: 'fail',
564
+ message: `${dbPath} — sql.js can't open (unencrypted; definitively malformed) [main-image-only fallback install better-sqlite3 for WAL-aware checking]`,
565
+ fix: 'back up .swarm/memory.db then `claude-flow memory init --force`',
324
566
  };
325
567
  }
326
568
  try {
327
569
  const res = db.exec('PRAGMA integrity_check');
328
570
  const rows = res[0]?.values?.map((v) => String(v[0])) ?? [];
329
571
  if (rows.length === 1 && rows[0] === 'ok') {
330
- return { name: 'Memory Integrity', status: 'pass', message: `${dbPath} — PRAGMA integrity_check: ok` };
572
+ return { name: 'Memory Integrity', status: 'pass', message: `${dbPath} — PRAGMA integrity_check: ok [main-image-only fallback — sql.js can't see WAL-only data; install better-sqlite3 for full coverage]` };
331
573
  }
332
574
  return {
333
575
  name: 'Memory Integrity',
334
576
  status: 'fail',
335
- message: `${dbPath} — PRAGMA integrity_check: ${rows.slice(0, 3).join('; ')}${rows.length > 3 ? ` (+${rows.length - 3} more)` : ''}`,
577
+ message: `${dbPath} — PRAGMA integrity_check: ${rows.slice(0, 3).join('; ')}${rows.length > 3 ? ` (+${rows.length - 3} more)` : ''} [main-image-only fallback]`,
336
578
  fix: 'back up .swarm/memory.db then `claude-flow memory init --force`',
337
579
  };
338
580
  }
339
581
  catch (e) {
340
582
  const msg = e.message || String(e);
341
- const encryptedOrCorrupt = msg.includes('file is not a database') || msg.includes('malformed');
583
+ const definitivelyMalformed = msg.includes('file is not a database') || msg.includes('malformed');
584
+ // Encryption already ruled out above, so — matched pattern or not —
585
+ // this is a query refusal on a file we KNOW isn't RFE1-encrypted.
586
+ // #2737 part 3: fail, not warn.
342
587
  return {
343
588
  name: 'Memory Integrity',
344
- status: 'warn',
345
- message: encryptedOrCorrupt
346
- ? `${dbPath} — DB refused query: ${msg} (encrypted DB or corruption; see Memory Integrity above)`
347
- : `${dbPath} — probe threw: ${msg}`,
589
+ status: 'fail',
590
+ message: definitivelyMalformed
591
+ ? `${dbPath} — DB refused query: ${msg} (unencrypted; definitively malformed) [main-image-only fallback]`
592
+ : `${dbPath} — probe threw: ${msg} (unencrypted — encryption ruled out above) [main-image-only fallback]`,
593
+ fix: 'back up .swarm/memory.db then `claude-flow memory init --force`',
348
594
  };
349
595
  }
350
596
  finally {
@@ -1715,6 +1961,7 @@ export const doctorCommand = {
1715
1961
  checkStaleSettingsNpx, // #2448 — runaway `npx @latest` in statusLine/hooks
1716
1962
  checkDaemonStatus,
1717
1963
  checkMemoryDatabase,
1964
+ checkMemoryStructuralIntegrity, // #2737 — bounded, native quick_check on every default run
1718
1965
  checkLearningBridge, // #2545 — can the auto-memory hook actually load @claude-flow/memory?
1719
1966
  checkApiKeys,
1720
1967
  checkMcpServers,
@@ -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`);