squish-memory 1.0.2 → 1.2.0

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 (704) hide show
  1. package/.env.example +146 -0
  2. package/CHANGELOG.md +202 -0
  3. package/README.md +192 -287
  4. package/{scripts → bin}/dependency-manager.mjs +217 -217
  5. package/{scripts → bin}/detect-clients.mjs +78 -78
  6. package/bin/install-interactive.mjs +321 -0
  7. package/bin/squish-mcp.mjs +46 -0
  8. package/bin/squish.mjs +33 -0
  9. package/config/mcp-migration-map.json +1 -6
  10. package/config/mcp-mode-semantics.json +10 -12
  11. package/config/mcp-remote-auth.json +3 -26
  12. package/config/mcp-universal.schema.json +5 -35
  13. package/config/settings.json +78 -22
  14. package/config.js +5 -0
  15. package/config.ts +218 -0
  16. package/core/adapters/config/claude-code.ts +133 -0
  17. package/core/adapters/config/cursor.ts +90 -0
  18. package/core/adapters/config/opencode.ts +89 -0
  19. package/core/adapters/config/windsurf.ts +90 -0
  20. package/core/adapters/index.ts +102 -0
  21. package/core/adapters/timeline.ts +116 -0
  22. package/core/adapters/types.ts +166 -0
  23. package/core/agent-preferences.ts +140 -0
  24. package/core/algorithms/analytics/token-estimator.ts +216 -0
  25. package/core/algorithms/detection/hash-filters.ts +260 -0
  26. package/core/algorithms/detection/semantic-ranker.ts +194 -0
  27. package/core/algorithms/detection/two-stage-detector.ts +421 -0
  28. package/core/algorithms/handlers/approve-merge.ts +215 -0
  29. package/core/algorithms/handlers/detect-duplicates.ts +192 -0
  30. package/core/algorithms/handlers/get-stats.ts +132 -0
  31. package/core/algorithms/handlers/list-proposals.ts +130 -0
  32. package/core/algorithms/handlers/preview-merge.ts +139 -0
  33. package/core/algorithms/handlers/reject-merge.ts +93 -0
  34. package/core/algorithms/handlers/reverse-merge.ts +155 -0
  35. package/core/algorithms/index.ts +39 -0
  36. package/core/algorithms/operations/cache-maintenance.ts +182 -0
  37. package/core/algorithms/safety/safety-checks.ts +256 -0
  38. package/core/algorithms/strategies/merge-strategies.ts +381 -0
  39. package/core/algorithms/types.ts +140 -0
  40. package/core/algorithms/utils/response-builder.ts +61 -0
  41. package/core/associations.ts +363 -0
  42. package/core/beliefs/decay.ts +289 -0
  43. package/core/beliefs/extractor.ts +131 -0
  44. package/core/beliefs/store.ts +557 -0
  45. package/core/beliefs/types.ts +38 -0
  46. package/core/commands/mcp-server.ts +5 -0
  47. package/core/compression.ts +177 -0
  48. package/core/config.js +2 -0
  49. package/core/consolidation.ts +330 -0
  50. package/core/context/agent-context.ts +388 -0
  51. package/core/context/context-paging.ts +449 -0
  52. package/core/context/context-window.ts +234 -0
  53. package/core/context/context.ts +35 -0
  54. package/core/embeddings/embeddings.ts +616 -0
  55. package/core/embeddings/google-multimodal.ts +200 -0
  56. package/core/embeddings/local-embeddings.ts +12 -0
  57. package/core/embeddings/qmd-client.ts +495 -0
  58. package/core/embeddings/transformers-local.ts +261 -0
  59. package/core/embeddings.js +4 -0
  60. package/core/error-handling.ts +206 -0
  61. package/core/external +219 -0
  62. package/core/graph/entity-deduplicator.ts +232 -0
  63. package/core/graph/graph-builder.ts +257 -0
  64. package/core/graph/graph-traversal.ts +490 -0
  65. package/core/graph/index.ts +24 -0
  66. package/core/graph/llm-entity-extractor.ts +402 -0
  67. package/core/graph/multi-hop-retrieval.ts +317 -0
  68. package/core/graph/relationship-extractor.ts +465 -0
  69. package/core/hooks/agent-hooks.ts +653 -0
  70. package/core/hooks/auto-tagger.ts +149 -0
  71. package/core/hooks/capture-filter.ts +169 -0
  72. package/core/hot-cache.ts +388 -0
  73. package/core/index.ts +10 -0
  74. package/core/ingestion/agent-memory.ts +167 -0
  75. package/core/ingestion/core-memory.ts +326 -0
  76. package/core/ingestion/learnings.ts +260 -0
  77. package/core/ingestion/signal-engine.ts +266 -0
  78. package/core/integrations/obsidian-vault.ts +197 -0
  79. package/core/layers/generator.ts +115 -0
  80. package/core/lib/db-client.ts +168 -0
  81. package/core/lib/parse-embedding.ts +59 -0
  82. package/core/lib/schemas.ts +102 -0
  83. package/core/lib/types.ts +49 -0
  84. package/core/lib/utils.ts +151 -0
  85. package/core/lib/validation.ts +180 -0
  86. package/core/lifecycle.ts +353 -0
  87. package/core/logger.ts +59 -0
  88. package/core/memory/bridge-discovery.ts +395 -0
  89. package/core/memory/categorizer.ts +390 -0
  90. package/core/memory/conflict-detector.ts +62 -0
  91. package/core/memory/consolidation.ts +372 -0
  92. package/core/memory/context-collector.ts +75 -0
  93. package/core/memory/contradiction-resolver.ts +494 -0
  94. package/core/memory/edit-workflow.ts +174 -0
  95. package/core/memory/entity-extractor.ts +426 -0
  96. package/core/memory/entity-resolver.ts +89 -0
  97. package/core/memory/explain.ts +112 -0
  98. package/core/memory/fact-deriver.ts +300 -0
  99. package/core/memory/fact-extractor.ts +120 -0
  100. package/core/memory/feedback-tracker.ts +200 -0
  101. package/core/memory/hooks.ts +230 -0
  102. package/core/memory/hybrid-retrieval.ts +65 -0
  103. package/core/memory/hybrid-scorer.ts +325 -0
  104. package/core/memory/hybrid-search.ts +748 -0
  105. package/core/memory/importance.ts +319 -0
  106. package/core/memory/index.ts +11 -0
  107. package/core/memory/loader.ts +178 -0
  108. package/core/memory/markdown/markdown-storage.ts +318 -0
  109. package/core/memory/memories.ts +565 -0
  110. package/core/memory/memory-lifecycle.ts +51 -0
  111. package/core/memory/memory-manager.ts +53 -0
  112. package/core/memory/migrate.ts +173 -0
  113. package/core/memory/normalization.ts +30 -0
  114. package/core/memory/path-strengthener.ts +211 -0
  115. package/core/memory/progressive-disclosure.ts +392 -0
  116. package/core/memory/query-processor.ts +130 -0
  117. package/core/memory/query-rewriter.ts +153 -0
  118. package/core/memory/response-analyzer.ts +81 -0
  119. package/core/memory/retrieval-feedback.ts +276 -0
  120. package/core/memory/serialization.ts +83 -0
  121. package/core/memory/stale-cleaner.ts +147 -0
  122. package/core/memory/stats.ts +181 -0
  123. package/core/memory/telemetry.ts +392 -0
  124. package/core/memory/temporal-facts.ts +356 -0
  125. package/core/memory/temporal-parser.ts +477 -0
  126. package/core/memory/trigger-detector.ts +104 -0
  127. package/core/memory/write-gate.ts +288 -0
  128. package/core/places/index.ts +14 -0
  129. package/core/places/memory-places.ts +339 -0
  130. package/core/places/places.ts +406 -0
  131. package/core/places/rules.ts +308 -0
  132. package/core/places/walking.ts +192 -0
  133. package/core/projects +89 -0
  134. package/core/projects.ts +131 -0
  135. package/core/redis.ts +82 -0
  136. package/core/responses.ts +187 -0
  137. package/core/runtime/trust-report.ts +195 -0
  138. package/core/runtime/trust-state.ts +360 -0
  139. package/core/scheduler/cron-scheduler.ts +581 -0
  140. package/core/scheduler/heartbeat.ts +91 -0
  141. package/core/scheduler/index.ts +8 -0
  142. package/core/scheduler/job-runner.ts +197 -0
  143. package/core/search/conversations.ts +166 -0
  144. package/core/search/entities.ts +46 -0
  145. package/core/search/folder-context.ts +154 -0
  146. package/core/search/graph-boost.ts +22 -0
  147. package/core/search/index.ts +4 -0
  148. package/core/search/qmd-wrapper.ts +84 -0
  149. package/core/security/encrypt.ts +51 -0
  150. package/core/security/governance.ts +102 -0
  151. package/core/security/privacy.ts +108 -0
  152. package/core/security/secret-detector.ts +122 -0
  153. package/core/session/auto-load.ts +160 -0
  154. package/core/session/entity-tracker.ts +363 -0
  155. package/core/session/index.ts +7 -0
  156. package/core/session/reference-resolver.ts +158 -0
  157. package/core/session/self-iteration-job.ts +478 -0
  158. package/core/session/session-hooks.ts +69 -0
  159. package/core/session/types.ts +36 -0
  160. package/core/session/working-set.ts +275 -0
  161. package/core/snapshots/cleanup.ts +13 -0
  162. package/core/snapshots/comparison.ts +59 -0
  163. package/core/snapshots/creation.ts +139 -0
  164. package/core/snapshots/retrieval.ts +44 -0
  165. package/core/snapshots/stats.ts +63 -0
  166. package/core/storage/cache.ts +241 -0
  167. package/core/storage/database.ts +23 -0
  168. package/core/summarization/cleanup.ts +13 -0
  169. package/core/summarization/queries.ts +32 -0
  170. package/core/summarization/stats.ts +64 -0
  171. package/core/summarization/strategies.ts +52 -0
  172. package/core/summarization.ts +248 -0
  173. package/core/temporal-facts.ts +244 -0
  174. package/core/tracing/collector.ts +470 -0
  175. package/core/tracing/visualizer.ts +195 -0
  176. package/core/utils/cleanup-operations.ts +50 -0
  177. package/core/utils/content-extraction.ts +95 -0
  178. package/core/utils/filter-builder.ts +56 -0
  179. package/core/utils/history-traversal.ts +63 -0
  180. package/core/utils/memory-operations.ts +56 -0
  181. package/core/utils/query-operations.ts +83 -0
  182. package/core/utils/summarization-helpers.ts +45 -0
  183. package/core/utils/temporal-queries.ts +39 -0
  184. package/core/utils/vector-operations.ts +135 -0
  185. package/core/utils/version-management.ts +74 -0
  186. package/core/worker.ts +324 -0
  187. package/db/adapter.ts +215 -0
  188. package/db/bootstrap.ts +1055 -0
  189. package/db/drizzle/migrations/0000_needy_cerebro.sql +402 -0
  190. package/db/drizzle/migrations/meta/0000_snapshot.json +3451 -0
  191. package/db/drizzle/migrations/meta/_journal.json +13 -0
  192. package/db/drizzle/schema-sqlite.ts +1032 -0
  193. package/db/drizzle/schema.ts +1128 -0
  194. package/db/drizzle.config.ts +12 -0
  195. package/db/index.ts +83 -0
  196. package/db/init.sql +5 -0
  197. package/db/migrations/associations.ts +35 -0
  198. package/db/migrations/beliefs.ts +89 -0
  199. package/db/migrations/core-memory.ts +35 -0
  200. package/db/migrations/fts.ts +59 -0
  201. package/db/migrations/index.ts +54 -0
  202. package/db/migrations/indexes.ts +36 -0
  203. package/db/migrations/learnings.ts +34 -0
  204. package/db/migrations/maintenance.ts +68 -0
  205. package/db/migrations/memories.ts +22 -0
  206. package/db/migrations/memory-places.ts +35 -0
  207. package/db/migrations/places.ts +49 -0
  208. package/db/migrations/projects.ts +21 -0
  209. package/db/migrations/tier-conversion.ts +24 -0
  210. package/db/neon.ts +22 -0
  211. package/db/schema/beliefs.ts +50 -0
  212. package/db/schema/generator.ts +159 -0
  213. package/db/schema/index.ts +58 -0
  214. package/db/schema/learnings.ts +32 -0
  215. package/db/schema/memories.ts +83 -0
  216. package/db/schema/projects.ts +33 -0
  217. package/db/schema.ts +13 -0
  218. package/db/supabase.ts +27 -0
  219. package/dist/config.d.ts +61 -14
  220. package/dist/config.js +159 -139
  221. package/dist/core/adapters/config/claude-code.d.ts +45 -0
  222. package/dist/core/adapters/config/claude-code.js +113 -0
  223. package/dist/core/adapters/config/cursor.d.ts +26 -0
  224. package/dist/core/adapters/config/cursor.js +74 -0
  225. package/dist/core/adapters/config/opencode.d.ts +23 -0
  226. package/dist/core/adapters/config/opencode.js +73 -0
  227. package/dist/core/adapters/config/windsurf.d.ts +26 -0
  228. package/dist/core/adapters/config/windsurf.js +74 -0
  229. package/dist/core/adapters/index.d.ts +45 -0
  230. package/dist/core/adapters/index.js +84 -0
  231. package/dist/core/adapters/scripts/install-adapter.d.ts +19 -0
  232. package/dist/core/adapters/scripts/install-adapter.js +149 -0
  233. package/dist/core/adapters/timeline.d.ts +23 -0
  234. package/dist/core/adapters/timeline.js +88 -0
  235. package/dist/core/adapters/types.d.ts +137 -0
  236. package/dist/core/adapters/types.js +50 -0
  237. package/dist/core/agent-preferences.d.ts +16 -0
  238. package/dist/core/agent-preferences.js +124 -0
  239. package/dist/{algorithms → core/algorithms}/analytics/token-estimator.d.ts +1 -1
  240. package/dist/{algorithms → core/algorithms}/analytics/token-estimator.js +3 -3
  241. package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.d.ts +1 -1
  242. package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.js +1 -1
  243. package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.d.ts +1 -1
  244. package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.js +7 -10
  245. package/dist/{algorithms → core/algorithms}/handlers/approve-merge.js +4 -4
  246. package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.js +3 -3
  247. package/dist/{algorithms → core/algorithms}/handlers/get-stats.js +3 -3
  248. package/dist/{algorithms → core/algorithms}/handlers/list-proposals.js +3 -3
  249. package/dist/{algorithms → core/algorithms}/handlers/preview-merge.js +3 -3
  250. package/dist/{algorithms → core/algorithms}/handlers/reject-merge.js +3 -3
  251. package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.js +3 -3
  252. package/dist/core/algorithms/index.d.ts +21 -0
  253. package/dist/core/algorithms/index.js +26 -0
  254. package/dist/core/algorithms/operations/cache-maintenance.d.ts +12 -0
  255. package/dist/core/algorithms/operations/cache-maintenance.js +157 -0
  256. package/dist/{algorithms → core/algorithms}/safety/safety-checks.d.ts +2 -6
  257. package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.d.ts +19 -1
  258. package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.js +74 -123
  259. package/dist/core/algorithms/types.d.ts +125 -0
  260. package/dist/core/algorithms/types.js +5 -0
  261. package/dist/core/associations.d.ts +3 -2
  262. package/dist/core/associations.js +37 -2
  263. package/dist/core/autosave.d.ts +19 -0
  264. package/dist/core/autosave.js +16 -0
  265. package/dist/core/beliefs/decay.d.ts +27 -0
  266. package/dist/core/beliefs/decay.js +217 -0
  267. package/dist/core/beliefs/extractor.d.ts +9 -0
  268. package/dist/core/beliefs/extractor.js +113 -0
  269. package/dist/core/beliefs/store.d.ts +46 -0
  270. package/dist/core/beliefs/store.js +466 -0
  271. package/dist/core/beliefs/types.d.ts +28 -0
  272. package/dist/core/beliefs/types.js +2 -0
  273. package/dist/core/commands/mcp-server.d.ts +2 -0
  274. package/dist/core/commands/mcp-server.js +6 -0
  275. package/dist/core/commands/remember.d.ts +24 -0
  276. package/dist/core/commands/remember.js +144 -0
  277. package/dist/core/compression.d.ts +45 -0
  278. package/dist/core/compression.js +160 -0
  279. package/dist/core/context/agent-context.d.ts +106 -0
  280. package/dist/core/context/agent-context.js +274 -0
  281. package/dist/core/{context-paging.d.ts → context/context-paging.d.ts} +2 -12
  282. package/dist/core/{context-paging.js → context/context-paging.js} +19 -39
  283. package/dist/core/context/context-window.d.ts +40 -0
  284. package/dist/core/context/context-window.js +177 -0
  285. package/dist/core/context/context.js +22 -0
  286. package/dist/core/embeddings/embeddings.d.ts +29 -0
  287. package/dist/core/embeddings/embeddings.js +546 -0
  288. package/dist/core/embeddings/google-multimodal.js +6 -2
  289. package/dist/core/embeddings/local-embeddings.d.ts +11 -0
  290. package/dist/core/embeddings/local-embeddings.js +11 -0
  291. package/dist/core/embeddings/qmd-client.js +1 -1
  292. package/dist/core/embeddings/transformers-local.d.ts +64 -0
  293. package/dist/core/embeddings/transformers-local.js +213 -0
  294. package/dist/core/embeddings.d.ts +1 -28
  295. package/dist/core/embeddings.js +2 -401
  296. package/dist/core/error-handling.d.ts +63 -0
  297. package/dist/core/error-handling.js +173 -0
  298. package/dist/core/graph/entity-deduplicator.d.ts +24 -0
  299. package/dist/core/graph/entity-deduplicator.js +183 -0
  300. package/dist/core/graph/graph-builder.d.ts +46 -0
  301. package/dist/core/graph/graph-builder.js +174 -0
  302. package/dist/core/graph/graph-traversal.d.ts +80 -0
  303. package/dist/core/graph/graph-traversal.js +315 -0
  304. package/dist/core/graph/index.d.ts +19 -0
  305. package/dist/core/graph/index.js +13 -0
  306. package/dist/core/graph/llm-entity-extractor.d.ts +49 -0
  307. package/dist/core/graph/llm-entity-extractor.js +313 -0
  308. package/dist/core/graph/multi-hop-retrieval.d.ts +48 -0
  309. package/dist/core/graph/multi-hop-retrieval.js +215 -0
  310. package/dist/core/graph/relationship-extractor.d.ts +48 -0
  311. package/dist/core/graph/relationship-extractor.js +351 -0
  312. package/dist/core/hooks/agent-hooks.d.ts +83 -0
  313. package/dist/core/hooks/agent-hooks.js +521 -0
  314. package/dist/core/hooks/auto-tagger.d.ts +19 -0
  315. package/dist/core/hooks/auto-tagger.js +155 -0
  316. package/dist/core/hooks/capture-filter.d.ts +41 -0
  317. package/dist/core/hooks/capture-filter.js +128 -0
  318. package/dist/core/hot-cache.d.ts +86 -0
  319. package/dist/core/hot-cache.js +285 -0
  320. package/dist/core/index.d.ts +9 -9
  321. package/dist/core/index.js +9 -12
  322. package/dist/core/{agent-memory.js → ingestion/agent-memory.js} +5 -7
  323. package/dist/core/{core-memory.d.ts → ingestion/core-memory.d.ts} +2 -2
  324. package/dist/core/{core-memory.js → ingestion/core-memory.js} +7 -7
  325. package/dist/core/ingestion/learnings.d.ts +57 -0
  326. package/dist/core/ingestion/learnings.js +205 -0
  327. package/dist/core/ingestion/signal-engine.d.ts +41 -0
  328. package/dist/core/ingestion/signal-engine.js +201 -0
  329. package/dist/core/integrations/obsidian-vault.d.ts +31 -0
  330. package/dist/core/integrations/obsidian-vault.js +156 -0
  331. package/dist/core/lib/db-client.d.ts +114 -0
  332. package/dist/core/lib/db-client.js +130 -0
  333. package/dist/core/lib/parse-embedding.d.ts +9 -0
  334. package/dist/core/lib/parse-embedding.js +58 -0
  335. package/dist/core/lib/schemas.d.ts +132 -0
  336. package/dist/core/lib/schemas.js +87 -0
  337. package/dist/core/lib/types.d.ts +45 -0
  338. package/dist/core/lib/types.js +6 -0
  339. package/dist/core/{utils.d.ts → lib/utils.d.ts} +5 -0
  340. package/dist/core/lib/utils.js +145 -0
  341. package/dist/core/lib/validation.d.ts +38 -0
  342. package/dist/core/lib/validation.js +151 -0
  343. package/dist/core/lifecycle.d.ts +7 -1
  344. package/dist/core/lifecycle.js +152 -42
  345. package/dist/core/logger.d.ts +1 -0
  346. package/dist/core/logger.js +13 -1
  347. package/dist/core/mcp/tools.d.ts +0 -2
  348. package/dist/core/mcp/tools.js +35 -90
  349. package/dist/core/mcp/types.d.ts +25 -253
  350. package/dist/core/mcp/types.js +2 -2
  351. package/dist/core/memory/categorizer.js +2 -0
  352. package/dist/core/memory/conflict-detector.js +1 -1
  353. package/dist/core/memory/consolidation.d.ts +1 -10
  354. package/dist/core/memory/consolidation.js +4 -39
  355. package/dist/core/memory/context-collector.js +1 -1
  356. package/dist/core/memory/edit-workflow.js +1 -1
  357. package/dist/core/memory/entity-extractor.d.ts +4 -0
  358. package/dist/core/memory/entity-extractor.js +30 -16
  359. package/dist/core/memory/entity-resolver.js +7 -7
  360. package/dist/core/memory/explain.d.ts +18 -0
  361. package/dist/core/memory/explain.js +92 -0
  362. package/dist/core/memory/fact-deriver.d.ts +31 -0
  363. package/dist/core/memory/fact-deriver.js +236 -0
  364. package/dist/core/memory/fact-extractor.js +12 -12
  365. package/dist/core/memory/feedback-tracker.js +1 -1
  366. package/dist/core/memory/hooks.d.ts +88 -0
  367. package/dist/core/memory/hooks.js +174 -0
  368. package/dist/core/memory/hybrid-retrieval.d.ts +14 -16
  369. package/dist/core/memory/hybrid-retrieval.js +25 -127
  370. package/dist/core/memory/hybrid-scorer.js +6 -23
  371. package/dist/core/memory/hybrid-search.d.ts +9 -11
  372. package/dist/core/memory/hybrid-search.js +496 -273
  373. package/dist/core/memory/importance.d.ts +2 -24
  374. package/dist/core/memory/importance.js +7 -91
  375. package/dist/core/memory/index.d.ts +1 -0
  376. package/dist/core/memory/index.js +1 -0
  377. package/dist/core/memory/loader.d.ts +31 -0
  378. package/dist/core/memory/loader.js +141 -0
  379. package/dist/core/memory/markdown/markdown-storage.d.ts +72 -0
  380. package/dist/core/memory/markdown/markdown-storage.js +243 -0
  381. package/dist/core/memory/memories.d.ts +23 -19
  382. package/dist/core/memory/memories.js +243 -228
  383. package/dist/core/memory/memory-lifecycle.d.ts +8 -0
  384. package/dist/core/memory/memory-lifecycle.js +47 -0
  385. package/dist/core/memory/migrate.d.ts +21 -0
  386. package/dist/core/memory/migrate.js +134 -0
  387. package/dist/core/memory/normalization.d.ts +7 -0
  388. package/dist/core/memory/normalization.js +26 -0
  389. package/dist/core/memory/path-strengthener.d.ts +39 -0
  390. package/dist/core/memory/path-strengthener.js +150 -0
  391. package/dist/core/memory/progressive-disclosure.js +1 -1
  392. package/dist/core/memory/query-processor.js +37 -3
  393. package/dist/core/memory/query-rewriter.js +9 -9
  394. package/dist/core/memory/retrieval-feedback.d.ts +70 -0
  395. package/dist/core/memory/retrieval-feedback.js +213 -0
  396. package/dist/core/memory/serialization.d.ts +4 -0
  397. package/dist/core/memory/serialization.js +49 -0
  398. package/dist/core/memory/stale-cleaner.d.ts +26 -0
  399. package/dist/core/memory/stale-cleaner.js +97 -0
  400. package/dist/core/memory/stats.d.ts +15 -0
  401. package/dist/core/memory/stats.js +69 -13
  402. package/dist/core/memory/temporal-facts.js +21 -0
  403. package/dist/core/memory/trigger-detector.d.ts +8 -1
  404. package/dist/core/memory/trigger-detector.js +42 -5
  405. package/dist/core/memory/write-gate.js +1 -1
  406. package/dist/core/places/index.d.ts +14 -0
  407. package/dist/core/places/index.js +14 -0
  408. package/dist/core/places/memory-places.d.ts +68 -0
  409. package/dist/core/places/memory-places.js +261 -0
  410. package/dist/core/places/places.d.ts +88 -0
  411. package/dist/core/places/places.js +314 -0
  412. package/dist/core/places/rules.d.ts +74 -0
  413. package/dist/core/places/rules.js +240 -0
  414. package/dist/core/places/walking.d.ts +56 -0
  415. package/dist/core/places/walking.js +121 -0
  416. package/dist/core/projects.d.ts +5 -0
  417. package/dist/core/projects.js +47 -18
  418. package/dist/core/responses.d.ts +96 -0
  419. package/dist/core/responses.js +122 -0
  420. package/dist/core/runtime/trust-report.d.ts +102 -0
  421. package/dist/core/runtime/trust-report.js +107 -0
  422. package/dist/core/runtime/trust-state.d.ts +12 -0
  423. package/dist/core/runtime/trust-state.js +309 -0
  424. package/dist/core/scheduler/cron-scheduler.d.ts +1 -1
  425. package/dist/core/scheduler/cron-scheduler.js +193 -10
  426. package/dist/core/scheduler/index.d.ts +1 -1
  427. package/dist/core/scheduler/index.js +1 -1
  428. package/dist/core/scheduler/job-runner.js +2 -2
  429. package/dist/core/search/conversations.js +40 -42
  430. package/dist/core/search/entities.js +6 -9
  431. package/dist/core/search/graph-boost.d.ts +7 -0
  432. package/dist/core/search/graph-boost.js +23 -0
  433. package/dist/core/search/qmd-wrapper.d.ts +36 -0
  434. package/dist/core/search/qmd-wrapper.js +58 -0
  435. package/dist/core/security/encrypt.d.ts +6 -0
  436. package/dist/core/security/encrypt.js +47 -0
  437. package/dist/core/{governance.d.ts → security/governance.d.ts} +6 -1
  438. package/dist/core/security/governance.js +79 -0
  439. package/dist/core/session/auto-load.js +34 -9
  440. package/dist/core/session/entity-tracker.d.ts +62 -0
  441. package/dist/core/session/entity-tracker.js +287 -0
  442. package/dist/core/session/index.d.ts +1 -1
  443. package/dist/core/session/index.js +1 -1
  444. package/dist/core/session/reference-resolver.d.ts +26 -0
  445. package/dist/core/session/reference-resolver.js +121 -0
  446. package/dist/core/{session-hooks → session}/self-iteration-job.d.ts +15 -0
  447. package/dist/core/{session-hooks → session}/self-iteration-job.js +195 -90
  448. package/dist/core/session/working-set.d.ts +50 -0
  449. package/dist/core/session/working-set.js +212 -0
  450. package/dist/core/snapshots/creation.d.ts +2 -8
  451. package/dist/core/snapshots/creation.js +3 -12
  452. package/dist/core/{cache.js → storage/cache.js} +2 -2
  453. package/dist/core/utils/memory-operations.js +1 -1
  454. package/dist/core/utils/summarization-helpers.d.ts +0 -4
  455. package/dist/core/utils/summarization-helpers.js +1 -6
  456. package/dist/core/utils/vector-operations.d.ts +71 -0
  457. package/dist/core/utils/vector-operations.js +129 -0
  458. package/dist/db/adapter.d.ts +3 -3
  459. package/dist/db/adapter.js +99 -88
  460. package/dist/db/bootstrap.d.ts +2 -0
  461. package/dist/db/bootstrap.js +921 -674
  462. package/dist/{drizzle → db/drizzle}/schema-sqlite.d.ts +775 -25
  463. package/dist/{drizzle → db/drizzle}/schema-sqlite.js +170 -24
  464. package/dist/{drizzle → db/drizzle}/schema.d.ts +731 -32
  465. package/dist/{drizzle → db/drizzle}/schema.js +192 -32
  466. package/dist/db/drizzle.config.d.ts +3 -0
  467. package/dist/db/drizzle.config.js +12 -0
  468. package/dist/db/index.d.ts +1 -5
  469. package/dist/db/index.js +51 -8
  470. package/dist/db/migrations/associations.d.ts +6 -0
  471. package/dist/db/migrations/associations.js +29 -0
  472. package/dist/db/migrations/beliefs.d.ts +10 -0
  473. package/dist/db/migrations/beliefs.js +76 -0
  474. package/dist/db/migrations/core-memory.d.ts +6 -0
  475. package/dist/db/migrations/core-memory.js +29 -0
  476. package/dist/db/migrations/fts.d.ts +6 -0
  477. package/dist/db/migrations/fts.js +52 -0
  478. package/dist/db/migrations/index.d.ts +25 -0
  479. package/dist/db/migrations/index.js +51 -0
  480. package/dist/db/migrations/indexes.d.ts +6 -0
  481. package/dist/db/migrations/indexes.js +30 -0
  482. package/dist/db/migrations/learnings.d.ts +7 -0
  483. package/dist/db/migrations/learnings.js +26 -0
  484. package/dist/db/migrations/maintenance.d.ts +6 -0
  485. package/dist/db/migrations/maintenance.js +61 -0
  486. package/dist/db/migrations/memories.d.ts +7 -0
  487. package/dist/db/migrations/memories.js +16 -0
  488. package/dist/db/migrations/memory-places.d.ts +6 -0
  489. package/dist/db/migrations/memory-places.js +29 -0
  490. package/dist/db/migrations/places.d.ts +6 -0
  491. package/dist/db/migrations/places.js +43 -0
  492. package/dist/db/migrations/projects.d.ts +3 -0
  493. package/dist/db/migrations/projects.js +13 -0
  494. package/dist/db/migrations/tier-conversion.d.ts +7 -0
  495. package/dist/db/migrations/tier-conversion.js +20 -0
  496. package/dist/db/neon.d.ts +8 -0
  497. package/dist/db/neon.js +20 -0
  498. package/dist/db/schema/beliefs.d.ts +9 -0
  499. package/dist/db/schema/beliefs.js +46 -0
  500. package/dist/db/schema/generator.d.ts +38 -0
  501. package/dist/db/schema/generator.js +108 -0
  502. package/dist/db/schema/index.d.ts +39 -0
  503. package/dist/db/schema/index.js +51 -0
  504. package/dist/db/schema/learnings.d.ts +7 -0
  505. package/dist/db/schema/learnings.js +30 -0
  506. package/dist/db/schema/memories.d.ts +7 -0
  507. package/dist/db/schema/memories.js +81 -0
  508. package/dist/db/schema/projects.d.ts +4 -0
  509. package/dist/db/schema/projects.js +31 -0
  510. package/dist/db/schema/tables/context-sessions.d.ts +9 -0
  511. package/dist/db/schema/tables/context-sessions.js +37 -0
  512. package/dist/db/schema/tables/conversations.d.ts +9 -0
  513. package/dist/db/schema/tables/conversations.js +47 -0
  514. package/dist/db/schema/tables/core-memory.d.ts +9 -0
  515. package/dist/db/schema/tables/core-memory.js +41 -0
  516. package/dist/db/schema/tables/entities.d.ts +9 -0
  517. package/dist/db/schema/tables/entities.js +39 -0
  518. package/dist/db/schema/tables/entity-relations.d.ts +9 -0
  519. package/dist/db/schema/tables/entity-relations.js +31 -0
  520. package/dist/db/schema/tables/learnings.d.ts +9 -0
  521. package/dist/db/schema/tables/learnings.js +66 -0
  522. package/dist/db/schema/tables/memories.d.ts +9 -0
  523. package/dist/db/schema/tables/memories.js +161 -0
  524. package/dist/db/schema/tables/memory-associations.d.ts +9 -0
  525. package/dist/db/schema/tables/memory-associations.js +39 -0
  526. package/dist/db/schema/tables/memory-hash-cache.d.ts +9 -0
  527. package/dist/db/schema/tables/memory-hash-cache.js +29 -0
  528. package/dist/db/schema/tables/memory-merge-history.d.ts +9 -0
  529. package/dist/db/schema/tables/memory-merge-history.js +33 -0
  530. package/dist/db/schema/tables/memory-merge-proposals.d.ts +9 -0
  531. package/dist/db/schema/tables/memory-merge-proposals.js +39 -0
  532. package/dist/db/schema/tables/messages.d.ts +9 -0
  533. package/dist/db/schema/tables/messages.js +41 -0
  534. package/dist/db/schema/tables/namespaces.d.ts +9 -0
  535. package/dist/db/schema/tables/namespaces.js +37 -0
  536. package/dist/db/schema/tables/projects.d.ts +9 -0
  537. package/dist/db/schema/tables/projects.js +31 -0
  538. package/dist/db/schema/tables/users.d.ts +9 -0
  539. package/dist/db/schema/tables/users.js +27 -0
  540. package/dist/db/schema.d.ts +1 -1
  541. package/dist/db/schema.js +2 -2
  542. package/dist/db/supabase.d.ts +9 -0
  543. package/dist/db/supabase.js +24 -0
  544. package/dist/packages/mcp/src/index.d.ts +3 -0
  545. package/dist/packages/mcp/src/index.js +733 -0
  546. package/mcp.json.example +8 -0
  547. package/package.json +132 -173
  548. package/packages/cli/package.json +22 -0
  549. package/packages/cli/src/commands/clean.ts +68 -0
  550. package/packages/cli/src/commands/context.ts +79 -0
  551. package/packages/cli/src/commands/doctor.ts +357 -0
  552. package/packages/cli/src/commands/forget.ts +72 -0
  553. package/packages/cli/src/commands/health.ts +36 -0
  554. package/packages/cli/src/commands/inspect.ts +41 -0
  555. package/packages/cli/src/commands/link.ts +50 -0
  556. package/packages/cli/src/commands/migrate.ts +93 -0
  557. package/packages/cli/src/commands/recall.ts +99 -0
  558. package/packages/cli/src/commands/recent.ts +57 -0
  559. package/packages/cli/src/commands/remember.ts +139 -0
  560. package/packages/cli/src/commands/run.ts +58 -0
  561. package/packages/cli/src/commands/stale.ts +43 -0
  562. package/packages/cli/src/commands/stats.ts +42 -0
  563. package/packages/cli/src/index.ts +57 -0
  564. package/packages/cli/tsconfig.json +24 -0
  565. package/packages/mcp/package.json +26 -0
  566. package/packages/mcp/src/index.ts +877 -0
  567. package/packages/mcp/tsconfig.json +20 -0
  568. package/skills/squish-memory/SKILL.md +107 -114
  569. package/skills/squish-memory/install.sh +3 -3
  570. package/skills/squish-memory/{claude-desktop.json → references/claude-desktop.json} +12 -12
  571. package/skills/squish-memory/{openclaw.json → references/openclaw.json} +13 -13
  572. package/skills/squish-memory/{opencode.json → references/opencode.json} +14 -14
  573. package/.claude-plugin/marketplace.json +0 -20
  574. package/.claude-plugin/plugin.json +0 -32
  575. package/.env.mcp.example +0 -60
  576. package/.mcp.json +0 -11
  577. package/QUICK-START.md +0 -71
  578. package/bin/squish-add.mjs +0 -32
  579. package/bin/squish-rm.mjs +0 -21
  580. package/commands/context-paging.md +0 -51
  581. package/commands/context-status.md +0 -22
  582. package/commands/context.md +0 -5
  583. package/commands/core-memory.md +0 -56
  584. package/commands/health.md +0 -5
  585. package/commands/init.md +0 -39
  586. package/commands/merge.md +0 -113
  587. package/commands/observe.md +0 -5
  588. package/commands/recall.md +0 -5
  589. package/commands/remember.md +0 -11
  590. package/commands/search.md +0 -10
  591. package/config/mcp-cli-fallback-policy.json +0 -22
  592. package/config/mcp.json +0 -38
  593. package/config/plugin-manifest.json +0 -152
  594. package/config/plugin-manifest.schema.json +0 -244
  595. package/config/remote-memory-policy.json +0 -32
  596. package/dist/api/web/index.d.ts +0 -3
  597. package/dist/api/web/index.js +0 -4
  598. package/dist/api/web/web-server.d.ts +0 -3
  599. package/dist/api/web/web-server.js +0 -6
  600. package/dist/api/web/web.d.ts +0 -4
  601. package/dist/api/web/web.js +0 -639
  602. package/dist/commands/managed-sync.d.ts +0 -10
  603. package/dist/commands/managed-sync.js +0 -64
  604. package/dist/commands/mcp-server.d.ts +0 -3
  605. package/dist/commands/mcp-server.js +0 -393
  606. package/dist/core/context.js +0 -24
  607. package/dist/core/governance.js +0 -64
  608. package/dist/core/local-embeddings.d.ts +0 -6
  609. package/dist/core/local-embeddings.js +0 -20
  610. package/dist/core/namespaces/index.d.ts +0 -71
  611. package/dist/core/namespaces/index.js +0 -305
  612. package/dist/core/namespaces/uri-parser.d.ts +0 -31
  613. package/dist/core/namespaces/uri-parser.js +0 -74
  614. package/dist/core/observations.d.ts +0 -26
  615. package/dist/core/observations.js +0 -110
  616. package/dist/core/requirements.d.ts +0 -20
  617. package/dist/core/requirements.js +0 -35
  618. package/dist/core/search/qmd-search.d.ts +0 -61
  619. package/dist/core/search/qmd-search.js +0 -178
  620. package/dist/core/snapshots.d.ts +0 -29
  621. package/dist/core/snapshots.js +0 -220
  622. package/dist/core/sync/qmd-sync.d.ts +0 -106
  623. package/dist/core/sync/qmd-sync.js +0 -213
  624. package/dist/core/utils.js +0 -74
  625. package/dist/index.d.ts +0 -19
  626. package/dist/index.js +0 -997
  627. package/generated/mcp/manifest.json +0 -23
  628. package/generated/mcp/mcp-servers.json +0 -25
  629. package/generated/mcp/mcporter.json +0 -34
  630. package/generated/mcp/openclaw-memory-qmd.json +0 -17
  631. package/generated/mcp/runtime.json +0 -12
  632. package/hooks/hooks.json +0 -52
  633. package/hooks/post-tool-use.js +0 -26
  634. package/hooks/session-end.js +0 -28
  635. package/hooks/session-start.js +0 -33
  636. package/hooks/user-prompt-submit.js +0 -26
  637. package/hooks/utils.js +0 -153
  638. package/npx-installer.js +0 -208
  639. package/packages/plugin-claude-code/README.md +0 -73
  640. package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +0 -35
  641. package/packages/plugin-claude-code/dist/plugin-wrapper.js +0 -191
  642. package/packages/plugin-claude-code/package.json +0 -31
  643. package/packages/plugin-openclaw/README.md +0 -70
  644. package/packages/plugin-openclaw/dist/index.d.ts +0 -49
  645. package/packages/plugin-openclaw/dist/index.js +0 -262
  646. package/packages/plugin-openclaw/openclaw.plugin.json +0 -94
  647. package/packages/plugin-openclaw/package.json +0 -31
  648. package/packages/plugin-opencode/install.mjs +0 -217
  649. package/packages/plugin-opencode/package.json +0 -21
  650. package/plugin.json +0 -32
  651. package/scripts/build-release.sh +0 -36
  652. package/scripts/check-secrets.js +0 -132
  653. package/scripts/db/check-db.mjs +0 -88
  654. package/scripts/db/fix-all-columns.mjs +0 -52
  655. package/scripts/db/fix-schema-all.mjs +0 -55
  656. package/scripts/db/fix-schema-full.mjs +0 -46
  657. package/scripts/db/fix-schema.mjs +0 -38
  658. package/scripts/db/init-db.mjs +0 -13
  659. package/scripts/db/recreate-db.mjs +0 -14
  660. package/scripts/generate-mcp.mjs +0 -264
  661. package/scripts/github-release.sh +0 -77
  662. package/scripts/init-dirs.mjs +0 -13
  663. package/scripts/install-interactive.mjs +0 -677
  664. package/scripts/install-mcp.mjs +0 -116
  665. package/scripts/install-plugin.mjs +0 -415
  666. package/scripts/install-web.sh +0 -120
  667. package/scripts/install.mjs +0 -340
  668. package/scripts/openclaw-bootstrap.mjs +0 -127
  669. package/scripts/package-release.sh +0 -71
  670. package/scripts/remote-preflight.mjs +0 -62
  671. package/scripts/squish-fallback.mjs +0 -132
  672. package/scripts/test/test-all-systems.mjs +0 -139
  673. package/scripts/test/test-memory-system.mjs +0 -139
  674. package/scripts/test/test-v0.5.0.mjs +0 -210
  675. package/scripts/test-interactive.mjs +0 -131
  676. package/scripts/verify-mcp.mjs +0 -214
  677. package/skills/memory-guide/SKILL.md +0 -332
  678. package/skills/squish-cli/SKILL.md +0 -240
  679. package/skills/squish-mcp/SKILL.md +0 -355
  680. package/skills/squish-memory/install.mjs +0 -335
  681. package/skills/squish-memory/skill.json +0 -32
  682. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.d.ts +0 -0
  683. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.js +0 -0
  684. /package/dist/{algorithms → core/algorithms}/handlers/approve-merge.d.ts +0 -0
  685. /package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.d.ts +0 -0
  686. /package/dist/{algorithms → core/algorithms}/handlers/get-stats.d.ts +0 -0
  687. /package/dist/{algorithms → core/algorithms}/handlers/list-proposals.d.ts +0 -0
  688. /package/dist/{algorithms → core/algorithms}/handlers/preview-merge.d.ts +0 -0
  689. /package/dist/{algorithms → core/algorithms}/handlers/reject-merge.d.ts +0 -0
  690. /package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.d.ts +0 -0
  691. /package/dist/{algorithms → core/algorithms}/safety/safety-checks.js +0 -0
  692. /package/dist/{algorithms → core/algorithms}/utils/response-builder.d.ts +0 -0
  693. /package/dist/{algorithms → core/algorithms}/utils/response-builder.js +0 -0
  694. /package/dist/core/{context.d.ts → context/context.d.ts} +0 -0
  695. /package/dist/core/{agent-memory.d.ts → ingestion/agent-memory.d.ts} +0 -0
  696. /package/dist/core/{privacy.d.ts → security/privacy.d.ts} +0 -0
  697. /package/dist/core/{privacy.js → security/privacy.js} +0 -0
  698. /package/dist/core/{secret-detector.d.ts → security/secret-detector.d.ts} +0 -0
  699. /package/dist/core/{secret-detector.js → security/secret-detector.js} +0 -0
  700. /package/dist/core/{session-hooks → session}/session-hooks.d.ts +0 -0
  701. /package/dist/core/{session-hooks → session}/session-hooks.js +0 -0
  702. /package/dist/core/{cache.d.ts → storage/cache.d.ts} +0 -0
  703. /package/dist/core/{database.d.ts → storage/database.d.ts} +0 -0
  704. /package/dist/core/{database.js → storage/database.js} +0 -0
