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
@@ -0,0 +1,321 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Squish MCP Installer (using add-mcp)
5
+ * Installs Squish MCP configuration for various AI clients
6
+ * Supports: Claude Code, OpenCode, Codex, Cursor, VS Code, Windsurf, and more via add-mcp
7
+ *
8
+ * Usage:
9
+ * bun run install # Interactive wizard
10
+ * bun run install --all # Auto-install for all detected clients
11
+ * bun run install --clients=claude-code,opencode # Specific clients
12
+ * bun run install --global # Install globally (user-level)
13
+ * bun run install --dry-run # Preview without installing
14
+ */
15
+
16
+ import { intro, outro, confirm, multiselect, isCancel, spinner, note } from '@clack/prompts';
17
+ import picocolors from 'picocolors';
18
+ import { spawn } from 'child_process';
19
+ import fs from "node:fs";
20
+ import os from "node:os";
21
+ import path from "node:path";
22
+
23
+ const root = process.cwd();
24
+ const packageJsonPath = path.join(root, "package.json");
25
+
26
+ const c = picocolors;
27
+
28
+ const icons = {
29
+ squish: "🐙",
30
+ check: "✓",
31
+ cross: "✗",
32
+ arrow: "→",
33
+ mcp: "🔌"
34
+ };
35
+
36
+ // add-mcp supported agents (for reference - add-mcp auto-detects)
37
+ const ADD_MCP_AGENTS = [
38
+ 'claude-code',
39
+ 'opencode',
40
+ 'codex',
41
+ 'cursor',
42
+ 'vscode',
43
+ 'claude-desktop',
44
+ 'gemini-cli',
45
+ 'goose',
46
+ 'zed'
47
+ ];
48
+
49
+ // CLI argument parsing
50
+ function parseArgs() {
51
+ const args = process.argv.slice(2);
52
+ const options = {
53
+ all: false,
54
+ global: false,
55
+ clients: [],
56
+ dryRun: false,
57
+ help: false
58
+ };
59
+
60
+ for (const arg of args) {
61
+ if (arg === '--all') options.all = true;
62
+ else if (arg === '--global' || arg === '-g') options.global = true;
63
+ else if (arg === '--dry-run') options.dryRun = true;
64
+ else if (arg === '--help' || arg === '-h') options.help = true;
65
+ else if (arg.startsWith('--clients=')) {
66
+ options.clients = arg.slice(10).split(',').map(c => c.trim());
67
+ }
68
+ }
69
+
70
+ return options;
71
+ }
72
+
73
+ function printHelp() {
74
+ printLogo();
75
+ console.log(c.white("Usage:"));
76
+ console.log(` ${c.cyan("bun run install")} # Interactive wizard`);
77
+ console.log(` ${c.cyan("bun run install --all")} # Auto-install for all detected clients`);
78
+ console.log(` ${c.cyan("bun run install --global")} # Install globally (user-level)`);
79
+ console.log(` ${c.cyan("bun run install --clients=claude-code,opencode")} # Specific clients`);
80
+ console.log(` ${c.cyan("bun run install --dry-run")} # Preview without installing\n`);
81
+ console.log(c.white("Options:"));
82
+ console.log(` ${c.cyan("--all")} Install for all supported clients`);
83
+ console.log(` ${c.cyan("--global")} Install globally (user-level instead of project)`);
84
+ console.log(` ${c.cyan("--clients=")} Comma-separated list of clients`);
85
+ console.log(` ${c.cyan("--dry-run")} Preview changes without installing`);
86
+ console.log(` ${c.cyan("--help")} Show this help message\n`);
87
+ console.log(c.white("Supported clients:"));
88
+ console.log(` claude-code, opencode, codex, cursor, vscode, windsurf, and more`);
89
+ console.log(c.white("\nAlso works directly:"));
90
+ console.log(` ${c.cyan("npx add-mcp squish-memory")} # Install via add-mcp directly`);
91
+ }
92
+
93
+ function printLogo() {
94
+ console.log(c.cyan(`
95
+ ██████╗ ██████╗ ██╗ ██╗██╗███████╗██╗ ██╗
96
+ ██╔════╝██╔═══██╗██║ ██║██║██╔════╝██║ ██║
97
+ ██████╗██║ ██║██║ ██║██║███████╗███████║
98
+ ╚════██║██║ ██║██║ ██║██║╚════██║██╔══██║
99
+ ██████║╚██████╔╝╚██████╔╝██║███████║██║ ██║
100
+ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═╝ ╚═╝
101
+ `));
102
+ console.log(c.gray(" Universal Memory System for AI Agents\n"));
103
+ }
104
+
105
+ // Detect which add-mcp agents are available on this system
106
+ function detectAvailableAgents() {
107
+ const agents = [];
108
+
109
+ // Check common client directories
110
+ const checks = [
111
+ { dir: path.join(os.homedir(), '.claude'), agent: 'claude-code' },
112
+ { dir: path.join(os.homedir(), '.config', 'opencode'), agent: 'opencode' },
113
+ { dir: path.join(os.homedir(), '.codex'), agent: 'codex' },
114
+ { dir: path.join(os.homedir(), '.cursor'), agent: 'cursor' },
115
+ { dir: path.join(os.homedir(), '.vscode'), agent: 'vscode' },
116
+ { dir: path.join(os.homedir(), '.windsurf'), agent: 'windsurf' },
117
+ { dir: path.join(os.homedir(), '.zed'), agent: 'zed' },
118
+ { dir: path.join(os.homedir(), '.gemini'), agent: 'gemini-cli' },
119
+ ];
120
+
121
+ for (const check of checks) {
122
+ if (fs.existsSync(check.dir)) {
123
+ agents.push(check.agent);
124
+ }
125
+ }
126
+
127
+ return agents;
128
+ }
129
+
130
+ // Get client display name
131
+ function getClientName(agent) {
132
+ const names = {
133
+ 'claude-code': 'Claude Code',
134
+ 'opencode': 'OpenCode',
135
+ 'codex': 'Codex',
136
+ 'cursor': 'Cursor',
137
+ 'vscode': 'VS Code',
138
+ 'windsurf': 'Windsurf',
139
+ 'zed': 'Zed',
140
+ 'gemini-cli': 'Gemini CLI',
141
+ 'claude-desktop': 'Claude Desktop',
142
+ 'goose': 'Goose'
143
+ };
144
+ return names[agent] || agent;
145
+ }
146
+
147
+ // Check if squish-memory package exists locally
148
+ function checkPackageExists() {
149
+ // Check if package.json exists in root
150
+ if (!fs.existsSync(packageJsonPath)) {
151
+ return false;
152
+ }
153
+
154
+ try {
155
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
156
+ // Check if squish-memory is in dependencies or devDependencies
157
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
158
+ return !!deps['squish-memory'];
159
+ } catch {
160
+ return false;
161
+ }
162
+ }
163
+
164
+ // Run add-mcp command
165
+ function runAddMcp(clients, options) {
166
+ return new Promise((resolve, reject) => {
167
+ // Try squish-memory first (published name), fallback to @squish/memory
168
+ // add-mcp will find the correct package
169
+ const packageName = 'squish-memory';
170
+ const args = ['add-mcp', packageName, '-y'];
171
+
172
+ // Add specific agents
173
+ if (clients && clients.length > 0) {
174
+ for (const client of clients) {
175
+ args.push('-a', client);
176
+ }
177
+ }
178
+
179
+ // Add global flag if requested
180
+ if (options.global) {
181
+ args.push('--global');
182
+ }
183
+
184
+ console.log(c.cyan(`Running: npx ${args.join(' ')}\n`));
185
+
186
+ const child = spawn('npx', args, {
187
+ stdio: 'inherit',
188
+ cwd: root,
189
+ shell: true
190
+ });
191
+
192
+ child.on('close', (code) => {
193
+ if (code === 0) {
194
+ resolve(code);
195
+ } else {
196
+ reject(new Error(`add-mcp exited with code ${code}`));
197
+ }
198
+ });
199
+
200
+ child.on('error', (err) => {
201
+ reject(err);
202
+ });
203
+ });
204
+ }
205
+
206
+ // Interactive client selection
207
+ async function selectClients(availableAgents) {
208
+ const options = availableAgents.map(agent => ({
209
+ value: agent,
210
+ label: getClientName(agent),
211
+ hint: 'Detected on system'
212
+ }));
213
+
214
+ if (options.length === 0) {
215
+ console.log(c.yellow("No AI clients detected. Installing globally...\n"));
216
+ return null;
217
+ }
218
+
219
+ const selected = await multiselect({
220
+ message: 'Which AI agents do you want to install Squish MCP for?',
221
+ options,
222
+ required: false
223
+ });
224
+
225
+ return selected;
226
+ }
227
+
228
+ async function main() {
229
+ const opts = parseArgs();
230
+
231
+ if (opts.help) {
232
+ printHelp();
233
+ process.exit(0);
234
+ }
235
+
236
+ // Dry run mode - check first before any other logic
237
+ if (opts.dryRun) {
238
+ console.log(c.yellow("\n--- DRY RUN MODE ---\n"));
239
+ console.log(`Would run: npx add-mcp squish-memory -y`);
240
+ if (opts.global) {
241
+ console.log(" (--global) Install globally");
242
+ }
243
+ if (opts.clients && opts.clients.length > 0) {
244
+ console.log(` (--agents) ${opts.clients.join(', ')}`);
245
+ } else {
246
+ console.log(" (auto-detect) Let add-mcp detect installed agents");
247
+ }
248
+ console.log("");
249
+ process.exit(0);
250
+ }
251
+
252
+ printLogo();
253
+ console.log(c.gray("Using add-mcp for universal MCP installation\n"));
254
+
255
+ // Detect available agents
256
+ const availableAgents = detectAvailableAgents();
257
+
258
+ let clients;
259
+
260
+ // Non-interactive mode
261
+ if (opts.all) {
262
+ // Install for all available agents (or all known if none detected)
263
+ clients = availableAgents.length > 0 ? availableAgents : ADD_MCP_AGENTS;
264
+ console.log(c.cyan(`Auto-installing for ${clients.length} clients...\n`));
265
+ } else if (opts.clients.length > 0) {
266
+ // Install for specific clients
267
+ clients = opts.clients;
268
+ console.log(c.cyan(`Installing for: ${clients.join(', ')}\n`));
269
+ } else if (process.stdin.isTTY) {
270
+ // Interactive mode
271
+ intro(c.cyan(`${icons.squish} Squish MCP Installer`));
272
+
273
+ clients = await selectClients(availableAgents);
274
+
275
+ if (isCancel(clients) || !clients || clients.length === 0) {
276
+ console.log(c.yellow("No clients selected. Using add-mcp auto-detection...\n"));
277
+ clients = null; // Let add-mcp auto-detect
278
+ }
279
+ } else {
280
+ // Non-interactive without flags - show help
281
+ printHelp();
282
+ process.exit(0);
283
+ }
284
+
285
+ // Install
286
+ const s = spinner();
287
+ s.start('Installing Squish MCP via add-mcp...');
288
+
289
+ try {
290
+ await runAddMcp(clients, opts);
291
+ s.stop(c.green(`${icons.check} Installation Complete!`));
292
+ } catch (error) {
293
+ s.stop(c.red(`${icons.cross} Installation failed`));
294
+ console.log(c.red(`Error: ${error.message}`));
295
+ console.log(c.gray("\nTrying alternative: npx add-mcp squish-memory -y"));
296
+
297
+ // Fallback: try without specific agents (let add-mcp auto-detect)
298
+ try {
299
+ await runAddMcp(null, opts);
300
+ s.stop(c.green(`${icons.check} Installation complete (fallback)!`));
301
+ } catch (fallbackError) {
302
+ console.log(c.red(`Fallback also failed: ${fallbackError.message}`));
303
+ process.exit(1);
304
+ }
305
+ }
306
+
307
+ // Next steps
308
+ console.log();
309
+ console.log(c.white("What's next?"));
310
+ console.log(` ${c.cyan(icons.arrow)} Restart your AI assistant(s)`);
311
+ console.log(` ${c.cyan(icons.arrow)} Try: squish remember "Your first memory"`);
312
+ console.log(` ${c.cyan(icons.arrow)} Or use: npx add-mcp squish-memory --help`);
313
+ console.log();
314
+
315
+ outro(c.green(`${icons.check} Squish MCP installed!`));
316
+ }
317
+
318
+ main().catch((err) => {
319
+ console.log(c.red(`Fatal error: ${err.message}`));
320
+ process.exit(1);
321
+ });
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Squish MCP Server Entry Point
5
+ *
6
+ * Usage:
7
+ * squish-mcp # STDIO mode (default)
8
+ * squish-mcp --http # HTTP mode
9
+ * squish-mcp --port 8765 # Custom port
10
+ * squish-mcp --health # Health check mode
11
+ */
12
+
13
+ import { fileURLToPath } from 'url';
14
+ import { dirname, join } from 'path';
15
+ import { spawn } from 'child_process';
16
+
17
+ const __filename = fileURLToPath(import.meta.url);
18
+ const __dirname = dirname(__filename);
19
+
20
+ // Parse arguments
21
+ const args = process.argv.slice(2);
22
+ const isHttp = args.includes('--http');
23
+ const isHealth = args.includes('--health');
24
+ const portIndex = args.indexOf('--port');
25
+ const port = portIndex >= 0 ? parseInt(args[portIndex + 1]) : 8765;
26
+
27
+ // Use bun to run the MCP server
28
+ const bunPath = process.env.BUN?.replace(/\\/g, '/') || 'bun';
29
+ const mcpPath = join(__dirname, '..', 'packages', 'mcp', 'src', 'index.ts');
30
+
31
+ const mcpArgs = [];
32
+
33
+ if (isHttp) {
34
+ mcpArgs.push('--http', '--port', port.toString());
35
+ }
36
+
37
+ if (isHealth) {
38
+ mcpArgs.push('--health');
39
+ }
40
+
41
+ const child = spawn(bunPath, [mcpPath, ...mcpArgs], {
42
+ stdio: 'inherit',
43
+ cwd: join(__dirname, '..')
44
+ });
45
+
46
+ child.on('exit', (code) => process.exit(code || 0));
package/bin/squish.mjs ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Squish CLI - Main Entry Point
5
+ * Universal Memory for AI Agents
6
+ *
7
+ * Usage:
8
+ * squish remember "Store this memory"
9
+ * squish recall "query"
10
+ * squish inspect <memory-id>
11
+ * squish context --list-projects
12
+ */
13
+
14
+ import { fileURLToPath } from 'url';
15
+ import { dirname, join } from 'path';
16
+
17
+ const __filename = fileURLToPath(import.meta.url);
18
+ const __dirname = dirname(__filename);
19
+
20
+ // Use bun to run the CLI directly with ts support
21
+ const { spawn } = await import('child_process');
22
+ const bunPath = process.env.BUN?.replace(/\\/g, '/') || 'bun';
23
+ const cliPath = join(__dirname, '..', 'packages', 'cli', 'src', 'index.ts');
24
+
25
+ const args = process.argv.slice(2);
26
+ const child = spawn(bunPath, [cliPath, ...args], {
27
+ stdio: 'inherit',
28
+ cwd: join(__dirname, '..')
29
+ });
30
+
31
+ child.on('exit', (code) => {
32
+ process.exit(code || 0);
33
+ });
@@ -13,10 +13,5 @@
13
13
  "outputChange": {
14
14
  "from": "generated/mcp/{profile}/",
15
15
  "to": "generated/mcp/"
16
- },
17
- "notes": [
18
- "Universal generation removes per-profile directories.",
19
- "Client-specific behavior moves to installer/bootstrap scripts.",
20
- "Legacy profile references should emit migration warnings during upgrade windows."
21
- ]
16
+ }
22
17
  }
