squish-memory 1.0.2 → 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 (704) hide show
  1. package/.env.example +146 -0
  2. package/CHANGELOG.md +202 -0
  3. package/README.md +192 -287
  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 +10 -12
  11. package/config/mcp-remote-auth.json +3 -26
  12. package/config/mcp-universal.schema.json +5 -35
  13. package/config/settings.json +78 -22
  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/core/embeddings/local-embeddings.ts +12 -0
  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 +61 -14
  220. package/dist/config.js +159 -139
  221. package/dist/core/adapters/config/claude-code.d.ts +45 -0
  222. package/dist/core/adapters/config/claude-code.js +113 -0
  223. package/dist/core/adapters/config/cursor.d.ts +26 -0
  224. package/dist/core/adapters/config/cursor.js +74 -0
  225. package/dist/core/adapters/config/opencode.d.ts +23 -0
  226. package/dist/core/adapters/config/opencode.js +73 -0
  227. package/dist/core/adapters/config/windsurf.d.ts +26 -0
  228. package/dist/core/adapters/config/windsurf.js +74 -0
  229. package/dist/core/adapters/index.d.ts +45 -0
  230. package/dist/core/adapters/index.js +84 -0
  231. package/dist/core/adapters/scripts/install-adapter.d.ts +19 -0
  232. package/dist/core/adapters/scripts/install-adapter.js +149 -0
  233. package/dist/core/adapters/timeline.d.ts +23 -0
  234. package/dist/core/adapters/timeline.js +88 -0
  235. package/dist/core/adapters/types.d.ts +137 -0
  236. package/dist/core/adapters/types.js +50 -0
  237. package/dist/core/agent-preferences.d.ts +16 -0
  238. package/dist/core/agent-preferences.js +124 -0
  239. package/dist/{algorithms → core/algorithms}/analytics/token-estimator.d.ts +1 -1
  240. package/dist/{algorithms → core/algorithms}/analytics/token-estimator.js +3 -3
  241. package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.d.ts +1 -1
  242. package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.js +1 -1
  243. package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.d.ts +1 -1
  244. package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.js +7 -10
  245. package/dist/{algorithms → core/algorithms}/handlers/approve-merge.js +4 -4
  246. package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.js +3 -3
  247. package/dist/{algorithms → core/algorithms}/handlers/get-stats.js +3 -3
  248. package/dist/{algorithms → core/algorithms}/handlers/list-proposals.js +3 -3
  249. package/dist/{algorithms → core/algorithms}/handlers/preview-merge.js +3 -3
  250. package/dist/{algorithms → core/algorithms}/handlers/reject-merge.js +3 -3
  251. package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.js +3 -3
  252. package/dist/core/algorithms/index.d.ts +21 -0
  253. package/dist/core/algorithms/index.js +26 -0
  254. package/dist/core/algorithms/operations/cache-maintenance.d.ts +12 -0
  255. package/dist/core/algorithms/operations/cache-maintenance.js +157 -0
  256. package/dist/{algorithms → core/algorithms}/safety/safety-checks.d.ts +2 -6
  257. package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.d.ts +19 -1
  258. package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.js +74 -123
  259. package/dist/core/algorithms/types.d.ts +125 -0
  260. package/dist/core/algorithms/types.js +5 -0
  261. package/dist/core/associations.d.ts +3 -2
  262. package/dist/core/associations.js +37 -2
  263. package/dist/core/autosave.d.ts +19 -0
  264. package/dist/core/autosave.js +16 -0
  265. package/dist/core/beliefs/decay.d.ts +27 -0
  266. package/dist/core/beliefs/decay.js +217 -0
  267. package/dist/core/beliefs/extractor.d.ts +9 -0
  268. package/dist/core/beliefs/extractor.js +113 -0
  269. package/dist/core/beliefs/store.d.ts +46 -0
  270. package/dist/core/beliefs/store.js +466 -0
  271. package/dist/core/beliefs/types.d.ts +28 -0
  272. package/dist/core/beliefs/types.js +2 -0
  273. package/dist/core/commands/mcp-server.d.ts +2 -0
  274. package/dist/core/commands/mcp-server.js +6 -0
  275. package/dist/core/commands/remember.d.ts +24 -0
  276. package/dist/core/commands/remember.js +144 -0
  277. package/dist/core/compression.d.ts +45 -0
  278. package/dist/core/compression.js +160 -0
  279. package/dist/core/context/agent-context.d.ts +106 -0
  280. package/dist/core/context/agent-context.js +274 -0
  281. package/dist/core/{context-paging.d.ts → context/context-paging.d.ts} +2 -12
  282. package/dist/core/{context-paging.js → context/context-paging.js} +19 -39
  283. package/dist/core/context/context-window.d.ts +40 -0
  284. package/dist/core/context/context-window.js +177 -0
  285. package/dist/core/context/context.js +22 -0
  286. package/dist/core/embeddings/embeddings.d.ts +29 -0
  287. package/dist/core/embeddings/embeddings.js +546 -0
  288. package/dist/core/embeddings/google-multimodal.js +6 -2
  289. package/dist/core/embeddings/local-embeddings.d.ts +11 -0
  290. package/dist/core/embeddings/local-embeddings.js +11 -0
  291. package/dist/core/embeddings/qmd-client.js +1 -1
  292. package/dist/core/embeddings/transformers-local.d.ts +64 -0
  293. package/dist/core/embeddings/transformers-local.js +213 -0
  294. package/dist/core/embeddings.d.ts +1 -28
  295. package/dist/core/embeddings.js +2 -401
  296. package/dist/core/error-handling.d.ts +63 -0
  297. package/dist/core/error-handling.js +173 -0
  298. package/dist/core/graph/entity-deduplicator.d.ts +24 -0
  299. package/dist/core/graph/entity-deduplicator.js +183 -0
  300. package/dist/core/graph/graph-builder.d.ts +46 -0
  301. package/dist/core/graph/graph-builder.js +174 -0
  302. package/dist/core/graph/graph-traversal.d.ts +80 -0
  303. package/dist/core/graph/graph-traversal.js +315 -0
  304. package/dist/core/graph/index.d.ts +19 -0
  305. package/dist/core/graph/index.js +13 -0
  306. package/dist/core/graph/llm-entity-extractor.d.ts +49 -0
  307. package/dist/core/graph/llm-entity-extractor.js +313 -0
  308. package/dist/core/graph/multi-hop-retrieval.d.ts +48 -0
  309. package/dist/core/graph/multi-hop-retrieval.js +215 -0
  310. package/dist/core/graph/relationship-extractor.d.ts +48 -0
  311. package/dist/core/graph/relationship-extractor.js +351 -0
  312. package/dist/core/hooks/agent-hooks.d.ts +83 -0
  313. package/dist/core/hooks/agent-hooks.js +521 -0
  314. package/dist/core/hooks/auto-tagger.d.ts +19 -0
  315. package/dist/core/hooks/auto-tagger.js +155 -0
  316. package/dist/core/hooks/capture-filter.d.ts +41 -0
  317. package/dist/core/hooks/capture-filter.js +128 -0
  318. package/dist/core/hot-cache.d.ts +86 -0
  319. package/dist/core/hot-cache.js +285 -0
  320. package/dist/core/index.d.ts +9 -9
  321. package/dist/core/index.js +9 -12
  322. package/dist/core/{agent-memory.js → ingestion/agent-memory.js} +5 -7
  323. package/dist/core/{core-memory.d.ts → ingestion/core-memory.d.ts} +2 -2
  324. package/dist/core/{core-memory.js → ingestion/core-memory.js} +7 -7
  325. package/dist/core/ingestion/learnings.d.ts +57 -0
  326. package/dist/core/ingestion/learnings.js +205 -0
  327. package/dist/core/ingestion/signal-engine.d.ts +41 -0
  328. package/dist/core/ingestion/signal-engine.js +201 -0
  329. package/dist/core/integrations/obsidian-vault.d.ts +31 -0
  330. package/dist/core/integrations/obsidian-vault.js +156 -0
  331. package/dist/core/lib/db-client.d.ts +114 -0
  332. package/dist/core/lib/db-client.js +130 -0
  333. package/dist/core/lib/parse-embedding.d.ts +9 -0
  334. package/dist/core/lib/parse-embedding.js +58 -0
  335. package/dist/core/lib/schemas.d.ts +132 -0
  336. package/dist/core/lib/schemas.js +87 -0
  337. package/dist/core/lib/types.d.ts +45 -0
  338. package/dist/core/lib/types.js +6 -0
  339. package/dist/core/{utils.d.ts → lib/utils.d.ts} +5 -0
  340. package/dist/core/lib/utils.js +145 -0
  341. package/dist/core/lib/validation.d.ts +38 -0
  342. package/dist/core/lib/validation.js +151 -0
  343. package/dist/core/lifecycle.d.ts +7 -1
  344. package/dist/core/lifecycle.js +152 -42
  345. package/dist/core/logger.d.ts +1 -0
  346. package/dist/core/logger.js +13 -1
  347. package/dist/core/mcp/tools.d.ts +0 -2
  348. package/dist/core/mcp/tools.js +35 -90
  349. package/dist/core/mcp/types.d.ts +25 -253
  350. package/dist/core/mcp/types.js +2 -2
  351. package/dist/core/memory/categorizer.js +2 -0
  352. package/dist/core/memory/conflict-detector.js +1 -1
  353. package/dist/core/memory/consolidation.d.ts +1 -10
  354. package/dist/core/memory/consolidation.js +4 -39
  355. package/dist/core/memory/context-collector.js +1 -1
  356. package/dist/core/memory/edit-workflow.js +1 -1
  357. package/dist/core/memory/entity-extractor.d.ts +4 -0
  358. package/dist/core/memory/entity-extractor.js +30 -16
  359. package/dist/core/memory/entity-resolver.js +7 -7
  360. package/dist/core/memory/explain.d.ts +18 -0
  361. package/dist/core/memory/explain.js +92 -0
  362. package/dist/core/memory/fact-deriver.d.ts +31 -0
  363. package/dist/core/memory/fact-deriver.js +236 -0
  364. package/dist/core/memory/fact-extractor.js +12 -12
  365. package/dist/core/memory/feedback-tracker.js +1 -1
  366. package/dist/core/memory/hooks.d.ts +88 -0
  367. package/dist/core/memory/hooks.js +174 -0
  368. package/dist/core/memory/hybrid-retrieval.d.ts +14 -16
  369. package/dist/core/memory/hybrid-retrieval.js +25 -127
  370. package/dist/core/memory/hybrid-scorer.js +6 -23
  371. package/dist/core/memory/hybrid-search.d.ts +9 -11
  372. package/dist/core/memory/hybrid-search.js +496 -273
  373. package/dist/core/memory/importance.d.ts +2 -24
  374. package/dist/core/memory/importance.js +7 -91
  375. package/dist/core/memory/index.d.ts +1 -0
  376. package/dist/core/memory/index.js +1 -0
  377. package/dist/core/memory/loader.d.ts +31 -0
  378. package/dist/core/memory/loader.js +141 -0
  379. package/dist/core/memory/markdown/markdown-storage.d.ts +72 -0
  380. package/dist/core/memory/markdown/markdown-storage.js +243 -0
  381. package/dist/core/memory/memories.d.ts +23 -19
  382. package/dist/core/memory/memories.js +243 -228
  383. package/dist/core/memory/memory-lifecycle.d.ts +8 -0
  384. package/dist/core/memory/memory-lifecycle.js +47 -0
  385. package/dist/core/memory/migrate.d.ts +21 -0
  386. package/dist/core/memory/migrate.js +134 -0
  387. package/dist/core/memory/normalization.d.ts +7 -0
  388. package/dist/core/memory/normalization.js +26 -0
  389. package/dist/core/memory/path-strengthener.d.ts +39 -0
  390. package/dist/core/memory/path-strengthener.js +150 -0
  391. package/dist/core/memory/progressive-disclosure.js +1 -1
  392. package/dist/core/memory/query-processor.js +37 -3
  393. package/dist/core/memory/query-rewriter.js +9 -9
  394. package/dist/core/memory/retrieval-feedback.d.ts +70 -0
  395. package/dist/core/memory/retrieval-feedback.js +213 -0
  396. package/dist/core/memory/serialization.d.ts +4 -0
  397. package/dist/core/memory/serialization.js +49 -0
  398. package/dist/core/memory/stale-cleaner.d.ts +26 -0
  399. package/dist/core/memory/stale-cleaner.js +97 -0
  400. package/dist/core/memory/stats.d.ts +15 -0
  401. package/dist/core/memory/stats.js +69 -13
  402. package/dist/core/memory/temporal-facts.js +21 -0
  403. package/dist/core/memory/trigger-detector.d.ts +8 -1
  404. package/dist/core/memory/trigger-detector.js +42 -5
  405. package/dist/core/memory/write-gate.js +1 -1
  406. package/dist/core/places/index.d.ts +14 -0
  407. package/dist/core/places/index.js +14 -0
  408. package/dist/core/places/memory-places.d.ts +68 -0
  409. package/dist/core/places/memory-places.js +261 -0
  410. package/dist/core/places/places.d.ts +88 -0
  411. package/dist/core/places/places.js +314 -0
  412. package/dist/core/places/rules.d.ts +74 -0
  413. package/dist/core/places/rules.js +240 -0
  414. package/dist/core/places/walking.d.ts +56 -0
  415. package/dist/core/places/walking.js +121 -0
  416. package/dist/core/projects.d.ts +5 -0
  417. package/dist/core/projects.js +47 -18
  418. package/dist/core/responses.d.ts +96 -0
  419. package/dist/core/responses.js +122 -0
  420. package/dist/core/runtime/trust-report.d.ts +102 -0
  421. package/dist/core/runtime/trust-report.js +107 -0
  422. package/dist/core/runtime/trust-state.d.ts +12 -0
  423. package/dist/core/runtime/trust-state.js +309 -0
  424. package/dist/core/scheduler/cron-scheduler.d.ts +1 -1
  425. package/dist/core/scheduler/cron-scheduler.js +193 -10
  426. package/dist/core/scheduler/index.d.ts +1 -1
  427. package/dist/core/scheduler/index.js +1 -1
  428. package/dist/core/scheduler/job-runner.js +2 -2
  429. package/dist/core/search/conversations.js +40 -42
  430. package/dist/core/search/entities.js +6 -9
  431. package/dist/core/search/graph-boost.d.ts +7 -0
  432. package/dist/core/search/graph-boost.js +23 -0
  433. package/dist/core/search/qmd-wrapper.d.ts +36 -0
  434. package/dist/core/search/qmd-wrapper.js +58 -0
  435. package/dist/core/security/encrypt.d.ts +6 -0
  436. package/dist/core/security/encrypt.js +47 -0
  437. package/dist/core/{governance.d.ts → security/governance.d.ts} +6 -1
  438. package/dist/core/security/governance.js +79 -0
  439. package/dist/core/session/auto-load.js +34 -9
  440. package/dist/core/session/entity-tracker.d.ts +62 -0
  441. package/dist/core/session/entity-tracker.js +287 -0
  442. package/dist/core/session/index.d.ts +1 -1
  443. package/dist/core/session/index.js +1 -1
  444. package/dist/core/session/reference-resolver.d.ts +26 -0
  445. package/dist/core/session/reference-resolver.js +121 -0
  446. package/dist/core/{session-hooks → session}/self-iteration-job.d.ts +15 -0
  447. package/dist/core/{session-hooks → session}/self-iteration-job.js +195 -90
  448. package/dist/core/session/working-set.d.ts +50 -0
  449. package/dist/core/session/working-set.js +212 -0
  450. package/dist/core/snapshots/creation.d.ts +2 -8
  451. package/dist/core/snapshots/creation.js +3 -12
  452. package/dist/core/{cache.js → storage/cache.js} +2 -2
  453. package/dist/core/utils/memory-operations.js +1 -1
  454. package/dist/core/utils/summarization-helpers.d.ts +0 -4
  455. package/dist/core/utils/summarization-helpers.js +1 -6
  456. package/dist/core/utils/vector-operations.d.ts +71 -0
  457. package/dist/core/utils/vector-operations.js +129 -0
  458. package/dist/db/adapter.d.ts +3 -3
  459. package/dist/db/adapter.js +99 -88
  460. package/dist/db/bootstrap.d.ts +2 -0
  461. package/dist/db/bootstrap.js +921 -674
  462. package/dist/{drizzle → db/drizzle}/schema-sqlite.d.ts +775 -25
  463. package/dist/{drizzle → db/drizzle}/schema-sqlite.js +170 -24
  464. package/dist/{drizzle → db/drizzle}/schema.d.ts +731 -32
  465. package/dist/{drizzle → db/drizzle}/schema.js +192 -32
  466. package/dist/db/drizzle.config.d.ts +3 -0
  467. package/dist/db/drizzle.config.js +12 -0
  468. package/dist/db/index.d.ts +1 -5
  469. package/dist/db/index.js +51 -8
  470. package/dist/db/migrations/associations.d.ts +6 -0
  471. package/dist/db/migrations/associations.js +29 -0
  472. package/dist/db/migrations/beliefs.d.ts +10 -0
  473. package/dist/db/migrations/beliefs.js +76 -0
  474. package/dist/db/migrations/core-memory.d.ts +6 -0
  475. package/dist/db/migrations/core-memory.js +29 -0
  476. package/dist/db/migrations/fts.d.ts +6 -0
  477. package/dist/db/migrations/fts.js +52 -0
  478. package/dist/db/migrations/index.d.ts +25 -0
  479. package/dist/db/migrations/index.js +51 -0
  480. package/dist/db/migrations/indexes.d.ts +6 -0
  481. package/dist/db/migrations/indexes.js +30 -0
  482. package/dist/db/migrations/learnings.d.ts +7 -0
  483. package/dist/db/migrations/learnings.js +26 -0
  484. package/dist/db/migrations/maintenance.d.ts +6 -0
  485. package/dist/db/migrations/maintenance.js +61 -0
  486. package/dist/db/migrations/memories.d.ts +7 -0
  487. package/dist/db/migrations/memories.js +16 -0
  488. package/dist/db/migrations/memory-places.d.ts +6 -0
  489. package/dist/db/migrations/memory-places.js +29 -0
  490. package/dist/db/migrations/places.d.ts +6 -0
  491. package/dist/db/migrations/places.js +43 -0
  492. package/dist/db/migrations/projects.d.ts +3 -0
  493. package/dist/db/migrations/projects.js +13 -0
  494. package/dist/db/migrations/tier-conversion.d.ts +7 -0
  495. package/dist/db/migrations/tier-conversion.js +20 -0
  496. package/dist/db/neon.d.ts +8 -0
  497. package/dist/db/neon.js +20 -0
  498. package/dist/db/schema/beliefs.d.ts +9 -0
  499. package/dist/db/schema/beliefs.js +46 -0
  500. package/dist/db/schema/generator.d.ts +38 -0
  501. package/dist/db/schema/generator.js +108 -0
  502. package/dist/db/schema/index.d.ts +39 -0
  503. package/dist/db/schema/index.js +51 -0
  504. package/dist/db/schema/learnings.d.ts +7 -0
  505. package/dist/db/schema/learnings.js +30 -0
  506. package/dist/db/schema/memories.d.ts +7 -0
  507. package/dist/db/schema/memories.js +81 -0
  508. package/dist/db/schema/projects.d.ts +4 -0
  509. package/dist/db/schema/projects.js +31 -0
  510. package/dist/db/schema/tables/context-sessions.d.ts +9 -0
  511. package/dist/db/schema/tables/context-sessions.js +37 -0
  512. package/dist/db/schema/tables/conversations.d.ts +9 -0
  513. package/dist/db/schema/tables/conversations.js +47 -0
  514. package/dist/db/schema/tables/core-memory.d.ts +9 -0
  515. package/dist/db/schema/tables/core-memory.js +41 -0
  516. package/dist/db/schema/tables/entities.d.ts +9 -0
  517. package/dist/db/schema/tables/entities.js +39 -0
  518. package/dist/db/schema/tables/entity-relations.d.ts +9 -0
  519. package/dist/db/schema/tables/entity-relations.js +31 -0
  520. package/dist/db/schema/tables/learnings.d.ts +9 -0
  521. package/dist/db/schema/tables/learnings.js +66 -0
  522. package/dist/db/schema/tables/memories.d.ts +9 -0
  523. package/dist/db/schema/tables/memories.js +161 -0
  524. package/dist/db/schema/tables/memory-associations.d.ts +9 -0
  525. package/dist/db/schema/tables/memory-associations.js +39 -0
  526. package/dist/db/schema/tables/memory-hash-cache.d.ts +9 -0
  527. package/dist/db/schema/tables/memory-hash-cache.js +29 -0
  528. package/dist/db/schema/tables/memory-merge-history.d.ts +9 -0
  529. package/dist/db/schema/tables/memory-merge-history.js +33 -0
  530. package/dist/db/schema/tables/memory-merge-proposals.d.ts +9 -0
  531. package/dist/db/schema/tables/memory-merge-proposals.js +39 -0
  532. package/dist/db/schema/tables/messages.d.ts +9 -0
  533. package/dist/db/schema/tables/messages.js +41 -0
  534. package/dist/db/schema/tables/namespaces.d.ts +9 -0
  535. package/dist/db/schema/tables/namespaces.js +37 -0
  536. package/dist/db/schema/tables/projects.d.ts +9 -0
  537. package/dist/db/schema/tables/projects.js +31 -0
  538. package/dist/db/schema/tables/users.d.ts +9 -0
  539. package/dist/db/schema/tables/users.js +27 -0
  540. package/dist/db/schema.d.ts +1 -1
  541. package/dist/db/schema.js +2 -2
  542. package/dist/db/supabase.d.ts +9 -0
  543. package/dist/db/supabase.js +24 -0
  544. package/dist/packages/mcp/src/index.d.ts +3 -0
  545. package/dist/packages/mcp/src/index.js +733 -0
  546. package/mcp.json.example +8 -0
  547. package/package.json +132 -173
  548. package/packages/cli/package.json +22 -0
  549. package/packages/cli/src/commands/clean.ts +68 -0
  550. package/packages/cli/src/commands/context.ts +79 -0
  551. package/packages/cli/src/commands/doctor.ts +357 -0
  552. package/packages/cli/src/commands/forget.ts +72 -0
  553. package/packages/cli/src/commands/health.ts +36 -0
  554. package/packages/cli/src/commands/inspect.ts +41 -0
  555. package/packages/cli/src/commands/link.ts +50 -0
  556. package/packages/cli/src/commands/migrate.ts +93 -0
  557. package/packages/cli/src/commands/recall.ts +99 -0
  558. package/packages/cli/src/commands/recent.ts +57 -0
  559. package/packages/cli/src/commands/remember.ts +139 -0
  560. package/packages/cli/src/commands/run.ts +58 -0
  561. package/packages/cli/src/commands/stale.ts +43 -0
  562. package/packages/cli/src/commands/stats.ts +42 -0
  563. package/packages/cli/src/index.ts +57 -0
  564. package/packages/cli/tsconfig.json +24 -0
  565. package/packages/mcp/package.json +26 -0
  566. package/packages/mcp/src/index.ts +877 -0
  567. package/packages/mcp/tsconfig.json +20 -0
  568. package/skills/squish-memory/SKILL.md +107 -114
  569. package/skills/squish-memory/install.sh +3 -3
  570. package/skills/squish-memory/{claude-desktop.json → references/claude-desktop.json} +12 -12
  571. package/skills/squish-memory/{openclaw.json → references/openclaw.json} +13 -13
  572. package/skills/squish-memory/{opencode.json → references/opencode.json} +14 -14
  573. package/.claude-plugin/marketplace.json +0 -20
  574. package/.claude-plugin/plugin.json +0 -32
  575. package/.env.mcp.example +0 -60
  576. package/.mcp.json +0 -11
  577. package/QUICK-START.md +0 -71
  578. package/bin/squish-add.mjs +0 -32
  579. package/bin/squish-rm.mjs +0 -21
  580. package/commands/context-paging.md +0 -51
  581. package/commands/context-status.md +0 -22
  582. package/commands/context.md +0 -5
  583. package/commands/core-memory.md +0 -56
  584. package/commands/health.md +0 -5
  585. package/commands/init.md +0 -39
  586. package/commands/merge.md +0 -113
  587. package/commands/observe.md +0 -5
  588. package/commands/recall.md +0 -5
  589. package/commands/remember.md +0 -11
  590. package/commands/search.md +0 -10
  591. package/config/mcp-cli-fallback-policy.json +0 -22
  592. package/config/mcp.json +0 -38
  593. package/config/plugin-manifest.json +0 -152
  594. package/config/plugin-manifest.schema.json +0 -244
  595. package/config/remote-memory-policy.json +0 -32
  596. package/dist/api/web/index.d.ts +0 -3
  597. package/dist/api/web/index.js +0 -4
  598. package/dist/api/web/web-server.d.ts +0 -3
  599. package/dist/api/web/web-server.js +0 -6
  600. package/dist/api/web/web.d.ts +0 -4
  601. package/dist/api/web/web.js +0 -639
  602. package/dist/commands/managed-sync.d.ts +0 -10
  603. package/dist/commands/managed-sync.js +0 -64
  604. package/dist/commands/mcp-server.d.ts +0 -3
  605. package/dist/commands/mcp-server.js +0 -393
  606. package/dist/core/context.js +0 -24
  607. package/dist/core/governance.js +0 -64
  608. package/dist/core/local-embeddings.d.ts +0 -6
  609. package/dist/core/local-embeddings.js +0 -20
  610. package/dist/core/namespaces/index.d.ts +0 -71
  611. package/dist/core/namespaces/index.js +0 -305
  612. package/dist/core/namespaces/uri-parser.d.ts +0 -31
  613. package/dist/core/namespaces/uri-parser.js +0 -74
  614. package/dist/core/observations.d.ts +0 -26
  615. package/dist/core/observations.js +0 -110
  616. package/dist/core/requirements.d.ts +0 -20
  617. package/dist/core/requirements.js +0 -35
  618. package/dist/core/search/qmd-search.d.ts +0 -61
  619. package/dist/core/search/qmd-search.js +0 -178
  620. package/dist/core/snapshots.d.ts +0 -29
  621. package/dist/core/snapshots.js +0 -220
  622. package/dist/core/sync/qmd-sync.d.ts +0 -106
  623. package/dist/core/sync/qmd-sync.js +0 -213
  624. package/dist/core/utils.js +0 -74
  625. package/dist/index.d.ts +0 -19
  626. package/dist/index.js +0 -997
  627. package/generated/mcp/manifest.json +0 -23
  628. package/generated/mcp/mcp-servers.json +0 -25
  629. package/generated/mcp/mcporter.json +0 -34
  630. package/generated/mcp/openclaw-memory-qmd.json +0 -17
  631. package/generated/mcp/runtime.json +0 -12
  632. package/hooks/hooks.json +0 -52
  633. package/hooks/post-tool-use.js +0 -26
  634. package/hooks/session-end.js +0 -28
  635. package/hooks/session-start.js +0 -33
  636. package/hooks/user-prompt-submit.js +0 -26
  637. package/hooks/utils.js +0 -153
  638. package/npx-installer.js +0 -208
  639. package/packages/plugin-claude-code/README.md +0 -73
  640. package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +0 -35
  641. package/packages/plugin-claude-code/dist/plugin-wrapper.js +0 -191
  642. package/packages/plugin-claude-code/package.json +0 -31
  643. package/packages/plugin-openclaw/README.md +0 -70
  644. package/packages/plugin-openclaw/dist/index.d.ts +0 -49
  645. package/packages/plugin-openclaw/dist/index.js +0 -262
  646. package/packages/plugin-openclaw/openclaw.plugin.json +0 -94
  647. package/packages/plugin-openclaw/package.json +0 -31
  648. package/packages/plugin-opencode/install.mjs +0 -217
  649. package/packages/plugin-opencode/package.json +0 -21
  650. package/plugin.json +0 -32
  651. package/scripts/build-release.sh +0 -36
  652. package/scripts/check-secrets.js +0 -132
  653. package/scripts/db/check-db.mjs +0 -88
  654. package/scripts/db/fix-all-columns.mjs +0 -52
  655. package/scripts/db/fix-schema-all.mjs +0 -55
  656. package/scripts/db/fix-schema-full.mjs +0 -46
  657. package/scripts/db/fix-schema.mjs +0 -38
  658. package/scripts/db/init-db.mjs +0 -13
  659. package/scripts/db/recreate-db.mjs +0 -14
  660. package/scripts/generate-mcp.mjs +0 -264
  661. package/scripts/github-release.sh +0 -77
  662. package/scripts/init-dirs.mjs +0 -13
  663. package/scripts/install-interactive.mjs +0 -677
  664. package/scripts/install-mcp.mjs +0 -116
  665. package/scripts/install-plugin.mjs +0 -415
  666. package/scripts/install-web.sh +0 -120
  667. package/scripts/install.mjs +0 -340
  668. package/scripts/openclaw-bootstrap.mjs +0 -127
  669. package/scripts/package-release.sh +0 -71
  670. package/scripts/remote-preflight.mjs +0 -62
  671. package/scripts/squish-fallback.mjs +0 -132
  672. package/scripts/test/test-all-systems.mjs +0 -139
  673. package/scripts/test/test-memory-system.mjs +0 -139
  674. package/scripts/test/test-v0.5.0.mjs +0 -210
  675. package/scripts/test-interactive.mjs +0 -131
  676. package/scripts/verify-mcp.mjs +0 -214
  677. package/skills/memory-guide/SKILL.md +0 -332
  678. package/skills/squish-cli/SKILL.md +0 -240
  679. package/skills/squish-mcp/SKILL.md +0 -355
  680. package/skills/squish-memory/install.mjs +0 -335
  681. package/skills/squish-memory/skill.json +0 -32
  682. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.d.ts +0 -0
  683. /package/dist/{algorithms → core/algorithms}/detection/hash-filters.js +0 -0
  684. /package/dist/{algorithms → core/algorithms}/handlers/approve-merge.d.ts +0 -0
  685. /package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.d.ts +0 -0
  686. /package/dist/{algorithms → core/algorithms}/handlers/get-stats.d.ts +0 -0
  687. /package/dist/{algorithms → core/algorithms}/handlers/list-proposals.d.ts +0 -0
  688. /package/dist/{algorithms → core/algorithms}/handlers/preview-merge.d.ts +0 -0
  689. /package/dist/{algorithms → core/algorithms}/handlers/reject-merge.d.ts +0 -0
  690. /package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.d.ts +0 -0
  691. /package/dist/{algorithms → core/algorithms}/safety/safety-checks.js +0 -0
  692. /package/dist/{algorithms → core/algorithms}/utils/response-builder.d.ts +0 -0
  693. /package/dist/{algorithms → core/algorithms}/utils/response-builder.js +0 -0
  694. /package/dist/core/{context.d.ts → context/context.d.ts} +0 -0
  695. /package/dist/core/{agent-memory.d.ts → ingestion/agent-memory.d.ts} +0 -0
  696. /package/dist/core/{privacy.d.ts → security/privacy.d.ts} +0 -0
  697. /package/dist/core/{privacy.js → security/privacy.js} +0 -0
  698. /package/dist/core/{secret-detector.d.ts → security/secret-detector.d.ts} +0 -0
  699. /package/dist/core/{secret-detector.js → security/secret-detector.js} +0 -0
  700. /package/dist/core/{session-hooks → session}/session-hooks.d.ts +0 -0
  701. /package/dist/core/{session-hooks → session}/session-hooks.js +0 -0
  702. /package/dist/core/{cache.d.ts → storage/cache.d.ts} +0 -0
  703. /package/dist/core/{database.d.ts → storage/database.d.ts} +0 -0
  704. /package/dist/core/{database.js → storage/database.js} +0 -0
