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,45 @@
1
+ /**
2
+ * UAM Adapter Registry
3
+ *
4
+ * Manages agent adapters for Universal Agent Memory.
5
+ * Provides functions to register, retrieve, and list adapters.
6
+ */
7
+ import { AgentAdapter, AgentType, AgentConfig } from './types.js';
8
+ /**
9
+ * Register an adapter
10
+ */
11
+ export declare function registerAdapter(adapter: AgentAdapter): void;
12
+ /**
13
+ * Get adapter by type
14
+ */
15
+ export declare function getAdapter(type: AgentType): AgentAdapter | undefined;
16
+ /**
17
+ * List all registered adapters
18
+ */
19
+ export declare function listAdapters(): AgentAdapter[];
20
+ /**
21
+ * Load all adapters from config directory
22
+ */
23
+ export declare function loadAllAdapters(dir: string): Promise<void>;
24
+ /**
25
+ * Get adapter config by type (for native integration)
26
+ */
27
+ export declare function getAdapterConfig(type: AgentType): AgentConfig | undefined;
28
+ /**
29
+ * List all adapter configs (for MCP tool)
30
+ */
31
+ export declare function listAdapterConfigs(): AgentConfig[];
32
+ /**
33
+ * Check if an adapter is registered
34
+ */
35
+ export declare function hasAdapter(type: AgentType): boolean;
36
+ /**
37
+ * Clear all adapters (mainly for testing)
38
+ */
39
+ export declare function clearAdapters(): void;
40
+ export * from './types.js';
41
+ export type { AgentAdapter, AgentType, AgentConfig };
42
+ export type { SessionContextInput, SessionContextOutput } from './types.js';
43
+ export type { ToolObservationInput, ToolObservationOutput } from './types.js';
44
+ export type { TimelineDepth } from './types.js';
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,84 @@
1
+ /**
2
+ * UAM Adapter Registry
3
+ *
4
+ * Manages agent adapters for Universal Agent Memory.
5
+ * Provides functions to register, retrieve, and list adapters.
6
+ */
7
+ import { logger } from '../logger.js';
8
+ /** In-memory adapter registry */
9
+ const adapters = new Map();
10
+ /** Config directory for agent configs */
11
+ let configDir = null;
12
+ /**
13
+ * Register an adapter
14
+ */
15
+ export function registerAdapter(adapter) {
16
+ if (adapters.has(adapter.type)) {
17
+ logger.warn(`[Adapters] Overriding existing adapter for type: ${adapter.type}`);
18
+ }
19
+ adapters.set(adapter.type, adapter);
20
+ logger.info(`[Adapters] Registered adapter: ${adapter.name} (${adapter.type})`);
21
+ }
22
+ /**
23
+ * Get adapter by type
24
+ */
25
+ export function getAdapter(type) {
26
+ return adapters.get(type);
27
+ }
28
+ /**
29
+ * List all registered adapters
30
+ */
31
+ export function listAdapters() {
32
+ return Array.from(adapters.values());
33
+ }
34
+ /**
35
+ * Load all adapters from config directory
36
+ */
37
+ export async function loadAllAdapters(dir) {
38
+ configDir = dir;
39
+ logger.info(`[Adapters] Loading adapters from: ${dir}`);
40
+ // Dynamic import and register adapters
41
+ try {
42
+ const { registerClaudeCodeAdapter } = await import('./config/claude-code.js');
43
+ const { registerOpenCodeAdapter } = await import('./config/opencode.js');
44
+ const { registerCursorAdapter } = await import('./config/cursor.js');
45
+ const { registerWindsurfAdapter } = await import('./config/windsurf.js');
46
+ registerClaudeCodeAdapter();
47
+ registerOpenCodeAdapter();
48
+ registerCursorAdapter();
49
+ registerWindsurfAdapter();
50
+ logger.info(`[Adapters] Loaded ${listAdapters().length} adapters`);
51
+ }
52
+ catch (error) {
53
+ logger.error(`[Adapters] Failed to load adapters:`, error);
54
+ }
55
+ }
56
+ /**
57
+ * Get adapter config by type (for native integration)
58
+ */
59
+ export function getAdapterConfig(type) {
60
+ const adapter = adapters.get(type);
61
+ return adapter?.getNativeConfig();
62
+ }
63
+ /**
64
+ * List all adapter configs (for MCP tool)
65
+ */
66
+ export function listAdapterConfigs() {
67
+ return listAdapters().map(a => a.getNativeConfig());
68
+ }
69
+ /**
70
+ * Check if an adapter is registered
71
+ */
72
+ export function hasAdapter(type) {
73
+ return adapters.has(type);
74
+ }
75
+ /**
76
+ * Clear all adapters (mainly for testing)
77
+ */
78
+ export function clearAdapters() {
79
+ adapters.clear();
80
+ logger.info('[Adapters] Cleared all adapters');
81
+ }
82
+ // Re-export types
83
+ export * from './types.js';
84
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Install Adapter Script
3
+ *
4
+ * Installs Squish MCP configuration for various AI coding agents.
5
+ * Run with: bun run core/adapters/scripts/install-adapter.ts --agent claude-code
6
+ */
7
+ interface InstallOptions {
8
+ agent: 'claude-code' | 'opencode' | 'cursor' | 'windsurf';
9
+ projectRoot?: string;
10
+ dryRun?: boolean;
11
+ }
12
+ declare const AGENT_CONFIG_PATHS: Record<string, {
13
+ dir: string;
14
+ file: string;
15
+ }>;
16
+ declare const MCP_CONFIGS: Record<string, object>;
17
+ declare function installAdapter(options: InstallOptions): void;
18
+ export { installAdapter, AGENT_CONFIG_PATHS, MCP_CONFIGS };
19
+ //# sourceMappingURL=install-adapter.d.ts.map
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Install Adapter Script
3
+ *
4
+ * Installs Squish MCP configuration for various AI coding agents.
5
+ * Run with: bun run core/adapters/scripts/install-adapter.ts --agent claude-code
6
+ */
7
+ import { writeFileSync, existsSync, mkdirSync } from 'fs';
8
+ import { join, dirname } from 'path';
9
+ import { homedir } from 'os';
10
+ // Config paths per agent
11
+ const AGENT_CONFIG_PATHS = {
12
+ 'claude-code': {
13
+ dir: '.claude',
14
+ file: 'settings.json',
15
+ },
16
+ 'opencode': {
17
+ dir: '.opencode',
18
+ file: 'settings.json',
19
+ },
20
+ 'cursor': {
21
+ dir: '.cursor',
22
+ file: 'mcp.json',
23
+ },
24
+ 'windsurf': {
25
+ dir: '.windsurf',
26
+ file: 'config.json',
27
+ },
28
+ };
29
+ // MCP config templates
30
+ const MCP_CONFIGS = {
31
+ 'claude-code': {
32
+ mcpServers: {
33
+ squish: {
34
+ command: 'node',
35
+ args: ['dist/core/commands/mcp-server.js'],
36
+ env: { NODE_ENV: 'production' }
37
+ }
38
+ }
39
+ },
40
+ 'opencode': {
41
+ mcpServers: {
42
+ squish: {
43
+ command: 'node',
44
+ args: ['dist/core/commands/mcp-server.js']
45
+ }
46
+ }
47
+ },
48
+ 'cursor': {
49
+ mcpServers: {
50
+ squish: {
51
+ command: 'node',
52
+ args: ['dist/core/commands/mcp-server.js'],
53
+ env: { NODE_ENV: 'production' }
54
+ }
55
+ }
56
+ },
57
+ 'windsurf': {
58
+ mcpServers: {
59
+ squish: {
60
+ command: 'node',
61
+ args: ['dist/core/commands/mcp-server.js'],
62
+ env: { NODE_ENV: 'production' }
63
+ }
64
+ }
65
+ }
66
+ };
67
+ function getConfigPath(agent) {
68
+ const home = homedir();
69
+ const config = AGENT_CONFIG_PATHS[agent];
70
+ return join(home, config.dir, config.file);
71
+ }
72
+ function installAdapter(options) {
73
+ const { agent, projectRoot, dryRun } = options;
74
+ const configPath = projectRoot
75
+ ? join(projectRoot, AGENT_CONFIG_PATHS[agent].dir, AGENT_CONFIG_PATHS[agent].file)
76
+ : getConfigPath(agent);
77
+ const configDir = dirname(configPath);
78
+ const config = MCP_CONFIGS[agent];
79
+ console.log(`Installing Squish MCP for ${agent}...`);
80
+ console.log(`Config path: ${configPath}`);
81
+ if (dryRun) {
82
+ console.log(`[DRY RUN] Would write:`);
83
+ console.log(JSON.stringify(config, null, 2));
84
+ return;
85
+ }
86
+ // Create directory if needed
87
+ if (!existsSync(configDir)) {
88
+ mkdirSync(configDir, { recursive: true });
89
+ console.log(`Created directory: ${configDir}`);
90
+ }
91
+ // Check if file exists and merge
92
+ let existingConfig = {};
93
+ if (existsSync(configPath)) {
94
+ try {
95
+ const existing = require('fs').readFileSync(configPath, 'utf-8');
96
+ existingConfig = JSON.parse(existing);
97
+ console.log(`Merging with existing config...`);
98
+ }
99
+ catch {
100
+ console.log(`Warning: Could not parse existing config, overwriting`);
101
+ }
102
+ }
103
+ // Merge configs - simplified
104
+ const mergedConfig = {
105
+ ...existingConfig,
106
+ mcpServers: {
107
+ ...(existingConfig.mcpServers || {}),
108
+ ...MCP_CONFIGS[agent].mcpServers
109
+ }
110
+ };
111
+ // Write config
112
+ writeFileSync(configPath, JSON.stringify(mergedConfig, null, 2));
113
+ console.log(`Config written to: ${configPath}`);
114
+ console.log(`\nTo activate:`);
115
+ console.log(` 1. Restart ${agent}`);
116
+ console.log(` 2. Or reload settings`);
117
+ }
118
+ // CLI handler
119
+ if (import.meta.url === `file://${process.argv[1]}`) {
120
+ const args = process.argv.slice(2);
121
+ let agent = 'claude-code';
122
+ let dryRun = false;
123
+ let projectRoot;
124
+ for (let i = 0; i < args.length; i++) {
125
+ if (args[i] === '--agent' && args[i + 1]) {
126
+ agent = args[i + 1];
127
+ i++;
128
+ }
129
+ else if (args[i] === '--dry-run') {
130
+ dryRun = true;
131
+ }
132
+ else if (args[i] === '--project' && args[i + 1]) {
133
+ projectRoot = args[i + 1];
134
+ i++;
135
+ }
136
+ }
137
+ if (!['claude-code', 'opencode', 'cursor', 'windsurf'].includes(agent)) {
138
+ console.error(`Unknown agent: ${agent}`);
139
+ console.log(`Usage: install-adapter.ts --agent [claude-code|opencode|cursor|windsurf] [--dry-run] [--project <path>]`);
140
+ process.exit(1);
141
+ }
142
+ installAdapter({
143
+ agent: agent,
144
+ projectRoot,
145
+ dryRun
146
+ });
147
+ }
148
+ export { installAdapter, AGENT_CONFIG_PATHS, MCP_CONFIGS };
149
+ //# sourceMappingURL=install-adapter.js.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Timeline Implementation - 3-Layer Progressive Disclosure
3
+ *
4
+ * Provides timeline functionality for MCP tool with depth parameter.
5
+ * Layer 1 (index): ~50 tokens - memory titles only
6
+ * Layer 2 (timeline): ~200 tokens - titles + timestamps + tags
7
+ * Layer 3 (detail): ~2000 tokens - full content
8
+ */
9
+ import { TimelineDepth } from './types.js';
10
+ /**
11
+ * Get timeline with progressive disclosure
12
+ */
13
+ export declare function getTimeline(query: string, depth?: TimelineDepth, limit?: number, project?: string): Promise<{
14
+ results: unknown[];
15
+ layer: TimelineDepth;
16
+ tokenEstimate: number;
17
+ query: string;
18
+ }>;
19
+ /**
20
+ * Get memory by ID with optional depth
21
+ */
22
+ export declare function getMemoryTimeline(memoryId: string, depth?: TimelineDepth): Promise<unknown>;
23
+ //# sourceMappingURL=timeline.d.ts.map
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Timeline Implementation - 3-Layer Progressive Disclosure
3
+ *
4
+ * Provides timeline functionality for MCP tool with depth parameter.
5
+ * Layer 1 (index): ~50 tokens - memory titles only
6
+ * Layer 2 (timeline): ~200 tokens - titles + timestamps + tags
7
+ * Layer 3 (detail): ~2000 tokens - full content
8
+ */
9
+ import { search as searchMemories, getMemory } from '../memory/memories.js';
10
+ /** Token estimates per layer */
11
+ const LAYER_TOKENS = {
12
+ index: 50,
13
+ timeline: 200,
14
+ detail: 2000,
15
+ };
16
+ /**
17
+ * Get timeline with progressive disclosure
18
+ */
19
+ export async function getTimeline(query, depth = 'index', limit = 10, project) {
20
+ // First get search results
21
+ const memories = await searchMemories({
22
+ query,
23
+ project,
24
+ limit,
25
+ });
26
+ // Format based on depth
27
+ let results;
28
+ let tokenEstimate = 0;
29
+ switch (depth) {
30
+ case 'index':
31
+ results = memories.map(m => ({
32
+ id: m.id,
33
+ title: `${m.type}: ${m.content?.substring(0, 60)}...`,
34
+ }));
35
+ tokenEstimate = results.length * (LAYER_TOKENS.index / Math.max(results.length, 1));
36
+ break;
37
+ case 'timeline':
38
+ results = memories.map(m => ({
39
+ id: m.id,
40
+ type: m.type,
41
+ content: m.content?.substring(0, 100),
42
+ tags: m.tags,
43
+ createdAt: m.createdAt,
44
+ }));
45
+ tokenEstimate = results.length * (LAYER_TOKENS.timeline / Math.max(results.length, 1));
46
+ break;
47
+ case 'detail':
48
+ results = await Promise.all(memories.map(async (m) => {
49
+ const full = await getMemory(m.id);
50
+ return full || { id: m.id, error: 'Not found' };
51
+ }));
52
+ tokenEstimate = LAYER_TOKENS.detail;
53
+ break;
54
+ }
55
+ return {
56
+ results,
57
+ layer: depth,
58
+ tokenEstimate,
59
+ query,
60
+ };
61
+ }
62
+ /**
63
+ * Get memory by ID with optional depth
64
+ */
65
+ export async function getMemoryTimeline(memoryId, depth = 'detail') {
66
+ const memory = await getMemory(memoryId);
67
+ if (!memory) {
68
+ return { error: 'Memory not found', id: memoryId };
69
+ }
70
+ if (depth === 'index') {
71
+ return {
72
+ id: memory.id,
73
+ title: `${memory.type}: ${memory.content?.substring(0, 60)}...`,
74
+ };
75
+ }
76
+ if (depth === 'timeline') {
77
+ return {
78
+ id: memory.id,
79
+ type: memory.type,
80
+ content: memory.content?.substring(0, 100),
81
+ tags: memory.tags,
82
+ createdAt: memory.createdAt,
83
+ };
84
+ }
85
+ // detail
86
+ return memory;
87
+ }
88
+ //# sourceMappingURL=timeline.js.map
@@ -0,0 +1,157 @@
1
+ /**
2
+ * UAM Adapter Types
3
+ *
4
+ * Universal Agent Memory - Adapter interfaces for different AI coding agents.
5
+ * Each agent (Claude Code, OpenCode, Cursor, Windsurf, etc.) has its own adapter
6
+ * that defines how to integrate with Squish.
7
+ *
8
+ * Key concepts:
9
+ * - Agent adapters use native config formats where possible
10
+ * - Hooks are explicit (calls squish_learn) not hidden
11
+ * - Uses existing MCP tools (squish_context, squish_learn)
12
+ */
13
+ import { z } from 'zod';
14
+ /** Agent types supported by UAM */
15
+ export type AgentType = 'claude-code' | 'opencode' | 'cursor' | 'windsurf' | 'codex' | 'generic';
16
+ /** Hook event types */
17
+ export type HookEvent = 'onSessionStart' | 'onSessionEnd' | 'onToolCall' | 'onPreCompact' | 'onPostCompact';
18
+ /** 3-Layer depth for progressive disclosure */
19
+ export type TimelineDepth = 'index' | 'timeline' | 'detail';
20
+ /** Memory context for session start */
21
+ export interface SessionContextInput {
22
+ project: string;
23
+ mode: 'startup' | 'resume' | 'compact';
24
+ sessionId?: string;
25
+ }
26
+ export interface SessionContextOutput {
27
+ mode: string;
28
+ project: string;
29
+ memories: string;
30
+ count: number;
31
+ snapshot?: {
32
+ id: string;
33
+ content: string;
34
+ } | null;
35
+ }
36
+ /** Tool call observation */
37
+ export interface ToolObservationInput {
38
+ toolName: string;
39
+ toolInput: Record<string, unknown>;
40
+ toolResult: unknown;
41
+ project: string;
42
+ sessionId?: string;
43
+ }
44
+ export interface ToolObservationOutput {
45
+ memoryId: string;
46
+ category: 'reading' | 'modification' | 'commit' | 'testing' | 'command' | 'search' | 'planning' | 'other';
47
+ content: string;
48
+ }
49
+ /** Agent configuration */
50
+ export interface AgentConfig {
51
+ /** Unique agent identifier */
52
+ agentId: string;
53
+ /** Human-readable name */
54
+ name: string;
55
+ /** Agent type */
56
+ type: AgentType;
57
+ /** MCP server configuration */
58
+ mcp: {
59
+ command: string;
60
+ args: string[];
61
+ env?: Record<string, string>;
62
+ };
63
+ /** Hook patterns (native format for each agent) */
64
+ hooks?: {
65
+ sessionStart?: unknown;
66
+ sessionEnd?: unknown;
67
+ preCompact?: unknown;
68
+ postToolUse?: unknown;
69
+ };
70
+ /** Custom settings */
71
+ settings?: Record<string, unknown>;
72
+ }
73
+ /** Agent adapter interface */
74
+ export interface AgentAdapter {
75
+ /** Unique adapter ID */
76
+ id: string;
77
+ /** Agent type */
78
+ type: AgentType;
79
+ /** Human-readable name */
80
+ name: string;
81
+ /** Agent version (if known) */
82
+ version?: string;
83
+ /** Get session context for injection */
84
+ getSessionContext(input: SessionContextInput): Promise<SessionContextOutput>;
85
+ /** Record a tool observation */
86
+ recordObservation(input: ToolObservationInput): Promise<ToolObservationOutput>;
87
+ /** Get timeline (3-layer progressive disclosure) */
88
+ getTimeline(query: string, depth: TimelineDepth, limit: number): Promise<unknown[]>;
89
+ /** Check if this agent should capture this tool */
90
+ shouldCaptureTool(toolName: string): boolean;
91
+ /** Get raw config for native integration */
92
+ getNativeConfig(): AgentConfig;
93
+ }
94
+ /** Registry for managing adapters */
95
+ export interface AdapterRegistry {
96
+ /** Register a new adapter */
97
+ register(adapter: AgentAdapter): void;
98
+ /** Get adapter by type */
99
+ get(type: AgentType): AgentAdapter | undefined;
100
+ /** List all registered adapters */
101
+ list(): AgentAdapter[];
102
+ /** Load all adapters from config directory */
103
+ loadAll(configDir: string): Promise<void>;
104
+ }
105
+ /** Zod schemas for validation */
106
+ export declare const SessionContextInputSchema: z.ZodObject<{
107
+ project: z.ZodString;
108
+ mode: z.ZodDefault<z.ZodEnum<["startup", "resume", "compact"]>>;
109
+ sessionId: z.ZodOptional<z.ZodString>;
110
+ }, "strip", z.ZodTypeAny, {
111
+ project: string;
112
+ mode: "resume" | "startup" | "compact";
113
+ sessionId?: string | undefined;
114
+ }, {
115
+ project: string;
116
+ mode?: "resume" | "startup" | "compact" | undefined;
117
+ sessionId?: string | undefined;
118
+ }>;
119
+ export declare const ToolObservationInputSchema: z.ZodObject<{
120
+ toolName: z.ZodString;
121
+ toolInput: z.ZodRecord<z.ZodString, z.ZodUnknown>;
122
+ toolResult: z.ZodUnknown;
123
+ project: z.ZodString;
124
+ sessionId: z.ZodOptional<z.ZodString>;
125
+ }, "strip", z.ZodTypeAny, {
126
+ project: string;
127
+ toolName: string;
128
+ toolInput: Record<string, unknown>;
129
+ sessionId?: string | undefined;
130
+ toolResult?: unknown;
131
+ }, {
132
+ project: string;
133
+ toolName: string;
134
+ toolInput: Record<string, unknown>;
135
+ sessionId?: string | undefined;
136
+ toolResult?: unknown;
137
+ }>;
138
+ export declare const TimelineInputSchema: z.ZodObject<{
139
+ query: z.ZodString;
140
+ depth: z.ZodDefault<z.ZodEnum<["index", "timeline", "detail"]>>;
141
+ limit: z.ZodDefault<z.ZodNumber>;
142
+ }, "strip", z.ZodTypeAny, {
143
+ query: string;
144
+ limit: number;
145
+ depth: "index" | "timeline" | "detail";
146
+ }, {
147
+ query: string;
148
+ limit?: number | undefined;
149
+ depth?: "index" | "timeline" | "detail" | undefined;
150
+ }>;
151
+ /** Tool category mapping */
152
+ export declare const TOOL_CATEGORIES: Record<string, ToolObservationOutput['category']>;
153
+ /**
154
+ * Categorize a tool call
155
+ */
156
+ export declare function categorizeTool(toolName: string): ToolObservationOutput['category'];
157
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,50 @@
1
+ /**
2
+ * UAM Adapter Types
3
+ *
4
+ * Universal Agent Memory - Adapter interfaces for different AI coding agents.
5
+ * Each agent (Claude Code, OpenCode, Cursor, Windsurf, etc.) has its own adapter
6
+ * that defines how to integrate with Squish.
7
+ *
8
+ * Key concepts:
9
+ * - Agent adapters use native config formats where possible
10
+ * - Hooks are explicit (calls squish_learn) not hidden
11
+ * - Uses existing MCP tools (squish_context, squish_learn)
12
+ */
13
+ import { z } from 'zod';
14
+ /** Zod schemas for validation */
15
+ export const SessionContextInputSchema = z.object({
16
+ project: z.string(),
17
+ mode: z.enum(['startup', 'resume', 'compact']).default('startup'),
18
+ sessionId: z.string().optional(),
19
+ });
20
+ export const ToolObservationInputSchema = z.object({
21
+ toolName: z.string(),
22
+ toolInput: z.record(z.unknown()),
23
+ toolResult: z.unknown(),
24
+ project: z.string(),
25
+ sessionId: z.string().optional(),
26
+ });
27
+ export const TimelineInputSchema = z.object({
28
+ query: z.string(),
29
+ depth: z.enum(['index', 'timeline', 'detail']).default('index'),
30
+ limit: z.number().min(1).max(100).default(10),
31
+ });
32
+ /** Tool category mapping */
33
+ export const TOOL_CATEGORIES = {
34
+ 'Read': 'reading',
35
+ 'Write': 'modification',
36
+ 'Edit': 'modification',
37
+ 'Bash': 'command',
38
+ 'grep': 'search',
39
+ 'Glob': 'search',
40
+ 'TodoWrite': 'planning',
41
+ 'TodoRead': 'planning',
42
+ 'Task': 'planning',
43
+ };
44
+ /**
45
+ * Categorize a tool call
46
+ */
47
+ export function categorizeTool(toolName) {
48
+ return TOOL_CATEGORIES[toolName] || 'other';
49
+ }
50
+ //# sourceMappingURL=types.js.map
@@ -2,7 +2,7 @@
2
2
  * Token estimation for calculating context window savings from merges.
