squish-memory 1.0.2 → 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 (341) hide show
  1. package/.env.example +130 -0
  2. package/CHANGELOG.md +55 -0
  3. package/README.md +150 -287
  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/tools.js +35 -3
  98. package/dist/core/memory/categorizer.js +1 -0
  99. package/dist/core/memory/conflict-detector.js +1 -1
  100. package/dist/core/memory/consolidation.d.ts +1 -10
  101. package/dist/core/memory/consolidation.js +2 -11
  102. package/dist/core/memory/context-collector.js +1 -1
  103. package/dist/core/memory/edit-workflow.js +1 -1
  104. package/dist/core/memory/entity-resolver.js +7 -7
  105. package/dist/core/memory/fact-extractor.js +12 -12
  106. package/dist/core/memory/feedback-tracker.js +1 -1
  107. package/dist/core/memory/hooks.d.ts +88 -0
  108. package/dist/core/memory/hooks.js +174 -0
  109. package/dist/core/memory/hybrid-retrieval.js +2 -2
  110. package/dist/core/memory/hybrid-search.d.ts +1 -6
  111. package/dist/core/memory/hybrid-search.js +70 -84
  112. package/dist/core/memory/importance.d.ts +8 -13
  113. package/dist/core/memory/importance.js +47 -74
  114. package/dist/core/memory/loader.d.ts +31 -0
  115. package/dist/core/memory/loader.js +141 -0
  116. package/dist/core/memory/markdown/markdown-storage.d.ts +72 -0
  117. package/dist/core/memory/markdown/markdown-storage.js +243 -0
  118. package/dist/core/memory/memories.d.ts +12 -4
  119. package/dist/core/memory/memories.js +192 -180
  120. package/dist/core/memory/memory-lifecycle.d.ts +8 -0
  121. package/dist/core/memory/memory-lifecycle.js +55 -0
  122. package/dist/core/memory/migrate.d.ts +21 -0
  123. package/dist/core/memory/migrate.js +134 -0
  124. package/dist/core/memory/normalization.d.ts +22 -0
  125. package/dist/core/memory/normalization.js +26 -0
  126. package/dist/core/memory/progressive-disclosure.js +1 -1
  127. package/dist/core/memory/query-rewriter.js +9 -9
  128. package/dist/core/memory/serialization.d.ts +4 -0
  129. package/dist/core/memory/serialization.js +49 -0
  130. package/dist/core/memory/stats.d.ts +5 -0
  131. package/dist/core/memory/stats.js +63 -12
  132. package/dist/core/memory/temporal-facts.js +21 -0
  133. package/dist/core/memory/write-gate.js +1 -1
  134. package/dist/core/obsidian-vault.d.ts +30 -0
  135. package/dist/core/obsidian-vault.js +94 -0
  136. package/dist/core/places/index.d.ts +14 -0
  137. package/dist/core/places/index.js +14 -0
  138. package/dist/core/places/memory-places.d.ts +68 -0
  139. package/dist/core/places/memory-places.js +261 -0
  140. package/dist/core/places/places.d.ts +88 -0
  141. package/dist/core/places/places.js +314 -0
  142. package/dist/core/places/rules.d.ts +74 -0
  143. package/dist/core/places/rules.js +240 -0
  144. package/dist/core/places/walking.d.ts +56 -0
  145. package/dist/core/places/walking.js +121 -0
  146. package/dist/core/projects.d.ts +5 -0
  147. package/dist/core/projects.js +39 -18
  148. package/dist/core/responses.d.ts +96 -0
  149. package/dist/core/responses.js +122 -0
  150. package/dist/core/scheduler/cron-scheduler.js +29 -7
  151. package/dist/core/scheduler/index.d.ts +1 -1
  152. package/dist/core/scheduler/index.js +1 -1
  153. package/dist/core/scheduler/job-runner.js +1 -1
  154. package/dist/core/search/conversations.js +40 -42
  155. package/dist/core/search/entities.js +6 -9
  156. package/dist/core/search/graph-boost.d.ts +7 -0
  157. package/dist/core/search/graph-boost.js +23 -0
  158. package/dist/core/search/qmd-search.js +4 -4
  159. package/dist/core/security/encrypt.d.ts +6 -0
  160. package/dist/core/security/encrypt.js +47 -0
  161. package/dist/core/{governance.d.ts → security/governance.d.ts} +6 -1
  162. package/dist/core/security/governance.js +79 -0
  163. package/dist/core/session/auto-load.js +6 -6
  164. package/dist/core/session/index.d.ts +1 -1
  165. package/dist/core/session/index.js +1 -1
  166. package/dist/core/session/self-iteration-job.d.ts +20 -0
  167. package/dist/core/session/self-iteration-job.js +282 -0
  168. package/dist/core/session/session-hooks.d.ts +18 -0
  169. package/dist/core/session/session-hooks.js +58 -0
  170. package/dist/core/session-hooks/self-iteration-job.js +35 -35
  171. package/dist/core/{cache.js → storage/cache.js} +2 -2
  172. package/dist/core/sync/qmd-sync.d.ts +1 -13
  173. package/dist/core/sync/qmd-sync.js +1 -13
  174. package/dist/core/toon.d.ts +43 -0
  175. package/dist/core/toon.js +160 -0
  176. package/dist/core/utils/memory-operations.js +1 -1
  177. package/dist/core/utils/vector-operations.d.ts +71 -0
  178. package/dist/core/utils/vector-operations.js +129 -0
  179. package/dist/db/adapter.d.ts +3 -3
  180. package/dist/db/adapter.js +99 -88
  181. package/dist/db/bootstrap.js +820 -522
  182. package/dist/{drizzle → db/drizzle}/schema-sqlite.d.ts +74 -25
  183. package/dist/{drizzle → db/drizzle}/schema-sqlite.js +91 -24
  184. package/dist/{drizzle → db/drizzle}/schema.d.ts +79 -32
  185. package/dist/{drizzle → db/drizzle}/schema.js +106 -35
  186. package/dist/db/drizzle.config.d.ts +3 -0
  187. package/dist/db/drizzle.config.js +12 -0
  188. package/dist/db/index.d.ts +1 -5
  189. package/dist/db/index.js +51 -8
  190. package/dist/db/neon.d.ts +8 -0
  191. package/dist/db/neon.js +20 -0
  192. package/dist/db/schema/index.d.ts +40 -0
  193. package/dist/db/schema/index.js +105 -0
  194. package/dist/db/schema/tables/context-sessions.d.ts +9 -0
  195. package/dist/db/schema/tables/context-sessions.js +37 -0
  196. package/dist/db/schema/tables/conversations.d.ts +9 -0
  197. package/dist/db/schema/tables/conversations.js +47 -0
  198. package/dist/db/schema/tables/core-memory.d.ts +9 -0
  199. package/dist/db/schema/tables/core-memory.js +41 -0
  200. package/dist/db/schema/tables/entities.d.ts +9 -0
  201. package/dist/db/schema/tables/entities.js +39 -0
  202. package/dist/db/schema/tables/entity-relations.d.ts +9 -0
  203. package/dist/db/schema/tables/entity-relations.js +31 -0
  204. package/dist/db/schema/tables/learnings.d.ts +9 -0
  205. package/dist/db/schema/tables/learnings.js +66 -0
  206. package/dist/db/schema/tables/memories.d.ts +9 -0
  207. package/dist/db/schema/tables/memories.js +161 -0
  208. package/dist/db/schema/tables/memory-associations.d.ts +9 -0
  209. package/dist/db/schema/tables/memory-associations.js +39 -0
  210. package/dist/db/schema/tables/memory-hash-cache.d.ts +9 -0
  211. package/dist/db/schema/tables/memory-hash-cache.js +29 -0
  212. package/dist/db/schema/tables/memory-merge-history.d.ts +9 -0
  213. package/dist/db/schema/tables/memory-merge-history.js +33 -0
  214. package/dist/db/schema/tables/memory-merge-proposals.d.ts +9 -0
  215. package/dist/db/schema/tables/memory-merge-proposals.js +39 -0
  216. package/dist/db/schema/tables/messages.d.ts +9 -0
  217. package/dist/db/schema/tables/messages.js +41 -0
  218. package/dist/db/schema/tables/namespaces.d.ts +9 -0
  219. package/dist/db/schema/tables/namespaces.js +37 -0
  220. package/dist/db/schema/tables/projects.d.ts +9 -0
  221. package/dist/db/schema/tables/projects.js +31 -0
  222. package/dist/db/schema/tables/users.d.ts +9 -0
  223. package/dist/db/schema/tables/users.js +27 -0
  224. package/dist/db/schema.d.ts +1 -1
  225. package/dist/db/schema.js +2 -2
  226. package/dist/db/supabase.d.ts +9 -0
  227. package/dist/db/supabase.js +24 -0
  228. package/dist/index.d.ts +2 -14
  229. package/dist/index.js +1320 -640
  230. package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
  231. package/dist/webui/server.d.ts +5 -0
  232. package/dist/{api/web/web.js → webui/server.js} +511 -508
  233. package/generated/mcp/manifest.json +1 -1
  234. package/{.mcp.json → mcp.json.example} +1 -1
  235. package/package.json +159 -181
  236. package/scripts/README.md +60 -0
  237. package/scripts/copy-runtime-assets.mjs +26 -0
  238. package/scripts/generate-mcp.mjs +264 -264
  239. package/scripts/github-release.sh +4 -4
  240. package/scripts/install-claude-code.sh +85 -0
  241. package/scripts/install-cursor.sh +56 -0
  242. package/scripts/install-hooks.sh +73 -0
  243. package/scripts/install-interactive.mjs +357 -677
  244. package/scripts/install-opencode.sh +75 -0
  245. package/scripts/install-windsurf.sh +67 -0
  246. package/skills/squish-memory/SKILL.md +104 -114
  247. package/skills/squish-memory/{install.mjs → scripts/install.mjs} +2 -2
  248. package/skills/squish-memory/{install.sh → scripts/install.sh} +2 -2
  249. package/skills/squish-memory/write_skill.js +2 -0
  250. package/.claude-plugin/marketplace.json +0 -20
  251. package/.claude-plugin/plugin.json +0 -32
  252. package/.env.mcp.example +0 -60
  253. package/QUICK-START.md +0 -71
  254. package/bin/squish-add.mjs +0 -32
  255. package/bin/squish-rm.mjs +0 -21
  256. package/commands/observe.md +0 -5
  257. package/dist/api/web/index.d.ts +0 -3
  258. package/dist/api/web/index.js +0 -4
  259. package/dist/api/web/web-server.d.ts +0 -3
  260. package/dist/api/web/web-server.js +0 -6
  261. package/dist/api/web/web.d.ts +0 -4
  262. package/dist/commands/mcp-server.js +0 -393
  263. package/dist/core/context.js +0 -24
  264. package/dist/core/governance.js +0 -64
  265. package/dist/core/observations.d.ts +0 -26
  266. package/dist/core/observations.js +0 -110
  267. package/dist/core/requirements.d.ts +0 -20
  268. package/dist/core/requirements.js +0 -35
  269. package/hooks/hooks.json +0 -52
  270. package/hooks/post-tool-use.js +0 -26
  271. package/hooks/session-end.js +0 -28
  272. package/hooks/session-start.js +0 -33
  273. package/hooks/user-prompt-submit.js +0 -26
  274. package/hooks/utils.js +0 -153
  275. package/npx-installer.js +0 -208
  276. package/packages/plugin-claude-code/README.md +0 -73
  277. package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +0 -35
  278. package/packages/plugin-claude-code/dist/plugin-wrapper.js +0 -191
  279. package/packages/plugin-claude-code/package.json +0 -31
  280. package/packages/plugin-openclaw/README.md +0 -70
  281. package/packages/plugin-openclaw/dist/index.d.ts +0 -49
  282. package/packages/plugin-openclaw/dist/index.js +0 -262
  283. package/packages/plugin-openclaw/openclaw.plugin.json +0 -94
  284. package/packages/plugin-openclaw/package.json +0 -31
  285. package/packages/plugin-opencode/install.mjs +0 -217
  286. package/packages/plugin-opencode/package.json +0 -21
  287. package/scripts/db/check-db.mjs +0 -88
  288. package/scripts/db/fix-all-columns.mjs +0 -52
  289. package/scripts/db/fix-schema-all.mjs +0 -55
  290. package/scripts/db/fix-schema-full.mjs +0 -46
  291. package/scripts/db/fix-schema.mjs +0 -38
  292. package/scripts/db/init-db.mjs +0 -13
  293. package/scripts/db/recreate-db.mjs +0 -14
  294. package/scripts/install-mcp.mjs +0 -116
  295. package/scripts/install-web.sh +0 -120
  296. package/scripts/install.mjs +0 -340
  297. package/scripts/openclaw-bootstrap.mjs +0 -127
  298. package/scripts/package-release.sh +0 -71
  299. package/scripts/test/test-all-systems.mjs +0 -139
  300. package/scripts/test/test-memory-system.mjs +0 -139
  301. package/scripts/test/test-v0.5.0.mjs +0 -210
  302. package/skills/memory-guide/SKILL.md +0 -332
  303. package/skills/squish-cli/SKILL.md +0 -240
  304. package/skills/squish-mcp/SKILL.md +0 -355
  305. package/skills/squish-memory/claude-desktop.json +0 -12
  306. package/skills/squish-memory/openclaw.json +0 -13
  307. package/skills/squish-memory/opencode.json +0 -14
  308. package/skills/squish-memory/skill.json +0 -32
  309. /package/{commands → core/commands}/context-paging.md +0 -0
  310. /package/{commands → core/commands}/context-status.md +0 -0
  311. /package/{commands → core/commands}/context.md +0 -0
  312. /package/{commands → core/commands}/core-memory.md +0 -0
  313. /package/{commands → core/commands}/health.md +0 -0
  314. /package/{commands → core/commands}/merge.md +0 -0
  315. /package/{commands → core/commands}/recall.md +0 -0
  316. /package/{commands → core/commands}/remember.md +0 -0
  317. /package/{commands → core/commands}/search.md +0 -0
  318. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.d.ts +0 -0
  319. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.js +0 -0
  320. /package/dist/{algorithms → core/algorithms}/handlers/approve-merge.d.ts +0 -0
  321. /package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.d.ts +0 -0
  322. /package/dist/{algorithms → core/algorithms}/handlers/get-stats.d.ts +0 -0
  323. /package/dist/{algorithms → core/algorithms}/handlers/list-proposals.d.ts +0 -0
  324. /package/dist/{algorithms → core/algorithms}/handlers/preview-merge.d.ts +0 -0
  325. /package/dist/{algorithms → core/algorithms}/handlers/reject-merge.d.ts +0 -0
  326. /package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.d.ts +0 -0
  327. /package/dist/{algorithms → core/algorithms}/safety/safety-checks.js +0 -0
  328. /package/dist/{algorithms → core/algorithms}/utils/response-builder.d.ts +0 -0
  329. /package/dist/{algorithms → core/algorithms}/utils/response-builder.js +0 -0
  330. /package/dist/{commands → core/commands}/managed-sync.d.ts +0 -0
  331. /package/dist/{commands → core/commands}/mcp-server.d.ts +0 -0
  332. /package/dist/core/{context.d.ts → context/context.d.ts} +0 -0
  333. /package/dist/core/{agent-memory.d.ts → ingestion/agent-memory.d.ts} +0 -0
  334. /package/dist/core/{core-memory.d.ts → ingestion/core-memory.d.ts} +0 -0
  335. /package/dist/core/{privacy.d.ts → security/privacy.d.ts} +0 -0
  336. /package/dist/core/{privacy.js → security/privacy.js} +0 -0
  337. /package/dist/core/{secret-detector.d.ts → security/secret-detector.d.ts} +0 -0
  338. /package/dist/core/{secret-detector.js → security/secret-detector.js} +0 -0
  339. /package/dist/core/{cache.d.ts → storage/cache.d.ts} +0 -0
  340. /package/dist/core/{database.d.ts → storage/database.d.ts} +0 -0
  341. /package/dist/core/{database.js → storage/database.js} +0 -0
