@remnic/core 9.69.40 → 9.69.41

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 (657) hide show
  1. package/dist/access-admin-ops-surface.d.ts +13 -13
  2. package/dist/access-admin-ops-surface.js +69 -68
  3. package/dist/access-audit.js +2 -2
  4. package/dist/access-authorization-probe.d.ts +13 -13
  5. package/dist/access-authorization-probe.js +70 -69
  6. package/dist/access-boundary.d.ts +13 -13
  7. package/dist/access-boundary.js +69 -68
  8. package/dist/access-cli.js +157 -155
  9. package/dist/access-cli.js.map +1 -1
  10. package/dist/access-coding-context-resolution.d.ts +1 -1
  11. package/dist/access-extraction-force-flush.d.ts +13 -13
  12. package/dist/access-extraction-force-flush.js +69 -68
  13. package/dist/access-health-types.d.ts +1 -1
  14. package/dist/access-http-briefing.d.ts +13 -13
  15. package/dist/access-http-briefing.js +70 -69
  16. package/dist/access-http-lcm-compaction.d.ts +13 -13
  17. package/dist/access-http-lifecycle-flush.d.ts +13 -13
  18. package/dist/access-http-offline-stream.d.ts +13 -13
  19. package/dist/access-http-query.d.ts +2 -2
  20. package/dist/access-http-query.js +71 -70
  21. package/dist/access-http.d.ts +14 -14
  22. package/dist/access-http.js +90 -87
  23. package/dist/access-identity-continuity-surface.d.ts +11 -11
  24. package/dist/access-identity-continuity-surface.js +69 -68
  25. package/dist/access-lcm-surface.d.ts +13 -13
  26. package/dist/access-lcm-surface.js +69 -68
  27. package/dist/access-mcp-shared-context-tools.d.ts +156 -0
  28. package/dist/access-mcp-shared-context-tools.js +8 -0
  29. package/dist/access-mcp.d.ts +13 -13
  30. package/dist/access-mcp.js +81 -78
  31. package/dist/access-memory-search-fanout.d.ts +2 -2
  32. package/dist/{access-namespace-preflight-CKBumJ8W.d.ts → access-namespace-preflight-DWsMc9Dh.d.ts} +1 -1
  33. package/dist/access-namespace-preflight.d.ts +3 -3
  34. package/dist/access-namespace-preflight.js +69 -68
  35. package/dist/access-observe-transcript.d.ts +11 -11
  36. package/dist/access-observe-write-category.d.ts +1 -1
  37. package/dist/access-observe-write-category.js +4 -4
  38. package/dist/access-observe-write-surface.d.ts +13 -13
  39. package/dist/access-observe-write-surface.js +69 -68
  40. package/dist/access-offline-manifest.d.ts +11 -11
  41. package/dist/access-offline-manifest.js +9 -9
  42. package/dist/access-operations-batch.js +74 -72
  43. package/dist/access-operations.d.ts +13 -13
  44. package/dist/access-operations.js +79 -77
  45. package/dist/access-recall-concurrency.d.ts +13 -13
  46. package/dist/access-recall-concurrency.js +69 -68
  47. package/dist/access-recall-response.d.ts +13 -13
  48. package/dist/access-recall-response.js +69 -68
  49. package/dist/access-recall-surface.d.ts +13 -13
  50. package/dist/access-recall-surface.js +69 -68
  51. package/dist/access-schema.d.ts +1 -1
  52. package/dist/access-schema.js +3 -3
  53. package/dist/{access-service-DJ3qogNt.d.ts → access-service-Cisy5YDq.d.ts} +14 -9
  54. package/dist/access-service-helpers.d.ts +13 -13
  55. package/dist/access-service.d.ts +13 -13
  56. package/dist/access-service.js +69 -68
  57. package/dist/access-surface-catalog.d.ts +13 -13
  58. package/dist/access-surface-catalog.js +71 -70
  59. package/dist/access-surface-catalog.js.map +1 -1
  60. package/dist/access-wearables-meetings-surface.d.ts +4 -4
  61. package/dist/action-confidence.d.ts +1 -1
  62. package/dist/active-memory-bridge.d.ts +1 -1
  63. package/dist/active-memory-bridge.js +3 -3
  64. package/dist/active-recall.d.ts +1 -1
  65. package/dist/active-recall.js +6 -6
  66. package/dist/activity/digest.d.ts +1 -1
  67. package/dist/ambient-provenance.d.ts +1 -1
  68. package/dist/artifact-search.d.ts +1 -1
  69. package/dist/{auto-sync-D6BAPIJV.js → auto-sync-7PGUFY7U.js} +7 -7
  70. package/dist/background-generation.d.ts +1 -1
  71. package/dist/behavior-learner.d.ts +1 -1
  72. package/dist/behavior-signals.d.ts +1 -1
  73. package/dist/bootstrap.d.ts +11 -11
  74. package/dist/briefing-window.d.ts +2 -2
  75. package/dist/briefing.d.ts +2 -2
  76. package/dist/briefing.js +17 -17
  77. package/dist/buffer-surprise-report.d.ts +1 -1
  78. package/dist/buffer-turn-helpers.d.ts +1 -1
  79. package/dist/buffer.d.ts +2 -2
  80. package/dist/buffer.js +5 -5
  81. package/dist/bulk-import/index.d.ts +3 -3
  82. package/dist/calibration.d.ts +1 -1
  83. package/dist/calibration.js +2 -2
  84. package/dist/capabilities.d.ts +1 -1
  85. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  86. package/dist/{capsule-merge-IPG4IOFP.js → capsule-merge-3MNURAQ3.js} +2 -2
  87. package/dist/{catalog-BHXkBVhg.d.ts → catalog-wcX1QhtQ.d.ts} +1 -1
  88. package/dist/causal-behavior.d.ts +1 -1
  89. package/dist/causal-consolidation.d.ts +1 -1
  90. package/dist/causal-consolidation.js +20 -20
  91. package/dist/causal-trajectory-graph.d.ts +1 -1
  92. package/dist/{chunk-M6RORUO5.js → chunk-2EYZ32LH.js} +24 -2
  93. package/dist/{chunk-M6RORUO5.js.map → chunk-2EYZ32LH.js.map} +1 -1
  94. package/dist/{chunk-VHKXRYQN.js → chunk-2HQPE2NM.js} +2 -2
  95. package/dist/{chunk-RDLPFM7I.js → chunk-2ZG2LLZT.js} +2 -2
  96. package/dist/{chunk-IMBQFHRV.js → chunk-3BLHPQHT.js} +5 -5
  97. package/dist/{chunk-6L2II3KS.js → chunk-3D75XIYO.js} +2 -2
  98. package/dist/{chunk-J272ODKJ.js → chunk-42DJ235G.js} +2 -2
  99. package/dist/{chunk-RJQAP333.js → chunk-46RII65S.js} +2 -2
  100. package/dist/{chunk-JUDT33RX.js → chunk-4AX5OYKC.js} +2 -2
  101. package/dist/{chunk-GSSDHAYH.js → chunk-4IGOLIWM.js} +2 -2
  102. package/dist/{chunk-4CMXI55L.js → chunk-54QPOE45.js} +2 -2
  103. package/dist/{chunk-LKFVVN7R.js → chunk-563X6JJX.js} +2 -2
  104. package/dist/{chunk-VQWBUPSJ.js → chunk-5EQT62HH.js} +2 -2
  105. package/dist/{chunk-BYQX4IOG.js → chunk-6MQMYXSQ.js} +2 -2
  106. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  107. package/dist/{chunk-K75A5XWU.js → chunk-7ZLC4DTZ.js} +4 -4
  108. package/dist/{chunk-7Z54NXVS.js → chunk-A4OIJYCV.js} +2 -2
  109. package/dist/{chunk-QS5Q5RBV.js → chunk-AFJHNHAM.js} +8 -8
  110. package/dist/{chunk-TZ44E732.js → chunk-AIVRD66I.js} +2 -2
  111. package/dist/{chunk-OEDW4ER7.js → chunk-AJBWVDRV.js} +2 -1
  112. package/dist/chunk-AJBWVDRV.js.map +1 -0
  113. package/dist/{chunk-IOPIGX7Y.js → chunk-AKABVXFS.js} +2 -2
  114. package/dist/{chunk-KOTG3RXE.js → chunk-AUSRUOMQ.js} +2 -2
  115. package/dist/{chunk-K4A6UVPB.js → chunk-BTPCP535.js} +8 -8
  116. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  117. package/dist/{chunk-TEMKBSV6.js → chunk-C3G6MW4W.js} +3 -3
  118. package/dist/{chunk-3QEVOQF5.js → chunk-D6PY63OM.js} +2 -2
  119. package/dist/{chunk-DFVSJFHK.js → chunk-DBB5JPSL.js} +2 -2
  120. package/dist/{chunk-HJUP3K6L.js → chunk-DIXZQTGY.js} +2 -2
  121. package/dist/{chunk-ZX3AYNNV.js → chunk-DM5CU5J7.js} +2 -2
  122. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  123. package/dist/{chunk-BGRTZOJB.js → chunk-E3I3NDUP.js} +4 -4
  124. package/dist/{chunk-ZAEPD4C2.js → chunk-E4LMQTST.js} +2 -2
  125. package/dist/{chunk-NETQXOPY.js → chunk-EH3HNCAM.js} +12 -7
  126. package/dist/{chunk-NETQXOPY.js.map → chunk-EH3HNCAM.js.map} +1 -1
  127. package/dist/{chunk-7D6SER6A.js → chunk-EMSYMYXO.js} +14 -14
  128. package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
  129. package/dist/{chunk-V2ZA4YWE.js → chunk-F5H6YG5P.js} +2 -2
  130. package/dist/{chunk-YTK5MVNF.js → chunk-FGFC2EFR.js} +14 -13
  131. package/dist/chunk-FGFC2EFR.js.map +1 -0
  132. package/dist/{chunk-ZMWSYUUL.js → chunk-GCBIXUPT.js} +2 -2
  133. package/dist/{chunk-IS2IDFJP.js → chunk-GMH5QPUU.js} +22 -22
  134. package/dist/chunk-GMH5QPUU.js.map +1 -0
  135. package/dist/{chunk-LFVZD5EC.js → chunk-GWNSKQDA.js} +3 -3
  136. package/dist/{chunk-JDX2OA4R.js → chunk-HNHIHXSD.js} +2 -2
  137. package/dist/{chunk-2SNCQHJZ.js → chunk-I33QYUAF.js} +6 -6
  138. package/dist/{chunk-UZ6JYPJ6.js → chunk-I46BYY7U.js} +193 -150
  139. package/dist/chunk-I46BYY7U.js.map +1 -0
  140. package/dist/{chunk-MVG3KXON.js → chunk-ICN37XHG.js} +15 -15
  141. package/dist/chunk-IFBSZGW3.js +42 -0
  142. package/dist/chunk-IFBSZGW3.js.map +1 -0
  143. package/dist/{chunk-ICNJ6J46.js → chunk-IYIPXAIJ.js} +2 -2
  144. package/dist/{chunk-AEOOGXMQ.js → chunk-J2MGTGKC.js} +4 -4
  145. package/dist/chunk-JATHBCAV.js +94 -0
  146. package/dist/chunk-JATHBCAV.js.map +1 -0
  147. package/dist/{chunk-5U7K4W6K.js → chunk-JDOBQPJY.js} +3 -3
  148. package/dist/{chunk-TG3FAM2S.js → chunk-JL4TQYM5.js} +48 -1
  149. package/dist/{chunk-TG3FAM2S.js.map → chunk-JL4TQYM5.js.map} +1 -1
  150. package/dist/{chunk-NVVZPBKI.js → chunk-JMWUPUE6.js} +2 -2
  151. package/dist/{chunk-QPVNK2VE.js → chunk-JSD7Q7LD.js} +2 -2
  152. package/dist/{chunk-RLU2Y5GV.js → chunk-K5D2XVNN.js} +4 -4
  153. package/dist/{chunk-YTZN2UZO.js → chunk-KJLLPG26.js} +2 -2
  154. package/dist/{chunk-2SKMZUOW.js → chunk-KLUC2GSG.js} +6 -6
  155. package/dist/{chunk-YRIFXXMI.js → chunk-KZJM7R4F.js} +3 -3
  156. package/dist/{chunk-46Z3VGWF.js → chunk-LE2KZ72G.js} +3 -3
  157. package/dist/{chunk-HIP6DKJJ.js → chunk-LQVXSRAJ.js} +2 -2
  158. package/dist/{chunk-A7GQBJP5.js → chunk-LVFI5LG7.js} +7 -7
  159. package/dist/{chunk-5LYSEZOF.js → chunk-MCMS4VUK.js} +9 -8
  160. package/dist/chunk-MCMS4VUK.js.map +1 -0
  161. package/dist/{chunk-ROEFLU37.js → chunk-N6XTC56E.js} +13 -81
  162. package/dist/chunk-N6XTC56E.js.map +1 -0
  163. package/dist/{chunk-PKUJNICO.js → chunk-ND7MAIJC.js} +2 -2
  164. package/dist/{chunk-DAZANIYU.js → chunk-NYWCFC3K.js} +76 -77
  165. package/dist/{chunk-DAZANIYU.js.map → chunk-NYWCFC3K.js.map} +1 -1
  166. package/dist/{chunk-W23JARAQ.js → chunk-P66QH6R6.js} +2 -2
  167. package/dist/{chunk-62D2PAAM.js → chunk-PAAJWQH5.js} +4 -4
  168. package/dist/{chunk-XM46Y66S.js → chunk-PFKIOYJH.js} +2 -2
  169. package/dist/{chunk-C5R73BON.js → chunk-PGGPRF6J.js} +2 -2
  170. package/dist/{chunk-V6EGNVUT.js → chunk-PIWFNPQT.js} +4 -4
  171. package/dist/{chunk-JOP7W24J.js → chunk-PLJ2MQFT.js} +4 -4
  172. package/dist/{chunk-MJC7UKH7.js → chunk-PQ42DJNG.js} +2 -2
  173. package/dist/{chunk-37CAEC7E.js → chunk-PWPIERBM.js} +4 -4
  174. package/dist/{chunk-BXIJSPCL.js → chunk-Q62GA5U2.js} +2 -2
  175. package/dist/{chunk-CC37E3QM.js → chunk-QKCXRS5A.js} +16 -1
  176. package/dist/chunk-QKCXRS5A.js.map +1 -0
  177. package/dist/{chunk-VKWFNPBH.js → chunk-RQQO3ORQ.js} +2 -2
  178. package/dist/{chunk-SFHLQPBF.js → chunk-S4MJTIPG.js} +85 -81
  179. package/dist/chunk-S4MJTIPG.js.map +1 -0
  180. package/dist/{chunk-THTF2W7M.js → chunk-TRTLWUDD.js} +19 -18
  181. package/dist/chunk-TRTLWUDD.js.map +1 -0
  182. package/dist/{chunk-KTOXQMW3.js → chunk-UHSOPTNB.js} +14 -4
  183. package/dist/chunk-UHSOPTNB.js.map +1 -0
  184. package/dist/{chunk-ES5BUPYB.js → chunk-UZGHKD3T.js} +2 -2
  185. package/dist/{chunk-62HFZNCJ.js → chunk-V2EXYQEQ.js} +11 -10
  186. package/dist/{chunk-62HFZNCJ.js.map → chunk-V2EXYQEQ.js.map} +1 -1
  187. package/dist/{chunk-QE6YVNP5.js → chunk-V2TOGJPM.js} +49 -16
  188. package/dist/chunk-V2TOGJPM.js.map +1 -0
  189. package/dist/{chunk-J4WGTN2N.js → chunk-V62YYBBY.js} +4 -4
  190. package/dist/{chunk-KQAFEZQX.js → chunk-VDX2J7OX.js} +2 -2
  191. package/dist/{chunk-Z4GUX2M6.js → chunk-VSN2DMQK.js} +2 -2
  192. package/dist/{chunk-ZHXSOMYH.js → chunk-VVX5PZFS.js} +2 -2
  193. package/dist/{chunk-KY236SP5.js → chunk-W7UV2ZCA.js} +3 -3
  194. package/dist/{chunk-TO36VPZI.js → chunk-WBQ4ONQJ.js} +2 -2
  195. package/dist/{chunk-WZYHPAG5.js → chunk-WFMQN7JE.js} +3 -3
  196. package/dist/{chunk-G2XZFGYN.js → chunk-WGZHSQDV.js} +4 -4
  197. package/dist/{chunk-MDIEES23.js → chunk-WN2OXGGH.js} +1 -1
  198. package/dist/chunk-WN2OXGGH.js.map +1 -0
  199. package/dist/{chunk-SUEOG2S4.js → chunk-WPGA4RYI.js} +2 -2
  200. package/dist/{chunk-SV4Z2S67.js → chunk-WUUGE7QC.js} +54 -21
  201. package/dist/chunk-WUUGE7QC.js.map +1 -0
  202. package/dist/{chunk-J7FVMLBR.js → chunk-WZIO3TW6.js} +2 -2
  203. package/dist/{chunk-ZZUVBZL2.js → chunk-X2QPKLPL.js} +2 -2
  204. package/dist/{chunk-JAJIMTFB.js → chunk-XRS65T4O.js} +9 -9
  205. package/dist/{chunk-GO5LOHCD.js → chunk-YFXAWGMR.js} +2 -2
  206. package/dist/{chunk-ZRMMXWYI.js → chunk-YR5QT4SR.js} +32 -9
  207. package/dist/chunk-YR5QT4SR.js.map +1 -0
  208. package/dist/{chunk-CARRTDKC.js → chunk-Z22M4JCY.js} +4 -3
  209. package/dist/chunk-Z22M4JCY.js.map +1 -0
  210. package/dist/{chunk-K4JKAXMO.js → chunk-Z535ADTC.js} +3 -3
  211. package/dist/{chunk-23HFXQ5J.js → chunk-Z7NBT6AK.js} +3 -3
  212. package/dist/{chunk-VQYWKCDR.js → chunk-ZX6NNFSY.js} +3 -3
  213. package/dist/{chunk-3XPN7AVY.js → chunk-ZYSOT6HD.js} +2 -2
  214. package/dist/{chunk-ZZCR2QYL.js → chunk-ZZEIL3MI.js} +2 -2
  215. package/dist/{cli-BWri5-am.d.ts → cli-CUlMlS2N.d.ts} +5 -5
  216. package/dist/cli.d.ts +15 -15
  217. package/dist/cli.js +116 -114
  218. package/dist/coding/export-okf-codegraph.d.ts +1 -1
  219. package/dist/coding/export-okf-codegraph.js +16 -16
  220. package/dist/coding/pre-action-gate.d.ts +1 -1
  221. package/dist/compounding/engine.d.ts +2 -2
  222. package/dist/compounding/engine.js +19 -19
  223. package/dist/compounding/preference-consolidator.d.ts +1 -1
  224. package/dist/compression-optimizer.d.ts +1 -1
  225. package/dist/config.d.ts +1 -1
  226. package/dist/config.js +6 -6
  227. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  228. package/dist/connectors/codex-materialize-runner.js +19 -19
  229. package/dist/connectors/codex-materialize.d.ts +1 -1
  230. package/dist/connectors/codex-materialize.js +2 -2
  231. package/dist/connectors/index.d.ts +1 -1
  232. package/dist/connectors/index.js +19 -19
  233. package/dist/consolidation-provenance-check.d.ts +2 -2
  234. package/dist/consolidation-undo.d.ts +2 -2
  235. package/dist/contradiction/index.d.ts +4 -4
  236. package/dist/contradiction/index.js +4 -4
  237. package/dist/{contradiction-scan-BSGKZHYJ.js → contradiction-scan-GVD4JJ7B.js} +4 -4
  238. package/dist/converge-config.d.ts +1 -1
  239. package/dist/convergence-refresh.d.ts +2 -2
  240. package/dist/convergence-refresh.js +20 -20
  241. package/dist/conversation-index/backend.d.ts +1 -1
  242. package/dist/conversation-index/chunker.d.ts +1 -1
  243. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  244. package/dist/conversation-index/indexer.d.ts +1 -1
  245. package/dist/conversation-index/search.d.ts +1 -1
  246. package/dist/corpus-watermark.d.ts +1 -1
  247. package/dist/corpus-watermark.js +19 -19
  248. package/dist/cross-lingual-recall.d.ts +1 -1
  249. package/dist/dashboard-runtime.js +2 -2
  250. package/dist/day-summary.d.ts +1 -1
  251. package/dist/deep-recall-config.d.ts +12 -1
  252. package/dist/deep-recall-config.js +5 -3
  253. package/dist/deep-recall-http-glue.d.ts +16 -14
  254. package/dist/deep-recall-http-glue.js +7 -4
  255. package/dist/deep-recall-mcp-tools.d.ts +13 -13
  256. package/dist/deep-recall-policy-llm.d.ts +12 -2
  257. package/dist/deep-recall-policy-llm.js +3 -3
  258. package/dist/deep-recall-seeds.d.ts +4 -1
  259. package/dist/deep-recall-seeds.js +1 -1
  260. package/dist/deep-recall.d.ts +12 -1
  261. package/dist/deep-recall.js +3 -2
  262. package/dist/delinearize.d.ts +1 -1
  263. package/dist/dependency-propagation-config.d.ts +1 -1
  264. package/dist/{dependency-propagation-delivery-ueZlKTQB.d.ts → dependency-propagation-delivery-BDDjImQn.d.ts} +1 -1
  265. package/dist/direct-answer-wiring.d.ts +1 -1
  266. package/dist/direct-answer.d.ts +1 -1
  267. package/dist/embedding-fallback.d.ts +1 -1
  268. package/dist/enrichment/index.d.ts +1 -1
  269. package/dist/entity-origin-fields.d.ts +1 -1
  270. package/dist/entity-retrieval.d.ts +2 -2
  271. package/dist/entity-retrieval.js +18 -18
  272. package/dist/entity-schema.d.ts +1 -1
  273. package/dist/episodic-context.d.ts +1 -1
  274. package/dist/eval-trajectory-contracts.d.ts +1 -1
  275. package/dist/eval-trajectory-store.d.ts +1 -1
  276. package/dist/eval-trajectory.d.ts +1 -1
  277. package/dist/explicit-capture.d.ts +11 -11
  278. package/dist/explicit-capture.js +3 -3
  279. package/dist/external-wiki-access.d.ts +13 -13
  280. package/dist/external-wiki-access.js +70 -69
  281. package/dist/external-wiki-collection-registration.d.ts +1 -1
  282. package/dist/external-wiki-collection.d.ts +1 -1
  283. package/dist/external-wiki-mcp-tools.d.ts +13 -13
  284. package/dist/extraction-error-classification.d.ts +1 -1
  285. package/dist/extraction-faithfulness.d.ts +2 -2
  286. package/dist/extraction-faithfulness.js +3 -3
  287. package/dist/extraction-judge-telemetry.d.ts +2 -2
  288. package/dist/extraction-judge-training.d.ts +2 -2
  289. package/dist/extraction-judge.d.ts +2 -2
  290. package/dist/extraction-judge.js +3 -3
  291. package/dist/extraction-liveness.d.ts +1 -1
  292. package/dist/extraction-normalization.d.ts +1 -1
  293. package/dist/extraction-prompt.d.ts +1 -1
  294. package/dist/extraction-source-grounding-rules.d.ts +1 -1
  295. package/dist/extraction-source-grounding.d.ts +1 -1
  296. package/dist/extraction-span-config.d.ts +1 -1
  297. package/dist/extraction-span-materialize.d.ts +1 -1
  298. package/dist/extraction.d.ts +2 -2
  299. package/dist/extraction.js +30 -30
  300. package/dist/fallback-llm-codex-subscription.d.ts +15 -5
  301. package/dist/fallback-llm-codex-subscription.js +3 -1
  302. package/dist/fallback-llm.d.ts +1 -1
  303. package/dist/fallback-llm.js +2 -2
  304. package/dist/{first-start-migration-ZWMV5CX4.js → first-start-migration-L3UFX5CU.js} +4 -4
  305. package/dist/{generic-recall-paths-CpyVmA88.d.ts → generic-recall-paths-CpDzNO_I.d.ts} +1 -1
  306. package/dist/graph-append-error.d.ts +1 -1
  307. package/dist/graph-dashboard-diff.d.ts +1 -1
  308. package/dist/graph-dashboard-key.d.ts +1 -1
  309. package/dist/graph-dashboard-parser.d.ts +1 -1
  310. package/dist/graph-edge-reinforcement.d.ts +1 -1
  311. package/dist/graph-jsonl.d.ts +1 -1
  312. package/dist/graph-path-reconstruction.d.ts +1 -1
  313. package/dist/graph-path-scoring.d.ts +1 -1
  314. package/dist/graph-snapshot.d.ts +1 -1
  315. package/dist/graph.d.ts +1 -1
  316. package/dist/harmonic-retrieval.js +3 -3
  317. package/dist/importance.d.ts +1 -1
  318. package/dist/importers/index.d.ts +1 -1
  319. package/dist/importers/test-utils.d.ts +1 -1
  320. package/dist/in-flight-reads.d.ts +1 -1
  321. package/dist/{index-BvUA4S7M.d.ts → index-CtmmCJoo.d.ts} +3 -3
  322. package/dist/index.d.ts +26 -26
  323. package/dist/index.js +279 -275
  324. package/dist/intent.d.ts +1 -1
  325. package/dist/lcm/engine.d.ts +1 -1
  326. package/dist/lcm/engine.js +3 -3
  327. package/dist/lcm/index.d.ts +1 -1
  328. package/dist/lcm/index.js +8 -8
  329. package/dist/lcm/tools.d.ts +1 -1
  330. package/dist/lifecycle.d.ts +1 -1
  331. package/dist/live-connectors-runner.d.ts +1 -1
  332. package/dist/{local-llm-BsJGulur.d.ts → local-llm-DpXIvm6F.d.ts} +1 -1
  333. package/dist/local-llm-helpers.d.ts +2 -2
  334. package/dist/local-llm.d.ts +2 -2
  335. package/dist/local-llm.js +2 -2
  336. package/dist/local-model-endpoint.d.ts +1 -1
  337. package/dist/location/index.d.ts +3 -3
  338. package/dist/location/index.js +19 -19
  339. package/dist/maintenance/memory-governance.d.ts +1 -1
  340. package/dist/maintenance/memory-governance.js +18 -18
  341. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  342. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +17 -17
  343. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  344. package/dist/maintenance/rebuild-memory-projection.js +19 -19
  345. package/dist/{maintenance-CYubtIRr.d.ts → maintenance-CNgoLsoM.d.ts} +7 -6
  346. package/dist/mcp-memory-inspector-app.d.ts +13 -13
  347. package/dist/memory-action-policy.d.ts +1 -1
  348. package/dist/memory-cache.d.ts +1 -1
  349. package/dist/memory-controller.d.ts +1 -1
  350. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  351. package/dist/memory-projection-store.d.ts +1 -1
  352. package/dist/memory-provenance.d.ts +1 -1
  353. package/dist/memory-snapshot.d.ts +1 -1
  354. package/dist/memory-subject-cli.d.ts +13 -13
  355. package/dist/memory-subject.d.ts +13 -13
  356. package/dist/memory-worth-outcomes.d.ts +2 -2
  357. package/dist/models-json.d.ts +1 -1
  358. package/dist/namespaces/migrate.d.ts +3 -3
  359. package/dist/namespaces/migrate.js +18 -18
  360. package/dist/namespaces/principal.d.ts +1 -1
  361. package/dist/namespaces/search.d.ts +1 -1
  362. package/dist/namespaces/search.js +3 -3
  363. package/dist/namespaces/storage.d.ts +3 -3
  364. package/dist/namespaces/storage.js +17 -17
  365. package/dist/native-knowledge.d.ts +1 -1
  366. package/dist/offline-sync-impression-drain.d.ts +1 -1
  367. package/dist/operator-doctor-corpus.d.ts +1 -1
  368. package/dist/operator-doctor-corpus.js +20 -20
  369. package/dist/operator-doctor-replica.d.ts +1 -1
  370. package/dist/operator-toolkit.d.ts +3 -3
  371. package/dist/operator-toolkit.js +35 -35
  372. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  373. package/dist/orchestration/maintenance.d.ts +4 -4
  374. package/dist/orchestration/maintenance.js +29 -29
  375. package/dist/{orchestrator-BWDRJ_0d.d.ts → orchestrator-DT7ybIFz.d.ts} +18 -10
  376. package/dist/orchestrator.d.ts +11 -11
  377. package/dist/orchestrator.js +157 -155
  378. package/dist/patterns-cli.d.ts +1 -1
  379. package/dist/{pipeline-7JMn2yMH.d.ts → pipeline-CgBEmHcz.d.ts} +1 -1
  380. package/dist/policy-runtime.d.ts +1 -1
  381. package/dist/proactive-contention.d.ts +2 -2
  382. package/dist/provenance.d.ts +1 -1
  383. package/dist/{public-http-CJWs3mo9.d.ts → public-http-C8P8fyiO.d.ts} +1 -1
  384. package/dist/{qmd-CxCH9G9m.d.ts → qmd-BkY8KpCh.d.ts} +1 -1
  385. package/dist/qmd-preflight.d.ts +2 -2
  386. package/dist/qmd-recall-cache.d.ts +1 -1
  387. package/dist/qmd.d.ts +2 -2
  388. package/dist/recall-concurrency-config.d.ts +1 -1
  389. package/dist/recall-disclosure-escalation.d.ts +1 -1
  390. package/dist/recall-explain-renderer.d.ts +1 -1
  391. package/dist/recall-explain-renderer.js +3 -3
  392. package/dist/recall-memory-map.d.ts +1 -1
  393. package/dist/recall-navigate-access.d.ts +1 -1
  394. package/dist/recall-navigate-access.js +2 -2
  395. package/dist/recall-navigate-disclosure.d.ts +1 -1
  396. package/dist/recall-navigate-disclosure.js +1 -1
  397. package/dist/recall-navigate.d.ts +1 -1
  398. package/dist/recall-navigate.js +2 -2
  399. package/dist/recall-planner-llm.d.ts +1 -1
  400. package/dist/recall-planner-llm.js +2 -2
  401. package/dist/recall-state-view-admission.d.ts +2 -2
  402. package/dist/recall-state-view-admission.js +7 -7
  403. package/dist/recall-state-view-anchors.d.ts +1 -1
  404. package/dist/recall-state-view-anchors.js +2 -2
  405. package/dist/recall-state-view-inject.js +2 -2
  406. package/dist/recall-state-view-render.js +2 -2
  407. package/dist/recall-state-view-widen.js +2 -2
  408. package/dist/recall-state-view-wire.js +3 -3
  409. package/dist/recall-state-view.d.ts +9 -1
  410. package/dist/recall-state-view.js +5 -3
  411. package/dist/recall-state.d.ts +1 -1
  412. package/dist/recall-tag-filter.d.ts +1 -1
  413. package/dist/recall-timings.d.ts +1 -1
  414. package/dist/recall-xray-cli.d.ts +1 -1
  415. package/dist/recall-xray-cli.js +4 -4
  416. package/dist/recall-xray-renderer.d.ts +1 -1
  417. package/dist/recall-xray-renderer.js +3 -3
  418. package/dist/recall-xray.d.ts +1 -1
  419. package/dist/recall-xray.js +2 -2
  420. package/dist/reconcile/cursor.d.ts +1 -1
  421. package/dist/reconcile/cursor.js +2 -2
  422. package/dist/reconcile/manifest.d.ts +1 -1
  423. package/dist/reconcile/manifest.js +4 -4
  424. package/dist/reconcile/plan.d.ts +1 -1
  425. package/dist/reconcile/plan.js +2 -2
  426. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  427. package/dist/replay/normalizers/claude.d.ts +1 -1
  428. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  429. package/dist/replay/normalizers/shared.d.ts +1 -1
  430. package/dist/replay/runner.d.ts +1 -1
  431. package/dist/replay/types.d.ts +1 -1
  432. package/dist/replica-divergence.d.ts +1 -1
  433. package/dist/replica-peers-config.d.ts +1 -1
  434. package/dist/{resolution-4GG3QZRJ.js → resolution-LXFQQ4AE.js} +5 -5
  435. package/dist/resolution-LXFQQ4AE.js.map +1 -0
  436. package/dist/resolve-auth-token.d.ts +1 -1
  437. package/dist/resume-bundles.js +8 -8
  438. package/dist/retrieval-agents.d.ts +2 -2
  439. package/dist/retrieval-tiers.d.ts +1 -1
  440. package/dist/routing/engine.d.ts +1 -1
  441. package/dist/routing/store.d.ts +1 -1
  442. package/dist/salvage-envelope.d.ts +1 -1
  443. package/dist/{scope-profiles-BGAUqhBR.d.ts → scope-profiles-BBPjZ9jb.d.ts} +1 -1
  444. package/dist/search/embed-helper.d.ts +1 -1
  445. package/dist/search/factory.d.ts +1 -1
  446. package/dist/search/factory.js +2 -2
  447. package/dist/search/index.d.ts +1 -1
  448. package/dist/search/index.js +4 -4
  449. package/dist/search/lancedb-backend.d.ts +1 -1
  450. package/dist/search/meilisearch-backend.d.ts +1 -1
  451. package/dist/search/noop-backend.d.ts +1 -1
  452. package/dist/search/orama-backend.d.ts +1 -1
  453. package/dist/search/port.d.ts +1 -1
  454. package/dist/search/remote-backend.d.ts +1 -1
  455. package/dist/{semantic-consolidation-CCeRD9pV.d.ts → semantic-consolidation-BPFFVO84.d.ts} +1 -1
  456. package/dist/semantic-consolidation.d.ts +2 -2
  457. package/dist/semantic-consolidation.js +20 -20
  458. package/dist/semantic-rule-promotion.js +17 -17
  459. package/dist/semantic-rule-verifier.d.ts +1 -1
  460. package/dist/semantic-rule-verifier.js +17 -17
  461. package/dist/{service-BwpzRduk.d.ts → service-jKcr6Jvr.d.ts} +2 -2
  462. package/dist/session-observer-bands.d.ts +1 -1
  463. package/dist/session-observer-state.d.ts +1 -1
  464. package/dist/shared-context/manager.d.ts +1 -1
  465. package/dist/shared-context/manager.js +2 -2
  466. package/dist/shared-context/write-output-controls.d.ts +34 -0
  467. package/dist/shared-context/write-output-controls.js +10 -0
  468. package/dist/shared-context/write-output-controls.js.map +1 -0
  469. package/dist/signal.d.ts +1 -1
  470. package/dist/source-agent-qualifier.d.ts +1 -1
  471. package/dist/source-agent-qualifier.js +25 -25
  472. package/dist/source-attribution.d.ts +23 -1
  473. package/dist/source-attribution.js +13 -3
  474. package/dist/standup/build.js +17 -17
  475. package/dist/{storage-BprAGBG0.d.ts → storage-C-0Ah5OY.d.ts} +1 -1
  476. package/dist/storage.d.ts +2 -2
  477. package/dist/storage.js +16 -16
  478. package/dist/subject-config.d.ts +1 -1
  479. package/dist/summarizer.d.ts +1 -1
  480. package/dist/summarizer.js +6 -6
  481. package/dist/summary-snapshot.d.ts +1 -1
  482. package/dist/support-passport/index.d.ts +16 -16
  483. package/dist/support-passport/index.js +72 -71
  484. package/dist/temporal-supersession.d.ts +2 -2
  485. package/dist/temporal-timeline-recall.d.ts +1 -1
  486. package/dist/temporal-validity.d.ts +1 -1
  487. package/dist/threading.d.ts +1 -1
  488. package/dist/tier-migration.d.ts +2 -2
  489. package/dist/tier-routing.d.ts +1 -1
  490. package/dist/tier-routing.js +3 -3
  491. package/dist/{tier-stats-LUSUUNU6.js → tier-stats-VK5PCO2L.js} +4 -4
  492. package/dist/topics.d.ts +1 -1
  493. package/dist/transcript.d.ts +1 -1
  494. package/dist/transfer/backup.js +2 -2
  495. package/dist/transfer/capsule-export.js +2 -2
  496. package/dist/transfer/capsule-import.js +3 -3
  497. package/dist/transfer/export-okf.d.ts +1 -1
  498. package/dist/transfer/export-okf.js +17 -17
  499. package/dist/trust-score-stage.d.ts +1 -1
  500. package/dist/trust-score.d.ts +1 -1
  501. package/dist/{types-nJV23pa3.d.ts → types-cK5LydjL.d.ts} +5 -0
  502. package/dist/types.d.ts +1 -1
  503. package/dist/types.js +1 -1
  504. package/dist/utility-runtime.d.ts +1 -1
  505. package/dist/verified-recall.js +17 -17
  506. package/dist/who-knows-cli.d.ts +13 -13
  507. package/dist/who-knows-cli.js +18 -18
  508. package/dist/who-knows.d.ts +13 -13
  509. package/dist/who-knows.js +17 -17
  510. package/dist/write-envelope.d.ts +1 -1
  511. package/package.json +12 -2
  512. package/src/access-http.ts +1 -1
  513. package/src/access-mcp-shared-context-tools.ts +103 -0
  514. package/src/access-mcp.ts +4 -74
  515. package/src/access-operations-batch.ts +45 -2
  516. package/src/access-service.ts +14 -7
  517. package/src/activity/timeline/regenerate.test.ts +48 -0
  518. package/src/activity/timeline/regenerate.ts +7 -5
  519. package/src/cli/deep-recall-commands.ts +22 -10
  520. package/src/config.ts +5 -0
  521. package/src/dedup/merge.test.ts +283 -0
  522. package/src/deep-recall-boundary.test.ts +66 -0
  523. package/src/deep-recall-cli.test.ts +82 -0
  524. package/src/deep-recall-config.test.ts +56 -0
  525. package/src/deep-recall-config.ts +32 -0
  526. package/src/deep-recall-http-glue.ts +10 -10
  527. package/src/deep-recall-policy-llm.test.ts +242 -0
  528. package/src/deep-recall-policy-llm.ts +37 -7
  529. package/src/deep-recall-seeds.test.ts +53 -0
  530. package/src/deep-recall-seeds.ts +7 -1
  531. package/src/deep-recall-surface.test.ts +93 -0
  532. package/src/deep-recall.test.ts +121 -0
  533. package/src/deep-recall.ts +88 -28
  534. package/src/fallback-llm-codex-subscription.ts +27 -5
  535. package/src/fallback-llm.test.ts +120 -0
  536. package/src/fallback-llm.ts +17 -16
  537. package/src/meetings/config.test.ts +58 -0
  538. package/src/orchestration/extraction-persist.ts +1 -1
  539. package/src/orchestration/recall-entry.ts +15 -1
  540. package/src/orchestration/recall-internal.ts +1 -0
  541. package/src/orchestration/recall-section-coordinator.ts +65 -28
  542. package/src/orchestration/recall-state-view-pipeline.test.ts +8 -2
  543. package/src/orchestration/semantic-merge-commit-effects.ts +45 -16
  544. package/src/orchestration/semantic-merge-persist.ts +23 -36
  545. package/src/providers/codex-subscription.test.ts +127 -0
  546. package/src/providers/codex-subscription.ts +1 -1
  547. package/src/recall-state-view-budget.test.ts +424 -0
  548. package/src/recall-state-view.ts +30 -16
  549. package/src/shared-context/envelope-io.ts +25 -0
  550. package/src/shared-context/envelope-wiring.test.ts +4 -2
  551. package/src/shared-context/manager.ts +1 -0
  552. package/src/shared-context/write-output-controls.test.ts +192 -0
  553. package/src/shared-context/write-output-controls.ts +72 -0
  554. package/src/source-attribution.test.ts +39 -0
  555. package/src/source-attribution.ts +72 -0
  556. package/src/types.ts +5 -0
  557. package/dist/chunk-5LYSEZOF.js.map +0 -1
  558. package/dist/chunk-CARRTDKC.js.map +0 -1
  559. package/dist/chunk-CC37E3QM.js.map +0 -1
  560. package/dist/chunk-IS2IDFJP.js.map +0 -1
  561. package/dist/chunk-KTOXQMW3.js.map +0 -1
  562. package/dist/chunk-MDIEES23.js.map +0 -1
  563. package/dist/chunk-OEDW4ER7.js.map +0 -1
  564. package/dist/chunk-QE6YVNP5.js.map +0 -1
  565. package/dist/chunk-ROEFLU37.js.map +0 -1
  566. package/dist/chunk-SFHLQPBF.js.map +0 -1
  567. package/dist/chunk-SV4Z2S67.js.map +0 -1
  568. package/dist/chunk-THTF2W7M.js.map +0 -1
  569. package/dist/chunk-UZ6JYPJ6.js.map +0 -1
  570. package/dist/chunk-YTK5MVNF.js.map +0 -1
  571. package/dist/chunk-ZRMMXWYI.js.map +0 -1
  572. /package/dist/{capsule-crypto-7FJQINUR.js.map → access-mcp-shared-context-tools.js.map} +0 -0
  573. /package/dist/{auto-sync-D6BAPIJV.js.map → auto-sync-7PGUFY7U.js.map} +0 -0
  574. /package/dist/{contradiction-scan-BSGKZHYJ.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
  575. /package/dist/{capsule-merge-IPG4IOFP.js.map → capsule-merge-3MNURAQ3.js.map} +0 -0
  576. /package/dist/{chunk-VHKXRYQN.js.map → chunk-2HQPE2NM.js.map} +0 -0
  577. /package/dist/{chunk-RDLPFM7I.js.map → chunk-2ZG2LLZT.js.map} +0 -0
  578. /package/dist/{chunk-IMBQFHRV.js.map → chunk-3BLHPQHT.js.map} +0 -0
  579. /package/dist/{chunk-6L2II3KS.js.map → chunk-3D75XIYO.js.map} +0 -0
  580. /package/dist/{chunk-J272ODKJ.js.map → chunk-42DJ235G.js.map} +0 -0
  581. /package/dist/{chunk-RJQAP333.js.map → chunk-46RII65S.js.map} +0 -0
  582. /package/dist/{chunk-JUDT33RX.js.map → chunk-4AX5OYKC.js.map} +0 -0
  583. /package/dist/{chunk-GSSDHAYH.js.map → chunk-4IGOLIWM.js.map} +0 -0
  584. /package/dist/{chunk-4CMXI55L.js.map → chunk-54QPOE45.js.map} +0 -0
  585. /package/dist/{chunk-LKFVVN7R.js.map → chunk-563X6JJX.js.map} +0 -0
  586. /package/dist/{chunk-VQWBUPSJ.js.map → chunk-5EQT62HH.js.map} +0 -0
  587. /package/dist/{chunk-BYQX4IOG.js.map → chunk-6MQMYXSQ.js.map} +0 -0
  588. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  589. /package/dist/{chunk-K75A5XWU.js.map → chunk-7ZLC4DTZ.js.map} +0 -0
  590. /package/dist/{chunk-7Z54NXVS.js.map → chunk-A4OIJYCV.js.map} +0 -0
  591. /package/dist/{chunk-QS5Q5RBV.js.map → chunk-AFJHNHAM.js.map} +0 -0
  592. /package/dist/{chunk-TZ44E732.js.map → chunk-AIVRD66I.js.map} +0 -0
  593. /package/dist/{chunk-IOPIGX7Y.js.map → chunk-AKABVXFS.js.map} +0 -0
  594. /package/dist/{chunk-KOTG3RXE.js.map → chunk-AUSRUOMQ.js.map} +0 -0
  595. /package/dist/{chunk-K4A6UVPB.js.map → chunk-BTPCP535.js.map} +0 -0
  596. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  597. /package/dist/{chunk-TEMKBSV6.js.map → chunk-C3G6MW4W.js.map} +0 -0
  598. /package/dist/{chunk-3QEVOQF5.js.map → chunk-D6PY63OM.js.map} +0 -0
  599. /package/dist/{chunk-DFVSJFHK.js.map → chunk-DBB5JPSL.js.map} +0 -0
  600. /package/dist/{chunk-HJUP3K6L.js.map → chunk-DIXZQTGY.js.map} +0 -0
  601. /package/dist/{chunk-ZX3AYNNV.js.map → chunk-DM5CU5J7.js.map} +0 -0
  602. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  603. /package/dist/{chunk-BGRTZOJB.js.map → chunk-E3I3NDUP.js.map} +0 -0
  604. /package/dist/{chunk-ZAEPD4C2.js.map → chunk-E4LMQTST.js.map} +0 -0
  605. /package/dist/{chunk-7D6SER6A.js.map → chunk-EMSYMYXO.js.map} +0 -0
  606. /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
  607. /package/dist/{chunk-V2ZA4YWE.js.map → chunk-F5H6YG5P.js.map} +0 -0
  608. /package/dist/{chunk-ZMWSYUUL.js.map → chunk-GCBIXUPT.js.map} +0 -0
  609. /package/dist/{chunk-LFVZD5EC.js.map → chunk-GWNSKQDA.js.map} +0 -0
  610. /package/dist/{chunk-JDX2OA4R.js.map → chunk-HNHIHXSD.js.map} +0 -0
  611. /package/dist/{chunk-2SNCQHJZ.js.map → chunk-I33QYUAF.js.map} +0 -0
  612. /package/dist/{chunk-MVG3KXON.js.map → chunk-ICN37XHG.js.map} +0 -0
  613. /package/dist/{chunk-ICNJ6J46.js.map → chunk-IYIPXAIJ.js.map} +0 -0
  614. /package/dist/{chunk-AEOOGXMQ.js.map → chunk-J2MGTGKC.js.map} +0 -0
  615. /package/dist/{chunk-5U7K4W6K.js.map → chunk-JDOBQPJY.js.map} +0 -0
  616. /package/dist/{chunk-NVVZPBKI.js.map → chunk-JMWUPUE6.js.map} +0 -0
  617. /package/dist/{chunk-QPVNK2VE.js.map → chunk-JSD7Q7LD.js.map} +0 -0
  618. /package/dist/{chunk-RLU2Y5GV.js.map → chunk-K5D2XVNN.js.map} +0 -0
  619. /package/dist/{chunk-YTZN2UZO.js.map → chunk-KJLLPG26.js.map} +0 -0
  620. /package/dist/{chunk-2SKMZUOW.js.map → chunk-KLUC2GSG.js.map} +0 -0
  621. /package/dist/{chunk-YRIFXXMI.js.map → chunk-KZJM7R4F.js.map} +0 -0
  622. /package/dist/{chunk-46Z3VGWF.js.map → chunk-LE2KZ72G.js.map} +0 -0
  623. /package/dist/{chunk-HIP6DKJJ.js.map → chunk-LQVXSRAJ.js.map} +0 -0
  624. /package/dist/{chunk-A7GQBJP5.js.map → chunk-LVFI5LG7.js.map} +0 -0
  625. /package/dist/{chunk-PKUJNICO.js.map → chunk-ND7MAIJC.js.map} +0 -0
  626. /package/dist/{chunk-W23JARAQ.js.map → chunk-P66QH6R6.js.map} +0 -0
  627. /package/dist/{chunk-62D2PAAM.js.map → chunk-PAAJWQH5.js.map} +0 -0
  628. /package/dist/{chunk-XM46Y66S.js.map → chunk-PFKIOYJH.js.map} +0 -0
  629. /package/dist/{chunk-C5R73BON.js.map → chunk-PGGPRF6J.js.map} +0 -0
  630. /package/dist/{chunk-V6EGNVUT.js.map → chunk-PIWFNPQT.js.map} +0 -0
  631. /package/dist/{chunk-JOP7W24J.js.map → chunk-PLJ2MQFT.js.map} +0 -0
  632. /package/dist/{chunk-MJC7UKH7.js.map → chunk-PQ42DJNG.js.map} +0 -0
  633. /package/dist/{chunk-37CAEC7E.js.map → chunk-PWPIERBM.js.map} +0 -0
  634. /package/dist/{chunk-BXIJSPCL.js.map → chunk-Q62GA5U2.js.map} +0 -0
  635. /package/dist/{chunk-VKWFNPBH.js.map → chunk-RQQO3ORQ.js.map} +0 -0
  636. /package/dist/{chunk-ES5BUPYB.js.map → chunk-UZGHKD3T.js.map} +0 -0
  637. /package/dist/{chunk-J4WGTN2N.js.map → chunk-V62YYBBY.js.map} +0 -0
  638. /package/dist/{chunk-KQAFEZQX.js.map → chunk-VDX2J7OX.js.map} +0 -0
  639. /package/dist/{chunk-Z4GUX2M6.js.map → chunk-VSN2DMQK.js.map} +0 -0
  640. /package/dist/{chunk-ZHXSOMYH.js.map → chunk-VVX5PZFS.js.map} +0 -0
  641. /package/dist/{chunk-KY236SP5.js.map → chunk-W7UV2ZCA.js.map} +0 -0
  642. /package/dist/{chunk-TO36VPZI.js.map → chunk-WBQ4ONQJ.js.map} +0 -0
  643. /package/dist/{chunk-WZYHPAG5.js.map → chunk-WFMQN7JE.js.map} +0 -0
  644. /package/dist/{chunk-G2XZFGYN.js.map → chunk-WGZHSQDV.js.map} +0 -0
  645. /package/dist/{chunk-SUEOG2S4.js.map → chunk-WPGA4RYI.js.map} +0 -0
  646. /package/dist/{chunk-J7FVMLBR.js.map → chunk-WZIO3TW6.js.map} +0 -0
  647. /package/dist/{chunk-ZZUVBZL2.js.map → chunk-X2QPKLPL.js.map} +0 -0
  648. /package/dist/{chunk-JAJIMTFB.js.map → chunk-XRS65T4O.js.map} +0 -0
  649. /package/dist/{chunk-GO5LOHCD.js.map → chunk-YFXAWGMR.js.map} +0 -0
  650. /package/dist/{chunk-K4JKAXMO.js.map → chunk-Z535ADTC.js.map} +0 -0
  651. /package/dist/{chunk-23HFXQ5J.js.map → chunk-Z7NBT6AK.js.map} +0 -0
  652. /package/dist/{chunk-VQYWKCDR.js.map → chunk-ZX6NNFSY.js.map} +0 -0
  653. /package/dist/{chunk-3XPN7AVY.js.map → chunk-ZYSOT6HD.js.map} +0 -0
  654. /package/dist/{chunk-ZZCR2QYL.js.map → chunk-ZZEIL3MI.js.map} +0 -0
  655. /package/dist/{resolution-4GG3QZRJ.js.map → contradiction-scan-GVD4JJ7B.js.map} +0 -0
  656. /package/dist/{first-start-migration-ZWMV5CX4.js.map → first-start-migration-L3UFX5CU.js.map} +0 -0
  657. /package/dist/{tier-stats-LUSUUNU6.js.map → tier-stats-VK5PCO2L.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/deep-recall.ts"],"sourcesContent":["/**\n * Budgeted deep-recall loop (issue #2332, harmonic series P4).\n *\n * REFINE / EXPAND / STOP retrieval over the abstraction-node + cue-anchor\n * graph built by issue #2329, blended with QMD search. This is the deep\n * surface ONLY — never wired into `before_prompt_build` or any recall\n * section (that latency disqualifies the hot path; see the issue).\n *\n * The loop is dependency-injected: seeding, graph loading, memory loading,\n * and the policy LLM call arrive as `DeepRecallDeps`, so the loop is\n * deterministic under a scripted fake policy (tests) and thin when the\n * access service wires real deps. Pure decision helpers are reused from\n * the `recall-deep-*` primitives — never re-implemented here.\n */\n\nimport { z } from \"zod\";\nimport type { AbstractionNode } from \"./abstraction-nodes.js\";\nimport type { CueAnchor } from \"./cue-anchors.js\";\nimport { compareDeterministicStrings } from \"./deterministic-order.js\";\nimport { abortError, isAbortError, raceAbort, throwIfAborted } from \"./abort-error.js\";\nimport { extractJsonCandidates, stripCodeFences } from \"./json-extract.js\";\nimport { rankDeepRecallFrontier } from \"./recall-deep-frontier.js\";\nimport { selectExpandNodeIds } from \"./recall-deep-expand-select.js\";\nimport { validateRefineRewrite } from \"./recall-deep-rewrite.js\";\nimport type { DeepRecallConfig } from \"./deep-recall-config.js\";\n\nexport type { DeepRecallConfig } from \"./deep-recall-config.js\";\n\nexport interface DeepRecallEntry {\n memoryId: string;\n /** Trimmed to 500 chars for state rendering; full content only in final output. */\n content: string;\n /** Seed similarity, or expansion inheritance (parent score * 0.8). */\n score: number;\n origin: \"seed\" | \"refine\" | \"expand\";\n /** anchorValue that linked the entry, when origin === \"expand\". */\n viaAnchor?: string;\n}\n\nexport interface DeepRecallFrontierItem {\n nodeId: string;\n title: string;\n /** e.g. `shares anchor \"<anchorValue>\" with <memoryId>`. */\n reason: string;\n sharedAnchorCount: number;\n /** Working-set memory the anchor was shared with; drives expansion scoring. */\n parentMemoryId: string;\n parentScore: number;\n anchorValue: string;\n}\n\nexport interface DeepRecallTraceStep {\n step: number;\n action: \"REFINE\" | \"EXPAND\" | \"STOP\" | \"BUDGET_EXHAUSTED\";\n /** Rewritten query, chosen nodeIds, or stop reason. */\n detail: string;\n workingSetSize: number;\n frontierSize: number;\n durationMs: number;\n}\n\nexport interface DeepRecallResult {\n /** false only for backend failure — NEVER conflated with empty (§22). */\n ok: boolean;\n error?: \"backend_unavailable\" | \"timeout\" | \"disabled\";\n entries: DeepRecallEntry[];\n trace: DeepRecallTraceStep[];\n}\n\nexport interface DeepRecallGraphSnapshot {\n nodes: AbstractionNode[];\n anchors: CueAnchor[];\n}\n\nexport interface DeepRecallSeedHit {\n memoryId: string;\n score: number;\n}\n\nexport type DeepRecallSeedResult =\n | { ok: true; results: DeepRecallSeedHit[] }\n | { ok: false; error: \"backend_unavailable\" };\n\nexport interface DeepRecallMemoryView {\n memoryId: string;\n content: string;\n active: boolean;\n}\n\nexport interface DeepRecallDeps {\n config: DeepRecallConfig;\n /** QMD (or equivalent) seed search. A thrown error means backend failure. */\n searchSeed(query: string, limit: number): Promise<DeepRecallSeedHit[]>;\n /** Nodes + anchors, loaded once per invocation. */\n loadGraph(): Promise<DeepRecallGraphSnapshot>;\n /** Namespace-scoped memory-by-id read; null when absent from the caller's namespace (§30). */\n loadMemory(memoryId: string): Promise<DeepRecallMemoryView | null>;\n /**\n * Raw policy LLM output (JSON text); null when the call failed. The\n * per-call timeout already spans both LLM legs (issue #2915).\n */\n callPolicy(statePrompt: string, timeoutMs: number): Promise<string | null>;\n /**\n * Cancellation from the transport (MCP tools/call cancelled, HTTP client\n * disconnected — issue #2915). Checked before every step and raced against\n * every dependency call; an abort surfaces as a standard AbortError, which\n * both transports already translate (silently end the dead socket / rethrow\n * the cancellation) instead of a partial `ok: true` result.\n */\n signal?: AbortSignal;\n nowMs?(): number;\n}\n\nconst PolicyActionSchema = z.object({\n action: z.enum([\"REFINE\", \"EXPAND\", \"STOP\"]),\n refinedQuery: z.string().optional().nullable(),\n expandNodeIds: z.array(z.string()).optional().nullable(),\n reason: z.string(),\n});\n\ntype PolicyAction = z.infer<typeof PolicyActionSchema>;\n\nconst MAX_SOURCE_MEMORY_IDS_PER_NODE = 5;\nconst EXPAND_SCORE_INHERITANCE = 0.8;\nconst STATE_WORKING_SET_ENTRIES = 12;\nconst STATE_ENTRY_SNIPPET_CHARS = 200;\n\n/** Thrown when the shared whole-invocation deadline expires mid-await. */\nclass DeepRecallDeadlineExceeded extends Error {\n constructor() {\n super(\"deep recall total timeout reached\");\n }\n}\n\n/**\n * Race one dependency call against the SHARED whole-invocation deadline AND\n * the transport cancellation signal — one helper, never two nested races\n * (issue #2915: an early abort return that abandons an already-started\n * deadline timer leaves its eventual rejection unhandled).\n *\n * `deadlineMs` is an absolute instant computed once per invocation, so every\n * await subtracts elapsed time instead of restarting the budget, and a stalled\n * seed search, graph load, or memory read can no longer outlive the documented\n * `totalTimeoutMs` just because the deadline is only *checked* between steps.\n * An infinite deadline (`totalTimeoutMs: 0`, a documented disable value) races\n * only the signal — no timer. The timer stays REFERENCED: it is the only thing\n * keeping the loop alive when the awaited dependency never settles. Every\n * arm is cleared in the `finally`, whichever wins.\n */\nasync function guardCall<T>(\n work: Promise<T>,\n deadlineMs: number,\n signal: AbortSignal | undefined,\n now: () => number,\n): Promise<T> {\n if (signal?.aborted) throw abortError(\"deep recall aborted\");\n if (!Number.isFinite(deadlineMs)) {\n return await raceAbort(work, signal, \"deep recall aborted\");\n }\n const remaining = deadlineMs - now();\n if (remaining <= 0) throw new DeepRecallDeadlineExceeded();\n const expiry = Promise.withResolvers<never>();\n const timer = setTimeout(() => expiry.reject(new DeepRecallDeadlineExceeded()), remaining);\n let onAbort: (() => void) | undefined;\n try {\n const racers: Promise<T | never>[] = [work, expiry.promise];\n if (signal) {\n racers.push(\n new Promise<never>((_resolve, reject) => {\n onAbort = () => reject(abortError(\"deep recall aborted\"));\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }),\n );\n }\n return await Promise.race(racers);\n } finally {\n clearTimeout(timer);\n if (signal && onAbort) signal.removeEventListener(\"abort\", onAbort);\n }\n}\n\nfunction parsePolicyOutput(raw: string | null): PolicyAction | null {\n if (raw === null) return null;\n const candidates = [stripCodeFences(raw), ...extractJsonCandidates(raw)];\n for (const candidate of candidates) {\n if (candidate.trim().length === 0) continue;\n try {\n const parsed = PolicyActionSchema.safeParse(JSON.parse(candidate));\n if (parsed.success) return parsed.data;\n } catch {\n // try the next candidate\n }\n }\n return null;\n}\n\ninterface WorkingEntry extends DeepRecallEntry {\n content: string;\n}\n\nfunction mergeIntoWorkingSet(\n workingSet: Map<string, WorkingEntry>,\n hits: readonly DeepRecallSeedHit[],\n origin: \"seed\" | \"refine\",\n contentFor: (memoryId: string) => string\n): void {\n for (const hit of hits) {\n if (typeof hit.memoryId !== \"string\" || hit.memoryId.length === 0) continue;\n if (typeof hit.score !== \"number\" || !Number.isFinite(hit.score)) continue;\n const existing = workingSet.get(hit.memoryId);\n // Duplicates keep the higher score and the earlier origin (§13: one\n // content form, one merge rule, everywhere).\n if (existing && existing.score >= hit.score) continue;\n workingSet.set(hit.memoryId, {\n memoryId: hit.memoryId,\n content: contentFor(hit.memoryId),\n score: hit.score,\n origin: existing ? existing.origin : origin,\n ...(existing?.viaAnchor ? { viaAnchor: existing.viaAnchor } : {}),\n });\n }\n}\n\ninterface FrontierIndex {\n memoryIdToNodeIds: Map<string, string[]>;\n nodeIdToNode: Map<string, AbstractionNode>;\n nodeIdToAnchorIds: Map<string, string[]>;\n anchorIdToAnchor: Map<string, CueAnchor>;\n}\n\nfunction buildFrontierIndex(graph: DeepRecallGraphSnapshot): FrontierIndex {\n const memoryIdToNodeIds = new Map<string, string[]>();\n const nodeIdToNode = new Map<string, AbstractionNode>();\n for (const node of graph.nodes) {\n nodeIdToNode.set(node.nodeId, node);\n for (const memoryId of node.sourceMemoryIds ?? []) {\n const list = memoryIdToNodeIds.get(memoryId) ?? [];\n list.push(node.nodeId);\n memoryIdToNodeIds.set(memoryId, list);\n }\n }\n const nodeIdToAnchorIds = new Map<string, string[]>();\n const anchorIdToAnchor = new Map<string, CueAnchor>();\n for (const anchor of graph.anchors) {\n anchorIdToAnchor.set(anchor.anchorId, anchor);\n for (const nodeRef of anchor.nodeRefs) {\n const list = nodeIdToAnchorIds.get(nodeRef) ?? [];\n list.push(anchor.anchorId);\n nodeIdToAnchorIds.set(nodeRef, list);\n }\n }\n return { memoryIdToNodeIds, nodeIdToNode, nodeIdToAnchorIds, anchorIdToAnchor };\n}\n\n/**\n * A candidate node adds nothing when every source memory the EXPAND path would\n * load is already in the working set (or when it has none): offering it as an\n * unretrieved candidate lets the policy burn steps re-expanding a node that can\n * only re-add what is already present.\n */\nfunction nodeAddsNothing(node: AbstractionNode, workingSet: ReadonlyMap<string, WorkingEntry>): boolean {\n return (node.sourceMemoryIds ?? [])\n .slice(0, MAX_SOURCE_MEMORY_IDS_PER_NODE)\n .every((memoryId) => workingSet.has(memoryId));\n}\n\n/**\n * Frontier refresh (after every working-set change): for each working-set\n * memory, anchors whose nodeRefs include a node listing that memory make\n * every OTHER referenced node a frontier candidate. `sharedAnchorCount`\n * counts DISTINCT anchors (issue #2915): one anchor adds one no matter how\n * many working-set memories or nodes reach the candidate through it. Ranked\n * by the shared pure helper (shared-anchor count desc, nodeId asc — total\n * comparator).\n *\n * Nodes in `expandedNodeIds` are dropped: a node EXPAND already followed is\n * not an unretrieved candidate, even when some of its source memories never\n * entered the working set (an inactive or foreign read is skipped), so\n * re-offering it would let the policy spend every remaining step adding\n * nothing.\n */\nfunction refreshFrontier(\n workingSet: ReadonlyMap<string, WorkingEntry>,\n graph: FrontierGraph,\n expandedNodeIds: ReadonlySet<string>\n): DeepRecallFrontierItem[] {\n const index = graph.index;\n interface Candidate {\n nodeId: string;\n // Distinct shared anchors ONLY (issue #2915): one anchor counts once no\n // matter how many working-set memories reach the candidate through it,\n // so a candidate sharing one anchor can never outrank one sharing two.\n sharedAnchorIds: Set<string>;\n parentMemoryId: string;\n parentScore: number;\n anchorValue: string;\n }\n const byNodeId = new Map<string, Candidate>();\n for (const [memoryId, entry] of workingSet) {\n for (const nodeId of index.memoryIdToNodeIds.get(memoryId) ?? []) {\n for (const anchorId of index.nodeIdToAnchorIds.get(nodeId) ?? []) {\n const anchor = index.anchorIdToAnchor.get(anchorId);\n if (!anchor) continue;\n for (const otherNodeRef of anchor.nodeRefs) {\n if (otherNodeRef === nodeId) continue;\n if (expandedNodeIds.has(otherNodeRef)) continue;\n const otherNode = index.nodeIdToNode.get(otherNodeRef);\n if (!otherNode || nodeAddsNothing(otherNode, workingSet)) continue;\n const current = byNodeId.get(otherNodeRef);\n if (current === undefined) {\n byNodeId.set(otherNodeRef, {\n nodeId: otherNodeRef,\n sharedAnchorIds: new Set([anchorId]),\n parentMemoryId: memoryId,\n parentScore: entry.score,\n anchorValue: anchor.anchorValue,\n });\n } else {\n current.sharedAnchorIds.add(anchorId);\n if (entry.score > current.parentScore) {\n current.parentMemoryId = memoryId;\n current.parentScore = entry.score;\n current.anchorValue = anchor.anchorValue;\n }\n }\n }\n }\n }\n }\n const ranked = rankDeepRecallFrontier(\n [...byNodeId.values()].map((candidate) => ({\n nodeId: candidate.nodeId,\n sharedAnchorCount: candidate.sharedAnchorIds.size,\n })),\n );\n return ranked.flatMap((rankedCandidate) => {\n const candidate = byNodeId.get(rankedCandidate.nodeId);\n const node = index.nodeIdToNode.get(rankedCandidate.nodeId);\n if (!candidate || !node) return [];\n return [\n {\n nodeId: candidate.nodeId,\n title: node.title,\n reason: `shares anchor \"${candidate.anchorValue}\" with ${candidate.parentMemoryId}`,\n sharedAnchorCount: rankedCandidate.sharedAnchorCount,\n parentMemoryId: candidate.parentMemoryId,\n parentScore: candidate.parentScore,\n anchorValue: candidate.anchorValue,\n },\n ];\n });\n}\n\ninterface FrontierGraph {\n index: FrontierIndex;\n}\n\n\nfunction renderStatePrompt(input: {\n query: string;\n workingSet: ReadonlyMap<string, WorkingEntry>;\n frontier: readonly DeepRecallFrontierItem[];\n stepsRemaining: number;\n}): string {\n const lines: string[] = [\n \"You are guiding a multi-hop memory retrieval loop. Pick exactly one action.\",\n \"REFINE when the retrieved memories look misaligned with the question (return a rewritten query).\",\n \"EXPAND to follow named frontier nodes that plausibly hold the answer (return their nodeIds).\",\n \"STOP when the working set is sufficient to answer.\",\n \"\",\n `QUESTION: ${input.query}`,\n `STEPS REMAINING: ${input.stepsRemaining}`,\n \"\",\n \"WORKING SET (retrieved memories):\",\n ];\n const entries = [...input.workingSet.values()]\n .sort((a, b) => b.score - a.score || compareDeterministicStrings(a.memoryId, b.memoryId))\n .slice(0, STATE_WORKING_SET_ENTRIES);\n if (entries.length === 0) lines.push(\"(empty)\");\n for (const entry of entries) {\n const snippet = entry.content.slice(0, STATE_ENTRY_SNIPPET_CHARS).replace(/\\s+/g, \" \");\n lines.push(`- ${entry.memoryId} (score=${entry.score.toFixed(3)}, origin=${entry.origin}): ${snippet}`);\n }\n lines.push(\"\", \"FRONTIER (anchor-linked candidates not yet retrieved):\");\n if (input.frontier.length === 0) lines.push(\"(empty)\");\n for (const item of input.frontier) {\n lines.push(`- ${item.nodeId}: ${item.title} — ${item.reason}`);\n }\n lines.push(\n \"\",\n 'Respond with JSON only: {\"action\":\"REFINE\",\"refinedQuery\":\"...\",\"reason\":\"...\"}',\n 'or {\"action\":\"EXPAND\",\"expandNodeIds\":[\"...\"],\"reason\":\"...\"}',\n 'or {\"action\":\"STOP\",\"reason\":\"...\"}',\n );\n return lines.join(\"\\n\");\n}\n\nfunction finalRank(entries: readonly DeepRecallEntry[]): DeepRecallEntry[] {\n return [...entries].sort(\n (a, b) => b.score - a.score || compareDeterministicStrings(a.memoryId, b.memoryId)\n );\n}\n\n/**\n * The budgeted loop. Seed (QMD + graph) -> policy steps -> ranked, capped\n * output. Only a SEED backend failure returns `ok: false`; timeout and\n * budget exhaustion mid-loop return the partial working set with\n * `ok: true` and a BUDGET_EXHAUSTED trace tail.\n */\nexport async function runBudgetedDeepRecall(deps: DeepRecallDeps, query: string): Promise<DeepRecallResult> {\n const cfg = deps.config;\n const now = deps.nowMs ?? Date.now;\n const startedMs = now();\n const deadlineMs = cfg.totalTimeoutMs > 0 ? startedMs + cfg.totalTimeoutMs : Number.POSITIVE_INFINITY;\n // Every dependency await races BOTH bounds: the shared whole-invocation\n // deadline and the transport cancellation signal (issue #2915). An abort\n // propagates as a standard AbortError — never as ok:false backend failure\n // and never as a partial result — so each transport applies its own\n // cancelled-response semantics.\n const guarded = <T>(work: Promise<T>): Promise<T> =>\n guardCall(work, deadlineMs, deps.signal, now);\n\n\n const trace: DeepRecallTraceStep[] = [];\n const contentCache = new Map<string, string>();\n const contentFor = (memoryId: string): string => contentCache.get(memoryId) ?? \"\";\n const workingSet = new Map<string, WorkingEntry>();\n let graph: FrontierGraph = { index: buildFrontierIndex({ nodes: [], anchors: [] }) };\n // Nodes already followed by EXPAND leave the frontier for good.\n const expandedNodeIds = new Set<string>();\n /**\n * Hydrate one working-set entry from `loadMemory`, DROPPING it when the read\n * is missing or reports a non-active memory: QMD can still index a memory\n * whose governance status moved out of the active set, and hydrating it\n * would surface content the active-set check excluded.\n */\n const hydrateOrDrop = async (memoryId: string): Promise<void> => {\n const memory = await guarded(deps.loadMemory(memoryId));\n if (!memory || !memory.active) {\n workingSet.delete(memoryId);\n contentCache.delete(memoryId);\n return;\n }\n contentCache.set(memoryId, memory.content);\n const entry = workingSet.get(memoryId);\n if (entry) entry.content = memory.content;\n };\n // Pre-policy work (seed search, graph load, seed hydration) is bounded by the\n // SAME deadline as the policy calls; exhausting it here yields the partial\n // working set rather than blocking the later check from ever running.\n let exhaustedDetail: string | null = null;\n try {\n throwIfAborted(deps.signal, \"deep recall aborted\");\n const seedHits = await guarded(deps.searchSeed(query, cfg.maxResults));\n mergeIntoWorkingSet(workingSet, seedHits, \"seed\", contentFor);\n } catch (err) {\n if (isAbortError(err)) throw err;\n if (!(err instanceof DeepRecallDeadlineExceeded)) {\n // Seed backend failure is the only ok:false path (§22: an empty index\n // proceeds; a thrown search does not).\n return { ok: false, error: \"backend_unavailable\", entries: [], trace: [] };\n }\n exhaustedDetail = \"total timeout reached during seed search\";\n }\n if (exhaustedDetail === null) {\n try {\n graph = { index: buildFrontierIndex(await guarded(deps.loadGraph())) };\n // Seed hydration also enforces the active set: a stale or non-active\n // QMD hit leaves the working set instead of being hydrated in place.\n for (const memoryId of [...workingSet.keys()]) {\n await hydrateOrDrop(memoryId);\n }\n } catch (err) {\n if (isAbortError(err)) throw err;\n if (!(err instanceof DeepRecallDeadlineExceeded)) throw err;\n exhaustedDetail = \"total timeout reached loading the graph or hydrating seeds\";\n }\n }\n\n let frontier = refreshFrontier(workingSet, graph, expandedNodeIds);\n let currentQuery = query;\n let refinesUsed = 0;\n\n const pushStep = (step: number, action: DeepRecallTraceStep[\"action\"], detail: string, stepStartMs: number): void => {\n trace.push({\n step,\n action,\n detail,\n workingSetSize: workingSet.size,\n frontierSize: frontier.length,\n durationMs: Math.max(0, now() - stepStartMs),\n });\n };\n\n if (exhaustedDetail !== null) {\n // Pre-policy work already spent the whole-invocation budget: report the\n // partial working set (ok:true, §22) instead of starting a policy call\n // that cannot finish inside the deadline.\n pushStep(0, \"BUDGET_EXHAUSTED\", exhaustedDetail, startedMs);\n } else if (cfg.maxSteps <= 0) {\n // `maxSteps: 0` is a documented disable value (§33): seed-only retrieval,\n // with no policy call at all. The zero check dominates the step threshold\n // instead of relying on the loop condition falling through.\n pushStep(0, \"STOP\", \"policy loop disabled (maxSteps=0)\", startedMs);\n }\n let step = 0;\n try {\n while (exhaustedDetail === null && cfg.maxSteps > 0 && step < cfg.maxSteps) {\n const stepStartMs = now();\n throwIfAborted(deps.signal, \"deep recall aborted\");\n if (now() >= deadlineMs) {\n pushStep(step, \"BUDGET_EXHAUSTED\", \"total timeout reached before policy call\", stepStartMs);\n break;\n }\n // Two independent axes bound the policy call: its own per-step timeout and\n // whatever is left of the shared deadline. `stepTimeoutMs: 0` disables only\n // its own axis (§33) — a finite total budget still applies, so the call can\n // never outlive `totalTimeoutMs`. `timeoutMs: 0` reaches the policy only\n // when BOTH axes are disabled.\n const stepBudgetMs = cfg.stepTimeoutMs > 0 ? cfg.stepTimeoutMs : Number.POSITIVE_INFINITY;\n const effectiveBudgetMs = Math.min(stepBudgetMs, deadlineMs - now());\n const timeoutMs = Number.isFinite(effectiveBudgetMs) ? Math.max(1, effectiveBudgetMs) : 0;\n const raw = await guarded(\n deps.callPolicy(\n renderStatePrompt({ query: currentQuery, workingSet, frontier, stepsRemaining: cfg.maxSteps - step }),\n timeoutMs\n )\n );\n const parsed = parsePolicyOutput(raw);\n if (parsed === null) {\n pushStep(step, \"STOP\", \"invalid_policy_output\", stepStartMs);\n break;\n }\n if (parsed.action === \"STOP\") {\n pushStep(step, \"STOP\", parsed.reason || \"policy stop\", stepStartMs);\n break;\n }\n if (parsed.action === \"REFINE\") {\n const rewrite = validateRefineRewrite({\n currentQuery,\n refinedQuery: parsed.refinedQuery ?? null,\n refinesUsed,\n });\n if (!rewrite.ok) {\n pushStep(step, \"STOP\", rewrite.reason, stepStartMs);\n break;\n }\n currentQuery = rewrite.refinedQuery;\n refinesUsed += 1;\n try {\n const refinedHits = await guarded(deps.searchSeed(currentQuery, cfg.maxResults));\n mergeIntoWorkingSet(workingSet, refinedHits, \"refine\", contentFor);\n for (const hit of refinedHits) {\n if (workingSet.has(hit.memoryId) && !contentCache.has(hit.memoryId)) {\n await hydrateOrDrop(hit.memoryId);\n }\n }\n } catch (err) {\n // Re-search failure mid-loop is partial, not fatal (§22): the loop\n // keeps what it has and the policy decides the next move. Deadline\n // expiry and cancellation are NOT partial failures — they end the\n // invocation.\n if (err instanceof DeepRecallDeadlineExceeded || isAbortError(err)) throw err;\n }\n frontier = refreshFrontier(workingSet, graph, expandedNodeIds);\n pushStep(step, \"REFINE\", currentQuery, stepStartMs);\n step += 1;\n continue;\n }\n // EXPAND. A configured ceiling of 0 is a documented no-op limit (§33):\n // the action is honored but selects nothing.\n const selection =\n cfg.maxExpandPerStep <= 0\n ? { ok: true as const, nodeIds: [] as string[], truncated: false }\n : selectExpandNodeIds({\n frontierIds: frontier.map((item) => item.nodeId),\n requestedIds: parsed.expandNodeIds ?? [],\n maxExpandPerStep: cfg.maxExpandPerStep,\n });\n if (!selection.ok) {\n pushStep(step, \"STOP\", \"invalid_policy_output\", stepStartMs);\n break;\n }\n const chosen = new Map(frontier.map((item) => [item.nodeId, item]));\n for (const nodeId of selection.nodeIds) {\n const item = chosen.get(nodeId);\n const node = graph.index.nodeIdToNode.get(nodeId);\n if (!item || !node) continue;\n for (const memoryId of (node.sourceMemoryIds ?? []).slice(0, MAX_SOURCE_MEMORY_IDS_PER_NODE)) {\n if (workingSet.has(memoryId)) continue;\n const memory = await guarded(deps.loadMemory(memoryId));\n // Only active memories enter the working set (§41); a null read\n // (foreign namespace, §30) skips the same way.\n if (!memory || !memory.active) continue;\n workingSet.set(memoryId, {\n memoryId,\n content: memory.content,\n score: item.parentScore * EXPAND_SCORE_INHERITANCE,\n origin: \"expand\",\n viaAnchor: item.anchorValue,\n });\n contentCache.set(memoryId, memory.content);\n }\n expandedNodeIds.add(nodeId);\n }\n frontier = refreshFrontier(workingSet, graph, expandedNodeIds);\n pushStep(step, \"EXPAND\", selection.nodeIds.join(\", \"), stepStartMs);\n step += 1;\n }\n } catch (err) {\n if (!(err instanceof DeepRecallDeadlineExceeded)) throw err;\n // A dependency call inside a step outran the shared deadline: the per-step\n // timeout is not the wall clock, so record exhaustion and keep the partial\n // working set. durationMs spans the whole invocation.\n pushStep(step, \"BUDGET_EXHAUSTED\", \"total timeout reached mid-step\", startedMs);\n }\n\n if (cfg.maxSteps > 0 && step >= cfg.maxSteps && trace[trace.length - 1]?.action !== \"STOP\") {\n pushStep(step, \"BUDGET_EXHAUSTED\", \"maxSteps policy calls reached\", startedMs);\n // durationMs for the exhaustion marker is the whole invocation so far.\n const marker = trace[trace.length - 1];\n if (marker) marker.durationMs = Math.max(0, now() - startedMs);\n }\n\n // Final output carries full content; the 200-char trim is state rendering only.\n const entries = finalRank([...workingSet.values()]).map((entry) => ({ ...entry }));\n return {\n ok: true,\n entries: cfg.maxResults > 0 ? entries.slice(0, cfg.maxResults) : [],\n trace,\n };\n}\n"],"mappings":"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","names":["step"]}
