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,39 @@
1
+ /**
2
+ * Memory Associations Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export const memoryAssociationsTable = {
6
+ sqlite: `
7
+ CREATE TABLE IF NOT EXISTS memory_associations (
8
+ id TEXT PRIMARY KEY,
9
+ memory_id TEXT NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
10
+ associated_memory_id TEXT NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
11
+ association_type TEXT NOT NULL,
12
+ strength REAL DEFAULT 0.5,
13
+ created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
14
+ coactivation_count INTEGER DEFAULT 0,
15
+ last_coactivated_at INTEGER,
16
+ metadata TEXT
17
+ );
18
+
19
+ CREATE INDEX IF NOT EXISTS associations_memory_idx ON memory_associations(memory_id);
20
+ CREATE INDEX IF NOT EXISTS associations_associated_idx ON memory_associations(associated_memory_id);
21
+ CREATE INDEX IF NOT EXISTS associations_type_idx ON memory_associations(association_type);`,
22
+ postgres: `
23
+ CREATE TABLE IF NOT EXISTS memory_associations (
24
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
25
+ memory_id UUID NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
26
+ associated_memory_id UUID NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
27
+ association_type TEXT NOT NULL,
28
+ strength REAL DEFAULT 0.5,
29
+ created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
30
+ coactivation_count INTEGER DEFAULT 0,
31
+ last_coactivated_at TIMESTAMPTZ,
32
+ metadata JSONB
33
+ );
34
+
35
+ CREATE INDEX IF NOT EXISTS associations_memory_idx ON memory_associations(memory_id);
36
+ CREATE INDEX IF NOT EXISTS associations_associated_idx ON memory_associations(associated_memory_id);
37
+ CREATE INDEX IF NOT EXISTS associations_type_idx ON memory_associations(association_type);`,
38
+ };
39
+ //# sourceMappingURL=memory-associations.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Memory Hash Cache Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export declare const memoryHashCacheTable: {
6
+ sqlite: string;
7
+ postgres: string;
8
+ };
9
+ //# sourceMappingURL=memory-hash-cache.d.ts.map
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Memory Hash Cache Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export const memoryHashCacheTable = {
6
+ sqlite: `
7
+ CREATE TABLE IF NOT EXISTS memory_hash_cache (
8
+ id TEXT PRIMARY KEY,
9
+ memory_id TEXT NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
10
+ content_hash TEXT NOT NULL,
11
+ content_preview TEXT,
12
+ last_validated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
13
+ );
14
+
15
+ CREATE INDEX IF NOT EXISTS hash_cache_memory_idx ON memory_hash_cache(memory_id);
16
+ CREATE INDEX IF NOT EXISTS hash_cache_hash_idx ON memory_hash_cache(content_hash);`,
17
+ postgres: `
18
+ CREATE TABLE IF NOT EXISTS memory_hash_cache (
19
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
20
+ memory_id UUID NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
21
+ content_hash TEXT NOT NULL,
22
+ content_preview TEXT,
23
+ last_validated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
24
+ );
25
+
26
+ CREATE INDEX IF NOT EXISTS hash_cache_memory_idx ON memory_hash_cache(memory_id);
27
+ CREATE INDEX IF NOT EXISTS hash_cache_hash_idx ON memory_hash_cache(content_hash);`,
28
+ };
29
+ //# sourceMappingURL=memory-hash-cache.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Memory Merge History Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export declare const memoryMergeHistoryTable: {
6
+ sqlite: string;
7
+ postgres: string;
8
+ };
9
+ //# sourceMappingURL=memory-merge-history.d.ts.map
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Memory Merge History Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export const memoryMergeHistoryTable = {
6
+ sqlite: `
7
+ CREATE TABLE IF NOT EXISTS memory_merge_history (
8
+ id TEXT PRIMARY KEY,
9
+ source_memory_id TEXT REFERENCES memories(id) ON DELETE SET NULL,
10
+ target_memory_id TEXT NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
11
+ merge_timestamp INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
12
+ merge_reason TEXT,
13
+ tokens_saved INTEGER DEFAULT 0,
14
+ created_by TEXT
15
+ );
16
+
17
+ CREATE INDEX IF NOT EXISTS merge_history_target_idx ON memory_merge_history(target_memory_id);
18
+ CREATE INDEX IF NOT EXISTS merge_history_timestamp_idx ON memory_merge_history(merge_timestamp);`,
19
+ postgres: `
20
+ CREATE TABLE IF NOT EXISTS memory_merge_history (
21
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
22
+ source_memory_id UUID REFERENCES memories(id) ON DELETE SET NULL,
23
+ target_memory_id UUID NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
24
+ merge_timestamp TIMESTAMPTZ DEFAULT NOW() NOT NULL,
25
+ merge_reason TEXT,
26
+ tokens_saved INTEGER DEFAULT 0,
27
+ created_by TEXT
28
+ );
29
+
30
+ CREATE INDEX IF NOT EXISTS merge_history_target_idx ON memory_merge_history(target_memory_id);
31
+ CREATE INDEX IF NOT EXISTS merge_history_timestamp_idx ON memory_merge_history(merge_timestamp);`,
32
+ };
33
+ //# sourceMappingURL=memory-merge-history.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Memory Merge Proposals Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export declare const memoryMergeProposalsTable: {
6
+ sqlite: string;
7
+ postgres: string;
8
+ };
9
+ //# sourceMappingURL=memory-merge-proposals.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Memory Merge Proposals Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export const memoryMergeProposalsTable = {
6
+ sqlite: `
7
+ CREATE TABLE IF NOT EXISTS memory_merge_proposals (
8
+ id TEXT PRIMARY KEY,
9
+ source_memory_id TEXT NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
10
+ target_memory_id TEXT NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
11
+ status TEXT DEFAULT 'pending',
12
+ similarity REAL,
13
+ merge_strategy TEXT,
14
+ created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
15
+ resolved_at INTEGER,
16
+ created_by TEXT
17
+ );
18
+
19
+ CREATE INDEX IF NOT EXISTS merge_proposals_source_idx ON memory_merge_proposals(source_memory_id);
20
+ CREATE INDEX IF NOT EXISTS merge_proposals_target_idx ON memory_merge_proposals(target_memory_id);
21
+ CREATE INDEX IF NOT EXISTS merge_proposals_status_idx ON memory_merge_proposals(status);`,
22
+ postgres: `
23
+ CREATE TABLE IF NOT EXISTS memory_merge_proposals (
24
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
25
+ source_memory_id UUID NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
26
+ target_memory_id UUID NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
27
+ status TEXT DEFAULT 'pending',
28
+ similarity REAL,
29
+ merge_strategy TEXT,
30
+ created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
31
+ resolved_at TIMESTAMPTZ,
32
+ created_by TEXT
33
+ );
34
+
35
+ CREATE INDEX IF NOT EXISTS merge_proposals_source_idx ON memory_merge_proposals(source_memory_id);
36
+ CREATE INDEX IF NOT EXISTS merge_proposals_target_idx ON memory_merge_proposals(target_memory_id);
37
+ CREATE INDEX IF NOT EXISTS merge_proposals_status_idx ON memory_merge_proposals(status);`,
38
+ };
39
+ //# sourceMappingURL=memory-merge-proposals.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Messages Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export declare const messagesTable: {
6
+ sqlite: string;
7
+ postgres: string;
8
+ };
9
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Messages Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export const messagesTable = {
6
+ sqlite: `
7
+ CREATE TABLE IF NOT EXISTS messages (
8
+ id TEXT PRIMARY KEY,
9
+ conversation_id TEXT NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
10
+ role TEXT NOT NULL,
11
+ content TEXT NOT NULL,
12
+ embedding_json TEXT,
13
+ embedding BLOB,
14
+ token_count INTEGER,
15
+ tool_calls TEXT,
16
+ metadata TEXT,
17
+ created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
18
+ );
19
+
20
+ CREATE INDEX IF NOT EXISTS messages_conversation_idx ON messages(conversation_id);
21
+ CREATE INDEX IF NOT EXISTS messages_role_idx ON messages(role);
22
+ CREATE INDEX IF NOT EXISTS messages_created_idx ON messages(created_at);`,
23
+ postgres: `
24
+ CREATE TABLE IF NOT EXISTS messages (
25
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
26
+ conversation_id UUID NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
27
+ role TEXT NOT NULL,
28
+ content TEXT NOT NULL,
29
+ embedding_json TEXT,
30
+ embedding vector(1536),
31
+ token_count INTEGER,
32
+ tool_calls JSONB,
33
+ metadata JSONB,
34
+ created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
35
+ );
36
+
37
+ CREATE INDEX IF NOT EXISTS messages_conversation_idx ON messages(conversation_id);
38
+ CREATE INDEX IF NOT EXISTS messages_role_idx ON messages(role);
39
+ CREATE INDEX IF NOT EXISTS messages_created_idx ON messages(created_at);`,
40
+ };
41
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Namespaces Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export declare const namespacesTable: {
6
+ sqlite: string;
7
+ postgres: string;
8
+ };
9
+ //# sourceMappingURL=namespaces.d.ts.map
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Namespaces Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export const namespacesTable = {
6
+ sqlite: `
7
+ CREATE TABLE IF NOT EXISTS namespaces (
8
+ id TEXT PRIMARY KEY,
9
+ project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
10
+ name TEXT NOT NULL,
11
+ namespace_path TEXT,
12
+ description TEXT,
13
+ metadata TEXT,
14
+ parent_id TEXT,
15
+ created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
16
+ updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
17
+ );
18
+
19
+ CREATE INDEX IF NOT EXISTS namespaces_project_idx ON namespaces(project_id);
20
+ CREATE INDEX IF NOT EXISTS namespaces_path_idx ON namespaces(namespace_path);`,
21
+ postgres: `
22
+ CREATE TABLE IF NOT EXISTS namespaces (
23
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
24
+ project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
25
+ name TEXT NOT NULL,
26
+ namespace_path TEXT,
27
+ description TEXT,
28
+ metadata JSONB,
29
+ parent_id UUID,
30
+ created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
31
+ updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
32
+ );
33
+
34
+ CREATE INDEX IF NOT EXISTS namespaces_project_idx ON namespaces(project_id);
35
+ CREATE INDEX IF NOT EXISTS namespaces_path_idx ON namespaces(namespace_path);`,
36
+ };
37
+ //# sourceMappingURL=namespaces.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Projects Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export declare const projectsTable: {
6
+ sqlite: string;
7
+ postgres: string;
8
+ };
9
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Projects Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export const projectsTable = {
6
+ sqlite: `
7
+ CREATE TABLE IF NOT EXISTS projects (
8
+ id TEXT PRIMARY KEY,
9
+ name TEXT NOT NULL,
10
+ path TEXT NOT NULL,
11
+ description TEXT,
12
+ metadata TEXT,
13
+ created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
14
+ updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
15
+ );
16
+
17
+ CREATE INDEX IF NOT EXISTS projects_path_idx ON projects(path);`,
18
+ postgres: `
19
+ CREATE TABLE IF NOT EXISTS projects (
20
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
21
+ name TEXT NOT NULL,
22
+ path TEXT NOT NULL,
23
+ description TEXT,
24
+ metadata JSONB,
25
+ created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
26
+ updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
27
+ );
28
+
29
+ CREATE INDEX IF NOT EXISTS projects_path_idx ON projects(path);`,
30
+ };
31
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Users Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export declare const usersTable: {
6
+ sqlite: string;
7
+ postgres: string;
8
+ };
9
+ //# sourceMappingURL=users.d.ts.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Users Table Schema
3
+ * SQLite and PostgreSQL definitions
4
+ */
5
+ export const usersTable = {
6
+ sqlite: `
7
+ CREATE TABLE IF NOT EXISTS users (
8
+ id TEXT PRIMARY KEY,
9
+ external_id TEXT UNIQUE,
10
+ name TEXT,
11
+ email TEXT,
12
+ preferences TEXT,
13
+ created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
14
+ updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
15
+ );`,
16
+ postgres: `
17
+ CREATE TABLE IF NOT EXISTS users (
18
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
19
+ external_id TEXT UNIQUE,
20
+ name TEXT,
21
+ email TEXT,
22
+ preferences JSONB,
23
+ created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
24
+ updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
25
+ );`,
26
+ };
27
+ //# sourceMappingURL=users.js.map
@@ -1,3 +1,3 @@
1
- export type SchemaModule = typeof import('../drizzle/schema.js') | typeof import('../drizzle/schema-sqlite.js');
1
+ export type SchemaModule = typeof import('./drizzle/schema.js') | typeof import('./drizzle/schema-sqlite.js');
2
2
  export declare function getSchema(): Promise<SchemaModule>;
