@remnic/core 9.3.684 → 9.3.685

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 (297) hide show
  1. package/dist/access-boundary.d.ts +3 -2
  2. package/dist/access-boundary.js +23 -23
  3. package/dist/access-cli.js +67 -67
  4. package/dist/access-http.d.ts +3 -2
  5. package/dist/access-http.js +26 -26
  6. package/dist/access-mcp.d.ts +3 -2
  7. package/dist/access-mcp.js +25 -25
  8. package/dist/access-operations.d.ts +3 -2
  9. package/dist/access-operations.js +24 -24
  10. package/dist/{access-service-D-siI-xJ.d.ts → access-service-DeKrlYU_.d.ts} +1 -10
  11. package/dist/access-service.d.ts +3 -2
  12. package/dist/access-service.js +22 -22
  13. package/dist/access-surface-catalog.d.ts +3 -2
  14. package/dist/active-recall.js +2 -2
  15. package/dist/{auto-sync-5CJBJMPZ.js → auto-sync-NUQWSFQD.js} +7 -7
  16. package/dist/bootstrap.d.ts +2 -1
  17. package/dist/bootstrap.js +2 -2
  18. package/dist/boxes.js +2 -2
  19. package/dist/briefing.js +3 -3
  20. package/dist/buffer.js +2 -2
  21. package/dist/calibration.js +4 -4
  22. package/dist/catalog-COqWZlZ6.d.ts +456 -0
  23. package/dist/causal-behavior.js +4 -4
  24. package/dist/causal-chain.js +4 -4
  25. package/dist/causal-consolidation.js +11 -11
  26. package/dist/causal-retrieval.js +4 -4
  27. package/dist/causal-trajectory-graph.js +1 -1
  28. package/dist/causal-trajectory.js +1 -1
  29. package/dist/{chunk-ROHLEUTH.js → chunk-2KAYTPPT.js} +10 -10
  30. package/dist/{chunk-NHQGDVJF.js → chunk-2SJCWLQD.js} +3 -3
  31. package/dist/{chunk-YTWNKQ2G.js → chunk-3FC6LW6T.js} +2 -2
  32. package/dist/{chunk-XEA4Z7JU.js → chunk-4FE2K57M.js} +3 -3
  33. package/dist/{chunk-WI7JKV2T.js → chunk-4N3TFFPH.js} +2 -2
  34. package/dist/{chunk-BTVX7ZXZ.js → chunk-4NFVPDIL.js} +4 -4
  35. package/dist/{chunk-OUWAQVDJ.js → chunk-5CEJH5ZN.js} +2 -2
  36. package/dist/{chunk-6QM24CP7.js → chunk-6GJS4BFH.js} +2 -2
  37. package/dist/{chunk-J2FBJ63F.js → chunk-6O6A6YUO.js} +4 -4
  38. package/dist/{chunk-HQ6NIBL6.js → chunk-7FL4CNPV.js} +2 -2
  39. package/dist/{chunk-5VDJMYTF.js → chunk-7WWURLG6.js} +3 -3
  40. package/dist/{chunk-QWRC7GIO.js → chunk-A4HH2EWA.js} +5 -5
  41. package/dist/{chunk-4SKKVWLQ.js → chunk-AGJH5ISO.js} +2 -2
  42. package/dist/{chunk-2L3KLWOV.js → chunk-B43NZNMG.js} +54 -92
  43. package/dist/chunk-B43NZNMG.js.map +1 -0
  44. package/dist/{chunk-WRE3JPAW.js → chunk-B4XVLHJA.js} +3 -3
  45. package/dist/{chunk-53FDU4CE.js → chunk-BLIWOONZ.js} +39 -36
  46. package/dist/chunk-BLIWOONZ.js.map +1 -0
  47. package/dist/{chunk-AJU4PJGY.js → chunk-BVKCV2ZY.js} +2 -2
  48. package/dist/{chunk-5N5DXYDW.js → chunk-BZISAF67.js} +7 -8
  49. package/dist/chunk-BZISAF67.js.map +1 -0
  50. package/dist/{chunk-DQY7NJ5L.js → chunk-CTOQEZSN.js} +2 -2
  51. package/dist/{chunk-7OGJQP7T.js → chunk-DCWIQFNA.js} +4 -4
  52. package/dist/{chunk-MHQC2WU2.js → chunk-DKTSR7EK.js} +2 -2
  53. package/dist/{chunk-RN7MUWON.js → chunk-EHISUJFN.js} +2 -2
  54. package/dist/{chunk-WLEB7WCG.js → chunk-EO5QWINU.js} +2 -2
  55. package/dist/{chunk-XKXKSQU7.js → chunk-EXM3CQTZ.js} +2 -2
  56. package/dist/{chunk-M3FWYURP.js → chunk-FE6DQUNJ.js} +9 -9
  57. package/dist/{chunk-LCC5EZTT.js → chunk-FIVDN2SM.js} +4 -4
  58. package/dist/{chunk-452WDNFO.js → chunk-GG6AJN7A.js} +2 -2
  59. package/dist/{chunk-2IBGHRIO.js → chunk-GS55WYRL.js} +3 -3
  60. package/dist/{chunk-IBTZEBUD.js → chunk-HYNHLBKA.js} +2 -2
  61. package/dist/{chunk-3EVIMVQU.js → chunk-IIDSFFE5.js} +2 -2
  62. package/dist/{chunk-EVWIEEKZ.js → chunk-IQ7WCZRW.js} +2 -2
  63. package/dist/{chunk-B5XMS73R.js → chunk-IQVQJJL7.js} +2 -2
  64. package/dist/{chunk-OXNOINIP.js → chunk-JPCKLFWK.js} +22 -23
  65. package/dist/{chunk-OXNOINIP.js.map → chunk-JPCKLFWK.js.map} +1 -1
  66. package/dist/{chunk-6RHNCKHG.js → chunk-K43PI6DQ.js} +2 -2
  67. package/dist/{chunk-OIF36KGD.js → chunk-KCQA46NR.js} +2 -2
  68. package/dist/{chunk-2LDBXPLB.js → chunk-KF74X62T.js} +1 -1
  69. package/dist/{chunk-MAV46GWQ.js → chunk-KYYL4U6X.js} +2 -2
  70. package/dist/{chunk-6GC5SGFE.js → chunk-L24JROPR.js} +2 -2
  71. package/dist/{chunk-Q5ZU3RNY.js → chunk-LQ6JI4VH.js} +2 -2
  72. package/dist/{chunk-GWKCEM3S.js → chunk-MCQDSY4G.js} +3 -3
  73. package/dist/{chunk-HP5FMB6L.js → chunk-MDJURR27.js} +2 -2
  74. package/dist/{chunk-2ODBA7MQ.js → chunk-NU3CSQ4H.js} +5 -5
  75. package/dist/chunk-NU3CSQ4H.js.map +1 -0
  76. package/dist/{chunk-T2PO5MUF.js → chunk-O7GOFAM3.js} +2 -2
  77. package/dist/{chunk-Z2OXSMZK.js → chunk-OBXTMFZQ.js} +3 -3
  78. package/dist/{chunk-5OE4PYY5.js → chunk-OFUULUSY.js} +8 -9
  79. package/dist/{chunk-5OE4PYY5.js.map → chunk-OFUULUSY.js.map} +1 -1
  80. package/dist/{chunk-K6ZN34WC.js → chunk-OV4D5T7V.js} +3 -3
  81. package/dist/{chunk-OMLIFZ4I.js → chunk-PH3HOKYW.js} +2 -2
  82. package/dist/{chunk-FYEVFGJD.js → chunk-PK6RGRSD.js} +2 -2
  83. package/dist/{chunk-C3IW2F5Z.js → chunk-PLBIPT6I.js} +2 -2
  84. package/dist/{chunk-QY7YA7OL.js → chunk-PNLCEFE4.js} +2 -2
  85. package/dist/{chunk-AGRPGAKR.js → chunk-PONNZ54D.js} +2 -2
  86. package/dist/{chunk-XZ4WBBB5.js → chunk-PWFWCGOO.js} +2 -2
  87. package/dist/{chunk-XWEXT4XU.js → chunk-QANVLERJ.js} +4 -4
  88. package/dist/{chunk-W4RVMTHR.js → chunk-QRDOSYOR.js} +2 -2
  89. package/dist/{chunk-6IMKOIZ6.js → chunk-R6OVFAX6.js} +2 -2
  90. package/dist/{chunk-JOASJWQR.js → chunk-SANZHXY2.js} +2 -2
  91. package/dist/{chunk-7DTASS5T.js → chunk-SJHM6I4J.js} +2 -2
  92. package/dist/{chunk-3MY4W5V4.js → chunk-SQGPGC76.js} +11 -21
  93. package/dist/{chunk-3MY4W5V4.js.map → chunk-SQGPGC76.js.map} +1 -1
  94. package/dist/{chunk-M6BVYHBU.js → chunk-STOEE37X.js} +4 -4
  95. package/dist/{chunk-GKKAXVAJ.js → chunk-U33LWTQQ.js} +1 -7
  96. package/dist/chunk-U33LWTQQ.js.map +1 -0
  97. package/dist/{chunk-LXH3DIF2.js → chunk-U7D7NP4J.js} +2 -2
  98. package/dist/{chunk-DRD2Q7HQ.js → chunk-UFS7OXGL.js} +2 -2
  99. package/dist/{chunk-H3HDXD3U.js → chunk-UPTZYUYJ.js} +2 -2
  100. package/dist/{chunk-3Z7NPD5T.js → chunk-UTYBJR7M.js} +2 -2
  101. package/dist/{chunk-LN4YGHTM.js → chunk-UUH4YQOF.js} +2 -2
  102. package/dist/{chunk-6VF75M3X.js → chunk-VGUOEDTU.js} +2 -2
  103. package/dist/{chunk-44VFF3BB.js → chunk-VILEUJXC.js} +2 -2
  104. package/dist/{chunk-7SI52C65.js → chunk-VL7DP3OW.js} +2 -2
  105. package/dist/{chunk-7DHTMOND.js → chunk-VQ34TERH.js} +2 -2
  106. package/dist/{chunk-6VMIHVGO.js → chunk-VX6OBUDW.js} +2 -2
  107. package/dist/{chunk-EW5KFXHL.js → chunk-WDXCNJSF.js} +7 -7
  108. package/dist/{chunk-FMEKEF47.js → chunk-WIHPNY65.js} +79 -3
  109. package/dist/chunk-WIHPNY65.js.map +1 -0
  110. package/dist/{chunk-X6IRLNOO.js → chunk-WIWPSQYU.js} +2 -2
  111. package/dist/{chunk-DOCTITOP.js → chunk-WRFKZEO6.js} +2 -2
  112. package/dist/{chunk-E6ZDCOHM.js → chunk-XBZQRZ6G.js} +2 -2
  113. package/dist/{chunk-7YX23JBA.js → chunk-XHYGJVXL.js} +2 -2
  114. package/dist/{chunk-JD4SCARD.js → chunk-YN4ZT4CW.js} +1 -1
  115. package/dist/{chunk-YXWAILM4.js → chunk-YOI3ELXF.js} +2 -2
  116. package/dist/{chunk-XCAZF7KQ.js → chunk-ZA2S2VLL.js} +2 -2
  117. package/dist/{chunk-BEUDU7Y4.js → chunk-ZCWIH4LH.js} +2 -2
  118. package/dist/{chunk-V25ZAOSB.js → chunk-ZPTISBQU.js} +5 -5
  119. package/dist/{cli-ooj6JQBS.d.ts → cli-D3-Q5Uod.d.ts} +2 -2
  120. package/dist/cli.d.ts +4 -3
  121. package/dist/cli.js +44 -44
  122. package/dist/compounding/engine.js +4 -4
  123. package/dist/compounding/preference-consolidator.js +1 -1
  124. package/dist/config.js +2 -2
  125. package/dist/connectors/codex-materialize-runner.js +4 -4
  126. package/dist/connectors/codex-materialize.js +2 -2
  127. package/dist/connectors/index.js +5 -5
  128. package/dist/contradiction/index.js +3 -3
  129. package/dist/{contradiction-scan-AZTGFMPY.js → contradiction-scan-HWGEOUDS.js} +3 -3
  130. package/dist/conversation-index/backend.js +5 -5
  131. package/dist/conversation-index/cleanup.js +2 -2
  132. package/dist/conversation-index/faiss-adapter.js +2 -2
  133. package/dist/conversation-index/indexer.js +2 -2
  134. package/dist/conversation-index/search.js +2 -2
  135. package/dist/day-summary.js +2 -2
  136. package/dist/embedding-fallback.js +2 -2
  137. package/dist/entity-retrieval.js +4 -4
  138. package/dist/explicit-capture.d.ts +2 -1
  139. package/dist/explicit-capture.js +1 -1
  140. package/dist/extraction-judge-telemetry.js +2 -2
  141. package/dist/extraction-judge-training.js +2 -2
  142. package/dist/extraction-judge.js +5 -5
  143. package/dist/extraction.js +9 -9
  144. package/dist/fallback-llm.js +4 -4
  145. package/dist/{graph-edge-decay-KSVJGCZW.js → graph-edge-decay-D7OESCBR.js} +2 -2
  146. package/dist/graph-snapshot.js +2 -2
  147. package/dist/graph.js +1 -1
  148. package/dist/index.d.ts +5 -4
  149. package/dist/index.js +80 -80
  150. package/dist/lcm/archive.js +2 -2
  151. package/dist/lcm/engine.js +5 -5
  152. package/dist/lcm/index.js +5 -5
  153. package/dist/lcm/schema.js +2 -2
  154. package/dist/lcm/summarizer.js +3 -3
  155. package/dist/local-llm.js +2 -2
  156. package/dist/logger.js +1 -1
  157. package/dist/maintenance/memory-governance.js +3 -3
  158. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
  159. package/dist/maintenance/rebuild-memory-projection.js +5 -5
  160. package/dist/mcp-memory-inspector-app.d.ts +3 -2
  161. package/dist/model-registry.js +2 -2
  162. package/dist/models-json.js +2 -2
  163. package/dist/namespaces/migrate.d.ts +1 -0
  164. package/dist/namespaces/migrate.js +16 -16
  165. package/dist/namespaces/search.js +13 -13
  166. package/dist/namespaces/storage.d.ts +42 -1
  167. package/dist/namespaces/storage.js +3 -3
  168. package/dist/native-knowledge.js +2 -2
  169. package/dist/negative.js +2 -2
  170. package/dist/operator-toolkit.js +22 -22
  171. package/dist/{orchestrator-DIDDvwDw.d.ts → orchestrator-CA6ouzBn.d.ts} +3 -464
  172. package/dist/orchestrator.d.ts +2 -1
  173. package/dist/orchestrator.js +61 -61
  174. package/dist/profiling.js +2 -2
  175. package/dist/qmd.js +2 -2
  176. package/dist/recall-planner-llm.js +4 -4
  177. package/dist/recall-qos.js +2 -2
  178. package/dist/recall-state.js +2 -2
  179. package/dist/relevance.js +2 -2
  180. package/dist/{resolution-IDTEBJFS.js → resolution-MN36NW5P.js} +3 -3
  181. package/dist/resolve-provider-secret.js +2 -2
  182. package/dist/resume-bundles.js +4 -4
  183. package/dist/retrieval-agents.js +2 -2
  184. package/dist/routing/store.js +2 -2
  185. package/dist/search/embed-helper.js +2 -2
  186. package/dist/search/factory.js +12 -12
  187. package/dist/search/index.js +12 -12
  188. package/dist/search/lancedb-backend.js +2 -2
  189. package/dist/search/meilisearch-backend.js +2 -2
  190. package/dist/search/orama-backend.js +2 -2
  191. package/dist/search/remote-backend.js +2 -2
  192. package/dist/semantic-consolidation.js +5 -5
  193. package/dist/semantic-rule-promotion.js +3 -3
  194. package/dist/semantic-rule-verifier.js +3 -3
  195. package/dist/session-observer-state.js +2 -2
  196. package/dist/session-transcript-migration.js +2 -2
  197. package/dist/shared-context/manager.js +2 -2
  198. package/dist/storage.d.ts +4 -0
  199. package/dist/storage.js +2 -2
  200. package/dist/summarizer.js +7 -7
  201. package/dist/temporal-supersession.js +2 -2
  202. package/dist/threading.js +2 -2
  203. package/dist/transcript.js +2 -2
  204. package/dist/verified-recall.js +4 -4
  205. package/package.json +2 -2
  206. package/src/access-http.ts +1 -1
  207. package/src/access-mcp.ts +1 -1
  208. package/src/access-service.ts +1 -11
  209. package/src/cli.ts +1 -1
  210. package/src/explicit-capture.ts +3 -12
  211. package/src/logger.ts +13 -4
  212. package/src/namespaces/catalog.test.ts +2 -2
  213. package/src/namespaces/storage.ts +81 -0
  214. package/src/orchestrator.ts +22 -64
  215. package/src/storage.ts +36 -36
  216. package/dist/chunk-2L3KLWOV.js.map +0 -1
  217. package/dist/chunk-2ODBA7MQ.js.map +0 -1
  218. package/dist/chunk-53FDU4CE.js.map +0 -1
  219. package/dist/chunk-5N5DXYDW.js.map +0 -1
  220. package/dist/chunk-FMEKEF47.js.map +0 -1
  221. package/dist/chunk-GKKAXVAJ.js.map +0 -1
  222. /package/dist/{auto-sync-5CJBJMPZ.js.map → auto-sync-NUQWSFQD.js.map} +0 -0
  223. /package/dist/{chunk-ROHLEUTH.js.map → chunk-2KAYTPPT.js.map} +0 -0
  224. /package/dist/{chunk-NHQGDVJF.js.map → chunk-2SJCWLQD.js.map} +0 -0
  225. /package/dist/{chunk-YTWNKQ2G.js.map → chunk-3FC6LW6T.js.map} +0 -0
  226. /package/dist/{chunk-XEA4Z7JU.js.map → chunk-4FE2K57M.js.map} +0 -0
  227. /package/dist/{chunk-WI7JKV2T.js.map → chunk-4N3TFFPH.js.map} +0 -0
  228. /package/dist/{chunk-BTVX7ZXZ.js.map → chunk-4NFVPDIL.js.map} +0 -0
  229. /package/dist/{chunk-OUWAQVDJ.js.map → chunk-5CEJH5ZN.js.map} +0 -0
  230. /package/dist/{chunk-6QM24CP7.js.map → chunk-6GJS4BFH.js.map} +0 -0
  231. /package/dist/{chunk-J2FBJ63F.js.map → chunk-6O6A6YUO.js.map} +0 -0
  232. /package/dist/{chunk-HQ6NIBL6.js.map → chunk-7FL4CNPV.js.map} +0 -0
  233. /package/dist/{chunk-5VDJMYTF.js.map → chunk-7WWURLG6.js.map} +0 -0
  234. /package/dist/{chunk-QWRC7GIO.js.map → chunk-A4HH2EWA.js.map} +0 -0
  235. /package/dist/{chunk-4SKKVWLQ.js.map → chunk-AGJH5ISO.js.map} +0 -0
  236. /package/dist/{chunk-WRE3JPAW.js.map → chunk-B4XVLHJA.js.map} +0 -0
  237. /package/dist/{chunk-AJU4PJGY.js.map → chunk-BVKCV2ZY.js.map} +0 -0
  238. /package/dist/{chunk-DQY7NJ5L.js.map → chunk-CTOQEZSN.js.map} +0 -0
  239. /package/dist/{chunk-7OGJQP7T.js.map → chunk-DCWIQFNA.js.map} +0 -0
  240. /package/dist/{chunk-MHQC2WU2.js.map → chunk-DKTSR7EK.js.map} +0 -0
  241. /package/dist/{chunk-RN7MUWON.js.map → chunk-EHISUJFN.js.map} +0 -0
  242. /package/dist/{chunk-WLEB7WCG.js.map → chunk-EO5QWINU.js.map} +0 -0
  243. /package/dist/{chunk-XKXKSQU7.js.map → chunk-EXM3CQTZ.js.map} +0 -0
  244. /package/dist/{chunk-M3FWYURP.js.map → chunk-FE6DQUNJ.js.map} +0 -0
  245. /package/dist/{chunk-LCC5EZTT.js.map → chunk-FIVDN2SM.js.map} +0 -0
  246. /package/dist/{chunk-452WDNFO.js.map → chunk-GG6AJN7A.js.map} +0 -0
  247. /package/dist/{chunk-2IBGHRIO.js.map → chunk-GS55WYRL.js.map} +0 -0
  248. /package/dist/{chunk-IBTZEBUD.js.map → chunk-HYNHLBKA.js.map} +0 -0
  249. /package/dist/{chunk-3EVIMVQU.js.map → chunk-IIDSFFE5.js.map} +0 -0
  250. /package/dist/{chunk-EVWIEEKZ.js.map → chunk-IQ7WCZRW.js.map} +0 -0
  251. /package/dist/{chunk-B5XMS73R.js.map → chunk-IQVQJJL7.js.map} +0 -0
  252. /package/dist/{chunk-6RHNCKHG.js.map → chunk-K43PI6DQ.js.map} +0 -0
  253. /package/dist/{chunk-OIF36KGD.js.map → chunk-KCQA46NR.js.map} +0 -0
  254. /package/dist/{chunk-2LDBXPLB.js.map → chunk-KF74X62T.js.map} +0 -0
  255. /package/dist/{chunk-MAV46GWQ.js.map → chunk-KYYL4U6X.js.map} +0 -0
  256. /package/dist/{chunk-6GC5SGFE.js.map → chunk-L24JROPR.js.map} +0 -0
  257. /package/dist/{chunk-Q5ZU3RNY.js.map → chunk-LQ6JI4VH.js.map} +0 -0
  258. /package/dist/{chunk-GWKCEM3S.js.map → chunk-MCQDSY4G.js.map} +0 -0
  259. /package/dist/{chunk-HP5FMB6L.js.map → chunk-MDJURR27.js.map} +0 -0
  260. /package/dist/{chunk-T2PO5MUF.js.map → chunk-O7GOFAM3.js.map} +0 -0
  261. /package/dist/{chunk-Z2OXSMZK.js.map → chunk-OBXTMFZQ.js.map} +0 -0
  262. /package/dist/{chunk-K6ZN34WC.js.map → chunk-OV4D5T7V.js.map} +0 -0
  263. /package/dist/{chunk-OMLIFZ4I.js.map → chunk-PH3HOKYW.js.map} +0 -0
  264. /package/dist/{chunk-FYEVFGJD.js.map → chunk-PK6RGRSD.js.map} +0 -0
  265. /package/dist/{chunk-C3IW2F5Z.js.map → chunk-PLBIPT6I.js.map} +0 -0
  266. /package/dist/{chunk-QY7YA7OL.js.map → chunk-PNLCEFE4.js.map} +0 -0
  267. /package/dist/{chunk-AGRPGAKR.js.map → chunk-PONNZ54D.js.map} +0 -0
  268. /package/dist/{chunk-XZ4WBBB5.js.map → chunk-PWFWCGOO.js.map} +0 -0
  269. /package/dist/{chunk-XWEXT4XU.js.map → chunk-QANVLERJ.js.map} +0 -0
  270. /package/dist/{chunk-W4RVMTHR.js.map → chunk-QRDOSYOR.js.map} +0 -0
  271. /package/dist/{chunk-6IMKOIZ6.js.map → chunk-R6OVFAX6.js.map} +0 -0
  272. /package/dist/{chunk-JOASJWQR.js.map → chunk-SANZHXY2.js.map} +0 -0
  273. /package/dist/{chunk-7DTASS5T.js.map → chunk-SJHM6I4J.js.map} +0 -0
  274. /package/dist/{chunk-M6BVYHBU.js.map → chunk-STOEE37X.js.map} +0 -0
  275. /package/dist/{chunk-LXH3DIF2.js.map → chunk-U7D7NP4J.js.map} +0 -0
  276. /package/dist/{chunk-DRD2Q7HQ.js.map → chunk-UFS7OXGL.js.map} +0 -0
  277. /package/dist/{chunk-H3HDXD3U.js.map → chunk-UPTZYUYJ.js.map} +0 -0
  278. /package/dist/{chunk-3Z7NPD5T.js.map → chunk-UTYBJR7M.js.map} +0 -0
  279. /package/dist/{chunk-LN4YGHTM.js.map → chunk-UUH4YQOF.js.map} +0 -0
  280. /package/dist/{chunk-6VF75M3X.js.map → chunk-VGUOEDTU.js.map} +0 -0
  281. /package/dist/{chunk-44VFF3BB.js.map → chunk-VILEUJXC.js.map} +0 -0
  282. /package/dist/{chunk-7SI52C65.js.map → chunk-VL7DP3OW.js.map} +0 -0
  283. /package/dist/{chunk-7DHTMOND.js.map → chunk-VQ34TERH.js.map} +0 -0
  284. /package/dist/{chunk-6VMIHVGO.js.map → chunk-VX6OBUDW.js.map} +0 -0
  285. /package/dist/{chunk-EW5KFXHL.js.map → chunk-WDXCNJSF.js.map} +0 -0
  286. /package/dist/{chunk-X6IRLNOO.js.map → chunk-WIWPSQYU.js.map} +0 -0
  287. /package/dist/{chunk-DOCTITOP.js.map → chunk-WRFKZEO6.js.map} +0 -0
  288. /package/dist/{chunk-E6ZDCOHM.js.map → chunk-XBZQRZ6G.js.map} +0 -0
  289. /package/dist/{chunk-7YX23JBA.js.map → chunk-XHYGJVXL.js.map} +0 -0
  290. /package/dist/{chunk-JD4SCARD.js.map → chunk-YN4ZT4CW.js.map} +0 -0
  291. /package/dist/{chunk-YXWAILM4.js.map → chunk-YOI3ELXF.js.map} +0 -0
  292. /package/dist/{chunk-XCAZF7KQ.js.map → chunk-ZA2S2VLL.js.map} +0 -0
  293. /package/dist/{chunk-BEUDU7Y4.js.map → chunk-ZCWIH4LH.js.map} +0 -0
  294. /package/dist/{chunk-V25ZAOSB.js.map → chunk-ZPTISBQU.js.map} +0 -0
  295. /package/dist/{contradiction-scan-AZTGFMPY.js.map → contradiction-scan-HWGEOUDS.js.map} +0 -0
  296. /package/dist/{graph-edge-decay-KSVJGCZW.js.map → graph-edge-decay-D7OESCBR.js.map} +0 -0
  297. /package/dist/{resolution-IDTEBJFS.js.map → resolution-MN36NW5P.js.map} +0 -0
