squish-memory 1.1.5 → 1.2.1

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 (646) hide show
  1. package/.env.example +32 -16
  2. package/CHANGELOG.md +147 -0
  3. package/README.md +120 -78
  4. package/{scripts → bin}/dependency-manager.mjs +217 -217
  5. package/{scripts → bin}/detect-clients.mjs +78 -78
  6. package/bin/install-interactive.mjs +321 -0
  7. package/bin/squish-mcp.mjs +44 -0
  8. package/bin/squish.mjs +33 -0
  9. package/config/mcp-migration-map.json +1 -6
  10. package/config/mcp-mode-semantics.json +19 -23
  11. package/config/mcp-remote-auth.json +3 -26
  12. package/config/mcp-universal.schema.json +5 -35
  13. package/config/settings.json +107 -52
  14. package/config.js +5 -0
  15. package/config.ts +218 -0
  16. package/core/adapters/config/claude-code.ts +133 -0
  17. package/core/adapters/config/cursor.ts +90 -0
  18. package/core/adapters/config/opencode.ts +89 -0
  19. package/core/adapters/config/windsurf.ts +90 -0
  20. package/core/adapters/index.ts +102 -0
  21. package/core/adapters/timeline.ts +116 -0
  22. package/core/adapters/types.ts +166 -0
  23. package/core/agent-preferences.ts +140 -0
  24. package/core/algorithms/analytics/token-estimator.ts +216 -0
  25. package/core/algorithms/detection/hash-filters.ts +260 -0
  26. package/core/algorithms/detection/semantic-ranker.ts +194 -0
  27. package/core/algorithms/detection/two-stage-detector.ts +421 -0
  28. package/core/algorithms/handlers/approve-merge.ts +215 -0
  29. package/core/algorithms/handlers/detect-duplicates.ts +192 -0
  30. package/core/algorithms/handlers/get-stats.ts +132 -0
  31. package/core/algorithms/handlers/list-proposals.ts +130 -0
  32. package/core/algorithms/handlers/preview-merge.ts +139 -0
  33. package/core/algorithms/handlers/reject-merge.ts +93 -0
  34. package/core/algorithms/handlers/reverse-merge.ts +155 -0
  35. package/{dist/core/algorithms/index.js → core/algorithms/index.ts} +39 -26
  36. package/core/algorithms/operations/cache-maintenance.ts +182 -0
  37. package/core/algorithms/safety/safety-checks.ts +256 -0
  38. package/core/algorithms/strategies/merge-strategies.ts +381 -0
  39. package/core/algorithms/types.ts +140 -0
  40. package/core/algorithms/utils/response-builder.ts +61 -0
  41. package/core/associations.ts +363 -0
  42. package/core/beliefs/decay.ts +289 -0
  43. package/core/beliefs/extractor.ts +131 -0
  44. package/core/beliefs/store.ts +557 -0
  45. package/core/beliefs/types.ts +38 -0
  46. package/core/commands/mcp-server.ts +5 -0
  47. package/core/compression.ts +177 -0
  48. package/core/config.js +2 -0
  49. package/core/consolidation.ts +330 -0
  50. package/core/context/agent-context.ts +388 -0
  51. package/core/context/context-paging.ts +449 -0
  52. package/core/context/context-window.ts +234 -0
  53. package/core/context/context.ts +35 -0
  54. package/core/embeddings/embeddings.ts +616 -0
  55. package/core/embeddings/google-multimodal.ts +200 -0
  56. package/{dist/core/local-embeddings.js → core/embeddings/local-embeddings.ts} +12 -11
  57. package/core/embeddings/qmd-client.ts +495 -0
  58. package/core/embeddings/transformers-local.ts +261 -0
  59. package/core/embeddings.js +4 -0
  60. package/core/error-handling.ts +206 -0
  61. package/core/external +219 -0
  62. package/core/graph/entity-deduplicator.ts +232 -0
  63. package/core/graph/graph-builder.ts +257 -0
  64. package/core/graph/graph-traversal.ts +490 -0
  65. package/core/graph/index.ts +24 -0
  66. package/core/graph/llm-entity-extractor.ts +402 -0
  67. package/core/graph/multi-hop-retrieval.ts +317 -0
  68. package/core/graph/relationship-extractor.ts +465 -0
  69. package/core/hooks/agent-hooks.ts +653 -0
  70. package/core/hooks/auto-tagger.ts +149 -0
  71. package/core/hooks/capture-filter.ts +169 -0
  72. package/core/hot-cache.ts +388 -0
  73. package/core/index.ts +10 -0
  74. package/core/ingestion/agent-memory.ts +167 -0
  75. package/core/ingestion/core-memory.ts +326 -0
  76. package/core/ingestion/learnings.ts +260 -0
  77. package/core/ingestion/signal-engine.ts +266 -0
  78. package/core/integrations/obsidian-vault.ts +197 -0
  79. package/core/layers/generator.ts +115 -0
  80. package/{dist/core/lib/db-client.d.ts → core/lib/db-client.ts} +168 -114
  81. package/core/lib/parse-embedding.ts +59 -0
  82. package/{dist/core/lib/schemas.js → core/lib/schemas.ts} +102 -87
  83. package/core/lib/types.ts +49 -0
  84. package/core/lib/utils.ts +151 -0
  85. package/core/lib/validation.ts +180 -0
  86. package/core/lifecycle.ts +353 -0
  87. package/core/logger.ts +59 -0
  88. package/core/memory/bridge-discovery.ts +395 -0
  89. package/core/memory/categorizer.ts +390 -0
  90. package/core/memory/conflict-detector.ts +62 -0
  91. package/core/memory/consolidation.ts +372 -0
  92. package/core/memory/context-collector.ts +75 -0
  93. package/core/memory/contradiction-resolver.ts +494 -0
  94. package/core/memory/edit-workflow.ts +174 -0
  95. package/core/memory/entity-extractor.ts +426 -0
  96. package/core/memory/entity-resolver.ts +89 -0
  97. package/core/memory/explain.ts +112 -0
  98. package/core/memory/fact-deriver.ts +300 -0
  99. package/core/memory/fact-extractor.ts +120 -0
  100. package/core/memory/feedback-tracker.ts +200 -0
  101. package/core/memory/hooks.ts +230 -0
  102. package/core/memory/hybrid-retrieval.ts +65 -0
  103. package/core/memory/hybrid-scorer.ts +325 -0
  104. package/core/memory/hybrid-search.ts +748 -0
  105. package/core/memory/importance.ts +319 -0
  106. package/{dist/core/memory/index.js → core/memory/index.ts} +11 -10
  107. package/core/memory/loader.ts +178 -0
  108. package/core/memory/markdown/markdown-storage.ts +318 -0
  109. package/core/memory/memories.ts +565 -0
  110. package/core/memory/memory-lifecycle.ts +51 -0
  111. package/core/memory/memory-manager.ts +53 -0
  112. package/core/memory/migrate.ts +173 -0
  113. package/core/memory/normalization.ts +30 -0
  114. package/core/memory/path-strengthener.ts +211 -0
  115. package/core/memory/progressive-disclosure.ts +392 -0
  116. package/core/memory/query-processor.ts +130 -0
  117. package/core/memory/query-rewriter.ts +153 -0
  118. package/core/memory/response-analyzer.ts +81 -0
  119. package/core/memory/retrieval-feedback.ts +276 -0
  120. package/core/memory/serialization.ts +83 -0
  121. package/core/memory/stale-cleaner.ts +147 -0
  122. package/core/memory/stats.ts +181 -0
  123. package/core/memory/telemetry.ts +392 -0
  124. package/core/memory/temporal-facts.ts +356 -0
  125. package/core/memory/temporal-parser.ts +477 -0
  126. package/core/memory/trigger-detector.ts +104 -0
  127. package/core/memory/write-gate.ts +288 -0
  128. package/{dist/core/places/index.js → core/places/index.ts} +12 -12
  129. package/core/places/memory-places.ts +339 -0
  130. package/core/places/places.ts +406 -0
  131. package/core/places/rules.ts +308 -0
  132. package/core/places/walking.ts +192 -0
  133. package/core/projects +89 -0
  134. package/core/projects.ts +131 -0
  135. package/core/redis.ts +82 -0
  136. package/core/responses.ts +187 -0
  137. package/core/runtime/trust-report.ts +195 -0
  138. package/core/runtime/trust-state.ts +360 -0
  139. package/core/scheduler/cron-scheduler.ts +590 -0
  140. package/core/scheduler/heartbeat.ts +91 -0
  141. package/{dist/core/scheduler/index.js → core/scheduler/index.ts} +8 -8
  142. package/core/scheduler/job-runner.ts +197 -0
  143. package/core/search/conversations.ts +166 -0
  144. package/core/search/entities.ts +46 -0
  145. package/core/search/folder-context.ts +154 -0
  146. package/core/search/graph-boost.ts +22 -0
  147. package/{dist/core/search/index.js → core/search/index.ts} +4 -5
  148. package/core/search/qmd-wrapper.ts +84 -0
  149. package/core/security/encrypt.ts +51 -0
  150. package/core/security/governance.ts +102 -0
  151. package/core/security/privacy.ts +108 -0
  152. package/core/security/secret-detector.ts +122 -0
  153. package/core/session/auto-load.ts +160 -0
  154. package/core/session/entity-tracker.ts +363 -0
  155. package/{dist/core/session/index.js → core/session/index.ts} +7 -7
  156. package/core/session/reference-resolver.ts +158 -0
  157. package/core/session/self-iteration-job.ts +478 -0
  158. package/core/session/session-hooks.ts +69 -0
  159. package/core/session/types.ts +36 -0
  160. package/core/session/working-set.ts +275 -0
  161. package/{dist/core/snapshots/cleanup.js → core/snapshots/cleanup.ts} +13 -12
  162. package/core/snapshots/comparison.ts +59 -0
  163. package/core/snapshots/creation.ts +139 -0
  164. package/core/snapshots/retrieval.ts +44 -0
  165. package/core/snapshots/stats.ts +63 -0
  166. package/core/storage/cache.ts +241 -0
  167. package/core/storage/database.ts +23 -0
  168. package/{dist/core/summarization/cleanup.js → core/summarization/cleanup.ts} +13 -12
  169. package/core/summarization/queries.ts +32 -0
  170. package/core/summarization/stats.ts +64 -0
  171. package/core/summarization/strategies.ts +52 -0
  172. package/core/summarization.ts +248 -0
  173. package/core/temporal-facts.ts +244 -0
  174. package/core/tracing/collector.ts +470 -0
  175. package/core/tracing/visualizer.ts +195 -0
  176. package/core/utils/cleanup-operations.ts +50 -0
  177. package/core/utils/content-extraction.ts +95 -0
  178. package/core/utils/filter-builder.ts +56 -0
  179. package/core/utils/history-traversal.ts +63 -0
  180. package/core/utils/memory-operations.ts +56 -0
  181. package/core/utils/query-operations.ts +83 -0
  182. package/core/utils/summarization-helpers.ts +45 -0
  183. package/core/utils/temporal-queries.ts +39 -0
  184. package/{dist/core/utils/vector-operations.js → core/utils/vector-operations.ts} +135 -129
  185. package/core/utils/version-management.ts +74 -0
  186. package/core/worker.ts +333 -0
  187. package/db/adapter.ts +215 -0
  188. package/{dist/db/bootstrap.js → db/bootstrap.ts} +388 -418
  189. package/db/drizzle/migrations/0000_needy_cerebro.sql +402 -0
  190. package/db/drizzle/migrations/meta/0000_snapshot.json +3451 -0
  191. package/db/drizzle/migrations/meta/_journal.json +13 -0
  192. package/db/drizzle/schema-sqlite.ts +1032 -0
  193. package/db/drizzle/schema.ts +1128 -0
  194. package/db/drizzle.config.ts +12 -0
  195. package/db/index.ts +83 -0
  196. package/db/init.sql +5 -0
  197. package/db/migrations/associations.ts +35 -0
  198. package/db/migrations/beliefs.ts +89 -0
  199. package/db/migrations/core-memory.ts +35 -0
  200. package/db/migrations/fts.ts +59 -0
  201. package/db/migrations/index.ts +54 -0
  202. package/db/migrations/indexes.ts +36 -0
  203. package/db/migrations/learnings.ts +34 -0
  204. package/db/migrations/maintenance.ts +68 -0
  205. package/db/migrations/memories.ts +22 -0
  206. package/db/migrations/memory-places.ts +35 -0
  207. package/db/migrations/places.ts +49 -0
  208. package/db/migrations/projects.ts +21 -0
  209. package/db/migrations/tier-conversion.ts +24 -0
  210. package/db/neon.ts +22 -0
  211. package/db/schema/beliefs.ts +50 -0
  212. package/db/schema/generator.ts +159 -0
  213. package/db/schema/index.ts +58 -0
  214. package/db/schema/learnings.ts +32 -0
  215. package/db/schema/memories.ts +83 -0
  216. package/db/schema/projects.ts +33 -0
  217. package/db/schema.ts +13 -0
  218. package/db/supabase.ts +27 -0
  219. package/mcp.json.example +8 -11
  220. package/package.json +140 -159
  221. package/packages/cli/package.json +22 -0
  222. package/packages/cli/src/commands/clean.ts +68 -0
  223. package/packages/cli/src/commands/context.ts +79 -0
  224. package/packages/cli/src/commands/doctor.ts +357 -0
  225. package/packages/cli/src/commands/forget.ts +72 -0
  226. package/packages/cli/src/commands/health.ts +36 -0
  227. package/packages/cli/src/commands/inspect.ts +41 -0
  228. package/packages/cli/src/commands/link.ts +50 -0
  229. package/packages/cli/src/commands/migrate.ts +93 -0
  230. package/packages/cli/src/commands/recall.ts +99 -0
  231. package/packages/cli/src/commands/recent.ts +57 -0
  232. package/packages/cli/src/commands/remember.ts +139 -0
  233. package/packages/cli/src/commands/run.ts +58 -0
  234. package/packages/cli/src/commands/stale.ts +43 -0
  235. package/packages/cli/src/commands/stats.ts +42 -0
  236. package/packages/cli/src/index.ts +57 -0
  237. package/packages/cli/tsconfig.json +24 -0
  238. package/packages/mcp/package.json +26 -0
  239. package/packages/mcp/src/index.ts +940 -0
  240. package/packages/mcp/tsconfig.json +20 -0
  241. package/skills/squish-memory/SKILL.md +38 -35
  242. package/skills/squish-memory/{scripts/install.sh → install.sh} +1 -1
  243. package/skills/squish-memory/references/claude-desktop.json +12 -0
  244. package/skills/squish-memory/references/openclaw.json +13 -0
  245. package/skills/squish-memory/references/opencode.json +14 -0
  246. package/config/hooks/claude-code-hooks.json +0 -39
  247. package/config/hooks/cursor-hooks.json +0 -30
  248. package/config/hooks/opencode-hooks.json +0 -30
  249. package/config/hooks/windsurf-hooks.json +0 -30
  250. package/config/mcp-cli-fallback-policy.json +0 -22
  251. package/config/mcp.json +0 -38
  252. package/config/plugin-manifest.json +0 -101
  253. package/config/plugin-manifest.schema.json +0 -244
  254. package/config/plugin.json +0 -32
  255. package/config/remote-memory-policy.json +0 -32
  256. package/core/commands/context-paging.md +0 -51
  257. package/core/commands/context-status.md +0 -22
  258. package/core/commands/context.md +0 -5
  259. package/core/commands/core-memory.md +0 -56
  260. package/core/commands/health.md +0 -5
  261. package/core/commands/init.md +0 -39
  262. package/core/commands/merge.md +0 -113
  263. package/core/commands/recall.md +0 -5
  264. package/core/commands/remember.md +0 -11
  265. package/core/commands/search.md +0 -10
  266. package/dist/config.d.ts +0 -83
  267. package/dist/config.js +0 -242
  268. package/dist/core/adapters/config/claude-code.d.ts +0 -45
  269. package/dist/core/adapters/config/claude-code.js +0 -113
  270. package/dist/core/adapters/config/cursor.d.ts +0 -26
  271. package/dist/core/adapters/config/cursor.js +0 -74
  272. package/dist/core/adapters/config/opencode.d.ts +0 -23
  273. package/dist/core/adapters/config/opencode.js +0 -73
  274. package/dist/core/adapters/config/windsurf.d.ts +0 -26
  275. package/dist/core/adapters/config/windsurf.js +0 -74
  276. package/dist/core/adapters/index.d.ts +0 -45
  277. package/dist/core/adapters/index.js +0 -84
  278. package/dist/core/adapters/scripts/install-adapter.d.ts +0 -19
  279. package/dist/core/adapters/scripts/install-adapter.js +0 -149
  280. package/dist/core/adapters/timeline.d.ts +0 -23
  281. package/dist/core/adapters/timeline.js +0 -88
  282. package/dist/core/adapters/types.d.ts +0 -157
  283. package/dist/core/adapters/types.js +0 -50
  284. package/dist/core/algorithms/analytics/token-estimator.d.ts +0 -50
  285. package/dist/core/algorithms/analytics/token-estimator.js +0 -154
  286. package/dist/core/algorithms/detection/hash-filters.d.ts +0 -47
  287. package/dist/core/algorithms/detection/hash-filters.js +0 -190
  288. package/dist/core/algorithms/detection/semantic-ranker.d.ts +0 -32
  289. package/dist/core/algorithms/detection/semantic-ranker.js +0 -118
  290. package/dist/core/algorithms/detection/two-stage-detector.d.ts +0 -52
  291. package/dist/core/algorithms/detection/two-stage-detector.js +0 -299
  292. package/dist/core/algorithms/handlers/approve-merge.d.ts +0 -22
  293. package/dist/core/algorithms/handlers/approve-merge.js +0 -179
  294. package/dist/core/algorithms/handlers/detect-duplicates.d.ts +0 -47
  295. package/dist/core/algorithms/handlers/detect-duplicates.js +0 -145
  296. package/dist/core/algorithms/handlers/get-stats.d.ts +0 -39
  297. package/dist/core/algorithms/handlers/get-stats.js +0 -88
  298. package/dist/core/algorithms/handlers/list-proposals.d.ts +0 -45
  299. package/dist/core/algorithms/handlers/list-proposals.js +0 -83
  300. package/dist/core/algorithms/handlers/preview-merge.d.ts +0 -39
  301. package/dist/core/algorithms/handlers/preview-merge.js +0 -93
  302. package/dist/core/algorithms/handlers/reject-merge.d.ts +0 -28
  303. package/dist/core/algorithms/handlers/reject-merge.js +0 -69
  304. package/dist/core/algorithms/handlers/reverse-merge.d.ts +0 -21
  305. package/dist/core/algorithms/handlers/reverse-merge.js +0 -121
  306. package/dist/core/algorithms/index.d.ts +0 -21
  307. package/dist/core/algorithms/operations/cache-maintenance.d.ts +0 -12
  308. package/dist/core/algorithms/operations/cache-maintenance.js +0 -157
  309. package/dist/core/algorithms/safety/safety-checks.d.ts +0 -22
  310. package/dist/core/algorithms/safety/safety-checks.js +0 -179
  311. package/dist/core/algorithms/strategies/merge-strategies.d.ts +0 -50
  312. package/dist/core/algorithms/strategies/merge-strategies.js +0 -288
  313. package/dist/core/algorithms/types.d.ts +0 -133
  314. package/dist/core/algorithms/types.js +0 -5
  315. package/dist/core/algorithms/utils/response-builder.d.ts +0 -28
  316. package/dist/core/algorithms/utils/response-builder.js +0 -37
  317. package/dist/core/associations.d.ts +0 -31
  318. package/dist/core/associations.js +0 -248
  319. package/dist/core/autosave.d.ts +0 -19
  320. package/dist/core/autosave.js +0 -16
  321. package/dist/core/commands/managed-sync.d.ts +0 -10
  322. package/dist/core/commands/managed-sync.js +0 -64
  323. package/dist/core/commands/mcp-server.d.ts +0 -3
  324. package/dist/core/commands/mcp-server.js +0 -739
  325. package/dist/core/consolidation.d.ts +0 -37
  326. package/dist/core/consolidation.js +0 -248
  327. package/dist/core/context/agent-context.d.ts +0 -106
  328. package/dist/core/context/agent-context.js +0 -274
  329. package/dist/core/context/context-paging.d.ts +0 -80
  330. package/dist/core/context/context-paging.js +0 -328
  331. package/dist/core/context/context-window.d.ts +0 -40
  332. package/dist/core/context/context-window.js +0 -177
  333. package/dist/core/context/context.d.ts +0 -7
  334. package/dist/core/context/context.js +0 -22
  335. package/dist/core/embeddings/google-multimodal.d.ts +0 -14
  336. package/dist/core/embeddings/google-multimodal.js +0 -142
  337. package/dist/core/embeddings/qmd-client.d.ts +0 -136
  338. package/dist/core/embeddings/qmd-client.js +0 -403
  339. package/dist/core/embeddings.d.ts +0 -29
  340. package/dist/core/embeddings.js +0 -454
  341. package/dist/core/error-handling.d.ts +0 -63
  342. package/dist/core/error-handling.js +0 -173
  343. package/dist/core/external-folder/index.d.ts +0 -102
  344. package/dist/core/external-folder/index.js +0 -294
  345. package/dist/core/hooks/agent-hooks.d.ts +0 -74
  346. package/dist/core/hooks/agent-hooks.js +0 -244
  347. package/dist/core/hooks/auto-tagger.d.ts +0 -19
  348. package/dist/core/hooks/auto-tagger.js +0 -155
  349. package/dist/core/hooks/capture-filter.d.ts +0 -41
  350. package/dist/core/hooks/capture-filter.js +0 -128
  351. package/dist/core/index.d.ts +0 -10
  352. package/dist/core/index.js +0 -14
  353. package/dist/core/ingestion/agent-memory.d.ts +0 -22
  354. package/dist/core/ingestion/agent-memory.js +0 -109
  355. package/dist/core/ingestion/core-memory.d.ts +0 -78
  356. package/dist/core/ingestion/core-memory.js +0 -226
  357. package/dist/core/ingestion/learnings.d.ts +0 -57
  358. package/dist/core/ingestion/learnings.js +0 -202
  359. package/dist/core/layers/generator.d.ts +0 -25
  360. package/dist/core/layers/generator.js +0 -76
  361. package/dist/core/lib/db-client.js +0 -130
  362. package/dist/core/lib/schemas.d.ts +0 -129
  363. package/dist/core/lib/utils.d.ts +0 -14
  364. package/dist/core/lib/utils.js +0 -90
  365. package/dist/core/lib/validation.d.ts +0 -38
  366. package/dist/core/lib/validation.js +0 -151
  367. package/dist/core/lifecycle.d.ts +0 -26
  368. package/dist/core/lifecycle.js +0 -302
  369. package/dist/core/local-embeddings.d.ts +0 -11
  370. package/dist/core/logger.d.ts +0 -16
  371. package/dist/core/logger.js +0 -40
  372. package/dist/core/mcp/client.d.ts +0 -17
  373. package/dist/core/mcp/client.js +0 -101
  374. package/dist/core/mcp/index.d.ts +0 -6
  375. package/dist/core/mcp/index.js +0 -6
  376. package/dist/core/mcp/server.d.ts +0 -18
  377. package/dist/core/mcp/server.js +0 -157
  378. package/dist/core/mcp/standalone-server.d.ts +0 -13
  379. package/dist/core/mcp/standalone-server.js +0 -46
  380. package/dist/core/mcp/tools.d.ts +0 -9
  381. package/dist/core/mcp/tools.js +0 -365
  382. package/dist/core/mcp/types.d.ts +0 -315
  383. package/dist/core/mcp/types.js +0 -48
  384. package/dist/core/memory/bridge-discovery.d.ts +0 -50
  385. package/dist/core/memory/bridge-discovery.js +0 -291
  386. package/dist/core/memory/categorizer.d.ts +0 -27
  387. package/dist/core/memory/categorizer.js +0 -305
  388. package/dist/core/memory/conflict-detector.d.ts +0 -7
  389. package/dist/core/memory/conflict-detector.js +0 -43
  390. package/dist/core/memory/consolidation.d.ts +0 -42
  391. package/dist/core/memory/consolidation.js +0 -303
  392. package/dist/core/memory/context-collector.d.ts +0 -10
  393. package/dist/core/memory/context-collector.js +0 -56
  394. package/dist/core/memory/contradiction-resolver.d.ts +0 -40
  395. package/dist/core/memory/contradiction-resolver.js +0 -368
  396. package/dist/core/memory/edit-workflow.d.ts +0 -19
  397. package/dist/core/memory/edit-workflow.js +0 -120
  398. package/dist/core/memory/entity-extractor.d.ts +0 -33
  399. package/dist/core/memory/entity-extractor.js +0 -336
  400. package/dist/core/memory/entity-resolver.d.ts +0 -23
  401. package/dist/core/memory/entity-resolver.js +0 -64
  402. package/dist/core/memory/fact-extractor.d.ts +0 -24
  403. package/dist/core/memory/fact-extractor.js +0 -89
  404. package/dist/core/memory/feedback-tracker.d.ts +0 -12
  405. package/dist/core/memory/feedback-tracker.js +0 -155
  406. package/dist/core/memory/hooks.d.ts +0 -88
  407. package/dist/core/memory/hooks.js +0 -174
  408. package/dist/core/memory/hybrid-retrieval.d.ts +0 -29
  409. package/dist/core/memory/hybrid-retrieval.js +0 -139
  410. package/dist/core/memory/hybrid-scorer.d.ts +0 -40
  411. package/dist/core/memory/hybrid-scorer.js +0 -284
  412. package/dist/core/memory/hybrid-search.d.ts +0 -20
  413. package/dist/core/memory/hybrid-search.js +0 -359
  414. package/dist/core/memory/importance.d.ts +0 -63
  415. package/dist/core/memory/importance.js +0 -298
  416. package/dist/core/memory/index.d.ts +0 -8
  417. package/dist/core/memory/loader.d.ts +0 -31
  418. package/dist/core/memory/loader.js +0 -141
  419. package/dist/core/memory/markdown/markdown-storage.d.ts +0 -72
  420. package/dist/core/memory/markdown/markdown-storage.js +0 -243
  421. package/dist/core/memory/memories.d.ts +0 -47
  422. package/dist/core/memory/memories.js +0 -449
  423. package/dist/core/memory/memory-lifecycle.d.ts +0 -8
  424. package/dist/core/memory/memory-lifecycle.js +0 -55
  425. package/dist/core/memory/memory-manager.d.ts +0 -15
  426. package/dist/core/memory/memory-manager.js +0 -46
  427. package/dist/core/memory/migrate.d.ts +0 -21
  428. package/dist/core/memory/migrate.js +0 -134
  429. package/dist/core/memory/normalization.d.ts +0 -22
  430. package/dist/core/memory/normalization.js +0 -26
  431. package/dist/core/memory/progressive-disclosure.d.ts +0 -43
  432. package/dist/core/memory/progressive-disclosure.js +0 -280
  433. package/dist/core/memory/query-processor.d.ts +0 -21
  434. package/dist/core/memory/query-processor.js +0 -72
  435. package/dist/core/memory/query-rewriter.d.ts +0 -13
  436. package/dist/core/memory/query-rewriter.js +0 -118
  437. package/dist/core/memory/response-analyzer.d.ts +0 -9
  438. package/dist/core/memory/response-analyzer.js +0 -61
  439. package/dist/core/memory/serialization.d.ts +0 -10
  440. package/dist/core/memory/serialization.js +0 -84
  441. package/dist/core/memory/stats.d.ts +0 -22
  442. package/dist/core/memory/stats.js +0 -138
  443. package/dist/core/memory/telemetry.d.ts +0 -69
  444. package/dist/core/memory/telemetry.js +0 -313
  445. package/dist/core/memory/temporal-facts.d.ts +0 -41
  446. package/dist/core/memory/temporal-facts.js +0 -283
  447. package/dist/core/memory/temporal-parser.d.ts +0 -32
  448. package/dist/core/memory/temporal-parser.js +0 -385
  449. package/dist/core/memory/trigger-detector.d.ts +0 -14
  450. package/dist/core/memory/trigger-detector.js +0 -42
  451. package/dist/core/memory/write-gate.d.ts +0 -54
  452. package/dist/core/memory/write-gate.js +0 -210
  453. package/dist/core/namespaces/index.d.ts +0 -71
  454. package/dist/core/namespaces/index.js +0 -305
  455. package/dist/core/namespaces/uri-parser.d.ts +0 -31
  456. package/dist/core/namespaces/uri-parser.js +0 -74
  457. package/dist/core/obsidian-vault.d.ts +0 -30
  458. package/dist/core/obsidian-vault.js +0 -94
  459. package/dist/core/places/index.d.ts +0 -14
  460. package/dist/core/places/memory-places.d.ts +0 -68
  461. package/dist/core/places/memory-places.js +0 -261
  462. package/dist/core/places/places.d.ts +0 -88
  463. package/dist/core/places/places.js +0 -314
  464. package/dist/core/places/rules.d.ts +0 -74
  465. package/dist/core/places/rules.js +0 -240
  466. package/dist/core/places/walking.d.ts +0 -56
  467. package/dist/core/places/walking.js +0 -121
  468. package/dist/core/projects.d.ts +0 -17
  469. package/dist/core/projects.js +0 -108
  470. package/dist/core/redis.d.ts +0 -11
  471. package/dist/core/redis.js +0 -69
  472. package/dist/core/responses.d.ts +0 -96
  473. package/dist/core/responses.js +0 -122
  474. package/dist/core/scheduler/cron-scheduler.d.ts +0 -32
  475. package/dist/core/scheduler/cron-scheduler.js +0 -332
  476. package/dist/core/scheduler/heartbeat.d.ts +0 -11
  477. package/dist/core/scheduler/heartbeat.js +0 -73
  478. package/dist/core/scheduler/index.d.ts +0 -8
  479. package/dist/core/scheduler/job-runner.d.ts +0 -11
  480. package/dist/core/scheduler/job-runner.js +0 -164
  481. package/dist/core/search/conversations.d.ts +0 -25
  482. package/dist/core/search/conversations.js +0 -110
  483. package/dist/core/search/entities.d.ts +0 -12
  484. package/dist/core/search/entities.js +0 -31
  485. package/dist/core/search/folder-context.d.ts +0 -25
  486. package/dist/core/search/folder-context.js +0 -119
  487. package/dist/core/search/graph-boost.d.ts +0 -7
  488. package/dist/core/search/graph-boost.js +0 -23
  489. package/dist/core/search/index.d.ts +0 -4
  490. package/dist/core/search/qmd-search.d.ts +0 -61
  491. package/dist/core/search/qmd-search.js +0 -178
  492. package/dist/core/security/encrypt.d.ts +0 -6
  493. package/dist/core/security/encrypt.js +0 -47
  494. package/dist/core/security/governance.d.ts +0 -26
  495. package/dist/core/security/governance.js +0 -79
  496. package/dist/core/security/privacy.d.ts +0 -23
  497. package/dist/core/security/privacy.js +0 -82
  498. package/dist/core/security/secret-detector.d.ts +0 -32
  499. package/dist/core/security/secret-detector.js +0 -88
  500. package/dist/core/session/auto-load.d.ts +0 -6
  501. package/dist/core/session/auto-load.js +0 -119
  502. package/dist/core/session/index.d.ts +0 -7
  503. package/dist/core/session/self-iteration-job.d.ts +0 -20
  504. package/dist/core/session/self-iteration-job.js +0 -282
  505. package/dist/core/session/session-hooks.d.ts +0 -18
  506. package/dist/core/session/session-hooks.js +0 -58
  507. package/dist/core/session/types.d.ts +0 -26
  508. package/dist/core/session/types.js +0 -10
  509. package/dist/core/session-hooks/self-iteration-job.d.ts +0 -20
  510. package/dist/core/session-hooks/self-iteration-job.js +0 -282
  511. package/dist/core/session-hooks/session-hooks.d.ts +0 -18
  512. package/dist/core/session-hooks/session-hooks.js +0 -58
  513. package/dist/core/snapshots/cleanup.d.ts +0 -9
  514. package/dist/core/snapshots/comparison.d.ts +0 -19
  515. package/dist/core/snapshots/comparison.js +0 -43
  516. package/dist/core/snapshots/creation.d.ts +0 -19
  517. package/dist/core/snapshots/creation.js +0 -126
  518. package/dist/core/snapshots/retrieval.d.ts +0 -7
  519. package/dist/core/snapshots/retrieval.js +0 -41
  520. package/dist/core/snapshots/stats.d.ts +0 -11
  521. package/dist/core/snapshots/stats.js +0 -52
  522. package/dist/core/snapshots.d.ts +0 -29
  523. package/dist/core/snapshots.js +0 -220
  524. package/dist/core/storage/cache.d.ts +0 -13
  525. package/dist/core/storage/cache.js +0 -202
  526. package/dist/core/storage/database.d.ts +0 -12
  527. package/dist/core/storage/database.js +0 -12
  528. package/dist/core/summarization/cleanup.d.ts +0 -9
  529. package/dist/core/summarization/queries.d.ts +0 -9
  530. package/dist/core/summarization/queries.js +0 -28
  531. package/dist/core/summarization/stats.d.ts +0 -14
  532. package/dist/core/summarization/stats.js +0 -52
  533. package/dist/core/summarization/strategies.d.ts +0 -24
  534. package/dist/core/summarization/strategies.js +0 -28
  535. package/dist/core/summarization.d.ts +0 -37
  536. package/dist/core/summarization.js +0 -188
  537. package/dist/core/sync/qmd-sync.d.ts +0 -94
  538. package/dist/core/sync/qmd-sync.js +0 -201
  539. package/dist/core/temporal-facts.d.ts +0 -54
  540. package/dist/core/temporal-facts.js +0 -193
  541. package/dist/core/toon.d.ts +0 -43
  542. package/dist/core/toon.js +0 -160
  543. package/dist/core/tracing/collector.d.ts +0 -111
  544. package/dist/core/tracing/collector.js +0 -350
  545. package/dist/core/tracing/visualizer.d.ts +0 -32
  546. package/dist/core/tracing/visualizer.js +0 -165
  547. package/dist/core/utils/cleanup-operations.d.ts +0 -13
  548. package/dist/core/utils/cleanup-operations.js +0 -44
  549. package/dist/core/utils/content-extraction.d.ts +0 -19
  550. package/dist/core/utils/content-extraction.js +0 -75
  551. package/dist/core/utils/filter-builder.d.ts +0 -13
  552. package/dist/core/utils/filter-builder.js +0 -44
  553. package/dist/core/utils/history-traversal.d.ts +0 -13
  554. package/dist/core/utils/history-traversal.js +0 -50
  555. package/dist/core/utils/memory-operations.d.ts +0 -17
  556. package/dist/core/utils/memory-operations.js +0 -43
  557. package/dist/core/utils/query-operations.d.ts +0 -18
  558. package/dist/core/utils/query-operations.js +0 -65
  559. package/dist/core/utils/summarization-helpers.d.ts +0 -21
  560. package/dist/core/utils/summarization-helpers.js +0 -38
  561. package/dist/core/utils/temporal-queries.d.ts +0 -13
  562. package/dist/core/utils/temporal-queries.js +0 -27
  563. package/dist/core/utils/vector-operations.d.ts +0 -71
  564. package/dist/core/utils/version-management.d.ts +0 -9
  565. package/dist/core/utils/version-management.js +0 -61
  566. package/dist/core/worker.d.ts +0 -82
  567. package/dist/core/worker.js +0 -272
  568. package/dist/db/adapter.d.ts +0 -7
  569. package/dist/db/adapter.js +0 -175
  570. package/dist/db/bootstrap.d.ts +0 -9
  571. package/dist/db/drizzle/schema-sqlite.d.ts +0 -4837
  572. package/dist/db/drizzle/schema-sqlite.js +0 -684
  573. package/dist/db/drizzle/schema.d.ts +0 -4082
  574. package/dist/db/drizzle/schema.js +0 -770
  575. package/dist/db/drizzle.config.d.ts +0 -3
  576. package/dist/db/drizzle.config.js +0 -12
  577. package/dist/db/index.d.ts +0 -7
  578. package/dist/db/index.js +0 -89
  579. package/dist/db/neon.d.ts +0 -8
  580. package/dist/db/neon.js +0 -20
  581. package/dist/db/schema/index.d.ts +0 -40
  582. package/dist/db/schema/index.js +0 -105
  583. package/dist/db/schema/tables/context-sessions.d.ts +0 -9
  584. package/dist/db/schema/tables/context-sessions.js +0 -37
  585. package/dist/db/schema/tables/conversations.d.ts +0 -9
  586. package/dist/db/schema/tables/conversations.js +0 -47
  587. package/dist/db/schema/tables/core-memory.d.ts +0 -9
  588. package/dist/db/schema/tables/core-memory.js +0 -41
  589. package/dist/db/schema/tables/entities.d.ts +0 -9
  590. package/dist/db/schema/tables/entities.js +0 -39
  591. package/dist/db/schema/tables/entity-relations.d.ts +0 -9
  592. package/dist/db/schema/tables/entity-relations.js +0 -31
  593. package/dist/db/schema/tables/learnings.d.ts +0 -9
  594. package/dist/db/schema/tables/learnings.js +0 -66
  595. package/dist/db/schema/tables/memories.d.ts +0 -9
  596. package/dist/db/schema/tables/memories.js +0 -161
  597. package/dist/db/schema/tables/memory-associations.d.ts +0 -9
  598. package/dist/db/schema/tables/memory-associations.js +0 -39
  599. package/dist/db/schema/tables/memory-hash-cache.d.ts +0 -9
  600. package/dist/db/schema/tables/memory-hash-cache.js +0 -29
  601. package/dist/db/schema/tables/memory-merge-history.d.ts +0 -9
  602. package/dist/db/schema/tables/memory-merge-history.js +0 -33
  603. package/dist/db/schema/tables/memory-merge-proposals.d.ts +0 -9
  604. package/dist/db/schema/tables/memory-merge-proposals.js +0 -39
  605. package/dist/db/schema/tables/messages.d.ts +0 -9
  606. package/dist/db/schema/tables/messages.js +0 -41
  607. package/dist/db/schema/tables/namespaces.d.ts +0 -9
  608. package/dist/db/schema/tables/namespaces.js +0 -37
  609. package/dist/db/schema/tables/projects.d.ts +0 -9
  610. package/dist/db/schema/tables/projects.js +0 -31
  611. package/dist/db/schema/tables/users.d.ts +0 -9
  612. package/dist/db/schema/tables/users.js +0 -27
  613. package/dist/db/schema.d.ts +0 -3
  614. package/dist/db/schema.js +0 -11
  615. package/dist/db/supabase.d.ts +0 -9
  616. package/dist/db/supabase.js +0 -24
  617. package/dist/index.d.ts +0 -7
  618. package/dist/index.js +0 -1677
  619. package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
  620. package/dist/webui/server.d.ts +0 -5
  621. package/dist/webui/server.js +0 -642
  622. package/generated/mcp/manifest.json +0 -23
  623. package/generated/mcp/mcp-servers.json +0 -25
  624. package/generated/mcp/mcporter.json +0 -34
  625. package/generated/mcp/openclaw-memory-qmd.json +0 -17
  626. package/generated/mcp/runtime.json +0 -12
  627. package/scripts/README.md +0 -60
  628. package/scripts/build-release.sh +0 -36
  629. package/scripts/check-secrets.js +0 -132
  630. package/scripts/copy-runtime-assets.mjs +0 -26
  631. package/scripts/generate-mcp.mjs +0 -264
  632. package/scripts/github-release.sh +0 -77
  633. package/scripts/init-dirs.mjs +0 -13
  634. package/scripts/install-claude-code.sh +0 -85
  635. package/scripts/install-cursor.sh +0 -56
  636. package/scripts/install-hooks.sh +0 -73
  637. package/scripts/install-interactive.mjs +0 -357
  638. package/scripts/install-opencode.sh +0 -75
  639. package/scripts/install-plugin.mjs +0 -415
  640. package/scripts/install-windsurf.sh +0 -67
  641. package/scripts/remote-preflight.mjs +0 -62
  642. package/scripts/squish-fallback.mjs +0 -132
  643. package/scripts/test-interactive.mjs +0 -131
  644. package/scripts/verify-mcp.mjs +0 -214
  645. package/skills/squish-memory/scripts/install.mjs +0 -335
  646. package/skills/squish-memory/write_skill.js +0 -2