@@ -1,6 +1,5 @@
1
1
  import { pgTable, text, timestamp, uuid, integer, boolean, jsonb, index, vector, numeric } from 'drizzle-orm/pg-core';
2
2
  import { relations } from 'drizzle-orm';
3
- // ============================================================================
4
3
  // Core Tables
5
4
  // ============================================================================
6
5
  /**
@@ -15,7 +14,6 @@ export const users = pgTable('users', {
15
14
  createdAt: timestamp('created_at').defaultNow().notNull(),
16
15
  updatedAt: timestamp('updated_at').defaultNow().notNull(),
17
16
  });
18
- // ============================================================================
19
17
  // Memory Editing Tables
20
18
  // ============================================================================
21
19
  /**
@@ -74,7 +72,8 @@ export const memories = pgTable('memories', {
74
72
  embedding: vector('embedding', { dimensions: 1536 }), // OpenAI ada-002 compatible
75
73
  // Metadata
76
74
  source: text('source'), // Where this memory came from (tool, hook, user)
77
- confidence: integer('confidence').default(100), // 0-100 confidence score
75
+ confidence: integer('confidence').default(50), // 0-100 confidence score (default: speculative)
76
+ confidenceLevel: text('confidence_level').default('speculative').$type(), // Iteration 3: Confidence flags (default: speculative)
78
77
  tags: text('tags').array(),
79
78
  metadata: jsonb('metadata').$type(),
80
79
  // v0.2.0: Privacy and relevance
@@ -84,7 +83,12 @@ export const memories = pgTable('memories', {
84
83
  // v0.3.0: Lifecycle Management
85
84
  sector: text('sector').default('episodic').$type(),
86
85
  tier: text('tier').default('hot').$type(),
87
- decayRate: integer('decay_rate').default(30), // days until decay
86
+ status: text('status').notNull().default('active'),
87
+ encrypted_content: text('encrypted_content'),
88
+ encryption_nonce: text('encryption_nonce'),
89
+ is_encrypted: boolean('is_encrypted').default(false),
90
+ // Per-memory decay rate (integer percentage, e.g., 30 = 30% decay per cycle)
91
+ decayRate: integer('decay_rate').default(30),
88
92
  coactivationScore: integer('coactivation_score').default(0), // 0-100
89
93
  lastDecayAt: timestamp('last_decay_at').defaultNow(),
90
94
  // v0.3.0: Agent-Aware
@@ -124,10 +128,15 @@ export const memories = pgTable('memories', {
124
128
  // v0.4.2: Namespace support
125
129
  namespaceId: uuid('namespace_id').references(() => namespaces.id, { onDelete: 'set null' }),
126
130
  namespacePath: text('namespace_path'),
131
+ // v1.1.5: Places support (spatial memory organization)
132
+ placeId: uuid('place_id').references(() => places.id, { onDelete: 'set null' }),
133
+ placeSortOrder: integer('place_sort_order'),
127
134
  // v0.4.3: Layer support
128
135
  hasL0Abstract: boolean('has_l0_abstract').default(false),
129
136
  hasL1Overview: boolean('has_l1_overview').default(false),
130
137
  lastLayerUpdate: timestamp('last_layer_update'),
138
+ // v1.0.x: Token tracking
139
+ tokensEstimate: integer('tokens_estimate').default(0).notNull(),
131
140
  createdAt: timestamp('created_at').defaultNow().notNull(),
132
141
  updatedAt: timestamp('updated_at').defaultNow().notNull(),
133
142
  }, (table) => [
@@ -205,41 +214,64 @@ export const messages = pgTable('messages', {
205
214
  index('messages_created_idx').on(table.createdAt),
206
215
  ]);
207
216
  /**
208
- * Observations - auto-captured tool usage and events
217
+ * Learnings - agent learnings: success, failure, fix, insight
209
218
  */
