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,75 +0,0 @@
1
- #!/bin/bash
2
- # Install Squish hooks for OpenCode
3
- # Run from the squish project directory
4
-
5
- set -e
6
-
7
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
- SQUISH_DIR="${SQUISH_DIR:-$HOME/.squish}"
9
- HOOKS_CONFIG="$SCRIPT_DIR/config/hooks/opencode-hooks.json"
10
-
11
- echo "Installing Squish hooks for OpenCode..."
12
-
13
- # Create Squish config directory
14
- mkdir -p "$SQUISH_DIR"
15
-
16
- # Copy hook config
17
- if [ -f "$HOOKS_CONFIG" ]; then
18
- cp "$HOOKS_CONFIG" "$SQUISH_DIR/hooks-opencode.json"
19
- echo "Copied hook config to $SQUISH_DIR/hooks-opencode.json"
20
- else
21
- echo "ERROR: Hook config not found at $HOOKS_CONFIG"
22
- exit 1
23
- fi
24
-
25
- # Check for OpenCode settings file
26
- SETTINGS_FILE="$HOME/.opencode/settings.json"
27
-
28
- if [ -f "$SETTINGS_FILE" ]; then
29
- echo ""
30
- echo "Found OpenCode settings at $SETTINGS_FILE"
31
- echo ""
32
- echo "To enable Squish memory, add this to your settings.json:"
33
- echo ""
34
- cat << 'SETTINGS_JSON'
35
- {
36
- "mcpServers": {
37
- "squish": {
38
- "command": "squish",
39
- "args": ["run", "mcp"]
40
- }
41
- },
42
- "memory": {
43
- "enabled": true,
44
- "autoCapture": true
45
- }
46
- }
47
- SETTINGS_JSON
48
- else
49
- echo ""
50
- echo "Creating default OpenCode settings..."
51
- mkdir -p "$HOME/.opencode"
52
- cat > "$SETTINGS_FILE" << 'DEFAULT_SETTINGS'
53
- {
54
- "mcpServers": {
55
- "squish": {
56
- "command": "squish",
57
- "args": ["run", "mcp"]
58
- }
59
- },
60
- "memory": {
61
- "enabled": true,
62
- "autoCapture": true
63
- }
64
- }
65
- DEFAULT_SETTINGS
66
- echo "Created $SETTINGS_FILE"
67
- fi
68
-
69
- echo ""
70
- echo "Installation complete!"
71
- echo ""
72
- echo "Next steps:"
73
- echo "1. Restart OpenCode"
74
- echo "2. Run 'squish health' to verify"
75
- echo ""
@@ -1,415 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import fs from "node:fs";
4
- import path from "node:path";
5
- import os from "node:os";
6
- import { spawnSync } from "node:child_process";
7
-
8
- const root = process.cwd();
9
- const manifestPath = path.join(root, "config", "plugin-manifest.json");
10
-
11
- // Client default directories
12
- const CLIENT_DIRS = {
13
- "claude-code": path.join(os.homedir(), ".claude"),
14
- opencode: path.join(os.homedir(), ".config", "opencode"),
15
- codex: path.join(os.homedir(), ".codex"),
16
- cursor: path.join(os.homedir(), ".cursor"),
17
- vscode: path.join(os.homedir(), ".vscode", "mcp"),
18
- windsurf: path.join(os.homedir(), ".windsurf"),
19
- openclaw: path.join(os.homedir(), ".openclaw")
20
- };
21
-
22
- // Must-have clients (launch priority)
23
- const MUST_HAVE = ["claude-code", "openclaw", "opencode"];
24
- const NICE_TO_HAVE = ["codex", "cursor", "vscode", "windsurf"];
25
-
26
- function loadManifest() {
27
- if (!fs.existsSync(manifestPath)) {
28
- throw new Error(`Plugin manifest not found: ${manifestPath}`);
29
- }
30
- return JSON.parse(fs.readFileSync(manifestPath, "utf8"));
31
- }
32
-
33
- function parseArgs(argv) {
34
- const args = {
35
- client: [],
36
- dryRun: false,
37
- verify: false,
38
- uninstall: false,
39
- strict: false,
40
- skipDeps: false
41
- };
42
-
43
- const argHandlers = {
44
- "--dry-run": () => args.dryRun = true,
45
- "-d": () => args.dryRun = true,
46
- "--verify": () => args.verify = true,
47
- "-v": () => args.verify = true,
48
- "--uninstall": () => args.uninstall = true,
49
- "-u": () => args.uninstall = true,
50
- "--strict": () => args.strict = true,
51
- "--skip-deps": () => args.skipDeps = true,
52
- "--client": (i) => {
53
- const clientList = argv[i + 1];
54
- args.client = clientList.split(",").map(c => c.trim());
55
- },
56
- "-c": (i) => {
57
- const clientList = argv[i + 1];
58
- args.client = clientList.split(",").map(c => c.trim());
59
- },
60
- };
61
-
62
- for (let i = 2; i < argv.length; i++) {
63
- const token = argv[i];
64
- const handler = argHandlers[token];
65
-
66
- if (handler) {
67
- if (token === "--client" || token === "-c") {
68
- handler(i);
69
- i++;
70
- } else {
71
- handler();
72
- }
73
- } else {
74
- throw new Error(`Unknown argument: ${token}`);
75
- }
76
- }
77
-
78
- return args;
79
- }
80
-
81
- function ensureDir(dirPath) {
82
- if (!fs.existsSync(dirPath)) {
83
- fs.mkdirSync(dirPath, { recursive: true });
84
- }
85
- }
86
-
87
- function expandHomePath(filePath) {
88
- if (filePath.startsWith("~")) {
89
- return path.join(os.homedir(), filePath.slice(2));
90
- }
91
- return filePath;
92
- }
93
-
94
- function backupFile(filePath) {
95
- if (fs.existsSync(filePath)) {
96
- const backupPath = `${filePath}.bak`;
97
- fs.copyFileSync(filePath, backupPath);
98
- console.log(`[INSTALL] Backed up: ${filePath} → ${backupPath}`);
99
- }
100
- }
101
-
102
- function copyFile(sourcePath, targetPath, options = {}) {
103
- if (!fs.existsSync(sourcePath)) {
104
- throw new Error(`Source file not found: ${sourcePath}`);
105
- }
106
-
107
- if (options.backup !== false) {
108
- backupFile(targetPath);
109
- }
110
-
111
- if (!options.dryRun) {
112
- ensureDir(path.dirname(targetPath));
113
- fs.copyFileSync(sourcePath, targetPath);
114
- }
115
-
116
- const mode = options.dryRun ? "DRY_RUN" : "COPIED";
117
- console.log(`[INSTALL] ${mode}: ${sourcePath} → ${targetPath}`);
118
- }
119
-
120
- function runCommand(command, args = [], options = {}) {
121
- const mode = options.dryRun ? "[DRY_RUN] Would run:" : "Running:";
122
- console.log(`[INSTALL] ${mode} ${command} ${args.join(" ")}`);
123
-
124
- if (options.dryRun) {
125
- return { status: 0, stdout: "", stderr: "" };
126
- }
127
-
128
- const result = spawnSync(command, args, {
129
- encoding: "utf8",
130
- stdio: options.silent ? "pipe" : "inherit",
131
- timeout: options.timeout || 30000
132
- });
133
-
134
- return result;
135
- }
136
-
137
- function checkDependencies(manifest, options) {
138
- console.log("\n[DEP] Checking dependencies...");
139
-
140
- if (options.skipDeps) {
141
- console.log("[DEP] Skipping dependency check (--skip-deps)");
142
- return true;
143
- }
144
-
145
- // Run dependency manager
146
- const depArgs = options.dryRun ? ["--dry-run"] : [];
147
- const depResult = runCommand(
148
- process.execPath,
149
- [path.join(root, "scripts", "dependency-manager.mjs"), ...depArgs],
150
- { ...options, silent: true }
151
- );
152
-
153
- if (depResult.status !== 0) {
154
- console.error("[DEP] Dependency check failed:");
155
- console.error(depResult.stderr);
156
- return false;
157
- }
158
-
159
- console.log(depResult.stdout);
160
- return true;
161
- }
162
-
163
- function installForClient(client, manifest, options) {
164
- const targetConfig = manifest.targets[client];
165
- if (!targetConfig) {
166
- throw new Error(`Unsupported client: ${client}. Supported: ${Object.keys(manifest.targets).join(", ")}`);
167
- }
168
-
169
- console.log(`\n[INSTALL] Installing for ${client}...`);
170
-
171
- const install = targetConfig.install;
172
- if (!install) {
173
- console.log(`[INSTALL] ⚠ No install steps defined for ${client}, skipping`);
174
- return true;
175
- }
176
-
177
- try {
178
- if (install.copy) {
179
- for (const item of install.copy) {
180
- const sourcePath = path.join(root, item.from);
181
- const targetPath = expandHomePath(item.to);
182
- copyFile(sourcePath, targetPath, options);
183
- }
184
- }
185
-
186
- if (install.command) {
187
- runCommand(install.command, [], { dryRun: options.dryRun });
188
- }
189
-
190
- console.log(`[INSTALL] ✓ ${client} installation complete`);
191
- return true;
192
-
193
- } catch (error) {
194
- console.error(`[INSTALL] ✗ Failed to install for ${client}:`, error.message);
195
- return false;
196
- }
197
- }
198
-
199
- function verifyClient(client, manifest) {
200
- const targetConfig = manifest.targets[client];
201
- if (!targetConfig || !targetConfig.verify) {
202
- console.log(`[VERIFY] ⚠ No verification steps for ${client}`);
203
- return { ok: true, message: "No verification defined" };
204
- }
205
-
206
- console.log(`[VERIFY] Verifying ${client} installation...`);
207
- const verify = targetConfig.verify;
208
-
209
- try {
210
- if (verify.fileExists) {
211
- const filePath = expandHomePath(verify.fileExists);
212
- if (!fs.existsSync(filePath)) {
213
- return { ok: false, error: `File not found: ${filePath}` };
214
- }
215
- console.log(`[VERIFY] ✓ File exists: ${filePath}`);
216
- }
217
-
218
- if (verify.toolCheck) {
219
- console.log(`[VERIFY] Testing tool: ${verify.toolCheck}`);
220
- const result = spawnSync(
221
- process.execPath,
222
- [path.join(root, "dist", "commands", "mcp-server.cjs"), "--health"],
223
- { encoding: "utf8", timeout: 10000 }
224
- );
225
-
226
- if (result.status !== 0) {
227
- return { ok: false, error: "MCP server health check failed" };
228
- }
229
- console.log(`[VERIFY] ✓ MCP server healthy`);
230
- }
231
-
232
- return { ok: true, message: "Verification passed" };
233
-
234
- } catch (error) {
235
- return { ok: false, error: error.message };
236
- }
237
- }
238
-
239
- function uninstallClient(client, manifest, options) {
240
- const targetConfig = manifest.targets[client];
241
- if (!targetConfig) {
242
- throw new Error(`Unsupported client: ${client}`);
243
- }
244
-
245
- console.log(`\n[UNINSTALL] Removing ${client} configuration...`);
246
- const install = targetConfig.install;
247
-
248
- if (!install || !install.copy) {
249
- console.log(`[UNINSTALL] ⚠ No files to remove for ${client}`);
250
- return true;
251
- }
252
-
253
- try {
254
- for (const item of install.copy) {
255
- const targetPath = expandHomePath(item.to);
256
-
257
- if (fs.existsSync(targetPath)) {
258
- if (!options.dryRun) {
259
- try {
260
- fs.unlinkSync(targetPath);
261
- } catch (e) {
262
- if (fs.statSync(targetPath).isDirectory()) {
263
- console.log(`[UNINSTALL] Skipping directory: ${targetPath} (manual removal required)`);
264
- continue;
265
- }
266
- throw e;
267
- }
268
- }
269
- console.log(`[UNINSTALL] ${options.dryRun ? "[DRY_RUN] Would remove:" : "Removed"}: ${targetPath}`);
270
- } else {
271
- console.log(`[UNINSTALL] Not found: ${targetPath}`);
272
- }
273
- }
274
-
275
- return true;
276
-
277
- } catch (error) {
278
- console.error(`[UNINSTALL] ✗ Failed to uninstall ${client}:`, error.message);
279
- return false;
280
- }
281
- }
282
-
283
- function detectInstalledClients() {
284
- const detected = {};
285
- for (const [client, dir] of Object.entries(CLIENT_DIRS)) {
286
- try {
287
- detected[client] = fs.existsSync(dir);
288
- } catch {
289
- detected[client] = false;
290
- }
291
- }
292
- return detected;
293
- }
294
-
295
- function main() {
296
- const args = parseArgs(process.argv);
297
- const manifest = loadManifest();
298
-
299
- console.log(`[INSTALL] Squish Universal Plugin Installer v${manifest.version}`);
300
- console.log(`[INSTALL] Mode: ${args.dryRun ? "DRY_RUN" : args.verify ? "VERIFY" : args.uninstall ? "UNINSTALL" : "INSTALL"}`);
301
-
302
- try {
303
- // Verify mode
304
- if (args.verify) {
305
- let allOk = true;
306
- const clientsToVerify = args.client.length > 0
307
- ? args.client
308
- : [...MUST_HAVE, ...NICE_TO_HAVE];
309
-
310
- for (const client of clientsToVerify) {
311
- const result = verifyClient(client, manifest);
312
- if (!result.ok) {
313
- console.error(`[VERIFY] ✗ ${client}: ${result.error}`);
314
- allOk = false;
315
- } else {
316
- console.log(`[VERIFY] ✓ ${client}: ${result.message}`);
317
- }
318
- }
319
-
320
- process.exit(allOk ? 0 : 1);
321
- return;
322
- }
323
-
324
- // Uninstall mode
325
- if (args.uninstall) {
326
- if (args.client.length === 0) {
327
- throw new Error("--uninstall requires --client specification");
328
- }
329
-
330
- let allOk = true;
331
- for (const client of args.client) {
332
- const ok = uninstallClient(client, manifest, args);
333
- if (!ok) allOk = false;
334
- }
335
-
336
- process.exit(allOk ? 0 : 1);
337
- return;
338
- }
339
-
340
- // Install mode
341
-
342
- // 1. Check dependencies
343
- if (!args.skipDeps && !checkDependencies(manifest, args)) {
344
- process.exit(1);
345
- return;
346
- }
347
-
348
- // 2. Determine client list
349
- let clientsToInstall = args.client;
350
- if (clientsToInstall.length === 0) {
351
- console.log("[INSTALL] No clients specified, use --client=<client> or --client=all");
352
- console.log(`[INSTALL] Supported clients: ${Object.keys(CLIENT_DIRS).join(", ")}`);
353
- console.log(`[INSTALL] Must-have: ${MUST_HAVE.join(", ")}`);
354
- console.log(`[INSTALL] Nice-to-have: ${NICE_TO_HAVE.join(", ")}`);
355
- process.exit(1);
356
- return;
357
- }
358
-
359
- if (clientsToInstall.includes("all")) {
360
- clientsToInstall = [...MUST_HAVE, ...NICE_TO_HAVE];
361
- }
362
-
363
- // 3. Validate all clients
364
- const unknown = clientsToInstall.filter(c => !manifest.targets[c]);
365
- if (unknown.length > 0) {
366
- console.error(`[INSTALL] Unknown clients: ${unknown.join(", ")}`);
367
- process.exit(1);
368
- return;
369
- }
370
-
371
- // 4. Install each client
372
- let allOk = true;
373
- for (const client of clientsToInstall) {
374
- const ok = installForClient(client, manifest, args);
375
- if (!ok) allOk = false;
376
- }
377
-
378
- // 5. Post-install summary
379
- console.log("\n[INSTALL] ================================");
380
- console.log(`[INSTALL] ${allOk ? "✓" : "✗"} Installation ${allOk ? "complete" : "completed with errors"}`);
381
-
382
- if (allOk && !args.dryRun) {
383
- console.log("\n[INSTALL] Next steps:");
384
-
385
- for (const client of clientsToInstall) {
386
- const targetConfig = manifest.targets[client];
387
- console.log(`\n ${client}:`);
388
-
389
- if (client === "claude-code") {
390
- console.log(" → Restart Claude Code if running");
391
- console.log(" → The plugin will auto-activate on next session");
392
- } else if (client === "openclaw") {
393
- console.log(" → Start OpenClaw agent");
394
- console.log(" → Memory backend is now active");
395
- console.log(" → First sync may take a minute");
396
- } else {
397
- console.log(" → Restart your MCP client");
398
- console.log(" → Tools should appear automatically");
399
- }
400
- }
401
-
402
- console.log("\n[INSTALL] Verify with:");
403
- console.log(` npx squish-memory install-plugin --client=${clientsToInstall[0]} --verify`);
404
- console.log("\n[INSTALL] Get help: npx squish-memory install-plugin --help");
405
- }
406
-
407
- process.exit(allOk ? 0 : 1);
408
-
409
- } catch (error) {
410
- console.error("[INSTALL] Fatal error:", error.message);
411
- process.exit(1);
412
- }
413
- }
414
-
415
- main();
@@ -1,67 +0,0 @@
1
- #!/bin/bash
2
- # Install Squish hooks for Windsurf
3
- # Run from the squish project directory
4
-
5
- set -e
6
-
7
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
- SQUISH_DIR="${SQUISH_DIR:-$HOME/.squish}"
9
- HOOKS_CONFIG="$SCRIPT_DIR/config/hooks/windsurf-hooks.json"
10
-
11
- echo "Installing Squish hooks for Windsurf..."
12
-
13
- # Create Squish config directory
14
- mkdir -p "$SQUISH_DIR"
15
-
16
- # Copy hook config
17
- if [ -f "$HOOKS_CONFIG" ]; then
18
- cp "$HOOKS_CONFIG" "$SQUISH_DIR/hooks-windsurf.json"
19
- echo "Copied hook config to $SQUISH_DIR/hooks-windsurf.json"
20
- else
21
- echo "ERROR: Hook config not found at $HOOKS_CONFIG"
22
- exit 1
23
- fi
24
-
25
- # Check for Windsurf config
26
- CONFIG_FILE="$HOME/.windsurf/config.json"
27
-
28
- if [ -f "$CONFIG_FILE" ]; then
29
- echo ""
30
- echo "Found Windsurf config at $CONFIG_FILE"
31
- echo ""
32
- echo "To enable Squish memory, add to your config:"
33
- echo ""
34
- cat << 'CONFIG_JSON'
35
- {
36
- "mcpServers": {
37
- "squish": {
38
- "command": "squish",
39
- "args": ["run", "mcp"]
40
- }
41
- }
42
- }
43
- CONFIG_JSON
44
- else
45
- echo ""
46
- echo "Creating default Windsurf config..."
47
- mkdir -p "$HOME/.windsurf"
48
- cat > "$CONFIG_FILE" << 'DEFAULT_CONFIG'
49
- {
50
- "mcpServers": {
51
- "squish": {
52
- "command": "squish",
53
- "args": ["run", "mcp"]
54
- }
55
- }
56
- }
57
- DEFAULT_CONFIG
58
- echo "Created $CONFIG_FILE"
59
- fi
60
-
61
- echo ""
62
- echo "Installation complete!"
63
- echo ""
64
- echo "Next steps:"
65
- echo "1. Restart Windsurf"
66
- echo "2. Run 'squish health' to verify"
67
- echo ""
@@ -1,62 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import fs from "node:fs";
4
- import path from "node:path";
5
-
6
- const root = process.cwd();
7
- const policyPath = path.join(root, "config", "remote-memory-policy.json");
8
-
9
- function fail(message) {
10
- process.stderr.write(`${message}\n`);
11
- process.exit(1);
12
- }
13
-
14
- function warn(message) {
15
- process.stderr.write(`[warn] ${message}\n`);
16
- }
17
-
18
- function readPolicy() {
19
- if (!fs.existsSync(policyPath)) {
20
- fail(`Missing policy file: ${policyPath}`);
21
- }
22
- try {
23
- return JSON.parse(fs.readFileSync(policyPath, "utf8"));
24
- } catch (error) {
25
- fail(`Invalid policy JSON: ${String(error)}`);
26
- }
27
- }
28
-
29
- function main() {
30
- const policy = readPolicy();
31
- const required = Array.isArray(policy.requiredEnv) ? policy.requiredEnv : [];
32
-
33
- const missing = required.filter((key) => {
34
- const value = process.env[key];
35
- return !value || value.trim().length === 0;
36
- });
37
-
38
- if (missing.length > 0) {
39
- fail(`Remote preflight failed: missing required env vars: ${missing.join(", ")}`);
40
- }
41
-
42
- const provider = process.env.SQUISH_EMBEDDINGS_PROVIDER || "local";
43
- if (!["local", "openai", "ollama", "none", "hybrid", "qmd"].includes(provider)) {
44
- fail(`Remote preflight failed: invalid SQUISH_EMBEDDINGS_PROVIDER='${provider}'`);
45
- }
46
-
47
- if (provider === "openai" && !process.env.SQUISH_OPENAI_API_KEY) {
48
- warn("SQUISH_EMBEDDINGS_PROVIDER=openai but SQUISH_OPENAI_API_KEY is missing");
49
- }
50
-
51
- process.stdout.write(
52
- `${JSON.stringify({
53
- success: true,
54
- mode: "remote",
55
- requiredEnvChecked: required,
56
- embeddingsProvider: provider,
57
- memoryPolicyVersion: policy.version
58
- })}\n`
59
- );
60
- }
61
-
62
- main();