squish-memory 1.0.0 → 1.0.2

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 (300) hide show
  1. package/.env.mcp.example +18 -11
  2. package/README.md +59 -24
  3. package/bin/squish-add.mjs +32 -0
  4. package/bin/squish-rm.mjs +21 -0
  5. package/config/plugin-manifest.json +1 -1
  6. package/config/settings.json +51 -0
  7. package/dist/api/web/web.js +479 -452
  8. package/dist/commands/mcp-server.js +7 -3
  9. package/dist/config.d.ts +10 -10
  10. package/dist/config.js +78 -23
  11. package/dist/core/embeddings.d.ts +1 -1
  12. package/dist/core/embeddings.js +10 -67
  13. package/dist/core/local-embeddings.d.ts +3 -11
  14. package/dist/core/local-embeddings.js +2 -76
  15. package/dist/core/mcp/server.js +27 -1
  16. package/dist/core/mcp/types.d.ts +4 -4
  17. package/dist/core/memory/context-collector.js +3 -2
  18. package/dist/core/memory/feedback-tracker.js +10 -6
  19. package/dist/core/memory/hybrid-search.js +32 -32
  20. package/dist/core/memory/memories.js +55 -52
  21. package/dist/core/memory/query-rewriter.js +9 -9
  22. package/dist/core/memory/stats.js +5 -5
  23. package/dist/core/namespaces/index.js +20 -11
  24. package/dist/core/scheduler/cron-scheduler.js +78 -20
  25. package/dist/core/scheduler/job-runner.js +8 -5
  26. package/dist/core/search/conversations.js +33 -33
  27. package/dist/core/session-hooks/self-iteration-job.js +43 -39
  28. package/dist/core/session-hooks/session-hooks.js +6 -3
  29. package/dist/core/tracing/collector.js +25 -13
  30. package/dist/db/adapter.d.ts +6 -1
  31. package/dist/db/adapter.js +122 -126
  32. package/dist/db/bootstrap.js +622 -548
  33. package/dist/db/index.d.ts +5 -1
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.js +195 -49
  36. package/generated/mcp/manifest.json +23 -23
  37. package/package.json +72 -59
  38. package/scripts/install-interactive.mjs +7 -4
  39. package/skills/memory-guide/SKILL.md +94 -18
  40. package/skills/squish-cli/SKILL.md +61 -21
  41. package/skills/squish-mcp/SKILL.md +46 -2
  42. package/skills/squish-memory/SKILL.md +30 -16
  43. package/dist/algorithms/analytics/token-estimator.d.ts.map +0 -1
  44. package/dist/algorithms/analytics/token-estimator.js.map +0 -1
  45. package/dist/algorithms/detection/hash-filters.d.ts.map +0 -1
  46. package/dist/algorithms/detection/hash-filters.js.map +0 -1
  47. package/dist/algorithms/detection/semantic-ranker.d.ts.map +0 -1
  48. package/dist/algorithms/detection/semantic-ranker.js.map +0 -1
  49. package/dist/algorithms/detection/two-stage-detector.d.ts.map +0 -1
  50. package/dist/algorithms/detection/two-stage-detector.js.map +0 -1
  51. package/dist/algorithms/handlers/approve-merge.d.ts.map +0 -1
  52. package/dist/algorithms/handlers/approve-merge.js.map +0 -1
  53. package/dist/algorithms/handlers/detect-duplicates.d.ts.map +0 -1
  54. package/dist/algorithms/handlers/detect-duplicates.js.map +0 -1
  55. package/dist/algorithms/handlers/get-stats.d.ts.map +0 -1
  56. package/dist/algorithms/handlers/get-stats.js.map +0 -1
  57. package/dist/algorithms/handlers/list-proposals.d.ts.map +0 -1
  58. package/dist/algorithms/handlers/list-proposals.js.map +0 -1
  59. package/dist/algorithms/handlers/preview-merge.d.ts.map +0 -1
  60. package/dist/algorithms/handlers/preview-merge.js.map +0 -1
  61. package/dist/algorithms/handlers/reject-merge.d.ts.map +0 -1
  62. package/dist/algorithms/handlers/reject-merge.js.map +0 -1
  63. package/dist/algorithms/handlers/reverse-merge.d.ts.map +0 -1
  64. package/dist/algorithms/handlers/reverse-merge.js.map +0 -1
  65. package/dist/algorithms/safety/safety-checks.d.ts.map +0 -1
  66. package/dist/algorithms/safety/safety-checks.js.map +0 -1
  67. package/dist/algorithms/strategies/merge-strategies.d.ts.map +0 -1
  68. package/dist/algorithms/strategies/merge-strategies.js.map +0 -1
  69. package/dist/algorithms/utils/response-builder.d.ts.map +0 -1
  70. package/dist/algorithms/utils/response-builder.js.map +0 -1
  71. package/dist/api/web/index.d.ts.map +0 -1
  72. package/dist/api/web/index.js.map +0 -1
  73. package/dist/api/web/web-server.d.ts.map +0 -1
  74. package/dist/api/web/web-server.js.map +0 -1
  75. package/dist/api/web/web.d.ts.map +0 -1
  76. package/dist/api/web/web.js.map +0 -1
  77. package/dist/commands/managed-sync.d.ts.map +0 -1
  78. package/dist/commands/managed-sync.js.map +0 -1
  79. package/dist/commands/mcp-server.d.ts.map +0 -1
  80. package/dist/commands/mcp-server.js.map +0 -1
  81. package/dist/config.d.ts.map +0 -1
  82. package/dist/config.js.map +0 -1
  83. package/dist/core/agent-memory.d.ts.map +0 -1
  84. package/dist/core/agent-memory.js.map +0 -1
  85. package/dist/core/associations.d.ts.map +0 -1
  86. package/dist/core/associations.js.map +0 -1
  87. package/dist/core/cache.d.ts.map +0 -1
  88. package/dist/core/cache.js.map +0 -1
  89. package/dist/core/consolidation.d.ts.map +0 -1
  90. package/dist/core/consolidation.js.map +0 -1
  91. package/dist/core/context-paging.d.ts.map +0 -1
  92. package/dist/core/context-paging.js.map +0 -1
  93. package/dist/core/context.d.ts.map +0 -1
  94. package/dist/core/context.js.map +0 -1
  95. package/dist/core/core-memory.d.ts.map +0 -1
  96. package/dist/core/core-memory.js.map +0 -1
  97. package/dist/core/database.d.ts.map +0 -1
  98. package/dist/core/database.js.map +0 -1
  99. package/dist/core/embeddings/google-multimodal.d.ts.map +0 -1
  100. package/dist/core/embeddings/google-multimodal.js.map +0 -1
  101. package/dist/core/embeddings/qmd-client.d.ts.map +0 -1
  102. package/dist/core/embeddings/qmd-client.js.map +0 -1
  103. package/dist/core/embeddings.d.ts.map +0 -1
  104. package/dist/core/embeddings.js.map +0 -1
  105. package/dist/core/governance.d.ts.map +0 -1
  106. package/dist/core/governance.js.map +0 -1
  107. package/dist/core/index.d.ts.map +0 -1
  108. package/dist/core/index.js.map +0 -1
  109. package/dist/core/layers/generator.d.ts.map +0 -1
  110. package/dist/core/layers/generator.js.map +0 -1
  111. package/dist/core/lifecycle.d.ts.map +0 -1
  112. package/dist/core/lifecycle.js.map +0 -1
  113. package/dist/core/local-embeddings.d.ts.map +0 -1
  114. package/dist/core/local-embeddings.js.map +0 -1
  115. package/dist/core/logger.d.ts.map +0 -1
  116. package/dist/core/logger.js.map +0 -1
  117. package/dist/core/mcp/client.d.ts.map +0 -1
  118. package/dist/core/mcp/client.js.map +0 -1
  119. package/dist/core/mcp/index.d.ts.map +0 -1
  120. package/dist/core/mcp/index.js.map +0 -1
  121. package/dist/core/mcp/server.d.ts.map +0 -1
  122. package/dist/core/mcp/server.js.map +0 -1
  123. package/dist/core/mcp/standalone-server.d.ts.map +0 -1
  124. package/dist/core/mcp/standalone-server.js.map +0 -1
  125. package/dist/core/mcp/tools.d.ts.map +0 -1
  126. package/dist/core/mcp/tools.js.map +0 -1
  127. package/dist/core/mcp/types.d.ts.map +0 -1
  128. package/dist/core/mcp/types.js.map +0 -1
  129. package/dist/core/memory/bridge-discovery.d.ts.map +0 -1
  130. package/dist/core/memory/bridge-discovery.js.map +0 -1
  131. package/dist/core/memory/categorizer.d.ts.map +0 -1
  132. package/dist/core/memory/categorizer.js.map +0 -1
  133. package/dist/core/memory/conflict-detector.d.ts.map +0 -1
  134. package/dist/core/memory/conflict-detector.js.map +0 -1
  135. package/dist/core/memory/consolidation.d.ts.map +0 -1
  136. package/dist/core/memory/consolidation.js.map +0 -1
  137. package/dist/core/memory/context-collector.d.ts.map +0 -1
  138. package/dist/core/memory/context-collector.js.map +0 -1
  139. package/dist/core/memory/contradiction-resolver.d.ts.map +0 -1
  140. package/dist/core/memory/contradiction-resolver.js.map +0 -1
  141. package/dist/core/memory/edit-workflow.d.ts.map +0 -1
  142. package/dist/core/memory/edit-workflow.js.map +0 -1
  143. package/dist/core/memory/entity-extractor.d.ts.map +0 -1
  144. package/dist/core/memory/entity-extractor.js.map +0 -1
  145. package/dist/core/memory/entity-resolver.d.ts.map +0 -1
  146. package/dist/core/memory/entity-resolver.js.map +0 -1
  147. package/dist/core/memory/fact-extractor.d.ts.map +0 -1
  148. package/dist/core/memory/fact-extractor.js.map +0 -1
  149. package/dist/core/memory/feedback-tracker.d.ts.map +0 -1
  150. package/dist/core/memory/feedback-tracker.js.map +0 -1
  151. package/dist/core/memory/hybrid-retrieval.d.ts.map +0 -1
  152. package/dist/core/memory/hybrid-retrieval.js.map +0 -1
  153. package/dist/core/memory/hybrid-scorer.d.ts.map +0 -1
  154. package/dist/core/memory/hybrid-scorer.js.map +0 -1
  155. package/dist/core/memory/hybrid-search.d.ts.map +0 -1
  156. package/dist/core/memory/hybrid-search.js.map +0 -1
  157. package/dist/core/memory/importance.d.ts.map +0 -1
  158. package/dist/core/memory/importance.js.map +0 -1
  159. package/dist/core/memory/index.d.ts.map +0 -1
  160. package/dist/core/memory/index.js.map +0 -1
  161. package/dist/core/memory/memories.d.ts.map +0 -1
  162. package/dist/core/memory/memories.js.map +0 -1
  163. package/dist/core/memory/memory-manager.d.ts.map +0 -1
  164. package/dist/core/memory/memory-manager.js.map +0 -1
  165. package/dist/core/memory/progressive-disclosure.d.ts.map +0 -1
  166. package/dist/core/memory/progressive-disclosure.js.map +0 -1
  167. package/dist/core/memory/query-processor.d.ts.map +0 -1
  168. package/dist/core/memory/query-processor.js.map +0 -1
  169. package/dist/core/memory/query-rewriter.d.ts.map +0 -1
  170. package/dist/core/memory/query-rewriter.js.map +0 -1
  171. package/dist/core/memory/response-analyzer.d.ts.map +0 -1
  172. package/dist/core/memory/response-analyzer.js.map +0 -1
  173. package/dist/core/memory/serialization.d.ts.map +0 -1
  174. package/dist/core/memory/serialization.js.map +0 -1
  175. package/dist/core/memory/stats.d.ts.map +0 -1
  176. package/dist/core/memory/stats.js.map +0 -1
  177. package/dist/core/memory/telemetry.d.ts.map +0 -1
  178. package/dist/core/memory/telemetry.js.map +0 -1
  179. package/dist/core/memory/temporal-facts.d.ts.map +0 -1
  180. package/dist/core/memory/temporal-facts.js.map +0 -1
  181. package/dist/core/memory/temporal-parser.d.ts.map +0 -1
  182. package/dist/core/memory/temporal-parser.js.map +0 -1
  183. package/dist/core/memory/trigger-detector.d.ts.map +0 -1
  184. package/dist/core/memory/trigger-detector.js.map +0 -1
  185. package/dist/core/memory/write-gate.d.ts.map +0 -1
  186. package/dist/core/memory/write-gate.js.map +0 -1
  187. package/dist/core/namespaces/index.d.ts.map +0 -1
  188. package/dist/core/namespaces/index.js.map +0 -1
  189. package/dist/core/namespaces/uri-parser.d.ts.map +0 -1
  190. package/dist/core/namespaces/uri-parser.js.map +0 -1
  191. package/dist/core/observations.d.ts.map +0 -1
  192. package/dist/core/observations.js.map +0 -1
  193. package/dist/core/privacy.d.ts.map +0 -1
  194. package/dist/core/privacy.js.map +0 -1
  195. package/dist/core/projects.d.ts.map +0 -1
  196. package/dist/core/projects.js.map +0 -1
  197. package/dist/core/redis.d.ts.map +0 -1
  198. package/dist/core/redis.js.map +0 -1
  199. package/dist/core/requirements.d.ts.map +0 -1
  200. package/dist/core/requirements.js.map +0 -1
  201. package/dist/core/scheduler/cron-scheduler.d.ts.map +0 -1
  202. package/dist/core/scheduler/cron-scheduler.js.map +0 -1
  203. package/dist/core/scheduler/heartbeat.d.ts.map +0 -1
  204. package/dist/core/scheduler/heartbeat.js.map +0 -1
  205. package/dist/core/scheduler/index.d.ts.map +0 -1
  206. package/dist/core/scheduler/index.js.map +0 -1
  207. package/dist/core/scheduler/job-runner.d.ts.map +0 -1
  208. package/dist/core/scheduler/job-runner.js.map +0 -1
  209. package/dist/core/search/conversations.d.ts.map +0 -1
  210. package/dist/core/search/conversations.js.map +0 -1
  211. package/dist/core/search/entities.d.ts.map +0 -1
  212. package/dist/core/search/entities.js.map +0 -1
  213. package/dist/core/search/folder-context.d.ts.map +0 -1
  214. package/dist/core/search/folder-context.js.map +0 -1
  215. package/dist/core/search/index.d.ts.map +0 -1
  216. package/dist/core/search/index.js.map +0 -1
  217. package/dist/core/search/qmd-search.d.ts.map +0 -1
  218. package/dist/core/search/qmd-search.js.map +0 -1
  219. package/dist/core/secret-detector.d.ts.map +0 -1
  220. package/dist/core/secret-detector.js.map +0 -1
  221. package/dist/core/session/auto-load.d.ts.map +0 -1
  222. package/dist/core/session/auto-load.js.map +0 -1
  223. package/dist/core/session/index.d.ts.map +0 -1
  224. package/dist/core/session/index.js.map +0 -1
  225. package/dist/core/session/types.d.ts.map +0 -1
  226. package/dist/core/session/types.js.map +0 -1
  227. package/dist/core/session-hooks/self-iteration-job.d.ts.map +0 -1
  228. package/dist/core/session-hooks/self-iteration-job.js.map +0 -1
  229. package/dist/core/session-hooks/session-hooks.d.ts.map +0 -1
  230. package/dist/core/session-hooks/session-hooks.js.map +0 -1
  231. package/dist/core/snapshots/cleanup.d.ts.map +0 -1
  232. package/dist/core/snapshots/cleanup.js.map +0 -1
  233. package/dist/core/snapshots/comparison.d.ts.map +0 -1
  234. package/dist/core/snapshots/comparison.js.map +0 -1
  235. package/dist/core/snapshots/creation.d.ts.map +0 -1
  236. package/dist/core/snapshots/creation.js.map +0 -1
  237. package/dist/core/snapshots/retrieval.d.ts.map +0 -1
  238. package/dist/core/snapshots/retrieval.js.map +0 -1
  239. package/dist/core/snapshots/stats.d.ts.map +0 -1
  240. package/dist/core/snapshots/stats.js.map +0 -1
  241. package/dist/core/snapshots.d.ts.map +0 -1
  242. package/dist/core/snapshots.js.map +0 -1
  243. package/dist/core/summarization/cleanup.d.ts.map +0 -1
  244. package/dist/core/summarization/cleanup.js.map +0 -1
  245. package/dist/core/summarization/queries.d.ts.map +0 -1
  246. package/dist/core/summarization/queries.js.map +0 -1
  247. package/dist/core/summarization/stats.d.ts.map +0 -1
  248. package/dist/core/summarization/stats.js.map +0 -1
  249. package/dist/core/summarization/strategies.d.ts.map +0 -1
  250. package/dist/core/summarization/strategies.js.map +0 -1
  251. package/dist/core/summarization.d.ts.map +0 -1
  252. package/dist/core/summarization.js.map +0 -1
  253. package/dist/core/sync/qmd-sync.d.ts.map +0 -1
  254. package/dist/core/sync/qmd-sync.js.map +0 -1
  255. package/dist/core/temporal-facts.d.ts.map +0 -1
  256. package/dist/core/temporal-facts.js.map +0 -1
  257. package/dist/core/tracing/collector.d.ts.map +0 -1
  258. package/dist/core/tracing/collector.js.map +0 -1
  259. package/dist/core/tracing/visualizer.d.ts.map +0 -1
  260. package/dist/core/tracing/visualizer.js.map +0 -1
  261. package/dist/core/utils/cleanup-operations.d.ts.map +0 -1
  262. package/dist/core/utils/cleanup-operations.js.map +0 -1
  263. package/dist/core/utils/content-extraction.d.ts.map +0 -1
  264. package/dist/core/utils/content-extraction.js.map +0 -1
  265. package/dist/core/utils/filter-builder.d.ts.map +0 -1
  266. package/dist/core/utils/filter-builder.js.map +0 -1
  267. package/dist/core/utils/history-traversal.d.ts.map +0 -1
  268. package/dist/core/utils/history-traversal.js.map +0 -1
  269. package/dist/core/utils/memory-operations.d.ts.map +0 -1
  270. package/dist/core/utils/memory-operations.js.map +0 -1
  271. package/dist/core/utils/query-operations.d.ts.map +0 -1
  272. package/dist/core/utils/query-operations.js.map +0 -1
  273. package/dist/core/utils/summarization-helpers.d.ts.map +0 -1
  274. package/dist/core/utils/summarization-helpers.js.map +0 -1
  275. package/dist/core/utils/temporal-queries.d.ts.map +0 -1
  276. package/dist/core/utils/temporal-queries.js.map +0 -1
  277. package/dist/core/utils/version-management.d.ts.map +0 -1
  278. package/dist/core/utils/version-management.js.map +0 -1
  279. package/dist/core/utils.d.ts.map +0 -1
  280. package/dist/core/utils.js.map +0 -1
  281. package/dist/core/worker.d.ts.map +0 -1
  282. package/dist/core/worker.js.map +0 -1
  283. package/dist/db/adapter.d.ts.map +0 -1
  284. package/dist/db/adapter.js.map +0 -1
  285. package/dist/db/bootstrap.d.ts.map +0 -1
  286. package/dist/db/bootstrap.js.map +0 -1
  287. package/dist/db/index.d.ts.map +0 -1
  288. package/dist/db/index.js.map +0 -1
  289. package/dist/db/schema.d.ts.map +0 -1
  290. package/dist/db/schema.js.map +0 -1
  291. package/dist/drizzle/schema-sqlite.d.ts.map +0 -1
  292. package/dist/drizzle/schema-sqlite.js.map +0 -1
  293. package/dist/drizzle/schema.d.ts.map +0 -1
  294. package/dist/drizzle/schema.js.map +0 -1
  295. package/dist/index.d.ts.map +0 -1
  296. package/dist/index.js.map +0 -1
  297. package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts.map +0 -1
  298. package/packages/plugin-claude-code/dist/plugin-wrapper.js.map +0 -1
  299. package/packages/plugin-openclaw/dist/index.d.ts.map +0 -1
  300. package/packages/plugin-openclaw/dist/index.js.map +0 -1
