@claude-flow/cli 3.28.0 → 3.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/.claude/agents/analysis/analyze-code-quality.md +178 -178
  2. package/.claude/agents/analysis/code-analyzer.md +209 -209
  3. package/.claude/agents/analysis/code-review/analyze-code-quality.md +178 -178
  4. package/.claude/agents/architecture/arch-system-design.md +156 -156
  5. package/.claude/agents/architecture/system-design/arch-system-design.md +154 -154
  6. package/.claude/agents/browser/browser-agent.yaml +182 -182
  7. package/.claude/agents/consensus/byzantine-coordinator.md +62 -62
  8. package/.claude/agents/consensus/crdt-synchronizer.md +996 -996
  9. package/.claude/agents/consensus/gossip-coordinator.md +62 -62
  10. package/.claude/agents/consensus/performance-benchmarker.md +850 -850
  11. package/.claude/agents/consensus/quorum-manager.md +822 -822
  12. package/.claude/agents/consensus/raft-manager.md +62 -62
  13. package/.claude/agents/consensus/security-manager.md +621 -621
  14. package/.claude/agents/core/planner.md +374 -374
  15. package/.claude/agents/custom/test-long-runner.md +44 -44
  16. package/.claude/agents/data/data-ml-model.md +444 -444
  17. package/.claude/agents/data/ml/data-ml-model.md +192 -192
  18. package/.claude/agents/development/backend/dev-backend-api.md +141 -141
  19. package/.claude/agents/development/dev-backend-api.md +344 -344
  20. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +163 -163
  21. package/.claude/agents/devops/ops-cicd-github.md +164 -164
  22. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +173 -173
  23. package/.claude/agents/documentation/docs-api-openapi.md +354 -354
  24. package/.claude/agents/flow-nexus/app-store.md +87 -87
  25. package/.claude/agents/flow-nexus/authentication.md +68 -68
  26. package/.claude/agents/flow-nexus/challenges.md +80 -80
  27. package/.claude/agents/flow-nexus/neural-network.md +87 -87
  28. package/.claude/agents/flow-nexus/payments.md +82 -82
  29. package/.claude/agents/flow-nexus/sandbox.md +75 -75
  30. package/.claude/agents/flow-nexus/swarm.md +75 -75
  31. package/.claude/agents/flow-nexus/user-tools.md +95 -95
  32. package/.claude/agents/flow-nexus/workflow.md +83 -83
  33. package/.claude/agents/github/code-review-swarm.md +377 -377
  34. package/.claude/agents/github/github-modes.md +172 -172
  35. package/.claude/agents/github/issue-tracker.md +575 -575
  36. package/.claude/agents/github/multi-repo-swarm.md +552 -552
  37. package/.claude/agents/github/pr-manager.md +437 -437
  38. package/.claude/agents/github/project-board-sync.md +508 -508
  39. package/.claude/agents/github/release-manager.md +604 -604
  40. package/.claude/agents/github/release-swarm.md +582 -582
  41. package/.claude/agents/github/repo-architect.md +397 -397
  42. package/.claude/agents/github/swarm-issue.md +572 -572
  43. package/.claude/agents/github/swarm-pr.md +427 -427
  44. package/.claude/agents/github/sync-coordinator.md +451 -451
  45. package/.claude/agents/github/workflow-automation.md +902 -902
  46. package/.claude/agents/goal/agent.md +815 -815
  47. package/.claude/agents/optimization/benchmark-suite.md +664 -664
  48. package/.claude/agents/optimization/load-balancer.md +430 -430
  49. package/.claude/agents/optimization/performance-monitor.md +671 -671
  50. package/.claude/agents/optimization/resource-allocator.md +673 -673
  51. package/.claude/agents/optimization/topology-optimizer.md +807 -807
  52. package/.claude/agents/payments/agentic-payments.md +126 -126
  53. package/.claude/agents/sona/sona-learning-optimizer.md +74 -74
  54. package/.claude/agents/sparc/architecture.md +698 -698
  55. package/.claude/agents/sparc/pseudocode.md +519 -519
  56. package/.claude/agents/sparc/refinement.md +801 -801
  57. package/.claude/agents/sparc/specification.md +477 -477
  58. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +224 -224
  59. package/.claude/agents/specialized/spec-mobile-react-native.md +226 -226
  60. package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
  61. package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
  62. package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
  63. package/.claude/agents/sublinear/performance-optimizer.md +367 -367
  64. package/.claude/agents/sublinear/trading-predictor.md +245 -245
  65. package/.claude/agents/swarm/adaptive-coordinator.md +1126 -1126
  66. package/.claude/agents/swarm/hierarchical-coordinator.md +709 -709
  67. package/.claude/agents/swarm/mesh-coordinator.md +962 -962
  68. package/.claude/agents/templates/automation-smart-agent.md +204 -204
  69. package/.claude/agents/templates/base-template-generator.md +289 -289
  70. package/.claude/agents/templates/coordinator-swarm-init.md +89 -89
  71. package/.claude/agents/templates/github-pr-manager.md +176 -176
  72. package/.claude/agents/templates/implementer-sparc-coder.md +258 -258
  73. package/.claude/agents/templates/memory-coordinator.md +186 -186
  74. package/.claude/agents/templates/orchestrator-task.md +138 -138
  75. package/.claude/agents/templates/performance-analyzer.md +198 -198
  76. package/.claude/agents/templates/sparc-coordinator.md +513 -513
  77. package/.claude/agents/testing/production-validator.md +394 -394
  78. package/.claude/agents/testing/tdd-london-swarm.md +243 -243
  79. package/.claude/agents/v3/aidefence-guardian.md +282 -282
  80. package/.claude/agents/v3/claims-authorizer.md +208 -208
  81. package/.claude/agents/v3/collective-intelligence-coordinator.md +993 -993
  82. package/.claude/agents/v3/ddd-domain-expert.md +220 -220
  83. package/.claude/agents/v3/injection-analyst.md +236 -236
  84. package/.claude/agents/v3/performance-engineer.md +1233 -1233
  85. package/.claude/agents/v3/pii-detector.md +151 -151
  86. package/.claude/agents/v3/reasoningbank-learner.md +213 -213
  87. package/.claude/agents/v3/security-architect-aidefence.md +410 -410
  88. package/.claude/agents/v3/security-architect.md +867 -867
  89. package/.claude/agents/v3/swarm-memory-manager.md +157 -157
  90. package/.claude/agents/v3/v3-integration-architect.md +205 -205
  91. package/.claude/commands/agents/README.md +50 -50
  92. package/.claude/commands/agents/agent-capabilities.md +140 -140
  93. package/.claude/commands/agents/agent-coordination.md +28 -28
  94. package/.claude/commands/agents/agent-spawning.md +28 -28
  95. package/.claude/commands/agents/agent-types.md +216 -216
  96. package/.claude/commands/agents/health.md +139 -139
  97. package/.claude/commands/agents/list.md +100 -100
  98. package/.claude/commands/agents/logs.md +130 -130
  99. package/.claude/commands/agents/metrics.md +122 -122
  100. package/.claude/commands/agents/pool.md +127 -127
  101. package/.claude/commands/agents/spawn.md +140 -140
  102. package/.claude/commands/agents/status.md +115 -115
  103. package/.claude/commands/agents/stop.md +102 -102
  104. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
  105. package/.claude/commands/analysis/README.md +9 -9
  106. package/.claude/commands/analysis/bottleneck-detect.md +162 -162
  107. package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
  108. package/.claude/commands/analysis/performance-report.md +25 -25
  109. package/.claude/commands/analysis/token-efficiency.md +44 -44
  110. package/.claude/commands/analysis/token-usage.md +25 -25
  111. package/.claude/commands/automation/README.md +9 -9
  112. package/.claude/commands/automation/auto-agent.md +122 -122
  113. package/.claude/commands/automation/self-healing.md +105 -105
  114. package/.claude/commands/automation/session-memory.md +89 -89
  115. package/.claude/commands/automation/smart-agents.md +72 -72
  116. package/.claude/commands/automation/smart-spawn.md +25 -25
  117. package/.claude/commands/automation/workflow-select.md +25 -25
  118. package/.claude/commands/claude-flow-help.md +103 -103
  119. package/.claude/commands/claude-flow-memory.md +107 -107
  120. package/.claude/commands/claude-flow-swarm.md +205 -205
  121. package/.claude/commands/coordination/README.md +9 -9
  122. package/.claude/commands/coordination/agent-spawn.md +25 -25
  123. package/.claude/commands/coordination/init.md +44 -44
  124. package/.claude/commands/coordination/orchestrate.md +43 -43
  125. package/.claude/commands/coordination/spawn.md +45 -45
  126. package/.claude/commands/coordination/swarm-init.md +85 -85
  127. package/.claude/commands/coordination/task-orchestrate.md +25 -25
  128. package/.claude/commands/github/README.md +11 -11
  129. package/.claude/commands/github/code-review-swarm.md +513 -513
  130. package/.claude/commands/github/code-review.md +25 -25
  131. package/.claude/commands/github/github-modes.md +146 -146
  132. package/.claude/commands/github/github-swarm.md +121 -121
  133. package/.claude/commands/github/issue-tracker.md +291 -291
  134. package/.claude/commands/github/issue-triage.md +25 -25
  135. package/.claude/commands/github/multi-repo-swarm.md +518 -518
  136. package/.claude/commands/github/pr-enhance.md +26 -26
  137. package/.claude/commands/github/pr-manager.md +169 -169
  138. package/.claude/commands/github/project-board-sync.md +470 -470
  139. package/.claude/commands/github/release-manager.md +339 -339
  140. package/.claude/commands/github/release-swarm.md +543 -543
  141. package/.claude/commands/github/repo-analyze.md +25 -25
  142. package/.claude/commands/github/repo-architect.md +366 -366
  143. package/.claude/commands/github/swarm-issue.md +484 -484
  144. package/.claude/commands/github/swarm-pr.md +287 -287
  145. package/.claude/commands/github/sync-coordinator.md +302 -302
  146. package/.claude/commands/github/workflow-automation.md +441 -441
  147. package/.claude/commands/hive-mind/README.md +17 -17
  148. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
  149. package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
  150. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
  151. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
  152. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
  153. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
  154. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
  155. package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
  156. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
  157. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
  158. package/.claude/commands/hive-mind/hive-mind.md +27 -27
  159. package/.claude/commands/hooks/README.md +11 -11
  160. package/.claude/commands/hooks/overview.md +57 -57
  161. package/.claude/commands/hooks/post-edit.md +117 -117
  162. package/.claude/commands/hooks/post-task.md +112 -112
  163. package/.claude/commands/hooks/pre-edit.md +113 -113
  164. package/.claude/commands/hooks/pre-task.md +111 -111
  165. package/.claude/commands/hooks/session-end.md +118 -118
  166. package/.claude/commands/hooks/setup.md +102 -102
  167. package/.claude/commands/memory/README.md +9 -9
  168. package/.claude/commands/memory/memory-persist.md +25 -25
  169. package/.claude/commands/memory/memory-search.md +25 -25
  170. package/.claude/commands/memory/memory-usage.md +25 -25
  171. package/.claude/commands/memory/neural.md +47 -47
  172. package/.claude/commands/monitoring/README.md +9 -9
  173. package/.claude/commands/monitoring/agent-metrics.md +25 -25
  174. package/.claude/commands/monitoring/agents.md +44 -44
  175. package/.claude/commands/monitoring/real-time-view.md +25 -25
  176. package/.claude/commands/monitoring/status.md +46 -46
  177. package/.claude/commands/monitoring/swarm-monitor.md +25 -25
  178. package/.claude/commands/optimization/README.md +9 -9
  179. package/.claude/commands/optimization/auto-topology.md +61 -61
  180. package/.claude/commands/optimization/cache-manage.md +25 -25
  181. package/.claude/commands/optimization/parallel-execute.md +25 -25
  182. package/.claude/commands/optimization/parallel-execution.md +49 -49
  183. package/.claude/commands/optimization/topology-optimize.md +25 -25
  184. package/.claude/commands/pair/README.md +260 -260
  185. package/.claude/commands/pair/commands.md +545 -545
  186. package/.claude/commands/pair/config.md +509 -509
  187. package/.claude/commands/pair/examples.md +511 -511
  188. package/.claude/commands/pair/modes.md +347 -347
  189. package/.claude/commands/pair/session.md +406 -406
  190. package/.claude/commands/pair/start.md +208 -208
  191. package/.claude/commands/sparc/analyzer.md +51 -51
  192. package/.claude/commands/sparc/architect.md +53 -53
  193. package/.claude/commands/sparc/ask.md +97 -97
  194. package/.claude/commands/sparc/batch-executor.md +54 -54
  195. package/.claude/commands/sparc/code.md +89 -89
  196. package/.claude/commands/sparc/coder.md +54 -54
  197. package/.claude/commands/sparc/debug.md +83 -83
  198. package/.claude/commands/sparc/debugger.md +54 -54
  199. package/.claude/commands/sparc/designer.md +53 -53
  200. package/.claude/commands/sparc/devops.md +109 -109
  201. package/.claude/commands/sparc/docs-writer.md +80 -80
  202. package/.claude/commands/sparc/documenter.md +54 -54
  203. package/.claude/commands/sparc/innovator.md +54 -54
  204. package/.claude/commands/sparc/integration.md +83 -83
  205. package/.claude/commands/sparc/mcp.md +117 -117
  206. package/.claude/commands/sparc/memory-manager.md +54 -54
  207. package/.claude/commands/sparc/optimizer.md +54 -54
  208. package/.claude/commands/sparc/orchestrator.md +131 -131
  209. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
  210. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
  211. package/.claude/commands/sparc/researcher.md +54 -54
  212. package/.claude/commands/sparc/reviewer.md +54 -54
  213. package/.claude/commands/sparc/security-review.md +80 -80
  214. package/.claude/commands/sparc/sparc-modes.md +174 -174
  215. package/.claude/commands/sparc/sparc.md +111 -111
  216. package/.claude/commands/sparc/spec-pseudocode.md +80 -80
  217. package/.claude/commands/sparc/supabase-admin.md +348 -348
  218. package/.claude/commands/sparc/swarm-coordinator.md +54 -54
  219. package/.claude/commands/sparc/tdd.md +54 -54
  220. package/.claude/commands/sparc/tester.md +54 -54
  221. package/.claude/commands/sparc/tutorial.md +79 -79
  222. package/.claude/commands/sparc/workflow-manager.md +54 -54
  223. package/.claude/commands/sparc.md +166 -166
  224. package/.claude/commands/stream-chain/pipeline.md +120 -120
  225. package/.claude/commands/stream-chain/run.md +69 -69
  226. package/.claude/commands/swarm/README.md +15 -15
  227. package/.claude/commands/swarm/analysis.md +95 -95
  228. package/.claude/commands/swarm/development.md +96 -96
  229. package/.claude/commands/swarm/examples.md +168 -168
  230. package/.claude/commands/swarm/maintenance.md +102 -102
  231. package/.claude/commands/swarm/optimization.md +117 -117
  232. package/.claude/commands/swarm/research.md +136 -136
  233. package/.claude/commands/swarm/swarm-analysis.md +8 -8
  234. package/.claude/commands/swarm/swarm-background.md +8 -8
  235. package/.claude/commands/swarm/swarm-init.md +19 -19
  236. package/.claude/commands/swarm/swarm-modes.md +8 -8
  237. package/.claude/commands/swarm/swarm-monitor.md +8 -8
  238. package/.claude/commands/swarm/swarm-spawn.md +19 -19
  239. package/.claude/commands/swarm/swarm-status.md +8 -8
  240. package/.claude/commands/swarm/swarm-strategies.md +8 -8
  241. package/.claude/commands/swarm/swarm.md +87 -87
  242. package/.claude/commands/swarm/testing.md +131 -131
  243. package/.claude/commands/training/README.md +9 -9
  244. package/.claude/commands/training/model-update.md +25 -25
  245. package/.claude/commands/training/neural-patterns.md +107 -107
  246. package/.claude/commands/training/neural-train.md +75 -75
  247. package/.claude/commands/training/pattern-learn.md +25 -25
  248. package/.claude/commands/training/specialization.md +62 -62
  249. package/.claude/commands/truth/start.md +142 -142
  250. package/.claude/commands/verify/check.md +49 -49
  251. package/.claude/commands/verify/start.md +127 -127
  252. package/.claude/commands/workflows/README.md +9 -9
  253. package/.claude/commands/workflows/development.md +77 -77
  254. package/.claude/commands/workflows/research.md +62 -62
  255. package/.claude/commands/workflows/workflow-create.md +25 -25
  256. package/.claude/commands/workflows/workflow-execute.md +25 -25
  257. package/.claude/commands/workflows/workflow-export.md +25 -25
  258. package/.claude/eval/human-relevance-frozen-v1.json +17 -17
  259. package/.claude/evolve-proof/generation-0.json +211 -211
  260. package/.claude/evolve-proof/real-generation-0.json +406 -406
  261. package/.claude/evolve-proof/real-generation-1.json +406 -406
  262. package/.claude/helpers/.helpers-version +1 -1
  263. package/.claude/helpers/README.md +96 -96
  264. package/.claude/helpers/adr-compliance.sh +186 -186
  265. package/.claude/helpers/auto-commit.sh +178 -178
  266. package/.claude/helpers/auto-memory-hook.mjs +430 -430
  267. package/.claude/helpers/checkpoint-manager.sh +251 -251
  268. package/.claude/helpers/daemon-manager.sh +252 -252
  269. package/.claude/helpers/ddd-tracker.sh +144 -144
  270. package/.claude/helpers/github-safe.js +156 -156
  271. package/.claude/helpers/github-setup.sh +45 -45
  272. package/.claude/helpers/guidance-hook.sh +13 -13
  273. package/.claude/helpers/guidance-hooks.sh +102 -102
  274. package/.claude/helpers/health-monitor.sh +108 -108
  275. package/.claude/helpers/helpers.manifest.json +6 -6
  276. package/.claude/helpers/hook-handler.cjs +564 -460
  277. package/.claude/helpers/intelligence.cjs +1058 -1058
  278. package/.claude/helpers/learning-hooks.sh +329 -329
  279. package/.claude/helpers/learning-optimizer.sh +127 -127
  280. package/.claude/helpers/learning-service.mjs +1144 -1144
  281. package/.claude/helpers/memory.js +83 -83
  282. package/.claude/helpers/metrics-db.mjs +503 -503
  283. package/.claude/helpers/pattern-consolidator.sh +86 -86
  284. package/.claude/helpers/perf-worker.sh +160 -160
  285. package/.claude/helpers/post-commit +16 -16
  286. package/.claude/helpers/pre-commit +26 -26
  287. package/.claude/helpers/quick-start.sh +19 -19
  288. package/.claude/helpers/router.js +105 -105
  289. package/.claude/helpers/security-scanner.sh +127 -127
  290. package/.claude/helpers/session.js +157 -157
  291. package/.claude/helpers/setup-mcp.sh +18 -18
  292. package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
  293. package/.claude/helpers/statusline-hook.sh +21 -21
  294. package/.claude/helpers/statusline.cjs +925 -925
  295. package/.claude/helpers/statusline.js +352 -352
  296. package/.claude/helpers/swarm-comms.sh +353 -353
  297. package/.claude/helpers/swarm-hooks.sh +761 -761
  298. package/.claude/helpers/swarm-monitor.sh +210 -210
  299. package/.claude/helpers/sync-v3-metrics.sh +245 -245
  300. package/.claude/helpers/update-v3-progress.sh +165 -165
  301. package/.claude/helpers/v3-quick-status.sh +57 -57
  302. package/.claude/helpers/v3.sh +110 -110
  303. package/.claude/helpers/validate-v3-config.sh +215 -215
  304. package/.claude/helpers/worker-manager.sh +170 -170
  305. package/.claude/proven-config.json +1 -1
  306. package/.claude/proven-config.manifest.json +37 -37
  307. package/.claude/proven-config.signed.json +41 -41
  308. package/.claude/settings.json +182 -182
  309. package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
  310. package/.claude/skills/agentdb-learning/SKILL.md +545 -545
  311. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
  312. package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
  313. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
  314. package/.claude/skills/browser/SKILL.md +204 -204
  315. package/.claude/skills/dual-mode/README.md +71 -71
  316. package/.claude/skills/dual-mode/dual-collect.md +103 -103
  317. package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
  318. package/.claude/skills/dual-mode/dual-spawn.md +81 -81
  319. package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
  320. package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
  321. package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
  322. package/.claude/skills/github-code-review/SKILL.md +1125 -1125
  323. package/.claude/skills/github-multi-repo/SKILL.md +862 -862
  324. package/.claude/skills/github-project-management/SKILL.md +1262 -1262
  325. package/.claude/skills/github-release-management/SKILL.md +1064 -1064
  326. package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
  327. package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
  328. package/.claude/skills/pair-programming/SKILL.md +1202 -1202
  329. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
  330. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
  331. package/.claude/skills/skill-builder/SKILL.md +910 -910
  332. package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
  333. package/.claude/skills/stream-chain/SKILL.md +560 -560
  334. package/.claude/skills/swarm-advanced/SKILL.md +970 -970
  335. package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
  336. package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
  337. package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
  338. package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
  339. package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
  340. package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
  341. package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
  342. package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
  343. package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
  344. package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
  345. package/.claude/skills/verification-quality/SKILL.md +691 -691
  346. package/README.md +419 -419
  347. package/bin/cli.js +314 -314
  348. package/bin/mcp-server.js +224 -224
  349. package/bin/preinstall.cjs +2 -2
  350. package/catalog-manifest.json +2 -2
  351. package/dist/src/benchmarks/gaia-critic.js +24 -24
  352. package/dist/src/business-pods/bbs-budget-tracker.js +53 -53
  353. package/dist/src/commands/announcements.d.ts +17 -0
  354. package/dist/src/commands/announcements.js +0 -0
  355. package/dist/src/commands/completions.js +409 -409
  356. package/dist/src/commands/daemon.js +44 -44
  357. package/dist/src/commands/embeddings.js +26 -26
  358. package/dist/src/commands/funnel.d.ts +10 -5
  359. package/dist/src/commands/funnel.js +206 -7
  360. package/dist/src/commands/hive-mind.js +97 -97
  361. package/dist/src/commands/hooks.js +9 -9
  362. package/dist/src/commands/index.js +4 -0
  363. package/dist/src/commands/init.js +94 -38
  364. package/dist/src/commands/memory.js +85 -1
  365. package/dist/src/commands/ruvector/backup.js +23 -23
  366. package/dist/src/commands/ruvector/benchmark.js +31 -31
  367. package/dist/src/commands/ruvector/import.js +14 -14
  368. package/dist/src/commands/ruvector/init.js +115 -115
  369. package/dist/src/commands/ruvector/migrate.js +99 -99
  370. package/dist/src/commands/ruvector/optimize.js +51 -51
  371. package/dist/src/commands/ruvector/setup.js +624 -624
  372. package/dist/src/commands/ruvector/status.js +38 -38
  373. package/dist/src/commands/spinner.d.ts +16 -0
  374. package/dist/src/commands/spinner.js +329 -0
  375. package/dist/src/config/proven-config.js +2 -2
  376. package/dist/src/funnel/consent.js +3 -0
  377. package/dist/src/funnel/disclosure.d.ts +1 -0
  378. package/dist/src/funnel/disclosure.js +12 -0
  379. package/dist/src/funnel/index.d.ts +2 -1
  380. package/dist/src/funnel/index.js +2 -1
  381. package/dist/src/funnel/payout.d.ts +40 -0
  382. package/dist/src/funnel/payout.js +60 -0
  383. package/dist/src/funnel/types.d.ts +13 -1
  384. package/dist/src/init/claudemd-generator.js +231 -231
  385. package/dist/src/init/executor.js +453 -453
  386. package/dist/src/init/helper-refresh.js +17 -0
  387. package/dist/src/init/helper-signing.d.ts +8 -1
  388. package/dist/src/init/helper-signing.js +9 -2
  389. package/dist/src/init/helpers-generator.js +751 -751
  390. package/dist/src/init/statusline-generator.js +955 -949
  391. package/dist/src/mcp-tools/agentdb-tools.js +15 -15
  392. package/dist/src/mcp-tools/browser-intent-tools.js +19 -19
  393. package/dist/src/memory/graph-edge-writer.js +22 -22
  394. package/dist/src/memory/memory-bridge.d.ts +10 -0
  395. package/dist/src/memory/memory-bridge.js +139 -88
  396. package/dist/src/memory/memory-initializer.d.ts +18 -0
  397. package/dist/src/memory/memory-initializer.js +539 -407
  398. package/dist/src/memory/rabitq-index.js +5 -5
  399. package/dist/src/runtime/headless.js +28 -28
  400. package/dist/src/ruvector/flash-attention.d.ts +195 -0
  401. package/dist/src/ruvector/flash-attention.js +643 -0
  402. package/dist/src/ruvector/moe-router.d.ts +206 -0
  403. package/dist/src/ruvector/moe-router.js +626 -0
  404. package/dist/src/services/distill-tuning.js +7 -7
  405. package/dist/src/services/event-stream.d.ts +25 -0
  406. package/dist/src/services/event-stream.js +27 -0
  407. package/dist/src/services/headless-worker-executor.js +84 -84
  408. package/dist/src/services/loop-worker-runner.d.ts +16 -0
  409. package/dist/src/services/loop-worker-runner.js +34 -0
  410. package/dist/src/services/memory-distillation.js +4 -4
  411. package/dist/src/services/runtime-capabilities.d.ts +22 -0
  412. package/dist/src/services/runtime-capabilities.js +45 -0
  413. package/dist/src/transfer/deploy-seraphine.js +23 -23
  414. package/package.json +134 -133
  415. package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +32 -32
  416. package/plugins/ruflo-metaharness/README.md +72 -72
  417. package/plugins/ruflo-metaharness/agents/metaharness-architect.md +58 -58
  418. package/plugins/ruflo-metaharness/commands/ruflo-metaharness.md +48 -48
  419. package/plugins/ruflo-metaharness/scripts/_darwin.mjs +210 -210
  420. package/plugins/ruflo-metaharness/scripts/_harness.mjs +330 -330
  421. package/plugins/ruflo-metaharness/scripts/_invoke.mjs +231 -231
  422. package/plugins/ruflo-metaharness/scripts/_redblue.mjs +143 -143
  423. package/plugins/ruflo-metaharness/scripts/_similarity.mjs +161 -161
  424. package/plugins/ruflo-metaharness/scripts/_spike-similarity.mjs +223 -223
  425. package/plugins/ruflo-metaharness/scripts/audit-list.mjs +158 -158
  426. package/plugins/ruflo-metaharness/scripts/audit-trend.mjs +272 -272
  427. package/plugins/ruflo-metaharness/scripts/bench-parse-mcp-scan.mjs +146 -146
  428. package/plugins/ruflo-metaharness/scripts/bench-recordpair-overhead.mjs +186 -186
  429. package/plugins/ruflo-metaharness/scripts/bench-similarity.mjs +177 -177
  430. package/plugins/ruflo-metaharness/scripts/bench.mjs +95 -95
  431. package/plugins/ruflo-metaharness/scripts/drift-from-history.mjs +363 -363
  432. package/plugins/ruflo-metaharness/scripts/evolve.mjs +404 -404
  433. package/plugins/ruflo-metaharness/scripts/genome.mjs +80 -80
  434. package/plugins/ruflo-metaharness/scripts/gepa.mjs +153 -153
  435. package/plugins/ruflo-metaharness/scripts/learn.mjs +127 -127
  436. package/plugins/ruflo-metaharness/scripts/mcp-scan.mjs +111 -111
  437. package/plugins/ruflo-metaharness/scripts/mint.mjs +126 -126
  438. package/plugins/ruflo-metaharness/scripts/oia-audit.mjs +228 -228
  439. package/plugins/ruflo-metaharness/scripts/redblue.mjs +286 -286
  440. package/plugins/ruflo-metaharness/scripts/router-parallel-analyze.mjs +250 -250
  441. package/plugins/ruflo-metaharness/scripts/score.mjs +92 -92
  442. package/plugins/ruflo-metaharness/scripts/security-bench.mjs +174 -174
  443. package/plugins/ruflo-metaharness/scripts/similarity.mjs +158 -158
  444. package/plugins/ruflo-metaharness/scripts/smoke.sh +2353 -2353
  445. package/plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs +165 -165
  446. package/plugins/ruflo-metaharness/scripts/test-mcp-tools.mjs +472 -472
  447. package/plugins/ruflo-metaharness/scripts/test-parallel-pipeline.mjs +204 -204
  448. package/plugins/ruflo-metaharness/scripts/test-pipeline-roundtrip.mjs +586 -586
  449. package/plugins/ruflo-metaharness/scripts/test-similarity.mjs +334 -334
  450. package/plugins/ruflo-metaharness/scripts/test-with-openrouter.mjs +229 -229
  451. package/plugins/ruflo-metaharness/scripts/threat-model.mjs +59 -59
  452. package/plugins/ruflo-metaharness/skills/harness-bench/SKILL.md +64 -64
  453. package/plugins/ruflo-metaharness/skills/harness-drift-from-history/SKILL.md +65 -65
  454. package/plugins/ruflo-metaharness/skills/harness-evolve/SKILL.md +131 -131
  455. package/plugins/ruflo-metaharness/skills/harness-genome/SKILL.md +54 -54
  456. package/plugins/ruflo-metaharness/skills/harness-gepa/SKILL.md +65 -65
  457. package/plugins/ruflo-metaharness/skills/harness-learn/SKILL.md +65 -65
  458. package/plugins/ruflo-metaharness/skills/harness-mcp-scan/SKILL.md +49 -49
  459. package/plugins/ruflo-metaharness/skills/harness-mint/SKILL.md +72 -72
  460. package/plugins/ruflo-metaharness/skills/harness-oia-audit/SKILL.md +79 -79
  461. package/plugins/ruflo-metaharness/skills/harness-score/SKILL.md +66 -66
  462. package/plugins/ruflo-metaharness/skills/harness-security-bench/SKILL.md +101 -101
  463. package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +67 -67
  464. package/plugins/ruflo-metaharness/skills/harness-threat-model/SKILL.md +41 -41
  465. package/scripts/postinstall.cjs +153 -153
