squish-memory 1.2.0 → 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 (449) hide show
  1. package/bin/squish-mcp.mjs +40 -42
  2. package/core/scheduler/cron-scheduler.ts +10 -1
  3. package/core/worker.ts +10 -1
  4. package/package.json +119 -119
  5. package/packages/mcp/src/index.ts +99 -36
  6. package/dist/config.d.ts +0 -106
  7. package/dist/config.js +0 -194
  8. package/dist/core/adapters/config/claude-code.d.ts +0 -45
  9. package/dist/core/adapters/config/claude-code.js +0 -113
  10. package/dist/core/adapters/config/cursor.d.ts +0 -26
  11. package/dist/core/adapters/config/cursor.js +0 -74
  12. package/dist/core/adapters/config/opencode.d.ts +0 -23
  13. package/dist/core/adapters/config/opencode.js +0 -73
  14. package/dist/core/adapters/config/windsurf.d.ts +0 -26
  15. package/dist/core/adapters/config/windsurf.js +0 -74
  16. package/dist/core/adapters/index.d.ts +0 -45
  17. package/dist/core/adapters/index.js +0 -84
  18. package/dist/core/adapters/scripts/install-adapter.d.ts +0 -19
  19. package/dist/core/adapters/scripts/install-adapter.js +0 -149
  20. package/dist/core/adapters/timeline.d.ts +0 -23
  21. package/dist/core/adapters/timeline.js +0 -88
  22. package/dist/core/adapters/types.d.ts +0 -137
  23. package/dist/core/adapters/types.js +0 -50
  24. package/dist/core/agent-preferences.d.ts +0 -16
  25. package/dist/core/agent-preferences.js +0 -124
  26. package/dist/core/algorithms/analytics/token-estimator.d.ts +0 -50
  27. package/dist/core/algorithms/analytics/token-estimator.js +0 -154
  28. package/dist/core/algorithms/detection/hash-filters.d.ts +0 -47
  29. package/dist/core/algorithms/detection/hash-filters.js +0 -190
  30. package/dist/core/algorithms/detection/semantic-ranker.d.ts +0 -32
  31. package/dist/core/algorithms/detection/semantic-ranker.js +0 -118
  32. package/dist/core/algorithms/detection/two-stage-detector.d.ts +0 -52
  33. package/dist/core/algorithms/detection/two-stage-detector.js +0 -299
  34. package/dist/core/algorithms/handlers/approve-merge.d.ts +0 -22
  35. package/dist/core/algorithms/handlers/approve-merge.js +0 -179
  36. package/dist/core/algorithms/handlers/detect-duplicates.d.ts +0 -47
  37. package/dist/core/algorithms/handlers/detect-duplicates.js +0 -145
  38. package/dist/core/algorithms/handlers/get-stats.d.ts +0 -39
  39. package/dist/core/algorithms/handlers/get-stats.js +0 -88
  40. package/dist/core/algorithms/handlers/list-proposals.d.ts +0 -45
  41. package/dist/core/algorithms/handlers/list-proposals.js +0 -83
  42. package/dist/core/algorithms/handlers/preview-merge.d.ts +0 -39
  43. package/dist/core/algorithms/handlers/preview-merge.js +0 -93
  44. package/dist/core/algorithms/handlers/reject-merge.d.ts +0 -28
  45. package/dist/core/algorithms/handlers/reject-merge.js +0 -69
  46. package/dist/core/algorithms/handlers/reverse-merge.d.ts +0 -21
  47. package/dist/core/algorithms/handlers/reverse-merge.js +0 -121
  48. package/dist/core/algorithms/index.d.ts +0 -21
  49. package/dist/core/algorithms/index.js +0 -26
  50. package/dist/core/algorithms/operations/cache-maintenance.d.ts +0 -12
  51. package/dist/core/algorithms/operations/cache-maintenance.js +0 -157
  52. package/dist/core/algorithms/safety/safety-checks.d.ts +0 -18
  53. package/dist/core/algorithms/safety/safety-checks.js +0 -179
  54. package/dist/core/algorithms/strategies/merge-strategies.d.ts +0 -50
  55. package/dist/core/algorithms/strategies/merge-strategies.js +0 -288
  56. package/dist/core/algorithms/types.d.ts +0 -125
  57. package/dist/core/algorithms/types.js +0 -5
  58. package/dist/core/algorithms/utils/response-builder.d.ts +0 -28
  59. package/dist/core/algorithms/utils/response-builder.js +0 -37
  60. package/dist/core/associations.d.ts +0 -33
  61. package/dist/core/associations.js +0 -284
  62. package/dist/core/autosave.d.ts +0 -19
  63. package/dist/core/autosave.js +0 -16
  64. package/dist/core/beliefs/decay.d.ts +0 -27
  65. package/dist/core/beliefs/decay.js +0 -217
  66. package/dist/core/beliefs/extractor.d.ts +0 -9
  67. package/dist/core/beliefs/extractor.js +0 -113
  68. package/dist/core/beliefs/store.d.ts +0 -46
  69. package/dist/core/beliefs/store.js +0 -466
  70. package/dist/core/beliefs/types.d.ts +0 -28
  71. package/dist/core/beliefs/types.js +0 -2
  72. package/dist/core/commands/mcp-server.d.ts +0 -2
  73. package/dist/core/commands/mcp-server.js +0 -6
  74. package/dist/core/commands/remember.d.ts +0 -24
  75. package/dist/core/commands/remember.js +0 -144
  76. package/dist/core/compression.d.ts +0 -45
  77. package/dist/core/compression.js +0 -160
  78. package/dist/core/consolidation.d.ts +0 -37
  79. package/dist/core/consolidation.js +0 -248
  80. package/dist/core/context/agent-context.d.ts +0 -106
  81. package/dist/core/context/agent-context.js +0 -274
  82. package/dist/core/context/context-paging.d.ts +0 -80
  83. package/dist/core/context/context-paging.js +0 -328
  84. package/dist/core/context/context-window.d.ts +0 -40
  85. package/dist/core/context/context-window.js +0 -177
  86. package/dist/core/context/context.d.ts +0 -7
  87. package/dist/core/context/context.js +0 -22
  88. package/dist/core/embeddings/embeddings.d.ts +0 -29
  89. package/dist/core/embeddings/embeddings.js +0 -546
  90. package/dist/core/embeddings/google-multimodal.d.ts +0 -14
  91. package/dist/core/embeddings/google-multimodal.js +0 -146
  92. package/dist/core/embeddings/local-embeddings.d.ts +0 -11
  93. package/dist/core/embeddings/local-embeddings.js +0 -11
  94. package/dist/core/embeddings/qmd-client.d.ts +0 -136
  95. package/dist/core/embeddings/qmd-client.js +0 -403
  96. package/dist/core/embeddings/transformers-local.d.ts +0 -64
  97. package/dist/core/embeddings/transformers-local.js +0 -213
  98. package/dist/core/embeddings.d.ts +0 -2
  99. package/dist/core/embeddings.js +0 -3
  100. package/dist/core/error-handling.d.ts +0 -63
  101. package/dist/core/error-handling.js +0 -173
  102. package/dist/core/graph/entity-deduplicator.d.ts +0 -24
  103. package/dist/core/graph/entity-deduplicator.js +0 -183
  104. package/dist/core/graph/graph-builder.d.ts +0 -46
  105. package/dist/core/graph/graph-builder.js +0 -174
  106. package/dist/core/graph/graph-traversal.d.ts +0 -80
  107. package/dist/core/graph/graph-traversal.js +0 -315
  108. package/dist/core/graph/index.d.ts +0 -19
  109. package/dist/core/graph/index.js +0 -13
  110. package/dist/core/graph/llm-entity-extractor.d.ts +0 -49
  111. package/dist/core/graph/llm-entity-extractor.js +0 -313
  112. package/dist/core/graph/multi-hop-retrieval.d.ts +0 -48
  113. package/dist/core/graph/multi-hop-retrieval.js +0 -215
  114. package/dist/core/graph/relationship-extractor.d.ts +0 -48
  115. package/dist/core/graph/relationship-extractor.js +0 -351
  116. package/dist/core/hooks/agent-hooks.d.ts +0 -83
  117. package/dist/core/hooks/agent-hooks.js +0 -521
  118. package/dist/core/hooks/auto-tagger.d.ts +0 -19
  119. package/dist/core/hooks/auto-tagger.js +0 -155
  120. package/dist/core/hooks/capture-filter.d.ts +0 -41
  121. package/dist/core/hooks/capture-filter.js +0 -128
  122. package/dist/core/hot-cache.d.ts +0 -86
  123. package/dist/core/hot-cache.js +0 -285
  124. package/dist/core/index.d.ts +0 -10
  125. package/dist/core/index.js +0 -11
  126. package/dist/core/ingestion/agent-memory.d.ts +0 -22
  127. package/dist/core/ingestion/agent-memory.js +0 -109
  128. package/dist/core/ingestion/core-memory.d.ts +0 -78
  129. package/dist/core/ingestion/core-memory.js +0 -226
  130. package/dist/core/ingestion/learnings.d.ts +0 -57
  131. package/dist/core/ingestion/learnings.js +0 -205
  132. package/dist/core/ingestion/signal-engine.d.ts +0 -41
  133. package/dist/core/ingestion/signal-engine.js +0 -201
  134. package/dist/core/integrations/obsidian-vault.d.ts +0 -31
  135. package/dist/core/integrations/obsidian-vault.js +0 -156
  136. package/dist/core/layers/generator.d.ts +0 -25
  137. package/dist/core/layers/generator.js +0 -76
  138. package/dist/core/lib/db-client.d.ts +0 -114
  139. package/dist/core/lib/db-client.js +0 -130
  140. package/dist/core/lib/parse-embedding.d.ts +0 -9
  141. package/dist/core/lib/parse-embedding.js +0 -58
  142. package/dist/core/lib/schemas.d.ts +0 -132
  143. package/dist/core/lib/schemas.js +0 -87
  144. package/dist/core/lib/types.d.ts +0 -45
  145. package/dist/core/lib/types.js +0 -6
  146. package/dist/core/lib/utils.d.ts +0 -18
  147. package/dist/core/lib/utils.js +0 -145
  148. package/dist/core/lib/validation.d.ts +0 -38
  149. package/dist/core/lib/validation.js +0 -151
  150. package/dist/core/lifecycle.d.ts +0 -25
  151. package/dist/core/lifecycle.js +0 -292
  152. package/dist/core/logger.d.ts +0 -17
  153. package/dist/core/logger.js +0 -46
  154. package/dist/core/mcp/client.d.ts +0 -17
  155. package/dist/core/mcp/client.js +0 -101
  156. package/dist/core/mcp/index.d.ts +0 -6
  157. package/dist/core/mcp/index.js +0 -6
  158. package/dist/core/mcp/server.d.ts +0 -18
  159. package/dist/core/mcp/server.js +0 -157
  160. package/dist/core/mcp/standalone-server.d.ts +0 -13
  161. package/dist/core/mcp/standalone-server.js +0 -46
  162. package/dist/core/mcp/tools.d.ts +0 -7
  163. package/dist/core/mcp/tools.js +0 -278
  164. package/dist/core/mcp/types.d.ts +0 -87
  165. package/dist/core/mcp/types.js +0 -48
  166. package/dist/core/memory/bridge-discovery.d.ts +0 -50
  167. package/dist/core/memory/bridge-discovery.js +0 -291
  168. package/dist/core/memory/categorizer.d.ts +0 -27
  169. package/dist/core/memory/categorizer.js +0 -306
  170. package/dist/core/memory/conflict-detector.d.ts +0 -7
  171. package/dist/core/memory/conflict-detector.js +0 -43
  172. package/dist/core/memory/consolidation.d.ts +0 -42
  173. package/dist/core/memory/consolidation.js +0 -277
  174. package/dist/core/memory/context-collector.d.ts +0 -10
  175. package/dist/core/memory/context-collector.js +0 -56
  176. package/dist/core/memory/contradiction-resolver.d.ts +0 -40
  177. package/dist/core/memory/contradiction-resolver.js +0 -368
  178. package/dist/core/memory/edit-workflow.d.ts +0 -19
  179. package/dist/core/memory/edit-workflow.js +0 -120
  180. package/dist/core/memory/entity-extractor.d.ts +0 -37
  181. package/dist/core/memory/entity-extractor.js +0 -350
  182. package/dist/core/memory/entity-resolver.d.ts +0 -23
  183. package/dist/core/memory/entity-resolver.js +0 -64
  184. package/dist/core/memory/explain.d.ts +0 -18
  185. package/dist/core/memory/explain.js +0 -92
  186. package/dist/core/memory/fact-deriver.d.ts +0 -31
  187. package/dist/core/memory/fact-deriver.js +0 -236
  188. package/dist/core/memory/fact-extractor.d.ts +0 -24
  189. package/dist/core/memory/fact-extractor.js +0 -89
  190. package/dist/core/memory/feedback-tracker.d.ts +0 -12
  191. package/dist/core/memory/feedback-tracker.js +0 -155
  192. package/dist/core/memory/hooks.d.ts +0 -88
  193. package/dist/core/memory/hooks.js +0 -174
  194. package/dist/core/memory/hybrid-retrieval.d.ts +0 -27
  195. package/dist/core/memory/hybrid-retrieval.js +0 -37
  196. package/dist/core/memory/hybrid-scorer.d.ts +0 -40
  197. package/dist/core/memory/hybrid-scorer.js +0 -267
  198. package/dist/core/memory/hybrid-search.d.ts +0 -23
  199. package/dist/core/memory/hybrid-search.js +0 -596
  200. package/dist/core/memory/importance.d.ts +0 -46
  201. package/dist/core/memory/importance.js +0 -241
  202. package/dist/core/memory/index.d.ts +0 -9
  203. package/dist/core/memory/index.js +0 -11
  204. package/dist/core/memory/loader.d.ts +0 -31
  205. package/dist/core/memory/loader.js +0 -141
  206. package/dist/core/memory/markdown/markdown-storage.d.ts +0 -72
  207. package/dist/core/memory/markdown/markdown-storage.js +0 -243
  208. package/dist/core/memory/memories.d.ts +0 -43
  209. package/dist/core/memory/memories.js +0 -452
  210. package/dist/core/memory/memory-lifecycle.d.ts +0 -8
  211. package/dist/core/memory/memory-lifecycle.js +0 -47
  212. package/dist/core/memory/memory-manager.d.ts +0 -15
  213. package/dist/core/memory/memory-manager.js +0 -46
  214. package/dist/core/memory/migrate.d.ts +0 -21
  215. package/dist/core/memory/migrate.js +0 -134
  216. package/dist/core/memory/normalization.d.ts +0 -7
  217. package/dist/core/memory/normalization.js +0 -26
  218. package/dist/core/memory/path-strengthener.d.ts +0 -39
  219. package/dist/core/memory/path-strengthener.js +0 -150
  220. package/dist/core/memory/progressive-disclosure.d.ts +0 -43
  221. package/dist/core/memory/progressive-disclosure.js +0 -280
  222. package/dist/core/memory/query-processor.d.ts +0 -21
  223. package/dist/core/memory/query-processor.js +0 -106
  224. package/dist/core/memory/query-rewriter.d.ts +0 -13
  225. package/dist/core/memory/query-rewriter.js +0 -118
  226. package/dist/core/memory/response-analyzer.d.ts +0 -9
  227. package/dist/core/memory/response-analyzer.js +0 -61
  228. package/dist/core/memory/retrieval-feedback.d.ts +0 -70
  229. package/dist/core/memory/retrieval-feedback.js +0 -213
  230. package/dist/core/memory/serialization.d.ts +0 -10
  231. package/dist/core/memory/serialization.js +0 -84
  232. package/dist/core/memory/stale-cleaner.d.ts +0 -26
  233. package/dist/core/memory/stale-cleaner.js +0 -97
  234. package/dist/core/memory/stats.d.ts +0 -32
  235. package/dist/core/memory/stats.js +0 -143
  236. package/dist/core/memory/telemetry.d.ts +0 -69
  237. package/dist/core/memory/telemetry.js +0 -313
  238. package/dist/core/memory/temporal-facts.d.ts +0 -41
  239. package/dist/core/memory/temporal-facts.js +0 -283
  240. package/dist/core/memory/temporal-parser.d.ts +0 -32
  241. package/dist/core/memory/temporal-parser.js +0 -385
  242. package/dist/core/memory/trigger-detector.d.ts +0 -21
  243. package/dist/core/memory/trigger-detector.js +0 -79
  244. package/dist/core/memory/write-gate.d.ts +0 -54
  245. package/dist/core/memory/write-gate.js +0 -210
  246. package/dist/core/places/index.d.ts +0 -14
  247. package/dist/core/places/index.js +0 -14
  248. package/dist/core/places/memory-places.d.ts +0 -68
  249. package/dist/core/places/memory-places.js +0 -261
  250. package/dist/core/places/places.d.ts +0 -88
  251. package/dist/core/places/places.js +0 -314
  252. package/dist/core/places/rules.d.ts +0 -74
  253. package/dist/core/places/rules.js +0 -240
  254. package/dist/core/places/walking.d.ts +0 -56
  255. package/dist/core/places/walking.js +0 -121
  256. package/dist/core/projects.d.ts +0 -17
  257. package/dist/core/projects.js +0 -116
  258. package/dist/core/redis.d.ts +0 -11
  259. package/dist/core/redis.js +0 -69
  260. package/dist/core/responses.d.ts +0 -96
  261. package/dist/core/responses.js +0 -122
  262. package/dist/core/runtime/trust-report.d.ts +0 -102
  263. package/dist/core/runtime/trust-report.js +0 -107
  264. package/dist/core/runtime/trust-state.d.ts +0 -12
  265. package/dist/core/runtime/trust-state.js +0 -309
  266. package/dist/core/scheduler/cron-scheduler.d.ts +0 -32
  267. package/dist/core/scheduler/cron-scheduler.js +0 -493
  268. package/dist/core/scheduler/heartbeat.d.ts +0 -11
  269. package/dist/core/scheduler/heartbeat.js +0 -73
  270. package/dist/core/scheduler/index.d.ts +0 -8
  271. package/dist/core/scheduler/index.js +0 -8
  272. package/dist/core/scheduler/job-runner.d.ts +0 -11
  273. package/dist/core/scheduler/job-runner.js +0 -164
  274. package/dist/core/search/conversations.d.ts +0 -25
  275. package/dist/core/search/conversations.js +0 -110
  276. package/dist/core/search/entities.d.ts +0 -12
  277. package/dist/core/search/entities.js +0 -31
  278. package/dist/core/search/folder-context.d.ts +0 -25
  279. package/dist/core/search/folder-context.js +0 -119
  280. package/dist/core/search/graph-boost.d.ts +0 -7
  281. package/dist/core/search/graph-boost.js +0 -23
  282. package/dist/core/search/index.d.ts +0 -4
  283. package/dist/core/search/index.js +0 -5
  284. package/dist/core/search/qmd-wrapper.d.ts +0 -36
  285. package/dist/core/search/qmd-wrapper.js +0 -58
  286. package/dist/core/security/encrypt.d.ts +0 -6
  287. package/dist/core/security/encrypt.js +0 -47
  288. package/dist/core/security/governance.d.ts +0 -26
  289. package/dist/core/security/governance.js +0 -79
  290. package/dist/core/security/privacy.d.ts +0 -23
  291. package/dist/core/security/privacy.js +0 -82
  292. package/dist/core/security/secret-detector.d.ts +0 -32
  293. package/dist/core/security/secret-detector.js +0 -88
  294. package/dist/core/session/auto-load.d.ts +0 -6
  295. package/dist/core/session/auto-load.js +0 -144
  296. package/dist/core/session/entity-tracker.d.ts +0 -62
  297. package/dist/core/session/entity-tracker.js +0 -287
  298. package/dist/core/session/index.d.ts +0 -7
  299. package/dist/core/session/index.js +0 -7
  300. package/dist/core/session/reference-resolver.d.ts +0 -26
  301. package/dist/core/session/reference-resolver.js +0 -121
  302. package/dist/core/session/self-iteration-job.d.ts +0 -35
  303. package/dist/core/session/self-iteration-job.js +0 -387
  304. package/dist/core/session/session-hooks.d.ts +0 -18
  305. package/dist/core/session/session-hooks.js +0 -58
  306. package/dist/core/session/types.d.ts +0 -26
  307. package/dist/core/session/types.js +0 -10
  308. package/dist/core/session/working-set.d.ts +0 -50
  309. package/dist/core/session/working-set.js +0 -212
  310. package/dist/core/snapshots/cleanup.d.ts +0 -9
  311. package/dist/core/snapshots/cleanup.js +0 -12
  312. package/dist/core/snapshots/comparison.d.ts +0 -19
  313. package/dist/core/snapshots/comparison.js +0 -43
  314. package/dist/core/snapshots/creation.d.ts +0 -13
  315. package/dist/core/snapshots/creation.js +0 -117
  316. package/dist/core/snapshots/retrieval.d.ts +0 -7
  317. package/dist/core/snapshots/retrieval.js +0 -41
  318. package/dist/core/snapshots/stats.d.ts +0 -11
  319. package/dist/core/snapshots/stats.js +0 -52
  320. package/dist/core/storage/cache.d.ts +0 -13
  321. package/dist/core/storage/cache.js +0 -202
  322. package/dist/core/storage/database.d.ts +0 -12
  323. package/dist/core/storage/database.js +0 -12
  324. package/dist/core/summarization/cleanup.d.ts +0 -9
  325. package/dist/core/summarization/cleanup.js +0 -12
  326. package/dist/core/summarization/queries.d.ts +0 -9
  327. package/dist/core/summarization/queries.js +0 -28
  328. package/dist/core/summarization/stats.d.ts +0 -14
  329. package/dist/core/summarization/stats.js +0 -52
  330. package/dist/core/summarization/strategies.d.ts +0 -24
  331. package/dist/core/summarization/strategies.js +0 -28
  332. package/dist/core/summarization.d.ts +0 -37
  333. package/dist/core/summarization.js +0 -188
  334. package/dist/core/temporal-facts.d.ts +0 -54
  335. package/dist/core/temporal-facts.js +0 -193
  336. package/dist/core/tracing/collector.d.ts +0 -111
  337. package/dist/core/tracing/collector.js +0 -350
  338. package/dist/core/tracing/visualizer.d.ts +0 -32
  339. package/dist/core/tracing/visualizer.js +0 -165
  340. package/dist/core/utils/cleanup-operations.d.ts +0 -13
  341. package/dist/core/utils/cleanup-operations.js +0 -44
  342. package/dist/core/utils/content-extraction.d.ts +0 -19
  343. package/dist/core/utils/content-extraction.js +0 -75
  344. package/dist/core/utils/filter-builder.d.ts +0 -13
  345. package/dist/core/utils/filter-builder.js +0 -44
  346. package/dist/core/utils/history-traversal.d.ts +0 -13
  347. package/dist/core/utils/history-traversal.js +0 -50
  348. package/dist/core/utils/memory-operations.d.ts +0 -17
  349. package/dist/core/utils/memory-operations.js +0 -43
  350. package/dist/core/utils/query-operations.d.ts +0 -18
  351. package/dist/core/utils/query-operations.js +0 -65
  352. package/dist/core/utils/summarization-helpers.d.ts +0 -17
  353. package/dist/core/utils/summarization-helpers.js +0 -33
  354. package/dist/core/utils/temporal-queries.d.ts +0 -13
  355. package/dist/core/utils/temporal-queries.js +0 -27
  356. package/dist/core/utils/vector-operations.d.ts +0 -71
  357. package/dist/core/utils/vector-operations.js +0 -129
  358. package/dist/core/utils/version-management.d.ts +0 -9
  359. package/dist/core/utils/version-management.js +0 -61
  360. package/dist/core/worker.d.ts +0 -82
  361. package/dist/core/worker.js +0 -272
  362. package/dist/db/adapter.d.ts +0 -7
  363. package/dist/db/adapter.js +0 -175
  364. package/dist/db/bootstrap.d.ts +0 -11
  365. package/dist/db/bootstrap.js +0 -1034
  366. package/dist/db/drizzle/schema-sqlite.d.ts +0 -5538
  367. package/dist/db/drizzle/schema-sqlite.js +0 -763
  368. package/dist/db/drizzle/schema.d.ts +0 -4734
  369. package/dist/db/drizzle/schema.js +0 -859
  370. package/dist/db/drizzle.config.d.ts +0 -3
  371. package/dist/db/drizzle.config.js +0 -12
  372. package/dist/db/index.d.ts +0 -7
  373. package/dist/db/index.js +0 -89
  374. package/dist/db/migrations/associations.d.ts +0 -6
  375. package/dist/db/migrations/associations.js +0 -29
  376. package/dist/db/migrations/beliefs.d.ts +0 -10
  377. package/dist/db/migrations/beliefs.js +0 -76
  378. package/dist/db/migrations/core-memory.d.ts +0 -6
  379. package/dist/db/migrations/core-memory.js +0 -29
  380. package/dist/db/migrations/fts.d.ts +0 -6
  381. package/dist/db/migrations/fts.js +0 -52
  382. package/dist/db/migrations/index.d.ts +0 -25
  383. package/dist/db/migrations/index.js +0 -51
  384. package/dist/db/migrations/indexes.d.ts +0 -6
  385. package/dist/db/migrations/indexes.js +0 -30
  386. package/dist/db/migrations/learnings.d.ts +0 -7
  387. package/dist/db/migrations/learnings.js +0 -26
  388. package/dist/db/migrations/maintenance.d.ts +0 -6
  389. package/dist/db/migrations/maintenance.js +0 -61
  390. package/dist/db/migrations/memories.d.ts +0 -7
  391. package/dist/db/migrations/memories.js +0 -16
  392. package/dist/db/migrations/memory-places.d.ts +0 -6
  393. package/dist/db/migrations/memory-places.js +0 -29
  394. package/dist/db/migrations/places.d.ts +0 -6
  395. package/dist/db/migrations/places.js +0 -43
  396. package/dist/db/migrations/projects.d.ts +0 -3
  397. package/dist/db/migrations/projects.js +0 -13
  398. package/dist/db/migrations/tier-conversion.d.ts +0 -7
  399. package/dist/db/migrations/tier-conversion.js +0 -20
  400. package/dist/db/neon.d.ts +0 -8
  401. package/dist/db/neon.js +0 -20
  402. package/dist/db/schema/beliefs.d.ts +0 -9
  403. package/dist/db/schema/beliefs.js +0 -46
  404. package/dist/db/schema/generator.d.ts +0 -38
  405. package/dist/db/schema/generator.js +0 -108
  406. package/dist/db/schema/index.d.ts +0 -39
  407. package/dist/db/schema/index.js +0 -51
  408. package/dist/db/schema/learnings.d.ts +0 -7
  409. package/dist/db/schema/learnings.js +0 -30
  410. package/dist/db/schema/memories.d.ts +0 -7
  411. package/dist/db/schema/memories.js +0 -81
  412. package/dist/db/schema/projects.d.ts +0 -4
  413. package/dist/db/schema/projects.js +0 -31
  414. package/dist/db/schema/tables/context-sessions.d.ts +0 -9
  415. package/dist/db/schema/tables/context-sessions.js +0 -37
  416. package/dist/db/schema/tables/conversations.d.ts +0 -9
  417. package/dist/db/schema/tables/conversations.js +0 -47
  418. package/dist/db/schema/tables/core-memory.d.ts +0 -9
  419. package/dist/db/schema/tables/core-memory.js +0 -41
  420. package/dist/db/schema/tables/entities.d.ts +0 -9
  421. package/dist/db/schema/tables/entities.js +0 -39
  422. package/dist/db/schema/tables/entity-relations.d.ts +0 -9
  423. package/dist/db/schema/tables/entity-relations.js +0 -31
  424. package/dist/db/schema/tables/learnings.d.ts +0 -9
  425. package/dist/db/schema/tables/learnings.js +0 -66
  426. package/dist/db/schema/tables/memories.d.ts +0 -9
  427. package/dist/db/schema/tables/memories.js +0 -161
  428. package/dist/db/schema/tables/memory-associations.d.ts +0 -9
  429. package/dist/db/schema/tables/memory-associations.js +0 -39
  430. package/dist/db/schema/tables/memory-hash-cache.d.ts +0 -9
  431. package/dist/db/schema/tables/memory-hash-cache.js +0 -29
  432. package/dist/db/schema/tables/memory-merge-history.d.ts +0 -9
  433. package/dist/db/schema/tables/memory-merge-history.js +0 -33
  434. package/dist/db/schema/tables/memory-merge-proposals.d.ts +0 -9
  435. package/dist/db/schema/tables/memory-merge-proposals.js +0 -39
  436. package/dist/db/schema/tables/messages.d.ts +0 -9
  437. package/dist/db/schema/tables/messages.js +0 -41
  438. package/dist/db/schema/tables/namespaces.d.ts +0 -9
  439. package/dist/db/schema/tables/namespaces.js +0 -37
  440. package/dist/db/schema/tables/projects.d.ts +0 -9
  441. package/dist/db/schema/tables/projects.js +0 -31
  442. package/dist/db/schema/tables/users.d.ts +0 -9
  443. package/dist/db/schema/tables/users.js +0 -27
  444. package/dist/db/schema.d.ts +0 -3
  445. package/dist/db/schema.js +0 -11
  446. package/dist/db/supabase.d.ts +0 -9
  447. package/dist/db/supabase.js +0 -24
  448. package/dist/packages/mcp/src/index.d.ts +0 -3
  449. package/dist/packages/mcp/src/index.js +0 -733
