claude-flow 3.32.9 → 3.32.11

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 (451) 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 +156 -1
  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 -79
  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 -192
  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/embeddings.js +26 -26
  406. package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +97 -97
  407. package/v3/@claude-flow/cli/dist/src/commands/hooks.js +31 -10
  408. package/v3/@claude-flow/cli/dist/src/commands/init.js +202 -34
  409. package/v3/@claude-flow/cli/dist/src/commands/memory.js +12 -1
  410. package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +23 -23
  411. package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +31 -31
  412. package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +14 -14
  413. package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +115 -115
  414. package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +99 -99
  415. package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
  416. package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +624 -624
  417. package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +38 -38
  418. package/v3/@claude-flow/cli/dist/src/config/proven-config.js +2 -2
  419. package/v3/@claude-flow/cli/dist/src/funnel/disclosure.js +13 -2
  420. package/v3/@claude-flow/cli/dist/src/funnel/messages.d.ts +12 -10
  421. package/v3/@claude-flow/cli/dist/src/funnel/messages.js +83 -11
  422. package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +231 -231
  423. package/v3/@claude-flow/cli/dist/src/init/executor.js +453 -453
  424. package/v3/@claude-flow/cli/dist/src/init/helper-signing.js +2 -2
  425. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +751 -751
  426. package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +24 -24
  427. package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +15 -15
  428. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-intent-tools.js +19 -19
  429. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-tools.js +8 -0
  430. package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +21 -0
  431. package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js +4 -3
  432. package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.js +22 -22
  433. package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +248 -158
  434. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +407 -407
  435. package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +5 -5
  436. package/v3/@claude-flow/cli/dist/src/parser.js +25 -9
  437. package/v3/@claude-flow/cli/dist/src/proxy/verify.js +2 -2
  438. package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
  439. package/v3/@claude-flow/cli/dist/src/services/distill-tuning.js +7 -7
  440. package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
  441. package/v3/@claude-flow/cli/dist/src/services/memory-distillation.js +4 -4
  442. package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +7 -4
  443. package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
  444. package/v3/@claude-flow/cli/package.json +137 -137
  445. package/v3/@claude-flow/guidance/README.md +1195 -1195
  446. package/v3/@claude-flow/guidance/package.json +198 -198
  447. package/v3/@claude-flow/shared/README.md +323 -323
  448. package/v3/@claude-flow/shared/dist/events/event-store.js +31 -31
  449. package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.js +3 -3
  450. package/v3/@claude-flow/shared/package.json +43 -43
  451. package/v3/README.md +493 -493
@@ -23,28 +23,6 @@ import { createRequire } from 'node:module';
23
23
  let registryPromise = null;
24
24
  let registryInstance = null;
25
25
  let bridgeAvailable = null;
26
- // #2735 — the native-bridge -> sql.js whole-image fallback used to be
27
- // completely silent: a registry init failure cached `bridgeAvailable =
28
- // false` for the rest of the process, and a per-operation bridge exception
29
- // swallowed itself with a bare `catch { return null; }` — in both cases the
30
- // caller fell back to memory-initializer.ts's unsafe whole-image sql.js
31
- // path with zero diagnostic trail. When that path corrupted a database, the
32
- // demotion that caused it was structurally unknowable after the fact. Log
33
- // once per distinct reason (not once per call — a hot per-op catch could
34
- // otherwise spam stderr on every single memory operation) so the first
35
- // occurrence is attributable. Stderr only — never stdout, which callers may
36
- // be parsing as JSON.
37
- const loggedDemotions = new Set();
38
- function logDemotionOnce(where, reason) {
39
- const dedupeKey = `${where}:${reason}`;
40
- if (loggedDemotions.has(dedupeKey))
41
- return;
42
- loggedDemotions.add(dedupeKey);
43
- try {
44
- process.stderr.write(`[memory-bridge] demoted to sql.js fallback in ${where}: ${reason}\n`);
45
- }
46
- catch { /* stderr unavailable — nothing more we can do */ }
47
- }
48
26
  /**
49
27
  * Resolve database path with path traversal protection.
50
28
  * Only allows paths within or below the project's working directory,
@@ -87,6 +65,27 @@ function getDbPath(customPath) {
87
65
  }
88
66
  return resolved;
89
67
  }
68
+ /**
69
+ * Resolve AgentDB's native better-sqlite3 database path (#2786).
70
+ *
71
+ * AgentDB is opened by ControllerRegistry via native better-sqlite3, which
72
+ * requires a plaintext SQLite file. The sibling `memory.db` file written by
73
+ * `memory-initializer.ts` (`writeFileRestricted(..., {encrypt: true})`) is
74
+ * encrypted-at-rest when `CLAUDE_FLOW_ENCRYPT_AT_REST=1` — pointing native
75
+ * better-sqlite3 at it fails with "file is not a database" and silently
76
+ * disables `learningSystem`/`reasoningBank`.
77
+ *
78
+ * Give AgentDB a distinct filename in the same directory so both writers
79
+ * coexist: sql.js keeps `memory.db` (possibly encrypted); AgentDB owns
80
+ * `agentdb-memory.db`. Preserves the traversal protection in `getDbPath()`
81
+ * because we derive from its already-validated return value.
82
+ */
83
+ function getAgentDbPath() {
84
+ const dbPath = getDbPath();
85
+ if (dbPath === ':memory:')
86
+ return ':memory:';
87
+ return path.join(path.dirname(dbPath), 'agentdb-memory.db');
88
+ }
90
89
  /**
91
90
  * Generate a secure random ID for memory entries.
92
91
  */
