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,23 +1,23 @@
1
1
  /**
2
- * Places Module - Spatial memory organization (Method of Loci)
2
+ * Places Module - Spatial memory organization
3
3
  *
4
4
  * Provides spatial "places" for memory organization:
5
- * - Entry Hall: Project overview, goals
6
- * - Library: Research, patterns, discoveries
7
- * - Workshop: Implementation, code, fixes
8
- * - Lab: Experiments, tests, trials
9
- * - Office: Decisions, planning, roadmap
10
- * - Garden: Ideas, future concepts
5
+ * - Inbox: New memories, unprocessed
6
+ * - Ref: Reference, patterns, research
7
+ * - WIP: Active work, implementations
8
+ * - Sandbox: Experiments, tests
9
+ * - Board: Decisions, planning, roadmap
10
+ * - Sparks: Ideas, future concepts
11
11
  * - Archive: Completed, historical
12
12
  */
13
- export type PlaceType = 'entry_hall' | 'library' | 'workshop' | 'lab' | 'office' | 'garden' | 'archive';
13
+ export type PlaceType = 'inbox' | 'ref' | 'wip' | 'sandbox' | 'board' | 'sparks' | 'archive';
14
14
  export interface Place {
15
15
  id: string;
16
16
  projectId: string;
17
17
  name: string;
18
18
  placeType: PlaceType;
19
19
  parentId: string | null;
20
- lociIndex: number;
20
+ sortOrder: number;
21
21
  positionX: number;
22
22
  positionY: number;
23
23
  description: string | null;
@@ -31,7 +31,7 @@ export interface PlaceCreateInput {
31
31
  name: string;
32
32
  placeType: PlaceType;
33
33
  parentId?: string | null;
34
- lociIndex?: number;
34
+ sortOrder?: number;
35
35
  description?: string;
36
36
  purpose?: string;
37
37
  }
@@ -39,7 +39,7 @@ export interface PlaceUpdateInput {
39
39
  name?: string;
40
40
  description?: string;
41
41
  purpose?: string;
42
- lociIndex?: number;
42
+ sortOrder?: number;
43
43
  positionX?: number;
44
44
  positionY?: number;
45
45
  }
@@ -53,7 +53,7 @@ export declare function createPlace(input: PlaceCreateInput): Promise<Place>;
53
53
  */
54
54
  export declare function getPlace(id: string): Promise<Place | null>;
55
55
  /**
56
- * Get places for a project, ordered by loci_index
56
+ * Get places for a project, ordered by sort_order
57
57
  */
58
58
  export declare function getProjectPlaces(projectId: string): Promise<Place[]>;
59
59
  /**
@@ -75,7 +75,7 @@ export declare function initializeDefaultPlaces(projectId: string): Promise<Plac
75
75
  /**
76
76
  * Get place by loci index
77
77
  */
78
- export declare function getPlaceByLociIndex(projectId: string, lociIndex: number): Promise<Place | null>;
78
+ export declare function getPlaceByLociIndex(projectId: string, sortOrder: number): Promise<Place | null>;
79
79
  /**
80
80
  * Update memory count for a place
81
81
  */
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Places Module - Spatial memory organization (Method of Loci)
2
+ * Places Module - Spatial memory organization
3
3
  *
4
4
  * Provides spatial "places" for memory organization:
5
- * - Entry Hall: Project overview, goals
6
- * - Library: Research, patterns, discoveries
7
- * - Workshop: Implementation, code, fixes
8
- * - Lab: Experiments, tests, trials
9
- * - Office: Decisions, planning, roadmap
10
- * - Garden: Ideas, future concepts
5
+ * - Inbox: New memories, unprocessed
6
+ * - Ref: Reference, patterns, research
7
+ * - WIP: Active work, implementations
8
+ * - Sandbox: Experiments, tests
9
+ * - Board: Decisions, planning, roadmap
10
+ * - Sparks: Ideas, future concepts
11
11
  * - Archive: Completed, historical
12
12
  */
13
13
  import { randomUUID } from 'crypto';
@@ -17,13 +17,13 @@ import { getSchema } from '../../db/schema.js';
17
17
  import { logger } from '../logger.js';
18
18
  // Default places configuration
19
19
  export const DEFAULT_PLACES = [
20
- { name: 'Entry Hall', placeType: 'entry_hall', lociIndex: 0, description: 'Project overview, goals, and current status', purpose: 'Quick orientation to project state' },
21
- { name: 'Library', placeType: 'library', lociIndex: 1, description: 'Research, patterns, and discoveries', purpose: 'Reference knowledge and learned patterns' },
22
- { name: 'Workshop', placeType: 'workshop', lociIndex: 2, description: 'Implementation, code, and fixes', purpose: 'Active development and recent changes' },
23
- { name: 'Lab', placeType: 'lab', lociIndex: 3, description: 'Experiments, tests, and trials', purpose: 'Testing and exploration results' },
24
- { name: 'Office', placeType: 'office', lociIndex: 4, description: 'Decisions, planning, and roadmap', purpose: 'Project direction and decisions' },
25
- { name: 'Garden', placeType: 'garden', lociIndex: 5, description: 'Ideas and future concepts', purpose: 'Brainstorming and upcoming plans' },
26
- { name: 'Archive', placeType: 'archive', lociIndex: 6, description: 'Completed and historical items', purpose: 'Reference for completed work' },
20
+ { name: 'Inbox', placeType: 'inbox', sortOrder: 0, description: 'New memories, unprocessed', purpose: 'Quick inbox for incoming memories' },
21
+ { name: 'Ref', placeType: 'ref', sortOrder: 1, description: 'Reference, patterns, research', purpose: 'Reference knowledge and learned patterns' },
22
+ { name: 'WIP', placeType: 'wip', sortOrder: 2, description: 'Active work, implementations', purpose: 'Active development and recent changes' },
23
+ { name: 'Sandbox', placeType: 'sandbox', sortOrder: 3, description: 'Experiments, tests', purpose: 'Testing and exploration results' },
24
+ { name: 'Board', placeType: 'board', sortOrder: 4, description: 'Decisions, planning, roadmap', purpose: 'Project direction and decisions' },
25
+ { name: 'Sparks', placeType: 'sparks', sortOrder: 5, description: 'Ideas, future concepts', purpose: 'Brainstorming and upcoming plans' },
26
+ { name: 'Archive', placeType: 'archive', sortOrder: 6, description: 'Completed, historical', purpose: 'Reference for completed work' },
27
27
  ];
28
28
  /**
29
29
  * Create a new place
@@ -52,7 +52,7 @@ export async function createPlace(input) {
52
52
  name: input.name,
53
53
  placeType: input.placeType,
54
54
  parentId: input.parentId || null,
55
- lociIndex: input.lociIndex ?? 0,
55
+ sortOrder: input.sortOrder ?? 0,
56
56
  positionX: 0,
57
57
  positionY: 0,
58
58
  description: input.description || null,
@@ -66,7 +66,7 @@ export async function createPlace(input) {
66
66
  name: input.name,
67
67
  placeType: input.placeType,
68
68
  parentId: input.parentId || null,
69
- lociIndex: input.lociIndex ?? 0,
69
+ sortOrder: input.sortOrder ?? 0,
70
70
  positionX: 0,
71
71
  positionY: 0,
72
72
  description: input.description || null,
@@ -98,7 +98,7 @@ export async function getPlace(id) {
98
98
  name: row.name,
99
99
  placeType: (row.place_type || row.placeType || 'custom'),
100
100
  parentId: row.parent_id || row.parentId || null,
101
- lociIndex: row.loci_index ?? row.lociIndex ?? 0,
101
+ sortOrder: row.sort_order ?? row.sortOrder ?? 0,
102
102
  positionX: row.position_x ?? row.positionX ?? 0,
103
103
  positionY: row.position_y ?? row.positionY ?? 0,
104
104
  description: row.description,
@@ -109,7 +109,7 @@ export async function getPlace(id) {
109
109
  };
110
110
  }
111
111
  /**
112
- * Get places for a project, ordered by loci_index
112
+ * Get places for a project, ordered by sort_order
113
113
  */
114
114
  export async function getProjectPlaces(projectId) {
115
115
  const db = await getDb();
@@ -120,14 +120,14 @@ export async function getProjectPlaces(projectId) {
120
120
  const results = await sqliteDb.select()
121
121
  .from(schema.places)
122
122
  .where(eq(schema.places.projectId, projectId))
123
- .orderBy(schema.places.lociIndex);
123
+ .orderBy(schema.places.sortOrder);
124
124
  return results.map((row) => ({
125
125
  id: row.id,
126
126
  projectId: row.project_id,
127
127
  name: row.name,
128
128
  placeType: (row.place_type || row.placeType),
129
129
  parentId: row.parent_id || row.parentId,
130
- lociIndex: row.loci_index ?? row.lociIndex ?? 0,
130
+ sortOrder: row.sort_order ?? row.sortOrder ?? 0,
131
131
  positionX: row.position_x ?? row.positionX ?? 0,
132
132
  positionY: row.position_y ?? row.positionY ?? 0,
133
133
  description: row.description,
@@ -159,7 +159,7 @@ export async function getPlaceByType(projectId, placeType) {
159
159
  name: row.name,
160
160
  placeType: (row.place_type || row.placeType || 'custom'),
161
161
  parentId: row.parent_id || row.parentId || null,
162
- lociIndex: row.loci_index ?? row.lociIndex ?? 0,
162
+ sortOrder: row.sort_order ?? row.sortOrder ?? 0,
163
163
  positionX: row.position_x ?? row.positionX ?? 0,
164
164
  positionY: row.position_y ?? row.positionY ?? 0,
165
165
  description: row.description,
@@ -185,8 +185,8 @@ export async function updatePlace(id, input) {
185
185
  updateData.description = input.description;
186
186
  if (input.purpose !== undefined)
187
187
  updateData.purpose = input.purpose;
188
- if (input.lociIndex !== undefined)
189
- updateData.lociIndex = input.lociIndex;
188
+ if (input.sortOrder !== undefined)
189
+ updateData.sortOrder = input.sortOrder;
190
190
  if (input.positionX !== undefined)
191
191
  updateData.positionX = input.positionX;
192
192
  if (input.positionY !== undefined)
@@ -229,7 +229,7 @@ export async function initializeDefaultPlaces(projectId) {
229
229
  name: placeConfig.name,
230
230
  placeType: placeConfig.placeType,
231
231
  parentId: null,
232
- lociIndex: placeConfig.lociIndex,
232
+ sortOrder: placeConfig.sortOrder,
233
233
  description: placeConfig.description,
234
234
  purpose: placeConfig.purpose,
235
235
  });
@@ -244,7 +244,7 @@ export async function initializeDefaultPlaces(projectId) {
244
244
  /**
245
245
  * Get place by loci index
246
246
  */
247
- export async function getPlaceByLociIndex(projectId, lociIndex) {
247
+ export async function getPlaceByLociIndex(projectId, sortOrder) {
248
248
  const db = await getDb();
249
249
  if (!db)
250
250
  return null;
@@ -252,7 +252,7 @@ export async function getPlaceByLociIndex(projectId, lociIndex) {
252
252
  const sqliteDb = db;
253
253
  const result = await sqliteDb.select()
254
254
  .from(schema.places)
255
- .where(and(eq(schema.places.projectId, projectId), eq(schema.places.lociIndex, lociIndex)))
255
+ .where(and(eq(schema.places.projectId, projectId), eq(schema.places.sortOrder, sortOrder)))
256
256
  .limit(1);
257
257
  if (result.length === 0)
258
258
  return null;
@@ -263,7 +263,7 @@ export async function getPlaceByLociIndex(projectId, lociIndex) {
263
263
  name: row.name,
264
264
  placeType: (row.place_type || row.placeType || 'custom'),
265
265
  parentId: row.parent_id || row.parentId || null,
266
- lociIndex: row.loci_index ?? row.lociIndex ?? 0,
266
+ sortOrder: row.sort_order ?? row.sortOrder ?? 0,
267
267
  positionX: row.position_x ?? row.positionX ?? 0,
268
268
  positionY: row.position_y ?? row.positionY ?? 0,
269
269
  description: row.description,
@@ -16,29 +16,29 @@ import { logger } from '../logger.js';
16
16
  * Default auto-assignment rules
17
17
  */
18
18
  export const DEFAULT_RULES = [
19
- // Workshop - Implementation, code, fixes
20
- { name: 'Write to Workshop', placeType: 'workshop', matchTool: 'Write', priority: 100 },
21
- { name: 'Edit to Workshop', placeType: 'workshop', matchTool: 'Edit', priority: 100 },
22
- { name: 'MultiEdit to Workshop', placeType: 'workshop', matchTool: 'MultiEdit', priority: 100 },
23
- { name: 'Fix keyword to Workshop', placeType: 'workshop', matchKeyword: 'fix', priority: 80 },
24
- { name: 'Bug keyword to Workshop', placeType: 'workshop', matchKeyword: 'bug', priority: 80 },
25
- // Lab - Experiments, tests
26
- { name: 'Test to Lab', placeType: 'lab', matchTool: 'Bash', matchKeyword: 'test', priority: 90 },
27
- { name: 'Test tag to Lab', placeType: 'lab', matchTag: 'test', priority: 85 },
28
- // Office - Decisions, planning
29
- { name: 'Task to Office', placeType: 'office', matchTool: 'Task', priority: 100 },
30
- { name: 'TodoWrite to Office', placeType: 'office', matchTool: 'TodoWrite', priority: 100 },
31
- { name: 'Decision keyword to Office', placeType: 'office', matchKeyword: 'decided', priority: 70 },
32
- { name: 'Planning keyword to Office', placeType: 'office', matchKeyword: 'will implement', priority: 70 },
33
- // Library - Research, patterns
34
- { name: 'Search to Library', placeType: 'library', matchTool: 'grep', priority: 90 },
35
- { name: 'WebFetch to Library', placeType: 'library', matchTool: 'WebFetch', priority: 85 },
36
- { name: 'Research keyword to Library', placeType: 'library', matchKeyword: 'research', priority: 80 },
37
- { name: 'Pattern keyword to Library', placeType: 'library', matchKeyword: 'pattern', priority: 75 },
38
- // Garden - Ideas, future
39
- { name: 'Idea keyword to Garden', placeType: 'garden', matchKeyword: 'idea', priority: 80 },
40
- { name: 'Explore keyword to Garden', placeType: 'garden', matchKeyword: 'explore', priority: 75 },
41
- { name: 'Future keyword to Garden', placeType: 'garden', matchKeyword: 'will add', priority: 70 },
19
+ // WIP - Implementation, code, fixes
20
+ { name: 'Write to WIP', placeType: 'wip', matchTool: 'Write', priority: 100 },
21
+ { name: 'Edit to WIP', placeType: 'wip', matchTool: 'Edit', priority: 100 },
22
+ { name: 'MultiEdit to WIP', placeType: 'wip', matchTool: 'MultiEdit', priority: 100 },
23
+ { name: 'Fix keyword to WIP', placeType: 'wip', matchKeyword: 'fix', priority: 80 },
24
+ { name: 'Bug keyword to WIP', placeType: 'wip', matchKeyword: 'bug', priority: 80 },
25
+ // Sandbox - Experiments, tests
26
+ { name: 'Test to Sandbox', placeType: 'sandbox', matchTool: 'Bash', matchKeyword: 'test', priority: 90 },
27
+ { name: 'Test tag to Sandbox', placeType: 'sandbox', matchTag: 'test', priority: 85 },
28
+ // Board - Decisions, planning
29
+ { name: 'Task to Board', placeType: 'board', matchTool: 'Task', priority: 100 },
30
+ { name: 'TodoWrite to Board', placeType: 'board', matchTool: 'TodoWrite', priority: 100 },
31
+ { name: 'Decision keyword to Board', placeType: 'board', matchKeyword: 'decided', priority: 70 },
32
+ { name: 'Planning keyword to Board', placeType: 'board', matchKeyword: 'will implement', priority: 70 },
33
+ // Ref - Research, patterns
34
+ { name: 'Search to Ref', placeType: 'ref', matchTool: 'grep', priority: 90 },
35
+ { name: 'WebFetch to Ref', placeType: 'ref', matchTool: 'WebFetch', priority: 85 },
36
+ { name: 'Research keyword to Ref', placeType: 'ref', matchKeyword: 'research', priority: 80 },
37
+ { name: 'Pattern keyword to Ref', placeType: 'ref', matchKeyword: 'pattern', priority: 75 },
38
+ // Sparks - Ideas, future
39
+ { name: 'Idea keyword to Sparks', placeType: 'sparks', matchKeyword: 'idea', priority: 80 },
40
+ { name: 'Explore keyword to Sparks', placeType: 'sparks', matchKeyword: 'explore', priority: 75 },
41
+ { name: 'Future keyword to Sparks', placeType: 'sparks', matchKeyword: 'will add', priority: 70 },
42
42
  ];
43
43
  /**
44
44
  * Create a place rule
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Walking Interface - Sequential memory retrieval through places
3
3
  *
4
- * Implements Method of Loci walking through memory places:
4
+ * Implements place walking through memory places:
5
5
  * - Walk single place to get memories in order
6
6
  * - Walk all places for full tour
7
7
  * - Token budget handling with TOON compression
@@ -11,7 +11,7 @@ export interface WalkOptions {
11
11
  tokenBudget?: number;
12
12
  maxMemoriesPerPlace?: number;
13
13
  includePurpose?: boolean;
14
- compressWithToon?: boolean;
14
+ compressWithCompression?: boolean;
15
15
  }
16
16
  export interface WalkResult {
17
17
  place: Place;
@@ -31,7 +31,7 @@ export interface MemorySummary {
31
31
  */
32
32
  export declare function walkPlace(projectId: string, placeType: string, options?: WalkOptions): Promise<WalkResult | null>;
33
33
  /**
34
- * Walk through all places in loci order
34
+ * Walk through all places in sort order
35
35
  */
36
36
  export declare function walkAllPlaces(projectId: string, options?: WalkOptions): Promise<WalkResult[]>;
37
37
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Walking Interface - Sequential memory retrieval through places
3
3
  *
4
- * Implements Method of Loci walking through memory places:
4
+ * Implements place walking through memory places:
5
5
  * - Walk single place to get memories in order
6
6
  * - Walk all places for full tour
7
7
  * - Token budget handling with TOON compression
@@ -9,13 +9,13 @@
9
9
  import { getProjectPlaces } from './places.js';
10
10
  import { getPlaceMemories } from './memory-places.js';
11
11
  import { getMemory } from '../memory/memories.js';
12
- import { compressForContext } from '../toon.js';
12
+ import { compressForContext } from '../compression.js';
13
13
  import { logger } from '../logger.js';
14
14
  /**
15
15
  * Walk through a single place
16
16
  */
17
17
  export async function walkPlace(projectId, placeType, options = {}) {
18
- const { tokenBudget = 170, maxMemoriesPerPlace = 10, includePurpose = true, compressWithToon = false } = options;
18
+ const { tokenBudget = 170, maxMemoriesPerPlace = 10, includePurpose = true, compressWithCompression = false } = options;
19
19
  // Get the place
20
20
  const places = await getProjectPlaces(projectId);
21
21
  const place = places.find(p => p.placeType === placeType);
@@ -34,7 +34,7 @@ export async function walkPlace(projectId, placeType, options = {}) {
34
34
  continue;
35
35
  let content = memory.content || '';
36
36
  // Compress with TOON if requested
37
- if (compressWithToon && content) {
37
+ if (compressWithCompression && content) {
38
38
  content = compressForContext(content);
39
39
  }
40
40
  const tokenEstimate = Math.ceil(content.length / 4); // rough token estimate
@@ -59,7 +59,7 @@ export async function walkPlace(projectId, placeType, options = {}) {
59
59
  };
60
60
  }
61
61
  /**
62
- * Walk through all places in loci order
62
+ * Walk through all places in sort order
63
63
  */
64
64
  export async function walkAllPlaces(projectId, options = {}) {
65
65
  const places = await getProjectPlaces(projectId);
@@ -93,7 +93,7 @@ export async function quickTour(projectId) {
93
93
  export async function getPlaceContext(projectId, placeType, maxTokens = 50) {
94
94
  const walkResult = await walkPlace(projectId, placeType, {
95
95
  tokenBudget: maxTokens,
96
- compressWithToon: true,
96
+ compressWithCompression: true,
97
97
  });
98
98
  if (!walkResult || walkResult.memories.length === 0) {
99
99
  return '';
@@ -107,7 +107,7 @@ export async function getPlaceContext(projectId, placeType, maxTokens = 50) {
107
107
  export async function getFullWalkingContext(projectId, maxTokens = 170) {
108
108
  const results = await walkAllPlaces(projectId, {
109
109
  tokenBudget: Math.floor(maxTokens / 7), // Distribute across 7 places
110
- compressWithToon: true,
110
+ compressWithCompression: true,
111
111
  });
112
112
  if (results.length === 0) {
113
113
  return 'No memories yet. Start building your spatial memory!';
@@ -85,6 +85,14 @@ export async function getAllProjects() {
85
85
  const db = createDatabaseClient(await getDb());
86
86
  const schema = await getSchema();
87
87
  const rows = await db.select().from(schema.projects);
88
+ // Auto-create default project if none exist
89
+ if (rows.length === 0) {
90
+ const cwd = process.cwd();
91
+ const defaultProject = await getOrCreateProject(cwd);
92
+ if (defaultProject) {
93
+ return [defaultProject];
94
+ }
95
+ }
88
96
  return rows.map(normalizeProject);
89
97
  }
90
98
  catch (error) {
@@ -0,0 +1,102 @@
1
+ export interface CurrentProjectSummary {
2
+ id: string;
3
+ name: string;
4
+ path: string;
5
+ resolution: 'explicit' | 'inferred' | 'auto-created' | 'legacy-placeholder';
6
+ }
7
+ export interface ContextReportInput {
8
+ currentProject: CurrentProjectSummary;
9
+ otherProjects: CurrentProjectSummary[];
10
+ runtime: {
11
+ sessionSummary: string;
12
+ activePlaces: string[];
13
+ signalSummary: {
14
+ captured: number;
15
+ suppressed: number;
16
+ sessionOnly: number;
17
+ durable: number;
18
+ durableWithRaw: number;
19
+ };
20
+ graphSummary: string;
21
+ };
22
+ durableMemories: Array<{
23
+ id: string;
24
+ type: string;
25
+ content: string;
26
+ place?: string | null;
27
+ }>;
28
+ beliefs?: Array<{
29
+ type: string;
30
+ statement: string;
31
+ status: string;
32
+ }>;
33
+ nextStep: string | null;
34
+ }
35
+ export interface HealthReportInput {
36
+ severity: 'ok' | 'degraded' | 'broken';
37
+ currentProject: string;
38
+ checks: Array<{
39
+ name: string;
40
+ status: 'ok' | 'degraded' | 'broken';
41
+ detail: string;
42
+ }>;
43
+ diagnostics?: Array<{
44
+ name: string;
45
+ status: 'ok' | 'degraded' | 'broken';
46
+ detail: string;
47
+ fix?: string;
48
+ }>;
49
+ nextStep: string | null;
50
+ }
51
+ export interface StatsReportInput {
52
+ currentProject: string;
53
+ totals: {
54
+ memories: number;
55
+ durable: number;
56
+ sessionLocal: number;
57
+ };
58
+ signal: {
59
+ captured: number;
60
+ suppressed: number;
61
+ sessionOnly: number;
62
+ durable: number;
63
+ durableWithRaw: number;
64
+ tokensSaved: number;
65
+ placeRouted: number;
66
+ graphEnriched: number;
67
+ };
68
+ places: {
69
+ active: number;
70
+ named: string[];
71
+ };
72
+ graph: {
73
+ status: string;
74
+ enrichments: number;
75
+ };
76
+ wakeUp: string;
77
+ signalNote?: string | null;
78
+ }
79
+ export interface InspectReportInput {
80
+ id: string;
81
+ classification: string;
82
+ storageReason: string;
83
+ durability: 'session-only' | 'durable';
84
+ place?: string | null;
85
+ placeType?: string | null;
86
+ graphStatus?: string | null;
87
+ rawFallback?: string | null;
88
+ wakeUpPriority?: string | null;
89
+ metadataAvailability?: string | null;
90
+ beliefs?: Array<{
91
+ id: string;
92
+ type: string;
93
+ statement: string;
94
+ status: string;
95
+ confidence: number;
96
+ }>;
97
+ }
98
+ export declare function formatContextReport(input: ContextReportInput): string;
99
+ export declare function formatHealthReport(input: HealthReportInput): string;
100
+ export declare function formatStatsReport(input: StatsReportInput): string;
101
+ export declare function formatInspectReport(input: InspectReportInput): string;
102
+ //# sourceMappingURL=trust-report.d.ts.map
@@ -0,0 +1,107 @@
1
+ export function formatContextReport(input) {
2
+ const lines = [
3
+ 'Current project',
4
+ `- ${input.currentProject.name} (${input.currentProject.path})`,
5
+ `- resolution: ${input.currentProject.resolution}`,
6
+ '',
7
+ 'Runtime state',
8
+ `- session working set: ${input.runtime.sessionSummary || 'none'}`,
9
+ `- active places: ${input.runtime.activePlaces.join(', ') || 'none'}`,
10
+ `- signals: captured ${input.runtime.signalSummary.captured}, suppressed ${input.runtime.signalSummary.suppressed}, session-only ${input.runtime.signalSummary.sessionOnly}, durable ${input.runtime.signalSummary.durable}, durable+raw ${input.runtime.signalSummary.durableWithRaw}`,
11
+ `- graph: ${input.runtime.graphSummary}`,
12
+ '',
13
+ 'Recent durable memories',
14
+ ];
15
+ if (input.durableMemories.length === 0) {
16
+ lines.push('- none yet');
17
+ }
18
+ else {
19
+ for (const memory of input.durableMemories) {
20
+ lines.push(`- [${memory.type}] ${memory.content}${memory.place ? ` @ ${memory.place}` : ''}`);
21
+ }
22
+ }
23
+ if (input.otherProjects.length > 0) {
24
+ lines.push('', 'Other projects');
25
+ for (const project of input.otherProjects) {
26
+ lines.push(`- ${project.name} (${project.path}) [${project.resolution}]`);
27
+ }
28
+ }
29
+ if (input.beliefs && input.beliefs.length > 0) {
30
+ lines.push('', 'Derived beliefs');
31
+ for (const belief of input.beliefs) {
32
+ lines.push(`- [${belief.type}] ${belief.statement} (${belief.status})`);
33
+ }
34
+ }
35
+ if (input.nextStep) {
36
+ lines.push('', `Next step: ${input.nextStep}`);
37
+ }
38
+ return lines.join('\n');
39
+ }
40
+ export function formatHealthReport(input) {
41
+ const lines = [
42
+ `Status: ${input.severity}`,
43
+ `Current project: ${input.currentProject}`,
44
+ '',
45
+ 'Subsystems',
46
+ ...input.checks.map((check) => `- ${check.name}: ${check.status} (${check.detail})`),
47
+ ];
48
+ if (input.diagnostics && input.diagnostics.length > 0) {
49
+ lines.push('', 'Diagnostics');
50
+ for (const diagnostic of input.diagnostics) {
51
+ lines.push(`- ${diagnostic.name}: ${diagnostic.status} (${diagnostic.detail})`);
52
+ if (diagnostic.fix) {
53
+ lines.push(` fix: ${diagnostic.fix}`);
54
+ }
55
+ }
56
+ }
57
+ if (input.nextStep)
58
+ lines.push('', `Next step: ${input.nextStep}`);
59
+ return lines.join('\n');
60
+ }
61
+ export function formatStatsReport(input) {
62
+ const lines = [
63
+ `Current project: ${input.currentProject}`,
64
+ `Memory totals: ${input.totals.memories} total, ${input.totals.durable} durable, ${input.totals.sessionLocal} session-local`,
65
+ '',
66
+ 'Capture-era signals',
67
+ `- captured: ${input.signal.captured}`,
68
+ `- suppressed: ${input.signal.suppressed}`,
69
+ `- session-only: ${input.signal.sessionOnly}`,
70
+ `- signal-tracked durable: ${input.signal.durable}`,
71
+ `- signal-tracked durable+raw: ${input.signal.durableWithRaw}`,
72
+ `- token savings: ${input.signal.tokensSaved}`,
73
+ `- place routed: ${input.signal.placeRouted}`,
74
+ `- graph enriched: ${input.signal.graphEnriched}`,
75
+ '',
76
+ `Places: ${input.places.active} active (${input.places.named.join(', ') || 'none'})`,
77
+ `Graph: ${input.graph.status}; ${input.graph.enrichments} enrichments`,
78
+ `Wake-up: ${input.wakeUp}`,
79
+ ];
80
+ if (input.signalNote) {
81
+ lines.push(`Signal note: ${input.signalNote}`);
82
+ }
83
+ return lines.join('\n');
84
+ }
85
+ export function formatInspectReport(input) {
86
+ const lines = [
87
+ `Memory ${input.id}`,
88
+ `Classification: ${input.classification}`,
89
+ `Storage reason: ${input.storageReason}`,
90
+ `Durability: ${input.durability}`,
91
+ `Place: ${input.place ?? 'none'}${input.placeType ? ` (${input.placeType})` : ''}`,
92
+ `Graph: ${input.graphStatus ?? 'none'}`,
93
+ `Raw fallback: ${input.rawFallback ?? 'none'}`,
94
+ `Wake-up priority: ${input.wakeUpPriority ?? 'n/a'}`,
95
+ ];
96
+ if (input.metadataAvailability) {
97
+ lines.push(`Metadata: ${input.metadataAvailability}`);
98
+ }
99
+ if (input.beliefs && input.beliefs.length > 0) {
100
+ lines.push('Beliefs:');
101
+ for (const belief of input.beliefs) {
102
+ lines.push(`- [${belief.type}] ${belief.statement} (${belief.status}, c=${belief.confidence.toFixed(2)})`);
103
+ }
104
+ }
105
+ return lines.join('\n');
106
+ }
107
+ //# sourceMappingURL=trust-report.js.map
@@ -0,0 +1,12 @@
1
+ import type { ContextReportInput, CurrentProjectSummary, HealthReportInput, InspectReportInput, StatsReportInput } from './trust-report.js';
2
+ export interface TrustProjectScope {
3
+ currentProject: CurrentProjectSummary;
4
+ otherProjects: CurrentProjectSummary[];
5
+ nextStep: string | null;
6
+ }
7
+ export declare function resolveProjectScope(projectPath?: string): Promise<TrustProjectScope>;
8
+ export declare function buildContextState(projectPath?: string, limit?: number): Promise<ContextReportInput>;
9
+ export declare function buildStatsState(projectPath?: string): Promise<StatsReportInput>;
10
+ export declare function buildHealthState(projectPath?: string): Promise<HealthReportInput>;
11
+ export declare function buildInspectState(id: string): Promise<InspectReportInput | null>;
12
+ //# sourceMappingURL=trust-state.d.ts.map