@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,67 @@
1
+ /**
2
+ * Memory Write Operations
3
+ * Verify initialization, store, and delete entries.
4
+ * Read operations (search, list, get) live in memory-read.ts (ARCH-4b split).
5
+ *
6
+ * @module v1/cli/memory-crud
7
+ */
8
+ export { searchEntries, listEntries, getEntry } from './memory-read.js';
9
+ /**
10
+ * Verify memory initialization works correctly
11
+ * Tests: write, read, search, patterns
12
+ */
13
+ export declare function verifyMemoryInit(dbPath: string, options?: {
14
+ verbose?: boolean;
15
+ }): Promise<{
16
+ success: boolean;
17
+ tests: {
18
+ name: string;
19
+ passed: boolean;
20
+ details?: string;
21
+ duration?: number;
22
+ }[];
23
+ summary: {
24
+ passed: number;
25
+ failed: number;
26
+ total: number;
27
+ };
28
+ }>;
29
+ /**
30
+ * Store an entry directly using sql.js
31
+ * This bypasses MCP and writes directly to the database
32
+ */
33
+ export declare function storeEntry(options: {
34
+ key: string;
35
+ value: string;
36
+ namespace?: string;
37
+ generateEmbeddingFlag?: boolean;
38
+ tags?: string[];
39
+ ttl?: number;
40
+ dbPath?: string;
41
+ upsert?: boolean;
42
+ }): Promise<{
43
+ success: boolean;
44
+ id: string;
45
+ embedding?: {
46
+ dimensions: number;
47
+ model: string;
48
+ };
49
+ error?: string;
50
+ }>;
51
+ /**
52
+ * Delete a memory entry by key and namespace
53
+ * Issue #980: Properly supports namespaced entries
54
+ */
55
+ export declare function deleteEntry(options: {
56
+ key: string;
57
+ namespace?: string;
58
+ dbPath?: string;
59
+ }): Promise<{
60
+ success: boolean;
61
+ deleted: boolean;
62
+ key: string;
63
+ namespace: string;
64
+ remainingEntries: number;
65
+ error?: string;
66
+ }>;
67
+ //# sourceMappingURL=memory-crud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-crud.d.ts","sourceRoot":"","sources":["../../../src/memory/memory-crud.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAmBxE;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;IACJ,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC,CA6LD;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAkHD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAuHD"}
@@ -0,0 +1,415 @@
1
+ /**
2
+ * Memory Write Operations
3
+ * Verify initialization, store, and delete entries.
4
+ * Read operations (search, list, get) live in memory-read.ts (ARCH-4b split).
5
+ *
6
+ * @module v1/cli/memory-crud
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 { addToHNSWIndex, rebuildSearchIndex } from './hnsw-operations.js';
14
+ // Re-export read operations so existing callers keep working without changes.
15
+ export { searchEntries, listEntries, getEntry } from './memory-read.js';
16
+ /** Maximum SQLite database file size accepted before read (256 MB). */
17
+ const MAX_DB_FILE_BYTES = 256 * 1024 * 1024;
18
+ // ADR-053: Lazy import of AgentDB v1 bridge
19
+ let _bridge;
20
+ async function getBridge() {
21
+ if (_bridge === null)
22
+ return null;
23
+ if (_bridge)
24
+ return _bridge;
25
+ try {
26
+ _bridge = await import('./memory-bridge.js');
27
+ return _bridge;
28
+ }
29
+ catch {
30
+ _bridge = null;
31
+ return null;
32
+ }
33
+ }
34
+ /**
35
+ * Verify memory initialization works correctly
36
+ * Tests: write, read, search, patterns
37
+ */
38
+ export async function verifyMemoryInit(dbPath, options) {
39
+ const { verbose = false } = options || {};
40
+ const tests = [];
41
+ try {
42
+ const initSqlJs = (await import('sql.js')).default;
43
+ const SQL = await initSqlJs();
44
+ const fs = await import('fs');
45
+ // Guard against excessively large DB files to prevent OOM.
46
+ const verifyStat = fs.statSync(dbPath);
47
+ if (verifyStat.size > MAX_DB_FILE_BYTES) {
48
+ return { success: false, tests: [{ name: 'Database access', passed: false, details: `File too large: ${verifyStat.size} bytes` }], summary: { passed: 0, failed: 1, total: 1 } };
49
+ }
50
+ // Load database
51
+ const fileBuffer = fs.readFileSync(dbPath);
52
+ const db = new SQL.Database(fileBuffer);
53
+ // Test 1: Schema verification
54
+ const schemaStart = Date.now();
55
+ const tables = db.exec("SELECT name FROM sqlite_master WHERE type='table'");
56
+ const tableNames = tables[0]?.values?.map(v => v[0]) || [];
57
+ const expectedTables = ['memory_entries', 'patterns', 'metadata', 'vector_indexes'];
58
+ const missingTables = expectedTables.filter(t => !tableNames.includes(t));
59
+ tests.push({
60
+ name: 'Schema verification',
61
+ passed: missingTables.length === 0,
62
+ details: missingTables.length > 0 ? `Missing: ${missingTables.join(', ')}` : `${tableNames.length} tables found`,
63
+ duration: Date.now() - schemaStart
64
+ });
65
+ // Test 2: Write entry
66
+ const writeStart = Date.now();
67
+ const testId = `test_${Date.now()}`;
68
+ const testKey = 'verification_test';
69
+ const testValue = 'This is a verification test entry for memory initialization';
70
+ try {
71
+ db.run(`
72
+ INSERT INTO memory_entries (id, key, namespace, content, type, created_at, updated_at)
73
+ VALUES (?, ?, 'test', ?, 'semantic', ?, ?)
74
+ `, [testId, testKey, testValue, Date.now(), Date.now()]);
75
+ tests.push({
76
+ name: 'Write entry',
77
+ passed: true,
78
+ details: 'Entry written successfully',
79
+ duration: Date.now() - writeStart
80
+ });
81
+ }
82
+ catch (e) {
83
+ tests.push({
84
+ name: 'Write entry',
85
+ passed: false,
86
+ details: e instanceof Error ? e.message : 'Write failed',
87
+ duration: Date.now() - writeStart
88
+ });
89
+ }
90
+ // Test 3: Read entry
91
+ const readStart = Date.now();
92
+ try {
93
+ const result = db.exec(`SELECT content FROM memory_entries WHERE id = ?`, [testId]);
94
+ const content = result[0]?.values[0]?.[0];
95
+ tests.push({
96
+ name: 'Read entry',
97
+ passed: content === testValue,
98
+ details: content === testValue ? 'Content matches' : 'Content mismatch',
99
+ duration: Date.now() - readStart
100
+ });
101
+ }
102
+ catch (e) {
103
+ tests.push({
104
+ name: 'Read entry',
105
+ passed: false,
106
+ details: e instanceof Error ? e.message : 'Read failed',
107
+ duration: Date.now() - readStart
108
+ });
109
+ }
110
+ // Test 4: Write with embedding
111
+ const embeddingStart = Date.now();
112
+ try {
113
+ const { embedding, dimensions, model } = await generateEmbedding(testValue);
114
+ const embeddingJson = JSON.stringify(embedding);
115
+ db.run(`
116
+ UPDATE memory_entries
117
+ SET embedding = ?, embedding_dimensions = ?, embedding_model = ?
118
+ WHERE id = ?
119
+ `, [embeddingJson, dimensions, model, testId]);
120
+ tests.push({
121
+ name: 'Generate embedding',
122
+ passed: true,
123
+ details: `${dimensions}-dim vector (${model})`,
124
+ duration: Date.now() - embeddingStart
125
+ });
126
+ }
127
+ catch (e) {
128
+ tests.push({
129
+ name: 'Generate embedding',
130
+ passed: false,
131
+ details: e instanceof Error ? e.message : 'Embedding failed',
132
+ duration: Date.now() - embeddingStart
133
+ });
134
+ }
135
+ // Test 5: Pattern storage
136
+ const patternStart = Date.now();
137
+ try {
138
+ const patternId = `pattern_${Date.now()}`;
139
+ db.run(`
140
+ INSERT INTO patterns (id, name, pattern_type, condition, action, confidence, created_at, updated_at)
141
+ VALUES (?, 'test-pattern', 'task-routing', 'test condition', 'test action', 0.5, ?, ?)
142
+ `, [patternId, Date.now(), Date.now()]);
143
+ tests.push({
144
+ name: 'Pattern storage',
145
+ passed: true,
146
+ details: 'Pattern stored with confidence scoring',
147
+ duration: Date.now() - patternStart
148
+ });
149
+ // Cleanup test pattern
150
+ db.run(`DELETE FROM patterns WHERE id = ?`, [patternId]);
151
+ }
152
+ catch (e) {
153
+ tests.push({
154
+ name: 'Pattern storage',
155
+ passed: false,
156
+ details: e instanceof Error ? e.message : 'Pattern storage failed',
157
+ duration: Date.now() - patternStart
158
+ });
159
+ }
160
+ // Test 6: Vector index configuration
161
+ const indexStart = Date.now();
162
+ try {
163
+ const indexResult = db.exec(`SELECT name, dimensions, hnsw_m, hnsw_ef_construction FROM vector_indexes`);
164
+ const indexes = indexResult[0]?.values || [];
165
+ tests.push({
166
+ name: 'Vector index config',
167
+ passed: indexes.length > 0,
168
+ details: `${indexes.length} indexes configured (HNSW M=16, ef=200)`,
169
+ duration: Date.now() - indexStart
170
+ });
171
+ }
172
+ catch (e) {
173
+ tests.push({
174
+ name: 'Vector index config',
175
+ passed: false,
176
+ details: e instanceof Error ? e.message : 'Index check failed',
177
+ duration: Date.now() - indexStart
178
+ });
179
+ }
180
+ // Cleanup test entry
181
+ db.run(`DELETE FROM memory_entries WHERE id = ?`, [testId]);
182
+ // Save changes atomically
183
+ const data = db.export();
184
+ const dbTmpHealth = dbPath + '.tmp';
185
+ fs.writeFileSync(dbTmpHealth, Buffer.from(data));
186
+ fs.renameSync(dbTmpHealth, dbPath);
187
+ db.close();
188
+ const passed = tests.filter(t => t.passed).length;
189
+ const failed = tests.filter(t => !t.passed).length;
190
+ return {
191
+ success: failed === 0,
192
+ tests,
193
+ summary: {
194
+ passed,
195
+ failed,
196
+ total: tests.length
197
+ }
198
+ };
199
+ }
200
+ catch (error) {
201
+ return {
202
+ success: false,
203
+ tests: [{
204
+ name: 'Database access',
205
+ passed: false,
206
+ details: error instanceof Error ? error.message : 'Unknown error'
207
+ }],
208
+ summary: { passed: 0, failed: 1, total: 1 }
209
+ };
210
+ }
211
+ }
212
+ /**
213
+ * Store an entry directly using sql.js
214
+ * This bypasses MCP and writes directly to the database
215
+ */
216
+ export async function storeEntry(options) {
217
+ // ADR-053: Try AgentDB v1 bridge first
218
+ const bridge = await getBridge();
219
+ if (bridge) {
220
+ const bridgeResult = await bridge.bridgeStoreEntry(options);
221
+ if (bridgeResult)
222
+ return bridgeResult;
223
+ }
224
+ // Fallback: raw sql.js
225
+ const { key, value, namespace = 'default', generateEmbeddingFlag = true, tags = [], ttl, dbPath: customPath, upsert = false } = options;
226
+ const swarmDir = path.resolve(process.cwd(), '.swarm');
227
+ const dbPath = customPath ? path.resolve(customPath) : path.join(swarmDir, 'memory.db');
228
+ try {
229
+ if (!fs.existsSync(dbPath)) {
230
+ return { success: false, id: '', error: 'Database not initialized. Run: monomind memory init' };
231
+ }
232
+ await ensureSchemaColumns(dbPath);
233
+ const initSqlJs = (await import('sql.js')).default;
234
+ const SQL = await initSqlJs();
235
+ const storeStat = fs.statSync(dbPath);
236
+ if (storeStat.size > MAX_DB_FILE_BYTES) {
237
+ return { success: false, id: '', error: `Database file too large: ${storeStat.size} bytes` };
238
+ }
239
+ const fileBuffer = fs.readFileSync(dbPath);
240
+ const db = new SQL.Database(fileBuffer);
241
+ const id = `entry_${Date.now()}_${Math.random().toString(36).substring(7)}`;
242
+ const now = Date.now();
243
+ let embeddingJson = null;
244
+ let embeddingDimensions = null;
245
+ let embeddingModel = null;
246
+ if (generateEmbeddingFlag && value.length > 0) {
247
+ const embResult = await generateEmbedding(value);
248
+ embeddingJson = JSON.stringify(embResult.embedding);
249
+ embeddingDimensions = embResult.dimensions;
250
+ embeddingModel = embResult.model;
251
+ }
252
+ const insertSql = upsert
253
+ ? `INSERT OR REPLACE INTO memory_entries (
254
+ id, key, namespace, content, type,
255
+ embedding, embedding_dimensions, embedding_model,
256
+ tags, metadata, created_at, updated_at, expires_at, status
257
+ ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`
258
+ : `INSERT INTO memory_entries (
259
+ id, key, namespace, content, type,
260
+ embedding, embedding_dimensions, embedding_model,
261
+ tags, metadata, created_at, updated_at, expires_at, status
262
+ ) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`;
263
+ db.run(insertSql, [
264
+ id,
265
+ key,
266
+ namespace,
267
+ value,
268
+ embeddingJson,
269
+ embeddingDimensions,
270
+ embeddingModel,
271
+ tags.length > 0 ? JSON.stringify(tags) : null,
272
+ '{}',
273
+ now,
274
+ now,
275
+ ttl ? now + (ttl * 1000) : null
276
+ ]);
277
+ // Save atomically
278
+ const data = db.export();
279
+ const dbTmpStore = dbPath + '.tmp';
280
+ fs.writeFileSync(dbTmpStore, Buffer.from(data));
281
+ fs.renameSync(dbTmpStore, dbPath);
282
+ db.close();
283
+ // Add to HNSW index for faster future searches
284
+ if (embeddingJson) {
285
+ const embResult = safeParseEmbedding(embeddingJson);
286
+ if (embResult) {
287
+ await addToHNSWIndex(id, embResult, {
288
+ id,
289
+ key,
290
+ namespace,
291
+ content: value
292
+ });
293
+ }
294
+ }
295
+ return {
296
+ success: true,
297
+ id,
298
+ embedding: embeddingJson ? { dimensions: embeddingDimensions, model: embeddingModel } : undefined
299
+ };
300
+ }
301
+ catch (error) {
302
+ return {
303
+ success: false,
304
+ id: '',
305
+ error: error instanceof Error ? error.message : String(error)
306
+ };
307
+ }
308
+ }
309
+ /**
310
+ * Delete a memory entry by key and namespace
311
+ * Issue #980: Properly supports namespaced entries
312
+ */
313
+ export async function deleteEntry(options) {
314
+ // ADR-053: Try AgentDB v1 bridge first
315
+ const bridge = await getBridge();
316
+ if (bridge) {
317
+ const bridgeResult = await bridge.bridgeDeleteEntry(options);
318
+ if (bridgeResult) {
319
+ // #1122: Bridge path must also invalidate the in-memory HNSW index.
320
+ if (bridgeResult.deleted) {
321
+ rebuildSearchIndex();
322
+ }
323
+ return bridgeResult;
324
+ }
325
+ }
326
+ // Fallback: raw sql.js
327
+ const { key, namespace = 'default', dbPath: customPath } = options;
328
+ const swarmDir = path.join(process.cwd(), '.swarm');
329
+ const dbPath = customPath || path.join(swarmDir, 'memory.db');
330
+ try {
331
+ if (!fs.existsSync(dbPath)) {
332
+ return {
333
+ success: false,
334
+ deleted: false,
335
+ key,
336
+ namespace,
337
+ remainingEntries: 0,
338
+ error: 'Database not found'
339
+ };
340
+ }
341
+ await ensureSchemaColumns(dbPath);
342
+ const initSqlJs = (await import('sql.js')).default;
343
+ const SQL = await initSqlJs();
344
+ const deleteStat = fs.statSync(dbPath);
345
+ if (deleteStat.size > MAX_DB_FILE_BYTES) {
346
+ return { success: false, deleted: false, key, namespace, remainingEntries: 0, error: `Database file too large: ${deleteStat.size} bytes` };
347
+ }
348
+ const fileBuffer = fs.readFileSync(dbPath);
349
+ const db = new SQL.Database(fileBuffer);
350
+ const checkStmt = db.prepare(`
351
+ SELECT id FROM memory_entries
352
+ WHERE status = 'active'
353
+ AND key = ?
354
+ AND namespace = ?
355
+ LIMIT 1
356
+ `);
357
+ checkStmt.bind([key, namespace]);
358
+ const checkRows = [];
359
+ while (checkStmt.step()) {
360
+ checkRows.push(checkStmt.get());
361
+ }
362
+ checkStmt.free();
363
+ const checkResult = checkRows.length > 0 ? [{ values: checkRows }] : [];
364
+ if (!checkResult[0]?.values?.[0]) {
365
+ const countResult = db.exec(`SELECT COUNT(*) FROM memory_entries WHERE status = 'active'`);
366
+ const remainingEntries = countResult[0]?.values?.[0]?.[0] || 0;
367
+ db.close();
368
+ return {
369
+ success: true,
370
+ deleted: false,
371
+ key,
372
+ namespace,
373
+ remainingEntries,
374
+ error: `Key '${key}' not found in namespace '${namespace}'`
375
+ };
376
+ }
377
+ db.run(`
378
+ UPDATE memory_entries
379
+ SET status = 'deleted',
380
+ embedding = NULL,
381
+ updated_at = strftime('%s', 'now') * 1000
382
+ WHERE key = ?
383
+ AND namespace = ?
384
+ AND status = 'active'
385
+ `, [key, namespace]);
386
+ const countResult = db.exec(`SELECT COUNT(*) FROM memory_entries WHERE status = 'active'`);
387
+ const remainingEntries = countResult[0]?.values?.[0]?.[0] || 0;
388
+ // Save updated database atomically
389
+ const data = db.export();
390
+ const dbTmpDelete = dbPath + '.tmp';
391
+ fs.writeFileSync(dbTmpDelete, Buffer.from(data));
392
+ fs.renameSync(dbTmpDelete, dbPath);
393
+ db.close();
394
+ // Invalidate the HNSW index so it rebuilds from DB on next search.
395
+ rebuildSearchIndex();
396
+ return {
397
+ success: true,
398
+ deleted: true,
399
+ key,
400
+ namespace,
401
+ remainingEntries
402
+ };
403
+ }
404
+ catch (error) {
405
+ return {
406
+ success: false,
407
+ deleted: false,
408
+ key,
409
+ namespace,
410
+ remainingEntries: 0,
411
+ error: error instanceof Error ? error.message : String(error)
412
+ };
413
+ }
414
+ }
415
+ //# sourceMappingURL=memory-crud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-crud.js","sourceRoot":"","sources":["../../../src/memory/memory-crud.ts"],"names":[],"mappings":"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"}