package/.env.mcp.example CHANGED
@@ -2,26 +2,33 @@
2
2
  SQUISH_MCP_PORT=8767
3
3
  SQUISH_MCP_SERVER_ENABLED=true
4
4
 
5
- # Embeddings - Hybrid mode for best quality
6
- SQUISH_EMBEDDINGS_PROVIDER=hybrid
7
- SQUISH_MULTIMODAL_EMBEDDINGS_ENABLED=true
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
8
 
9
- # Google Cloud Multimodal (1408-dim vectors)
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)
10
19
  # Get API key from: https://console.cloud.google.com/apis/credentials
11
- GOOGLE_CLOUD_PROJECT=your-project-id
12
- GOOGLE_CLOUD_LOCATION=us-central1
20
+ # GOOGLE_CLOUD_PROJECT=your-project-id
21
+ # GOOGLE_CLOUD_LOCATION=us-central1
13
22
  # GOOGLE_CLOUD_API_KEY=your-api-key
14
23
  # Or use service account:
15
24
  # GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
16
25
 
17
- # OpenAI Embeddings (optional, 1536-dim)
26
+ # OpenAI (for openai provider or auto mode)
18
27
  # SQUISH_OPENAI_API_KEY=sk-...
19
28
  # SQUISH_OPENAI_API_URL=https://api.openai.com/v1/embeddings
