@claude-flow/cli 3.42.2 → 3.42.3

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 (459) 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 +606 -606
  277. package/.claude/helpers/intelligence.cjs +1169 -1169
  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 +1290 -1290
  295. package/.claude/helpers/statusline.js +340 -340
  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 +41 -41
  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 +422 -422
  347. package/bin/cli.js +338 -338
  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/completions.js +409 -409
  354. package/dist/src/commands/daemon.js +44 -44
  355. package/dist/src/commands/doctor.js +4 -4
  356. package/dist/src/commands/embeddings.js +26 -26
  357. package/dist/src/commands/hive-mind.js +97 -97
  358. package/dist/src/commands/hooks.js +9 -9
  359. package/dist/src/commands/init.js +75 -75
  360. package/dist/src/commands/ruvector/backup.js +23 -23
  361. package/dist/src/commands/ruvector/benchmark.js +31 -31
  362. package/dist/src/commands/ruvector/import.js +14 -14
  363. package/dist/src/commands/ruvector/init.js +115 -115
  364. package/dist/src/commands/ruvector/migrate.js +99 -99
  365. package/dist/src/commands/ruvector/optimize.js +51 -51
  366. package/dist/src/commands/ruvector/setup.js +624 -624
  367. package/dist/src/commands/ruvector/status.js +38 -38
  368. package/dist/src/config/proven-config.js +2 -2
  369. package/dist/src/init/claudemd-generator.js +273 -273
  370. package/dist/src/init/executor.js +453 -453
  371. package/dist/src/init/helper-signing.js +2 -2
  372. package/dist/src/init/helpers-generator.js +917 -751
  373. package/dist/src/init/statusline-generator.js +24 -24
  374. package/dist/src/mcp-tools/agentdb-tools.js +15 -15
  375. package/dist/src/mcp-tools/browser-intent-tools.js +19 -19
  376. package/dist/src/mcp-tools/seraphina-tools.js +4 -4
  377. package/dist/src/memory/graph-edge-writer.js +22 -22
  378. package/dist/src/memory/memory-bridge.js +114 -114
  379. package/dist/src/memory/memory-initializer.js +416 -416
  380. package/dist/src/memory/rabitq-index.js +5 -5
  381. package/dist/src/proxy/verify.js +2 -2
  382. package/dist/src/runtime/headless.js +28 -28
  383. package/dist/src/ruvector/diskann-backend.d.ts +78 -0
  384. package/dist/src/ruvector/diskann-backend.js +310 -0
  385. package/dist/src/services/distill-tuning.js +7 -7
  386. package/dist/src/services/headless-worker-executor.js +84 -84
  387. package/dist/src/services/memory-distillation.js +18 -18
  388. package/dist/src/transfer/deploy-seraphine.js +23 -23
  389. package/node_modules/@claude-flow/codex/.agents/skills/github-automation/SKILL.md +32 -32
  390. package/node_modules/@claude-flow/codex/.agents/skills/memory-management/SKILL.md +45 -45
  391. package/node_modules/@claude-flow/codex/.agents/skills/performance-analysis/SKILL.md +32 -32
  392. package/node_modules/@claude-flow/codex/.agents/skills/security-audit/SKILL.md +46 -46
  393. package/node_modules/@claude-flow/codex/.agents/skills/sparc-methodology/SKILL.md +46 -46
  394. package/node_modules/@claude-flow/codex/.agents/skills/swarm-orchestration/SKILL.md +53 -53
  395. package/node_modules/@claude-flow/codex/README.md +1044 -1044
  396. package/node_modules/@claude-flow/codex/dist/dual-mode/orchestrator.js +13 -13
  397. package/node_modules/@claude-flow/codex/dist/generators/agents-md.js +664 -664
  398. package/node_modules/@claude-flow/codex/dist/generators/config-toml.js +455 -455
  399. package/node_modules/@claude-flow/codex/dist/generators/skill-md.js +45 -45
  400. package/node_modules/@claude-flow/codex/dist/initializer.js +167 -167
  401. package/node_modules/@claude-flow/codex/dist/templates/index.js +15 -15
  402. package/node_modules/@claude-flow/mcp/README.md +429 -429
  403. package/node_modules/@claude-flow/plugin-agent-federation/README.md +49 -49
  404. package/node_modules/@claude-flow/security/README.md +292 -292
  405. package/node_modules/@claude-flow/security/dist/credential-generator.js +9 -9
  406. package/node_modules/@claude-flow/security/dist/input-validator.d.ts +6 -6
  407. package/node_modules/@claude-flow/security/dist/oauth/callback-server.js +9 -9
  408. package/package.json +181 -181
  409. package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +32 -32
  410. package/plugins/ruflo-metaharness/README.md +72 -72
  411. package/plugins/ruflo-metaharness/agents/metaharness-architect.md +58 -58
  412. package/plugins/ruflo-metaharness/commands/ruflo-metaharness.md +50 -50
  413. package/plugins/ruflo-metaharness/scripts/_darwin.mjs +210 -210
  414. package/plugins/ruflo-metaharness/scripts/_harness.mjs +334 -334
  415. package/plugins/ruflo-metaharness/scripts/_invoke.mjs +230 -230
  416. package/plugins/ruflo-metaharness/scripts/_redblue.mjs +143 -143
  417. package/plugins/ruflo-metaharness/scripts/_similarity.mjs +161 -161
  418. package/plugins/ruflo-metaharness/scripts/_spike-similarity.mjs +223 -223
  419. package/plugins/ruflo-metaharness/scripts/audit-list.mjs +158 -158
  420. package/plugins/ruflo-metaharness/scripts/audit-trend.mjs +272 -272
  421. package/plugins/ruflo-metaharness/scripts/bench-parse-mcp-scan.mjs +146 -146
  422. package/plugins/ruflo-metaharness/scripts/bench-recordpair-overhead.mjs +186 -186
  423. package/plugins/ruflo-metaharness/scripts/bench-similarity.mjs +177 -177
  424. package/plugins/ruflo-metaharness/scripts/bench.mjs +95 -95
  425. package/plugins/ruflo-metaharness/scripts/drift-from-history.mjs +363 -363
  426. package/plugins/ruflo-metaharness/scripts/evolve.mjs +404 -404
  427. package/plugins/ruflo-metaharness/scripts/genome.mjs +105 -105
  428. package/plugins/ruflo-metaharness/scripts/gepa.mjs +153 -153
  429. package/plugins/ruflo-metaharness/scripts/learn.mjs +127 -127
  430. package/plugins/ruflo-metaharness/scripts/mcp-scan.mjs +110 -110
  431. package/plugins/ruflo-metaharness/scripts/mint.mjs +126 -126
  432. package/plugins/ruflo-metaharness/scripts/oia-audit.mjs +228 -228
  433. package/plugins/ruflo-metaharness/scripts/redblue.mjs +286 -286
  434. package/plugins/ruflo-metaharness/scripts/router-parallel-analyze.mjs +250 -250
  435. package/plugins/ruflo-metaharness/scripts/score.mjs +92 -92
  436. package/plugins/ruflo-metaharness/scripts/security-bench.mjs +174 -174
  437. package/plugins/ruflo-metaharness/scripts/similarity.mjs +158 -158
  438. package/plugins/ruflo-metaharness/scripts/smoke.sh +2422 -2422
  439. package/plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs +165 -165
  440. package/plugins/ruflo-metaharness/scripts/test-mcp-tools.mjs +498 -498
  441. package/plugins/ruflo-metaharness/scripts/test-parallel-pipeline.mjs +204 -204
  442. package/plugins/ruflo-metaharness/scripts/test-pipeline-roundtrip.mjs +586 -586
  443. package/plugins/ruflo-metaharness/scripts/test-similarity.mjs +372 -372
  444. package/plugins/ruflo-metaharness/scripts/test-with-openrouter.mjs +229 -229
  445. package/plugins/ruflo-metaharness/scripts/threat-model.mjs +62 -62
  446. package/plugins/ruflo-metaharness/skills/harness-bench/SKILL.md +64 -64
  447. package/plugins/ruflo-metaharness/skills/harness-drift-from-history/SKILL.md +65 -65
  448. package/plugins/ruflo-metaharness/skills/harness-evolve/SKILL.md +131 -131
  449. package/plugins/ruflo-metaharness/skills/harness-genome/SKILL.md +57 -57
  450. package/plugins/ruflo-metaharness/skills/harness-gepa/SKILL.md +65 -65
  451. package/plugins/ruflo-metaharness/skills/harness-learn/SKILL.md +65 -65
  452. package/plugins/ruflo-metaharness/skills/harness-mcp-scan/SKILL.md +49 -49
  453. package/plugins/ruflo-metaharness/skills/harness-mint/SKILL.md +72 -72
  454. package/plugins/ruflo-metaharness/skills/harness-oia-audit/SKILL.md +79 -79
  455. package/plugins/ruflo-metaharness/skills/harness-score/SKILL.md +66 -66
  456. package/plugins/ruflo-metaharness/skills/harness-security-bench/SKILL.md +101 -101
  457. package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +67 -67
  458. package/plugins/ruflo-metaharness/skills/harness-threat-model/SKILL.md +41 -41
  459. package/scripts/postinstall.cjs +153 -153
