squish-memory 1.1.5 → 1.2.1

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 (646) 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 +44 -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/{dist/core/algorithms/index.js → core/algorithms/index.ts} +39 -26
  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/{dist/core/lib/db-client.d.ts → core/lib/db-client.ts} +168 -114
  81. package/core/lib/parse-embedding.ts +59 -0
  82. package/{dist/core/lib/schemas.js → core/lib/schemas.ts} +102 -87
  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/{dist/core/memory/index.js → core/memory/index.ts} +11 -10
  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/{dist/core/places/index.js → core/places/index.ts} +12 -12
  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 +590 -0
  140. package/core/scheduler/heartbeat.ts +91 -0
  141. package/{dist/core/scheduler/index.js → core/scheduler/index.ts} +8 -8
  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/{dist/core/search/index.js → core/search/index.ts} +4 -5
  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/{dist/core/session/index.js → core/session/index.ts} +7 -7
  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/{dist/core/snapshots/cleanup.js → core/snapshots/cleanup.ts} +13 -12
  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/{dist/core/summarization/cleanup.js → core/summarization/cleanup.ts} +13 -12
  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/{dist/core/utils/vector-operations.js → core/utils/vector-operations.ts} +135 -129
  185. package/core/utils/version-management.ts +74 -0
  186. package/core/worker.ts +333 -0
  187. package/db/adapter.ts +215 -0
  188. package/{dist/db/bootstrap.js → db/bootstrap.ts} +388 -418
  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/mcp.json.example +8 -11
  220. package/package.json +140 -159
  221. package/packages/cli/package.json +22 -0
  222. package/packages/cli/src/commands/clean.ts +68 -0
  223. package/packages/cli/src/commands/context.ts +79 -0
  224. package/packages/cli/src/commands/doctor.ts +357 -0
  225. package/packages/cli/src/commands/forget.ts +72 -0
  226. package/packages/cli/src/commands/health.ts +36 -0
  227. package/packages/cli/src/commands/inspect.ts +41 -0
  228. package/packages/cli/src/commands/link.ts +50 -0
  229. package/packages/cli/src/commands/migrate.ts +93 -0
  230. package/packages/cli/src/commands/recall.ts +99 -0
  231. package/packages/cli/src/commands/recent.ts +57 -0
  232. package/packages/cli/src/commands/remember.ts +139 -0
  233. package/packages/cli/src/commands/run.ts +58 -0
  234. package/packages/cli/src/commands/stale.ts +43 -0
  235. package/packages/cli/src/commands/stats.ts +42 -0
  236. package/packages/cli/src/index.ts +57 -0
  237. package/packages/cli/tsconfig.json +24 -0
  238. package/packages/mcp/package.json +26 -0
  239. package/packages/mcp/src/index.ts +940 -0
  240. package/packages/mcp/tsconfig.json +20 -0
  241. package/skills/squish-memory/SKILL.md +38 -35
  242. package/skills/squish-memory/{scripts/install.sh → install.sh} +1 -1
  243. package/skills/squish-memory/references/claude-desktop.json +12 -0
  244. package/skills/squish-memory/references/openclaw.json +13 -0
  245. package/skills/squish-memory/references/opencode.json +14 -0
  246. package/config/hooks/claude-code-hooks.json +0 -39
  247. package/config/hooks/cursor-hooks.json +0 -30
  248. package/config/hooks/opencode-hooks.json +0 -30
  249. package/config/hooks/windsurf-hooks.json +0 -30
  250. package/config/mcp-cli-fallback-policy.json +0 -22
  251. package/config/mcp.json +0 -38
  252. package/config/plugin-manifest.json +0 -101
  253. package/config/plugin-manifest.schema.json +0 -244
  254. package/config/plugin.json +0 -32
  255. package/config/remote-memory-policy.json +0 -32
  256. package/core/commands/context-paging.md +0 -51
  257. package/core/commands/context-status.md +0 -22
  258. package/core/commands/context.md +0 -5
  259. package/core/commands/core-memory.md +0 -56
  260. package/core/commands/health.md +0 -5
  261. package/core/commands/init.md +0 -39
  262. package/core/commands/merge.md +0 -113
  263. package/core/commands/recall.md +0 -5
  264. package/core/commands/remember.md +0 -11
  265. package/core/commands/search.md +0 -10
  266. package/dist/config.d.ts +0 -83
  267. package/dist/config.js +0 -242
  268. package/dist/core/adapters/config/claude-code.d.ts +0 -45
  269. package/dist/core/adapters/config/claude-code.js +0 -113
  270. package/dist/core/adapters/config/cursor.d.ts +0 -26
  271. package/dist/core/adapters/config/cursor.js +0 -74
  272. package/dist/core/adapters/config/opencode.d.ts +0 -23
  273. package/dist/core/adapters/config/opencode.js +0 -73
  274. package/dist/core/adapters/config/windsurf.d.ts +0 -26
  275. package/dist/core/adapters/config/windsurf.js +0 -74
  276. package/dist/core/adapters/index.d.ts +0 -45
  277. package/dist/core/adapters/index.js +0 -84
  278. package/dist/core/adapters/scripts/install-adapter.d.ts +0 -19
  279. package/dist/core/adapters/scripts/install-adapter.js +0 -149
  280. package/dist/core/adapters/timeline.d.ts +0 -23
  281. package/dist/core/adapters/timeline.js +0 -88
  282. package/dist/core/adapters/types.d.ts +0 -157
  283. package/dist/core/adapters/types.js +0 -50
  284. package/dist/core/algorithms/analytics/token-estimator.d.ts +0 -50
  285. package/dist/core/algorithms/analytics/token-estimator.js +0 -154
  286. package/dist/core/algorithms/detection/hash-filters.d.ts +0 -47
  287. package/dist/core/algorithms/detection/hash-filters.js +0 -190
  288. package/dist/core/algorithms/detection/semantic-ranker.d.ts +0 -32
  289. package/dist/core/algorithms/detection/semantic-ranker.js +0 -118
  290. package/dist/core/algorithms/detection/two-stage-detector.d.ts +0 -52
  291. package/dist/core/algorithms/detection/two-stage-detector.js +0 -299
  292. package/dist/core/algorithms/handlers/approve-merge.d.ts +0 -22
  293. package/dist/core/algorithms/handlers/approve-merge.js +0 -179
  294. package/dist/core/algorithms/handlers/detect-duplicates.d.ts +0 -47
  295. package/dist/core/algorithms/handlers/detect-duplicates.js +0 -145
  296. package/dist/core/algorithms/handlers/get-stats.d.ts +0 -39
  297. package/dist/core/algorithms/handlers/get-stats.js +0 -88
  298. package/dist/core/algorithms/handlers/list-proposals.d.ts +0 -45
  299. package/dist/core/algorithms/handlers/list-proposals.js +0 -83
  300. package/dist/core/algorithms/handlers/preview-merge.d.ts +0 -39
  301. package/dist/core/algorithms/handlers/preview-merge.js +0 -93
  302. package/dist/core/algorithms/handlers/reject-merge.d.ts +0 -28
  303. package/dist/core/algorithms/handlers/reject-merge.js +0 -69
  304. package/dist/core/algorithms/handlers/reverse-merge.d.ts +0 -21
  305. package/dist/core/algorithms/handlers/reverse-merge.js +0 -121
  306. package/dist/core/algorithms/index.d.ts +0 -21
  307. package/dist/core/algorithms/operations/cache-maintenance.d.ts +0 -12
  308. package/dist/core/algorithms/operations/cache-maintenance.js +0 -157
  309. package/dist/core/algorithms/safety/safety-checks.d.ts +0 -22
  310. package/dist/core/algorithms/safety/safety-checks.js +0 -179
  311. package/dist/core/algorithms/strategies/merge-strategies.d.ts +0 -50
  312. package/dist/core/algorithms/strategies/merge-strategies.js +0 -288
  313. package/dist/core/algorithms/types.d.ts +0 -133
  314. package/dist/core/algorithms/types.js +0 -5
  315. package/dist/core/algorithms/utils/response-builder.d.ts +0 -28
  316. package/dist/core/algorithms/utils/response-builder.js +0 -37
  317. package/dist/core/associations.d.ts +0 -31
  318. package/dist/core/associations.js +0 -248
  319. package/dist/core/autosave.d.ts +0 -19
  320. package/dist/core/autosave.js +0 -16
  321. package/dist/core/commands/managed-sync.d.ts +0 -10
  322. package/dist/core/commands/managed-sync.js +0 -64
  323. package/dist/core/commands/mcp-server.d.ts +0 -3
  324. package/dist/core/commands/mcp-server.js +0 -739
  325. package/dist/core/consolidation.d.ts +0 -37
  326. package/dist/core/consolidation.js +0 -248
  327. package/dist/core/context/agent-context.d.ts +0 -106
  328. package/dist/core/context/agent-context.js +0 -274
  329. package/dist/core/context/context-paging.d.ts +0 -80
  330. package/dist/core/context/context-paging.js +0 -328
  331. package/dist/core/context/context-window.d.ts +0 -40
  332. package/dist/core/context/context-window.js +0 -177
  333. package/dist/core/context/context.d.ts +0 -7
  334. package/dist/core/context/context.js +0 -22
  335. package/dist/core/embeddings/google-multimodal.d.ts +0 -14
  336. package/dist/core/embeddings/google-multimodal.js +0 -142
  337. package/dist/core/embeddings/qmd-client.d.ts +0 -136
  338. package/dist/core/embeddings/qmd-client.js +0 -403
  339. package/dist/core/embeddings.d.ts +0 -29
  340. package/dist/core/embeddings.js +0 -454
  341. package/dist/core/error-handling.d.ts +0 -63
  342. package/dist/core/error-handling.js +0 -173
  343. package/dist/core/external-folder/index.d.ts +0 -102
  344. package/dist/core/external-folder/index.js +0 -294
  345. package/dist/core/hooks/agent-hooks.d.ts +0 -74
  346. package/dist/core/hooks/agent-hooks.js +0 -244
  347. package/dist/core/hooks/auto-tagger.d.ts +0 -19
  348. package/dist/core/hooks/auto-tagger.js +0 -155
  349. package/dist/core/hooks/capture-filter.d.ts +0 -41
  350. package/dist/core/hooks/capture-filter.js +0 -128
  351. package/dist/core/index.d.ts +0 -10
  352. package/dist/core/index.js +0 -14
  353. package/dist/core/ingestion/agent-memory.d.ts +0 -22
  354. package/dist/core/ingestion/agent-memory.js +0 -109
  355. package/dist/core/ingestion/core-memory.d.ts +0 -78
  356. package/dist/core/ingestion/core-memory.js +0 -226
  357. package/dist/core/ingestion/learnings.d.ts +0 -57
  358. package/dist/core/ingestion/learnings.js +0 -202
  359. package/dist/core/layers/generator.d.ts +0 -25
  360. package/dist/core/layers/generator.js +0 -76
  361. package/dist/core/lib/db-client.js +0 -130
  362. package/dist/core/lib/schemas.d.ts +0 -129
  363. package/dist/core/lib/utils.d.ts +0 -14
  364. package/dist/core/lib/utils.js +0 -90
  365. package/dist/core/lib/validation.d.ts +0 -38
  366. package/dist/core/lib/validation.js +0 -151
  367. package/dist/core/lifecycle.d.ts +0 -26
  368. package/dist/core/lifecycle.js +0 -302
  369. package/dist/core/local-embeddings.d.ts +0 -11
  370. package/dist/core/logger.d.ts +0 -16
  371. package/dist/core/logger.js +0 -40
  372. package/dist/core/mcp/client.d.ts +0 -17
  373. package/dist/core/mcp/client.js +0 -101
  374. package/dist/core/mcp/index.d.ts +0 -6
  375. package/dist/core/mcp/index.js +0 -6
  376. package/dist/core/mcp/server.d.ts +0 -18
  377. package/dist/core/mcp/server.js +0 -157
  378. package/dist/core/mcp/standalone-server.d.ts +0 -13
  379. package/dist/core/mcp/standalone-server.js +0 -46
  380. package/dist/core/mcp/tools.d.ts +0 -9
  381. package/dist/core/mcp/tools.js +0 -365
  382. package/dist/core/mcp/types.d.ts +0 -315
  383. package/dist/core/mcp/types.js +0 -48
  384. package/dist/core/memory/bridge-discovery.d.ts +0 -50
  385. package/dist/core/memory/bridge-discovery.js +0 -291
  386. package/dist/core/memory/categorizer.d.ts +0 -27
  387. package/dist/core/memory/categorizer.js +0 -305
  388. package/dist/core/memory/conflict-detector.d.ts +0 -7
  389. package/dist/core/memory/conflict-detector.js +0 -43
  390. package/dist/core/memory/consolidation.d.ts +0 -42
  391. package/dist/core/memory/consolidation.js +0 -303
  392. package/dist/core/memory/context-collector.d.ts +0 -10
  393. package/dist/core/memory/context-collector.js +0 -56
  394. package/dist/core/memory/contradiction-resolver.d.ts +0 -40
  395. package/dist/core/memory/contradiction-resolver.js +0 -368
  396. package/dist/core/memory/edit-workflow.d.ts +0 -19
  397. package/dist/core/memory/edit-workflow.js +0 -120
  398. package/dist/core/memory/entity-extractor.d.ts +0 -33
  399. package/dist/core/memory/entity-extractor.js +0 -336
  400. package/dist/core/memory/entity-resolver.d.ts +0 -23
  401. package/dist/core/memory/entity-resolver.js +0 -64
  402. package/dist/core/memory/fact-extractor.d.ts +0 -24
  403. package/dist/core/memory/fact-extractor.js +0 -89
  404. package/dist/core/memory/feedback-tracker.d.ts +0 -12
  405. package/dist/core/memory/feedback-tracker.js +0 -155
  406. package/dist/core/memory/hooks.d.ts +0 -88
  407. package/dist/core/memory/hooks.js +0 -174
  408. package/dist/core/memory/hybrid-retrieval.d.ts +0 -29
  409. package/dist/core/memory/hybrid-retrieval.js +0 -139
  410. package/dist/core/memory/hybrid-scorer.d.ts +0 -40
  411. package/dist/core/memory/hybrid-scorer.js +0 -284
  412. package/dist/core/memory/hybrid-search.d.ts +0 -20
  413. package/dist/core/memory/hybrid-search.js +0 -359
  414. package/dist/core/memory/importance.d.ts +0 -63
  415. package/dist/core/memory/importance.js +0 -298
  416. package/dist/core/memory/index.d.ts +0 -8
  417. package/dist/core/memory/loader.d.ts +0 -31
  418. package/dist/core/memory/loader.js +0 -141
  419. package/dist/core/memory/markdown/markdown-storage.d.ts +0 -72
  420. package/dist/core/memory/markdown/markdown-storage.js +0 -243
  421. package/dist/core/memory/memories.d.ts +0 -47
  422. package/dist/core/memory/memories.js +0 -449
  423. package/dist/core/memory/memory-lifecycle.d.ts +0 -8
  424. package/dist/core/memory/memory-lifecycle.js +0 -55
  425. package/dist/core/memory/memory-manager.d.ts +0 -15
  426. package/dist/core/memory/memory-manager.js +0 -46
  427. package/dist/core/memory/migrate.d.ts +0 -21
  428. package/dist/core/memory/migrate.js +0 -134
  429. package/dist/core/memory/normalization.d.ts +0 -22
  430. package/dist/core/memory/normalization.js +0 -26
  431. package/dist/core/memory/progressive-disclosure.d.ts +0 -43
  432. package/dist/core/memory/progressive-disclosure.js +0 -280
  433. package/dist/core/memory/query-processor.d.ts +0 -21
  434. package/dist/core/memory/query-processor.js +0 -72
  435. package/dist/core/memory/query-rewriter.d.ts +0 -13
  436. package/dist/core/memory/query-rewriter.js +0 -118
  437. package/dist/core/memory/response-analyzer.d.ts +0 -9
  438. package/dist/core/memory/response-analyzer.js +0 -61
  439. package/dist/core/memory/serialization.d.ts +0 -10
  440. package/dist/core/memory/serialization.js +0 -84
  441. package/dist/core/memory/stats.d.ts +0 -22
  442. package/dist/core/memory/stats.js +0 -138
  443. package/dist/core/memory/telemetry.d.ts +0 -69
  444. package/dist/core/memory/telemetry.js +0 -313
  445. package/dist/core/memory/temporal-facts.d.ts +0 -41
  446. package/dist/core/memory/temporal-facts.js +0 -283
  447. package/dist/core/memory/temporal-parser.d.ts +0 -32
  448. package/dist/core/memory/temporal-parser.js +0 -385
  449. package/dist/core/memory/trigger-detector.d.ts +0 -14
  450. package/dist/core/memory/trigger-detector.js +0 -42
  451. package/dist/core/memory/write-gate.d.ts +0 -54
  452. package/dist/core/memory/write-gate.js +0 -210
  453. package/dist/core/namespaces/index.d.ts +0 -71
  454. package/dist/core/namespaces/index.js +0 -305
  455. package/dist/core/namespaces/uri-parser.d.ts +0 -31
  456. package/dist/core/namespaces/uri-parser.js +0 -74
  457. package/dist/core/obsidian-vault.d.ts +0 -30
  458. package/dist/core/obsidian-vault.js +0 -94
  459. package/dist/core/places/index.d.ts +0 -14
  460. package/dist/core/places/memory-places.d.ts +0 -68
  461. package/dist/core/places/memory-places.js +0 -261
  462. package/dist/core/places/places.d.ts +0 -88
  463. package/dist/core/places/places.js +0 -314
  464. package/dist/core/places/rules.d.ts +0 -74
  465. package/dist/core/places/rules.js +0 -240
  466. package/dist/core/places/walking.d.ts +0 -56
  467. package/dist/core/places/walking.js +0 -121
  468. package/dist/core/projects.d.ts +0 -17
  469. package/dist/core/projects.js +0 -108
  470. package/dist/core/redis.d.ts +0 -11
  471. package/dist/core/redis.js +0 -69
  472. package/dist/core/responses.d.ts +0 -96
  473. package/dist/core/responses.js +0 -122
  474. package/dist/core/scheduler/cron-scheduler.d.ts +0 -32
  475. package/dist/core/scheduler/cron-scheduler.js +0 -332
  476. package/dist/core/scheduler/heartbeat.d.ts +0 -11
  477. package/dist/core/scheduler/heartbeat.js +0 -73
  478. package/dist/core/scheduler/index.d.ts +0 -8
  479. package/dist/core/scheduler/job-runner.d.ts +0 -11
  480. package/dist/core/scheduler/job-runner.js +0 -164
  481. package/dist/core/search/conversations.d.ts +0 -25
  482. package/dist/core/search/conversations.js +0 -110
  483. package/dist/core/search/entities.d.ts +0 -12
  484. package/dist/core/search/entities.js +0 -31
  485. package/dist/core/search/folder-context.d.ts +0 -25
  486. package/dist/core/search/folder-context.js +0 -119
  487. package/dist/core/search/graph-boost.d.ts +0 -7
  488. package/dist/core/search/graph-boost.js +0 -23
  489. package/dist/core/search/index.d.ts +0 -4
  490. package/dist/core/search/qmd-search.d.ts +0 -61
  491. package/dist/core/search/qmd-search.js +0 -178
  492. package/dist/core/security/encrypt.d.ts +0 -6
  493. package/dist/core/security/encrypt.js +0 -47
  494. package/dist/core/security/governance.d.ts +0 -26
  495. package/dist/core/security/governance.js +0 -79
  496. package/dist/core/security/privacy.d.ts +0 -23
  497. package/dist/core/security/privacy.js +0 -82
  498. package/dist/core/security/secret-detector.d.ts +0 -32
  499. package/dist/core/security/secret-detector.js +0 -88
  500. package/dist/core/session/auto-load.d.ts +0 -6
  501. package/dist/core/session/auto-load.js +0 -119
  502. package/dist/core/session/index.d.ts +0 -7
  503. package/dist/core/session/self-iteration-job.d.ts +0 -20
  504. package/dist/core/session/self-iteration-job.js +0 -282
  505. package/dist/core/session/session-hooks.d.ts +0 -18
  506. package/dist/core/session/session-hooks.js +0 -58
  507. package/dist/core/session/types.d.ts +0 -26
  508. package/dist/core/session/types.js +0 -10
  509. package/dist/core/session-hooks/self-iteration-job.d.ts +0 -20
  510. package/dist/core/session-hooks/self-iteration-job.js +0 -282
  511. package/dist/core/session-hooks/session-hooks.d.ts +0 -18
  512. package/dist/core/session-hooks/session-hooks.js +0 -58
  513. package/dist/core/snapshots/cleanup.d.ts +0 -9
  514. package/dist/core/snapshots/comparison.d.ts +0 -19
  515. package/dist/core/snapshots/comparison.js +0 -43
  516. package/dist/core/snapshots/creation.d.ts +0 -19
  517. package/dist/core/snapshots/creation.js +0 -126
  518. package/dist/core/snapshots/retrieval.d.ts +0 -7
  519. package/dist/core/snapshots/retrieval.js +0 -41
  520. package/dist/core/snapshots/stats.d.ts +0 -11
  521. package/dist/core/snapshots/stats.js +0 -52
  522. package/dist/core/snapshots.d.ts +0 -29
  523. package/dist/core/snapshots.js +0 -220
  524. package/dist/core/storage/cache.d.ts +0 -13
  525. package/dist/core/storage/cache.js +0 -202
  526. package/dist/core/storage/database.d.ts +0 -12
  527. package/dist/core/storage/database.js +0 -12
  528. package/dist/core/summarization/cleanup.d.ts +0 -9
  529. package/dist/core/summarization/queries.d.ts +0 -9
  530. package/dist/core/summarization/queries.js +0 -28
  531. package/dist/core/summarization/stats.d.ts +0 -14
  532. package/dist/core/summarization/stats.js +0 -52
  533. package/dist/core/summarization/strategies.d.ts +0 -24
  534. package/dist/core/summarization/strategies.js +0 -28
  535. package/dist/core/summarization.d.ts +0 -37
  536. package/dist/core/summarization.js +0 -188
  537. package/dist/core/sync/qmd-sync.d.ts +0 -94
  538. package/dist/core/sync/qmd-sync.js +0 -201
  539. package/dist/core/temporal-facts.d.ts +0 -54
  540. package/dist/core/temporal-facts.js +0 -193
  541. package/dist/core/toon.d.ts +0 -43
  542. package/dist/core/toon.js +0 -160
  543. package/dist/core/tracing/collector.d.ts +0 -111
  544. package/dist/core/tracing/collector.js +0 -350
  545. package/dist/core/tracing/visualizer.d.ts +0 -32
  546. package/dist/core/tracing/visualizer.js +0 -165
  547. package/dist/core/utils/cleanup-operations.d.ts +0 -13
  548. package/dist/core/utils/cleanup-operations.js +0 -44
  549. package/dist/core/utils/content-extraction.d.ts +0 -19
  550. package/dist/core/utils/content-extraction.js +0 -75
  551. package/dist/core/utils/filter-builder.d.ts +0 -13
  552. package/dist/core/utils/filter-builder.js +0 -44
  553. package/dist/core/utils/history-traversal.d.ts +0 -13
  554. package/dist/core/utils/history-traversal.js +0 -50
  555. package/dist/core/utils/memory-operations.d.ts +0 -17
  556. package/dist/core/utils/memory-operations.js +0 -43
  557. package/dist/core/utils/query-operations.d.ts +0 -18
  558. package/dist/core/utils/query-operations.js +0 -65
  559. package/dist/core/utils/summarization-helpers.d.ts +0 -21
  560. package/dist/core/utils/summarization-helpers.js +0 -38
  561. package/dist/core/utils/temporal-queries.d.ts +0 -13
  562. package/dist/core/utils/temporal-queries.js +0 -27
  563. package/dist/core/utils/vector-operations.d.ts +0 -71
  564. package/dist/core/utils/version-management.d.ts +0 -9
  565. package/dist/core/utils/version-management.js +0 -61
  566. package/dist/core/worker.d.ts +0 -82
  567. package/dist/core/worker.js +0 -272
  568. package/dist/db/adapter.d.ts +0 -7
  569. package/dist/db/adapter.js +0 -175
  570. package/dist/db/bootstrap.d.ts +0 -9
  571. package/dist/db/drizzle/schema-sqlite.d.ts +0 -4837
  572. package/dist/db/drizzle/schema-sqlite.js +0 -684
  573. package/dist/db/drizzle/schema.d.ts +0 -4082
  574. package/dist/db/drizzle/schema.js +0 -770
  575. package/dist/db/drizzle.config.d.ts +0 -3
  576. package/dist/db/drizzle.config.js +0 -12
  577. package/dist/db/index.d.ts +0 -7
  578. package/dist/db/index.js +0 -89
  579. package/dist/db/neon.d.ts +0 -8
  580. package/dist/db/neon.js +0 -20
  581. package/dist/db/schema/index.d.ts +0 -40
  582. package/dist/db/schema/index.js +0 -105
  583. package/dist/db/schema/tables/context-sessions.d.ts +0 -9
  584. package/dist/db/schema/tables/context-sessions.js +0 -37
  585. package/dist/db/schema/tables/conversations.d.ts +0 -9
  586. package/dist/db/schema/tables/conversations.js +0 -47
  587. package/dist/db/schema/tables/core-memory.d.ts +0 -9
  588. package/dist/db/schema/tables/core-memory.js +0 -41
  589. package/dist/db/schema/tables/entities.d.ts +0 -9
  590. package/dist/db/schema/tables/entities.js +0 -39
  591. package/dist/db/schema/tables/entity-relations.d.ts +0 -9
  592. package/dist/db/schema/tables/entity-relations.js +0 -31
  593. package/dist/db/schema/tables/learnings.d.ts +0 -9
  594. package/dist/db/schema/tables/learnings.js +0 -66
  595. package/dist/db/schema/tables/memories.d.ts +0 -9
  596. package/dist/db/schema/tables/memories.js +0 -161
  597. package/dist/db/schema/tables/memory-associations.d.ts +0 -9
  598. package/dist/db/schema/tables/memory-associations.js +0 -39
  599. package/dist/db/schema/tables/memory-hash-cache.d.ts +0 -9
  600. package/dist/db/schema/tables/memory-hash-cache.js +0 -29
  601. package/dist/db/schema/tables/memory-merge-history.d.ts +0 -9
  602. package/dist/db/schema/tables/memory-merge-history.js +0 -33
  603. package/dist/db/schema/tables/memory-merge-proposals.d.ts +0 -9
  604. package/dist/db/schema/tables/memory-merge-proposals.js +0 -39
  605. package/dist/db/schema/tables/messages.d.ts +0 -9
  606. package/dist/db/schema/tables/messages.js +0 -41
  607. package/dist/db/schema/tables/namespaces.d.ts +0 -9
  608. package/dist/db/schema/tables/namespaces.js +0 -37
  609. package/dist/db/schema/tables/projects.d.ts +0 -9
  610. package/dist/db/schema/tables/projects.js +0 -31
  611. package/dist/db/schema/tables/users.d.ts +0 -9
  612. package/dist/db/schema/tables/users.js +0 -27
  613. package/dist/db/schema.d.ts +0 -3
  614. package/dist/db/schema.js +0 -11
  615. package/dist/db/supabase.d.ts +0 -9
  616. package/dist/db/supabase.js +0 -24
  617. package/dist/index.d.ts +0 -7
  618. package/dist/index.js +0 -1677
  619. package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
  620. package/dist/webui/server.d.ts +0 -5
  621. package/dist/webui/server.js +0 -642
  622. package/generated/mcp/manifest.json +0 -23
  623. package/generated/mcp/mcp-servers.json +0 -25
  624. package/generated/mcp/mcporter.json +0 -34
  625. package/generated/mcp/openclaw-memory-qmd.json +0 -17
  626. package/generated/mcp/runtime.json +0 -12
  627. package/scripts/README.md +0 -60
  628. package/scripts/build-release.sh +0 -36
  629. package/scripts/check-secrets.js +0 -132
  630. package/scripts/copy-runtime-assets.mjs +0 -26
  631. package/scripts/generate-mcp.mjs +0 -264
  632. package/scripts/github-release.sh +0 -77
  633. package/scripts/init-dirs.mjs +0 -13
  634. package/scripts/install-claude-code.sh +0 -85
  635. package/scripts/install-cursor.sh +0 -56
  636. package/scripts/install-hooks.sh +0 -73
  637. package/scripts/install-interactive.mjs +0 -357
  638. package/scripts/install-opencode.sh +0 -75
  639. package/scripts/install-plugin.mjs +0 -415
  640. package/scripts/install-windsurf.sh +0 -67
  641. package/scripts/remote-preflight.mjs +0 -62
  642. package/scripts/squish-fallback.mjs +0 -132
  643. package/scripts/test-interactive.mjs +0 -131
  644. package/scripts/verify-mcp.mjs +0 -214
  645. package/skills/squish-memory/scripts/install.mjs +0 -335
  646. package/skills/squish-memory/write_skill.js +0 -2
