@monoes/monomindcli 1.14.7 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/.claude/agents/reengineer-squad/boss.md +113 -0
  2. package/.claude/agents/reengineer-squad/critic-architect.md +132 -0
  3. package/.claude/agents/reengineer-squad/git-manager.md +145 -0
  4. package/.claude/agents/reengineer-squad/idea-generator.md +95 -0
  5. package/.claude/agents/reengineer-squad/implementer.md +112 -0
  6. package/.claude/agents/reengineer-squad/integration-planner.md +112 -0
  7. package/.claude/agents/reengineer-squad/source-analyst.md +103 -0
  8. package/.claude/agents/reengineer-squad/target-analyst.md +118 -0
  9. package/.claude/agents/reengineer-squad/tester.md +105 -0
  10. package/.claude/commands/mastermind/master.md +35 -14
  11. package/.claude/helpers/handlers/capture-handler.cjs +155 -18
  12. package/.claude/helpers/monolean-activate.cjs +20 -0
  13. package/.claude/helpers/monolean-config.cjs +76 -0
  14. package/.claude/helpers/monolean-instructions.cjs +109 -0
  15. package/.claude/helpers/monolean-propagate.cjs +9 -0
  16. package/.claude/helpers/monolean-tracker.cjs +18 -0
  17. package/.claude/helpers/skill-registry.json +2 -2
  18. package/.claude/skills/agent-browser-testing/SKILL.md +301 -18
  19. package/.claude/skills/mastermind/runorg.md +69 -23
  20. package/.claude/skills/monodesign/SKILL.md +32 -1
  21. package/.claude/skills/monodesign/adapt.md +53 -0
  22. package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +100 -0
  23. package/.claude/skills/monodesign/animate.md +65 -0
  24. package/.claude/skills/monodesign/audit.md +89 -0
  25. package/.claude/skills/monodesign/bolder.md +50 -0
  26. package/.claude/skills/monodesign/clarify.md +64 -0
  27. package/.claude/skills/monodesign/colorize.md +68 -0
  28. package/.claude/skills/monodesign/craft.md +51 -0
  29. package/.claude/skills/monodesign/critique.md +66 -0
  30. package/.claude/skills/monodesign/delight.md +47 -0
  31. package/.claude/skills/monodesign/distill.md +56 -0
  32. package/.claude/skills/monodesign/document.md +80 -0
  33. package/.claude/skills/monodesign/extract.md +74 -0
  34. package/.claude/skills/monodesign/harden.md +65 -0
  35. package/.claude/skills/monodesign/live.md +59 -0
  36. package/.claude/skills/monodesign/onboard.md +50 -0
  37. package/.claude/skills/monodesign/optimize.md +64 -0
  38. package/.claude/skills/monodesign/overdrive.md +56 -0
  39. package/.claude/skills/monodesign/polish.md +68 -0
  40. package/.claude/skills/monodesign/quieter.md +57 -0
  41. package/.claude/skills/monodesign/reference/antipatterns-catalog.md +248 -76
  42. package/.claude/skills/monodesign/reference/codex.md +107 -0
  43. package/.claude/skills/monodesign/reference/craft.md +3 -0
  44. package/.claude/skills/monodesign/reference/hooks.md +99 -0
  45. package/.claude/skills/monodesign/reference/image-prompts.md +12 -0
  46. package/.claude/skills/monodesign/shape.md +71 -0
  47. package/.claude/skills/monodesign/teach.md +69 -0
  48. package/.claude/skills/monodesign/typeset.md +59 -0
  49. package/.claude/skills/monolean/SKILL.md +118 -0
  50. package/.claude/skills/monolean-audit/SKILL.md +41 -0
  51. package/.claude/skills/monolean-debt/SKILL.md +46 -0
  52. package/.claude/skills/monolean-help/SKILL.md +60 -0
  53. package/.claude/skills/monolean-review/SKILL.md +57 -0
  54. package/bin/cli.js +3 -1
  55. package/dist/dashboard/server.js +137 -0
  56. package/dist/src/__tests__/browse-adapters.test.d.ts +2 -0
  57. package/dist/src/__tests__/browse-adapters.test.d.ts.map +1 -0
  58. package/dist/src/__tests__/browse-adapters.test.js +51 -0
  59. package/dist/src/__tests__/browse-adapters.test.js.map +1 -0
  60. package/dist/src/__tests__/browse-analyzer.test.d.ts +2 -0
  61. package/dist/src/__tests__/browse-analyzer.test.d.ts.map +1 -0
  62. package/dist/src/__tests__/browse-analyzer.test.js +68 -0
  63. package/dist/src/__tests__/browse-analyzer.test.js.map +1 -0
  64. package/dist/src/__tests__/browse-builtin-handlers.test.d.ts +2 -0
  65. package/dist/src/__tests__/browse-builtin-handlers.test.d.ts.map +1 -0
  66. package/dist/src/__tests__/browse-builtin-handlers.test.js +139 -0
  67. package/dist/src/__tests__/browse-builtin-handlers.test.js.map +1 -0
  68. package/dist/src/__tests__/browse-cdp.test.d.ts +2 -0
  69. package/dist/src/__tests__/browse-cdp.test.d.ts.map +1 -0
  70. package/dist/src/__tests__/browse-cdp.test.js +169 -0
  71. package/dist/src/__tests__/browse-cdp.test.js.map +1 -0
  72. package/dist/src/__tests__/browse-dashboard.test.d.ts +2 -0
  73. package/dist/src/__tests__/browse-dashboard.test.d.ts.map +1 -0
  74. package/dist/src/__tests__/browse-dashboard.test.js +179 -0
  75. package/dist/src/__tests__/browse-dashboard.test.js.map +1 -0
  76. package/dist/src/__tests__/browse-engine.test.d.ts +2 -0
  77. package/dist/src/__tests__/browse-engine.test.d.ts.map +1 -0
  78. package/dist/src/__tests__/browse-engine.test.js +122 -0
  79. package/dist/src/__tests__/browse-engine.test.js.map +1 -0
  80. package/dist/src/__tests__/browse-expression.test.d.ts +2 -0
  81. package/dist/src/__tests__/browse-expression.test.d.ts.map +1 -0
  82. package/dist/src/__tests__/browse-expression.test.js +54 -0
  83. package/dist/src/__tests__/browse-expression.test.js.map +1 -0
  84. package/dist/src/__tests__/browse-store.test.d.ts +2 -0
  85. package/dist/src/__tests__/browse-store.test.d.ts.map +1 -0
  86. package/dist/src/__tests__/browse-store.test.js +99 -0
  87. package/dist/src/__tests__/browse-store.test.js.map +1 -0
  88. package/dist/src/__tests__/browse-workflow-types.test.d.ts +2 -0
  89. package/dist/src/__tests__/browse-workflow-types.test.d.ts.map +1 -0
  90. package/dist/src/__tests__/browse-workflow-types.test.js +33 -0
  91. package/dist/src/__tests__/browse-workflow-types.test.js.map +1 -0
  92. package/dist/src/browser/action-builder/analyzer.d.ts +11 -0
  93. package/dist/src/browser/action-builder/analyzer.d.ts.map +1 -0
  94. package/dist/src/browser/action-builder/analyzer.js +71 -0
  95. package/dist/src/browser/action-builder/analyzer.js.map +1 -0
  96. package/dist/src/browser/action-builder/types.d.ts +47 -0
  97. package/dist/src/browser/action-builder/types.d.ts.map +1 -0
  98. package/dist/src/browser/action-builder/types.js +2 -0
  99. package/dist/src/browser/action-builder/types.js.map +1 -0
  100. package/dist/src/browser/adapters/gemini.d.ts +3 -0
  101. package/dist/src/browser/adapters/gemini.d.ts.map +1 -0
  102. package/dist/src/browser/adapters/gemini.js +16 -0
  103. package/dist/src/browser/adapters/gemini.js.map +1 -0
  104. package/dist/src/browser/adapters/google.d.ts +3 -0
  105. package/dist/src/browser/adapters/google.d.ts.map +1 -0
  106. package/dist/src/browser/adapters/google.js +17 -0
  107. package/dist/src/browser/adapters/google.js.map +1 -0
  108. package/dist/src/browser/adapters/index.d.ts +19 -0
  109. package/dist/src/browser/adapters/index.d.ts.map +1 -0
  110. package/dist/src/browser/adapters/index.js +23 -0
  111. package/dist/src/browser/adapters/index.js.map +1 -0
  112. package/dist/src/browser/adapters/instagram.d.ts +3 -0
  113. package/dist/src/browser/adapters/instagram.d.ts.map +1 -0
  114. package/dist/src/browser/adapters/instagram.js +17 -0
  115. package/dist/src/browser/adapters/instagram.js.map +1 -0
  116. package/dist/src/browser/adapters/linkedin.d.ts +3 -0
  117. package/dist/src/browser/adapters/linkedin.d.ts.map +1 -0
  118. package/dist/src/browser/adapters/linkedin.js +19 -0
  119. package/dist/src/browser/adapters/linkedin.js.map +1 -0
  120. package/dist/src/browser/adapters/microsoft.d.ts +3 -0
  121. package/dist/src/browser/adapters/microsoft.d.ts.map +1 -0
  122. package/dist/src/browser/adapters/microsoft.js +16 -0
  123. package/dist/src/browser/adapters/microsoft.js.map +1 -0
  124. package/dist/src/browser/adapters/x.d.ts +3 -0
  125. package/dist/src/browser/adapters/x.d.ts.map +1 -0
  126. package/dist/src/browser/adapters/x.js +19 -0
  127. package/dist/src/browser/adapters/x.js.map +1 -0
  128. package/dist/src/browser/dashboard/api-types.d.ts +50 -0
  129. package/dist/src/browser/dashboard/api-types.d.ts.map +1 -0
  130. package/dist/src/browser/dashboard/api-types.js +14 -0
  131. package/dist/src/browser/dashboard/api-types.js.map +1 -0
  132. package/dist/src/browser/dashboard/server.d.ts +9 -0
  133. package/dist/src/browser/dashboard/server.d.ts.map +1 -0
  134. package/dist/src/browser/dashboard/server.js +62 -0
  135. package/dist/src/browser/dashboard/server.js.map +1 -0
  136. package/dist/src/browser/dashboard/ui.html +1811 -0
  137. package/dist/src/browser/workflow/builtin-handlers.d.ts +3 -0
  138. package/dist/src/browser/workflow/builtin-handlers.d.ts.map +1 -0
  139. package/dist/src/browser/workflow/builtin-handlers.js +343 -0
  140. package/dist/src/browser/workflow/builtin-handlers.js.map +1 -0
  141. package/dist/src/browser/workflow/engine.d.ts +15 -0
  142. package/dist/src/browser/workflow/engine.d.ts.map +1 -0
  143. package/dist/src/browser/workflow/engine.js +127 -0
  144. package/dist/src/browser/workflow/engine.js.map +1 -0
  145. package/dist/src/browser/workflow/expression.d.ts +4 -0
  146. package/dist/src/browser/workflow/expression.d.ts.map +1 -0
  147. package/dist/src/browser/workflow/expression.js +64 -0
  148. package/dist/src/browser/workflow/expression.js.map +1 -0
  149. package/dist/src/browser/workflow/store.d.ts +24 -0
  150. package/dist/src/browser/workflow/store.d.ts.map +1 -0
  151. package/dist/src/browser/workflow/store.js +145 -0
  152. package/dist/src/browser/workflow/store.js.map +1 -0
  153. package/dist/src/browser/workflow/types.d.ts +48 -0
  154. package/dist/src/browser/workflow/types.d.ts.map +1 -0
  155. package/dist/src/browser/workflow/types.js +2 -0
  156. package/dist/src/browser/workflow/types.js.map +1 -0
  157. package/dist/src/commands/browse-action.d.ts +4 -0
  158. package/dist/src/commands/browse-action.d.ts.map +1 -0
  159. package/dist/src/commands/browse-action.js +151 -0
  160. package/dist/src/commands/browse-action.js.map +1 -0
  161. package/dist/src/commands/browse-platform.d.ts +4 -0
  162. package/dist/src/commands/browse-platform.d.ts.map +1 -0
  163. package/dist/src/commands/browse-platform.js +117 -0
  164. package/dist/src/commands/browse-platform.js.map +1 -0
  165. package/dist/src/commands/browse-workflow.d.ts +4 -0
  166. package/dist/src/commands/browse-workflow.d.ts.map +1 -0
  167. package/dist/src/commands/browse-workflow.js +153 -0
  168. package/dist/src/commands/browse-workflow.js.map +1 -0
  169. package/dist/src/commands/browse.d.ts +10 -6
  170. package/dist/src/commands/browse.d.ts.map +1 -1
  171. package/dist/src/commands/browse.js +11 -2154
  172. package/dist/src/commands/browse.js.map +1 -1
  173. package/dist/src/commands/design-detect.d.ts +21 -0
  174. package/dist/src/commands/design-detect.d.ts.map +1 -0
  175. package/dist/src/commands/design-detect.js +127 -0
  176. package/dist/src/commands/design-detect.js.map +1 -0
  177. package/dist/src/commands/design-palette.d.ts +22 -0
  178. package/dist/src/commands/design-palette.d.ts.map +1 -0
  179. package/dist/src/commands/design-palette.js +539 -0
  180. package/dist/src/commands/design-palette.js.map +1 -0
  181. package/dist/src/commands/hooks-core-commands.d.ts +10 -0
  182. package/dist/src/commands/hooks-core-commands.d.ts.map +1 -0
  183. package/dist/src/commands/hooks-core-commands.js +377 -0
  184. package/dist/src/commands/hooks-core-commands.js.map +1 -0
  185. package/dist/src/commands/hooks-coverage-commands.d.ts +12 -0
  186. package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -0
  187. package/dist/src/commands/hooks-coverage-commands.js +1217 -0
  188. package/dist/src/commands/hooks-coverage-commands.js.map +1 -0
  189. package/dist/src/commands/hooks-coverage-utils.d.ts +42 -0
  190. package/dist/src/commands/hooks-coverage-utils.d.ts.map +1 -0
  191. package/dist/src/commands/hooks-coverage-utils.js +220 -0
  192. package/dist/src/commands/hooks-coverage-utils.js.map +1 -0
  193. package/dist/src/commands/hooks-extended-commands.d.ts +14 -0
  194. package/dist/src/commands/hooks-extended-commands.d.ts.map +1 -0
  195. package/dist/src/commands/hooks-extended-commands.js +579 -0
  196. package/dist/src/commands/hooks-extended-commands.js.map +1 -0
  197. package/dist/src/commands/hooks-formatting.d.ts +13 -0
  198. package/dist/src/commands/hooks-formatting.d.ts.map +1 -0
  199. package/dist/src/commands/hooks-formatting.js +42 -0
  200. package/dist/src/commands/hooks-formatting.js.map +1 -0
  201. package/dist/src/commands/hooks-routing-commands.d.ts +15 -0
  202. package/dist/src/commands/hooks-routing-commands.d.ts.map +1 -0
  203. package/dist/src/commands/hooks-routing-commands.js +723 -0
  204. package/dist/src/commands/hooks-routing-commands.js.map +1 -0
  205. package/dist/src/commands/hooks-workers.d.ts +9 -0
  206. package/dist/src/commands/hooks-workers.d.ts.map +1 -0
  207. package/dist/src/commands/hooks-workers.js +782 -0
  208. package/dist/src/commands/hooks-workers.js.map +1 -0
  209. package/dist/src/commands/hooks.d.ts +8 -0
  210. package/dist/src/commands/hooks.d.ts.map +1 -1
  211. package/dist/src/commands/hooks.js +179 -4103
  212. package/dist/src/commands/hooks.js.map +1 -1
  213. package/dist/src/commands/index.d.ts +1 -0
  214. package/dist/src/commands/index.d.ts.map +1 -1
  215. package/dist/src/commands/index.js +6 -0
  216. package/dist/src/commands/index.js.map +1 -1
  217. package/dist/src/commands/org.d.ts.map +1 -1
  218. package/dist/src/commands/org.js +14 -15
  219. package/dist/src/commands/org.js.map +1 -1
  220. package/dist/src/commands/tokens.d.ts.map +1 -1
  221. package/dist/src/commands/tokens.js +77 -1
  222. package/dist/src/commands/tokens.js.map +1 -1
  223. package/dist/src/init/executor.d.ts.map +1 -1
  224. package/dist/src/init/executor.js +18 -8
  225. package/dist/src/init/executor.js.map +1 -1
  226. package/dist/src/init/settings-generator.d.ts.map +1 -1
  227. package/dist/src/init/settings-generator.js +39 -5
  228. package/dist/src/init/settings-generator.js.map +1 -1
  229. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  230. package/dist/src/init/statusline-generator.js +25 -5
  231. package/dist/src/init/statusline-generator.js.map +1 -1
  232. package/dist/src/mcp-tools/browser-tools.d.ts +3 -5
  233. package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
  234. package/dist/src/mcp-tools/browser-tools.js +619 -326
  235. package/dist/src/mcp-tools/browser-tools.js.map +1 -1
  236. package/dist/src/mcp-tools/hooks-embedding.d.ts +161 -0
  237. package/dist/src/mcp-tools/hooks-embedding.d.ts.map +1 -0
  238. package/dist/src/mcp-tools/hooks-embedding.js +506 -0
  239. package/dist/src/mcp-tools/hooks-embedding.js.map +1 -0
  240. package/dist/src/mcp-tools/hooks-intelligence.d.ts +26 -0
  241. package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -0
  242. package/dist/src/mcp-tools/hooks-intelligence.js +1328 -0
  243. package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -0
  244. package/dist/src/mcp-tools/hooks-routing.d.ts +27 -0
  245. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -0
  246. package/dist/src/mcp-tools/hooks-routing.js +1591 -0
  247. package/dist/src/mcp-tools/hooks-routing.js.map +1 -0
  248. package/dist/src/mcp-tools/hooks-tools.d.ts +3 -38
  249. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  250. package/dist/src/mcp-tools/hooks-tools.js +5 -3393
  251. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  252. package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
  253. package/dist/src/mcp-tools/monograph-tools.js +24 -14
  254. package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
  255. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
  256. package/dist/src/mcp-tools/workflow-tools.js +54 -1
  257. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  258. package/dist/src/memory/embedding-operations.d.ts +58 -0
  259. package/dist/src/memory/embedding-operations.d.ts.map +1 -0
  260. package/dist/src/memory/embedding-operations.js +299 -0
  261. package/dist/src/memory/embedding-operations.js.map +1 -0
  262. package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
  263. package/dist/src/memory/ewc-consolidation.js +37 -3
  264. package/dist/src/memory/ewc-consolidation.js.map +1 -1
  265. package/dist/src/memory/hnsw-operations.d.ts +130 -0
  266. package/dist/src/memory/hnsw-operations.d.ts.map +1 -0
  267. package/dist/src/memory/hnsw-operations.js +400 -0
  268. package/dist/src/memory/hnsw-operations.js.map +1 -0
  269. package/dist/src/memory/intelligence.d.ts.map +1 -1
  270. package/dist/src/memory/intelligence.js +42 -23
  271. package/dist/src/memory/intelligence.js.map +1 -1
  272. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  273. package/dist/src/memory/memory-bridge.js +52 -8
  274. package/dist/src/memory/memory-bridge.js.map +1 -1
  275. package/dist/src/memory/memory-crud.d.ts +67 -0
  276. package/dist/src/memory/memory-crud.d.ts.map +1 -0
  277. package/dist/src/memory/memory-crud.js +415 -0
  278. package/dist/src/memory/memory-crud.js.map +1 -0
  279. package/dist/src/memory/memory-initializer.d.ts +9 -322
  280. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  281. package/dist/src/memory/memory-initializer.js +17 -1794
  282. package/dist/src/memory/memory-initializer.js.map +1 -1
  283. package/dist/src/memory/memory-migrations.d.ts +30 -0
  284. package/dist/src/memory/memory-migrations.d.ts.map +1 -0
  285. package/dist/src/memory/memory-migrations.js +134 -0
  286. package/dist/src/memory/memory-migrations.js.map +1 -0
  287. package/dist/src/memory/memory-read.d.ts +78 -0
  288. package/dist/src/memory/memory-read.d.ts.map +1 -0
  289. package/dist/src/memory/memory-read.js +331 -0
  290. package/dist/src/memory/memory-read.js.map +1 -0
  291. package/dist/src/memory/memory-schema.d.ts +13 -0
  292. package/dist/src/memory/memory-schema.d.ts.map +1 -0
  293. package/dist/src/memory/memory-schema.js +167 -0
  294. package/dist/src/memory/memory-schema.js.map +1 -0
  295. package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
  296. package/dist/src/memory/sona-optimizer.js +37 -4
  297. package/dist/src/memory/sona-optimizer.js.map +1 -1
  298. package/dist/src/monovector/route-outcomes.d.ts.map +1 -1
  299. package/dist/src/monovector/route-outcomes.js +16 -6
  300. package/dist/src/monovector/route-outcomes.js.map +1 -1
  301. package/dist/src/pricing/model-pricing.d.ts +41 -0
  302. package/dist/src/pricing/model-pricing.d.ts.map +1 -0
  303. package/dist/src/pricing/model-pricing.js +61 -0
  304. package/dist/src/pricing/model-pricing.js.map +1 -0
  305. package/dist/src/ui/.monomind/capture/active-run.json +1 -0
  306. package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.convs.jsonl +3 -0
  307. package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.jsonl +11 -0
  308. package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/rigid-qa-restart-1782288201.jsonl +540 -0
  309. package/dist/src/ui/.monomind/orgs/system-trial-qa-threads.jsonl +3 -0
  310. package/dist/src/ui/.monomind/orgs/test-event-fix/runs/rigid-qa-restart-1782288201.jsonl +2 -0
  311. package/dist/src/ui/MODULARIZATION_PLAN.md +79 -0
  312. package/dist/src/ui/collector.mjs +23 -13
  313. package/dist/src/ui/dashboard.html +1652 -13
  314. package/dist/src/ui/data/known-projects.json +1 -0
  315. package/dist/src/ui/data/mastermind-events.jsonl +553 -0
  316. package/dist/src/ui/data/sessions/_index.json +1 -0
  317. package/dist/src/ui/data/sessions/final-sess-001.jsonl +542 -0
  318. package/dist/src/ui/data/unknown-events.jsonl +1 -0
  319. package/dist/src/ui/orgs.html +154 -10
  320. package/dist/src/ui/server.mjs +1131 -168
  321. package/dist/src/ui/sse-manager.mjs +119 -0
  322. package/dist/src/update/checker.js +1 -1
  323. package/dist/src/update/checker.js.map +1 -1
  324. package/dist/tsconfig.tsbuildinfo +1 -1
  325. package/dist/workflow/builtin-handlers.js +321 -0
  326. package/dist/workflow/engine.js +253 -0
  327. package/dist/workflow/expression.js +98 -0
  328. package/dist/workflow/types.js +2 -0
  329. package/package.json +8 -5