@@ -211,332 +211,332 @@ async function walRefusalError(operation) {
211
211
  * Enhanced schema with pattern confidence, temporal decay, versioning
212
212
  * Vector embeddings enabled for semantic search
213
213
  */
214
- export const MEMORY_SCHEMA_V3 = `
215
- -- RuFlo V3 Memory Database
216
- -- Version: 3.0.0
217
- -- Features: Pattern learning, vector embeddings, temporal decay, migration tracking
218
-
219
- PRAGMA journal_mode = WAL;
220
- PRAGMA synchronous = NORMAL;
221
- PRAGMA foreign_keys = ON;
222
-
223
- -- ============================================
224
- -- CORE MEMORY TABLES
225
- -- ============================================
226
-
227
- -- Memory entries (main storage)
228
- CREATE TABLE IF NOT EXISTS memory_entries (
229
- id TEXT PRIMARY KEY,
230
- key TEXT NOT NULL,
231
- namespace TEXT DEFAULT 'default',
232
- content TEXT NOT NULL,
233
- type TEXT DEFAULT 'semantic' CHECK(type IN ('semantic', 'episodic', 'procedural', 'working', 'pattern')),
234
-
235
- -- Vector embedding for semantic search (stored as JSON array)
236
- embedding TEXT,
237
- embedding_model TEXT DEFAULT 'local',
238
- embedding_dimensions INTEGER,
239
-
240
- -- Metadata
241
- tags TEXT, -- JSON array
242
- metadata TEXT, -- JSON object
243
- owner_id TEXT,
244
-
245
- -- ADR-323: who/what produced this entry — lets shared-namespace retrieval
246
- -- filter by trust level instead of conflating a user's stated claim with
247
- -- an agent's own output or a raw tool/system observation.
248
- provenance_type TEXT DEFAULT 'unknown' CHECK(provenance_type IN (
249
- 'user_claim', 'agent_output', 'system_observation', 'tool_result', 'unknown'
250
- )),
251
-
252
- -- Timestamps
253
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
254
- updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
255
- expires_at INTEGER,
256
- last_accessed_at INTEGER,
257
-
258
- -- Access tracking for hot/cold detection
259
- access_count INTEGER DEFAULT 0,
260
-
261
- -- Status
262
- status TEXT DEFAULT 'active' CHECK(status IN ('active', 'archived', 'deleted')),
263
-
264
- UNIQUE(namespace, key)
265
- );
266
-
267
- -- Indexes for memory entries
268
- CREATE INDEX IF NOT EXISTS idx_memory_namespace ON memory_entries(namespace);
269
- CREATE INDEX IF NOT EXISTS idx_memory_key ON memory_entries(key);
270
- CREATE INDEX IF NOT EXISTS idx_memory_type ON memory_entries(type);
271
- CREATE INDEX IF NOT EXISTS idx_memory_status ON memory_entries(status);
272
- CREATE INDEX IF NOT EXISTS idx_memory_created ON memory_entries(created_at);
273
- CREATE INDEX IF NOT EXISTS idx_memory_accessed ON memory_entries(last_accessed_at);
274
- CREATE INDEX IF NOT EXISTS idx_memory_owner ON memory_entries(owner_id);
275
-
276
- -- ============================================
277
- -- PATTERN LEARNING TABLES
278
- -- ============================================
279
-
280
- -- Learned patterns with confidence scoring and versioning
281
- CREATE TABLE IF NOT EXISTS patterns (
282
- id TEXT PRIMARY KEY,
283
-
284
- -- Pattern identification
285
- name TEXT NOT NULL,
286
- pattern_type TEXT NOT NULL CHECK(pattern_type IN (
287
- 'task-routing', 'error-recovery', 'optimization', 'learning',
288
- 'coordination', 'prediction', 'code-pattern', 'workflow'
289
- )),
290
-
291
- -- Pattern definition
292
- condition TEXT NOT NULL, -- Regex or semantic match
293
- action TEXT NOT NULL, -- What to do when pattern matches
294
- description TEXT,
295
-
296
- -- Confidence scoring (0.0 - 1.0)
297
- confidence REAL DEFAULT 0.5,
298
- success_count INTEGER DEFAULT 0,
299
- failure_count INTEGER DEFAULT 0,
300
-
301
- -- Temporal decay
302
- decay_rate REAL DEFAULT 0.01, -- How fast confidence decays
303
- half_life_days INTEGER DEFAULT 30, -- Days until confidence halves without use
304
-
305
- -- Vector embedding for semantic pattern matching
306
- embedding TEXT,
307
- embedding_dimensions INTEGER,
308
-
309
- -- Versioning
310
- version INTEGER DEFAULT 1,
311
- parent_id TEXT REFERENCES patterns(id),
312
-
313
- -- Metadata
314
- tags TEXT, -- JSON array
315
- metadata TEXT, -- JSON object
316
- source TEXT, -- Where the pattern was learned from
317
-
318
- -- Timestamps
319
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
320
- updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
321
- last_matched_at INTEGER,
322
- last_success_at INTEGER,
323
- last_failure_at INTEGER,
324
-
325
- -- Status
326
- status TEXT DEFAULT 'active' CHECK(status IN ('active', 'archived', 'deprecated', 'experimental'))
327
- );
328
-
329
- -- Indexes for patterns
330
- CREATE INDEX IF NOT EXISTS idx_patterns_type ON patterns(pattern_type);
331
- CREATE INDEX IF NOT EXISTS idx_patterns_confidence ON patterns(confidence DESC);
332
- CREATE INDEX IF NOT EXISTS idx_patterns_status ON patterns(status);
333
- CREATE INDEX IF NOT EXISTS idx_patterns_last_matched ON patterns(last_matched_at);
334
-
335
- -- Pattern evolution history (for versioning)
336
- CREATE TABLE IF NOT EXISTS pattern_history (
337
- id INTEGER PRIMARY KEY AUTOINCREMENT,
338
- pattern_id TEXT NOT NULL REFERENCES patterns(id),
339
- version INTEGER NOT NULL,
340
-
341
- -- Snapshot of pattern state
342
- confidence REAL,
343
- success_count INTEGER,
344
- failure_count INTEGER,
345
- condition TEXT,
346
- action TEXT,
347
-
348
- -- What changed
349
- change_type TEXT CHECK(change_type IN ('created', 'updated', 'success', 'failure', 'decay', 'merged', 'split')),
350
- change_reason TEXT,
351
-
352
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
353
- );
354
-
355
- CREATE INDEX IF NOT EXISTS idx_pattern_history_pattern ON pattern_history(pattern_id);
356
-
357
- -- ============================================
358
- -- LEARNING & TRAJECTORY TABLES
359
- -- ============================================
360
-
361
- -- Learning trajectories (SONA integration)
362
- CREATE TABLE IF NOT EXISTS trajectories (
363
- id TEXT PRIMARY KEY,
364
- session_id TEXT,
365
-
366
- -- Trajectory state
367
- status TEXT DEFAULT 'active' CHECK(status IN ('active', 'completed', 'failed', 'abandoned')),
368
- verdict TEXT CHECK(verdict IN ('success', 'failure', 'partial', NULL)),
369
-
370
- -- Context
371
- task TEXT,
372
- context TEXT, -- JSON object
373
-
374
- -- Metrics
375
- total_steps INTEGER DEFAULT 0,
376
- total_reward REAL DEFAULT 0,
377
-
378
- -- Timestamps
379
- started_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
380
- ended_at INTEGER,
381
-
382
- -- Reference to extracted pattern (if any)
383
- extracted_pattern_id TEXT REFERENCES patterns(id)
384
- );
385
-
386
- -- Trajectory steps
387
- CREATE TABLE IF NOT EXISTS trajectory_steps (
388
- id INTEGER PRIMARY KEY AUTOINCREMENT,
389
- trajectory_id TEXT NOT NULL REFERENCES trajectories(id),
390
- step_number INTEGER NOT NULL,
391
-
392
- -- Step data
393
- action TEXT NOT NULL,
394
- observation TEXT,
395
- reward REAL DEFAULT 0,
396
-
397
- -- Metadata
398
- metadata TEXT, -- JSON object
399
-
400
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
401
- );
402
-
403
- CREATE INDEX IF NOT EXISTS idx_steps_trajectory ON trajectory_steps(trajectory_id);
404
-
405
- -- ============================================
406
- -- MIGRATION STATE TRACKING
407
- -- ============================================
408
-
409
- -- Migration state (for resume capability)
410
- CREATE TABLE IF NOT EXISTS migration_state (
411
- id TEXT PRIMARY KEY,
412
- migration_type TEXT NOT NULL, -- 'v2-to-v3', 'pattern', 'memory', etc.
413
-
414
- -- Progress tracking
415
- status TEXT DEFAULT 'pending' CHECK(status IN ('pending', 'in_progress', 'completed', 'failed', 'rolled_back')),
416
- total_items INTEGER DEFAULT 0,
417
- processed_items INTEGER DEFAULT 0,
418
- failed_items INTEGER DEFAULT 0,
419
- skipped_items INTEGER DEFAULT 0,
420
-
421
- -- Current position (for resume)
422
- current_batch INTEGER DEFAULT 0,
423
- last_processed_id TEXT,
424
-
425
- -- Source/destination info
426
- source_path TEXT,
427
- source_type TEXT,
428
- destination_path TEXT,
429
-
430
- -- Backup info
431
- backup_path TEXT,
432
- backup_created_at INTEGER,
433
-
434
- -- Error tracking
435
- last_error TEXT,
436
- errors TEXT, -- JSON array of errors
437
-
438
- -- Timestamps
439
- started_at INTEGER,
440
- completed_at INTEGER,
441
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
442
- updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
443
- );
444
-
445
- -- ============================================
446
- -- SESSION MANAGEMENT
447
- -- ============================================
448
-
449
- -- Sessions for context persistence
450
- CREATE TABLE IF NOT EXISTS sessions (
451
- id TEXT PRIMARY KEY,
452
-
453
- -- Session state
454
- state TEXT NOT NULL, -- JSON object with full session state
455
- status TEXT DEFAULT 'active' CHECK(status IN ('active', 'paused', 'completed', 'expired')),
456
-
457
- -- Context
458
- project_path TEXT,
459
- branch TEXT,
460
-
461
- -- Metrics
462
- tasks_completed INTEGER DEFAULT 0,
463
- patterns_learned INTEGER DEFAULT 0,
464
-
465
- -- Timestamps
466
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
467
- updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
468
- expires_at INTEGER
469
- );
470
-
471
- -- ============================================
472
- -- VECTOR INDEX METADATA (for HNSW)
473
- -- ============================================
474
-
475
- -- Track HNSW index state
476
- CREATE TABLE IF NOT EXISTS vector_indexes (
477
- id TEXT PRIMARY KEY,
478
- name TEXT NOT NULL UNIQUE,
479
-
480
- -- Index configuration
481
- dimensions INTEGER NOT NULL,
482
- metric TEXT DEFAULT 'cosine' CHECK(metric IN ('cosine', 'euclidean', 'dot')),
483
-
484
- -- HNSW parameters
485
- hnsw_m INTEGER DEFAULT 16,
486
- hnsw_ef_construction INTEGER DEFAULT 200,
487
- hnsw_ef_search INTEGER DEFAULT 100,
488
-
489
- -- Quantization
490
- quantization_type TEXT CHECK(quantization_type IN ('none', 'scalar', 'product')),
491
- quantization_bits INTEGER DEFAULT 8,
492
-
493
- -- Statistics
494
- total_vectors INTEGER DEFAULT 0,
495
- last_rebuild_at INTEGER,
496
-
497
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
498
- updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
499
- );
500
-
501
- -- ============================================
502
- -- GRAPH EDGES (ADR-130 Phase 1)
503
- -- Unified knowledge graph backend — sql.js canonical store
504
- -- ============================================
505
-
506
- -- Unified graph edges table (ADR-130)
507
- -- Node IDs use domain-prefixed format: {domain}:{uuid}
508
- -- where domain in (mem, agent, task, entity, span, pattern)
509
- CREATE TABLE IF NOT EXISTS graph_edges (
510
- id TEXT PRIMARY KEY, -- edge-{uuid}
511
- source_id TEXT NOT NULL, -- domain-prefixed node ID
512
- target_id TEXT NOT NULL, -- domain-prefixed node ID
513
- relation TEXT NOT NULL, -- e.g. "caused", "depends-on", "imports"
514
- weight REAL DEFAULT 1.0,
515
- -- Temporal / reliability semantics (ADR-130 §"graph that forgets" property)
516
- confidence REAL DEFAULT 1.0, -- [0,1]; updated by JUDGE step
517
- decay_rate REAL DEFAULT 0.0, -- per-day exponential decay applied at read time
518
- last_reinforced TEXT, -- ISO-8601; set when CONSOLIDATE re-touches edge
519
- witness_id TEXT, -- FK to verification/witness-fixes.json (ADR-103)
520
- -- Embedding storage: "inline:{base64}" | "vector_indexes:{id}" | NULL
521
- embedding_ref TEXT,
522
- metadata TEXT, -- JSON blob for plugin-specific fields
523
- created_at TEXT NOT NULL
524
- );
525
-
526
- CREATE INDEX IF NOT EXISTS idx_graph_edges_source ON graph_edges (source_id);
527
- CREATE INDEX IF NOT EXISTS idx_graph_edges_target ON graph_edges (target_id);
528
- CREATE INDEX IF NOT EXISTS idx_graph_edges_relation ON graph_edges (relation);
529
- CREATE INDEX IF NOT EXISTS idx_graph_edges_reinforced ON graph_edges (last_reinforced);
530
-
531
- -- ============================================
532
- -- SYSTEM METADATA
533
- -- ============================================
534
-
535
- CREATE TABLE IF NOT EXISTS metadata (
536
- key TEXT PRIMARY KEY,
537
- value TEXT NOT NULL,
538
- updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
539
- );
214
+ export const MEMORY_SCHEMA_V3 = `
215
+ -- RuFlo V3 Memory Database
216
+ -- Version: 3.0.0
217
+ -- Features: Pattern learning, vector embeddings, temporal decay, migration tracking
218
+
219
+ PRAGMA journal_mode = WAL;
220
+ PRAGMA synchronous = NORMAL;
221
+ PRAGMA foreign_keys = ON;
222
+
223
+ -- ============================================
224
+ -- CORE MEMORY TABLES
225
+ -- ============================================
226
+
227
+ -- Memory entries (main storage)
228
+ CREATE TABLE IF NOT EXISTS memory_entries (
229
+ id TEXT PRIMARY KEY,
230
+ key TEXT NOT NULL,
231
+ namespace TEXT DEFAULT 'default',
232
+ content TEXT NOT NULL,
233
+ type TEXT DEFAULT 'semantic' CHECK(type IN ('semantic', 'episodic', 'procedural', 'working', 'pattern')),
234
+
235
+ -- Vector embedding for semantic search (stored as JSON array)
236
+ embedding TEXT,
237
+ embedding_model TEXT DEFAULT 'local',
238
+ embedding_dimensions INTEGER,
239
+
240
+ -- Metadata
241
+ tags TEXT, -- JSON array
242
+ metadata TEXT, -- JSON object
243
+ owner_id TEXT,
244
+
245
+ -- ADR-323: who/what produced this entry — lets shared-namespace retrieval
246
+ -- filter by trust level instead of conflating a user's stated claim with
247
+ -- an agent's own output or a raw tool/system observation.
248
+ provenance_type TEXT DEFAULT 'unknown' CHECK(provenance_type IN (
249
+ 'user_claim', 'agent_output', 'system_observation', 'tool_result', 'unknown'
250
+ )),
251
+
252
+ -- Timestamps
253
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
254
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
255
+ expires_at INTEGER,
256
+ last_accessed_at INTEGER,
257
+
258
+ -- Access tracking for hot/cold detection
259
+ access_count INTEGER DEFAULT 0,
260
+
261
+ -- Status
262
+ status TEXT DEFAULT 'active' CHECK(status IN ('active', 'archived', 'deleted')),
263
+
264
+ UNIQUE(namespace, key)
265
+ );
266
+
267
+ -- Indexes for memory entries
268
+ CREATE INDEX IF NOT EXISTS idx_memory_namespace ON memory_entries(namespace);
269
+ CREATE INDEX IF NOT EXISTS idx_memory_key ON memory_entries(key);
270
+ CREATE INDEX IF NOT EXISTS idx_memory_type ON memory_entries(type);
271
+ CREATE INDEX IF NOT EXISTS idx_memory_status ON memory_entries(status);
272
+ CREATE INDEX IF NOT EXISTS idx_memory_created ON memory_entries(created_at);
273
+ CREATE INDEX IF NOT EXISTS idx_memory_accessed ON memory_entries(last_accessed_at);
274
+ CREATE INDEX IF NOT EXISTS idx_memory_owner ON memory_entries(owner_id);
275
+
276
+ -- ============================================
277
+ -- PATTERN LEARNING TABLES
278
+ -- ============================================
279
+
280
+ -- Learned patterns with confidence scoring and versioning
281
+ CREATE TABLE IF NOT EXISTS patterns (
282
+ id TEXT PRIMARY KEY,
283
+
284
+ -- Pattern identification
285
+ name TEXT NOT NULL,
286
+ pattern_type TEXT NOT NULL CHECK(pattern_type IN (
287
+ 'task-routing', 'error-recovery', 'optimization', 'learning',
288
+ 'coordination', 'prediction', 'code-pattern', 'workflow'
289
+ )),
290
+
291
+ -- Pattern definition
292
+ condition TEXT NOT NULL, -- Regex or semantic match
293
+ action TEXT NOT NULL, -- What to do when pattern matches
294
+ description TEXT,
295
+
296
+ -- Confidence scoring (0.0 - 1.0)
297
+ confidence REAL DEFAULT 0.5,
298
+ success_count INTEGER DEFAULT 0,
299
+ failure_count INTEGER DEFAULT 0,
300
+
301
+ -- Temporal decay
302
+ decay_rate REAL DEFAULT 0.01, -- How fast confidence decays
303
+ half_life_days INTEGER DEFAULT 30, -- Days until confidence halves without use
304
+
305
+ -- Vector embedding for semantic pattern matching
306
+ embedding TEXT,
307
+ embedding_dimensions INTEGER,
308
+
309
+ -- Versioning
310
+ version INTEGER DEFAULT 1,
311
+ parent_id TEXT REFERENCES patterns(id),
312
+
313
+ -- Metadata
314
+ tags TEXT, -- JSON array
315
+ metadata TEXT, -- JSON object
316
+ source TEXT, -- Where the pattern was learned from
317
+
318
+ -- Timestamps
319
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
320
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
321
+ last_matched_at INTEGER,
322
+ last_success_at INTEGER,
323
+ last_failure_at INTEGER,
324
+
325
+ -- Status
326
+ status TEXT DEFAULT 'active' CHECK(status IN ('active', 'archived', 'deprecated', 'experimental'))
327
+ );
328
+
329
+ -- Indexes for patterns
330
+ CREATE INDEX IF NOT EXISTS idx_patterns_type ON patterns(pattern_type);
331
+ CREATE INDEX IF NOT EXISTS idx_patterns_confidence ON patterns(confidence DESC);
332
+ CREATE INDEX IF NOT EXISTS idx_patterns_status ON patterns(status);
333
+ CREATE INDEX IF NOT EXISTS idx_patterns_last_matched ON patterns(last_matched_at);
334
+
335
+ -- Pattern evolution history (for versioning)
336
+ CREATE TABLE IF NOT EXISTS pattern_history (
337
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
338
+ pattern_id TEXT NOT NULL REFERENCES patterns(id),
339
+ version INTEGER NOT NULL,
340
+
341
+ -- Snapshot of pattern state
342
+ confidence REAL,
343
+ success_count INTEGER,
344
+ failure_count INTEGER,
345
+ condition TEXT,
346
+ action TEXT,
347
+
348
+ -- What changed
349
+ change_type TEXT CHECK(change_type IN ('created', 'updated', 'success', 'failure', 'decay', 'merged', 'split')),
350
+ change_reason TEXT,
351
+
352
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
353
+ );
354
+
355
+ CREATE INDEX IF NOT EXISTS idx_pattern_history_pattern ON pattern_history(pattern_id);
356
+
357
+ -- ============================================
358
+ -- LEARNING & TRAJECTORY TABLES
359
+ -- ============================================
360
+
361
+ -- Learning trajectories (SONA integration)
362
+ CREATE TABLE IF NOT EXISTS trajectories (
363
+ id TEXT PRIMARY KEY,
364
+ session_id TEXT,
365
+
366
+ -- Trajectory state
367
+ status TEXT DEFAULT 'active' CHECK(status IN ('active', 'completed', 'failed', 'abandoned')),
368
+ verdict TEXT CHECK(verdict IN ('success', 'failure', 'partial', NULL)),
369
+
370
+ -- Context
371
+ task TEXT,
372
+ context TEXT, -- JSON object
373
+
374
+ -- Metrics
375
+ total_steps INTEGER DEFAULT 0,
376
+ total_reward REAL DEFAULT 0,
377
+
378
+ -- Timestamps
379
+ started_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
380
+ ended_at INTEGER,
381
+
382
+ -- Reference to extracted pattern (if any)
383
+ extracted_pattern_id TEXT REFERENCES patterns(id)
384
+ );
385
+
386
+ -- Trajectory steps
387
+ CREATE TABLE IF NOT EXISTS trajectory_steps (
388
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
389
+ trajectory_id TEXT NOT NULL REFERENCES trajectories(id),
390
+ step_number INTEGER NOT NULL,
391
+
392
+ -- Step data
393
+ action TEXT NOT NULL,
394
+ observation TEXT,
395
+ reward REAL DEFAULT 0,
396
+
397
+ -- Metadata
398
+ metadata TEXT, -- JSON object
399
+
400
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
401
+ );
402
+
403
+ CREATE INDEX IF NOT EXISTS idx_steps_trajectory ON trajectory_steps(trajectory_id);
404
+
405
+ -- ============================================
406
+ -- MIGRATION STATE TRACKING
407
+ -- ============================================
408
+
409
+ -- Migration state (for resume capability)
410
+ CREATE TABLE IF NOT EXISTS migration_state (
411
+ id TEXT PRIMARY KEY,
412
+ migration_type TEXT NOT NULL, -- 'v2-to-v3', 'pattern', 'memory', etc.
413
+
414
+ -- Progress tracking
415
+ status TEXT DEFAULT 'pending' CHECK(status IN ('pending', 'in_progress', 'completed', 'failed', 'rolled_back')),
416
+ total_items INTEGER DEFAULT 0,
417
+ processed_items INTEGER DEFAULT 0,
418
+ failed_items INTEGER DEFAULT 0,
419
+ skipped_items INTEGER DEFAULT 0,
420
+
421
+ -- Current position (for resume)
422
+ current_batch INTEGER DEFAULT 0,
423
+ last_processed_id TEXT,
424
+
425
+ -- Source/destination info
426
+ source_path TEXT,
427
+ source_type TEXT,
428
+ destination_path TEXT,
429
+
430
+ -- Backup info
431
+ backup_path TEXT,
432
+ backup_created_at INTEGER,
433
+
434
+ -- Error tracking
435
+ last_error TEXT,
436
+ errors TEXT, -- JSON array of errors
437
+
438
+ -- Timestamps
439
+ started_at INTEGER,
440
+ completed_at INTEGER,
441
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
442
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
443
+ );
444
+
445
+ -- ============================================
446
+ -- SESSION MANAGEMENT
447
+ -- ============================================
448
+
449
+ -- Sessions for context persistence
450
+ CREATE TABLE IF NOT EXISTS sessions (
451
+ id TEXT PRIMARY KEY,
452
+
453
+ -- Session state
454
+ state TEXT NOT NULL, -- JSON object with full session state
455
+ status TEXT DEFAULT 'active' CHECK(status IN ('active', 'paused', 'completed', 'expired')),
456
+
457
+ -- Context
458
+ project_path TEXT,
459
+ branch TEXT,
460
+
461
+ -- Metrics
462
+ tasks_completed INTEGER DEFAULT 0,
463
+ patterns_learned INTEGER DEFAULT 0,
464
+
465
+ -- Timestamps
466
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
467
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
468
+ expires_at INTEGER
469
+ );
470
+
471
+ -- ============================================
472
+ -- VECTOR INDEX METADATA (for HNSW)
473
+ -- ============================================
474
+
475
+ -- Track HNSW index state
476
+ CREATE TABLE IF NOT EXISTS vector_indexes (
477
+ id TEXT PRIMARY KEY,
478
+ name TEXT NOT NULL UNIQUE,
479
+
480
+ -- Index configuration
481
+ dimensions INTEGER NOT NULL,
482
+ metric TEXT DEFAULT 'cosine' CHECK(metric IN ('cosine', 'euclidean', 'dot')),
483
+
484
+ -- HNSW parameters
485
+ hnsw_m INTEGER DEFAULT 16,
486
+ hnsw_ef_construction INTEGER DEFAULT 200,
487
+ hnsw_ef_search INTEGER DEFAULT 100,
488
+
489
+ -- Quantization
490
+ quantization_type TEXT CHECK(quantization_type IN ('none', 'scalar', 'product')),
491
+ quantization_bits INTEGER DEFAULT 8,
492
+
493
+ -- Statistics
494
+ total_vectors INTEGER DEFAULT 0,
495
+ last_rebuild_at INTEGER,
496
+
497
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
498
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
499
+ );
500
+
501
+ -- ============================================
502
+ -- GRAPH EDGES (ADR-130 Phase 1)
503
+ -- Unified knowledge graph backend — sql.js canonical store
504
+ -- ============================================
505
+
506
+ -- Unified graph edges table (ADR-130)
507
+ -- Node IDs use domain-prefixed format: {domain}:{uuid}
508
+ -- where domain in (mem, agent, task, entity, span, pattern)
509
+ CREATE TABLE IF NOT EXISTS graph_edges (
510
+ id TEXT PRIMARY KEY, -- edge-{uuid}
511
+ source_id TEXT NOT NULL, -- domain-prefixed node ID
512
+ target_id TEXT NOT NULL, -- domain-prefixed node ID
513
+ relation TEXT NOT NULL, -- e.g. "caused", "depends-on", "imports"
514
+ weight REAL DEFAULT 1.0,
515
+ -- Temporal / reliability semantics (ADR-130 §"graph that forgets" property)
516
+ confidence REAL DEFAULT 1.0, -- [0,1]; updated by JUDGE step
517
+ decay_rate REAL DEFAULT 0.0, -- per-day exponential decay applied at read time
518
+ last_reinforced TEXT, -- ISO-8601; set when CONSOLIDATE re-touches edge
519
+ witness_id TEXT, -- FK to verification/witness-fixes.json (ADR-103)
520
+ -- Embedding storage: "inline:{base64}" | "vector_indexes:{id}" | NULL
521
+ embedding_ref TEXT,
522
+ metadata TEXT, -- JSON blob for plugin-specific fields
523
+ created_at TEXT NOT NULL
524
+ );
525
+
526
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_source ON graph_edges (source_id);
527
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_target ON graph_edges (target_id);
528
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_relation ON graph_edges (relation);
529
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_reinforced ON graph_edges (last_reinforced);
530
+
531
+ -- ============================================
532
+ -- SYSTEM METADATA
533
+ -- ============================================
534
+
535
+ CREATE TABLE IF NOT EXISTS metadata (
536
+ key TEXT PRIMARY KEY,
537
+ value TEXT NOT NULL,
538
+ updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
539
+ );
540
540
  `;
541
541
  let hnswIndex = null;
542
542
  let hnswInitializing = false;
@@ -624,11 +624,11 @@ export async function getHNSWIndex(options) {
624
624
  const fileBuffer = readFileMaybeEncrypted(dbPath, null);
625
625
  const sqlDb = new SQL.Database(fileBuffer);
626
626
  // Load all entries with embeddings
627
- const result = sqlDb.exec(`
628
- SELECT id, key, namespace, content, embedding
629
- FROM memory_entries
630
- WHERE status = 'active' AND embedding IS NOT NULL
631
- LIMIT 10000
627
+ const result = sqlDb.exec(`
628
+ SELECT id, key, namespace, content, embedding
629
+ FROM memory_entries
630
+ WHERE status = 'active' AND embedding IS NOT NULL
631
+ LIMIT 10000
632
632
  `);
633
633
  if (result[0]?.values) {
634
634
  for (const row of result[0].values) {
@@ -1100,24 +1100,24 @@ export function flashAttentionSearch(query, vectors, options = {}) {
1100
1100
  * Initial metadata to insert after schema creation
1101
1101
  */
1102
1102
  export function getInitialMetadata(backend) {
1103
- return `
1104
- INSERT OR REPLACE INTO metadata (key, value) VALUES
1105
- ('schema_version', '3.0.0'),
1106
- ('backend', '${backend}'),
1107
- ('created_at', '${new Date().toISOString()}'),
1108
- ('sql_js', 'true'),
1109
- ('vector_embeddings', 'enabled'),
1110
- ('pattern_learning', 'enabled'),
1111
- ('temporal_decay', 'enabled'),
1112
- ('hnsw_indexing', 'enabled');
1113
-
1114
- -- Create default vector index configuration. Dimension matches the default
1115
- -- ONNX embedding model (Xenova/all-MiniLM-L6-v2, 384-dim); HNSW rejects
1116
- -- inserts whose dim does not match this row, so a 768 here breaks every
1117
- -- memory_store --vector and memory_search on a fresh install (#1947).
1118
- INSERT OR IGNORE INTO vector_indexes (id, name, dimensions) VALUES
1119
- ('default', 'default', 384),
1120
- ('patterns', 'patterns', 384);
1103
+ return `
1104
+ INSERT OR REPLACE INTO metadata (key, value) VALUES
1105
+ ('schema_version', '3.0.0'),
1106
+ ('backend', '${backend}'),
1107
+ ('created_at', '${new Date().toISOString()}'),
1108
+ ('sql_js', 'true'),
1109
+ ('vector_embeddings', 'enabled'),
1110
+ ('pattern_learning', 'enabled'),
1111
+ ('temporal_decay', 'enabled'),
1112
+ ('hnsw_indexing', 'enabled');
1113
+
1114
+ -- Create default vector index configuration. Dimension matches the default
1115
+ -- ONNX embedding model (Xenova/all-MiniLM-L6-v2, 384-dim); HNSW rejects
1116
+ -- inserts whose dim does not match this row, so a 768 here breaks every
1117
+ -- memory_store --vector and memory_search on a fresh install (#1947).
1118
+ INSERT OR IGNORE INTO vector_indexes (id, name, dimensions) VALUES
1119
+ ('default', 'default', 384),
1120
+ ('patterns', 'patterns', 384);
1121
1121
  `;
1122
1122
  }
1123
1123
  /**
@@ -1601,20 +1601,20 @@ export async function repairVectorIndexes(dbPath, opts = {}) {
1601
1601
  return res;
1602
1602
  }
1603
1603
  if (!hasVectorIndexes) {
1604
- db.exec(`CREATE TABLE IF NOT EXISTS vector_indexes (
1605
- id TEXT PRIMARY KEY,
1606
- name TEXT NOT NULL UNIQUE,
1607
- dimensions INTEGER NOT NULL,
1608
- metric TEXT DEFAULT 'cosine' CHECK(metric IN ('cosine', 'euclidean', 'dot')),
1609
- hnsw_m INTEGER DEFAULT 16,
1610
- hnsw_ef_construction INTEGER DEFAULT 200,
1611
- hnsw_ef_search INTEGER DEFAULT 100,
1612
- quantization_type TEXT CHECK(quantization_type IN ('none', 'scalar', 'product')),
1613
- quantization_bits INTEGER DEFAULT 8,
1614
- total_vectors INTEGER DEFAULT 0,
1615
- last_rebuild_at INTEGER,
1616
- created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
1617
- updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
1604
+ db.exec(`CREATE TABLE IF NOT EXISTS vector_indexes (
1605
+ id TEXT PRIMARY KEY,
1606
+ name TEXT NOT NULL UNIQUE,
1607
+ dimensions INTEGER NOT NULL,
1608
+ metric TEXT DEFAULT 'cosine' CHECK(metric IN ('cosine', 'euclidean', 'dot')),
1609
+ hnsw_m INTEGER DEFAULT 16,
1610
+ hnsw_ef_construction INTEGER DEFAULT 200,
1611
+ hnsw_ef_search INTEGER DEFAULT 100,
1612
+ quantization_type TEXT CHECK(quantization_type IN ('none', 'scalar', 'product')),
1613
+ quantization_bits INTEGER DEFAULT 8,
1614
+ total_vectors INTEGER DEFAULT 0,
1615
+ last_rebuild_at INTEGER,
1616
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
1617
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
1618
1618
  )`);
1619
1619
  res.tableCreated = true;
1620
1620
  }
@@ -1928,14 +1928,14 @@ export async function applyTemporalDecay(dbPath) {
1928
1928
  const db = new SQL.Database(fileBuffer);
1929
1929
  // Apply decay: confidence *= exp(-decay_rate * days_since_last_use)
1930
1930
  const now = Date.now();
1931
- const decayQuery = `
1932
- UPDATE patterns
1933
- SET
1934
- confidence = confidence * (1.0 - decay_rate * ((? - COALESCE(last_matched_at, created_at)) / 86400000.0)),
1935
- updated_at = ?
1936
- WHERE status = 'active'
1937
- AND confidence > 0.1
1938
- AND (? - COALESCE(last_matched_at, created_at)) > 86400000
1931
+ const decayQuery = `
1932
+ UPDATE patterns
1933
+ SET
1934
+ confidence = confidence * (1.0 - decay_rate * ((? - COALESCE(last_matched_at, created_at)) / 86400000.0)),
1935
+ updated_at = ?
1936
+ WHERE status = 'active'
1937
+ AND confidence > 0.1
1938
+ AND (? - COALESCE(last_matched_at, created_at)) > 86400000
1939
1939
  `;
1940
1940
  db.run(decayQuery, [now, now, now]);
1941
1941
  const changes = db.getRowsModified();
@@ -2346,9 +2346,9 @@ export async function verifyMemoryInit(dbPath, options) {
2346
2346
  const testKey = 'verification_test';
2347
2347
  const testValue = 'This is a verification test entry for memory initialization';
2348
2348
  try {
2349
- db.run(`
2350
- INSERT INTO memory_entries (id, key, namespace, content, type, created_at, updated_at)
2351
- VALUES (?, ?, 'test', ?, 'semantic', ?, ?)
2349
+ db.run(`
2350
+ INSERT INTO memory_entries (id, key, namespace, content, type, created_at, updated_at)
2351
+ VALUES (?, ?, 'test', ?, 'semantic', ?, ?)
2352
2352
  `, [testId, testKey, testValue, Date.now(), Date.now()]);
2353
2353
  tests.push({
2354
2354
  name: 'Write entry',
@@ -2390,10 +2390,10 @@ export async function verifyMemoryInit(dbPath, options) {
2390
2390
  try {
2391
2391
  const { embedding, dimensions, model } = await generateEmbedding(testValue);
2392
2392
  const embeddingJson = JSON.stringify(embedding);
2393
- db.run(`
2394
- UPDATE memory_entries
2395
- SET embedding = ?, embedding_dimensions = ?, embedding_model = ?
2396
- WHERE id = ?
2393
+ db.run(`
2394
+ UPDATE memory_entries
2395
+ SET embedding = ?, embedding_dimensions = ?, embedding_model = ?
2396
+ WHERE id = ?
2397
2397
  `, [embeddingJson, dimensions, model, testId]);
2398
2398
  tests.push({
2399
2399
  name: 'Generate embedding',
@@ -2414,9 +2414,9 @@ export async function verifyMemoryInit(dbPath, options) {
2414
2414
  const patternStart = Date.now();
2415
2415
  try {
2416
2416
  const patternId = `pattern_${Date.now()}`;
2417
- db.run(`
2418
- INSERT INTO patterns (id, name, pattern_type, condition, action, confidence, created_at, updated_at)
2419
- VALUES (?, 'test-pattern', 'task-routing', 'test condition', 'test action', 0.5, ?, ?)
2417
+ db.run(`
2418
+ INSERT INTO patterns (id, name, pattern_type, condition, action, confidence, created_at, updated_at)
2419
+ VALUES (?, 'test-pattern', 'task-routing', 'test condition', 'test action', 0.5, ?, ?)
2420
2420
  `, [patternId, Date.now(), Date.now()]);
2421
2421
  tests.push({
2422
2422
  name: 'Pattern storage',
@@ -2593,15 +2593,15 @@ export async function storeEntry(options) {
2593
2593
  catch { /* vector_indexes may not exist on legacy DBs — fall through */ }
2594
2594
  // Insert or update entry (upsert mode uses REPLACE)
2595
2595
  const insertSql = upsert
2596
- ? `INSERT OR REPLACE INTO memory_entries (
2597
- id, key, namespace, content, type,
2598
- embedding, embedding_dimensions, embedding_model,
2599
- tags, metadata, provenance_type, created_at, updated_at, expires_at, status
2596
+ ? `INSERT OR REPLACE INTO memory_entries (
2597
+ id, key, namespace, content, type,
2598
+ embedding, embedding_dimensions, embedding_model,
2599
+ tags, metadata, provenance_type, created_at, updated_at, expires_at, status
2600
2600
  ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, ?, 'active')`
2601
- : `INSERT INTO memory_entries (
2602
- id, key, namespace, content, type,
2603
- embedding, embedding_dimensions, embedding_model,
2604
- tags, metadata, provenance_type, created_at, updated_at, expires_at, status
2601
+ : `INSERT INTO memory_entries (
2602
+ id, key, namespace, content, type,
2603
+ embedding, embedding_dimensions, embedding_model,
2604
+ tags, metadata, provenance_type, created_at, updated_at, expires_at, status
2605
2605
  ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, ?, 'active')`;
2606
2606
  try {
2607
2607
  db.run(insertSql, [
@@ -2975,8 +2975,8 @@ export async function listEntries(options) {
2975
2975
  const safeLimit = parseInt(String(limit), 10) || 100;
2976
2976
  const safeOffset = parseInt(String(offset), 10) || 0;
2977
2977
  // #2120 — same NULL-as-active acceptance as the count above.
2978
- const listStmt = db.prepare(`SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, provenance_type
2979
- FROM memory_entries WHERE ${whereSql}
2978
+ const listStmt = db.prepare(`SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, provenance_type
2979
+ FROM memory_entries WHERE ${whereSql}
2980
2980
  ORDER BY updated_at DESC LIMIT ? OFFSET ?`);
2981
2981
  listStmt.bind([...whereParams, safeLimit, safeOffset]);
2982
2982
  const listRows = [];
@@ -3063,13 +3063,13 @@ export async function getEntry(options) {
3063
3063
  const fileBuffer = readFileMaybeEncrypted(dbPath, null);
3064
3064
  const db = new SQL.Database(fileBuffer);
3065
3065
  // Find entry by key
3066
- const getStmt = db.prepare(`
3067
- SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
3068
- FROM memory_entries
3069
- WHERE ${ACTIVE_MEMORY_ROW_SQL}
3070
- AND key = ?
3071
- AND namespace = ?
3072
- LIMIT 1
3066
+ const getStmt = db.prepare(`
3067
+ SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
3068
+ FROM memory_entries
3069
+ WHERE ${ACTIVE_MEMORY_ROW_SQL}
3070
+ AND key = ?
3071
+ AND namespace = ?
3072
+ LIMIT 1
3073
3073
  `);
3074
3074
  getStmt.bind([key, namespace]);
3075
3075
  const getRows = [];
@@ -3084,10 +3084,10 @@ export async function getEntry(options) {
3084
3084
  }
3085
3085
  const [id, entryKey, ns, content, embedding, accessCount, createdAt, updatedAt, tagsJson] = result[0].values[0];
3086
3086
  // Update access count
3087
- db.run(`
3088
- UPDATE memory_entries
3089
- SET access_count = access_count + 1, last_accessed_at = strftime('%s', 'now') * 1000
3090
- WHERE id = ?
3087
+ db.run(`
3088
+ UPDATE memory_entries
3089
+ SET access_count = access_count + 1, last_accessed_at = strftime('%s', 'now') * 1000
3090
+ WHERE id = ?
3091
3091
  `, [String(id)]);
3092
3092
  // Save updated database
3093
3093
  const data = db.export();
@@ -3182,12 +3182,12 @@ export async function deleteEntry(options) {
3182
3182
  const fileBuffer = readFileMaybeEncrypted(dbPath, null);
3183
3183
  const db = new SQL.Database(fileBuffer);
3184
3184
  // Check if entry exists first
3185
- const checkStmt = db.prepare(`
3186
- SELECT id FROM memory_entries
3187
- WHERE ${ACTIVE_MEMORY_ROW_SQL}
3188
- AND key = ?
3189
- AND namespace = ?
3190
- LIMIT 1
3185
+ const checkStmt = db.prepare(`
3186
+ SELECT id FROM memory_entries
3187
+ WHERE ${ACTIVE_MEMORY_ROW_SQL}
3188
+ AND key = ?
3189
+ AND namespace = ?
3190
+ LIMIT 1
3191
3191
  `);
3192
3192
  checkStmt.bind([key, namespace]);
3193
3193
  const checkRows = [];
@@ -3212,14 +3212,14 @@ export async function deleteEntry(options) {
3212
3212
  }
3213
3213
  // Delete the entry (soft delete by setting status to 'deleted')
3214
3214
  // Also null out the embedding to clean up vector data from SQLite
3215
- db.run(`
3216
- UPDATE memory_entries
3217
- SET status = 'deleted',
3218
- embedding = NULL,
3219
- updated_at = strftime('%s', 'now') * 1000
3220
- WHERE key = ?
3221
- AND namespace = ?
3222
- AND ${ACTIVE_MEMORY_ROW_SQL}
3215
+ db.run(`
3216
+ UPDATE memory_entries
3217
+ SET status = 'deleted',
3218
+ embedding = NULL,
3219
+ updated_at = strftime('%s', 'now') * 1000
3220
+ WHERE key = ?
3221
+ AND namespace = ?
3222
+ AND ${ACTIVE_MEMORY_ROW_SQL}
3223
3223
  `, [key, namespace]);
3224
3224
  // Get remaining count
3225
3225
  const countResult = db.exec(`SELECT COUNT(*) FROM memory_entries WHERE ${ACTIVE_MEMORY_ROW_SQL}`);