package/README.md CHANGED
@@ -1,368 +1,231 @@
1
- # Squish - Universal Two-Tier Memory for AI Agents
1
+ # Squish - Universal Memory 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
+ **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.
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 Memory Matters
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
25
  ## How It Works
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
+ **Two-tier architecture** for optimal speed and durability:
30
28
 
31
29
  ```
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
63
-
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
69
-
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
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
+ ```
74
38
 
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
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.
79
41
 
80
42
  ## Quick Start
81
43
 
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
- ```
93
-
94
- ### Universal Plugin Installer (Recommended)
95
- ```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
104
- ```
105
-
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
- ```
44
+ ### Install with add-mcp (Recommended)
45
+ One command installs to Claude Code, OpenCode, Cursor, VS Code, Codex, and more:
112
46
 
113
- ### For OpenClaw (npm) - Legacy Method
114
47
  ```bash
115
- npm install -g squish-memory
48
+ npx add-mcp squish-memory
116
49
  ```
117
50
 
118
- Add to your OpenClaw MCP config - done.
51
+ Or traditional npm install:
119
52
 
120
- ### Universal CLI
121
53
  ```bash
122
- # Works with any agent framework
123
- squish remember "User prefers TypeScript"
124
- squish search "preferences"
125
- squish health
54
+ bun add squish-memory
126
55
  ```