@@ -0,0 +1,331 @@
1
+ /**
2
+ * Memory Read Operations
3
+ * Search, list, and get entries from the memory database.
4
+ * Split from memory-crud.ts (ARCH-4b).
5
+ *
6
+ * @module v1/cli/memory-read
7
+ */
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import { safeParseEmbedding } from './memory-bridge.js';
11
+ import { ensureSchemaColumns } from './memory-migrations.js';
12
+ import { generateEmbedding } from './embedding-operations.js';
13
+ import { searchHNSWIndex } from './hnsw-operations.js';
14
+ /** Maximum SQLite database file size accepted before read (256 MB). */
15
+ const MAX_DB_FILE_BYTES = 256 * 1024 * 1024;
16
+ // ADR-053: Lazy import of AgentDB v1 bridge
17
+ let _bridge;
18
+ async function getBridge() {
19
+ if (_bridge === null)
20
+ return null;
21
+ if (_bridge)
22
+ return _bridge;
23
+ try {
24
+ _bridge = await import('./memory-bridge.js');
25
+ return _bridge;
26
+ }
27
+ catch {
28
+ _bridge = null;
29
+ return null;
30
+ }
31
+ }
32
+ /**
33
+ * Optimized cosine similarity
34
+ * V8 JIT-friendly - avoids manual unrolling which can hurt performance
35
+ * ~0.5μs per 384-dim vector comparison
36
+ */
37
+ function cosineSim(a, b) {
38
+ if (!a || !b || a.length === 0 || b.length === 0)
39
+ return 0;
40
+ const len = Math.min(a.length, b.length);
41
+ let dot = 0, normA = 0, normB = 0;
42
+ for (let i = 0; i < len; i++) {
43
+ const ai = a[i], bi = b[i];
44
+ dot += ai * bi;
45
+ normA += ai * ai;
46
+ normB += bi * bi;
47
+ }
48
+ const mag = Math.sqrt(normA * normB);
49
+ return mag === 0 ? 0 : dot / mag;
50
+ }
51
+ /**
52
+ * Search entries using sql.js with vector similarity
53
+ * Uses HNSW index for 150x faster search when available
54
+ */
55
+ export async function searchEntries(options) {
56
+ // ADR-053: Try AgentDB v1 bridge first
57
+ const bridge = await getBridge();
58
+ if (bridge) {
59
+ const bridgeResult = await bridge.bridgeSearchEntries(options);
60
+ if (bridgeResult)
61
+ return bridgeResult;
62
+ }
63
+ // Fallback: raw sql.js
64
+ const { query, namespace, limit = 10, threshold = 0.3, dbPath: customPath } = options;
65
+ const effectiveNamespace = namespace || 'all';
66
+ const swarmDir = path.resolve(process.cwd(), '.swarm');
67
+ const dbPath = customPath ? path.resolve(customPath) : path.join(swarmDir, 'memory.db');
68
+ const startTime = Date.now();
69
+ try {
70
+ if (!fs.existsSync(dbPath)) {
71
+ return { success: false, results: [], searchTime: 0, error: 'Database not found' };
72
+ }
73
+ await ensureSchemaColumns(dbPath);
74
+ const searchStat = fs.statSync(dbPath);
75
+ if (searchStat.size > MAX_DB_FILE_BYTES) {
76
+ return { success: false, results: [], searchTime: 0, error: `Database file too large: ${searchStat.size} bytes` };
77
+ }
78
+ const queryEmb = await generateEmbedding(query);
79
+ const queryEmbedding = queryEmb.embedding;
80
+ // Try HNSW search first (150x faster)
81
+ const hnswResults = await searchHNSWIndex(queryEmbedding, { k: limit, namespace: effectiveNamespace });
82
+ if (hnswResults && hnswResults.length > 0) {
83
+ const filtered = hnswResults.filter(r => r.score >= threshold);
84
+ return {
85
+ success: true,
86
+ results: filtered,
87
+ searchTime: Date.now() - startTime
88
+ };
89
+ }
90
+ // Fall back to brute-force SQLite search
91
+ const initSqlJs = (await import('sql.js')).default;
92
+ const SQL = await initSqlJs();
93
+ const searchFbStat = fs.statSync(dbPath);
94
+ if (searchFbStat.size > MAX_DB_FILE_BYTES) {
95
+ return { success: false, results: [], searchTime: Date.now() - startTime, error: `Database file too large: ${searchFbStat.size} bytes` };
96
+ }
97
+ const fileBuffer = fs.readFileSync(dbPath);
98
+ const db = new SQL.Database(fileBuffer);
99
+ const searchStmt = db.prepare(effectiveNamespace !== 'all'
100
+ ? `SELECT id, key, namespace, content, embedding FROM memory_entries WHERE status = 'active' AND namespace = ? LIMIT 1000`
101
+ : `SELECT id, key, namespace, content, embedding FROM memory_entries WHERE status = 'active' LIMIT 1000`);
102
+ if (effectiveNamespace !== 'all') {
103
+ searchStmt.bind([effectiveNamespace]);
104
+ }
105
+ const searchRows = [];
106
+ while (searchStmt.step()) {
107
+ searchRows.push(searchStmt.get());
108
+ }
109
+ searchStmt.free();
110
+ const entries = searchRows.length > 0 ? [{ values: searchRows }] : [];
111
+ const results = [];
112
+ if (entries[0]?.values) {
113
+ for (const row of entries[0].values) {
114
+ const [id, key, ns, content, embeddingJson] = row;
115
+ let score = 0;
116
+ if (embeddingJson) {
117
+ const embedding = safeParseEmbedding(embeddingJson);
118
+ if (embedding && embedding.length === queryEmbedding.length) {
119
+ score = cosineSim(queryEmbedding, embedding);
120
+ }
121
+ }
122
+ if (score < threshold) {
123
+ const lowerContent = (content || '').toLowerCase();
124
+ const lowerQuery = query.toLowerCase();
125
+ const words = lowerQuery.split(/\s+/).filter(w => w.length > 0);
126
+ if (words.length > 0) {
127
+ const matchCount = words.filter(w => lowerContent.includes(w)).length;
128
+ const keywordScore = matchCount / words.length * 0.5;
129
+ score = Math.max(score, keywordScore);
130
+ }
131
+ }
132
+ if (score >= threshold) {
133
+ results.push({
134
+ id: id.substring(0, 12),
135
+ key: key || id.substring(0, 15),
136
+ content: (content || '').substring(0, 60) + ((content || '').length > 60 ? '...' : ''),
137
+ score,
138
+ namespace: ns || 'default'
139
+ });
140
+ }
141
+ }
142
+ }
143
+ db.close();
144
+ results.sort((a, b) => b.score - a.score);
145
+ return {
146
+ success: true,
147
+ results: results.slice(0, limit),
148
+ searchTime: Date.now() - startTime
149
+ };
150
+ }
151
+ catch (error) {
152
+ return {
153
+ success: false,
154
+ results: [],
155
+ searchTime: Date.now() - startTime,
156
+ error: error instanceof Error ? error.message : String(error)
157
+ };
158
+ }
159
+ }
160
+ /**
161
+ * List all entries from the memory database
162
+ */
163
+ export async function listEntries(options) {
164
+ // ADR-053: Try AgentDB v1 bridge first
165
+ const bridge = await getBridge();
166
+ if (bridge) {
167
+ const bridgeResult = await bridge.bridgeListEntries(options);
168
+ if (bridgeResult)
169
+ return bridgeResult;
170
+ }
171
+ // Fallback: raw sql.js
172
+ const { namespace, limit = 20, offset = 0, dbPath: customPath } = options;
173
+ const swarmDir = path.join(process.cwd(), '.swarm');
174
+ const dbPath = customPath || path.join(swarmDir, 'memory.db');
175
+ try {
176
+ if (!fs.existsSync(dbPath)) {
177
+ return { success: false, entries: [], total: 0, error: 'Database not found' };
178
+ }
179
+ await ensureSchemaColumns(dbPath);
180
+ const initSqlJs = (await import('sql.js')).default;
181
+ const SQL = await initSqlJs();
182
+ const listStat = fs.statSync(dbPath);
183
+ if (listStat.size > MAX_DB_FILE_BYTES) {
184
+ return { success: false, entries: [], total: 0, error: `Database file too large: ${listStat.size} bytes` };
185
+ }
186
+ const fileBuffer = fs.readFileSync(dbPath);
187
+ const db = new SQL.Database(fileBuffer);
188
+ const countStmt = namespace
189
+ ? db.prepare(`SELECT COUNT(*) as cnt FROM memory_entries WHERE status = 'active' AND namespace = ?`)
190
+ : db.prepare(`SELECT COUNT(*) as cnt FROM memory_entries WHERE status = 'active'`);
191
+ if (namespace) {
192
+ countStmt.bind([namespace]);
193
+ }
194
+ const countRows = [];
195
+ while (countStmt.step()) {
196
+ countRows.push(countStmt.get());
197
+ }
198
+ countStmt.free();
199
+ const countResult = countRows.length > 0 ? [{ values: countRows }] : [];
200
+ const total = countResult[0]?.values?.[0]?.[0] || 0;
201
+ const MAX_LIST_LIMIT = 10_000;
202
+ const rawLimit = parseInt(String(limit), 10);
203
+ const safeLimit = Number.isFinite(rawLimit) && rawLimit > 0 ? Math.min(rawLimit, MAX_LIST_LIMIT) : 100;
204
+ const rawOffset = parseInt(String(offset), 10);
205
+ const safeOffset = Number.isFinite(rawOffset) && rawOffset >= 0 ? rawOffset : 0;
206
+ const listStmt = namespace
207
+ ? db.prepare(`SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at FROM memory_entries WHERE status = 'active' AND namespace = ? ORDER BY updated_at DESC LIMIT ? OFFSET ?`)
208
+ : db.prepare(`SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at FROM memory_entries WHERE status = 'active' ORDER BY updated_at DESC LIMIT ? OFFSET ?`);
209
+ if (namespace) {
210
+ listStmt.bind([namespace, safeLimit, safeOffset]);
211
+ }
212
+ else {
213
+ listStmt.bind([safeLimit, safeOffset]);
214
+ }
215
+ const listRows = [];
216
+ while (listStmt.step()) {
217
+ listRows.push(listStmt.get());
218
+ }
219
+ listStmt.free();
220
+ const result = listRows.length > 0 ? [{ values: listRows }] : [];
221
+ const entries = [];
222
+ if (result[0]?.values) {
223
+ for (const row of result[0].values) {
224
+ const [id, key, ns, content, embedding, accessCount, createdAt, updatedAt] = row;
225
+ entries.push({
226
+ id: String(id).substring(0, 20),
227
+ key: key || String(id).substring(0, 15),
228
+ namespace: ns || 'default',
229
+ size: (content || '').length,
230
+ accessCount: accessCount || 0,
231
+ createdAt: createdAt || new Date().toISOString(),
232
+ updatedAt: updatedAt || new Date().toISOString(),
233
+ hasEmbedding: !!embedding && embedding.length > 10
234
+ });
235
+ }
236
+ }
237
+ db.close();
238
+ return { success: true, entries, total };
239
+ }
240
+ catch (error) {
241
+ return {
242
+ success: false,
243
+ entries: [],
244
+ total: 0,
245
+ error: error instanceof Error ? error.message : String(error)
246
+ };
247
+ }
248
+ }
249
+ /**
250
+ * Get a specific entry from the memory database
251
+ */
252
+ export async function getEntry(options) {
253
+ // ADR-053: Try AgentDB v1 bridge first
254
+ const bridge = await getBridge();
255
+ if (bridge) {
256
+ const bridgeResult = await bridge.bridgeGetEntry(options);
257
+ if (bridgeResult)
258
+ return bridgeResult;
259
+ }
260
+ // Fallback: raw sql.js
261
+ const { key, namespace = 'default', dbPath: customPath } = options;
262
+ const swarmDir = path.join(process.cwd(), '.swarm');
263
+ const dbPath = customPath || path.join(swarmDir, 'memory.db');
264
+ try {
265
+ if (!fs.existsSync(dbPath)) {
266
+ return { success: false, found: false, error: 'Database not found' };
267
+ }
268
+ await ensureSchemaColumns(dbPath);
269
+ const initSqlJs = (await import('sql.js')).default;
270
+ const SQL = await initSqlJs();
271
+ const getStat = fs.statSync(dbPath);
272
+ if (getStat.size > MAX_DB_FILE_BYTES) {
273
+ return { success: false, found: false, error: `Database file too large: ${getStat.size} bytes` };
274
+ }
275
+ const fileBuffer = fs.readFileSync(dbPath);
276
+ const db = new SQL.Database(fileBuffer);
277
+ const getStmt = db.prepare(`
278
+ SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
279
+ FROM memory_entries
280
+ WHERE status = 'active'
281
+ AND key = ?
282
+ AND namespace = ?
283
+ LIMIT 1
284
+ `);
285
+ getStmt.bind([key, namespace]);
286
+ const getRows = [];
287
+ while (getStmt.step()) {
288
+ getRows.push(getStmt.get());
289
+ }
290
+ getStmt.free();
291
+ const result = getRows.length > 0 ? [{ values: getRows }] : [];
292
+ if (!result[0]?.values?.[0]) {
293
+ db.close();
294
+ return { success: true, found: false };
295
+ }
296
+ const [id, entryKey, ns, content, embedding, accessCount, createdAt, updatedAt, tagsJson] = result[0].values[0];
297
+ db.close();
298
+ let tags = [];
299
+ if (tagsJson) {
300
+ try {
301
+ tags = JSON.parse(tagsJson);
302
+ }
303
+ catch {
304
+ // Invalid JSON
305
+ }
306
+ }
307
+ return {
308
+ success: true,
309
+ found: true,
310
+ entry: {
311
+ id: String(id),
312
+ key: entryKey || String(id),
313
+ namespace: ns || 'default',
314
+ content: content || '',
315
+ accessCount: (accessCount || 0) + 1,
316
+ createdAt: createdAt || new Date().toISOString(),
317
+ updatedAt: updatedAt || new Date().toISOString(),
318
+ hasEmbedding: !!embedding && embedding.length > 10,
319
+ tags
320
+ }
321
+ };
322
+ }
323
+ catch (error) {
324
+ return {
325
+ success: false,
326
+ found: false,
327
+ error: error instanceof Error ? error.message : String(error)
328
+ };
329
+ }
330
+ }
331
+ //# sourceMappingURL=memory-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-read.js","sourceRoot":"","sources":["../../../src/memory/memory-read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Memory Schema
3
+ * SQL schema for the Monomind memory database.
4
+ * Extracted from memory-initializer.ts (ARCH-4)
5
+ *
6
+ * @module v1/cli/memory-schema
7
+ */
8
+ /**
9
+ * Enhanced schema with pattern confidence, temporal decay, versioning
10
+ * Vector embeddings enabled for semantic search
11
+ */
12
+ export declare const MEMORY_SCHEMA = "\n-- Monomind Memory Database\n-- Version: 3.0.0\n-- Features: Pattern learning, vector embeddings, temporal decay, migration tracking\n\nPRAGMA journal_mode = WAL;\nPRAGMA synchronous = NORMAL;\nPRAGMA foreign_keys = ON;\n\n-- ============================================\n-- CORE MEMORY TABLES\n-- ============================================\n\n-- Memory entries (main storage)\nCREATE TABLE IF NOT EXISTS memory_entries (\n id TEXT PRIMARY KEY,\n key TEXT NOT NULL,\n namespace TEXT NOT NULL DEFAULT 'default',\n content TEXT NOT NULL DEFAULT '',\n type TEXT NOT NULL DEFAULT 'semantic',\n embedding TEXT,\n embedding_model TEXT DEFAULT 'local',\n embedding_dimensions INTEGER,\n confidence REAL DEFAULT 1.0,\n decay_rate REAL DEFAULT 0.01,\n importance_score REAL DEFAULT 0.5,\n access_count INTEGER DEFAULT 0,\n last_accessed_at INTEGER,\n expires_at INTEGER,\n tags TEXT,\n metadata TEXT,\n owner_id TEXT,\n agent_id TEXT,\n session_id TEXT,\n status TEXT DEFAULT 'active',\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),\n updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\n);\n\nCREATE INDEX IF NOT EXISTS idx_memory_namespace ON memory_entries(namespace);\nCREATE INDEX IF NOT EXISTS idx_memory_key ON memory_entries(key);\nCREATE INDEX IF NOT EXISTS idx_memory_type ON memory_entries(type);\nCREATE INDEX IF NOT EXISTS idx_memory_status ON memory_entries(status);\nCREATE INDEX IF NOT EXISTS idx_memory_created ON memory_entries(created_at);\nCREATE INDEX IF NOT EXISTS idx_memory_accessed ON memory_entries(last_accessed_at);\nCREATE INDEX IF NOT EXISTS idx_memory_owner ON memory_entries(owner_id);\n\n-- Pattern learning tables\nCREATE TABLE IF NOT EXISTS patterns (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n pattern_type TEXT NOT NULL DEFAULT 'task-routing',\n condition TEXT NOT NULL,\n action TEXT NOT NULL,\n confidence REAL DEFAULT 0.5,\n success_count INTEGER DEFAULT 0,\n failure_count INTEGER DEFAULT 0,\n decay_rate REAL DEFAULT 0.05,\n last_matched_at INTEGER,\n status TEXT DEFAULT 'active',\n metadata TEXT,\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),\n updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\n);\n\nCREATE INDEX IF NOT EXISTS idx_patterns_type ON patterns(pattern_type);\nCREATE INDEX IF NOT EXISTS idx_patterns_confidence ON patterns(confidence);\nCREATE INDEX IF NOT EXISTS idx_patterns_status ON patterns(status);\nCREATE INDEX IF NOT EXISTS idx_patterns_last_matched ON patterns(last_matched_at);\n\n-- Pattern history for temporal analysis\nCREATE TABLE IF NOT EXISTS pattern_history (\n id TEXT PRIMARY KEY,\n pattern_id TEXT NOT NULL REFERENCES patterns(id) ON DELETE CASCADE,\n event_type TEXT NOT NULL,\n confidence_before REAL,\n confidence_after REAL,\n metadata TEXT,\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\n);\n\nCREATE INDEX IF NOT EXISTS idx_pattern_history_pattern ON pattern_history(pattern_id);\n\n-- Trajectory recording for learning\nCREATE TABLE IF NOT EXISTS trajectories (\n id TEXT PRIMARY KEY,\n task_description TEXT NOT NULL,\n agent_type TEXT,\n success BOOLEAN DEFAULT FALSE,\n total_steps INTEGER DEFAULT 0,\n duration_ms INTEGER,\n metadata TEXT,\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),\n completed_at INTEGER\n);\n\n-- Trajectory steps\nCREATE TABLE IF NOT EXISTS trajectory_steps (\n id TEXT PRIMARY KEY,\n trajectory_id TEXT NOT NULL REFERENCES trajectories(id) ON DELETE CASCADE,\n step_number INTEGER NOT NULL,\n action TEXT NOT NULL,\n result TEXT,\n success BOOLEAN,\n duration_ms INTEGER,\n metadata TEXT,\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\n);\n\nCREATE INDEX IF NOT EXISTS idx_steps_trajectory ON trajectory_steps(trajectory_id);\n\n-- Migration state tracking\nCREATE TABLE IF NOT EXISTS migration_state (\n id TEXT PRIMARY KEY,\n migration_type TEXT NOT NULL,\n source_path TEXT,\n target_path TEXT,\n status TEXT DEFAULT 'pending',\n entries_migrated INTEGER DEFAULT 0,\n errors INTEGER DEFAULT 0,\n started_at INTEGER,\n completed_at INTEGER,\n metadata TEXT,\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\n);\n\n-- Session management\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n agent_id TEXT,\n metadata TEXT,\n status TEXT DEFAULT 'active',\n started_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),\n ended_at INTEGER,\n summary TEXT\n);\n\n-- Vector index configuration\nCREATE TABLE IF NOT EXISTS vector_indexes (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n dimensions INTEGER NOT NULL DEFAULT 384,\n hnsw_m INTEGER DEFAULT 16,\n hnsw_ef_construction INTEGER DEFAULT 200,\n entry_count INTEGER DEFAULT 0,\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),\n updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\n);\n\nCREATE TABLE IF NOT EXISTS metadata (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL,\n updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\n);\n";
13
+ //# sourceMappingURL=memory-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-schema.d.ts","sourceRoot":"","sources":["../../../src/memory/memory-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,+5JA0JzB,CAAC"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Memory Schema
3
+ * SQL schema for the Monomind memory database.
4
+ * Extracted from memory-initializer.ts (ARCH-4)
5
+ *
6
+ * @module v1/cli/memory-schema
7
+ */
8
+ /**
9
+ * Enhanced schema with pattern confidence, temporal decay, versioning
10
+ * Vector embeddings enabled for semantic search
11
+ */
12
+ export const MEMORY_SCHEMA = `
13
+ -- Monomind Memory Database
14
+ -- Version: 3.0.0
15
+ -- Features: Pattern learning, vector embeddings, temporal decay, migration tracking
16
+
17
+ PRAGMA journal_mode = WAL;
18
+ PRAGMA synchronous = NORMAL;
19
+ PRAGMA foreign_keys = ON;
20
+
21
+ -- ============================================
22
+ -- CORE MEMORY TABLES
23
+ -- ============================================
24
+
25
+ -- Memory entries (main storage)
26
+ CREATE TABLE IF NOT EXISTS memory_entries (
27
+ id TEXT PRIMARY KEY,
28
+ key TEXT NOT NULL,
29
+ namespace TEXT NOT NULL DEFAULT 'default',
30
+ content TEXT NOT NULL DEFAULT '',
31
+ type TEXT NOT NULL DEFAULT 'semantic',
32
+ embedding TEXT,
33
+ embedding_model TEXT DEFAULT 'local',
34
+ embedding_dimensions INTEGER,
35
+ confidence REAL DEFAULT 1.0,
36
+ decay_rate REAL DEFAULT 0.01,
37
+ importance_score REAL DEFAULT 0.5,
38
+ access_count INTEGER DEFAULT 0,
39
+ last_accessed_at INTEGER,
40
+ expires_at INTEGER,
41
+ tags TEXT,
42
+ metadata TEXT,
43
+ owner_id TEXT,
44
+ agent_id TEXT,
45
+ session_id TEXT,
46
+ status TEXT DEFAULT 'active',
47
+ created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
48
+ updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
49
+ );
50
+
51
+ CREATE INDEX IF NOT EXISTS idx_memory_namespace ON memory_entries(namespace);
52
+ CREATE INDEX IF NOT EXISTS idx_memory_key ON memory_entries(key);
53
+ CREATE INDEX IF NOT EXISTS idx_memory_type ON memory_entries(type);
54
+ CREATE INDEX IF NOT EXISTS idx_memory_status ON memory_entries(status);
55
+ CREATE INDEX IF NOT EXISTS idx_memory_created ON memory_entries(created_at);
56
+ CREATE INDEX IF NOT EXISTS idx_memory_accessed ON memory_entries(last_accessed_at);
57
+ CREATE INDEX IF NOT EXISTS idx_memory_owner ON memory_entries(owner_id);
58
+
59
+ -- Pattern learning tables
60
+ CREATE TABLE IF NOT EXISTS patterns (
61
+ id TEXT PRIMARY KEY,
62
+ name TEXT NOT NULL,
63
+ pattern_type TEXT NOT NULL DEFAULT 'task-routing',
64
+ condition TEXT NOT NULL,
65
+ action TEXT NOT NULL,
66
+ confidence REAL DEFAULT 0.5,
67
+ success_count INTEGER DEFAULT 0,
68
+ failure_count INTEGER DEFAULT 0,
69
+ decay_rate REAL DEFAULT 0.05,
70
+ last_matched_at INTEGER,
71
+ status TEXT DEFAULT 'active',
72
+ metadata TEXT,
73
+ created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
74
+ updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
75
+ );
76
+
77
+ CREATE INDEX IF NOT EXISTS idx_patterns_type ON patterns(pattern_type);
78
+ CREATE INDEX IF NOT EXISTS idx_patterns_confidence ON patterns(confidence);
79
+ CREATE INDEX IF NOT EXISTS idx_patterns_status ON patterns(status);
80
+ CREATE INDEX IF NOT EXISTS idx_patterns_last_matched ON patterns(last_matched_at);
81
+
82
+ -- Pattern history for temporal analysis
83
+ CREATE TABLE IF NOT EXISTS pattern_history (
84
+ id TEXT PRIMARY KEY,
85
+ pattern_id TEXT NOT NULL REFERENCES patterns(id) ON DELETE CASCADE,
86
+ event_type TEXT NOT NULL,
87
+ confidence_before REAL,
88
+ confidence_after REAL,
89
+ metadata TEXT,
90
+ created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
91
+ );
92
+
93
+ CREATE INDEX IF NOT EXISTS idx_pattern_history_pattern ON pattern_history(pattern_id);
94
+
95
+ -- Trajectory recording for learning
96
+ CREATE TABLE IF NOT EXISTS trajectories (
97
+ id TEXT PRIMARY KEY,
98
+ task_description TEXT NOT NULL,
99
+ agent_type TEXT,
100
+ success BOOLEAN DEFAULT FALSE,
101
+ total_steps INTEGER DEFAULT 0,
102
+ duration_ms INTEGER,
103
+ metadata TEXT,
104
+ created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
105
+ completed_at INTEGER
106
+ );
107
+
108
+ -- Trajectory steps
109
+ CREATE TABLE IF NOT EXISTS trajectory_steps (
110
+ id TEXT PRIMARY KEY,
111
+ trajectory_id TEXT NOT NULL REFERENCES trajectories(id) ON DELETE CASCADE,
112
+ step_number INTEGER NOT NULL,
113
+ action TEXT NOT NULL,
114
+ result TEXT,
115
+ success BOOLEAN,
116
+ duration_ms INTEGER,
117
+ metadata TEXT,
118
+ created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
119
+ );
120
+
121
+ CREATE INDEX IF NOT EXISTS idx_steps_trajectory ON trajectory_steps(trajectory_id);
122
+
123
+ -- Migration state tracking
124
+ CREATE TABLE IF NOT EXISTS migration_state (
125
+ id TEXT PRIMARY KEY,
126
+ migration_type TEXT NOT NULL,
127
+ source_path TEXT,
128
+ target_path TEXT,
129
+ status TEXT DEFAULT 'pending',
130
+ entries_migrated INTEGER DEFAULT 0,
131
+ errors INTEGER DEFAULT 0,
132
+ started_at INTEGER,
133
+ completed_at INTEGER,
134
+ metadata TEXT,
135
+ created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
136
+ );
137
+
138
+ -- Session management
139
+ CREATE TABLE IF NOT EXISTS sessions (
140
+ id TEXT PRIMARY KEY,
141
+ agent_id TEXT,
142
+ metadata TEXT,
143
+ status TEXT DEFAULT 'active',
144
+ started_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
145
+ ended_at INTEGER,
146
+ summary TEXT
147
+ );
148
+
149
+ -- Vector index configuration
150
+ CREATE TABLE IF NOT EXISTS vector_indexes (
151
+ id TEXT PRIMARY KEY,
152
+ name TEXT NOT NULL,
153
+ dimensions INTEGER NOT NULL DEFAULT 384,
154
+ hnsw_m INTEGER DEFAULT 16,
155
+ hnsw_ef_construction INTEGER DEFAULT 200,
156
+ entry_count INTEGER DEFAULT 0,
157
+ created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
158
+ updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
159
+ );
160
+
161
+ CREATE TABLE IF NOT EXISTS metadata (
162
+ key TEXT PRIMARY KEY,
163
+ value TEXT NOT NULL,
164
+ updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
165
+ );
166
+ `;
167
+ //# sourceMappingURL=memory-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-schema.js","sourceRoot":"","sources":["../../../src/memory/memory-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0J5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sona-optimizer.d.ts","sourceRoot":"","sources":["../../../src/memory/sona-optimizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sona-optimizer.d.ts","sourceRoot":"","sources":["../../../src/memory/sona-optimizer.ts"],"names":[],"mappings":"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"}
@@ -99,6 +99,12 @@ export class SONAOptimizer {
99
99
  failedRoutings = 0;
100
100
  lastUpdate = null;
101
101
  persistencePath;
102
+ /** Set when in-memory state diverges from disk — triggers next debounced write */
103
+ dirty = false;
104
+ /** NodeJS timeout handle for debounced disk flush */
105
+ saveTimer = null;
106
+ /** Debounce window for disk writes (ms) — batches rapid trajectory bursts */
107
+ static SAVE_DEBOUNCE_MS = 2_000;
102
108
  constructor(options) {
103
109
  this.persistencePath = options?.persistencePath || DEFAULT_PERSISTENCE_PATH;
104
110
  }
@@ -162,8 +168,8 @@ export class SONAOptimizer {
162
168
  this.lastUpdate = Date.now();
163
169
  // Prune old patterns if needed
164
170
  this.prunePatterns();
165
- // Persist to disk (debounced)
166
- this.saveToDisk();
171
+ // Mark dirty and schedule a debounced write
172
+ this.scheduleSave();
167
173
  return {
168
174
  learned: true,
169
175
  patternKey,
@@ -249,7 +255,7 @@ export class SONAOptimizer {
249
255
  }
250
256
  }
251
257
  if (decayed > 0) {
252
- this.saveToDisk();
258
+ this.scheduleSave();
253
259
  }
254
260
  return decayed;
255
261
  }
@@ -262,6 +268,12 @@ export class SONAOptimizer {
262
268
  this.successfulRoutings = 0;
263
269
  this.failedRoutings = 0;
264
270
  this.lastUpdate = null;
271
+ // Flush immediately on explicit reset (don't wait for debounce)
272
+ if (this.saveTimer) {
273
+ clearTimeout(this.saveTimer);
274
+ this.saveTimer = null;
275
+ }
276
+ this.dirty = false;
265
277
  this.saveToDisk();
266
278
  }
267
279
  /**
@@ -285,7 +297,8 @@ export class SONAOptimizer {
285
297
  imported++;
286
298
  }
287
299
  }
288
- this.saveToDisk();
300
+ if (imported > 0)
301
+ this.scheduleSave();
289
302
  return imported;
290
303
  }
291
304
  // ============================================================================
@@ -509,6 +522,26 @@ export class SONAOptimizer {
509
522
  return false;
510
523
  }
511
524
  }
525
+ /**
526
+ * Schedule a debounced disk flush.
527
+ * Multiple calls within SAVE_DEBOUNCE_MS coalesce into a single write,
528
+ * preventing blocking I/O on every trajectory event during swarm bursts.
529
+ */
530
+ scheduleSave() {
531
+ this.dirty = true;
532
+ if (this.saveTimer)
533
+ return; // already pending
534
+ this.saveTimer = setTimeout(() => {
535
+ this.saveTimer = null;
536
+ if (this.dirty) {
537
+ this.dirty = false;
538
+ this.saveToDisk();
539
+ }
540
+ }, SONAOptimizer.SAVE_DEBOUNCE_MS);
541
+ // Allow the process to exit without waiting for the timer
542
+ if (this.saveTimer.unref)
543
+ this.saveTimer.unref();
544
+ }
512
545
  /**
513
546
  * Save patterns to disk
514
547
  */