@@ -2,7 +2,7 @@ import {
2
2
  SupportPassportError,
3
3
  SupportPassportOwnerCreateGrantRequestSchema,
4
4
  getOperation
5
- } from "./chunk-SFHLQPBF.js";
5
+ } from "./chunk-S4MJTIPG.js";
6
6
 
7
7
  // src/support-passport/access-http.ts
8
8
  var OWNER_ROOT = "/engram/v1/support-passport";
@@ -137,4 +137,4 @@ export {
137
137
  SUPPORT_PASSPORT_OWNER_HTTP_ROUTES,
138
138
  handleSupportPassportOwnerHttp
139
139
  };
140
- //# sourceMappingURL=chunk-J7FVMLBR.js.map
140
+ //# sourceMappingURL=chunk-WZIO3TW6.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-PJKTFXE2.js";
5
5
  import {
6
6
  isSupportPassportPrivateMemory
7
- } from "./chunk-37CAEC7E.js";
7
+ } from "./chunk-PWPIERBM.js";
8
8
  import {
9
9
  isHandleToken
10
10
  } from "./chunk-JAKIDQB2.js";
@@ -189,4 +189,4 @@ export {
189
189
  recallForActiveMemory,
190
190
  getMemoryForActiveMemory
191
191
  };
192
- //# sourceMappingURL=chunk-ZZUVBZL2.js.map
192
+ //# sourceMappingURL=chunk-X2QPKLPL.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildStandup,
3
3
  parseStandupDate