127
56
 
128
- ### Universal API
129
57
  ```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
145
-
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 |
154
-
155
- ## Execution Model
156
-
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
58
+ # Store a memory
59
+ squish remember "User prefers TypeScript over JavaScript"
171
60
 
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 |
61
+ # Save a quick note
62
+ squish note "Revisit caching strategy after launch"
182
63
 
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
64
+ # Record an observation
65
+ squish learn observation "Updated auth flow" --action edit
187
66
 
188
- # Install for OpenClaw (recommended for OpenClaw users)
189
- npx squish-memory install-plugin --client=openclaw --verify
67
+ # Record a fix or lesson learned
68
+ squish learn fix "Patched auth middleware regression"
190
69
 
191
- # Install for all supported clients
192
- npx squish-memory install-plugin --client=all --verify
70
+ # Search memories
71
+ squish search "coding preferences"
193
72
 
194
- # Install for multiple specific clients
195
- npx squish-memory install-plugin --client=claude-code,openclaw,opencode --verify
196
- ```
73
+ # List projects, then inspect relevant context
74
+ squish context --list-projects
75
+ squish context
197
76
 
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
77
+ # Get relevant context or fetch by ID
78
+ squish recall "user preferences"
221
79
  ```
222
80
 
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
81
+ Or use as a plugin:
230
82
 
231
83
  ```bash