210
- export const observations = pgTable('observations', {
219
+ export const learnings = pgTable('learnings', {
211
220
  id: uuid('id').primaryKey().defaultRandom(),
212
221
  projectId: uuid('project_id').references(() => projects.id, { onDelete: 'cascade' }),
213
222
  conversationId: uuid('conversation_id').references(() => conversations.id, { onDelete: 'set null' }),
214
- // What happened
223
+ // Learning type: success, failure, fix, insight
215
224
  type: text('type').notNull().$type(),
216
- action: text('action').notNull(), // e.g., 'Edit', 'Read', 'Bash'
217
- target: text('target'), // e.g., file path, command
225
+ action: text('action').notNull(),
226
+ target: text('target'),
218
227
  // Details
219
228
  summary: text('summary').notNull(),
220
229
  details: jsonb('details').$type(),
221
230
  // Semantic search
222
231
  embedding: vector('embedding', { dimensions: 1536 }),
223
- // v0.2.0: Folder-scoped observations
232
+ // Optional link to a memory
233
+ memoryId: uuid('memory_id').references(() => memories.id, { onDelete: 'set null' }),
234
+ // Folder-scoped
224
235
  folderPath: text('folder_path'),
225
236
  projectPath: text('project_path'),
226
- // v0.2.0: Privacy and relevance
237
+ // Privacy and relevance
227
238
  isPrivate: boolean('is_private').default(false),
228
239
  hasSecrets: boolean('has_secrets').default(false),
229
- relevanceScore: integer('relevance_score').default(50), // 0-100
240
+ relevanceScore: integer('relevance_score').default(50),
230
241
  // Classification
231
- category: text('category'), // e.g., 'refactoring', 'debugging', 'feature'
232
- importance: integer('importance').default(50), // 0-100
242
+ category: text('category'),
243
+ importance: integer('importance').default(50),
233
244
  metadata: jsonb('metadata').$type(),
245
+ // Migration tracking
246
+ isImported: boolean('is_imported').default(false),
234
247
  createdAt: timestamp('created_at').defaultNow().notNull(),
235
248
  }, (table) => [
236
- index('observations_project_idx').on(table.projectId),
237
- index('observations_type_idx').on(table.type),
238
- index('observations_action_idx').on(table.action),
239
- index('observations_created_idx').on(table.createdAt),
240
- index('observations_folder_idx').on(table.folderPath),
241
- index('observations_relevance_idx').on(table.relevanceScore),
242
- index('observations_private_idx').on(table.isPrivate),
249
+ index('learnings_project_idx').on(table.projectId),
250
+ index('learnings_type_idx').on(table.type),
251
+ index('learnings_action_idx').on(table.action),
252
+ index('learnings_created_idx').on(table.createdAt),
253
+ index('learnings_folder_idx').on(table.folderPath),
254
+ index('learnings_relevance_idx').on(table.relevanceScore),
255
+ index('learnings_private_idx').on(table.isPrivate),
256
+ index('learnings_memory_idx').on(table.memoryId),
257
+ ]);
258
+ /**
259
+ * Agent Preferences - learned agent preferences from learnings
260
+ * Enables agents to evolve and remember preferences over time
261
+ */
262
+ export const agentPreferences = pgTable('agent_preferences', {
263
+ id: uuid('id').primaryKey().defaultRandom(),
264
+ projectId: uuid('project_id').references(() => projects.id, { onDelete: 'cascade' }).notNull(),
265
+ key: text('key').notNull(), // e.g., "prefer_bun", "prefer_typescript"
266
+ value: text('value').notNull(), // e.g., "bun", "true"
267
+ sourceMemoryId: uuid('source_memory_id').references(() => memories.id, { onDelete: 'set null' }),
268
+ confidence: numeric('confidence', { precision: 3, scale: 2 }).default('0.5'), // 0.00 to 1.00
269
+ usageCount: integer('usage_count').default(1),
270
+ lastUpdated: timestamp('last_updated').defaultNow().notNull(),
271
+ createdAt: timestamp('created_at').defaultNow().notNull(),
272
+ }, (table) => [
273
+ index('agent_preferences_project_idx').on(table.projectId),
274
+ index('agent_preferences_key_idx').on(table.key),
243
275
  ]);
244
276
  /**
245
277
  * Entities - knowledge graph nodes
@@ -277,6 +309,63 @@ export const namespaces = pgTable('namespaces', {
277
309
  index('namespaces_project_idx').on(table.projectId),
278
310
  index('namespaces_parent_idx').on(table.parentId),
279
311
  ]);
312
+ /**
313
+ * Places - Spatial memory organization
314
+ */
315
+ export const places = pgTable('places', {
316
+ id: uuid('id').primaryKey().defaultRandom(),
317
+ projectId: uuid('project_id').references(() => projects.id, { onDelete: 'cascade' }).notNull(),
318
+ name: text('name').notNull(),
319
+ placeType: text('place_type').notNull(),
320
+ parentId: uuid('parent_id').references(() => places.id, { onDelete: 'set null' }),
321
+ sortOrder: integer('sort_order').default(0),
322
+ positionX: integer('position_x').default(0),
323
+ positionY: integer('position_y').default(0),
324
+ description: text('description'),
325
+ purpose: text('purpose'),
326
+ memoryCount: integer('memory_count').default(0),
327
+ createdAt: timestamp('created_at').defaultNow().notNull(),
328
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
329
+ }, (table) => [
330
+ index('places_project_idx').on(table.projectId),
331
+ index('places_type_idx').on(table.placeType),
332
+ index('places_parent_idx').on(table.parentId),
333
+ index('places_sort_order_idx').on(table.projectId, table.sortOrder),
334
+ ]);
335
+ /**
336
+ * Memory-Place assignments
337
+ */
338
+ export const memoryPlaces = pgTable('memory_places', {
339
+ id: uuid('id').primaryKey().defaultRandom(),
340
+ memoryId: uuid('memory_id').references(() => memories.id, { onDelete: 'cascade' }).notNull(),
341
+ placeId: uuid('place_id').references(() => places.id, { onDelete: 'cascade' }).notNull(),
342
+ isManual: boolean('is_manual').default(false),
343
+ ruleId: uuid('rule_id'),
344
+ createdAt: timestamp('created_at').defaultNow().notNull(),
345
+ }, (table) => [
346
+ index('memory_places_memory_idx').on(table.memoryId),
347
+ index('memory_places_place_idx').on(table.placeId),
348
+ ]);
349
+ /**
350
+ * Place auto-assignment rules
351
+ */
352
+ export const placeRules = pgTable('place_rules', {
353
+ id: uuid('id').primaryKey().defaultRandom(),
354
+ projectId: uuid('project_id').references(() => projects.id, { onDelete: 'cascade' }).notNull(),
355
+ name: text('name').notNull(),
356
+ placeType: text('place_type').notNull(),
357
+ matchTool: text('match_tool'),
358
+ matchKeyword: text('match_keyword'),
359
+ matchTag: text('match_tag'),
360
+ matchMemoryType: text('match_memory_type'),
361
+ priority: integer('priority').default(0),
362
+ enabled: boolean('enabled').default(true),
363
+ createdAt: timestamp('created_at').defaultNow().notNull(),
364
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
365
+ }, (table) => [
366
+ index('place_rules_project_idx').on(table.projectId),
367
+ index('place_rules_type_idx').on(table.placeType),
368
+ ]);
280
369
  /**
281
370
  * Memory Layers - Tiered L0/L1/L2 summaries for token-efficient retrieval
282
371
  */
@@ -308,7 +397,6 @@ export const entityRelations = pgTable('entity_relations', {
308
397
  index('relations_to_idx').on(table.toEntityId),
309
398
  index('relations_type_idx').on(table.type),
310
399
  ]);
311
- // ============================================================================
312
400
  // v0.3.0: Lifecycle & Governance Tables
313
401
  // ============================================================================
314
402
  /**
@@ -366,7 +454,6 @@ export const memorySnapshots = pgTable('memory_snapshots', {
366
454
  index('snapshots_type_idx').on(table.snapshotType),
367
455
  index('snapshots_created_idx').on(table.createdAt),
368
456
  ]);
369
- // ============================================================================
370
457
  // Progressive Disclosure & Context Paging Tables
371
458
  // ============================================================================
372
459
  /**
@@ -415,7 +502,6 @@ export const contextPagingSessions = pgTable('context_paging_sessions', {
415
502
  index('context_paging_project_idx').on(table.projectId),
416
503
  index('context_paging_created_idx').on(table.createdAt),
417
504
  ]);
418
- // ============================================================================
419
505
  // Memory Merging Tables
420
506
  // ============================================================================
421
507
  /**
@@ -559,7 +645,6 @@ export const contextSessions = pgTable('context_sessions', {
559
645
  index('context_sessions_project_idx').on(table.projectId),
560
646
  index('context_sessions_created_idx').on(table.createdAt),
561
647
  ]);
562
- // ============================================================================
563
648
  // Relations (Drizzle ORM)
564
649
  // ============================================================================
565
650
  export const usersRelations = relations(users, ({ many }) => ({
@@ -569,7 +654,7 @@ export const usersRelations = relations(users, ({ many }) => ({
569
654
  export const projectsRelations = relations(projects, ({ many }) => ({
570
655
  memories: many(memories),
571
656
  conversations: many(conversations),
572
- observations: many(observations),
657
+ learnings: many(learnings),
573
658
  entities: many(entities),
574
659
  }));
575
660
  export const memoriesRelations = relations(memories, ({ one }) => ({
@@ -592,21 +677,35 @@ export const conversationsRelations = relations(conversations, ({ one, many }) =
592
677
  references: [users.id],
593
678
  }),
594
679
  messages: many(messages),
595
- observations: many(observations),
680
+ learnings: many(learnings),
596
681
  }));
597
- export const messagesRelations = relations(messages, ({ one }) => ({
682
+ export const learningsRelations = relations(learnings, ({ one }) => ({
683
+ project: one(projects, {
684
+ fields: [learnings.projectId],
685
+ references: [projects.id],
686
+ }),
598
687
  conversation: one(conversations, {
599
- fields: [messages.conversationId],
688
+ fields: [learnings.conversationId],
600
689
  references: [conversations.id],
601
690
  }),
691
+ memory: one(memories, {
692
+ fields: [learnings.memoryId],
693
+ references: [memories.id],
694
+ }),
602
695
  }));
603
- export const observationsRelations = relations(observations, ({ one }) => ({
696
+ export const agentPreferencesRelations = relations(agentPreferences, ({ one }) => ({
604
697
  project: one(projects, {
605
- fields: [observations.projectId],
698
+ fields: [agentPreferences.projectId],
606
699
  references: [projects.id],
607
700
  }),
701
+ sourceMemory: one(memories, {
702
+ fields: [agentPreferences.sourceMemoryId],
703
+ references: [memories.id],
704
+ }),
705
+ }));
706
+ export const messagesRelations = relations(messages, ({ one }) => ({
608
707
  conversation: one(conversations, {
609
- fields: [observations.conversationId],
708
+ fields: [messages.conversationId],
610
709
  references: [conversations.id],
611
710
  }),
612
711
  }));
@@ -696,4 +795,65 @@ export const memoryHashCacheRelations = relations(memoryHashCache, ({ one }) =>
696
795
  references: [projects.id],
697
796
  }),
698
797
  }));
798
+ // Belief Systems - Derived Beliefs from Memory
799
+ // ============================================================================
800
+ /**
801
+ * Beliefs - Derived semantic beliefs extracted from memories
802
+ * Represents inferred decisions, preferences, constraints, failure causes
803
+ */
804
+ export const beliefs = pgTable('beliefs', {
805
+ id: uuid('id').primaryKey().defaultRandom(),
806
+ projectId: uuid('project_id').references(() => projects.id, { onDelete: 'cascade' }),
807
+ // Belief identification
808
+ beliefType: text('belief_type').notNull(),
809
+ statement: text('statement').notNull(),
810
+ normalizedKey: text('normalized_key').notNull(),
811
+ // Confidence and decay
812
+ confidence: integer('confidence').default(50), // 0-100
813
+ beliefDecayRate: integer('belief_decay_rate').default(30), // days half-life
814
+ lastConfirmedAt: timestamp('last_confirmed_at'),
815
+ sourceCount: integer('source_count').default(1),
816
+ // Status
817
+ status: text('status').default('active'),
818
+ // Context and evidence
819
+ reason: text('reason'),
820
+ context: text('context'),
821
+ evidenceSummary: text('evidence_summary'),
822
+ // Metadata (stores edges, derivation info)
823
+ metadata: jsonb('metadata'),
824
+ createdAt: timestamp('created_at').defaultNow().notNull(),
825
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
826
+ }, (table) => [
827
+ index('beliefs_project_idx').on(table.projectId),
828
+ index('beliefs_type_idx').on(table.beliefType),
829
+ index('beliefs_status_idx').on(table.status),
830
+ index('beliefs_confidence_idx').on(table.confidence),
831
+ index('beliefs_normalized_key_idx').on(table.normalizedKey),
832
+ ]);
833
+ /**
834
+ * Belief Memory Sources - Links beliefs to source memories
835
+ */
836
+ export const beliefMemorySources = pgTable('belief_memory_sources', {
837
+ id: uuid('id').primaryKey().defaultRandom(),
838
+ beliefId: uuid('belief_id').references(() => beliefs.id, { onDelete: 'cascade' }).notNull(),
839
+ memoryId: uuid('memory_id').references(() => memories.id, { onDelete: 'cascade' }).notNull(),
840
+ createdAt: timestamp('created_at').defaultNow().notNull(),
841
+ }, (table) => [
842
+ index('belief_sources_belief_idx').on(table.beliefId),
843
+ index('belief_sources_memory_idx').on(table.memoryId),
844
+ ]);
845
+ /**
846
+ * Belief Edges - Relationships between beliefs
847
+ */
848
+ export const beliefEdges = pgTable('belief_edges', {
849
+ id: uuid('id').primaryKey().defaultRandom(),
850
+ fromBeliefId: uuid('from_belief_id').references(() => beliefs.id, { onDelete: 'cascade' }).notNull(),
851
+ toBeliefId: uuid('to_belief_id').references(() => beliefs.id, { onDelete: 'cascade' }).notNull(),
852
+ edgeType: text('edge_type').notNull(),
853
+ metadata: jsonb('metadata'),
854
+ createdAt: timestamp('created_at').defaultNow().notNull(),
855
+ }, (table) => [
856
+ index('belief_edges_from_idx').on(table.fromBeliefId),
857
+ index('belief_edges_to_idx').on(table.toBeliefId),
858
+ ]);
699
859
  //# sourceMappingURL=schema.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: import("drizzle-kit").Config;
2
+ export default _default;
3
+ //# sourceMappingURL=drizzle.config.d.ts.map
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from 'drizzle-kit';
2
+ export default defineConfig({
3
+ schema: './drizzle/schema.ts',
4
+ out: './drizzle/migrations',
5
+ dialect: 'postgresql',
6
+ dbCredentials: {
7
+ url: process.env.DATABASE_URL || 'postgres://squish:squish_dev@localhost:5432/squish',
8
+ },
9
+ verbose: true,
10
+ strict: true,
11
+ });
12
+ //# sourceMappingURL=drizzle.config.js.map
@@ -1,10 +1,6 @@
1
1
  import { createDb } from './adapter.js';
2
2
  import { config } from '../config.js';
3
- export declare function getDb(): Promise<(import("drizzle-orm/node-postgres").NodePgDatabase<typeof import("../drizzle/schema.js")> & {
4
- $client: import("pg").Pool;
5
- }) | (import("drizzle-orm/better-sqlite3").BetterSQLite3Database<typeof import("../drizzle/schema-sqlite.js")> & {
6
- $client: import("better-sqlite3").Database;
7
- }) | import("drizzle-orm/sql-js").SQLJsDatabase<typeof import("../drizzle/schema-sqlite.js")>>;
3
+ export declare function getDb(): Promise<any>;
8
4
  export declare function checkDatabaseHealth(): Promise<boolean>;
9
5
  export { config };
10
6
  export { createDb };
package/dist/db/index.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import { createDb } from './adapter.js';
2
2
  import { config } from '../config.js';
3
3
  import { logger } from '../core/logger.js';
4
+ import { isDatabaseUnavailableError } from '../core/lib/utils.js';
5
+ // Use any for db to avoid type conflicts between different drivers
6
+ // The actual type will be determined at runtime based on mode
4
7
  let db = null;
5
8
  let dbError = null;
6
9
  export async function getDb() {
@@ -9,7 +12,38 @@ export async function getDb() {
9
12
  }
10
13
  if (!db) {
11
14
  try {
12
- db = await createDb();
15
+ // Priority: remote (user's Supabase/Neon) > team (PostgreSQL) > local (SQLite)
16
+ if (config.isRemoteMode) {
17
+ if (config.remoteBackend === 'neon' && config.neonProjectId && config.neonServiceKey) {
18
+ const { createNeonClient } = await import('./neon.js');
19
+ db = await createNeonClient();
20
+ }
21
+ else if (config.supabaseUrl && config.supabaseKey) {
22
+ const { createSupabaseClient } = await import('./supabase.js');
23
+ db = await createSupabaseClient();
24
+ }
25
+ else {
26
+ throw new Error('Remote backend not configured (need SUPABASE_URL or NEON_PROJECT_ID)');
27
+ }
28
+ }
29
+ else if (config.isTeamMode) {
30
+ // Team mode: PostgreSQL (or Supabase/Neon if explicitly configured)
31
+ if (config.teamBackend === 'supabase' && config.supabaseUrl && config.supabaseKey) {
32
+ const { createSupabaseClient } = await import('./supabase.js');
33
+ db = await createSupabaseClient();
34
+ }
35
+ else if (config.teamBackend === 'neon' && config.neonProjectId && config.neonServiceKey) {
36
+ const { createNeonClient } = await import('./neon.js');
37
+ db = await createNeonClient();
38
+ }
39
+ else {
40
+ db = await createDb();
41
+ }
42
+ }
43
+ else {
44
+ // Local mode: SQLite
45
+ db = await createDb();
46
+ }
13
47
  }
14
48
  catch (error) {
15
49
  dbError = error instanceof Error ? error.message : 'Database initialization failed';
@@ -21,21 +55,30 @@ export async function getDb() {
21
55
  export async function checkDatabaseHealth() {
22
56
  try {
23
57
  const database = await getDb();
24
- // Try a simple query - use a raw query that's guaranteed to work
25
- const dbClient = database.$client;
58
+ const dbClient = database.$client ?? database;
26
59
  if (dbClient && typeof dbClient.query === 'function') {
27
60
  await dbClient.query('SELECT 1');
28
61
  }
62
+ else if (dbClient && typeof dbClient.exec === 'function') {
63
+ dbClient.exec('SELECT 1');
64
+ }
29
65
  else if (dbClient && typeof dbClient.prepare === 'function') {
30
- dbClient.prepare('SELECT 1').get();
66
+ const statement = dbClient.prepare('SELECT 1');
67
+ if (typeof statement.get === 'function') {
68
+ statement.get();
69
+ }
70
+ else if (typeof statement.step === 'function') {
71
+ statement.step();
72
+ }
73
+ if (typeof statement.free === 'function') {
74
+ statement.free();
75
+ }
31
76
  }
32
77
  return true;
33
78
  }
34
79
  catch (error) {
35
- // Check if it's a known database unavailability issue
36
- if (error.message?.includes('not a valid Win32 application') ||
37
- error.message?.includes('Database unavailable')) {
38
- return false; // Graceful degradation - database unavailable but not an error
80
+ if (isDatabaseUnavailableError(error)) {
81
+ return false;
39
82
  }
40
83
  logger.error('Database health check failed', error);
41
84
  return false;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Memory associations table migrations
3
+ */
4
+ import type { Database } from 'better-sqlite3';
5
+ export declare function runAssociationsMigrations(sqlite: Database): Promise<void>;
6
+ //# sourceMappingURL=associations.d.ts.map
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Memory associations table migrations
3
+ */
4
+ import { logger } from '../../core/logger.js';
5
+ export async function runAssociationsMigrations(sqlite) {
6
+ const associationsTableCheck = sqlite.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='memory_associations'").get();
7
+ if (!associationsTableCheck)
8
+ return;
9
+ const associationsInfo = sqlite.prepare("PRAGMA table_info(memory_associations)").all();
10
+ const existingAssociationsColumns = new Set(associationsInfo.map(col => col.name));
11
+ const associationsMigrations = [
12
+ { col: 'metadata', sql: 'ALTER TABLE memory_associations ADD COLUMN metadata TEXT' },
13
+ ];
14
+ for (const migration of associationsMigrations) {
15
+ if (!existingAssociationsColumns.has(migration.col)) {
16
+ try {
17
+ sqlite.exec(migration.sql);
18
+ logger.info(`Migration: Added column ${migration.col} to memory_associations table`);
19
+ }
20
+ catch (error) {
21
+ const msg = error instanceof Error ? error.message : String(error);
22
+ if (!msg.includes('duplicate column name')) {
23
+ throw new Error(`Migration failed for memory_associations.${migration.col}: ${msg}`);
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=associations.js.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Beliefs table migrations
3
+ * Uses schema definitions to generate migrations
4
+ *
5
+ * For existing databases without beliefs table (pre-v1.2.0), creates the table.
6
+ * Then runs column migrations for all belief-related tables.
7
+ */
8
+ import type { Database } from 'better-sqlite3';
9
+ export declare function runBeliefMigrations(sqlite: Database): Promise<void>;
10
+ //# sourceMappingURL=beliefs.d.ts.map
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Beliefs table migrations
3
+ * Uses schema definitions to generate migrations
4
+ *
5
+ * For existing databases without beliefs table (pre-v1.2.0), creates the table.
6
+ * Then runs column migrations for all belief-related tables.
7
+ */
8
+ import { migrateTable } from '../schema/generator.js';
9
+ import { beliefsSchema, beliefMemorySourcesSchema, beliefEdgesSchema } from '../schema/beliefs.js';
10
+ import { logger } from '../../core/logger.js';
11
+ export async function runBeliefMigrations(sqlite) {
12
+ // Check if beliefs table exists at all (for existing databases pre-v1.2.0)
13
+ const beliefsCheck = sqlite.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='beliefs'").get();
14
+ if (!beliefsCheck) {
15
+ // Create beliefs table for existing databases upgrading to v1.2.0
16
+ logger.info('Migration: Creating beliefs table for existing database');
17
+ try {
18
+ sqlite.exec(`
19
+ CREATE TABLE IF NOT EXISTS beliefs (
20
+ id TEXT PRIMARY KEY,
21
+ project_id TEXT,
22
+ belief_type TEXT NOT NULL,
23
+ statement TEXT NOT NULL,
24
+ normalized_key TEXT NOT NULL,
25
+ confidence REAL DEFAULT 0.5,
26
+ belief_decay_rate INTEGER DEFAULT 30,
27
+ last_confirmed_at INTEGER,
28
+ source_count INTEGER DEFAULT 1,
29
+ status TEXT DEFAULT 'active',
30
+ reason TEXT,
31
+ context TEXT,
32
+ evidence_summary TEXT,
33
+ metadata TEXT,
34
+ created_at INTEGER,
35
+ updated_at INTEGER,
36
+ UNIQUE(project_id, normalized_key)
37
+ )
38
+ `);
39
+ }
40
+ catch (error) {
41
+ const msg = error instanceof Error ? error.message : String(error);
42
+ logger.warn(`Migration: Could not create beliefs table: ${msg}`);
43
+ }
44
+ }
45
+ const beliefSourcesCheck = sqlite.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='belief_memory_sources'").get();
46
+ if (!beliefSourcesCheck) {
47
+ sqlite.exec(`
48
+ CREATE TABLE IF NOT EXISTS belief_memory_sources (
49
+ id TEXT PRIMARY KEY,
50
+ belief_id TEXT,
51
+ memory_id TEXT,
52
+ created_at INTEGER,
53
+ UNIQUE(belief_id, memory_id)
54
+ )
55
+ `);
56
+ }
57
+ const beliefEdgesCheck = sqlite.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='belief_edges'").get();
58
+ if (!beliefEdgesCheck) {
59
+ sqlite.exec(`
60
+ CREATE TABLE IF NOT EXISTS belief_edges (
61
+ id TEXT PRIMARY KEY,
62
+ from_belief_id TEXT,
63
+ to_belief_id TEXT,
64
+ edge_type TEXT NOT NULL,
65
+ metadata TEXT,
66
+ created_at INTEGER,
67
+ UNIQUE(from_belief_id, to_belief_id, edge_type)
68
+ )
69
+ `);
70
+ }
71
+ // Run column migrations - adds missing columns to existing tables
72
+ await migrateTable(sqlite, beliefsSchema);
73
+ await migrateTable(sqlite, beliefMemorySourcesSchema);
74
+ await migrateTable(sqlite, beliefEdgesSchema);
75
+ }
76
+ //# sourceMappingURL=beliefs.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Core memory table migrations
3
+ */
4
+ import type { Database } from 'better-sqlite3';
5
+ export declare function runCoreMemoryMigrations(sqlite: Database): Promise<void>;
6
+ //# sourceMappingURL=core-memory.d.ts.map
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Core memory table migrations
3
+ */
4
+ import { logger } from '../../core/logger.js';
5
+ export async function runCoreMemoryMigrations(sqlite) {
6
+ const coreMemoryTableCheck = sqlite.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='core_memory'").get();
7
+ if (!coreMemoryTableCheck)
8
+ return;
9
+ const coreMemoryInfo = sqlite.prepare("PRAGMA table_info(core_memory)").all();
10
+ const existingCoreMemoryColumns = new Set(coreMemoryInfo.map(col => col.name));
11
+ const coreMemoryMigrations = [
12
+ { col: 'tokens_estimate', sql: 'ALTER TABLE core_memory ADD COLUMN tokens_estimate INTEGER DEFAULT 0 NOT NULL' },
13
+ ];
14
+ for (const migration of coreMemoryMigrations) {
15
+ if (!existingCoreMemoryColumns.has(migration.col)) {
16
+ try {
17
+ sqlite.exec(migration.sql);
18
+ logger.info(`Migration: Added column ${migration.col} to core_memory table`);
19
+ }
20
+ catch (error) {
21
+ const msg = error instanceof Error ? error.message : String(error);
22
+ if (!msg.includes('duplicate column name')) {
23
+ throw new Error(`Migration failed for core_memory.${migration.col}: ${msg}`);
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=core-memory.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * FTS (Full-Text Search) table migrations
3
+ */
4
+ import type { Database } from 'better-sqlite3';
5
+ export declare function runFtsMigrations(sqlite: Database): Promise<void>;
6
+ //# sourceMappingURL=fts.d.ts.map