squish-memory 1.0.2 → 1.2.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 (704) hide show
  1. package/.env.example +146 -0
  2. package/CHANGELOG.md +202 -0
  3. package/README.md +192 -287
  4. package/{scripts → bin}/dependency-manager.mjs +217 -217
  5. package/{scripts → bin}/detect-clients.mjs +78 -78
  6. package/bin/install-interactive.mjs +321 -0
  7. package/bin/squish-mcp.mjs +46 -0
  8. package/bin/squish.mjs +33 -0
  9. package/config/mcp-migration-map.json +1 -6
  10. package/config/mcp-mode-semantics.json +10 -12
  11. package/config/mcp-remote-auth.json +3 -26
  12. package/config/mcp-universal.schema.json +5 -35
  13. package/config/settings.json +78 -22
  14. package/config.js +5 -0
  15. package/config.ts +218 -0
  16. package/core/adapters/config/claude-code.ts +133 -0
  17. package/core/adapters/config/cursor.ts +90 -0
  18. package/core/adapters/config/opencode.ts +89 -0
  19. package/core/adapters/config/windsurf.ts +90 -0
  20. package/core/adapters/index.ts +102 -0
  21. package/core/adapters/timeline.ts +116 -0
  22. package/core/adapters/types.ts +166 -0
  23. package/core/agent-preferences.ts +140 -0
  24. package/core/algorithms/analytics/token-estimator.ts +216 -0
  25. package/core/algorithms/detection/hash-filters.ts +260 -0
  26. package/core/algorithms/detection/semantic-ranker.ts +194 -0
  27. package/core/algorithms/detection/two-stage-detector.ts +421 -0
  28. package/core/algorithms/handlers/approve-merge.ts +215 -0
  29. package/core/algorithms/handlers/detect-duplicates.ts +192 -0
  30. package/core/algorithms/handlers/get-stats.ts +132 -0
  31. package/core/algorithms/handlers/list-proposals.ts +130 -0
  32. package/core/algorithms/handlers/preview-merge.ts +139 -0
  33. package/core/algorithms/handlers/reject-merge.ts +93 -0
  34. package/core/algorithms/handlers/reverse-merge.ts +155 -0
  35. package/core/algorithms/index.ts +39 -0
  36. package/core/algorithms/operations/cache-maintenance.ts +182 -0
  37. package/core/algorithms/safety/safety-checks.ts +256 -0
  38. package/core/algorithms/strategies/merge-strategies.ts +381 -0
  39. package/core/algorithms/types.ts +140 -0
  40. package/core/algorithms/utils/response-builder.ts +61 -0
  41. package/core/associations.ts +363 -0
  42. package/core/beliefs/decay.ts +289 -0
  43. package/core/beliefs/extractor.ts +131 -0
  44. package/core/beliefs/store.ts +557 -0
  45. package/core/beliefs/types.ts +38 -0
  46. package/core/commands/mcp-server.ts +5 -0
  47. package/core/compression.ts +177 -0
  48. package/core/config.js +2 -0
  49. package/core/consolidation.ts +330 -0
  50. package/core/context/agent-context.ts +388 -0
  51. package/core/context/context-paging.ts +449 -0
  52. package/core/context/context-window.ts +234 -0
  53. package/core/context/context.ts +35 -0
  54. package/core/embeddings/embeddings.ts +616 -0
  55. package/core/embeddings/google-multimodal.ts +200 -0
  56. package/core/embeddings/local-embeddings.ts +12 -0
  57. package/core/embeddings/qmd-client.ts +495 -0
  58. package/core/embeddings/transformers-local.ts +261 -0
  59. package/core/embeddings.js +4 -0
  60. package/core/error-handling.ts +206 -0
  61. package/core/external +219 -0
  62. package/core/graph/entity-deduplicator.ts +232 -0
  63. package/core/graph/graph-builder.ts +257 -0
  64. package/core/graph/graph-traversal.ts +490 -0
  65. package/core/graph/index.ts +24 -0
  66. package/core/graph/llm-entity-extractor.ts +402 -0
  67. package/core/graph/multi-hop-retrieval.ts +317 -0
  68. package/core/graph/relationship-extractor.ts +465 -0
  69. package/core/hooks/agent-hooks.ts +653 -0
  70. package/core/hooks/auto-tagger.ts +149 -0
  71. package/core/hooks/capture-filter.ts +169 -0
  72. package/core/hot-cache.ts +388 -0
  73. package/core/index.ts +10 -0
  74. package/core/ingestion/agent-memory.ts +167 -0
  75. package/core/ingestion/core-memory.ts +326 -0
  76. package/core/ingestion/learnings.ts +260 -0
  77. package/core/ingestion/signal-engine.ts +266 -0
  78. package/core/integrations/obsidian-vault.ts +197 -0
  79. package/core/layers/generator.ts +115 -0
  80. package/core/lib/db-client.ts +168 -0
  81. package/core/lib/parse-embedding.ts +59 -0
  82. package/core/lib/schemas.ts +102 -0
  83. package/core/lib/types.ts +49 -0
  84. package/core/lib/utils.ts +151 -0
  85. package/core/lib/validation.ts +180 -0
  86. package/core/lifecycle.ts +353 -0
  87. package/core/logger.ts +59 -0
  88. package/core/memory/bridge-discovery.ts +395 -0
  89. package/core/memory/categorizer.ts +390 -0
  90. package/core/memory/conflict-detector.ts +62 -0
  91. package/core/memory/consolidation.ts +372 -0
  92. package/core/memory/context-collector.ts +75 -0
  93. package/core/memory/contradiction-resolver.ts +494 -0
  94. package/core/memory/edit-workflow.ts +174 -0
  95. package/core/memory/entity-extractor.ts +426 -0
  96. package/core/memory/entity-resolver.ts +89 -0
  97. package/core/memory/explain.ts +112 -0
  98. package/core/memory/fact-deriver.ts +300 -0
  99. package/core/memory/fact-extractor.ts +120 -0
  100. package/core/memory/feedback-tracker.ts +200 -0
  101. package/core/memory/hooks.ts +230 -0
  102. package/core/memory/hybrid-retrieval.ts +65 -0
  103. package/core/memory/hybrid-scorer.ts +325 -0
  104. package/core/memory/hybrid-search.ts +748 -0
  105. package/core/memory/importance.ts +319 -0
  106. package/core/memory/index.ts +11 -0
  107. package/core/memory/loader.ts +178 -0
  108. package/core/memory/markdown/markdown-storage.ts +318 -0
  109. package/core/memory/memories.ts +565 -0
  110. package/core/memory/memory-lifecycle.ts +51 -0
  111. package/core/memory/memory-manager.ts +53 -0
  112. package/core/memory/migrate.ts +173 -0
  113. package/core/memory/normalization.ts +30 -0
  114. package/core/memory/path-strengthener.ts +211 -0
  115. package/core/memory/progressive-disclosure.ts +392 -0
  116. package/core/memory/query-processor.ts +130 -0
  117. package/core/memory/query-rewriter.ts +153 -0
  118. package/core/memory/response-analyzer.ts +81 -0
  119. package/core/memory/retrieval-feedback.ts +276 -0
  120. package/core/memory/serialization.ts +83 -0
  121. package/core/memory/stale-cleaner.ts +147 -0
  122. package/core/memory/stats.ts +181 -0
  123. package/core/memory/telemetry.ts +392 -0
  124. package/core/memory/temporal-facts.ts +356 -0
  125. package/core/memory/temporal-parser.ts +477 -0
  126. package/core/memory/trigger-detector.ts +104 -0
  127. package/core/memory/write-gate.ts +288 -0
  128. package/core/places/index.ts +14 -0
  129. package/core/places/memory-places.ts +339 -0
  130. package/core/places/places.ts +406 -0
  131. package/core/places/rules.ts +308 -0
  132. package/core/places/walking.ts +192 -0
  133. package/core/projects +89 -0
  134. package/core/projects.ts +131 -0
  135. package/core/redis.ts +82 -0
  136. package/core/responses.ts +187 -0
  137. package/core/runtime/trust-report.ts +195 -0
  138. package/core/runtime/trust-state.ts +360 -0
  139. package/core/scheduler/cron-scheduler.ts +581 -0
  140. package/core/scheduler/heartbeat.ts +91 -0
  141. package/core/scheduler/index.ts +8 -0
  142. package/core/scheduler/job-runner.ts +197 -0
  143. package/core/search/conversations.ts +166 -0
  144. package/core/search/entities.ts +46 -0
  145. package/core/search/folder-context.ts +154 -0
  146. package/core/search/graph-boost.ts +22 -0
  147. package/core/search/index.ts +4 -0
  148. package/core/search/qmd-wrapper.ts +84 -0
  149. package/core/security/encrypt.ts +51 -0
  150. package/core/security/governance.ts +102 -0
  151. package/core/security/privacy.ts +108 -0
  152. package/core/security/secret-detector.ts +122 -0
  153. package/core/session/auto-load.ts +160 -0
  154. package/core/session/entity-tracker.ts +363 -0
  155. package/core/session/index.ts +7 -0
  156. package/core/session/reference-resolver.ts +158 -0
  157. package/core/session/self-iteration-job.ts +478 -0
  158. package/core/session/session-hooks.ts +69 -0
  159. package/core/session/types.ts +36 -0
  160. package/core/session/working-set.ts +275 -0
  161. package/core/snapshots/cleanup.ts +13 -0
  162. package/core/snapshots/comparison.ts +59 -0
  163. package/core/snapshots/creation.ts +139 -0
  164. package/core/snapshots/retrieval.ts +44 -0
  165. package/core/snapshots/stats.ts +63 -0
  166. package/core/storage/cache.ts +241 -0
  167. package/core/storage/database.ts +23 -0
  168. package/core/summarization/cleanup.ts +13 -0
  169. package/core/summarization/queries.ts +32 -0
  170. package/core/summarization/stats.ts +64 -0
  171. package/core/summarization/strategies.ts +52 -0
  172. package/core/summarization.ts +248 -0
  173. package/core/temporal-facts.ts +244 -0
  174. package/core/tracing/collector.ts +470 -0
  175. package/core/tracing/visualizer.ts +195 -0
  176. package/core/utils/cleanup-operations.ts +50 -0
  177. package/core/utils/content-extraction.ts +95 -0
  178. package/core/utils/filter-builder.ts +56 -0
  179. package/core/utils/history-traversal.ts +63 -0
  180. package/core/utils/memory-operations.ts +56 -0
  181. package/core/utils/query-operations.ts +83 -0
  182. package/core/utils/summarization-helpers.ts +45 -0
  183. package/core/utils/temporal-queries.ts +39 -0
  184. package/core/utils/vector-operations.ts +135 -0
  185. package/core/utils/version-management.ts +74 -0
  186. package/core/worker.ts +324 -0
  187. package/db/adapter.ts +215 -0
  188. package/db/bootstrap.ts +1055 -0
  189. package/db/drizzle/migrations/0000_needy_cerebro.sql +402 -0
  190. package/db/drizzle/migrations/meta/0000_snapshot.json +3451 -0
  191. package/db/drizzle/migrations/meta/_journal.json +13 -0
  192. package/db/drizzle/schema-sqlite.ts +1032 -0
  193. package/db/drizzle/schema.ts +1128 -0
  194. package/db/drizzle.config.ts +12 -0
  195. package/db/index.ts +83 -0
  196. package/db/init.sql +5 -0
  197. package/db/migrations/associations.ts +35 -0
  198. package/db/migrations/beliefs.ts +89 -0
  199. package/db/migrations/core-memory.ts +35 -0
  200. package/db/migrations/fts.ts +59 -0
  201. package/db/migrations/index.ts +54 -0
  202. package/db/migrations/indexes.ts +36 -0
  203. package/db/migrations/learnings.ts +34 -0
  204. package/db/migrations/maintenance.ts +68 -0
  205. package/db/migrations/memories.ts +22 -0
  206. package/db/migrations/memory-places.ts +35 -0
  207. package/db/migrations/places.ts +49 -0
  208. package/db/migrations/projects.ts +21 -0
  209. package/db/migrations/tier-conversion.ts +24 -0
  210. package/db/neon.ts +22 -0
  211. package/db/schema/beliefs.ts +50 -0
  212. package/db/schema/generator.ts +159 -0
  213. package/db/schema/index.ts +58 -0
  214. package/db/schema/learnings.ts +32 -0
  215. package/db/schema/memories.ts +83 -0
  216. package/db/schema/projects.ts +33 -0
  217. package/db/schema.ts +13 -0
  218. package/db/supabase.ts +27 -0
  219. package/dist/config.d.ts +61 -14
  220. package/dist/config.js +159 -139
  221. package/dist/core/adapters/config/claude-code.d.ts +45 -0
  222. package/dist/core/adapters/config/claude-code.js +113 -0
  223. package/dist/core/adapters/config/cursor.d.ts +26 -0
  224. package/dist/core/adapters/config/cursor.js +74 -0
  225. package/dist/core/adapters/config/opencode.d.ts +23 -0
  226. package/dist/core/adapters/config/opencode.js +73 -0
  227. package/dist/core/adapters/config/windsurf.d.ts +26 -0
  228. package/dist/core/adapters/config/windsurf.js +74 -0
  229. package/dist/core/adapters/index.d.ts +45 -0
  230. package/dist/core/adapters/index.js +84 -0
  231. package/dist/core/adapters/scripts/install-adapter.d.ts +19 -0
  232. package/dist/core/adapters/scripts/install-adapter.js +149 -0
  233. package/dist/core/adapters/timeline.d.ts +23 -0
  234. package/dist/core/adapters/timeline.js +88 -0
  235. package/dist/core/adapters/types.d.ts +137 -0
  236. package/dist/core/adapters/types.js +50 -0
  237. package/dist/core/agent-preferences.d.ts +16 -0
  238. package/dist/core/agent-preferences.js +124 -0
  239. package/dist/{algorithms → core/algorithms}/analytics/token-estimator.d.ts +1 -1
  240. package/dist/{algorithms → core/algorithms}/analytics/token-estimator.js +3 -3
  241. package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.d.ts +1 -1
  242. package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.js +1 -1
  243. package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.d.ts +1 -1
  244. package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.js +7 -10
  245. package/dist/{algorithms → core/algorithms}/handlers/approve-merge.js +4 -4
  246. package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.js +3 -3
  247. package/dist/{algorithms → core/algorithms}/handlers/get-stats.js +3 -3
  248. package/dist/{algorithms → core/algorithms}/handlers/list-proposals.js +3 -3
  249. package/dist/{algorithms → core/algorithms}/handlers/preview-merge.js +3 -3
  250. package/dist/{algorithms → core/algorithms}/handlers/reject-merge.js +3 -3
  251. package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.js +3 -3
  252. package/dist/core/algorithms/index.d.ts +21 -0
  253. package/dist/core/algorithms/index.js +26 -0
  254. package/dist/core/algorithms/operations/cache-maintenance.d.ts +12 -0
  255. package/dist/core/algorithms/operations/cache-maintenance.js +157 -0
  256. package/dist/{algorithms → core/algorithms}/safety/safety-checks.d.ts +2 -6
  257. package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.d.ts +19 -1
  258. package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.js +74 -123
  259. package/dist/core/algorithms/types.d.ts +125 -0
  260. package/dist/core/algorithms/types.js +5 -0
  261. package/dist/core/associations.d.ts +3 -2
  262. package/dist/core/associations.js +37 -2
  263. package/dist/core/autosave.d.ts +19 -0
  264. package/dist/core/autosave.js +16 -0
  265. package/dist/core/beliefs/decay.d.ts +27 -0
  266. package/dist/core/beliefs/decay.js +217 -0
  267. package/dist/core/beliefs/extractor.d.ts +9 -0
  268. package/dist/core/beliefs/extractor.js +113 -0
  269. package/dist/core/beliefs/store.d.ts +46 -0
  270. package/dist/core/beliefs/store.js +466 -0
  271. package/dist/core/beliefs/types.d.ts +28 -0
  272. package/dist/core/beliefs/types.js +2 -0
  273. package/dist/core/commands/mcp-server.d.ts +2 -0
  274. package/dist/core/commands/mcp-server.js +6 -0
  275. package/dist/core/commands/remember.d.ts +24 -0
  276. package/dist/core/commands/remember.js +144 -0
  277. package/dist/core/compression.d.ts +45 -0
  278. package/dist/core/compression.js +160 -0
  279. package/dist/core/context/agent-context.d.ts +106 -0
  280. package/dist/core/context/agent-context.js +274 -0
  281. package/dist/core/{context-paging.d.ts → context/context-paging.d.ts} +2 -12
  282. package/dist/core/{context-paging.js → context/context-paging.js} +19 -39
  283. package/dist/core/context/context-window.d.ts +40 -0
  284. package/dist/core/context/context-window.js +177 -0
  285. package/dist/core/context/context.js +22 -0
  286. package/dist/core/embeddings/embeddings.d.ts +29 -0
  287. package/dist/core/embeddings/embeddings.js +546 -0
  288. package/dist/core/embeddings/google-multimodal.js +6 -2
  289. package/dist/core/embeddings/local-embeddings.d.ts +11 -0
  290. package/dist/core/embeddings/local-embeddings.js +11 -0
  291. package/dist/core/embeddings/qmd-client.js +1 -1
  292. package/dist/core/embeddings/transformers-local.d.ts +64 -0
  293. package/dist/core/embeddings/transformers-local.js +213 -0
  294. package/dist/core/embeddings.d.ts +1 -28
  295. package/dist/core/embeddings.js +2 -401
  296. package/dist/core/error-handling.d.ts +63 -0
  297. package/dist/core/error-handling.js +173 -0
  298. package/dist/core/graph/entity-deduplicator.d.ts +24 -0
  299. package/dist/core/graph/entity-deduplicator.js +183 -0
  300. package/dist/core/graph/graph-builder.d.ts +46 -0
  301. package/dist/core/graph/graph-builder.js +174 -0
  302. package/dist/core/graph/graph-traversal.d.ts +80 -0
  303. package/dist/core/graph/graph-traversal.js +315 -0
  304. package/dist/core/graph/index.d.ts +19 -0
  305. package/dist/core/graph/index.js +13 -0
  306. package/dist/core/graph/llm-entity-extractor.d.ts +49 -0
  307. package/dist/core/graph/llm-entity-extractor.js +313 -0
  308. package/dist/core/graph/multi-hop-retrieval.d.ts +48 -0
  309. package/dist/core/graph/multi-hop-retrieval.js +215 -0
  310. package/dist/core/graph/relationship-extractor.d.ts +48 -0
  311. package/dist/core/graph/relationship-extractor.js +351 -0
  312. package/dist/core/hooks/agent-hooks.d.ts +83 -0
  313. package/dist/core/hooks/agent-hooks.js +521 -0
  314. package/dist/core/hooks/auto-tagger.d.ts +19 -0
  315. package/dist/core/hooks/auto-tagger.js +155 -0
  316. package/dist/core/hooks/capture-filter.d.ts +41 -0
  317. package/dist/core/hooks/capture-filter.js +128 -0
  318. package/dist/core/hot-cache.d.ts +86 -0
  319. package/dist/core/hot-cache.js +285 -0
  320. package/dist/core/index.d.ts +9 -9
  321. package/dist/core/index.js +9 -12
  322. package/dist/core/{agent-memory.js → ingestion/agent-memory.js} +5 -7
  323. package/dist/core/{core-memory.d.ts → ingestion/core-memory.d.ts} +2 -2
  324. package/dist/core/{core-memory.js → ingestion/core-memory.js} +7 -7
  325. package/dist/core/ingestion/learnings.d.ts +57 -0
  326. package/dist/core/ingestion/learnings.js +205 -0
  327. package/dist/core/ingestion/signal-engine.d.ts +41 -0
  328. package/dist/core/ingestion/signal-engine.js +201 -0
  329. package/dist/core/integrations/obsidian-vault.d.ts +31 -0
  330. package/dist/core/integrations/obsidian-vault.js +156 -0
  331. package/dist/core/lib/db-client.d.ts +114 -0
  332. package/dist/core/lib/db-client.js +130 -0
  333. package/dist/core/lib/parse-embedding.d.ts +9 -0
  334. package/dist/core/lib/parse-embedding.js +58 -0
  335. package/dist/core/lib/schemas.d.ts +132 -0
  336. package/dist/core/lib/schemas.js +87 -0
  337. package/dist/core/lib/types.d.ts +45 -0
  338. package/dist/core/lib/types.js +6 -0
  339. package/dist/core/{utils.d.ts → lib/utils.d.ts} +5 -0
  340. package/dist/core/lib/utils.js +145 -0
  341. package/dist/core/lib/validation.d.ts +38 -0
  342. package/dist/core/lib/validation.js +151 -0
  343. package/dist/core/lifecycle.d.ts +7 -1
  344. package/dist/core/lifecycle.js +152 -42
  345. package/dist/core/logger.d.ts +1 -0
  346. package/dist/core/logger.js +13 -1
  347. package/dist/core/mcp/tools.d.ts +0 -2
  348. package/dist/core/mcp/tools.js +35 -90
  349. package/dist/core/mcp/types.d.ts +25 -253
  350. package/dist/core/mcp/types.js +2 -2
  351. package/dist/core/memory/categorizer.js +2 -0
  352. package/dist/core/memory/conflict-detector.js +1 -1
  353. package/dist/core/memory/consolidation.d.ts +1 -10
  354. package/dist/core/memory/consolidation.js +4 -39
  355. package/dist/core/memory/context-collector.js +1 -1
  356. package/dist/core/memory/edit-workflow.js +1 -1
  357. package/dist/core/memory/entity-extractor.d.ts +4 -0
  358. package/dist/core/memory/entity-extractor.js +30 -16
  359. package/dist/core/memory/entity-resolver.js +7 -7
  360. package/dist/core/memory/explain.d.ts +18 -0
  361. package/dist/core/memory/explain.js +92 -0
  362. package/dist/core/memory/fact-deriver.d.ts +31 -0
  363. package/dist/core/memory/fact-deriver.js +236 -0
  364. package/dist/core/memory/fact-extractor.js +12 -12
  365. package/dist/core/memory/feedback-tracker.js +1 -1
  366. package/dist/core/memory/hooks.d.ts +88 -0
  367. package/dist/core/memory/hooks.js +174 -0
  368. package/dist/core/memory/hybrid-retrieval.d.ts +14 -16
  369. package/dist/core/memory/hybrid-retrieval.js +25 -127
  370. package/dist/core/memory/hybrid-scorer.js +6 -23
  371. package/dist/core/memory/hybrid-search.d.ts +9 -11
  372. package/dist/core/memory/hybrid-search.js +496 -273
  373. package/dist/core/memory/importance.d.ts +2 -24
  374. package/dist/core/memory/importance.js +7 -91
  375. package/dist/core/memory/index.d.ts +1 -0
  376. package/dist/core/memory/index.js +1 -0
  377. package/dist/core/memory/loader.d.ts +31 -0
  378. package/dist/core/memory/loader.js +141 -0
  379. package/dist/core/memory/markdown/markdown-storage.d.ts +72 -0
  380. package/dist/core/memory/markdown/markdown-storage.js +243 -0
  381. package/dist/core/memory/memories.d.ts +23 -19
  382. package/dist/core/memory/memories.js +243 -228
  383. package/dist/core/memory/memory-lifecycle.d.ts +8 -0
  384. package/dist/core/memory/memory-lifecycle.js +47 -0
  385. package/dist/core/memory/migrate.d.ts +21 -0
  386. package/dist/core/memory/migrate.js +134 -0
  387. package/dist/core/memory/normalization.d.ts +7 -0
  388. package/dist/core/memory/normalization.js +26 -0
  389. package/dist/core/memory/path-strengthener.d.ts +39 -0
  390. package/dist/core/memory/path-strengthener.js +150 -0
  391. package/dist/core/memory/progressive-disclosure.js +1 -1
  392. package/dist/core/memory/query-processor.js +37 -3
  393. package/dist/core/memory/query-rewriter.js +9 -9
  394. package/dist/core/memory/retrieval-feedback.d.ts +70 -0
  395. package/dist/core/memory/retrieval-feedback.js +213 -0
  396. package/dist/core/memory/serialization.d.ts +4 -0
  397. package/dist/core/memory/serialization.js +49 -0
  398. package/dist/core/memory/stale-cleaner.d.ts +26 -0
  399. package/dist/core/memory/stale-cleaner.js +97 -0
  400. package/dist/core/memory/stats.d.ts +15 -0
  401. package/dist/core/memory/stats.js +69 -13
  402. package/dist/core/memory/temporal-facts.js +21 -0
  403. package/dist/core/memory/trigger-detector.d.ts +8 -1
  404. package/dist/core/memory/trigger-detector.js +42 -5
  405. package/dist/core/memory/write-gate.js +1 -1
  406. package/dist/core/places/index.d.ts +14 -0
  407. package/dist/core/places/index.js +14 -0
  408. package/dist/core/places/memory-places.d.ts +68 -0
  409. package/dist/core/places/memory-places.js +261 -0
  410. package/dist/core/places/places.d.ts +88 -0
  411. package/dist/core/places/places.js +314 -0
  412. package/dist/core/places/rules.d.ts +74 -0
  413. package/dist/core/places/rules.js +240 -0
  414. package/dist/core/places/walking.d.ts +56 -0
  415. package/dist/core/places/walking.js +121 -0
  416. package/dist/core/projects.d.ts +5 -0
  417. package/dist/core/projects.js +47 -18
  418. package/dist/core/responses.d.ts +96 -0
  419. package/dist/core/responses.js +122 -0
  420. package/dist/core/runtime/trust-report.d.ts +102 -0
  421. package/dist/core/runtime/trust-report.js +107 -0
  422. package/dist/core/runtime/trust-state.d.ts +12 -0
  423. package/dist/core/runtime/trust-state.js +309 -0
  424. package/dist/core/scheduler/cron-scheduler.d.ts +1 -1
  425. package/dist/core/scheduler/cron-scheduler.js +193 -10
  426. package/dist/core/scheduler/index.d.ts +1 -1
  427. package/dist/core/scheduler/index.js +1 -1
  428. package/dist/core/scheduler/job-runner.js +2 -2
  429. package/dist/core/search/conversations.js +40 -42
  430. package/dist/core/search/entities.js +6 -9
  431. package/dist/core/search/graph-boost.d.ts +7 -0
  432. package/dist/core/search/graph-boost.js +23 -0
  433. package/dist/core/search/qmd-wrapper.d.ts +36 -0
  434. package/dist/core/search/qmd-wrapper.js +58 -0
  435. package/dist/core/security/encrypt.d.ts +6 -0
  436. package/dist/core/security/encrypt.js +47 -0
  437. package/dist/core/{governance.d.ts → security/governance.d.ts} +6 -1
  438. package/dist/core/security/governance.js +79 -0
  439. package/dist/core/session/auto-load.js +34 -9
  440. package/dist/core/session/entity-tracker.d.ts +62 -0
  441. package/dist/core/session/entity-tracker.js +287 -0
  442. package/dist/core/session/index.d.ts +1 -1
  443. package/dist/core/session/index.js +1 -1
  444. package/dist/core/session/reference-resolver.d.ts +26 -0
  445. package/dist/core/session/reference-resolver.js +121 -0
  446. package/dist/core/{session-hooks → session}/self-iteration-job.d.ts +15 -0
  447. package/dist/core/{session-hooks → session}/self-iteration-job.js +195 -90
  448. package/dist/core/session/working-set.d.ts +50 -0
  449. package/dist/core/session/working-set.js +212 -0
  450. package/dist/core/snapshots/creation.d.ts +2 -8
  451. package/dist/core/snapshots/creation.js +3 -12
  452. package/dist/core/{cache.js → storage/cache.js} +2 -2
  453. package/dist/core/utils/memory-operations.js +1 -1
  454. package/dist/core/utils/summarization-helpers.d.ts +0 -4
  455. package/dist/core/utils/summarization-helpers.js +1 -6
  456. package/dist/core/utils/vector-operations.d.ts +71 -0
  457. package/dist/core/utils/vector-operations.js +129 -0
  458. package/dist/db/adapter.d.ts +3 -3
  459. package/dist/db/adapter.js +99 -88
  460. package/dist/db/bootstrap.d.ts +2 -0
  461. package/dist/db/bootstrap.js +921 -674
  462. package/dist/{drizzle → db/drizzle}/schema-sqlite.d.ts +775 -25
  463. package/dist/{drizzle → db/drizzle}/schema-sqlite.js +170 -24
  464. package/dist/{drizzle → db/drizzle}/schema.d.ts +731 -32
  465. package/dist/{drizzle → db/drizzle}/schema.js +192 -32
  466. package/dist/db/drizzle.config.d.ts +3 -0
  467. package/dist/db/drizzle.config.js +12 -0
  468. package/dist/db/index.d.ts +1 -5
  469. package/dist/db/index.js +51 -8
  470. package/dist/db/migrations/associations.d.ts +6 -0
  471. package/dist/db/migrations/associations.js +29 -0
  472. package/dist/db/migrations/beliefs.d.ts +10 -0
  473. package/dist/db/migrations/beliefs.js +76 -0
  474. package/dist/db/migrations/core-memory.d.ts +6 -0
  475. package/dist/db/migrations/core-memory.js +29 -0
  476. package/dist/db/migrations/fts.d.ts +6 -0
  477. package/dist/db/migrations/fts.js +52 -0
  478. package/dist/db/migrations/index.d.ts +25 -0
  479. package/dist/db/migrations/index.js +51 -0
  480. package/dist/db/migrations/indexes.d.ts +6 -0
  481. package/dist/db/migrations/indexes.js +30 -0
  482. package/dist/db/migrations/learnings.d.ts +7 -0
  483. package/dist/db/migrations/learnings.js +26 -0
  484. package/dist/db/migrations/maintenance.d.ts +6 -0
  485. package/dist/db/migrations/maintenance.js +61 -0
  486. package/dist/db/migrations/memories.d.ts +7 -0
  487. package/dist/db/migrations/memories.js +16 -0
  488. package/dist/db/migrations/memory-places.d.ts +6 -0
  489. package/dist/db/migrations/memory-places.js +29 -0
  490. package/dist/db/migrations/places.d.ts +6 -0
  491. package/dist/db/migrations/places.js +43 -0
  492. package/dist/db/migrations/projects.d.ts +3 -0
  493. package/dist/db/migrations/projects.js +13 -0
  494. package/dist/db/migrations/tier-conversion.d.ts +7 -0
  495. package/dist/db/migrations/tier-conversion.js +20 -0
  496. package/dist/db/neon.d.ts +8 -0
  497. package/dist/db/neon.js +20 -0
  498. package/dist/db/schema/beliefs.d.ts +9 -0
  499. package/dist/db/schema/beliefs.js +46 -0
  500. package/dist/db/schema/generator.d.ts +38 -0
  501. package/dist/db/schema/generator.js +108 -0
  502. package/dist/db/schema/index.d.ts +39 -0
  503. package/dist/db/schema/index.js +51 -0
  504. package/dist/db/schema/learnings.d.ts +7 -0
  505. package/dist/db/schema/learnings.js +30 -0
  506. package/dist/db/schema/memories.d.ts +7 -0
  507. package/dist/db/schema/memories.js +81 -0
  508. package/dist/db/schema/projects.d.ts +4 -0
  509. package/dist/db/schema/projects.js +31 -0
  510. package/dist/db/schema/tables/context-sessions.d.ts +9 -0
  511. package/dist/db/schema/tables/context-sessions.js +37 -0
  512. package/dist/db/schema/tables/conversations.d.ts +9 -0
  513. package/dist/db/schema/tables/conversations.js +47 -0
  514. package/dist/db/schema/tables/core-memory.d.ts +9 -0
  515. package/dist/db/schema/tables/core-memory.js +41 -0
  516. package/dist/db/schema/tables/entities.d.ts +9 -0
  517. package/dist/db/schema/tables/entities.js +39 -0
  518. package/dist/db/schema/tables/entity-relations.d.ts +9 -0
  519. package/dist/db/schema/tables/entity-relations.js +31 -0
  520. package/dist/db/schema/tables/learnings.d.ts +9 -0
  521. package/dist/db/schema/tables/learnings.js +66 -0
  522. package/dist/db/schema/tables/memories.d.ts +9 -0
  523. package/dist/db/schema/tables/memories.js +161 -0
  524. package/dist/db/schema/tables/memory-associations.d.ts +9 -0
  525. package/dist/db/schema/tables/memory-associations.js +39 -0
  526. package/dist/db/schema/tables/memory-hash-cache.d.ts +9 -0
  527. package/dist/db/schema/tables/memory-hash-cache.js +29 -0
  528. package/dist/db/schema/tables/memory-merge-history.d.ts +9 -0
  529. package/dist/db/schema/tables/memory-merge-history.js +33 -0
  530. package/dist/db/schema/tables/memory-merge-proposals.d.ts +9 -0
  531. package/dist/db/schema/tables/memory-merge-proposals.js +39 -0
  532. package/dist/db/schema/tables/messages.d.ts +9 -0
  533. package/dist/db/schema/tables/messages.js +41 -0
  534. package/dist/db/schema/tables/namespaces.d.ts +9 -0
  535. package/dist/db/schema/tables/namespaces.js +37 -0
  536. package/dist/db/schema/tables/projects.d.ts +9 -0
  537. package/dist/db/schema/tables/projects.js +31 -0
  538. package/dist/db/schema/tables/users.d.ts +9 -0
  539. package/dist/db/schema/tables/users.js +27 -0
  540. package/dist/db/schema.d.ts +1 -1
  541. package/dist/db/schema.js +2 -2
  542. package/dist/db/supabase.d.ts +9 -0
  543. package/dist/db/supabase.js +24 -0
  544. package/dist/packages/mcp/src/index.d.ts +3 -0
  545. package/dist/packages/mcp/src/index.js +733 -0
  546. package/mcp.json.example +8 -0
  547. package/package.json +132 -173
  548. package/packages/cli/package.json +22 -0
  549. package/packages/cli/src/commands/clean.ts +68 -0
  550. package/packages/cli/src/commands/context.ts +79 -0
  551. package/packages/cli/src/commands/doctor.ts +357 -0
  552. package/packages/cli/src/commands/forget.ts +72 -0
  553. package/packages/cli/src/commands/health.ts +36 -0
  554. package/packages/cli/src/commands/inspect.ts +41 -0
  555. package/packages/cli/src/commands/link.ts +50 -0
  556. package/packages/cli/src/commands/migrate.ts +93 -0
  557. package/packages/cli/src/commands/recall.ts +99 -0
  558. package/packages/cli/src/commands/recent.ts +57 -0
  559. package/packages/cli/src/commands/remember.ts +139 -0
  560. package/packages/cli/src/commands/run.ts +58 -0
  561. package/packages/cli/src/commands/stale.ts +43 -0
  562. package/packages/cli/src/commands/stats.ts +42 -0
  563. package/packages/cli/src/index.ts +57 -0
  564. package/packages/cli/tsconfig.json +24 -0
  565. package/packages/mcp/package.json +26 -0
  566. package/packages/mcp/src/index.ts +877 -0
  567. package/packages/mcp/tsconfig.json +20 -0
  568. package/skills/squish-memory/SKILL.md +107 -114
  569. package/skills/squish-memory/install.sh +3 -3
  570. package/skills/squish-memory/{claude-desktop.json → references/claude-desktop.json} +12 -12
  571. package/skills/squish-memory/{openclaw.json → references/openclaw.json} +13 -13
  572. package/skills/squish-memory/{opencode.json → references/opencode.json} +14 -14
  573. package/.claude-plugin/marketplace.json +0 -20
  574. package/.claude-plugin/plugin.json +0 -32
  575. package/.env.mcp.example +0 -60
  576. package/.mcp.json +0 -11
  577. package/QUICK-START.md +0 -71
  578. package/bin/squish-add.mjs +0 -32
  579. package/bin/squish-rm.mjs +0 -21
  580. package/commands/context-paging.md +0 -51
  581. package/commands/context-status.md +0 -22
  582. package/commands/context.md +0 -5
  583. package/commands/core-memory.md +0 -56
  584. package/commands/health.md +0 -5
  585. package/commands/init.md +0 -39
  586. package/commands/merge.md +0 -113
  587. package/commands/observe.md +0 -5
  588. package/commands/recall.md +0 -5
  589. package/commands/remember.md +0 -11
  590. package/commands/search.md +0 -10
  591. package/config/mcp-cli-fallback-policy.json +0 -22
  592. package/config/mcp.json +0 -38
  593. package/config/plugin-manifest.json +0 -152
  594. package/config/plugin-manifest.schema.json +0 -244
  595. package/config/remote-memory-policy.json +0 -32
  596. package/dist/api/web/index.d.ts +0 -3
  597. package/dist/api/web/index.js +0 -4
  598. package/dist/api/web/web-server.d.ts +0 -3
  599. package/dist/api/web/web-server.js +0 -6
  600. package/dist/api/web/web.d.ts +0 -4
  601. package/dist/api/web/web.js +0 -639
  602. package/dist/commands/managed-sync.d.ts +0 -10
  603. package/dist/commands/managed-sync.js +0 -64
  604. package/dist/commands/mcp-server.d.ts +0 -3
  605. package/dist/commands/mcp-server.js +0 -393
  606. package/dist/core/context.js +0 -24
  607. package/dist/core/governance.js +0 -64
  608. package/dist/core/local-embeddings.d.ts +0 -6
  609. package/dist/core/local-embeddings.js +0 -20
  610. package/dist/core/namespaces/index.d.ts +0 -71
  611. package/dist/core/namespaces/index.js +0 -305
  612. package/dist/core/namespaces/uri-parser.d.ts +0 -31
  613. package/dist/core/namespaces/uri-parser.js +0 -74
  614. package/dist/core/observations.d.ts +0 -26
  615. package/dist/core/observations.js +0 -110
  616. package/dist/core/requirements.d.ts +0 -20
  617. package/dist/core/requirements.js +0 -35
  618. package/dist/core/search/qmd-search.d.ts +0 -61
  619. package/dist/core/search/qmd-search.js +0 -178
  620. package/dist/core/snapshots.d.ts +0 -29
  621. package/dist/core/snapshots.js +0 -220
  622. package/dist/core/sync/qmd-sync.d.ts +0 -106
  623. package/dist/core/sync/qmd-sync.js +0 -213
  624. package/dist/core/utils.js +0 -74
  625. package/dist/index.d.ts +0 -19
  626. package/dist/index.js +0 -997
  627. package/generated/mcp/manifest.json +0 -23
  628. package/generated/mcp/mcp-servers.json +0 -25
  629. package/generated/mcp/mcporter.json +0 -34
  630. package/generated/mcp/openclaw-memory-qmd.json +0 -17
  631. package/generated/mcp/runtime.json +0 -12
  632. package/hooks/hooks.json +0 -52
  633. package/hooks/post-tool-use.js +0 -26
  634. package/hooks/session-end.js +0 -28
  635. package/hooks/session-start.js +0 -33
  636. package/hooks/user-prompt-submit.js +0 -26
  637. package/hooks/utils.js +0 -153
  638. package/npx-installer.js +0 -208
  639. package/packages/plugin-claude-code/README.md +0 -73
  640. package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +0 -35
  641. package/packages/plugin-claude-code/dist/plugin-wrapper.js +0 -191
  642. package/packages/plugin-claude-code/package.json +0 -31
  643. package/packages/plugin-openclaw/README.md +0 -70
  644. package/packages/plugin-openclaw/dist/index.d.ts +0 -49
  645. package/packages/plugin-openclaw/dist/index.js +0 -262
  646. package/packages/plugin-openclaw/openclaw.plugin.json +0 -94
  647. package/packages/plugin-openclaw/package.json +0 -31
  648. package/packages/plugin-opencode/install.mjs +0 -217
  649. package/packages/plugin-opencode/package.json +0 -21
  650. package/plugin.json +0 -32
  651. package/scripts/build-release.sh +0 -36
  652. package/scripts/check-secrets.js +0 -132
  653. package/scripts/db/check-db.mjs +0 -88
  654. package/scripts/db/fix-all-columns.mjs +0 -52
  655. package/scripts/db/fix-schema-all.mjs +0 -55
  656. package/scripts/db/fix-schema-full.mjs +0 -46
  657. package/scripts/db/fix-schema.mjs +0 -38
  658. package/scripts/db/init-db.mjs +0 -13
  659. package/scripts/db/recreate-db.mjs +0 -14
  660. package/scripts/generate-mcp.mjs +0 -264
  661. package/scripts/github-release.sh +0 -77
  662. package/scripts/init-dirs.mjs +0 -13
  663. package/scripts/install-interactive.mjs +0 -677
  664. package/scripts/install-mcp.mjs +0 -116
  665. package/scripts/install-plugin.mjs +0 -415
  666. package/scripts/install-web.sh +0 -120
  667. package/scripts/install.mjs +0 -340
  668. package/scripts/openclaw-bootstrap.mjs +0 -127
  669. package/scripts/package-release.sh +0 -71
  670. package/scripts/remote-preflight.mjs +0 -62
  671. package/scripts/squish-fallback.mjs +0 -132
  672. package/scripts/test/test-all-systems.mjs +0 -139
  673. package/scripts/test/test-memory-system.mjs +0 -139
  674. package/scripts/test/test-v0.5.0.mjs +0 -210
  675. package/scripts/test-interactive.mjs +0 -131
  676. package/scripts/verify-mcp.mjs +0 -214
  677. package/skills/memory-guide/SKILL.md +0 -332
  678. package/skills/squish-cli/SKILL.md +0 -240
  679. package/skills/squish-mcp/SKILL.md +0 -355
  680. package/skills/squish-memory/install.mjs +0 -335
  681. package/skills/squish-memory/skill.json +0 -32
  682. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.d.ts +0 -0
  683. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.js +0 -0
  684. /package/dist/{algorithms → core/algorithms}/handlers/approve-merge.d.ts +0 -0
  685. /package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.d.ts +0 -0
  686. /package/dist/{algorithms → core/algorithms}/handlers/get-stats.d.ts +0 -0
  687. /package/dist/{algorithms → core/algorithms}/handlers/list-proposals.d.ts +0 -0
  688. /package/dist/{algorithms → core/algorithms}/handlers/preview-merge.d.ts +0 -0
  689. /package/dist/{algorithms → core/algorithms}/handlers/reject-merge.d.ts +0 -0
  690. /package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.d.ts +0 -0
  691. /package/dist/{algorithms → core/algorithms}/safety/safety-checks.js +0 -0
  692. /package/dist/{algorithms → core/algorithms}/utils/response-builder.d.ts +0 -0
  693. /package/dist/{algorithms → core/algorithms}/utils/response-builder.js +0 -0
  694. /package/dist/core/{context.d.ts → context/context.d.ts} +0 -0
  695. /package/dist/core/{agent-memory.d.ts → ingestion/agent-memory.d.ts} +0 -0
  696. /package/dist/core/{privacy.d.ts → security/privacy.d.ts} +0 -0
  697. /package/dist/core/{privacy.js → security/privacy.js} +0 -0
  698. /package/dist/core/{secret-detector.d.ts → security/secret-detector.d.ts} +0 -0
  699. /package/dist/core/{secret-detector.js → security/secret-detector.js} +0 -0
  700. /package/dist/core/{session-hooks → session}/session-hooks.d.ts +0 -0
  701. /package/dist/core/{session-hooks → session}/session-hooks.js +0 -0
  702. /package/dist/core/{cache.d.ts → storage/cache.d.ts} +0 -0
  703. /package/dist/core/{database.d.ts → storage/database.d.ts} +0 -0
  704. /package/dist/core/{database.js → storage/database.js} +0 -0