@@ -1,23 +1,19 @@
1
- {
2
- "canonicalModes": [
3
- "local",
4
- "team",
5
- "remote"
6
- ],
7
- "defaultMode": "local",
8
- "legacyAliases": {
9
- "team": "team"
10
- },
11
- "teamBackends": {
12
- "supported": ["postgres", "supabase", "neon"],
13
- "default": "postgres"
14
- },
15
- "remoteBackends": {
16
- "supported": ["supabase", "neon"],
17
- "default": "supabase"
18
- },
19
- "remoteAuth": {
20
- "supported": ["oauth", "token"],
21
- "defaultForCli": "token"
22
- }
23
- }
1
+ {
2
+ "canonicalModes": ["local", "team", "remote"],
3
+ "defaultMode": "local",
4
+ "legacyAliases": {
5
+ "team": "team"
6
+ },
7
+ "teamBackends": {
8
+ "supported": ["postgres", "supabase", "neon"],
9
+ "default": "postgres"
10
+ },
11
+ "remoteBackends": {
12
+ "supported": ["supabase", "neon"],
13
+ "default": "supabase"
14
+ },
15
+ "remoteAuth": {
16
+ "supported": ["oauth", "token"],
17
+ "defaultForCli": "token"
18
+ }
19
+ }
@@ -1,36 +1,13 @@
1
1
  {
2
- "methods": [
3
- "oauth",
4
- "token"
5
- ],
2
+ "methods": ["oauth", "token"],
6
3
  "defaultMethod": "token",
7
- "precedence": [
8
- "token",
9
- "oauth"
10
- ],
4
+ "precedence": ["token", "oauth"],
11
5
  "token": {
12
- "requiredEnv": [
13
- "SQUISH_REMOTE_TOKEN"
14
- ],
15
- "header": "Authorization",
16
- "scheme": "Bearer"
17
- },
18
- "oauth": {
19
- "pkce": true,
20
- "deviceCode": true,
21
- "authorizationUrlEnv": "SQUISH_OAUTH_AUTH_URL",
22
- "tokenUrlEnv": "SQUISH_OAUTH_TOKEN_URL",
23
- "clientIdEnv": "SQUISH_OAUTH_CLIENT_ID"
6
+ "requiredEnv": ["SQUISH_REMOTE_TOKEN"]
24
7
  },
25
8
  "cli": {
26
9
  "openclaw": {
27
10
  "default": "token"
28
- },
29
- "claude-code": {
30
- "default": "token"
31
- },
32
- "opencode": {
33
- "default": "token"
34
11
  }
35
12
  }
36
13
  }
