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
@@ -0,0 +1,75 @@
1
+ #!/bin/bash
2
+ # Install Squish hooks for OpenCode
3
+ # Run from the squish project directory
4
+
5
+ set -e
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ SQUISH_DIR="${SQUISH_DIR:-$HOME/.squish}"
9
+ HOOKS_CONFIG="$SCRIPT_DIR/config/hooks/opencode-hooks.json"
10
+
11
+ echo "Installing Squish hooks for OpenCode..."
12
+
13
+ # Create Squish config directory
14
+ mkdir -p "$SQUISH_DIR"
15
+
16
+ # Copy hook config
17
+ if [ -f "$HOOKS_CONFIG" ]; then
18
+ cp "$HOOKS_CONFIG" "$SQUISH_DIR/hooks-opencode.json"
19
+ echo "Copied hook config to $SQUISH_DIR/hooks-opencode.json"
20
+ else
21
+ echo "ERROR: Hook config not found at $HOOKS_CONFIG"
22
+ exit 1
23
+ fi
24
+
25
+ # Check for OpenCode settings file
26
+ SETTINGS_FILE="$HOME/.opencode/settings.json"
27
+
28
+ if [ -f "$SETTINGS_FILE" ]; then
29
+ echo ""
30
+ echo "Found OpenCode settings at $SETTINGS_FILE"
31
+ echo ""
32
+ echo "To enable Squish memory, add this to your settings.json:"
33
+ echo ""
34
+ cat << 'SETTINGS_JSON'
35
+ {
36
+ "mcpServers": {
37
+ "squish": {
38
+ "command": "squish",
39
+ "args": ["run", "mcp"]
40
+ }
41
+ },
42
+ "memory": {
43
+ "enabled": true,
44
+ "autoCapture": true
45
+ }
46
+ }
47
+ SETTINGS_JSON
48
+ else
49
+ echo ""
50
+ echo "Creating default OpenCode settings..."
51
+ mkdir -p "$HOME/.opencode"
52
+ cat > "$SETTINGS_FILE" << 'DEFAULT_SETTINGS'
53
+ {
54
+ "mcpServers": {
55
+ "squish": {
56
+ "command": "squish",
57
+ "args": ["run", "mcp"]
58
+ }
59
+ },
60
+ "memory": {
61
+ "enabled": true,
62
+ "autoCapture": true
63
+ }
64
+ }
65
+ DEFAULT_SETTINGS
66
+ echo "Created $SETTINGS_FILE"
67
+ fi
68
+
69
+ echo ""
70
+ echo "Installation complete!"
71
+ echo ""
72
+ echo "Next steps:"
73
+ echo "1. Restart OpenCode"
74
+ echo "2. Run 'squish health' to verify"
75
+ echo ""
@@ -0,0 +1,67 @@
1
+ #!/bin/bash
2
+ # Install Squish hooks for Windsurf
3
+ # Run from the squish project directory
4
+
5
+ set -e
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ SQUISH_DIR="${SQUISH_DIR:-$HOME/.squish}"
9
+ HOOKS_CONFIG="$SCRIPT_DIR/config/hooks/windsurf-hooks.json"
10
+
11
+ echo "Installing Squish hooks for Windsurf..."
12
+
13
+ # Create Squish config directory
14
+ mkdir -p "$SQUISH_DIR"
15
+
16
+ # Copy hook config
17
+ if [ -f "$HOOKS_CONFIG" ]; then
18
+ cp "$HOOKS_CONFIG" "$SQUISH_DIR/hooks-windsurf.json"
19
+ echo "Copied hook config to $SQUISH_DIR/hooks-windsurf.json"
20
+ else
21
+ echo "ERROR: Hook config not found at $HOOKS_CONFIG"
22
+ exit 1
23
+ fi
24
+
25
+ # Check for Windsurf config
26
+ CONFIG_FILE="$HOME/.windsurf/config.json"
27
+
28
+ if [ -f "$CONFIG_FILE" ]; then
29
+ echo ""
30
+ echo "Found Windsurf config at $CONFIG_FILE"
31
+ echo ""
32
+ echo "To enable Squish memory, add to your config:"
33
+ echo ""
34
+ cat << 'CONFIG_JSON'
35
+ {
36
+ "mcpServers": {
37
+ "squish": {
38
+ "command": "squish",
39
+ "args": ["run", "mcp"]
40
+ }
41
+ }
42
+ }
43
+ CONFIG_JSON
44
+ else
45
+ echo ""
46
+ echo "Creating default Windsurf config..."
47
+ mkdir -p "$HOME/.windsurf"
48
+ cat > "$CONFIG_FILE" << 'DEFAULT_CONFIG'
49
+ {
50
+ "mcpServers": {
51
+ "squish": {
52
+ "command": "squish",
53
+ "args": ["run", "mcp"]
54
+ }
55
+ }
56
+ }
57
+ DEFAULT_CONFIG
58
+ echo "Created $CONFIG_FILE"
59
+ fi
60
+
61
+ echo ""
62
+ echo "Installation complete!"
63
+ echo ""
64
+ echo "Next steps:"
65
+ echo "1. Restart Windsurf"
66
+ echo "2. Run 'squish health' to verify"
67
+ echo ""
@@ -1,114 +1,104 @@
1
- ---
2
- name: squish-memory
3
- description: Squish - Persistent memory system for AI assistants. Store facts, decisions, and context with semantic search. Works with Claude Code, OpenCode, OpenClaw, and any MCP client.
4
- version: 1.0.2
5
- author: michielhdoteth
6
- tags: [memory, persistence, search, semantic-search, ai-assistant, mcp, cli]
7
- emoji: brain
8
- ---
9
-
10
- # Squish Memory v1.0.2
11
-
12
- Persistent memory system for AI coding assistants. Store facts, decisions, context, and preferences with semantic search.
13
-
14
- ## What is Squish?
15
-
16
- Squish provides persistent memory for AI agents with:
17
- - **Hybrid Search**: BM25 + vector embeddings with graph expansion
18
- - **Memory Types**: observation, fact, decision, context, preference
19
- - **Graph Associations**: Link related memories together
20
- - **Core Memory**: Always-visible context sections
21
- - **Importance Scoring**: Auto-score memories with temporal decay
22
- - **Consolidation**: Summarize old, low-importance memories
23
- - **Namespace Support**: Hierarchical organization of memories
24
- - **Maintenance Scheduling**: Automated cleanup and optimization tasks
25
-
26
- ## Install
27
-
28
- ```bash
29
- npm install -g squish-memory
30
- # or
31
- bun add -g squish-memory
32
- ```
33
-
34
- ## Quick Setup
35
-
36
- ### Interactive Wizard (Recommended)
37
- ```bash
38
- squish
39
- ```
40
- Launches the interactive installer menu.
41
-
42
- ### Direct Server Start
43
- ```bash
44
- # MCP server (for Claude Code, etc.)
45
- squish run mcp
46
-
47
- # Web UI only
48
- squish run web
49
- ```
50
-
51
- ### MCP Clients
52
- Configure in your client's MCP settings:
53
- - **Command**: `squish-mcp`
54
- - **Args**: (none needed)
55
- - **Environment**:
56
- - `SQUISH_MODE=local` or `team`
57
- - `SQUISH_DATA_DIR=~/.squish`
58
-
59
- ## Skills Available
60
-
61
- This repo contains 4 skills for different use cases:
62
-
63
- | Skill | Description | Install |
64
- |-------|-------------|---------|
65
- | `squish-memory` | Overview & quick start | `npx skills add michielhdoteth/squish --skill squish-memory` |
66
- | `squish-mcp` | MCP tools (16 tools) | `npx skills add michielhdoteth/squish --skill squish-mcp` |
67
- | `squish-cli` | CLI commands | `npx skills add michielhdoteth/squish --skill squish-cli` |
68
- | `memory-guide` | Usage guide & best practices | `npx skills add michielhdoteth/squish --skill memory-guide` |
69
-
70
- ## MCP Tools (16)
71
-
72
- - squish_remember - Store memory
73
- - squish_search - Hybrid search
74
- - squish_recall - Get by ID
75
- - squish_forget - Delete memory
76
- - squish_update - Update memory
77
- - squish_associate - Link memories
78
- - squish_related - Find related
79
- - squish_context - Project context
80
- - squish_observe - Record observation
81
- - squish_qmd_search - Search docs
82
- - squish_embed - Generate embeddings
83
- - squish_health - Check status
84
- - squish_stats - View stats
85
- - squish_projects - List projects
86
-
87
- ## CLI Commands
88
-
89
- - `squish` - Interactive wizard/menu
90
- - `squish run mcp` - Start MCP server
91
- - `squish run web` - Start Web UI only
92
- - `squish remember` - Store memory
93
- - `squish search` - Find memories
94
- - `squish recall` - Get by ID
95
- - `squish health` - Check service status
96
- - `squish stats` - View memory statistics
97
- - `squish core_memory` - Manage always-visible context
98
- - `squish add` - Interactive installer (alias)
99
- - `squish rm` - Remove memory
100
-
101
- ## Configuration
102
-
103
- | Env Variable | Description | Default |
104
- |--------------|-------------|---------|
105
- | SQUISH_MODE | local or team | local |
106
- | SQUISH_DATA_DIR | Data directory | ~/.squish |
107
- | SQUISH_EMBEDDINGS_PROVIDER | local or openai | local |
108
- | SQUISH_QMD_ENABLED | Enable QMD search | true |
109
-
110
- ## More Info
111
-
112
- - GitHub: https://github.com/michielhdoteth/squish
113
- - npm: https://www.npmjs.com/package/squish-memory
114
- - Docs: https://github.com/michielhdoteth/squish/tree/main/docs
1
+ ---
2
+ name: squish-memory
3
+ description: Squish - Persistent memory system for AI assistants. Store facts, decisions, context, and notes with CLI and MCP workflows.
4
+ version: 1.1.5
5
+ author: michielhdoteth
6
+ tags: [memory, persistence, search, semantic-search, ai-assistant, mcp, cli]
7
+ emoji: brain
8
+ ---
9
+
10
+ # Squish Memory v1.1.5
11
+
12
+ Persistent memory for AI coding assistants with local SQLite/Postgres storage, hybrid retrieval, and MCP integration.
13
+
14
+ ## Quick Setup
15
+
16
+ ```bash
17
+ npm install -g squish-memory
18
+
19
+ # Start the MCP server
20
+ squish run mcp
21
+
22
+ # Or start the web UI only
23
+ squish run web
24
+ ```
25
+
26
+ ## Skills Available
27
+
28
+ | Skill | Description | Install |
29
+ |-------|-------------|---------|
30
+ | `squish-memory` | Overview and quick start | `npx skills add michielhdoteth/squish --skill squish-memory` |
31
+ | `squish-mcp` | Current MCP tool reference (18 tools) | `npx skills add michielhdoteth/squish --skill squish-mcp` |
32
+ | `squish-cli` | CLI command reference | `npx skills add michielhdoteth/squish --skill squish-cli` |
33
+ | `memory-guide` | Usage patterns and best practices | `npx skills add michielhdoteth/squish --skill memory-guide` |
34
+
35
+ ## MCP Tools (18)
36
+
37
+ - `squish_remember` - Store memory
38
+ - `squish_search` - Search memories
39
+ - `squish_recall` - Fetch memory by ID
40
+ - `squish_forget` - Delete memory
41
+ - `squish_update` - Update memory
42
+ - `squish_link` - Find, add, or list associations
43
+ - `squish_context` - Load project context or list projects
44
+ - `squish_learn` - Record success, failure, fix, or observation
45
+ - `squish_health` - Check health
46
+ - `squish_stats` - View stats
47
+ - `squish_confidence` - Get or set confidence
48
+ - `squish_pin` - Pin or unpin memory
49
+ - `squish_set_passphrase` - Configure encryption passphrase
50
+ - `squish_rotate_key` - Rotate encryption key
51
+ - `squish_recent` - List recent memories
52
+ - `squish_stale` - Show stale memories
53
+ - `squish_note` - Save a quick note
54
+ - `squish_tag` - Bulk tag operations
55
+
56
+ ## CLI Commands
57
+
58
+ - `squish` - Interactive wizard
59
+ - `squish run mcp` - Start MCP server
60
+ - `squish run web` - Start web UI
61
+ - `squish config` - View or update config
62
+ - `squish remember` - Store memory
63
+ - `squish note` - Save quick note
64
+ - `squish learn` - Record learnings and observations
65
+ - `squish search` - Search memories
66
+ - `squish recall` - Search or fetch by ID
67
+ - `squish recent` - Show recent memories
68
+ - `squish update` - Update memory
69
+ - `squish forget` - Delete memory
70
+ - `squish pin` - Pin or unpin memory
71
+ - `squish confidence` - View or set confidence
72
+ - `squish tag` - Bulk tag management
73
+ - `squish stale` - Show stale memories
74
+ - `squish link` - Graph operations
75
+ - `squish context --list-projects` - List projects
76
+ - `squish context` - Load project context
77
+ - `squish health` - Check service health
78
+ - `squish stats` - View statistics
79
+
80
+ ## Example Workflow
81
+
82
+ ```bash
83
+ squish remember "User prefers TypeScript over JavaScript" --type preference
84
+ squish note "Revisit caching strategy after launch"
85
+ squish learn observation "Updated auth flow" --action edit
86
+ squish search "coding preferences"
87
+ squish context --list-projects
88
+ squish context
89
+ ```
90
+
91
+ ## Configuration
92
+
93
+ | Env Variable | Description | Default |
94
+ |--------------|-------------|---------|
95
+ | `SQUISH_MODE` | local or team | `local` |
96
+ | `SQUISH_DATA_DIR` | Data directory | `.squish` in current workspace |
97
+ | `SQUISH_EMBEDDINGS_PROVIDER` | `local`, `openai`, `ollama`, `google`, `none`, `auto` | `local` |
98
+ | `SQUISH_QMD_ENABLED` | Enable QMD integration | `false` unless set |
99
+
100
+ ## More Info
101
+
102
+ - GitHub: https://github.com/michielhdoteth/squish
103
+ - npm: https://www.npmjs.com/package/squish-memory
104
+ - Docs: https://github.com/michielhdoteth/squish/tree/main/docs
@@ -215,8 +215,8 @@ function printSuccess(openclawDir) {
215
215
  console.log(" squish stats - View statistics");
216
216
  console.log("");
217
217
  log("cyan", "MCP Tools (via mcporter):");
218
- console.log(" remember, search, recall, observe");
219
- console.log(" context, health, core_memory, forget");
218
+ console.log(" remember, search, recall, learn");
219
+ console.log(" context, health, stats, note");
220
220
  console.log("");
221
221
  log("blue", "Documentation: https://github.com/michielhdoteth/squish");
222
222
  console.log("");
@@ -117,7 +117,7 @@ echo " squish search \"query\" - Search memories"
117
117
  echo " squish stats - View statistics"
118
118
  echo ""
119
119
  echo "MCP Tools (via mcporter):"
120
- echo " remember, search, recall, observe"
121
- echo " context, health, core_memory, forget"
120
+ echo " remember, search, recall, learn"
121
+ echo " context, health, stats, note"
122
122
  echo ""
123
123
  echo "Documentation: $GITHUB_REPO"
@@ -0,0 +1,2 @@
1
+ const fs = require('fs');
2
+ const content =
@@ -1,20 +0,0 @@
1
- {
2
- "name": "squish-memory",
3
- "owner": {
4
- "name": "michielhdoteth"
5
- },
6
- "plugins": [
7
- {
8
- "name": "squish",
9
- "version": "0.9.0",
10
- "description": "The memory layer for AI agents. Give Claude Code persistent, intelligent memory with trigger detection, contradiction resolution, and hybrid search. Works with any MCP client.",
11
- "author": {
12
- "name": "michielhdoteth"
13
- },
14
- "license": "MIT",
15
- "homepage": "https://github.com/michielhdoteth/squish",
16
- "repository": "https://github.com/michielhdoteth/squish.git",
17
- "source": "./"
18
- }
19
- ]
20
- }
@@ -1,32 +0,0 @@
1
- {
2
- "name": "squish",
3
- "version": "0.9.0",
4
- "description": "The memory layer for AI agents - persistent, intelligent memory with trigger detection, contradiction resolution, and hybrid search",
5
- "author": {
6
- "name": "michielhdoteth",
7
- "url": "https://github.com/michielhdoteth"
8
- },
9
- "license": "MIT",
10
- "homepage": "https://github.com/michielhdoteth/squish#readme",
11
- "repository": "https://github.com/michielhdoteth/squish.git",
12
- "keywords": [
13
- "claude",
14
- "claude-code",
15
- "claude-plugin",
16
- "mcp-server",
17
- "memory",
18
- "persistent-memory",
19
- "core-memory",
20
- "context-management",
21
- "semantic-search",
22
- "full-text-search",
23
- "local-first",
24
- "privacy",
25
- "agent-memory",
26
- "slash-commands",
27
- "two-tier-architecture",
28
- "model-context-protocol"
29
- ],
30
- "commands": "./commands/",
31
- "mcpServers": "./.mcp.json"
32
- }
package/.env.mcp.example DELETED
@@ -1,60 +0,0 @@
1
- # MCP Server Configuration
2
- SQUISH_MCP_PORT=8767
3
- SQUISH_MCP_SERVER_ENABLED=true
4
-
5
- # CORS Configuration (comma-separated origins, * wildcard for port)
6
- # Default: localhost and 127.0.0.1 on any port
7
- # SQUISH_CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:8080
8
-
9
- # Embeddings Provider: local | openai | ollama | google | none | auto
10
- # Default: local (TF-IDF, no API needed)
11
- SQUISH_EMBEDDINGS_PROVIDER=local
12
-
13
- # Model Selection (optional - uses defaults if not set)
14
- # SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
15
- # SQUISH_GOOGLE_EMBEDDING_MODEL=gemini-embedding-001
16
- # SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
17
-
18
- # Google Cloud (for google provider)
19
- # Get API key from: https://console.cloud.google.com/apis/credentials
20
- # GOOGLE_CLOUD_PROJECT=your-project-id
21
- # GOOGLE_CLOUD_LOCATION=us-central1
22
- # GOOGLE_CLOUD_API_KEY=your-api-key
23
- # Or use service account:
24
- # GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
25
-
26
- # OpenAI (for openai provider or auto mode)
27
- # SQUISH_OPENAI_API_KEY=sk-...
28
- # SQUISH_OPENAI_API_URL=https://api.openai.com/v1/embeddings
29
-
30
- # Ollama (for ollama provider or auto mode)
31
- # SQUISH_OLLAMA_URL=http://localhost:11434
32
-
33
- # Embedding performance & reliability
34
- SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
35
- SQUISH_EMBEDDINGS_MAX_RETRIES=3
36
- SQUISH_EMBEDDINGS_RETRY_DELAY_MS=1000
37
- # Per-provider overrides (optional)
38
- # SQUISH_OPENAI_TIMEOUT_MS=30000
39
- # SQUISH_OLLAMA_TIMEOUT_MS=30000
40
- # SQUISH_GOOGLE_TIMEOUT_MS=30000
41
-
42
- # QMD for local markdown search
43
- SQUISH_QMD_ENABLED=true
44
- SQUISH_QMD_COLLECTIONS=./qmd-collections
45
- SQUISH_QMD_FALLBACK=hybrid
46
-
47
- # Managed Mode (Squish Cloud - optional)
48
- # SQUISH_MANAGED_MODE=true
49
- # SQUISH_MANAGED_API_URL=https://api.squish.dev
50
- # SQUISH_MANAGED_API_KEY=your-api-key
51
-
52
- # Lifecycle & Summarization
53
- SQUISH_LIFECYCLE_ENABLED=true
54
- SQUISH_SUMMARIZATION_ENABLED=true
55
- SQUISH_GOVERNANCE_ENABLED=true
56
-
57
- # Core Memory Configuration (v0.9.2+)
58
- # Increase limits for daily agent usage (default: 16KB total, 4KB per section)
59
- # SQUISH_CORE_MEMORY_TOTAL_BYTES=16384
60
- # SQUISH_CORE_MEMORY_SECTION_BYTES=4096
package/QUICK-START.md DELETED
@@ -1,71 +0,0 @@
1
- # Squish - Quick Start
2
-
3
- Universal two-tier memory for any AI agent.
4
-
5
- ## Start in 30 seconds
6
-
7
- ```bash
8
- # 1. Install
9
- bun install
10
-
11
- # 2. Build
12
- bun run build
13
-
14
- # 3. Start MCP server (works with Claude Code, OpenClaw, or any MCP client)
15
- bun run mcp
16
-
17
- # ✓ Running on http://localhost:8767
18
- ```
19
-
20
- ## Test it
21
-
22
- ```bash
23
- # Health check
24
- curl http://localhost:8767/health
25
-
26
- # Expected output:
27
- {
28
- "status": "ok",
29
- "server": "squish-mcp",
30
- "version": "0.9.2",
31
- "tools": 6
32
- }
33
- ```
34
-
35
- ## Use it
36
-
37
- ```bash
38
- # Search memories
39
- curl -X POST http://localhost:8767/tools/call \
40
- -H "Content-Type: application/json" \
41
- -d '{
42
- "name": "squish_search",
43
- "arguments": {
44
- "query": "authentication"
45
- }
46
- }'
47
- ```
48
-
49
- ## Configure
50
-
51
- Copy `.env.mcp.example` to `.env` and customize:
52
-
53
- ```bash
54
- cp .env.mcp.example .env
55
- ```
56
-
57
- Key settings:
58
-
59
- - **SQUISH_MCP_PORT**: Server port (default: 8767)
60
- - **SQUISH_MCP_SERVER_ENABLED**: Enable/disable MCP server (default: true)
61
- - **SQUISH_EMBEDDINGS_PROVIDER**: local|openai|ollama|google-multimodal|hybrid (default: local)
62
- - **SQUISH_MULTIMODAL_EMBEDDINGS_ENABLED**: Enable Google multimodal (default: false)
63
- - **SQUISH_QMD_ENABLED**: Enable markdown search (true/false)
64
- - **SQUISH_CORE_MEMORY_TOTAL_BYTES**: Total core memory limit in bytes (default: 16384)
65
- - **SQUISH_CORE_MEMORY_SECTION_BYTES**: Per-section limit in bytes (default: 4096)
66
- - **SQUISH_EMBEDDINGS_TIMEOUT_MS**: Timeout for embedding API calls (default: 30000)
67
- - **SQUISH_EMBEDDINGS_MAX_RETRIES**: Max retries for failed embedding calls (default: 3)
68
-
69
- ## Full Docs
70
-
71
- See [docs/MCP-SERVER.md](docs/MCP-SERVER.md)
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env node
2
- // Wrapper for squish commands - launches interactive mode when no args
3
- import { spawn } from 'child_process';
4
- import { fileURLToPath } from 'url';
5
- import { dirname, join } from 'path';
6
-
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = dirname(__filename);
9
-
10
- const args = process.argv.slice(2);
11
-
12
- // If no args, launch interactive installer
13
- if (args.length === 0) {
14
- const interactivePath = join(__dirname, '..', 'scripts', 'install-interactive.mjs');
15
- const child = spawn('node', [interactivePath], {
16
- stdio: 'inherit',
17
- shell: false
18
- });
19
- child.on('exit', (code) => {
20
- process.exit(code ?? 0);
21
- });
22
- } else {
23
- // Pass through to install-plugin.mjs
24
- const scriptPath = join(__dirname, '..', 'scripts', 'install-plugin.mjs');
25
- const child = spawn('node', [scriptPath, ...args], {
26
- stdio: 'inherit',
27
- shell: false
28
- });
29
- child.on('exit', (code) => {
30
- process.exit(code ?? 0);
31
- });
32
- }
package/bin/squish-rm.mjs DELETED
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env node
2
- // Wrapper for squish remove command
3
- import { spawn } from 'child_process';
4
- import { fileURLToPath } from 'url';
5
- import { dirname, join } from 'path';
6
-
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = dirname(__filename);
9
-
10
- const args = process.argv.slice(2);
11
- const scriptPath = join(__dirname, 'scripts', 'install-plugin.mjs');
12
-
13
- // Add --uninstall flag
14
- const child = spawn('node', [scriptPath, '--uninstall', ...args], {
15
- stdio: 'inherit',
16
- shell: false
17
- });
18
-
19
- child.on('exit', (code) => {
20
- process.exit(code ?? 0);
21
- });
@@ -1,5 +0,0 @@
1
- ---
2
- description: Store observations from tool usage
3
- ---
4
-
5
- Store observations about tool usage, patterns, errors, and insights discovered during work. Automatically captured tool execution data can be annotated with additional context.
@@ -1,3 +0,0 @@
1
- export * from './web.js';
2
- export * from './web-server.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1,4 +0,0 @@
1
- // Web feature - Web UI and server
2
- export * from './web.js';
3
- export * from './web-server.js';
4
- //# sourceMappingURL=index.js.map
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=web-server.d.ts.map
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env node
2
- import { startWebServer } from './web.js';
3
- import { logger } from '../../core/logger.js';
4
- logger.info('Starting web UI server...');
5
- startWebServer();
6
- //# sourceMappingURL=web-server.js.map