4
- } from "./chunk-HJUP3K6L.js";
4
+ } from "./chunk-DIXZQTGY.js";
5
5
  import {
6
6
  backfillMemoryStorage,
7
7
  runLocationBackfill,
@@ -9,27 +9,27 @@ import {
9
9
  runLocationDay,
10
10
  runLocationStatus,
11
11
  runLocationSync
12
- } from "./chunk-YRIFXXMI.js";
12
+ } from "./chunk-KZJM7R4F.js";
13
13
  import {
14
14
  externalWikiSearchOperation
15
- } from "./chunk-RJQAP333.js";
15
+ } from "./chunk-46RII65S.js";
16
16
  import {
17
17
  DECISION_SUBCOMMANDS,
18
18
  DELTA_SUBCOMMANDS,
19
19
  defineOperation,
20
20
  isCodegraphToolName
21
- } from "./chunk-SFHLQPBF.js";
21
+ } from "./chunk-S4MJTIPG.js";
22
22
  import {
23
23
  CorrectionContractError
24
24
  } from "./chunk-QLK3SL7Q.js";
25
+ import {
26
+ memoryStoreRequestSchema,
27
+ retainedCategoryAlias
28
+ } from "./chunk-DM5CU5J7.js";
25
29
  import {
26
30
  serializeMutations,
27
31
  withHeldFileLock
28
32
  } from "./chunk-FFAZ2XFU.js";
