claude-flow 3.42.3 → 3.42.4

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 (463) hide show
  1. package/.claude/agents/MIGRATION_SUMMARY.md +221 -221
  2. package/.claude/agents/analysis/analyze-code-quality.md +57 -57
  3. package/.claude/agents/analysis/code-analyzer.md +188 -188
  4. package/.claude/agents/analysis/code-review/analyze-code-quality.md +57 -57
  5. package/.claude/agents/architecture/system-design/arch-system-design.md +35 -35
  6. package/.claude/agents/base-template-generator.md +41 -41
  7. package/.claude/agents/consensus/byzantine-coordinator.md +42 -42
  8. package/.claude/agents/consensus/crdt-synchronizer.md +976 -976
  9. package/.claude/agents/consensus/gossip-coordinator.md +42 -42
  10. package/.claude/agents/consensus/performance-benchmarker.md +830 -830
  11. package/.claude/agents/consensus/quorum-manager.md +802 -802
  12. package/.claude/agents/consensus/raft-manager.md +42 -42
  13. package/.claude/agents/consensus/security-manager.md +601 -601
  14. package/.claude/agents/core/coder.md +254 -254
  15. package/.claude/agents/core/planner.md +151 -151
  16. package/.claude/agents/core/researcher.md +173 -173
  17. package/.claude/agents/core/reviewer.md +308 -308
  18. package/.claude/agents/core/tester.md +299 -299
  19. package/.claude/agents/custom/test-long-runner.md +43 -43
  20. package/.claude/agents/data/ml/data-ml-model.md +75 -75
  21. package/.claude/agents/database-specialist.md +9 -9
  22. package/.claude/agents/development/backend/dev-backend-api.md +28 -28
  23. package/.claude/agents/development/dev-backend-api.md +177 -177
  24. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +51 -51
  25. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +62 -62
  26. package/.claude/agents/dual-mode/codex-coordinator.md +206 -206
  27. package/.claude/agents/dual-mode/codex-worker.md +190 -190
  28. package/.claude/agents/dual-mode/dual-orchestrator.md +253 -253
  29. package/.claude/agents/flow-nexus/app-store.md +87 -87
  30. package/.claude/agents/flow-nexus/authentication.md +68 -68
  31. package/.claude/agents/flow-nexus/challenges.md +80 -80
  32. package/.claude/agents/flow-nexus/neural-network.md +87 -87
  33. package/.claude/agents/flow-nexus/payments.md +82 -82
  34. package/.claude/agents/flow-nexus/sandbox.md +75 -75
  35. package/.claude/agents/flow-nexus/swarm.md +75 -75
  36. package/.claude/agents/flow-nexus/user-tools.md +95 -95
  37. package/.claude/agents/flow-nexus/workflow.md +83 -83
  38. package/.claude/agents/github/code-review-swarm.md +520 -520
  39. package/.claude/agents/github/github-modes.md +153 -153
  40. package/.claude/agents/github/issue-tracker.md +298 -298
  41. package/.claude/agents/github/multi-repo-swarm.md +524 -524
  42. package/.claude/agents/github/pr-manager.md +162 -162
  43. package/.claude/agents/github/project-board-sync.md +477 -477
  44. package/.claude/agents/github/release-manager.md +337 -337
  45. package/.claude/agents/github/release-swarm.md +550 -550
  46. package/.claude/agents/github/repo-architect.md +364 -364
  47. package/.claude/agents/github/swarm-issue.md +550 -550
  48. package/.claude/agents/github/swarm-pr.md +401 -401
  49. package/.claude/agents/github/sync-coordinator.md +424 -424
  50. package/.claude/agents/github/workflow-automation.md +604 -604
  51. package/.claude/agents/goal/agent.md +816 -816
  52. package/.claude/agents/goal/code-goal-planner.md +444 -444
  53. package/.claude/agents/goal/goal-planner.md +167 -167
  54. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +128 -128
  55. package/.claude/agents/hive-mind/queen-coordinator.md +201 -201
  56. package/.claude/agents/hive-mind/scout-explorer.md +240 -240
  57. package/.claude/agents/hive-mind/swarm-memory-manager.md +191 -191
  58. package/.claude/agents/hive-mind/worker-specialist.md +215 -215
  59. package/.claude/agents/neural/safla-neural.md +73 -73
  60. package/.claude/agents/optimization/benchmark-suite.md +662 -662
  61. package/.claude/agents/optimization/load-balancer.md +428 -428
  62. package/.claude/agents/optimization/performance-monitor.md +669 -669
  63. package/.claude/agents/optimization/resource-allocator.md +671 -671
  64. package/.claude/agents/optimization/topology-optimizer.md +805 -805
  65. package/.claude/agents/payments/agentic-payments.md +126 -126
  66. package/.claude/agents/project-coordinator.md +8 -8
  67. package/.claude/agents/python-specialist.md +9 -9
  68. package/.claude/agents/reasoning/agent.md +816 -816
  69. package/.claude/agents/reasoning/goal-planner.md +72 -72
  70. package/.claude/agents/security-auditor.md +9 -9
  71. package/.claude/agents/sona/sona-learning-optimizer.md +65 -65
  72. package/.claude/agents/sparc/architecture.md +452 -452
  73. package/.claude/agents/sparc/pseudocode.md +298 -298
  74. package/.claude/agents/sparc/refinement.md +503 -503
  75. package/.claude/agents/sparc/specification.md +257 -257
  76. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +87 -87
  77. package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
  78. package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
  79. package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
  80. package/.claude/agents/sublinear/performance-optimizer.md +367 -367
  81. package/.claude/agents/sublinear/trading-predictor.md +245 -245
  82. package/.claude/agents/swarm/adaptive-coordinator.md +363 -363
  83. package/.claude/agents/swarm/hierarchical-coordinator.md +299 -299
  84. package/.claude/agents/swarm/mesh-coordinator.md +362 -362
  85. package/.claude/agents/templates/automation-smart-agent.md +184 -184
  86. package/.claude/agents/templates/coordinator-swarm-init.md +82 -82
  87. package/.claude/agents/templates/github-pr-manager.md +154 -154
  88. package/.claude/agents/templates/implementer-sparc-coder.md +242 -242
  89. package/.claude/agents/templates/memory-coordinator.md +162 -162
  90. package/.claude/agents/templates/migration-plan.md +723 -723
  91. package/.claude/agents/templates/orchestrator-task.md +119 -119
  92. package/.claude/agents/templates/performance-analyzer.md +178 -178
  93. package/.claude/agents/templates/sparc-coordinator.md +162 -162
  94. package/.claude/agents/testing/production-validator.md +372 -372
  95. package/.claude/agents/testing/tdd-london-swarm.md +221 -221
  96. package/.claude/agents/testing/unit/tdd-london-swarm.md +221 -221
  97. package/.claude/agents/testing/validation/production-validator.md +372 -372
  98. package/.claude/agents/typescript-specialist.md +9 -9
  99. package/.claude/agents/v3/database-specialist.md +9 -9
  100. package/.claude/agents/v3/project-coordinator.md +8 -8
  101. package/.claude/agents/v3/python-specialist.md +9 -9
  102. package/.claude/agents/v3/test-architect.md +9 -9
  103. package/.claude/agents/v3/typescript-specialist.md +9 -9
  104. package/.claude/agents/v3/v3-integration-architect.md +311 -311
  105. package/.claude/agents/v3/v3-memory-specialist.md +280 -280
  106. package/.claude/agents/v3/v3-performance-engineer.md +362 -362
  107. package/.claude/agents/v3/v3-queen-coordinator.md +62 -62
  108. package/.claude/agents/v3/v3-security-architect.md +139 -139
  109. package/.claude/checkpoints/1767754460.json +8 -8
  110. package/.claude/commands/agents/README.md +10 -10
  111. package/.claude/commands/agents/agent-capabilities.md +21 -21
  112. package/.claude/commands/agents/agent-coordination.md +28 -28
  113. package/.claude/commands/agents/agent-spawning.md +28 -28
  114. package/.claude/commands/agents/agent-types.md +26 -26
  115. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
  116. package/.claude/commands/analysis/README.md +9 -9
  117. package/.claude/commands/analysis/bottleneck-detect.md +162 -162
  118. package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
  119. package/.claude/commands/analysis/performance-report.md +25 -25
  120. package/.claude/commands/analysis/token-efficiency.md +44 -44
  121. package/.claude/commands/analysis/token-usage.md +25 -25
  122. package/.claude/commands/automation/README.md +9 -9
  123. package/.claude/commands/automation/auto-agent.md +122 -122
  124. package/.claude/commands/automation/self-healing.md +105 -105
  125. package/.claude/commands/automation/session-memory.md +89 -89
  126. package/.claude/commands/automation/smart-agents.md +72 -72
  127. package/.claude/commands/automation/smart-spawn.md +25 -25
  128. package/.claude/commands/automation/workflow-select.md +25 -25
  129. package/.claude/commands/claude-flow-help.md +103 -103
  130. package/.claude/commands/claude-flow-memory.md +107 -107
  131. package/.claude/commands/claude-flow-swarm.md +205 -205
  132. package/.claude/commands/coordination/README.md +9 -9
  133. package/.claude/commands/coordination/agent-spawn.md +25 -25
  134. package/.claude/commands/coordination/init.md +44 -44
  135. package/.claude/commands/coordination/orchestrate.md +43 -43
  136. package/.claude/commands/coordination/spawn.md +45 -45
  137. package/.claude/commands/coordination/swarm-init.md +85 -85
  138. package/.claude/commands/coordination/task-orchestrate.md +25 -25
  139. package/.claude/commands/flow-nexus/app-store.md +123 -123
  140. package/.claude/commands/flow-nexus/challenges.md +119 -119
  141. package/.claude/commands/flow-nexus/login-registration.md +64 -64
  142. package/.claude/commands/flow-nexus/neural-network.md +133 -133
  143. package/.claude/commands/flow-nexus/payments.md +115 -115
  144. package/.claude/commands/flow-nexus/sandbox.md +82 -82
  145. package/.claude/commands/flow-nexus/swarm.md +86 -86
  146. package/.claude/commands/flow-nexus/user-tools.md +151 -151
  147. package/.claude/commands/flow-nexus/workflow.md +114 -114
  148. package/.claude/commands/github/README.md +11 -11
  149. package/.claude/commands/github/code-review-swarm.md +513 -513
  150. package/.claude/commands/github/code-review.md +25 -25
  151. package/.claude/commands/github/github-modes.md +146 -146
  152. package/.claude/commands/github/github-swarm.md +121 -121
  153. package/.claude/commands/github/issue-tracker.md +291 -291
  154. package/.claude/commands/github/issue-triage.md +25 -25
  155. package/.claude/commands/github/multi-repo-swarm.md +518 -518
  156. package/.claude/commands/github/pr-enhance.md +26 -26
  157. package/.claude/commands/github/pr-manager.md +169 -169
  158. package/.claude/commands/github/project-board-sync.md +470 -470
  159. package/.claude/commands/github/release-manager.md +337 -337
  160. package/.claude/commands/github/release-swarm.md +543 -543
  161. package/.claude/commands/github/repo-analyze.md +25 -25
  162. package/.claude/commands/github/repo-architect.md +366 -366
  163. package/.claude/commands/github/swarm-issue.md +481 -481
  164. package/.claude/commands/github/swarm-pr.md +284 -284
  165. package/.claude/commands/github/sync-coordinator.md +300 -300
  166. package/.claude/commands/github/workflow-automation.md +441 -441
  167. package/.claude/commands/hive-mind/README.md +17 -17
  168. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
  169. package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
  170. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
  171. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
  172. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
  173. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
  174. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
  175. package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
  176. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
  177. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
  178. package/.claude/commands/hive-mind/hive-mind.md +27 -27
  179. package/.claude/commands/hooks/README.md +11 -11
  180. package/.claude/commands/hooks/overview.md +57 -57
  181. package/.claude/commands/hooks/post-edit.md +117 -117
  182. package/.claude/commands/hooks/post-task.md +112 -112
  183. package/.claude/commands/hooks/pre-edit.md +113 -113
  184. package/.claude/commands/hooks/pre-task.md +111 -111
  185. package/.claude/commands/hooks/session-end.md +118 -118
  186. package/.claude/commands/hooks/setup.md +102 -102
  187. package/.claude/commands/memory/README.md +9 -9
  188. package/.claude/commands/memory/memory-persist.md +25 -25
  189. package/.claude/commands/memory/memory-search.md +25 -25
  190. package/.claude/commands/memory/memory-usage.md +25 -25
  191. package/.claude/commands/memory/neural.md +47 -47
  192. package/.claude/commands/monitoring/README.md +9 -9
  193. package/.claude/commands/monitoring/agent-metrics.md +25 -25
  194. package/.claude/commands/monitoring/agents.md +44 -44
  195. package/.claude/commands/monitoring/real-time-view.md +25 -25
  196. package/.claude/commands/monitoring/status.md +46 -46
  197. package/.claude/commands/monitoring/swarm-monitor.md +25 -25
  198. package/.claude/commands/optimization/README.md +9 -9
  199. package/.claude/commands/optimization/auto-topology.md +61 -61
  200. package/.claude/commands/optimization/cache-manage.md +25 -25
  201. package/.claude/commands/optimization/parallel-execute.md +25 -25
  202. package/.claude/commands/optimization/parallel-execution.md +49 -49
  203. package/.claude/commands/optimization/topology-optimize.md +25 -25
  204. package/.claude/commands/pair/README.md +260 -260
  205. package/.claude/commands/pair/commands.md +545 -545
  206. package/.claude/commands/pair/config.md +509 -509
  207. package/.claude/commands/pair/examples.md +511 -511
  208. package/.claude/commands/pair/modes.md +347 -347
  209. package/.claude/commands/pair/session.md +406 -406
  210. package/.claude/commands/pair/start.md +208 -208
  211. package/.claude/commands/sparc/analyzer.md +51 -51
  212. package/.claude/commands/sparc/architect.md +53 -53
  213. package/.claude/commands/sparc/ask.md +97 -97
  214. package/.claude/commands/sparc/batch-executor.md +54 -54
  215. package/.claude/commands/sparc/code.md +89 -89
  216. package/.claude/commands/sparc/coder.md +54 -54
  217. package/.claude/commands/sparc/debug.md +83 -83
  218. package/.claude/commands/sparc/debugger.md +54 -54
  219. package/.claude/commands/sparc/designer.md +53 -53
  220. package/.claude/commands/sparc/devops.md +109 -109
  221. package/.claude/commands/sparc/docs-writer.md +80 -80
  222. package/.claude/commands/sparc/documenter.md +54 -54
  223. package/.claude/commands/sparc/innovator.md +54 -54
  224. package/.claude/commands/sparc/integration.md +83 -83
  225. package/.claude/commands/sparc/mcp.md +117 -117
  226. package/.claude/commands/sparc/memory-manager.md +54 -54
  227. package/.claude/commands/sparc/optimizer.md +54 -54
  228. package/.claude/commands/sparc/orchestrator.md +131 -131
  229. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
  230. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
  231. package/.claude/commands/sparc/researcher.md +54 -54
  232. package/.claude/commands/sparc/reviewer.md +54 -54
  233. package/.claude/commands/sparc/security-review.md +80 -80
  234. package/.claude/commands/sparc/sparc-modes.md +174 -174
  235. package/.claude/commands/sparc/sparc.md +111 -111
  236. package/.claude/commands/sparc/spec-pseudocode.md +80 -80
  237. package/.claude/commands/sparc/supabase-admin.md +348 -348
  238. package/.claude/commands/sparc/swarm-coordinator.md +54 -54
  239. package/.claude/commands/sparc/tdd.md +54 -54
  240. package/.claude/commands/sparc/tester.md +54 -54
  241. package/.claude/commands/sparc/tutorial.md +79 -79
  242. package/.claude/commands/sparc/workflow-manager.md +54 -54
  243. package/.claude/commands/sparc.md +166 -166
  244. package/.claude/commands/stream-chain/pipeline.md +120 -120
  245. package/.claude/commands/stream-chain/run.md +69 -69
  246. package/.claude/commands/swarm/README.md +15 -15
  247. package/.claude/commands/swarm/analysis.md +95 -95
  248. package/.claude/commands/swarm/development.md +96 -96
  249. package/.claude/commands/swarm/examples.md +168 -168
  250. package/.claude/commands/swarm/maintenance.md +102 -102
  251. package/.claude/commands/swarm/optimization.md +117 -117
  252. package/.claude/commands/swarm/research.md +136 -136
  253. package/.claude/commands/swarm/swarm-analysis.md +8 -8
  254. package/.claude/commands/swarm/swarm-background.md +8 -8
  255. package/.claude/commands/swarm/swarm-init.md +19 -19
  256. package/.claude/commands/swarm/swarm-modes.md +8 -8
  257. package/.claude/commands/swarm/swarm-monitor.md +8 -8
  258. package/.claude/commands/swarm/swarm-spawn.md +19 -19
  259. package/.claude/commands/swarm/swarm-status.md +8 -8
  260. package/.claude/commands/swarm/swarm-strategies.md +8 -8
  261. package/.claude/commands/swarm/swarm.md +27 -27
  262. package/.claude/commands/swarm/testing.md +131 -131
  263. package/.claude/commands/training/README.md +9 -9
  264. package/.claude/commands/training/model-update.md +25 -25
  265. package/.claude/commands/training/neural-patterns.md +73 -73
  266. package/.claude/commands/training/neural-train.md +25 -25
  267. package/.claude/commands/training/pattern-learn.md +25 -25
  268. package/.claude/commands/training/specialization.md +62 -62
  269. package/.claude/commands/truth/start.md +142 -142
  270. package/.claude/commands/verify/check.md +49 -49
  271. package/.claude/commands/verify/start.md +127 -127
  272. package/.claude/commands/workflows/README.md +9 -9
  273. package/.claude/commands/workflows/development.md +77 -77
  274. package/.claude/commands/workflows/research.md +62 -62
  275. package/.claude/commands/workflows/workflow-create.md +25 -25
  276. package/.claude/commands/workflows/workflow-execute.md +25 -25
  277. package/.claude/commands/workflows/workflow-export.md +25 -25
  278. package/.claude/config/v3-dependency-optimization.json +265 -265
  279. package/.claude/config/v3-performance-targets.json +250 -250
  280. package/.claude/helpers/.LOCKED +2 -2
  281. package/.claude/helpers/README.md +96 -96
  282. package/.claude/helpers/adr-compliance.sh +186 -186
  283. package/.claude/helpers/aggressive-microcompact.mjs +36 -36
  284. package/.claude/helpers/auto-commit.sh +178 -178
  285. package/.claude/helpers/auto-memory-hook.mjs +430 -430
  286. package/.claude/helpers/checkpoint-manager.sh +251 -251
  287. package/.claude/helpers/context-persistence-hook.mjs +2001 -2001
  288. package/.claude/helpers/daemon-manager.sh +252 -252
  289. package/.claude/helpers/ddd-tracker.sh +144 -144
  290. package/.claude/helpers/github-safe.js +156 -156
  291. package/.claude/helpers/github-setup.sh +45 -45
  292. package/.claude/helpers/guidance-hook.sh +13 -13
  293. package/.claude/helpers/guidance-hooks.sh +102 -102
  294. package/.claude/helpers/health-monitor.sh +108 -108
  295. package/.claude/helpers/hook-handler.cjs +606 -606
  296. package/.claude/helpers/intelligence.cjs +1169 -1169
  297. package/.claude/helpers/learning-hooks.sh +329 -329
  298. package/.claude/helpers/learning-optimizer.sh +127 -127
  299. package/.claude/helpers/learning-service.mjs +1144 -1144
  300. package/.claude/helpers/memory.cjs +84 -84
  301. package/.claude/helpers/metrics-db.mjs +503 -503
  302. package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
  303. package/.claude/helpers/pattern-consolidator.sh +86 -86
  304. package/.claude/helpers/perf-worker.sh +160 -160
  305. package/.claude/helpers/quick-start.sh +19 -19
  306. package/.claude/helpers/router.cjs +62 -62
  307. package/.claude/helpers/security-scanner.sh +127 -127
  308. package/.claude/helpers/session.cjs +125 -125
  309. package/.claude/helpers/setup-mcp.sh +18 -18
  310. package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
  311. package/.claude/helpers/statusline.cjs +0 -0
  312. package/.claude/helpers/swarm-comms.sh +353 -353
  313. package/.claude/helpers/swarm-hooks.sh +761 -761
  314. package/.claude/helpers/swarm-monitor.sh +210 -210
  315. package/.claude/helpers/sync-v3-metrics.sh +245 -245
  316. package/.claude/helpers/update-v3-progress.sh +165 -165
  317. package/.claude/helpers/v3-quick-status.sh +57 -57
  318. package/.claude/helpers/v3.sh +110 -110
  319. package/.claude/helpers/validate-v3-config.sh +215 -215
  320. package/.claude/helpers/worker-manager.sh +170 -170
  321. package/.claude/mcp.json +12 -12
  322. package/.claude/settings.json +284 -284
  323. package/.claude/settings.json.bak +526 -526
  324. package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
  325. package/.claude/skills/agentdb-learning/SKILL.md +545 -545
  326. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
  327. package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
  328. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
  329. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -645
  330. package/.claude/skills/browser/SKILL.md +204 -204
  331. package/.claude/skills/dual-mode/README.md +71 -71
  332. package/.claude/skills/dual-mode/dual-collect.md +103 -103
  333. package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
  334. package/.claude/skills/dual-mode/dual-spawn.md +81 -81
  335. package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
  336. package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
  337. package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
  338. package/.claude/skills/github-code-review/SKILL.md +1125 -1125
  339. package/.claude/skills/github-multi-repo/SKILL.md +862 -862
  340. package/.claude/skills/github-project-management/SKILL.md +1262 -1262
  341. package/.claude/skills/github-release-management/SKILL.md +1064 -1064
  342. package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
  343. package/.claude/skills/hive-mind-advanced/SKILL.md +709 -709
  344. package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
  345. package/.claude/skills/pair-programming/SKILL.md +1202 -1202
  346. package/.claude/skills/performance-analysis/SKILL.md +560 -560
  347. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
  348. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
  349. package/.claude/skills/skill-builder/SKILL.md +910 -910
  350. package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
  351. package/.claude/skills/stream-chain/SKILL.md +560 -560
  352. package/.claude/skills/swarm-advanced/SKILL.md +970 -970
  353. package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
  354. package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
  355. package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
  356. package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
  357. package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
  358. package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
  359. package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
  360. package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
  361. package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
  362. package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
  363. package/.claude/skills/verification-quality/SKILL.md +691 -691
  364. package/.claude/skills/worker-benchmarks/SKILL.md +129 -129
  365. package/.claude/skills/worker-integration/SKILL.md +147 -147
  366. package/.claude/statusline-command.sh +176 -176
  367. package/.claude/statusline.mjs +109 -109
  368. package/.claude/statusline.sh +431 -431
  369. package/.claude/workflows/full-system-test.js +65 -65
  370. package/.claude/workflows/intelligence-system-hardening.js +120 -120
  371. package/.claude/workflows/plugin-contract-audit.js +91 -91
  372. package/.claude-plugin/README.md +720 -720
  373. package/.claude-plugin/docs/INSTALLATION.md +261 -261
  374. package/.claude-plugin/docs/PLUGIN_SUMMARY.md +361 -361
  375. package/.claude-plugin/docs/QUICKSTART.md +361 -361
  376. package/.claude-plugin/docs/STRUCTURE.md +128 -128
  377. package/.claude-plugin/hooks/hooks.json +77 -77
  378. package/.claude-plugin/marketplace.json +204 -204
  379. package/.claude-plugin/plugin.json +71 -71
  380. package/.claude-plugin/scripts/install.sh +234 -234
  381. package/.claude-plugin/scripts/ruflo-hook.cjs +304 -304
  382. package/.claude-plugin/scripts/ruflo-hook.sh +52 -52
  383. package/.claude-plugin/scripts/uninstall.sh +36 -36
  384. package/.claude-plugin/scripts/verify.sh +108 -108
  385. package/LICENSE +21 -21
  386. package/README.md +422 -422
  387. package/bin/cli.js +11 -11
  388. package/bin/npx-repair.js +7 -7
  389. package/bin/npx-safe-launch.js +9 -9
  390. package/node_modules/@claude-flow/codex/.agents/skills/github-automation/SKILL.md +32 -32
  391. package/node_modules/@claude-flow/codex/.agents/skills/memory-management/SKILL.md +45 -45
  392. package/node_modules/@claude-flow/codex/.agents/skills/performance-analysis/SKILL.md +32 -32
  393. package/node_modules/@claude-flow/codex/.agents/skills/security-audit/SKILL.md +46 -46
  394. package/node_modules/@claude-flow/codex/.agents/skills/sparc-methodology/SKILL.md +46 -46
  395. package/node_modules/@claude-flow/codex/.agents/skills/swarm-orchestration/SKILL.md +53 -53
  396. package/node_modules/@claude-flow/codex/README.md +1044 -1044
  397. package/node_modules/@claude-flow/codex/dist/dual-mode/orchestrator.js +13 -13
  398. package/node_modules/@claude-flow/codex/dist/generators/agents-md.js +664 -664
  399. package/node_modules/@claude-flow/codex/dist/generators/config-toml.js +455 -455
  400. package/node_modules/@claude-flow/codex/dist/generators/skill-md.js +45 -45
  401. package/node_modules/@claude-flow/codex/dist/initializer.js +167 -167
  402. package/node_modules/@claude-flow/codex/dist/templates/index.js +15 -15
  403. package/node_modules/@claude-flow/mcp/README.md +429 -429
  404. package/node_modules/@claude-flow/plugin-agent-federation/README.md +49 -49
  405. package/node_modules/@claude-flow/security/README.md +292 -292
  406. package/node_modules/@claude-flow/security/dist/credential-generator.js +9 -9
  407. package/node_modules/@claude-flow/security/dist/input-validator.d.ts +6 -6
  408. package/node_modules/@claude-flow/security/dist/oauth/callback-server.js +9 -9
  409. package/package.json +222 -222
  410. package/v3/@claude-flow/cli/README.md +422 -422
  411. package/v3/@claude-flow/cli/bin/cli.js +338 -338
  412. package/v3/@claude-flow/cli/bin/mcp-server.js +224 -224
  413. package/v3/@claude-flow/cli/bin/preinstall.cjs +2 -2
  414. package/v3/@claude-flow/cli/catalog-manifest.json +2 -2
  415. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.js +24 -24
  416. package/v3/@claude-flow/cli/dist/src/business-pods/bbs-budget-tracker.js +53 -53
  417. package/v3/@claude-flow/cli/dist/src/commands/completions.js +409 -409
  418. package/v3/@claude-flow/cli/dist/src/commands/daemon.js +44 -44
  419. package/v3/@claude-flow/cli/dist/src/commands/doctor.js +4 -4
  420. package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +26 -26
  421. package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +97 -97
  422. package/v3/@claude-flow/cli/dist/src/commands/hooks.js +9 -9
  423. package/v3/@claude-flow/cli/dist/src/commands/init.js +75 -75
  424. package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +23 -23
  425. package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +31 -31
  426. package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +14 -14
  427. package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +115 -115
  428. package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +99 -99
  429. package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
  430. package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +624 -624
  431. package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +38 -38
  432. package/v3/@claude-flow/cli/dist/src/config/proven-config.js +2 -2
  433. package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +273 -273
  434. package/v3/@claude-flow/cli/dist/src/init/executor.js +453 -453
  435. package/v3/@claude-flow/cli/dist/src/init/helper-signing.js +2 -2
  436. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +917 -917
  437. package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +24 -24
  438. package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +15 -15
  439. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-intent-tools.js +19 -19
  440. package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js +6 -4
  441. package/v3/@claude-flow/cli/dist/src/mcp-tools/seraphina-tools.js +4 -4
  442. package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.js +22 -22
  443. package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +114 -114
  444. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +416 -416
  445. package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +5 -5
  446. package/v3/@claude-flow/cli/dist/src/proxy/verify.js +2 -2
  447. package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
  448. package/v3/@claude-flow/cli/dist/src/services/distill-tuning.js +7 -7
  449. package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
  450. package/v3/@claude-flow/cli/dist/src/services/memory-distillation.js +18 -18
  451. package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
  452. package/v3/@claude-flow/cli/package.json +181 -181
  453. package/v3/@claude-flow/guidance/README.md +1195 -1195
  454. package/v3/@claude-flow/guidance/package.json +198 -198
  455. package/v3/@claude-flow/shared/README.md +323 -323
  456. package/v3/@claude-flow/shared/dist/events/event-store.js +31 -31
  457. package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.js +3 -3
  458. package/v3/@claude-flow/shared/package.json +43 -43
  459. package/v3/README.md +493 -493
  460. package/.claude/.proven-config-version +0 -1
  461. package/.claude/proven-config.json +0 -42
  462. package/v3/@claude-flow/cli/dist/src/ruvector/diskann-backend.d.ts +0 -78
  463. package/v3/@claude-flow/cli/dist/src/ruvector/diskann-backend.js +0 -310
@@ -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}`);