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,302 +0,0 @@
1
- /**
2
- * Memory Lifecycle Management
3
- * Implements sector-based decay, tier classification, and eviction policies
4
- *
5
- * Decay Formula: newScore = importanceScore * (1 - decayRate/100)^days
6
- * - decayRate: per-memory integer (e.g., 30 = 30% decay per decay cycle)
7
- * - days: days since lastDecayAt
8
- * - Tier demotion occurs when score drops below decayThreshold
9
- * - Cold memories below threshold get status = 'expired'
10
- */
11
- import { and, eq, lt, inArray } from 'drizzle-orm';
12
- import { getDb } from '../db/index.js';
13
- import { getSchema } from '../db/schema.js';
14
- import { config } from '../config.js';
15
- import { logger } from './logger.js';
16
- import { triggerTierChange, triggerDecayApplied } from './memory/hooks.js';
17
- /**
18
- * Default decay intervals by sector (days until decay check)
19
- * These determine how often memories in each sector are evaluated for decay
20
- */
21
- const SECTOR_DECAY_INTERVAL_DAYS = {
22
- episodic: 30,
23
- semantic: 90,
24
- procedural: 180,
25
- autobiographical: 365,
26
- working: 7,
27
- };
28
- /**
29
- * Default decay rates by memory type (percentage per decay cycle)
30
- * Used as fallback when memory.decayRate is not set
31
- */
32
- const DEFAULT_DECAY_RATES = {
33
- observation: 5,
34
- fact: 3,
35
- decision: 2,
36
- context: 4,
37
- preference: 3,
38
- note: 5,
39
- reflection: 2,
40
- };
41
- const TIER_THRESHOLDS = {
42
- hot: { recency: 7, coactivation: 10, salience: 70 },
43
- warm: { recency: 30, coactivation: 5, salience: 50 },
44
- cold: { recency: Infinity, coactivation: 0, salience: 0 },
45
- };
46
- /**
47
- * Run full lifecycle maintenance on all memories
48
- */
49
- export async function runLifecycleMaintenance(projectId) {
50
- if (!config.lifecycleEnabled) {
51
- return { decayed: 0, evicted: 0, promoted: 0, tierChanges: { hot: 0, warm: 0, cold: 0 }, expired: 0 };
52
- }
53
- const stats = {
54
- decayed: 0,
55
- evicted: 0,
56
- promoted: 0,
57
- tierChanges: { hot: 0, warm: 0, cold: 0 },
58
- expired: 0,
59
- };
60
- try {
61
- await applyDecay(projectId, stats);
62
- await updateTiers(projectId, stats);
63
- await evictOldMemories(projectId, stats);
64
- }
65
- catch (error) {
66
- logger.error('Lifecycle maintenance error', error);
67
- }
68
- return stats;
69
- }
70
- /**
71
- * Apply decay to memories using per-memory decay rate formula
72
- *
73
- * Formula: newScore = importanceScore * (1 - decayRate/100)^days
74
- * - Uses per-memory decayRate (stored as integer percentage, e.g., 30 = 30%)
75
- * - Calculates days since lastDecayAt
76
- * - Demotes tier when score drops below decayThreshold
77
- * - Sets status = 'expired' for cold memories below threshold
78
- */
79
- async function applyDecay(projectId, stats) {
80
- try {
81
- const db = await getDb();
82
- const schema = await getSchema();
83
- const now = new Date();
84
- const decayThreshold = config.decayThreshold || 0.1;
85
- // Fetch memories that need decay processing (not protected, not expired)
86
- let whereClause;
87
- const conditions = [
88
- eq(schema.memories.isProtected, false),
89
- eq(schema.memories.status, 'active'),
90
- ];
91
- if (projectId) {
92
- conditions.push(eq(schema.memories.projectId, projectId));
93
- }
94
- whereClause = and(...conditions);
95
- const memories = await db
96
- .select()
97
- .from(schema.memories)
98
- .where(whereClause)
99
- .limit(10000);
100
- let decayed = 0;
101
- let expired = 0;
102
- const expiredIds = [];
103
- for (const memory of memories) {
104
- // Get decay rate for this memory (fallback to type-based default)
105
- const decayRate = memory.decayRate || DEFAULT_DECAY_RATES[memory.type] || 5;
106
- // Calculate days since last decay
107
- const lastDecayAt = memory.lastDecayAt ? new Date(memory.lastDecayAt) : new Date(memory.createdAt);
108
- const daysSinceDecay = Math.max(0, (now.getTime() - lastDecayAt.getTime()) / (24 * 60 * 60 * 1000));
109
- // Skip if not enough time has passed for this sector
110
- const sectorInterval = SECTOR_DECAY_INTERVAL_DAYS[memory.sector] || 30;
111
- if (daysSinceDecay < sectorInterval) {
112
- continue;
113
- }
114
- // Apply decay formula: newScore = oldScore * (1 - decayRate/100)^days
115
- const currentScore = memory.importanceScore || memory.relevanceScore || 50;
116
- const decayMultiplier = Math.pow(1 - decayRate / 100, daysSinceDecay / sectorInterval);
117
- const newScore = Math.max(0, Math.round(currentScore * decayMultiplier));
118
- // Check if memory should expire (cold tier + below threshold)
119
- const shouldExpire = memory.tier === 'cold' && newScore < (decayThreshold * 100);
120
- if (shouldExpire) {
121
- expiredIds.push(memory.id);
122
- expired++;
123
- logger.debug('Memory expiring', { id: memory.id, score: newScore, tier: memory.tier });
124
- }
125
- else if (newScore !== currentScore) {
126
- // Only update if score changed
127
- await db
128
- .update(schema.memories)
129
- .set({
130
- importanceScore: newScore,
131
- relevanceScore: newScore,
132
- lastDecayAt: now,
133
- updatedAt: now,
134
- })
135
- .where(eq(schema.memories.id, memory.id));
136
- decayed++;
137
- // Trigger decay applied hook
138
- try {
139
- await triggerDecayApplied({
140
- memoryId: memory.id,
141
- content: memory.content,
142
- type: memory.type,
143
- tags: typeof memory.tags === 'string' ? memory.tags.split(',') : [],
144
- project: memory.projectId || undefined,
145
- source: memory.source || undefined,
146
- tier: memory.tier,
147
- importance: newScore,
148
- oldScore: currentScore,
149
- newScore: newScore,
150
- });
151
- }
152
- catch (hookError) {
153
- logger.error('Error triggering decayApplied hook', hookError);
154
- }
155
- }
156
- }
157
- // Batch expire memories
158
- if (expiredIds.length > 0) {
159
- await db
160
- .update(schema.memories)
161
- .set({
162
- status: 'expired',
163
- updatedAt: now,
164
- })
165
- .where(inArray(schema.memories.id, expiredIds));
166
- }
167
- stats.decayed += decayed;
168
- stats.expired += expired;
169
- logger.info('Decay applied', { decayed, expired, total: memories.length });
170
- }
171
- catch (error) {
172
- logger.error('Error applying decay', error);
173
- }
174
- }
175
- /**
176
- * Update memory tiers based on recency, coactivation, and salience
177
- */
178
- async function updateTiers(projectId, stats) {
179
- try {
180
- const db = await getDb();
181
- const schema = await getSchema();
182
- const now = new Date();
183
- // Fetch all memories to classify
184
- const where = projectId ? eq(schema.memories.projectId, projectId) : undefined;
185
- const memories = await db
186
- .select()
187
- .from(schema.memories)
188
- .where(where)
189
- .limit(10000); // Process larger batches now
190
- // Calculate tiers in memory
191
- const tierAssignments = new Map();
192
- const tierCounts = { hot: 0, warm: 0, cold: 0 };
193
- for (const memory of memories) {
194
- const recencyDays = (now.getTime() - new Date(memory.createdAt).getTime()) / (24 * 60 * 60 * 1000);
195
- const coactivation = memory.coactivationScore || 0;
196
- const salience = memory.relevanceScore || 50;
197
- let newTier = 'cold';
198
- if (recencyDays <= TIER_THRESHOLDS.hot.recency &&
199
- coactivation >= TIER_THRESHOLDS.hot.coactivation &&
200
- salience >= TIER_THRESHOLDS.hot.salience) {
201
- newTier = 'hot';
202
- }
203
- else if (recencyDays <= TIER_THRESHOLDS.warm.recency &&
204
- coactivation >= TIER_THRESHOLDS.warm.coactivation &&
205
- salience >= TIER_THRESHOLDS.warm.salience) {
206
- newTier = 'warm';
207
- }
208
- if (newTier !== memory.tier) {
209
- tierAssignments.set(memory.id, newTier);
210
- tierCounts[newTier]++;
211
- }
212
- }
213
- if (tierAssignments.size === 0)
214
- return;
215
- // Group by tier for efficient batched updates
216
- const hotIds = Array.from(tierAssignments.entries())
217
- .filter(([_, tier]) => tier === 'hot')
218
- .map(([id]) => id);
219
- const warmIds = Array.from(tierAssignments.entries())
220
- .filter(([_, tier]) => tier === 'warm')
221
- .map(([id]) => id);
222
- const coldIds = Array.from(tierAssignments.entries())
223
- .filter(([_, tier]) => tier === 'cold')
224
- .map(([id]) => id);
225
- // Execute batched updates instead of individual queries
226
- if (hotIds.length > 0) {
227
- await db
228
- .update(schema.memories)
229
- .set({ tier: 'hot', updatedAt: now })
230
- .where(inArray(schema.memories.id, hotIds));
231
- }
232
- if (warmIds.length > 0) {
233
- await db
234
- .update(schema.memories)
235
- .set({ tier: 'warm', updatedAt: now })
236
- .where(inArray(schema.memories.id, warmIds));
237
- }
238
- if (coldIds.length > 0) {
239
- await db
240
- .update(schema.memories)
241
- .set({ tier: 'cold', updatedAt: now })
242
- .where(inArray(schema.memories.id, coldIds));
243
- }
244
- // Trigger tier change hooks for each memory that changed tier
245
- if (tierAssignments.size > 0) {
246
- for (const memory of memories) {
247
- const newTier = tierAssignments.get(memory.id);
248
- if (newTier && newTier !== memory.tier) {
249
- try {
250
- await triggerTierChange({
251
- memoryId: memory.id,
252
- content: memory.content,
253
- type: memory.type,
254
- tags: typeof memory.tags === 'string' ? memory.tags.split(',') : [],
255
- project: memory.projectId || undefined,
256
- source: memory.source || undefined,
257
- tier: newTier,
258
- importance: memory.importanceScore || memory.relevanceScore || 50,
259
- oldTier: memory.tier,
260
- newTier: newTier,
261
- });
262
- }
263
- catch (hookError) {
264
- logger.error('Error triggering tierChange hook', hookError);
265
- }
266
- }
267
- }
268
- }
269
- // Update stats
270
- stats.tierChanges.hot = tierCounts.hot;
271
- stats.tierChanges.warm = tierCounts.warm;
272
- stats.tierChanges.cold = tierCounts.cold;
273
- logger.debug('Tier updates complete', {
274
- hot: tierCounts.hot,
275
- warm: tierCounts.warm,
276
- cold: tierCounts.cold,
277
- });
278
- }
279
- catch (error) {
280
- logger.error('Error updating tiers', error);
281
- }
282
- }
283
- /**
284
- * Evict old, cold memories with low relevance
285
- */
286
- async function evictOldMemories(projectId, stats) {
287
- try {
288
- const db = await getDb();
289
- const schema = await getSchema();
290
- const evictionThreshold = new Date(Date.now() - 180 * 24 * 60 * 60 * 1000); // 180 days
291
- const where = projectId
292
- ? and(eq(schema.memories.projectId, projectId), lt(schema.memories.createdAt, evictionThreshold), eq(schema.memories.isProtected, false), eq(schema.memories.isPinned, false), eq(schema.memories.tier, 'cold'), lt(schema.memories.relevanceScore, 20) // Very low relevance
293
- )
294
- : and(lt(schema.memories.createdAt, evictionThreshold), eq(schema.memories.isProtected, false), eq(schema.memories.isPinned, false), eq(schema.memories.tier, 'cold'), lt(schema.memories.relevanceScore, 20));
295
- const result = await db.delete(schema.memories).where(where);
296
- stats.evicted = result?.rowCount || 0;
297
- }
298
- catch (error) {
299
- logger.error('Error evicting memories', error);
300
- }
301
- }
302
- //# sourceMappingURL=lifecycle.js.map
@@ -1,11 +0,0 @@
1
- /**
2
- * Utility functions for local embeddings
3
- * Note: Actual embedding generation is in core/embeddings.ts
4
- */
5
- import { cosineSimilarity as vectorCosineSimilarity } from './utils/vector-operations.js';
6
- /**
7
- * @deprecated Use cosineSimilarity from core/utils/vector-operations.ts directly.
8
- * This re-export is for backward compatibility and will be removed in v1.2.0.
9
- */
10
- export declare const cosineSimilarity: typeof vectorCosineSimilarity;
11
- //# sourceMappingURL=local-embeddings.d.ts.map
@@ -1,16 +0,0 @@
1
- interface LogContext {
2
- [key: string]: any;
3
- }
4
- declare class Logger {
5
- private prefix;
6
- private debugEnabled;
7
- constructor(prefix?: string);
8
- private format;
9
- info(message: string, context?: LogContext): void;
10
- warn(message: string, context?: LogContext): void;
11
- error(message: string, error?: Error | any, context?: LogContext): void;
12
- debug(message: string, context?: LogContext): void;
13
- }
14
- export declare const logger: Logger;
15
- export {};
16
- //# sourceMappingURL=logger.d.ts.map
@@ -1,40 +0,0 @@
1
- function isQuietMode() {
2
- return process.env.SQUISH_QUIET !== 'false' &&
3
- process.env.DEBUG !== 'true' &&
4
- process.env.DEBUG !== '1';
5
- }
6
- class Logger {
7
- prefix;
8
- debugEnabled;
9
- constructor(prefix = 'squish') {
10
- this.prefix = prefix;
11
- this.debugEnabled = process.env.DEBUG === 'true' || process.env.DEBUG === '1';
12
- }
13
- format(level, message, context) {
14
- const timestamp = new Date().toISOString();
15
- const ctx = context ? ` ${JSON.stringify(context)}` : '';
16
- return `[${this.prefix}:${level}] ${message}${ctx}`;
17
- }
18
- info(message, context) {
19
- if (!isQuietMode())
20
- console.error(this.format('info', message, context));
21
- }
22
- warn(message, context) {
23
- console.error(this.format('warn', message, context));
24
- }
25
- error(message, error, context) {
26
- const errorMsg = error instanceof Error ? error.message : error;
27
- const ctx = { ...context, error: errorMsg };
28
- console.error(this.format('error', message, ctx));
29
- if (error instanceof Error && error.stack) {
30
- console.error(error.stack);
31
- }
32
- }
33
- debug(message, context) {
34
- if (this.debugEnabled) {
35
- console.error(this.format('debug', message, context));
36
- }
37
- }
38
- }
39
- export const logger = new Logger();
40
- //# sourceMappingURL=logger.js.map
@@ -1,17 +0,0 @@
1
- import { MCPToolResult, MCPInitializeResponse } from './types.js';
2
- export declare class MCPClient {
3
- private baseUrl;
4
- private connected;
5
- private serverInfo;
6
- constructor(baseUrl?: string);
7
- initialize(): Promise<MCPInitializeResponse>;
8
- listTools(): Promise<any[]>;
9
- callTool(name: string, args?: Record<string, any>): Promise<MCPToolResult>;
10
- healthCheck(): Promise<boolean>;
11
- isConnected(): boolean;
12
- getServerInfo(): {
13
- name: string;
14
- version: string;
15
- } | null;
16
- }
17
- //# sourceMappingURL=client.d.ts.map
@@ -1,101 +0,0 @@
1
- import { logger } from '../logger.js';
2
- export class MCPClient {
3
- baseUrl;
4
- connected = false;
5
- serverInfo = null;
6
- constructor(baseUrl = 'http://localhost:8766') {
7
- this.baseUrl = baseUrl.replace(/\/$/, '');
8
- }
9
- async initialize() {
10
- const request = {
11
- protocolVersion: '2024-11-05',
12
- capabilities: {
13
- tools: {},
14
- },
15
- clientInfo: {
16
- name: 'squish-mcp-client',
17
- version: '0.9.0',
18
- },
19
- };
20
- try {
21
- const response = await fetch(`${this.baseUrl}/initialize`, {
22
- method: 'POST',
23
- headers: { 'Content-Type': 'application/json' },
24
- body: JSON.stringify(request),
25
- });
26
- if (!response.ok) {
27
- throw new Error(`Initialize failed: ${response.statusText}`);
28
- }
29
- const result = await response.json();
30
- this.serverInfo = result.serverInfo;
31
- this.connected = true;
32
- logger.info(`Connected to MCP server: ${result.serverInfo.name} v${result.serverInfo.version}`);
33
- return result;
34
- }
35
- catch (error) {
36
- logger.error('Failed to initialize MCP connection:', error);
37
- throw error;
38
- }
39
- }
40
- async listTools() {
41
- try {
42
- const response = await fetch(`${this.baseUrl}/tools/list`);
43
- if (!response.ok) {
44
- throw new Error(`List tools failed: ${response.statusText}`);
45
- }
46
- const data = await response.json();
47
- return data.tools || [];
48
- }
49
- catch (error) {
50
- logger.error('Failed to list tools:', error);
51
- return [];
52
- }
53
- }
54
- async callTool(name, args = {}) {
55
- if (!this.connected) {
56
- await this.initialize();
57
- }
58
- const toolCall = { name, arguments: args };
59
- try {
60
- const response = await fetch(`${this.baseUrl}/tools/call`, {
61
- method: 'POST',
62
- headers: { 'Content-Type': 'application/json' },
63
- body: JSON.stringify(toolCall),
64
- });
65
- if (!response.ok) {
66
- const errorText = await response.text();
67
- throw new Error(`Tool call failed: ${response.statusText} - ${errorText}`);
68
- }
69
- const result = await response.json();
70
- return result;
71
- }
72
- catch (error) {
73
- logger.error(`Tool call error (${name}):`, error);
74
- return {
75
- content: [{
76
- type: 'text',
77
- text: `Error: ${error instanceof Error ? error.message : 'Unknown error'}`,
78
- }],
79
- isError: true,
80
- };
81
- }
82
- }
83
- async healthCheck() {
84
- try {
85
- const response = await fetch(`${this.baseUrl}/health`, {
86
- method: 'GET',
87
- });
88
- return response.ok;
89
- }
90
- catch (error) {
91
- return false;
92
- }
93
- }
94
- isConnected() {
95
- return this.connected;
96
- }
97
- getServerInfo() {
98
- return this.serverInfo;
99
- }
100
- }
101
- //# sourceMappingURL=client.js.map
@@ -1,6 +0,0 @@
1
- export { MCPServer } from './server.js';
2
- export { MCPClient } from './client.js';
3
- export { SquishMCPServer, startMCPServer, stopMCPServer, getSquishMCPServer } from './standalone-server.js';
4
- export * from './types.js';
5
- export * from './tools.js';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1,6 +0,0 @@
1
- export { MCPServer } from './server.js';
2
- export { MCPClient } from './client.js';
3
- export { SquishMCPServer, startMCPServer, stopMCPServer, getSquishMCPServer } from './standalone-server.js';
4
- export * from './types.js';
5
- export * from './tools.js';
6
- //# sourceMappingURL=index.js.map
@@ -1,18 +0,0 @@
1
- import { MCPToolDefinition } from './types.js';
2
- export declare class MCPServer {
3
- private app;
4
- private httpServer;
5
- private tools;
6
- private port;
7
- private serverName;
8
- private serverVersion;
9
- constructor(port?: number, serverName?: string, serverVersion?: string);
10
- private setupMiddleware;
11
- private setupRoutes;
12
- registerTool(definition: MCPToolDefinition): void;
13
- registerTools(definitions: MCPToolDefinition[]): void;
14
- start(): Promise<void>;
15
- stop(): Promise<void>;
16
- getToolCount(): number;
17
- }
18
- //# sourceMappingURL=server.d.ts.map
@@ -1,157 +0,0 @@
1
- import express from 'express';
2
- import cors from 'cors';
3
- import rateLimit from 'express-rate-limit';
4
- import { logger } from '../logger.js';
5
- export class MCPServer {
6
- app = express();
7
- httpServer = null;
8
- tools = new Map();
9
- port;
10
- serverName;
11
- serverVersion;
12
- constructor(port = 8767, serverName = 'squish-mcp', serverVersion = '0.9.0') {
13
- this.port = port;
14
- this.serverName = serverName;
15
- this.serverVersion = serverVersion;
16
- this.setupMiddleware();
17
- this.setupRoutes();
18
- }
19
- setupMiddleware() {
20
- const allowedOrigins = process.env.SQUISH_CORS_ORIGINS?.split(',').map(s => s.trim()) || ['http://localhost:*', 'http://127.0.0.1:*'];
21
- const appCors = cors({
22
- origin: (origin, callback) => {
23
- if (!origin || allowedOrigins.some(allowed => {
24
- if (allowed.endsWith(':*')) {
25
- const prefix = allowed.slice(0, -1);
26
- return origin.startsWith(prefix);
27
- }
28
- return origin === allowed;
29
- })) {
30
- callback(null, true);
31
- }
32
- else {
33
- callback(new Error('Not allowed by CORS'));
34
- }
35
- }
36
- });
37
- const limiter = rateLimit({
38
- windowMs: 15 * 60 * 1000,
39
- max: 100,
40
- message: { error: 'Too many requests, please try again later.' },
41
- standardHeaders: true,
42
- legacyHeaders: false,
43
- });
44
- this.app.use(appCors);
45
- this.app.use(limiter);
46
- this.app.use(express.json());
47
- }
48
- setupRoutes() {
49
- this.app.get('/sse', (req, res) => {
50
- res.setHeader('Content-Type', 'text/event-stream');
51
- res.setHeader('Cache-Control', 'no-cache');
52
- res.setHeader('Connection', 'keep-alive');
53
- res.flushHeaders();
54
- res.write('data: {"type":"connected"}\n\n');
55
- req.on('close', () => {
56
- logger.info('SSE client disconnected');
57
- });
58
- });
59
- this.app.post('/initialize', async (req, res) => {
60
- try {
61
- const request = req.body;
62
- const response = {
63
- protocolVersion: '2024-11-05',
64
- capabilities: {
65
- tools: {
66
- listChanged: true,
67
- },
68
- },
69
- serverInfo: {
70
- name: this.serverName,
71
- version: this.serverVersion,
72
- },
73
- };
74
- res.json(response);
75
- }
76
- catch (error) {
77
- logger.error('Initialize error:', error);
78
- res.status(400).json({ error: 'Invalid initialize request' });
79
- }
80
- });
81
- this.app.get('/tools/list', (req, res) => {
82
- const tools = Array.from(this.tools.values()).map(def => def.tool);
83
- res.json({ tools });
84
- });
85
- this.app.post('/tools/call', async (req, res) => {
86
- try {
87
- const { name, arguments: args } = req.body;
88
- if (!name || typeof name !== 'string') {
89
- return res.status(400).json({ error: 'Tool name required' });
90
- }
91
- const toolDef = this.tools.get(name);
92
- if (!toolDef) {
93
- return res.status(404).json({ error: `Tool not found: ${name}` });
94
- }
95
- const result = await toolDef.handler(args || {});
96
- res.json(result);
97
- }
98
- catch (error) {
99
- logger.error('Tool call error:', error);
100
- res.status(500).json({
101
- error: error instanceof Error ? error.message : 'Tool execution failed'
102
- });
103
- }
104
- });
105
- this.app.get('/health', (req, res) => {
106
- res.json({
107
- status: 'ok',
108
- server: this.serverName,
109
- version: this.serverVersion,
110
- tools: this.tools.size
111
- });
112
- });
113
- }
114
- registerTool(definition) {
115
- this.tools.set(definition.tool.name, definition);
116
- logger.info(`Registered MCP tool: ${definition.tool.name}`);
117
- }
118
- registerTools(definitions) {
119
- definitions.forEach(def => this.registerTool(def));
120
- }
121
- async start() {
122
- return new Promise((resolve, reject) => {
123
- this.httpServer = this.app.listen(this.port, () => {
124
- logger.info(`MCP server listening on port ${this.port}`);
125
- logger.info(`SSE endpoint: http://localhost:${this.port}/sse`);
126
- logger.info(`Tools available: ${this.tools.size}`);
127
- resolve();
128
- });
129
- this.httpServer.on('error', (error) => {
130
- logger.error('MCP server error:', error);
131
- reject(error);
132
- });
133
- });
134
- }
135
- async stop() {
136
- return new Promise((resolve, reject) => {
137
- if (!this.httpServer) {
138
- resolve();
139
- return;
140
- }
141
- this.httpServer.close((error) => {
142
- if (error) {
143
- logger.error('Error stopping MCP server:', error);
144
- reject(error);
145
- }
146
- else {
147
- logger.info('MCP server stopped');
148
- resolve();
149
- }
150
- });
151
- });
152
- }
153
- getToolCount() {
154
- return this.tools.size;
155
- }
156
- }
157
- //# sourceMappingURL=server.js.map