20
- # SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
21
29
 
22
- # Ollama Embeddings (optional, model-dependent dims)
30
+ # Ollama (for ollama provider or auto mode)
23
31
  # SQUISH_OLLAMA_URL=http://localhost:11434
24
- # SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
25
32
 
26
33
  # Embedding performance & reliability
27
34
  SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
@@ -30,7 +37,7 @@ SQUISH_EMBEDDINGS_RETRY_DELAY_MS=1000
30
37
  # Per-provider overrides (optional)
31
38
  # SQUISH_OPENAI_TIMEOUT_MS=30000
32
39
  # SQUISH_OLLAMA_TIMEOUT_MS=30000
33
- # SQUISH_GOOGLE_MULTIMODAL_TIMEOUT_MS=30000
40
+ # SQUISH_GOOGLE_TIMEOUT_MS=30000
34
41
 
35
42
  # QMD for local markdown search
36
43
  SQUISH_QMD_ENABLED=true
package/README.md CHANGED
@@ -1,11 +1,18 @@
1
1
  # Squish - Universal Two-Tier Memory for AI Agents
2
2
 
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
+
3
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.
4
9
 
5
10
  ```bash
6
11
  npm install squish-memory
7
12
  ```
8
13
 
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
+
9
16
  ## Why Agents Need Memory
