squish-memory 1.0.1 → 1.1.5

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 (601) hide show
  1. package/.env.example +130 -0
  2. package/CHANGELOG.md +55 -0
  3. package/README.md +155 -274
  4. package/config/hooks/claude-code-hooks.json +39 -0
  5. package/config/hooks/cursor-hooks.json +30 -0
  6. package/config/hooks/opencode-hooks.json +30 -0
  7. package/config/hooks/windsurf-hooks.json +30 -0
  8. package/config/mcp-mode-semantics.json +23 -21
  9. package/config/plugin-manifest.json +101 -152
  10. package/{plugin.json → config/plugin.json} +2 -2
  11. package/config/settings.json +52 -51
  12. package/{commands → core/commands}/init.md +39 -39
  13. package/dist/config.d.ts +28 -4
  14. package/dist/config.js +97 -29
  15. package/dist/core/adapters/config/claude-code.d.ts +45 -0
  16. package/dist/core/adapters/config/claude-code.js +113 -0
  17. package/dist/core/adapters/config/cursor.d.ts +26 -0
  18. package/dist/core/adapters/config/cursor.js +74 -0
  19. package/dist/core/adapters/config/opencode.d.ts +23 -0
  20. package/dist/core/adapters/config/opencode.js +73 -0
  21. package/dist/core/adapters/config/windsurf.d.ts +26 -0
  22. package/dist/core/adapters/config/windsurf.js +74 -0
  23. package/dist/core/adapters/index.d.ts +45 -0
  24. package/dist/core/adapters/index.js +84 -0
  25. package/dist/core/adapters/scripts/install-adapter.d.ts +19 -0
  26. package/dist/core/adapters/scripts/install-adapter.js +149 -0
  27. package/dist/core/adapters/timeline.d.ts +23 -0
  28. package/dist/core/adapters/timeline.js +88 -0
  29. package/dist/core/adapters/types.d.ts +157 -0
  30. package/dist/core/adapters/types.js +50 -0
  31. package/dist/{algorithms → core/algorithms}/analytics/token-estimator.d.ts +1 -1
  32. package/dist/{algorithms → core/algorithms}/analytics/token-estimator.js +3 -3
  33. package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.d.ts +1 -1
  34. package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.js +1 -1
  35. package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.d.ts +1 -1
  36. package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.js +7 -10
  37. package/dist/{algorithms → core/algorithms}/handlers/approve-merge.js +4 -4
  38. package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.js +3 -3
  39. package/dist/{algorithms → core/algorithms}/handlers/get-stats.js +3 -3
  40. package/dist/{algorithms → core/algorithms}/handlers/list-proposals.js +3 -3
  41. package/dist/{algorithms → core/algorithms}/handlers/preview-merge.js +3 -3
  42. package/dist/{algorithms → core/algorithms}/handlers/reject-merge.js +3 -3
  43. package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.js +3 -3
  44. package/dist/core/algorithms/index.d.ts +21 -0
  45. package/dist/core/algorithms/index.js +26 -0
  46. package/dist/core/algorithms/operations/cache-maintenance.d.ts +12 -0
  47. package/dist/core/algorithms/operations/cache-maintenance.js +157 -0
  48. package/dist/{algorithms → core/algorithms}/safety/safety-checks.d.ts +1 -1
  49. package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.d.ts +19 -1
  50. package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.js +74 -123
  51. package/dist/core/algorithms/types.d.ts +133 -0
  52. package/dist/core/algorithms/types.js +5 -0
  53. package/dist/core/associations.d.ts +1 -2
  54. package/dist/core/associations.js +1 -2
  55. package/dist/core/autosave.d.ts +19 -0
  56. package/dist/core/autosave.js +16 -0
  57. package/dist/{commands → core/commands}/managed-sync.js +5 -5
  58. package/dist/core/commands/mcp-server.js +739 -0
  59. package/dist/core/context/agent-context.d.ts +106 -0
  60. package/dist/core/context/agent-context.js +274 -0
  61. package/dist/core/{context-paging.d.ts → context/context-paging.d.ts} +2 -12
  62. package/dist/core/{context-paging.js → context/context-paging.js} +19 -39
  63. package/dist/core/context/context-window.d.ts +40 -0
  64. package/dist/core/context/context-window.js +177 -0
  65. package/dist/core/context/context.js +22 -0
  66. package/dist/core/embeddings.d.ts +1 -1
  67. package/dist/core/embeddings.js +54 -2
  68. package/dist/core/error-handling.d.ts +63 -0
  69. package/dist/core/error-handling.js +173 -0
  70. package/dist/core/external-folder/index.d.ts +102 -0
  71. package/dist/core/external-folder/index.js +294 -0
  72. package/dist/core/hooks/agent-hooks.d.ts +74 -0
  73. package/dist/core/hooks/agent-hooks.js +244 -0
  74. package/dist/core/hooks/auto-tagger.d.ts +19 -0
  75. package/dist/core/hooks/auto-tagger.js +155 -0
  76. package/dist/core/hooks/capture-filter.d.ts +41 -0
  77. package/dist/core/hooks/capture-filter.js +128 -0
  78. package/dist/core/index.d.ts +6 -6
  79. package/dist/core/index.js +6 -6
  80. package/dist/core/{agent-memory.js → ingestion/agent-memory.js} +5 -7
  81. package/dist/core/{core-memory.js → ingestion/core-memory.js} +4 -4
  82. package/dist/core/ingestion/learnings.d.ts +57 -0
  83. package/dist/core/ingestion/learnings.js +202 -0
  84. package/dist/core/lib/db-client.d.ts +114 -0
  85. package/dist/core/lib/db-client.js +130 -0
  86. package/dist/core/lib/schemas.d.ts +129 -0
  87. package/dist/core/lib/schemas.js +87 -0
  88. package/dist/core/{utils.d.ts → lib/utils.d.ts} +1 -0
  89. package/dist/core/{utils.js → lib/utils.js} +31 -15
  90. package/dist/core/lib/validation.d.ts +38 -0
  91. package/dist/core/lib/validation.js +151 -0
  92. package/dist/core/lifecycle.d.ts +7 -0
  93. package/dist/core/lifecycle.js +140 -20
  94. package/dist/core/local-embeddings.d.ts +6 -1
  95. package/dist/core/local-embeddings.js +6 -15
  96. package/dist/core/logger.js +7 -1
  97. package/dist/core/mcp/server.js +27 -1
  98. package/dist/core/mcp/tools.js +35 -3
  99. package/dist/core/mcp/types.d.ts +4 -4
  100. package/dist/core/memory/categorizer.js +1 -0
  101. package/dist/core/memory/conflict-detector.js +1 -1
  102. package/dist/core/memory/consolidation.d.ts +1 -10
  103. package/dist/core/memory/consolidation.js +2 -11
  104. package/dist/core/memory/context-collector.js +1 -1
  105. package/dist/core/memory/edit-workflow.js +1 -1
  106. package/dist/core/memory/entity-resolver.js +7 -7
  107. package/dist/core/memory/fact-extractor.js +12 -12
  108. package/dist/core/memory/feedback-tracker.js +1 -1
  109. package/dist/core/memory/hooks.d.ts +88 -0
  110. package/dist/core/memory/hooks.js +174 -0
  111. package/dist/core/memory/hybrid-retrieval.js +2 -2
  112. package/dist/core/memory/hybrid-search.d.ts +1 -6
  113. package/dist/core/memory/hybrid-search.js +70 -84
  114. package/dist/core/memory/importance.d.ts +8 -13
  115. package/dist/core/memory/importance.js +47 -74
  116. package/dist/core/memory/loader.d.ts +31 -0
  117. package/dist/core/memory/loader.js +141 -0
  118. package/dist/core/memory/markdown/markdown-storage.d.ts +72 -0
  119. package/dist/core/memory/markdown/markdown-storage.js +243 -0
  120. package/dist/core/memory/memories.d.ts +12 -4
  121. package/dist/core/memory/memories.js +196 -181
  122. package/dist/core/memory/memory-lifecycle.d.ts +8 -0
  123. package/dist/core/memory/memory-lifecycle.js +55 -0
  124. package/dist/core/memory/migrate.d.ts +21 -0
  125. package/dist/core/memory/migrate.js +134 -0
  126. package/dist/core/memory/normalization.d.ts +22 -0
  127. package/dist/core/memory/normalization.js +26 -0
  128. package/dist/core/memory/progressive-disclosure.js +1 -1
  129. package/dist/core/memory/query-rewriter.js +9 -9
  130. package/dist/core/memory/serialization.d.ts +4 -0
  131. package/dist/core/memory/serialization.js +49 -0
  132. package/dist/core/memory/stats.d.ts +5 -0
  133. package/dist/core/memory/stats.js +63 -12
  134. package/dist/core/memory/temporal-facts.js +21 -0
  135. package/dist/core/memory/write-gate.js +1 -1
  136. package/dist/core/obsidian-vault.d.ts +30 -0
  137. package/dist/core/obsidian-vault.js +94 -0
  138. package/dist/core/places/index.d.ts +14 -0
  139. package/dist/core/places/index.js +14 -0
  140. package/dist/core/places/memory-places.d.ts +68 -0
  141. package/dist/core/places/memory-places.js +261 -0
  142. package/dist/core/places/places.d.ts +88 -0
  143. package/dist/core/places/places.js +314 -0
  144. package/dist/core/places/rules.d.ts +74 -0
  145. package/dist/core/places/rules.js +240 -0
  146. package/dist/core/places/walking.d.ts +56 -0
  147. package/dist/core/places/walking.js +121 -0
  148. package/dist/core/projects.d.ts +5 -0
  149. package/dist/core/projects.js +39 -18
  150. package/dist/core/responses.d.ts +96 -0
  151. package/dist/core/responses.js +122 -0
  152. package/dist/core/scheduler/cron-scheduler.js +89 -14
  153. package/dist/core/scheduler/index.d.ts +1 -1
  154. package/dist/core/scheduler/index.js +1 -1
  155. package/dist/core/scheduler/job-runner.js +1 -1
  156. package/dist/core/search/conversations.js +40 -42
  157. package/dist/core/search/entities.js +6 -9
  158. package/dist/core/search/graph-boost.d.ts +7 -0
  159. package/dist/core/search/graph-boost.js +23 -0
  160. package/dist/core/search/qmd-search.js +4 -4
  161. package/dist/core/security/encrypt.d.ts +6 -0
  162. package/dist/core/security/encrypt.js +47 -0
  163. package/dist/core/{governance.d.ts → security/governance.d.ts} +6 -1
  164. package/dist/core/security/governance.js +79 -0
  165. package/dist/core/session/auto-load.js +6 -6
  166. package/dist/core/session/index.d.ts +1 -1
  167. package/dist/core/session/index.js +1 -1
  168. package/dist/core/session/self-iteration-job.d.ts +20 -0
  169. package/dist/core/session/self-iteration-job.js +282 -0
  170. package/dist/core/session/session-hooks.d.ts +18 -0
  171. package/dist/core/session/session-hooks.js +58 -0
  172. package/dist/core/session-hooks/self-iteration-job.js +35 -35
  173. package/dist/core/{cache.js → storage/cache.js} +2 -2
  174. package/dist/core/sync/qmd-sync.d.ts +1 -13
  175. package/dist/core/sync/qmd-sync.js +1 -13
  176. package/dist/core/toon.d.ts +43 -0
  177. package/dist/core/toon.js +160 -0
  178. package/dist/core/utils/memory-operations.js +1 -1
  179. package/dist/core/utils/vector-operations.d.ts +71 -0
  180. package/dist/core/utils/vector-operations.js +129 -0
  181. package/dist/db/adapter.d.ts +3 -3
  182. package/dist/db/adapter.js +115 -36
  183. package/dist/db/bootstrap.js +927 -555
  184. package/dist/{drizzle → db/drizzle}/schema-sqlite.d.ts +74 -25
  185. package/dist/{drizzle → db/drizzle}/schema-sqlite.js +91 -24
  186. package/dist/{drizzle → db/drizzle}/schema.d.ts +79 -32
  187. package/dist/{drizzle → db/drizzle}/schema.js +106 -35
  188. package/dist/db/drizzle.config.d.ts +3 -0
  189. package/dist/db/drizzle.config.js +12 -0
  190. package/dist/db/index.d.ts +1 -5
  191. package/dist/db/index.js +51 -8
  192. package/dist/db/neon.d.ts +8 -0
  193. package/dist/db/neon.js +20 -0
  194. package/dist/db/schema/index.d.ts +40 -0
  195. package/dist/db/schema/index.js +105 -0
  196. package/dist/db/schema/tables/context-sessions.d.ts +9 -0
  197. package/dist/db/schema/tables/context-sessions.js +37 -0
  198. package/dist/db/schema/tables/conversations.d.ts +9 -0
  199. package/dist/db/schema/tables/conversations.js +47 -0
  200. package/dist/db/schema/tables/core-memory.d.ts +9 -0
  201. package/dist/db/schema/tables/core-memory.js +41 -0
  202. package/dist/db/schema/tables/entities.d.ts +9 -0
  203. package/dist/db/schema/tables/entities.js +39 -0
  204. package/dist/db/schema/tables/entity-relations.d.ts +9 -0
  205. package/dist/db/schema/tables/entity-relations.js +31 -0
  206. package/dist/db/schema/tables/learnings.d.ts +9 -0
  207. package/dist/db/schema/tables/learnings.js +66 -0
  208. package/dist/db/schema/tables/memories.d.ts +9 -0
  209. package/dist/db/schema/tables/memories.js +161 -0
  210. package/dist/db/schema/tables/memory-associations.d.ts +9 -0
  211. package/dist/db/schema/tables/memory-associations.js +39 -0
  212. package/dist/db/schema/tables/memory-hash-cache.d.ts +9 -0
  213. package/dist/db/schema/tables/memory-hash-cache.js +29 -0
  214. package/dist/db/schema/tables/memory-merge-history.d.ts +9 -0
  215. package/dist/db/schema/tables/memory-merge-history.js +33 -0
  216. package/dist/db/schema/tables/memory-merge-proposals.d.ts +9 -0
  217. package/dist/db/schema/tables/memory-merge-proposals.js +39 -0
  218. package/dist/db/schema/tables/messages.d.ts +9 -0
  219. package/dist/db/schema/tables/messages.js +41 -0
  220. package/dist/db/schema/tables/namespaces.d.ts +9 -0
  221. package/dist/db/schema/tables/namespaces.js +37 -0
  222. package/dist/db/schema/tables/projects.d.ts +9 -0
  223. package/dist/db/schema/tables/projects.js +31 -0
  224. package/dist/db/schema/tables/users.d.ts +9 -0
  225. package/dist/db/schema/tables/users.js +27 -0
  226. package/dist/db/schema.d.ts +1 -1
  227. package/dist/db/schema.js +2 -2
  228. package/dist/db/supabase.d.ts +9 -0
  229. package/dist/db/supabase.js +24 -0
  230. package/dist/index.d.ts +2 -14
  231. package/dist/index.js +1457 -631
  232. package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
  233. package/dist/webui/server.d.ts +5 -0
  234. package/dist/{api/web/web.js → webui/server.js} +538 -509
  235. package/generated/mcp/manifest.json +23 -23
  236. package/{.mcp.json → mcp.json.example} +1 -1
  237. package/package.json +159 -169
  238. package/scripts/README.md +60 -0
  239. package/scripts/copy-runtime-assets.mjs +26 -0
  240. package/scripts/generate-mcp.mjs +264 -264
  241. package/scripts/github-release.sh +4 -4
  242. package/scripts/install-claude-code.sh +85 -0
  243. package/scripts/install-cursor.sh +56 -0
  244. package/scripts/install-hooks.sh +73 -0
  245. package/scripts/install-interactive.mjs +357 -674
  246. package/scripts/install-opencode.sh +75 -0
  247. package/scripts/install-windsurf.sh +67 -0
  248. package/skills/squish-memory/SKILL.md +104 -100
  249. package/skills/squish-memory/{install.mjs → scripts/install.mjs} +2 -2
  250. package/skills/squish-memory/{install.sh → scripts/install.sh} +2 -2
  251. package/skills/squish-memory/write_skill.js +2 -0
  252. package/.claude-plugin/marketplace.json +0 -20
  253. package/.claude-plugin/plugin.json +0 -32
  254. package/.env.mcp.example +0 -56
  255. package/QUICK-START.md +0 -71
  256. package/bin/squish-add.mjs +0 -32
  257. package/bin/squish-rm.mjs +0 -21
  258. package/commands/observe.md +0 -5
  259. package/dist/algorithms/analytics/token-estimator.d.ts.map +0 -1
  260. package/dist/algorithms/analytics/token-estimator.js.map +0 -1
  261. package/dist/algorithms/detection/hash-filters.d.ts.map +0 -1
  262. package/dist/algorithms/detection/hash-filters.js.map +0 -1
  263. package/dist/algorithms/detection/semantic-ranker.d.ts.map +0 -1
  264. package/dist/algorithms/detection/semantic-ranker.js.map +0 -1
  265. package/dist/algorithms/detection/two-stage-detector.d.ts.map +0 -1
  266. package/dist/algorithms/detection/two-stage-detector.js.map +0 -1
  267. package/dist/algorithms/handlers/approve-merge.d.ts.map +0 -1
  268. package/dist/algorithms/handlers/approve-merge.js.map +0 -1
  269. package/dist/algorithms/handlers/detect-duplicates.d.ts.map +0 -1
  270. package/dist/algorithms/handlers/detect-duplicates.js.map +0 -1
  271. package/dist/algorithms/handlers/get-stats.d.ts.map +0 -1
  272. package/dist/algorithms/handlers/get-stats.js.map +0 -1
  273. package/dist/algorithms/handlers/list-proposals.d.ts.map +0 -1
  274. package/dist/algorithms/handlers/list-proposals.js.map +0 -1
  275. package/dist/algorithms/handlers/preview-merge.d.ts.map +0 -1
  276. package/dist/algorithms/handlers/preview-merge.js.map +0 -1
  277. package/dist/algorithms/handlers/reject-merge.d.ts.map +0 -1
  278. package/dist/algorithms/handlers/reject-merge.js.map +0 -1
  279. package/dist/algorithms/handlers/reverse-merge.d.ts.map +0 -1
  280. package/dist/algorithms/handlers/reverse-merge.js.map +0 -1
  281. package/dist/algorithms/safety/safety-checks.d.ts.map +0 -1
  282. package/dist/algorithms/safety/safety-checks.js.map +0 -1
  283. package/dist/algorithms/strategies/merge-strategies.d.ts.map +0 -1
  284. package/dist/algorithms/strategies/merge-strategies.js.map +0 -1
  285. package/dist/algorithms/utils/response-builder.d.ts.map +0 -1
  286. package/dist/algorithms/utils/response-builder.js.map +0 -1
  287. package/dist/api/web/index.d.ts +0 -3
  288. package/dist/api/web/index.d.ts.map +0 -1
  289. package/dist/api/web/index.js +0 -4
  290. package/dist/api/web/index.js.map +0 -1
  291. package/dist/api/web/web-server.d.ts +0 -3
  292. package/dist/api/web/web-server.d.ts.map +0 -1
  293. package/dist/api/web/web-server.js +0 -6
  294. package/dist/api/web/web-server.js.map +0 -1
  295. package/dist/api/web/web.d.ts +0 -4
  296. package/dist/api/web/web.d.ts.map +0 -1
  297. package/dist/api/web/web.js.map +0 -1
  298. package/dist/commands/managed-sync.d.ts.map +0 -1
  299. package/dist/commands/managed-sync.js.map +0 -1
  300. package/dist/commands/mcp-server.d.ts.map +0 -1
  301. package/dist/commands/mcp-server.js +0 -393
  302. package/dist/commands/mcp-server.js.map +0 -1
  303. package/dist/config.d.ts.map +0 -1
  304. package/dist/config.js.map +0 -1
  305. package/dist/core/agent-memory.d.ts.map +0 -1
  306. package/dist/core/agent-memory.js.map +0 -1
  307. package/dist/core/associations.d.ts.map +0 -1
  308. package/dist/core/associations.js.map +0 -1
  309. package/dist/core/cache.d.ts.map +0 -1
  310. package/dist/core/cache.js.map +0 -1
  311. package/dist/core/consolidation.d.ts.map +0 -1
  312. package/dist/core/consolidation.js.map +0 -1
  313. package/dist/core/context-paging.d.ts.map +0 -1
  314. package/dist/core/context-paging.js.map +0 -1
  315. package/dist/core/context.d.ts.map +0 -1
  316. package/dist/core/context.js +0 -24
  317. package/dist/core/context.js.map +0 -1
  318. package/dist/core/core-memory.d.ts.map +0 -1
  319. package/dist/core/core-memory.js.map +0 -1
  320. package/dist/core/database.d.ts.map +0 -1
  321. package/dist/core/database.js.map +0 -1
  322. package/dist/core/embeddings/google-multimodal.d.ts.map +0 -1
  323. package/dist/core/embeddings/google-multimodal.js.map +0 -1
  324. package/dist/core/embeddings/qmd-client.d.ts.map +0 -1
  325. package/dist/core/embeddings/qmd-client.js.map +0 -1
  326. package/dist/core/embeddings.d.ts.map +0 -1
  327. package/dist/core/embeddings.js.map +0 -1
  328. package/dist/core/governance.d.ts.map +0 -1
  329. package/dist/core/governance.js +0 -64
  330. package/dist/core/governance.js.map +0 -1
  331. package/dist/core/index.d.ts.map +0 -1
  332. package/dist/core/index.js.map +0 -1
  333. package/dist/core/layers/generator.d.ts.map +0 -1
  334. package/dist/core/layers/generator.js.map +0 -1
  335. package/dist/core/lifecycle.d.ts.map +0 -1
  336. package/dist/core/lifecycle.js.map +0 -1
  337. package/dist/core/local-embeddings.d.ts.map +0 -1
  338. package/dist/core/local-embeddings.js.map +0 -1
  339. package/dist/core/logger.d.ts.map +0 -1
  340. package/dist/core/logger.js.map +0 -1
  341. package/dist/core/mcp/client.d.ts.map +0 -1
  342. package/dist/core/mcp/client.js.map +0 -1
  343. package/dist/core/mcp/index.d.ts.map +0 -1
  344. package/dist/core/mcp/index.js.map +0 -1
  345. package/dist/core/mcp/server.d.ts.map +0 -1
  346. package/dist/core/mcp/server.js.map +0 -1
  347. package/dist/core/mcp/standalone-server.d.ts.map +0 -1
  348. package/dist/core/mcp/standalone-server.js.map +0 -1
  349. package/dist/core/mcp/tools.d.ts.map +0 -1
  350. package/dist/core/mcp/tools.js.map +0 -1
  351. package/dist/core/mcp/types.d.ts.map +0 -1
  352. package/dist/core/mcp/types.js.map +0 -1
  353. package/dist/core/memory/bridge-discovery.d.ts.map +0 -1
  354. package/dist/core/memory/bridge-discovery.js.map +0 -1
  355. package/dist/core/memory/categorizer.d.ts.map +0 -1
  356. package/dist/core/memory/categorizer.js.map +0 -1
  357. package/dist/core/memory/conflict-detector.d.ts.map +0 -1
  358. package/dist/core/memory/conflict-detector.js.map +0 -1
  359. package/dist/core/memory/consolidation.d.ts.map +0 -1
  360. package/dist/core/memory/consolidation.js.map +0 -1
  361. package/dist/core/memory/context-collector.d.ts.map +0 -1
  362. package/dist/core/memory/context-collector.js.map +0 -1
  363. package/dist/core/memory/contradiction-resolver.d.ts.map +0 -1
  364. package/dist/core/memory/contradiction-resolver.js.map +0 -1
  365. package/dist/core/memory/edit-workflow.d.ts.map +0 -1
  366. package/dist/core/memory/edit-workflow.js.map +0 -1
  367. package/dist/core/memory/entity-extractor.d.ts.map +0 -1
  368. package/dist/core/memory/entity-extractor.js.map +0 -1
  369. package/dist/core/memory/entity-resolver.d.ts.map +0 -1
  370. package/dist/core/memory/entity-resolver.js.map +0 -1
  371. package/dist/core/memory/fact-extractor.d.ts.map +0 -1
  372. package/dist/core/memory/fact-extractor.js.map +0 -1
  373. package/dist/core/memory/feedback-tracker.d.ts.map +0 -1
  374. package/dist/core/memory/feedback-tracker.js.map +0 -1
  375. package/dist/core/memory/hybrid-retrieval.d.ts.map +0 -1
  376. package/dist/core/memory/hybrid-retrieval.js.map +0 -1
  377. package/dist/core/memory/hybrid-scorer.d.ts.map +0 -1
  378. package/dist/core/memory/hybrid-scorer.js.map +0 -1
  379. package/dist/core/memory/hybrid-search.d.ts.map +0 -1
  380. package/dist/core/memory/hybrid-search.js.map +0 -1
  381. package/dist/core/memory/importance.d.ts.map +0 -1
  382. package/dist/core/memory/importance.js.map +0 -1
  383. package/dist/core/memory/index.d.ts.map +0 -1
  384. package/dist/core/memory/index.js.map +0 -1
  385. package/dist/core/memory/memories.d.ts.map +0 -1
  386. package/dist/core/memory/memories.js.map +0 -1
  387. package/dist/core/memory/memory-manager.d.ts.map +0 -1
  388. package/dist/core/memory/memory-manager.js.map +0 -1
  389. package/dist/core/memory/progressive-disclosure.d.ts.map +0 -1
  390. package/dist/core/memory/progressive-disclosure.js.map +0 -1
  391. package/dist/core/memory/query-processor.d.ts.map +0 -1
  392. package/dist/core/memory/query-processor.js.map +0 -1
  393. package/dist/core/memory/query-rewriter.d.ts.map +0 -1
  394. package/dist/core/memory/query-rewriter.js.map +0 -1
  395. package/dist/core/memory/response-analyzer.d.ts.map +0 -1
  396. package/dist/core/memory/response-analyzer.js.map +0 -1
  397. package/dist/core/memory/serialization.d.ts.map +0 -1
  398. package/dist/core/memory/serialization.js.map +0 -1
  399. package/dist/core/memory/stats.d.ts.map +0 -1
  400. package/dist/core/memory/stats.js.map +0 -1
  401. package/dist/core/memory/telemetry.d.ts.map +0 -1
  402. package/dist/core/memory/telemetry.js.map +0 -1
  403. package/dist/core/memory/temporal-facts.d.ts.map +0 -1
  404. package/dist/core/memory/temporal-facts.js.map +0 -1
  405. package/dist/core/memory/temporal-parser.d.ts.map +0 -1
  406. package/dist/core/memory/temporal-parser.js.map +0 -1
  407. package/dist/core/memory/trigger-detector.d.ts.map +0 -1
  408. package/dist/core/memory/trigger-detector.js.map +0 -1
  409. package/dist/core/memory/write-gate.d.ts.map +0 -1
  410. package/dist/core/memory/write-gate.js.map +0 -1
  411. package/dist/core/namespaces/index.d.ts.map +0 -1
  412. package/dist/core/namespaces/index.js.map +0 -1
  413. package/dist/core/namespaces/uri-parser.d.ts.map +0 -1
  414. package/dist/core/namespaces/uri-parser.js.map +0 -1
  415. package/dist/core/observations.d.ts +0 -26
  416. package/dist/core/observations.d.ts.map +0 -1
  417. package/dist/core/observations.js +0 -110
  418. package/dist/core/observations.js.map +0 -1
  419. package/dist/core/privacy.d.ts.map +0 -1
  420. package/dist/core/privacy.js.map +0 -1
  421. package/dist/core/projects.d.ts.map +0 -1
  422. package/dist/core/projects.js.map +0 -1
  423. package/dist/core/redis.d.ts.map +0 -1
  424. package/dist/core/redis.js.map +0 -1
  425. package/dist/core/requirements.d.ts +0 -20
  426. package/dist/core/requirements.d.ts.map +0 -1
  427. package/dist/core/requirements.js +0 -35
  428. package/dist/core/requirements.js.map +0 -1
  429. package/dist/core/scheduler/cron-scheduler.d.ts.map +0 -1
  430. package/dist/core/scheduler/cron-scheduler.js.map +0 -1
  431. package/dist/core/scheduler/heartbeat.d.ts.map +0 -1
  432. package/dist/core/scheduler/heartbeat.js.map +0 -1
  433. package/dist/core/scheduler/index.d.ts.map +0 -1
  434. package/dist/core/scheduler/index.js.map +0 -1
  435. package/dist/core/scheduler/job-runner.d.ts.map +0 -1
  436. package/dist/core/scheduler/job-runner.js.map +0 -1
  437. package/dist/core/search/conversations.d.ts.map +0 -1
  438. package/dist/core/search/conversations.js.map +0 -1
  439. package/dist/core/search/entities.d.ts.map +0 -1
  440. package/dist/core/search/entities.js.map +0 -1
  441. package/dist/core/search/folder-context.d.ts.map +0 -1
  442. package/dist/core/search/folder-context.js.map +0 -1
  443. package/dist/core/search/index.d.ts.map +0 -1
  444. package/dist/core/search/index.js.map +0 -1
  445. package/dist/core/search/qmd-search.d.ts.map +0 -1
  446. package/dist/core/search/qmd-search.js.map +0 -1
  447. package/dist/core/secret-detector.d.ts.map +0 -1
  448. package/dist/core/secret-detector.js.map +0 -1
  449. package/dist/core/session/auto-load.d.ts.map +0 -1
  450. package/dist/core/session/auto-load.js.map +0 -1
  451. package/dist/core/session/index.d.ts.map +0 -1
  452. package/dist/core/session/index.js.map +0 -1
  453. package/dist/core/session/types.d.ts.map +0 -1
  454. package/dist/core/session/types.js.map +0 -1
  455. package/dist/core/session-hooks/self-iteration-job.d.ts.map +0 -1
  456. package/dist/core/session-hooks/self-iteration-job.js.map +0 -1
  457. package/dist/core/session-hooks/session-hooks.d.ts.map +0 -1
  458. package/dist/core/session-hooks/session-hooks.js.map +0 -1
  459. package/dist/core/snapshots/cleanup.d.ts.map +0 -1
  460. package/dist/core/snapshots/cleanup.js.map +0 -1
  461. package/dist/core/snapshots/comparison.d.ts.map +0 -1
  462. package/dist/core/snapshots/comparison.js.map +0 -1
  463. package/dist/core/snapshots/creation.d.ts.map +0 -1
  464. package/dist/core/snapshots/creation.js.map +0 -1
  465. package/dist/core/snapshots/retrieval.d.ts.map +0 -1
  466. package/dist/core/snapshots/retrieval.js.map +0 -1
  467. package/dist/core/snapshots/stats.d.ts.map +0 -1
  468. package/dist/core/snapshots/stats.js.map +0 -1
  469. package/dist/core/snapshots.d.ts.map +0 -1
  470. package/dist/core/snapshots.js.map +0 -1
  471. package/dist/core/summarization/cleanup.d.ts.map +0 -1
  472. package/dist/core/summarization/cleanup.js.map +0 -1
  473. package/dist/core/summarization/queries.d.ts.map +0 -1
  474. package/dist/core/summarization/queries.js.map +0 -1
  475. package/dist/core/summarization/stats.d.ts.map +0 -1
  476. package/dist/core/summarization/stats.js.map +0 -1
  477. package/dist/core/summarization/strategies.d.ts.map +0 -1
  478. package/dist/core/summarization/strategies.js.map +0 -1
  479. package/dist/core/summarization.d.ts.map +0 -1
  480. package/dist/core/summarization.js.map +0 -1
  481. package/dist/core/sync/qmd-sync.d.ts.map +0 -1
  482. package/dist/core/sync/qmd-sync.js.map +0 -1
  483. package/dist/core/temporal-facts.d.ts.map +0 -1
  484. package/dist/core/temporal-facts.js.map +0 -1
  485. package/dist/core/tracing/collector.d.ts.map +0 -1
  486. package/dist/core/tracing/collector.js.map +0 -1
  487. package/dist/core/tracing/visualizer.d.ts.map +0 -1
  488. package/dist/core/tracing/visualizer.js.map +0 -1
  489. package/dist/core/utils/cleanup-operations.d.ts.map +0 -1
  490. package/dist/core/utils/cleanup-operations.js.map +0 -1
  491. package/dist/core/utils/content-extraction.d.ts.map +0 -1
  492. package/dist/core/utils/content-extraction.js.map +0 -1
  493. package/dist/core/utils/filter-builder.d.ts.map +0 -1
  494. package/dist/core/utils/filter-builder.js.map +0 -1
  495. package/dist/core/utils/history-traversal.d.ts.map +0 -1
  496. package/dist/core/utils/history-traversal.js.map +0 -1
  497. package/dist/core/utils/memory-operations.d.ts.map +0 -1
  498. package/dist/core/utils/memory-operations.js.map +0 -1
  499. package/dist/core/utils/query-operations.d.ts.map +0 -1
  500. package/dist/core/utils/query-operations.js.map +0 -1
  501. package/dist/core/utils/summarization-helpers.d.ts.map +0 -1
  502. package/dist/core/utils/summarization-helpers.js.map +0 -1
  503. package/dist/core/utils/temporal-queries.d.ts.map +0 -1
  504. package/dist/core/utils/temporal-queries.js.map +0 -1
  505. package/dist/core/utils/version-management.d.ts.map +0 -1
  506. package/dist/core/utils/version-management.js.map +0 -1
  507. package/dist/core/utils.d.ts.map +0 -1
  508. package/dist/core/utils.js.map +0 -1
  509. package/dist/core/worker.d.ts.map +0 -1
  510. package/dist/core/worker.js.map +0 -1
  511. package/dist/db/adapter.d.ts.map +0 -1
  512. package/dist/db/adapter.js.map +0 -1
  513. package/dist/db/bootstrap.d.ts.map +0 -1
  514. package/dist/db/bootstrap.js.map +0 -1
  515. package/dist/db/index.d.ts.map +0 -1
  516. package/dist/db/index.js.map +0 -1
  517. package/dist/db/schema.d.ts.map +0 -1
  518. package/dist/db/schema.js.map +0 -1
  519. package/dist/drizzle/schema-sqlite.d.ts.map +0 -1
  520. package/dist/drizzle/schema-sqlite.js.map +0 -1
  521. package/dist/drizzle/schema.d.ts.map +0 -1
  522. package/dist/drizzle/schema.js.map +0 -1
  523. package/dist/index.d.ts.map +0 -1
  524. package/dist/index.js.map +0 -1
  525. package/hooks/hooks.json +0 -52
  526. package/hooks/post-tool-use.js +0 -26
  527. package/hooks/session-end.js +0 -28
  528. package/hooks/session-start.js +0 -33
  529. package/hooks/user-prompt-submit.js +0 -26
  530. package/hooks/utils.js +0 -153
  531. package/npx-installer.js +0 -208
  532. package/packages/plugin-claude-code/README.md +0 -73
  533. package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +0 -35
  534. package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts.map +0 -1
  535. package/packages/plugin-claude-code/dist/plugin-wrapper.js +0 -191
  536. package/packages/plugin-claude-code/dist/plugin-wrapper.js.map +0 -1
  537. package/packages/plugin-claude-code/package.json +0 -31
  538. package/packages/plugin-openclaw/README.md +0 -70
  539. package/packages/plugin-openclaw/dist/index.d.ts +0 -49
  540. package/packages/plugin-openclaw/dist/index.d.ts.map +0 -1
  541. package/packages/plugin-openclaw/dist/index.js +0 -262
  542. package/packages/plugin-openclaw/dist/index.js.map +0 -1
  543. package/packages/plugin-openclaw/openclaw.plugin.json +0 -94
  544. package/packages/plugin-openclaw/package.json +0 -31
  545. package/packages/plugin-opencode/install.mjs +0 -217
  546. package/packages/plugin-opencode/package.json +0 -21
  547. package/scripts/db/check-db.mjs +0 -88
  548. package/scripts/db/fix-all-columns.mjs +0 -52
  549. package/scripts/db/fix-schema-all.mjs +0 -55
  550. package/scripts/db/fix-schema-full.mjs +0 -46
  551. package/scripts/db/fix-schema.mjs +0 -38
  552. package/scripts/db/init-db.mjs +0 -13
  553. package/scripts/db/recreate-db.mjs +0 -14
  554. package/scripts/install-mcp.mjs +0 -116
  555. package/scripts/install-web.sh +0 -120
  556. package/scripts/install.mjs +0 -340
  557. package/scripts/openclaw-bootstrap.mjs +0 -127
  558. package/scripts/package-release.sh +0 -71
  559. package/scripts/test/test-all-systems.mjs +0 -139
  560. package/scripts/test/test-memory-system.mjs +0 -139
  561. package/scripts/test/test-v0.5.0.mjs +0 -210
  562. package/skills/memory-guide/SKILL.md +0 -256
  563. package/skills/squish-cli/SKILL.md +0 -200
  564. package/skills/squish-mcp/SKILL.md +0 -311
  565. package/skills/squish-memory/claude-desktop.json +0 -12
  566. package/skills/squish-memory/openclaw.json +0 -13
  567. package/skills/squish-memory/opencode.json +0 -14
  568. package/skills/squish-memory/skill.json +0 -32
  569. /package/{commands → core/commands}/context-paging.md +0 -0
  570. /package/{commands → core/commands}/context-status.md +0 -0
  571. /package/{commands → core/commands}/context.md +0 -0
  572. /package/{commands → core/commands}/core-memory.md +0 -0
  573. /package/{commands → core/commands}/health.md +0 -0
  574. /package/{commands → core/commands}/merge.md +0 -0
  575. /package/{commands → core/commands}/recall.md +0 -0
  576. /package/{commands → core/commands}/remember.md +0 -0
  577. /package/{commands → core/commands}/search.md +0 -0
  578. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.d.ts +0 -0
  579. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.js +0 -0
  580. /package/dist/{algorithms → core/algorithms}/handlers/approve-merge.d.ts +0 -0
  581. /package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.d.ts +0 -0
  582. /package/dist/{algorithms → core/algorithms}/handlers/get-stats.d.ts +0 -0
  583. /package/dist/{algorithms → core/algorithms}/handlers/list-proposals.d.ts +0 -0
  584. /package/dist/{algorithms → core/algorithms}/handlers/preview-merge.d.ts +0 -0
  585. /package/dist/{algorithms → core/algorithms}/handlers/reject-merge.d.ts +0 -0
  586. /package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.d.ts +0 -0
  587. /package/dist/{algorithms → core/algorithms}/safety/safety-checks.js +0 -0
  588. /package/dist/{algorithms → core/algorithms}/utils/response-builder.d.ts +0 -0
  589. /package/dist/{algorithms → core/algorithms}/utils/response-builder.js +0 -0
  590. /package/dist/{commands → core/commands}/managed-sync.d.ts +0 -0
  591. /package/dist/{commands → core/commands}/mcp-server.d.ts +0 -0
  592. /package/dist/core/{context.d.ts → context/context.d.ts} +0 -0
  593. /package/dist/core/{agent-memory.d.ts → ingestion/agent-memory.d.ts} +0 -0
  594. /package/dist/core/{core-memory.d.ts → ingestion/core-memory.d.ts} +0 -0
  595. /package/dist/core/{privacy.d.ts → security/privacy.d.ts} +0 -0
  596. /package/dist/core/{privacy.js → security/privacy.js} +0 -0
  597. /package/dist/core/{secret-detector.d.ts → security/secret-detector.d.ts} +0 -0
  598. /package/dist/core/{secret-detector.js → security/secret-detector.js} +0 -0
  599. /package/dist/core/{cache.d.ts → storage/cache.d.ts} +0 -0
  600. /package/dist/core/{database.d.ts → storage/database.d.ts} +0 -0
  601. /package/dist/core/{database.js → storage/database.js} +0 -0