29
- import {
30
- memoryStoreRequestSchema,
31
- retainedCategoryAlias
32
- } from "./chunk-ZX3AYNNV.js";
33
33
  import {
34
34
  EngramAccessInputError
35
35
  } from "./chunk-2Z24E5W2.js";
@@ -1914,4 +1914,4 @@ export {
1914
1914
  codegraphIngestTracesOperation,
1915
1915
  REGISTERED_OPERATIONS
1916
1916
  };
1917
- //# sourceMappingURL=chunk-JAJIMTFB.js.map
1917
+ //# sourceMappingURL=chunk-XRS65T4O.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-SGUDMW2K.js";
11
11
  import {
12
12
  deriveSourceConnector
13
- } from "./chunk-IMBQFHRV.js";
13
+ } from "./chunk-3BLHPQHT.js";
14
14
  import {
15
15
  resolvePipelineProcessingCapabilities
16
16
  } from "./chunk-JUOZ62Y7.js";
@@ -112,4 +112,4 @@ export {
112
112
  renderExtractionConversation,
113
113
  applyGroundingWithConnector
114
114
  };
115
- //# sourceMappingURL=chunk-GO5LOHCD.js.map
115
+ //# sourceMappingURL=chunk-YFXAWGMR.js.map
@@ -1,6 +1,10 @@
1
1
  import {
2
2
  gatewayTaskChainOptions
3
- } from "./chunk-THTF2W7M.js";
3
+ } from "./chunk-TRTLWUDD.js";
4
+ import {
5
+ isAbortError,
6
+ throwIfAborted
7
+ } from "./chunk-BTTPKDIL.js";
4
8
 
