squish-memory 1.1.5 → 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 (499) 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 +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 +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/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/{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/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 +40 -17
  220. package/dist/config.js +150 -198
  221. package/dist/core/adapters/types.d.ts +13 -33
  222. package/dist/core/adapters/types.js +1 -1
  223. package/dist/core/agent-preferences.d.ts +16 -0
  224. package/dist/core/agent-preferences.js +124 -0
  225. package/dist/core/algorithms/safety/safety-checks.d.ts +1 -5
  226. package/dist/core/algorithms/types.d.ts +0 -8
  227. package/dist/core/associations.d.ts +3 -1
  228. package/dist/core/associations.js +37 -1
  229. package/dist/core/beliefs/decay.d.ts +27 -0
  230. package/dist/core/beliefs/decay.js +217 -0
  231. package/dist/core/beliefs/extractor.d.ts +9 -0
  232. package/dist/core/beliefs/extractor.js +113 -0
  233. package/dist/core/beliefs/store.d.ts +46 -0
  234. package/dist/core/beliefs/store.js +466 -0
  235. package/dist/core/beliefs/types.d.ts +28 -0
  236. package/dist/core/beliefs/types.js +2 -0
  237. package/dist/core/commands/mcp-server.d.ts +0 -1
  238. package/dist/core/commands/mcp-server.js +4 -737
  239. package/dist/core/commands/remember.d.ts +24 -0
  240. package/dist/core/commands/remember.js +144 -0
  241. package/dist/core/{toon.d.ts → compression.d.ts} +6 -4
  242. package/dist/core/{toon.js → compression.js} +8 -8
  243. package/dist/core/context/agent-context.js +1 -1
  244. package/dist/core/embeddings/embeddings.d.ts +29 -0
  245. package/dist/core/embeddings/embeddings.js +546 -0
  246. package/dist/core/embeddings/google-multimodal.js +6 -2
  247. package/dist/core/{local-embeddings.d.ts → embeddings/local-embeddings.d.ts} +1 -1
  248. package/dist/core/embeddings/local-embeddings.js +11 -0
  249. package/dist/core/embeddings/qmd-client.js +1 -1
  250. package/dist/core/embeddings/transformers-local.d.ts +64 -0
  251. package/dist/core/embeddings/transformers-local.js +213 -0
  252. package/dist/core/embeddings.d.ts +1 -28
  253. package/dist/core/embeddings.js +2 -453
  254. package/dist/core/graph/entity-deduplicator.d.ts +24 -0
  255. package/dist/core/graph/entity-deduplicator.js +183 -0
  256. package/dist/core/graph/graph-builder.d.ts +46 -0
  257. package/dist/core/graph/graph-builder.js +174 -0
  258. package/dist/core/graph/graph-traversal.d.ts +80 -0
  259. package/dist/core/graph/graph-traversal.js +315 -0
  260. package/dist/core/graph/index.d.ts +19 -0
  261. package/dist/core/graph/index.js +13 -0
  262. package/dist/core/graph/llm-entity-extractor.d.ts +49 -0
  263. package/dist/core/graph/llm-entity-extractor.js +313 -0
  264. package/dist/core/graph/multi-hop-retrieval.d.ts +48 -0
  265. package/dist/core/graph/multi-hop-retrieval.js +215 -0
  266. package/dist/core/graph/relationship-extractor.d.ts +48 -0
  267. package/dist/core/graph/relationship-extractor.js +351 -0
  268. package/dist/core/hooks/agent-hooks.d.ts +10 -1
  269. package/dist/core/hooks/agent-hooks.js +301 -24
  270. package/dist/core/hot-cache.d.ts +86 -0
  271. package/dist/core/hot-cache.js +285 -0
  272. package/dist/core/index.d.ts +9 -9
  273. package/dist/core/index.js +9 -12
  274. package/dist/core/ingestion/core-memory.d.ts +2 -2
  275. package/dist/core/ingestion/core-memory.js +3 -3
  276. package/dist/core/ingestion/learnings.js +3 -0
  277. package/dist/core/ingestion/signal-engine.d.ts +41 -0
  278. package/dist/core/ingestion/signal-engine.js +201 -0
  279. package/dist/core/{obsidian-vault.d.ts → integrations/obsidian-vault.d.ts} +2 -1
  280. package/dist/core/{obsidian-vault.js → integrations/obsidian-vault.js} +69 -7
  281. package/dist/core/lib/parse-embedding.d.ts +9 -0
  282. package/dist/core/lib/parse-embedding.js +58 -0
  283. package/dist/core/lib/schemas.d.ts +57 -54
  284. package/dist/core/lib/types.d.ts +45 -0
  285. package/dist/core/lib/types.js +6 -0
  286. package/dist/core/lib/utils.d.ts +4 -0
  287. package/dist/core/lib/utils.js +55 -0
  288. package/dist/core/lifecycle.d.ts +0 -1
  289. package/dist/core/lifecycle.js +13 -23
  290. package/dist/core/logger.d.ts +1 -0
  291. package/dist/core/logger.js +14 -8
  292. package/dist/core/mcp/tools.d.ts +0 -2
  293. package/dist/core/mcp/tools.js +0 -87
  294. package/dist/core/mcp/types.d.ts +25 -253
  295. package/dist/core/mcp/types.js +2 -2
  296. package/dist/core/memory/categorizer.js +1 -0
  297. package/dist/core/memory/consolidation.js +2 -28
  298. package/dist/core/memory/entity-extractor.d.ts +4 -0
  299. package/dist/core/memory/entity-extractor.js +30 -16
  300. package/dist/core/memory/explain.d.ts +18 -0
  301. package/dist/core/memory/explain.js +92 -0
  302. package/dist/core/memory/fact-deriver.d.ts +31 -0
  303. package/dist/core/memory/fact-deriver.js +236 -0
  304. package/dist/core/memory/hybrid-retrieval.d.ts +14 -16
  305. package/dist/core/memory/hybrid-retrieval.js +25 -127
  306. package/dist/core/memory/hybrid-scorer.js +6 -23
  307. package/dist/core/memory/hybrid-search.d.ts +10 -7
  308. package/dist/core/memory/hybrid-search.js +458 -221
  309. package/dist/core/memory/importance.d.ts +0 -17
  310. package/dist/core/memory/importance.js +1 -58
  311. package/dist/core/memory/index.d.ts +1 -0
  312. package/dist/core/memory/index.js +1 -0
  313. package/dist/core/memory/memories.d.ts +13 -17
  314. package/dist/core/memory/memories.js +78 -75
  315. package/dist/core/memory/memory-lifecycle.d.ts +2 -2
  316. package/dist/core/memory/memory-lifecycle.js +10 -18
  317. package/dist/core/memory/normalization.d.ts +1 -16
  318. package/dist/core/memory/path-strengthener.d.ts +39 -0
  319. package/dist/core/memory/path-strengthener.js +150 -0
  320. package/dist/core/memory/query-processor.js +37 -3
  321. package/dist/core/memory/retrieval-feedback.d.ts +70 -0
  322. package/dist/core/memory/retrieval-feedback.js +213 -0
  323. package/dist/core/memory/stale-cleaner.d.ts +26 -0
  324. package/dist/core/memory/stale-cleaner.js +97 -0
  325. package/dist/core/memory/stats.d.ts +10 -0
  326. package/dist/core/memory/stats.js +8 -3
  327. package/dist/core/memory/trigger-detector.d.ts +8 -1
  328. package/dist/core/memory/trigger-detector.js +42 -5
  329. package/dist/core/places/index.d.ts +1 -1
  330. package/dist/core/places/index.js +1 -1
  331. package/dist/core/places/places.d.ts +13 -13
  332. package/dist/core/places/places.js +27 -27
  333. package/dist/core/places/rules.js +23 -23
  334. package/dist/core/places/walking.d.ts +3 -3
  335. package/dist/core/places/walking.js +7 -7
  336. package/dist/core/projects.js +8 -0
  337. package/dist/core/runtime/trust-report.d.ts +102 -0
  338. package/dist/core/runtime/trust-report.js +107 -0
  339. package/dist/core/runtime/trust-state.d.ts +12 -0
  340. package/dist/core/runtime/trust-state.js +309 -0
  341. package/dist/core/scheduler/cron-scheduler.d.ts +1 -1
  342. package/dist/core/scheduler/cron-scheduler.js +164 -3
  343. package/dist/core/scheduler/job-runner.js +1 -1
  344. package/dist/core/search/qmd-wrapper.d.ts +36 -0
  345. package/dist/core/search/qmd-wrapper.js +58 -0
  346. package/dist/core/session/auto-load.js +28 -3
  347. package/dist/core/session/entity-tracker.d.ts +62 -0
  348. package/dist/core/session/entity-tracker.js +287 -0
  349. package/dist/core/session/reference-resolver.d.ts +26 -0
  350. package/dist/core/session/reference-resolver.js +121 -0
  351. package/dist/core/session/self-iteration-job.d.ts +15 -0
  352. package/dist/core/session/self-iteration-job.js +163 -58
  353. package/dist/core/session/working-set.d.ts +50 -0
  354. package/dist/core/session/working-set.js +212 -0
  355. package/dist/core/snapshots/creation.d.ts +2 -8
  356. package/dist/core/snapshots/creation.js +3 -12
  357. package/dist/core/utils/summarization-helpers.d.ts +0 -4
  358. package/dist/core/utils/summarization-helpers.js +1 -6
  359. package/dist/db/bootstrap.d.ts +2 -0
  360. package/dist/db/bootstrap.js +229 -280
  361. package/dist/db/drizzle/schema-sqlite.d.ts +702 -1
  362. package/dist/db/drizzle/schema-sqlite.js +83 -4
  363. package/dist/db/drizzle/schema.d.ts +653 -1
  364. package/dist/db/drizzle/schema.js +93 -4
  365. package/dist/db/migrations/associations.d.ts +6 -0
  366. package/dist/db/migrations/associations.js +29 -0
  367. package/dist/db/migrations/beliefs.d.ts +10 -0
  368. package/dist/db/migrations/beliefs.js +76 -0
  369. package/dist/db/migrations/core-memory.d.ts +6 -0
  370. package/dist/db/migrations/core-memory.js +29 -0
  371. package/dist/db/migrations/fts.d.ts +6 -0
  372. package/dist/db/migrations/fts.js +52 -0
  373. package/dist/db/migrations/index.d.ts +25 -0
  374. package/dist/db/migrations/index.js +51 -0
  375. package/dist/db/migrations/indexes.d.ts +6 -0
  376. package/dist/db/migrations/indexes.js +30 -0
  377. package/dist/db/migrations/learnings.d.ts +7 -0
  378. package/dist/db/migrations/learnings.js +26 -0
  379. package/dist/db/migrations/maintenance.d.ts +6 -0
  380. package/dist/db/migrations/maintenance.js +61 -0
  381. package/dist/db/migrations/memories.d.ts +7 -0
  382. package/dist/db/migrations/memories.js +16 -0
  383. package/dist/db/migrations/memory-places.d.ts +6 -0
  384. package/dist/db/migrations/memory-places.js +29 -0
  385. package/dist/db/migrations/places.d.ts +6 -0
  386. package/dist/db/migrations/places.js +43 -0
  387. package/dist/db/migrations/projects.d.ts +3 -0
  388. package/dist/db/migrations/projects.js +13 -0
  389. package/dist/db/migrations/tier-conversion.d.ts +7 -0
  390. package/dist/db/migrations/tier-conversion.js +20 -0
  391. package/dist/db/schema/beliefs.d.ts +9 -0
  392. package/dist/db/schema/beliefs.js +46 -0
  393. package/dist/db/schema/generator.d.ts +38 -0
  394. package/dist/db/schema/generator.js +108 -0
  395. package/dist/db/schema/index.d.ts +19 -20
  396. package/dist/db/schema/index.js +25 -79
  397. package/dist/db/schema/learnings.d.ts +7 -0
  398. package/dist/db/schema/learnings.js +30 -0
  399. package/dist/db/schema/memories.d.ts +7 -0
  400. package/dist/db/schema/memories.js +81 -0
  401. package/dist/db/schema/projects.d.ts +4 -0
  402. package/dist/db/schema/projects.js +31 -0
  403. package/dist/packages/mcp/src/index.d.ts +3 -0
  404. package/dist/packages/mcp/src/index.js +733 -0
  405. package/mcp.json.example +8 -11
  406. package/package.json +57 -76
  407. package/packages/cli/package.json +22 -0
  408. package/packages/cli/src/commands/clean.ts +68 -0
  409. package/packages/cli/src/commands/context.ts +79 -0
  410. package/packages/cli/src/commands/doctor.ts +357 -0
  411. package/packages/cli/src/commands/forget.ts +72 -0
  412. package/packages/cli/src/commands/health.ts +36 -0
  413. package/packages/cli/src/commands/inspect.ts +41 -0
  414. package/packages/cli/src/commands/link.ts +50 -0
  415. package/packages/cli/src/commands/migrate.ts +93 -0
  416. package/packages/cli/src/commands/recall.ts +99 -0
  417. package/packages/cli/src/commands/recent.ts +57 -0
  418. package/packages/cli/src/commands/remember.ts +139 -0
  419. package/packages/cli/src/commands/run.ts +58 -0
  420. package/packages/cli/src/commands/stale.ts +43 -0
  421. package/packages/cli/src/commands/stats.ts +42 -0
  422. package/packages/cli/src/index.ts +57 -0
  423. package/packages/cli/tsconfig.json +24 -0
  424. package/packages/mcp/package.json +26 -0
  425. package/packages/mcp/src/index.ts +877 -0
  426. package/packages/mcp/tsconfig.json +20 -0
  427. package/skills/squish-memory/SKILL.md +38 -35
  428. package/skills/squish-memory/{scripts/install.sh → install.sh} +1 -1
  429. package/skills/squish-memory/references/claude-desktop.json +12 -0
  430. package/skills/squish-memory/references/openclaw.json +13 -0
  431. package/skills/squish-memory/references/opencode.json +14 -0
  432. package/config/hooks/claude-code-hooks.json +0 -39
  433. package/config/hooks/cursor-hooks.json +0 -30
  434. package/config/hooks/opencode-hooks.json +0 -30
  435. package/config/hooks/windsurf-hooks.json +0 -30
  436. package/config/mcp-cli-fallback-policy.json +0 -22
  437. package/config/mcp.json +0 -38
  438. package/config/plugin-manifest.json +0 -101
  439. package/config/plugin-manifest.schema.json +0 -244
  440. package/config/plugin.json +0 -32
  441. package/config/remote-memory-policy.json +0 -32
  442. package/core/commands/context-paging.md +0 -51
  443. package/core/commands/context-status.md +0 -22
  444. package/core/commands/context.md +0 -5
  445. package/core/commands/core-memory.md +0 -56
  446. package/core/commands/health.md +0 -5
  447. package/core/commands/init.md +0 -39
  448. package/core/commands/merge.md +0 -113
  449. package/core/commands/recall.md +0 -5
  450. package/core/commands/remember.md +0 -11
  451. package/core/commands/search.md +0 -10
  452. package/dist/core/commands/managed-sync.d.ts +0 -10
  453. package/dist/core/commands/managed-sync.js +0 -64
  454. package/dist/core/external-folder/index.d.ts +0 -102
  455. package/dist/core/external-folder/index.js +0 -294
  456. package/dist/core/namespaces/index.d.ts +0 -71
  457. package/dist/core/namespaces/index.js +0 -305
  458. package/dist/core/namespaces/uri-parser.d.ts +0 -31
  459. package/dist/core/namespaces/uri-parser.js +0 -74
  460. package/dist/core/search/qmd-search.d.ts +0 -61
  461. package/dist/core/search/qmd-search.js +0 -178
  462. package/dist/core/session-hooks/self-iteration-job.d.ts +0 -20
  463. package/dist/core/session-hooks/self-iteration-job.js +0 -282
  464. package/dist/core/session-hooks/session-hooks.d.ts +0 -18
  465. package/dist/core/session-hooks/session-hooks.js +0 -58
  466. package/dist/core/snapshots.d.ts +0 -29
  467. package/dist/core/snapshots.js +0 -220
  468. package/dist/core/sync/qmd-sync.d.ts +0 -94
  469. package/dist/core/sync/qmd-sync.js +0 -201
  470. package/dist/index.d.ts +0 -7
  471. package/dist/index.js +0 -1677
  472. package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
  473. package/dist/webui/server.d.ts +0 -5
  474. package/dist/webui/server.js +0 -642
  475. package/generated/mcp/manifest.json +0 -23
  476. package/generated/mcp/mcp-servers.json +0 -25
  477. package/generated/mcp/mcporter.json +0 -34
  478. package/generated/mcp/openclaw-memory-qmd.json +0 -17
  479. package/generated/mcp/runtime.json +0 -12
  480. package/scripts/README.md +0 -60
  481. package/scripts/build-release.sh +0 -36
  482. package/scripts/check-secrets.js +0 -132
  483. package/scripts/copy-runtime-assets.mjs +0 -26
  484. package/scripts/generate-mcp.mjs +0 -264
  485. package/scripts/github-release.sh +0 -77
  486. package/scripts/init-dirs.mjs +0 -13
  487. package/scripts/install-claude-code.sh +0 -85
  488. package/scripts/install-cursor.sh +0 -56
  489. package/scripts/install-hooks.sh +0 -73
  490. package/scripts/install-interactive.mjs +0 -357
  491. package/scripts/install-opencode.sh +0 -75
  492. package/scripts/install-plugin.mjs +0 -415
  493. package/scripts/install-windsurf.sh +0 -67
  494. package/scripts/remote-preflight.mjs +0 -62
  495. package/scripts/squish-fallback.mjs +0 -132
  496. package/scripts/test-interactive.mjs +0 -131
  497. package/scripts/verify-mcp.mjs +0 -214
  498. package/skills/squish-memory/scripts/install.mjs +0 -335
  499. package/skills/squish-memory/write_skill.js +0 -2
@@ -1,64 +0,0 @@
1
- import { MCPClient } from '../../core/mcp/client.js';
2
- import { config } from '../../config.js';
3
- import { logger } from '../../core/logger.js';
4
- import { search, rememberMemory } from '../../core/memory/memories.js';
5
- export class ManagedSync {
6
- client;
7
- syncEnabled;
8
- constructor() {
9
- this.syncEnabled = config.managedMode && !!config.managedApiKey;
10
- this.client = new MCPClient(config.managedApiUrl);
11
- }
12
- async sync() {
13
- if (!this.syncEnabled) {
14
- logger.debug('Managed sync disabled');
15
- return;
16
- }
17
- try {
18
- await this.client.initialize();
19
- logger.info('Connected to managed storage');
20
- }
21
- catch (error) {
22
- logger.error('Managed sync connection failed:', error);
23
- }
24
- }
25
- async pushMemory(memoryId) {
26
- if (!this.syncEnabled)
27
- return;
28
- try {
29
- const memory = await search({ query: memoryId, limit: 1 });
30
- if (memory.length > 0) {
31
- await this.client.callTool('managed_memory_store', {
32
- memory: memory[0],
33
- });
34
- logger.debug(`Pushed memory ${memoryId} to managed storage`);
35
- }
36
- }
37
- catch (error) {
38
- logger.error(`Failed to push memory ${memoryId}:`, error);
39
- }
40
- }
41
- async pullMemory(memoryId) {
42
- if (!this.syncEnabled)
43
- return;
44
- try {
45
- const result = await this.client.callTool('managed_memory_retrieve', {
46
- memoryId,
47
- });
48
- if (result.content[0]?.text) {
49
- const memory = JSON.parse(result.content[0].text);
50
- await rememberMemory(memory);
51
- logger.debug(`Pulled memory ${memoryId} from managed storage`);
52
- }
53
- }
54
- catch (error) {
55
- logger.error(`Failed to pull memory ${memoryId}:`, error);
56
- }
57
- }
58
- }
59
- export async function startManagedSync() {
60
- const sync = new ManagedSync();
61
- await sync.sync();
62
- return sync;
63
- }
64
- //# sourceMappingURL=managed-sync.js.map
@@ -1,102 +0,0 @@
1
- /**
2
- * External Folder Memory Manager
3
- *
4
- * Wraps QMD to treat an external folder as a secondary memory layer.
5
- * - Writes hot memories to daily notes (YYYY-MM-DD.md) with frontmatter
6
- * - Uses QMD to search both Squish DB and external folder
7
- * - Auto-indexes on mount and write
8
- *
9
- * Usage:
10
- * squish mount /path/to/folder # Enable external memory
11
- * squish mount status # Show status
12
- * squish mount unmount # Disable
13
- */
14
- import type { MemoryRecord, MemoryType } from '../memory/memories.js';
15
- export interface ExternalMemoryConfig {
16
- enabled: boolean;
17
- path: string;
18
- }
19
- export interface ExternalMemoryStatus {
20
- mounted: boolean;
21
- path: string | null;
22
- qmdIndexed: boolean;
23
- memoryCount: number;
24
- lastIndexed: string | null;
25
- }
26
- export interface MemoryAsMarkdown {
27
- id: string;
28
- type: MemoryType;
29
- content: string;
30
- tags: string[];
31
- createdAt: string;
32
- confidence?: string;
33
- projectId?: string | null;
34
- }
35
- /**
36
- * External Folder Memory Manager class
37
- */
38
- export declare class ExternalFolderMemory {
39
- private mountedPath;
40
- /**
41
- * Check if external memory is enabled and mounted
42
- */
43
- isEnabled(): boolean;
44
- /**
45
- * Get the mounted path
46
- */
47
- getPath(): string | null;
48
- /**
49
- * Mount external memory at a path
50
- * Creates folder if needed, initializes structure
51
- */
52
- mount(path: string): Promise<{
53
- success: boolean;
54
- error?: string;
55
- }>;
56
- /**
57
- * Unmount external memory
58
- */
59
- unmount(): {
60
- success: boolean;
61
- };
62
- /**
63
- * Ensure QMD indexes the external folder
64
- */
65
- ensureIndexed(folderPath?: string): Promise<boolean>;
66
- /**
67
- * Write a memory to the external folder (daily note)
68
- */
69
- writeMemory(memory: MemoryAsMarkdown): Promise<{
70
- success: boolean;
71
- error?: string;
72
- }>;
73
- /**
74
- * Trigger background re-index via QMD
75
- */
76
- private triggerReindex;
77
- /**
78
- * Get current status of external memory
79
- */
80
- getStatus(): Promise<ExternalMemoryStatus>;
81
- /**
82
- * Check if folder is indexed by QMD
83
- */
84
- private checkQMDIndexed;
85
- /**
86
- * Convert a MemoryRecord to MemoryAsMarkdown format
87
- */
88
- toMarkdownFormat(memory: MemoryRecord): MemoryAsMarkdown;
89
- }
90
- /**
91
- * Get the singleton ExternalFolderMemory instance
92
- */
93
- export declare function getExternalMemory(): ExternalFolderMemory;
94
- /**
95
- * Check if external memory is enabled
96
- */
97
- export declare function isExternalMemoryEnabled(): boolean;
98
- /**
99
- * Get external memory path
100
- */
101
- export declare function getExternalMemoryPath(): string | null;
102
- //# sourceMappingURL=index.d.ts.map
@@ -1,294 +0,0 @@
1
- /**
2
- * External Folder Memory Manager
3
- *
4
- * Wraps QMD to treat an external folder as a secondary memory layer.
5
- * - Writes hot memories to daily notes (YYYY-MM-DD.md) with frontmatter
6
- * - Uses QMD to search both Squish DB and external folder
7
- * - Auto-indexes on mount and write
8
- *
9
- * Usage:
10
- * squish mount /path/to/folder # Enable external memory
11
- * squish mount status # Show status
12
- * squish mount unmount # Disable
13
- */
14
- import { existsSync, mkdirSync, appendFileSync } from 'fs';
15
- import { join } from 'path';
16
- import { spawn } from 'child_process';
17
- import { logger } from '../logger.js';
18
- import { config } from '../../config.js';
19
- /**
20
- * Format a memory as markdown with YAML frontmatter
21
- */
22
- function formatMemoryAsMarkdown(memory) {
23
- const frontmatter = [
24
- '---',
25
- `id: ${memory.id}`,
26
- `type: ${memory.type}`,
27
- `tags: [${memory.tags.join(', ')}]`,
28
- `created: ${memory.createdAt}`,
29
- ];
30
- if (memory.confidence) {
31
- frontmatter.push(`confidence: ${memory.confidence}`);
32
- }
33
- if (memory.projectId) {
34
- frontmatter.push(`project: ${memory.projectId}`);
35
- }
36
- frontmatter.push('---', '', memory.content);
37
- return frontmatter.join('\n');
38
- }
39
- /**
40
- * Get the daily note filename for a given date
41
- */
42
- function getDailyNotePath(folderPath, date) {
43
- const year = date.getFullYear();
44
- const month = String(date.getMonth() + 1).padStart(2, '0');
45
- const day = String(date.getDate()).padStart(2, '0');
46
- return join(folderPath, `${year}-${month}-${day}.md`);
47
- }
48
- /**
49
- * Get today's date string
50
- */
51
- function getTodayDateStr() {
52
- const today = new Date();
53
- const year = today.getFullYear();
54
- const month = String(today.getMonth() + 1).padStart(2, '0');
55
- const day = String(today.getDate()).padStart(2, '0');
56
- return `${year}-${month}-${day}`;
57
- }
58
- /**
59
- * External Folder Memory Manager class
60
- */
61
- export class ExternalFolderMemory {
62
- mountedPath = null;
63
- /**
64
- * Check if external memory is enabled and mounted
65
- */
66
- isEnabled() {
67
- return config.externalMemoryEnabled && !!config.externalMemoryPath;
68
- }
69
- /**
70
- * Get the mounted path
71
- */
72
- getPath() {
73
- return this.isEnabled() ? config.externalMemoryPath : null;
74
- }
75
- /**
76
- * Mount external memory at a path
77
- * Creates folder if needed, initializes structure
78
- */
79
- async mount(path) {
80
- if (!path) {
81
- return { success: false, error: 'Path is required' };
82
- }
83
- // Resolve to absolute path
84
- const absolutePath = join(process.cwd(), path);
85
- // Security: validate path doesn't escape cwd (prevent path traversal)
86
- const resolvedPath = absolutePath.split(/[\\/]/).join('/');
87
- const cwdPath = process.cwd().split(/[\\/]/).join('/');
88
- if (!resolvedPath.startsWith(cwdPath + '/') && resolvedPath !== cwdPath) {
89
- return { success: false, error: 'Path traversal not allowed' };
90
- }
91
- // Create folder if it doesn't exist
92
- if (!existsSync(absolutePath)) {
93
- try {
94
- mkdirSync(absolutePath, { recursive: true });
95
- logger.info(`[ExternalMemory] Created folder: ${absolutePath}`);
96
- }
97
- catch (error) {
98
- return { success: false, error: `Failed to create folder: ${error}` };
99
- }
100
- }
101
- // Initialize QMD index for this folder
102
- const indexed = await this.ensureIndexed(absolutePath);
103
- if (!indexed) {
104
- logger.warn('[ExternalMemory] QMD not found or indexing failed. Install with: bun install -g qmd');
105
- }
106
- this.mountedPath = absolutePath;
107
- logger.info(`[ExternalMemory] Mounted at: ${absolutePath}`);
108
- return { success: true };
109
- }
110
- /**
111
- * Unmount external memory
112
- */
113
- unmount() {
114
- this.mountedPath = null;
115
- logger.info('[ExternalMemory] Unmounted');
116
- return { success: true };
117
- }
118
- /**
119
- * Ensure QMD indexes the external folder
120
- */
121
- async ensureIndexed(folderPath) {
122
- const targetPath = folderPath || this.getPath();
123
- if (!targetPath) {
124
- return false;
125
- }
126
- return new Promise((resolve) => {
127
- // Run qmd add to index the folder
128
- const process = spawn('qmd', ['add', targetPath], {
129
- stdio: 'ignore'
130
- });
131
- process.on('close', (code) => {
132
- if (code === 0) {
133
- logger.info(`[ExternalMemory] Indexed folder: ${targetPath}`);
134
- resolve(true);
135
- }
136
- else {
137
- logger.warn(`[ExternalMemory] QMD add failed with code: ${code}`);
138
- resolve(false);
139
- }
140
- });
141
- process.on('error', (error) => {
142
- logger.warn(`[ExternalMemory] QMD add error: ${error}`);
143
- resolve(false);
144
- });
145
- // Timeout after 30 seconds
146
- setTimeout(() => {
147
- process.kill();
148
- resolve(false);
149
- }, 30000);
150
- });
151
- }
152
- /**
153
- * Write a memory to the external folder (daily note)
154
- */
155
- async writeMemory(memory) {
156
- const folderPath = this.getPath();
157
- if (!folderPath) {
158
- return { success: false, error: 'External memory not enabled' };
159
- }
160
- try {
161
- const date = memory.createdAt ? new Date(memory.createdAt) : new Date();
162
- const dailyNotePath = getDailyNotePath(folderPath, date);
163
- const dateStr = getTodayDateStr();
164
- // Build memory block content
165
- const memoryBlock = formatMemoryAsMarkdown(memory);
166
- // Check if daily note exists, if not create with header
167
- if (!existsSync(dailyNotePath)) {
168
- const header = `# ${dateStr}\n\n## Squish Memories\n\n---\n\n`;
169
- appendFileSync(dailyNotePath, header, 'utf-8');
170
- logger.info(`[ExternalMemory] Created daily note: ${dailyNotePath}`);
171
- }
172
- // Append memory block with separator
173
- appendFileSync(dailyNotePath, '\n---\n\n' + memoryBlock + '\n', 'utf-8');
174
- logger.info(`[ExternalMemory] Wrote memory ${memory.id} to ${dateStr}.md`);
175
- // Trigger QMD re-index (background)
176
- this.triggerReindex().catch(() => { });
177
- return { success: true };
178
- }
179
- catch (error) {
180
- const errorMsg = error instanceof Error ? error.message : String(error);
181
- logger.error(`[ExternalMemory] Write failed: ${errorMsg}`);
182
- return { success: false, error: errorMsg };
183
- }
184
- }
185
- /**
186
- * Trigger background re-index via QMD
187
- */
188
- async triggerReindex() {
189
- const folderPath = this.getPath();
190
- if (!folderPath)
191
- return;
192
- // Run qmd in background to re-index
193
- spawn('qmd', ['add', folderPath], {
194
- stdio: 'ignore',
195
- detached: true
196
- });
197
- }
198
- /**
199
- * Get current status of external memory
200
- */
201
- async getStatus() {
202
- const path = this.getPath();
203
- if (!path || !existsSync(path)) {
204
- return {
205
- mounted: false,
206
- path: null,
207
- qmdIndexed: false,
208
- memoryCount: 0,
209
- lastIndexed: null
210
- };
211
- }
212
- // Count .md files and memories
213
- let memoryCount = 0;
214
- try {
215
- const { readdirSync } = await import('fs');
216
- const files = readdirSync(path).filter(f => f.endsWith('.md'));
217
- memoryCount = files.length;
218
- }
219
- catch {
220
- // Ignore
221
- }
222
- // Check if QMD has this folder indexed (via qmd list)
223
- const qmdIndexed = await this.checkQMDIndexed(path);
224
- return {
225
- mounted: true,
226
- path,
227
- qmdIndexed,
228
- memoryCount,
229
- lastIndexed: null
230
- };
231
- }
232
- /**
233
- * Check if folder is indexed by QMD
234
- */
235
- async checkQMDIndexed(folderPath) {
236
- return new Promise((resolve) => {
237
- const process = spawn('qmd', ['list'], {
238
- stdio: 'pipe'
239
- });
240
- let output = '';
241
- process.stdout?.on('data', (data) => {
242
- output += data.toString();
243
- });
244
- process.on('close', () => {
245
- resolve(output.includes(folderPath));
246
- });
247
- process.on('error', () => {
248
- resolve(false);
249
- });
250
- setTimeout(() => {
251
- process.kill();
252
- resolve(false);
253
- }, 5000);
254
- });
255
- }
256
- /**
257
- * Convert a MemoryRecord to MemoryAsMarkdown format
258
- */
259
- toMarkdownFormat(memory) {
260
- return {
261
- id: memory.id,
262
- type: memory.type,
263
- content: memory.content,
264
- tags: memory.tags || [],
265
- createdAt: memory.createdAt || new Date().toISOString(),
266
- confidence: memory.confidenceLevel || undefined,
267
- projectId: memory.projectId
268
- };
269
- }
270
- }
271
- // Singleton instance
272
- let externalMemoryInstance = null;
273
- /**
274
- * Get the singleton ExternalFolderMemory instance
275
- */
276
- export function getExternalMemory() {
277
- if (!externalMemoryInstance) {
278
- externalMemoryInstance = new ExternalFolderMemory();
279
- }
280
- return externalMemoryInstance;
281
- }
282
- /**
283
- * Check if external memory is enabled
284
- */
285
- export function isExternalMemoryEnabled() {
286
- return getExternalMemory().isEnabled();
287
- }
288
- /**
289
- * Get external memory path
290
- */
291
- export function getExternalMemoryPath() {
292
- return getExternalMemory().getPath();
293
- }
294
- //# sourceMappingURL=index.js.map
@@ -1,71 +0,0 @@
1
- /** Namespace Management - Hierarchical folder-like namespaces for memories */
2
- export type NamespaceType = 'root' | 'user' | 'agent' | 'project' | 'custom';
3
- export interface Namespace {
4
- id: string;
5
- projectId: string;
6
- name: string;
7
- parentId: string | null;
8
- type: NamespaceType;
9
- description: string | null;
10
- path: string;
11
- children?: Namespace[];
12
- createdAt: Date;
13
- updatedAt: Date;
14
- }
15
- export interface NamespaceCreateInput {
16
- projectId: string;
17
- name: string;
18
- type: NamespaceType;
19
- parentId?: string | null;
20
- description?: string;
21
- }
22
- export interface NamespaceTree {
23
- id: string;
24
- name: string;
25
- type: NamespaceType;
26
- description: string | null;
27
- path: string;
28
- children: NamespaceTree[];
29
- }
30
- /**
31
- * Create a new namespace
32
- */
33
- export declare function createNamespace(input: NamespaceCreateInput): Promise<Namespace>;
34
- /**
35
- * Get a namespace by ID
36
- */
37
- export declare function getNamespaceById(id: string): Promise<Namespace | null>;
38
- /**
39
- * Resolve a namespace path to a namespace ID
40
- * @example resolveNamespacePath('my-project', ['user', 'preferences']) -> namespaceId
41
- */
42
- export declare function resolveNamespacePath(projectId: string, path: string[]): Promise<string | null>;
43
- /**
44
- * Get namespace tree for a project
45
- */
46
- export declare function getNamespaceTree(projectId: string): Promise<NamespaceTree[]>;
47
- /**
48
- * Get or create default namespaces for a project
49
- */
50
- export declare function getDefaultNamespaces(projectId: string): Promise<Namespace[]>;
51
- /**
52
- * List namespaces with optional filtering
53
- */
54
- export declare function listNamespaces(options?: {
55
- projectId?: string;
56
- type?: NamespaceType;
57
- parentId?: string;
58
- recursive?: boolean;
59
- }): Promise<Namespace[]>;
60
- /**
61
- * Delete a namespace (cascades to child namespaces)
62
- */
63
- export declare function deleteNamespace(id: string): Promise<void>;
64
- /**
65
- * Update namespace
66
- */
67
- export declare function updateNamespace(id: string, updates: Partial<{
68
- name: string;
69
- description: string;
70
- }>): Promise<void>;
71
- //# sourceMappingURL=index.d.ts.map