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 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../core/summarization/stats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC,CA6CD"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Summarization Statistics
3
+ * Analytics and statistics for summarization operations
4
+ */
5
+ import { eq } from 'drizzle-orm';
6
+ import { getDb } from '../../db/index.js';
7
+ import { getSchema } from '../../db/schema.js';
8
+ import { logger } from '../logger.js';
9
+ /**
10
+ * Get summarization statistics
11
+ */
12
+ export async function getSummarizationStats(projectId) {
13
+ try {
14
+ const db = await getDb();
15
+ const schema = await getSchema();
16
+ const where = projectId ? eq(schema.sessionSummaries.projectId, projectId) : undefined;
17
+ const summaries = await db.select().from(schema.sessionSummaries).where(where);
18
+ const stats = {
19
+ totalSummaries: summaries.length,
20
+ byType: {
21
+ incremental: 0,
22
+ rolling: 0,
23
+ final: 0,
24
+ },
25
+ totalTokensSaved: 0,
26
+ avgCompressionRatio: 0,
27
+ };
28
+ for (const s of summaries) {
29
+ stats.byType[s.summaryType] = (stats.byType[s.summaryType] || 0) + 1;
30
+ stats.totalTokensSaved += s.tokensSaved || 0;
31
+ }
32
+ // Calculate average compression ratio
33
+ let totalRatio = 0;
34
+ for (const s of summaries) {
35
+ if (s.compressedFrom && s.compressedFrom > 0) {
36
+ totalRatio += s.tokensSaved / (s.compressedFrom * 100); // Rough estimate
37
+ }
38
+ }
39
+ stats.avgCompressionRatio = summaries.length > 0 ? totalRatio / summaries.length : 0;
40
+ return stats;
41
+ }
42
+ catch (error) {
43
+ logger.error('Error getting summarization stats', error);
44
+ return {
45
+ totalSummaries: 0,
46
+ byType: {},
47
+ totalTokensSaved: 0,
48
+ avgCompressionRatio: 0,
49
+ };
50
+ }
51
+ }
52
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../core/summarization/stats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAkB;IAM5D,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,MAAM,SAAS,GAAG,MAAO,EAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAExF,MAAM,KAAK,GAAG;YACZ,cAAc,EAAE,SAAS,CAAC,MAAM;YAChC,MAAM,EAAE;gBACN,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,CAAC;aACiB;YAC3B,gBAAgB,EAAE,CAAC;YACnB,mBAAmB,EAAE,CAAC;SACvB,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACrE,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,sCAAsC;QACtC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBAC7C,UAAU,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB;YAC3E,CAAC;QACH,CAAC;QAED,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAErF,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO;YACL,cAAc,EAAE,CAAC;YACjB,MAAM,EAAE,EAAE;YACV,gBAAgB,EAAE,CAAC;YACnB,mBAAmB,EAAE,CAAC;SACvB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Summarization Strategies
3
+ * Implements different summarization algorithms
4
+ */
5
+ export type SummaryType = 'incremental' | 'rolling' | 'final';
6
+ export interface SummarizationConfig {
7
+ incrementalThreshold: number;
8
+ rollingWindowSize: number;
9
+ compressionRatio: number;
10
+ enabled: boolean;
11
+ }
12
+ /**
13
+ * Create incremental summary (summary in chunks)
14
+ */
15
+ export declare function createIncrementalSummary(messages: any[], config: SummarizationConfig): Promise<string>;
16
+ /**
17
+ * Create rolling summary (last N messages)
18
+ */
19
+ export declare function createRollingSummary(messages: any[], config: SummarizationConfig): Promise<string>;
20
+ /**
21
+ * Create final summary (entire conversation)
22
+ */
23
+ export declare function createFinalSummary(messages: any[], config: SummarizationConfig): Promise<string>;
24
+ //# sourceMappingURL=strategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategies.d.ts","sourceRoot":"","sources":["../../../core/summarization/strategies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,GAAG,EAAE,EACf,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,GAAG,EAAE,EACf,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,GAAG,EAAE,EACf,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAEjB"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Summarization Strategies
3
+ * Implements different summarization algorithms
4
+ */
5
+ import { chunkMessages, getRollingWindow, } from '../utils/summarization-helpers.js';
6
+ import { extractMessageContent, generateExtractiveSummary } from '../utils/content-extraction.js';
7
+ /**
8
+ * Create incremental summary (summary in chunks)
9
+ */
10
+ export async function createIncrementalSummary(messages, config) {
11
+ const chunks = chunkMessages(messages, config.incrementalThreshold);
12
+ const summaries = chunks.map(chunk => generateExtractiveSummary(extractMessageContent(chunk)));
13
+ return summaries.join('\n---\n');
14
+ }
15
+ /**
16
+ * Create rolling summary (last N messages)
17
+ */
18
+ export async function createRollingSummary(messages, config) {
19
+ const window = getRollingWindow(messages, config.rollingWindowSize);
20
+ return generateExtractiveSummary(extractMessageContent(window));
21
+ }
22
+ /**
23
+ * Create final summary (entire conversation)
24
+ */
25
+ export async function createFinalSummary(messages, config) {
26
+ return generateExtractiveSummary(extractMessageContent(messages));
27
+ }
28
+ //# sourceMappingURL=strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategies.js","sourceRoot":"","sources":["../../../core/summarization/strategies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAWlG;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAe,EACf,MAA2B;IAE3B,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAe,EACf,MAA2B;IAE3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACpE,OAAO,yBAAyB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAe,EACf,MAA2B;IAE3B,OAAO,yBAAyB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Aggressive Session Summarization
3
+ * Implements incremental, rolling, and final summarization
4
+ */
5
+ export type SummaryType = 'incremental' | 'rolling' | 'final';
6
+ export interface SummarizationConfig {
7
+ incrementalThreshold: number;
8
+ rollingWindowSize: number;
9
+ compressionRatio: number;
10
+ enabled: boolean;
11
+ }
12
+ /**
13
+ * Summarize a conversation session
14
+ */
15
+ export declare function summarizeSession(conversationId: string, summaryType: SummaryType, customConfig?: Partial<SummarizationConfig>): Promise<{
16
+ summaryId: string;
17
+ tokensSaved: number;
18
+ summary: string;
19
+ }>;
20
+ /**
21
+ * Get recent summaries for a conversation
22
+ */
23
+ export declare function getRecentSummaries(conversationId: string, limit?: number): Promise<any[]>;
24
+ /**
25
+ * Get summarization statistics
26
+ */
27
+ export declare function getSummarizationStats(projectId?: string): Promise<{
28
+ totalSummaries: number;
29
+ byType: Record<string, number>;
30
+ totalTokensSaved: number;
31
+ avgCompressionRatio: number;
32
+ }>;
33
+ /**
34
+ * Delete old summaries to save space
35
+ */
36
+ export declare function pruneOldSummaries(olderThanDays?: number): Promise<number>;
37
+ //# sourceMappingURL=summarization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarization.d.ts","sourceRoot":"","sources":["../../core/summarization.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AASD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,WAAW,EACxB,YAAY,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC9C,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAsEtE;AAkDD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,cAAc,EAAE,MAAM,EACtB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,GAAG,EAAE,CAAC,CAehB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC,CA6CD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnF"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Aggressive Session Summarization
3
+ * Implements incremental, rolling, and final summarization
4
+ */
5
+ import { eq, desc } from 'drizzle-orm';
6
+ import { randomUUID } from 'crypto';
7
+ import { getDb } from '../db/index.js';
8
+ import { getSchema } from '../db/schema.js';
9
+ import { config } from '../config.js';
10
+ import { getEmbedding } from './embeddings.js';
11
+ import { cleanupOldSessionSummaries } from './utils/cleanup-operations.js';
12
+ import { chunkMessages, getRollingWindow, calculateTokensSaved } from './utils/summarization-helpers.js';
13
+ import { extractMessageContent, generateExtractiveSummary } from './utils/content-extraction.js';
14
+ import { logger } from './logger.js';
15
+ const DEFAULT_CONFIG = {
16
+ incrementalThreshold: config.incrementalThreshold || 10,
17
+ rollingWindowSize: 50,
18
+ compressionRatio: 0.2, // 5:1 compression
19
+ enabled: config.summarizationEnabled !== false,
20
+ };
21
+ /**
22
+ * Summarize a conversation session
23
+ */
24
+ export async function summarizeSession(conversationId, summaryType, customConfig = {}) {
25
+ const finalConfig = { ...DEFAULT_CONFIG, ...customConfig };
26
+ if (!finalConfig.enabled) {
27
+ return { summaryId: '', tokensSaved: 0, summary: '' };
28
+ }
29
+ try {
30
+ const db = await getDb();
31
+ const schema = await getSchema();
32
+ // Fetch messages for this conversation
33
+ const messages = await db
34
+ .select()
35
+ .from(schema.messages)
36
+ .where(eq(schema.messages.conversationId, conversationId))
37
+ .orderBy(schema.messages.createdAt);
38
+ if (messages.length === 0) {
39
+ return { summaryId: '', tokensSaved: 0, summary: '' };
40
+ }
41
+ let summary = '';
42
+ switch (summaryType) {
43
+ case 'incremental':
44
+ summary = await createIncrementalSummary(messages, finalConfig);
45
+ break;
46
+ case 'rolling':
47
+ summary = await createRollingSummary(messages, finalConfig);
48
+ break;
49
+ case 'final':
50
+ summary = await createFinalSummary(messages, finalConfig);
51
+ break;
52
+ }
53
+ if (summary) {
54
+ // Store summary with embedding
55
+ const embedding = await getEmbedding(summary);
56
+ const conversation = await db
57
+ .select()
58
+ .from(schema.conversations)
59
+ .where(eq(schema.conversations.id, conversationId))
60
+ .limit(1);
61
+ if (conversation.length > 0) {
62
+ const tokensSaved = estimateTokensSaved(messages, summary);
63
+ const summaryId = randomUUID();
64
+ await db.insert(schema.sessionSummaries).values({
65
+ id: summaryId,
66
+ conversationId,
67
+ projectId: conversation[0].projectId,
68
+ summaryType,
69
+ content: summary,
70
+ compressedFrom: messages.length,
71
+ tokensSaved,
72
+ embedding: embedding || null,
73
+ createdAt: new Date(),
74
+ });
75
+ return { summaryId, tokensSaved, summary };
76
+ }
77
+ }
78
+ return { summaryId: '', tokensSaved: 0, summary };
79
+ }
80
+ catch (error) {
81
+ logger.error('Error summarizing session', error);
82
+ return { summaryId: '', tokensSaved: 0, summary: '' };
83
+ }
84
+ }
85
+ /**
86
+ * Create incremental summary (summary in chunks)
87
+ */
88
+ async function createIncrementalSummary(messages, config) {
89
+ const chunks = chunkMessages(messages, config.incrementalThreshold);
90
+ const summaries = chunks.map(chunk => generateExtractiveSummary(extractMessageContent(chunk)));
91
+ return summaries.join('\n---\n');
92
+ }
93
+ /**
94
+ * Create rolling summary (last N messages)
95
+ */
96
+ async function createRollingSummary(messages, config) {
97
+ const window = getRollingWindow(messages, config.rollingWindowSize);
98
+ return generateExtractiveSummary(extractMessageContent(window));
99
+ }
100
+ /**
101
+ * Create final summary (entire conversation)
102
+ */
103
+ async function createFinalSummary(messages, config) {
104
+ return generateExtractiveSummary(extractMessageContent(messages));
105
+ }
106
+ /**
107
+ * Generate basic extractive summary of messages
108
+ */
109
+ function summarizeChunk(messages) {
110
+ if (messages.length === 0)
111
+ return '';
112
+ return generateExtractiveSummary(extractMessageContent(messages));
113
+ }
114
+ /**
115
+ * Estimate tokens saved by summarization
116
+ */
117
+ function estimateTokensSaved(messages, summary) {
118
+ return calculateTokensSaved(messages, summary);
119
+ }
120
+ /**
121
+ * Get recent summaries for a conversation
122
+ */
123
+ export async function getRecentSummaries(conversationId, limit = 10) {
124
+ try {
125
+ const db = await getDb();
126
+ const schema = await getSchema();
127
+ return await db
128
+ .select()
129
+ .from(schema.sessionSummaries)
130
+ .where(eq(schema.sessionSummaries.conversationId, conversationId))
131
+ .orderBy(desc(schema.sessionSummaries.createdAt))
132
+ .limit(limit);
133
+ }
134
+ catch (error) {
135
+ logger.error('Error getting recent summaries', error);
136
+ return [];
137
+ }
138
+ }
139
+ /**
140
+ * Get summarization statistics
141
+ */
142
+ export async function getSummarizationStats(projectId) {
143
+ try {
144
+ const db = await getDb();
145
+ const schema = await getSchema();
146
+ const where = projectId ? eq(schema.sessionSummaries.projectId, projectId) : undefined;
147
+ const summaries = await db.select().from(schema.sessionSummaries).where(where);
148
+ const stats = {
149
+ totalSummaries: summaries.length,
150
+ byType: {
151
+ incremental: 0,
152
+ rolling: 0,
153
+ final: 0,
154
+ },
155
+ totalTokensSaved: 0,
156
+ avgCompressionRatio: 0,
157
+ };
158
+ for (const s of summaries) {
159
+ stats.byType[s.summaryType] = (stats.byType[s.summaryType] || 0) + 1;
160
+ stats.totalTokensSaved += s.tokensSaved || 0;
161
+ }
162
+ // Calculate average compression ratio
163
+ let totalRatio = 0;
164
+ for (const s of summaries) {
165
+ if (s.compressedFrom && s.compressedFrom > 0) {
166
+ totalRatio += s.tokensSaved / (s.compressedFrom * 100); // Rough estimate
167
+ }
168
+ }
169
+ stats.avgCompressionRatio = summaries.length > 0 ? totalRatio / summaries.length : 0;
170
+ return stats;
171
+ }
172
+ catch (error) {
173
+ logger.error('Error getting summarization stats', error);
174
+ return {
175
+ totalSummaries: 0,
176
+ byType: {},
177
+ totalTokensSaved: 0,
178
+ avgCompressionRatio: 0,
179
+ };
180
+ }
181
+ }
182
+ /**
183
+ * Delete old summaries to save space
184
+ */
185
+ export async function pruneOldSummaries(olderThanDays = 30) {
186
+ return cleanupOldSessionSummaries(olderThanDays);
187
+ }
188
+ //# sourceMappingURL=summarization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarization.js","sourceRoot":"","sources":["../../core/summarization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * QMD Memory Synchronization
3
+ *
4
+ * Syncs Squish memories to QMD collections for hybrid search.
5
+ * Writes memories as markdown files to QMD collection directories.
6
+ *
7
+ * QMD automatically indexes files in collection directories, so we just
8
+ * need to write files to the right location.
9
+ *
10
+ * Collection Structure:
11
+ * - qmd-collections/squish-observations/ - Observation memories
12
+ * - qmd-collections/squish-facts/ - Fact memories
13
+ * - qmd-collections/squish-decisions/ - Decision memories
14
+ * - qmd-collections/squish-context/ - Context memories
15
+ * - qmd-collections/squish-preferences/ - Preference memories
16
+ */
17
+ import type { MemoryRecord } from '../memory/memories.js';
18
+ export interface CollectionMapping {
19
+ [memoryType: string]: string;
20
+ }
21
+ /**
22
+ * QMD Memory Sync class
23
+ *
24
+ * Manages synchronization of Squish memories to QMD collections.
25
+ */
26
+ export declare class QMDMemorySync {
27
+ private collectionsPath;
28
+ private client;
29
+ private initialized;
30
+ constructor();
31
+ /**
32
+ * Initialize the sync layer
33
+ *
34
+ * Creates collection directories and verifies QMD connection.
35
+ */
36
+ initialize(): Promise<void>;
37
+ /**
38
+ * Sync a memory to QMD
39
+ *
40
+ * Writes memory as markdown to the appropriate collection directory.
41
+ * QMD will automatically index the file on its next update cycle.
42
+ *
43
+ * @param memory - Memory record to sync
44
+ */
45
+ syncMemory(memory: MemoryRecord): Promise<void>;
46
+ /**
47
+ * Batch sync multiple memories
48
+ *
49
+ * @param memories - Array of memory records to sync
50
+ */
51
+ syncMemories(memories: MemoryRecord[]): Promise<void>;
52
+ /**
53
+ * Trigger QMD re-index
54
+ *
55
+ * Note: This would typically call `qmd update` or `qmd embed`.
56
+ * For now, we just log that documents are ready for indexing.
57
+ */
58
+ reindex(): Promise<void>;
59
+ /**
60
+ * Get collection name for a memory
61
+ *
62
+ * @param memory - Memory record
63
+ * @returns QMD collection name
64
+ */
65
+ private getCollectionForMemory;
66
+ /**
67
+ * Generate filename for memory
68
+ *
69
+ * Uses a docid-like format (6-char hash) for consistent naming.
70
+ *
71
+ * @param memory - Memory record
72
+ * @returns Filename for the memory
73
+ */
74
+ private getFilenameForMemory;
75
+ /**
76
+ * Format memory as markdown for QMD indexing
77
+ *
78
+ * Uses frontmatter for metadata and standard markdown for content.
79
+ *
80
+ * @param memory - Memory record
81
+ * @returns Markdown formatted string
82
+ */
83
+ private formatMemoryAsMarkdown;
84
+ /**
85
+ * Capitalize first letter of a string
86
+ */
87
+ private capitalize;
88
+ /**
89
+ * Create a QMD collection directory
90
+ *
91
+ * @param name - Collection name
92
+ */
93
+ private createCollection;
94
+ }
95
+ /**
96
+ * Get the singleton QMD memory sync instance
97
+ *
98
+ * @returns QMDMemorySync instance
99
+ */
100
+ export declare function getQMDMemorySync(): Promise<QMDMemorySync>;
101
+ /**
102
+ * Reset the singleton sync instance
103
+ * Useful for testing or when configuration changes.
104
+ */
105
+ export declare function resetQMDMemorySync(): void;
106
+ //# sourceMappingURL=qmd-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qmd-sync.d.ts","sourceRoot":"","sources":["../../../core/sync/qmd-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,MAAM,WAAW,iBAAiB;IAChC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,WAAW,CAAS;;IAM5B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCjC;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BrD;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAK9B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;OAIG;YACW,gBAAgB;CAK/B;AAKD;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAM/D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}