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,1034 +0,0 @@
1
- import { existsSync, mkdirSync } from 'fs';
2
- import { logger } from '../core/logger.js';
3
- import { getDataDir } from '../config.js';
4
- import { runAllMigrations } from './migrations/index.js';
5
- /**
6
- * Note on boolean columns:
7
- * SQLite uses INTEGER 0/1 for boolean values (no native boolean type)
8
- * PostgreSQL uses native BOOLEAN type
9
- */
10
- const sqliteSchemaSql = `
11
- PRAGMA foreign_keys = ON;
12
-
13
- -- Schema version tracking table (v1.2.0+)
14
- CREATE TABLE IF NOT EXISTS _schema_versions (
15
- version TEXT PRIMARY KEY,
16
- description TEXT NOT NULL,
17
- applied_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
18
- );
19
-
20
- -- Agent preferences table (v1.2.0+) - stores accumulated agent preferences from learnings
21
- CREATE TABLE IF NOT EXISTS agent_preferences (
22
- id TEXT PRIMARY KEY,
23
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
24
- key TEXT NOT NULL,
25
- value TEXT NOT NULL,
26
- source_memory_id TEXT,
27
- confidence REAL DEFAULT 0.5,
28
- usage_count INTEGER DEFAULT 1,
29
- last_updated INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
30
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
31
- UNIQUE(project_id, key)
32
- );
33
-
34
- CREATE INDEX IF NOT EXISTS agent_preferences_project_idx ON agent_preferences(project_id);
35
- CREATE INDEX IF NOT EXISTS agent_preferences_key_idx ON agent_preferences(key);
36
-
37
- CREATE TABLE IF NOT EXISTS users (
38
- id TEXT PRIMARY KEY,
39
- external_id TEXT UNIQUE,
40
- name TEXT,
41
- email TEXT,
42
- preferences TEXT,
43
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
44
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
45
- );
46
-
47
- CREATE TABLE IF NOT EXISTS projects (
48
- id TEXT PRIMARY KEY,
49
- name TEXT NOT NULL,
50
- path TEXT NOT NULL,
51
- description TEXT,
52
- metadata TEXT,
53
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
54
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
55
- );
56
-
57
- CREATE INDEX IF NOT EXISTS projects_path_idx ON projects(path);
58
-
59
- CREATE TABLE IF NOT EXISTS memories (
60
- id TEXT PRIMARY KEY,
61
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
62
- user_id TEXT REFERENCES users(id) ON DELETE SET NULL,
63
- type TEXT NOT NULL,
64
- content TEXT NOT NULL,
65
- summary TEXT,
66
- embedding_json TEXT,
67
- embedding BLOB,
68
- source TEXT,
69
- confidence INTEGER DEFAULT 50,
70
- confidence_level TEXT DEFAULT 'speculative',
71
- tags TEXT,
72
- metadata TEXT,
73
- is_private INTEGER DEFAULT 0,
74
- has_secrets INTEGER DEFAULT 0,
75
- relevance_score INTEGER DEFAULT 50,
76
- is_active INTEGER DEFAULT 1,
77
- expires_at INTEGER,
78
- access_count INTEGER DEFAULT 0,
79
- last_accessed_at INTEGER,
80
- is_merged INTEGER DEFAULT 0,
81
- merged_into_id TEXT,
82
- merged_at INTEGER,
83
- is_canonical INTEGER DEFAULT 0,
84
- merge_source_ids TEXT,
85
- is_mergeable INTEGER DEFAULT 1,
86
- merge_version INTEGER DEFAULT 1,
87
- namespace_id TEXT REFERENCES namespaces(id) ON DELETE SET NULL,
88
- namespace_path TEXT,
89
- has_l0_abstract INTEGER DEFAULT 0,
90
- has_l1_overview INTEGER DEFAULT 0,
91
- last_layer_update INTEGER,
92
- importance_score INTEGER DEFAULT 50,
93
- importance_decay_rate INTEGER DEFAULT 30,
94
- last_importance_recalc INTEGER,
95
- retrieval_priority INTEGER DEFAULT 50,
96
- tokens_estimate INTEGER DEFAULT 0,
97
- consolidated_into TEXT,
98
- consolidated_at INTEGER,
99
- is_consolidated INTEGER DEFAULT 0,
100
- sector TEXT DEFAULT 'episodic',
101
- tier TEXT DEFAULT 'hot',
102
- status TEXT DEFAULT 'active',
103
- encrypted_content TEXT,
104
- encryption_nonce TEXT,
105
- is_encrypted INTEGER DEFAULT 0,
106
- context_status TEXT DEFAULT 'out-of-context',
107
- decay_rate INTEGER DEFAULT 30,
108
- coactivation_score INTEGER DEFAULT 0,
109
- last_decay_at INTEGER DEFAULT (strftime('%s','now')),
110
- agent_id TEXT,
111
- agent_role TEXT,
112
- visibility_scope TEXT DEFAULT 'private',
113
- is_protected INTEGER DEFAULT 0,
114
- is_pinned INTEGER DEFAULT 0,
115
- is_immutable INTEGER DEFAULT 0,
116
- write_scope TEXT,
117
- read_scope TEXT,
118
- triggered_by TEXT,
119
- capture_reason TEXT,
120
- last_used_at INTEGER,
121
- usage_count INTEGER DEFAULT 0,
122
- valid_from INTEGER,
123
- valid_to INTEGER,
124
- recorded_at INTEGER DEFAULT (strftime('%s','now')),
125
- superseded_by TEXT,
126
- version INTEGER DEFAULT 1,
127
- place_id TEXT,
128
- place_sort_order INTEGER DEFAULT 0,
129
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
130
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
131
- );
132
-
133
- CREATE INDEX IF NOT EXISTS memories_project_idx ON memories(project_id);
134
- CREATE INDEX IF NOT EXISTS memories_type_idx ON memories(type);
135
- CREATE INDEX IF NOT EXISTS memories_created_idx ON memories(created_at);
136
- CREATE INDEX IF NOT EXISTS memories_tags_idx ON memories(tags);
137
-
138
- CREATE TABLE IF NOT EXISTS memory_associations (
139
- id TEXT PRIMARY KEY,
140
- from_memory_id TEXT NOT NULL,
141
- to_memory_id TEXT NOT NULL,
142
- association_type TEXT NOT NULL,
143
- weight REAL DEFAULT 1,
144
- coactivation_count INTEGER DEFAULT 1,
145
- metadata TEXT,
146
- last_coactivated_at INTEGER,
147
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
148
- UNIQUE(from_memory_id, to_memory_id)
149
- );
150
-
151
- -- Composite index for graph traversal (v1.1.0)
152
- CREATE INDEX IF NOT EXISTS associations_graph_traversal_idx ON memory_associations(from_memory_id, to_memory_id, weight, association_type);
153
-
154
- CREATE TABLE IF NOT EXISTS conversations (
155
- id TEXT PRIMARY KEY,
156
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
157
- user_id TEXT REFERENCES users(id) ON DELETE SET NULL,
158
- session_id TEXT NOT NULL,
159
- title TEXT,
160
- summary TEXT,
161
- message_count INTEGER DEFAULT 0,
162
- token_count INTEGER DEFAULT 0,
163
- started_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
164
- ended_at INTEGER,
165
- metadata TEXT,
166
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
167
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
168
- );
169
-
170
- CREATE INDEX IF NOT EXISTS conversations_project_idx ON conversations(project_id);
171
- CREATE INDEX IF NOT EXISTS conversations_session_idx ON conversations(session_id);
172
- CREATE INDEX IF NOT EXISTS conversations_started_idx ON conversations(started_at);
173
-
174
- CREATE TABLE IF NOT EXISTS messages (
175
- id TEXT PRIMARY KEY,
176
- conversation_id TEXT NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
177
- role TEXT NOT NULL,
178
- content TEXT NOT NULL,
179
- embedding_json TEXT,
180
- token_count INTEGER,
181
- tool_calls TEXT,
182
- metadata TEXT,
183
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
184
- );
185
-
186
- CREATE INDEX IF NOT EXISTS messages_conversation_idx ON messages(conversation_id);
187
- CREATE INDEX IF NOT EXISTS messages_role_idx ON messages(role);
188
- CREATE INDEX IF NOT EXISTS messages_created_idx ON messages(created_at);
189
-
190
- -- Learnings table (renamed from observations)
191
- CREATE TABLE IF NOT EXISTS learnings (
192
- id TEXT PRIMARY KEY,
193
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
194
- conversation_id TEXT REFERENCES conversations(id) ON DELETE SET NULL,
195
- type TEXT NOT NULL,
196
- action TEXT NOT NULL,
197
- target TEXT,
198
- summary TEXT NOT NULL,
199
- details TEXT,
200
- embedding_json TEXT,
201
- embedding BLOB,
202
- memory_id TEXT REFERENCES memories(id) ON DELETE SET NULL,
203
- folder_path TEXT,
204
- project_path TEXT,
205
- is_private INTEGER DEFAULT 0,
206
- has_secrets INTEGER DEFAULT 0,
207
- relevance_score INTEGER DEFAULT 50,
208
- category TEXT,
209
- importance INTEGER DEFAULT 50,
210
- confidence INTEGER DEFAULT 50,
211
- metadata TEXT,
212
- is_imported INTEGER DEFAULT 0,
213
- -- UAM: Agent integration columns
214
- agent_id TEXT,
215
- tool_name TEXT,
216
- session_id TEXT,
217
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
218
- );
219
-
220
- CREATE INDEX IF NOT EXISTS learnings_project_idx ON learnings(project_id);
221
- CREATE INDEX IF NOT EXISTS learnings_type_idx ON learnings(type);
222
- CREATE INDEX IF NOT EXISTS learnings_action_idx ON learnings(action);
223
- CREATE INDEX IF NOT EXISTS learnings_created_idx ON learnings(created_at);
224
-
225
- CREATE TABLE IF NOT EXISTS entities (
226
- id TEXT PRIMARY KEY,
227
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
228
- name TEXT NOT NULL,
229
- type TEXT NOT NULL,
230
- description TEXT,
231
- embedding_json TEXT,
232
- properties TEXT,
233
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
234
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
235
- );
236
-
237
- CREATE INDEX IF NOT EXISTS entities_project_idx ON entities(project_id);
238
- CREATE INDEX IF NOT EXISTS entities_type_idx ON entities(type);
239
- CREATE INDEX IF NOT EXISTS entities_name_idx ON entities(name);
240
-
241
- CREATE TABLE IF NOT EXISTS entity_relations (
242
- id TEXT PRIMARY KEY,
243
- from_entity_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
244
- to_entity_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
245
- type TEXT NOT NULL,
246
- weight INTEGER DEFAULT 1,
247
- properties TEXT,
248
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
249
- );
250
-
251
- CREATE INDEX IF NOT EXISTS relations_from_idx ON entity_relations(from_entity_id);
252
- CREATE INDEX IF NOT EXISTS relations_to_idx ON entity_relations(to_entity_id);
253
- CREATE INDEX IF NOT EXISTS relations_type_idx ON entity_relations(type);
254
-
255
- CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
256
- content,
257
- tags,
258
- content='memories',
259
- content_rowid='rowid'
260
- );
261
-
262
- CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
263
- INSERT INTO memories_fts(rowid, content, tags)
264
- VALUES (new.rowid, new.content, COALESCE(new.tags, ''));
265
- END;
266
-
267
- CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
268
- INSERT INTO memories_fts(memories_fts, rowid, content, tags)
269
- VALUES ('delete', old.rowid, old.content, COALESCE(old.tags, ''));
270
- END;
271
-
272
- CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
273
- INSERT INTO memories_fts(memories_fts, rowid, content, tags)
274
- VALUES ('delete', old.rowid, old.content, COALESCE(old.tags, ''));
275
- INSERT INTO memories_fts(rowid, content, tags)
276
- VALUES (new.rowid, new.content, COALESCE(new.tags, ''));
277
- END;
278
-
279
- CREATE VIRTUAL TABLE IF NOT EXISTS messages_fts USING fts5(
280
- content,
281
- content='messages',
282
- content_rowid='rowid'
283
- );
284
-
285
- CREATE TRIGGER IF NOT EXISTS messages_ai AFTER INSERT ON messages BEGIN
286
- INSERT INTO messages_fts(rowid, content)
287
- VALUES (new.rowid, new.content);
288
- END;
289
-
290
- CREATE TRIGGER IF NOT EXISTS messages_ad AFTER DELETE ON messages BEGIN
291
- INSERT INTO messages_fts(messages_fts, rowid, content)
292
- VALUES ('delete', old.rowid, old.content);
293
- END;
294
-
295
- CREATE TRIGGER IF NOT EXISTS messages_au AFTER UPDATE ON messages BEGIN
296
- INSERT INTO messages_fts(messages_fts, rowid, content)
297
- VALUES ('delete', old.rowid, old.content);
298
- INSERT INTO messages_fts(rowid, content)
299
- VALUES (new.rowid, new.content);
300
- END;
301
-
302
- CREATE TABLE IF NOT EXISTS core_memory (
303
- id TEXT PRIMARY KEY,
304
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
305
- user_id TEXT REFERENCES users(id) ON DELETE SET NULL,
306
- section TEXT NOT NULL,
307
- content TEXT NOT NULL DEFAULT '',
308
- size_bytes INTEGER DEFAULT 0 NOT NULL,
309
- tokens_estimate INTEGER DEFAULT 0 NOT NULL,
310
- version INTEGER DEFAULT 1 NOT NULL,
311
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
312
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
313
- );
314
-
315
- CREATE INDEX IF NOT EXISTS core_memory_project_idx ON core_memory(project_id);
316
- CREATE INDEX IF NOT EXISTS core_memory_user_idx ON core_memory(user_id);
317
- CREATE INDEX IF NOT EXISTS core_memory_section_idx ON core_memory(section);
318
-
319
- CREATE TABLE IF NOT EXISTS context_sessions (
320
- id TEXT PRIMARY KEY,
321
- session_id TEXT NOT NULL UNIQUE,
322
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
323
- user_id TEXT REFERENCES users(id) ON DELETE SET NULL,
324
- loaded_memory_ids TEXT,
325
- token_budget INTEGER DEFAULT 8000 NOT NULL,
326
- tokens_used INTEGER DEFAULT 0 NOT NULL,
327
- core_memory_tokens INTEGER DEFAULT 0 NOT NULL,
328
- loaded_memories_tokens INTEGER DEFAULT 0 NOT NULL,
329
- metadata TEXT,
330
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
331
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
332
- );
333
-
334
- CREATE INDEX IF NOT EXISTS context_sessions_session_idx ON context_sessions(session_id);
335
- CREATE INDEX IF NOT EXISTS context_sessions_project_idx ON context_sessions(project_id);
336
- CREATE INDEX IF NOT EXISTS context_sessions_created_idx ON context_sessions(created_at);
337
-
338
- -- v0.8.0: Memory Merge Tables
339
- CREATE TABLE IF NOT EXISTS memory_merge_proposals (
340
- id TEXT PRIMARY KEY,
341
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
342
- user_id TEXT REFERENCES users(id) ON DELETE SET NULL,
343
- source_memory_ids TEXT NOT NULL,
344
- proposed_content TEXT NOT NULL,
345
- proposed_summary TEXT,
346
- proposed_tags TEXT,
347
- proposed_metadata TEXT,
348
- detection_method TEXT NOT NULL,
349
- similarity_score TEXT NOT NULL,
350
- confidence_level TEXT NOT NULL,
351
- merge_reason TEXT NOT NULL,
352
- conflict_warnings TEXT,
353
- status TEXT DEFAULT 'pending' NOT NULL,
354
- reviewed_at INTEGER,
355
- review_notes TEXT,
356
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
357
- expires_at INTEGER
358
- );
359
-
360
- CREATE INDEX IF NOT EXISTS memory_merge_proposals_project_status_idx ON memory_merge_proposals(project_id, status);
361
- CREATE INDEX IF NOT EXISTS memory_merge_proposals_created_at_idx ON memory_merge_proposals(created_at);
362
-
363
- CREATE TABLE IF NOT EXISTS memory_merge_history (
364
- id TEXT PRIMARY KEY,
365
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
366
- user_id TEXT REFERENCES users(id) ON DELETE SET NULL,
367
- proposal_id TEXT REFERENCES memory_merge_proposals(id) ON DELETE SET NULL,
368
- source_memory_ids TEXT NOT NULL,
369
- canonical_memory_id TEXT NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
370
- source_memories_snapshot TEXT NOT NULL,
371
- merge_strategy TEXT NOT NULL,
372
- tokens_saved INTEGER,
373
- is_reversed INTEGER DEFAULT 0,
374
- reversed_at INTEGER,
375
- reversed_by TEXT,
376
- merged_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
377
- );
378
-
379
- CREATE TABLE IF NOT EXISTS memory_hash_cache (
380
- memory_id TEXT PRIMARY KEY REFERENCES memories(id) ON DELETE CASCADE,
381
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
382
- simhash TEXT,
383
- minhash TEXT,
384
- content_hash TEXT NOT NULL,
385
- last_updated INTEGER DEFAULT (strftime('%s','now')) NOT NULL
386
- );
387
-
388
- CREATE INDEX IF NOT EXISTS memory_hash_cache_project_id_idx ON memory_hash_cache(project_id);
389
- CREATE INDEX IF NOT EXISTS memory_hash_cache_simhash_idx ON memory_hash_cache(simhash);
390
-
391
- -- Namespaces table (v1.0.x) - Hierarchical organization
392
- CREATE TABLE IF NOT EXISTS namespaces (
393
- id TEXT PRIMARY KEY,
394
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
395
- name TEXT NOT NULL,
396
- path TEXT,
397
- description TEXT,
398
- parent_id TEXT REFERENCES namespaces(id) ON DELETE SET NULL,
399
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
400
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
401
- );
402
- CREATE INDEX IF NOT EXISTS namespaces_project_idx ON namespaces(project_id);
403
- CREATE INDEX IF NOT EXISTS namespaces_parent_idx ON namespaces(parent_id);
404
-
405
- -- Maintenance jobs table (v1.0.x) - Cron scheduler
406
- CREATE TABLE IF NOT EXISTS maintenance_jobs (
407
- id TEXT PRIMARY KEY,
408
- job_name TEXT NOT NULL UNIQUE,
409
- job_type TEXT NOT NULL,
410
- cron_expression TEXT,
411
- enabled INTEGER DEFAULT 1 NOT NULL,
412
- last_run_at INTEGER,
413
- last_run_duration INTEGER,
414
- last_run_status TEXT,
415
- last_run_error TEXT,
416
- total_runs INTEGER DEFAULT 0,
417
- success_count INTEGER DEFAULT 0,
418
- failure_count INTEGER DEFAULT 0,
419
- job_config TEXT,
420
- next_run_at INTEGER,
421
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
422
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
423
- );
424
- CREATE INDEX IF NOT EXISTS maintenance_jobs_name_idx ON maintenance_jobs(job_name);
425
- CREATE INDEX IF NOT EXISTS maintenance_jobs_next_run_idx ON maintenance_jobs(next_run_at);
426
- CREATE INDEX IF NOT EXISTS maintenance_jobs_type_idx ON maintenance_jobs(job_type);
427
- CREATE INDEX IF NOT EXISTS maintenance_jobs_enabled_idx ON maintenance_jobs(enabled);
428
-
429
- -- Places table (v1.1.5) - Spatial memory organization
430
- CREATE TABLE IF NOT EXISTS places (
431
- id TEXT PRIMARY KEY,
432
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE NOT NULL,
433
- name TEXT NOT NULL,
434
- place_type TEXT NOT NULL,
435
- parent_id TEXT REFERENCES places(id) ON DELETE SET NULL,
436
- sort_order INTEGER DEFAULT 0,
437
- position_x INTEGER DEFAULT 0,
438
- position_y INTEGER DEFAULT 0,
439
- description TEXT,
440
- purpose TEXT,
441
- memory_count INTEGER DEFAULT 0,
442
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
443
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
444
- );
445
- CREATE INDEX IF NOT EXISTS places_project_idx ON places(project_id);
446
- CREATE INDEX IF NOT EXISTS places_type_idx ON places(place_type);
447
- CREATE INDEX IF NOT EXISTS places_parent_idx ON places(parent_id);
448
- CREATE INDEX IF NOT EXISTS places_sort_order_idx ON places(project_id, sort_order);
449
-
450
- -- Memory-Place assignments
451
- CREATE TABLE IF NOT EXISTS memory_places (
452
- id TEXT PRIMARY KEY,
453
- memory_id TEXT REFERENCES memories(id) ON DELETE CASCADE NOT NULL,
454
- place_id TEXT REFERENCES places(id) ON DELETE CASCADE NOT NULL,
455
- place_sort_order INTEGER DEFAULT 0,
456
- is_manual INTEGER DEFAULT 0,
457
- rule_id TEXT,
458
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
459
- );
460
- CREATE INDEX IF NOT EXISTS memory_places_memory_idx ON memory_places(memory_id);
461
- CREATE INDEX IF NOT EXISTS memory_places_place_idx ON memory_places(place_id);
462
-
463
- -- Place auto-assignment rules
464
- CREATE TABLE IF NOT EXISTS place_rules (
465
- id TEXT PRIMARY KEY,
466
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE NOT NULL,
467
- name TEXT NOT NULL,
468
- place_type TEXT NOT NULL,
469
- match_tool TEXT,
470
- match_keyword TEXT,
471
- match_tag TEXT,
472
- match_memory_type TEXT,
473
- priority INTEGER DEFAULT 0,
474
- enabled INTEGER DEFAULT 1,
475
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
476
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
477
- );
478
- CREATE INDEX IF NOT EXISTS place_rules_project_idx ON place_rules(project_id);
479
- CREATE INDEX IF NOT EXISTS place_rules_type_idx ON place_rules(place_type);
480
- -- session_summaries table
481
- CREATE TABLE IF NOT EXISTS session_summaries (
482
- id TEXT PRIMARY KEY,
483
- conversation_id TEXT REFERENCES conversations(id) ON DELETE CASCADE NOT NULL,
484
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
485
- summary_type TEXT NOT NULL,
486
- content TEXT NOT NULL,
487
- compressed_from INTEGER,
488
- tokens_saved INTEGER,
489
- embedding BLOB,
490
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
491
- );
492
- CREATE INDEX IF NOT EXISTS session_summaries_conversation_idx ON session_summaries(conversation_id);
493
- CREATE INDEX IF NOT EXISTS session_summaries_project_idx ON session_summaries(project_id);
494
- CREATE INDEX IF NOT EXISTS session_summaries_type_idx ON session_summaries(summary_type);
495
- CREATE INDEX IF NOT EXISTS session_summaries_created_idx ON session_summaries(created_at);
496
-
497
- -- Belief Systems - Derived Beliefs from Memory (v1.3.0+)
498
- CREATE TABLE IF NOT EXISTS beliefs (
499
- id TEXT PRIMARY KEY,
500
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
501
- belief_type TEXT NOT NULL,
502
- statement TEXT NOT NULL,
503
- normalized_key TEXT NOT NULL,
504
- confidence REAL DEFAULT 0.5,
505
- belief_decay_rate INTEGER DEFAULT 30,
506
- last_confirmed_at INTEGER,
507
- source_count INTEGER DEFAULT 1,
508
- status TEXT DEFAULT 'active',
509
- reason TEXT,
510
- context TEXT,
511
- evidence_summary TEXT,
512
- metadata TEXT,
513
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
514
- updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
515
- UNIQUE(project_id, normalized_key)
516
- );
517
- CREATE INDEX IF NOT EXISTS beliefs_project_idx ON beliefs(project_id);
518
- CREATE INDEX IF NOT EXISTS beliefs_type_idx ON beliefs(belief_type);
519
- CREATE INDEX IF NOT EXISTS beliefs_status_idx ON beliefs(status);
520
- CREATE INDEX IF NOT EXISTS beliefs_confidence_idx ON beliefs(confidence);
521
-
522
- CREATE TABLE IF NOT EXISTS belief_memory_sources (
523
- id TEXT PRIMARY KEY,
524
- belief_id TEXT REFERENCES beliefs(id) ON DELETE CASCADE,
525
- memory_id TEXT REFERENCES memories(id) ON DELETE CASCADE,
526
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
527
- UNIQUE(belief_id, memory_id)
528
- );
529
- CREATE INDEX IF NOT EXISTS belief_sources_belief_idx ON belief_memory_sources(belief_id);
530
- CREATE INDEX IF NOT EXISTS belief_sources_memory_idx ON belief_memory_sources(memory_id);
531
-
532
- CREATE TABLE IF NOT EXISTS belief_edges (
533
- id TEXT PRIMARY KEY,
534
- from_belief_id TEXT REFERENCES beliefs(id) ON DELETE CASCADE,
535
- to_belief_id TEXT REFERENCES beliefs(id) ON DELETE CASCADE,
536
- edge_type TEXT NOT NULL,
537
- metadata TEXT,
538
- created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
539
- UNIQUE(from_belief_id, to_belief_id, edge_type)
540
- );
541
- CREATE INDEX IF NOT EXISTS belief_edges_from_idx ON belief_edges(from_belief_id);
542
- CREATE INDEX IF NOT EXISTS belief_edges_to_idx ON belief_edges(to_belief_id);
543
- `;
544
- const postgresStatements = [
545
- `CREATE EXTENSION IF NOT EXISTS pgcrypto;`,
546
- `CREATE EXTENSION IF NOT EXISTS vector;`,
547
- `CREATE EXTENSION IF NOT EXISTS pg_trgm;`,
548
- `CREATE TABLE IF NOT EXISTS users (
549
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
550
- external_id TEXT UNIQUE,
551
- name TEXT,
552
- email TEXT,
553
- preferences JSONB,
554
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
555
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
556
- );`,
557
- `CREATE TABLE IF NOT EXISTS projects (
558
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
559
- name TEXT NOT NULL,
560
- path TEXT NOT NULL,
561
- description TEXT,
562
- metadata JSONB,
563
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
564
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
565
- );`,
566
- `CREATE INDEX IF NOT EXISTS projects_path_idx ON projects(path);`,
567
- `CREATE TABLE IF NOT EXISTS memories (
568
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
569
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
570
- user_id UUID REFERENCES users(id) ON DELETE SET NULL,
571
- type TEXT NOT NULL,
572
- content TEXT NOT NULL,
573
- summary TEXT,
574
- embedding_json TEXT,
575
- embedding vector(1536),
576
- source TEXT,
577
- confidence INTEGER DEFAULT 50,
578
- confidence_level TEXT DEFAULT 'speculative',
579
- tags TEXT[],
580
- metadata JSONB,
581
- is_private BOOLEAN DEFAULT FALSE,
582
- has_secrets BOOLEAN DEFAULT FALSE,
583
- relevance_score INTEGER DEFAULT 50,
584
- is_active BOOLEAN DEFAULT TRUE,
585
- is_merged BOOLEAN DEFAULT FALSE,
586
- merged_into_id UUID,
587
- merged_at TIMESTAMPTZ,
588
- is_canonical BOOLEAN DEFAULT TRUE,
589
- merge_source_ids TEXT[],
590
- is_mergeable BOOLEAN DEFAULT TRUE,
591
- merge_version INTEGER DEFAULT 1,
592
- importance_score INTEGER DEFAULT 50,
593
- importance_decay_rate INTEGER DEFAULT 30,
594
- last_importance_recalc TIMESTAMPTZ,
595
- consolidated_into UUID,
596
- consolidated_at TIMESTAMPTZ,
597
- is_consolidated BOOLEAN DEFAULT FALSE,
598
- sector TEXT DEFAULT 'episodic',
599
- tier TEXT DEFAULT 'hot',
600
- status TEXT DEFAULT 'active',
601
- context_status TEXT DEFAULT 'out-of-context',
602
- decay_rate INTEGER DEFAULT 30,
603
- coactivation_score INTEGER DEFAULT 0,
604
- last_decay_at TIMESTAMPTZ,
605
- agent_id TEXT,
606
- agent_role TEXT,
607
- visibility_scope TEXT DEFAULT 'private',
608
- is_protected BOOLEAN DEFAULT FALSE,
609
- is_pinned BOOLEAN DEFAULT FALSE,
610
- is_immutable BOOLEAN DEFAULT FALSE,
611
- write_scope TEXT[],
612
- read_scope TEXT[],
613
- triggered_by TEXT,
614
- capture_reason TEXT,
615
- last_used_at TIMESTAMPTZ,
616
- usage_count INTEGER DEFAULT 0,
617
- tokens_estimate INTEGER DEFAULT 0,
618
- valid_from TIMESTAMPTZ,
619
- valid_to TIMESTAMPTZ,
620
- recorded_at TIMESTAMPTZ DEFAULT NOW(),
621
- superseded_by UUID,
622
- version INTEGER DEFAULT 1,
623
- expires_at TIMESTAMPTZ,
624
- access_count INTEGER DEFAULT 0,
625
- last_accessed_at TIMESTAMPTZ,
626
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
627
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
628
- );`,
629
- `CREATE INDEX IF NOT EXISTS memories_project_idx ON memories(project_id);`,
630
- `CREATE INDEX IF NOT EXISTS memories_type_idx ON memories(type);`,
631
- `CREATE INDEX IF NOT EXISTS memories_created_idx ON memories(created_at);`,
632
- `CREATE INDEX IF NOT EXISTS memories_tags_idx ON memories USING GIN(tags);`,
633
- `CREATE INDEX IF NOT EXISTS memories_content_trgm_idx ON memories USING GIN (content gin_trgm_ops);`,
634
- `CREATE TABLE IF NOT EXISTS conversations (
635
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
636
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
637
- user_id UUID REFERENCES users(id) ON DELETE SET NULL,
638
- session_id TEXT NOT NULL,
639
- title TEXT,
640
- summary TEXT,
641
- message_count INTEGER DEFAULT 0,
642
- token_count INTEGER DEFAULT 0,
643
- started_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
644
- ended_at TIMESTAMPTZ,
645
- metadata JSONB,
646
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
647
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
648
- );`,
649
- `CREATE INDEX IF NOT EXISTS conversations_project_idx ON conversations(project_id);`,
650
- `CREATE INDEX IF NOT EXISTS conversations_session_idx ON conversations(session_id);`,
651
- `CREATE INDEX IF NOT EXISTS conversations_started_idx ON conversations(started_at);`,
652
- `CREATE TABLE IF NOT EXISTS messages (
653
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
654
- conversation_id UUID NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
655
- role TEXT NOT NULL,
656
- content TEXT NOT NULL,
657
- embedding vector(1536),
658
- token_count INTEGER,
659
- tool_calls JSONB,
660
- metadata JSONB,
661
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
662
- );`,
663
- `CREATE INDEX IF NOT EXISTS messages_conversation_idx ON messages(conversation_id);`,
664
- `CREATE INDEX IF NOT EXISTS messages_role_idx ON messages(role);`,
665
- `CREATE INDEX IF NOT EXISTS messages_created_idx ON messages(created_at);`,
666
- `CREATE INDEX IF NOT EXISTS messages_content_trgm_idx ON messages USING GIN (content gin_trgm_ops);`,
667
- // Learnings table (renamed from observations)
668
- `CREATE TABLE IF NOT EXISTS learnings (
669
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
670
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
671
- conversation_id UUID REFERENCES conversations(id) ON DELETE SET NULL,
672
- type TEXT NOT NULL,
673
- action TEXT NOT NULL,
674
- target TEXT,
675
- summary TEXT NOT NULL,
676
- details JSONB,
677
- embedding vector(1536),
678
- memory_id UUID REFERENCES memories(id) ON DELETE SET NULL,
679
- category TEXT,
680
- importance INTEGER DEFAULT 50,
681
- confidence INTEGER DEFAULT 50,
682
- metadata JSONB,
683
- is_imported BOOLEAN DEFAULT FALSE,
684
- -- UAM: Agent integration columns
685
- agent_id TEXT,
686
- tool_name TEXT,
687
- session_id TEXT,
688
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
689
- );`,
690
- `CREATE INDEX IF NOT EXISTS learnings_project_idx ON learnings(project_id);`,
691
- `CREATE INDEX IF NOT EXISTS learnings_type_idx ON learnings(type);`,
692
- `CREATE INDEX IF NOT EXISTS learnings_action_idx ON learnings(action);`,
693
- `CREATE TABLE IF NOT EXISTS entities (
694
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
695
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
696
- name TEXT NOT NULL,
697
- type TEXT NOT NULL,
698
- description TEXT,
699
- embedding vector(1536),
700
- properties JSONB,
701
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
702
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
703
- );`,
704
- `CREATE INDEX IF NOT EXISTS entities_project_idx ON entities(project_id);`,
705
- `CREATE INDEX IF NOT EXISTS entities_type_idx ON entities(type);`,
706
- `CREATE INDEX IF NOT EXISTS entities_name_idx ON entities(name);`,
707
- `CREATE TABLE IF NOT EXISTS entity_relations (
708
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
709
- from_entity_id UUID NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
710
- to_entity_id UUID NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
711
- type TEXT NOT NULL,
712
- weight INTEGER DEFAULT 1,
713
- properties JSONB,
714
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
715
- );`,
716
- `CREATE INDEX IF NOT EXISTS relations_from_idx ON entity_relations(from_entity_id);`,
717
- `CREATE INDEX IF NOT EXISTS relations_to_idx ON entity_relations(to_entity_id);`,
718
- `CREATE INDEX IF NOT EXISTS relations_type_idx ON entity_relations(type);`,
719
- `CREATE TABLE IF NOT EXISTS core_memory (
720
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
721
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
722
- user_id UUID REFERENCES users(id) ON DELETE SET NULL,
723
- section TEXT NOT NULL,
724
- content TEXT NOT NULL DEFAULT '',
725
- size_bytes INTEGER DEFAULT 0 NOT NULL,
726
- version INTEGER DEFAULT 1 NOT NULL,
727
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
728
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
729
- );`,
730
- `CREATE INDEX IF NOT EXISTS core_memory_project_idx ON core_memory(project_id);`,
731
- `CREATE INDEX IF NOT EXISTS core_memory_user_idx ON core_memory(user_id);`,
732
- `CREATE INDEX IF NOT EXISTS core_memory_section_idx ON core_memory(section);`,
733
- `CREATE TABLE IF NOT EXISTS context_sessions (
734
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
735
- session_id TEXT NOT NULL UNIQUE,
736
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
737
- user_id UUID REFERENCES users(id) ON DELETE SET NULL,
738
- loaded_memory_ids JSONB,
739
- token_budget INTEGER DEFAULT 8000 NOT NULL,
740
- tokens_used INTEGER DEFAULT 0 NOT NULL,
741
- core_memory_tokens INTEGER DEFAULT 0 NOT NULL,
742
- loaded_memories_tokens INTEGER DEFAULT 0 NOT NULL,
743
- metadata JSONB,
744
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
745
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
746
- );`,
747
- `CREATE INDEX IF NOT EXISTS context_sessions_session_idx ON context_sessions(session_id);`,
748
- `CREATE INDEX IF NOT EXISTS context_sessions_project_idx ON context_sessions(project_id);`,
749
- `CREATE INDEX IF NOT EXISTS context_sessions_created_idx ON context_sessions(created_at);`,
750
- `CREATE TABLE IF NOT EXISTS memory_merge_proposals (
751
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
752
- project_id UUID NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
753
- user_id UUID REFERENCES users(id) ON DELETE SET NULL,
754
- source_memory_ids TEXT NOT NULL,
755
- proposed_content TEXT NOT NULL,
756
- proposed_summary TEXT,
757
- proposed_tags TEXT[],
758
- proposed_metadata JSONB,
759
- detection_method TEXT NOT NULL,
760
- similarity_score TEXT NOT NULL,
761
- confidence_level TEXT NOT NULL,
762
- merge_reason TEXT NOT NULL,
763
- conflict_warnings JSONB,
764
- status TEXT DEFAULT 'pending' NOT NULL,
765
- reviewed_at TIMESTAMPTZ,
766
- review_notes TEXT,
767
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
768
- expires_at TIMESTAMPTZ
769
- );`,
770
- `CREATE INDEX IF NOT EXISTS memory_merge_proposals_project_status_idx ON memory_merge_proposals(project_id, status);`,
771
- `CREATE INDEX IF NOT EXISTS memory_merge_proposals_created_at_idx ON memory_merge_proposals(created_at);`,
772
- `CREATE TABLE IF NOT EXISTS memory_merge_history (
773
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
774
- project_id UUID NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
775
- user_id UUID REFERENCES users(id) ON DELETE SET NULL,
776
- proposal_id UUID REFERENCES memory_merge_proposals(id) ON DELETE SET NULL,
777
- source_memory_ids TEXT NOT NULL,
778
- canonical_memory_id UUID NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
779
- source_memories_snapshot JSONB NOT NULL,
780
- merge_strategy TEXT NOT NULL,
781
- tokens_saved INTEGER,
782
- is_reversed BOOLEAN DEFAULT FALSE,
783
- reversed_at TIMESTAMPTZ,
784
- reversed_by UUID,
785
- merged_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
786
- );`,
787
- `CREATE TABLE IF NOT EXISTS memory_hash_cache (
788
- memory_id UUID PRIMARY KEY REFERENCES memories(id) ON DELETE CASCADE,
789
- project_id UUID NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
790
- simhash TEXT,
791
- minhash TEXT,
792
- content_hash TEXT NOT NULL,
793
- last_updated TIMESTAMPTZ DEFAULT NOW() NOT NULL
794
- );`,
795
- `CREATE INDEX IF NOT EXISTS memory_hash_cache_project_id_idx ON memory_hash_cache(project_id);`,
796
- `CREATE INDEX IF NOT EXISTS memory_hash_cache_simhash_idx ON memory_hash_cache(simhash);`,
797
- // memory_associations table (v1.1.0+)
798
- `CREATE TABLE IF NOT EXISTS memory_associations (
799
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
800
- from_memory_id UUID NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
801
- to_memory_id UUID NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
802
- association_type TEXT NOT NULL,
803
- weight REAL DEFAULT 1,
804
- coactivation_count INTEGER DEFAULT 1,
805
- metadata TEXT,
806
- last_coactivated_at TIMESTAMPTZ,
807
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
808
- UNIQUE(from_memory_id, to_memory_id)
809
- );`,
810
- `CREATE INDEX IF NOT EXISTS associations_graph_traversal_idx ON memory_associations(from_memory_id, to_memory_id, weight, association_type);`,
811
- // namespaces table
812
- `CREATE TABLE IF NOT EXISTS namespaces (
813
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
814
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
815
- name TEXT NOT NULL,
816
- path TEXT NOT NULL,
817
- description TEXT,
818
- parent_id UUID REFERENCES namespaces(id) ON DELETE SET NULL,
819
- metadata TEXT,
820
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
821
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
822
- );`,
823
- `CREATE INDEX IF NOT EXISTS namespaces_project_idx ON namespaces(project_id);`,
824
- `CREATE INDEX IF NOT EXISTS namespaces_parent_idx ON namespaces(parent_id);`,
825
- // maintenance_jobs table
826
- `CREATE TABLE IF NOT EXISTS maintenance_jobs (
827
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
828
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
829
- job_name TEXT NOT NULL,
830
- job_type TEXT NOT NULL,
831
- description TEXT,
832
- enabled BOOLEAN DEFAULT TRUE,
833
- cron_expression TEXT,
834
- interval_ms INTEGER,
835
- next_run_at TIMESTAMPTZ,
836
- last_run_at TIMESTAMPTZ,
837
- last_run_duration INTEGER,
838
- last_run_status TEXT,
839
- last_run_error TEXT,
840
- total_runs INTEGER DEFAULT 0,
841
- success_count INTEGER DEFAULT 0,
842
- failure_count INTEGER DEFAULT 0,
843
- job_config TEXT,
844
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
845
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
846
- );`,
847
- `CREATE INDEX IF NOT EXISTS maintenance_jobs_name_idx ON maintenance_jobs(job_name);`,
848
- `CREATE INDEX IF NOT EXISTS maintenance_jobs_next_run_idx ON maintenance_jobs(next_run_at);`,
849
- `CREATE INDEX IF NOT EXISTS maintenance_jobs_type_idx ON maintenance_jobs(job_type);`,
850
- `CREATE INDEX IF NOT EXISTS maintenance_jobs_enabled_idx ON maintenance_jobs(enabled);`,
851
- // places table (v1.1.5) - Spatial memory organization
852
- `CREATE TABLE IF NOT EXISTS places (
853
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
854
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE NOT NULL,
855
- name TEXT NOT NULL,
856
- place_type TEXT NOT NULL,
857
- parent_id UUID REFERENCES places(id) ON DELETE SET NULL,
858
- sort_order INTEGER DEFAULT 0,
859
- position_x INTEGER DEFAULT 0,
860
- position_y INTEGER DEFAULT 0,
861
- description TEXT,
862
- purpose TEXT,
863
- memory_count INTEGER DEFAULT 0,
864
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
865
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
866
- );`,
867
- `CREATE INDEX IF NOT EXISTS places_project_idx ON places(project_id);`,
868
- `CREATE INDEX IF NOT EXISTS places_type_idx ON places(place_type);`,
869
- `CREATE INDEX IF NOT EXISTS places_parent_idx ON places(parent_id);`,
870
- `CREATE INDEX IF NOT EXISTS places_sort_order_idx ON places(project_id, sort_order);`,
871
- // memory_places table
872
- `CREATE TABLE IF NOT EXISTS memory_places (
873
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
874
- memory_id UUID REFERENCES memories(id) ON DELETE CASCADE NOT NULL,
875
- place_id UUID REFERENCES places(id) ON DELETE CASCADE NOT NULL,
876
- is_manual BOOLEAN DEFAULT FALSE,
877
- rule_id UUID,
878
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
879
- );`,
880
- `CREATE INDEX IF NOT EXISTS memory_places_memory_idx ON memory_places(memory_id);`,
881
- `CREATE INDEX IF NOT EXISTS memory_places_place_idx ON memory_places(place_id);`,
882
- // place_rules table
883
- `CREATE TABLE IF NOT EXISTS place_rules (
884
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
885
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE NOT NULL,
886
- name TEXT NOT NULL,
887
- place_type TEXT NOT NULL,
888
- match_tool TEXT,
889
- match_keyword TEXT,
890
- match_tag TEXT,
891
- match_memory_type TEXT,
892
- priority INTEGER DEFAULT 0,
893
- enabled BOOLEAN DEFAULT TRUE,
894
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
895
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
896
- );`,
897
- `CREATE INDEX IF NOT EXISTS place_rules_project_idx ON place_rules(project_id);`,
898
- `CREATE INDEX IF NOT EXISTS place_rules_type_idx ON place_rules(place_type);`,
899
- // Belief Systems - Derived Beliefs from Memory (v1.3.0+)
900
- `CREATE TABLE IF NOT EXISTS beliefs (
901
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
902
- project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
903
- belief_type TEXT NOT NULL,
904
- statement TEXT NOT NULL,
905
- normalized_key TEXT NOT NULL,
906
- confidence REAL DEFAULT 0.5,
907
- belief_decay_rate INTEGER DEFAULT 30,
908
- last_confirmed_at TIMESTAMPTZ,
909
- source_count INTEGER DEFAULT 1,
910
- status TEXT DEFAULT 'active',
911
- reason TEXT,
912
- context TEXT,
913
- evidence_summary TEXT,
914
- metadata JSONB,
915
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
916
- updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
917
- UNIQUE(project_id, normalized_key)
918
- );`,
919
- `CREATE INDEX IF NOT EXISTS beliefs_project_idx ON beliefs(project_id);`,
920
- `CREATE INDEX IF NOT EXISTS beliefs_type_idx ON beliefs(belief_type);`,
921
- `CREATE INDEX IF NOT EXISTS beliefs_status_idx ON beliefs(status);`,
922
- `CREATE INDEX IF NOT EXISTS beliefs_confidence_idx ON beliefs(confidence);`,
923
- `CREATE TABLE IF NOT EXISTS belief_memory_sources (
924
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
925
- belief_id UUID REFERENCES beliefs(id) ON DELETE CASCADE,
926
- memory_id UUID REFERENCES memories(id) ON DELETE CASCADE,
927
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
928
- UNIQUE(belief_id, memory_id)
929
- );`,
930
- `CREATE INDEX IF NOT EXISTS belief_sources_belief_idx ON belief_memory_sources(belief_id);`,
931
- `CREATE INDEX IF NOT EXISTS belief_sources_memory_idx ON belief_memory_sources(memory_id);`,
932
- `CREATE TABLE IF NOT EXISTS belief_edges (
933
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
934
- from_belief_id UUID REFERENCES beliefs(id) ON DELETE CASCADE,
935
- to_belief_id UUID REFERENCES beliefs(id) ON DELETE CASCADE,
936
- edge_type TEXT NOT NULL,
937
- metadata JSONB,
938
- created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
939
- UNIQUE(from_belief_id, to_belief_id, edge_type)
940
- );`,
941
- `CREATE INDEX IF NOT EXISTS belief_edges_from_idx ON belief_edges(from_belief_id);`,
942
- `CREATE INDEX IF NOT EXISTS belief_edges_to_idx ON belief_edges(to_belief_id);`
943
- ];
944
- /**
945
- * Ensure the data directory exists (.squish folder in project root)
946
- */
947
- export async function ensureDataDirectory() {
948
- try {
949
- const dataDir = getDataDir();
950
- if (!existsSync(dataDir)) {
951
- mkdirSync(dataDir, { recursive: true });
952
- logger.info(`Created data directory at: ${dataDir}`);
953
- }
954
- }
955
- catch (error) {
956
- logger.error('Failed to create data directory', error);
957
- throw new Error(`Failed to initialize data directory: ${error instanceof Error ? error.message : 'Unknown error'}`);
958
- }
959
- }
960
- export async function ensureSqliteSchema(sqlite) {
961
- // Run schema creation FIRST (creates tables with latest schema).
962
- // Older installs may fail partway through when later indexes/triggers refer
963
- // to columns that migrations have not added yet, so tolerate that first pass.
964
- execSqliteSchema(sqlite, { tolerant: true });
965
- // Initialize schema version tracking
966
- await initializeSchemaVersionTable(sqlite);
967
- // Run migrations AFTER (for existing databases that need column additions)
968
- await runSqliteMigrations(sqlite);
969
- // Replay the full schema after migrations so deferred indexes/triggers land.
970
- execSqliteSchema(sqlite, { tolerant: false });
971
- }
972
- // Schema versions for tracking
973
- const SCHEMA_VERSIONS = [
974
- { version: '1.2.0-base', description: 'Initial v1.2.0 schema with schema_versions table' },
975
- { version: '1.2.0-place-sort', description: 'Add place_sort_order column to places' },
976
- { version: '1.2.0-mem-place', description: 'Add place_sort_order to memories and memory_places' },
977
- { version: '1.2.0-agent-prefs', description: 'Add agent_preferences table for agent evolution' },
978
- ];
979
- async function initializeSchemaVersionTable(sqlite) {
980
- // Get existing versions
981
- const existingVersions = sqlite.prepare("SELECT version FROM _schema_versions").all();
982
- const appliedVersions = new Set(existingVersions.map(v => v.version));
983
- // Insert any missing versions
984
- for (const { version, description } of SCHEMA_VERSIONS) {
985
- if (!appliedVersions.has(version)) {
986
- try {
987
- sqlite.prepare("INSERT INTO _schema_versions (version, description) VALUES (?, ?)").run(version, description);
988
- logger.info(`Schema version ${version} recorded`);
989
- }
990
- catch (error) {
991
- // Ignore duplicate errors
992
- const msg = error instanceof Error ? error.message : String(error);
993
- if (!msg.includes('UNIQUE constraint failed')) {
994
- logger.warn(`Could not record schema version ${version}: ${msg}`);
995
- }
996
- }
997
- }
998
- }
999
- }
1000
- export async function getSchemaVersion(sqlite) {
1001
- const result = sqlite.prepare("SELECT version FROM _schema_versions ORDER BY applied_at DESC LIMIT 1").get();
1002
- return result?.version || null;
1003
- }
1004
- export async function runMigrationsForVersion(sqlite, targetVersion) {
1005
- const currentVersion = await getSchemaVersion(sqlite);
1006
- logger.info(`Current schema version: ${currentVersion}, target: ${targetVersion}`);
1007
- // Run ensureSqliteSchema which handles all migrations
1008
- await runSqliteMigrations(sqlite);
1009
- }
1010
- async function runSqliteMigrations(sqlite) {
1011
- // All migrations are in separate files - just run them all
1012
- await runAllMigrations(sqlite);
1013
- }
1014
- function execSqliteSchema(sqlite, options) {
1015
- try {
1016
- sqlite.exec(sqliteSchemaSql);
1017
- }
1018
- catch (error) {
1019
- const message = error instanceof Error ? error.message : String(error);
1020
- const isRecoverable = message.includes('no such column') ||
1021
- message.includes('has no column named');
1022
- if (options.tolerant && isRecoverable) {
1023
- logger.debug(`Deferred schema statement until after migrations: ${message}`);
1024
- return;
1025
- }
1026
- throw error;
1027
- }
1028
- }
1029
- export async function ensurePostgresSchema(pool) {
1030
- for (const statement of postgresStatements) {
1031
- await pool.query(statement);
1032
- }
1033
- }
1034
- //# sourceMappingURL=bootstrap.js.map