3
3
  * Uses simple heuristic: 1 token ≈ 4 characters (can be upgraded to tiktoken for accuracy).
4
4
  */
5
- import type { Memory } from '../../drizzle/schema.js';
5
+ import type { Memory } from '../../../db/drizzle/schema.js';
6
6
  import type { MergedMemory } from '../strategies/merge-strategies.js';
7
7
  export declare function estimateTokensSaved(sources: Memory[], merged: MergedMemory): number;
8
8
  export declare function calculateProjectTokenSavings(projectId: string): Promise<{
@@ -2,9 +2,9 @@
2
2
  * Token estimation for calculating context window savings from merges.
3
3
  * Uses simple heuristic: 1 token ≈ 4 characters (can be upgraded to tiktoken for accuracy).
4
4
  */
5
- import { getDb } from '../../db/index.js';
6
- import { getSchema } from '../../db/schema.js';
7
- import { createDatabaseClient } from '../../core/database.js';
5
+ import { getDb } from '../../../db/index.js';
6
+ import { getSchema } from '../../../db/schema.js';
7
+ import { createDatabaseClient } from '../../../core/storage/database.js';
8
8
  import { eq } from 'drizzle-orm';
9
9
  function estimateTokensSimple(text) {
10
10
  if (!text)
@@ -2,7 +2,7 @@
2
2
  * Semantic ranking using embeddings (Stage 2 of two-stage detection).
3
3
  * Ranks candidates from Stage 1 by semantic similarity using cosine distance.
4
4
  */
5
- import type { Memory } from '../../drizzle/schema.js';
5
+ import type { Memory } from '../../../db/drizzle/schema.js';
6
6
  export interface RankedCandidate {
7
7
  memoryId1: string;
8
8
  memoryId2: string;
@@ -2,7 +2,7 @@
2
2
  * Semantic ranking using embeddings (Stage 2 of two-stage detection).
3
3
  * Ranks candidates from Stage 1 by semantic similarity using cosine distance.
4
4
  */
5
- import { cosineSimilarity } from '../../core/local-embeddings.js';
5
+ import { cosineSimilarity } from '../../../core/utils/vector-operations.js';
6
6
  function calculateConfidence(memory1, memory2, cosineSim) {
7
7
  if (cosineSim >= 0.90) {
8
8
  const factors = calculateConfidenceFactors(memory1, memory2);
@@ -4,7 +4,7 @@
4
4
  * Stage 1: Hash-based prefiltering (SimHash + MinHash)
5
5
  * Stage 2: Semantic ranking using embeddings
6
6
  */
7
- import type { Memory, MemoryType } from '../../drizzle/schema.js';
7
+ import type { Memory, MemoryType } from '../../../db/drizzle/schema.js';
8
8
  import { analyzePair } from './semantic-ranker.js';
9
9
  export interface MemoryPair {
10
10
  memory1: Memory;