@@ -1,134 +0,0 @@
1
- /**
2
- * Memory Migration Module
3
- * Migrate memories between .squish directories/databases
4
- */
5
- import { randomUUID } from 'crypto';
6
- import { existsSync } from 'fs';
7
- import { join } from 'path';
8
- import { getDbClient } from '../lib/db-client.js';
9
- /**
10
- * Migrate memories from one .squish directory to another
11
- */
12
- export async function migrateMemories(sourceDir, targetDir, options = {}) {
13
- const { dryRun = false, deleteSource = false } = options;
14
- const sourceDbPath = join(sourceDir, 'squish.db');
15
- const targetDbPath = join(targetDir, 'squish.db');
16
- if (!existsSync(sourceDbPath)) {
17
- throw new Error(`Source database not found: ${sourceDbPath}`);
18
- }
19
- if (!existsSync(targetDbPath)) {
20
- throw new Error(`Target database not found: ${targetDbPath}`);
21
- }
22
- // Use bun:sqlite for direct source DB access
23
- // @ts-ignore - bun:sqlite module not found in types but works at runtime
24
- const SqliteDatabase = (await import('bun:sqlite')).default;
25
- const sourceDb = new SqliteDatabase(sourceDbPath, { readonly: true });
26
- // Get target DB through the app's existing mechanism
27
- const { db: targetDb, schema } = await getDbClient();
28
- // Get all projects from source
29
- const sourceProjects = sourceDb.query('SELECT * FROM projects').all();
30
- // Map old project IDs to new project IDs
31
- const projectIdMap = new Map();
32
- for (const project of sourceProjects) {
33
- // Check if project with same path exists in target
34
- const existing = await targetDb.select()
35
- .from(schema.projects)
36
- .where((tbl, { eq }) => eq(tbl.path, project.path))
37
- .limit(1);
38
- if (existing.length > 0) {
39
- projectIdMap.set(project.id, existing[0].id);
40
- }
41
- else {
42
- // Create new project in target
43
- const newId = randomUUID();
44
- await targetDb.insert(schema.projects).values({
45
- id: newId,
46
- path: project.path,
47
- name: project.name || 'migrated',
48
- createdAt: new Date(),
49
- });
50
- projectIdMap.set(project.id, newId);
51
- }
52
- }
53
- // Migrate memories
54
- const sourceMemories = sourceDb.query('SELECT * FROM memories').all();
55
- let memoriesCopied = 0;
56
- for (const mem of sourceMemories) {
57
- const oldProjectId = mem.project_id;
58
- const newProjectId = projectIdMap.get(oldProjectId);
59
- if (!newProjectId) {
60
- console.warn(`Skipping memory ${mem.id}: no project mapping found`);
61
- continue;
62
- }
63
- if (!dryRun) {
64
- // Add 'imported' tag to track migrated memories
65
- const existingTags = mem.tags ? JSON.parse(mem.tags) : [];
66
- const newTags = [...existingTags, 'imported'];
67
- await targetDb.insert(schema.memories).values({
68
- id: randomUUID(),
69
- projectId: newProjectId,
70
- type: mem.type,
71
- content: mem.content,
72
- summary: mem.summary,
73
- source: mem.source || 'migrated',
74
- confidence: mem.confidence ?? 50,
75
- confidenceLevel: mem.confidence_level || 'speculative',
76
- tags: newTags,
77
- metadata: { ...mem.metadata, migratedAt: new Date().toISOString(), originalId: mem.id },
78
- isActive: mem.is_active ?? 1,
79
- createdAt: mem.created_at ? new Date(mem.created_at * 1000) : new Date(),
80
- updatedAt: new Date(),
81
- });
82
- }
83
- memoriesCopied++;
84
- }
85
- // Migrate learnings (renamed from observations)
86
- const sourceLearnings = sourceDb.query('SELECT * FROM learnings').all();
87
- let learningsCopied = 0;
88
- for (const learn of sourceLearnings) {
89
- const oldProjectId = learn.project_id;
90
- const newProjectId = projectIdMap.get(oldProjectId);
91
- if (!newProjectId)
92
- continue;
93
- if (!dryRun) {
94
- // Add is_imported flag to track migrated learnings
95
- await targetDb.insert(schema.learnings).values({
96
- id: randomUUID(),
97
- projectId: newProjectId,
98
- type: learn.type,
99
- action: learn.action,
100
- summary: learn.summary,
101
- target: learn.target,
102
- details: learn.details,
103
- isImported: true,
104
- createdAt: new Date(),
105
- });
106
- }
107
- learningsCopied++;
108
- }
109
- // Migrate memory associations (simplified - skip for now)
110
- const sourceAssoc = sourceDb.query('SELECT * FROM memory_associations').all();
111
- let associationsCopied = 0;
112
- if (!dryRun && sourceAssoc.length > 0) {
113
- console.warn(`Note: ${sourceAssoc.length} associations not migrated (requires ID mapping)`);
114
- }
115
- // Close source DB
116
- sourceDb.close();
117
- // Delete source if requested
118
- let sourceDeleted = false;
119
- if (!dryRun && deleteSource && memoriesCopied > 0) {
120
- // Implementation would delete the file
121
- console.warn('Source deletion not implemented - requires manual removal');
122
- }
123
- return {
124
- memoriesCopied,
125
- observationsCopied: learningsCopied,
126
- associationsCopied,
127
- projectsMapped: projectIdMap.size,
128
- sourceDeleted,
129
- message: dryRun
130
- ? 'Dry run complete - no changes made'
131
- : `Successfully migrated ${memoriesCopied} memories, ${learningsCopied} learnings`
132
- };
133
- }
134
- //# sourceMappingURL=migrate.js.map
@@ -1,7 +0,0 @@
1
- /**
2
- * Memory normalization utilities
3
- * Shared between memories.ts and loader.ts to avoid circular dependencies
4
- */
5
- import type { MemoryRecord } from '../lib/types.js';
6
- export declare function normalizeMemory(row: any): MemoryRecord;
7
- //# sourceMappingURL=normalization.d.ts.map
@@ -1,26 +0,0 @@
1
- /**
2
- * Memory normalization utilities
3
- * Shared between memories.ts and loader.ts to avoid circular dependencies
4
- */
5
- import { deserializeTags, deserializeMetadata } from './serialization.js';
6
- import { normalizeTimestamp } from '../lib/utils.js';
7
- export function normalizeMemory(row) {
8
- const tags = deserializeTags(row.tags ?? null);
9
- const metadata = deserializeMetadata(row.metadata ?? null);
10
- const createdAtStr = normalizeTimestamp(row.createdAt ?? row.created_at);
11
- return {
12
- id: row.id,
13
- projectId: row.projectId ?? row.project_id ?? null,
14
- type: row.type,
15
- content: row.content,
16
- summary: row.summary ?? null,
17
- tags,
18
- metadata,
19
- createdAt: createdAtStr,
20
- validFrom: row.validFrom ?? row.valid_from ?? null,
21
- validTo: row.validTo ?? row.valid_to ?? null,
22
- recordedAt: row.recordedAt ?? row.recorded_at ?? null,
23
- confidenceLevel: row.confidenceLevel ?? row.confidence_level ?? null,
24
- };
25
- }
26
- //# sourceMappingURL=normalization.js.map
@@ -1,39 +0,0 @@
1
- /**
2
- * Path Strengthener
3
- *
4
- * Strengthens association paths that led to successful retrievals and
5
- * weakens paths that led to irrelevant results. This implements the
6
- * "optimize" concept: the graph develops its own sense of relevance
7
- * over time based on actual usage patterns.
8
- *
9
- * A customer support agent's graph naturally strengthens paths through
10
- * product docs and refund policies while letting rarely-queried HR
11
- * edges decay.
12
- */
13
- export interface PathStrengthResult {
14
- strengthened: number;
15
- weakened: number;
16
- pruned: number;
17
- }
18
- /**
19
- * Strengthen the association path between memories that were
20
- * retrieved together and found useful.
21
- */
22
- export declare function strengthenPath(memoryIds: string[], boostAmount?: number): Promise<number>;
23
- /**
24
- * Weaken association paths that led to irrelevant results.
25
- */
26
- export declare function weakenPath(memoryIds: string[], decayAmount?: number): Promise<number>;
27
- /**
28
- * Prune associations that have decayed below a threshold.
29
- */
30
- export declare function pruneWeakAssociations(minWeight?: number, maxAge?: number): Promise<number>;
31
- /**
32
- * Run a full optimize cycle: strengthen useful paths, weaken unused ones,
33
- * prune dead associations, and derive implicit facts.
34
- */
35
- export declare function runPruneCycle(options?: {
36
- minWeight?: number;
37
- maxAge?: number;
38
- }): Promise<PathStrengthResult>;
39
- //# sourceMappingURL=path-strengthener.d.ts.map
@@ -1,150 +0,0 @@
1
- /**
2
- * Path Strengthener
3
- *
4
- * Strengthens association paths that led to successful retrievals and
5
- * weakens paths that led to irrelevant results. This implements the
6
- * "optimize" concept: the graph develops its own sense of relevance
7
- * over time based on actual usage patterns.
8
- *
9
- * A customer support agent's graph naturally strengthens paths through
10
- * product docs and refund policies while letting rarely-queried HR
11
- * edges decay.
12
- */
13
- import { eq, and, or, sql } from 'drizzle-orm';
14
- import { getDb } from '../../db/index.js';
15
- import { getSchema } from '../../db/schema.js';
16
- import { logger } from '../logger.js';
17
- /**
18
- * Strengthen the association path between memories that were
19
- * retrieved together and found useful.
20
- */
21
- export async function strengthenPath(memoryIds, boostAmount = 2) {
22
- if (memoryIds.length < 2)
23
- return 0;
24
- const db = await getDb();
25
- const schema = await getSchema();
26
- let strengthened = 0;
27
- // Generate all pairs
28
- for (let i = 0; i < memoryIds.length; i++) {
29
- for (let j = i + 1; j < memoryIds.length; j++) {
30
- try {
31
- // Check if association exists
32
- const existing = await db
33
- .select()
34
- .from(schema.memoryAssociations)
35
- .where(or(and(eq(schema.memoryAssociations.fromMemoryId, memoryIds[i]), eq(schema.memoryAssociations.toMemoryId, memoryIds[j])), and(eq(schema.memoryAssociations.fromMemoryId, memoryIds[j]), eq(schema.memoryAssociations.toMemoryId, memoryIds[i]))))
36
- .limit(1);
37
- if (existing.length > 0) {
38
- // Strengthen existing association
39
- await db
40
- .update(schema.memoryAssociations)
41
- .set({
42
- weight: sql `${schema.memoryAssociations.weight} + ${boostAmount}`,
43
- coactivationCount: sql `${schema.memoryAssociations.coactivationCount} + 1`,
44
- lastCoactivatedAt: new Date(),
45
- })
46
- .where(eq(schema.memoryAssociations.id, existing[0].id));
47
- }
48
- else {
49
- // Create new association
50
- await db.insert(schema.memoryAssociations).values({
51
- fromMemoryId: memoryIds[i],
52
- toMemoryId: memoryIds[j],
53
- associationType: 'co_occurred',
54
- weight: boostAmount,
55
- coactivationCount: 1,
56
- lastCoactivatedAt: new Date(),
57
- });
58
- }
59
- strengthened++;
60
- }
61
- catch (error) {
62
- logger.debug('Error strengthening path', {
63
- from: memoryIds[i],
64
- to: memoryIds[j],
65
- error: error,
66
- });
67
- }
68
- }
69
- }
70
- return strengthened;
71
- }
72
- /**
73
- * Weaken association paths that led to irrelevant results.
74
- */
75
- export async function weakenPath(memoryIds, decayAmount = 0.5) {
76
- if (memoryIds.length < 2)
77
- return 0;
78
- const db = await getDb();
79
- const schema = await getSchema();
80
- let weakened = 0;
81
- for (let i = 0; i < memoryIds.length; i++) {
82
- for (let j = i + 1; j < memoryIds.length; j++) {
83
- try {
84
- const existing = await db
85
- .select()
86
- .from(schema.memoryAssociations)
87
- .where(or(and(eq(schema.memoryAssociations.fromMemoryId, memoryIds[i]), eq(schema.memoryAssociations.toMemoryId, memoryIds[j])), and(eq(schema.memoryAssociations.fromMemoryId, memoryIds[j]), eq(schema.memoryAssociations.toMemoryId, memoryIds[i]))))
88
- .limit(1);
89
- if (existing.length > 0) {
90
- // Weaken but don't remove (minimum weight of 1)
91
- await db
92
- .update(schema.memoryAssociations)
93
- .set({
94
- weight: sql `GREATEST(${schema.memoryAssociations.weight} - ${decayAmount}, 1)`,
95
- })
96
- .where(eq(schema.memoryAssociations.id, existing[0].id));
97
- weakened++;
98
- }
99
- }
100
- catch (error) {
101
- logger.debug('Error weakening path', {
102
- from: memoryIds[i],
103
- to: memoryIds[j],
104
- error: error,
105
- });
106
- }
107
- }
108
- }
109
- return weakened;
110
- }
111
- /**
112
- * Prune associations that have decayed below a threshold.
113
- */
114
- export async function pruneWeakAssociations(minWeight = 2, maxAge = 90 // days
115
- ) {
116
- const db = await getDb();
117
- const schema = await getSchema();
118
- const cutoffDate = new Date();
119
- cutoffDate.setDate(cutoffDate.getDate() - maxAge);
120
- try {
121
- // Delete associations that are weak AND old
122
- const result = await db
123
- .delete(schema.memoryAssociations)
124
- .where(and(sql `${schema.memoryAssociations.weight} < ${minWeight}`, sql `${schema.memoryAssociations.lastCoactivatedAt} < ${cutoffDate}`));
125
- const pruned = result?.rowCount ?? 0;
126
- logger.info('Pruned weak associations', { pruned, minWeight, maxAge });
127
- return pruned;
128
- }
129
- catch (error) {
130
- logger.error('Error pruning weak associations', { error: error });
131
- return 0;
132
- }
133
- }
134
- /**
135
- * Run a full optimize cycle: strengthen useful paths, weaken unused ones,
136
- * prune dead associations, and derive implicit facts.
137
- */
138
- export async function runPruneCycle(options) {
139
- const { minWeight = 2, maxAge = 90 } = options || {};
140
- logger.info('Starting prune cycle', { minWeight, maxAge });
141
- // Step 1: Prune weak associations
142
- const pruned = await pruneWeakAssociations(minWeight, maxAge);
143
- logger.info('Prune cycle completed', { pruned });
144
- return {
145
- strengthened: 0, // Strengthening happens via retrieval feedback
146
- weakened: 0, // Weakening happens via retrieval feedback
147
- pruned,
148
- };
149
- }
150
- //# sourceMappingURL=path-strengthener.js.map
@@ -1,43 +0,0 @@
1
- export interface LightweightIndex {
2
- id: string;
3
- memoryId: string;
4
- contentHash: string;
5
- contentPreview: string;
6
- keyTerms: string[];
7
- category: string;
8
- importance: number;
9
- createdAt: Date;
10
- }
11
- export interface MemoryPreview {
12
- id: string;
13
- type: string;
14
- contentPreview: string;
15
- keyTerms: string[];
16
- category: string;
17
- importance: number;
18
- lastAccessedAt?: Date;
19
- }
20
- export interface FullMemoryLoad {
21
- id: string;
22
- content: string;
23
- summary?: string;
24
- tags: string[];
25
- metadata?: Record<string, unknown>;
26
- }
27
- export interface TokenBudgetStatus {
28
- budget: number;
29
- used: number;
30
- remaining: number;
31
- loadedCount: number;
32
- preloadCount: number;
33
- }
34
- export declare function createLightweightIndex(memoryId: string, content: string, category: string, importance: number): Promise<LightweightIndex>;
35
- export declare function searchLightweightIndices(projectId: string, query: string, limit?: number): Promise<MemoryPreview[]>;
36
- export declare function loadFullMemory(memoryId: string): Promise<FullMemoryLoad | null>;
37
- export declare function estimateTokenCount(text: string): Promise<number>;
38
- export declare function allocateTokenBudget(sessionId: string, budget: number): Promise<TokenBudgetStatus>;
39
- export declare function preloadCandidateMemories(sessionId: string, projectId: string, budget: number, excludeLoadedIds: string[]): Promise<string[]>;
40
- export declare function getPreloadCandidates(sessionId: string): Promise<MemoryPreview[]>;
41
- export declare function updateIndexImportance(memoryId: string, importance: number): Promise<void>;
42
- export declare function deleteLightweightIndex(memoryId: string): Promise<void>;
43
- //# sourceMappingURL=progressive-disclosure.d.ts.map
@@ -1,280 +0,0 @@
1
- import { randomUUID } from 'crypto';
2
- import { eq, desc, and, sql } from 'drizzle-orm';
3
- import { getDb } from '../../db/index.js';
4
- import { getSchema } from '../../db/schema.js';
5
- import { createDatabaseClient } from '../storage/database.js';
6
- const PREVIEW_TOKENS = 50;
7
- const MAX_PRELOAD_CANDIDATES = 20;
8
- const TOKEN_ESTIMATE_CHARS = 4;
9
- export async function createLightweightIndex(memoryId, content, category, importance) {
10
- const db = createDatabaseClient(await getDb());
11
- const schema = await getSchema();
12
- const contentHash = hashContent(content);
13
- const contentPreview = extractPreview(content);
14
- const keyTerms = extractKeyTerms(content);
15
- const index = {
16
- id: randomUUID(),
17
- memoryId,
18
- contentHash,
19
- contentPreview,
20
- keyTerms,
21
- category,
22
- importance,
23
- createdAt: new Date(),
24
- };
25
- await db.insert(schema.lightweightMemoryIndices).values({
26
- id: index.id,
27
- memoryId: index.memoryId,
28
- contentHash: index.contentHash,
29
- contentPreview: index.contentPreview,
30
- keyTerms: JSON.stringify(index.keyTerms),
31
- category: index.category,
32
- importanceScore: index.importance,
33
- createdAt: index.createdAt,
34
- });
35
- return index;
36
- }
37
- export async function searchLightweightIndices(projectId, query, limit = 10) {
38
- const db = createDatabaseClient(await getDb());
39
- const schema = await getSchema();
40
- const queryLower = query.toLowerCase();
41
- const queryTerms = queryLower.split(/\s+/).filter((t) => t.length > 2);
42
- const results = await db
43
- .select({
44
- id: schema.lightweightMemoryIndices.id,
45
- memoryId: schema.lightweightMemoryIndices.memoryId,
46
- contentPreview: schema.lightweightMemoryIndices.contentPreview,
47
- keyTerms: schema.lightweightMemoryIndices.keyTerms,
48
- category: schema.lightweightMemoryIndices.category,
49
- importanceScore: schema.lightweightMemoryIndices.importanceScore,
50
- lastAccessedAt: schema.memories.lastAccessedAt,
51
- })
52
- .from(schema.lightweightMemoryIndices)
53
- .leftJoin(schema.memories, eq(schema.lightweightMemoryIndices.memoryId, schema.memories.id))
54
- .where(eq(schema.lightweightMemoryIndices.memoryId, schema.memories.id))
55
- .limit(limit * 2);
56
- const scored = results.map((row) => {
57
- let score = row.importanceScore ?? 50;
58
- const keyTerms = typeof row.keyTerms === 'string'
59
- ? JSON.parse(row.keyTerms)
60
- : row.keyTerms ?? [];
61
- const termsLower = keyTerms.map((t) => t.toLowerCase());
62
- for (const term of queryTerms) {
63
- if (row.contentPreview.toLowerCase().includes(term)) {
64
- score += 10;
65
- }
66
- if (termsLower.some((t) => t.includes(term))) {
67
- score += 15;
68
- }
69
- }
70
- return {
71
- id: row.id,
72
- memoryId: row.memoryId,
73
- contentPreview: row.contentPreview,
74
- keyTerms,
75
- category: row.category,
76
- importance: row.importanceScore ?? 50,
77
- lastAccessedAt: row.lastAccessedAt,
78
- score,
79
- };
80
- });
81
- scored.sort((a, b) => b.score - a.score);
82
- return scored.slice(0, limit).map((item) => ({
83
- id: item.memoryId,
84
- type: 'preview',
85
- contentPreview: item.contentPreview,
86
- keyTerms: item.keyTerms,
87
- category: item.category,
88
- importance: item.importance,
89
- lastAccessedAt: item.lastAccessedAt,
90
- }));
91
- }
92
- export async function loadFullMemory(memoryId) {
93
- const db = createDatabaseClient(await getDb());
94
- const schema = await getSchema();
95
- const rows = await db
96
- .select()
97
- .from(schema.memories)
98
- .where(eq(schema.memories.id, memoryId))
99
- .limit(1);
100
- if (rows.length === 0)
101
- return null;
102
- const row = rows[0];
103
- return {
104
- id: row.id,
105
- content: row.content,
106
- summary: row.summary ?? undefined,
107
- tags: Array.isArray(row.tags) ? row.tags : [],
108
- metadata: row.metadata ?? undefined,
109
- };
110
- }
111
- export async function estimateTokenCount(text) {
112
- return Math.ceil(text.length / TOKEN_ESTIMATE_CHARS);
113
- }
114
- export async function allocateTokenBudget(sessionId, budget) {
115
- const db = createDatabaseClient(await getDb());
116
- const schema = await getSchema();
117
- const [session] = await db
118
- .select()
119
- .from(schema.contextPagingSessions)
120
- .where(eq(schema.contextPagingSessions.sessionId, sessionId))
121
- .limit(1);
122
- if (!session) {
123
- return {
124
- budget,
125
- used: 0,
126
- remaining: budget,
127
- loadedCount: 0,
128
- preloadCount: 0,
129
- };
130
- }
131
- const tokensUsed = session.tokensUsed ?? 0;
132
- const loadedCount = session.loadedMemoryIds?.length ?? 0;
133
- const preloadCount = session.preloadCandidateIds?.length ?? 0;
134
- return {
135
- budget,
136
- used: tokensUsed,
137
- remaining: Math.max(0, budget - tokensUsed),
138
- loadedCount,
139
- preloadCount,
140
- };
141
- }
142
- export async function preloadCandidateMemories(sessionId, projectId, budget, excludeLoadedIds) {
143
- const status = await allocateTokenBudget(sessionId, budget);
144
- const availableTokens = status.remaining;
145
- if (availableTokens < PREVIEW_TOKENS * 2) {
146
- return [];
147
- }
148
- const db = createDatabaseClient(await getDb());
149
- const schema = await getSchema();
150
- const rows = await db
151
- .select({
152
- id: schema.memories.id,
153
- content: schema.memories.content,
154
- importanceScore: schema.memories.importanceScore,
155
- lastAccessedAt: schema.memories.lastAccessedAt,
156
- })
157
- .from(schema.memories)
158
- .where(and(eq(schema.memories.projectId, projectId), eq(schema.memories.isActive, true), excludeLoadedIds.length > 0
159
- ? sql `${schema.memories.id} NOT IN (${excludeLoadedIds.map(id => `'${id.replace(/'/g, "''")}'`).join(',')})`
160
- : sql `TRUE`))
161
- .orderBy(desc(schema.memories.importanceScore), desc(schema.memories.lastAccessedAt))
162
- .limit(MAX_PRELOAD_CANDIDATES);
163
- const candidates = [];
164
- let tokensForPreload = Math.min(availableTokens - PREVIEW_TOKENS, availableTokens * 0.3);
165
- for (const row of rows) {
166
- const tokens = await estimateTokenCount(row.content ?? '');
167
- if (tokens <= tokensForPreload) {
168
- candidates.push(row.id);
169
- tokensForPreload -= tokens;
170
- }
171
- if (candidates.length >= 5)
172
- break;
173
- }
174
- await db
175
- .update(schema.contextPagingSessions)
176
- .set({
177
- preloadCandidateIds: candidates,
178
- updatedAt: new Date(),
179
- })
180
- .where(eq(schema.contextPagingSessions.sessionId, sessionId));
181
- return candidates;
182
- }
183
- export async function getPreloadCandidates(sessionId) {
184
- const db = createDatabaseClient(await getDb());
185
- const schema = await getSchema();
186
- const [session] = await db
187
- .select()
188
- .from(schema.contextPagingSessions)
189
- .where(eq(schema.contextPagingSessions.sessionId, sessionId))
190
- .limit(1);
191
- if (!session)
192
- return [];
193
- const candidateIds = session.preloadCandidateIds ?? [];
194
- if (candidateIds.length === 0)
195
- return [];
196
- const previews = [];
197
- for (const memoryId of candidateIds.slice(0, 5)) {
198
- const [index] = await db
199
- .select()
200
- .from(schema.lightweightMemoryIndices)
201
- .where(eq(schema.lightweightMemoryIndices.memoryId, memoryId))
202
- .limit(1);
203
- if (index) {
204
- const keyTerms = typeof index.keyTerms === 'string'
205
- ? JSON.parse(index.keyTerms)
206
- : index.keyTerms ?? [];
207
- previews.push({
208
- id: index.memoryId,
209
- type: 'preload',
210
- contentPreview: index.contentPreview,
211
- keyTerms,
212
- category: index.category,
213
- importance: index.importanceScore ?? 50,
214
- });
215
- }
216
- }
217
- return previews;
218
- }
219
- export async function updateIndexImportance(memoryId, importance) {
220
- const db = createDatabaseClient(await getDb());
221
- const schema = await getSchema();
222
- await db
223
- .update(schema.lightweightMemoryIndices)
224
- .set({
225
- importanceScore: importance,
226
- })
227
- .where(eq(schema.lightweightMemoryIndices.memoryId, memoryId));
228
- }
229
- export async function deleteLightweightIndex(memoryId) {
230
- const db = createDatabaseClient(await getDb());
231
- const schema = await getSchema();
232
- await db
233
- .delete(schema.lightweightMemoryIndices)
234
- .where(eq(schema.lightweightMemoryIndices.memoryId, memoryId));
235
- }
236
- function hashContent(content) {
237
- let hash = 0;
238
- for (let i = 0; i < content.length; i++) {
239
- const char = content.charCodeAt(i);
240
- hash = ((hash << 5) - hash) + char;
241
- hash = hash & hash;
242
- }
243
- return Math.abs(hash).toString(36);
244
- }
245
- function extractPreview(content) {
246
- const firstPeriod = content.indexOf('.');
247
- const firstNewline = content.indexOf('\n');
248
- let endIndex = content.length;
249
- if (firstPeriod > 0 && firstPeriod < 100) {
250
- endIndex = firstPeriod + 1;
251
- }
252
- else if (firstNewline > 0 && firstNewline < 100) {
253
- endIndex = firstNewline;
254
- }
255
- return content.substring(0, Math.min(endIndex, 150)).trim();
256
- }
257
- function extractKeyTerms(content) {
258
- const words = content.toLowerCase()
259
- .replace(/[^\w\s]/g, ' ')
260
- .split(/\s+/)
261
- .filter((w) => w.length > 3);
262
- const stopWords = new Set([
263
- 'this', 'that', 'with', 'from', 'have', 'been', 'were', 'they',
264
- 'their', 'which', 'about', 'would', 'could', 'should', 'there',
265
- 'what', 'when', 'where', 'who', 'will', 'just', 'like', 'into',
266
- 'than', 'then', 'both', 'each', 'more', 'most', 'other', 'some',
267
- 'such', 'only', 'over', 'very', 'also', 'back', 'after', 'being',
268
- ]);
269
- const termCounts = {};
270
- for (const word of words) {
271
- if (!stopWords.has(word) && !/^\d+$/.test(word)) {
272
- termCounts[word] = (termCounts[word] ?? 0) + 1;
273
- }
274
- }
275
- return Object.entries(termCounts)
276
- .sort((a, b) => b[1] - a[1])
277
- .slice(0, 5)
278
- .map(([term]) => term);
279
- }
280
- //# sourceMappingURL=progressive-disclosure.js.map