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
package/README.md CHANGED
@@ -1,368 +1,273 @@
1
- # Squish - Universal Two-Tier Memory for AI Agents
1
+ # Squish - Memory Runtime for AI Agents
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/squish-memory)](https://www.npmjs.com/package/squish-memory)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/squish-memory)](https://www.npmjs.com/package/squish-memory)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
7
7
 
8
- **Squish gives any AI agent persistent, intelligent memory through a two-tier architecture.** Without memory, agents forget everything between sessions. With Squish, they learn, adapt, and get smarter over time - regardless of which agent framework you use.
8
+ **Your agent forgets. Squish fixes that.** It auto-captures useful context, derives durable beliefs like decisions and constraints, and restores that context through CLI, MCP, and a local web UI.
9
+
10
+ > Squish does not have a crypto token, has no token launch planned, and nobody is authorized to launch one on behalf of the project.
9
11
 
10
12
  ```bash
11
- npm install squish-memory
13
+ bun add squish-memory
12
14
  ```
13
15
 
14
- **Works out-of-the-box.** No database setup required - local TF-IDF embeddings work instantly. Upgrade to vector search with OpenAI/Ollama when ready.
15
-
16
- ## Why Agents Need Memory
16
+ ## Why Squish
17
17
 
18
18
  | Without Squish | With Squish |
19
19
  |----------------|-------------|
20
- | Forgets after every session | Remembers across sessions |
20
+ | Forgets everything after session | Remembers across sessions |
21
21
  | Repeats the same mistakes | Learns from past decisions |
22
- | No context awareness | Builds project understanding |
23
- | Can't track preferences | Adapts to user style |
22
+ | No project awareness | Builds understanding over time |
23
+ | Can't track preferences | Adapts to your style |
24
24
 
25
- ## How It Works
25
+ ## What It Does
26
26
 
27
- Squish uses a two-tier memory architecture for optimal performance:
28
- - **Short-term Memory (QMD)**: Lightning-fast file-based search using QMD (BM25 + vector). Instant recall, optimized for recent/active context.
29
- - **Long-term Memory (Database)**: SQLite (local) or PostgreSQL (team) for durable, searchable storage of important memories.
27
+ Squish is a forward-only memory runtime for agents:
30
28
 
31
- ```
32
- Agent Action -----> [Squish Memory Layer]
33
- |
34
- v
35
- ┌──────────────┐
36
- │ Trigger │ <-- "remember this", "important"
37
- │ Detection │
38
- └──────────────┘
39
- |
40
- v
41
- ┌──────────────┐
42
- │ Write Gate │ <-- Validate, sanitize, score
43
- └──────────────┘
44
- |
45
- ┌───────────────┴───────────────┐
46
- v v
47
- ┌──────────────┐ ┌──────────────┐
48
- │ Short-term │ │ Long-term │
49
- │ QMD (Files) │ │ SQLite/PG │
50
- │ Fast recall │ │ Persistent │
51
- └──────────────┘ └──────────────┘
52
- | |
53
- v v
54
- ┌──────────────────────────────────────────┐
55
- │ Hybrid Retrieval: QMD + Vector Ranking │
56
- └──────────────────────────────────────────┘
57
- |
58
- v
59
- Agent Context
60
- ```
61
-
62
- ## Key Features
29
+ - **Auto-capture** stores durable signal without relying on the model to remember to save it.
30
+ - **Belief derivation** turns memories into decisions, constraints, and preferences that can change future behavior.
31
+ - **Context restore** gives a restarted agent the relevant state instead of a cold start.
32
+ - **Inspection surfaces** let you see what was stored, what belief was derived, and why it was injected back.
63
33
 
64
- ### Memory Intelligence
65
- - **Trigger Detection**: Auto-detects "remember", "important", corrections
66
- - **Contradiction Resolution**: Auto-updates when facts change
67
- - **Temporal Facts**: Handles time-bound information ("until January")
68
- - **Confidence Scoring**: Knows how reliable each memory is
34
+ Under the hood, Squish uses a hybrid memory pipeline for signal quality, persistence, and wake-up continuity:
69
35
 
70
- ### Retrieval Quality
71
- - **Hybrid Search**: Vector + keyword (BM25) with fusion
72
- - **Multi-factor Ranking**: Semantic, recency, importance, confidence
73
- - **Telemetry**: Tracks which memories are actually useful
36
+ ```
37
+ User Action ──► Signal Distillation ──► Write Gate ──► Session Working Set
38
+
39
+ ├─ Durable Distilled Memory
40
+ ├─ Raw Fallback Snapshot
41
+ └─ SQLite/Postgres + Hybrid Retrieval
42
+ ```
74
43
 
75
- ### Agent Safety
76
- - **Write Gate**: Validates content before storage
77
- - **Secret Detection**: Auto-redacts API keys, passwords
78
- - **Graceful Degradation**: Works even when database fails
44
+ - **Signal distillation**: Squish suppresses noisy output, keeps session-only context local, and only promotes durable signal.
45
+ - **Session working set**: Active files, recent commands, failures, hypotheses, active places, and small graph cues are compacted for the next wake-up.
46
+ - **Places**: Durable memories are routed into spatial buckets like `WIP`, `Sandbox`, `Board`, and `Ref` for segmented retrieval.
47
+ - **Graph enrichment**: Durable memories strengthen entity and relationship structure used by retrieval scoring.
48
+ - **Durable memory**: Stable facts, corrections, decisions, and fixes are stored for long-term retrieval.
49
+ - **Raw fallback**: Nuance-sensitive output can keep an internal raw artifact for inspection without polluting normal context.
79
50
 
80
51
  ## Quick Start
81
52
 
82
- ### Simple Example
83
- ```bash
84
- # Store a memory
85
- squish remember "User prefers TypeScript"
86
-
87
- # Search memories
88
- squish search "preferences"
89
-
90
- # Check health
91
- squish health
92
- ```
53
+ ### Install with add-mcp (Recommended)
54
+ One command installs Squish into Claude Code, OpenCode, Cursor, VS Code, Codex, and other MCP-capable clients:
93
55
 
94
- ### Universal Plugin Installer (Recommended)
95
56
  ```bash
96
- # Install for your AI assistant(s)
97
- npx squish-memory install-plugin --client=claude-code # Claude Code
98
- npx squish-memory install-plugin --client=openclaw # OpenClaw
99
- npx squish-memory install-plugin --client=opencode # OpenCode
100
- npx squish-memory install-plugin --client=all # All supported clients
101
-
102
- # Verify installation
103
- npx squish-memory install-plugin --client=claude-code --verify
57
+ npx add-mcp squish-memory
104
58
  ```
105
59
 
106
- ### For Claude Code (Plugin) - Legacy Method
107
- ```bash
108
- # Install from marketplace
109
- /plugin marketplace add https://github.com/michielhdoteth/squish.git
110
- /plugin install squish@michielhdoteth-squish
111
- ```
60
+ Or install the package directly:
112
61
 
113
- ### For OpenClaw (npm) - Legacy Method
114
62
  ```bash
115
- npm install -g squish-memory
63
+ bun add squish-memory
116
64
  ```
117
65
 
118
- Add to your OpenClaw MCP config - done.
66
+ New installs should work on first run with the current schema. If you are upgrading an older local install, use `squish doctor --migrate` to repair it forward.
119
67
 
120
- ### Universal CLI
121
- ```bash
122
- # Works with any agent framework
123
- squish remember "User prefers TypeScript"
124
- squish search "preferences"
125
- squish health
126
- ```
68
+ Most memory behavior is automatic once Squish is installed. The CLI remains available for explicit saves, inspection, diagnostics, and one-command demos:
127
69
 
128
- ### Universal API
129
70
  ```bash
130
- # Start the universal HTTP server
131
- bun run universal:server
132
-
133
- # Add memory via HTTP (stored in both QMD index and SQLite)
134
- curl -X POST http://localhost:3000/api/memories \
135
- -H "Content-Type: application/json" \
136
- -d '{"content": "User prefers TypeScript", "type": "preference", "container": "my-project"}'
137
-
138
- # Search memories via HTTP (uses QMD for fast hybrid search)
139
- curl "http://localhost:3000/api/memories/search?q=TypeScript"
140
- ```
141
-
142
- **That's it.** One install, persistent memory for any AI agent.
143
-
144
- ## MCP Tools for Agents
71
+ # Zero-touch demo: show current project context and derived beliefs
72
+ squish context --json
145
73
 
146
- | Tool | What It Does |
147
- |------|--------------|
148
- | `remember` | Store a memory |
149
- | `search` | Find relevant memories |
150
- | `recall` | Get specific memory by ID |
151
- | `core_memory` | Always-visible context (persona, user info) |
152
- | `context` | Get project-relevant memories |
153
- | `observe` | Record patterns from tool usage |
74
+ # Explicit save when you want to pin something intentionally
75
+ squish remember "We chose PostgreSQL for team mode" --type decision
154
76
 
155
- ## Execution Model
77
+ # Inspect why a memory exists and which beliefs it supports
78
+ squish inspect <memory-id> --json
156
79
 
157
- - **Universal First**: Works with any AI agent via MCP, CLI, or HTTP API
158
- - **Transport Agnostic**: MCP (stdio/SSE), CLI, or HTTP/WebSocket - choose your preference
159
- - **Storage Flexible**: SQLite for local, PostgreSQL for team deployments
160
-
161
- ## Universal Plugin Architecture
162
-
163
- Squish now provides a **universal plugin system** that works as a plugin across all major AI assistant frameworks through a single manifest-driven installer.
164
-
165
- ### How It Works
166
- 1. Single `plugin-manifest.json` defines the plugin for all clients
167
- 2. `npx squish-memory install-plugin --client=<target>` handles installation
168
- 3. Auto-installs dependencies (mcporter, qmd) with pinned versions
169
- 4. Generates client-specific configurations automatically
170
- 5. Provides unified verification and troubleshooting
171
-
172
- ### Supported Clients
173
- | Client | Installation Method | Status |
174
- |--------|-------------------|---------|
175
- | Claude Code | Plugin hooks (.claude-plugin/) | ✅ Stable |
176
- | OpenClaw | Memory slot via MCP bridge | ✅ Stable |
177
- | OpenCode | MCP server config | ✅ Stable |
178
- | Codex | MCP server config | ✅ Stable |
179
- | Cursor | MCP server config | ✅ Beta |
180
- | VS Code | MCP server config | ✅ Beta |
181
- | Windsurf | MCP server config | ✅ Beta |
182
-
183
- ### Quick Installation Examples
184
- ```bash
185
- # Install for Claude Code (recommended for Claude users)
186
- npx squish-memory install-plugin --client=claude-code --verify
187
-
188
- # Install for OpenClaw (recommended for OpenClaw users)
189
- npx squish-memory install-plugin --client=openclaw --verify
190
-
191
- # Install for all supported clients
192
- npx squish-memory install-plugin --client=all --verify
193
-
194
- # Install for multiple specific clients
195
- npx squish-memory install-plugin --client=claude-code,openclaw,opencode --verify
80
+ # Repair an older install forward if local schema drifted
81
+ squish doctor --json --migrate
196
82
  ```
197
83
 
198
- ### Benefits
199
- - **One manifest to rule them all**: Single source of truth
200
- - **Zero manual configuration**: Automatic dependency installation
201
- - **Version pinned dependencies**: Stable, reproducible builds
202
- - **Unified verification**: One command to check all clients
203
- - **Backward compatible**: Existing integrations still work
204
-
205
- ## Universal API
206
-
207
- Squish now provides a universal HTTP API that works with any AI agent:
208
-
209
- ```typescript
210
- // Add memory via HTTP
211
- POST /api/memories
212
- {
213
- "content": "User prefers TypeScript",
214
- "type": "preference",
215
- "container": "my-project",
216
- "tags": ["preferences", "coding-style"]
217
- }
218
-
219
- // Search memories via HTTP
220
- GET /api/memories/search?query=TypeScript&limit=10
221
- ```
222
-
223
- **Universal Benefits:**
224
- - Works with any AI agent (Claude, OpenAI, Anthropic, custom)
225
- - HTTP RESTful API + WebSocket for real-time sync
226
- - PostgreSQL + pgvector for scalable memory
227
- - Docker-ready for easy deployment
228
-
229
- ### Docker Deployment
84
+ Or use the other shipped surfaces directly:
230
85
 
231
86
  ```bash
232
- # Quick start with Docker Compose
233
- docker-compose -f docker-compose.universal.yml up
87
+ # MCP health check / manual startup surface
88
+ squish-mcp --health
234
89
 
235
- # Or deploy to cloud
236
- docker build -t squish-universal .
237
- docker run -p 3000:3000 squish-universal
90
+ # Local web UI
91
+ squish run web
238
92
  ```
239
93
 
240
- ## Open-Core Model
94
+ ## Features
241
95
 
242
- - **OSS Core (MIT)**: local mode, self-hosted workflows, MCP/CLI tooling
243
- - **Commercial Remote**: managed remote control plane, enterprise ops, support
244
- - **Universal API**: HTTP REST + WebSocket for any AI agent
245
- - **Sponsor development**: https://github.com/sponsors/michielhdoteth
96
+ ### Memory Intelligence
97
+ - Auto-detects "remember this", "important", corrections
98
+ - Distills noisy tool output before durable writes
99
+ - Splits events into discarded, session-only, durable, and durable-with-raw-fallback paths
100
+ - Handles contradictions when facts change
101
+ - Temporal facts with expiration ("until January")
102
+ - Confidence scoring for each memory
103
+ - **Memory Runtime**: Hot/cold memory lifecycle with automatic decay (hot=active, cold=archived)
104
+ - **Graph-boosted retrieval**: associations between memories boost relevance
105
+ - **Belief System**: Derived semantic layer - decisions, preferences, constraints extracted from memories
106
+ - **Persistent Hot Cache**: Karpathy-style wiki layer that survives restarts (not just session)
107
+ - **Scheduler Resilience**: Jobs catch up after machine sleep/wake - no missed maintenance
108
+
109
+ ### Retrieval Quality
110
+ - Session wake-up uses compacted working-set context before broad recall
111
+ - Place context remains attached to retrieved memories and can shape context selection
112
+ - Hybrid search: semantic + keyword (BM25) with Reciprocal Rank Fusion
113
+ - Multi-factor ranking: relevance, recency, importance, graph-boost
114
+ - LLM-powered context extraction with Ollama (local)
115
+ - **Graph associations**: memories linked by coactivation boost search results
116
+
117
+ ### Security & Encryption
118
+ - **Client-side encryption**: AES-256-GCM encryption for sensitive memories
119
+ - **Passphrase management**: Via `SQUISH_ENCRYPTION_PASSPHRASE` env var (not exposed via MCP)
120
+ - Encryption passphrase configured in `.env` file in data directory
121
+
122
+ ### Universal Compatibility
123
+ - **CLI**: `squish remember`, `squish recall`, `squish inspect`, `squish context`, `squish stats`, `squish doctor`
124
+ - **MCP Server**: Works with Claude Code, OpenCode, Cursor, VS Code, OpenClaw
125
+ - **Web UI**: Inspect memories, projects, and recent observations locally
126
+ - **SQLite**: Local, zero-config
127
+ - **PostgreSQL**: Team mode with Supabase/pgvector
128
+ - **QMD Integration**: Native .md file search via @tobilu/qmd npm package
129
+
130
+ ### Current MCP Tools (12 tools)
131
+ - `squish_timeline` - 3-layer progressive disclosure
132
+ - `squish_remember` - Store memory or learning (auto-detects type)
133
+ - `squish_recall` - Recall memories by query or retrieve memory by ID
134
+ - `squish_forget` - Delete memory by ID or bulk delete
135
+ - `squish_link` - Manage memory associations
136
+ - `squish_context` - Get project context
137
+ - `squish_health` - Check system health
138
+ - `squish_stats` - Get memory statistics
139
+ - `squish_inspect` - Inspect memory retention
140
+ - `squish_pin` - Pin/unpin memory
141
+ - `squish_recent` - Get recent memories
142
+ - `squish_stale` - Show stale memories
143
+
144
+ ## Benchmark Results
145
+
146
+ Real tests using academic benchmarks with both configurations:
147
+
148
+ ### LoCoMo (1540 questions)
149
+ | Configuration | Score | Notes |
150
+ |---------------|-------|-------|
151
+ | **Without LLM** | **65.19%** | Vector-only |
152
+ | With LLM | 67.34% | Vector + LLM extraction |
153
+ | Mem0 | 66.88% | Requires LLM |
154
+ | TrueMemory | 91.5% | Uses LLM |
155
+
156
+ **Squish achieves competitive scores WITHOUT requiring LLM tokens.**
157
+
158
+ #### LoCoMo Breakdown (No LLM)
159
+ | Category | Score |
160
+ |----------|-------|
161
+ | Single-hop | 85.14% |
162
+ | Multi-hop | 47.78% |
163
+ | Temporal | 95.24% |
164
+ | Open-domain | 98.00% |
165
+ | Common-sense | 1.79% |
166
+
167
+ ### LongMemEval (100 questions)
168
+ | Configuration | Score | Breakdown |
169
+ |---------------|-------|-----------|
170
+ | **Without LLM** | **67.00%** | Temporal: 85%, Multi-session: 40% |
171
+ | With LLM | 67.00% | Temporal: 85%, Multi-session: 40% |
172
+
173
+ Note: LLM extraction helps during storage but scoring uses retrieved context keyword matching.
174
+
175
+ ### Performance
176
+ | Metric | Result |
177
+ |--------|--------|
178
+ | Embedding Latency | 1-5ms |
179
+ | API Latency | 1-20ms |
180
+ | Max Throughput | 943 ops/sec |
181
+ | Package Size | **283 KB** |
182
+
183
+ ### Local Runtime Characteristics
184
+
185
+ | Characteristic | Result |
186
+ |----------------|--------|
187
+ | Default Cost | $0 local runtime |
188
+ | Local-first | Yes |
189
+ | Setup | 1 command |
190
+ | API keys | Not required for the default path |
191
+ | Session continuity | Built in |
192
+
193
+ ## Supported Clients
194
+
195
+ | Client | Status |
196
+ |--------|--------|
197
+ | Claude Code | Stable |
198
+ | OpenCode | Stable |
199
+ | OpenClaw | Stable |
200
+ | Cursor | Beta |
201
+ | VS Code | Beta |
202
+ | Windsurf | Beta |
246
203
 
247
204
  ## Configuration
248
205
 
249
- ### Environment Variables
206
+ **Zero config required** - works out of the box with local embeddings.
250
207
 
251
- **Required (local mode - default):**
252
- - None! Works out-of-the-box with local TF-IDF embeddings
208
+ For customization:
253
209
 
254
- **Universal API:**
255
210
  ```bash
256
- # For universal HTTP API mode
257
- DATABASE_URL=postgresql://user:pass@host/db # Required for universal mode
258
- REDIS_URL=redis://localhost:6379 # Optional for caching
259
- PORT=3000 # API server port
260
- ```
261
-
262
- **Configuration File (config/settings.json):**
263
- ```json
264
- {
265
- "embeddings": {
266
- "provider": "local",
267
- "models": {
268
- "openai": { "model": "text-embedding-3-small" },
269
- "google": { "model": "gemini-embedding-001" },
270
- "ollama": { "model": "nomic-embed-text:v1.5" }
271
- }
272
- }
273
- }
274
- ```
275
-
276
- **Environment Variables (override settings.json):**
277
- ```bash
278
- SQUISH_DATA_DIR=./.squish # Custom data directory
279
- SQUISH_EMBEDDINGS_PROVIDER=local # local, openai, ollama, google, none, auto
280
-
281
- # Model selection (optional, uses defaults if not set)
282
- SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
283
- SQUISH_GOOGLE_EMBEDDING_MODEL=gemini-embedding-001
284
- SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
285
-
286
- # API credentials (for cloud providers)
287
- SQUISH_OPENAI_API_KEY=sk-...
211
+ # Environment variables
212
+ SQUISH_DATA_DIR=./.squish
213
+ SQUISH_EMBEDDINGS_PROVIDER=ollama # openai, ollama, google, local
288
214
  SQUISH_OLLAMA_URL=http://localhost:11434
289
- GOOGLE_CLOUD_PROJECT=your-project
290
- GOOGLE_CLOUD_API_KEY=your-key
291
215
 
292
- # Embedding performance & reliability
293
- SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
294
- SQUISH_EMBEDDINGS_MAX_RETRIES=3
295
- SQUISH_EMBEDDINGS_RETRY_DELAY_MS=1000
296
-
297
- # Core memory size (default: 16KB total, 4KB per section)
298
- SQUISH_CORE_MEMORY_TOTAL_BYTES=16384
299
- SQUISH_CORE_MEMORY_SECTION_BYTES=4096
300
-
301
- # For team mode
216
+ # Team mode
302
217
  DATABASE_URL=postgresql://user:pass@host/db
303
218
  ```
304
219
 
305
220
  ## Architecture
306
221
 
307
- ### Two-Tier Memory System
308
- Squish employs a two-tier architecture for optimal performance and reliability:
309
- - **Short-term (QMD)**: File-based search using QMD (BM25 + vectors). Ultra-fast for recent context and active memories.
310
- - **Long-term (Database)**: SQLite (local) or PostgreSQL (team). Durable ACID-compliant storage for important memories that need persistence.
222
+ ### Two-Tier Memory
223
+ - **QMD (Files)**: BM25 + vectors for fast recall
224
+ - **SQLite/PostgreSQL**: ACID-compliant persistent storage
311
225
 
312
- ### Universal Interfaces
313
- - **MCP Server**: Native integration for Claude Code, OpenClaw, and any MCP-compatible agent
314
- - **HTTP REST API**: Universal JSON API works with any AI agent capable of HTTP requests
315
- - **WebSocket**: Real-time memory sync and notifications for collaborative agents
316
- - **CLI**: Standalone command-line tool for shell-based agents and debugging
226
+ ### Runtime Pipeline
227
+ - **Signal engine**: classifies captured events as discard, session-only, durable-distilled, or durable-with-raw-fallback
228
+ - **Session working set**: persists active working context, active places, and small graph cues between sessions
229
+ - **Places**: spatially segment durable memory for retrieval and wake-up continuity
230
+ - **Graph**: incrementally enriches durable memories so graph boost applies to cleaner signal
231
+ - **Inspection path**: lets you inspect why a memory was retained and whether a raw fallback artifact exists
317
232
 
318
- ### Memory Organization
319
- - **Core Memory (configurable, default 16KB total)**: Always-visible sections for persona, user info, project context, and working notes. Each section limited to 4KB by default. Token estimation helps track LLM context usage.
320
- - **Context Paging**: Agent-controlled retrieval with token budgeting (8KB default)
321
- - **Background Jobs**: Automatic memory maintenance including decay, deduplication, and consolidation
233
+ ### Interfaces
234
+ - **packages/mcp**: Native agent integration via Model Context Protocol
235
+ - **HTTP**: Streamable HTTP server
236
+ - **CLI**: Shell and scripts
322
237
 
323
238
  ### Memory Lifecycle
324
- - **Sectors**: episodic, semantic, procedural, autobiographical, working memory
325
- - **Tiers**: hot (recently accessed), warm (accessible), cold (archived but searchable)
326
- - **Status**: active, merged, superseded, expired (with automatic handling)
327
-
328
- ### Deployment Flexibility
329
- - **Local SQLite**: Zero-configuration, perfect for individual agents and edge deployment
330
- - **PostgreSQL**: Horizontal scaling for teams and enterprise deployments
331
- - **Docker**: Single-command deployment with docker-compose.universal.yml
332
- - **Cloud**: Ready for AWS/GCP/Azure with standard PostgreSQL compatibility
239
+ - **Sectors**: episodic, semantic, procedural, autobiographical
240
+ - **Tiers**: hot (recent), warm (accessible), cold (archived)
241
+ - **Status**: active, merged, superseded, expired
333
242
 
334
243
  ## Development
335
244
 
336
245
  ```bash
337
- # Install dependencies
338
246
  bun install
339
-
340
- # Build
341
247
  bun run build
342
-
343
- # Test
344
248
  bun test
345
-
346
- # Verify MCP
347
249
  bun run verify:mcp
348
250
  ```
349
251
 
350
252
  ## Troubleshooting
351
253
 
352
- ### Database Issues
353
- - **SQLite corrupted**: Delete `.squish/squish.db` and restart
354
- - **PostgreSQL connection**: Verify DATABASE_URL format
254
+ ```bash
255
+ # Repair an older local install forward
256
+ squish doctor --migrate
257
+
258
+ # Zero-touch runtime check
259
+ squish context --json
355
260
 
356
- ### MCP Issues
357
- - **Hooks not working**: Run `bun run build` first
358
- - **API prompts**: Set `SQUISH_EMBEDDINGS_PROVIDER=local`
261
+ # MCP health check
262
+ squish-mcp --health
263
+ ```
359
264
 
360
265
  ## License
361
266
 
362
- MIT for OSS core. See `LICENSE` for details.
267
+ MIT License. See [LICENSE](LICENSE).
363
268
 
364
269
  ## Links
365
270
 
366
- - GitHub: https://github.com/michielhdoteth/squish
367
- - Issues: https://github.com/michielhdoteth/squish/issues
368
- - Sponsors: https://github.com/sponsors/michielhdoteth
271
+ - [Documentation](https://github.com/michielhdoteth/squish)
272
+ - [Benchmarks](docs/BENCHMARK.md)
273
+ - [Issues](https://github.com/michielhdoteth/squish/issues)