5
9
  // src/deep-recall-policy-llm.ts
6
10
  var DEEP_RECALL_POLICY_SYSTEM_PROMPT = "You are the retrieval policy for a long-term memory system. Given the question, the current working set of retrieved memories, and the frontier of anchor-linked candidates, choose exactly one action: REFINE (rewrite the query), EXPAND (follow named frontier nodes), or STOP. Respond with JSON only.";
@@ -9,22 +13,37 @@ async function callDeepRecallPolicyLlm(input) {
9
13
  { role: "system", content: DEEP_RECALL_POLICY_SYSTEM_PROMPT },
10
14
  { role: "user", content: input.statePrompt }
11
15
  ];
12
- const timeout = input.timeoutMs > 0 ? input.timeoutMs : void 0;
16
+ const startedAtMs = Date.now();
17
+ const remainingMs = () => input.timeoutMs > 0 ? input.timeoutMs - (Date.now() - startedAtMs) : void 0;
13
18
  const skipLocal = input.config.modelSource === "gateway";
14
19
  const gatewayChain = gatewayTaskChainOptions(input.config);
20
+ const abortMessage = "deep recall policy call aborted";
21
+ throwIfAborted(input.signal, abortMessage);
15
22
  if (input.localLlm && !skipLocal) {
23
+ const timeout = remainingMs();
24
+ if (timeout !== void 0 && timeout <= 0) {
25
+ return null;
26
+ }
16
27
  try {
17
28
  const result = await input.localLlm.chatCompletion(messages, {
18
29
  temperature: 0.1,
19
30
  maxTokens: 1024,
20
- ...timeout ? { timeoutMs: timeout } : {},
31
+ ...timeout !== void 0 ? { timeoutMs: timeout } : {},
21
32
  responseFormat: { type: "json_object" },
22
- operation: "deep-recall-policy"
33
+ operation: "deep-recall-policy",
34
+ ...input.signal ? { signal: input.signal } : {}
23
35
  });
24
36
  if (result?.content) return result.content;
25
- } catch {
37
+ } catch (err) {
38
+ if (isAbortError(err)) throw err;
39
+ throwIfAborted(input.signal, abortMessage);
26
40
  }
27
41
  }
42
+ throwIfAborted(input.signal, abortMessage);
43
+ const remaining = remainingMs();
44
+ if (remaining !== void 0 && remaining <= 0) {
45
+ return null;
46
+ }
28
47
  if (input.fallbackLlm) {
29
48
  try {
30
49
  const result = await input.fallbackLlm.chatCompletion(
@@ -32,14 +51,18 @@ async function callDeepRecallPolicyLlm(input) {
32
51
  {
33
52
  temperature: 0.1,
34
53
  maxTokens: 1024,
35
- ...timeout ? { timeoutMs: timeout } : {},
36
- ...gatewayChain
54
+ ...remaining !== void 0 ? { timeoutMs: remaining } : {},
55
+ ...gatewayChain,
56
+ ...input.signal ? { signal: input.signal } : {}
37
57
  }
38
58
  );
39
59
  if (result?.content) return result.content;
40
- } catch {
60
+ } catch (err) {
61
+ if (isAbortError(err)) throw err;
62
+ throwIfAborted(input.signal, abortMessage);
41
63
  }
42
64
  }
65
+ throwIfAborted(input.signal, abortMessage);
43
66
  return null;
44
67
  }
45
68
 
@@ -47,4 +70,4 @@ export {
47
70
  DEEP_RECALL_POLICY_SYSTEM_PROMPT,
48
71
  callDeepRecallPolicyLlm
49
72
  };