package/src/storage.ts CHANGED
@@ -2238,24 +2238,12 @@ export class StorageManager {
2238
2238
 
2239
2239
  // Cache for readAllColdMemories() — keyed by cold root directory path.
2240
2240
  // Prevents an uncached full-tree directory scan on every structured-attribute
2241
- // write (Finding UOGi, PR #402 round-6). The cache is only invalidated when
2242
- // cold-tier content actually changes (via invalidateColdMemoriesCache), NOT
2243
- // on every hot-tier write. It also expires after COLD_SCAN_CACHE_TTL_MS as
2244
- // a safety net.
2245
- //
2246
- // Finding UvUy (PR #402 round-11): cache entries now carry a `coldVersion`
2247
- // sentinel that is bumped (via a file-size counter in state/cold-write.log)
2248
- // on every write that modifies cold-tier content. Before serving a cached
2249
- // result, readAllColdMemories() reads the sentinel from disk and compares.
2250
- // If they differ the entry is dropped and the cold tree is re-scanned. This
2251
- // makes the cache correct across process boundaries (gateway + CLI): a second
2252
- // process that writes a new cold memory bumps the sentinel on disk, so the
2253
- // first process's next readAllColdMemories() sees the change within one call
2254
- // (rather than waiting up to 30s for TTL expiry).
2255
- //
2256
- // After Finding UTsP broadened readAllColdMemories to scan the entire cold/
2257
- // subtree (not just facts/+corrections/), amortizing this I/O across
2258
- // back-to-back writes in the same burst is even more important.
2241
+ // write (Finding UOGi, PR #402 round-6). Invalidated when cold-tier content
2242
+ // changes (via invalidateColdMemoriesCache) and expires after COLD_SCAN_CACHE_TTL_MS.
2243
+ // Entries carry a `coldVersion` sentinel (Finding UvUy, PR #402 round-11) bumped
2244
+ // on every cold-tier write, making the cache correct across process boundaries
2245
+ // (gateway + CLI). After Finding UTsP broadened the scan to the entire cold/
2246
+ // subtree, amortizing across back-to-back writes is even more important.
2259
2247
  private static readonly COLD_SCAN_CACHE_TTL_MS = 30_000; // 30 seconds
2260
2248
  private static readonly coldMemoriesCache = new Map<string, { memories: MemoryFile[]; loadedAt: number; coldVersion: number }>();
2261
2249
 
@@ -2289,6 +2277,11 @@ export class StorageManager {
2289
2277
  private offlineSyncDigestCacheWriteTimer: ReturnType<typeof setTimeout> | null = null;
2290
2278
  /** Optional: set by the orchestrator after construction to enable template-aware citation stripping during legacy hash rebuild. */
2291
2279
  citationTemplate: string = DEFAULT_CITATION_FORMAT;
2280
+ /** Post-write catalog hook (#1522). Installed by the namespace router; fire-and-forget. */
2281
+ onCatalogWrite?: () => void;
2282
+ private notifyCatalogWrite(): void {
2283
+ try { this.onCatalogWrite?.(); } catch { /* gotcha #13 */ }
2284
+ }
2292
2285
 
2293
2286
  /** Page-versioning configuration. Set by the orchestrator after construction. */
2294
2287
  private _versioningConfig: VersioningConfig | null = null;
@@ -2576,7 +2569,7 @@ export class StorageManager {
2576
2569
  ): Promise<void> {
2577
2570
  const targetPath = this.wearableTranscriptPath(sourceId, date);
2578
2571
  // writeMaybeEncryptedFile handles mkdir + atomic temp→rename.
2579
- await writeMaybeEncryptedFile(targetPath, serialized, this.resolveWriteKey(), {}, this.baseDir);
2572
+ await this.writeStorageSecureFile(targetPath, serialized);
2580
2573
  }
2581
2574
 
2582
2575
  /** Read a stored day transcript; null when the day has no file. */
@@ -2747,8 +2740,13 @@ export class StorageManager {
2747
2740
  private readStorageSecureFile(filePath: string): Promise<string> {
2748
2741
  return readMaybeEncryptedFile(filePath, this._secureStoreKey, this.baseDir);
2749
2742
  }
2750
- private writeStorageSecureFile(filePath: string, content: string): Promise<void> {
2751
- return writeMaybeEncryptedFile(filePath, content, this.resolveWriteKey(), {}, this.baseDir);
2743
+ private writeStorageSecureFile(filePath: string, content: string | Buffer): Promise<void> {
2744
+ return writeMaybeEncryptedFile(filePath, content, this.resolveWriteKey(), {}, this.baseDir)
2745
+ .then(() => this.notifyCatalogWrite());
2746
+ }
2747
+ private writeStorageSecureFileChunks(filePath: string, chunks: AsyncIterable<Buffer>): Promise<void> {
2748
+ return writeMaybeEncryptedFileFromChunks(filePath, chunks, this.resolveWriteKey(), {}, this.baseDir)
2749
+ .then(() => this.notifyCatalogWrite());
2752
2750
  }
2753
2751
 
2754
2752
  private assertManagedStoragePath(filePath: string, method: string): string {
@@ -2929,18 +2927,18 @@ export class StorageManager {
2929
2927
 
2930
2928
  async writeOfflineSyncFile(filePath: string, content: Buffer): Promise<void> {
2931
2929
  const target = this.assertManagedStoragePath(filePath, "storage.writeOfflineSyncFile");
2932
- await writeMaybeEncryptedFile(target, content, this.resolveWriteKey(), {}, this.baseDir);
2930
+ await this.writeStorageSecureFile(target, content);
2933
2931
  await this.invalidateAfterOfflineSyncMutation(target);
2934
2932
  }
2935
2933
 
2936
2934
  async writeOfflineSyncStagingFile(filePath: string, content: Buffer): Promise<void> {
2937
2935
  const target = this.assertManagedStoragePath(filePath, "storage.writeOfflineSyncStagingFile");
2938
- await writeMaybeEncryptedFile(target, content, this.resolveWriteKey(), {}, this.baseDir);
2936
+ await this.writeStorageSecureFile(target, content);
2939
2937
  }
2940
2938
 
2941
2939
  async writeOfflineSyncFileChunks(filePath: string, chunks: AsyncIterable<Buffer>): Promise<void> {
2942
2940
  const target = this.assertManagedStoragePath(filePath, "storage.writeOfflineSyncFileChunks");
2943
- await writeMaybeEncryptedFileFromChunks(target, chunks, this.resolveWriteKey(), {}, this.baseDir);
2941
+ await this.writeStorageSecureFileChunks(target, chunks);
2944
2942
  await this.invalidateAfterOfflineSyncMutation(target);
2945
2943
  }
2946
2944
 
@@ -3005,12 +3003,14 @@ export class StorageManager {
3005
3003
  if (isEncryptedFile(await readFile(filePath))) {
3006
3004
  const existing = await this.readStorageSecureFile(filePath);
3007
3005
  await writeMaybeEncryptedFile(filePath, `${existing}${content}`, null, {}, this.baseDir);
3006
+ this.notifyCatalogWrite();
3008
3007
  return;
3009
3008
  }
3010
3009
  } catch (err) {
3011
3010
  if (!isErrnoCode(err, "ENOENT")) throw err;
3012
3011
  }
3013
3012
  await appendFile(filePath, content, "utf-8");
3013
+ this.notifyCatalogWrite();
3014
3014
  return;
3015
3015
  }
3016
3016
 
@@ -3021,6 +3021,7 @@ export class StorageManager {
3021
3021
  if (!isErrnoCode(err, "ENOENT")) throw err;
3022
3022
  }
3023
3023
  await writeMaybeEncryptedFile(filePath, `${existing}${content}`, writeKey, {}, this.baseDir);
3024
+ this.notifyCatalogWrite();
3024
3025
  }
3025
3026
  private get stateDir(): string {
3026
3027
  return path.join(this.baseDir, "state");
@@ -3465,7 +3466,7 @@ export class StorageManager {
3465
3466
  const filePath = await this.resolveCategoryWritePath(category, id, today);
3466
3467
 
3467
3468
  await this.snapshotBeforeWrite(filePath, "write");
3468
- await writeMaybeEncryptedFile(filePath, fileContent, this.resolveWriteKey(), {}, this.baseDir);
3469
+ await this.writeStorageSecureFile(filePath, fileContent);
3469
3470
  this.invalidateAllMemoriesCache();
3470
3471
  await this.appendGeneratedMemoryLifecycleEventFailOpen("storage.writeMemory", {
3471
3472
  memoryId: id,
@@ -3638,7 +3639,7 @@ export class StorageManager {
3638
3639
  return "";
3639
3640
  }
3640
3641
  const filePath = path.join(dir, `${id}.md`);
3641
- await writeMaybeEncryptedFile(filePath, `${serializeFrontmatter(fm)}\n\n${sanitized.text}\n`, this.resolveWriteKey(), {}, this.baseDir);
3642
+ await this.writeStorageSecureFile(filePath, `${serializeFrontmatter(fm)}\n\n${sanitized.text}\n`);
3642
3643
  const actor =
3643
3644
  typeof options.actor === "string" && options.actor.length > 0
3644
3645
  ? options.actor
@@ -3876,7 +3877,7 @@ export class StorageManager {
3876
3877
  async writeProfile(content: string): Promise<void> {
3877
3878
  await this.ensureDirectories();
3878
3879
  await this.snapshotBeforeWrite(this.profilePath, "consolidation");
3879
- await writeMaybeEncryptedFile(this.profilePath, content, this.resolveWriteKey(), {}, this.baseDir);
3880
+ await this.writeStorageSecureFile(this.profilePath, content);
3880
3881
  log.debug("updated profile.md");
3881
3882
  }
3882
3883
 
@@ -4601,10 +4602,9 @@ export class StorageManager {
4601
4602
 
4602
4603
  private async writeMemoryFileAtomic(targetPath: string, memory: MemoryFile): Promise<void> {
4603
4604
  const fileContent = `${serializeFrontmatter(memory.frontmatter)}\n\n${memory.content}\n`;
4604
- // writeMaybeEncryptedFile handles atomic temp→rename internally and
4605
- // calls mkdir on the parent directory — no need to duplicate here.
4606
4605
  await writeMaybeEncryptedFile(targetPath, fileContent, this.resolveWriteKey(), {}, this.baseDir);
4607
4606
  this.invalidateAllMemoriesCache();
4607
+ this.notifyCatalogWrite();
4608
4608
  }
4609
4609
 
4610
4610
  async moveMemoryToPath(memory: MemoryFile, targetPath: string): Promise<void> {
@@ -4694,7 +4694,7 @@ export class StorageManager {
4694
4694
  const destPath = path.join(destDir, path.basename(memory.path));
4695
4695
 
4696
4696
  // Write to archive location first (encrypted if applicable), then remove original.
4697
- await writeMaybeEncryptedFile(destPath, fileContent, this.resolveWriteKey(), {}, this.baseDir);
4697
+ await this.writeStorageSecureFile(destPath, fileContent);
4698
4698
  await unlink(memory.path);
4699
4699
  this.invalidateAllMemoriesCache();
4700
4700
  await this.appendGeneratedMemoryLifecycleEventFailOpen(
@@ -4851,7 +4851,7 @@ export class StorageManager {
4851
4851
  log.warn(`updated memory content sanitized for ${id}; violations=${sanitized.violations.join(", ")}`);
4852
4852
  }
4853
4853
  const fileContent = `${serializeFrontmatter(updated)}\n\n${sanitized.text}\n`;
4854
- await writeMaybeEncryptedFile(memory.path, fileContent, this.resolveWriteKey(), {}, this.baseDir);
4854
+ await this.writeStorageSecureFile(memory.path, fileContent);
4855
4855
  this.invalidateAllMemoriesCache();
4856
4856
  await this.appendGeneratedMemoryLifecycleEventFailOpen("storage.updateMemory", {
4857
4857
  memoryId: id,
@@ -4886,7 +4886,7 @@ export class StorageManager {
4886
4886
  const afterStatus = updated.status ?? "active";
4887
4887
 
4888
4888
  const fileContent = `${serializeFrontmatter(updated)}\n\n${memory.content}\n`;
4889
- await writeMaybeEncryptedFile(memory.path, fileContent, this.resolveWriteKey(), {}, this.baseDir);
4889
+ await this.writeStorageSecureFile(memory.path, fileContent);
4890
4890
  this.invalidateAllMemoriesCache();
4891
4891
  // If the target file lives in cold/, bump the cold-version sentinel so
4892
4892
  // other processes detect the change on their next readAllColdMemories()
@@ -5826,7 +5826,7 @@ export class StorageManager {
5826
5826
  const content = `---\n${Object.entries(frontmatter).map(([k, v]) => `${k}: ${JSON.stringify(v)}`).join("\n")}\n---\n\n${question}\n\n**Context:** ${context}\n`;
5827
5827
 
5828
5828
  const filePath = path.join(this.questionsDir, `${id}.md`);
5829
- await writeFile(filePath, content, "utf-8");
5829
+ await this.writeStorageSecureFile(filePath, content);
5830
5830
 
5831
5831
  log.debug(`wrote question ${id} to ${filePath}`);
5832
5832
  this.invalidateQuestionsCache();
@@ -5942,13 +5942,13 @@ export class StorageManager {
5942
5942
  const q = questions.find((q) => q.id === id);
5943
5943
  if (!q) return false;
5944
5944
 
5945
- let raw = await readFile(q.filePath, "utf-8");
5945
+ let raw = await this.readStorageSecureFile(q.filePath);
5946
5946
  raw = raw.replace(/resolved: false/, "resolved: true");
5947
5947
  raw = raw.replace(
5948
5948
  /---\n\n/,
5949
5949
  `resolvedAt: "${new Date().toISOString()}"\n---\n\n`,
5950
5950
  );
5951
- await writeFile(q.filePath, raw, "utf-8");
5951
+ await this.writeStorageSecureFile(q.filePath, raw);
5952
5952
  log.debug(`resolved question ${id}`);
5953
5953
  return true;
5954
5954
  }
@@ -7080,7 +7080,7 @@ export class StorageManager {
7080
7080
  const fileContent = `${serializeFrontmatter(updatedFm)}\n\n${oldMemory.content}\n`;
7081
7081
 
7082
7082
  try {
7083
- await writeMaybeEncryptedFile(oldMemory.path, fileContent, this.resolveWriteKey(), {}, this.baseDir);
7083
+ await this.writeStorageSecureFile(oldMemory.path, fileContent);
7084
7084
  await this.appendGeneratedMemoryLifecycleEventFailOpen("storage.supersedeMemory", {
7085
7085
  memoryId: oldMemoryId,
7086
7086
  eventType: "superseded",