@@ -0,0 +1,45 @@
1
+ /**
2
+ * TOON Compression - Token-efficient memory format
3
+ *
4
+ * Compact format for memory context using abbreviated notation.
5
+ * Achieves efficient token usage for context injection.
6
+ *
7
+ * Format:
8
+ * {
9
+ * m:[type], // memory type (1-2 chars)
10
+ * c:"...", // content (truncated)
11
+ * t:[], // tags (array)
12
+ * d:123 // days ago
13
+ * }
14
+ */
15
+ /**
16
+ * Compress a memory to TOON format
17
+ */
18
+ export declare function compressForContext(content: string): string;
19
+ /**
20
+ * Decompress TOON back to readable format
21
+ */
22
+ export declare function decompressFromContext(toonString: string): string;
23
+ /**
24
+ * Estimate compression ratio
25
+ */
26
+ export declare function estimateCompressionRatio(content: string): number;
27
+ /**
28
+ * Check if content is JSON
29
+ */
30
+ export declare function isJson(content: string): boolean;
31
+ /**
32
+ * Check if content is compressed format
33
+ */
34
+ export declare function isCompressed(content: string): boolean;
35
+ /**
36
+ * Count tokens (rough estimate)
37
+ * Import from context-window.ts - single source of truth
38
+ */
39
+ import { estimateTokens } from './context/context-window.js';
40
+ export { estimateTokens };
41
+ /**
42
+ * Truncate to token budget
43
+ */
44
+ export declare function truncateToTokenBudget(content: string, maxTokens: number): string;
45
+ //# sourceMappingURL=compression.d.ts.map
@@ -0,0 +1,160 @@
1
+ /**
2
+ * TOON Compression - Token-efficient memory format
3
+ *
4
+ * Compact format for memory context using abbreviated notation.
5
+ * Achieves efficient token usage for context injection.
6
+ *
7
+ * Format:
8
+ * {
9
+ * m:[type], // memory type (1-2 chars)
10
+ * c:"...", // content (truncated)
11
+ * t:[], // tags (array)
12
+ * d:123 // days ago
13
+ * }
14
+ */
15
+ const MAX_CONTENT_LENGTH = 80; // Max chars per content
16
+ const MAX_TAGS = 3; // Max tags to include
17
+ /**
18
+ * Compress a memory to TOON format
19
+ */
20
+ export function compressForContext(content) {
21
+ // If not JSON or already short, just return
22
+ if (!isJson(content) || content.length <= MAX_CONTENT_LENGTH) {
23
+ return content;
24
+ }
25
+ try {
26
+ const parsed = JSON.parse(content);
27
+ // Build compact TOON object
28
+ const toon = {
29
+ m: parsed.type?.substring(0, 2) || 'ob', // observation -> ob
30
+ };
31
+ // Truncate content
32
+ if (parsed.content) {
33
+ const truncated = parsed.content.substring(0, MAX_CONTENT_LENGTH);
34
+ toon.c = truncated.length < parsed.content.length ? truncated + '..' : truncated;
35
+ }
36
+ // Add tags (limited)
37
+ if (parsed.tags && Array.isArray(parsed.tags)) {
38
+ toon.t = parsed.tags.slice(0, MAX_TAGS);
39
+ }
40
+ // Add days ago if there's a date
41
+ if (parsed.createdAt) {
42
+ const days = Math.floor((Date.now() - new Date(parsed.createdAt).getTime()) / (1000 * 60 * 60 * 24));
43
+ if (days > 0) {
44
+ toon.d = days;
45
+ }
46
+ }
47
+ return JSON.stringify(toon);
48
+ }
49
+ catch {
50
+ // Not parseable JSON, return truncated content
51
+ return content.substring(0, MAX_CONTENT_LENGTH);
52
+ }
53
+ }
54
+ /**
55
+ * Decompress TOON back to readable format
56
+ */
57
+ export function decompressFromContext(toonString) {
58
+ // Check if it's TOON format
59
+ if (!isCompressed(toonString)) {
60
+ return toonString;
61
+ }
62
+ try {
63
+ const parsed = JSON.parse(toonString);
64
+ // If it has TOON markers, expand it
65
+ if (parsed.m || parsed.c || parsed.t) {
66
+ const typeMap = {
67
+ ob: 'observation',
68
+ su: 'success',
69
+ f: 'failure',
70
+ fx: 'fix',
71
+ i: 'insight',
72
+ };
73
+ const type = typeMap[parsed.m] || 'observation';
74
+ const parts = [`[${type}]`];
75
+ if (parsed.c) {
76
+ parts.push(parsed.c);
77
+ }
78
+ if (parsed.t && parsed.t.length > 0) {
79
+ parts.push(`#${parsed.t.join(' #')}`);
80
+ }
81
+ if (parsed.d) {
82
+ parts.push(`(${parsed.d}d ago)`);
83
+ }
84
+ return parts.join(' ');
85
+ }
86
+ return toonString;
87
+ }
88
+ catch {
89
+ // Not valid TOON, return as-is
90
+ return toonString;
91
+ }
92
+ }
93
+ /**
94
+ * Estimate compression ratio
95
+ */
96
+ export function estimateCompressionRatio(content) {
97
+ if (!isJson(content) || content.length <= MAX_CONTENT_LENGTH) {
98
+ return 1.0;
99
+ }
100
+ const compressed = compressForContext(content);
101
+ return compressed.length / content.length;
102
+ }
103
+ /**
104
+ * Check if content is JSON
105
+ */
106
+ export function isJson(content) {
107
+ try {
108
+ JSON.parse(content);
109
+ return true;
110
+ }
111
+ catch {
112
+ return false;
113
+ }
114
+ }
115
+ /**
116
+ * Check if content is compressed format
117
+ */
118
+ export function isCompressed(content) {
119
+ if (!content.startsWith('{') || !content.endsWith('}')) {
120
+ return false;
121
+ }
122
+ try {
123
+ const parsed = JSON.parse(content);
124
+ // Has compressed markers
125
+ return parsed.m !== undefined || parsed.c !== undefined;
126
+ }
127
+ catch {
128
+ return false;
129
+ }
130
+ }
131
+ /**
132
+ * Count tokens (rough estimate)
133
+ * Import from context-window.ts - single source of truth
134
+ */
135
+ import { estimateTokens } from './context/context-window.js';
136
+ export { estimateTokens };
137
+ /**
138
+ * Truncate to token budget
139
+ */
140
+ export function truncateToTokenBudget(content, maxTokens) {
141
+ const tokens = estimateTokens(content);
142
+ if (tokens <= maxTokens) {
143
+ return content;
144
+ }
145
+ // Binary search for the right length
146
+ let low = 0;
147
+ let high = content.length;
148
+ while (low < high) {
149
+ const mid = Math.floor((low + high) / 2);
150
+ const estimated = estimateTokens(content.substring(0, mid));
151
+ if (estimated <= maxTokens) {
152
+ low = mid + 1;
153
+ }
154
+ else {
155
+ high = mid;
156
+ }
157
+ }
158
+ return content.substring(0, low) + '...';
159
+ }
160
+ //# sourceMappingURL=compression.js.map
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Agent Context API - Direct access for agents
3
+ *
4
+ * Provides a simple API for agents to get context without CLI calls.
5
+ * Use this instead of spawning squish CLI processes.
6
+ *
7
+ * Usage:
8
+ * import { getAgentContext, searchWithPlace } from './core/context/agent-context.js';
9
+ *
10
+ * const context = await getAgentContext(projectPath, { task: "fix bug" });
11
+ * const results = await searchWithPlace(projectPath, "error fix", { limit: 5 });
12
+ */
13
+ export interface AgentContextOptions {
14
+ /** Current task or action (helps auto-detect relevant place) */
15
+ task?: string;
16
+ /** Preferred tier: quick (50 tokens), medium (170), full (500) */
17
+ tier?: 'quick' | 'medium' | 'full';
18
+ /** Max memories to return */
19
+ limit?: number;
20
+ /** Include place context */
21
+ includePlaces?: boolean;
22
+ }
23
+ export interface SearchOptions {
24
+ /** Query string */
25
+ query: string;
26
+ /** Optional place filter */
27
+ place?: string;
28
+ /** Max results */
29
+ limit?: number;
30
+ /** Memory type filter */
31
+ type?: string;
32
+ }
33
+ /**
34
+ * Get agent context - the main function I can call directly
35
+ *
36
+ * Instead of: squish context --tier medium --has-memories
37
+ * Use: const ctx = await getAgentContext(projectPath, { task: "fix bug", tier: "medium" })
38
+ */
39
+ export declare function getAgentContext(projectPath: string, options?: AgentContextOptions): Promise<{
40
+ ok: boolean;
41
+ memories: Array<{
42
+ id: string;
43
+ type: string;
44
+ content: string;
45
+ place?: string;
46
+ placeType?: string;
47
+ }>;
48
+ places: Array<{
49
+ name: string;
50
+ type: string;
51
+ purpose?: string;
52
+ memories: number;
53
+ preview?: string[];
54
+ }>;
55
+ sessionId?: string;
56
+ tokens?: number;
57
+ }>;
58
+ /**
59
+ * Search memories with automatic place detection
60
+ *
61
+ * If query contains keywords associated with a place (e.g., "fix" -> Workshop),
62
+ * it will automatically include that place in results or boost those results.
63
+ */
64
+ export declare function searchWithPlace(projectPath: string, query: string, options?: SearchOptions): Promise<{
65
+ ok: boolean;
66
+ query: string;
67
+ autoDetectedPlace?: string;
68
+ count: number;
69
+ results: Array<{
70
+ id: string;
71
+ type: string;
72
+ content: string;
73
+ score: number;
74
+ place?: string;
75
+ placeType?: string;
76
+ }>;
77
+ }>;
78
+ /**
79
+ * Get single memory with place info
80
+ */
81
+ export declare function getMemoryWithPlace(projectPath: string, memoryId: string): Promise<{
82
+ ok: boolean;
83
+ memory?: {
84
+ id: string;
85
+ type: string;
86
+ content: string;
87
+ tags: string[];
88
+ createdAt: Date;
89
+ place?: string;
90
+ placeType?: string;
91
+ };
92
+ }>;
93
+ /**
94
+ * Quick context for session start - lightweight version
95
+ * Use this when you just need the basics without full context
96
+ */
97
+ export declare function getQuickContext(projectPath: string, limit?: number): Promise<{
98
+ ok: boolean;
99
+ memories: Array<{
100
+ id: string;
101
+ type: string;
102
+ content: string;
103
+ }>;
104
+ activePlaces: string[];
105
+ }>;
106
+ //# sourceMappingURL=agent-context.d.ts.map
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Agent Context API - Direct access for agents
3
+ *
4
+ * Provides a simple API for agents to get context without CLI calls.
5
+ * Use this instead of spawning squish CLI processes.
6
+ *
7
+ * Usage:
8
+ * import { getAgentContext, searchWithPlace } from './core/context/agent-context.js';
9
+ *
10
+ * const context = await getAgentContext(projectPath, { task: "fix bug" });
11
+ * const results = await searchWithPlace(projectPath, "error fix", { limit: 5 });
12
+ */
13
+ import { getRecent, search } from '../memory/memories.js';
14
+ import { getProjectByPath } from '../projects.js';
15
+ import { ensureProject } from '../projects.js';
16
+ import { initializeDefaultPlaces, getProjectPlaces, getMemoryPlace, getPlace, walkPlace } from '../places/index.js';
17
+ import { logger } from '../logger.js';
18
+ /**
19
+ * Get agent context - the main function I can call directly
20
+ *
21
+ * Instead of: squish context --tier medium --has-memories
22
+ * Use: const ctx = await getAgentContext(projectPath, { task: "fix bug", tier: "medium" })
23
+ */
24
+ export async function getAgentContext(projectPath, options = {}) {
25
+ try {
26
+ await ensureProject(projectPath);
27
+ const project = await getProjectByPath(projectPath);
28
+ if (!project) {
29
+ return { ok: false, memories: [], places: [] };
30
+ }
31
+ const tier = options.tier || 'medium';
32
+ const limit = options.limit || 5;
33
+ const includePlaces = options.includePlaces !== false;
34
+ // Get recent memories
35
+ const memories = await getRecent(projectPath, limit);
36
+ // Add place info to each memory
37
+ const memoriesWithPlace = await Promise.all(memories.map(async (m) => {
38
+ const placeId = await getMemoryPlace(m.id);
39
+ let placeInfo = {};
40
+ if (placeId) {
41
+ const place = await getPlace(placeId);
42
+ placeInfo = { place: place?.name || null, placeType: place?.placeType || null };
43
+ }
44
+ return {
45
+ id: m.id,
46
+ type: m.type,
47
+ content: m.content || m.content,
48
+ ...placeInfo,
49
+ };
50
+ }));
51
+ // Get places context
52
+ let places = [];
53
+ if (includePlaces) {
54
+ await initializeDefaultPlaces(project.id);
55
+ const projectPlaces = await getProjectPlaces(project.id);
56
+ // Filter to populated places only
57
+ const populatedPlaces = projectPlaces.filter(p => p.memoryCount > 0);
58
+ if (tier === 'quick') {
59
+ // Just names
60
+ places = populatedPlaces.map(p => ({
61
+ name: p.name,
62
+ type: p.placeType,
63
+ memories: p.memoryCount,
64
+ }));
65
+ }
66
+ else if (tier === 'medium') {
67
+ // Top 3 per place
68
+ const mediumPlaces = [];
69
+ for (const p of populatedPlaces.slice(0, 5)) {
70
+ const walkResult = await walkPlace(project.id, p.placeType, {
71
+ tokenBudget: 170,
72
+ maxMemoriesPerPlace: 3,
73
+ compressWithCompression: false,
74
+ });
75
+ mediumPlaces.push({
76
+ name: p.name,
77
+ type: p.placeType,
78
+ purpose: p.purpose,
79
+ memories: p.memoryCount,
80
+ preview: walkResult?.memories.slice(0, 3).map((m) => m.content?.substring(0, 80)) || [],
81
+ });
82
+ }
83
+ places = mediumPlaces;
84
+ }
85
+ else {
86
+ // Full
87
+ places = populatedPlaces.map(p => ({
88
+ name: p.name,
89
+ type: p.placeType,
90
+ purpose: p.purpose,
91
+ memories: p.memoryCount,
92
+ }));
93
+ }
94
+ }
95
+ // Estimate token count
96
+ const tokens = tier === 'quick' ? 50 : tier === 'medium' ? 170 : 500;
97
+ return {
98
+ ok: true,
99
+ memories: memoriesWithPlace,
100
+ places,
101
+ tokens,
102
+ };
103
+ }
104
+ catch (error) {
105
+ logger.error('[AgentContext] Error getting context:', error);
106
+ return { ok: false, memories: [], places: [] };
107
+ }
108
+ }
109
+ /**
110
+ * Search memories with automatic place detection
111
+ *
112
+ * If query contains keywords associated with a place (e.g., "fix" -> Workshop),
113
+ * it will automatically include that place in results or boost those results.
114
+ */
115
+ export async function searchWithPlace(projectPath, query, options = { query, limit: 10 }) {
116
+ try {
117
+ await ensureProject(projectPath);
118
+ const project = await getProjectByPath(projectPath);
119
+ if (!project) {
120
+ return { ok: false, query, count: 0, results: [] };
121
+ }
122
+ // Search
123
+ const results = await search({
124
+ query,
125
+ type: options.type,
126
+ limit: (options.limit || 10) * 2,
127
+ project: projectPath,
128
+ });
129
+ const limited = results.slice(0, options.limit || 10);
130
+ // Auto-detect place from query keywords
131
+ const autoPlace = detectPlaceFromQuery(query);
132
+ // Add place info to results
133
+ const resultsWithPlace = await Promise.all(limited.map(async (r) => {
134
+ const placeId = await getMemoryPlace(r.id);
135
+ let placeInfo = { place: null, placeType: null };
136
+ if (placeId) {
137
+ const place = await getPlace(placeId);
138
+ placeInfo = {
139
+ place: place?.name || null,
140
+ placeType: place?.placeType || null,
141
+ };
142
+ }
143
+ return {
144
+ id: r.id,
145
+ type: r.type,
146
+ content: r.content,
147
+ score: r.similarity ?? 0,
148
+ ...placeInfo,
149
+ };
150
+ }));
151
+ // Filter by place if specified or auto-detected
152
+ let filtered = resultsWithPlace;
153
+ const placeFilter = options.place || autoPlace;
154
+ if (placeFilter) {
155
+ filtered = resultsWithPlace.filter((r) => r.placeType === placeFilter);
156
+ }
157
+ return {
158
+ ok: true,
159
+ query,
160
+ autoDetectedPlace: autoPlace || undefined,
161
+ count: filtered.length,
162
+ results: filtered,
163
+ };
164
+ }
165
+ catch (error) {
166
+ logger.error('[AgentContext] Error searching:', error);
167
+ return { ok: false, query, count: 0, results: [] };
168
+ }
169
+ }
170
+ /**
171
+ * Detect place type from query keywords
172
+ *
173
+ * Maps common terms to place types:
174
+ * - fix, bug, error, issue -> workshop (fixing stuff)
175
+ * - design, plan, architecture, api -> library (learning/docs)
176
+ * - task, todo, manage, organize -> office (work management)
177
+ * - code, implement, feature -> workshop
178
+ * - research, learn, study -> library
179
+ * - experiment, test, try -> lab
180
+ * - review, archive -> archive
181
+ */
182
+ function detectPlaceFromQuery(query) {
183
+ const q = query.toLowerCase();
184
+ // Map keywords to places
185
+ const keywords = {
186
+ workshop: ['fix', 'bug', 'error', 'issue', 'code', 'implement', 'feature', 'refactor', 'debug'],
187
+ library: ['design', 'plan', 'architecture', 'api', 'learn', 'research', 'study', 'documentation', 'docs'],
188
+ office: ['task', 'todo', 'manage', 'organize', 'schedule', 'meeting', 'project'],
189
+ lab: ['test', 'experiment', 'try', 'verify', 'prototype', 'poc'],
190
+ garden: ['idea', 'brainstorm', 'create', 'design', 'concept'],
191
+ archive: ['review', 'archive', 'old', 'past', 'historical'],
192
+ };
193
+ // Check each place's keywords
194
+ for (const [placeType, words] of Object.entries(keywords)) {
195
+ for (const word of words) {
196
+ if (q.includes(word)) {
197
+ return placeType;
198
+ }
199
+ }
200
+ }
201
+ return null;
202
+ }
203
+ /**
204
+ * Get single memory with place info
205
+ */
206
+ export async function getMemoryWithPlace(projectPath, memoryId) {
207
+ try {
208
+ const { getMemory } = await import('../memory/memories.js');
209
+ const memory = await getMemory(memoryId);
210
+ if (!memory) {
211
+ return { ok: false };
212
+ }
213
+ // Get place info
214
+ const placeId = await getMemoryPlace(memoryId);
215
+ let placeInfo = {};
216
+ if (placeId) {
217
+ const place = await getPlace(placeId);
218
+ placeInfo = {
219
+ place: place?.name || null,
220
+ placeType: place?.placeType || null,
221
+ };
222
+ }
223
+ return {
224
+ ok: true,
225
+ memory: {
226
+ id: memory.id,
227
+ type: memory.type,
228
+ content: memory.content || '',
229
+ tags: memory.tags || [],
230
+ createdAt: memory.createdAt,
231
+ ...placeInfo,
232
+ },
233
+ };
234
+ }
235
+ catch (error) {
236
+ logger.error('[AgentContext] Error getting memory:', error);
237
+ return { ok: false };
238
+ }
239
+ }
240
+ /**
241
+ * Quick context for session start - lightweight version
242
+ * Use this when you just need the basics without full context
243
+ */
244
+ export async function getQuickContext(projectPath, limit = 3) {
245
+ try {
246
+ await ensureProject(projectPath);
247
+ const project = await getProjectByPath(projectPath);
248
+ if (!project) {
249
+ return { ok: false, memories: [], activePlaces: [] };
250
+ }
251
+ // Get recent memories
252
+ const memories = await getRecent(projectPath, limit);
253
+ // Get places with memories
254
+ await initializeDefaultPlaces(project.id);
255
+ const places = await getProjectPlaces(project.id);
256
+ const activePlaces = places
257
+ .filter(p => p.memoryCount > 0)
258
+ .map(p => p.name);
259
+ return {
260
+ ok: true,
261
+ memories: memories.map((m) => ({
262
+ id: m.id,
263
+ type: m.type,
264
+ content: m.content?.substring(0, 100) || '',
265
+ })),
266
+ activePlaces,
267
+ };
268
+ }
269
+ catch (error) {
270
+ logger.error('[AgentContext] Error getting quick context:', error);
271
+ return { ok: false, memories: [], activePlaces: [] };
272
+ }
273
+ }
274
+ //# sourceMappingURL=agent-context.js.map
@@ -1,14 +1,6 @@
1
1
  /**
2
- * Context Paging Service - Agent-controlled memory loading (Tier 2)
3
- *
4
- * Simple memory tracking system that allows agents to:
5
- * - Load memories into their working set
6
- * - Evict memories from working set
7
- * - View what's currently in their working set
8
- *
9
- * Note: This does NOT track tokens - Claude is context-aware and manages
10
- * its own token budget. This just tracks WHAT memories are in the agent's
11
- * current working set for visibility and management.
2
+ * Context Paging Service - Agent-controlled memory loading
3
+ * Allows agents to load/evict memories from working set
12
4
  */
13
5
  interface LoadedMemory {
14
6
  id: string;
@@ -24,7 +16,6 @@ interface LoadedMemory {
24
16
  export declare function initializeContextSession(sessionId: string, projectId: string, userId?: string): Promise<void>;
25
17
  /**
26
18
  * Load a memory into working set
27
- * Note: Claude manages its own context - this just tracks what you've loaded
28
19
  */
29
20
  export declare function loadMemoryToContext(sessionId: string, memoryId: string): Promise<{
30
21
  success: boolean;
@@ -48,7 +39,6 @@ export declare function viewLoadedMemories(sessionId: string): Promise<{
48
39
  }>;
49
40
  /**
50
41
  * Get context status - what's in your working set and what's available
51
- * Note: Claude manages its own context/tokens - this just shows WHAT you have loaded
52
42
  */
53
43
  export declare function getContextStatus(sessionId: string, projectId: string): Promise<{
54
44
  success: boolean;