50
- //# sourceMappingURL=chunk-ZRMMXWYI.js.map
73
+ //# sourceMappingURL=chunk-YR5QT4SR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/deep-recall-policy-llm.ts"],"sourcesContent":["/**\n * Policy-call LLM routing for deep recall (issue #2332).\n *\n * Mirrors `extraction-judge.ts` `callJudgeLlm` exactly: local client first\n * (json_object response format) unless modelSource is \"gateway\", then the\n * fallback client with the shared background-task chain options. Never a\n * raw OpenAI client. Returns null when both legs fail — the loop treats\n * that as a stop, never a crash.\n *\n * One `timeoutMs` budget spans BOTH legs (issue #2915): the fallback leg\n * receives only what the local leg left on the clock, so a single policy\n * step can no longer outlive `stepTimeoutMs` by failing slowly locally and\n * restarting the full timeout remotely. A spent budget starts neither leg.\n * The transport cancellation signal is forwarded to both legs and checked\n * before each start and after each caught failure so an abort is never\n * converted to null.\n */\n\nimport { gatewayTaskChainOptions, type FallbackLlmClient } from \"./fallback-llm.js\";\nimport type { LocalLlmClient } from \"./local-llm.js\";\nimport type { PluginConfig } from \"./types.js\";\nimport { isAbortError, throwIfAborted } from \"./abort-error.js\";\n\nexport const DEEP_RECALL_POLICY_SYSTEM_PROMPT =\n \"You are the retrieval policy for a long-term memory system. Given the question, the current working set of retrieved memories, and the frontier of anchor-linked candidates, choose exactly one action: REFINE (rewrite the query), EXPAND (follow named frontier nodes), or STOP. Respond with JSON only.\";\n\nexport async function callDeepRecallPolicyLlm(input: {\n statePrompt: string;\n config: PluginConfig;\n localLlm: LocalLlmClient | null;\n fallbackLlm: FallbackLlmClient | null;\n timeoutMs: number;\n /** Transport cancellation (issue #2915); forwarded to both LLM legs. */\n signal?: AbortSignal;\n}): Promise<string | null> {\n const messages: Array<{ role: \"system\" | \"user\"; content: string }> = [\n { role: \"system\", content: DEEP_RECALL_POLICY_SYSTEM_PROMPT },\n { role: \"user\", content: input.statePrompt },\n ];\n const startedAtMs = Date.now();\n const remainingMs = (): number | undefined =>\n input.timeoutMs > 0 ? input.timeoutMs - (Date.now() - startedAtMs) : undefined;\n const skipLocal = input.config.modelSource === \"gateway\";\n const gatewayChain = gatewayTaskChainOptions(input.config);\n const abortMessage = \"deep recall policy call aborted\";\n\n throwIfAborted(input.signal, abortMessage);\n\n if (input.localLlm && !skipLocal) {\n const timeout = remainingMs();\n if (timeout !== undefined && timeout <= 0) {\n return null;\n }\n try {\n const result = await input.localLlm.chatCompletion(messages, {\n temperature: 0.1,\n maxTokens: 1024,\n ...(timeout !== undefined ? { timeoutMs: timeout } : {}),\n responseFormat: { type: \"json_object\" },\n operation: \"deep-recall-policy\",\n ...(input.signal ? { signal: input.signal } : {}),\n });\n if (result?.content) return result.content;\n } catch (err) {\n if (isAbortError(err)) throw err;\n throwIfAborted(input.signal, abortMessage);\n }\n }\n\n throwIfAborted(input.signal, abortMessage);\n const remaining = remainingMs();\n if (remaining !== undefined && remaining <= 0) {\n return null;\n }\n if (input.fallbackLlm) {\n try {\n const result = await input.fallbackLlm.chatCompletion(\n messages as Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n {\n temperature: 0.1,\n maxTokens: 1024,\n ...(remaining !== undefined ? { timeoutMs: remaining } : {}),\n ...gatewayChain,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n if (result?.content) return result.content;\n } catch (err) {\n if (isAbortError(err)) throw err;\n throwIfAborted(input.signal, abortMessage);\n }\n }\n throwIfAborted(input.signal, abortMessage);\n return null;\n}\n"],"mappings":";;;;;;;;;AAuBO,IAAM,mCACX;AAEF,eAAsB,wBAAwB,OAQnB;AACzB,QAAM,WAAgE;AAAA,IACpE,EAAE,MAAM,UAAU,SAAS,iCAAiC;AAAA,IAC5D,EAAE,MAAM,QAAQ,SAAS,MAAM,YAAY;AAAA,EAC7C;AACA,QAAM,cAAc,KAAK,IAAI;AAC7B,QAAM,cAAc,MAClB,MAAM,YAAY,IAAI,MAAM,aAAa,KAAK,IAAI,IAAI,eAAe;AACvE,QAAM,YAAY,MAAM,OAAO,gBAAgB;AAC/C,QAAM,eAAe,wBAAwB,MAAM,MAAM;AACzD,QAAM,eAAe;AAErB,iBAAe,MAAM,QAAQ,YAAY;AAEzC,MAAI,MAAM,YAAY,CAAC,WAAW;AAChC,UAAM,UAAU,YAAY;AAC5B,QAAI,YAAY,UAAa,WAAW,GAAG;AACzC,aAAO;AAAA,IACT;AACA,QAAI;AACF,YAAM,SAAS,MAAM,MAAM,SAAS,eAAe,UAAU;AAAA,QAC3D,aAAa;AAAA,QACb,WAAW;AAAA,QACX,GAAI,YAAY,SAAY,EAAE,WAAW,QAAQ,IAAI,CAAC;AAAA,QACtD,gBAAgB,EAAE,MAAM,cAAc;AAAA,QACtC,WAAW;AAAA,QACX,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;AAAA,MACjD,CAAC;AACD,UAAI,QAAQ,QAAS,QAAO,OAAO;AAAA,IACrC,SAAS,KAAK;AACZ,UAAI,aAAa,GAAG,EAAG,OAAM;AAC7B,qBAAe,MAAM,QAAQ,YAAY;AAAA,IAC3C;AAAA,EACF;AAEA,iBAAe,MAAM,QAAQ,YAAY;AACzC,QAAM,YAAY,YAAY;AAC9B,MAAI,cAAc,UAAa,aAAa,GAAG;AAC7C,WAAO;AAAA,EACT;AACA,MAAI,MAAM,aAAa;AACrB,QAAI;AACF,YAAM,SAAS,MAAM,MAAM,YAAY;AAAA,QACrC;AAAA,QACA;AAAA,UACE,aAAa;AAAA,UACb,WAAW;AAAA,UACX,GAAI,cAAc,SAAY,EAAE,WAAW,UAAU,IAAI,CAAC;AAAA,UAC1D,GAAG;AAAA,UACH,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;AAAA,QACjD;AAAA,MACF;AACA,UAAI,QAAQ,QAAS,QAAO,OAAO;AAAA,IACrC,SAAS,KAAK;AACZ,UAAI,aAAa,GAAG,EAAG,OAAM;AAC7B,qBAAe,MAAM,QAAQ,YAAY;AAAA,IAC3C;AAAA,EACF;AACA,iBAAe,MAAM,QAAQ,YAAY;AACzC,SAAO;AACT;","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  envelopeToFrontmatterLines,
5
5
  resolveReadAuthority,
6
6
  resolveWriteOrigin
7
- } from "./chunk-CC37E3QM.js";
7
+ } from "./chunk-QKCXRS5A.js";
8
8
  import {
9
9
  resolveConversationContextCapabilities
10
10
  } from "./chunk-JUOZ62Y7.js";
@@ -459,7 +459,8 @@ var SharedContextManager = class {
459
459
  authority: opts.authority,
460
460
  expiresAt: opts.expiresAt,
461
461
  supersedes: opts.supersedes,
462
- allowBinding: this.allowBindingAuthority
462
+ allowBinding: this.allowBindingAuthority,
463
+ nowMs: createdAt.getTime()
463
464
  });
464
465
  const dir = path.join(this.outputsDir, agentPathSegment, date);
465
466
  await mkdir(dir, { recursive: true });
@@ -754,4 +755,4 @@ export {
754
755
  resolveSharedContextDir,
755
756
  SharedContextManager
756
757
  };