@@ -121,7 +120,8 @@ async function getRegistry(dbPath) {
121
120
  };
122
121
  try {
123
122
  await registry.initialize({
124
- dbPath: dbPath || getDbPath(),
123
+ // #2786: use agentdb-memory.db (plaintext) so native better-sqlite3 doesn't hit the encrypted memory.db.
124
+ dbPath: dbPath || getAgentDbPath(),
125
125
  embeddingModel: 'Xenova/all-MiniLM-L6-v2',
126
126
  dimension: 384,
127
127
  vectorBackend: 'auto',
@@ -372,10 +372,9 @@ async function getRegistry(dbPath) {
372
372
  bridgeAvailable = true;
373
373
  return registry;
374
374
  }
375
- catch (err) {
375
+ catch {
376
376
  bridgeAvailable = false;
377
377
  registryPromise = null;
378
- logDemotionOnce('getRegistry (process-wide, cached for the rest of this process)', err instanceof Error ? err.message : String(err));
379
378
  return null;
380
379
  }
381
380
  })();
@@ -528,25 +527,25 @@ function getDb(registry) {
528
527
  // WeakSet so a new db instance re-ensures without a stale global flag.
529
528
  if (!_schemaEnsuredDbs.has(db)) {
530
529
  try {
531
- db.exec(`CREATE TABLE IF NOT EXISTS memory_entries (
532
- id TEXT PRIMARY KEY,
533
- key TEXT NOT NULL,
534
- namespace TEXT DEFAULT 'default',
535
- content TEXT NOT NULL,
536
- type TEXT DEFAULT 'semantic',
537
- embedding TEXT,
538
- embedding_model TEXT DEFAULT 'local',
539
- embedding_dimensions INTEGER,
540
- tags TEXT,
541
- metadata TEXT,
542
- owner_id TEXT,
543
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
544
- updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
545
- expires_at INTEGER,
546
- last_accessed_at INTEGER,
547
- access_count INTEGER DEFAULT 0,
548
- status TEXT DEFAULT 'active',
549
- UNIQUE(namespace, key)
530
+ db.exec(`CREATE TABLE IF NOT EXISTS memory_entries (
531
+ id TEXT PRIMARY KEY,
532
+ key TEXT NOT NULL,
533
+ namespace TEXT DEFAULT 'default',
534
+ content TEXT NOT NULL,
535
+ type TEXT DEFAULT 'semantic',
536
+ embedding TEXT,
537
+ embedding_model TEXT DEFAULT 'local',
538
+ embedding_dimensions INTEGER,
539
+ tags TEXT,
540
+ metadata TEXT,
541
+ owner_id TEXT,
542
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
543
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
544
+ expires_at INTEGER,
545
+ last_accessed_at INTEGER,
546
+ access_count INTEGER DEFAULT 0,
547
+ status TEXT DEFAULT 'active',
548
+ UNIQUE(namespace, key)
550
549
  )`);
551
550
  // Ensure indexes
552
551
  db.exec(`CREATE INDEX IF NOT EXISTS idx_bridge_ns ON memory_entries(namespace)`);
@@ -693,18 +692,47 @@ export async function bridgeStoreEntry(options) {
693
692
  // Embedding failed — store without
694
693
  }
695
694
  }
696
- // better-sqlite3 uses synchronous .run() with positional params
695
+ // #2775: strict-insert path now auto-resurrects soft-deleted tombstones
696
+ // via ON CONFLICT DO UPDATE ... WHERE status='deleted'. Rationale:
697
+ // `bridgeDeleteEntry` performs a soft delete (status='deleted'), so the
698
+ // `UNIQUE(namespace, key)` slot stays occupied — before this fix, a
699
+ // natural `delete → store` sequence hit UNIQUE, the catch below returned
700
+ // `null`, `storeEntry` fell back to the sql.js whole-image path, and the
701
+ // #2735 -wal/-shm sidecar guard refused with a message about a "native
702
+ // WAL connection" that had nothing to do with the actual failure.
703
+ //
704
+ // Semantics under the new strict-insert SQL:
705
+ // • no existing row → INSERT succeeds, changes = 1
706
+ // • existing row, status='deleted' → resurrected in-place, changes = 1
707
+ // • existing row, status='active' → ON CONFLICT WHERE=false suppresses
708
+ // the update, changes = 0 (checked
709
+ // below → typed "already exists"
710
+ // error, NEVER a null demotion).
711
+ // Upsert path (INSERT OR REPLACE) is unchanged.
697
712
  const insertSql = options.upsert
698
- ? `INSERT OR REPLACE INTO memory_entries (
699
- id, key, namespace, content, type,
700
- embedding, embedding_dimensions, embedding_model,
701
- tags, metadata, created_at, updated_at, expires_at, status
713
+ ? `INSERT OR REPLACE INTO memory_entries (
714
+ id, key, namespace, content, type,
715
+ embedding, embedding_dimensions, embedding_model,
716
+ tags, metadata, created_at, updated_at, expires_at, status
702
717
  ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`
703
- : `INSERT INTO memory_entries (
704
- id, key, namespace, content, type,
705
- embedding, embedding_dimensions, embedding_model,
706
- tags, metadata, created_at, updated_at, expires_at, status
707
- ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`;
718
+ : `INSERT INTO memory_entries (
719
+ id, key, namespace, content, type,
720
+ embedding, embedding_dimensions, embedding_model,
721
+ tags, metadata, created_at, updated_at, expires_at, status
722
+ ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')
723
+ ON CONFLICT(namespace, key) DO UPDATE SET
724
+ id = excluded.id,
725
+ content = excluded.content,
726
+ embedding = excluded.embedding,
727
+ embedding_dimensions = excluded.embedding_dimensions,
728
+ embedding_model = excluded.embedding_model,
729
+ tags = excluded.tags,
730
+ metadata = excluded.metadata,
731
+ created_at = excluded.created_at,
732
+ updated_at = excluded.updated_at,
733
+ expires_at = excluded.expires_at,
734
+ status = 'active'
735
+ WHERE memory_entries.status = 'deleted'`;
708
736
  // #1941: provision a `vector_indexes` row for this namespace before the
709
737
  // entry insert. AgentDB's HNSW/router keys lookups by namespace via this
710
738
  // table — if it has no row for e.g. `claude-memories`, `memory_search`
@@ -717,15 +745,27 @@ export async function bridgeStoreEntry(options) {
717
745
  }
718
746
  catch { /* vector_indexes may not exist on legacy DBs — fall through */ }
719
747
  const stmt = ctx.db.prepare(insertSql);
720
- stmt.run(id, key, namespace, value, embeddingJson, dimensions || null, model, tags.length > 0 ? JSON.stringify(tags) : null, '{}', now, now, ttl ? now + (ttl * 1000) : null);
748
+ const runResult = stmt.run(id, key, namespace, value, embeddingJson, dimensions || null, model, tags.length > 0 ? JSON.stringify(tags) : null, '{}', now, now, ttl ? now + (ttl * 1000) : null);
749
+ // #2775: strict insert against an ACTIVE existing row → changes === 0
750
+ // (the ON CONFLICT WHERE clause above suppressed the update). Surface
751
+ // this as a typed data-level error rather than a bridge failure —
752
+ // returning non-null so the caller does NOT demote to sql.js and does
753
+ // NOT trip the #2735 whole-image guard with a misleading message.
754
+ if (!options.upsert && (runResult?.changes ?? 0) === 0) {
755
+ return {
756
+ success: false,
757
+ id,
758
+ error: `key "${key}" already exists in namespace "${namespace}" — pass upsert=true (--upsert on the CLI) to update it`,
759
+ };
760
+ }
721
761
  // #2558: keep `vector_indexes.total_vectors` accurate so status/tooling
722
762
  // stop reporting "HNSW index: 0 vectors" while embedded entries exist.
723
763
  try {
724
764
  ctx.db
725
- .prepare(`UPDATE vector_indexes SET
726
- total_vectors = (SELECT COUNT(*) FROM memory_entries
727
- WHERE namespace = ? AND embedding IS NOT NULL),
728
- updated_at = ?
765
+ .prepare(`UPDATE vector_indexes SET
766
+ total_vectors = (SELECT COUNT(*) FROM memory_entries
767
+ WHERE namespace = ? AND embedding IS NOT NULL),
768
+ updated_at = ?
729
769
  WHERE name = ?`)
730
770
  .run(namespace, now, namespace);
731
771
  }
@@ -761,7 +801,24 @@ export async function bridgeStoreEntry(options) {
761
801
  };
762
802
  }
763
803
  catch (err) {
764
- logDemotionOnce('bridgeStoreEntry', err instanceof Error ? err.message : String(err));
804
+ // #2775: distinguish a data-level UNIQUE constraint violation (key
805
+ // already exists — expected outcome of a strict insert) from a real
806
+ // bridge failure (registry gone, DB locked, disk full, etc.). The
807
+ // ON CONFLICT clause on the strict-insert SQL above should normally
808
+ // convert UNIQUE hits into a `changes === 0` result, so reaching here
809
+ // with a UNIQUE error means the schema pre-dates the (namespace, key)
810
+ // unique index or the conflict target didn't match — treat it as a
811
+ // clean "already exists" so the caller never demotes to sql.js and
812
+ // never triggers the #2735 whole-image guard with a misleading
813
+ // "active native WAL connection" error.
814
+ const msg = err instanceof Error ? err.message : String(err);
815
+ if (/UNIQUE constraint failed/i.test(msg)) {
816
+ return {
817
+ success: false,
818
+ id: '',
819
+ error: `key "${options.key}" already exists in namespace "${options.namespace ?? 'default'}" — pass upsert=true (--upsert on the CLI) to update it`,
820
+ };
821
+ }
765
822
  return null;
766
823
  }
767
824
  }
@@ -799,11 +856,11 @@ export async function bridgeSearchEntries(options) {
799
856
  : '';
800
857
  let rows;
801
858
  try {
802
- const stmt = ctx.db.prepare(`
803
- SELECT id, key, namespace, content, embedding
804
- FROM memory_entries
805
- WHERE status = 'active' ${nsFilter}
806
- LIMIT 1000
859
+ const stmt = ctx.db.prepare(`
860
+ SELECT id, key, namespace, content, embedding
861
+ FROM memory_entries
862
+ WHERE status = 'active' ${nsFilter}
863
+ LIMIT 1000
807
864
  `);
808
865
  rows = effectiveNamespace !== 'all' ? stmt.all(effectiveNamespace) : stmt.all();
809
866
  }
@@ -924,12 +981,12 @@ export async function bridgeListEntries(options) {
924
981
  // List
925
982
  const entries = [];
926
983
  try {
927
- const stmt = ctx.db.prepare(`
928
- SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at
929
- FROM memory_entries
930
- WHERE ${statusFilter} ${nsFilter}
931
- ORDER BY updated_at DESC
932
- LIMIT ? OFFSET ?
984
+ const stmt = ctx.db.prepare(`
985
+ SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at
986
+ FROM memory_entries
987
+ WHERE ${statusFilter} ${nsFilter}
988
+ ORDER BY updated_at DESC
989
+ LIMIT ? OFFSET ?
933
990
  `);
934
991
  const rows = stmt.all(...nsParams, limit, offset);
935
992
  for (const row of rows) {
@@ -998,11 +1055,11 @@ export async function bridgeGetEntry(options) {
998
1055
  }
999
1056
  let row;
1000
1057
  try {
1001
- const stmt = ctx.db.prepare(`
1002
- SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
1003
- FROM memory_entries
1004
- WHERE status = 'active' AND key = ? AND namespace = ?
1005
- LIMIT 1
1058
+ const stmt = ctx.db.prepare(`
1059
+ SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
1060
+ FROM memory_entries
1061
+ WHERE status = 'active' AND key = ? AND namespace = ?
1062
+ LIMIT 1
1006
1063
  `);
1007
1064
  row = stmt.get(key, namespace);
1008
1065
  }
@@ -1041,8 +1098,7 @@ export async function bridgeGetEntry(options) {
1041
1098
  await cacheSet(registry, cacheKey, entry);
1042
1099
  return { success: true, found: true, cacheHit: false, entry };
1043
1100
  }
1044
- catch (err) {
1045
- logDemotionOnce('bridgeGetEntry', err instanceof Error ? err.message : String(err));
1101
+ catch {
1046
1102
  return null;
1047
1103
  }
1048
1104
  }
@@ -1067,16 +1123,31 @@ export async function bridgeDeleteEntry(options) {
1067
1123
  // Soft delete using parameterized query
1068
1124
  let changes = 0;
1069
1125
  try {
1070
- const result = ctx.db.prepare(`
1071
- UPDATE memory_entries
1072
- SET status = 'deleted', updated_at = ?
1073
- WHERE key = ? AND namespace = ? AND status = 'active'
1126
+ const result = ctx.db.prepare(`
1127
+ UPDATE memory_entries
1128
+ SET status = 'deleted', updated_at = ?
1129
+ WHERE key = ? AND namespace = ? AND status = 'active'
1074
1130
  `).run(Date.now(), key, namespace);
1075
1131
  changes = result?.changes ?? 0;
1076
1132
  }
1077
1133
  catch {
1078
1134
  return null;
1079
1135
  }
1136
+ // #2775: mirror the #2558 PASSIVE checkpoint after the delete. Without
1137
+ // this, the tombstone stays WAL-only until some unrelated store
1138
+ // eventually checkpoints — meaning WAL-blind readers (sql.js fallback,
1139
+ // statusline's read-only sqlite3 counter) keep serving the deleted row.
1140
+ // If the process exits before another checkpoint, on live multi-worktree
1141
+ // installations we've observed rows `active` in the main image but
1142
+ // `deleted` in the -wal, or rows existing only in an orphaned -wal
1143
+ // invisible to every image reader. PASSIVE flushes committed pages
1144
+ // without blocking writers. Best-effort, never fatal.
1145
+ try {
1146
+ if (typeof ctx.db.pragma === 'function') {
1147
+ ctx.db.pragma('wal_checkpoint(PASSIVE)');
1148
+ }
1149
+ }
1150
+ catch { /* non-WAL, busy, or unsupported — non-fatal */ }
1080
1151
  // Phase 2: Invalidate cache
1081
1152
  const safeNs = String(namespace).replace(/:/g, '_');
1082
1153
  const safeKey = String(key).replace(/:/g, '_');
@@ -1102,8 +1173,7 @@ export async function bridgeDeleteEntry(options) {
1102
1173
  guarded: true,
1103
1174
  };
1104
1175
  }
1105
- catch (err) {
1106
- logDemotionOnce('bridgeDeleteEntry', err instanceof Error ? err.message : String(err));
1176
+ catch {
1107
1177
  return null;
1108
1178
  }
1109
1179
  }
@@ -1154,8 +1224,7 @@ export async function bridgePurgeNamespace(options) {
1154
1224
  guarded: true,
1155
1225
  };
1156
1226
  }
1157
- catch (err) {
1158
- logDemotionOnce('bridgePurgeNamespace', err instanceof Error ? err.message : String(err));
1227
+ catch {
1159
1228
  return null;
1160
1229
  }
1161
1230
  }
@@ -1285,11 +1354,11 @@ export async function bridgeSearchHNSW(queryEmbedding, options, dbPath) {
1285
1354
  : '';
1286
1355
  let rows;
1287
1356
  try {
1288
- const stmt = ctx.db.prepare(`
1289
- SELECT id, key, namespace, content, embedding
1290
- FROM memory_entries
1291
- WHERE status = 'active' AND embedding IS NOT NULL ${nsFilter}
1292
- LIMIT 10000
1357
+ const stmt = ctx.db.prepare(`
1358
+ SELECT id, key, namespace, content, embedding
1359
+ FROM memory_entries
1360
+ WHERE status = 'active' AND embedding IS NOT NULL ${nsFilter}
1361
+ LIMIT 10000
1293
1362
  `);
1294
1363
  rows = nsFilter
1295
1364
  ? stmt.all(options.namespace)
@@ -1341,12 +1410,12 @@ export async function bridgeAddToHNSW(id, embedding, entry, dbPath) {
1341
1410
  try {
1342
1411
  const now = Date.now();
1343
1412
  const embeddingJson = JSON.stringify(embedding);
1344
- ctx.db.prepare(`
1345
- INSERT OR REPLACE INTO memory_entries (
1346
- id, key, namespace, content, type,
1347
- embedding, embedding_dimensions, embedding_model,
1348
- created_at, updated_at, status
1349
- ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, 'Xenova/all-MiniLM-L6-v2', ?, ?, 'active')
1413
+ ctx.db.prepare(`
1414
+ INSERT OR REPLACE INTO memory_entries (
1415
+ id, key, namespace, content, type,
1416
+ embedding, embedding_dimensions, embedding_model,
1417
+ created_at, updated_at, status
1418
+ ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, 'Xenova/all-MiniLM-L6-v2', ?, ?, 'active')
1350
1419
  `).run(id, entry.key, entry.namespace, entry.content, embeddingJson, embedding.length, now, now);
1351
1420
  return true;
1352
1421
  }
@@ -1574,47 +1643,68 @@ export async function bridgeRecordFeedback(options) {
1574
1643
  try {
1575
1644
  let controller = 'none';
1576
1645
  let updated = 0;
1577
- // Try LearningSystem first (Phase 4)
1578
- const learningSystem = registry.get('learningSystem');
1579
- if (learningSystem) {
1580
- try {
1581
- if (typeof learningSystem.recordFeedback === 'function') {
1582
- await learningSystem.recordFeedback({
1583
- taskId: options.taskId, success: options.success, quality: options.quality,
1584
- agent: options.agent, duration: options.duration, timestamp: Date.now(),
1646
+ // Real intelligence-pipeline write (#2786 fix-3, 2026-07-26 sweep follow-up).
1647
+ // The prior code called `learningSystem.recordFeedback/.record` and
1648
+ // `reasoningBank.recordOutcome/.record` — none of those methods exist on
1649
+ // the LocalSonaCoordinator / LocalReasoningBank instances the bridge
1650
+ // actually wires into the registry (see initializeIntelligence in
1651
+ // memory/intelligence.ts). The silent catch made it look successful.
1652
+ //
1653
+ // The REAL public API is `intelligence.recordTrajectory(steps, verdict)`
1654
+ // — same call `hooks_post-command` already uses (hooks-tools.ts).
1655
+ // It initializes lazily, embeds the step, and drives both the SONA
1656
+ // coordinator and pattern distillation.
1657
+ try {
1658
+ const intelligence = await import('./intelligence.js');
1659
+ const verdict = options.success ? 'success' : 'failure';
1660
+ const recorded = await intelligence.recordTrajectory([{
1661
+ type: 'action',
1662
+ content: `Task ${options.taskId} completed by ${options.agent || 'unknown'} — success=${options.success}, quality=${options.quality.toFixed(3)}`,
1663
+ metadata: {
1664
+ taskId: options.taskId,
1665
+ agent: options.agent,
1666
+ quality: options.quality,
1667
+ duration: options.duration,
1585
1668
  // ADR-147 P2: forward spawn-tree lineage if present
1586
- parentAgentId: options.parentAgentId, depth: options.depth,
1587
- });
1588
- controller = 'learningSystem';
1589
- updated++;
1590
- }
1591
- else if (typeof learningSystem.record === 'function') {
1592
- await learningSystem.record(options.taskId, options.quality, options.success ? 'success' : 'failure');
1593
- controller = 'learningSystem';
1594
- updated++;
1595
- }
1669
+ parentAgentId: options.parentAgentId,
1670
+ depth: options.depth,
1671
+ },
1672
+ timestamp: Date.now(),
1673
+ }], verdict);
1674
+ if (recorded) {
1675
+ controller = 'intelligence';
1676
+ updated++;
1596
1677
  }
1597
- catch { /* API mismatch — skip */ }
1598
1678
  }
1599
- // Also record in ReasoningBank for pattern reinforcement
1679
+ catch {
1680
+ // Intelligence init failed (missing embeddings backend etc.). Fall
1681
+ // through to the memory-store write below — that always succeeds via
1682
+ // sql.js fallback so feedback is never fully lost.
1683
+ }
1684
+ // Optional pattern store: if the caller supplied learned patterns,
1685
+ // add them to LocalReasoningBank via its real `.store()` method (the
1686
+ // one method that DOES exist on the class).
1600
1687
  const reasoningBank = registry.get('reasoningBank');
1601
- if (reasoningBank) {
1602
- try {
1603
- if (typeof reasoningBank.recordOutcome === 'function') {
1604
- await reasoningBank.recordOutcome({
1605
- taskId: options.taskId, verdict: options.success ? 'success' : 'failure',
1606
- score: options.quality, timestamp: Date.now(),
1607
- });
1608
- controller = controller === 'none' ? 'reasoningBank' : `${controller}+reasoningBank`;
1609
- updated++;
1610
- }
1611
- else if (typeof reasoningBank.record === 'function') {
1612
- await reasoningBank.record(options.taskId, options.quality);
1613
- controller = controller === 'none' ? 'reasoningBank' : `${controller}+reasoningBank`;
1614
- updated++;
1688
+ if (reasoningBank && Array.isArray(options.patterns) && options.patterns.length) {
1689
+ for (const pattern of options.patterns) {
1690
+ try {
1691
+ if (typeof reasoningBank.store === 'function') {
1692
+ reasoningBank.store({
1693
+ id: `feedback-pattern-${options.taskId}-${updated}`,
1694
+ content: pattern,
1695
+ category: options.agent || 'general',
1696
+ confidence: options.quality,
1697
+ source: 'bridge-feedback',
1698
+ });
1699
+ updated++;
1700
+ }
1615
1701
  }
1702
+ catch { /* pattern rejected — non-critical */ }
1616
1703
  }
1617
- catch { /* API mismatch skip */ }
1704
+ if (updated > 0 && controller === 'intelligence')
1705
+ controller = 'intelligence+reasoningBank';
1706
+ else if (updated > 0 && controller === 'none')
1707
+ controller = 'reasoningBank';
1618
1708
  }
1619
1709
  // Phase 4: SkillLibrary promotion for high-quality patterns
1620
1710
  if (options.success && options.quality >= 0.9 && options.patterns?.length) {
@@ -1670,9 +1760,9 @@ export async function bridgeRecordCausalEdge(options) {
1670
1760
  const ctx = getDb(registry);
1671
1761
  if (ctx) {
1672
1762
  try {
1673
- ctx.db.prepare(`
1674
- INSERT OR REPLACE INTO memory_entries (id, key, namespace, content, type, created_at, updated_at, status)
1675
- VALUES (?, ?, 'causal-edges', ?, 'procedural', ?, ?, 'active')
1763
+ ctx.db.prepare(`
1764
+ INSERT OR REPLACE INTO memory_entries (id, key, namespace, content, type, created_at, updated_at, status)
1765
+ VALUES (?, ?, 'causal-edges', ?, 'procedural', ?, ?, 'active')
1676
1766
  `).run(generateId('edge'), `${options.sourceId}→${options.targetId}`, JSON.stringify(options), Date.now(), Date.now());
1677
1767
  return { success: true, controller: 'bridge-fallback' };
1678
1768
  }
@@ -1751,10 +1841,10 @@ export async function bridgeDeleteHierarchical(options) {
1751
1841
  const ctx = getDb(registry);
1752
1842
  if (ctx) {
1753
1843
  try {
1754
- const result = ctx.db.prepare(`
1755
- UPDATE memory_entries
1756
- SET status = 'deleted', updated_at = ?
1757
- WHERE key = ? AND namespace LIKE 'hierarchical%' AND status = 'active'
1844
+ const result = ctx.db.prepare(`
1845
+ UPDATE memory_entries
1846
+ SET status = 'deleted', updated_at = ?
1847
+ WHERE key = ? AND namespace LIKE 'hierarchical%' AND status = 'active'
1758
1848
  `).run(Date.now(), key);
1759
1849
  const changes = result?.changes ?? 0;
1760
1850
  if (changes > 0) {
@@ -1830,10 +1920,10 @@ export async function bridgeDeleteCausalEdge(options) {
1830
1920
  const ctx = getDb(registry);
1831
1921
  if (ctx) {
1832
1922
  try {
1833
- const result = ctx.db.prepare(`
1834
- UPDATE memory_entries
1835
- SET status = 'deleted', updated_at = ?
1836
- WHERE key = ? AND namespace = 'causal-edges' AND status = 'active'
1923
+ const result = ctx.db.prepare(`
1924
+ UPDATE memory_entries
1925
+ SET status = 'deleted', updated_at = ?
1926
+ WHERE key = ? AND namespace = 'causal-edges' AND status = 'active'
1837
1927
  `).run(Date.now(), edgeKey);
1838
1928
  const changes = result?.changes ?? 0;
1839
1929
  if (changes > 0) {
@@ -1905,18 +1995,18 @@ export async function bridgeDeleteCausalNode(options) {
1905
1995
  let deletedEdges = 0;
1906
1996
  let deletedNode = false;
1907
1997
  try {
1908
- const edgeResult = ctx.db.prepare(`
1909
- UPDATE memory_entries
1910
- SET status = 'deleted', updated_at = ?
1911
- WHERE namespace = 'causal-edges'
1912
- AND status = 'active'
1913
- AND (key LIKE ? OR key LIKE ?)
1998
+ const edgeResult = ctx.db.prepare(`
1999
+ UPDATE memory_entries
2000
+ SET status = 'deleted', updated_at = ?
2001
+ WHERE namespace = 'causal-edges'
2002
+ AND status = 'active'
2003
+ AND (key LIKE ? OR key LIKE ?)
1914
2004
  `).run(Date.now(), `${nodeId}→%`, `%→${nodeId}`);
1915
2005
  deletedEdges = edgeResult?.changes ?? 0;
1916
- const nodeResult = ctx.db.prepare(`
1917
- UPDATE memory_entries
1918
- SET status = 'deleted', updated_at = ?
1919
- WHERE key = ? AND status = 'active'
2006
+ const nodeResult = ctx.db.prepare(`
2007
+ UPDATE memory_entries
2008
+ SET status = 'deleted', updated_at = ?
2009
+ WHERE key = ? AND status = 'active'
1920
2010
  `).run(Date.now(), nodeId);
1921
2011
  deletedNode = (nodeResult?.changes ?? 0) > 0;
1922
2012
  await logAttestation(registry, 'delete', nodeId, { namespace: 'causal-nodes', deletedEdges });
@@ -2403,11 +2493,11 @@ export async function bridgeGetAllEmbeddings(options) {
2403
2493
  try {
2404
2494
  const dims = options?.dimensions ?? 384;
2405
2495
  const maxRows = options?.limit ?? 50000;
2406
- const rows = ctx.db.prepare(`
2407
- SELECT id, key, namespace, embedding
2408
- FROM memory_entries
2409
- WHERE status = 'active' AND embedding IS NOT NULL
2410
- LIMIT ?
2496
+ const rows = ctx.db.prepare(`
2497
+ SELECT id, key, namespace, embedding
2498
+ FROM memory_entries
2499
+ WHERE status = 'active' AND embedding IS NOT NULL
2500
+ LIMIT ?
2411
2501
  `).all(maxRows);
2412
2502
  const results = [];
2413
2503
  for (const row of rows) {