@remnic/core 9.69.22 → 9.69.24

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 (772) hide show
  1. package/dist/abstraction-nodes.js +3 -2
  2. package/dist/access-admin-ops-surface.d.ts +14 -12
  3. package/dist/access-admin-ops-surface.js +94 -91
  4. package/dist/access-authorization-probe.d.ts +14 -12
  5. package/dist/access-authorization-probe.js +95 -92
  6. package/dist/access-boundary.d.ts +14 -12
  7. package/dist/access-boundary.js +94 -91
  8. package/dist/access-citation-namespace.js +3 -3
  9. package/dist/access-cli.js +200 -195
  10. package/dist/access-cli.js.map +1 -1
  11. package/dist/access-coding-context-resolution.d.ts +2 -1
  12. package/dist/access-extraction-force-flush.d.ts +14 -12
  13. package/dist/access-extraction-force-flush.js +94 -91
  14. package/dist/access-health-types.d.ts +2 -1
  15. package/dist/access-http-briefing.d.ts +156 -0
  16. package/dist/access-http-briefing.js +233 -0
  17. package/dist/access-http-lcm-compaction.d.ts +14 -12
  18. package/dist/access-http-lifecycle-flush.d.ts +14 -12
  19. package/dist/access-http-offline-stream.d.ts +14 -12
  20. package/dist/access-http-query.d.ts +3 -2
  21. package/dist/access-http-query.js +96 -93
  22. package/dist/access-http.d.ts +15 -13
  23. package/dist/access-http.js +119 -114
  24. package/dist/access-identity-continuity-surface.d.ts +12 -10
  25. package/dist/access-identity-continuity-surface.js +94 -91
  26. package/dist/access-lcm-surface.d.ts +14 -12
  27. package/dist/access-lcm-surface.js +94 -91
  28. package/dist/access-mcp.d.ts +14 -12
  29. package/dist/access-mcp.js +105 -101
  30. package/dist/access-memory-search-fanout.d.ts +3 -2
  31. package/dist/{access-namespace-preflight-BMHhxoL9.d.ts → access-namespace-preflight-BsvmyENS.d.ts} +1 -1
  32. package/dist/access-namespace-preflight.d.ts +4 -3
  33. package/dist/access-namespace-preflight.js +94 -91
  34. package/dist/access-observe-transcript.d.ts +12 -10
  35. package/dist/access-observe-write-surface.d.ts +14 -12
  36. package/dist/access-observe-write-surface.js +94 -91
  37. package/dist/access-offline-manifest.d.ts +12 -10
  38. package/dist/access-offline-manifest.js +15 -15
  39. package/dist/access-operations-batch.js +99 -95
  40. package/dist/access-operations.d.ts +14 -12
  41. package/dist/access-operations.js +104 -100
  42. package/dist/access-recall-concurrency.d.ts +14 -12
  43. package/dist/access-recall-concurrency.js +94 -91
  44. package/dist/access-recall-response.d.ts +14 -12
  45. package/dist/access-recall-response.js +94 -91
  46. package/dist/access-recall-surface.d.ts +14 -12
  47. package/dist/access-recall-surface.js +94 -91
  48. package/dist/access-schema.js +8 -7
  49. package/dist/{access-service-BlsNXFwx.d.ts → access-service-DWdY9Mlk.d.ts} +7 -7
  50. package/dist/access-service-helpers.d.ts +14 -12
  51. package/dist/access-service.d.ts +14 -12
  52. package/dist/access-service.js +94 -91
  53. package/dist/access-surface-catalog.d.ts +14 -12
  54. package/dist/access-surface-catalog.js +97 -93
  55. package/dist/access-surface-catalog.js.map +1 -1
  56. package/dist/access-wearables-meetings-surface.d.ts +4 -3
  57. package/dist/action-confidence.d.ts +2 -1
  58. package/dist/active-memory-bridge.d.ts +2 -1
  59. package/dist/active-recall.d.ts +2 -1
  60. package/dist/active-recall.js +16 -13
  61. package/dist/active-recall.js.map +1 -1
  62. package/dist/adapters/index.js +7 -7
  63. package/dist/adapters/registry.js +3 -3
  64. package/dist/ambient-provenance.d.ts +2 -1
  65. package/dist/artifact-search.d.ts +2 -1
  66. package/dist/{auto-sync-GRUJFD2F.js → auto-sync-WNGG2GC2.js} +9 -9
  67. package/dist/behavior-learner.d.ts +2 -1
  68. package/dist/behavior-signals.d.ts +2 -1
  69. package/dist/bootstrap.d.ts +12 -10
  70. package/dist/briefing-window.d.ts +3 -2
  71. package/dist/briefing.d.ts +3 -2
  72. package/dist/briefing.js +36 -36
  73. package/dist/buffer-surprise-report.d.ts +2 -1
  74. package/dist/buffer-turn-helpers.d.ts +2 -1
  75. package/dist/buffer.d.ts +3 -2
  76. package/dist/buffer.js +13 -13
  77. package/dist/bulk-import/index.d.ts +4 -3
  78. package/dist/calibration.d.ts +2 -1
  79. package/dist/calibration.js +2 -1
  80. package/dist/calibration.js.map +1 -1
  81. package/dist/capabilities.d.ts +2 -1
  82. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  83. package/dist/{capsule-merge-SEHERWWP.js → capsule-merge-IPG4IOFP.js} +5 -5
  84. package/dist/{catalog-C1qHsGew.d.ts → catalog-CDZLyiXL.d.ts} +1 -1
  85. package/dist/causal-behavior.d.ts +2 -1
  86. package/dist/causal-behavior.js +4 -3
  87. package/dist/causal-behavior.js.map +1 -1
  88. package/dist/causal-chain.js +4 -3
  89. package/dist/causal-consolidation.d.ts +2 -1
  90. package/dist/causal-consolidation.js +42 -42
  91. package/dist/causal-retrieval.js +4 -3
  92. package/dist/causal-retrieval.js.map +1 -1
  93. package/dist/causal-trajectory-graph.d.ts +5 -2
  94. package/dist/causal-trajectory-graph.js +6 -2
  95. package/dist/causal-trajectory-graph.js.map +1 -1
  96. package/dist/causal-trajectory.js +3 -2
  97. package/dist/{chunk-KTVSPFCQ.js → chunk-22FVR2KE.js} +2 -2
  98. package/dist/{chunk-7Y5V3LAP.js → chunk-27QVNSQ3.js} +2 -2
  99. package/dist/{chunk-R7LY4YKF.js → chunk-2EKJDQZB.js} +2 -2
  100. package/dist/{chunk-FCATYKQA.js → chunk-2IOHTUP3.js} +263 -13
  101. package/dist/chunk-2IOHTUP3.js.map +1 -0
  102. package/dist/{chunk-HOUST5UX.js → chunk-2ITE4C2Z.js} +2 -2
  103. package/dist/{chunk-JOYC4RYC.js → chunk-2JVJ7UHC.js} +2 -2
  104. package/dist/{chunk-X2NFFBTO.js → chunk-2L5FSNPC.js} +7 -7
  105. package/dist/{chunk-DUAJKRR2.js → chunk-2SGLMP2E.js} +2 -2
  106. package/dist/{chunk-6FUMA6AA.js → chunk-2Z4GS5E6.js} +2 -2
  107. package/dist/{chunk-G6MXN2G5.js → chunk-37KUQPX4.js} +6 -6
  108. package/dist/{chunk-DDQQY2E3.js → chunk-3BTFBQLO.js} +7 -7
  109. package/dist/chunk-3BTFBQLO.js.map +1 -0
  110. package/dist/{chunk-UR6PBX2J.js → chunk-3K7V3HE6.js} +35 -60
  111. package/dist/chunk-3K7V3HE6.js.map +1 -0
  112. package/dist/{chunk-WKAXBXVA.js → chunk-3QQTXYZ6.js} +2 -2
  113. package/dist/{chunk-DJUKBGAD.js → chunk-46EST7JO.js} +5 -5
  114. package/dist/chunk-46EST7JO.js.map +1 -0
  115. package/dist/{chunk-4ZWCQJNM.js → chunk-46WM6JX2.js} +5 -5
  116. package/dist/{chunk-CASWJ2HM.js → chunk-46ZPIGWI.js} +3 -3
  117. package/dist/{chunk-HTIIXNJQ.js → chunk-4FIH6MPS.js} +6 -3
  118. package/dist/chunk-4FIH6MPS.js.map +1 -0
  119. package/dist/{chunk-MCA2X4WH.js → chunk-4IHBN6WU.js} +2 -2
  120. package/dist/{chunk-W7IGLX4G.js → chunk-4O6WRBGE.js} +7 -7
  121. package/dist/chunk-4O6WRBGE.js.map +1 -0
  122. package/dist/{chunk-FB7LAJQM.js → chunk-4TKJGOCJ.js} +2 -2
  123. package/dist/{chunk-H7BZBSP6.js → chunk-52II7PB6.js} +4 -4
  124. package/dist/{chunk-N4Y5T6VD.js → chunk-54WHLA65.js} +4 -4
  125. package/dist/chunk-56Y6EKZN.js +24 -0
  126. package/dist/chunk-56Y6EKZN.js.map +1 -0
  127. package/dist/{chunk-YVLENSNS.js → chunk-5ATKSPEQ.js} +2 -2
  128. package/dist/{chunk-OLT3YTDH.js → chunk-5FAGCOZD.js} +37 -24
  129. package/dist/chunk-5FAGCOZD.js.map +1 -0
  130. package/dist/{chunk-ZVZHG7AI.js → chunk-5UBH37SL.js} +3 -3
  131. package/dist/{chunk-N3WZU76A.js → chunk-66OJSCI6.js} +2 -2
  132. package/dist/{chunk-D35XLYQ7.js → chunk-6CVNSDCZ.js} +11 -11
  133. package/dist/{chunk-KA2HZCMG.js → chunk-6NXSYYGP.js} +2 -2
  134. package/dist/{chunk-2HIJHXB3.js → chunk-6WHJ2EAB.js} +2 -2
  135. package/dist/{chunk-ZZM476NV.js → chunk-6XL73HQ4.js} +4 -4
  136. package/dist/{chunk-EJ5RKUXW.js → chunk-AQ7SYDVO.js} +2 -2
  137. package/dist/{chunk-2Z3DG5CQ.js → chunk-B3O3IRZN.js} +2 -2
  138. package/dist/{chunk-P77QX3ID.js → chunk-B6O2YLUR.js} +21 -20
  139. package/dist/chunk-B6O2YLUR.js.map +1 -0
  140. package/dist/{chunk-RACZB5HT.js → chunk-BD7JTBYP.js} +4 -4
  141. package/dist/{chunk-I762GW7V.js → chunk-BLJWYCNO.js} +5 -5
  142. package/dist/{chunk-ACPCA4NO.js → chunk-BMWN7B3Y.js} +6 -6
  143. package/dist/chunk-BMWN7B3Y.js.map +1 -0
  144. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  145. package/dist/{chunk-KK66P5GQ.js → chunk-C553ZTLF.js} +46 -48
  146. package/dist/chunk-C553ZTLF.js.map +1 -0
  147. package/dist/{chunk-GCASGYIO.js → chunk-C7HJ3NEI.js} +2 -2
  148. package/dist/{chunk-C24UZSFW.js → chunk-CEH2AFXG.js} +6 -6
  149. package/dist/{chunk-WVGXCBOC.js → chunk-D5F7TKMH.js} +2 -2
  150. package/dist/chunk-DGS34QSY.js +141 -0
  151. package/dist/chunk-DGS34QSY.js.map +1 -0
  152. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  153. package/dist/{chunk-2OXIPF3A.js → chunk-DZD3WGCD.js} +4 -4
  154. package/dist/{chunk-UMEOXLIZ.js → chunk-E2P7TZTF.js} +5 -5
  155. package/dist/{chunk-6FC3IZ26.js → chunk-EBA5DA77.js} +2 -2
  156. package/dist/{chunk-N7JK2RKG.js → chunk-EOQ6FSQP.js} +2 -2
  157. package/dist/chunk-EUT2WCWS.js +54 -0
  158. package/dist/chunk-EUT2WCWS.js.map +1 -0
  159. package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
  160. package/dist/{chunk-XDMI5VKE.js → chunk-FVOP3NT7.js} +2 -2
  161. package/dist/{chunk-NRLELHAY.js → chunk-G7NYVKD6.js} +2 -2
  162. package/dist/{chunk-B3W7GWQB.js → chunk-GHTSNGBZ.js} +2 -2
  163. package/dist/chunk-GKCXTSFF.js +17 -0
  164. package/dist/chunk-GKCXTSFF.js.map +1 -0
  165. package/dist/{chunk-LUDBXTBJ.js → chunk-H272ZPQ3.js} +5 -5
  166. package/dist/{chunk-SN4JXNLL.js → chunk-H3TKENU4.js} +2 -2
  167. package/dist/{chunk-4HYNMLT6.js → chunk-H4SEGIZY.js} +2 -2
  168. package/dist/{chunk-ACZN5ZXD.js → chunk-H54VWRPS.js} +13 -13
  169. package/dist/{chunk-HTP6XRUI.js → chunk-HM7RHKS4.js} +2 -2
  170. package/dist/{chunk-Z3SQEEB6.js → chunk-HWLIMQE2.js} +2 -2
  171. package/dist/{chunk-NQFCLAYT.js → chunk-ICKJ52PE.js} +99 -322
  172. package/dist/chunk-ICKJ52PE.js.map +1 -0
  173. package/dist/{chunk-2QSZNTDO.js → chunk-JBPKEARU.js} +7 -7
  174. package/dist/{chunk-DK6GMO6D.js → chunk-JEC4DVM3.js} +16 -16
  175. package/dist/chunk-JEC4DVM3.js.map +1 -0
  176. package/dist/{chunk-ET2CNMLD.js → chunk-JN72EPOE.js} +2 -2
  177. package/dist/{chunk-U62OK7BB.js → chunk-JPKK466T.js} +188 -21
  178. package/dist/chunk-JPKK466T.js.map +1 -0
  179. package/dist/{chunk-JCCWJHOP.js → chunk-JYZSRNR7.js} +2 -2
  180. package/dist/{chunk-7D6HXODY.js → chunk-K7724CH2.js} +2 -2
  181. package/dist/{chunk-X33MJFD2.js → chunk-KAXCYM66.js} +3 -3
  182. package/dist/{chunk-7RRUHJPG.js → chunk-KB2G2I6Q.js} +3 -3
  183. package/dist/{chunk-ZXBTTMGZ.js → chunk-KEF46KL2.js} +5 -5
  184. package/dist/{chunk-5UZXUTVO.js → chunk-KNA3BXXL.js} +6 -2
  185. package/dist/chunk-KNA3BXXL.js.map +1 -0
  186. package/dist/{chunk-UWTDARPF.js → chunk-KTWG7CNY.js} +6 -6
  187. package/dist/{chunk-XQYTSZW3.js → chunk-L7Z57SID.js} +6 -6
  188. package/dist/{chunk-JMAG7WZ7.js → chunk-LO4UKPKX.js} +3 -3
  189. package/dist/{chunk-LDWIPYJ6.js → chunk-LS2FHUML.js} +3 -3
  190. package/dist/{chunk-GDB4J2H3.js → chunk-MPC7TYTZ.js} +2 -2
  191. package/dist/{chunk-2GF27PGH.js → chunk-MRPOZBJC.js} +3 -3
  192. package/dist/{chunk-BR3OOQZQ.js → chunk-MWN6QEI2.js} +2 -2
  193. package/dist/{chunk-NZGO2GKL.js → chunk-MY5EDR46.js} +4 -4
  194. package/dist/{chunk-LCMUZDBZ.js → chunk-N3ZOP7KC.js} +3 -3
  195. package/dist/{chunk-TVW4C7PV.js → chunk-NB3LRY4T.js} +6 -6
  196. package/dist/{chunk-QJCWK2A7.js → chunk-ND6IQGSZ.js} +2 -2
  197. package/dist/{chunk-NOB2T2FC.js → chunk-NHLLKEKK.js} +2 -2
  198. package/dist/{chunk-7GSSHAXC.js → chunk-NLYVH66G.js} +6 -6
  199. package/dist/chunk-NLYVH66G.js.map +1 -0
  200. package/dist/{chunk-EJIWBTVM.js → chunk-O6ZNNVSP.js} +2 -2
  201. package/dist/{chunk-AG46P24C.js → chunk-OB3XMWX5.js} +4 -4
  202. package/dist/{chunk-NYRB7BKY.js → chunk-OEYZXDQI.js} +6 -6
  203. package/dist/chunk-OEYZXDQI.js.map +1 -0
  204. package/dist/{chunk-46QMN7I7.js → chunk-PAZY2ZKP.js} +6 -6
  205. package/dist/{chunk-EF4JUM55.js → chunk-PX4UMA5Z.js} +2 -2
  206. package/dist/chunk-QLK3SL7Q.js +242 -0
  207. package/dist/chunk-QLK3SL7Q.js.map +1 -0
  208. package/dist/{chunk-GGYDJJBO.js → chunk-QOOBICJF.js} +5 -5
  209. package/dist/chunk-QOOBICJF.js.map +1 -0
  210. package/dist/{chunk-NNZFPYYX.js → chunk-R7QY5ZVB.js} +2 -2
  211. package/dist/{chunk-RO2X2EYM.js → chunk-R7RTXEYG.js} +2 -2
  212. package/dist/{chunk-3LJPSRAN.js → chunk-RBCQVOVJ.js} +3 -3
  213. package/dist/{chunk-N4F7ZSSG.js → chunk-RC5DXXWC.js} +2 -2
  214. package/dist/{chunk-VLAQV4HT.js → chunk-RJYJ7KR7.js} +1636 -611
  215. package/dist/chunk-RJYJ7KR7.js.map +1 -0
  216. package/dist/{chunk-5CF2R4NS.js → chunk-RKBLRTNT.js} +2 -2
  217. package/dist/{chunk-5QZR2RA3.js → chunk-ROBHL3GL.js} +2 -2
  218. package/dist/{chunk-D5ZNOKR7.js → chunk-S7T2TY65.js} +3 -3
  219. package/dist/{chunk-C2JCVZWX.js → chunk-SCXURCVT.js} +25 -13
  220. package/dist/chunk-SCXURCVT.js.map +1 -0
  221. package/dist/{chunk-3LADWWMA.js → chunk-SJDQ5RSN.js} +3 -3
  222. package/dist/{chunk-45XVII3J.js → chunk-SMWTZLHE.js} +99 -89
  223. package/dist/{chunk-45XVII3J.js.map → chunk-SMWTZLHE.js.map} +1 -1
  224. package/dist/{chunk-XOQGUGJL.js → chunk-SO7SV523.js} +1 -1
  225. package/dist/{chunk-XOQGUGJL.js.map → chunk-SO7SV523.js.map} +1 -1
  226. package/dist/{chunk-CHWUICVY.js → chunk-SV4Z2S67.js} +4 -4
  227. package/dist/{chunk-JHP45LO5.js → chunk-SVXJLDDC.js} +9 -7
  228. package/dist/{chunk-JHP45LO5.js.map → chunk-SVXJLDDC.js.map} +1 -1
  229. package/dist/{chunk-SEF4IOFE.js → chunk-SWIKABKI.js} +2 -2
  230. package/dist/{chunk-JRRQ747T.js → chunk-TBXAY2SS.js} +13 -13
  231. package/dist/{chunk-J6A3CX5N.js → chunk-TG3FAM2S.js} +33 -8
  232. package/dist/{chunk-J6A3CX5N.js.map → chunk-TG3FAM2S.js.map} +1 -1
  233. package/dist/{chunk-XZBXINXZ.js → chunk-TNSCIPBQ.js} +4 -4
  234. package/dist/{chunk-S37NN23M.js → chunk-TVEONGBU.js} +2 -2
  235. package/dist/{chunk-5RPMTFB6.js → chunk-TWF35IC6.js} +3 -3
  236. package/dist/{chunk-BZTJEILZ.js → chunk-U6N5IBVY.js} +2 -2
  237. package/dist/{chunk-7TUB6JWA.js → chunk-UCKYTA2T.js} +3 -3
  238. package/dist/{chunk-PPOT6SPR.js → chunk-UNNPNBR2.js} +11 -11
  239. package/dist/{chunk-KQAFEZQX.js → chunk-VDX2J7OX.js} +2 -2
  240. package/dist/{chunk-J2R275FN.js → chunk-VVX5PZFS.js} +4 -4
  241. package/dist/{chunk-ME35HVDJ.js → chunk-VYCOJKSX.js} +2 -2
  242. package/dist/{chunk-F5UWQ4LX.js → chunk-W24T5YMW.js} +2 -2
  243. package/dist/{chunk-HDQUQBPW.js → chunk-W3K3HITK.js} +2 -2
  244. package/dist/{chunk-GDASG7NC.js → chunk-W4F3C7N7.js} +2 -2
  245. package/dist/{chunk-LFK623SF.js → chunk-WJHGDE7X.js} +5 -5
  246. package/dist/{chunk-DP4EBV7C.js → chunk-WMLEPWMO.js} +16 -16
  247. package/dist/chunk-WMLEPWMO.js.map +1 -0
  248. package/dist/{chunk-3Q6RD76J.js → chunk-WQZZDN5M.js} +5 -5
  249. package/dist/{chunk-ZJWDWPX6.js → chunk-X5K5TAQZ.js} +4 -4
  250. package/dist/{chunk-ZL3XX5LW.js → chunk-XM24CDZX.js} +3 -3
  251. package/dist/{chunk-JTWZKNUH.js → chunk-XOVKXJEP.js} +3 -3
  252. package/dist/{chunk-OGTKQ5MJ.js → chunk-XSGUMQQQ.js} +62 -50
  253. package/dist/chunk-XSGUMQQQ.js.map +1 -0
  254. package/dist/{chunk-X5YYSAZX.js → chunk-XUE46UYW.js} +3 -3
  255. package/dist/{chunk-DJORULH3.js → chunk-YRLHEEQT.js} +2 -2
  256. package/dist/{chunk-TA7UZZMW.js → chunk-Z3O53WZR.js} +2 -2
  257. package/dist/{chunk-4LG4CPOC.js → chunk-Z6COGHHN.js} +2 -2
  258. package/dist/{chunk-RE3H6Y2X.js → chunk-ZIW5JVRM.js} +2 -2
  259. package/dist/{cli-BNtvR-nU.d.ts → cli-DD0P-lu8.d.ts} +6 -6
  260. package/dist/cli.d.ts +16 -14
  261. package/dist/cli.js +154 -149
  262. package/dist/coding/export-okf-codegraph.d.ts +2 -1
  263. package/dist/coding/export-okf-codegraph.js +37 -37
  264. package/dist/coding/pre-action-gate.d.ts +2 -1
  265. package/dist/coding/pre-action-gate.js +4 -3
  266. package/dist/commitment-ledger.js +3 -2
  267. package/dist/compounding/engine.d.ts +3 -2
  268. package/dist/compounding/engine.js +37 -37
  269. package/dist/compounding/preference-consolidator.d.ts +2 -1
  270. package/dist/compression-optimizer.d.ts +2 -1
  271. package/dist/config.d.ts +2 -1
  272. package/dist/config.js +16 -13
  273. package/dist/connectors/codex-materialize-runner.d.ts +2 -1
  274. package/dist/connectors/codex-materialize-runner.js +38 -38
  275. package/dist/connectors/codex-materialize.d.ts +2 -1
  276. package/dist/connectors/codex-materialize.js +4 -4
  277. package/dist/connectors/index.d.ts +2 -1
  278. package/dist/connectors/index.js +38 -38
  279. package/dist/consolidation-provenance-check.d.ts +3 -2
  280. package/dist/consolidation-provenance-check.js +4 -4
  281. package/dist/consolidation-undo.d.ts +3 -2
  282. package/dist/consolidation-undo.js +3 -3
  283. package/dist/contradiction/index.d.ts +4 -3
  284. package/dist/contradiction/index.js +9 -9
  285. package/dist/converge-config.d.ts +2 -1
  286. package/dist/convergence-refresh.d.ts +3 -2
  287. package/dist/convergence-refresh.js +38 -38
  288. package/dist/conversation-index/backend.d.ts +2 -1
  289. package/dist/conversation-index/chunker.d.ts +2 -1
  290. package/dist/conversation-index/faiss-adapter.d.ts +2 -1
  291. package/dist/conversation-index/indexer.d.ts +2 -1
  292. package/dist/conversation-index/search.d.ts +2 -1
  293. package/dist/corpus-watermark.d.ts +2 -1
  294. package/dist/corpus-watermark.js +38 -38
  295. package/dist/cross-lingual-recall.d.ts +2 -1
  296. package/dist/cue-anchors.js +4 -3
  297. package/dist/dashboard-runtime.js +2 -2
  298. package/dist/day-summary.d.ts +2 -1
  299. package/dist/deep-recall-http-glue.d.ts +14 -12
  300. package/dist/deep-recall-http-glue.js +9 -8
  301. package/dist/deep-recall-mcp-tools.d.ts +14 -12
  302. package/dist/deep-recall-policy-llm.d.ts +2 -1
  303. package/dist/deep-recall-seeds.d.ts +2 -1
  304. package/dist/deep-recall.js +2 -2
  305. package/dist/delinearize.d.ts +2 -1
  306. package/dist/dependency-propagation-config.d.ts +2 -1
  307. package/dist/{dependency-propagation-delivery-DjpUlhLi.d.ts → dependency-propagation-delivery-CQPCu0o5.d.ts} +1 -1
  308. package/dist/direct-answer-wiring.d.ts +2 -1
  309. package/dist/direct-answer.d.ts +2 -1
  310. package/dist/embedding-fallback.d.ts +2 -1
  311. package/dist/enrichment/index.d.ts +2 -1
  312. package/dist/entity-origin-fields.d.ts +2 -1
  313. package/dist/entity-retrieval.d.ts +3 -2
  314. package/dist/entity-retrieval.js +36 -36
  315. package/dist/entity-schema.d.ts +2 -1
  316. package/dist/episodic-context.d.ts +2 -1
  317. package/dist/eval-trajectory-contracts.d.ts +2 -1
  318. package/dist/eval-trajectory-store.d.ts +2 -1
  319. package/dist/eval-trajectory-store.js +4 -3
  320. package/dist/eval-trajectory.d.ts +2 -1
  321. package/dist/eval-trajectory.js +4 -3
  322. package/dist/evals.js +3 -2
  323. package/dist/event-order-recall.js +2 -2
  324. package/dist/explicit-capture.d.ts +12 -10
  325. package/dist/explicit-capture.js +10 -10
  326. package/dist/external-wiki-access.d.ts +14 -12
  327. package/dist/external-wiki-access.js +95 -92
  328. package/dist/external-wiki-collection-registration.d.ts +2 -1
  329. package/dist/external-wiki-collection.d.ts +2 -1
  330. package/dist/external-wiki-mcp-tools.d.ts +14 -12
  331. package/dist/extraction-error-classification.d.ts +2 -1
  332. package/dist/extraction-faithfulness.d.ts +2 -1
  333. package/dist/extraction-judge-telemetry.d.ts +2 -1
  334. package/dist/extraction-judge-training.d.ts +2 -1
  335. package/dist/extraction-judge.d.ts +2 -1
  336. package/dist/extraction-liveness.d.ts +2 -1
  337. package/dist/extraction-normalization.d.ts +2 -1
  338. package/dist/extraction-prompt.d.ts +2 -1
  339. package/dist/extraction-source-grounding-rules.d.ts +2 -1
  340. package/dist/extraction-source-grounding.d.ts +2 -1
  341. package/dist/extraction.d.ts +2 -1
  342. package/dist/extraction.js +43 -43
  343. package/dist/fallback-llm.d.ts +2 -1
  344. package/dist/{first-start-migration-KHIMCBIC.js → first-start-migration-RC345GPL.js} +6 -5
  345. package/dist/{first-start-migration-KHIMCBIC.js.map → first-start-migration-RC345GPL.js.map} +1 -1
  346. package/dist/{forget-2AE4MDK3.js → forget-SZ2BXDGF.js} +3 -3
  347. package/dist/{graph-444E-DrF.d.ts → graph-DRkl22KE.d.ts} +10 -12
  348. package/dist/graph-append-error.d.ts +40 -0
  349. package/dist/graph-append-error.js +8 -0
  350. package/dist/graph-dashboard-diff.d.ts +5 -2
  351. package/dist/graph-dashboard-key.d.ts +5 -2
  352. package/dist/graph-dashboard-parser.d.ts +5 -2
  353. package/dist/{graph-edge-decay-DGTBFALQ.js → graph-edge-decay-MKIRZ762.js} +10 -4
  354. package/dist/graph-edge-decay-MKIRZ762.js.map +1 -0
  355. package/dist/graph-edge-reinforcement.d.ts +5 -2
  356. package/dist/graph-jsonl.d.ts +82 -0
  357. package/dist/graph-jsonl.js +23 -0
  358. package/dist/graph-jsonl.js.map +1 -0
  359. package/dist/graph-path-reconstruction.d.ts +5 -2
  360. package/dist/graph-path-scoring.d.ts +5 -2
  361. package/dist/graph-snapshot.d.ts +5 -2
  362. package/dist/graph-snapshot.js +7 -3
  363. package/dist/graph-write-lock.d.ts +84 -0
  364. package/dist/graph-write-lock.js +15 -0
  365. package/dist/graph-write-lock.js.map +1 -0
  366. package/dist/graph.d.ts +5 -2
  367. package/dist/graph.js +10 -3
  368. package/dist/harmonic-construction.js +5 -4
  369. package/dist/harmonic-retrieval.js +5 -4
  370. package/dist/importance.d.ts +2 -1
  371. package/dist/importers/index.d.ts +2 -1
  372. package/dist/in-flight-reads.d.ts +2 -1
  373. package/dist/{index-CsUrdMyL.d.ts → index-C9VXenR8.d.ts} +2 -2
  374. package/dist/index.d.ts +39 -25
  375. package/dist/index.js +291 -284
  376. package/dist/intent.d.ts +2 -1
  377. package/dist/json-store.js +2 -1
  378. package/dist/lcm/engine.d.ts +2 -1
  379. package/dist/lcm/engine.js +3 -3
  380. package/dist/lcm/index.d.ts +2 -1
  381. package/dist/lcm/index.js +6 -6
  382. package/dist/lcm/tools.d.ts +2 -1
  383. package/dist/lifecycle.d.ts +2 -1
  384. package/dist/live-connectors-runner.d.ts +2 -1
  385. package/dist/live-connectors-runner.js +3 -2
  386. package/dist/local-llm.d.ts +2 -1
  387. package/dist/local-model-endpoint.d.ts +2 -1
  388. package/dist/location/index.d.ts +4 -3
  389. package/dist/location/index.js +39 -39
  390. package/dist/maintenance/memory-governance.d.ts +2 -1
  391. package/dist/maintenance/memory-governance.js +36 -36
  392. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
  393. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +36 -36
  394. package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
  395. package/dist/maintenance/rebuild-memory-projection.js +37 -37
  396. package/dist/{maintenance-D1GRGLTE.d.ts → maintenance-C14sorKa.d.ts} +3 -3
  397. package/dist/mcp-memory-inspector-app.d.ts +14 -12
  398. package/dist/memory-action-policy.d.ts +2 -1
  399. package/dist/memory-cache.d.ts +2 -1
  400. package/dist/memory-controller.d.ts +2 -1
  401. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  402. package/dist/memory-projection-mutations.js +3 -3
  403. package/dist/memory-projection-store.d.ts +2 -1
  404. package/dist/memory-provenance.d.ts +2 -1
  405. package/dist/memory-snapshot.d.ts +2 -1
  406. package/dist/memory-subject-cli.d.ts +14 -12
  407. package/dist/memory-subject.d.ts +14 -12
  408. package/dist/memory-subject.js +5 -5
  409. package/dist/memory-worth-outcomes.d.ts +3 -2
  410. package/dist/models-json.d.ts +2 -1
  411. package/dist/namespaces/migrate.d.ts +4 -3
  412. package/dist/namespaces/migrate.js +37 -37
  413. package/dist/namespaces/principal.d.ts +2 -1
  414. package/dist/namespaces/search.d.ts +2 -1
  415. package/dist/namespaces/search.js +11 -11
  416. package/dist/namespaces/storage.d.ts +4 -3
  417. package/dist/namespaces/storage.js +36 -36
  418. package/dist/native-knowledge.d.ts +2 -1
  419. package/dist/objective-state-writers.js +4 -3
  420. package/dist/objective-state.js +3 -2
  421. package/dist/offline-sync-file-io.js +4 -3
  422. package/dist/offline-sync-impression-drain.d.ts +2 -1
  423. package/dist/offline-sync-impression-drain.js +7 -7
  424. package/dist/offline-sync.js +5 -4
  425. package/dist/operator-doctor-corpus.d.ts +2 -1
  426. package/dist/operator-doctor-corpus.js +39 -39
  427. package/dist/operator-doctor-replica.d.ts +2 -1
  428. package/dist/operator-toolkit.d.ts +6 -4
  429. package/dist/operator-toolkit.js +61 -58
  430. package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
  431. package/dist/orchestration/maintenance.d.ts +5 -4
  432. package/dist/orchestration/maintenance.js +46 -46
  433. package/dist/{orchestrator-DeqaPGT5.d.ts → orchestrator-DgyvFfPR.d.ts} +9 -9
  434. package/dist/orchestrator.d.ts +12 -10
  435. package/dist/orchestrator.js +201 -196
  436. package/dist/page-versioning.d.ts +73 -4
  437. package/dist/page-versioning.js +11 -3
  438. package/dist/patterns-cli.d.ts +2 -1
  439. package/dist/{pipeline-umUzU0D1.d.ts → pipeline-DRUwHb1X.d.ts} +1 -1
  440. package/dist/policy-runtime.d.ts +2 -1
  441. package/dist/proactive-contention.d.ts +2 -1
  442. package/dist/provenance.d.ts +2 -1
  443. package/dist/{public-http-Bevrjll9.d.ts → public-http-C4i8Opxc.d.ts} +1 -1
  444. package/dist/{purge-OP6BEDFY.js → purge-TZKRE6ZQ.js} +5 -5
  445. package/dist/purge-TZKRE6ZQ.js.map +1 -0
  446. package/dist/{qmd-BasT78PP.d.ts → qmd-BVWlg1YS.d.ts} +1 -1
  447. package/dist/qmd-preflight.d.ts +3 -2
  448. package/dist/qmd-recall-cache.d.ts +2 -1
  449. package/dist/qmd.d.ts +3 -2
  450. package/dist/qmd.js +4 -4
  451. package/dist/recall-concurrency-config.d.ts +2 -1
  452. package/dist/recall-disclosure-escalation.d.ts +2 -1
  453. package/dist/recall-explain-renderer.d.ts +2 -1
  454. package/dist/recall-explain-renderer.js +3 -3
  455. package/dist/recall-memory-map.d.ts +2 -1
  456. package/dist/recall-navigate-access.d.ts +2 -1
  457. package/dist/recall-navigate-access.js +2 -2
  458. package/dist/recall-navigate-disclosure.d.ts +2 -1
  459. package/dist/recall-navigate-disclosure.js +1 -1
  460. package/dist/recall-navigate.d.ts +2 -1
  461. package/dist/recall-navigate.js +2 -2
  462. package/dist/recall-planner-llm.d.ts +2 -1
  463. package/dist/recall-state.d.ts +2 -1
  464. package/dist/recall-state.js +3 -3
  465. package/dist/recall-tag-filter.d.ts +2 -1
  466. package/dist/recall-timings.d.ts +2 -1
  467. package/dist/recall-xray-cli.d.ts +2 -1
  468. package/dist/recall-xray-cli.js +4 -4
  469. package/dist/recall-xray-renderer.d.ts +2 -1
  470. package/dist/recall-xray-renderer.js +3 -3
  471. package/dist/recall-xray.d.ts +2 -1
  472. package/dist/recall-xray.js +2 -2
  473. package/dist/reconcile/cursor.d.ts +2 -1
  474. package/dist/reconcile/manifest.d.ts +2 -1
  475. package/dist/reconcile/manifest.js +7 -7
  476. package/dist/reconcile/plan.d.ts +2 -1
  477. package/dist/replay/normalizers/chatgpt.d.ts +2 -1
  478. package/dist/replay/normalizers/claude.d.ts +2 -1
  479. package/dist/replay/normalizers/openclaw.d.ts +2 -1
  480. package/dist/replay/normalizers/shared.d.ts +2 -1
  481. package/dist/replay/runner.d.ts +2 -1
  482. package/dist/replay/types.d.ts +2 -1
  483. package/dist/replica-divergence.d.ts +2 -1
  484. package/dist/replica-peers-config.d.ts +2 -1
  485. package/dist/{resolution-4DLI3IOR.js → resolution-VKATP2HT.js} +10 -10
  486. package/dist/resolution-VKATP2HT.js.map +1 -0
  487. package/dist/resolve-auth-token.d.ts +2 -1
  488. package/dist/resume-bundles.js +21 -18
  489. package/dist/retrieval-agents.d.ts +3 -2
  490. package/dist/retrieval-tiers.d.ts +2 -1
  491. package/dist/routing/engine.d.ts +2 -1
  492. package/dist/routing/store.d.ts +2 -1
  493. package/dist/salvage-envelope.d.ts +2 -1
  494. package/dist/salvage-envelope.js +7 -7
  495. package/dist/{scope-profiles-DXYzyOXW.d.ts → scope-profiles-Vl00B1KU.d.ts} +1 -1
  496. package/dist/search/document-scanner.js +3 -3
  497. package/dist/search/embed-helper.d.ts +2 -1
  498. package/dist/search/factory.d.ts +2 -1
  499. package/dist/search/factory.js +10 -10
  500. package/dist/search/index.d.ts +2 -1
  501. package/dist/search/index.js +16 -16
  502. package/dist/search/lancedb-backend.d.ts +2 -1
  503. package/dist/search/lancedb-backend.js +4 -4
  504. package/dist/search/meilisearch-backend.d.ts +2 -1
  505. package/dist/search/meilisearch-backend.js +4 -4
  506. package/dist/search/noop-backend.d.ts +2 -1
  507. package/dist/search/orama-backend.d.ts +2 -1
  508. package/dist/search/orama-backend.js +4 -4
  509. package/dist/search/port.d.ts +2 -1
  510. package/dist/search/remote-backend.d.ts +2 -1
  511. package/dist/secure-store/index.js +3 -3
  512. package/dist/{semantic-consolidation-CqDeaY0U.d.ts → semantic-consolidation-BC9-GFuT.d.ts} +1 -1
  513. package/dist/semantic-consolidation.d.ts +3 -2
  514. package/dist/semantic-consolidation.js +39 -39
  515. package/dist/semantic-merge-config.d.ts +17 -0
  516. package/dist/semantic-merge-config.js +1 -0
  517. package/dist/semantic-merge-config.js.map +1 -0
  518. package/dist/semantic-rule-promotion.js +36 -36
  519. package/dist/semantic-rule-verifier.d.ts +2 -1
  520. package/dist/semantic-rule-verifier.js +36 -36
  521. package/dist/{service-BKD-DVYZ.d.ts → service-BOy6dHfc.d.ts} +2 -2
  522. package/dist/session-observer-bands.d.ts +2 -1
  523. package/dist/session-observer-state.d.ts +2 -1
  524. package/dist/shared-context/manager.d.ts +2 -1
  525. package/dist/signal.d.ts +2 -1
  526. package/dist/source-agent-qualifier.d.ts +2 -1
  527. package/dist/source-agent-qualifier.js +42 -42
  528. package/dist/source-attribution.d.ts +18 -6
  529. package/dist/source-attribution.js +3 -1
  530. package/dist/standup/build.js +36 -36
  531. package/dist/{storage-BcFd1lN_.d.ts → storage-BLJRnFi6.d.ts} +15 -8
  532. package/dist/storage.d.ts +3 -2
  533. package/dist/storage.js +35 -35
  534. package/dist/subject-config.d.ts +2 -1
  535. package/dist/subject-config.js +6 -6
  536. package/dist/summarizer.d.ts +2 -1
  537. package/dist/summary-snapshot.d.ts +2 -1
  538. package/dist/support-passport/index.d.ts +17 -15
  539. package/dist/support-passport/index.js +97 -94
  540. package/dist/temporal-supersession.d.ts +3 -2
  541. package/dist/temporal-timeline-recall.d.ts +2 -1
  542. package/dist/temporal-validity.d.ts +2 -1
  543. package/dist/threading.d.ts +2 -1
  544. package/dist/tier-migration.d.ts +3 -2
  545. package/dist/tier-routing.d.ts +2 -1
  546. package/dist/{tier-stats-2TOW3QNL.js → tier-stats-KA6OZX2C.js} +6 -5
  547. package/dist/{tier-stats-2TOW3QNL.js.map → tier-stats-KA6OZX2C.js.map} +1 -1
  548. package/dist/topics.d.ts +2 -1
  549. package/dist/transcript.d.ts +2 -1
  550. package/dist/transfer/backup.js +2 -2
  551. package/dist/transfer/capsule-export.js +2 -2
  552. package/dist/transfer/capsule-import.js +6 -6
  553. package/dist/transfer/export-okf.d.ts +2 -1
  554. package/dist/transfer/export-okf.js +37 -37
  555. package/dist/trust-score-stage.d.ts +2 -1
  556. package/dist/trust-score.d.ts +2 -1
  557. package/dist/trust-zones.js +3 -2
  558. package/dist/{types-BRg3tMyp.d.ts → types-YY-eKKU7.d.ts} +3 -0
  559. package/dist/types.d.ts +2 -1
  560. package/dist/types.js +1 -1
  561. package/dist/utility-learner.js +4 -3
  562. package/dist/utility-runtime.d.ts +2 -1
  563. package/dist/utility-runtime.js +5 -4
  564. package/dist/utility-telemetry.js +3 -2
  565. package/dist/verified-recall.js +36 -36
  566. package/dist/who-knows-cli.d.ts +14 -12
  567. package/dist/who-knows-cli.js +37 -37
  568. package/dist/who-knows.d.ts +14 -12
  569. package/dist/who-knows.js +36 -36
  570. package/dist/work/board.js +3 -3
  571. package/dist/work/storage.js +2 -2
  572. package/dist/work-product-ledger.js +3 -2
  573. package/dist/write-envelope.d.ts +2 -1
  574. package/dist/write-envelope.js +6 -6
  575. package/package.json +2 -2
  576. package/src/abstraction-nodes.ts +1 -4
  577. package/src/access-http-briefing.ts +35 -0
  578. package/src/access-http.test.ts +76 -0
  579. package/src/access-http.ts +20 -23
  580. package/src/access-surface-catalog.test.ts +9 -0
  581. package/src/access-surface-catalog.ts +1 -0
  582. package/src/binary-lifecycle/backend.ts +2 -1
  583. package/src/config.ts +2 -0
  584. package/src/connectors/live/github.ts +10 -17
  585. package/src/connectors/live/gmail.ts +8 -19
  586. package/src/connectors/live/google-drive.ts +6 -13
  587. package/src/connectors/live/notion.ts +11 -21
  588. package/src/cue-anchors.ts +1 -6
  589. package/src/dedup/connector-scope.ts +39 -0
  590. package/src/dedup/merge-content.test.ts +21 -0
  591. package/src/dedup/merge-content.ts +21 -7
  592. package/src/dedup/merge-judge.ts +146 -0
  593. package/src/dedup/merge.test.ts +3542 -0
  594. package/src/dedup/merge.ts +384 -0
  595. package/src/dedup/novelty-gate.ts +12 -10
  596. package/src/dedup/semantic.ts +7 -9
  597. package/src/graph-append-error.ts +28 -0
  598. package/src/graph-jsonl.ts +267 -0
  599. package/src/graph-write-lock.test.ts +228 -0
  600. package/src/graph-write-lock.ts +132 -0
  601. package/src/graph.ts +49 -45
  602. package/src/harmonic-construction.test.ts +329 -0
  603. package/src/json-store.ts +17 -20
  604. package/src/live-connectors-runner.ts +2 -1
  605. package/src/location/store.ts +1 -4
  606. package/src/maintenance/graph-edge-decay.ts +24 -13
  607. package/src/maintenance/purge.ts +2 -5
  608. package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +3 -6
  609. package/src/maintenance/rebuild-memory-projection.ts +2 -5
  610. package/src/namespaces/catalog.ts +1 -9
  611. package/src/offline-sync-file-io.test.ts +39 -0
  612. package/src/offline-sync-file-io.ts +3 -7
  613. package/src/orchestration/contradiction-localization.integration.test.ts +35 -0
  614. package/src/orchestration/extraction-anchor-snapshot.ts +6 -1
  615. package/src/orchestration/extraction-persist-deps.ts +2 -1
  616. package/src/orchestration/extraction-persist-profile-promotion.test.ts +456 -0
  617. package/src/orchestration/extraction-persist-promotion.test.ts +534 -0
  618. package/src/orchestration/extraction-persist-promotion.ts +387 -1
  619. package/src/orchestration/extraction-persist.ts +95 -94
  620. package/src/orchestration/harmonic-construction-persist.test.ts +69 -0
  621. package/src/orchestration/harmonic-construction-persist.ts +55 -0
  622. package/src/orchestration/persistence-index.ts +35 -7
  623. package/src/orchestration/semantic-merge-commit-effects.ts +354 -0
  624. package/src/orchestration/semantic-merge-persist.ts +1095 -0
  625. package/src/orchestration/semantic-merge-promotion-payload.ts +161 -0
  626. package/src/orchestrator.ts +2 -2
  627. package/src/page-versioning.ts +396 -22
  628. package/src/procedural/procedure-miner.ts +1 -9
  629. package/src/search/document-scanner.ts +3 -6
  630. package/src/semantic-merge-config.ts +16 -0
  631. package/src/semantic-rule-promotion.ts +1 -4
  632. package/src/source-attribution-roundtrip.test.ts +21 -0
  633. package/src/source-attribution.ts +57 -17
  634. package/src/storage-contract/versioning.test.ts +500 -1
  635. package/src/storage.ts +30 -30
  636. package/src/testing/subjects/graph-edge-decay.test.ts +163 -0
  637. package/src/testing/subjects/semantic-merge-lifecycle.test.ts +1175 -0
  638. package/src/types.ts +2 -0
  639. package/src/utils/errno.test.ts +31 -0
  640. package/src/utils/errno.ts +5 -0
  641. package/src/wearables/index.ts +1 -0
  642. package/src/wearables/registry.ts +23 -0
  643. package/dist/chunk-5UZXUTVO.js.map +0 -1
  644. package/dist/chunk-7GSSHAXC.js.map +0 -1
  645. package/dist/chunk-ACPCA4NO.js.map +0 -1
  646. package/dist/chunk-C2JCVZWX.js.map +0 -1
  647. package/dist/chunk-DDQQY2E3.js.map +0 -1
  648. package/dist/chunk-DJUKBGAD.js.map +0 -1
  649. package/dist/chunk-DK6GMO6D.js.map +0 -1
  650. package/dist/chunk-DP4EBV7C.js.map +0 -1
  651. package/dist/chunk-FCATYKQA.js.map +0 -1
  652. package/dist/chunk-GGYDJJBO.js.map +0 -1
  653. package/dist/chunk-HTIIXNJQ.js.map +0 -1
  654. package/dist/chunk-KK66P5GQ.js.map +0 -1
  655. package/dist/chunk-NQFCLAYT.js.map +0 -1
  656. package/dist/chunk-NYRB7BKY.js.map +0 -1
  657. package/dist/chunk-OGTKQ5MJ.js.map +0 -1
  658. package/dist/chunk-OLT3YTDH.js.map +0 -1
  659. package/dist/chunk-P77QX3ID.js.map +0 -1
  660. package/dist/chunk-U62OK7BB.js.map +0 -1
  661. package/dist/chunk-UR6PBX2J.js.map +0 -1
  662. package/dist/chunk-VLAQV4HT.js.map +0 -1
  663. package/dist/chunk-W7IGLX4G.js.map +0 -1
  664. package/dist/purge-OP6BEDFY.js.map +0 -1
  665. /package/dist/{capsule-crypto-7FJQINUR.js.map → access-http-briefing.js.map} +0 -0
  666. /package/dist/{auto-sync-GRUJFD2F.js.map → auto-sync-WNGG2GC2.js.map} +0 -0
  667. /package/dist/{graph-edge-decay-DGTBFALQ.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
  668. /package/dist/{capsule-merge-SEHERWWP.js.map → capsule-merge-IPG4IOFP.js.map} +0 -0
  669. /package/dist/{chunk-KTVSPFCQ.js.map → chunk-22FVR2KE.js.map} +0 -0
  670. /package/dist/{chunk-7Y5V3LAP.js.map → chunk-27QVNSQ3.js.map} +0 -0
  671. /package/dist/{chunk-R7LY4YKF.js.map → chunk-2EKJDQZB.js.map} +0 -0
  672. /package/dist/{chunk-HOUST5UX.js.map → chunk-2ITE4C2Z.js.map} +0 -0
  673. /package/dist/{chunk-JOYC4RYC.js.map → chunk-2JVJ7UHC.js.map} +0 -0
  674. /package/dist/{chunk-X2NFFBTO.js.map → chunk-2L5FSNPC.js.map} +0 -0
  675. /package/dist/{chunk-DUAJKRR2.js.map → chunk-2SGLMP2E.js.map} +0 -0
  676. /package/dist/{chunk-6FUMA6AA.js.map → chunk-2Z4GS5E6.js.map} +0 -0
  677. /package/dist/{chunk-G6MXN2G5.js.map → chunk-37KUQPX4.js.map} +0 -0
  678. /package/dist/{chunk-WKAXBXVA.js.map → chunk-3QQTXYZ6.js.map} +0 -0
  679. /package/dist/{chunk-4ZWCQJNM.js.map → chunk-46WM6JX2.js.map} +0 -0
  680. /package/dist/{chunk-CASWJ2HM.js.map → chunk-46ZPIGWI.js.map} +0 -0
  681. /package/dist/{chunk-MCA2X4WH.js.map → chunk-4IHBN6WU.js.map} +0 -0
  682. /package/dist/{chunk-FB7LAJQM.js.map → chunk-4TKJGOCJ.js.map} +0 -0
  683. /package/dist/{chunk-H7BZBSP6.js.map → chunk-52II7PB6.js.map} +0 -0
  684. /package/dist/{chunk-N4Y5T6VD.js.map → chunk-54WHLA65.js.map} +0 -0
  685. /package/dist/{chunk-YVLENSNS.js.map → chunk-5ATKSPEQ.js.map} +0 -0
  686. /package/dist/{chunk-ZVZHG7AI.js.map → chunk-5UBH37SL.js.map} +0 -0
  687. /package/dist/{chunk-N3WZU76A.js.map → chunk-66OJSCI6.js.map} +0 -0
  688. /package/dist/{chunk-D35XLYQ7.js.map → chunk-6CVNSDCZ.js.map} +0 -0
  689. /package/dist/{chunk-KA2HZCMG.js.map → chunk-6NXSYYGP.js.map} +0 -0
  690. /package/dist/{chunk-2HIJHXB3.js.map → chunk-6WHJ2EAB.js.map} +0 -0
  691. /package/dist/{chunk-ZZM476NV.js.map → chunk-6XL73HQ4.js.map} +0 -0
  692. /package/dist/{chunk-EJ5RKUXW.js.map → chunk-AQ7SYDVO.js.map} +0 -0
  693. /package/dist/{chunk-2Z3DG5CQ.js.map → chunk-B3O3IRZN.js.map} +0 -0
  694. /package/dist/{chunk-RACZB5HT.js.map → chunk-BD7JTBYP.js.map} +0 -0
  695. /package/dist/{chunk-I762GW7V.js.map → chunk-BLJWYCNO.js.map} +0 -0
  696. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  697. /package/dist/{chunk-GCASGYIO.js.map → chunk-C7HJ3NEI.js.map} +0 -0
  698. /package/dist/{chunk-C24UZSFW.js.map → chunk-CEH2AFXG.js.map} +0 -0
  699. /package/dist/{chunk-WVGXCBOC.js.map → chunk-D5F7TKMH.js.map} +0 -0
  700. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  701. /package/dist/{chunk-2OXIPF3A.js.map → chunk-DZD3WGCD.js.map} +0 -0
  702. /package/dist/{chunk-UMEOXLIZ.js.map → chunk-E2P7TZTF.js.map} +0 -0
  703. /package/dist/{chunk-6FC3IZ26.js.map → chunk-EBA5DA77.js.map} +0 -0
  704. /package/dist/{chunk-N7JK2RKG.js.map → chunk-EOQ6FSQP.js.map} +0 -0
  705. /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
  706. /package/dist/{chunk-XDMI5VKE.js.map → chunk-FVOP3NT7.js.map} +0 -0
  707. /package/dist/{chunk-NRLELHAY.js.map → chunk-G7NYVKD6.js.map} +0 -0
  708. /package/dist/{chunk-B3W7GWQB.js.map → chunk-GHTSNGBZ.js.map} +0 -0
  709. /package/dist/{chunk-LUDBXTBJ.js.map → chunk-H272ZPQ3.js.map} +0 -0
  710. /package/dist/{chunk-SN4JXNLL.js.map → chunk-H3TKENU4.js.map} +0 -0
  711. /package/dist/{chunk-4HYNMLT6.js.map → chunk-H4SEGIZY.js.map} +0 -0
  712. /package/dist/{chunk-ACZN5ZXD.js.map → chunk-H54VWRPS.js.map} +0 -0
  713. /package/dist/{chunk-HTP6XRUI.js.map → chunk-HM7RHKS4.js.map} +0 -0
  714. /package/dist/{chunk-Z3SQEEB6.js.map → chunk-HWLIMQE2.js.map} +0 -0
  715. /package/dist/{chunk-2QSZNTDO.js.map → chunk-JBPKEARU.js.map} +0 -0
  716. /package/dist/{chunk-ET2CNMLD.js.map → chunk-JN72EPOE.js.map} +0 -0
  717. /package/dist/{chunk-JCCWJHOP.js.map → chunk-JYZSRNR7.js.map} +0 -0
  718. /package/dist/{chunk-7D6HXODY.js.map → chunk-K7724CH2.js.map} +0 -0
  719. /package/dist/{chunk-X33MJFD2.js.map → chunk-KAXCYM66.js.map} +0 -0
  720. /package/dist/{chunk-7RRUHJPG.js.map → chunk-KB2G2I6Q.js.map} +0 -0
  721. /package/dist/{chunk-ZXBTTMGZ.js.map → chunk-KEF46KL2.js.map} +0 -0
  722. /package/dist/{chunk-UWTDARPF.js.map → chunk-KTWG7CNY.js.map} +0 -0
  723. /package/dist/{chunk-XQYTSZW3.js.map → chunk-L7Z57SID.js.map} +0 -0
  724. /package/dist/{chunk-JMAG7WZ7.js.map → chunk-LO4UKPKX.js.map} +0 -0
  725. /package/dist/{chunk-LDWIPYJ6.js.map → chunk-LS2FHUML.js.map} +0 -0
  726. /package/dist/{chunk-GDB4J2H3.js.map → chunk-MPC7TYTZ.js.map} +0 -0
  727. /package/dist/{chunk-2GF27PGH.js.map → chunk-MRPOZBJC.js.map} +0 -0
  728. /package/dist/{chunk-BR3OOQZQ.js.map → chunk-MWN6QEI2.js.map} +0 -0
  729. /package/dist/{chunk-NZGO2GKL.js.map → chunk-MY5EDR46.js.map} +0 -0
  730. /package/dist/{chunk-LCMUZDBZ.js.map → chunk-N3ZOP7KC.js.map} +0 -0
  731. /package/dist/{chunk-TVW4C7PV.js.map → chunk-NB3LRY4T.js.map} +0 -0
  732. /package/dist/{chunk-QJCWK2A7.js.map → chunk-ND6IQGSZ.js.map} +0 -0
  733. /package/dist/{chunk-NOB2T2FC.js.map → chunk-NHLLKEKK.js.map} +0 -0
  734. /package/dist/{chunk-EJIWBTVM.js.map → chunk-O6ZNNVSP.js.map} +0 -0
  735. /package/dist/{chunk-AG46P24C.js.map → chunk-OB3XMWX5.js.map} +0 -0
  736. /package/dist/{chunk-46QMN7I7.js.map → chunk-PAZY2ZKP.js.map} +0 -0
  737. /package/dist/{chunk-EF4JUM55.js.map → chunk-PX4UMA5Z.js.map} +0 -0
  738. /package/dist/{chunk-NNZFPYYX.js.map → chunk-R7QY5ZVB.js.map} +0 -0
  739. /package/dist/{chunk-RO2X2EYM.js.map → chunk-R7RTXEYG.js.map} +0 -0
  740. /package/dist/{chunk-3LJPSRAN.js.map → chunk-RBCQVOVJ.js.map} +0 -0
  741. /package/dist/{chunk-N4F7ZSSG.js.map → chunk-RC5DXXWC.js.map} +0 -0
  742. /package/dist/{chunk-5CF2R4NS.js.map → chunk-RKBLRTNT.js.map} +0 -0
  743. /package/dist/{chunk-5QZR2RA3.js.map → chunk-ROBHL3GL.js.map} +0 -0
  744. /package/dist/{chunk-D5ZNOKR7.js.map → chunk-S7T2TY65.js.map} +0 -0
  745. /package/dist/{chunk-3LADWWMA.js.map → chunk-SJDQ5RSN.js.map} +0 -0
  746. /package/dist/{chunk-CHWUICVY.js.map → chunk-SV4Z2S67.js.map} +0 -0
  747. /package/dist/{chunk-SEF4IOFE.js.map → chunk-SWIKABKI.js.map} +0 -0
  748. /package/dist/{chunk-JRRQ747T.js.map → chunk-TBXAY2SS.js.map} +0 -0
  749. /package/dist/{chunk-XZBXINXZ.js.map → chunk-TNSCIPBQ.js.map} +0 -0
  750. /package/dist/{chunk-S37NN23M.js.map → chunk-TVEONGBU.js.map} +0 -0
  751. /package/dist/{chunk-5RPMTFB6.js.map → chunk-TWF35IC6.js.map} +0 -0
  752. /package/dist/{chunk-BZTJEILZ.js.map → chunk-U6N5IBVY.js.map} +0 -0
  753. /package/dist/{chunk-7TUB6JWA.js.map → chunk-UCKYTA2T.js.map} +0 -0
  754. /package/dist/{chunk-PPOT6SPR.js.map → chunk-UNNPNBR2.js.map} +0 -0
  755. /package/dist/{chunk-KQAFEZQX.js.map → chunk-VDX2J7OX.js.map} +0 -0
  756. /package/dist/{chunk-J2R275FN.js.map → chunk-VVX5PZFS.js.map} +0 -0
  757. /package/dist/{chunk-ME35HVDJ.js.map → chunk-VYCOJKSX.js.map} +0 -0
  758. /package/dist/{chunk-F5UWQ4LX.js.map → chunk-W24T5YMW.js.map} +0 -0
  759. /package/dist/{chunk-HDQUQBPW.js.map → chunk-W3K3HITK.js.map} +0 -0
  760. /package/dist/{chunk-GDASG7NC.js.map → chunk-W4F3C7N7.js.map} +0 -0
  761. /package/dist/{chunk-LFK623SF.js.map → chunk-WJHGDE7X.js.map} +0 -0
  762. /package/dist/{chunk-3Q6RD76J.js.map → chunk-WQZZDN5M.js.map} +0 -0
  763. /package/dist/{chunk-ZJWDWPX6.js.map → chunk-X5K5TAQZ.js.map} +0 -0
  764. /package/dist/{chunk-ZL3XX5LW.js.map → chunk-XM24CDZX.js.map} +0 -0
  765. /package/dist/{chunk-JTWZKNUH.js.map → chunk-XOVKXJEP.js.map} +0 -0
  766. /package/dist/{chunk-X5YYSAZX.js.map → chunk-XUE46UYW.js.map} +0 -0
  767. /package/dist/{chunk-DJORULH3.js.map → chunk-YRLHEEQT.js.map} +0 -0
  768. /package/dist/{chunk-TA7UZZMW.js.map → chunk-Z3O53WZR.js.map} +0 -0
  769. /package/dist/{chunk-4LG4CPOC.js.map → chunk-Z6COGHHN.js.map} +0 -0
  770. /package/dist/{chunk-RE3H6Y2X.js.map → chunk-ZIW5JVRM.js.map} +0 -0
  771. /package/dist/{forget-2AE4MDK3.js.map → forget-SZ2BXDGF.js.map} +0 -0
  772. /package/dist/{resolution-4DLI3IOR.js.map → graph-append-error.js.map} +0 -0
@@ -2,6 +2,7 @@ import { mkdir, unlink, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { listJsonFilesStrict, readJsonFile, withJsonStoreMutationLock, writeJsonFileAtomic } from "./json-store.js";
4
4
  import { compareDeterministicStrings, mergeSortedUniqueStrings } from "./deterministic-order.js";
5
+ import { isNotFoundError } from "./utils/errno.js";
5
6
  import {
6
7
  assertIsoRecordedAt,
7
8
  assertSafePathSegment,
@@ -12,10 +13,6 @@ import {
12
13
  validateStringRecord,
13
14
  } from "./store-contract.js";
14
15
 
15
- function isNotFoundError(error: unknown): boolean {
16
- return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
17
- }
18
-
19
16
  export type AbstractionNodeKind = "episode" | "topic" | "project" | "workflow" | "constraint";
20
17
  export type AbstractionLevel = "micro" | "meso" | "macro";
21
18
 
@@ -0,0 +1,35 @@
1
+ import { getOperation } from "./access-boundary.js";
2
+ import { EngramAccessInputError, type EngramAccessService } from "./access-service.js";
3
+
4
+ type JsonResponder = (status: number, payload: unknown) => void;
5
+
6
+ export interface BriefingHttpOptions {
7
+ /** Request body already run through the namespace gate (gatedBodyNamespace). */
8
+ gatedBody: Record<string, unknown>;
9
+ service: EngramAccessService;
10
+ principal: string | undefined;
11
+ respondJson: JsonResponder;
12
+ }
13
+
14
+ /**
15
+ * POST /engram/v1/briefing — daily briefing over the access HTTP boundary.
16
+ *
17
+ * Dispatches the registered `briefing` boundary operation (the one the MCP
18
+ * tool uses) so schema validation, namespace gating, and principal
19
+ * propagation reach every HTTP briefing call — the same shape as the
20
+ * coding/delta read dispatch. Pure read: nothing persists, so no
21
+ * write-quota accounting. The operation result already carries both
22
+ * renderings (markdown + json sections) in one response, letting thin
23
+ * clients render without a CLI subprocess.
24
+ */
25
+ export async function respondBriefingHttp(options: BriefingHttpOptions): Promise<void> {
26
+ const op = getOperation("briefing");
27
+ if (!op) {
28
+ throw new EngramAccessInputError("access-boundary: operation not registered: briefing");
29
+ }
30
+ const output = (await op.run(options.gatedBody, {
31
+ service: options.service,
32
+ authenticatedPrincipal: options.principal,
33
+ })) as { result: unknown };
34
+ options.respondJson(200, output.result);
35
+ }
@@ -810,6 +810,82 @@ test("HTTP coding-context endpoint accepts projectTag shorthand", async () => {
810
810
  }
811
811
  });
812
812
 
813
+ test("HTTP briefing endpoint dispatches through the briefing operation", async () => {
814
+ const calls: unknown[] = [];
815
+ const service = {
816
+ briefing: async (request: unknown) => {
817
+ calls.push(request);
818
+ return {
819
+ format: "markdown",
820
+ window: { from: "2026-08-21", to: "2026-08-22" },
821
+ namespace: "team",
822
+ markdown: "# Briefing",
823
+ json: { sections: { activeThreads: [] } },
824
+ };
825
+ },
826
+ } as unknown as EngramAccessService;
827
+ const server = new EngramAccessHttpServer({
828
+ service,
829
+ port: 0,
830
+ authToken: "test-token",
831
+ principal: "panel-user",
832
+ adminConsoleEnabled: false,
833
+ });
834
+
835
+ const status = await server.start();
836
+ try {
837
+ const response = await fetch(
838
+ `http://127.0.0.1:${status.port}/engram/v1/briefing`,
839
+ {
840
+ method: "POST",
841
+ headers: {
842
+ authorization: "Bearer test-token",
843
+ "content-type": "application/json",
844
+ },
845
+ body: JSON.stringify({
846
+ since: "24h",
847
+ namespace: "team",
848
+ format: "markdown",
849
+ maxFollowups: 5,
850
+ }),
851
+ },
852
+ );
853
+
854
+ assert.equal(response.status, 200);
855
+ const body = (await response.json()) as { format: string; markdown: string; json: { sections: { activeThreads: unknown[] } } };
856
+ assert.equal(body.format, "markdown");
857
+ assert.equal(body.markdown, "# Briefing");
858
+ assert.deepEqual(body.json.sections.activeThreads, []);
859
+ assert.deepEqual(calls, [
860
+ {
861
+ since: "24h",
862
+ focus: undefined,
863
+ namespace: "team",
864
+ format: "markdown",
865
+ maxFollowups: 5,
866
+ principal: "panel-user",
867
+ },
868
+ ]);
869
+
870
+ const invalid = await fetch(
871
+ `http://127.0.0.1:${status.port}/engram/v1/briefing`,
872
+ {
873
+ method: "POST",
874
+ headers: {
875
+ authorization: "Bearer test-token",
876
+ "content-type": "application/json",
877
+ },
878
+ body: JSON.stringify({ format: "jsno" }),
879
+ },
880
+ );
881
+ assert.equal(invalid.status, 400);
882
+ assert.equal(((await invalid.json()) as { code: string }).code, "input_error");
883
+ assert.equal(calls.length, 1);
884
+ } finally {
885
+ await server.stop();
886
+ }
887
+ });
888
+
813
889
  test("HTTP contradiction scan uses writable namespace resolver", async () => {
814
890
  const resolverCalls: Array<{
815
891
  namespace: string | undefined;
@@ -49,6 +49,7 @@ import { getOperation, type OperationName } from "./access-boundary.js";
49
49
  import { authorizationProbeNamespaces, authorizationProbeRequiresPrincipalNamespace, probeOperationAuthorization } from "./access-authorization-probe.js";
50
50
  import { resolveQueryNamespaceWritablePreflight } from "./access-namespace-preflight.js";
51
51
  import { respondAccessCapabilitiesHttp } from "./access-http-lcm-compaction.js";
52
+ import { respondBriefingHttp } from "./access-http-briefing.js";
52
53
  import { handleWhoKnowsHttpQuery } from "./who-knows.js";
53
54
  import {
54
55
  assertOperationAllowed,
@@ -994,11 +995,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
994
995
  // `memory_search` tool already exposes, reachable by HTTP-only clients.
995
996
  this.enforceTokenOp("memory_search"); // boundary dispatch (issue #1525)
996
997
  const operation = getOperation("memory_search");
997
- if (!operation) {
998
- throw new EngramAccessInputError(
999
- "access-boundary: operation not registered: memory_search",
1000
- );
1001
- }
998
+ if (!operation) throw new EngramAccessInputError("access-boundary: operation not registered: memory_search");
1002
999
  // The body `namespace` is user-controlled, so it must pass the same
1003
1000
  // effective-namespace allow-list gate as every other namespace-scoped
1004
1001
  // route (issue #1850 finding 2); the authenticated principal — never a
@@ -1946,9 +1943,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
1946
1943
  namespace: this.resolveNamespace(req, body.namespace),
1947
1944
  };
1948
1945
  const op = getOperation("memory_store");
1949
- if (!op) {
1950
- throw new EngramAccessInputError("access-boundary: operation not registered: memory_store");
1951
- }
1946
+ if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: memory_store");
1952
1947
  const output = (await op.run(envelope, {
1953
1948
  service: this.service,
1954
1949
  authenticatedPrincipal: this.resolveRequestPrincipal(req),
@@ -1980,9 +1975,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
1980
1975
  this.ensureWriteRateLimitAvailable(req);
1981
1976
  }
1982
1977
  const op = getOperation("coding_decision");
1983
- if (!op) {
1984
- throw new EngramAccessInputError("access-boundary: operation not registered: coding_decision");
1985
- }
1978
+ if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: coding_decision");
1986
1979
  const output = (await op.run(this.gatedBodyNamespace(req, body), {
1987
1980
  service: this.service,
1988
1981
  authenticatedPrincipal: this.resolveRequestPrincipal(req),
@@ -2005,9 +1998,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
2005
1998
  this.ensureWriteRateLimitAvailable(req);
2006
1999
  }
2007
2000
  const op = getOperation("coding_architecture");
2008
- if (!op) {
2009
- throw new EngramAccessInputError("access-boundary: operation not registered: coding_architecture");
2010
- }
2001
+ if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: coding_architecture");
2011
2002
  const output = (await op.run(this.gatedBodyNamespace(req, body), {
2012
2003
  service: this.service,
2013
2004
  authenticatedPrincipal: this.resolveRequestPrincipal(req),
@@ -2028,9 +2019,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
2028
2019
  // write-quota enforcement.
2029
2020
  const body = await this.readJsonBody(req);
2030
2021
  const op = getOperation("coding_delta");
2031
- if (!op) {
2032
- throw new EngramAccessInputError("access-boundary: operation not registered: coding_delta");
2033
- }
2022
+ if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: coding_delta");
2034
2023
  const output = (await op.run(this.gatedBodyNamespace(req, body), {
2035
2024
  service: this.service,
2036
2025
  authenticatedPrincipal: this.resolveRequestPrincipal(req),
@@ -2039,6 +2028,18 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
2039
2028
  return;
2040
2029
  }
2041
2030
 
2031
+ // Daily briefing — pure read through the registered `briefing` boundary
2032
+ // operation (sibling module; see access-http-briefing.ts).
2033
+ if (req.method === "POST" && pathname === "/engram/v1/briefing") {
2034
+ await respondBriefingHttp({
2035
+ gatedBody: this.gatedBodyNamespace(req, await this.readJsonBody(req)),
2036
+ service: this.service,
2037
+ principal: this.resolveRequestPrincipal(req),
2038
+ respondJson: (status, payload) => this.respondJson(res, status, payload),
2039
+ });
2040
+ return;
2041
+ }
2042
+
2042
2043
  // ── Correction Contract (issue #1580) — plan / apply / pending ─────────
2043
2044
  // All three routes dispatch through the boundary operations so schema
2044
2045
  // validation + namespace policy reach every correction path (rule 22/39).
@@ -2051,9 +2052,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
2051
2052
  this.ensureWriteRateLimitAvailable(req);
2052
2053
  const body = await this.readJsonBody(req);
2053
2054
  const op = getOperation("memory_correct_plan");
2054
- if (!op) {
2055
- throw new EngramAccessInputError("access-boundary: operation not registered: memory_correct_plan");
2056
- }
2055
+ if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: memory_correct_plan");
2057
2056
  const output = (await op.run(this.gatedBodyNamespace(req, body), {
2058
2057
  service: this.service,
2059
2058
  authenticatedPrincipal: this.resolveRequestPrincipal(req),
@@ -2067,9 +2066,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
2067
2066
  this.ensureWriteRateLimitAvailable(req);
2068
2067
  const body = await this.readJsonBody(req);
2069
2068
  const op = getOperation("memory_correct_apply");
2070
- if (!op) {
2071
- throw new EngramAccessInputError("access-boundary: operation not registered: memory_correct_apply");
2072
- }
2069
+ if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: memory_correct_apply");
2073
2070
  const output = (await op.run(this.gatedBodyNamespace(req, body), {
2074
2071
  service: this.service,
2075
2072
  authenticatedPrincipal: this.resolveRequestPrincipal(req),
@@ -325,6 +325,15 @@ function extractHttpRouteDispatchMap(): Map<string, Set<string>> {
325
325
  }
326
326
  }
327
327
  }
328
+ if (/\bawait\s+respondBriefingHttp\(/.test(source)) {
329
+ const briefingSource = readFileSync(
330
+ new URL("./access-http-briefing.ts", import.meta.url),
331
+ "utf-8",
332
+ );
333
+ if (briefingSource.includes('getOperation("briefing")')) {
334
+ routeOps.set("POST /engram/v1/briefing", new Set(["briefing"]));
335
+ }
336
+ }
328
337
  if (/\bawait\s+this\.handleReviewDeckRequest\(/.test(source)) {
329
338
  const deckSource = readFileSync(
330
339
  new URL("./review/review-deck-http-base.ts", import.meta.url),
@@ -254,6 +254,7 @@ export const HTTP_ROUTES: readonly HttpRouteEntry[] = [
254
254
  { method: "POST", pathname: "/engram/v1/coding/decisions", operation: "coding_decision" },
255
255
  { method: "POST", pathname: "/engram/v1/coding/architecture", operation: "coding_architecture" },
256
256
  { method: "POST", pathname: "/engram/v1/coding/delta", operation: "coding_delta" },
257
+ { method: "POST", pathname: "/engram/v1/briefing", operation: "briefing" },
257
258
  { method: "POST", pathname: "/engram/v1/suggestions", operation: "suggestion_submit" },
258
259
  { method: "GET", pathname: "/engram/v1/memories", operation: "memory_list" },
259
260
  { method: "GET", pathname: "/engram/v1/recall/timings", operation: "recall_timings" },
@@ -10,6 +10,7 @@ import type { Stats } from "node:fs";
10
10
  import fsp from "node:fs/promises";
11
11
  import path from "node:path";
12
12
  import type { BinaryStorageBackendConfig } from "./types.js";
13
+ import { isErrnoCode } from "../utils/errno.js";
13
14
 
14
15
  // ---------------------------------------------------------------------------
15
16
  // Interface
@@ -154,7 +155,7 @@ export class FilesystemBackend implements BinaryStorageBackend {
154
155
  }
155
156
 
156
157
  const realParent = await fsp.realpath(destDir).catch((err: NodeJS.ErrnoException) => {
157
- if (err.code === "ENOENT") return null;
158
+ if (isErrnoCode(err, "ENOENT")) return null;
158
159
  throw err;
159
160
  });
160
161
  if (realParent === null) {
package/src/config.ts CHANGED
@@ -50,6 +50,7 @@ import { parseDeepRecallConfig } from "./deep-recall-config.js";
50
50
  import { parseContradictionLocalizationConfig, parseContradictionScanConfig } from "./contradiction-config.js";
51
51
  import { parseGraphPathScoringConfig } from "./graph-path-scoring-config.js";
52
52
  import { parseWritePathDedupConfig } from "./dedup/novelty-gate.js";
53
+ import { parseSemanticMergeConfig } from "./dedup/merge.js";
53
54
  import { hasLegacyConnectorEntries } from "./connectors/paths.js";
54
55
  import {
55
56
  parseQmdChunkStrategy,
@@ -3199,6 +3200,7 @@ export function parseConfig(
3199
3200
  // v6.0 Fact deduplication & archival
3200
3201
  factDeduplicationEnabled: cfg.factDeduplicationEnabled !== false,
3201
3202
  ...parseWritePathDedupConfig(cfg),
3203
+ ...parseSemanticMergeConfig(cfg),
3202
3204
  factArchivalEnabled: cfg.factArchivalEnabled === true,
3203
3205
  factArchivalAgeDays:
3204
3206
  typeof cfg.factArchivalAgeDays === "number" ? cfg.factArchivalAgeDays : 90,
@@ -63,6 +63,7 @@ import type {
63
63
  SyncIncrementalArgs,
64
64
  SyncIncrementalResult,
65
65
  } from "./framework.js";
66
+ import { throwIfAborted } from "../../abort-error.js";
66
67
 
67
68
  // ---------------------------------------------------------------------------
68
69
  // Public constants
@@ -425,14 +426,6 @@ function pickNumericGitHubStatus(e: {
425
426
 
426
427
  const GITHUB_API_BASE = "https://api.github.com";
427
428
 
428
- function throwIfAborted(signal: AbortSignal | undefined): void {
429
- if (signal?.aborted) {
430
- const err = new Error("github: sync aborted");
431
- err.name = "AbortError";
432
- throw err;
433
- }
434
- }
435
-
436
429
  function makeGitHubApiError(status: number, message: string): Error & { githubStatus: number } {
437
430
  const err = new Error(`github: HTTP ${status}: ${message}`) as Error & {
438
431
  githubStatus: number;
@@ -526,7 +519,7 @@ export function createGitHubConnector(
526
519
 
527
520
  async syncIncremental(args: SyncIncrementalArgs): Promise<SyncIncrementalResult> {
528
521
  const config = validateGitHubConfig(args.config);
529
- throwIfAborted(args.abortSignal);
522
+ throwIfAborted(args.abortSignal, "github: sync aborted");
530
523
 
531
524
  // Short-circuit: nothing to do if no repos are configured.
532
525
  if (config.repos.length === 0) {
@@ -582,7 +575,7 @@ async function seedWatermarks(
582
575
  // seenIds starts empty for first-sync; nothing has been processed yet.
583
576
 
584
577
  for (const repo of config.repos) {
585
- throwIfAborted(signal);
578
+ throwIfAborted(signal, "github: sync aborted");
586
579
 
587
580
  // Issue comments
588
581
  try {
@@ -599,7 +592,7 @@ async function seedWatermarks(
599
592
  // 404/403 → repo inaccessible, skip silently.
600
593
  }
601
594
 
602
- throwIfAborted(signal);
595
+ throwIfAborted(signal, "github: sync aborted");
603
596
 
604
597
  // PR review comments
605
598
  try {
@@ -617,7 +610,7 @@ async function seedWatermarks(
617
610
 
618
611
  // Discussions (GraphQL not used; we use the REST search endpoint for simplicity)
619
612
  if (config.includeDiscussions) {
620
- throwIfAborted(signal);
613
+ throwIfAborted(signal, "github: sync aborted");
621
614
  try {
622
615
  const latest = await fetchLatestTimestamp(
623
616
  fetchFn,
@@ -683,7 +676,7 @@ async function incrementalSync(
683
676
 
684
677
  for (const repo of config.repos) {
685
678
  if (totalConsumed >= MAX_ITEMS_PER_PASS) break;
686
- throwIfAborted(signal);
679
+ throwIfAborted(signal, "github: sync aborted");
687
680
 
688
681
  // --- Issue comments ---
689
682
  {
@@ -730,7 +723,7 @@ async function incrementalSync(
730
723
  }
731
724
 
732
725
  if (totalConsumed >= MAX_ITEMS_PER_PASS) break;
733
- throwIfAborted(signal);
726
+ throwIfAborted(signal, "github: sync aborted");
734
727
 
735
728
  // --- PR review comments ---
736
729
  {
@@ -775,7 +768,7 @@ async function incrementalSync(
775
768
 
776
769
  // --- Discussion comments (optional) ---
777
770
  if (config.includeDiscussions && totalConsumed < MAX_ITEMS_PER_PASS) {
778
- throwIfAborted(signal);
771
+ throwIfAborted(signal, "github: sync aborted");
779
772
  const wmKey = watermarkKey(repo, "discussion");
780
773
  const since = payload.watermarks[wmKey];
781
774
  try {
@@ -922,14 +915,14 @@ async function fetchAndFilterComments(
922
915
  let nextUrl: string | undefined = firstPageUrl;
923
916
 
924
917
  while (nextUrl && consumed < remainingBudget) {
925
- throwIfAborted(signal);
918
+ throwIfAborted(signal, "github: sync aborted");
926
919
 
927
920
  const data = await githubGet(fetchFn, token, nextUrl, signal);
928
921
  if (!Array.isArray(data)) break;
929
922
 
930
923
  for (const item of data) {
931
924
  if (consumed >= remainingBudget) break;
932
- throwIfAborted(signal);
925
+ throwIfAborted(signal, "github: sync aborted");
933
926
 
934
927
  const comment = normalizeGitHubComment(item, kind);
935
928
  if (!comment) {
@@ -72,6 +72,7 @@ import type {
72
72
  SyncIncrementalResult,
73
73
  } from "./framework.js";
74
74
  import { isTransientHttpError } from "./transient-errors.js";
75
+ import { throwIfAborted } from "../../abort-error.js";
75
76
 
76
77
  // ---------------------------------------------------------------------------
77
78
  // Public constants
@@ -585,18 +586,6 @@ export function pruneSkippedIds(
585
586
  return pruned;
586
587
  }
587
588
 
588
- // ---------------------------------------------------------------------------
589
- // Cooperative cancellation
590
- // ---------------------------------------------------------------------------
591
-
592
- function throwIfAborted(signal: AbortSignal | undefined): void {
593
- if (signal?.aborted) {
594
- const err = new Error("gmail: sync aborted");
595
- err.name = "AbortError";
596
- throw err;
597
- }
598
- }
599
-
600
589
  // ---------------------------------------------------------------------------
601
590
  // Gmail API client helpers
602
591
  // ---------------------------------------------------------------------------
@@ -671,7 +660,7 @@ async function exchangeRefreshToken(
671
660
  config: GmailConnectorConfig,
672
661
  signal: AbortSignal | undefined,
673
662
  ): Promise<string> {
674
- throwIfAborted(signal);
663
+ throwIfAborted(signal, "gmail: sync aborted");
675
664
  const body = new URLSearchParams({
676
665
  client_id: config.clientId,
677
666
  client_secret: config[CLIENT_SECRET_FIELD],
@@ -860,11 +849,11 @@ export function createGmailConnector(
860
849
 
861
850
  async syncIncremental(args: SyncIncrementalArgs): Promise<SyncIncrementalResult> {
862
851
  const config = validateGmailConfig(args.config);
863
- throwIfAborted(args.abortSignal);
852
+ throwIfAborted(args.abortSignal, "gmail: sync aborted");
864
853
 
865
854
  // Exchange credentials for a short-lived access token.
866
855
  const accessToken = await exchangeRefreshToken(fetchFn, config, args.abortSignal);
867
- throwIfAborted(args.abortSignal);
856
+ throwIfAborted(args.abortSignal, "gmail: sync aborted");
868
857
 
869
858
  // First-sync bootstrap: record "now" as the watermark and return
870
859
  // without importing anything. Mirrors Drive's getStartPageToken pattern.
@@ -981,7 +970,7 @@ async function incrementalSync(
981
970
 
982
971
  // Page through messages.list until exhausted, aborted, or per-pass cap hit.
983
972
  while (true) {
984
- throwIfAborted(signal);
973
+ throwIfAborted(signal, "gmail: sync aborted");
985
974
 
986
975
  // Build the list URL.
987
976
  let listPath = `/users/${encodeURIComponent(config.userId)}/messages?maxResults=${LIST_PAGE_SIZE}&q=${encodeURIComponent(listQuery)}`;
@@ -1013,7 +1002,7 @@ async function incrementalSync(
1013
1002
  throw listErr;
1014
1003
  }
1015
1004
  }
1016
- throwIfAborted(signal);
1005
+ throwIfAborted(signal, "gmail: sync aborted");
1017
1006
 
1018
1007
  const listPage = listData as {
1019
1008
  messages?: GmailMessageRef[];
@@ -1026,7 +1015,7 @@ async function incrementalSync(
1026
1015
  let capHitMidPage = false;
1027
1016
 
1028
1017
  for (const ref of messages) {
1029
- throwIfAborted(signal);
1018
+ throwIfAborted(signal, "gmail: sync aborted");
1030
1019
 
1031
1020
  // Thread 2: if this id was permanently skipped in a prior pass, skip
1032
1021
  // it again without consuming the per-pass cap. The message is immutable
@@ -1232,7 +1221,7 @@ async function fetchMessageDocument(
1232
1221
  fetchedAt: string,
1233
1222
  signal: AbortSignal | undefined,
1234
1223
  ): Promise<ConnectorDocument | SkippedWithDate | "inaccessible" | null> {
1235
- throwIfAborted(signal);
1224
+ throwIfAborted(signal, "gmail: sync aborted");
1236
1225
 
1237
1226
  let message: GmailMessage;
1238
1227
  try {
@@ -64,6 +64,7 @@ import type {
64
64
  SyncIncrementalResult,
65
65
  } from "./framework.js";
66
66
  import { isTransientHttpError } from "./transient-errors.js";
67
+ import { throwIfAborted } from "../../abort-error.js";
67
68
 
68
69
  /**
69
70
  * Stable connector id. Lives in the registry under this exact string.
@@ -414,10 +415,10 @@ export function createGoogleDriveConnector(
414
415
  async syncIncremental(args: SyncIncrementalArgs): Promise<SyncIncrementalResult> {
415
416
  // Re-validate on every pass: a JS caller could mutate it between passes.
416
417
  const config = validateGoogleDriveConfig(args.config);
417
- throwIfAborted(args.abortSignal);
418
+ throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
418
419
 
419
420
  const client = await clientFactory(config);
420
- throwIfAborted(args.abortSignal);
421
+ throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
421
422
 
422
423
  // Cursor bootstrap. On the very first pass (cursor=null) we ask Drive
423
424
  // for a page token but DO NOT consume any changes — this aligns with
@@ -455,7 +456,7 @@ export function createGoogleDriveConnector(
455
456
  // Page through `changes.list` until we run out, hit the per-pass cap,
456
457
  // or get aborted.
457
458
  while (true) {
458
- throwIfAborted(args.abortSignal);
459
+ throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
459
460
  const remaining = MAX_CHANGES_PER_PASS - consumed;
460
461
  if (remaining <= 0) {
461
462
  // Hit the cap — persist whatever we have. The next pass resumes
@@ -467,7 +468,7 @@ export function createGoogleDriveConnector(
467
468
  const page = await client.listChanges({ pageToken, pageSize });
468
469
 
469
470
  for (const change of page.changes) {
470
- throwIfAborted(args.abortSignal);
471
+ throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
471
472
  consumed++;
472
473
  const decision = decideChange(change, folderScope);
473
474
  switch (decision.kind) {
@@ -538,7 +539,7 @@ async function fetchDocument(
538
539
  fetchedAt: string,
539
540
  abortSignal: AbortSignal | undefined,
540
541
  ): Promise<ConnectorDocument | null> {
541
- throwIfAborted(abortSignal);
542
+ throwIfAborted(abortSignal, "googleDrive: sync aborted");
542
543
  const file = decision.file;
543
544
  let body: string;
544
545
  try {
@@ -581,14 +582,6 @@ async function fetchDocument(
581
582
  };
582
583
  }
583
584
 
584
- function throwIfAborted(signal: AbortSignal | undefined): void {
585
- if (signal?.aborted) {
586
- const err = new Error("googleDrive: sync aborted");
587
- err.name = "AbortError";
588
- throw err;
589
- }
590
- }
591
-
592
585
  /**
593
586
  * Classify a per-file fetch error as "transient" (re-throw to caller so
594
587
  * the sync stops without advancing the cursor and the next poll retries)
@@ -60,6 +60,7 @@ import type {
60
60
  SyncIncrementalResult,
61
61
  } from "./framework.js";
62
62
  import { isTransientHttpError } from "./transient-errors.js";
63
+ import { throwIfAborted } from "../../abort-error.js";
63
64
 
64
65
  // ---------------------------------------------------------------------------
65
66
  // Public constants
@@ -362,17 +363,6 @@ export function isTransientNotionError(err: unknown): boolean {
362
363
  const NOTION_BASE_URL = "https://api.notion.com/v1";
363
364
  const NOTION_API_VERSION = "2022-06-28";
364
365
 
365
- /**
366
- * Throw if aborted (cooperative cancellation).
367
- */
368
- function throwIfAborted(signal: AbortSignal | undefined): void {
369
- if (signal?.aborted) {
370
- const err = new Error("notion: sync aborted");
371
- err.name = "AbortError";
372
- throw err;
373
- }
374
- }
375
-
376
366
  /**
377
367
  * Build a Notion API error with the HTTP status attached for classification.
378
368
  */
@@ -531,14 +521,14 @@ async function fetchPageText(
531
521
  signal: AbortSignal | undefined,
532
522
  ): Promise<string> {
533
523
  if (depth > MAX_BLOCK_DEPTH) return "";
534
- throwIfAborted(signal);
524
+ throwIfAborted(signal, "notion: sync aborted");
535
525
 
536
526
  const lines: string[] = [];
537
527
  let cursor: string | undefined = undefined;
538
528
 
539
529
  // Page through block children.
540
530
  while (true) {
541
- throwIfAborted(signal);
531
+ throwIfAborted(signal, "notion: sync aborted");
542
532
  const pathQuery = cursor
543
533
  ? `/blocks/${blockId}/children?page_size=100&start_cursor=${encodeURIComponent(cursor)}`
544
534
  : `/blocks/${blockId}/children?page_size=100`;
@@ -552,7 +542,7 @@ async function fetchPageText(
552
542
  };
553
543
 
554
544
  for (const block of page.results ?? []) {
555
- throwIfAborted(signal);
545
+ throwIfAborted(signal, "notion: sync aborted");
556
546
  const text = extractBlockText(block);
557
547
  if (text.length > 0) lines.push(text);
558
548
 
@@ -653,7 +643,7 @@ export function createNotionConnector(
653
643
 
654
644
  async syncIncremental(args: SyncIncrementalArgs): Promise<SyncIncrementalResult> {
655
645
  const config = validateNotionConfig(args.config);
656
- throwIfAborted(args.abortSignal);
646
+ throwIfAborted(args.abortSignal, "notion: sync aborted");
657
647
 
658
648
  // Short-circuit: if no databases are configured, there is nothing to do.
659
649
  // We still return a valid cursor so the framework has something to
@@ -719,12 +709,12 @@ async function seedWatermark(
719
709
  const databases = { ...payload.databases };
720
710
 
721
711
  for (const dbId of config.databaseIds) {
722
- throwIfAborted(signal);
712
+ throwIfAborted(signal, "notion: sync aborted");
723
713
  let notionCursor: string | undefined = undefined;
724
714
  let latestInDb = "";
725
715
 
726
716
  while (true) {
727
- throwIfAborted(signal);
717
+ throwIfAborted(signal, "notion: sync aborted");
728
718
  const body: Record<string, unknown> = { page_size: 100, sorts: [] };
729
719
  if (notionCursor) body.start_cursor = notionCursor;
730
720
 
@@ -784,7 +774,7 @@ async function incrementalSync(
784
774
  let totalConsumed = 0;
785
775
 
786
776
  for (const dbId of config.databaseIds) {
787
- throwIfAborted(signal);
777
+ throwIfAborted(signal, "notion: sync aborted");
788
778
  if (totalConsumed >= MAX_PAGES_PER_PASS) break;
789
779
 
790
780
  const dbWatermark = payload.databases[dbId];
@@ -807,7 +797,7 @@ async function incrementalSync(
807
797
  let databaseFullyDrained = false;
808
798
 
809
799
  while (true) {
810
- throwIfAborted(signal);
800
+ throwIfAborted(signal, "notion: sync aborted");
811
801
  if (totalConsumed >= MAX_PAGES_PER_PASS) break;
812
802
 
813
803
  const body: Record<string, unknown> = {
@@ -845,7 +835,7 @@ async function incrementalSync(
845
835
 
846
836
  let cutoffMidPage = false;
847
837
  for (const notionPage of pageResp.results ?? []) {
848
- throwIfAborted(signal);
838
+ throwIfAborted(signal, "notion: sync aborted");
849
839
 
850
840
  const pageId = notionPage.id;
851
841
  const lastEdited = notionPage.last_edited_time;
@@ -970,7 +960,7 @@ async function fetchPageDocument(
970
960
  fetchedAt: string,
971
961
  signal: AbortSignal | undefined,
972
962
  ): Promise<ConnectorDocument | "too-large" | "empty" | null> {
973
- throwIfAborted(signal);
963
+ throwIfAborted(signal, "notion: sync aborted");
974
964
 
975
965
  let text: string;
976
966
  try {