squish-memory 1.1.5 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (646) hide show
  1. package/.env.example +32 -16
  2. package/CHANGELOG.md +147 -0
  3. package/README.md +120 -78
  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 +44 -0
  8. package/bin/squish.mjs +33 -0
  9. package/config/mcp-migration-map.json +1 -6
  10. package/config/mcp-mode-semantics.json +19 -23
  11. package/config/mcp-remote-auth.json +3 -26
  12. package/config/mcp-universal.schema.json +5 -35
  13. package/config/settings.json +107 -52
  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/{dist/core/algorithms/index.js → core/algorithms/index.ts} +39 -26
  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/{dist/core/local-embeddings.js → core/embeddings/local-embeddings.ts} +12 -11
  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/{dist/core/lib/db-client.d.ts → core/lib/db-client.ts} +168 -114
  81. package/core/lib/parse-embedding.ts +59 -0
  82. package/{dist/core/lib/schemas.js → core/lib/schemas.ts} +102 -87
  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/{dist/core/memory/index.js → core/memory/index.ts} +11 -10
  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/{dist/core/places/index.js → core/places/index.ts} +12 -12
  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 +590 -0
  140. package/core/scheduler/heartbeat.ts +91 -0
  141. package/{dist/core/scheduler/index.js → core/scheduler/index.ts} +8 -8
  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/{dist/core/search/index.js → core/search/index.ts} +4 -5
  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/{dist/core/session/index.js → core/session/index.ts} +7 -7
  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/{dist/core/snapshots/cleanup.js → core/snapshots/cleanup.ts} +13 -12
  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/{dist/core/summarization/cleanup.js → core/summarization/cleanup.ts} +13 -12
  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/{dist/core/utils/vector-operations.js → core/utils/vector-operations.ts} +135 -129
  185. package/core/utils/version-management.ts +74 -0
  186. package/core/worker.ts +333 -0
  187. package/db/adapter.ts +215 -0
  188. package/{dist/db/bootstrap.js → db/bootstrap.ts} +388 -418
  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/mcp.json.example +8 -11
  220. package/package.json +140 -159
  221. package/packages/cli/package.json +22 -0
  222. package/packages/cli/src/commands/clean.ts +68 -0
  223. package/packages/cli/src/commands/context.ts +79 -0
  224. package/packages/cli/src/commands/doctor.ts +357 -0
  225. package/packages/cli/src/commands/forget.ts +72 -0
  226. package/packages/cli/src/commands/health.ts +36 -0
  227. package/packages/cli/src/commands/inspect.ts +41 -0
  228. package/packages/cli/src/commands/link.ts +50 -0
  229. package/packages/cli/src/commands/migrate.ts +93 -0
  230. package/packages/cli/src/commands/recall.ts +99 -0
  231. package/packages/cli/src/commands/recent.ts +57 -0
  232. package/packages/cli/src/commands/remember.ts +139 -0
  233. package/packages/cli/src/commands/run.ts +58 -0
  234. package/packages/cli/src/commands/stale.ts +43 -0
  235. package/packages/cli/src/commands/stats.ts +42 -0
  236. package/packages/cli/src/index.ts +57 -0
  237. package/packages/cli/tsconfig.json +24 -0
  238. package/packages/mcp/package.json +26 -0
  239. package/packages/mcp/src/index.ts +940 -0
  240. package/packages/mcp/tsconfig.json +20 -0
  241. package/skills/squish-memory/SKILL.md +38 -35
  242. package/skills/squish-memory/{scripts/install.sh → install.sh} +1 -1
  243. package/skills/squish-memory/references/claude-desktop.json +12 -0
  244. package/skills/squish-memory/references/openclaw.json +13 -0
  245. package/skills/squish-memory/references/opencode.json +14 -0
  246. package/config/hooks/claude-code-hooks.json +0 -39
  247. package/config/hooks/cursor-hooks.json +0 -30
  248. package/config/hooks/opencode-hooks.json +0 -30
  249. package/config/hooks/windsurf-hooks.json +0 -30
  250. package/config/mcp-cli-fallback-policy.json +0 -22
  251. package/config/mcp.json +0 -38
  252. package/config/plugin-manifest.json +0 -101
  253. package/config/plugin-manifest.schema.json +0 -244
  254. package/config/plugin.json +0 -32
  255. package/config/remote-memory-policy.json +0 -32
  256. package/core/commands/context-paging.md +0 -51
  257. package/core/commands/context-status.md +0 -22
  258. package/core/commands/context.md +0 -5
  259. package/core/commands/core-memory.md +0 -56
  260. package/core/commands/health.md +0 -5
  261. package/core/commands/init.md +0 -39
  262. package/core/commands/merge.md +0 -113
  263. package/core/commands/recall.md +0 -5
  264. package/core/commands/remember.md +0 -11
  265. package/core/commands/search.md +0 -10
  266. package/dist/config.d.ts +0 -83
  267. package/dist/config.js +0 -242
  268. package/dist/core/adapters/config/claude-code.d.ts +0 -45
  269. package/dist/core/adapters/config/claude-code.js +0 -113
  270. package/dist/core/adapters/config/cursor.d.ts +0 -26
  271. package/dist/core/adapters/config/cursor.js +0 -74
  272. package/dist/core/adapters/config/opencode.d.ts +0 -23
  273. package/dist/core/adapters/config/opencode.js +0 -73
  274. package/dist/core/adapters/config/windsurf.d.ts +0 -26
  275. package/dist/core/adapters/config/windsurf.js +0 -74
  276. package/dist/core/adapters/index.d.ts +0 -45
  277. package/dist/core/adapters/index.js +0 -84
  278. package/dist/core/adapters/scripts/install-adapter.d.ts +0 -19
  279. package/dist/core/adapters/scripts/install-adapter.js +0 -149
  280. package/dist/core/adapters/timeline.d.ts +0 -23
  281. package/dist/core/adapters/timeline.js +0 -88
  282. package/dist/core/adapters/types.d.ts +0 -157
  283. package/dist/core/adapters/types.js +0 -50
  284. package/dist/core/algorithms/analytics/token-estimator.d.ts +0 -50
  285. package/dist/core/algorithms/analytics/token-estimator.js +0 -154
  286. package/dist/core/algorithms/detection/hash-filters.d.ts +0 -47
  287. package/dist/core/algorithms/detection/hash-filters.js +0 -190
  288. package/dist/core/algorithms/detection/semantic-ranker.d.ts +0 -32
  289. package/dist/core/algorithms/detection/semantic-ranker.js +0 -118
  290. package/dist/core/algorithms/detection/two-stage-detector.d.ts +0 -52
  291. package/dist/core/algorithms/detection/two-stage-detector.js +0 -299
  292. package/dist/core/algorithms/handlers/approve-merge.d.ts +0 -22
  293. package/dist/core/algorithms/handlers/approve-merge.js +0 -179
  294. package/dist/core/algorithms/handlers/detect-duplicates.d.ts +0 -47
  295. package/dist/core/algorithms/handlers/detect-duplicates.js +0 -145
  296. package/dist/core/algorithms/handlers/get-stats.d.ts +0 -39
  297. package/dist/core/algorithms/handlers/get-stats.js +0 -88
  298. package/dist/core/algorithms/handlers/list-proposals.d.ts +0 -45
  299. package/dist/core/algorithms/handlers/list-proposals.js +0 -83
  300. package/dist/core/algorithms/handlers/preview-merge.d.ts +0 -39
  301. package/dist/core/algorithms/handlers/preview-merge.js +0 -93
  302. package/dist/core/algorithms/handlers/reject-merge.d.ts +0 -28
  303. package/dist/core/algorithms/handlers/reject-merge.js +0 -69
  304. package/dist/core/algorithms/handlers/reverse-merge.d.ts +0 -21
  305. package/dist/core/algorithms/handlers/reverse-merge.js +0 -121
  306. package/dist/core/algorithms/index.d.ts +0 -21
  307. package/dist/core/algorithms/operations/cache-maintenance.d.ts +0 -12
  308. package/dist/core/algorithms/operations/cache-maintenance.js +0 -157
  309. package/dist/core/algorithms/safety/safety-checks.d.ts +0 -22
  310. package/dist/core/algorithms/safety/safety-checks.js +0 -179
  311. package/dist/core/algorithms/strategies/merge-strategies.d.ts +0 -50
  312. package/dist/core/algorithms/strategies/merge-strategies.js +0 -288
  313. package/dist/core/algorithms/types.d.ts +0 -133
  314. package/dist/core/algorithms/types.js +0 -5
  315. package/dist/core/algorithms/utils/response-builder.d.ts +0 -28
  316. package/dist/core/algorithms/utils/response-builder.js +0 -37
  317. package/dist/core/associations.d.ts +0 -31
  318. package/dist/core/associations.js +0 -248
  319. package/dist/core/autosave.d.ts +0 -19
  320. package/dist/core/autosave.js +0 -16
  321. package/dist/core/commands/managed-sync.d.ts +0 -10
  322. package/dist/core/commands/managed-sync.js +0 -64
  323. package/dist/core/commands/mcp-server.d.ts +0 -3
  324. package/dist/core/commands/mcp-server.js +0 -739
  325. package/dist/core/consolidation.d.ts +0 -37
  326. package/dist/core/consolidation.js +0 -248
  327. package/dist/core/context/agent-context.d.ts +0 -106
  328. package/dist/core/context/agent-context.js +0 -274
  329. package/dist/core/context/context-paging.d.ts +0 -80
  330. package/dist/core/context/context-paging.js +0 -328
  331. package/dist/core/context/context-window.d.ts +0 -40
  332. package/dist/core/context/context-window.js +0 -177
  333. package/dist/core/context/context.d.ts +0 -7
  334. package/dist/core/context/context.js +0 -22
  335. package/dist/core/embeddings/google-multimodal.d.ts +0 -14
  336. package/dist/core/embeddings/google-multimodal.js +0 -142
  337. package/dist/core/embeddings/qmd-client.d.ts +0 -136
  338. package/dist/core/embeddings/qmd-client.js +0 -403
  339. package/dist/core/embeddings.d.ts +0 -29
  340. package/dist/core/embeddings.js +0 -454
  341. package/dist/core/error-handling.d.ts +0 -63
  342. package/dist/core/error-handling.js +0 -173
  343. package/dist/core/external-folder/index.d.ts +0 -102
  344. package/dist/core/external-folder/index.js +0 -294
  345. package/dist/core/hooks/agent-hooks.d.ts +0 -74
  346. package/dist/core/hooks/agent-hooks.js +0 -244
  347. package/dist/core/hooks/auto-tagger.d.ts +0 -19
  348. package/dist/core/hooks/auto-tagger.js +0 -155
  349. package/dist/core/hooks/capture-filter.d.ts +0 -41
  350. package/dist/core/hooks/capture-filter.js +0 -128
  351. package/dist/core/index.d.ts +0 -10
  352. package/dist/core/index.js +0 -14
  353. package/dist/core/ingestion/agent-memory.d.ts +0 -22
  354. package/dist/core/ingestion/agent-memory.js +0 -109
  355. package/dist/core/ingestion/core-memory.d.ts +0 -78
  356. package/dist/core/ingestion/core-memory.js +0 -226
  357. package/dist/core/ingestion/learnings.d.ts +0 -57
  358. package/dist/core/ingestion/learnings.js +0 -202
  359. package/dist/core/layers/generator.d.ts +0 -25
  360. package/dist/core/layers/generator.js +0 -76
  361. package/dist/core/lib/db-client.js +0 -130
  362. package/dist/core/lib/schemas.d.ts +0 -129
  363. package/dist/core/lib/utils.d.ts +0 -14
  364. package/dist/core/lib/utils.js +0 -90
  365. package/dist/core/lib/validation.d.ts +0 -38
  366. package/dist/core/lib/validation.js +0 -151
  367. package/dist/core/lifecycle.d.ts +0 -26
  368. package/dist/core/lifecycle.js +0 -302
  369. package/dist/core/local-embeddings.d.ts +0 -11
  370. package/dist/core/logger.d.ts +0 -16
  371. package/dist/core/logger.js +0 -40
  372. package/dist/core/mcp/client.d.ts +0 -17
  373. package/dist/core/mcp/client.js +0 -101
  374. package/dist/core/mcp/index.d.ts +0 -6
  375. package/dist/core/mcp/index.js +0 -6
  376. package/dist/core/mcp/server.d.ts +0 -18
  377. package/dist/core/mcp/server.js +0 -157
  378. package/dist/core/mcp/standalone-server.d.ts +0 -13
  379. package/dist/core/mcp/standalone-server.js +0 -46
  380. package/dist/core/mcp/tools.d.ts +0 -9
  381. package/dist/core/mcp/tools.js +0 -365
  382. package/dist/core/mcp/types.d.ts +0 -315
  383. package/dist/core/mcp/types.js +0 -48
  384. package/dist/core/memory/bridge-discovery.d.ts +0 -50
  385. package/dist/core/memory/bridge-discovery.js +0 -291
  386. package/dist/core/memory/categorizer.d.ts +0 -27
  387. package/dist/core/memory/categorizer.js +0 -305
  388. package/dist/core/memory/conflict-detector.d.ts +0 -7
  389. package/dist/core/memory/conflict-detector.js +0 -43
  390. package/dist/core/memory/consolidation.d.ts +0 -42
  391. package/dist/core/memory/consolidation.js +0 -303
  392. package/dist/core/memory/context-collector.d.ts +0 -10
  393. package/dist/core/memory/context-collector.js +0 -56
  394. package/dist/core/memory/contradiction-resolver.d.ts +0 -40
  395. package/dist/core/memory/contradiction-resolver.js +0 -368
  396. package/dist/core/memory/edit-workflow.d.ts +0 -19
  397. package/dist/core/memory/edit-workflow.js +0 -120
  398. package/dist/core/memory/entity-extractor.d.ts +0 -33
  399. package/dist/core/memory/entity-extractor.js +0 -336
  400. package/dist/core/memory/entity-resolver.d.ts +0 -23
  401. package/dist/core/memory/entity-resolver.js +0 -64
  402. package/dist/core/memory/fact-extractor.d.ts +0 -24
  403. package/dist/core/memory/fact-extractor.js +0 -89
  404. package/dist/core/memory/feedback-tracker.d.ts +0 -12
  405. package/dist/core/memory/feedback-tracker.js +0 -155
  406. package/dist/core/memory/hooks.d.ts +0 -88
  407. package/dist/core/memory/hooks.js +0 -174
  408. package/dist/core/memory/hybrid-retrieval.d.ts +0 -29
  409. package/dist/core/memory/hybrid-retrieval.js +0 -139
  410. package/dist/core/memory/hybrid-scorer.d.ts +0 -40
  411. package/dist/core/memory/hybrid-scorer.js +0 -284
  412. package/dist/core/memory/hybrid-search.d.ts +0 -20
  413. package/dist/core/memory/hybrid-search.js +0 -359
  414. package/dist/core/memory/importance.d.ts +0 -63
  415. package/dist/core/memory/importance.js +0 -298
  416. package/dist/core/memory/index.d.ts +0 -8
  417. package/dist/core/memory/loader.d.ts +0 -31
  418. package/dist/core/memory/loader.js +0 -141
  419. package/dist/core/memory/markdown/markdown-storage.d.ts +0 -72
  420. package/dist/core/memory/markdown/markdown-storage.js +0 -243
  421. package/dist/core/memory/memories.d.ts +0 -47
  422. package/dist/core/memory/memories.js +0 -449
  423. package/dist/core/memory/memory-lifecycle.d.ts +0 -8
  424. package/dist/core/memory/memory-lifecycle.js +0 -55
  425. package/dist/core/memory/memory-manager.d.ts +0 -15
  426. package/dist/core/memory/memory-manager.js +0 -46
  427. package/dist/core/memory/migrate.d.ts +0 -21
  428. package/dist/core/memory/migrate.js +0 -134
  429. package/dist/core/memory/normalization.d.ts +0 -22
  430. package/dist/core/memory/normalization.js +0 -26
  431. package/dist/core/memory/progressive-disclosure.d.ts +0 -43
  432. package/dist/core/memory/progressive-disclosure.js +0 -280
  433. package/dist/core/memory/query-processor.d.ts +0 -21
  434. package/dist/core/memory/query-processor.js +0 -72
  435. package/dist/core/memory/query-rewriter.d.ts +0 -13
  436. package/dist/core/memory/query-rewriter.js +0 -118
  437. package/dist/core/memory/response-analyzer.d.ts +0 -9
  438. package/dist/core/memory/response-analyzer.js +0 -61
  439. package/dist/core/memory/serialization.d.ts +0 -10
  440. package/dist/core/memory/serialization.js +0 -84
  441. package/dist/core/memory/stats.d.ts +0 -22
  442. package/dist/core/memory/stats.js +0 -138
  443. package/dist/core/memory/telemetry.d.ts +0 -69
  444. package/dist/core/memory/telemetry.js +0 -313
  445. package/dist/core/memory/temporal-facts.d.ts +0 -41
  446. package/dist/core/memory/temporal-facts.js +0 -283
  447. package/dist/core/memory/temporal-parser.d.ts +0 -32
  448. package/dist/core/memory/temporal-parser.js +0 -385
  449. package/dist/core/memory/trigger-detector.d.ts +0 -14
  450. package/dist/core/memory/trigger-detector.js +0 -42
  451. package/dist/core/memory/write-gate.d.ts +0 -54
  452. package/dist/core/memory/write-gate.js +0 -210
  453. package/dist/core/namespaces/index.d.ts +0 -71
  454. package/dist/core/namespaces/index.js +0 -305
  455. package/dist/core/namespaces/uri-parser.d.ts +0 -31
  456. package/dist/core/namespaces/uri-parser.js +0 -74
  457. package/dist/core/obsidian-vault.d.ts +0 -30
  458. package/dist/core/obsidian-vault.js +0 -94
  459. package/dist/core/places/index.d.ts +0 -14
  460. package/dist/core/places/memory-places.d.ts +0 -68
  461. package/dist/core/places/memory-places.js +0 -261
  462. package/dist/core/places/places.d.ts +0 -88
  463. package/dist/core/places/places.js +0 -314
  464. package/dist/core/places/rules.d.ts +0 -74
  465. package/dist/core/places/rules.js +0 -240
  466. package/dist/core/places/walking.d.ts +0 -56
  467. package/dist/core/places/walking.js +0 -121
  468. package/dist/core/projects.d.ts +0 -17
  469. package/dist/core/projects.js +0 -108
  470. package/dist/core/redis.d.ts +0 -11
  471. package/dist/core/redis.js +0 -69
  472. package/dist/core/responses.d.ts +0 -96
  473. package/dist/core/responses.js +0 -122
  474. package/dist/core/scheduler/cron-scheduler.d.ts +0 -32
  475. package/dist/core/scheduler/cron-scheduler.js +0 -332
  476. package/dist/core/scheduler/heartbeat.d.ts +0 -11
  477. package/dist/core/scheduler/heartbeat.js +0 -73
  478. package/dist/core/scheduler/index.d.ts +0 -8
  479. package/dist/core/scheduler/job-runner.d.ts +0 -11
  480. package/dist/core/scheduler/job-runner.js +0 -164
  481. package/dist/core/search/conversations.d.ts +0 -25
  482. package/dist/core/search/conversations.js +0 -110
  483. package/dist/core/search/entities.d.ts +0 -12
  484. package/dist/core/search/entities.js +0 -31
  485. package/dist/core/search/folder-context.d.ts +0 -25
  486. package/dist/core/search/folder-context.js +0 -119
  487. package/dist/core/search/graph-boost.d.ts +0 -7
  488. package/dist/core/search/graph-boost.js +0 -23
  489. package/dist/core/search/index.d.ts +0 -4
  490. package/dist/core/search/qmd-search.d.ts +0 -61
  491. package/dist/core/search/qmd-search.js +0 -178
  492. package/dist/core/security/encrypt.d.ts +0 -6
  493. package/dist/core/security/encrypt.js +0 -47
  494. package/dist/core/security/governance.d.ts +0 -26
  495. package/dist/core/security/governance.js +0 -79
  496. package/dist/core/security/privacy.d.ts +0 -23
  497. package/dist/core/security/privacy.js +0 -82
  498. package/dist/core/security/secret-detector.d.ts +0 -32
  499. package/dist/core/security/secret-detector.js +0 -88
  500. package/dist/core/session/auto-load.d.ts +0 -6
  501. package/dist/core/session/auto-load.js +0 -119
  502. package/dist/core/session/index.d.ts +0 -7
  503. package/dist/core/session/self-iteration-job.d.ts +0 -20
  504. package/dist/core/session/self-iteration-job.js +0 -282
  505. package/dist/core/session/session-hooks.d.ts +0 -18
  506. package/dist/core/session/session-hooks.js +0 -58
  507. package/dist/core/session/types.d.ts +0 -26
  508. package/dist/core/session/types.js +0 -10
  509. package/dist/core/session-hooks/self-iteration-job.d.ts +0 -20
  510. package/dist/core/session-hooks/self-iteration-job.js +0 -282
  511. package/dist/core/session-hooks/session-hooks.d.ts +0 -18
  512. package/dist/core/session-hooks/session-hooks.js +0 -58
  513. package/dist/core/snapshots/cleanup.d.ts +0 -9
  514. package/dist/core/snapshots/comparison.d.ts +0 -19
  515. package/dist/core/snapshots/comparison.js +0 -43
  516. package/dist/core/snapshots/creation.d.ts +0 -19
  517. package/dist/core/snapshots/creation.js +0 -126
  518. package/dist/core/snapshots/retrieval.d.ts +0 -7
  519. package/dist/core/snapshots/retrieval.js +0 -41
  520. package/dist/core/snapshots/stats.d.ts +0 -11
  521. package/dist/core/snapshots/stats.js +0 -52
  522. package/dist/core/snapshots.d.ts +0 -29
  523. package/dist/core/snapshots.js +0 -220
  524. package/dist/core/storage/cache.d.ts +0 -13
  525. package/dist/core/storage/cache.js +0 -202
  526. package/dist/core/storage/database.d.ts +0 -12
  527. package/dist/core/storage/database.js +0 -12
  528. package/dist/core/summarization/cleanup.d.ts +0 -9
  529. package/dist/core/summarization/queries.d.ts +0 -9
  530. package/dist/core/summarization/queries.js +0 -28
  531. package/dist/core/summarization/stats.d.ts +0 -14
  532. package/dist/core/summarization/stats.js +0 -52
  533. package/dist/core/summarization/strategies.d.ts +0 -24
  534. package/dist/core/summarization/strategies.js +0 -28
  535. package/dist/core/summarization.d.ts +0 -37
  536. package/dist/core/summarization.js +0 -188
  537. package/dist/core/sync/qmd-sync.d.ts +0 -94
  538. package/dist/core/sync/qmd-sync.js +0 -201
  539. package/dist/core/temporal-facts.d.ts +0 -54
  540. package/dist/core/temporal-facts.js +0 -193
  541. package/dist/core/toon.d.ts +0 -43
  542. package/dist/core/toon.js +0 -160
  543. package/dist/core/tracing/collector.d.ts +0 -111
  544. package/dist/core/tracing/collector.js +0 -350
  545. package/dist/core/tracing/visualizer.d.ts +0 -32
  546. package/dist/core/tracing/visualizer.js +0 -165
  547. package/dist/core/utils/cleanup-operations.d.ts +0 -13
  548. package/dist/core/utils/cleanup-operations.js +0 -44
  549. package/dist/core/utils/content-extraction.d.ts +0 -19
  550. package/dist/core/utils/content-extraction.js +0 -75
  551. package/dist/core/utils/filter-builder.d.ts +0 -13
  552. package/dist/core/utils/filter-builder.js +0 -44
  553. package/dist/core/utils/history-traversal.d.ts +0 -13
  554. package/dist/core/utils/history-traversal.js +0 -50
  555. package/dist/core/utils/memory-operations.d.ts +0 -17
  556. package/dist/core/utils/memory-operations.js +0 -43
  557. package/dist/core/utils/query-operations.d.ts +0 -18
  558. package/dist/core/utils/query-operations.js +0 -65
  559. package/dist/core/utils/summarization-helpers.d.ts +0 -21
  560. package/dist/core/utils/summarization-helpers.js +0 -38
  561. package/dist/core/utils/temporal-queries.d.ts +0 -13
  562. package/dist/core/utils/temporal-queries.js +0 -27
  563. package/dist/core/utils/vector-operations.d.ts +0 -71
  564. package/dist/core/utils/version-management.d.ts +0 -9
  565. package/dist/core/utils/version-management.js +0 -61
  566. package/dist/core/worker.d.ts +0 -82
  567. package/dist/core/worker.js +0 -272
  568. package/dist/db/adapter.d.ts +0 -7
  569. package/dist/db/adapter.js +0 -175
  570. package/dist/db/bootstrap.d.ts +0 -9
  571. package/dist/db/drizzle/schema-sqlite.d.ts +0 -4837
  572. package/dist/db/drizzle/schema-sqlite.js +0 -684
  573. package/dist/db/drizzle/schema.d.ts +0 -4082
  574. package/dist/db/drizzle/schema.js +0 -770
  575. package/dist/db/drizzle.config.d.ts +0 -3
  576. package/dist/db/drizzle.config.js +0 -12
  577. package/dist/db/index.d.ts +0 -7
  578. package/dist/db/index.js +0 -89
  579. package/dist/db/neon.d.ts +0 -8
  580. package/dist/db/neon.js +0 -20
  581. package/dist/db/schema/index.d.ts +0 -40
  582. package/dist/db/schema/index.js +0 -105
  583. package/dist/db/schema/tables/context-sessions.d.ts +0 -9
  584. package/dist/db/schema/tables/context-sessions.js +0 -37
  585. package/dist/db/schema/tables/conversations.d.ts +0 -9
  586. package/dist/db/schema/tables/conversations.js +0 -47
  587. package/dist/db/schema/tables/core-memory.d.ts +0 -9
  588. package/dist/db/schema/tables/core-memory.js +0 -41
  589. package/dist/db/schema/tables/entities.d.ts +0 -9
  590. package/dist/db/schema/tables/entities.js +0 -39
  591. package/dist/db/schema/tables/entity-relations.d.ts +0 -9
  592. package/dist/db/schema/tables/entity-relations.js +0 -31
  593. package/dist/db/schema/tables/learnings.d.ts +0 -9
  594. package/dist/db/schema/tables/learnings.js +0 -66
  595. package/dist/db/schema/tables/memories.d.ts +0 -9
  596. package/dist/db/schema/tables/memories.js +0 -161
  597. package/dist/db/schema/tables/memory-associations.d.ts +0 -9
  598. package/dist/db/schema/tables/memory-associations.js +0 -39
  599. package/dist/db/schema/tables/memory-hash-cache.d.ts +0 -9
  600. package/dist/db/schema/tables/memory-hash-cache.js +0 -29
  601. package/dist/db/schema/tables/memory-merge-history.d.ts +0 -9
  602. package/dist/db/schema/tables/memory-merge-history.js +0 -33
  603. package/dist/db/schema/tables/memory-merge-proposals.d.ts +0 -9
  604. package/dist/db/schema/tables/memory-merge-proposals.js +0 -39
  605. package/dist/db/schema/tables/messages.d.ts +0 -9
  606. package/dist/db/schema/tables/messages.js +0 -41
  607. package/dist/db/schema/tables/namespaces.d.ts +0 -9
  608. package/dist/db/schema/tables/namespaces.js +0 -37
  609. package/dist/db/schema/tables/projects.d.ts +0 -9
  610. package/dist/db/schema/tables/projects.js +0 -31
  611. package/dist/db/schema/tables/users.d.ts +0 -9
  612. package/dist/db/schema/tables/users.js +0 -27
  613. package/dist/db/schema.d.ts +0 -3
  614. package/dist/db/schema.js +0 -11
  615. package/dist/db/supabase.d.ts +0 -9
  616. package/dist/db/supabase.js +0 -24
  617. package/dist/index.d.ts +0 -7
  618. package/dist/index.js +0 -1677
  619. package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
  620. package/dist/webui/server.d.ts +0 -5
  621. package/dist/webui/server.js +0 -642
  622. package/generated/mcp/manifest.json +0 -23
  623. package/generated/mcp/mcp-servers.json +0 -25
  624. package/generated/mcp/mcporter.json +0 -34
  625. package/generated/mcp/openclaw-memory-qmd.json +0 -17
  626. package/generated/mcp/runtime.json +0 -12
  627. package/scripts/README.md +0 -60
  628. package/scripts/build-release.sh +0 -36
  629. package/scripts/check-secrets.js +0 -132
  630. package/scripts/copy-runtime-assets.mjs +0 -26
  631. package/scripts/generate-mcp.mjs +0 -264
  632. package/scripts/github-release.sh +0 -77
  633. package/scripts/init-dirs.mjs +0 -13
  634. package/scripts/install-claude-code.sh +0 -85
  635. package/scripts/install-cursor.sh +0 -56
  636. package/scripts/install-hooks.sh +0 -73
  637. package/scripts/install-interactive.mjs +0 -357
  638. package/scripts/install-opencode.sh +0 -75
  639. package/scripts/install-plugin.mjs +0 -415
  640. package/scripts/install-windsurf.sh +0 -67
  641. package/scripts/remote-preflight.mjs +0 -62
  642. package/scripts/squish-fallback.mjs +0 -132
  643. package/scripts/test-interactive.mjs +0 -131
  644. package/scripts/verify-mcp.mjs +0 -214
  645. package/skills/squish-memory/scripts/install.mjs +0 -335
  646. package/skills/squish-memory/write_skill.js +0 -2