3
3
  //# sourceMappingURL=schema.d.ts.map
package/dist/db/schema.js CHANGED
@@ -4,8 +4,8 @@ export async function getSchema() {
4
4
  if (cachedSchema)
5
5
  return cachedSchema;
6
6
  cachedSchema = config.isTeamMode
7
- ? await import('../drizzle/schema.js')
8
- : await import('../drizzle/schema-sqlite.js');
7
+ ? await import('./drizzle/schema.js')
8
+ : await import('./drizzle/schema-sqlite.js');
9
9
  return cachedSchema;
10
10
  }
11
11
  //# sourceMappingURL=schema.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Supabase client wrapper that returns a Drizzle PostgreSQL client.
3
+ * Supabase uses the standard Postgres wire protocol, so we can reuse the same
4
+ * drizzle-node-postgres driver as the regular Postgres backend.
5
+ */
6
+ export declare function createSupabaseClient(): Promise<import("drizzle-orm/node-postgres").NodePgDatabase<typeof import("./drizzle/schema.js")> & {
7
+ $client: import("pg").Pool;
8
+ }>;
9
+ //# sourceMappingURL=supabase.d.ts.map
@@ -0,0 +1,24 @@
1
+ import { config } from '../config.js';
2
+ import { drizzle } from 'drizzle-orm/node-postgres';
3
+ /**
4
+ * Supabase client wrapper that returns a Drizzle PostgreSQL client.
5
+ * Supabase uses the standard Postgres wire protocol, so we can reuse the same
6
+ * drizzle-node-postgres driver as the regular Postgres backend.
7
+ */
8
+ export async function createSupabaseClient() {
9
+ if (!config.supabaseUrl || !config.supabaseKey) {
10
+ throw new Error('Supabase configuration missing (SUPABASE_URL or SUPABASE_SERVICE_KEY)');
11
+ }
12
+ if (!process.env.DATABASE_URL) {
13
+ throw new Error('DATABASE_URL is required for Supabase connection');
14
+ }
15
+ const { Pool } = await import('pg');
16
+ const pool = new Pool({
17
+ connectionString: process.env.DATABASE_URL,
18
+ max: 20,
19
+ });
20
+ // Dynamically import the schema module to avoid circular dependencies.
21
+ const schemaModule = await import('./drizzle/schema.js');
22
+ return drizzle(pool, { schema: schemaModule });
23
+ }
24
+ //# sourceMappingURL=supabase.js.map
package/dist/index.d.ts CHANGED
@@ -1,19 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Squish v1.0.2 - Universal Memory Plugin System
4
- *
5
- * Modes:
6
- * - CLI Mode: For any MCP client bash execution (e.g., `squish remember "text"`)
7
- * - MCP Mode: For AI assistants (Claude Code, OpenClaw, OpenCode, Codex, etc.)
8
- *
9
- * Features:
10
- * - Hybrid Search: BM25 + vector search with RRF
11
- * - Importance Scoring: Auto-score memories with temporal decay
12
- * - Consolidation: Summarize old, low-importance memory clusters
13
- * - 16 MCP tools
14
- * - Local mode: SQLite with FTS5
15
- * - Team mode: PostgreSQL + pgvector
16
- * - Universal Plugin: Works with 7+ AI assistants
3
+ * Squish - Universal Memory Plugin System
4
+ * CLI + MCP server for persistent memory with hybrid search and encryption
17
5
  */
18
6
  import 'dotenv/config';
19
7
  //# sourceMappingURL=index.d.ts.map