757
- //# sourceMappingURL=chunk-CARRTDKC.js.map
758
+ //# sourceMappingURL=chunk-Z22M4JCY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shared-context/manager.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { mkdir, readFile, readdir, appendFile, writeFile, stat, rename, rm } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { z } from \"zod\";\nimport { log } from \"../logger.js\";\nimport type { PluginConfig } from \"../types.js\";\nimport { expandTildePath } from \"../utils/path.js\";\nimport { resolveConversationContextCapabilities } from \"../capabilities.js\";\nimport { throwIfAborted } from \"../abort-error.js\";\nimport {\n composeWriteEnvelope,\n envelopeFromScalars,\n envelopeToFrontmatterLines,\n resolveReadAuthority,\n resolveWriteOrigin,\n} from \"./envelope-io.js\";\nimport type { SharedAuthority, SharedEnvelope } from \"./governance.js\";\n\nexport const SharedFeedbackEntrySchema = z.object({\n agent: z.string().min(1),\n decision: z.enum([\"approved\", \"approved_with_feedback\", \"rejected\"]),\n reason: z.string().min(1),\n date: z.string().min(8), // ISO-ish; keep loose\n learning: z.string().optional(),\n outcome: z.string().optional(),\n severity: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n confidence: z.number().min(0).max(1).optional(),\n workflow: z.string().min(1).optional(),\n tags: z.array(z.string().min(1)).optional(),\n evidenceWindowStart: z.string().min(8).optional(),\n evidenceWindowEnd: z.string().min(8).optional(),\n refs: z.array(z.string()).optional(),\n});\n\nexport type SharedFeedbackEntry = z.infer<typeof SharedFeedbackEntrySchema>;\n\nfunction safeSlug(s: string): string {\n let slug = s.toLowerCase().replace(/[^a-z0-9]+/g, \"-\");\n // Trim leading/trailing dashes without ReDoS-prone anchored quantifiers\n let start = 0;\n while (start < slug.length && slug[start] === \"-\") start++;\n let end = slug.length;\n while (end > start && slug[end - 1] === \"-\") end--;\n return slug.slice(start, end).slice(0, 80) || \"output\";\n}\n\nfunction safePathSegment(s: string, label: string): string {\n if (s.length === 0) throw new Error(`${label} must not be empty`);\n if (/[\\r\\n]/.test(s)) throw new Error(`${label} must not contain line breaks`);\n const encoded = encodeURIComponent(s);\n if (encoded === \".\" || encoded === \"..\") {\n return encoded.replace(/\\./g, \"%2E\");\n }\n return encoded;\n}\n\nfunction safeDecodePathSegment(s: string): string {\n try {\n return decodeURIComponent(s);\n } catch {\n return s;\n }\n}\n\nfunction normalizeFrontmatterScalar(value: string): string {\n if (value.length >= 2 && value.startsWith('\"') && value.endsWith('\"')) {\n try {\n const parsed = JSON.parse(value);\n if (typeof parsed === \"string\") return parsed;\n } catch {\n // Fall through to the legacy partial unescape below.\n }\n return value.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, \"\\\\\");\n }\n if (value.length >= 2 && value.startsWith(\"'\") && value.endsWith(\"'\")) {\n return value.slice(1, -1).replace(/''/g, \"'\");\n }\n return value;\n}\n\nfunction formatFrontmatterScalar(value: string): string {\n return JSON.stringify(value);\n}\n\nfunction readFrontmatterScalar(raw: string, key: string): string | null {\n const frontmatter = raw.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---(?:\\r?\\n|$)/)?.[1];\n if (!frontmatter) return null;\n for (const line of frontmatter.split(/\\r?\\n/)) {\n if (!line.startsWith(`${key}:`)) continue;\n const value = line.slice(key.length + 1).trim();\n return value ? normalizeFrontmatterScalar(value) : null;\n }\n return null;\n}\n\nfunction ymd(d: Date): string {\n return d.toISOString().slice(0, 10);\n}\n\nfunction safeDateSegment(date: string): string {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(date)) {\n throw new Error(`Invalid shared-context date: ${JSON.stringify(date)}; expected YYYY-MM-DD`);\n }\n const parsed = new Date(`${date}T00:00:00.000Z`);\n if (!Number.isFinite(parsed.getTime()) || parsed.toISOString().slice(0, 10) !== date) {\n throw new Error(`Invalid shared-context date: ${JSON.stringify(date)}; expected a real calendar date`);\n }\n return date;\n}\n\nconst CROSS_SIGNAL_STOPWORDS = new Set([\n \"a\",\n \"an\",\n \"and\",\n \"are\",\n \"as\",\n \"at\",\n \"be\",\n \"by\",\n \"for\",\n \"from\",\n \"has\",\n \"have\",\n \"in\",\n \"is\",\n \"it\",\n \"of\",\n \"on\",\n \"or\",\n \"that\",\n \"the\",\n \"this\",\n \"to\",\n \"was\",\n \"were\",\n \"with\",\n \"agent\",\n \"output\",\n \"today\",\n \"daily\",\n \"notes\",\n \"note\",\n \"summary\",\n]);\n\nfunction extractTopicTokens(text: string, maxTokens: number = 12): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n const tokens = text\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, \" \")\n .split(/\\s+/)\n .map((token) => token.trim())\n .filter((token) => token.length >= 4)\n .filter((token) => !CROSS_SIGNAL_STOPWORDS.has(token));\n\n for (const token of tokens) {\n if (seen.has(token)) continue;\n seen.add(token);\n out.push(token);\n if (out.length >= maxTokens) break;\n }\n return out;\n}\n\nfunction stripYamlFrontmatter(text: string): string {\n if (!text.startsWith(\"---\\n\")) return text;\n const closing = text.indexOf(\"\\n---\\n\", 4);\n if (closing === -1) return text;\n return text.slice(closing + 5);\n}\n\nfunction semanticRoot(token: string): string {\n let root = token.toLowerCase();\n if (root.endsWith(\"izations\") && root.length > 9) {\n root = `${root.slice(0, -8)}ize`;\n }\n else if (root.endsWith(\"ization\") && root.length > 8) {\n root = `${root.slice(0, -7)}ize`;\n } else if (root.endsWith(\"isations\") && root.length > 9) {\n root = `${root.slice(0, -8)}ise`;\n } else if (root.endsWith(\"isation\") && root.length > 8) {\n root = `${root.slice(0, -7)}ise`;\n } else {\n const suffixes = [\n \"ations\",\n \"ation\",\n \"ments\",\n \"ment\",\n \"ingly\",\n \"edly\",\n \"ings\",\n \"ing\",\n \"ers\",\n \"er\",\n \"ies\",\n \"ied\",\n \"ions\",\n \"ion\",\n \"es\",\n \"ed\",\n \"s\",\n ];\n for (const suffix of suffixes) {\n if (root.length > suffix.length + 3 && root.endsWith(suffix)) {\n root = root.slice(0, -suffix.length);\n break;\n }\n }\n }\n if (root.length > 4 && root.endsWith(\"e\")) {\n root = root.slice(0, -1);\n }\n return root;\n}\n\nfunction mergeOverlaps(\n base: SharedCrossSignalOverlap[],\n extra: SharedCrossSignalOverlap[],\n): SharedCrossSignalOverlap[] {\n const merged = new Map<string, { agents: Set<string>; sourcePaths: Set<string> }>();\n for (const entry of [...base, ...extra]) {\n const existing = merged.get(entry.token);\n if (existing) {\n for (const agent of entry.agents) existing.agents.add(agent);\n for (const sourcePath of entry.sourcePaths) existing.sourcePaths.add(sourcePath);\n } else {\n merged.set(entry.token, {\n agents: new Set(entry.agents),\n sourcePaths: new Set(entry.sourcePaths),\n });\n }\n }\n return [...merged.entries()]\n .map(([token, value]) => ({\n token,\n agents: [...value.agents].sort(),\n sourcePaths: [...value.sourcePaths].sort(),\n agentCount: value.agents.size,\n }))\n .filter((entry) => entry.agentCount >= 2)\n .sort((a, b) => b.agentCount - a.agentCount || a.token.localeCompare(b.token));\n}\n\nasync function computeSemanticOverlapCandidates(\n sources: SharedCrossSignalSource[],\n maxCandidates: number,\n timeoutAtMs: number,\n): Promise<{ overlaps: SharedCrossSignalOverlap[]; candidateCount: number; timedOut: boolean }> {\n const tokenRows: Array<{ token: string; agent: string; path: string }> = [];\n for (const source of sources) {\n for (const token of source.topics) {\n if (Date.now() >= timeoutAtMs) return { overlaps: [], candidateCount: tokenRows.length, timedOut: true };\n await new Promise<void>((resolve) => setImmediate(resolve));\n tokenRows.push({ token, agent: source.agent, path: source.path });\n if (tokenRows.length >= maxCandidates) break;\n }\n if (tokenRows.length >= maxCandidates) break;\n }\n\n const byRoot = new Map<string, Map<string, { agents: Set<string>; paths: Set<string> }>>();\n for (const row of tokenRows) {\n if (Date.now() >= timeoutAtMs) return { overlaps: [], candidateCount: tokenRows.length, timedOut: true };\n await new Promise<void>((resolve) => setImmediate(resolve));\n const root = semanticRoot(row.token);\n if (root.length < 4) continue;\n const rootGroup = byRoot.get(root) ?? new Map<string, { agents: Set<string>; paths: Set<string> }>();\n const tokenGroup = rootGroup.get(row.token) ?? { agents: new Set<string>(), paths: new Set<string>() };\n tokenGroup.agents.add(row.agent);\n tokenGroup.paths.add(row.path);\n rootGroup.set(row.token, tokenGroup);\n byRoot.set(root, rootGroup);\n }\n\n const overlaps: SharedCrossSignalOverlap[] = [];\n for (const [root, tokenMap] of byRoot.entries()) {\n if (Date.now() >= timeoutAtMs) return { overlaps: [], candidateCount: tokenRows.length, timedOut: true };\n await new Promise<void>((resolve) => setImmediate(resolve));\n if (tokenMap.size < 2) continue;\n const agents = new Set<string>();\n const sourcePaths = new Set<string>();\n for (const value of tokenMap.values()) {\n for (const agent of value.agents) agents.add(agent);\n for (const sourcePath of value.paths) sourcePaths.add(sourcePath);\n }\n if (agents.size < 2) continue;\n overlaps.push({\n token: `semantic:${root}`,\n agents: [...agents].sort(),\n sourcePaths: [...sourcePaths].sort(),\n agentCount: agents.size,\n });\n }\n\n overlaps.sort((a, b) => b.agentCount - a.agentCount || a.token.localeCompare(b.token));\n return {\n overlaps,\n candidateCount: tokenRows.length,\n timedOut: false,\n };\n}\n\nasync function computeSemanticOverlapsWithTimeout(\n sources: SharedCrossSignalSource[],\n timeoutMs: number,\n maxCandidates: number,\n): Promise<{ overlaps: SharedCrossSignalOverlap[]; candidateCount: number; timedOut: boolean }> {\n const safeTimeoutMs = Math.max(1, Math.floor(timeoutMs));\n const safeMaxCandidates = Math.max(0, Math.floor(maxCandidates));\n if (safeMaxCandidates === 0 || sources.length === 0) {\n return { overlaps: [], candidateCount: 0, timedOut: false };\n }\n const timeoutAtMs = Date.now() + safeTimeoutMs;\n return computeSemanticOverlapCandidates(sources, safeMaxCandidates, timeoutAtMs);\n}\n\ninterface SharedCrossSignalSource {\n agent: string;\n path: string;\n title: string;\n topics: string[];\n /** Resolved least-privilege authority from the item's envelope (issue #1957). */\n authority: SharedAuthority;\n /** Envelope origin agent id; legacy items fall back to the agent field. */\n sharedBy: string;\n}\n\ninterface SharedCrossSignalOverlap {\n token: string;\n agents: string[];\n sourcePaths: string[];\n agentCount: number;\n}\n\ninterface SharedCrossSignalReport {\n date: string;\n generatedAt: string;\n sourceCount: number;\n feedbackCount: number;\n feedbackByDecision: Record<\"approved\" | \"approved_with_feedback\" | \"rejected\", number>;\n feedbackEntries: SharedFeedbackEntry[];\n sources: SharedCrossSignalSource[];\n overlaps: SharedCrossSignalOverlap[];\n semantic: {\n enabled: boolean;\n applied: boolean;\n timedOut: boolean;\n candidateCount: number;\n maxCandidates: number;\n addedOverlapCount: number;\n };\n}\n\nexport interface SharedCrossSignalSynthesisResult {\n date: string;\n crossSignalsPath: string;\n crossSignalsMarkdownPath: string;\n overlapCount: number;\n report: SharedCrossSignalReport;\n}\n\nexport interface SharedDailyCurationResult {\n date: string;\n roundtablePath: string;\n crossSignalsPath: string;\n crossSignalsMarkdownPath: string;\n overlapCount: number;\n}\n\nfunction feedbackDecisionPriority(decision: SharedFeedbackEntry[\"decision\"]): number {\n switch (decision) {\n case \"rejected\":\n return 3;\n case \"approved_with_feedback\":\n return 2;\n case \"approved\":\n return 1;\n }\n}\n\nfunction feedbackSeverityPriority(severity: SharedFeedbackEntry[\"severity\"]): number {\n switch (severity) {\n case \"high\":\n return 3;\n case \"medium\":\n return 2;\n case \"low\":\n return 1;\n default:\n return 0;\n }\n}\n\nfunction compareFeedbackPriority(a: SharedFeedbackEntry, b: SharedFeedbackEntry): number {\n return (\n feedbackDecisionPriority(b.decision) - feedbackDecisionPriority(a.decision)\n || feedbackSeverityPriority(b.severity) - feedbackSeverityPriority(a.severity)\n || a.date.localeCompare(b.date)\n );\n}\n\nfunction markdownLineText(value: string): string {\n return value.replace(/[\\r\\n]+/g, \" \").replace(/\\s+/g, \" \").trim();\n}\n\nfunction markdownLineList(values: readonly string[]): string {\n return values.map(markdownLineText).filter(Boolean).join(\", \");\n}\n\nfunction formatFeedbackLine(entry: SharedFeedbackEntry): string {\n const extras: string[] = [`feedback: ${markdownLineText(entry.date)}`];\n if (entry.severity) extras.push(`severity: ${markdownLineText(entry.severity)}`);\n if (entry.refs?.length) extras.push(`refs: ${markdownLineList(entry.refs)}`);\n return `- [${markdownLineText(entry.agent)}] ${entry.decision}: ${markdownLineText(entry.reason)} [${extras.join(\"; \")}]`;\n}\n\nfunction formatOverlapLine(entry: SharedCrossSignalOverlap): string {\n return `- \\`${entry.token}\\` (${entry.agentCount} agents: ${markdownLineList(entry.agents)}) [sources: ${markdownLineList(entry.sourcePaths)}]`;\n}\n\nasync function writeFileAtomic(filePath: string, content: string): Promise<void> {\n await mkdir(path.dirname(filePath), { recursive: true });\n const tempPath = path.join(\n path.dirname(filePath),\n `.${path.basename(filePath)}.${process.pid}.${randomUUID()}.tmp`,\n );\n try {\n await writeFile(tempPath, content, { encoding: \"utf-8\", flag: \"wx\" });\n await rename(tempPath, filePath);\n } catch (error) {\n await rm(tempPath, { force: true }).catch(() => undefined);\n throw error;\n }\n}\n\nexport function resolveSharedContextDir(config: PluginConfig): string {\n return typeof config.sharedContextDir === \"string\" && config.sharedContextDir.length > 0\n ? expandTildePath(config.sharedContextDir)\n : path.join(expandTildePath(config.workspaceDir), \"shared-context\");\n}\n\nexport class SharedContextManager {\n readonly dir: string;\n private readonly prioritiesPath: string;\n private readonly prioritiesInboxPath: string;\n private readonly outputsDir: string;\n private readonly roundtableDir: string;\n private readonly feedbackDir: string;\n private readonly feedbackInboxPath: string;\n private readonly crossSignalsDir: string;\n private readonly allowBindingAuthority: boolean;\n private readonly dailySynthesisChains = new Map<string, Promise<void>>();\n\n constructor(private readonly config: PluginConfig) {\n const base = resolveSharedContextDir(config);\n\n this.dir = base;\n this.prioritiesPath = path.join(base, \"priorities.md\");\n this.prioritiesInboxPath = path.join(base, \"priorities.inbox.md\");\n this.outputsDir = path.join(base, \"agent-outputs\");\n this.roundtableDir = path.join(base, \"roundtable\");\n this.feedbackDir = path.join(base, \"feedback\");\n this.feedbackInboxPath = path.join(this.feedbackDir, \"inbox.jsonl\");\n this.crossSignalsDir = path.join(base, \"cross-signals\");\n this.allowBindingAuthority = config.sharedContextAllowBindingAuthority === true;\n }\n\n async ensureStructure(): Promise<void> {\n await mkdir(this.dir, { recursive: true });\n await mkdir(this.outputsDir, { recursive: true });\n await mkdir(this.roundtableDir, { recursive: true });\n await mkdir(this.feedbackDir, { recursive: true });\n await mkdir(this.crossSignalsDir, { recursive: true });\n await mkdir(path.join(this.dir, \"staging\"), { recursive: true });\n await mkdir(path.join(this.dir, \"kpis\"), { recursive: true });\n await mkdir(path.join(this.dir, \"calendar\"), { recursive: true });\n await mkdir(path.join(this.dir, \"content-calendar\"), { recursive: true });\n\n // Bootstrap files if missing.\n await this.ensureFile(\n this.prioritiesPath,\n [\n \"# Priorities\",\n \"\",\n \"This is the shared priority stack. Agents should read this before acting.\",\n \"\",\n \"## Current\",\n \"- (empty)\",\n \"\",\n \"## Notes\",\n \"- (empty)\",\n \"\",\n ].join(\"\\n\"),\n );\n await this.ensureFile(\n this.prioritiesInboxPath,\n [\n \"# Priorities Inbox\",\n \"\",\n \"Append-only inbox. Curator merges into priorities.md.\",\n \"\",\n ].join(\"\\n\"),\n );\n await this.ensureFile(this.feedbackInboxPath, \"\");\n }\n\n private async ensureFile(fp: string, content: string): Promise<void> {\n try {\n await stat(fp);\n } catch {\n await writeFile(fp, content, \"utf-8\");\n }\n }\n\n async readPriorities(signal?: AbortSignal): Promise<string> {\n throwIfAborted(signal, \"shared context priorities read aborted\");\n try {\n const content = await readFile(this.prioritiesPath, { encoding: \"utf-8\", signal });\n throwIfAborted(signal, \"shared context priorities read aborted\");\n return content;\n } catch {\n throwIfAborted(signal, \"shared context priorities read aborted\");\n return \"\";\n }\n }\n\n async readLatestRoundtable(signal?: AbortSignal): Promise<string> {\n throwIfAborted(signal, \"shared context roundtable read aborted\");\n try {\n const files = (await readdir(this.roundtableDir))\n .filter((f) => f.endsWith(\".md\"))\n .sort()\n .reverse();\n throwIfAborted(signal, \"shared context roundtable read aborted\");\n const fp = files[0] ? path.join(this.roundtableDir, files[0]) : null;\n if (!fp) return \"\";\n const content = await readFile(fp, { encoding: \"utf-8\", signal });\n throwIfAborted(signal, \"shared context roundtable read aborted\");\n return content;\n } catch {\n throwIfAborted(signal, \"shared context roundtable read aborted\");\n return \"\";\n }\n }\n\n async readLatestCrossSignals(signal?: AbortSignal): Promise<string> {\n throwIfAborted(signal, \"shared context cross-signals read aborted\");\n try {\n const files = (await readdir(this.crossSignalsDir))\n .filter((f) => f.endsWith(\".md\"))\n .sort()\n .reverse();\n throwIfAborted(signal, \"shared context cross-signals read aborted\");\n const fp = files[0] ? path.join(this.crossSignalsDir, files[0]) : null;\n if (!fp) return \"\";\n const content = await readFile(fp, { encoding: \"utf-8\", signal });\n throwIfAborted(signal, \"shared context cross-signals read aborted\");\n return content;\n } catch {\n throwIfAborted(signal, \"shared context cross-signals read aborted\");\n return \"\";\n }\n }\n\n async writeAgentOutput(opts: {\n agentId: string;\n title: string;\n content: string;\n createdAt?: Date;\n /** Envelope authority class (issue #1957). Unrecognized values throw. */\n authority?: string;\n /** Optional ISO-8601 expiry stamped on the item. */\n expiresAt?: string;\n /** Optional id of the shared item this output supersedes. */\n supersedes?: string;\n /**\n * Server-resolved identity of the caller, supplied by the access\n * surface (issue #1957 review). When present it IS both the producer\n * and the envelope origin; a disagreeing caller-supplied `agentId` is\n * rejected so no caller can publish as another agent.\n */\n authenticatedIdentity?: string;\n /**\n * Server-owned origin token for a write that crosses an external\n * boundary but resolved no identity (issue #1957 review round 4).\n * Stamped as the envelope origin (`sharedBy`); the caller label stays\n * the producer so grouping never collapses.\n */\n unattributedOrigin?: string;\n }): Promise<string> {\n const identity = resolveWriteOrigin({\n agentId: opts.agentId,\n authenticatedIdentity: opts.authenticatedIdentity,\n unattributedOrigin: opts.unattributedOrigin,\n });\n const createdAt = opts.createdAt ?? new Date();\n const date = ymd(createdAt);\n const time = createdAt.toISOString().slice(11, 19).replace(/:/g, \"\");\n const slug = safeSlug(opts.title);\n const agentPathSegment = safePathSegment(identity.agent, \"agentId\");\n\n const envelope = composeWriteEnvelope({\n origin: identity.origin,\n authority: opts.authority,\n expiresAt: opts.expiresAt,\n supersedes: opts.supersedes,\n allowBinding: this.allowBindingAuthority,\n nowMs: createdAt.getTime(),\n });\n\n const dir = path.join(this.outputsDir, agentPathSegment, date);\n await mkdir(dir, { recursive: true });\n\n const body = [\n \"---\",\n \"kind: agent_output\",\n `agent: ${formatFrontmatterScalar(identity.agent)}`,\n `createdAt: ${createdAt.toISOString()}`,\n `title: ${formatFrontmatterScalar(opts.title.replace(/\\n/g, \" \").slice(0, 200))}`,\n ...envelopeToFrontmatterLines(envelope),\n \"---\",\n \"\",\n opts.content.trimEnd(),\n \"\",\n ].join(\"\\n\");\n\n for (let attempt = 0; attempt < 100; attempt++) {\n const suffix = attempt === 0 ? \"\" : `-${attempt + 1}`;\n const fp = path.join(dir, `${time}-${slug}${suffix}.md`);\n try {\n await writeFile(fp, body, { encoding: \"utf-8\", flag: \"wx\" });\n return fp;\n } catch (error) {\n if (error instanceof Error && \"code\" in error && error.code === \"EEXIST\") continue;\n throw error;\n }\n }\n\n throw new Error(`Unable to allocate unique shared-context output path for ${identity.agent}`);\n }\n\n async appendFeedback(entry: SharedFeedbackEntry): Promise<void> {\n const parsed = SharedFeedbackEntrySchema.parse(entry);\n await appendFile(this.feedbackInboxPath, JSON.stringify(parsed) + \"\\n\", \"utf-8\");\n }\n\n async appendPrioritiesInbox(opts: { agentId: string; text: string }): Promise<void> {\n const stamp = new Date().toISOString();\n const lines = [\n \"\",\n `## ${stamp} (${opts.agentId})`,\n \"\",\n opts.text.trimEnd(),\n \"\",\n ].join(\"\\n\");\n await appendFile(this.prioritiesInboxPath, lines, \"utf-8\");\n }\n\n private async withDailySynthesisLock<T>(date: string, fn: () => Promise<T>): Promise<T> {\n const previous = this.dailySynthesisChains.get(date) ?? Promise.resolve();\n let releaseCurrent!: () => void;\n const current = new Promise<void>((resolve) => {\n releaseCurrent = resolve;\n });\n const queued = previous.catch(() => undefined).then(() => current);\n this.dailySynthesisChains.set(date, queued);\n await previous.catch(() => undefined);\n try {\n return await fn();\n } finally {\n releaseCurrent();\n if (this.dailySynthesisChains.get(date) === queued) {\n this.dailySynthesisChains.delete(date);\n }\n }\n }\n\n async synthesizeCrossSignals(opts: {\n date?: string;\n maxSummaryItems?: number;\n }): Promise<SharedCrossSignalSynthesisResult> {\n const date = safeDateSegment(opts.date ?? ymd(new Date()));\n return this.withDailySynthesisLock(date, () => this.synthesizeCrossSignalsUnlocked({\n date,\n maxSummaryItems: opts.maxSummaryItems,\n }));\n }\n\n private async synthesizeCrossSignalsUnlocked(opts: {\n date: string;\n maxSummaryItems?: number;\n }): Promise<SharedCrossSignalSynthesisResult> {\n const date = opts.date;\n const maxSummaryItems = Math.max(1, opts.maxSummaryItems ?? 8);\n\n // Collect outputs for the day (best-effort).\n const outputs: Array<{ agent: string; path: string; title: string; raw: string; envelope: SharedEnvelope }> = [];\n try {\n const agents = (await readdir(this.outputsDir, { withFileTypes: true }))\n .sort((a, b) => a.name.localeCompare(b.name));\n for (const a of agents) {\n if (!a.isDirectory()) continue;\n const dayDir = path.join(this.outputsDir, a.name, date);\n try {\n const files = (await readdir(dayDir)).filter((f) => f.endsWith(\".md\")).sort();\n for (const f of files) {\n const p = path.join(dayDir, f);\n const raw = await readFile(p, \"utf-8\");\n const title = readFrontmatterScalar(raw, \"title\") ?? f;\n const agent = readFrontmatterScalar(raw, \"agent\") ?? safeDecodePathSegment(a.name);\n const envelope = envelopeFromScalars({\n sharedBy: readFrontmatterScalar(raw, \"sharedBy\"),\n authority: readFrontmatterScalar(raw, \"authority\"),\n expiresAt: readFrontmatterScalar(raw, \"expiresAt\"),\n supersedes: readFrontmatterScalar(raw, \"supersedes\"),\n });\n outputs.push({ agent, path: p, title, raw, envelope });\n }\n } catch {\n // no outputs for this agent/date\n }\n }\n } catch {\n // ignore\n }\n outputs.sort(\n (a, b) =>\n a.agent.localeCompare(b.agent)\n || a.path.localeCompare(b.path)\n || a.title.localeCompare(b.title),\n );\n\n // Collect feedback entries for the day.\n const feedback: SharedFeedbackEntry[] = [];\n try {\n const raw = await readFile(this.feedbackInboxPath, \"utf-8\");\n for (const line of raw.split(\"\\n\")) {\n if (!line.trim()) continue;\n try {\n const obj = JSON.parse(line);\n const parsed = SharedFeedbackEntrySchema.safeParse(obj);\n if (!parsed.success) continue;\n if (String(parsed.data.date).startsWith(date)) feedback.push(parsed.data);\n } catch {\n // ignore\n }\n }\n } catch {\n // ignore\n }\n\n const sources: SharedCrossSignalSource[] = outputs.map((output) => {\n const body = stripYamlFrontmatter(output.raw);\n return {\n agent: output.agent,\n path: output.path,\n title: output.title,\n topics: extractTopicTokens(`${output.title}\\n${body}`),\n authority: resolveReadAuthority(output.envelope, this.allowBindingAuthority),\n sharedBy: output.envelope.sharedBy ?? output.agent,\n };\n });\n\n const overlapMap = new Map<string, { agents: Set<string>; sourcePaths: Set<string> }>();\n for (const source of sources) {\n for (const token of source.topics) {\n const existing = overlapMap.get(token);\n if (existing) {\n existing.agents.add(source.agent);\n existing.sourcePaths.add(source.path);\n } else {\n overlapMap.set(token, {\n agents: new Set([source.agent]),\n sourcePaths: new Set([source.path]),\n });\n }\n }\n }\n\n const overlaps: SharedCrossSignalOverlap[] = [...overlapMap.entries()]\n .map(([token, v]) => ({\n token,\n agents: [...v.agents].sort(),\n sourcePaths: [...v.sourcePaths].sort(),\n agentCount: v.agents.size,\n }))\n .filter((entry) => entry.agentCount >= 2)\n .sort((a, b) => b.agentCount - a.agentCount || a.token.localeCompare(b.token));\n\n const semanticEnabled =\n resolveConversationContextCapabilities(this.config).sharedCrossSignalSemantic === true\n || resolveConversationContextCapabilities(this.config).crossSignalsSemantic === true;\n const semanticTimeoutMs =\n this.config.sharedCrossSignalSemanticTimeoutMs\n ?? this.config.crossSignalsSemanticTimeoutMs\n ?? 4000;\n const semanticMaxCandidates = this.config.sharedCrossSignalSemanticMaxCandidates ?? 120;\n let semanticApplied = false;\n let semanticTimedOut = false;\n let semanticCandidateCount = 0;\n let semanticAddedOverlapCount = 0;\n let mergedOverlaps = overlaps;\n if (semanticEnabled) {\n try {\n const semanticResult = await computeSemanticOverlapsWithTimeout(\n sources,\n semanticTimeoutMs,\n semanticMaxCandidates,\n );\n semanticTimedOut = semanticResult.timedOut;\n semanticCandidateCount = semanticResult.candidateCount;\n if (!semanticResult.timedOut && semanticResult.overlaps.length > 0) {\n mergedOverlaps = mergeOverlaps(overlaps, semanticResult.overlaps);\n semanticAddedOverlapCount = Math.max(0, mergedOverlaps.length - overlaps.length);\n semanticApplied = semanticAddedOverlapCount > 0;\n }\n } catch (err) {\n log.warn(`shared-context semantic cross-signals failed; fail-open to deterministic output: ${err}`);\n }\n }\n\n const feedbackByDecision: SharedCrossSignalReport[\"feedbackByDecision\"] = {\n approved: 0,\n approved_with_feedback: 0,\n rejected: 0,\n };\n for (const entry of feedback) {\n feedbackByDecision[entry.decision] += 1;\n }\n\n const report: SharedCrossSignalReport = {\n date,\n generatedAt: new Date().toISOString(),\n sourceCount: sources.length,\n feedbackCount: feedback.length,\n feedbackByDecision,\n feedbackEntries: [...feedback].sort(compareFeedbackPriority),\n sources,\n overlaps: mergedOverlaps,\n semantic: {\n enabled: semanticEnabled,\n applied: semanticApplied,\n timedOut: semanticTimedOut,\n candidateCount: semanticCandidateCount,\n maxCandidates: Math.max(0, Math.floor(semanticMaxCandidates)),\n addedOverlapCount: semanticAddedOverlapCount,\n },\n };\n\n const crossSignalsPath = path.join(this.crossSignalsDir, `${date}.json`);\n await writeFileAtomic(crossSignalsPath, `${JSON.stringify(report, null, 2)}\\n`);\n\n const recurringThemeLines = mergedOverlaps.length === 0\n ? [\"- No multi-agent topic overlap detected.\"]\n : mergedOverlaps.slice(0, maxSummaryItems).map((entry) => formatOverlapLine(entry));\n const riskSignals = [...feedback]\n .filter((entry) => entry.decision !== \"approved\" || entry.severity === \"high\" || entry.severity === \"medium\")\n .sort(compareFeedbackPriority)\n .slice(0, maxSummaryItems);\n const riskLines = riskSignals.length === 0\n ? [\"- No explicit blockers or elevated review risks recorded.\"]\n : riskSignals.map((entry) => formatFeedbackLine(entry));\n const promotionCandidates = mergedOverlaps\n .filter((entry) => entry.agentCount >= 3)\n .slice(0, maxSummaryItems);\n const promotionLines = promotionCandidates.length === 0\n ? [\"- No promotion candidates yet.\"]\n : promotionCandidates.map((entry) =>\n `- Consider promoting \\`${entry.token}\\` into priorities or operating rules [sources: ${markdownLineList(entry.sourcePaths)}]`\n );\n\n const crossSignalsMarkdown = [\n `# Cross-Signals — ${date}`,\n \"\",\n \"## Overview\",\n `- Source outputs analyzed: ${sources.length}`,\n `- Feedback entries analyzed: ${feedback.length}`,\n `- Decision totals: approved=${feedbackByDecision.approved}, approved_with_feedback=${feedbackByDecision.approved_with_feedback}, rejected=${feedbackByDecision.rejected}`,\n `- Semantic enhancer: ${semanticEnabled ? (semanticTimedOut ? \"enabled (timed out, fail-open)\" : semanticApplied ? \"enabled (applied)\" : \"enabled (no additional overlaps)\") : \"disabled\"}`,\n `- JSON report: ${crossSignalsPath}`,\n \"\",\n \"## Recurring Themes\",\n ...recurringThemeLines,\n \"\",\n \"## Risks And Blockers\",\n ...riskLines,\n \"\",\n \"## Potential Promotions\",\n ...promotionLines,\n \"\",\n \"## Sources\",\n ...(sources.length === 0 ? [\"- (none)\"] : sources.map((source) =>\n `- [${markdownLineText(source.agent)}] ${markdownLineText(source.title)} (${markdownLineText(source.path)}) [authority: ${source.authority}; sharedBy: ${markdownLineText(source.sharedBy)}]`\n )),\n \"\",\n ].join(\"\\n\");\n\n const crossSignalsMarkdownPath = path.join(this.crossSignalsDir, `${date}.md`);\n await writeFileAtomic(crossSignalsMarkdownPath, crossSignalsMarkdown);\n\n return {\n date,\n crossSignalsPath,\n crossSignalsMarkdownPath,\n overlapCount: mergedOverlaps.length,\n report,\n };\n }\n\n async curateDaily(opts: { date?: string; maxChars?: number }): Promise<SharedDailyCurationResult> {\n const date = safeDateSegment(opts.date ?? ymd(new Date()));\n return this.withDailySynthesisLock(date, () => this.curateDailyUnlocked({ ...opts, date }));\n }\n\n private async curateDailyUnlocked(opts: { date: string; maxChars?: number }): Promise<SharedDailyCurationResult> {\n const date = opts.date;\n const maxChars = Math.max(2_000, opts.maxChars ?? 20_000);\n const crossSignals = await this.synthesizeCrossSignalsUnlocked({ date });\n const feedbackLines = crossSignals.report.feedbackEntries.length === 0\n ? [\"- (none)\"]\n : crossSignals.report.feedbackEntries.map((entry) => formatFeedbackLine(entry));\n const overlapBullets = crossSignals.report.overlaps.length === 0\n ? [\"- No multi-agent topic overlap detected.\"]\n : crossSignals.report.overlaps.slice(0, 8).map((entry) => formatOverlapLine(entry));\n\n const md: string[] = [\n `# Roundtable — ${date}`,\n \"\",\n \"## Notable Agent Outputs\",\n ...(crossSignals.report.sources.length === 0\n ? [\"- (none)\"]\n : crossSignals.report.sources.map((source) =>\n `- ${markdownLineText(source.title)} (${markdownLineText(source.path)}) [authority: ${source.authority}; sharedBy: ${markdownLineText(source.sharedBy)}]`)),\n \"\",\n \"## Feedback (Approve/Reject)\",\n ...feedbackLines,\n \"\",\n \"## Cross-Signals\",\n `- Source outputs analyzed: ${crossSignals.report.sourceCount}`,\n `- Feedback entries analyzed: ${crossSignals.report.feedbackCount}`,\n `- Decision totals: approved=${crossSignals.report.feedbackByDecision.approved}, approved_with_feedback=${crossSignals.report.feedbackByDecision.approved_with_feedback}, rejected=${crossSignals.report.feedbackByDecision.rejected}`,\n `- Semantic enhancer: ${crossSignals.report.semantic.enabled ? (crossSignals.report.semantic.timedOut ? \"enabled (timed out, fail-open)\" : crossSignals.report.semantic.applied ? \"enabled (applied)\" : \"enabled (no additional overlaps)\") : \"disabled\"}`,\n `- Cross-signals JSON: ${crossSignals.crossSignalsPath}`,\n `- Cross-signals markdown: ${crossSignals.crossSignalsMarkdownPath}`,\n ...overlapBullets,\n \"\",\n ];\n\n const out = md.join(\"\\n\");\n const trimmed = out.length > maxChars ? out.slice(0, maxChars) + \"\\n\\n...(trimmed)\\n\" : out;\n\n const roundtablePath = path.join(this.roundtableDir, `${date}.md`);\n await writeFileAtomic(roundtablePath, trimmed);\n\n log.info(`shared-context curated daily roundtable: ${roundtablePath}`);\n return {\n date,\n roundtablePath,\n crossSignalsPath: crossSignals.crossSignalsPath,\n crossSignalsMarkdownPath: crossSignals.crossSignalsMarkdownPath,\n overlapCount: crossSignals.overlapCount,\n };\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  SupportPassportCreateGrantRequestSchema,
3
3
  defineOperation