232
- # Quick start with Docker Compose
233
- docker-compose -f docker-compose.universal.yml up
84
+ # Install for Claude Code
85
+ npx squish-memory install-plugin --client=claude-code
234
86
 
235
- # Or deploy to cloud
236
- docker build -t squish-universal .
237
- docker run -p 3000:3000 squish-universal
87
+ # Install for OpenCode
88
+ npx squish-memory install-plugin --client=opencode
238
89
  ```
239
90
 
240
- ## Open-Core Model
91
+ ## Features
241
92
 
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
246
-
247
- ## Configuration
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
248
100
 
249
- ### Environment Variables
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 |
250
160
 
251
- **Required (local mode - default):**
252
- - None! Works out-of-the-box with local TF-IDF embeddings
161
+ ## Configuration
253
162
 
254
- **Universal API:**
255
- ```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
- ```
163
+ **Zero config required** - works out of the box with local embeddings.
261
164
 
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
- ```
165
+ For customization:
275
166
 
276
- **Environment Variables (override settings.json):**
277
167
  ```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-...
168
+ # Environment variables
169
+ SQUISH_DATA_DIR=./.squish
170
+ SQUISH_EMBEDDINGS_PROVIDER=ollama # openai, ollama, google, local
288
171
  SQUISH_OLLAMA_URL=http://localhost:11434
289
- GOOGLE_CLOUD_PROJECT=your-project
290
- GOOGLE_CLOUD_API_KEY=your-key
291
172
 
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
173
+ # Team mode
302
174
  DATABASE_URL=postgresql://user:pass@host/db
303
175
  ```