10
17
 
11
18
  | Without Squish | With Squish |
@@ -18,8 +25,8 @@ npm install squish-memory
18
25
  ## How It Works
19
26
 
20
27
  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
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.
23
30
 
24
31
  ```
25
32
  Agent Action -----> [Squish Memory Layer]
@@ -35,19 +42,18 @@ Agent Action -----> [Squish Memory Layer]
35
42
  │ Write Gate │ <-- Validate, sanitize, score
36
43
  └──────────────┘
37
44
  |
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
- └─────────────────────┘
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
+ └──────────────────────────────────────────┘
51
57
  |
52
58
  v
53
59
  Agent Context
@@ -73,6 +79,18 @@ Agent Action -----> [Squish Memory Layer]
73
79
 
74
80
  ## Quick Start
75
81
 
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
+
76
94
  ### Universal Plugin Installer (Recommended)
77
95
  ```bash
78
96
  # Install for your AI assistant(s)
@@ -241,18 +259,35 @@ REDIS_URL=redis://localhost:6379 # Optional for caching
241
259
  PORT=3000 # API server port
242
260
  ```
243
261
 
244
- **Optional:**
262
+ **Configuration File (config/settings.json):**
263
+ ```json
264
+ {
265
+ "embeddings": {
266
+ "provider": "local",
267
+ "models": {
268
+ "openai": { "model": "text-embedding-3-small" },
269
+ "google": { "model": "gemini-embedding-001" },
270
+ "ollama": { "model": "nomic-embed-text:v1.5" }
271
+ }
272
+ }
273
+ }
274
+ ```
275
+
276
+ **Environment Variables (override settings.json):**
245
277
  ```bash
