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
@@ -8,6 +8,15 @@ const EXPLICIT_TRIGGER_PATTERNS = [
8
8
  { label: 'save-this', regex: /\bsave\s+this\b/i },
9
9
  { label: 'log-this', regex: /\blog\s+this\b/i },
10
10
  { label: 'important', regex: /\bimportant\s*:/i },
11
+ // New: Rationale comment triggers
12
+ { label: 'NOTE', regex: /NOTE:/i },
13
+ { label: 'IMPORTANT', regex: /IMPORTANT:/i },
14
+ { label: 'HACK', regex: /HACK:/i },
15
+ { label: 'WHY', regex: /WHY:/i },
16
+ { label: 'TODO', regex: /TODO:/i },
17
+ { label: 'FIXME', regex: /FIXME:/i },
18
+ { label: 'XXX', regex: /XXX:/i },
19
+ { label: 'DEPRECATED', regex: /DEPRECATED:/i },
11
20
  ];
12
21
  export function detectMemorySignals(content) {
13
22
  const text = content.trim();
@@ -20,23 +29,51 @@ export function detectMemorySignals(content) {
20
29
  /\b(?:always|never)\b/i.test(text),
21
30
  workflowRule: /\b(?:let'?s\s+always\s+do\s+it\s+this\s+way|standard\s+workflow|runbook)\b/i.test(text),
22
31
  lesson: /\b(?:failed\s+because|lesson\s+learned|next\s+time|do\s+not\s+repeat|root\s+cause)\b/i.test(text),
32
+ // New: Rationale patterns from code comments
33
+ note: /NOTE:/i.test(text),
34
+ important: /IMPORTANT:/i.test(text),
35
+ hack: /HACK:/i.test(text),
36
+ why: /WHY:/i.test(text),
37
+ todo: /TODO:/i.test(text),
38
+ fixme: /FIXME:/i.test(text),
23
39
  };
24
40
  let suggestedType = 'observation';
25
- if (implicit.preference)
26
- suggestedType = 'preference';
41
+ // Priority order: decision > preference > lesson > workflowRule > rationale > fact
27
42
  if (implicit.decision)
28
43
  suggestedType = 'decision';
29
- if (implicit.workflowRule || implicit.lesson)
44
+ else if (implicit.preference)
45
+ suggestedType = 'preference';
46
+ else if (implicit.workflowRule || implicit.lesson)
30
47
  suggestedType = 'context';
31
- if (!implicit.decision && !implicit.preference && /\b(?:is|are|was|were|uses|has|have)\b/i.test(text)) {
48
+ else if (implicit.todo)
49
+ suggestedType = 'task';
50
+ else if (!implicit.decision && !implicit.preference && /\b(?:is|are|was|were|uses|has|have)\b/i.test(text)) {
32
51
  suggestedType = 'fact';
33
52
  }
34
- const priority = explicitTriggers.length > 0 || implicit.correction ? 'high' : 'normal';
53
+ // Override for specific rationale markers
54
+ if (implicit.note || implicit.important)
55
+ suggestedType = 'observation';
56
+ if (implicit.why)
57
+ suggestedType = 'context';
58
+ // Determine confidence based on signal strength
59
+ let confidence = 'certain';
60
+ if (implicit.note || implicit.todo)
61
+ confidence = 'speculative';
62
+ if (implicit.hack || implicit.fixme)
63
+ confidence = 'certain'; // Known issues are certain
64
+ const priority = explicitTriggers.length > 0 ||
65
+ implicit.correction ||
66
+ implicit.important ||
67
+ implicit.hack ||
68
+ implicit.fixme
69
+ ? 'high'
70
+ : 'normal';
35
71
  return {
36
72
  explicitTriggers,
37
73
  implicit,
38
74
  suggestedType,
39
75
  priority,
76
+ confidence,
40
77
  };
41
78
  }
42
79
  //# sourceMappingURL=trigger-detector.js.map
@@ -3,7 +3,7 @@
3
3
  * Validates memories before writing to ensure quality, security, and consistency
4
4
  * Integrates secret detection, trigger detection, and content validation
5
5
  */
6
- import { detectSecrets, redactSecrets } from '../secret-detector.js';
6
+ import { detectSecrets, redactSecrets } from '../security/secret-detector.js';
7
7
  import { detectMemorySignals } from './trigger-detector.js';
8
8
  import { resolveContradictions } from './contradiction-resolver.js';
9
9
  import { logger } from '../logger.js';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Places Module - Spatial memory organization
3
+ *
4
+ * Exports:
5
+ * - places.ts: CRUD operations for places
6
+ * - rules.ts: Auto-assignment rules engine
7
+ * - memory-places.ts: Memory-to-place assignments
8
+ * - walking.ts: Sequential walking through places
9
+ */
10
+ export * from './places.js';
11
+ export * from './rules.js';
12
+ export * from './memory-places.js';
13
+ export * from './walking.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Places Module - Spatial memory organization
3
+ *
4
+ * Exports:
5
+ * - places.ts: CRUD operations for places
6
+ * - rules.ts: Auto-assignment rules engine
7
+ * - memory-places.ts: Memory-to-place assignments
8
+ * - walking.ts: Sequential walking through places
9
+ */
10
+ export * from './places.js';
11
+ export * from './rules.js';
12
+ export * from './memory-places.js';
13
+ export * from './walking.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Memory-Place Assignments - Assign memories to places
3
+ *
4
+ * Handles the assignment of memories to places, both:
5
+ * - Auto-assignment via rules
6
+ * - Manual assignment by users
7
+ */
8
+ import type { PlaceType } from './places.js';
9
+ /**
10
+ * Assign a memory to a place (auto or manual)
11
+ */
12
+ export declare function assignMemoryToPlace(params: {
13
+ memoryId: string;
14
+ placeId: string;
15
+ isManual?: boolean;
16
+ ruleId?: string;
17
+ }): Promise<boolean>;
18
+ /**
19
+ * Auto-assign a memory based on rules
20
+ */
21
+ export declare function autoAssignMemory(params: {
22
+ memoryId: string;
23
+ projectId: string;
24
+ toolName?: string;
25
+ content?: string;
26
+ tags?: string[];
27
+ memoryType?: string;
28
+ }): Promise<{
29
+ assigned: boolean;
30
+ placeId?: string;
31
+ placeType?: PlaceType;
32
+ }>;
33
+ /**
34
+ * Manually assign a memory to a place
35
+ */
36
+ export declare function manualAssignMemory(params: {
37
+ memoryId: string;
38
+ projectId: string;
39
+ placeType: PlaceType;
40
+ }): Promise<boolean>;
41
+ /**
42
+ * Get place for a memory
43
+ */
44
+ export declare function getMemoryPlace(memoryId: string): Promise<string | null>;
45
+ /**
46
+ * Get memories for a place
47
+ */
48
+ export declare function getPlaceMemories(placeId: string, limit?: number): Promise<string[]>;
49
+ /**
50
+ * Remove memory from place
51
+ */
52
+ export declare function removeMemoryFromPlace(memoryId: string): Promise<boolean>;
53
+ /**
54
+ * Initialize memory-place for a project (ensures all memories without places get assigned)
55
+ */
56
+ export declare function initializeProjectPlaces(projectId: string): Promise<{
57
+ initialized: number;
58
+ assigned: number;
59
+ }>;
60
+ /**
61
+ * Auto-archive old memories - move memories > 30 days from active places to Archive
62
+ * Keeps active places lean and organized
63
+ */
64
+ export declare function autoArchiveOldMemories(projectId: string, daysOld?: number): Promise<{
65
+ archived: number;
66
+ failed: number;
67
+ }>;
68
+ //# sourceMappingURL=memory-places.d.ts.map
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Memory-Place Assignments - Assign memories to places
3
+ *
4
+ * Handles the assignment of memories to places, both:
5
+ * - Auto-assignment via rules
6
+ * - Manual assignment by users
7
+ */
8
+ import { randomUUID } from 'crypto';
9
+ import { eq, and } from 'drizzle-orm';
10
+ import { getDb } from '../../db/index.js';
11
+ import { getSchema } from '../../db/schema.js';
12
+ import { logger } from '../logger.js';
13
+ import { getPlaceByType, updatePlaceMemoryCount } from './places.js';
14
+ import { findMatchingPlace } from './rules.js';
15
+ /**
16
+ * Assign a memory to a place (auto or manual)
17
+ */
18
+ export async function assignMemoryToPlace(params) {
19
+ const db = await getDb();
20
+ if (!db)
21
+ return false;
22
+ const schema = await getSchema();
23
+ const sqliteDb = db;
24
+ const id = randomUUID();
25
+ // Check if already assigned
26
+ const existing = await sqliteDb.select()
27
+ .from(schema.memoryPlaces)
28
+ .where(eq(schema.memoryPlaces.memoryId, params.memoryId))
29
+ .limit(1);
30
+ if (existing.length > 0) {
31
+ // Update existing
32
+ await sqliteDb.update(schema.memoryPlaces)
33
+ .set({
34
+ placeId: params.placeId,
35
+ isManual: params.isManual ? 1 : 0,
36
+ ruleId: params.ruleId || null,
37
+ })
38
+ .where(eq(schema.memoryPlaces.memoryId, params.memoryId));
39
+ }
40
+ else {
41
+ // Insert new
42
+ await sqliteDb.insert(schema.memoryPlaces).values({
43
+ id,
44
+ memoryId: params.memoryId,
45
+ placeId: params.placeId,
46
+ isManual: params.isManual ? 1 : 0,
47
+ ruleId: params.ruleId || null,
48
+ });
49
+ }
50
+ // Update memory's place reference
51
+ await sqliteDb.update(schema.memories)
52
+ .set({ placeId: params.placeId })
53
+ .where(eq(schema.memories.id, params.memoryId));
54
+ // Update place memory count
55
+ await updatePlaceMemoryCount(params.placeId);
56
+ logger.info(`[MemoryPlaces] Assigned memory ${params.memoryId} to place ${params.placeId}`);
57
+ return true;
58
+ }
59
+ /**
60
+ * Auto-assign a memory based on rules
61
+ */
62
+ export async function autoAssignMemory(params) {
63
+ const { memoryId, projectId, toolName, content, tags, memoryType } = params;
64
+ // Find matching place via rules
65
+ const placeType = await findMatchingPlace(projectId, {
66
+ toolName,
67
+ content,
68
+ tags,
69
+ memoryType,
70
+ });
71
+ if (!placeType) {
72
+ logger.info(`[MemoryPlaces] No matching rule for memory ${memoryId}`);
73
+ return { assigned: false };
74
+ }
75
+ // Get the place
76
+ const place = await getPlaceByType(projectId, placeType);
77
+ if (!place) {
78
+ logger.warn(`[MemoryPlaces] Place not found: ${placeType}`);
79
+ return { assigned: false };
80
+ }
81
+ // Assign
82
+ const success = await assignMemoryToPlace({
83
+ memoryId,
84
+ placeId: place.id,
85
+ isManual: false,
86
+ });
87
+ return {
88
+ assigned: success,
89
+ placeId: place.id,
90
+ placeType,
91
+ };
92
+ }
93
+ /**
94
+ * Manually assign a memory to a place
95
+ */
96
+ export async function manualAssignMemory(params) {
97
+ const { memoryId, projectId, placeType } = params;
98
+ // Get the place by type
99
+ const place = await getPlaceByType(projectId, placeType);
100
+ if (!place) {
101
+ logger.warn(`[MemoryPlaces] Place not found: ${placeType}`);
102
+ return false;
103
+ }
104
+ return assignMemoryToPlace({
105
+ memoryId,
106
+ placeId: place.id,
107
+ isManual: true,
108
+ });
109
+ }
110
+ /**
111
+ * Get place for a memory
112
+ */
113
+ export async function getMemoryPlace(memoryId) {
114
+ const db = await getDb();
115
+ if (!db)
116
+ return null;
117
+ const schema = await getSchema();
118
+ const sqliteDb = db;
119
+ const result = await sqliteDb.select()
120
+ .from(schema.memoryPlaces)
121
+ .where(eq(schema.memoryPlaces.memoryId, memoryId))
122
+ .limit(1);
123
+ return result.length > 0 ? result[0].place_id : null;
124
+ }
125
+ /**
126
+ * Get memories for a place
127
+ */
128
+ export async function getPlaceMemories(placeId, limit = 50) {
129
+ const db = await getDb();
130
+ if (!db)
131
+ return [];
132
+ const schema = await getSchema();
133
+ const sqliteDb = db;
134
+ const results = await sqliteDb.select({ memoryId: schema.memoryPlaces.memoryId })
135
+ .from(schema.memoryPlaces)
136
+ .where(eq(schema.memoryPlaces.placeId, placeId))
137
+ .limit(limit);
138
+ return results.map((r) => r.memoryId);
139
+ }
140
+ /**
141
+ * Remove memory from place
142
+ */
143
+ export async function removeMemoryFromPlace(memoryId) {
144
+ const db = await getDb();
145
+ if (!db)
146
+ return false;
147
+ const schema = await getSchema();
148
+ const sqliteDb = db;
149
+ // Get the place before deleting
150
+ const existing = await sqliteDb.select()
151
+ .from(schema.memoryPlaces)
152
+ .where(eq(schema.memoryPlaces.memoryId, memoryId))
153
+ .limit(1);
154
+ if (existing.length > 0) {
155
+ const oldPlaceId = existing[0].place_id;
156
+ // Delete assignment
157
+ await sqliteDb.delete(schema.memoryPlaces)
158
+ .where(eq(schema.memoryPlaces.memoryId, memoryId));
159
+ // Clear memory's place reference
160
+ await sqliteDb.update(schema.memories)
161
+ .set({ placeId: null })
162
+ .where(eq(schema.memories.id, memoryId));
163
+ // Update old place memory count
164
+ await updatePlaceMemoryCount(oldPlaceId);
165
+ logger.info(`[MemoryPlaces] Removed memory ${memoryId} from place ${oldPlaceId}`);
166
+ }
167
+ return true;
168
+ }
169
+ /**
170
+ * Initialize memory-place for a project (ensures all memories without places get assigned)
171
+ */
172
+ export async function initializeProjectPlaces(projectId) {
173
+ const db = await getDb();
174
+ if (!db)
175
+ return { initialized: 0, assigned: 0 };
176
+ const schema = await getSchema();
177
+ const sqliteDb = db;
178
+ // Get all memories without a place_id
179
+ const memoriesWithoutPlace = await sqliteDb.select({ id: schema.memories.id })
180
+ .from(schema.memories)
181
+ .where(and(eq(schema.memories.projectId, projectId)));
182
+ let assigned = 0;
183
+ for (const mem of memoriesWithoutPlace) {
184
+ const result = await autoAssignMemory({
185
+ memoryId: mem.id,
186
+ projectId,
187
+ memoryType: 'observation',
188
+ });
189
+ if (result.assigned)
190
+ assigned++;
191
+ }
192
+ logger.info(`[MemoryPlaces] Initialized places for project ${projectId}: ${assigned} assigned`);
193
+ return { initialized: memoriesWithoutPlace.length, assigned };
194
+ }
195
+ /**
196
+ * Auto-archive old memories - move memories > 30 days from active places to Archive
197
+ * Keeps active places lean and organized
198
+ */
199
+ export async function autoArchiveOldMemories(projectId, daysOld = 30) {
200
+ const db = await getDb();
201
+ if (!db)
202
+ return { archived: 0, failed: 0 };
203
+ const schema = await getSchema();
204
+ const sqliteDb = db;
205
+ // Get the Archive place
206
+ const archivePlace = await getPlaceByType(projectId, 'archive');
207
+ if (!archivePlace) {
208
+ logger.warn(`[MemoryPlaces] Archive place not found for project ${projectId}`);
209
+ return { archived: 0, failed: 0 };
210
+ }
211
+ // Calculate cutoff date (Unix timestamp for SQLite)
212
+ const cutoffDate = new Date();
213
+ cutoffDate.setDate(cutoffDate.getDate() - daysOld);
214
+ const cutoffTimestamp = Math.floor(cutoffDate.getTime() / 1000);
215
+ // Get all active place IDs (not archive)
216
+ const allPlaces = await sqliteDb.select()
217
+ .from(schema.places)
218
+ .where(eq(schema.places.projectId, projectId));
219
+ const activePlaceIds = allPlaces
220
+ .filter((p) => p.place_type !== 'archive')
221
+ .map((p) => p.id);
222
+ if (activePlaceIds.length === 0) {
223
+ return { archived: 0, failed: 0 };
224
+ }
225
+ // Find memories in active places that are older than cutoff
226
+ // Use raw SQL for complex date comparison
227
+ const oldMemories = await sqliteDb.select({
228
+ memoryId: schema.memories.id,
229
+ placeId: schema.memoryPlaces.placeId,
230
+ createdAt: schema.memories.createdAt,
231
+ })
232
+ .from(schema.memories)
233
+ .innerJoin(schema.memoryPlaces, eq(schema.memories.id, schema.memoryPlaces.memoryId))
234
+ .where(and(eq(schema.memories.projectId, projectId)));
235
+ // Actually filter in JS for simplicity
236
+ const memoriesToArchive = oldMemories.filter((m) => activePlaceIds.includes(m.placeId) && m.createdAt < cutoffTimestamp);
237
+ let archived = 0;
238
+ let failed = 0;
239
+ for (const mem of memoriesToArchive) {
240
+ try {
241
+ // Move to archive place
242
+ await sqliteDb.update(schema.memoryPlaces)
243
+ .set({ placeId: archivePlace.id })
244
+ .where(eq(schema.memoryPlaces.memoryId, mem.memoryId));
245
+ // Update the old place's memory count
246
+ await updatePlaceMemoryCount(mem.placeId);
247
+ archived++;
248
+ }
249
+ catch (e) {
250
+ logger.warn(`[MemoryPlaces] Failed to archive memory ${mem.memoryId}: ${e}`);
251
+ failed++;
252
+ }
253
+ }
254
+ // Update archive place memory count
255
+ if (archived > 0) {
256
+ await updatePlaceMemoryCount(archivePlace.id);
257
+ logger.info(`[MemoryPlaces] Archived ${archived} old memories to Archive place`);
258
+ }
259
+ return { archived, failed };
260
+ }
261
+ //# sourceMappingURL=memory-places.js.map
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Places Module - Spatial memory organization
3
+ *
4
+ * Provides spatial "places" for memory organization:
5
+ * - Inbox: New memories, unprocessed
6
+ * - Ref: Reference, patterns, research
7
+ * - WIP: Active work, implementations
8
+ * - Sandbox: Experiments, tests
9
+ * - Board: Decisions, planning, roadmap
10
+ * - Sparks: Ideas, future concepts
11
+ * - Archive: Completed, historical
12
+ */
13
+ export type PlaceType = 'inbox' | 'ref' | 'wip' | 'sandbox' | 'board' | 'sparks' | 'archive';
14
+ export interface Place {
15
+ id: string;
16
+ projectId: string;
17
+ name: string;
18
+ placeType: PlaceType;
19
+ parentId: string | null;
20
+ sortOrder: number;
21
+ positionX: number;
22
+ positionY: number;
23
+ description: string | null;
24
+ purpose: string | null;
25
+ memoryCount: number;
26
+ createdAt: Date;
27
+ updatedAt: Date;
28
+ }
29
+ export interface PlaceCreateInput {
30
+ projectId: string;
31
+ name: string;
32
+ placeType: PlaceType;
33
+ parentId?: string | null;
34
+ sortOrder?: number;
35
+ description?: string;
36
+ purpose?: string;
37
+ }
38
+ export interface PlaceUpdateInput {
39
+ name?: string;
40
+ description?: string;
41
+ purpose?: string;
42
+ sortOrder?: number;
43
+ positionX?: number;
44
+ positionY?: number;
45
+ }
46
+ export declare const DEFAULT_PLACES: Omit<PlaceCreateInput, 'projectId'>[];
47
+ /**
48
+ * Create a new place
49
+ */
50
+ export declare function createPlace(input: PlaceCreateInput): Promise<Place>;
51
+ /**
52
+ * Get a place by ID
53
+ */
54
+ export declare function getPlace(id: string): Promise<Place | null>;
55
+ /**
56
+ * Get places for a project, ordered by sort_order
57
+ */
58
+ export declare function getProjectPlaces(projectId: string): Promise<Place[]>;
59
+ /**
60
+ * Get place by type for a project
61
+ */
62
+ export declare function getPlaceByType(projectId: string, placeType: PlaceType): Promise<Place | null>;
63
+ /**
64
+ * Update a place
65
+ */
66
+ export declare function updatePlace(id: string, input: PlaceUpdateInput): Promise<Place | null>;
67
+ /**
68
+ * Delete a place
69
+ */
70
+ export declare function deletePlace(id: string): Promise<boolean>;
71
+ /**
72
+ * Initialize default 7 places for a project
73
+ */
74
+ export declare function initializeDefaultPlaces(projectId: string): Promise<Place[]>;
75
+ /**
76
+ * Get place by loci index
77
+ */
78
+ export declare function getPlaceByLociIndex(projectId: string, sortOrder: number): Promise<Place | null>;
79
+ /**
80
+ * Update memory count for a place
81
+ */
82
+ export declare function updatePlaceMemoryCount(placeId: string): Promise<void>;
83
+ /**
84
+ * Sync all place memory counts - recalculate counts for all places in a project
85
+ * Useful for fixing counts after bulk operations or data recovery
86
+ */
87
+ export declare function syncAllPlaceMemoryCounts(projectId: string): Promise<void>;
88
+ //# sourceMappingURL=places.d.ts.map