squish-memory 0.7.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 (388) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.claude-plugin/plugin.json +32 -0
  3. package/.mcp.json +14 -0
  4. package/LICENSE +21 -0
  5. package/README.md +556 -0
  6. package/commands/context-paging.md +51 -0
  7. package/commands/context-status.md +22 -0
  8. package/commands/context.md +5 -0
  9. package/commands/core-memory.md +56 -0
  10. package/commands/health.md +5 -0
  11. package/commands/init.md +39 -0
  12. package/commands/merge.md +113 -0
  13. package/commands/observe.md +5 -0
  14. package/commands/recall.md +5 -0
  15. package/commands/remember.md +11 -0
  16. package/commands/search.md +10 -0
  17. package/dist/adapters/claude-code/capture.d.ts +11 -0
  18. package/dist/adapters/claude-code/capture.d.ts.map +1 -0
  19. package/dist/adapters/claude-code/capture.js +100 -0
  20. package/dist/adapters/claude-code/capture.js.map +1 -0
  21. package/dist/adapters/claude-code/index.d.ts +5 -0
  22. package/dist/adapters/claude-code/index.d.ts.map +1 -0
  23. package/dist/adapters/claude-code/index.js +6 -0
  24. package/dist/adapters/claude-code/index.js.map +1 -0
  25. package/dist/adapters/claude-code/injection.d.ts +34 -0
  26. package/dist/adapters/claude-code/injection.d.ts.map +1 -0
  27. package/dist/adapters/claude-code/injection.js +127 -0
  28. package/dist/adapters/claude-code/injection.js.map +1 -0
  29. package/dist/adapters/claude-code/plugin-wrapper.d.ts +21 -0
  30. package/dist/adapters/claude-code/plugin-wrapper.d.ts.map +1 -0
  31. package/dist/adapters/claude-code/plugin-wrapper.js +239 -0
  32. package/dist/adapters/claude-code/plugin-wrapper.js.map +1 -0
  33. package/dist/adapters/claude-code/types.d.ts +46 -0
  34. package/dist/adapters/claude-code/types.d.ts.map +1 -0
  35. package/dist/adapters/claude-code/types.js +6 -0
  36. package/dist/adapters/claude-code/types.js.map +1 -0
  37. package/dist/algorithms/merge/analytics/token-estimator.d.ts +50 -0
  38. package/dist/algorithms/merge/analytics/token-estimator.d.ts.map +1 -0
  39. package/dist/algorithms/merge/analytics/token-estimator.js +154 -0
  40. package/dist/algorithms/merge/analytics/token-estimator.js.map +1 -0
  41. package/dist/algorithms/merge/detection/hash-filters.d.ts +47 -0
  42. package/dist/algorithms/merge/detection/hash-filters.d.ts.map +1 -0
  43. package/dist/algorithms/merge/detection/hash-filters.js +190 -0
  44. package/dist/algorithms/merge/detection/hash-filters.js.map +1 -0
  45. package/dist/algorithms/merge/detection/semantic-ranker.d.ts +32 -0
  46. package/dist/algorithms/merge/detection/semantic-ranker.d.ts.map +1 -0
  47. package/dist/algorithms/merge/detection/semantic-ranker.js +118 -0
  48. package/dist/algorithms/merge/detection/semantic-ranker.js.map +1 -0
  49. package/dist/algorithms/merge/detection/two-stage-detector.d.ts +49 -0
  50. package/dist/algorithms/merge/detection/two-stage-detector.d.ts.map +1 -0
  51. package/dist/algorithms/merge/detection/two-stage-detector.js +185 -0
  52. package/dist/algorithms/merge/detection/two-stage-detector.js.map +1 -0
  53. package/dist/algorithms/merge/handlers/approve-merge.d.ts +22 -0
  54. package/dist/algorithms/merge/handlers/approve-merge.d.ts.map +1 -0
  55. package/dist/algorithms/merge/handlers/approve-merge.js +179 -0
  56. package/dist/algorithms/merge/handlers/approve-merge.js.map +1 -0
  57. package/dist/algorithms/merge/handlers/detect-duplicates.d.ts +47 -0
  58. package/dist/algorithms/merge/handlers/detect-duplicates.d.ts.map +1 -0
  59. package/dist/algorithms/merge/handlers/detect-duplicates.js +165 -0
  60. package/dist/algorithms/merge/handlers/detect-duplicates.js.map +1 -0
  61. package/dist/algorithms/merge/handlers/get-stats.d.ts +39 -0
  62. package/dist/algorithms/merge/handlers/get-stats.d.ts.map +1 -0
  63. package/dist/algorithms/merge/handlers/get-stats.js +88 -0
  64. package/dist/algorithms/merge/handlers/get-stats.js.map +1 -0
  65. package/dist/algorithms/merge/handlers/list-proposals.d.ts +45 -0
  66. package/dist/algorithms/merge/handlers/list-proposals.d.ts.map +1 -0
  67. package/dist/algorithms/merge/handlers/list-proposals.js +83 -0
  68. package/dist/algorithms/merge/handlers/list-proposals.js.map +1 -0
  69. package/dist/algorithms/merge/handlers/preview-merge.d.ts +39 -0
  70. package/dist/algorithms/merge/handlers/preview-merge.d.ts.map +1 -0
  71. package/dist/algorithms/merge/handlers/preview-merge.js +93 -0
  72. package/dist/algorithms/merge/handlers/preview-merge.js.map +1 -0
  73. package/dist/algorithms/merge/handlers/reject-merge.d.ts +28 -0
  74. package/dist/algorithms/merge/handlers/reject-merge.d.ts.map +1 -0
  75. package/dist/algorithms/merge/handlers/reject-merge.js +69 -0
  76. package/dist/algorithms/merge/handlers/reject-merge.js.map +1 -0
  77. package/dist/algorithms/merge/handlers/reverse-merge.d.ts +21 -0
  78. package/dist/algorithms/merge/handlers/reverse-merge.d.ts.map +1 -0
  79. package/dist/algorithms/merge/handlers/reverse-merge.js +121 -0
  80. package/dist/algorithms/merge/handlers/reverse-merge.js.map +1 -0
  81. package/dist/algorithms/merge/safety/safety-checks.d.ts +22 -0
  82. package/dist/algorithms/merge/safety/safety-checks.d.ts.map +1 -0
  83. package/dist/algorithms/merge/safety/safety-checks.js +215 -0
  84. package/dist/algorithms/merge/safety/safety-checks.js.map +1 -0
  85. package/dist/algorithms/merge/strategies/merge-strategies.d.ts +32 -0
  86. package/dist/algorithms/merge/strategies/merge-strategies.d.ts.map +1 -0
  87. package/dist/algorithms/merge/strategies/merge-strategies.js +337 -0
  88. package/dist/algorithms/merge/strategies/merge-strategies.js.map +1 -0
  89. package/dist/api/web/web.d.ts +4 -0
  90. package/dist/api/web/web.d.ts.map +1 -0
  91. package/dist/api/web/web.js +484 -0
  92. package/dist/api/web/web.js.map +1 -0
  93. package/dist/config.d.ts +28 -0
  94. package/dist/config.d.ts.map +1 -0
  95. package/dist/config.js +83 -0
  96. package/dist/config.js.map +1 -0
  97. package/dist/core/agent-memory.d.ts +22 -0
  98. package/dist/core/agent-memory.d.ts.map +1 -0
  99. package/dist/core/agent-memory.js +111 -0
  100. package/dist/core/agent-memory.js.map +1 -0
  101. package/dist/core/associations.d.ts +32 -0
  102. package/dist/core/associations.d.ts.map +1 -0
  103. package/dist/core/associations.js +249 -0
  104. package/dist/core/associations.js.map +1 -0
  105. package/dist/core/cache.d.ts +13 -0
  106. package/dist/core/cache.d.ts.map +1 -0
  107. package/dist/core/cache.js +202 -0
  108. package/dist/core/cache.js.map +1 -0
  109. package/dist/core/consolidation.d.ts +6 -0
  110. package/dist/core/consolidation.d.ts.map +1 -0
  111. package/dist/core/consolidation.js +40 -0
  112. package/dist/core/consolidation.js.map +1 -0
  113. package/dist/core/context-paging.d.ts +90 -0
  114. package/dist/core/context-paging.d.ts.map +1 -0
  115. package/dist/core/context-paging.js +348 -0
  116. package/dist/core/context-paging.js.map +1 -0
  117. package/dist/core/context.d.ts +7 -0
  118. package/dist/core/context.d.ts.map +1 -0
  119. package/dist/core/context.js +24 -0
  120. package/dist/core/context.js.map +1 -0
  121. package/dist/core/core-memory.d.ts +73 -0
  122. package/dist/core/core-memory.d.ts.map +1 -0
  123. package/dist/core/core-memory.js +214 -0
  124. package/dist/core/core-memory.js.map +1 -0
  125. package/dist/core/database.d.ts +12 -0
  126. package/dist/core/database.d.ts.map +1 -0
  127. package/dist/core/database.js +12 -0
  128. package/dist/core/database.js.map +1 -0
  129. package/dist/core/embeddings/qmd-client.d.ts +136 -0
  130. package/dist/core/embeddings/qmd-client.d.ts.map +1 -0
  131. package/dist/core/embeddings/qmd-client.js +403 -0
  132. package/dist/core/embeddings/qmd-client.js.map +1 -0
  133. package/dist/core/embeddings/qmd-provider.d.ts +65 -0
  134. package/dist/core/embeddings/qmd-provider.d.ts.map +1 -0
  135. package/dist/core/embeddings/qmd-provider.js +133 -0
  136. package/dist/core/embeddings/qmd-provider.js.map +1 -0
  137. package/dist/core/embeddings.d.ts +19 -0
  138. package/dist/core/embeddings.d.ts.map +1 -0
  139. package/dist/core/embeddings.js +297 -0
  140. package/dist/core/embeddings.js.map +1 -0
  141. package/dist/core/governance.d.ts +21 -0
  142. package/dist/core/governance.d.ts.map +1 -0
  143. package/dist/core/governance.js +64 -0
  144. package/dist/core/governance.js.map +1 -0
  145. package/dist/core/index.d.ts +10 -0
  146. package/dist/core/index.d.ts.map +1 -0
  147. package/dist/core/index.js +14 -0
  148. package/dist/core/index.js.map +1 -0
  149. package/dist/core/lifecycle.d.ts +19 -0
  150. package/dist/core/lifecycle.d.ts.map +1 -0
  151. package/dist/core/lifecycle.js +182 -0
  152. package/dist/core/lifecycle.js.map +1 -0
  153. package/dist/core/local-embeddings.d.ts +14 -0
  154. package/dist/core/local-embeddings.d.ts.map +1 -0
  155. package/dist/core/local-embeddings.js +94 -0
  156. package/dist/core/local-embeddings.js.map +1 -0
  157. package/dist/core/logger.d.ts +16 -0
  158. package/dist/core/logger.d.ts.map +1 -0
  159. package/dist/core/logger.js +34 -0
  160. package/dist/core/logger.js.map +1 -0
  161. package/dist/core/memory/bridge-discovery.d.ts +50 -0
  162. package/dist/core/memory/bridge-discovery.d.ts.map +1 -0
  163. package/dist/core/memory/bridge-discovery.js +291 -0
  164. package/dist/core/memory/bridge-discovery.js.map +1 -0
  165. package/dist/core/memory/entity-extractor.d.ts +33 -0
  166. package/dist/core/memory/entity-extractor.d.ts.map +1 -0
  167. package/dist/core/memory/entity-extractor.js +336 -0
  168. package/dist/core/memory/entity-extractor.js.map +1 -0
  169. package/dist/core/memory/entity-resolver.d.ts +23 -0
  170. package/dist/core/memory/entity-resolver.d.ts.map +1 -0
  171. package/dist/core/memory/entity-resolver.js +64 -0
  172. package/dist/core/memory/entity-resolver.js.map +1 -0
  173. package/dist/core/memory/fact-extractor.d.ts +24 -0
  174. package/dist/core/memory/fact-extractor.d.ts.map +1 -0
  175. package/dist/core/memory/fact-extractor.js +89 -0
  176. package/dist/core/memory/fact-extractor.js.map +1 -0
  177. package/dist/core/memory/hybrid-retrieval.d.ts +30 -0
  178. package/dist/core/memory/hybrid-retrieval.d.ts.map +1 -0
  179. package/dist/core/memory/hybrid-retrieval.js +63 -0
  180. package/dist/core/memory/hybrid-retrieval.js.map +1 -0
  181. package/dist/core/memory/hybrid-scorer.d.ts +51 -0
  182. package/dist/core/memory/hybrid-scorer.d.ts.map +1 -0
  183. package/dist/core/memory/hybrid-scorer.js +248 -0
  184. package/dist/core/memory/hybrid-scorer.js.map +1 -0
  185. package/dist/core/memory/index.d.ts +8 -0
  186. package/dist/core/memory/index.d.ts.map +1 -0
  187. package/dist/core/memory/index.js +10 -0
  188. package/dist/core/memory/index.js.map +1 -0
  189. package/dist/core/memory/memories.d.ts +35 -0
  190. package/dist/core/memory/memories.d.ts.map +1 -0
  191. package/dist/core/memory/memories.js +338 -0
  192. package/dist/core/memory/memories.js.map +1 -0
  193. package/dist/core/memory/memory-manager.d.ts +15 -0
  194. package/dist/core/memory/memory-manager.d.ts.map +1 -0
  195. package/dist/core/memory/memory-manager.js +46 -0
  196. package/dist/core/memory/memory-manager.js.map +1 -0
  197. package/dist/core/memory/query-processor.d.ts +21 -0
  198. package/dist/core/memory/query-processor.d.ts.map +1 -0
  199. package/dist/core/memory/query-processor.js +72 -0
  200. package/dist/core/memory/query-processor.js.map +1 -0
  201. package/dist/core/memory/serialization.d.ts +6 -0
  202. package/dist/core/memory/serialization.d.ts.map +1 -0
  203. package/dist/core/memory/serialization.js +35 -0
  204. package/dist/core/memory/serialization.js.map +1 -0
  205. package/dist/core/memory/temporal-parser.d.ts +32 -0
  206. package/dist/core/memory/temporal-parser.d.ts.map +1 -0
  207. package/dist/core/memory/temporal-parser.js +385 -0
  208. package/dist/core/memory/temporal-parser.js.map +1 -0
  209. package/dist/core/observations.d.ts +26 -0
  210. package/dist/core/observations.d.ts.map +1 -0
  211. package/dist/core/observations.js +118 -0
  212. package/dist/core/observations.js.map +1 -0
  213. package/dist/core/privacy.d.ts +23 -0
  214. package/dist/core/privacy.d.ts.map +1 -0
  215. package/dist/core/privacy.js +82 -0
  216. package/dist/core/privacy.js.map +1 -0
  217. package/dist/core/projects.d.ts +10 -0
  218. package/dist/core/projects.d.ts.map +1 -0
  219. package/dist/core/projects.js +66 -0
  220. package/dist/core/projects.js.map +1 -0
  221. package/dist/core/redis.d.ts +11 -0
  222. package/dist/core/redis.d.ts.map +1 -0
  223. package/dist/core/redis.js +69 -0
  224. package/dist/core/redis.js.map +1 -0
  225. package/dist/core/requirements.d.ts +20 -0
  226. package/dist/core/requirements.d.ts.map +1 -0
  227. package/dist/core/requirements.js +35 -0
  228. package/dist/core/requirements.js.map +1 -0
  229. package/dist/core/search/conversations.d.ts +25 -0
  230. package/dist/core/search/conversations.d.ts.map +1 -0
  231. package/dist/core/search/conversations.js +112 -0
  232. package/dist/core/search/conversations.js.map +1 -0
  233. package/dist/core/search/entities.d.ts +12 -0
  234. package/dist/core/search/entities.d.ts.map +1 -0
  235. package/dist/core/search/entities.js +34 -0
  236. package/dist/core/search/entities.js.map +1 -0
  237. package/dist/core/search/folder-context.d.ts +25 -0
  238. package/dist/core/search/folder-context.d.ts.map +1 -0
  239. package/dist/core/search/folder-context.js +119 -0
  240. package/dist/core/search/folder-context.js.map +1 -0
  241. package/dist/core/search/index.d.ts +4 -0
  242. package/dist/core/search/index.d.ts.map +1 -0
  243. package/dist/core/search/index.js +5 -0
  244. package/dist/core/search/index.js.map +1 -0
  245. package/dist/core/search/qmd-search.d.ts +61 -0
  246. package/dist/core/search/qmd-search.d.ts.map +1 -0
  247. package/dist/core/search/qmd-search.js +178 -0
  248. package/dist/core/search/qmd-search.js.map +1 -0
  249. package/dist/core/secret-detector.d.ts +32 -0
  250. package/dist/core/secret-detector.d.ts.map +1 -0
  251. package/dist/core/secret-detector.js +88 -0
  252. package/dist/core/secret-detector.js.map +1 -0
  253. package/dist/core/snapshots/cleanup.d.ts +9 -0
  254. package/dist/core/snapshots/cleanup.d.ts.map +1 -0
  255. package/dist/core/snapshots/cleanup.js +12 -0
  256. package/dist/core/snapshots/cleanup.js.map +1 -0
  257. package/dist/core/snapshots/comparison.d.ts +19 -0
  258. package/dist/core/snapshots/comparison.d.ts.map +1 -0
  259. package/dist/core/snapshots/comparison.js +37 -0
  260. package/dist/core/snapshots/comparison.js.map +1 -0
  261. package/dist/core/snapshots/creation.d.ts +19 -0
  262. package/dist/core/snapshots/creation.d.ts.map +1 -0
  263. package/dist/core/snapshots/creation.js +126 -0
  264. package/dist/core/snapshots/creation.js.map +1 -0
  265. package/dist/core/snapshots/retrieval.d.ts +7 -0
  266. package/dist/core/snapshots/retrieval.d.ts.map +1 -0
  267. package/dist/core/snapshots/retrieval.js +41 -0
  268. package/dist/core/snapshots/retrieval.js.map +1 -0
  269. package/dist/core/snapshots/stats.d.ts +11 -0
  270. package/dist/core/snapshots/stats.d.ts.map +1 -0
  271. package/dist/core/snapshots/stats.js +52 -0
  272. package/dist/core/snapshots/stats.js.map +1 -0
  273. package/dist/core/snapshots.d.ts +29 -0
  274. package/dist/core/snapshots.d.ts.map +1 -0
  275. package/dist/core/snapshots.js +220 -0
  276. package/dist/core/snapshots.js.map +1 -0
  277. package/dist/core/summarization/cleanup.d.ts +9 -0
  278. package/dist/core/summarization/cleanup.d.ts.map +1 -0
  279. package/dist/core/summarization/cleanup.js +12 -0
  280. package/dist/core/summarization/cleanup.js.map +1 -0
  281. package/dist/core/summarization/queries.d.ts +9 -0
  282. package/dist/core/summarization/queries.d.ts.map +1 -0
  283. package/dist/core/summarization/queries.js +28 -0
  284. package/dist/core/summarization/queries.js.map +1 -0
  285. package/dist/core/summarization/stats.d.ts +14 -0
  286. package/dist/core/summarization/stats.d.ts.map +1 -0
  287. package/dist/core/summarization/stats.js +52 -0
  288. package/dist/core/summarization/stats.js.map +1 -0
  289. package/dist/core/summarization/strategies.d.ts +24 -0
  290. package/dist/core/summarization/strategies.d.ts.map +1 -0
  291. package/dist/core/summarization/strategies.js +28 -0
  292. package/dist/core/summarization/strategies.js.map +1 -0
  293. package/dist/core/summarization.d.ts +37 -0
  294. package/dist/core/summarization.d.ts.map +1 -0
  295. package/dist/core/summarization.js +188 -0
  296. package/dist/core/summarization.js.map +1 -0
  297. package/dist/core/sync/qmd-sync.d.ts +106 -0
  298. package/dist/core/sync/qmd-sync.d.ts.map +1 -0
  299. package/dist/core/sync/qmd-sync.js +213 -0
  300. package/dist/core/sync/qmd-sync.js.map +1 -0
  301. package/dist/core/temporal-facts.d.ts +54 -0
  302. package/dist/core/temporal-facts.d.ts.map +1 -0
  303. package/dist/core/temporal-facts.js +193 -0
  304. package/dist/core/temporal-facts.js.map +1 -0
  305. package/dist/core/utils/cleanup-operations.d.ts +13 -0
  306. package/dist/core/utils/cleanup-operations.d.ts.map +1 -0
  307. package/dist/core/utils/cleanup-operations.js +44 -0
  308. package/dist/core/utils/cleanup-operations.js.map +1 -0
  309. package/dist/core/utils/content-extraction.d.ts +19 -0
  310. package/dist/core/utils/content-extraction.d.ts.map +1 -0
  311. package/dist/core/utils/content-extraction.js +65 -0
  312. package/dist/core/utils/content-extraction.js.map +1 -0
  313. package/dist/core/utils/filter-builder.d.ts +13 -0
  314. package/dist/core/utils/filter-builder.d.ts.map +1 -0
  315. package/dist/core/utils/filter-builder.js +44 -0
  316. package/dist/core/utils/filter-builder.js.map +1 -0
  317. package/dist/core/utils/history-traversal.d.ts +13 -0
  318. package/dist/core/utils/history-traversal.d.ts.map +1 -0
  319. package/dist/core/utils/history-traversal.js +50 -0
  320. package/dist/core/utils/history-traversal.js.map +1 -0
  321. package/dist/core/utils/memory-operations.d.ts +17 -0
  322. package/dist/core/utils/memory-operations.d.ts.map +1 -0
  323. package/dist/core/utils/memory-operations.js +41 -0
  324. package/dist/core/utils/memory-operations.js.map +1 -0
  325. package/dist/core/utils/query-operations.d.ts +18 -0
  326. package/dist/core/utils/query-operations.d.ts.map +1 -0
  327. package/dist/core/utils/query-operations.js +65 -0
  328. package/dist/core/utils/query-operations.js.map +1 -0
  329. package/dist/core/utils/summarization-helpers.d.ts +21 -0
  330. package/dist/core/utils/summarization-helpers.d.ts.map +1 -0
  331. package/dist/core/utils/summarization-helpers.js +35 -0
  332. package/dist/core/utils/summarization-helpers.js.map +1 -0
  333. package/dist/core/utils/temporal-queries.d.ts +13 -0
  334. package/dist/core/utils/temporal-queries.d.ts.map +1 -0
  335. package/dist/core/utils/temporal-queries.js +27 -0
  336. package/dist/core/utils/temporal-queries.js.map +1 -0
  337. package/dist/core/utils/version-management.d.ts +9 -0
  338. package/dist/core/utils/version-management.d.ts.map +1 -0
  339. package/dist/core/utils/version-management.js +61 -0
  340. package/dist/core/utils/version-management.js.map +1 -0
  341. package/dist/core/utils.d.ts +13 -0
  342. package/dist/core/utils.d.ts.map +1 -0
  343. package/dist/core/utils.js +51 -0
  344. package/dist/core/utils.js.map +1 -0
  345. package/dist/core/worker.d.ts +62 -0
  346. package/dist/core/worker.d.ts.map +1 -0
  347. package/dist/core/worker.js +186 -0
  348. package/dist/core/worker.js.map +1 -0
  349. package/dist/db/adapter.d.ts +6 -0
  350. package/dist/db/adapter.d.ts.map +1 -0
  351. package/dist/db/adapter.js +43 -0
  352. package/dist/db/adapter.js.map +1 -0
  353. package/dist/db/bootstrap.d.ts +9 -0
  354. package/dist/db/bootstrap.d.ts.map +1 -0
  355. package/dist/db/bootstrap.js +444 -0
  356. package/dist/db/bootstrap.js.map +1 -0
  357. package/dist/db/index.d.ts +11 -0
  358. package/dist/db/index.d.ts.map +1 -0
  359. package/dist/db/index.js +43 -0
  360. package/dist/db/index.js.map +1 -0
  361. package/dist/db/schema.d.ts +3 -0
  362. package/dist/db/schema.d.ts.map +1 -0
  363. package/dist/db/schema.js +11 -0
  364. package/dist/db/schema.js.map +1 -0
  365. package/dist/drizzle/schema-sqlite.d.ts +3046 -0
  366. package/dist/drizzle/schema-sqlite.d.ts.map +1 -0
  367. package/dist/drizzle/schema-sqlite.js +405 -0
  368. package/dist/drizzle/schema-sqlite.js.map +1 -0
  369. package/dist/drizzle/schema.d.ts +2969 -0
  370. package/dist/drizzle/schema.d.ts.map +1 -0
  371. package/dist/drizzle/schema.js +555 -0
  372. package/dist/drizzle/schema.js.map +1 -0
  373. package/dist/index.d.ts +34 -0
  374. package/dist/index.d.ts.map +1 -0
  375. package/dist/index.js +784 -0
  376. package/dist/index.js.map +1 -0
  377. package/hooks/hooks.json +52 -0
  378. package/hooks/post-tool-use.js +26 -0
  379. package/hooks/session-end.js +28 -0
  380. package/hooks/session-start.js +33 -0
  381. package/hooks/user-prompt-submit.js +26 -0
  382. package/hooks/utils.js +153 -0
  383. package/npx-installer.js +208 -0
  384. package/package.json +101 -0
  385. package/plugin.json +32 -0
  386. package/skills/memory-guide/SKILL.md +198 -0
  387. package/skills/squish-memory/SKILL.md +87 -0
  388. package/skills/squish-memory/install.sh +91 -0
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Safety checks to prevent bad merges.
3
+ * Checks run before creating merge proposals and are categorized as BLOCKER or WARNING.
4
+ */
5
+ const immutabilityCheck = {
6
+ name: 'immutability',
7
+ description: 'Prevent merging immutable memories',
8
+ type: 'blocker',
9
+ check: (memories) => {
10
+ const immutableMemories = memories.filter((m) => !m.isMergeable);
11
+ if (immutableMemories.length > 0) {
12
+ return {
13
+ passed: false,
14
+ warnings: [],
15
+ blockers: [
16
+ `Cannot merge: ${immutableMemories.length} memory(ies) marked as immutable`,
17
+ `IDs: ${immutableMemories.map((m) => m.id).join(', ')}`,
18
+ ],
19
+ };
20
+ }
21
+ return { passed: true, warnings: [], blockers: [] };
22
+ },
23
+ };
24
+ const typeConsistencyCheck = {
25
+ name: 'type_consistency',
26
+ description: 'Ensure all memories are the same type',
27
+ type: 'blocker',
28
+ check: (memories) => {
29
+ const types = new Set(memories.map((m) => m.type));
30
+ if (types.size > 1) {
31
+ return {
32
+ passed: false,
33
+ warnings: [],
34
+ blockers: [
35
+ `Cannot merge different types: ${Array.from(types).join(', ')}`,
36
+ 'All memories must be the same type (fact, preference, decision, etc.)',
37
+ ],
38
+ };
39
+ }
40
+ return { passed: true, warnings: [], blockers: [] };
41
+ },
42
+ };
43
+ const alreadyMergedCheck = {
44
+ name: 'already_merged',
45
+ description: 'Prevent re-merging of previously merged memories',
46
+ type: 'blocker',
47
+ check: (memories) => {
48
+ const alreadyMerged = memories.filter((m) => m.isMerged);
49
+ if (alreadyMerged.length > 0) {
50
+ return {
51
+ passed: false,
52
+ warnings: [],
53
+ blockers: [
54
+ `Cannot merge: ${alreadyMerged.length} memory(ies) already merged`,
55
+ 'Already-merged memories should not be re-merged. Undo the previous merge first.',
56
+ ],
57
+ };
58
+ }
59
+ return { passed: true, warnings: [], blockers: [] };
60
+ },
61
+ };
62
+ const minimumSimilarityCheck = {
63
+ name: 'min_similarity',
64
+ description: 'Ensure similarity is above minimum threshold',
65
+ type: 'blocker',
66
+ check: (memories, metadata) => {
67
+ const minThreshold = 0.70;
68
+ if (!metadata || !('similarityScore' in metadata)) {
69
+ return { passed: true, warnings: [], blockers: [] };
70
+ }
71
+ const similarity = metadata.similarityScore;
72
+ if (similarity < minThreshold) {
73
+ return {
74
+ passed: false,
75
+ warnings: [],
76
+ blockers: [
77
+ `Similarity too low: ${(similarity * 100).toFixed(1)}%`,
78
+ `Minimum required: ${(minThreshold * 100).toFixed(0)}%`,
79
+ 'Increase similarity threshold or select more similar memories',
80
+ ],
81
+ };
82
+ }
83
+ return { passed: true, warnings: [], blockers: [] };
84
+ },
85
+ };
86
+ const multiUserCheck = {
87
+ name: 'multi_user',
88
+ description: 'Warn about merging memories from different users',
89
+ type: 'warning',
90
+ check: (memories) => {
91
+ const users = new Set(memories.map((m) => m.userId).filter(Boolean));
92
+ if (users.size > 1) {
93
+ return {
94
+ passed: true,
95
+ warnings: [
96
+ `Merging memories from ${users.size} different users`,
97
+ 'This is usually not recommended. Ensure you want to consolidate user-specific memories.',
98
+ ],
99
+ blockers: [],
100
+ };
101
+ }
102
+ return { passed: true, warnings: [], blockers: [] };
103
+ },
104
+ };
105
+ const privacyCheck = {
106
+ name: 'privacy',
107
+ description: 'Warn about mixing private and non-private memories',
108
+ type: 'warning',
109
+ check: (memories) => {
110
+ const privacyStates = new Set(memories.map((m) => m.isPrivate));
111
+ if (privacyStates.size > 1) {
112
+ return {
113
+ passed: true,
114
+ warnings: [
115
+ 'Merging private and non-private memories',
116
+ 'The merged result will inherit the privacy setting of the canonical memory',
117
+ ],
118
+ blockers: [],
119
+ };
120
+ }
121
+ return { passed: true, warnings: [], blockers: [] };
122
+ },
123
+ };
124
+ const secretsCheck = {
125
+ name: 'secrets',
126
+ description: 'Warn about merging memories with detected secrets',
127
+ type: 'warning',
128
+ check: (memories) => {
129
+ const withSecrets = memories.filter((m) => m.hasSecrets);
130
+ if (withSecrets.length > 0) {
131
+ return {
132
+ passed: true,
133
+ warnings: [
134
+ `${withSecrets.length} memory(ies) contain detected secrets`,
135
+ 'Ensure the merged content does not expose sensitive information',
136
+ 'Consider redacting secrets before merging',
137
+ ],
138
+ blockers: [],
139
+ };
140
+ }
141
+ return { passed: true, warnings: [], blockers: [] };
142
+ },
143
+ };
144
+ const activeStatusCheck = {
145
+ name: 'active_status',
146
+ description: 'Ensure all memories are active',
147
+ type: 'blocker',
148
+ check: (memories) => {
149
+ const inactive = memories.filter((m) => !m.isActive);
150
+ if (inactive.length > 0) {
151
+ return {
152
+ passed: false,
153
+ warnings: [],
154
+ blockers: [
155
+ `Cannot merge: ${inactive.length} memory(ies) are inactive (archived/expired)`,
156
+ 'Only active memories can be merged',
157
+ ],
158
+ };
159
+ }
160
+ return { passed: true, warnings: [], blockers: [] };
161
+ },
162
+ };
163
+ export const SAFETY_CHECKS = [
164
+ immutabilityCheck,
165
+ typeConsistencyCheck,
166
+ alreadyMergedCheck,
167
+ minimumSimilarityCheck,
168
+ multiUserCheck,
169
+ privacyCheck,
170
+ secretsCheck,
171
+ activeStatusCheck,
172
+ ];
173
+ export function runSafetyChecks(memories, metadata) {
174
+ const results = SAFETY_CHECKS.map((check) => check.check(memories, metadata));
175
+ const allBlockers = results.flatMap((r) => r.blockers);
176
+ const allWarnings = results.flatMap((r) => r.warnings);
177
+ return {
178
+ passed: allBlockers.length === 0,
179
+ warnings: allWarnings,
180
+ blockers: allBlockers,
181
+ };
182
+ }
183
+ export function checkBlockers(memories) {
184
+ const blockerChecks = SAFETY_CHECKS.filter((c) => c.type === 'blocker');
185
+ for (const check of blockerChecks) {
186
+ const result = check.check(memories);
187
+ if (!result.passed) {
188
+ return false;
189
+ }
190
+ }
191
+ return true;
192
+ }
193
+ export function formatSafetyResults(result) {
194
+ if (result.passed && result.warnings.length === 0) {
195
+ return 'All safety checks passed';
196
+ }
197
+ const lines = [];
198
+ if (!result.passed && result.blockers.length > 0) {
199
+ lines.push('BLOCKERS (merge prevented):');
200
+ for (const blocker of result.blockers) {
201
+ lines.push(` ✗ ${blocker}`);
202
+ }
203
+ }
204
+ if (result.warnings.length > 0) {
205
+ lines.push('WARNINGS (merge allowed with caution):');
206
+ for (const warning of result.warnings) {
207
+ lines.push(` ⚠ ${warning}`);
208
+ }
209
+ }
210
+ return lines.join('\n');
211
+ }
212
+ export function describeSafetyChecks() {
213
+ return SAFETY_CHECKS.map((check) => `${check.name} [${check.type}]: ${check.description}`).join('\n');
214
+ }
215
+ //# sourceMappingURL=safety-checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-checks.js","sourceRoot":"","sources":["../../../../algorithms/merge/safety/safety-checks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,MAAM,iBAAiB,GAAgB;IACrC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,oCAAoC;IACjD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,QAAkB,EAAqB,EAAE;QAC/C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAEjE,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR,iBAAiB,iBAAiB,CAAC,MAAM,kCAAkC;oBAC3E,QAAQ,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBACxD;aACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;CACF,CAAC;AAEF,MAAM,oBAAoB,GAAgB;IACxC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,uCAAuC;IACpD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,QAAkB,EAAqB,EAAE;QAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnD,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR,iCAAiC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC/D,uEAAuE;iBACxE;aACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAgB;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,kDAAkD;IAC/D,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,QAAkB,EAAqB,EAAE;QAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEzD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR,iBAAiB,aAAa,CAAC,MAAM,6BAA6B;oBAClE,iFAAiF;iBAClF;aACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;CACF,CAAC;AAEF,MAAM,sBAAsB,GAAgB;IAC1C,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,8CAA8C;IAC3D,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,QAAkB,EAAE,QAAkC,EAAqB,EAAE;QACnF,MAAM,YAAY,GAAG,IAAI,CAAC;QAE1B,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,iBAAiB,IAAI,QAAQ,CAAC,EAAE,CAAC;YAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACtD,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAyB,CAAC;QAEtD,IAAI,UAAU,GAAG,YAAY,EAAE,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR,uBAAuB,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;oBACvD,qBAAqB,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;oBACvD,+DAA+D;iBAChE;aACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;CACF,CAAC;AAEF,MAAM,cAAc,GAAgB;IAClC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,kDAAkD;IAC/D,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,QAAkB,EAAqB,EAAE;QAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAErE,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACR,yBAAyB,KAAK,CAAC,IAAI,kBAAkB;oBACrD,yFAAyF;iBAC1F;gBACD,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;CACF,CAAC;AAEF,MAAM,YAAY,GAAgB;IAChC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,oDAAoD;IACjE,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,QAAkB,EAAqB,EAAE;QAC/C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhE,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACR,0CAA0C;oBAC1C,4EAA4E;iBAC7E;gBACD,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;CACF,CAAC;AAEF,MAAM,YAAY,GAAgB;IAChC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,mDAAmD;IAChE,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,QAAkB,EAAqB,EAAE;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAEzD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACR,GAAG,WAAW,CAAC,MAAM,uCAAuC;oBAC5D,iEAAiE;oBACjE,2CAA2C;iBAC5C;gBACD,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;CACF,CAAC;AAEF,MAAM,iBAAiB,GAAgB;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,gCAAgC;IAC7C,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,QAAkB,EAAqB,EAAE;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAErD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR,iBAAiB,QAAQ,CAAC,MAAM,8CAA8C;oBAC9E,oCAAoC;iBACrC;aACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,sBAAsB;IACtB,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,iBAAiB;CAClB,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,QAAkB,EAClB,QAAkC;IAElC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE9E,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;QAChC,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAExE,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB;IAC3D,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACrD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,aAAa,CAAC,GAAG,CACtB,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,WAAW,EAAE,CACjE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Type-specific merge strategies for different memory types.
3
+ * Each type has different merge semantics to preserve meaning and prevent data loss.
4
+ */
5
+ import type { Memory, MemoryType } from '../../../drizzle/schema.js';
6
+ export interface MergeStrategy {
7
+ type: MemoryType;
8
+ /**
9
+ * Merge a set of source memories into a single canonical memory
10
+ */
11
+ merge(sources: Memory[]): MergedMemory;
12
+ /**
13
+ * Check if memories can be safely merged
14
+ * Returns { ok, reason } where reason explains why merging is not allowed
15
+ */
16
+ canMerge(sources: Memory[]): {
17
+ ok: boolean;
18
+ reason?: string;
19
+ };
20
+ }
21
+ export interface MergedMemory {
22
+ content: string;
23
+ summary: string | null;
24
+ tags: string[];
25
+ metadata: Record<string, unknown>;
26
+ mergeReason: string;
27
+ conflictWarnings: string[];
28
+ }
29
+ export declare const MERGE_STRATEGIES: Record<MemoryType, MergeStrategy>;
30
+ export declare function getMergeStrategy(type: MemoryType): MergeStrategy;
31
+ export declare function mergeMemories(sources: Memory[]): MergedMemory;
32
+ //# sourceMappingURL=merge-strategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-strategies.d.ts","sourceRoot":"","sources":["../../../../algorithms/merge/strategies/merge-strategies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAuWD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,aAAa,CAM9D,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAMhE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,CAmB7D"}
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Type-specific merge strategies for different memory types.
3
+ * Each type has different merge semantics to preserve meaning and prevent data loss.
4
+ */
5
+ /**
6
+ * FACT strategy: Union of information, remove exact duplicates.
7
+ * Combines all unique facts into a unified statement with provenance tracking.
8
+ */
9
+ class FactMergeStrategy {
10
+ type = 'fact';
11
+ canMerge(sources) {
12
+ // Facts can almost always be merged
13
+ if (sources.length < 2) {
14
+ return { ok: false, reason: 'Need at least 2 memories to merge' };
15
+ }
16
+ return { ok: true };
17
+ }
18
+ merge(sources) {
19
+ if (sources.length === 0) {
20
+ return {
21
+ content: '',
22
+ summary: null,
23
+ tags: [],
24
+ metadata: {},
25
+ mergeReason: 'Empty source set',
26
+ conflictWarnings: [],
27
+ };
28
+ }
29
+ // Split content into sentences and deduplicate
30
+ const sentenceSet = new Set();
31
+ const timestamps = [];
32
+ for (const source of sources) {
33
+ // Extract sentences (split by period, exclamation, question)
34
+ const sentences = source.content
35
+ .split(/[.!?]\s+/)
36
+ .map((s) => s.trim())
37
+ .filter((s) => s.length > 0);
38
+ for (const sentence of sentences) {
39
+ sentenceSet.add(sentence);
40
+ }
41
+ if (source.createdAt) {
42
+ timestamps.push(source.createdAt);
43
+ }
44
+ }
45
+ // Sort sentences for consistency
46
+ const mergedSentences = Array.from(sentenceSet).sort();
47
+ const content = mergedSentences.join('. ') + (mergedSentences.length > 0 ? '.' : '');
48
+ // Merge tags (union)
49
+ const tagSet = new Set();
50
+ for (const source of sources) {
51
+ for (const tag of source.tags || []) {
52
+ tagSet.add(tag);
53
+ }
54
+ }
55
+ // Create merged metadata with provenance
56
+ const metadata = {
57
+ mergedFrom: sources.map((m) => ({
58
+ id: m.id,
59
+ createdAt: m.createdAt,
60
+ source: m.source,
61
+ })),
62
+ mergeCount: sources.length,
63
+ timestamps: timestamps.sort(),
64
+ };
65
+ return {
66
+ content,
67
+ summary: null,
68
+ tags: Array.from(tagSet),
69
+ metadata,
70
+ mergeReason: `Merged ${sources.length} facts by combining all unique statements`,
71
+ conflictWarnings: [],
72
+ };
73
+ }
74
+ }
75
+ /**
76
+ * PREFERENCE strategy: Keep latest by timestamp, track evolution history.
77
+ * Warns if preferences conflict, indicating user changed their mind.
78
+ */
79
+ class PreferenceMergeStrategy {
80
+ type = 'preference';
81
+ canMerge(sources) {
82
+ if (sources.length < 2) {
83
+ return { ok: false, reason: 'Need at least 2 memories to merge' };
84
+ }
85
+ return { ok: true };
86
+ }
87
+ merge(sources) {
88
+ if (sources.length === 0) {
89
+ return {
90
+ content: '',
91
+ summary: null,
92
+ tags: [],
93
+ metadata: {},
94
+ mergeReason: 'Empty source set',
95
+ conflictWarnings: [],
96
+ };
97
+ }
98
+ // Sort by creation date (newest first)
99
+ const sorted = [...sources].sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
100
+ const latest = sorted[0];
101
+ const warnings = [];
102
+ // Check for conflicting preferences
103
+ const uniqueContents = new Set(sources.map((m) => m.content));
104
+ if (uniqueContents.size > 1) {
105
+ warnings.push(`Multiple preferences detected: ${Array.from(uniqueContents).join(', ')}`);
106
+ warnings.push(`Using latest preference from ${latest.createdAt || 'unknown date'}`);
107
+ }
108
+ // Build history timeline
109
+ const history = sorted.map((m) => ({
110
+ preference: m.content,
111
+ createdAt: m.createdAt,
112
+ confidence: m.confidence || 100,
113
+ source: m.source,
114
+ }));
115
+ const metadata = {
116
+ mergedFrom: sources.map((m) => m.id),
117
+ preferenceHistory: history,
118
+ mergeCount: sources.length,
119
+ latestAt: latest.createdAt,
120
+ };
121
+ const summary = sources.length > 1
122
+ ? `Prefers: ${latest.content} (evolved from ${sources.length} preferences)`
123
+ : null;
124
+ return {
125
+ content: latest.content,
126
+ summary,
127
+ tags: latest.tags || [],
128
+ metadata,
129
+ mergeReason: `Merged ${sources.length} preference records, keeping latest from ${latest.createdAt}`,
130
+ conflictWarnings: warnings,
131
+ };
132
+ }
133
+ }
134
+ /**
135
+ * DECISION strategy: Keep latest decision, link to previous ones in timeline.
136
+ * Warns if decisions contradict, preserving rationale history.
137
+ */
138
+ class DecisionMergeStrategy {
139
+ type = 'decision';
140
+ canMerge(sources) {
141
+ if (sources.length < 2) {
142
+ return { ok: false, reason: 'Need at least 2 memories to merge' };
143
+ }
144
+ return { ok: true };
145
+ }
146
+ merge(sources) {
147
+ if (sources.length === 0) {
148
+ return {
149
+ content: '',
150
+ summary: null,
151
+ tags: [],
152
+ metadata: {},
153
+ mergeReason: 'Empty source set',
154
+ conflictWarnings: [],
155
+ };
156
+ }
157
+ // Sort by creation date (newest first)
158
+ const sorted = [...sources].sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
159
+ const latest = sorted[0];
160
+ const warnings = [];
161
+ // Check for conflicting decisions
162
+ const uniqueDecisions = new Set(sources.map((m) => m.content));
163
+ if (uniqueDecisions.size > 1) {
164
+ warnings.push(`Decision changed: was ${sorted[sorted.length - 1].content}, now ${latest.content}`);
165
+ }
166
+ // Build decision timeline
167
+ const timeline = sorted.map((m) => ({
168
+ decision: m.content,
169
+ createdAt: m.createdAt,
170
+ confidence: m.confidence || 100,
171
+ rationale: m.summary || 'No rationale recorded',
172
+ }));
173
+ const metadata = {
174
+ mergedFrom: sources.map((m) => m.id),
175
+ decisionTimeline: timeline,
176
+ mergeCount: sources.length,
177
+ currentDecisionAt: latest.createdAt,
178
+ supersedes: sorted.slice(1).map((m) => m.id),
179
+ };
180
+ const summary = sources.length > 1 ? `Decided: ${latest.content} (${sources.length} decisions)` : null;
181
+ return {
182
+ content: latest.content,
183
+ summary,
184
+ tags: latest.tags || [],
185
+ metadata,
186
+ mergeReason: `Merged ${sources.length} decision records, keeping latest from ${latest.createdAt}`,
187
+ conflictWarnings: warnings,
188
+ };
189
+ }
190
+ }
191
+ /**
192
+ * OBSERVATION strategy: Aggregate observations in chronological order.
193
+ * Preserves temporal patterns and frequency information.
194
+ */
195
+ class ObservationMergeStrategy {
196
+ type = 'observation';
197
+ canMerge(sources) {
198
+ if (sources.length < 2) {
199
+ return { ok: false, reason: 'Need at least 2 memories to merge' };
200
+ }
201
+ return { ok: true };
202
+ }
203
+ merge(sources) {
204
+ if (sources.length === 0) {
205
+ return {
206
+ content: '',
207
+ summary: null,
208
+ tags: [],
209
+ metadata: {},
210
+ mergeReason: 'Empty source set',
211
+ conflictWarnings: [],
212
+ };
213
+ }
214
+ // Sort chronologically
215
+ const sorted = [...sources].sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
216
+ // Create observation summary
217
+ const observations = sorted.map((m) => `• ${m.content}`).join('\n');
218
+ const metadata = {
219
+ mergedFrom: sources.map((m) => m.id),
220
+ observationCount: sources.length,
221
+ timeSpan: {
222
+ start: sorted[0].createdAt,
223
+ end: sorted[sorted.length - 1].createdAt,
224
+ },
225
+ chronologicalOrder: sorted.map((m) => ({
226
+ id: m.id,
227
+ content: m.content,
228
+ createdAt: m.createdAt,
229
+ })),
230
+ };
231
+ // Merge tags
232
+ const tagSet = new Set();
233
+ for (const source of sources) {
234
+ for (const tag of source.tags || []) {
235
+ tagSet.add(tag);
236
+ }
237
+ }
238
+ return {
239
+ content: `Observations (${sources.length} total):\n${observations}`,
240
+ summary: `${sources.length} observations over time period`,
241
+ tags: Array.from(tagSet),
242
+ metadata,
243
+ mergeReason: `Merged ${sources.length} observations chronologically`,
244
+ conflictWarnings: [],
245
+ };
246
+ }
247
+ }
248
+ /**
249
+ * CONTEXT strategy: Union of unique context, remove exact duplicates.
250
+ * Preserves all distinct context items.
251
+ */
252
+ class ContextMergeStrategy {
253
+ type = 'context';
254
+ canMerge(sources) {
255
+ if (sources.length < 2) {
256
+ return { ok: false, reason: 'Need at least 2 memories to merge' };
257
+ }
258
+ return { ok: true };
259
+ }
260
+ merge(sources) {
261
+ if (sources.length === 0) {
262
+ return {
263
+ content: '',
264
+ summary: null,
265
+ tags: [],
266
+ metadata: {},
267
+ mergeReason: 'Empty source set',
268
+ conflictWarnings: [],
269
+ };
270
+ }
271
+ // Deduplicate by content (exact matches)
272
+ const uniqueContexts = new Map();
273
+ for (const source of sources) {
274
+ if (!uniqueContexts.has(source.content)) {
275
+ uniqueContexts.set(source.content, source);
276
+ }
277
+ }
278
+ // Format as list
279
+ const contextList = Array.from(uniqueContexts.keys())
280
+ .sort()
281
+ .map((content) => `• ${content}`)
282
+ .join('\n');
283
+ const metadata = {
284
+ mergedFrom: sources.map((m) => m.id),
285
+ uniqueContextCount: uniqueContexts.size,
286
+ totalContextCount: sources.length,
287
+ deduplicatedEntries: sources.length - uniqueContexts.size,
288
+ };
289
+ // Merge tags
290
+ const tagSet = new Set();
291
+ for (const source of sources) {
292
+ for (const tag of source.tags || []) {
293
+ tagSet.add(tag);
294
+ }
295
+ }
296
+ return {
297
+ content: contextList,
298
+ summary: `${uniqueContexts.size} context items (${sources.length} total)`,
299
+ tags: Array.from(tagSet),
300
+ metadata,
301
+ mergeReason: `Merged ${sources.length} context records into ${uniqueContexts.size} unique items`,
302
+ conflictWarnings: [],
303
+ };
304
+ }
305
+ }
306
+ export const MERGE_STRATEGIES = {
307
+ fact: new FactMergeStrategy(),
308
+ preference: new PreferenceMergeStrategy(),
309
+ decision: new DecisionMergeStrategy(),
310
+ observation: new ObservationMergeStrategy(),
311
+ context: new ContextMergeStrategy(),
312
+ };
313
+ export function getMergeStrategy(type) {
314
+ const strategy = MERGE_STRATEGIES[type];
315
+ if (!strategy) {
316
+ throw new Error(`No merge strategy defined for type: ${type}`);
317
+ }
318
+ return strategy;
319
+ }
320
+ export function mergeMemories(sources) {
321
+ if (sources.length === 0) {
322
+ throw new Error('Cannot merge: no source memories');
323
+ }
324
+ // All sources must be same type
325
+ const type = sources[0].type;
326
+ const allSameType = sources.every((m) => m.type === type);
327
+ if (!allSameType) {
328
+ throw new Error('Cannot merge: memories must be same type');
329
+ }
330
+ const strategy = getMergeStrategy(type);
331
+ const canMerge = strategy.canMerge(sources);
332
+ if (!canMerge.ok) {
333
+ throw new Error(`Cannot merge: ${canMerge.reason}`);
334
+ }
335
+ return strategy.merge(sources);
336
+ }
337
+ //# sourceMappingURL=merge-strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-strategies.js","sourceRoot":"","sources":["../../../../algorithms/merge/strategies/merge-strategies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ declare const app: import("express-serve-static-core").Express;
2
+ export declare function startWebServer(): void;
3
+ export default app;
4
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../api/web/web.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAqetB,wBAAgB,cAAc,SAI7B;AAED,eAAe,GAAG,CAAC"}