246
278
  SQUISH_DATA_DIR=./.squish # Custom data directory
247
- SQUISH_EMBEDDINGS_PROVIDER=local # local, openai, ollama, google-multimodal, hybrid
279
+ SQUISH_EMBEDDINGS_PROVIDER=local # local, openai, ollama, google, none, auto
248
280
 
249
- # For better embeddings (optional)
250
- SQUISH_OPENAI_API_KEY=sk-...
281
+ # Model selection (optional, uses defaults if not set)
251
282
  SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
252
- SQUISH_OLLAMA_URL=http://localhost:11434
283
+ SQUISH_GOOGLE_EMBEDDING_MODEL=gemini-embedding-001
253
284
  SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
254
- SQUISH_GOOGLE_CLOUD_PROJECT=your-project
255
- SQUISH_GOOGLE_CLOUD_API_KEY=your-key
285
+
286
+ # API credentials (for cloud providers)
287
+ SQUISH_OPENAI_API_KEY=sk-...
288
+ SQUISH_OLLAMA_URL=http://localhost:11434
289
+ GOOGLE_CLOUD_PROJECT=your-project
290
+ GOOGLE_CLOUD_API_KEY=your-key
256
291
 
257
292
  # Embedding performance & reliability
258
293
  SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
@@ -271,8 +306,8 @@ DATABASE_URL=postgresql://user:pass@host/db
271
306
 