package/README.md CHANGED
@@ -1,350 +1,231 @@
1
- # Squish - Universal Two-Tier Memory for AI Agents
1
+ # Squish - Universal Memory for AI Agents
2
2
 
3
- **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.
3
+ [![npm version](https://img.shields.io/npm/v/squish-memory)](https://www.npmjs.com/package/squish-memory)
4
+ [![npm downloads](https://img.shields.io/npm/dm/squish-memory)](https://www.npmjs.com/package/squish-memory)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
7
+
8
+ **Give any AI agent persistent, intelligent memory.** Without memory, agents forget everything between sessions. With Squish, they learn and adapt over time.
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.
4
11
 
5
12
  ```bash
6
- npm install squish-memory
13
+ bun add squish-memory
7
14
  ```
8
15
 
9
- ## Why Agents Need Memory
16
+ ## Why Memory Matters
10
17
 
11
18
  | Without Squish | With Squish |
12
19
  |----------------|-------------|
13
- | Forgets after every session | Remembers across sessions |
20
+ | Forgets everything after session | Remembers across sessions |
14
21
  | Repeats the same mistakes | Learns from past decisions |
15
- | No context awareness | Builds project understanding |
16
- | 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 |
17
24
 
18
25
  ## How It Works
19
26
 
20
- Squish uses a two-tier memory architecture for optimal performance:
21
- - **Fast Search Tier**: QMD (Quick Markdown Search) provides lightning-fast hybrid BM25 + vector search
22
- - **Persistent Storage Tier**: SQLite (local) or PostgreSQL (team) ensures durable, reliable memory storage
27
+ **Two-tier architecture** for optimal speed and durability:
23
28
 
24
29
  ```
25
- Agent Action -----> [Squish Memory Layer]
26
- |
27
- v
28
- ┌──────────────┐
29
- │ Trigger │ <-- "remember this", "important"
30
- Detection │
31
- └──────────────┘
32
- |
33
- v
34
- ┌──────────────┐
35
- │ Write Gate │ <-- Validate, sanitize, score
36
- └──────────────┘
37
- |
38
- v
39
- ┌─────────────────────┐
40
- │ Dual Storage Write │
41
- │ ──→ QMD Index │ (fast search)
42
- │ ──→ SQLite/Postgres│ (durable storage)
43
- └─────────────────────┘
44
- |
45
- v
46
- ┌─────────────────────┐
47
- │ Hybrid Retrieval │
48
- │ QMD Search + │
49
- │ Vector Ranking │
50
- └─────────────────────┘
51
- |
52
- v
53
- Agent Context
54
- ```
55
-
56
- ## Key Features
57
-
58
- ### Memory Intelligence
59
- - **Trigger Detection**: Auto-detects "remember", "important", corrections
60
- - **Contradiction Resolution**: Auto-updates when facts change
61
- - **Temporal Facts**: Handles time-bound information ("until January")
62
- - **Confidence Scoring**: Knows how reliable each memory is
63
-
64
- ### Retrieval Quality
65
- - **Hybrid Search**: Vector + keyword (BM25) with fusion
66
- - **Multi-factor Ranking**: Semantic, recency, importance, confidence
67
- - **Telemetry**: Tracks which memories are actually useful
30
+ User Action ──► Trigger Detection ──► Write Gate ──► Short-term (QMD)
31
+
32
+ Long-term (SQLite/PG)
33
+
34
+ Hybrid Retrieval
35
+
36
+ Agent Context
37
+ ```
68
38
 
69
- ### Agent Safety
70
- - **Write Gate**: Validates content before storage
71
- - **Secret Detection**: Auto-redacts API keys, passwords
72
- - **Graceful Degradation**: Works even when database fails
39
+ - **Short-term (QMD)**: Lightning-fast file-based search. Instant recall for recent context.
40
+ - **Long-term (SQLite/PG)**: Durable storage. SQLite for local, PostgreSQL for teams.
73
41
 
74
42
  ## Quick Start
75
43
 
76
- ### Universal Plugin Installer (Recommended)
77
- ```bash
78
- # Install for your AI assistant(s)
79
- npx squish-memory install-plugin --client=claude-code # Claude Code
80
- npx squish-memory install-plugin --client=openclaw # OpenClaw
81
- npx squish-memory install-plugin --client=opencode # OpenCode
82
- npx squish-memory install-plugin --client=all # All supported clients
83
-
84
- # Verify installation
85
- npx squish-memory install-plugin --client=claude-code --verify
86
- ```
87
-
88
- ### For Claude Code (Plugin) - Legacy Method
89
- ```bash
90
- # Install from marketplace
91
- /plugin marketplace add https://github.com/michielhdoteth/squish.git
92
- /plugin install squish@michielhdoteth-squish
93
- ```
44
+ ### Install with add-mcp (Recommended)
45
+ One command installs to Claude Code, OpenCode, Cursor, VS Code, Codex, and more:
94
46
 
95
- ### For OpenClaw (npm) - Legacy Method
96
47
  ```bash
97
- npm install -g squish-memory
48
+ npx add-mcp squish-memory
98
49
  ```
99
50
 
100
- Add to your OpenClaw MCP config - done.
51
+ Or traditional npm install:
101
52
 
102
- ### Universal CLI
103
53
  ```bash
104
- # Works with any agent framework
105
- squish remember "User prefers TypeScript"
106
- squish search "preferences"
107
- squish health
54
+ bun add squish-memory
108
55
  ```
109
56
 
110
- ### Universal API
111
57
  ```bash
112
- # Start the universal HTTP server
113
- bun run universal:server
58
+ # Store a memory
59
+ squish remember "User prefers TypeScript over JavaScript"
114
60
 
115
- # Add memory via HTTP (stored in both QMD index and SQLite)
116
- curl -X POST http://localhost:3000/api/memories \
117
- -H "Content-Type: application/json" \
118
- -d '{"content": "User prefers TypeScript", "type": "preference", "container": "my-project"}'
61
+ # Save a quick note
62
+ squish note "Revisit caching strategy after launch"
119
63
 
120
- # Search memories via HTTP (uses QMD for fast hybrid search)
121
- curl "http://localhost:3000/api/memories/search?q=TypeScript"
122
- ```
123
-
124
- **That's it.** One install, persistent memory for any AI agent.
125
-
126
- ## MCP Tools for Agents
127
-
128
- | Tool | What It Does |
129
- |------|--------------|
130
- | `remember` | Store a memory |
131
- | `search` | Find relevant memories |
132
- | `recall` | Get specific memory by ID |
133
- | `core_memory` | Always-visible context (persona, user info) |
134
- | `context` | Get project-relevant memories |
135
- | `observe` | Record patterns from tool usage |
136
-
137
- ## Execution Model
138
-
139
- - **Universal First**: Works with any AI agent via MCP, CLI, or HTTP API
140
- - **Transport Agnostic**: MCP (stdio/SSE), CLI, or HTTP/WebSocket - choose your preference
141
- - **Storage Flexible**: SQLite for local, PostgreSQL for team deployments
142
-
143
- ## Universal Plugin Architecture
64
+ # Record an observation
65
+ squish learn observation "Updated auth flow" --action edit
144
66
 
145
- Squish now provides a **universal plugin system** that works as a plugin across all major AI assistant frameworks through a single manifest-driven installer.
67
+ # Record a fix or lesson learned
68
+ squish learn fix "Patched auth middleware regression"
146
69
 
147
- ### How It Works
148
- 1. Single `plugin-manifest.json` defines the plugin for all clients
149
- 2. `npx squish-memory install-plugin --client=<target>` handles installation
150
- 3. Auto-installs dependencies (mcporter, qmd) with pinned versions
151
- 4. Generates client-specific configurations automatically
152
- 5. Provides unified verification and troubleshooting
70
+ # Search memories
71
+ squish search "coding preferences"
153
72
 
154
- ### Supported Clients
155
- | Client | Installation Method | Status |
156
- |--------|-------------------|---------|
157
- | Claude Code | Plugin hooks (.claude-plugin/) | ✅ Stable |
158
- | OpenClaw | Memory slot via MCP bridge | ✅ Stable |
159
- | OpenCode | MCP server config | ✅ Stable |
160
- | Codex | MCP server config | ✅ Stable |
161
- | Cursor | MCP server config | ✅ Beta |
162
- | VS Code | MCP server config | ✅ Beta |
163
- | Windsurf | MCP server config | ✅ Beta |
164
-
165
- ### Quick Installation Examples
166
- ```bash
167
- # Install for Claude Code (recommended for Claude users)
168
- npx squish-memory install-plugin --client=claude-code --verify
169
-
170
- # Install for OpenClaw (recommended for OpenClaw users)
171
- npx squish-memory install-plugin --client=openclaw --verify
172
-
173
- # Install for all supported clients
174
- npx squish-memory install-plugin --client=all --verify
175
-
176
- # Install for multiple specific clients
177
- npx squish-memory install-plugin --client=claude-code,openclaw,opencode --verify
178
- ```
73
+ # List projects, then inspect relevant context
74
+ squish context --list-projects
75
+ squish context
179
76
 
180
- ### Benefits
181
- - **One manifest to rule them all**: Single source of truth
182
- - **Zero manual configuration**: Automatic dependency installation
183
- - **Version pinned dependencies**: Stable, reproducible builds
184
- - **Unified verification**: One command to check all clients
185
- - **Backward compatible**: Existing integrations still work
186
-
187
- ## Universal API
188
-
189
- Squish now provides a universal HTTP API that works with any AI agent:
190
-
191
- ```typescript
192
- // Add memory via HTTP
193
- POST /api/memories
194
- {
195
- "content": "User prefers TypeScript",
196
- "type": "preference",
197
- "container": "my-project",
198
- "tags": ["preferences", "coding-style"]
199
- }
200
-
201
- // Search memories via HTTP
202
- GET /api/memories/search?query=TypeScript&limit=10
77
+ # Get relevant context or fetch by ID
78
+ squish recall "user preferences"
203
79
  ```
204
80
 
205
- **Universal Benefits:**
206
- - Works with any AI agent (Claude, OpenAI, Anthropic, custom)
207
- - HTTP RESTful API + WebSocket for real-time sync
208
- - PostgreSQL + pgvector for scalable memory
209
- - Docker-ready for easy deployment
210
-
211
- ### Docker Deployment
81
+ Or use as a plugin:
212
82
 
213
83
  ```bash
214
- # Quick start with Docker Compose
215
- docker-compose -f docker-compose.universal.yml up
84
+ # Install for Claude Code
85
+ npx squish-memory install-plugin --client=claude-code
216
86
 
217
- # Or deploy to cloud
218
- docker build -t squish-universal .
219
- docker run -p 3000:3000 squish-universal
87
+ # Install for OpenCode
88
+ npx squish-memory install-plugin --client=opencode
220
89
  ```
221
90
 
222
- ## Open-Core Model
91
+ ## Features
92
+
93
+ ### Memory Intelligence
94
+ - Auto-detects "remember this", "important", corrections
95
+ - Handles contradictions when facts change
96
+ - Temporal facts with expiration ("until January")
97
+ - Confidence scoring for each memory
98
+ - **Tier lifecycle**: hot/warm/cold memory tiers with automatic decay
99
+ - **Graph-boosted retrieval**: associations between memories boost relevance
223
100
 
224
- - **OSS Core (MIT)**: local mode, self-hosted workflows, MCP/CLI tooling
225
- - **Commercial Remote**: managed remote control plane, enterprise ops, support
226
- - **Universal API**: HTTP REST + WebSocket for any AI agent
227
- - **Sponsor development**: https://github.com/sponsors/michielhdoteth
101
+ ### Retrieval Quality
102
+ - Hybrid search: semantic + keyword (BM25) with Reciprocal Rank Fusion
103
+ - Multi-factor ranking: relevance, recency, importance, graph-boost
104
+ - LLM-powered context extraction with Ollama (local)
105
+ - **Graph associations**: memories linked by coactivation boost search results
106
+
107
+ ### Security & Encryption
108
+ - **Client-side encryption**: AES-256-GCM encryption for sensitive memories
109
+ - **Passphrase management**: `squish_set_passphrase` and `squish_rotate_key` MCP tools
110
+ - Optional encryption via `SQUISH_ENCRYPTION_PASSPHRASE` env var
111
+
112
+ ### Universal Compatibility
113
+ - **CLI**: `squish config`, `squish remember`, `squish note`, `squish learn`, `squish search`, `squish context`, `squish stats`
114
+ - **MCP Server**: Works with Claude Code, OpenCode, Cursor, VS Code, OpenClaw
115
+ - **HTTP API**: REST API + WebSocket for any agent
116
+ - **SQLite**: Local, zero-config
117
+ - **PostgreSQL**: Team mode with Supabase/pgvector
118
+ - **QMD Integration**: Native .md file search via QMD
119
+
120
+ ### Current MCP Tools
121
+ - `squish_remember`, `squish_search`, `squish_recall`, `squish_forget`, `squish_update`
122
+ - `squish_link`, `squish_context`, `squish_learn`, `squish_health`, `squish_stats`
123
+ - `squish_confidence`, `squish_pin`, `squish_set_passphrase`, `squish_rotate_key`
124
+ - `squish_recent`, `squish_stale`, `squish_note`, `squish_tag`
125
+
126
+ ## Benchmark Results
127
+
128
+ Real tests using [LoCoMo](https://github.com/snap-research/locomo) benchmark (22 questions):
129
+
130
+ | Metric | Result |
131
+ |--------|--------|
132
+ | **LoCoMo Score** | **77%** |
133
+ | Embedding Latency | 1-5ms |
134
+ | API Latency | 1-20ms |
135
+ | Max Throughput | 943 ops/sec |
136
+ | Package Size | **283 KB** |
137
+
138
+ ### vs Cloud Solutions
139
+
140
+ | | Squish | Cloud Memory |
141
+ |--|--------|-------------|
142
+ | **Cost** | $0 | API fees |
143
+ | **Local-first** | Yes | No |
144
+ | **Setup** | 1 command | 3+ steps |
145
+ | **API keys** | None | Required |
146
+ | **LoCoMo** | 77% | 75-81% |
147
+
148
+ Squish matches cloud solutions on accuracy while running 100% locally with zero API costs.
149
+
150
+ ## Supported Clients
151
+
152
+ | Client | Status |
153
+ |--------|--------|
154
+ | Claude Code | Stable |
155
+ | OpenCode | Stable |
156
+ | OpenClaw | Stable |
157
+ | Cursor | Beta |
158
+ | VS Code | Beta |
159
+ | Windsurf | Beta |
228
160
 
229
161
  ## Configuration
230
162
 
231
- ### Environment Variables
163
+ **Zero config required** - works out of the box with local embeddings.
232
164
 
233
- **Required (local mode - default):**
234
- - None! Works out-of-the-box with local TF-IDF embeddings
165
+ For customization:
235
166
 
236
- **Universal API:**
237
167
  ```bash
238
- # For universal HTTP API mode
239
- DATABASE_URL=postgresql://user:pass@host/db # Required for universal mode
240
- REDIS_URL=redis://localhost:6379 # Optional for caching
241
- PORT=3000 # API server port
242
- ```
243
-
244
- **Configuration File (config/settings.json):**
245
- ```json
246
- {
247
- "embeddings": {
248
- "provider": "local",
249
- "models": {
250
- "openai": { "model": "text-embedding-3-small" },
251
- "google": { "model": "gemini-embedding-001" },
252
- "ollama": { "model": "nomic-embed-text:v1.5" }
253
- }
254
- }
255
- }
256
- ```
257
-
258
- **Environment Variables (override settings.json):**
259
- ```bash
260
- SQUISH_DATA_DIR=./.squish # Custom data directory
261
- SQUISH_EMBEDDINGS_PROVIDER=local # local, openai, ollama, google, none, auto
262
-
263
- # Model selection (optional, uses defaults if not set)
264
- SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
265
- SQUISH_GOOGLE_EMBEDDING_MODEL=gemini-embedding-001
266
- SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
267
-
268
- # API credentials (for cloud providers)
269
- SQUISH_OPENAI_API_KEY=sk-...
168
+ # Environment variables
169
+ SQUISH_DATA_DIR=./.squish
170
+ SQUISH_EMBEDDINGS_PROVIDER=ollama # openai, ollama, google, local
270
171
  SQUISH_OLLAMA_URL=http://localhost:11434
271
- GOOGLE_CLOUD_PROJECT=your-project
272
- GOOGLE_CLOUD_API_KEY=your-key
273
-
274
- # Embedding performance & reliability
275
- SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
276
- SQUISH_EMBEDDINGS_MAX_RETRIES=3
277
- SQUISH_EMBEDDINGS_RETRY_DELAY_MS=1000
278
-
279
- # Core memory size (default: 16KB total, 4KB per section)
280
- SQUISH_CORE_MEMORY_TOTAL_BYTES=16384
281
- SQUISH_CORE_MEMORY_SECTION_BYTES=4096
282
172
 
283
- # For team mode
173
+ # Team mode
284
174
  DATABASE_URL=postgresql://user:pass@host/db
285
175
  ```
286
176
 
287
177
  ## Architecture
288
178
 
289
- ### Two-Tier Memory System
290
- Squish employs a two-tier architecture for optimal performance and reliability:
291
- - **Fast Search Tier**: QMD (Quick Markdown Search) provides hybrid BM25 + vector search with sub-second response times
292
- - **Persistent Storage Tier**: SQLite (local mode) or PostgreSQL (team mode) ensures durable, ACID-compliant memory storage
179
+ ### Two-Tier Memory
180
+ - **QMD (Files)**: BM25 + vectors for fast recall
181
+ - **SQLite/PostgreSQL**: ACID-compliant persistent storage
293
182
 
294
- ### Universal Interfaces
295
- - **MCP Server**: Native integration for Claude Code, OpenClaw, and any MCP-compatible agent
296
- - **HTTP REST API**: Universal JSON API works with any AI agent capable of HTTP requests
297
- - **WebSocket**: Real-time memory sync and notifications for collaborative agents
298
- - **CLI**: Standalone command-line tool for shell-based agents and debugging
299
-
300
- ### Memory Organization
301
- - **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.
302
- - **Context Paging**: Agent-controlled retrieval with token budgeting (8KB default)
303
- - **Background Jobs**: Automatic memory maintenance including decay, deduplication, and consolidation
183
+ ### Interfaces
184
+ - **MCP**: Native agent integration
185
+ - **HTTP**: REST + WebSocket
186
+ - **CLI**: Shell and scripts
304
187
 
305
188
  ### Memory Lifecycle
306
- - **Sectors**: episodic, semantic, procedural, autobiographical, working memory
307
- - **Tiers**: hot (recently accessed), warm (accessible), cold (archived but searchable)
308
- - **Status**: active, merged, superseded, expired (with automatic handling)
309
-
310
- ### Deployment Flexibility
311
- - **Local SQLite**: Zero-configuration, perfect for individual agents and edge deployment
312
- - **PostgreSQL**: Horizontal scaling for teams and enterprise deployments
313
- - **Docker**: Single-command deployment with docker-compose.universal.yml
314
- - **Cloud**: Ready for AWS/GCP/Azure with standard PostgreSQL compatibility
189
+ - **Sectors**: episodic, semantic, procedural, autobiographical
190
+ - **Tiers**: hot (recent), warm (accessible), cold (archived)
191
+ - **Status**: active, merged, superseded, expired
315
192
 
316
193
  ## Development
317
194
 
318
195
  ```bash
319
- # Install dependencies
320
196
  bun install
321
-
322
- # Build
323
197
  bun run build
324
-
325
- # Test
326
198
  bun test
327
-
328
- # Verify MCP
329
199
  bun run verify:mcp
330
200
  ```
331
201
 
332
202
  ## Troubleshooting
333
203
 
334
- ### Database Issues
335
- - **SQLite corrupted**: Delete `.squish/squish.db` and restart
336
- - **PostgreSQL connection**: Verify DATABASE_URL format
204
+ ```bash
205
+ # Reset local database
206
+ rm -rf .squish/squish.db
207
+
208
+ # Verify MCP setup
209
+ bun run verify:mcp
210
+
211
+ # Check health
212
+ squish health
213
+ ```
214
+
215
+ ## CLI Command Families
337
216
 
338
- ### MCP Issues
339
- - **Hooks not working**: Run `bun run build` first
340
- - **API prompts**: Set `SQUISH_EMBEDDINGS_PROVIDER=local`
217
+ - Setup/runtime: `squish`, `squish config`, `squish install`, `squish run mcp`, `squish run web`
218
+ - Capture/retrieval: `squish remember`, `squish note`, `squish learn`, `squish search`, `squish recall`, `squish recent`
219
+ - Memory management: `squish update`, `squish forget`, `squish pin`, `squish confidence`, `squish tag`, `squish stale`, `squish link`
220
+ - Context/project discovery: `squish context --list-projects`, `squish context`
221
+ - System: `squish health`, `squish stats`
341
222
 
342
223
  ## License
343
224
 
344
- MIT for OSS core. See `LICENSE` for details.
225
+ MIT License. See [LICENSE](LICENSE).
345
226
 
346
227
  ## Links
347
228
 
348
- - GitHub: https://github.com/michielhdoteth/squish
349
- - Issues: https://github.com/michielhdoteth/squish/issues
350
- - Sponsors: https://github.com/sponsors/michielhdoteth
229
+ - [Documentation](https://github.com/michielhdoteth/squish)
230
+ - [Benchmarks](docs/BENCHMARK.md)
231
+ - [Issues](https://github.com/michielhdoteth/squish/issues)
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "squish-hooks-claude-code",
3
+ "version": "1.0.0",
4
+ "description": "Squish memory hooks for Claude Code",
5
+ "agent": "claude-code",
6
+ "hooks": {
7
+ "sessionStart": {
8
+ "enabled": true,
9
+ "matchers": ["startup", "resume", "compact"],
10
+ "command": "squish hooks session-start --agent claude-code"
11
+ },
12
+ "postToolUse": {
13
+ "enabled": true,
14
+ "captureFilter": {
15
+ "tools": ["Write", "Edit", "MultiEdit", "Bash", "Task", "TodoWrite"],
16
+ "exclude": ["Read", "Glob", "grep", "WebSearch", "WebFetch"]
17
+ },
18
+ "command": "squish hooks post-tool-use --agent claude-code"
19
+ },
20
+ "sessionEnd": {
21
+ "enabled": true,
22
+ "command": "squish hooks session-end --agent claude-code"
23
+ },
24
+ "preCompact": {
25
+ "enabled": true,
26
+ "matchers": ["auto"],
27
+ "command": "squish hooks pre-compact --agent claude-code"
28
+ }
29
+ },
30
+ "mcpServers": {
31
+ "squish-memory": {
32
+ "command": "squish",
33
+ "args": ["run", "mcp"],
34
+ "env": {
35
+ "SQUISH_PROJECT_DIR": "${CLAUDE_PROJECT_DIR}"
36
+ }
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "squish-hooks-cursor",
3
+ "version": "1.0.0",
4
+ "description": "Squish memory hooks for Cursor",
5
+ "agent": "cursor",
6
+ "hooks": {
7
+ "sessionStart": {
8
+ "enabled": true,
9
+ "command": "squish hooks session-start --agent cursor"
10
+ },
11
+ "postToolUse": {
12
+ "enabled": true,
13
+ "captureFilter": {
14
+ "tools": ["Write", "Edit", "Bash", "Task"],
15
+ "exclude": ["Read", "Glob", "Grep"]
16
+ },
17
+ "command": "squish hooks post-tool-use --agent cursor"
18
+ },
19
+ "sessionEnd": {
20
+ "enabled": true,
21
+ "command": "squish hooks session-end --agent cursor"
22
+ }
23
+ },
24
+ "mcpServers": {
25
+ "squish": {
26
+ "command": "squish",
27
+ "args": ["run", "mcp"]
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "squish-hooks-opencode",
3
+ "version": "1.0.0",
4
+ "description": "Squish memory hooks for OpenCode",
5
+ "agent": "opencode",
6
+ "hooks": {
7
+ "sessionStart": {
8
+ "enabled": true,
9
+ "command": "squish hooks session-start --agent opencode"
10
+ },
11
+ "postToolUse": {
12
+ "enabled": true,
13
+ "captureFilter": {
14
+ "tools": ["Write", "Edit", "Bash", "Task"],
15
+ "exclude": ["Read", "Glob", "grep"]
16
+ },
17
+ "command": "squish hooks post-tool-use --agent opencode"
18
+ },
19
+ "sessionEnd": {
20
+ "enabled": true,
21
+ "command": "squish hooks session-end --agent opencode"
22
+ }
23
+ },
24
+ "mcpServers": {
25
+ "squish": {
26
+ "command": "squish",
27
+ "args": ["run", "mcp"]
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "squish-hooks-windsurf",
3
+ "version": "1.0.0",
4
+ "description": "Squish memory hooks for Windsurf",
5
+ "agent": "windsurf",
6
+ "hooks": {
7
+ "sessionStart": {
8
+ "enabled": true,
9
+ "command": "squish hooks session-start --agent windsurf"
10
+ },
11
+ "postToolUse": {
12
+ "enabled": true,
13
+ "captureFilter": {
14
+ "tools": ["Write", "Edit", "Bash", "Task"],
15
+ "exclude": ["Read", "Glob", "Grep"]
16
+ },
17
+ "command": "squish hooks post-tool-use --agent windsurf"
18
+ },
19
+ "sessionEnd": {
20
+ "enabled": true,
21
+ "command": "squish hooks session-end --agent windsurf"
22
+ }
23
+ },
24
+ "mcpServers": {
25
+ "squish": {
26
+ "command": "squish",
27
+ "args": ["run", "mcp"]
28
+ }
29
+ }
30
+ }