4
- } from "./chunk-SFHLQPBF.js";
4
+ } from "./chunk-S4MJTIPG.js";
5
5
  import {
6
6
  SupportPassportCardCategorySchema,
7
7
  SupportPassportMemoryIdSchema,
8
8
  SupportPassportSourceMemoryIdSchema
9
- } from "./chunk-37CAEC7E.js";
9
+ } from "./chunk-PWPIERBM.js";
10
10
 
11
11
  // src/support-passport/access-operations.ts
12
12
  import { z } from "zod";
@@ -220,4 +220,4 @@ var supportPassportGrantAskOperation = defineOperation({
220
220
  result: await ctx.service.supportPassportAskGrant(grantId, secret, question, ctx.abortSignal)
221
221
  })
222
222
  });
223
- //# sourceMappingURL=chunk-K4JKAXMO.js.map
223
+ //# sourceMappingURL=chunk-Z535ADTC.js.map
@@ -5,13 +5,13 @@ import {
5
5
  citationTemplateFingerprint,
6
6
  isCachedIdentityReusable,
7
7
  isReconcileMemoryIdentity
8
- } from "./chunk-5U7K4W6K.js";
8
+ } from "./chunk-JDOBQPJY.js";
9
9
  import {
10
10
  offlineSyncStorageForSnapshot
11
11
  } from "./chunk-XVDZFTN5.js";
12
12
  import {
13
13
  createPersistedSupportPassportPrivateFileExclusion
14
- } from "./chunk-37CAEC7E.js";
14
+ } from "./chunk-PWPIERBM.js";
15
15
  import {
16
16
  iterateOfflineSyncSnapshotFileRecords
17
17
  } from "./chunk-WQZZDN5M.js";
@@ -250,4 +250,4 @@ export {
250
250
  retainExcludedClassifications,
251
251
  createOfflineSyncManifestStream
252
252
  };
253
- //# sourceMappingURL=chunk-23HFXQ5J.js.map
253
+ //# sourceMappingURL=chunk-Z7NBT6AK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-MVG3KXON.js";
3
+ } from "./chunk-ICN37XHG.js";
4
4
  import {
5
5
  normalizeEntityName
6
6
  } from "./chunk-YXZG5TVN.js";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-RGMVMVMF.js";
13
13
  import {
14
14
  excludeSupportPassportPrivateMemories
15
- } from "./chunk-37CAEC7E.js";
15
+ } from "./chunk-PWPIERBM.js";
16
16
  import {
17
17
  serializeMutations
18
18
  } from "./chunk-FFAZ2XFU.js";
@@ -957,4 +957,4 @@ export {
957
957
  resolveBriefingSaveDir,
958
958
  briefingFilename
959
959
  };
960
- //# sourceMappingURL=chunk-VQYWKCDR.js.map
960
+ //# sourceMappingURL=chunk-ZX6NNFSY.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-AAD2ZS6P.js";
5
5
  import {
6
6
  gatewayTaskChainOptions
7
- } from "./chunk-THTF2W7M.js";
7
+ } from "./chunk-TRTLWUDD.js";
8
8
  import {
9
9
  extractJsonCandidates
10
10
  } from "./chunk-RGMVMVMF.js";
@@ -685,4 +685,4 @@ export {
685
685
  serializeFaithfulnessFields,
686
686
  parseFaithfulnessField
687
687
  };
688
- //# sourceMappingURL=chunk-3XPN7AVY.js.map
688
+ //# sourceMappingURL=chunk-ZYSOT6HD.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  categoryAliasCoercion
3
- } from "./chunk-ZX3AYNNV.js";
3
+ } from "./chunk-DM5CU5J7.js";
4
4
 
5
5
  // src/access-observe-write-category.ts
6
6
  function splitCanonicalWriteRequest(request) {
@@ -11,4 +11,4 @@ function splitCanonicalWriteRequest(request) {
11
11
  export {
12
12
  splitCanonicalWriteRequest
13
13
  };
14
- //# sourceMappingURL=chunk-ZZCR2QYL.js.map
14
+ //# sourceMappingURL=chunk-ZZEIL3MI.js.map
@@ -1,16 +1,16 @@
1
1
  import { CompoundingPromotionReport } from './compounding/engine.js';
2
2
  import { ConversationIndexBackendInspection } from './conversation-index/backend.js';
3
3
  import { MigrateObservationsResult } from './maintenance/migrate-observations.js';
4
- import { M as MemoryFile, m as MemoryFrontmatter, x as MemoryStatus, ad as BehaviorSignalEvent, Q as QmdSearchResult, ai as BulkImportResult, an as MemoryActionEvent, K as MemoryLifecycleEvent } from './types-nJV23pa3.js';
5
- import { C as ConversationIndexCoordinator, T as TierMigrationCoordinator, O as Orchestrator } from './orchestrator-BWDRJ_0d.js';
6
- import { S as StorageManager } from './storage-BprAGBG0.js';
4
+ import { M as MemoryFile, m as MemoryFrontmatter, x as MemoryStatus, ad as BehaviorSignalEvent, Q as QmdSearchResult, ai as BulkImportResult, an as MemoryActionEvent, K as MemoryLifecycleEvent } from './types-cK5LydjL.js';
5
+ import { C as ConversationIndexCoordinator, T as TierMigrationCoordinator, O as Orchestrator } from './orchestrator-DT7ybIFz.js';
6
+ import { S as StorageManager } from './storage-C-0Ah5OY.js';
7
7
  import { TrustZoneDemoSeedResult, TrustZoneName, TrustZonePromotionResult, TrustZoneStoreStatus } from './trust-zones.js';
8
- import { f as EngramAccessService } from './access-service-DJ3qogNt.js';
8
+ import { f as EngramAccessService } from './access-service-Cisy5YDq.js';
9
9
  import { Writable, Readable } from 'node:stream';
10
10
  import { ResolveSecretRefFn } from './resolve-auth-token.js';
11
11
  import { CausalTrajectoryStoreStatus } from './causal-trajectory.js';
12
12
  import { C as ConnectorRunResult, a as ConnectorsOutputFormat } from './connectors-cli-2iaQ5tX2.js';
13
- import { P as ProcessBatchFn } from './pipeline-7JMn2yMH.js';
13
+ import { P as ProcessBatchFn } from './pipeline-CgBEmHcz.js';
14
14
  import { RuntimePolicyValues } from './policy-runtime.js';
15
15
  import { MemoryGovernanceRunResult, MemoryGovernanceSummary, MemoryGovernanceMetrics, MemoryGovernanceQualityScore, MemoryGovernanceReviewQueueEntry, MemoryGovernanceAppliedAction, MemoryGovernanceTransitionReport, MemoryGovernanceManifest, MemoryGovernanceRestoreManifest, RestoreMemoryGovernanceRunResult } from './maintenance/memory-governance.js';
16
16
  import { RebuildMemoryProjectionResult, RepairMemoryProjectionResult, VerifyMemoryProjectionResult } from './maintenance/rebuild-memory-projection.js';