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,132 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import fs from "node:fs";
4
- import path from "node:path";
5
- import { spawnSync } from "node:child_process";
6
-
7
- const root = process.cwd();
8
- const policyPath = path.join(root, "config", "mcp-cli-fallback-policy.json");
9
-
10
- function parseArgs(argv) {
11
- const args = {
12
- op: "",
13
- payload: "",
14
- dryRun: false,
15
- simulateMcpFailure: false,
16
- mcpEnabled: process.env.SQUISH_MCP_ENABLED === "true"
17
- };
18
-
19
- for (let i = 2; i < argv.length; i += 1) {
20
- const token = argv[i];
21
- if (token === "--op") {
22
- args.op = argv[i + 1] || "";
23
- i += 1;
24
- continue;
25
- }
26
- if (token === "--payload") {
27
- args.payload = argv[i + 1] || "";
28
- i += 1;
29
- continue;
30
- }
31
- if (token === "--dry-run") {
32
- args.dryRun = true;
33
- continue;
34
- }
35
- if (token === "--simulate-mcp-failure") {
36
- args.simulateMcpFailure = true;
37
- continue;
38
- }
39
- if (token === "--mcp-enabled") {
40
- args.mcpEnabled = true;
41
- continue;
42
- }
43
- if (token === "--no-mcp") {
44
- args.mcpEnabled = false;
45
- continue;
46
- }
47
- throw new Error(`Unknown argument: ${token}`);
48
- }
49
-
50
- if (!args.op) {
51
- throw new Error("Missing required argument: --op");
52
- }
53
- return args;
54
- }
55
-
56
- function readPolicy() {
57
- return JSON.parse(fs.readFileSync(policyPath, "utf8"));
58
- }
59
-
60
- function assertAllowed(policy, op, payload) {
61
- if (!policy.allowOperations.includes(op)) {
62
- throw new Error(`Operation not allowed by fallback policy: ${op}`);
63
- }
64
- for (const pattern of policy.denyPatterns) {
65
- const rx = new RegExp(pattern, "i");
66
- if (rx.test(payload)) {
67
- throw new Error(`Payload blocked by fallback deny pattern: ${pattern}`);
68
- }
69
- }
70
- }
71
-
72
- function output(result) {
73
- process.stdout.write(`${JSON.stringify(result)}\n`);
74
- }
75
-
76
- function runCliFallback(op, payload, dryRun) {
77
- if (dryRun) {
78
- return { success: true, executionPath: "cli-fallback", op, dryRun };
79
- }
80
-
81
- const args = [op];
82
- if (payload && payload.trim().length > 0) {
83
- args.push(payload);
84
- }
85
-
86
- const run = spawnSync("squish", args, { encoding: "utf8" });
87
- if (run.status !== 0) {
88
- return {
89
- success: false,
90
- executionPath: "cli-fallback",
91
- op,
92
- error: run.stderr || run.stdout || "squish command failed"
93
- };
94
- }
95
-
96
- return {
97
- success: true,
98
- executionPath: "cli-fallback",
99
- op,
100
- output: run.stdout.trim()
101
- };
102
- }
103
-
104
- function runMcp(op, dryRun) {
105
- if (dryRun) {
106
- return { success: true, executionPath: "mcp", op, dryRun };
107
- }
108
-
109
- return {
110
- success: true,
111
- executionPath: "mcp",
112
- op,
113
- output: "MCP call path selected"
114
- };
115
- }
116
-
117
- function main() {
118
- const args = parseArgs(process.argv);
119
- const policy = readPolicy();
120
-
121
- assertAllowed(policy, args.op, args.payload);
122
-
123
- const shouldFallback = !args.mcpEnabled || args.simulateMcpFailure;
124
- const result = shouldFallback
125
- ? runCliFallback(args.op, args.payload, args.dryRun)
126
- : runMcp(args.op, args.dryRun);
127
-
128
- output(result);
129
- process.exit(result.success ? 0 : 1);
130
- }
131
-
132
- main();
@@ -1,131 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { spawn } from "node:child_process";
4
- import path from "node:path";
5
-
6
- const colors = {
7
- green: "\x1b[32m",
8
- yellow: "\x1b[33m",
9
- cyan: "\x1b[36m",
10
- red: "\x1b[31m",
11
- reset: "\x1b[0m",
12
- gray: "\x1b[90m"
13
- };
14
-
15
- const root = process.cwd();
16
- const testScriptPath = path.join(root, "scripts", "install-interactive.mjs");
17
-
18
- let testsRun = 0;
19
- let testsPassed = 0;
20
- let testsFailed = 0;
21
-
22
- function logTest(testName) {
23
- testsRun++;
24
- console.log(`\n${colors.cyan}TEST ${testsRun}:${colors.reset} ${testName}`);
25
- }
26
-
27
- function logPass(message) {
28
- testsPassed++;
29
- console.log(` ${colors.green}✓${colors.reset} ${message}`);
30
- }
31
-
32
- function logFail(message, error) {
33
- testsFailed++;
34
- console.log(` ${colors.red}✗${colors.reset} ${message}`);
35
- if (error) {
36
- console.log(` ${colors.gray}${error}${colors.reset}`);
37
- }
38
- }
39
-
40
- function logSkip(message) {
41
- console.log(` ${colors.yellow}○${colors.reset} ${message}`);
42
- }
43
-
44
- function runTest(description, args, envVars = {}, expectedExitCode = 0) {
45
- logTest(description);
46
-
47
- return new Promise((resolve) => {
48
- const child = spawn(process.execPath, [testScriptPath, ...args], {
49
- stdio: ["inherit", "pipe", "pipe"],
50
- timeout: 5000,
51
- env: { ...process.env, ...envVars }
52
- });
53
-
54
- let stdout = "";
55
- let stderr = "";
56
-
57
- child.stdout?.on("data", (data) => {
58
- stdout += data.toString();
59
- });
60
-
61
- child.stderr?.on("data", (data) => {
62
- stderr += data.toString();
63
- });
64
-
65
- child.on("close", (code) => {
66
- if (code === expectedExitCode) {
67
- logPass(`Exit code: ${code}`);
68
- } else {
69
- logFail(`Expected exit code ${expectedExitCode}, got ${code}`, stderr);
70
- }
71
- resolve({ code, stdout, stderr });
72
- });
73
-
74
- child.on("error", (err) => {
75
- logFail("Spawn failed", err.message);
76
- resolve({ code: -1, stderr: err.message });
77
- });
78
- });
79
- }
80
-
81
- async function runTests() {
82
- console.log(`${colors.cyan}═════════════════════════════════════════════${colors.reset}`);
83
- console.log(`${colors.cyan}Interactive Installer Test Suite${colors.reset}`);
84
- console.log(`${colors.cyan}═══════════════════════════════════════════${colors.reset}`);
85
- console.log("");
86
-
87
- await runTest("Syntax check (no syntax errors)", ["--help"]);
88
-
89
- await runTest("Help flag displays usage", ["--help"]);
90
-
91
- await runTest("List flag shows available plugins", ["--list"]);
92
-
93
- await runTest("Auto mode with --all flag", ["--all", "--dry-run"]);
94
-
95
- await runTest("Auto mode with --select flag", ["--select=claude-code", "--dry-run"]);
96
-
97
- await runTest("Environment detection - CI mode", ["--list"], { CI: "true" });
98
-
99
- await runTest("Environment detection - NON_INTERACTIVE mode", ["--list"], { NON_INTERACTIVE: "1" });
100
-
101
- await runTest("Dry-run preview mode", ["--list", "--dry-run"]);
102
-
103
- await runTest("Multiple flag combination", ["--select=claude-code,openclaw", "--verbose", "--dry-run"]);
104
-
105
- await runTest("Invalid flag handling", ["--invalid-flag"], {}, 1);
106
-
107
- await runTest("Invalid plugin in --select", ["--select=nonexistent"], {}, 1);
108
-
109
- console.log("");
110
- console.log(`${colors.cyan}═════════════════════════════════════════════${colors.reset}`);
111
- console.log(`${colors.cyan}Test Summary${colors.reset}`);
112
- console.log(`${colors.cyan}═══════════════════════════════════════════${colors.reset}`);
113
- console.log("");
114
- console.log(` ${colors.gray}Total tests:${colors.reset} ${testsRun}`);
115
- console.log(` ${colors.green}Passed:${colors.reset} ${testsPassed}`);
116
- console.log(` ${colors.red}Failed:${colors.reset} ${testsFailed}`);
117
- console.log("");
118
-
119
- if (testsFailed === 0) {
120
- console.log(`${colors.green}All tests passed!${colors.reset}`);
121
- } else {
122
- console.log(`${colors.yellow}${testsFailed} test(s) failed${colors.reset}`);
123
- }
124
- }
125
-
126
- runTests().then(() => {
127
- process.exit(testsFailed > 0 ? 1 : 0);
128
- }).catch((err) => {
129
- console.log(`${colors.red}Fatal test error:${colors.reset} ${err.message}`);
130
- process.exit(1);
131
- });
@@ -1,214 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import fs from "node:fs";
4
- import path from "node:path";
5
- import crypto from "node:crypto";
6
- import { spawnSync } from "node:child_process";
7
-
8
- const root = process.cwd();
9
- const defaultConfigPath = path.join(root, "config", "mcp.json");
10
- const defaultGeneratedDir = path.join(root, "generated", "mcp");
11
- const requiredFiles = [
12
- "runtime.json",
13
- "mcp-servers.json",
14
- "mcporter.json",
15
- "openclaw-memory-qmd.json",
16
- "manifest.json"
17
- ];
18
-
19
- function parseArgs(argv) {
20
- const args = {
21
- configPath: defaultConfigPath,
22
- generatedDir: defaultGeneratedDir,
23
- checkReproducibility: true
24
- };
25
-
26
- for (let i = 2; i < argv.length; i += 1) {
27
- const token = argv[i];
28
- if (token === "--config") {
29
- args.configPath = path.resolve(argv[i + 1]);
30
- i += 1;
31
- continue;
32
- }
33
- if (token === "--generated") {
34
- args.generatedDir = path.resolve(argv[i + 1]);
35
- i += 1;
36
- continue;
37
- }
38
- if (token === "--no-repro") {
39
- args.checkReproducibility = false;
40
- continue;
41
- }
42
- throw new Error(`Unknown argument: ${token}`);
43
- }
44
-
45
- return args;
46
- }
47
-
48
- function fail(message) {
49
- throw new Error(message);
50
- }
51
-
52
- function readJson(filePath) {
53
- try {
54
- return JSON.parse(fs.readFileSync(filePath, "utf8"));
55
- } catch (error) {
56
- fail(`Invalid JSON at ${filePath}: ${String(error)}`);
57
- }
58
- }
59
-
60
- function checksum(filePath) {
61
- const hash = crypto.createHash("sha256");
62
- hash.update(fs.readFileSync(filePath));
63
- return hash.digest("hex");
64
- }
65
-
66
- function assertServerShape(serverName, server) {
67
- if (!server || typeof server !== "object") {
68
- fail(`Server ${serverName} must be an object`);
69
- }
70
- if (typeof server.command !== "string" || server.command.length === 0) {
71
- fail(`Server ${serverName} must include command`);
72
- }
73
- if (!Array.isArray(server.args)) {
74
- fail(`Server ${serverName} must include args array`);
75
- }
76
- if (typeof server.transport !== "string" || server.transport.length === 0) {
77
- fail(`Server ${serverName} must include transport`);
78
- }
79
- if (!server.env || typeof server.env !== "object") {
80
- fail(`Server ${serverName} must include env object`);
81
- }
82
- }
83
-
84
- function verifyGeneratedFiles(dirPath) {
85
- for (const fileName of requiredFiles) {
86
- const filePath = path.join(dirPath, fileName);
87
- if (!fs.existsSync(filePath)) {
88
- fail(`Missing generated file: ${fileName}`);
89
- }
90
- }
91
- }
92
-
93
- function verifyRuntime(runtime) {
94
- const requiredKeys = [
95
- "connectionTimeoutMs",
96
- "requestTimeoutMs",
97
- "maxConcurrentToolCalls",
98
- "lazyToolDiscovery",
99
- "resultMaxChars",
100
- "retry"
101
- ];
102
- for (const key of requiredKeys) {
103
- if (!(key in runtime)) {
104
- fail(`runtime.json missing required key: ${key}`);
105
- }
106
- }
107
- }
108
-
109
- function verifyManifest(manifest, dirPath) {
110
- if (manifest.mode !== "universal") {
111
- fail("manifest mode must be universal");
112
- }
113
- if (!Array.isArray(manifest.files) || manifest.files.length === 0) {
114
- fail("manifest files must be a non-empty array");
115
- }
116
-
117
- const expectedManifestEntries = [
118
- "runtime.json",
119
- "mcp-servers.json",
120
- "mcporter.json",
121
- "openclaw-memory-qmd.json"
122
- ];
123
-
124
- for (const fileName of expectedManifestEntries) {
125
- const entry = manifest.files.find((item) => item.file === fileName);
126
- if (!entry) {
127
- fail(`manifest missing entry for ${fileName}`);
128
- }
129
- const actualHash = checksum(path.join(dirPath, fileName));
130
- if (entry.sha256 !== actualHash) {
131
- fail(`manifest checksum mismatch for ${fileName}`);
132
- }
133
- }
134
- }
135
-
136
- function verifyReproducibility(configPath, dirPath) {
137
- const first = readJson(path.join(dirPath, "manifest.json"));
138
- const firstChecksums = new Map(first.files.map((item) => [item.file, item.sha256]));
139
-
140
- const run = spawnSync(
141
- process.execPath,
142
- ["scripts/generate-mcp.mjs", "--config", configPath, "--out", dirPath],
143
- { cwd: root, encoding: "utf8" }
144
- );
145
-
146
- if (run.status !== 0) {
147
- fail(`Reproducibility generation failed: ${run.stderr || run.stdout}`);
148
- }
149
-
150
- const second = readJson(path.join(dirPath, "manifest.json"));
151
- const secondChecksums = new Map(second.files.map((item) => [item.file, item.sha256]));
152
-
153
- for (const [fileName, firstHash] of firstChecksums.entries()) {
154
- const secondHash = secondChecksums.get(fileName);
155
- if (!secondHash) {
156
- fail(`Reproducibility check missing ${fileName} in second manifest`);
157
- }
158
- if (firstHash !== secondHash) {
159
- fail(`Reproducibility mismatch for ${fileName}`);
160
- }
161
- }
162
- }
163
-
164
- function main() {
165
- const args = parseArgs(process.argv);
166
-
167
- if (!fs.existsSync(args.configPath)) {
168
- fail(`Config file not found: ${args.configPath}`);
169
- }
170
- if (!fs.existsSync(args.generatedDir)) {
171
- fail(`Generated directory not found: ${args.generatedDir}`);
172
- }
173
-
174
- verifyGeneratedFiles(args.generatedDir);
175
-
176
- const runtime = readJson(path.join(args.generatedDir, "runtime.json"));
177
- verifyRuntime(runtime);
178
-
179
- const mcpServers = readJson(path.join(args.generatedDir, "mcp-servers.json"));
180
- if (!mcpServers.mcpServers || typeof mcpServers.mcpServers !== "object") {
181
- fail("mcp-servers.json must include mcpServers object");
182
- }
183
- const serverEntries = Object.entries(mcpServers.mcpServers);
184
- if (serverEntries.length === 0) {
185
- fail("mcp-servers.json must include at least one server");
186
- }
187
- for (const [name, server] of serverEntries) {
188
- assertServerShape(name, server);
189
- }
190
-
191
- const mcporter = readJson(path.join(args.generatedDir, "mcporter.json"));
192
- if (!Array.isArray(mcporter.imports) || mcporter.imports.length === 0) {
193
- fail("mcporter.json must include imports array");
194
- }
195
- if (!mcporter.mcpServers || typeof mcporter.mcpServers !== "object") {
196
- fail("mcporter.json must include mcpServers object");
197
- }
198
-
199
- const openclaw = readJson(path.join(args.generatedDir, "openclaw-memory-qmd.json"));
200
- if (openclaw?.memory?.backend !== "qmd") {
201
- fail("openclaw-memory-qmd.json must set memory.backend=qmd");
202
- }
203
-
204
- const manifest = readJson(path.join(args.generatedDir, "manifest.json"));
205
- verifyManifest(manifest, args.generatedDir);
206
-
207
- if (args.checkReproducibility) {
208
- verifyReproducibility(args.configPath, args.generatedDir);
209
- }
210
-
211
- console.log("MCP verification passed");
212
- }
213
-
214
- main();