@@ -2,47 +2,17 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "Squish MCP Universal Config",
4
4
  "type": "object",
5
- "additionalProperties": false,
6
5
  "required": ["version", "defaults", "servers"],
7
6
  "properties": {
8
7
  "version": {
9
- "type": "integer",
10
- "minimum": 1
8
+ "type": "integer"
11
9
  },
12
10
  "defaults": {
13
- "type": "object",
14
- "additionalProperties": true
11
+ "type": "object"
15
12
  },
16
13
  "servers": {
17
- "type": "object",
18
- "minProperties": 1,
19
- "additionalProperties": {
20
- "type": "object",
21
- "additionalProperties": true,
22
- "required": ["transport", "command", "args", "env"],
23
- "properties": {
24
- "transport": {
25
- "type": "string",
26
- "enum": ["stdio", "http", "sse"]
27
- },
28
- "command": {
29
- "type": "string",
30
- "minLength": 1
31
- },
32
- "args": {
33
- "type": "array",
34
- "items": {
35
- "type": "string"
36
- }
37
- },
38
- "env": {
39
- "type": "object",
40
- "additionalProperties": {
41
- "type": "string"
42
- }
43
- }
44
- }
45
- }
14
+ "type": "object"
46
15
  }
47
- }
16
+ },
17
+ "additionalProperties": true
48
18
  }