@@ -1,110 +0,0 @@
1
- import { and, desc, eq, gte, lte } from 'drizzle-orm';
2
- import { getDb } from '../../db/index.js';
3
- import { getSchema } from '../../db/schema.js';
4
- import { config } from '../../config.js';
5
- import { requireProject } from '../../core/projects.js';
6
- import { deserializeMetadata } from '../../core/memory/serialization.js';
7
- import { createDatabaseClient } from '../storage/database.js';
8
- import { normalizeTimestamp, clampLimit } from '../lib/utils.js';
9
- export async function searchConversations(input) {
10
- const limit = clampLimit(input.limit, 5, 1, 50);
11
- if (config.isTeamMode) {
12
- return await searchConversationsPostgres(input, limit);
13
- }
14
- return await searchConversationsSqlite(input, limit);
15
- }
16
- export async function getRecentConversations(input) {
17
- const db = createDatabaseClient(await getDb());
18
- const schema = await getSchema();
19
- const limit = clampLimit(input.n, 3, 1, 50);
20
- const whereParts = [];
21
- if (input.project) {
22
- const project = await requireProject(input.project);
23
- whereParts.push(eq(schema.conversations.projectId, project.id));
24
- }
25
- if (input.before) {
26
- whereParts.push(lte(schema.conversations.startedAt, new Date(input.before)));
27
- }
28
- if (input.after) {
29
- whereParts.push(gte(schema.conversations.startedAt, new Date(input.after)));
30
- }
31
- const query = whereParts.length
32
- ? db.select().from(schema.conversations).where(and(...whereParts)).orderBy(desc(schema.conversations.startedAt)).limit(limit)
33
- : db.select().from(schema.conversations).orderBy(desc(schema.conversations.startedAt)).limit(limit);
34
- const rows = await query;
35
- return rows.map((row) => normalizeConversation(row));
36
- }
37
- async function searchConversationsSqlite(input, limit) {
38
- const db = createDatabaseClient(await getDb());
39
- const sqlite = db.$client;
40
- const params = [input.query];
41
- let where = 'messages_fts MATCH ?';
42
- if (input.role) {
43
- where += ' AND m.role = ?';
44
- params.push(input.role);
45
- }
46
- params.push(limit);
47
- const statement = sqlite.prepare(`
48
- SELECT DISTINCT
49
- c.id as id,
50
- c.project_id as projectId,
51
- c.session_id as sessionId,
52
- c.title as title,
53
- c.summary as summary,
54
- c.message_count as messageCount,
55
- c.token_count as tokenCount,
56
- c.started_at as startedAt,
57
- c.ended_at as endedAt,
58
- c.metadata as metadata
59
- FROM conversations c
60
- JOIN messages m ON m.conversation_id = c.id
61
- JOIN messages_fts ON messages_fts.rowid = m.rowid
62
- WHERE ${where}
63
- ORDER BY c.started_at DESC
64
- LIMIT ?
65
- `);
66
- const rows = statement.all(...params);
67
- return rows.map((row) => normalizeConversation(row));
68
- }
69
- async function searchConversationsPostgres(input, limit) {
70
- const db = createDatabaseClient(await getDb());
71
- const values = [`%${input.query}%`];
72
- const whereParts = [`m.content ILIKE $1`];
73
- if (input.role) {
74
- values.push(input.role);
75
- whereParts.push(`m.role = $${values.length}`);
76
- }
77
- values.push(limit);
78
- const rows = await db.$client.query(`SELECT DISTINCT ON (c.id)
79
- c.id as "id",
80
- c.project_id as "projectId",
81
- c.session_id as "sessionId",
82
- c.title as "title",
83
- c.summary as "summary",
84
- c.message_count as "messageCount",
85
- c.token_count as "tokenCount",
86
- c.started_at as "startedAt",
87
- c.ended_at as "endedAt",
88
- c.metadata as "metadata"
89
- FROM conversations c
90
- JOIN messages m ON m.conversation_id = c.id
91
- WHERE ${whereParts.join(' AND ')}
92
- ORDER BY c.id, c.started_at DESC
93
- LIMIT $${values.length}`, values);
94
- return rows.rows.map((row) => normalizeConversation(row));
95
- }
96
- function normalizeConversation(row) {
97
- const metadata = deserializeMetadata(row.metadata ?? null);
98
- return {
99
- id: row.id,
100
- projectId: row.projectId ?? row.project_id ?? null,
101
- sessionId: row.sessionId ?? row.session_id,
102
- title: row.title ?? null,
103
- summary: row.summary ?? null,
104
- messageCount: row.messageCount ?? row.message_count ?? null,
105
- tokenCount: row.tokenCount ?? row.token_count ?? null,
106
- startedAt: normalizeTimestamp(row.startedAt ?? row.started_at),
107
- endedAt: normalizeTimestamp(row.endedAt ?? row.ended_at),
108
- };
109
- }
110
- //# sourceMappingURL=conversations.js.map
@@ -1,12 +0,0 @@
1
- export interface EntityRecord {
2
- id: string;
3
- projectId?: string | null;
4
- name: string;
5
- type: string;
6
- description?: string | null;
7
- properties?: Record<string, unknown> | null;
8
- createdAt?: string | null;
9
- updatedAt?: string | null;
10
- }
11
- export declare function getEntitiesForProject(projectPath: string, limit: number): Promise<EntityRecord[]>;
12
- //# sourceMappingURL=entities.d.ts.map
@@ -1,31 +0,0 @@
1
- import { desc, eq } from 'drizzle-orm';
2
- import { getDb } from '../../db/index.js';
3
- import { getSchema } from '../../db/schema.js';
4
- import { requireProject } from '../../core/projects.js';
5
- import { deserializeMetadata } from '../../core/memory/serialization.js';
6
- import { createDatabaseClient } from '../storage/database.js';
7
- import { normalizeTimestamp } from '../lib/utils.js';
8
- export async function getEntitiesForProject(projectPath, limit) {
9
- const db = createDatabaseClient(await getDb());
10
- const schema = await getSchema();
11
- const project = await requireProject(projectPath);
12
- const rows = await db.select().from(schema.entities)
13
- .where(eq(schema.entities.projectId, project.id))
14
- .orderBy(desc(schema.entities.createdAt))
15
- .limit(limit);
16
- return rows.map((row) => normalizeEntity(row));
17
- }
18
- function normalizeEntity(row) {
19
- const properties = deserializeMetadata(row.properties ?? null);
20
- return {
21
- id: row.id,
22
- projectId: row.projectId ?? row.project_id ?? null,
23
- name: row.name,
24
- type: row.type,
25
- description: row.description ?? null,
26
- properties,
27
- createdAt: normalizeTimestamp(row.createdAt ?? row.created_at),
28
- updatedAt: normalizeTimestamp(row.updatedAt ?? row.updated_at),
29
- };
30
- }
31
- //# sourceMappingURL=entities.js.map
@@ -1,25 +0,0 @@
1
- /**
2
- * Folder Context Generation
3
- * Generates and maintains per-folder CLAUDE.md files with session summaries
4
- */
5
- interface FolderContextData {
6
- projectPath: string;
7
- projectName: string;
8
- gitRemote?: string;
9
- gitBranch?: string;
10
- recentConversations: Array<{
11
- content: string;
12
- timestamp: string;
13
- }>;
14
- keyObservations: Array<{
15
- summary: string;
16
- timestamp: string;
17
- type: string;
18
- }>;
19
- lastUpdated: string;
20
- }
21
- export declare function generateAndInjectFolderContext(projectPath: string): Promise<void>;
22
- export declare function readFolderContext(projectPath: string): Promise<FolderContextData | null>;
23
- export declare function injectFolderContextIntoSession(projectPath: string): Promise<string>;
24
- export {};
25
- //# sourceMappingURL=folder-context.d.ts.map
@@ -1,119 +0,0 @@
1
- /**
2
- * Folder Context Generation
3
- * Generates and maintains per-folder CLAUDE.md files with session summaries
4
- */
5
- import { promises as fs } from 'fs';
6
- import path from 'path';
7
- import { getRecentConversations } from './conversations.js';
8
- import { logger } from '../../core/logger.js';
9
- function formatDate(dateStr) {
10
- return new Date(dateStr).toLocaleDateString('en-US', {
11
- year: 'numeric',
12
- month: '2-digit',
13
- day: '2-digit'
14
- });
15
- }
16
- function generateClaudeMdContent(data) {
17
- const lines = [
18
- `# Squish Context - ${data.projectName}`,
19
- '',
20
- '<squish-context>',
21
- '',
22
- `**Project**: ${data.projectPath}`
23
- ];
24
- if (data.gitRemote) {
25
- const gitInfo = data.gitBranch ? `${data.gitRemote} @ ${data.gitBranch}` : data.gitRemote;
26
- lines.push(`**Git**: ${gitInfo}`);
27
- }
28
- lines.push(`**Last Updated**: ${data.lastUpdated}`, '');
29
- if (data.recentConversations.length > 0) {
30
- lines.push('## Recent Activity');
31
- for (const conv of data.recentConversations) {
32
- const date = formatDate(conv.timestamp);
33
- const preview = conv.content.substring(0, 80).replace(/\n/g, ' ');
34
- lines.push(`- [${date}] ${preview}...`);
35
- }
36
- lines.push('');
37
- }
38
- if (data.keyObservations.length > 0) {
39
- lines.push('## Key Observations');
40
- for (const obs of data.keyObservations) {
41
- lines.push(`- ${obs.summary} (${obs.type})`);
42
- }
43
- lines.push('');
44
- }
45
- lines.push('## Previous Context', '*(Managed by Squish - do not edit this section)*', '', '</squish-context>', '', '<!-- You can add custom notes and project context here -->', '');
46
- return lines.join('\n');
47
- }
48
- async function collectFolderContextData(projectPath) {
49
- const recentConversations = await getRecentConversations({ n: 5, project: projectPath })
50
- .catch(() => []);
51
- return {
52
- projectPath,
53
- projectName: path.basename(projectPath),
54
- recentConversations: (recentConversations || []).map((conv) => ({
55
- content: conv?.summary || '',
56
- timestamp: conv?.startedAt?.toISOString() || new Date().toISOString()
57
- })),
58
- keyObservations: [],
59
- lastUpdated: new Date().toISOString()
60
- };
61
- }
62
- async function preserveUserContent(claudeMdPath) {
63
- try {
64
- const existingContent = await fs.readFile(claudeMdPath, 'utf-8');
65
- const match = existingContent.match(/<\/squish-context>([\s\S]*)/);
66
- return match ? match[1] : '';
67
- }
68
- catch {
69
- return '';
70
- }
71
- }
72
- export async function generateAndInjectFolderContext(projectPath) {
73
- const claudeMdPath = path.join(projectPath, 'CLAUDE.md');
74
- const contextData = await collectFolderContextData(projectPath);
75
- const newContent = generateClaudeMdContent(contextData);
76
- const userContent = await preserveUserContent(claudeMdPath);
77
- await fs.writeFile(claudeMdPath, newContent + userContent, 'utf-8');
78
- logger.info(`Updated folder context: ${claudeMdPath}`);
79
- }
80
- export async function readFolderContext(projectPath) {
81
- try {
82
- const claudeMdPath = path.join(projectPath, 'CLAUDE.md');
83
- const content = await fs.readFile(claudeMdPath, 'utf-8');
84
- const contextMatch = content.match(/<squish-context>([\s\S]*?)<\/squish-context>/);
85
- if (!contextMatch)
86
- return null;
87
- const contextContent = contextMatch[1];
88
- const projectPathMatch = contextContent.match(/\*\*Project\*\*:\s*(.+)/);
89
- const gitMatch = contextContent.match(/\*\*Git\*\*:\s*(.+)/);
90
- const updatedMatch = contextContent.match(/\*\*Last Updated\*\*:\s*(.+)/);
91
- return {
92
- projectPath: projectPathMatch?.[1] || projectPath,
93
- projectName: path.basename(projectPath),
94
- gitRemote: gitMatch?.[1].split(' @')[0],
95
- gitBranch: gitMatch?.[1].split('@ ')[1],
96
- recentConversations: [],
97
- keyObservations: [],
98
- lastUpdated: updatedMatch?.[1] || new Date().toISOString()
99
- };
100
- }
101
- catch {
102
- return null;
103
- }
104
- }
105
- export async function injectFolderContextIntoSession(projectPath) {
106
- try {
107
- const claudeMdPath = path.join(projectPath, 'CLAUDE.md');
108
- const content = await fs.readFile(claudeMdPath, 'utf-8');
109
- const match = content.match(/<squish-context>([\s\S]*?)<\/squish-context>/);
110
- if (match) {
111
- return `\n<squish-folder-context>\n${match[1]}\n</squish-folder-context>\n`;
112
- }
113
- }
114
- catch {
115
- // File doesn't exist or can't be read
116
- }
117
- return '';
118
- }
119
- //# sourceMappingURL=folder-context.js.map
@@ -1,7 +0,0 @@
1
- /**
2
- * Compute a simple graph boost for a set of memory IDs.
3
- * For each memory, sum (weight * coactivationCount) of outgoing associations.
4
- * Returns a map from memoryId to boost value (default 0).
5
- */
6
- export declare function computeGraphBoost(memoryIds: string[]): Promise<Record<string, number>>;
7
- //# sourceMappingURL=graph-boost.d.ts.map
@@ -1,23 +0,0 @@
1
- import { getDb } from '../../db/index.js';
2
- import { memoryAssociations } from '../../db/drizzle/schema.js';
3
- import { inArray } from 'drizzle-orm';
4
- /**
5
- * Compute a simple graph boost for a set of memory IDs.
6
- * For each memory, sum (weight * coactivationCount) of outgoing associations.
7
- * Returns a map from memoryId to boost value (default 0).
8
- */
9
- export async function computeGraphBoost(memoryIds) {
10
- const boost = {};
11
- if (memoryIds.length === 0)
12
- return boost;
13
- const db = await getDb();
14
- // @ts-ignore - drizzle overload
15
- const rows = await db.select().from(memoryAssociations).where(inArray(memoryAssociations.fromMemoryId, memoryIds));
16
- for (const row of rows) {
17
- const from = row.fromMemoryId;
18
- const val = (row.weight ?? 0) * (row.coactivationCount ?? 0);
19
- boost[from] = (boost[from] ?? 0) + val;
20
- }
21
- return boost;
22
- }
23
- //# sourceMappingURL=graph-boost.js.map
@@ -1,4 +0,0 @@
1
- export * from './conversations.js';
2
- export * from './entities.js';
3
- export * from './folder-context.js';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1,61 +0,0 @@
1
- /**
2
- * QMD Hybrid Search Integration
3
- *
4
- * Integrates QMD's BM25+vector+rerank pipeline with Squish memories.
5
- * Provides enhanced search capabilities when QMD is available.
6
- *
7
- * QMD Search Pipeline:
8
- * 1. Query Expansion (LLM generates alternative queries)
9
- * 2. Parallel BM25 (FTS5) + Vector Search
10
- * 3. RRF Fusion (Reciprocal Rank Fusion)
11
- * 4. LLM Re-ranking (yes/no with logprobs)
12
- * 5. Position-Aware Blending
13
- *
14
- * Installation: bun install -g qmd
15
- * GitHub: https://github.com/tobi/qmd
16
- */
17
- import type { SearchInput, SearchResult } from '../memory/memories.js';
18
- export interface QMDSearchOptions extends SearchInput {
19
- useHybrid?: boolean;
20
- collection?: string;
21
- includeSquishResults?: boolean;
22
- }
23
- export interface QMDHybridSearchResult extends SearchResult {
24
- qmdScore?: number;
25
- source: 'squish' | 'qmd' | 'hybrid';
26
- }
27
- /**
28
- * Search memories using QMD's hybrid search
29
- *
30
- * @param options - Search options including query, type, limit, etc.
31
- * @returns QMD-enhanced search results
32
- */
33
- export declare function searchWithQMD(options: QMDSearchOptions): Promise<QMDHybridSearchResult[]>;
34
- /**
35
- * Fused search: combine Squish and QMD results
36
- *
37
- * Runs both searches in parallel and merges results with deduplication.
38
- *
39
- * @param options - Search options
40
- * @returns Fused search results from both sources
41
- */
42
- export declare function fusedSearch(options: QMDSearchOptions): Promise<QMDHybridSearchResult[]>;
43
- /**
44
- * Check if QMD is available and configured
45
- *
46
- * @returns true if QMD is enabled and available
47
- */
48
- export declare function isQMDAvailable(): Promise<boolean>;
49
- /**
50
- * Get QMD status and collection info
51
- *
52
- * @returns QMD status or null if unavailable
53
- */
54
- export declare function getQMDStatus(): Promise<{
55
- available: boolean;
56
- collections: Array<{
57
- name: string;
58
- documentCount: number;
59
- }>;
60
- } | null>;
61
- //# sourceMappingURL=qmd-search.d.ts.map
@@ -1,178 +0,0 @@
1
- /**
2
- * QMD Hybrid Search Integration
3
- *
4
- * Integrates QMD's BM25+vector+rerank pipeline with Squish memories.
5
- * Provides enhanced search capabilities when QMD is available.
6
- *
7
- * QMD Search Pipeline:
8
- * 1. Query Expansion (LLM generates alternative queries)
9
- * 2. Parallel BM25 (FTS5) + Vector Search
10
- * 3. RRF Fusion (Reciprocal Rank Fusion)
11
- * 4. LLM Re-ranking (yes/no with logprobs)
12
- * 5. Position-Aware Blending
13
- *
14
- * Installation: bun install -g qmd
15
- * GitHub: https://github.com/tobi/qmd
16
- */
17
- import { getQMDClient } from '../embeddings/qmd-client.js';
18
- import { search } from '../memory/memories.js';
19
- import { logger } from '../logger.js';
20
- import { config } from '../../config.js';
21
- /**
22
- * Search memories using QMD's hybrid search
23
- *
24
- * @param options - Search options including query, type, limit, etc.
25
- * @returns QMD-enhanced search results
26
- */
27
- export async function searchWithQMD(options) {
28
- const client = await getQMDClient();
29
- if (!(await client.isAvailable())) {
30
- logger.warn('QMD unavailable, falling back to Squish search');
31
- // Fallback to Squish search
32
- const squishResults = await search(options);
33
- return squishResults.map((r) => ({
34
- ...r,
35
- source: 'squish'
36
- }));
37
- }
38
- // Determine collection based on memory type mapping
39
- const collection = options.collection || getCollectionForType(options.type);
40
- try {
41
- let qmdResults = [];
42
- if (options.useHybrid !== false) {
43
- // Use qmd_query (hybrid with reranking) - best quality
44
- qmdResults = await client.query({
45
- query: options.query,
46
- collection,
47
- limit: options.limit || 10,
48
- minScore: 0.2
49
- });
50
- }
51
- else {
52
- // Use qmd_vsearch (semantic only) - faster
53
- qmdResults = await client.vsearch({
54
- query: options.query,
55
- collection,
56
- limit: options.limit || 10,
57
- minScore: 0.2
58
- });
59
- }
60
- // Map QMD results to Squish format
61
- return qmdResults.map((result) => ({
62
- id: result.docid || result.path,
63
- content: result.snippet || result.title,
64
- type: options.type || 'observation',
65
- tags: [],
66
- projectId: options.project ? options.project : null,
67
- similarity: result.score,
68
- qmdScore: result.score,
69
- source: 'qmd',
70
- createdAt: new Date().toISOString() // QMD doesn't provide timestamps
71
- }));
72
- }
73
- catch (error) {
74
- logger.error(`QMD search failed: ${error}`);
75
- // Fallback to Squish search
76
- const squishResults = await search(options);
77
- return squishResults.map((r) => ({
78
- ...r,
79
- source: 'squish'
80
- }));
81
- }
82
- }
83
- /**
84
- * Fused search: combine Squish and QMD results
85
- *
86
- * Runs both searches in parallel and merges results with deduplication.
87
- *
88
- * @param options - Search options
89
- * @returns Fused search results from both sources
90
- */
91
- export async function fusedSearch(options) {
92
- const client = await getQMDClient();
93
- const qmdAvailable = await client.isAvailable();
94
- // Run searches in parallel
95
- const results = await Promise.allSettled([
96
- search(options),
97
- qmdAvailable ? searchWithQMD({ ...options, includeSquishResults: false }) : []
98
- ]);
99
- const squishResults = results[0].status === 'fulfilled'
100
- ? results[0].value.map((r) => ({ ...r, source: 'squish' }))
101
- : [];
102
- const qmdResults = results[1].status === 'fulfilled'
103
- ? results[1].value
104
- : [];
105
- // Deduplicate by content similarity
106
- const seenContent = new Set();
107
- const merged = [];
108
- for (const result of [...squishResults, ...qmdResults]) {
109
- // Create a content key for deduplication (first 100 chars)
110
- const contentKey = result.content.substring(0, 100);
111
- if (!seenContent.has(contentKey)) {
112
- seenContent.add(contentKey);
113
- merged.push(result);
114
- }
115
- }
116
- // Re-rank by combined score
117
- merged.sort((a, b) => {
118
- const scoreA = (a.similarity || 0) + (a.qmdScore || 0) / 2;
119
- const scoreB = (b.similarity || 0) + (b.qmdScore || 0) / 2;
120
- return scoreB - scoreA;
121
- });
122
- return merged.slice(0, options.limit || 10);
123
- }
124
- /**
125
- * Get QMD collection name for a memory type
126
- *
127
- * Uses the configured collection mapping from config.
128
- *
129
- * @param type - Memory type (observation, fact, decision, context, preference)
130
- * @returns QMD collection name
131
- */
132
- function getCollectionForType(type) {
133
- if (!type) {
134
- return 'squish-all';
135
- }
136
- const mapping = config.qmdCollectionMapping || {};
137
- return mapping[type] || `squish-${type}`;
138
- }
139
- /**
140
- * Check if QMD is available and configured
141
- *
142
- * @returns true if QMD is enabled and available
143
- */
144
- export async function isQMDAvailable() {
145
- if (!config.qmdEnabled) {
146
- return false;
147
- }
148
- try {
149
- const client = await getQMDClient();
150
- return await client.isAvailable();
151
- }
152
- catch {
153
- return false;
154
- }
155
- }
156
- /**
157
- * Get QMD status and collection info
158
- *
159
- * @returns QMD status or null if unavailable
160
- */
161
- export async function getQMDStatus() {
162
- try {
163
- const client = await getQMDClient();
164
- const available = await client.isAvailable();
165
- if (!available) {
166
- return { available: false, collections: [] };
167
- }
168
- const status = await client.status();
169
- return {
170
- available: true,
171
- collections: status?.collections || []
172
- };
173
- }
174
- catch {
175
- return null;
176
- }
177
- }
178
- //# sourceMappingURL=qmd-search.js.map
@@ -1,6 +0,0 @@
1
- export declare function encrypt(plain: string, passphrase?: string): {
2
- ciphertext: string;
3
- nonce: string;
4
- };
5
- export declare function decrypt(ciphertext: string, nonceB64: string, passphrase?: string): string;
6
- //# sourceMappingURL=encrypt.d.ts.map
@@ -1,47 +0,0 @@
1
- import { randomBytes, pbkdf2Sync, createCipheriv, createDecipheriv } from 'crypto';
2
- import { config } from '../../config.js';
3
- const ITERATIONS = 100_000;
4
- const KEY_LEN = 32; // 256-bit
5
- const DIGEST = 'sha256';
6
- const ALGO = 'aes-256-gcm';
7
- const NONCE_LEN = 12;
8
- /**
9
- * Derive a symmetric key from the passphrase and a salt.
10
- * The salt is stored in `.squish/salt` (plain text) and is generated once.
11
- */
12
- function getSalt() {
13
- const fs = require('fs');
14
- const path = require('path');
15
- const saltPath = path.join(config.dataDir, 'salt');
16
- if (!fs.existsSync(saltPath)) {
17
- const salt = randomBytes(16).toString('hex');
18
- fs.writeFileSync(saltPath, salt);
19
- return Buffer.from(salt, 'hex');
20
- }
21
- return Buffer.from(fs.readFileSync(saltPath, 'utf-8'), 'hex');
22
- }
23
- function deriveKey(passphrase) {
24
- const salt = getSalt();
25
- return pbkdf2Sync(passphrase, salt, ITERATIONS, KEY_LEN, DIGEST);
26
- }
27
- export function encrypt(plain, passphrase) {
28
- const key = deriveKey(passphrase || config.encryptionPassphrase);
29
- const nonce = randomBytes(NONCE_LEN);
30
- const cipher = createCipheriv(ALGO, key, nonce);
31
- const encrypted = Buffer.concat([cipher.update(plain, 'utf8'), cipher.final()]);
32
- const tag = cipher.getAuthTag();
33
- const ciphertext = Buffer.concat([encrypted, tag]).toString('base64');
34
- return { ciphertext, nonce: nonce.toString('base64') };
35
- }
36
- export function decrypt(ciphertext, nonceB64, passphrase) {
37
- const key = deriveKey(passphrase || config.encryptionPassphrase);
38
- const nonce = Buffer.from(nonceB64, 'base64');
39
- const data = Buffer.from(ciphertext, 'base64');
40
- const tag = data.slice(data.length - 16);
41
- const encrypted = data.slice(0, data.length - 16);
42
- const decipher = createDecipheriv(ALGO, key, nonce);
43
- decipher.setAuthTag(tag);
44
- const decrypted = Buffer.concat([decipher.update(encrypted), decipher.final()]);
45
- return decrypted.toString('utf8');
46
- }
47
- //# sourceMappingURL=encrypt.js.map
@@ -1,26 +0,0 @@
1
- /**
2
- * Memory Governance
3
- * Implements protection, pinning, and immutability rules
4
- */
5
- /**
6
- * Mark a memory as protected (cannot be evicted)
7
- */
8
- export declare function protectMemory(memoryId: string, reason: string): Promise<void>;
9
- /**
10
- * Pin a memory for automatic injection into context
11
- */
12
- export declare function pinMemory(memoryId: string): Promise<void>;
13
- /**
14
- * Unpin a memory
15
- */
16
- export declare function unpinMemory(memoryId: string): Promise<void>;
17
- /**
18
- * Get all pinned memories for auto-injection into context
19
- * Works regardless of governance settings - pinned memories should always be accessible
20
- */
21
- export declare function getPinnedMemories(projectId?: string): Promise<any[]>;
22
- /**
23
- * Get pinned memories formatted for context injection
24
- */
25
- export declare function getPinnedMemoriesForContext(projectId?: string): Promise<string[]>;
26
- //# sourceMappingURL=governance.d.ts.map