@@ -1,210 +0,0 @@
1
- /**
2
- * Write Gate Enforcement
3
- * Validates memories before writing to ensure quality, security, and consistency
4
- * Integrates secret detection, trigger detection, and content validation
5
- */
6
- import { detectSecrets, redactSecrets } from '../security/secret-detector.js';
7
- import { detectMemorySignals } from './trigger-detector.js';
8
- import { resolveContradictions } from './contradiction-resolver.js';
9
- import { logger } from '../logger.js';
10
- const DEFAULT_OPTIONS = {
11
- allowSecrets: false,
12
- minContentLength: 5,
13
- maxContentLength: 50000,
14
- skipContradictionCheck: false,
15
- skipTemporalSupersession: false,
16
- };
17
- /**
18
- * Main write gate function - validates and sanitizes content before write
19
- */
20
- export async function enforceWriteGate(content, type, options = {}) {
21
- const opts = { ...DEFAULT_OPTIONS, ...options };
22
- const result = {
23
- allowed: true,
24
- sanitized: false,
25
- warnings: [],
26
- errors: [],
27
- metadata: {
28
- secretsDetected: 0,
29
- signals: null,
30
- contradictions: { found: false, count: 0 },
31
- temporalSupersession: { count: 0 },
32
- },
33
- };
34
- let processedContent = content;
35
- // 1. Content length validation
36
- if (content.length < opts.minContentLength) {
37
- result.errors.push(`Content too short (min ${opts.minContentLength} characters)`);
38
- result.allowed = false;
39
- return result;
40
- }
41
- if (content.length > opts.maxContentLength) {
42
- result.errors.push(`Content too long (max ${opts.maxContentLength} characters)`);
43
- result.allowed = false;
44
- return result;
45
- }
46
- // 2. Secret detection
47
- const secrets = detectSecrets(content, 'high');
48
- result.metadata.secretsDetected = secrets.length;
49
- if (secrets.length > 0) {
50
- const secretTypes = [...new Set(secrets.map(s => s.type))];
51
- if (!opts.allowSecrets) {
52
- result.errors.push(`Potential secrets detected: ${secretTypes.join(', ')}`);
53
- result.warnings.push('Content contains sensitive data that must be redacted');
54
- result.allowed = false;
55
- return result;
56
- }
57
- else {
58
- // Redact secrets but allow write
59
- processedContent = redactSecrets(content);
60
- result.sanitized = true;
61
- result.sanitizedContent = processedContent;
62
- result.warnings.push(`Redacted ${secrets.length} potential secrets: ${secretTypes.join(', ')}`);
63
- }
64
- }
65
- // 3. Memory signals detection
66
- const signals = detectMemorySignals(content);
67
- result.metadata.signals = signals;
68
- // Add warnings for high-priority signals
69
- if (signals.priority === 'high') {
70
- result.warnings.push('High-priority memory signal detected');
71
- }
72
- if (signals.implicit.correction) {
73
- result.warnings.push('Content appears to be a correction - contradiction check recommended');
74
- }
75
- // 4. Contradiction detection (async, non-blocking for write)
76
- if (!opts.skipContradictionCheck && signals.implicit.correction) {
77
- try {
78
- const contradictionResult = await resolveContradictions(processedContent, type, opts.projectId);
79
- result.metadata.contradictions = {
80
- found: contradictionResult.supersededIds.length > 0,
81
- count: contradictionResult.supersededIds.length,
82
- };
83
- if (contradictionResult.supersededIds.length > 0) {
84
- result.warnings.push(`This memory supersedes ${contradictionResult.supersededIds.length} older memories`);
85
- }
86
- }
87
- catch (error) {
88
- logger.error('Contradiction check failed', error);
89
- result.warnings.push('Contradiction check failed - proceeding with write');
90
- }
91
- }
92
- // 5. Temporal fact handling
93
- if (!opts.skipTemporalSupersession) {
94
- try {
95
- // This would be done after the memory is actually written, but we note it here
96
- result.metadata.temporalSupersession = { count: 0 };
97
- }
98
- catch (error) {
99
- logger.error('Temporal check failed', error);
100
- }
101
- }
102
- // 6. Content quality checks
103
- const qualityIssues = checkContentQuality(processedContent);
104
- result.warnings.push(...qualityIssues);
105
- return result;
106
- }
107
- /**
108
- * Quick validation without async operations
109
- * Use for fast pre-check before full validation
110
- */
111
- export function quickValidate(content) {
112
- const errors = [];
113
- // Check for empty or whitespace-only content
114
- if (!content || content.trim().length === 0) {
115
- errors.push('Content is empty');
116
- return { valid: false, errors };
117
- }
118
- // Check for minimum length
119
- if (content.trim().length < 5) {
120
- errors.push('Content is too short');
121
- }
122
- // Check for obvious secrets (high confidence only)
123
- const secrets = detectSecrets(content, 'high');
124
- if (secrets.length > 0) {
125
- errors.push(`Content contains ${secrets.length} potential secrets`);
126
- }
127
- return { valid: errors.length === 0, errors };
128
- }
129
- /**
130
- * Check content quality and return warnings
131
- */
132
- function checkContentQuality(content) {
133
- const warnings = [];
134
- // Check for excessive repetition
135
- const words = content.toLowerCase().split(/\s+/);
136
- const wordCounts = new Map();
137
- for (const word of words) {
138
- if (word.length > 3) { // Only check meaningful words
139
- wordCounts.set(word, (wordCounts.get(word) || 0) + 1);
140
- }
141
- }
142
- for (const [word, count] of wordCounts.entries()) {
143
- if (count > 10) {
144
- warnings.push(`Excessive repetition detected: "${word}" appears ${count} times`);
145
- break; // Only report one
146
- }
147
- }
148
- // Check for very long lines (might be code or minified content)
149
- const lines = content.split('\n');
150
- for (const line of lines) {
151
- if (line.length > 1000) {
152
- warnings.push('Content contains very long lines - may not be human-readable');
153
- break;
154
- }
155
- }
156
- // Check for binary-like content
157
- const binaryPattern = /[\x00-\x08\x0E-\x1F]/;
158
- if (binaryPattern.test(content)) {
159
- warnings.push('Content may contain binary data');
160
- }
161
- return warnings;
162
- }
163
- /**
164
- * Sanitize content for storage
165
- * Redacts secrets and normalizes whitespace
166
- */
167
- export function sanitizeForStorage(content) {
168
- // Redact secrets
169
- let sanitized = redactSecrets(content);
170
- // Normalize excessive whitespace
171
- sanitized = sanitized.replace(/\n{3,}/g, '\n\n');
172
- sanitized = sanitized.replace(/ {2,}/g, ' ');
173
- // Trim
174
- sanitized = sanitized.trim();
175
- return sanitized;
176
- }
177
- /**
178
- * Calculate a quality score for content (0-100)
179
- */
180
- export function calculateContentQualityScore(content) {
181
- let score = 100;
182
- // Deduct for short content
183
- if (content.length < 20) {
184
- score -= 30;
185
- }
186
- else if (content.length < 50) {
187
- score -= 15;
188
- }
189
- // Deduct for secrets
190
- const secrets = detectSecrets(content, 'high');
191
- score -= secrets.length * 20;
192
- // Deduct for repetition
193
- const words = content.toLowerCase().split(/\s+/);
194
- const uniqueWords = new Set(words.filter(w => w.length > 3));
195
- const repetitionRatio = uniqueWords.size / Math.max(1, words.length);
196
- if (repetitionRatio < 0.3) {
197
- score -= 20;
198
- }
199
- // Bonus for structure (sentences, punctuation)
200
- const sentences = content.split(/[.!?]+/).filter(s => s.trim().length > 0);
201
- if (sentences.length > 1) {
202
- score += 10;
203
- }
204
- // Bonus for reasonable length
205
- if (content.length >= 50 && content.length <= 2000) {
206
- score += 5;
207
- }
208
- return Math.max(0, Math.min(100, score));
209
- }
210
- //# sourceMappingURL=write-gate.js.map
@@ -1,71 +0,0 @@
1
- /** Namespace Management - Hierarchical folder-like namespaces for memories */
2
- export type NamespaceType = 'root' | 'user' | 'agent' | 'project' | 'custom';
3
- export interface Namespace {
4
- id: string;
5
- projectId: string;
6
- name: string;
7
- parentId: string | null;
8
- type: NamespaceType;
9
- description: string | null;
10
- path: string;
11
- children?: Namespace[];
12
- createdAt: Date;
13
- updatedAt: Date;
14
- }
15
- export interface NamespaceCreateInput {
16
- projectId: string;
17
- name: string;
18
- type: NamespaceType;
19
- parentId?: string | null;
20
- description?: string;
21
- }
22
- export interface NamespaceTree {
23
- id: string;
24
- name: string;
25
- type: NamespaceType;
26
- description: string | null;
27
- path: string;
28
- children: NamespaceTree[];
29
- }
30
- /**
31
- * Create a new namespace
32
- */
33
- export declare function createNamespace(input: NamespaceCreateInput): Promise<Namespace>;
34
- /**
35
- * Get a namespace by ID
36
- */
37
- export declare function getNamespaceById(id: string): Promise<Namespace | null>;
38
- /**
39
- * Resolve a namespace path to a namespace ID
40
- * @example resolveNamespacePath('my-project', ['user', 'preferences']) -> namespaceId
41
- */
42
- export declare function resolveNamespacePath(projectId: string, path: string[]): Promise<string | null>;
43
- /**
44
- * Get namespace tree for a project
45
- */
46
- export declare function getNamespaceTree(projectId: string): Promise<NamespaceTree[]>;
47
- /**
48
- * Get or create default namespaces for a project
49
- */
50
- export declare function getDefaultNamespaces(projectId: string): Promise<Namespace[]>;
51
- /**
52
- * List namespaces with optional filtering
53
- */
54
- export declare function listNamespaces(options?: {
55
- projectId?: string;
56
- type?: NamespaceType;
57
- parentId?: string;
58
- recursive?: boolean;
59
- }): Promise<Namespace[]>;
60
- /**
61
- * Delete a namespace (cascades to child namespaces)
62
- */
63
- export declare function deleteNamespace(id: string): Promise<void>;
64
- /**
65
- * Update namespace
66
- */
67
- export declare function updateNamespace(id: string, updates: Partial<{
68
- name: string;
69
- description: string;
70
- }>): Promise<void>;
71
- //# sourceMappingURL=index.d.ts.map
@@ -1,305 +0,0 @@
1
- /** Namespace Management - Hierarchical folder-like namespaces for memories */
2
- import { randomUUID } from 'crypto';
3
- import { eq, and, isNull } from 'drizzle-orm';
4
- import { getDb } from '../../db/index.js';
5
- import { getSchema } from '../../db/schema.js';
6
- import { logger } from '../logger.js';
7
- /**
8
- * Create a new namespace
9
- */
10
- export async function createNamespace(input) {
11
- const db = await getDb();
12
- if (!db) {
13
- throw new Error('Database unavailable');
14
- }
15
- const schema = await getSchema();
16
- const id = randomUUID();
17
- // Check if namespace with same name exists under parent
18
- const sqliteDb = db;
19
- const existing = await sqliteDb.select()
20
- .from(schema.namespaces)
21
- .where(and(eq(schema.namespaces.projectId, input.projectId), eq(schema.namespaces.name, input.name), input.parentId
22
- ? eq(schema.namespaces.parentId, input.parentId)
23
- : isNull(schema.namespaces.parentId)))
24
- .limit(1);
25
- if (existing.length > 0) {
26
- throw new Error(`Namespace "${input.name}" already exists under ${input.parentId || 'root'}`);
27
- }
28
- // Build namespace path
29
- const path = await buildNamespacePath(input.projectId, input.name, input.parentId ?? null);
30
- await sqliteDb.insert(schema.namespaces).values({
31
- id,
32
- projectId: input.projectId,
33
- name: input.name,
34
- type: input.type,
35
- parentId: input.parentId || null,
36
- description: input.description || null,
37
- createdAt: new Date(),
38
- updatedAt: new Date(),
39
- });
40
- logger.info(`[Namespaces] Created namespace: ${path}`);
41
- return {
42
- id,
43
- projectId: input.projectId,
44
- name: input.name,
45
- type: input.type,
46
- parentId: input.parentId || null,
47
- description: input.description || null,
48
- path,
49
- createdAt: new Date(),
50
- updatedAt: new Date(),
51
- };
52
- }
53
- /**
54
- * Build full namespace path from parent
55
- */
56
- async function buildNamespacePath(projectId, name, parentId) {
57
- if (!parentId) {
58
- return name;
59
- }
60
- const db = await getDb();
61
- const schema = await getSchema();
62
- const sqliteDb = db;
63
- const [parent] = await sqliteDb.select()
64
- .from(schema.namespaces)
65
- .where(eq(schema.namespaces.id, parentId))
66
- .limit(1);
67
- if (!parent) {
68
- return name;
69
- }
70
- return `${parent.path}/${name}`;
71
- }
72
- /**
73
- * Get a namespace by ID
74
- */
75
- export async function getNamespaceById(id) {
76
- const db = await getDb();
77
- if (!db)
78
- return null;
79
- const schema = await getSchema();
80
- const sqliteDb = db;
81
- const [row] = await sqliteDb.select()
82
- .from(schema.namespaces)
83
- .where(eq(schema.namespaces.id, id))
84
- .limit(1);
85
- if (!row)
86
- return null;
87
- return {
88
- id: row.id,
89
- projectId: row.projectId,
90
- name: row.name,
91
- type: row.type,
92
- parentId: row.parentId,
93
- description: row.description,
94
- path: row.path,
95
- createdAt: new Date(row.createdAt),
96
- updatedAt: new Date(row.updatedAt),
97
- };
98
- }
99
- /**
100
- * Resolve a namespace path to a namespace ID
101
- * @example resolveNamespacePath('my-project', ['user', 'preferences']) -> namespaceId
102
- */
103
- export async function resolveNamespacePath(projectId, path) {
104
- if (path.length === 0)
105
- return null;
106
- const db = await getDb();
107
- if (!db)
108
- return null;
109
- const schema = await getSchema();
110
- const sqliteDb = db;
111
- let parentId = null;
112
- let targetNamespace = null;
113
- // Traverse path segments
114
- for (const segment of path) {
115
- const [result] = await sqliteDb.select()
116
- .from(schema.namespaces)
117
- .where(and(eq(schema.namespaces.projectId, projectId), eq(schema.namespaces.name, segment), parentId
118
- ? eq(schema.namespaces.parentId, parentId)
119
- : isNull(schema.namespaces.parentId)))
120
- .limit(1);
121
- if (!result)
122
- return null;
123
- targetNamespace = result;
124
- parentId = result.id;
125
- }
126
- return targetNamespace?.id || null;
127
- }
128
- /**
129
- * Get namespace tree for a project
130
- */
131
- export async function getNamespaceTree(projectId) {
132
- const db = await getDb();
133
- if (!db)
134
- return [];
135
- const schema = await getSchema();
136
- const sqliteDb = db;
137
- // Get all namespaces for project
138
- const all = await sqliteDb.select()
139
- .from(schema.namespaces)
140
- .where(eq(schema.namespaces.projectId, projectId))
141
- .orderBy(schema.namespaces.name);
142
- // Build tree structure
143
- const map = new Map();
144
- const roots = [];
145
- for (const row of all) {
146
- const node = {
147
- id: row.id,
148
- name: row.name,
149
- type: row.type,
150
- description: row.description,
151
- path: row.path,
152
- children: [],
153
- };
154
- map.set(row.id, node);
155
- if (!row.parentId) {
156
- roots.push(node);
157
- }
158
- else {
159
- const parent = map.get(row.parentId);
160
- if (parent) {
161
- parent.children.push(node);
162
- }
163
- }
164
- }
165
- return roots;
166
- }
167
- /**
168
- * Get or create default namespaces for a project
169
- */
170
- export async function getDefaultNamespaces(projectId) {
171
- const db = await getDb();
172
- if (!db)
173
- return [];
174
- const schema = await getSchema();
175
- const sqliteDb = db;
176
- const created = [];
177
- const defaults = [
178
- { name: 'user', type: 'user', description: 'User-specific memories and preferences' },
179
- { name: 'agent', type: 'agent', description: 'Agent-specific knowledge and state' },
180
- { name: 'project', type: 'project', description: 'Project-specific decisions and context' },
181
- ];
182
- const defaultNames = ['user', 'agent', 'project'];
183
- // Check all default namespaces at once with IN clause
184
- const existing = await sqliteDb.select()
185
- .from(schema.namespaces)
186
- .where(and(eq(schema.namespaces.projectId, projectId), eq(schema.namespaces.name, defaultNames[0]), eq(schema.namespaces.type, 'user'), isNull(schema.namespaces.parentId)));
187
- if (existing.length > 0) {
188
- const ns = await createNamespace({
189
- projectId,
190
- name: defaultNames[0],
191
- type: 'user',
192
- parentId: null,
193
- });
194
- created.push({
195
- id: ns.id,
196
- projectId: ns.projectId,
197
- name: ns.name,
198
- type: ns.type,
199
- parentId: ns.parentId,
200
- description: ns.description,
201
- path: ns.path,
202
- createdAt: new Date(ns.createdAt),
203
- updatedAt: new Date(ns.updatedAt),
204
- });
205
- }
206
- // Check remaining defaults sequentially (agent and project)
207
- for (const defName of defaultNames.slice(1)) {
208
- const existing = await sqliteDb.select()
209
- .from(schema.namespaces)
210
- .where(and(eq(schema.namespaces.projectId, projectId), eq(schema.namespaces.name, defName), eq(schema.namespaces.type, defName), isNull(schema.namespaces.parentId)))
211
- .limit(1);
212
- if (existing.length === 0) {
213
- const ns = await createNamespace({
214
- projectId,
215
- name: defName,
216
- type: defName === 'agent' ? 'agent' : 'project',
217
- parentId: null,
218
- });
219
- created.push(ns);
220
- }
221
- else {
222
- created.push({
223
- id: existing[0].id,
224
- projectId: existing[0].projectId,
225
- name: existing[0].name,
226
- type: existing[0].type,
227
- parentId: existing[0].parentId,
228
- description: existing[0].description,
229
- path: existing[0].path,
230
- createdAt: new Date(existing[0].createdAt),
231
- updatedAt: new Date(existing[0].updatedAt),
232
- });
233
- }
234
- }
235
- logger.info(`[Namespaces] Default namespaces ready for project: ${projectId}`);
236
- return created;
237
- }
238
- /**
239
- * List namespaces with optional filtering
240
- */
241
- export async function listNamespaces(options = {}) {
242
- const db = await getDb();
243
- if (!db)
244
- return [];
245
- const schema = await getSchema();
246
- const sqliteDb = db;
247
- const conditions = [];
248
- if (options.projectId) {
249
- conditions.push(eq(schema.namespaces.projectId, options.projectId));
250
- }
251
- if (options.type) {
252
- conditions.push(eq(schema.namespaces.type, options.type));
253
- }
254
- if (options.parentId !== undefined) {
255
- if (options.parentId === null) {
256
- conditions.push(isNull(schema.namespaces.parentId));
257
- }
258
- else {
259
- conditions.push(eq(schema.namespaces.parentId, options.parentId));
260
- }
261
- }
262
- const rows = await sqliteDb.select()
263
- .from(schema.namespaces)
264
- .where(conditions.length > 0 ? and(...conditions) : undefined)
265
- .orderBy(schema.namespaces.name);
266
- return rows.map((row) => ({
267
- id: row.id,
268
- projectId: row.projectId,
269
- name: row.name,
270
- type: row.type,
271
- parentId: row.parentId,
272
- description: row.description,
273
- path: row.path,
274
- createdAt: new Date(row.createdAt),
275
- updatedAt: new Date(row.updatedAt),
276
- }));
277
- }
278
- /**
279
- * Delete a namespace (cascades to child namespaces)
280
- */
281
- export async function deleteNamespace(id) {
282
- const db = await getDb();
283
- if (!db)
284
- return;
285
- const schema = await getSchema();
286
- const sqliteDb = db;
287
- await sqliteDb.delete(schema.namespaces).where(eq(schema.namespaces.id, id));
288
- logger.info(`[Namespaces] Deleted namespace: ${id}`);
289
- }
290
- /**
291
- * Update namespace
292
- */
293
- export async function updateNamespace(id, updates) {
294
- const db = await getDb();
295
- if (!db)
296
- return;
297
- const schema = await getSchema();
298
- const sqliteDb = db;
299
- await sqliteDb.update(schema.namespaces).set({
300
- ...updates,
301
- updatedAt: new Date(),
302
- }).where(eq(schema.namespaces.id, id));
303
- logger.info(`[Namespaces] Updated namespace: ${id}`);
304
- }
305
- //# sourceMappingURL=index.js.map
@@ -1,31 +0,0 @@
1
- /** URI Parser for Squish namespace scheme (squish://) */
2
- export interface SquishURIParsed {
3
- type: 'namespace';
4
- projectId: string;
5
- namespacePath: string[];
6
- memoryId?: string;
7
- }
8
- /**
9
- * Parse a squish:// URI into components
10
- * @example parseSquishURI('squish://my-project/user/preferences') -> { type: 'namespace', projectId: 'my-project', namespacePath: ['user', 'preferences'] }
11
- */
12
- export declare function parseSquishURI(uri: string): SquishURIParsed | null;
13
- /**
14
- * Build a squish:// URI from components
15
- * @example buildSquishURI('my-project', ['user', 'preferences']) -> 'squish://my-project/user/preferences'
16
- */
17
- export declare function buildSquishURI(projectId: string, path: string[], memoryId?: string): string;
18
- /**
19
- * Validate a namespace path (no "..", no empty segments)
20
- */
21
- export declare function validateNamespacePath(path: string[]): boolean;
22
- /**
23
- * Get parent namespace path
24
- * @example getParentPath(['user', 'preferences', 'coding']) -> ['user', 'preferences']
25
- */
26
- export declare function getParentPath(path: string[]): string[] | null;
27
- /**
28
- * Join namespace path segments
29
- */
30
- export declare function joinNamespacePath(...segments: (string | string[])[]): string[];
31
- //# sourceMappingURL=uri-parser.d.ts.map
@@ -1,74 +0,0 @@
1
- /** URI Parser for Squish namespace scheme (squish://) */
2
- /**
3
- * Parse a squish:// URI into components
4
- * @example parseSquishURI('squish://my-project/user/preferences') -> { type: 'namespace', projectId: 'my-project', namespacePath: ['user', 'preferences'] }
5
- */
6
- export function parseSquishURI(uri) {
7
- if (!uri || typeof uri !== 'string') {
8
- return null;
9
- }
10
- // Match squish://project/path/to/memory
11
- const match = uri.match(/^squish:\/\/([^\/]+)\/(.*)$/);
12
- if (!match) {
13
- return null;
14
- }
15
- const [, projectId, pathPart] = match;
16
- const namespacePath = pathPart ? pathPart.split('/').filter(Boolean) : [];
17
- // If path ends with a UUID, it's a memory ID
18
- const lastSegment = namespacePath[namespacePath.length - 1];
19
- let memoryId;
20
- if (lastSegment && /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/.test(lastSegment)) {
21
- memoryId = lastSegment;
22
- namespacePath.pop();
23
- }
24
- return {
25
- type: 'namespace',
26
- projectId,
27
- namespacePath,
28
- memoryId,
29
- };
30
- }
31
- /**
32
- * Build a squish:// URI from components
33
- * @example buildSquishURI('my-project', ['user', 'preferences']) -> 'squish://my-project/user/preferences'
34
- */
35
- export function buildSquishURI(projectId, path, memoryId) {
36
- if (!projectId) {
37
- throw new Error('Project ID is required');
38
- }
39
- const cleanPath = path.filter(Boolean);
40
- const basePath = `squish://${projectId}${cleanPath.length > 0 ? '/' + cleanPath.join('/') : ''}`;
41
- return memoryId ? `${basePath}/${memoryId}` : basePath;
42
- }
43
- /**
44
- * Validate a namespace path (no "..", no empty segments)
45
- */
46
- export function validateNamespacePath(path) {
47
- if (path.length === 0)
48
- return true;
49
- for (const segment of path) {
50
- if (!segment || segment.length === 0) {
51
- return false;
52
- }
53
- if (segment.includes('..')) {
54
- return false;
55
- }
56
- }
57
- return true;
58
- }
59
- /**
60
- * Get parent namespace path
61
- * @example getParentPath(['user', 'preferences', 'coding']) -> ['user', 'preferences']
62
- */
63
- export function getParentPath(path) {
64
- if (path.length <= 1)
65
- return null;
66
- return path.slice(0, -1);
67
- }
68
- /**
69
- * Join namespace path segments
70
- */
71
- export function joinNamespacePath(...segments) {
72
- return segments.flat().filter(Boolean);
73
- }
74
- //# sourceMappingURL=uri-parser.js.map