@@ -1,314 +0,0 @@
1
- /**
2
- * Places Module - Spatial memory organization (Method of Loci)
3
- *
4
- * Provides spatial "places" for memory organization:
5
- * - Entry Hall: Project overview, goals
6
- * - Library: Research, patterns, discoveries
7
- * - Workshop: Implementation, code, fixes
8
- * - Lab: Experiments, tests, trials
9
- * - Office: Decisions, planning, roadmap
10
- * - Garden: Ideas, future concepts
11
- * - Archive: Completed, historical
12
- */
13
- import { randomUUID } from 'crypto';
14
- import { eq, and, isNull } from 'drizzle-orm';
15
- import { getDb } from '../../db/index.js';
16
- import { getSchema } from '../../db/schema.js';
17
- import { logger } from '../logger.js';
18
- // Default places configuration
19
- export const DEFAULT_PLACES = [
20
- { name: 'Entry Hall', placeType: 'entry_hall', lociIndex: 0, description: 'Project overview, goals, and current status', purpose: 'Quick orientation to project state' },
21
- { name: 'Library', placeType: 'library', lociIndex: 1, description: 'Research, patterns, and discoveries', purpose: 'Reference knowledge and learned patterns' },
22
- { name: 'Workshop', placeType: 'workshop', lociIndex: 2, description: 'Implementation, code, and fixes', purpose: 'Active development and recent changes' },
23
- { name: 'Lab', placeType: 'lab', lociIndex: 3, description: 'Experiments, tests, and trials', purpose: 'Testing and exploration results' },
24
- { name: 'Office', placeType: 'office', lociIndex: 4, description: 'Decisions, planning, and roadmap', purpose: 'Project direction and decisions' },
25
- { name: 'Garden', placeType: 'garden', lociIndex: 5, description: 'Ideas and future concepts', purpose: 'Brainstorming and upcoming plans' },
26
- { name: 'Archive', placeType: 'archive', lociIndex: 6, description: 'Completed and historical items', purpose: 'Reference for completed work' },
27
- ];
28
- /**
29
- * Create a new place
30
- */
31
- export async function createPlace(input) {
32
- const db = await getDb();
33
- if (!db) {
34
- throw new Error('Database unavailable');
35
- }
36
- const schema = await getSchema();
37
- const sqliteDb = db;
38
- const id = randomUUID();
39
- // Check for duplicate
40
- const existing = await sqliteDb.select()
41
- .from(schema.places)
42
- .where(and(eq(schema.places.projectId, input.projectId), eq(schema.places.name, input.name), input.parentId
43
- ? eq(schema.places.parentId, input.parentId)
44
- : isNull(schema.places.parentId)))
45
- .limit(1);
46
- if (existing.length > 0) {
47
- throw new Error(`Place "${input.name}" already exists`);
48
- }
49
- await sqliteDb.insert(schema.places).values({
50
- id,
51
- projectId: input.projectId,
52
- name: input.name,
53
- placeType: input.placeType,
54
- parentId: input.parentId || null,
55
- lociIndex: input.lociIndex ?? 0,
56
- positionX: 0,
57
- positionY: 0,
58
- description: input.description || null,
59
- purpose: input.purpose || null,
60
- memoryCount: 0,
61
- });
62
- logger.info(`[Places] Created place: ${input.name} (${input.placeType})`);
63
- return {
64
- id,
65
- projectId: input.projectId,
66
- name: input.name,
67
- placeType: input.placeType,
68
- parentId: input.parentId || null,
69
- lociIndex: input.lociIndex ?? 0,
70
- positionX: 0,
71
- positionY: 0,
72
- description: input.description || null,
73
- purpose: input.purpose || null,
74
- memoryCount: 0,
75
- createdAt: new Date(),
76
- updatedAt: new Date(),
77
- };
78
- }
79
- /**
80
- * Get a place by ID
81
- */
82
- export async function getPlace(id) {
83
- const db = await getDb();
84
- if (!db)
85
- return null;
86
- const schema = await getSchema();
87
- const sqliteDb = db;
88
- const result = await sqliteDb.select()
89
- .from(schema.places)
90
- .where(eq(schema.places.id, id))
91
- .limit(1);
92
- if (result.length === 0)
93
- return null;
94
- const row = result[0];
95
- return {
96
- id: row.id,
97
- projectId: row.project_id,
98
- name: row.name,
99
- placeType: (row.place_type || row.placeType || 'custom'),
100
- parentId: row.parent_id || row.parentId || null,
101
- lociIndex: row.loci_index ?? row.lociIndex ?? 0,
102
- positionX: row.position_x ?? row.positionX ?? 0,
103
- positionY: row.position_y ?? row.positionY ?? 0,
104
- description: row.description,
105
- purpose: row.purpose,
106
- memoryCount: row.memory_count ?? row.memoryCount ?? 0,
107
- createdAt: new Date(row.created_at || row.createdAt || Date.now()),
108
- updatedAt: new Date(row.updated_at || row.updatedAt || Date.now()),
109
- };
110
- }
111
- /**
112
- * Get places for a project, ordered by loci_index
113
- */
114
- export async function getProjectPlaces(projectId) {
115
- const db = await getDb();
116
- if (!db)
117
- return [];
118
- const schema = await getSchema();
119
- const sqliteDb = db;
120
- const results = await sqliteDb.select()
121
- .from(schema.places)
122
- .where(eq(schema.places.projectId, projectId))
123
- .orderBy(schema.places.lociIndex);
124
- return results.map((row) => ({
125
- id: row.id,
126
- projectId: row.project_id,
127
- name: row.name,
128
- placeType: (row.place_type || row.placeType),
129
- parentId: row.parent_id || row.parentId,
130
- lociIndex: row.loci_index ?? row.lociIndex ?? 0,
131
- positionX: row.position_x ?? row.positionX ?? 0,
132
- positionY: row.position_y ?? row.positionY ?? 0,
133
- description: row.description,
134
- purpose: row.purpose,
135
- memoryCount: row.memory_count ?? row.memoryCount ?? 0,
136
- createdAt: new Date(row.created_at || row.createdAt),
137
- updatedAt: new Date(row.updated_at || row.updatedAt),
138
- }));
139
- }
140
- /**
141
- * Get place by type for a project
142
- */
143
- export async function getPlaceByType(projectId, placeType) {
144
- const db = await getDb();
145
- if (!db)
146
- return null;
147
- const schema = await getSchema();
148
- const sqliteDb = db;
149
- const result = await sqliteDb.select()
150
- .from(schema.places)
151
- .where(and(eq(schema.places.projectId, projectId), eq(schema.places.placeType, placeType)))
152
- .limit(1);
153
- if (result.length === 0)
154
- return null;
155
- const row = result[0];
156
- return {
157
- id: row.id,
158
- projectId: row.project_id,
159
- name: row.name,
160
- placeType: (row.place_type || row.placeType || 'custom'),
161
- parentId: row.parent_id || row.parentId || null,
162
- lociIndex: row.loci_index ?? row.lociIndex ?? 0,
163
- positionX: row.position_x ?? row.positionX ?? 0,
164
- positionY: row.position_y ?? row.positionY ?? 0,
165
- description: row.description,
166
- purpose: row.purpose,
167
- memoryCount: row.memory_count ?? row.memoryCount ?? 0,
168
- createdAt: new Date(row.created_at || row.createdAt || Date.now()),
169
- updatedAt: new Date(row.updated_at || row.updatedAt || Date.now()),
170
- };
171
- }
172
- /**
173
- * Update a place
174
- */
175
- export async function updatePlace(id, input) {
176
- const db = await getDb();
177
- if (!db)
178
- return null;
179
- const schema = await getSchema();
180
- const sqliteDb = db;
181
- const updateData = {};
182
- if (input.name !== undefined)
183
- updateData.name = input.name;
184
- if (input.description !== undefined)
185
- updateData.description = input.description;
186
- if (input.purpose !== undefined)
187
- updateData.purpose = input.purpose;
188
- if (input.lociIndex !== undefined)
189
- updateData.lociIndex = input.lociIndex;
190
- if (input.positionX !== undefined)
191
- updateData.positionX = input.positionX;
192
- if (input.positionY !== undefined)
193
- updateData.positionY = input.positionY;
194
- if (Object.keys(updateData).length === 0) {
195
- return getPlace(id);
196
- }
197
- await sqliteDb.update(schema.places)
198
- .set(updateData)
199
- .where(eq(schema.places.id, id));
200
- return getPlace(id);
201
- }
202
- /**
203
- * Delete a place
204
- */
205
- export async function deletePlace(id) {
206
- const db = await getDb();
207
- if (!db)
208
- return false;
209
- const schema = await getSchema();
210
- const sqliteDb = db;
211
- await sqliteDb.delete(schema.places).where(eq(schema.places.id, id));
212
- logger.info(`[Places] Deleted place: ${id}`);
213
- return true;
214
- }
215
- /**
216
- * Initialize default 7 places for a project
217
- */
218
- export async function initializeDefaultPlaces(projectId) {
219
- const created = [];
220
- for (const placeConfig of DEFAULT_PLACES) {
221
- // Check if place of this type already exists
222
- const existing = await getPlaceByType(projectId, placeConfig.placeType);
223
- if (existing) {
224
- created.push(existing);
225
- continue;
226
- }
227
- const place = await createPlace({
228
- projectId,
229
- name: placeConfig.name,
230
- placeType: placeConfig.placeType,
231
- parentId: null,
232
- lociIndex: placeConfig.lociIndex,
233
- description: placeConfig.description,
234
- purpose: placeConfig.purpose,
235
- });
236
- created.push(place);
237
- }
238
- // Also initialize default rules if none exist
239
- const { initializeDefaultRules } = await import('./rules.js');
240
- await initializeDefaultRules(projectId);
241
- logger.info(`[Places] Initialized ${created.length} default places for project: ${projectId}`);
242
- return created;
243
- }
244
- /**
245
- * Get place by loci index
246
- */
247
- export async function getPlaceByLociIndex(projectId, lociIndex) {
248
- const db = await getDb();
249
- if (!db)
250
- return null;
251
- const schema = await getSchema();
252
- const sqliteDb = db;
253
- const result = await sqliteDb.select()
254
- .from(schema.places)
255
- .where(and(eq(schema.places.projectId, projectId), eq(schema.places.lociIndex, lociIndex)))
256
- .limit(1);
257
- if (result.length === 0)
258
- return null;
259
- const row = result[0];
260
- return {
261
- id: row.id,
262
- projectId: row.project_id,
263
- name: row.name,
264
- placeType: (row.place_type || row.placeType || 'custom'),
265
- parentId: row.parent_id || row.parentId || null,
266
- lociIndex: row.loci_index ?? row.lociIndex ?? 0,
267
- positionX: row.position_x ?? row.positionX ?? 0,
268
- positionY: row.position_y ?? row.positionY ?? 0,
269
- description: row.description,
270
- purpose: row.purpose,
271
- memoryCount: row.memory_count ?? row.memoryCount ?? 0,
272
- createdAt: new Date(row.created_at || row.createdAt || Date.now()),
273
- updatedAt: new Date(row.updated_at || row.updatedAt || Date.now()),
274
- };
275
- }
276
- /**
277
- * Update memory count for a place
278
- */
279
- export async function updatePlaceMemoryCount(placeId) {
280
- const db = await getDb();
281
- if (!db)
282
- return;
283
- const schema = await getSchema();
284
- const sqliteDb = db;
285
- // Count memories in this place
286
- const countResult = await sqliteDb.select({ count: schema.memoryPlaces.id })
287
- .from(schema.memoryPlaces)
288
- .where(eq(schema.memoryPlaces.placeId, placeId));
289
- const count = countResult.length;
290
- await sqliteDb.update(schema.places)
291
- .set({ memoryCount: count })
292
- .where(eq(schema.places.id, placeId));
293
- }
294
- /**
295
- * Sync all place memory counts - recalculate counts for all places in a project
296
- * Useful for fixing counts after bulk operations or data recovery
297
- */
298
- export async function syncAllPlaceMemoryCounts(projectId) {
299
- const db = await getDb();
300
- if (!db)
301
- return;
302
- const schema = await getSchema();
303
- const sqliteDb = db;
304
- // Get all places for this project
305
- const allPlaces = await sqliteDb.select()
306
- .from(schema.places)
307
- .where(eq(schema.places.projectId, projectId));
308
- // Update each place's memory count
309
- for (const place of allPlaces) {
310
- await updatePlaceMemoryCount(place.id);
311
- }
312
- logger.info(`[Places] Synced memory counts for ${allPlaces.length} places`);
313
- }
314
- //# sourceMappingURL=places.js.map
@@ -1,74 +0,0 @@
1
- /**
2
- * Places Rules Engine - Auto-assignment logic
3
- *
4
- * Evaluates which place a memory should be assigned to based on:
5
- * - Tool used (Write, Edit, Task, etc.)
6
- * - Content keywords
7
- * - Tags
8
- * - Memory type
9
- */
10
- import type { PlaceType } from './places.js';
11
- export interface PlaceRule {
12
- id: string;
13
- projectId: string;
14
- name: string;
15
- placeType: PlaceType;
16
- matchTool: string | null;
17
- matchKeyword: string | null;
18
- matchTag: string | null;
19
- matchMemoryType: string | null;
20
- priority: number;
21
- enabled: boolean;
22
- createdAt: Date;
23
- updatedAt: Date;
24
- }
25
- export interface PlaceRuleCreateInput {
26
- projectId: string;
27
- name: string;
28
- placeType: PlaceType;
29
- matchTool?: string;
30
- matchKeyword?: string;
31
- matchTag?: string;
32
- matchMemoryType?: string;
33
- priority?: number;
34
- enabled?: boolean;
35
- }
36
- export interface RuleMatchInput {
37
- toolName?: string;
38
- content?: string;
39
- tags?: string[];
40
- memoryType?: string;
41
- }
42
- /**
43
- * Default auto-assignment rules
44
- */
45
- export declare const DEFAULT_RULES: Omit<PlaceRuleCreateInput, 'projectId'>[];
46
- /**
47
- * Create a place rule
48
- */
49
- export declare function createPlaceRule(input: PlaceRuleCreateInput): Promise<PlaceRule>;
50
- /**
51
- * Get rules for a project
52
- */
53
- export declare function getProjectRules(projectId: string): Promise<PlaceRule[]>;
54
- /**
55
- * Check if a rule matches the input
56
- */
57
- export declare function matchesRule(rule: PlaceRule, input: RuleMatchInput): boolean;
58
- /**
59
- * Find matching place for a memory based on rules
60
- */
61
- export declare function findMatchingPlace(projectId: string, input: RuleMatchInput): Promise<PlaceType | null>;
62
- /**
63
- * Initialize default rules for a project
64
- */
65
- export declare function initializeDefaultRules(projectId: string): Promise<PlaceRule[]>;
66
- /**
67
- * Delete a rule
68
- */
69
- export declare function deletePlaceRule(id: string): Promise<boolean>;
70
- /**
71
- * Update a rule
72
- */
73
- export declare function updatePlaceRule(id: string, updates: Partial<PlaceRuleCreateInput>): Promise<PlaceRule | null>;
74
- //# sourceMappingURL=rules.d.ts.map
@@ -1,240 +0,0 @@
1
- /**
2
- * Places Rules Engine - Auto-assignment logic
3
- *
4
- * Evaluates which place a memory should be assigned to based on:
5
- * - Tool used (Write, Edit, Task, etc.)
6
- * - Content keywords
7
- * - Tags
8
- * - Memory type
9
- */
10
- import { randomUUID } from 'crypto';
11
- import { eq, desc } from 'drizzle-orm';
12
- import { getDb } from '../../db/index.js';
13
- import { getSchema } from '../../db/schema.js';
14
- import { logger } from '../logger.js';
15
- /**
16
- * Default auto-assignment rules
17
- */
18
- export const DEFAULT_RULES = [
19
- // Workshop - Implementation, code, fixes
20
- { name: 'Write to Workshop', placeType: 'workshop', matchTool: 'Write', priority: 100 },
21
- { name: 'Edit to Workshop', placeType: 'workshop', matchTool: 'Edit', priority: 100 },
22
- { name: 'MultiEdit to Workshop', placeType: 'workshop', matchTool: 'MultiEdit', priority: 100 },
23
- { name: 'Fix keyword to Workshop', placeType: 'workshop', matchKeyword: 'fix', priority: 80 },
24
- { name: 'Bug keyword to Workshop', placeType: 'workshop', matchKeyword: 'bug', priority: 80 },
25
- // Lab - Experiments, tests
26
- { name: 'Test to Lab', placeType: 'lab', matchTool: 'Bash', matchKeyword: 'test', priority: 90 },
27
- { name: 'Test tag to Lab', placeType: 'lab', matchTag: 'test', priority: 85 },
28
- // Office - Decisions, planning
29
- { name: 'Task to Office', placeType: 'office', matchTool: 'Task', priority: 100 },
30
- { name: 'TodoWrite to Office', placeType: 'office', matchTool: 'TodoWrite', priority: 100 },
31
- { name: 'Decision keyword to Office', placeType: 'office', matchKeyword: 'decided', priority: 70 },
32
- { name: 'Planning keyword to Office', placeType: 'office', matchKeyword: 'will implement', priority: 70 },
33
- // Library - Research, patterns
34
- { name: 'Search to Library', placeType: 'library', matchTool: 'grep', priority: 90 },
35
- { name: 'WebFetch to Library', placeType: 'library', matchTool: 'WebFetch', priority: 85 },
36
- { name: 'Research keyword to Library', placeType: 'library', matchKeyword: 'research', priority: 80 },
37
- { name: 'Pattern keyword to Library', placeType: 'library', matchKeyword: 'pattern', priority: 75 },
38
- // Garden - Ideas, future
39
- { name: 'Idea keyword to Garden', placeType: 'garden', matchKeyword: 'idea', priority: 80 },
40
- { name: 'Explore keyword to Garden', placeType: 'garden', matchKeyword: 'explore', priority: 75 },
41
- { name: 'Future keyword to Garden', placeType: 'garden', matchKeyword: 'will add', priority: 70 },
42
- ];
43
- /**
44
- * Create a place rule
45
- */
46
- export async function createPlaceRule(input) {
47
- const db = await getDb();
48
- if (!db) {
49
- throw new Error('Database unavailable');
50
- }
51
- const schema = await getSchema();
52
- const sqliteDb = db;
53
- const id = randomUUID();
54
- await sqliteDb.insert(schema.placeRules).values({
55
- id,
56
- projectId: input.projectId,
57
- name: input.name,
58
- placeType: input.placeType,
59
- matchTool: input.matchTool || null,
60
- matchKeyword: input.matchKeyword || null,
61
- matchTag: input.matchTag || null,
62
- matchMemoryType: input.matchMemoryType || null,
63
- priority: input.priority ?? 0,
64
- enabled: input.enabled !== false ? 1 : 0,
65
- });
66
- logger.info(`[PlaceRules] Created rule: ${input.name} -> ${input.placeType}`);
67
- return {
68
- id,
69
- projectId: input.projectId,
70
- name: input.name,
71
- placeType: input.placeType,
72
- matchTool: input.matchTool || null,
73
- matchKeyword: input.matchKeyword || null,
74
- matchTag: input.matchTag || null,
75
- matchMemoryType: input.matchMemoryType || null,
76
- priority: input.priority ?? 0,
77
- enabled: input.enabled ?? true,
78
- createdAt: new Date(),
79
- updatedAt: new Date(),
80
- };
81
- }
82
- /**
83
- * Get rules for a project
84
- */
85
- export async function getProjectRules(projectId) {
86
- const db = await getDb();
87
- if (!db)
88
- return [];
89
- const schema = await getSchema();
90
- const sqliteDb = db;
91
- const results = await sqliteDb.select()
92
- .from(schema.placeRules)
93
- .where(eq(schema.placeRules.projectId, projectId))
94
- .orderBy(desc(schema.placeRules.priority));
95
- return results.map((row) => ({
96
- id: row.id,
97
- projectId: row.project_id,
98
- name: row.name,
99
- placeType: (row.place_type || row.placeType || 'custom'),
100
- matchTool: row.match_tool || row.matchTool,
101
- matchKeyword: row.match_keyword || row.matchKeyword,
102
- matchTag: row.match_tag || row.matchTag,
103
- matchMemoryType: row.match_memory_type || row.matchMemoryType,
104
- priority: row.priority ?? 0,
105
- enabled: row.enabled === 1 || row.enabled === true,
106
- createdAt: new Date(row.created_at || Date.now()),
107
- updatedAt: new Date(row.updated_at || Date.now()),
108
- }));
109
- }
110
- /**
111
- * Check if a rule matches the input
112
- */
113
- export function matchesRule(rule, input) {
114
- // Check tool match
115
- if (rule.matchTool && input.toolName) {
116
- if (input.toolName.toLowerCase() !== rule.matchTool.toLowerCase()) {
117
- return false;
118
- }
119
- }
120
- // Check keyword match
121
- if (rule.matchKeyword && input.content) {
122
- const contentLower = input.content.toLowerCase();
123
- if (!contentLower.includes(rule.matchKeyword.toLowerCase())) {
124
- return false;
125
- }
126
- }
127
- // Check tag match
128
- if (rule.matchTag && input.tags) {
129
- const hasTag = input.tags.some(t => t.toLowerCase() === rule.matchTag.toLowerCase());
130
- if (!hasTag) {
131
- return false;
132
- }
133
- }
134
- // Check memory type match
135
- if (rule.matchMemoryType && input.memoryType) {
136
- if (input.memoryType.toLowerCase() !== rule.matchMemoryType.toLowerCase()) {
137
- return false;
138
- }
139
- }
140
- return true;
141
- }
142
- /**
143
- * Find matching place for a memory based on rules
144
- */
145
- export async function findMatchingPlace(projectId, input) {
146
- const rules = await getProjectRules(projectId);
147
- // Sort by priority (highest first)
148
- const sortedRules = rules
149
- .filter(r => r.enabled)
150
- .sort((a, b) => b.priority - a.priority);
151
- for (const rule of sortedRules) {
152
- if (matchesRule(rule, input)) {
153
- logger.info(`[PlaceRules] Matched rule "${rule.name}" -> ${rule.placeType}`);
154
- return rule.placeType;
155
- }
156
- }
157
- return null;
158
- }
159
- /**
160
- * Initialize default rules for a project
161
- */
162
- export async function initializeDefaultRules(projectId) {
163
- const created = [];
164
- for (const ruleConfig of DEFAULT_RULES) {
165
- const rule = await createPlaceRule({
166
- projectId,
167
- ...ruleConfig,
168
- });
169
- created.push(rule);
170
- }
171
- logger.info(`[PlaceRules] Initialized ${created.length} default rules for project: ${projectId}`);
172
- return created;
173
- }
174
- /**
175
- * Delete a rule
176
- */
177
- export async function deletePlaceRule(id) {
178
- const db = await getDb();
179
- if (!db)
180
- return false;
181
- const schema = await getSchema();
182
- const sqliteDb = db;
183
- await sqliteDb.delete(schema.placeRules).where(eq(schema.placeRules.id, id));
184
- logger.info(`[PlaceRules] Deleted rule: ${id}`);
185
- return true;
186
- }
187
- /**
188
- * Update a rule
189
- */
190
- export async function updatePlaceRule(id, updates) {
191
- const db = await getDb();
192
- if (!db)
193
- return null;
194
- const schema = await getSchema();
195
- const sqliteDb = db;
196
- const updateData = {};
197
- if (updates.name !== undefined)
198
- updateData.name = updates.name;
199
- if (updates.placeType !== undefined)
200
- updateData.placeType = updates.placeType;
201
- if (updates.matchTool !== undefined)
202
- updateData.matchTool = updates.matchTool;
203
- if (updates.matchKeyword !== undefined)
204
- updateData.matchKeyword = updates.matchKeyword;
205
- if (updates.matchTag !== undefined)
206
- updateData.matchTag = updates.matchTag;
207
- if (updates.matchMemoryType !== undefined)
208
- updateData.matchMemoryType = updates.matchMemoryType;
209
- if (updates.priority !== undefined)
210
- updateData.priority = updates.priority;
211
- if (updates.enabled !== undefined)
212
- updateData.enabled = updates.enabled;
213
- if (Object.keys(updateData).length === 0)
214
- return null;
215
- await sqliteDb.update(schema.placeRules)
216
- .set(updateData)
217
- .where(eq(schema.placeRules.id, id));
218
- const result = await sqliteDb.select()
219
- .from(schema.placeRules)
220
- .where(eq(schema.placeRules.id, id))
221
- .limit(1);
222
- if (result.length === 0)
223
- return null;
224
- const row = result[0];
225
- return {
226
- id: row.id,
227
- projectId: row.project_id,
228
- name: row.name,
229
- placeType: row.place_type,
230
- matchTool: row.match_tool,
231
- matchKeyword: row.match_keyword,
232
- matchTag: row.match_tag,
233
- matchMemoryType: row.match_memory_type,
234
- priority: row.priority,
235
- enabled: row.enabled === 1 || row.enabled === true,
236
- createdAt: new Date(row.created_at),
237
- updatedAt: new Date(row.updated_at),
238
- };
239
- }
240
- //# sourceMappingURL=rules.js.map
@@ -1,56 +0,0 @@
1
- /**
2
- * Walking Interface - Sequential memory retrieval through places
3
- *
4
- * Implements Method of Loci walking through memory places:
5
- * - Walk single place to get memories in order
6
- * - Walk all places for full tour
7
- * - Token budget handling with TOON compression
8
- */
9
- import { type Place } from './places.js';
10
- export interface WalkOptions {
11
- tokenBudget?: number;
12
- maxMemoriesPerPlace?: number;
13
- includePurpose?: boolean;
14
- compressWithToon?: boolean;
15
- }
16
- export interface WalkResult {
17
- place: Place;
18
- memories: MemorySummary[];
19
- totalTokens: number;
20
- truncated: boolean;
21
- }
22
- export interface MemorySummary {
23
- id: string;
24
- content: string;
25
- type: string;
26
- tags: string[];
27
- createdAt: string;
28
- }
29
- /**
30
- * Walk through a single place
31
- */
32
- export declare function walkPlace(projectId: string, placeType: string, options?: WalkOptions): Promise<WalkResult | null>;
33
- /**
34
- * Walk through all places in loci order
35
- */
36
- export declare function walkAllPlaces(projectId: string, options?: WalkOptions): Promise<WalkResult[]>;
37
- /**
38
- * Quick tour - just place names and purposes (minimal tokens)
39
- */
40
- export declare function quickTour(projectId: string): Promise<{
41
- places: {
42
- name: string;
43
- purpose: string;
44
- memoryCount: number;
45
- }[];
46
- totalMemories: number;
47
- }>;
48
- /**
49
- * Get context summary for a place (for injection)
50
- */
51
- export declare function getPlaceContext(projectId: string, placeType: string, maxTokens?: number): Promise<string>;
52
- /**
53
- * Full context for session start (all places)
54
- */
55
- export declare function getFullWalkingContext(projectId: string, maxTokens?: number): Promise<string>;
56
- //# sourceMappingURL=walking.d.ts.map