272
307
  ### Two-Tier Memory System
273
308
  Squish employs a two-tier architecture for optimal performance and reliability:
274
- - **Fast Search Tier**: QMD (Quick Markdown Search) provides hybrid BM25 + vector search with sub-second response times
275
- - **Persistent Storage Tier**: SQLite (local mode) or PostgreSQL (team mode) ensures durable, ACID-compliant memory storage
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.
276
311
 
277
312
  ### Universal Interfaces
278
313
  - **MCP Server**: Native integration for Claude Code, OpenClaw, and any MCP-compatible agent
@@ -0,0 +1,32 @@
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
+ }
@@ -0,0 +1,21 @@
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,7 +1,7 @@
1
1
  {
2
2
  "id": "squish-memory",
3
3
  "name": "Squish Memory",
4
- "version": "1.0.0",
4
+ "version": "1.0.2",
5
5
  "description": "Universal two-tier memory system for AI agents with hybrid search, core memory, and MCP-first architecture",
6
6
  "capabilities": ["mcp", "cli", "web"],
7
7
  "targets": {
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "./settings.schema.json",
3
+ "embeddings": {
4
+ "provider": "local",
5
+ "models": {
6
+ "openai": {
7
+ "model": "text-embedding-3-small",
8
+ "availableModels": [
9
+ "text-embedding-3-small",
10
+ "text-embedding-3-large"
11
+ ]
12
+ },
13
+ "google": {
14
+ "model": "gemini-embedding-001",
15
+ "availableModels": [
16
+ "gemini-embedding-001",
17
+ "gemini-embedding-2"
18
+ ]
19
+ },
20
+ "ollama": {
21
+ "model": "nomic-embed-text:v1.5",
22
+ "availableModels": [
23
+ "nomic-embed-text:v1.5",
24
+ "mxbai-embed-large"
25
+ ]
26
+ }
27
+ }
28
+ },
29
+ "api": {
30
+ "openai": {
31
+ "apiKey": null,
32
+ "apiUrl": "https://api.openai.com/v1/embeddings"
33
+ },
34
+ "google": {
35
+ "apiKey": null,
36
+ "projectId": null
37
+ },
38
+ "ollama": {
39
+ "url": "http://localhost:11434"
40
+ }
41
+ },
42
+ "mcp": {
43
+ "serverPort": 8767,
44
+ "serverEnabled": true
45
+ },
46
+ "features": {
47
+ "lifecycleEnabled": true,
48
+ "summarizationEnabled": true,
49
+ "agentIsolation": true
50
+ }
51
+ }