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,368 +0,0 @@
1
- /**
2
- * Contradiction Resolver
3
- * Detects and auto-resolves contradictions when writing new memories
4
- * Implements supersession logic for outdated information
5
- */
6
- import { eq, and, inArray } from 'drizzle-orm';
7
- import { getDb } from '../../db/index.js';
8
- import { getSchema } from '../../db/schema.js';
9
- import { logger } from '../logger.js';
10
- import { createAssociation } from '../associations.js';
11
- /**
12
- * Calculate temporal relationship between two time periods
13
- * Returns: 'existing_is_newer', 'existing_is_older', 'overlapping', or 'unknown'
14
- */
15
- function calculateTemporalRelationship(existingValidFrom, existingValidTo, newTime) {
16
- if (!existingValidFrom && !existingValidTo) {
17
- return 'unknown';
18
- }
19
- const existingFrom = existingValidFrom ? new Date(existingValidFrom) : null;
20
- const existingTo = existingValidTo ? new Date(existingValidTo) : null;
21
- // If existing fact is completely in the future compared to new time
22
- if (existingFrom && existingFrom > newTime) {
23
- return 'existing_is_newer';
24
- }
25
- // If existing fact is completely in the past compared to new time
26
- if (existingTo && existingTo < newTime) {
27
- return 'existing_is_older';
28
- }
29
- // If time periods overlap or we can't determine
30
- return 'overlapping';
31
- }
32
- /**
33
- * Check if two temporal periods conflict (don't overlap reasonably)
34
- */
35
- function checkTemporalPeriodConflict(existingStart, existingEnd, newStart, newEnd) {
36
- // If we don't have enough info, assume no conflict
37
- if (!existingStart || !existingEnd) {
38
- return false;
39
- }
40
- const existingStartDate = new Date(existingStart);
41
- const existingEndDate = new Date(existingEnd);
42
- // Normalize newEnd (use distant future if null)
43
- const normalizedNewEnd = newEnd || new Date(8640000000000000); // Far future
44
- // Check if periods overlap
45
- const overlaps = !(existingStartDate > normalizedNewEnd ||
46
- existingEndDate < newStart);
47
- // Conflict if they don't overlap
48
- return !overlaps;
49
- }
50
- // Patterns that indicate updated/corrected information
51
- const UPDATE_PATTERNS = [
52
- /\b(now|currently|actually|in fact|correct(ed)?|update(d)?)\b/gi,
53
- /\b(changed to|switched to|moved to)\b/gi,
54
- /\b(formerly|previously|used to be)\b/gi,
55
- /\binstead of\b/gi,
56
- /\b(no longer|not anymore)\b/gi,
57
- /\b(as of|starting|beginning|from now|effective)\s+(\d{4}|\w+\s+\d{1,2})/gi, // Temporal updates
58
- ];
59
- // Negation patterns
60
- const NEGATION_PATTERNS = [
61
- /\b(not|no|never|don't|doesn't|didn't|won't|wouldn't|shouldn't|can't|cannot)\b/gi,
62
- ];
63
- // Temporal sensitivity patterns - content that is likely time-sensitive
64
- const TEMPORAL_SENSITIVITY_PATTERNS = [
65
- /\b(date|time|version|release|deadline|schedule|timeline)\b/i,
66
- /\b(\d{4}|january|february|march|april|may|june|july|august|september|october|november|december)\b/i,
67
- /\b(today|tomorrow|yesterday|next\s+week|last\s+week|this\s+week)\b/i,
68
- ];
69
- // Key entity extraction for contradiction detection
70
- function extractKeyEntities(content) {
71
- // Simple extraction of capitalized phrases and key terms
72
- const entities = [];
73
- // Match capitalized multi-word phrases (likely proper nouns)
74
- const properNouns = content.match(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+)+\b/g) || [];
75
- entities.push(...properNouns);
76
- // Match quoted strings (often important values)
77
- const quoted = content.match(/"([^"]+)"|'([^']+)'/g) || [];
78
- entities.push(...quoted.map(q => q.replace(/['"]/g, '')));
79
- // Match key-value patterns
80
- const keyValues = content.match(/(\w+)\s*[=:]\s*(\S+)/g) || [];
81
- entities.push(...keyValues);
82
- return [...new Set(entities)];
83
- }
84
- // Calculate content similarity (Jaccard on words)
85
- function calculateSimilarity(a, b) {
86
- const tokensA = new Set(a.toLowerCase().split(/\s+/).filter(t => t.length > 2));
87
- const tokensB = new Set(b.toLowerCase().split(/\s+/).filter(t => t.length > 2));
88
- const intersection = new Set([...tokensA].filter(x => tokensB.has(x)));
89
- const union = new Set([...tokensA, ...tokensB]);
90
- return union.size > 0 ? intersection.size / union.size : 0;
91
- }
92
- // Check if content has negation
93
- function hasNegation(content) {
94
- return NEGATION_PATTERNS.some(pattern => pattern.test(content));
95
- }
96
- // Check if content indicates an update
97
- function hasUpdateIndicator(content) {
98
- return UPDATE_PATTERNS.some(pattern => pattern.test(content));
99
- }
100
- // Extract the "subject" of a memory (what it's about)
101
- function extractSubject(content) {
102
- // Take first significant clause
103
- const sentences = content.split(/[.!?\n]/);
104
- const firstSentence = sentences[0]?.trim() || content;
105
- // Limit to first 100 chars for subject matching
106
- return firstSentence.substring(0, 100).toLowerCase();
107
- }
108
- /**
109
- * Detect contradictions between new memory and existing memories
110
- */
111
- export async function detectContradictions(check) {
112
- const result = {
113
- hasContradiction: false,
114
- supersededMemories: [],
115
- confidence: 0,
116
- reason: '',
117
- };
118
- try {
119
- const db = await getDb();
120
- const schema = await getSchema();
121
- // Get memories from same project with similar content
122
- const whereClause = check.projectId
123
- ? eq(schema.memories.projectId, check.projectId)
124
- : undefined;
125
- const existingMemories = await db
126
- .select()
127
- .from(schema.memories)
128
- .where(whereClause)
129
- .limit(100);
130
- if (existingMemories.length === 0) {
131
- return result;
132
- }
133
- const newSubject = extractSubject(check.newContent);
134
- const newEntities = extractKeyEntities(check.newContent);
135
- const newHasNegation = hasNegation(check.newContent);
136
- const newHasUpdate = hasUpdateIndicator(check.newContent);
137
- const toSupersede = [];
138
- let maxConfidence = 0;
139
- let reasons = [];
140
- for (const existing of existingMemories) {
141
- // Skip already superseded memories
142
- if (existing.status === 'superseded' || existing.status === 'merged') {
143
- continue;
144
- }
145
- // Skip protected memories
146
- if (existing.isProtected) {
147
- continue;
148
- }
149
- const existingSubject = extractSubject(existing.content);
150
- const similarity = calculateSimilarity(check.newContent, existing.content);
151
- const subjectSimilarity = calculateSimilarity(newSubject, existingSubject);
152
- // Check for entity overlap
153
- const existingEntities = extractKeyEntities(existing.content);
154
- const entityOverlap = newEntities.filter(e => existingEntities.some(ee => ee.toLowerCase().includes(e.toLowerCase()) ||
155
- e.toLowerCase().includes(ee.toLowerCase())));
156
- // Calculate temporal relationship between memories
157
- const temporalRelationship = calculateTemporalRelationship(existing.validFrom, existing.validTo, new Date() // current time for new memory
158
- );
159
- // Detect contradiction scenarios with temporal awareness
160
- // Scenario 1: High similarity with negation in new content
161
- if (similarity > 0.5 && newHasNegation && subjectSimilarity > 0.4) {
162
- // Adjust confidence based on temporal relevance
163
- let temporalFactor = 1.0;
164
- if (temporalRelationship === 'existing_is_newer') {
165
- temporalFactor = 0.7; // Lower confidence if existing is newer
166
- }
167
- else if (temporalRelationship === 'existing_is_older') {
168
- temporalFactor = 1.2; // Higher confidence if existing is older
169
- }
170
- toSupersede.push(existing.id);
171
- maxConfidence = Math.max(maxConfidence, similarity * 0.9 * temporalFactor);
172
- reasons.push(`negation of similar content (${(similarity * 100).toFixed(0)}% similar)`);
173
- continue;
174
- }
175
- // Scenario 2: Update indicator with overlapping subject
176
- if (newHasUpdate && subjectSimilarity > 0.5) {
177
- // Boost confidence for updates when existing is older
178
- let temporalFactor = 1.0;
179
- if (temporalRelationship === 'existing_is_older') {
180
- temporalFactor = 1.3; // Higher confidence for updating older info
181
- }
182
- toSupersede.push(existing.id);
183
- maxConfidence = Math.max(maxConfidence, subjectSimilarity * 0.85 * temporalFactor);
184
- reasons.push(`update to existing information`);
185
- continue;
186
- }
187
- // Scenario 3: Same type, high subject similarity, different conclusion
188
- if (existing.type === check.newType && subjectSimilarity > 0.6) {
189
- // Check if conclusions differ
190
- const existingHasNegation = hasNegation(existing.content);
191
- // XOR: one has negation, other doesn't
192
- if (newHasNegation !== existingHasNegation) {
193
- // Adjust confidence based on temporal relationship
194
- let temporalFactor = 1.0;
195
- if (temporalRelationship === 'existing_is_newer') {
196
- temporalFactor = 0.8; // Lower confidence if contradicting newer info
197
- }
198
- else if (temporalRelationship === 'existing_is_older') {
199
- temporalFactor = 1.1; // Higher confidence if contradicting older info
200
- }
201
- toSupersede.push(existing.id);
202
- maxConfidence = Math.max(maxConfidence, subjectSimilarity * 0.8 * temporalFactor);
203
- reasons.push(`contradicting statement about same topic`);
204
- continue;
205
- }
206
- }
207
- // Scenario 4: Entity overlap with correction signals
208
- if (entityOverlap.length >= 2 && similarity > 0.3) {
209
- const correctionSignals = /\b(fixed|changed|updated|replaced|removed|added)\b/i.test(check.newContent);
210
- if (correctionSignals) {
211
- // Consider temporal relevance for corrections
212
- let temporalFactor = 1.0;
213
- if (temporalRelationship === 'existing_is_older') {
214
- temporalFactor = 1.2; // Higher confidence for correcting older info
215
- }
216
- toSupersede.push(existing.id);
217
- maxConfidence = Math.max(maxConfidence, 0.75 * temporalFactor);
218
- reasons.push(`correction involving ${entityOverlap.slice(0, 2).join(', ')}`);
219
- continue;
220
- }
221
- }
222
- // Scenario 5: Very high similarity (near-duplicate) - supersede older
223
- if (similarity > 0.85) {
224
- // Prefer to supersede older memories with newer ones
225
- let temporalFactor = 1.0;
226
- if (temporalRelationship === 'existing_is_older') {
227
- temporalFactor = 1.1; // Slight boost for superseding older
228
- }
229
- else if (temporalRelationship === 'existing_is_newer') {
230
- temporalFactor = 0.9; // Slight reduction for superseding newer
231
- }
232
- toSupersede.push(existing.id);
233
- maxConfidence = Math.max(maxConfidence, similarity * temporalFactor);
234
- reasons.push(`near-duplicate replacement`);
235
- continue;
236
- }
237
- // Scenario 6: Temporal inconsistency - same subject but different time periods
238
- if (subjectSimilarity > 0.7 && similarity > 0.4 &&
239
- existing.validFrom && existing.validTo) {
240
- // Check if temporal periods don't overlap reasonably
241
- const newValidFrom = new Date(); // When we learned this
242
- const newValidTo = null; // Open-ended by default
243
- const hasTemporalConflict = checkTemporalPeriodConflict(existing.validFrom, existing.validTo, newValidFrom, newValidTo);
244
- if (hasTemporalConflict) {
245
- toSupersede.push(existing.id);
246
- maxConfidence = Math.max(maxConfidence, 0.8);
247
- reasons.push(`temporal inconsistency with existing fact`);
248
- continue;
249
- }
250
- }
251
- }
252
- if (toSupersede.length > 0) {
253
- result.hasContradiction = true;
254
- result.supersededMemories = [...new Set(toSupersede)]; // Dedupe
255
- result.confidence = maxConfidence;
256
- result.reason = reasons[0] || 'contradiction detected';
257
- }
258
- }
259
- catch (error) {
260
- logger.error('Error detecting contradictions', error);
261
- }
262
- return result;
263
- }
264
- /**
265
- * Apply supersession to memories - archive old ones and create associations
266
- */
267
- export async function applySupersession(newMemoryId, supersededIds, confidence) {
268
- if (supersededIds.length === 0)
269
- return;
270
- try {
271
- const db = await getDb();
272
- const schema = await getSchema();
273
- const now = new Date();
274
- // Update superseded memories
275
- await db
276
- .update(schema.memories)
277
- .set({
278
- status: 'superseded',
279
- supersededBy: newMemoryId,
280
- supersededAt: now,
281
- updatedAt: now,
282
- })
283
- .where(inArray(schema.memories.id, supersededIds));
284
- // Create associations for traceability
285
- for (const oldId of supersededIds) {
286
- await createAssociation(newMemoryId, oldId, 'supersedes', confidence);
287
- }
288
- logger.info('Applied supersession', {
289
- newMemoryId,
290
- supersededCount: supersededIds.length,
291
- confidence,
292
- });
293
- }
294
- catch (error) {
295
- logger.error('Error applying supersession', error);
296
- }
297
- }
298
- /**
299
- * Check for temporal contradictions (facts that are no longer valid)
300
- */
301
- export async function checkTemporalContradictions(content, projectId) {
302
- const supersededIds = [];
303
- try {
304
- // Look for temporal update patterns
305
- const temporalUpdates = content.match(/\b(as of|starting|beginning|from now|effective)\s+(\d{4}|\w+\s+\d{1,2})/gi);
306
- if (!temporalUpdates || temporalUpdates.length === 0) {
307
- return supersededIds;
308
- }
309
- const db = await getDb();
310
- const schema = await getSchema();
311
- // Find memories with overlapping subject but older validTo dates
312
- const subject = extractSubject(content);
313
- const whereClause = projectId
314
- ? and(eq(schema.memories.projectId, projectId), eq(schema.memories.status, 'active'))
315
- : eq(schema.memories.status, 'active');
316
- const candidates = await db
317
- .select()
318
- .from(schema.memories)
319
- .where(whereClause)
320
- .limit(50);
321
- for (const candidate of candidates) {
322
- const candidateSubject = extractSubject(candidate.content);
323
- const similarity = calculateSimilarity(subject, candidateSubject);
324
- if (similarity > 0.5 && candidate.validTo) {
325
- const validToDate = new Date(candidate.validTo);
326
- const now = new Date();
327
- // If the candidate's validity period has passed
328
- if (validToDate < now) {
329
- supersededIds.push(candidate.id);
330
- }
331
- }
332
- }
333
- }
334
- catch (error) {
335
- logger.error('Error checking temporal contradictions', error);
336
- }
337
- return supersededIds;
338
- }
339
- /**
340
- * Integrated contradiction resolution for the write path
341
- * Call this before storing a new memory
342
- */
343
- export async function resolveContradictions(content, type, projectId) {
344
- // Detect standard contradictions
345
- const contradictionResult = await detectContradictions({
346
- newContent: content,
347
- newType: type,
348
- projectId,
349
- });
350
- // Also check temporal contradictions
351
- const temporalSuperseded = await checkTemporalContradictions(content, projectId);
352
- // Combine results
353
- const allSuperseded = [
354
- ...new Set([
355
- ...contradictionResult.supersededMemories,
356
- ...temporalSuperseded,
357
- ]),
358
- ];
359
- const maxConfidence = Math.max(contradictionResult.confidence, temporalSuperseded.length > 0 ? 0.7 : 0);
360
- return {
361
- shouldProceed: true, // Always proceed, but track supersessions
362
- supersededIds: allSuperseded,
363
- confidence: maxConfidence,
364
- reason: contradictionResult.reason ||
365
- (temporalSuperseded.length > 0 ? 'temporal supersession' : ''),
366
- };
367
- }
368
- //# sourceMappingURL=contradiction-resolver.js.map
@@ -1,19 +0,0 @@
1
- export interface EditProposal {
2
- id: string;
3
- memoryId: string;
4
- currentContent: string;
5
- proposedContent: string;
6
- reason: string;
7
- conflictWarnings: string[];
8
- status: 'pending' | 'approved' | 'rejected' | 'expired';
9
- version: number;
10
- createdAt: Date;
11
- reviewedAt?: Date;
12
- reviewNotes?: string;
13
- }
14
- export declare function createEditProposal(memoryId: string, currentContent: string, proposedContent: string, reason: string, userId?: string): Promise<EditProposal>;
15
- export declare function approveEditProposal(proposalId: string): Promise<boolean>;
16
- export declare function rejectEditProposal(proposalId: string, reviewNotes: string): Promise<boolean>;
17
- export declare function detectConflicts(memoryId: string, proposedContent: string): Promise<string[]>;
18
- export declare function getEditProposals(memoryId?: string, status?: 'pending' | 'approved' | 'rejected'): Promise<EditProposal[]>;
19
- //# sourceMappingURL=edit-workflow.d.ts.map
@@ -1,120 +0,0 @@
1
- import { randomUUID } from 'crypto';
2
- import { eq, 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
- export async function createEditProposal(memoryId, currentContent, proposedContent, reason, userId) {
7
- const db = createDatabaseClient(await getDb());
8
- const schema = await getSchema();
9
- const { memoryEditProposals } = schema;
10
- const proposalId = randomUUID();
11
- const now = new Date();
12
- await db.insert(memoryEditProposals).values({
13
- id: proposalId,
14
- memoryId,
15
- currentContent,
16
- proposedContent,
17
- reason,
18
- conflictWarnings: [],
19
- status: 'pending',
20
- version: 1,
21
- createdAt: now,
22
- userId,
23
- });
24
- // Run conflict detection
25
- const conflicts = await detectConflicts(memoryId, proposedContent);
26
- await db.update(memoryEditProposals)
27
- .set({ conflictWarnings: conflicts })
28
- .where(eq(memoryEditProposals.id, proposalId));
29
- return {
30
- id: proposalId,
31
- memoryId,
32
- currentContent,
33
- proposedContent,
34
- reason,
35
- conflictWarnings: conflicts,
36
- status: 'pending',
37
- version: 1,
38
- createdAt: now,
39
- };
40
- }
41
- export async function approveEditProposal(proposalId) {
42
- const db = createDatabaseClient(await getDb());
43
- const schema = await getSchema();
44
- const { memoryEditProposals, memories } = schema;
45
- // Get proposal
46
- const proposal = await db.select()
47
- .from(memoryEditProposals)
48
- .where(eq(memoryEditProposals.id, proposalId))
49
- .limit(1);
50
- if (proposal.length === 0)
51
- return false;
52
- // Update memory content
53
- await db.update(memories)
54
- .set({
55
- content: proposal[0].proposedContent,
56
- version: sql `${memories.version} + 1`,
57
- updatedAt: new Date()
58
- })
59
- .where(eq(memories.id, proposal[0].memoryId));
60
- // Mark proposal as approved
61
- await db.update(memoryEditProposals)
62
- .set({ status: 'approved', reviewedAt: new Date() })
63
- .where(eq(memoryEditProposals.id, proposalId));
64
- return true;
65
- }
66
- export async function rejectEditProposal(proposalId, reviewNotes) {
67
- const db = createDatabaseClient(await getDb());
68
- const schema = await getSchema();
69
- const { memoryEditProposals } = schema;
70
- await db.update(memoryEditProposals)
71
- .set({ status: 'rejected', reviewNotes, reviewedAt: new Date() })
72
- .where(eq(memoryEditProposals.id, proposalId));
73
- return true;
74
- }
75
- export async function detectConflicts(memoryId, proposedContent) {
76
- const db = createDatabaseClient(await getDb());
77
- const schema = await getSchema();
78
- const { memories } = schema;
79
- // Get current memory
80
- const currentMemory = await db.select()
81
- .from(memories)
82
- .where(eq(memories.id, memoryId))
83
- .limit(1);
84
- if (currentMemory.length === 0)
85
- return [];
86
- const conflicts = [];
87
- // Check for temporal contradictions
88
- if (currentMemory[0].validFrom && currentMemory[0].validTo) {
89
- const now = new Date();
90
- if (now < new Date(currentMemory[0].validFrom) || now > new Date(currentMemory[0].validTo)) {
91
- conflicts.push('Current time is outside validity period');
92
- }
93
- }
94
- // Check for semantic contradictions with other memories
95
- const similarMemories = await db.select()
96
- .from(memories)
97
- .where(and(eq(memories.projectId, currentMemory[0].projectId), sql `memories.id != ${memoryId}`, sql `memories.content ILIKE ${proposedContent}`))
98
- .limit(5);
99
- for (const memory of similarMemories) {
100
- if (memory.id !== memoryId) {
101
- conflicts.push(`Potential contradiction with memory ${memory.id}`);
102
- }
103
- }
104
- return conflicts;
105
- }
106
- export async function getEditProposals(memoryId, status) {
107
- const db = createDatabaseClient(await getDb());
108
- const schema = await getSchema();
109
- const { memoryEditProposals } = schema;
110
- let query = db.select().from(memoryEditProposals);
111
- if (memoryId) {
112
- query = query.where(eq(memoryEditProposals.memoryId, memoryId));
113
- }
114
- if (status) {
115
- query = query.where(eq(memoryEditProposals.status, status));
116
- }
117
- const proposals = await query;
118
- return proposals;
119
- }
120
- //# sourceMappingURL=edit-workflow.js.map
@@ -1,37 +0,0 @@
1
- /**
2
- * Entity Extractor
3
- * Extracts named entities from memory content
4
- * Supports people, files, functions, dates, locations, concepts, tools, and patterns
5
- */
6
- export type EntityType = 'person' | 'file' | 'function' | 'class' | 'concept' | 'tool' | 'date' | 'location' | 'pattern' | 'technique' | 'other';
7
- export interface ExtractedEntity {
8
- name: string;
9
- type: EntityType;
10
- confidence: number;
11
- startIndex: number;
12
- endIndex: number;
13
- context: string;
14
- normalized?: string;
15
- }
16
- /**
17
- * Extract unique entity names for auto-linking
18
- */
19
- export declare function extractEntityNames(content: string): string[];
20
- /**
21
- * Extract entities from content
22
- */
23
- export declare function extractEntities(content: string): Promise<ExtractedEntity[]>;
24
- /**
25
- * Link extracted entities to memory records
26
- * Creates entity records in the knowledge graph
27
- */
28
- export declare function linkEntitiesToMemories(memoryId: string, entities: ExtractedEntity[]): Promise<void>;
29
- /**
30
- * Get entities extracted from a memory based on properties
31
- */
32
- export declare function getMemoryEntities(memoryId: string): Promise<ExtractedEntity[]>;
33
- /**
34
- * Get all entities for a project
35
- */
36
- export declare function getProjectEntities(projectId: string, type?: EntityType): Promise<any[]>;
37
- //# sourceMappingURL=entity-extractor.d.ts.map