304
176
 
305
177
  ## Architecture
306
178
 
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.
179
+ ### Two-Tier Memory
180
+ - **QMD (Files)**: BM25 + vectors for fast recall
181
+ - **SQLite/PostgreSQL**: ACID-compliant persistent storage
311
182
 
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
317
-
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
183
+ ### Interfaces
184
+ - **MCP**: Native agent integration
185
+ - **HTTP**: REST + WebSocket
186
+ - **CLI**: Shell and scripts
322
187
 
323
188
  ### 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
189
+ - **Sectors**: episodic, semantic, procedural, autobiographical
190
+ - **Tiers**: hot (recent), warm (accessible), cold (archived)
191
+ - **Status**: active, merged, superseded, expired
333
192
 
334
193
  ## Development
335
194
 
336
195
  ```bash
337
- # Install dependencies
338
196
  bun install
339
-
340
- # Build
341
197
  bun run build
342
-
343
- # Test
344
198
  bun test
345
-
346
- # Verify MCP
347
199
  bun run verify:mcp
348
200
  ```
349
201
 
350
202
  ## Troubleshooting
351
203
 
352
- ### Database Issues
353
- - **SQLite corrupted**: Delete `.squish/squish.db` and restart
354
- - **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
355
216
 
356
- ### MCP Issues
357
- - **Hooks not working**: Run `bun run build` first
358
- - **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`
359
222
 
360
223
  ## License
361
224
 
362
- MIT for OSS core. See `LICENSE` for details.
225
+ MIT License. See [LICENSE](LICENSE).
363
226
 
364
227
  ## Links
365
228
 
366
- - GitHub: https://github.com/michielhdoteth/squish
367
- - Issues: https://github.com/michielhdoteth/squish/issues
368
- - 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
+ }