@@ -0,0 +1,137 @@
1
+ /**
2
+ * UAM Adapter Types
3
+ *
4
+ * Universal Agent Memory - Adapter interfaces for different AI coding agents.
5
+ * Each agent (Claude Code, OpenCode, Cursor, Windsurf, etc.) has its own adapter
6
+ * that defines how to integrate with Squish.
7
+ *
8
+ * Key concepts:
9
+ * - Agent adapters use native config formats where possible
10
+ * - Hooks are explicit (calls squish_learn) not hidden
11
+ * - Uses existing MCP tools (squish_context, squish_learn)
12
+ */
13
+ import { z } from 'zod';
14
+ /** Agent types supported by UAM */
15
+ export type AgentType = 'claude-code' | 'opencode' | 'cursor' | 'windsurf' | 'codex' | 'generic';
16
+ /** Hook event types */
17
+ export type HookEvent = 'onSessionStart' | 'onSessionEnd' | 'onToolCall' | 'onPreCompact' | 'onPostCompact';
18
+ /** 3-Layer depth for progressive disclosure */
19
+ export type TimelineDepth = 'index' | 'timeline' | 'detail';
20
+ /** Memory context for session start */
21
+ export interface SessionContextInput {
22
+ project: string;
23
+ mode: 'startup' | 'resume' | 'compact';
24
+ sessionId?: string;
25
+ }
26
+ export interface SessionContextOutput {
27
+ mode: string;
28
+ project: string;
29
+ memories: string;
30
+ count: number;
31
+ snapshot?: {
32
+ id: string;
33
+ content: string;
34
+ } | null;
35
+ }
36
+ /** Tool call observation */
37
+ export interface ToolObservationInput {
38
+ toolName: string;
39
+ toolInput: Record<string, unknown>;
40
+ toolResult: unknown;
41
+ project: string;
42
+ sessionId?: string;
43
+ }
44
+ export interface ToolObservationOutput {
45
+ memoryId: string;
46
+ category: 'reading' | 'modification' | 'commit' | 'testing' | 'command' | 'search' | 'planning' | 'other';
47
+ content: string;
48
+ }
49
+ /** Agent configuration */
50
+ export interface AgentConfig {
51
+ /** Unique agent identifier */
52
+ agentId: string;
53
+ /** Human-readable name */
54
+ name: string;
55
+ /** Agent type */
56
+ type: AgentType;
57
+ /** MCP server configuration */
58
+ mcp: {
59
+ command: string;
60
+ args: string[];
61
+ env?: Record<string, string>;
62
+ };
63
+ /** Hook patterns (native format for each agent) */
64
+ hooks?: {
65
+ sessionStart?: unknown;
66
+ sessionEnd?: unknown;
67
+ preCompact?: unknown;
68
+ postToolUse?: unknown;
69
+ };
70
+ /** Custom settings */
71
+ settings?: Record<string, unknown>;
72
+ }
73
+ /** Agent adapter interface */
74
+ export interface AgentAdapter {
75
+ /** Unique adapter ID */
76
+ id: string;
77
+ /** Agent type */
78
+ type: AgentType;
79
+ /** Human-readable name */
80
+ name: string;
81
+ /** Agent version (if known) */
82
+ version?: string;
83
+ /** Get session context for injection */
84
+ getSessionContext(input: SessionContextInput): Promise<SessionContextOutput>;
85
+ /** Record a tool observation */
86
+ recordObservation(input: ToolObservationInput): Promise<ToolObservationOutput>;
87
+ /** Get timeline (3-layer progressive disclosure) */
88
+ getTimeline(query: string, depth: TimelineDepth, limit: number): Promise<unknown[]>;
89
+ /** Check if this agent should capture this tool */
90
+ shouldCaptureTool(toolName: string): boolean;
91
+ /** Get raw config for native integration */
92
+ getNativeConfig(): AgentConfig;
93
+ }
94
+ /** Registry for managing adapters */
95
+ export interface AdapterRegistry {
96
+ /** Register a new adapter */
97
+ register(adapter: AgentAdapter): void;
98
+ /** Get adapter by type */
99
+ get(type: AgentType): AgentAdapter | undefined;
100
+ /** List all registered adapters */
101
+ list(): AgentAdapter[];
102
+ /** Load all adapters from config directory */
103
+ loadAll(configDir: string): Promise<void>;
104
+ }
105
+ /** Zod schemas for validation */
106
+ export declare const SessionContextInputSchema: z.ZodObject<{
107
+ project: z.ZodString;
108
+ mode: z.ZodDefault<z.ZodEnum<{
109
+ startup: "startup";
110
+ resume: "resume";
111
+ compact: "compact";
112
+ }>>;
113
+ sessionId: z.ZodOptional<z.ZodString>;
114
+ }, z.core.$strip>;
115
+ export declare const ToolObservationInputSchema: z.ZodObject<{
116
+ toolName: z.ZodString;
117
+ toolInput: z.ZodRecord<z.ZodString, z.ZodUnknown>;
118
+ toolResult: z.ZodUnknown;
119
+ project: z.ZodString;
120
+ sessionId: z.ZodOptional<z.ZodString>;
121
+ }, z.core.$strip>;
122
+ export declare const TimelineInputSchema: z.ZodObject<{
123
+ query: z.ZodString;
124
+ depth: z.ZodDefault<z.ZodEnum<{
125
+ index: "index";
126
+ timeline: "timeline";
127
+ detail: "detail";
128
+ }>>;
129
+ limit: z.ZodDefault<z.ZodNumber>;
130
+ }, z.core.$strip>;
131
+ /** Tool category mapping */
132
+ export declare const TOOL_CATEGORIES: Record<string, ToolObservationOutput['category']>;
133
+ /**
134
+ * Categorize a tool call
135
+ */
136
+ export declare function categorizeTool(toolName: string): ToolObservationOutput['category'];
137
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,50 @@
1
+ /**
2
+ * UAM Adapter Types
3
+ *
4
+ * Universal Agent Memory - Adapter interfaces for different AI coding agents.
5
+ * Each agent (Claude Code, OpenCode, Cursor, Windsurf, etc.) has its own adapter
6
+ * that defines how to integrate with Squish.
7
+ *
8
+ * Key concepts:
9
+ * - Agent adapters use native config formats where possible
10
+ * - Hooks are explicit (calls squish_learn) not hidden
11
+ * - Uses existing MCP tools (squish_context, squish_learn)
12
+ */
13
+ import { z } from 'zod';
14
+ /** Zod schemas for validation */
15
+ export const SessionContextInputSchema = z.object({
16
+ project: z.string(),
17
+ mode: z.enum(['startup', 'resume', 'compact']).default('startup'),
18
+ sessionId: z.string().optional(),
19
+ });
20
+ export const ToolObservationInputSchema = z.object({
21
+ toolName: z.string(),
22
+ toolInput: z.record(z.string(), z.unknown()),
23
+ toolResult: z.unknown(),
24
+ project: z.string(),
25
+ sessionId: z.string().optional(),
26
+ });
27
+ export const TimelineInputSchema = z.object({
28
+ query: z.string(),
29
+ depth: z.enum(['index', 'timeline', 'detail']).default('index'),
30
+ limit: z.number().min(1).max(100).default(10),
31
+ });
32
+ /** Tool category mapping */
33
+ export const TOOL_CATEGORIES = {
34
+ 'Read': 'reading',
35
+ 'Write': 'modification',
36
+ 'Edit': 'modification',
37
+ 'Bash': 'command',
38
+ 'grep': 'search',
39
+ 'Glob': 'search',
40
+ 'TodoWrite': 'planning',
41
+ 'TodoRead': 'planning',
42
+ 'Task': 'planning',
43
+ };
44
+ /**
45
+ * Categorize a tool call
46
+ */
47
+ export function categorizeTool(toolName) {
48
+ return TOOL_CATEGORIES[toolName] || 'other';
49
+ }
50
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Agent Preferences - Accumulate and retrieve agent preferences from learnings
3
+ * Enables agents to learn and evolve over time
4
+ */
5
+ /**
6
+ * Update agent preference from a learning
7
+ */
8
+ export declare function updateAgentPreference(projectId: string, content: string, sourceMemoryId?: string): Promise<void>;
9
+ /**
10
+ * Get all agent preferences for a project
11
+ */
12
+ export declare function getAgentPreferences(projectId: string): Promise<Array<{
13
+ key: string;
14
+ value: string;
15
+ }>>;
16
+ //# sourceMappingURL=agent-preferences.d.ts.map
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Agent Preferences - Accumulate and retrieve agent preferences from learnings
3
+ * Enables agents to learn and evolve over time
4
+ */
5
+ import { getDb } from '../db/index.js';
6
+ import { eq, and } from 'drizzle-orm';
7
+ import { logger } from './logger.js';
8
+ /**
9
+ * Extract preference from learning content
10
+ * E.g., "Prefer bun over npm" -> key: "prefer_bun", value: "bun"
11
+ */
12
+ function extractPreference(content) {
13
+ const patterns = [
14
+ // "Prefer X over Y"
15
+ /prefer\s+(\w+)\s+over\s+(\w+)/i,
16
+ // "Always use X"
17
+ /always\s+use\s+(\w+)/i,
18
+ // "Use X instead of Y"
19
+ /use\s+(\w+)\s+instead\s+of\s+(\w+)/i,
20
+ // "X is better than Y"
21
+ /(\w+)\s+is\s+better\s+than\s+(\w+)/i,
22
+ // "Don't use X"
23
+ /(?:don't|do not|never)\s+use\s+(\w+)/i,
24
+ ];
25
+ for (const pattern of patterns) {
26
+ const match = content.match(pattern);
27
+ if (match) {
28
+ const key = `prefer_${match[1].toLowerCase()}`;
29
+ const value = match[2]?.toLowerCase() || 'true';
30
+ return { key, value };
31
+ }
32
+ }
33
+ return null;
34
+ }
35
+ /**
36
+ * Update agent preference from a learning
37
+ */
38
+ export async function updateAgentPreference(projectId, content, sourceMemoryId) {
39
+ const preference = extractPreference(content);
40
+ if (!preference)
41
+ return;
42
+ try {
43
+ const db = getDb();
44
+ // Check if preference exists
45
+ const existing = await db.query.agentPreferences?.findFirst(and(eq(db.schema.agentPreferences.projectId, projectId), eq(db.schema.agentPreferences.key, preference.key))).catch(() => null);
46
+ if (existing) {
47
+ // Update existing preference
48
+ await db.update(db.schema.agentPreferences)
49
+ .set({
50
+ value: preference.value,
51
+ sourceMemoryId: sourceMemoryId,
52
+ usageCount: (existing.usageCount ?? 0) + 1,
53
+ lastUpdated: Math.floor(Date.now() / 1000)
54
+ })
55
+ .where(eq(db.schema.agentPreferences.id, existing.id))
56
+ .catch(() => {
57
+ // Fallback for SQLite which uses different table name
58
+ const sqlite = db._?.sqlite || db;
59
+ if (sqlite) {
60
+ sqlite.prepare(`
61
+ UPDATE agent_preferences
62
+ SET value = ?, source_memory_id = ?, usage_count = usage_count + 1, last_updated = ?
63
+ WHERE project_id = ? AND key = ?
64
+ `).run(preference.value, sourceMemoryId, Math.floor(Date.now() / 1000), projectId, preference.key);
65
+ }
66
+ });
67
+ logger.info(`[AgentPrefs] Updated preference: ${preference.key} = ${preference.value}`);
68
+ }
69
+ else {
70
+ // Insert new preference
71
+ const id = `pref_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
72
+ await db.insert(db.schema.agentPreferences)
73
+ .values({
74
+ id,
75
+ projectId,
76
+ key: preference.key,
77
+ value: preference.value,
78
+ sourceMemoryId: sourceMemoryId ?? null,
79
+ confidence: 0.5,
80
+ usageCount: 1
81
+ })
82
+ .catch(() => {
83
+ // Fallback for SQLite
84
+ const sqlite = db._?.sqlite || db;
85
+ if (sqlite) {
86
+ sqlite.prepare(`
87
+ INSERT INTO agent_preferences (id, project_id, key, value, source_memory_id, confidence, usage_count)
88
+ VALUES (?, ?, ?, ?, ?, 0.5, 1)
89
+ `).run(id, projectId, preference.key, preference.value, sourceMemoryId ?? null);
90
+ }
91
+ });
92
+ logger.info(`[AgentPrefs] Created preference: ${preference.key} = ${preference.value}`);
93
+ }
94
+ }
95
+ catch (error) {
96
+ logger.warn(`[AgentPrefs] Failed to update preference:`, error);
97
+ }
98
+ }
99
+ /**
100
+ * Get all agent preferences for a project
101
+ */
102
+ export async function getAgentPreferences(projectId) {
103
+ try {
104
+ const db = getDb();
105
+ const results = await db.query.agentPreferences?.findMany({
106
+ where: eq(db.schema.agentPreferences.projectId, projectId)
107
+ }).catch(() => []);
108
+ if (results && results.length > 0) {
109
+ return results.map(p => ({ key: p.key, value: p.value }));
110
+ }
111
+ // Fallback for SQLite
112
+ const sqlite = db._?.sqlite || db;
113
+ if (sqlite) {
114
+ const rows = sqlite.prepare('SELECT key, value FROM agent_preferences WHERE project_id = ?').all(projectId);
115
+ return rows.map(r => ({ key: r.key, value: r.value }));
116
+ }
117
+ return [];
118
+ }
119
+ catch (error) {
120
+ logger.warn(`[AgentPrefs] Failed to get preferences:`, error);
121
+ return [];
122
+ }
123
+ }
124
+ //# sourceMappingURL=agent-preferences.js.map
@@ -2,7 +2,7 @@
2
2
  * Token estimation for calculating context window savings from merges.
3
3
  * Uses simple heuristic: 1 token ≈ 4 characters (can be upgraded to tiktoken for accuracy).
4
4
  */
5
- import type { Memory } from '../../drizzle/schema.js';
5
+ import type { Memory } from '../../../db/drizzle/schema.js';
6
6
  import type { MergedMemory } from '../strategies/merge-strategies.js';
7
7
  export declare function estimateTokensSaved(sources: Memory[], merged: MergedMemory): number;
8
8
  export declare function calculateProjectTokenSavings(projectId: string): Promise<{
@@ -2,9 +2,9 @@
2
2
  * Token estimation for calculating context window savings from merges.
3
3
  * Uses simple heuristic: 1 token ≈ 4 characters (can be upgraded to tiktoken for accuracy).
4
4
  */
5
- import { getDb } from '../../db/index.js';
6
- import { getSchema } from '../../db/schema.js';
7
- import { createDatabaseClient } from '../../core/database.js';
5
+ import { getDb } from '../../../db/index.js';
6
+ import { getSchema } from '../../../db/schema.js';
7
+ import { createDatabaseClient } from '../../../core/storage/database.js';
8
8
  import { eq } from 'drizzle-orm';
9
9
  function estimateTokensSimple(text) {
10
10
  if (!text)
@@ -2,7 +2,7 @@
2
2
  * Semantic ranking using embeddings (Stage 2 of two-stage detection).
3
3
  * Ranks candidates from Stage 1 by semantic similarity using cosine distance.
4
4
  */
5
- import type { Memory } from '../../drizzle/schema.js';
5
+ import type { Memory } from '../../../db/drizzle/schema.js';
6
6
  export interface RankedCandidate {
7
7
  memoryId1: string;
8
8
  memoryId2: string;
@@ -2,7 +2,7 @@
2
2
  * Semantic ranking using embeddings (Stage 2 of two-stage detection).
3
3
  * Ranks candidates from Stage 1 by semantic similarity using cosine distance.
4
4
  */
5
- import { cosineSimilarity } from '../../core/local-embeddings.js';
5
+ import { cosineSimilarity } from '../../../core/utils/vector-operations.js';
6
6
  function calculateConfidence(memory1, memory2, cosineSim) {
7
7
  if (cosineSim >= 0.90) {
8
8
  const factors = calculateConfidenceFactors(memory1, memory2);
@@ -4,7 +4,7 @@
4
4
  * Stage 1: Hash-based prefiltering (SimHash + MinHash)
5
5
  * Stage 2: Semantic ranking using embeddings
6
6
  */
7
- import type { Memory, MemoryType } from '../../drizzle/schema.js';
7
+ import type { Memory, MemoryType } from '../../../db/drizzle/schema.js';
8
8
  import { analyzePair } from './semantic-ranker.js';
9
9
  export interface MemoryPair {
10
10
  memory1: Memory;
@@ -4,18 +4,15 @@
4
4
  * Stage 1: Hash-based prefiltering (SimHash + MinHash)
5
5
  * Stage 2: Semantic ranking using embeddings
6
6
  */
7
- import { getEmbedding, getBatchEmbeddings } from '../../core/embeddings.js';
7
+ import { getEmbedding, getBatchEmbeddings } from '../../../core/embeddings.js';
8
8
  import { SimHashFilter, MinHashFilter, findCandidatePairs } from './hash-filters.js';
9
9
  import { rankCandidates, analyzePair } from './semantic-ranker.js';
10
- import { getDb } from '../../db/index.js';
11
- import { getSchema } from '../../db/schema.js';
12
- import { createDatabaseClient } from '../../core/database.js';
13
10
  import { eq, and } from 'drizzle-orm';
14
11
  import * as crypto from 'crypto';
12
+ import { getDbClient } from '../../../core/lib/db-client.js';
15
13
  export async function detectDuplicates(options) {
16
14
  const startTime = Date.now();
17
- const db = createDatabaseClient(await getDb());
18
- const schema = await getSchema();
15
+ const { db, schema } = await getDbClient();
19
16
  let query = db.select().from(schema.memories);
20
17
  if (options.projectId) {
21
18
  query = query.where(eq(schema.memories.projectId, options.projectId));
@@ -239,8 +236,7 @@ export async function detectDuplicates(options) {
239
236
  };
240
237
  }
241
238
  export async function analyzeMergePair(memoryId1, memoryId2) {
242
- const db = createDatabaseClient(await getDb());
243
- const schema = await getSchema();
239
+ const { db, schema } = await getDbClient();
244
240
  const [memory1] = await db
245
241
  .select()
246
242
  .from(schema.memories)
@@ -271,6 +267,8 @@ function countByType(memories) {
271
267
  decision: 0,
272
268
  context: 0,
273
269
  preference: 0,
270
+ reflection: 0,
271
+ note: 0,
274
272
  };
275
273
  for (const memory of memories) {
276
274
  const type = memory.type;
@@ -281,8 +279,7 @@ function countByType(memories) {
281
279
  return counts;
282
280
  }
283
281
  export async function getDetectionStats(projectId) {
284
- const db = createDatabaseClient(await getDb());
285
- const schema = await getSchema();
282
+ const { db, schema } = await getDbClient();
286
283
  const memories = await db
287
284
  .select()
288
285
  .from(schema.memories)
@@ -2,13 +2,13 @@
2
2
  * Executes the approved merge in a single atomic transaction.
3
3
  */
4
4
  import { randomUUID } from 'crypto';
5
- import { getDb } from '../../db/index.js';
6
- import { getSchema } from '../../db/schema.js';
7
- import { createDatabaseClient } from '../../core/database.js';
5
+ import { getDb } from '../../../db/index.js';
6
+ import { getSchema } from '../../../db/schema.js';
7
+ import { createDatabaseClient } from '../../../core/storage/database.js';
8
8
  import { eq, inArray } from 'drizzle-orm';
9
9
  import { mergeMemories } from '../strategies/merge-strategies.js';
10
10
  import { estimateTokensSaved } from '../analytics/token-estimator.js';
11
- import { getEmbedding } from '../../core/embeddings.js';
11
+ import { getEmbedding } from '../../../core/embeddings.js';
12
12
  export async function handleApproveMerge(input) {
13
13
  try {
14
14
  const { proposalId, reviewNotes } = input;
@@ -9,9 +9,9 @@ import { detectDuplicates } from '../detection/two-stage-detector.js';
9
9
  import { runSafetyChecks } from '../safety/safety-checks.js';
10
10
  import { mergeMemories } from '../strategies/merge-strategies.js';
11
11
  import { estimateTokensSaved } from '../analytics/token-estimator.js';
12
- import { getDb } from '../../db/index.js';
13
- import { getSchema } from '../../db/schema.js';
14
- import { createDatabaseClient } from '../../core/database.js';
12
+ import { getDb } from '../../../db/index.js';
13
+ import { getSchema } from '../../../db/schema.js';
14
+ import { createDatabaseClient } from '../../../core/storage/database.js';
15
15
  import { buildSuccessResponse, buildErrorResponse } from '../utils/response-builder.js';
16
16
  /**
17
17
  * Handle detect_duplicate_memories tool call
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Returns statistics about memory merges for a project
5
5
  */
6
- import { getDb } from '../../db/index.js';
7
- import { getSchema } from '../../db/schema.js';
8
- import { createDatabaseClient } from '../../core/database.js';
6
+ import { getDb } from '../../../db/index.js';
7
+ import { getSchema } from '../../../db/schema.js';
8
+ import { createDatabaseClient } from '../../../core/storage/database.js';
9
9
  import { eq } from 'drizzle-orm';
10
10
  import { calculateProjectTokenSavings, formatTokenCount } from '../analytics/token-estimator.js';
11
11
  /**
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Lists pending merge proposals for user review
5
5
  */
6
- import { getDb } from '../../db/index.js';
7
- import { getSchema } from '../../db/schema.js';
8
- import { createDatabaseClient } from '../../core/database.js';
6
+ import { getDb } from '../../../db/index.js';
7
+ import { getSchema } from '../../../db/schema.js';
8
+ import { createDatabaseClient } from '../../../core/storage/database.js';
9
9
  import { eq, desc } from 'drizzle-orm';
10
10
  /**
11
11
  * Handle list_merge_proposals tool call
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Shows a preview of the merged result without executing the merge.
3
3
  */
4
- import { getDb } from '../../db/index.js';
5
- import { getSchema } from '../../db/schema.js';
6
- import { createDatabaseClient } from '../../core/database.js';
4
+ import { getDb } from '../../../db/index.js';
5
+ import { getSchema } from '../../../db/schema.js';
6
+ import { createDatabaseClient } from '../../../core/storage/database.js';
7
7
  import { eq } from 'drizzle-orm';
8
8
  import { estimateMergeSavingsPreview } from '../analytics/token-estimator.js';
9
9
  import { mergeMemories } from '../strategies/merge-strategies.js';
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Rejects a merge proposal without executing it
5
5
  */
6
- import { getDb } from '../../db/index.js';
7
- import { getSchema } from '../../db/schema.js';
8
- import { createDatabaseClient } from '../../core/database.js';
6
+ import { getDb } from '../../../db/index.js';
7
+ import { getSchema } from '../../../db/schema.js';
8
+ import { createDatabaseClient } from '../../../core/storage/database.js';
9
9
  import { eq } from 'drizzle-orm';
10
10
  /**
11
11
  * Handle reject_merge tool call
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Reverses/undoes a completed merge and restores original memories.
3
3
  */
4
- import { getDb } from '../../db/index.js';
5
- import { getSchema } from '../../db/schema.js';
6
- import { createDatabaseClient } from '../../core/database.js';
4
+ import { getDb } from '../../../db/index.js';
5
+ import { getSchema } from '../../../db/schema.js';
6
+ import { createDatabaseClient } from '../../../core/storage/database.js';
7
7
  import { eq } from 'drizzle-orm';
8
8
  export async function handleReverseMerge(input) {
9
9
  try {
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Memory Merging Feature - Barrel Exports
3
+ *
4
+ * Provides a clean public API for memory merging functionality
5
+ */
6
+ export * from './types.js';
7
+ export { detectDuplicates, analyzeMergePair, getDetectionStats } from './detection/two-stage-detector.js';
8
+ export { SimHashFilter, MinHashFilter, findCandidatePairs } from './detection/hash-filters.js';
9
+ export { rankCandidates, analyzePair } from './detection/semantic-ranker.js';
10
+ export { getMergeStrategy, mergeMemories, MERGE_STRATEGIES } from './strategies/merge-strategies.js';
11
+ export type { MergeStrategy, MergedMemory } from './strategies/merge-strategies.js';
12
+ export { runSafetyChecks, checkBlockers, formatSafetyResults, describeSafetyChecks } from './safety/safety-checks.js';
13
+ export { estimateTokensSaved, calculateProjectTokenSavings, estimateMergeSavingsPreview, getTokenStatistics, formatTokenCount, formatSavingsReport, } from './analytics/token-estimator.js';
14
+ export { handleDetectDuplicates } from './handlers/detect-duplicates.js';
15
+ export { handleListProposals } from './handlers/list-proposals.js';
16
+ export { handlePreviewMerge } from './handlers/preview-merge.js';
17
+ export { handleApproveMerge } from './handlers/approve-merge.js';
18
+ export { handleRejectMerge } from './handlers/reject-merge.js';
19
+ export { handleReverseMerge } from './handlers/reverse-merge.js';
20
+ export { handleGetMergeStats } from './handlers/get-stats.js';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Memory Merging Feature - Barrel Exports
3
+ *
4
+ * Provides a clean public API for memory merging functionality
5
+ */
6
+ // Types
7
+ export * from './types.js';
8
+ // Detection
9
+ export { detectDuplicates, analyzeMergePair, getDetectionStats } from './detection/two-stage-detector.js';
10
+ export { SimHashFilter, MinHashFilter, findCandidatePairs } from './detection/hash-filters.js';
11
+ export { rankCandidates, analyzePair } from './detection/semantic-ranker.js';
12
+ // Merge Strategies
13
+ export { getMergeStrategy, mergeMemories, MERGE_STRATEGIES } from './strategies/merge-strategies.js';
14
+ // Safety
15
+ export { runSafetyChecks, checkBlockers, formatSafetyResults, describeSafetyChecks } from './safety/safety-checks.js';
16
+ // Analytics & Tokens
17
+ export { estimateTokensSaved, calculateProjectTokenSavings, estimateMergeSavingsPreview, getTokenStatistics, formatTokenCount, formatSavingsReport, } from './analytics/token-estimator.js';
18
+ // Handlers (MCP Tools)
19
+ export { handleDetectDuplicates } from './handlers/detect-duplicates.js';
20
+ export { handleListProposals } from './handlers/list-proposals.js';
21
+ export { handlePreviewMerge } from './handlers/preview-merge.js';
22
+ export { handleApproveMerge } from './handlers/approve-merge.js';
23
+ export { handleRejectMerge } from './handlers/reject-merge.js';
24
+ export { handleReverseMerge } from './handlers/reverse-merge.js';
25
+ export { handleGetMergeStats } from './handlers/get-stats.js';
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Hash cache maintenance - SimHash/MinHash signatures for duplicate detection
3
+ */
4
+ export declare function updateCache(memoryId: string): Promise<boolean>;
5
+ export declare function rebuildCache(projectId: string): Promise<{
6
+ processed: number;
7
+ succeeded: number;
8
+ failed: number;
9
+ }>;
10
+ export declare function isStale(memoryId: string): Promise<boolean>;
11
+ export declare function cleanupOrphaned(projectId: string): Promise<number>;
12
+ //# sourceMappingURL=cache-maintenance.d.ts.map