@@ -1182,21 +1182,21 @@ function buildKHopCTE(nodeId, depth, relation, maxNodes) {
1182
1182
  // since validateIdentifier has already vetted the value; but we sanitize quotes anyway).
1183
1183
  const safeNodeId = nodeId.replace(/'/g, "''");
1184
1184
  const relFilter = relation ? `AND e.relation = '${relation.replace(/'/g, "''")}'` : '';
1185
- return `
1186
- WITH RECURSIVE khop(node_id, hop_depth) AS (
1187
- SELECT '${safeNodeId}', 0
1188
- UNION
1189
- SELECT e.target_id, k.hop_depth + 1
1190
- FROM graph_edges e
1191
- JOIN khop k ON e.source_id = k.node_id
1192
- WHERE k.hop_depth < ${depth} ${relFilter}
1193
- )
1194
- SELECT DISTINCT node_id, MIN(hop_depth) as depth
1195
- FROM khop
1196
- WHERE node_id != '${safeNodeId}'
1197
- GROUP BY node_id
1198
- ORDER BY depth, node_id
1199
- LIMIT ${maxNodes}
1185
+ return `
1186
+ WITH RECURSIVE khop(node_id, hop_depth) AS (
1187
+ SELECT '${safeNodeId}', 0
1188
+ UNION
1189
+ SELECT e.target_id, k.hop_depth + 1
1190
+ FROM graph_edges e
1191
+ JOIN khop k ON e.source_id = k.node_id
1192
+ WHERE k.hop_depth < ${depth} ${relFilter}
1193
+ )
1194
+ SELECT DISTINCT node_id, MIN(hop_depth) as depth
1195
+ FROM khop
1196
+ WHERE node_id != '${safeNodeId}'
1197
+ GROUP BY node_id
1198
+ ORDER BY depth, node_id
1199
+ LIMIT ${maxNodes}
1200
1200
  `;
1201
1201
  }
1202
1202
  function cosineSim(a, b) {
@@ -290,25 +290,25 @@ export function buildPageAgentInjection(iifeSource, pageConfig, task) {
290
290
  throw new DemoLeakError(leak);
291
291
  const cfgJson = JSON.stringify(pageConfig);
292
292
  const taskJson = JSON.stringify(task);
293
- return `${safeIife}
294
- ;(function(){
295
- window.${BROWSER_ACT_RESULT_GLOBAL} = null;
296
- try {
297
- if (!window.PageAgent) {
298
- window.${BROWSER_ACT_RESULT_GLOBAL} = { success: false, error: 'PageAgent not defined after injection' };
299
- return;
300
- }
301
- var agent = new window.PageAgent(${cfgJson});
302
- window.__ruflo_pageAgent__ = agent;
303
- agent.execute(${taskJson}).then(function(r){
304
- window.${BROWSER_ACT_RESULT_GLOBAL} = { success: true, result: r };
305
- }).catch(function(e){
306
- window.${BROWSER_ACT_RESULT_GLOBAL} = { success: false, error: String((e && e.message) || e) };
307
- });
308
- } catch (e) {
309
- window.${BROWSER_ACT_RESULT_GLOBAL} = { success: false, error: String((e && e.message) || e) };
310
- }
311
- })();
293
+ return `${safeIife}
294
+ ;(function(){
295
+ window.${BROWSER_ACT_RESULT_GLOBAL} = null;
296
+ try {
297
+ if (!window.PageAgent) {
298
+ window.${BROWSER_ACT_RESULT_GLOBAL} = { success: false, error: 'PageAgent not defined after injection' };
299
+ return;
300
+ }
301
+ var agent = new window.PageAgent(${cfgJson});
302
+ window.__ruflo_pageAgent__ = agent;
303
+ agent.execute(${taskJson}).then(function(r){
304
+ window.${BROWSER_ACT_RESULT_GLOBAL} = { success: true, result: r };
305
+ }).catch(function(e){
306
+ window.${BROWSER_ACT_RESULT_GLOBAL} = { success: false, error: String((e && e.message) || e) };
307
+ });
308
+ } catch (e) {
309
+ window.${BROWSER_ACT_RESULT_GLOBAL} = { success: false, error: String((e && e.message) || e) };
310
+ }
311
+ })();
312
312
  'ruflo-browser-act-injected'`;
313
313
  }
314
314
  // ============================================================================
@@ -100,25 +100,25 @@ export async function getBridgeDb(customDbPath, opts) {
100
100
  db.pragma('busy_timeout = 5000'); // wait up to 5s on lock contention
101
101
  // Ensure graph_edges table exists (in case this is an older DB that
102
102
  // predates ADR-130 Phase 1 schema migration).
103
- db.exec(`
104
- CREATE TABLE IF NOT EXISTS graph_edges (
105
- id TEXT PRIMARY KEY,
106
- source_id TEXT NOT NULL,
107
- target_id TEXT NOT NULL,
108
- relation TEXT NOT NULL,
109
- weight REAL DEFAULT 1.0,
110
- confidence REAL DEFAULT 1.0,
111
- decay_rate REAL DEFAULT 0.0,
112
- last_reinforced TEXT,
113
- witness_id TEXT,
114
- embedding_ref TEXT,
115
- metadata TEXT,
116
- created_at TEXT NOT NULL
117
- );
118
- CREATE INDEX IF NOT EXISTS idx_graph_edges_source ON graph_edges (source_id);
119
- CREATE INDEX IF NOT EXISTS idx_graph_edges_target ON graph_edges (target_id);
120
- CREATE INDEX IF NOT EXISTS idx_graph_edges_relation ON graph_edges (relation);
121
- CREATE INDEX IF NOT EXISTS idx_graph_edges_reinforced ON graph_edges (last_reinforced);
103
+ db.exec(`
104
+ CREATE TABLE IF NOT EXISTS graph_edges (
105
+ id TEXT PRIMARY KEY,
106
+ source_id TEXT NOT NULL,
107
+ target_id TEXT NOT NULL,
108
+ relation TEXT NOT NULL,
109
+ weight REAL DEFAULT 1.0,
110
+ confidence REAL DEFAULT 1.0,
111
+ decay_rate REAL DEFAULT 0.0,
112
+ last_reinforced TEXT,
113
+ witness_id TEXT,
114
+ embedding_ref TEXT,
115
+ metadata TEXT,
116
+ created_at TEXT NOT NULL
117
+ );
118
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_source ON graph_edges (source_id);
119
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_target ON graph_edges (target_id);
120
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_relation ON graph_edges (relation);
121
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_reinforced ON graph_edges (last_reinforced);
122
122
  `);
123
123
  _db = db;
124
124
  _dbPath = dbPath;
@@ -153,9 +153,9 @@ export async function insertGraphEdge(input) {
153
153
  embeddingRef = encodeEmbedding(input.embedding);
154
154
  }
155
155
  const metaStr = input.metadata ? JSON.stringify(input.metadata) : null;
156
- db.prepare(`INSERT OR IGNORE INTO graph_edges
157
- (id, source_id, target_id, relation, weight, confidence, decay_rate,
158
- last_reinforced, witness_id, embedding_ref, metadata, created_at)
156
+ db.prepare(`INSERT OR IGNORE INTO graph_edges
157
+ (id, source_id, target_id, relation, weight, confidence, decay_rate,
158
+ last_reinforced, witness_id, embedding_ref, metadata, created_at)
159
159
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, input.sourceId, input.targetId, input.relation, input.weight ?? 1.0, input.confidence ?? 1.0, input.decayRate ?? 0.0, input.lastReinforced ?? null, input.witnessId ?? null, embeddingRef, metaStr, createdAt);
160
160
  return true;
161
161
  }
@@ -137,6 +137,16 @@ export declare function bridgeDeleteEntry(options: {
137
137
  guarded?: boolean;
138
138
  error?: string;
139
139
  } | null>;
140
+ export declare function bridgePurgeNamespace(options: {
141
+ namespace: string;
142
+ dbPath?: string;
143
+ }): Promise<{
144
+ success: boolean;
145
+ deletedCount: number;
146
+ remainingEntries: number;
147
+ guarded?: boolean;
148
+ error?: string;
149
+ } | null>;
140
150
  /**
141
151
  * Generate embedding via AgentDB v3's embedder.
142
152
  * Returns null if bridge unavailable — caller falls back to own ONNX/hash.
@@ -505,25 +505,25 @@ function getDb(registry) {
505
505
  // WeakSet so a new db instance re-ensures without a stale global flag.
506
506
  if (!_schemaEnsuredDbs.has(db)) {
507
507
  try {
508
- db.exec(`CREATE TABLE IF NOT EXISTS memory_entries (
509
- id TEXT PRIMARY KEY,
510
- key TEXT NOT NULL,
511
- namespace TEXT DEFAULT 'default',
512
- content TEXT NOT NULL,
513
- type TEXT DEFAULT 'semantic',
514
- embedding TEXT,
515
- embedding_model TEXT DEFAULT 'local',
516
- embedding_dimensions INTEGER,
517
- tags TEXT,
518
- metadata TEXT,
519
- owner_id TEXT,
520
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
521
- updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
522
- expires_at INTEGER,
523
- last_accessed_at INTEGER,
524
- access_count INTEGER DEFAULT 0,
525
- status TEXT DEFAULT 'active',
526
- UNIQUE(namespace, key)
508
+ db.exec(`CREATE TABLE IF NOT EXISTS memory_entries (
509
+ id TEXT PRIMARY KEY,
510
+ key TEXT NOT NULL,
511
+ namespace TEXT DEFAULT 'default',
512
+ content TEXT NOT NULL,
513
+ type TEXT DEFAULT 'semantic',
514
+ embedding TEXT,
515
+ embedding_model TEXT DEFAULT 'local',
516
+ embedding_dimensions INTEGER,
517
+ tags TEXT,
518
+ metadata TEXT,
519
+ owner_id TEXT,
520
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
521
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
522
+ expires_at INTEGER,
523
+ last_accessed_at INTEGER,
524
+ access_count INTEGER DEFAULT 0,
525
+ status TEXT DEFAULT 'active',
526
+ UNIQUE(namespace, key)
527
527
  )`);
528
528
  // Ensure indexes
529
529
  db.exec(`CREATE INDEX IF NOT EXISTS idx_bridge_ns ON memory_entries(namespace)`);
@@ -672,15 +672,15 @@ export async function bridgeStoreEntry(options) {
672
672
  }
673
673
  // better-sqlite3 uses synchronous .run() with positional params
674
674
  const insertSql = options.upsert
675
- ? `INSERT OR REPLACE INTO memory_entries (
676
- id, key, namespace, content, type,
677
- embedding, embedding_dimensions, embedding_model,
678
- tags, metadata, created_at, updated_at, expires_at, status
675
+ ? `INSERT OR REPLACE INTO memory_entries (
676
+ id, key, namespace, content, type,
677
+ embedding, embedding_dimensions, embedding_model,
678
+ tags, metadata, created_at, updated_at, expires_at, status
679
679
  ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`
680
- : `INSERT INTO memory_entries (
681
- id, key, namespace, content, type,
682
- embedding, embedding_dimensions, embedding_model,
683
- tags, metadata, created_at, updated_at, expires_at, status
680
+ : `INSERT INTO memory_entries (
681
+ id, key, namespace, content, type,
682
+ embedding, embedding_dimensions, embedding_model,
683
+ tags, metadata, created_at, updated_at, expires_at, status
684
684
  ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`;
685
685
  // #1941: provision a `vector_indexes` row for this namespace before the
686
686
  // entry insert. AgentDB's HNSW/router keys lookups by namespace via this
@@ -699,10 +699,10 @@ export async function bridgeStoreEntry(options) {
699
699
  // stop reporting "HNSW index: 0 vectors" while embedded entries exist.
700
700
  try {
701
701
  ctx.db
702
- .prepare(`UPDATE vector_indexes SET
703
- total_vectors = (SELECT COUNT(*) FROM memory_entries
704
- WHERE namespace = ? AND embedding IS NOT NULL),
705
- updated_at = ?
702
+ .prepare(`UPDATE vector_indexes SET
703
+ total_vectors = (SELECT COUNT(*) FROM memory_entries
704
+ WHERE namespace = ? AND embedding IS NOT NULL),
705
+ updated_at = ?
706
706
  WHERE name = ?`)
707
707
  .run(namespace, now, namespace);
708
708
  }
@@ -775,11 +775,11 @@ export async function bridgeSearchEntries(options) {
775
775
  : '';
776
776
  let rows;
777
777
  try {
778
- const stmt = ctx.db.prepare(`
779
- SELECT id, key, namespace, content, embedding
780
- FROM memory_entries
781
- WHERE status = 'active' ${nsFilter}
782
- LIMIT 1000
778
+ const stmt = ctx.db.prepare(`
779
+ SELECT id, key, namespace, content, embedding
780
+ FROM memory_entries
781
+ WHERE status = 'active' ${nsFilter}
782
+ LIMIT 1000
783
783
  `);
784
784
  rows = effectiveNamespace !== 'all' ? stmt.all(effectiveNamespace) : stmt.all();
785
785
  }
@@ -900,12 +900,12 @@ export async function bridgeListEntries(options) {
900
900
  // List
901
901
  const entries = [];
902
902
  try {
903
- const stmt = ctx.db.prepare(`
904
- SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at
905
- FROM memory_entries
906
- WHERE ${statusFilter} ${nsFilter}
907
- ORDER BY updated_at DESC
908
- LIMIT ? OFFSET ?
903
+ const stmt = ctx.db.prepare(`
904
+ SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at
905
+ FROM memory_entries
906
+ WHERE ${statusFilter} ${nsFilter}
907
+ ORDER BY updated_at DESC
908
+ LIMIT ? OFFSET ?
909
909
  `);
910
910
  const rows = stmt.all(...nsParams, limit, offset);
911
911
  for (const row of rows) {
@@ -974,11 +974,11 @@ export async function bridgeGetEntry(options) {
974
974
  }
975
975
  let row;
976
976
  try {
977
- const stmt = ctx.db.prepare(`
978
- SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
979
- FROM memory_entries
980
- WHERE status = 'active' AND key = ? AND namespace = ?
981
- LIMIT 1
977
+ const stmt = ctx.db.prepare(`
978
+ SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
979
+ FROM memory_entries
980
+ WHERE status = 'active' AND key = ? AND namespace = ?
981
+ LIMIT 1
982
982
  `);
983
983
  row = stmt.get(key, namespace);
984
984
  }
@@ -1042,10 +1042,10 @@ export async function bridgeDeleteEntry(options) {
1042
1042
  // Soft delete using parameterized query
1043
1043
  let changes = 0;
1044
1044
  try {
1045
- const result = ctx.db.prepare(`
1046
- UPDATE memory_entries
1047
- SET status = 'deleted', updated_at = ?
1048
- WHERE key = ? AND namespace = ? AND status = 'active'
1045
+ const result = ctx.db.prepare(`
1046
+ UPDATE memory_entries
1047
+ SET status = 'deleted', updated_at = ?
1048
+ WHERE key = ? AND namespace = ? AND status = 'active'
1049
1049
  `).run(Date.now(), key, namespace);
1050
1050
  changes = result?.changes ?? 0;
1051
1051
  }
@@ -1081,6 +1081,57 @@ export async function bridgeDeleteEntry(options) {
1081
1081
  return null;
1082
1082
  }
1083
1083
  }
1084
+ // #2666 — Hard, namespace-scoped purge. bridgeDeleteEntry above only ever
1085
+ // soft-deletes a single (namespace, key); this is a real
1086
+ // `DELETE FROM memory_entries WHERE namespace = ?` against the live
1087
+ // better-sqlite3-style handle, for callers (e.g. a plugin's index-reconcile
1088
+ // step) that need a namespace to be genuinely empty rather than tombstoned.
1089
+ // Irreversible — callers must gate this behind an explicit confirmation.
1090
+ export async function bridgePurgeNamespace(options) {
1091
+ const registry = await getRegistry(options.dbPath);
1092
+ if (!registry)
1093
+ return null;
1094
+ const ctx = getDb(registry);
1095
+ if (!ctx)
1096
+ return null;
1097
+ try {
1098
+ const { namespace } = options;
1099
+ const guardResult = await guardValidate(registry, 'purge', { namespace });
1100
+ if (!guardResult.allowed) {
1101
+ return { success: false, deletedCount: 0, remainingEntries: 0, error: `MutationGuard rejected: ${guardResult.reason}` };
1102
+ }
1103
+ let deletedCount = 0;
1104
+ try {
1105
+ const result = ctx.db.prepare(`DELETE FROM memory_entries WHERE namespace = ?`).run(namespace);
1106
+ deletedCount = result?.changes ?? 0;
1107
+ }
1108
+ catch (e) {
1109
+ return { success: false, deletedCount: 0, remainingEntries: 0, error: e instanceof Error ? e.message : String(e) };
1110
+ }
1111
+ const safeNs = String(namespace).replace(/:/g, '_');
1112
+ await cacheInvalidate(registry, `namespace:${safeNs}`);
1113
+ if (deletedCount > 0) {
1114
+ await logAttestation(registry, 'purge', namespace, { namespace, deletedCount });
1115
+ }
1116
+ let remaining = 0;
1117
+ try {
1118
+ const row = ctx.db.prepare(`SELECT COUNT(*) as cnt FROM memory_entries WHERE status = 'active'`).get();
1119
+ remaining = row?.cnt ?? 0;
1120
+ }
1121
+ catch {
1122
+ // Non-fatal
1123
+ }
1124
+ return {
1125
+ success: true,
1126
+ deletedCount,
1127
+ remainingEntries: remaining,
1128
+ guarded: true,
1129
+ };
1130
+ }
1131
+ catch {
1132
+ return null;
1133
+ }
1134
+ }
1084
1135
  // ===== Phase 2: Embedding bridge =====
1085
1136
  /**
1086
1137
  * Generate embedding via AgentDB v3's embedder.
@@ -1207,11 +1258,11 @@ export async function bridgeSearchHNSW(queryEmbedding, options, dbPath) {
1207
1258
  : '';
1208
1259
  let rows;
1209
1260
  try {
1210
- const stmt = ctx.db.prepare(`
1211
- SELECT id, key, namespace, content, embedding
1212
- FROM memory_entries
1213
- WHERE status = 'active' AND embedding IS NOT NULL ${nsFilter}
1214
- LIMIT 10000
1261
+ const stmt = ctx.db.prepare(`
1262
+ SELECT id, key, namespace, content, embedding
1263
+ FROM memory_entries
1264
+ WHERE status = 'active' AND embedding IS NOT NULL ${nsFilter}
1265
+ LIMIT 10000
1215
1266
  `);
1216
1267
  rows = nsFilter
1217
1268
  ? stmt.all(options.namespace)
@@ -1263,12 +1314,12 @@ export async function bridgeAddToHNSW(id, embedding, entry, dbPath) {
1263
1314
  try {
1264
1315
  const now = Date.now();
1265
1316
  const embeddingJson = JSON.stringify(embedding);
1266
- ctx.db.prepare(`
1267
- INSERT OR REPLACE INTO memory_entries (
1268
- id, key, namespace, content, type,
1269
- embedding, embedding_dimensions, embedding_model,
1270
- created_at, updated_at, status
1271
- ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, 'Xenova/all-MiniLM-L6-v2', ?, ?, 'active')
1317
+ ctx.db.prepare(`
1318
+ INSERT OR REPLACE INTO memory_entries (
1319
+ id, key, namespace, content, type,
1320
+ embedding, embedding_dimensions, embedding_model,
1321
+ created_at, updated_at, status
1322
+ ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, 'Xenova/all-MiniLM-L6-v2', ?, ?, 'active')
1272
1323
  `).run(id, entry.key, entry.namespace, entry.content, embeddingJson, embedding.length, now, now);
1273
1324
  return true;
1274
1325
  }
@@ -1592,9 +1643,9 @@ export async function bridgeRecordCausalEdge(options) {
1592
1643
  const ctx = getDb(registry);
1593
1644
  if (ctx) {
1594
1645
  try {
1595
- ctx.db.prepare(`
1596
- INSERT OR REPLACE INTO memory_entries (id, key, namespace, content, type, created_at, updated_at, status)
1597
- VALUES (?, ?, 'causal-edges', ?, 'procedural', ?, ?, 'active')
1646
+ ctx.db.prepare(`
1647
+ INSERT OR REPLACE INTO memory_entries (id, key, namespace, content, type, created_at, updated_at, status)
1648
+ VALUES (?, ?, 'causal-edges', ?, 'procedural', ?, ?, 'active')
1598
1649
  `).run(generateId('edge'), `${options.sourceId}→${options.targetId}`, JSON.stringify(options), Date.now(), Date.now());
1599
1650
  return { success: true, controller: 'bridge-fallback' };
1600
1651
  }
@@ -1673,10 +1724,10 @@ export async function bridgeDeleteHierarchical(options) {
1673
1724
  const ctx = getDb(registry);
1674
1725
  if (ctx) {
1675
1726
  try {
1676
- const result = ctx.db.prepare(`
1677
- UPDATE memory_entries
1678
- SET status = 'deleted', updated_at = ?
1679
- WHERE key = ? AND namespace LIKE 'hierarchical%' AND status = 'active'
1727
+ const result = ctx.db.prepare(`
1728
+ UPDATE memory_entries
1729
+ SET status = 'deleted', updated_at = ?
1730
+ WHERE key = ? AND namespace LIKE 'hierarchical%' AND status = 'active'
1680
1731
  `).run(Date.now(), key);
1681
1732
  const changes = result?.changes ?? 0;
1682
1733
  if (changes > 0) {
@@ -1752,10 +1803,10 @@ export async function bridgeDeleteCausalEdge(options) {
1752
1803
  const ctx = getDb(registry);
1753
1804
  if (ctx) {
1754
1805
  try {
1755
- const result = ctx.db.prepare(`
1756
- UPDATE memory_entries
1757
- SET status = 'deleted', updated_at = ?
1758
- WHERE key = ? AND namespace = 'causal-edges' AND status = 'active'
1806
+ const result = ctx.db.prepare(`
1807
+ UPDATE memory_entries
1808
+ SET status = 'deleted', updated_at = ?
1809
+ WHERE key = ? AND namespace = 'causal-edges' AND status = 'active'
1759
1810
  `).run(Date.now(), edgeKey);
1760
1811
  const changes = result?.changes ?? 0;
1761
1812
  if (changes > 0) {
@@ -1827,18 +1878,18 @@ export async function bridgeDeleteCausalNode(options) {
1827
1878
  let deletedEdges = 0;
1828
1879
  let deletedNode = false;
1829
1880
  try {
1830
- const edgeResult = ctx.db.prepare(`
1831
- UPDATE memory_entries
1832
- SET status = 'deleted', updated_at = ?
1833
- WHERE namespace = 'causal-edges'
1834
- AND status = 'active'
1835
- AND (key LIKE ? OR key LIKE ?)
1881
+ const edgeResult = ctx.db.prepare(`
1882
+ UPDATE memory_entries
1883
+ SET status = 'deleted', updated_at = ?
1884
+ WHERE namespace = 'causal-edges'
1885
+ AND status = 'active'
1886
+ AND (key LIKE ? OR key LIKE ?)
1836
1887
  `).run(Date.now(), `${nodeId}→%`, `%→${nodeId}`);
1837
1888
  deletedEdges = edgeResult?.changes ?? 0;
1838
- const nodeResult = ctx.db.prepare(`
1839
- UPDATE memory_entries
1840
- SET status = 'deleted', updated_at = ?
1841
- WHERE key = ? AND status = 'active'
1889
+ const nodeResult = ctx.db.prepare(`
1890
+ UPDATE memory_entries
1891
+ SET status = 'deleted', updated_at = ?
1892
+ WHERE key = ? AND status = 'active'
1842
1893
  `).run(Date.now(), nodeId);
1843
1894
  deletedNode = (nodeResult?.changes ?? 0) > 0;
1844
1895
  await logAttestation(registry, 'delete', nodeId, { namespace: 'causal-nodes', deletedEdges });
@@ -2325,11 +2376,11 @@ export async function bridgeGetAllEmbeddings(options) {
2325
2376
  try {
2326
2377
  const dims = options?.dimensions ?? 384;
2327
2378
  const maxRows = options?.limit ?? 50000;
2328
- const rows = ctx.db.prepare(`
2329
- SELECT id, key, namespace, embedding
2330
- FROM memory_entries
2331
- WHERE status = 'active' AND embedding IS NOT NULL
2332
- LIMIT ?
2379
+ const rows = ctx.db.prepare(`
2380
+ SELECT id, key, namespace, embedding
2381
+ FROM memory_entries
2382
+ WHERE status = 'active' AND embedding IS NOT NULL
2383
+ LIMIT ?
2333
2384
  `).all(maxRows);
2334
2385
  const results = [];
2335
2386
  for (const row of rows) {
@@ -516,6 +516,22 @@ export declare function deleteEntry(options: {
516
516
  remainingEntries: number;
517
517
  error?: string;
518
518
  }>;
519
+ /**
520
+ * Advisory O_EXCL lock scoped to a single memory.db file (`<dbPath>.lock`),
521
+ * same stale-takeover pattern as services/global-ai-budget.ts. Only
522
+ * meaningful between callers that opt into it (purgeNamespace does); it
523
+ * cannot coordinate against writers that don't call this helper.
524
+ */
525
+ export declare function withMemoryDbLock<T>(dbPath: string, fn: () => Promise<T> | T): Promise<T>;
526
+ export declare function purgeNamespace(options: {
527
+ namespace: string;
528
+ dbPath?: string;
529
+ }): Promise<{
530
+ success: boolean;
531
+ deletedCount: number;
532
+ remainingEntries: number;
533
+ error?: string;
534
+ }>;
519
535
  declare const _default: {
520
536
  initializeMemoryDatabase: typeof initializeMemoryDatabase;
521
537
  checkMemoryInitialization: typeof checkMemoryInitialization;
@@ -530,6 +546,8 @@ declare const _default: {
530
546
  listEntries: typeof listEntries;
531
547
  getEntry: typeof getEntry;
532
548
  deleteEntry: typeof deleteEntry;
549
+ purgeNamespace: typeof purgeNamespace;
550
+ withMemoryDbLock: typeof withMemoryDbLock;
533
551
  rebuildSearchIndex: typeof rebuildSearchIndex;
534
552
  MEMORY_SCHEMA_V3: string;
535
553
  getInitialMetadata: typeof getInitialMetadata;