@remnic/core 9.69.36 → 9.69.38

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 (690) hide show
  1. package/dist/access-admin-ops-surface.d.ts +14 -12
  2. package/dist/access-admin-ops-surface.js +77 -74
  3. package/dist/access-authorization-probe.d.ts +14 -12
  4. package/dist/access-authorization-probe.js +78 -75
  5. package/dist/access-boundary.d.ts +14 -12
  6. package/dist/access-boundary.js +77 -74
  7. package/dist/access-cli.js +180 -170
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-coding-context-resolution.d.ts +2 -1
  10. package/dist/access-extraction-force-flush.d.ts +14 -12
  11. package/dist/access-extraction-force-flush.js +77 -74
  12. package/dist/access-health-types.d.ts +2 -1
  13. package/dist/access-http-briefing.d.ts +14 -12
  14. package/dist/access-http-briefing.js +78 -75
  15. package/dist/access-http-lcm-compaction.d.ts +14 -12
  16. package/dist/access-http-lifecycle-flush.d.ts +14 -12
  17. package/dist/access-http-offline-stream.d.ts +14 -12
  18. package/dist/access-http-query.d.ts +3 -2
  19. package/dist/access-http-query.js +79 -76
  20. package/dist/access-http.d.ts +15 -13
  21. package/dist/access-http.js +97 -94
  22. package/dist/access-identity-continuity-surface.d.ts +12 -10
  23. package/dist/access-identity-continuity-surface.js +77 -74
  24. package/dist/access-lcm-surface.d.ts +14 -12
  25. package/dist/access-lcm-surface.js +77 -74
  26. package/dist/access-mcp.d.ts +14 -12
  27. package/dist/access-mcp.js +86 -83
  28. package/dist/access-memory-search-fanout.d.ts +3 -2
  29. package/dist/{access-namespace-preflight-D8qri11P.d.ts → access-namespace-preflight-DY4z6L5X.d.ts} +1 -1
  30. package/dist/access-namespace-preflight.d.ts +4 -3
  31. package/dist/access-namespace-preflight.js +77 -74
  32. package/dist/access-observe-transcript.d.ts +12 -10
  33. package/dist/access-observe-write-category.d.ts +37 -0
  34. package/dist/access-observe-write-category.js +34 -0
  35. package/dist/access-observe-write-surface.d.ts +17 -15
  36. package/dist/access-observe-write-surface.js +77 -74
  37. package/dist/access-offline-manifest.d.ts +12 -10
  38. package/dist/access-offline-manifest.js +15 -15
  39. package/dist/access-operations-batch.js +80 -77
  40. package/dist/access-operations.d.ts +17 -30
  41. package/dist/access-operations.js +85 -82
  42. package/dist/access-recall-concurrency.d.ts +14 -12
  43. package/dist/access-recall-concurrency.js +77 -74
  44. package/dist/access-recall-response.d.ts +14 -12
  45. package/dist/access-recall-response.js +77 -74
  46. package/dist/access-recall-surface.d.ts +14 -12
  47. package/dist/access-recall-surface.js +77 -74
  48. package/dist/access-schema.d.ts +214 -111
  49. package/dist/access-schema.js +7 -13
  50. package/dist/{access-service-Cl_x57xR.d.ts → access-service-gBcdRUHY.d.ts} +101 -77
  51. package/dist/access-service-helpers.d.ts +14 -12
  52. package/dist/access-service.d.ts +14 -12
  53. package/dist/access-service.js +77 -74
  54. package/dist/access-surface-catalog.d.ts +14 -12
  55. package/dist/access-surface-catalog.js +79 -76
  56. package/dist/access-surface-catalog.js.map +1 -1
  57. package/dist/access-wearables-meetings-surface.d.ts +5 -3
  58. package/dist/action-confidence.d.ts +2 -1
  59. package/dist/active-memory-bridge.d.ts +2 -1
  60. package/dist/active-memory-bridge.js +3 -3
  61. package/dist/active-recall.d.ts +2 -1
  62. package/dist/active-recall.js +20 -16
  63. package/dist/active-recall.js.map +1 -1
  64. package/dist/activity/digest.d.ts +2 -1
  65. package/dist/adapters/index.js +4 -4
  66. package/dist/adapters/registry.js +2 -2
  67. package/dist/ambient-provenance.d.ts +2 -1
  68. package/dist/artifact-search.d.ts +2 -1
  69. package/dist/{auto-sync-4YFATLFQ.js → auto-sync-RP4C6ZPF.js} +12 -10
  70. package/dist/{auto-sync-4YFATLFQ.js.map → auto-sync-RP4C6ZPF.js.map} +1 -1
  71. package/dist/background-generation-config.d.ts +10 -0
  72. package/dist/background-generation-config.js +9 -0
  73. package/dist/background-generation.d.ts +25 -0
  74. package/dist/background-generation.js +11 -0
  75. package/dist/background-generation.js.map +1 -0
  76. package/dist/behavior-learner.d.ts +2 -1
  77. package/dist/behavior-signals.d.ts +2 -1
  78. package/dist/bootstrap.d.ts +12 -10
  79. package/dist/briefing-window.d.ts +3 -2
  80. package/dist/briefing.d.ts +3 -2
  81. package/dist/briefing.js +25 -24
  82. package/dist/buffer-surprise-report.d.ts +2 -1
  83. package/dist/buffer-turn-helpers.d.ts +2 -1
  84. package/dist/buffer.d.ts +3 -2
  85. package/dist/buffer.js +8 -8
  86. package/dist/bulk-import/index.d.ts +4 -3
  87. package/dist/calibration.d.ts +3 -1
  88. package/dist/calibration.js +5 -3
  89. package/dist/calibration.js.map +1 -1
  90. package/dist/capabilities.d.ts +2 -1
  91. package/dist/{capsule-merge-ZCXUPLNJ.js → capsule-merge-IPG4IOFP.js} +2 -2
  92. package/dist/{catalog-Bq1AxZwF.d.ts → catalog-CW87xGx8.d.ts} +1 -1
  93. package/dist/causal-behavior.d.ts +2 -1
  94. package/dist/causal-behavior.js +2 -2
  95. package/dist/causal-chain.js +2 -2
  96. package/dist/causal-consolidation.d.ts +2 -1
  97. package/dist/causal-consolidation.js +27 -26
  98. package/dist/causal-consolidation.js.map +1 -1
  99. package/dist/causal-retrieval.js +2 -2
  100. package/dist/causal-trajectory-graph.d.ts +2 -1
  101. package/dist/causal-trajectory.js +1 -1
  102. package/dist/{chunk-LO4UKPKX.js → chunk-27MKMTBY.js} +2 -2
  103. package/dist/{chunk-TK4FHQRN.js → chunk-2J3V5QEO.js} +4 -4
  104. package/dist/{chunk-DVOBLPSQ.js → chunk-2MT4ADLQ.js} +15 -39
  105. package/dist/chunk-2MT4ADLQ.js.map +1 -0
  106. package/dist/{chunk-JSRVXI6E.js → chunk-2OGTN37H.js} +10 -10
  107. package/dist/{chunk-DK4X5B6I.js → chunk-2PTNJTBE.js} +2 -2
  108. package/dist/chunk-2QG4SLZI.js +44 -0
  109. package/dist/chunk-2QG4SLZI.js.map +1 -0
  110. package/dist/{chunk-27IOSH2W.js → chunk-375ARKRS.js} +32 -11
  111. package/dist/chunk-375ARKRS.js.map +1 -0
  112. package/dist/{chunk-PWPIERBM.js → chunk-37CAEC7E.js} +4 -4
  113. package/dist/{chunk-S2ULTQZR.js → chunk-3N3PBBEH.js} +2 -2
  114. package/dist/{chunk-ZTG4P7NZ.js → chunk-3OYSIVOO.js} +168 -168
  115. package/dist/{chunk-ZBEGS7OB.js → chunk-474DL7UB.js} +3 -3
  116. package/dist/{chunk-YNN26CIZ.js → chunk-4B3HBIFX.js} +2 -2
  117. package/dist/{chunk-HC4GFLMQ.js → chunk-4BCHFSC7.js} +3 -3
  118. package/dist/{chunk-YEDVOYL2.js → chunk-4RX5O34R.js} +2 -2
  119. package/dist/{chunk-W6IJMWTZ.js → chunk-5AERZWJD.js} +2 -2
  120. package/dist/{chunk-XPJNT6PI.js → chunk-5N4MZLEH.js} +10 -6
  121. package/dist/chunk-5N4MZLEH.js.map +1 -0
  122. package/dist/{chunk-UBG4GAEP.js → chunk-5U7K4W6K.js} +6 -2
  123. package/dist/chunk-5U7K4W6K.js.map +1 -0
  124. package/dist/{chunk-PAAJWQH5.js → chunk-62D2PAAM.js} +4 -4
  125. package/dist/{chunk-JHZCXUQI.js → chunk-62QIQEUC.js} +157 -154
  126. package/dist/chunk-62QIQEUC.js.map +1 -0
  127. package/dist/{chunk-52II7PB6.js → chunk-645WOU5I.js} +4 -4
  128. package/dist/{chunk-326KUXIR.js → chunk-6EHM2AV7.js} +6 -6
  129. package/dist/{chunk-YM7YN37H.js → chunk-6ET2VII7.js} +2 -2
  130. package/dist/chunk-6H2G7RFT.js +58 -0
  131. package/dist/chunk-6H2G7RFT.js.map +1 -0
  132. package/dist/{chunk-A2YQL2FF.js → chunk-6P4REYKL.js} +5 -5
  133. package/dist/{chunk-FVJ4D6L7.js → chunk-6PRY6CLC.js} +4 -4
  134. package/dist/{chunk-GLZH5VEN.js → chunk-6ZMNTRU3.js} +2 -2
  135. package/dist/{chunk-Z7ACR6MJ.js → chunk-74AHCL56.js} +3 -3
  136. package/dist/{chunk-5VAF4ID4.js → chunk-7S53BPTU.js} +25 -25
  137. package/dist/{chunk-EEBQFG5E.js → chunk-A6CKMIPK.js} +14 -14
  138. package/dist/chunk-A6CXG5WI.js +51 -0
  139. package/dist/chunk-A6CXG5WI.js.map +1 -0
  140. package/dist/{chunk-JR6PP7UM.js → chunk-ACY4ZPF7.js} +28 -2
  141. package/dist/chunk-ACY4ZPF7.js.map +1 -0
  142. package/dist/{chunk-2YLMUME2.js → chunk-AECJY3GJ.js} +2 -2
  143. package/dist/{chunk-NPNSKE76.js → chunk-B36GUU6T.js} +4 -4
  144. package/dist/{chunk-Y63ZFP4X.js → chunk-BJEJUOGM.js} +2 -2
  145. package/dist/{chunk-7CBKAQIG.js → chunk-BOADKFN4.js} +28 -4
  146. package/dist/chunk-BOADKFN4.js.map +1 -0
  147. package/dist/{chunk-TLHNF6GA.js → chunk-BV4ZKIZH.js} +1 -1
  148. package/dist/{chunk-3FJKJ5UZ.js → chunk-BX4EOMKT.js} +2 -2
  149. package/dist/{chunk-6J6K3STG.js → chunk-BYZKLEWG.js} +15 -12
  150. package/dist/chunk-BYZKLEWG.js.map +1 -0
  151. package/dist/{chunk-BJETIR53.js → chunk-CBFYCDYO.js} +3 -3
  152. package/dist/{chunk-ZWEZXVYH.js → chunk-CEO4DONG.js} +2 -2
  153. package/dist/chunk-CWTCMZGE.js +858 -0
  154. package/dist/chunk-CWTCMZGE.js.map +1 -0
  155. package/dist/{chunk-WPDKBUWX.js → chunk-DPMTLJCT.js} +2 -2
  156. package/dist/{chunk-65RENJGB.js → chunk-E2AWJ7KQ.js} +8 -4
  157. package/dist/chunk-E2AWJ7KQ.js.map +1 -0
  158. package/dist/{chunk-LYDJRF45.js → chunk-EY5JAWZC.js} +2 -2
  159. package/dist/{chunk-R4OCGPSH.js → chunk-FJMYMJLR.js} +2 -2
  160. package/dist/{chunk-OS2AT2JU.js → chunk-G43PMSME.js} +27 -10
  161. package/dist/chunk-G43PMSME.js.map +1 -0
  162. package/dist/{chunk-YXLUTALO.js → chunk-GAS7KYC7.js} +5 -5
  163. package/dist/{chunk-LSLCFCCQ.js → chunk-GDYU6VF4.js} +1 -1
  164. package/dist/chunk-GDYU6VF4.js.map +1 -0
  165. package/dist/{chunk-UDZYNIDJ.js → chunk-GGAXFTNH.js} +2 -2
  166. package/dist/{chunk-QURNMKME.js → chunk-GQQVEH6V.js} +6 -6
  167. package/dist/{chunk-J7PB5UQ4.js → chunk-GT4ZHOKT.js} +3 -3
  168. package/dist/{chunk-WIKO4SCR.js → chunk-H3TKENU4.js} +5 -5
  169. package/dist/{chunk-ZLN7AROH.js → chunk-HIP6DKJJ.js} +5 -5
  170. package/dist/{chunk-UYUCCQ46.js → chunk-HVS7TH2Y.js} +2 -2
  171. package/dist/{chunk-Z3O53WZR.js → chunk-IWO6QXWJ.js} +2 -2
  172. package/dist/{chunk-4MDKNUV4.js → chunk-IYKZJVL5.js} +1 -1
  173. package/dist/chunk-IYKZJVL5.js.map +1 -0
  174. package/dist/{chunk-42DJ235G.js → chunk-J272ODKJ.js} +2 -2
  175. package/dist/{chunk-JR6H5CYS.js → chunk-JA2QJOAX.js} +2 -2
  176. package/dist/{chunk-R3TLVTWW.js → chunk-JDX2OA4R.js} +3 -3
  177. package/dist/chunk-JE26AUX6.js +16 -0
  178. package/dist/chunk-JE26AUX6.js.map +1 -0
  179. package/dist/{chunk-AJTG3CP7.js → chunk-JHU4EYDV.js} +11 -1
  180. package/dist/chunk-JHU4EYDV.js.map +1 -0
  181. package/dist/{chunk-HXSAWV3A.js → chunk-JNSENHV5.js} +6 -6
  182. package/dist/{chunk-RRZKTSFG.js → chunk-JPOX2AJB.js} +2 -2
  183. package/dist/{chunk-TKFSXDOB.js → chunk-K5DA5TRG.js} +9 -9
  184. package/dist/{chunk-AZSKROVQ.js → chunk-KDFDXEXZ.js} +2 -2
  185. package/dist/{chunk-AKE4GGQ3.js → chunk-KQW3YGEN.js} +2 -2
  186. package/dist/{chunk-B3O3IRZN.js → chunk-L63GFNKL.js} +1 -1
  187. package/dist/{chunk-YEN4TREG.js → chunk-LQNRVPTV.js} +54 -567
  188. package/dist/chunk-LQNRVPTV.js.map +1 -0
  189. package/dist/{chunk-YJ6VCDMZ.js → chunk-M6HBPLBA.js} +2 -2
  190. package/dist/chunk-MCRVQ5YQ.js +14 -0
  191. package/dist/chunk-MCRVQ5YQ.js.map +1 -0
  192. package/dist/{chunk-L2WQVSKP.js → chunk-MLWMR2GE.js} +2 -2
  193. package/dist/{chunk-WHHEPAO3.js → chunk-NWMUSKED.js} +8 -8
  194. package/dist/chunk-OEBLZZKK.js +53 -0
  195. package/dist/chunk-OEBLZZKK.js.map +1 -0
  196. package/dist/{chunk-JRWW7GM6.js → chunk-OKO57IXB.js} +7 -7
  197. package/dist/{chunk-L2QLDZJC.js → chunk-P4ZAEYKG.js} +67 -33
  198. package/dist/chunk-P4ZAEYKG.js.map +1 -0
  199. package/dist/{chunk-MPAJFFP3.js → chunk-PGAB2V53.js} +5 -5
  200. package/dist/{chunk-MPAJFFP3.js.map → chunk-PGAB2V53.js.map} +1 -1
  201. package/dist/{chunk-VYXDUPYE.js → chunk-PPQEP4OH.js} +2 -2
  202. package/dist/{chunk-LEMD7WZJ.js → chunk-QHT7MOUF.js} +70 -25
  203. package/dist/chunk-QHT7MOUF.js.map +1 -0
  204. package/dist/chunk-QJ2AX6DU.js +19 -0
  205. package/dist/chunk-QJ2AX6DU.js.map +1 -0
  206. package/dist/{chunk-Q4AUIFUA.js → chunk-QMWKENNK.js} +4 -4
  207. package/dist/{chunk-XCOV45MO.js → chunk-R4VAUNNC.js} +3 -3
  208. package/dist/{chunk-353KGBKY.js → chunk-RW4QNB4J.js} +4 -4
  209. package/dist/{chunk-FQXJAC3T.js → chunk-SGUDMW2K.js} +4 -4
  210. package/dist/{chunk-S5G2LAL7.js → chunk-SV4Z2S67.js} +4 -4
  211. package/dist/{chunk-HUT2JR6I.js → chunk-T32B72QX.js} +3 -3
  212. package/dist/{chunk-OQ7SSRXP.js → chunk-TRHBQVVO.js} +23 -17
  213. package/dist/chunk-TRHBQVVO.js.map +1 -0
  214. package/dist/{chunk-LMCD5W5B.js → chunk-TRLOFIQC.js} +2 -2
  215. package/dist/{chunk-JZ2CHRLB.js → chunk-TTSJ7WUC.js} +2 -2
  216. package/dist/{chunk-CNV2A557.js → chunk-TUKGXQ5T.js} +3 -3
  217. package/dist/{chunk-QATYVTP7.js → chunk-UIOIDW3L.js} +2 -2
  218. package/dist/{chunk-776GVKL7.js → chunk-ULDBGA5W.js} +2 -2
  219. package/dist/{chunk-NN4JEFON.js → chunk-UQNYPK7G.js} +3 -3
  220. package/dist/{chunk-A5UQ52YQ.js → chunk-UZZ7SQT3.js} +5 -5
  221. package/dist/{chunk-F6IVBYFS.js → chunk-V6G2PSXA.js} +72 -72
  222. package/dist/{chunk-RUXPVSML.js → chunk-VHOSM5G4.js} +6 -6
  223. package/dist/{chunk-QBLDCI6E.js → chunk-VMNCZ627.js} +2 -2
  224. package/dist/{chunk-P3ONDDIJ.js → chunk-VV4ZVUE6.js} +2 -2
  225. package/dist/{chunk-A7GQBJP5.js → chunk-X2NFFBTO.js} +4 -4
  226. package/dist/{chunk-ECKG5WSI.js → chunk-XGRXQR6T.js} +2 -2
  227. package/dist/{chunk-LNDLXMH6.js → chunk-XN6XT6GR.js} +3 -3
  228. package/dist/{chunk-C6KRO3SU.js → chunk-XVDZFTN5.js} +4 -4
  229. package/dist/chunk-XVZA6VXC.js +160 -0
  230. package/dist/chunk-XVZA6VXC.js.map +1 -0
  231. package/dist/{chunk-2BQ4ZIWC.js → chunk-XWLLFKHM.js} +8 -8
  232. package/dist/chunk-YFTNZMGR.js +71 -0
  233. package/dist/chunk-YFTNZMGR.js.map +1 -0
  234. package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
  235. package/dist/{chunk-BNGHPYZU.js → chunk-YUW66UAH.js} +3 -3
  236. package/dist/{chunk-5JG5EBVL.js → chunk-ZEGL7YCC.js} +2 -2
  237. package/dist/{chunk-PHP3MUGF.js → chunk-ZKZFFWLV.js} +2 -2
  238. package/dist/{chunk-GCBIXUPT.js → chunk-ZMWSYUUL.js} +2 -2
  239. package/dist/{chunk-X2QPKLPL.js → chunk-ZZUVBZL2.js} +2 -2
  240. package/dist/{cli-p813oxbm.d.ts → cli-BNg-TAlz.d.ts} +5 -5
  241. package/dist/cli-fallback.d.ts +4 -2
  242. package/dist/cli-fallback.js +3 -1
  243. package/dist/cli.d.ts +16 -14
  244. package/dist/cli.js +125 -119
  245. package/dist/coding/export-okf-codegraph.d.ts +2 -1
  246. package/dist/coding/export-okf-codegraph.js +24 -23
  247. package/dist/coding/export-okf-codegraph.js.map +1 -1
  248. package/dist/coding/pre-action-gate.d.ts +2 -1
  249. package/dist/coding/pre-action-gate.js +2 -2
  250. package/dist/compat/codex-cli-fallback.d.ts +1 -1
  251. package/dist/compat/codex-cli-fallback.js +3 -1
  252. package/dist/compat/codex-cli-fallback.js.map +1 -1
  253. package/dist/compounding/engine.d.ts +3 -2
  254. package/dist/compounding/engine.js +25 -24
  255. package/dist/compounding/preference-consolidator.d.ts +2 -1
  256. package/dist/compression-optimizer.d.ts +2 -1
  257. package/dist/config.d.ts +2 -1
  258. package/dist/config.js +18 -14
  259. package/dist/connectors/codex-materialize-runner.d.ts +2 -1
  260. package/dist/connectors/codex-materialize-runner.js +24 -23
  261. package/dist/connectors/codex-materialize.d.ts +2 -1
  262. package/dist/connectors/index.d.ts +2 -1
  263. package/dist/connectors/index.js +27 -26
  264. package/dist/consolidation-provenance-check.d.ts +3 -2
  265. package/dist/consolidation-undo.d.ts +3 -2
  266. package/dist/contradiction/index.d.ts +5 -3
  267. package/dist/contradiction/index.js +7 -7
  268. package/dist/{contradiction-scan-GVD4JJ7B.js → contradiction-scan-BSGKZHYJ.js} +4 -4
  269. package/dist/contradiction-scan-BSGKZHYJ.js.map +1 -0
  270. package/dist/converge-config.d.ts +2 -1
  271. package/dist/convergence-refresh.d.ts +3 -2
  272. package/dist/convergence-refresh.js +27 -26
  273. package/dist/conversation-index/backend.d.ts +2 -1
  274. package/dist/conversation-index/chunker.d.ts +2 -1
  275. package/dist/conversation-index/faiss-adapter.d.ts +2 -1
  276. package/dist/conversation-index/indexer.d.ts +2 -1
  277. package/dist/conversation-index/search.d.ts +2 -1
  278. package/dist/corpus-watermark.d.ts +2 -1
  279. package/dist/corpus-watermark.js +27 -26
  280. package/dist/cross-lingual-recall.d.ts +2 -1
  281. package/dist/dashboard-runtime.js +2 -2
  282. package/dist/day-summary.d.ts +2 -1
  283. package/dist/deep-recall-http-glue.d.ts +14 -12
  284. package/dist/deep-recall-http-glue.js +2 -12
  285. package/dist/deep-recall-mcp-tools.d.ts +14 -12
  286. package/dist/deep-recall-policy-llm.d.ts +3 -1
  287. package/dist/deep-recall-policy-llm.js +5 -3
  288. package/dist/deep-recall-seeds.d.ts +2 -1
  289. package/dist/deep-recall.js +2 -2
  290. package/dist/delinearize.d.ts +2 -1
  291. package/dist/dependency-propagation-config.d.ts +2 -1
  292. package/dist/{dependency-propagation-delivery-DLiAtj25.d.ts → dependency-propagation-delivery-Cq1ekOwV.d.ts} +1 -1
  293. package/dist/direct-answer-wiring.d.ts +2 -1
  294. package/dist/direct-answer.d.ts +2 -1
  295. package/dist/embedding-fallback.d.ts +2 -1
  296. package/dist/enrichment/index.d.ts +2 -1
  297. package/dist/entity-origin-fields.d.ts +2 -1
  298. package/dist/entity-retrieval.d.ts +3 -2
  299. package/dist/entity-retrieval.js +26 -25
  300. package/dist/entity-schema.d.ts +2 -1
  301. package/dist/episodic-context.d.ts +2 -1
  302. package/dist/eval-trajectory-contracts.d.ts +2 -1
  303. package/dist/eval-trajectory-store.d.ts +2 -1
  304. package/dist/eval-trajectory.d.ts +2 -1
  305. package/dist/event-order-recall.js +3 -3
  306. package/dist/explicit-capture.d.ts +12 -10
  307. package/dist/explicit-capture.js +6 -6
  308. package/dist/external-wiki-access.d.ts +14 -12
  309. package/dist/external-wiki-access.js +78 -75
  310. package/dist/external-wiki-collection-registration.d.ts +2 -1
  311. package/dist/external-wiki-collection.d.ts +2 -1
  312. package/dist/external-wiki-mcp-tools.d.ts +14 -12
  313. package/dist/extraction-error-classification.d.ts +2 -1
  314. package/dist/extraction-faithfulness.d.ts +3 -1
  315. package/dist/extraction-faithfulness.js +5 -3
  316. package/dist/extraction-judge-telemetry.d.ts +3 -1
  317. package/dist/extraction-judge-training.d.ts +3 -1
  318. package/dist/extraction-judge.d.ts +3 -1
  319. package/dist/extraction-judge.js +6 -4
  320. package/dist/extraction-liveness.d.ts +2 -1
  321. package/dist/extraction-normalization.d.ts +2 -1
  322. package/dist/extraction-normalization.js +2 -2
  323. package/dist/extraction-prompt.d.ts +12 -2
  324. package/dist/extraction-prompt.js +7 -3
  325. package/dist/extraction-source-grounding-rules.d.ts +4 -2
  326. package/dist/extraction-source-grounding-rules.js +1 -1
  327. package/dist/extraction-source-grounding.d.ts +3 -2
  328. package/dist/extraction-source-grounding.js +4 -4
  329. package/dist/extraction-span-config.d.ts +16 -0
  330. package/dist/extraction-span-config.js +15 -0
  331. package/dist/extraction-span-config.js.map +1 -0
  332. package/dist/extraction-span-materialize.d.ts +106 -0
  333. package/dist/extraction-span-materialize.js +30 -0
  334. package/dist/extraction-span-materialize.js.map +1 -0
  335. package/dist/extraction-span-slice.js +3 -12
  336. package/dist/extraction-span-slice.js.map +1 -1
  337. package/dist/extraction-span-source-hash.js +4 -46
  338. package/dist/extraction-span-source-hash.js.map +1 -1
  339. package/dist/extraction-span-validate.js +3 -15
  340. package/dist/extraction-span-validate.js.map +1 -1
  341. package/dist/extraction.d.ts +8 -1
  342. package/dist/extraction.js +48 -43
  343. package/dist/fallback-llm-codex-subscription.d.ts +79 -0
  344. package/dist/fallback-llm-codex-subscription.js +22 -0
  345. package/dist/fallback-llm-codex-subscription.js.map +1 -0
  346. package/dist/fallback-llm.d.ts +5 -1
  347. package/dist/fallback-llm.js +4 -2
  348. package/dist/{first-start-migration-L3UFX5CU.js → first-start-migration-ZWMV5CX4.js} +4 -4
  349. package/dist/{generic-recall-paths-DbitKJI5.d.ts → generic-recall-paths-BcySh_f9.d.ts} +1 -1
  350. package/dist/graph-append-error.d.ts +2 -1
  351. package/dist/graph-dashboard-diff.d.ts +2 -1
  352. package/dist/graph-dashboard-key.d.ts +2 -1
  353. package/dist/graph-dashboard-parser.d.ts +2 -1
  354. package/dist/graph-edge-reinforcement.d.ts +2 -1
  355. package/dist/graph-jsonl.d.ts +2 -1
  356. package/dist/graph-path-reconstruction.d.ts +2 -1
  357. package/dist/graph-path-scoring.d.ts +2 -1
  358. package/dist/graph-snapshot.d.ts +2 -1
  359. package/dist/graph.d.ts +2 -1
  360. package/dist/harmonic-retrieval.js +3 -3
  361. package/dist/importance.d.ts +2 -1
  362. package/dist/importers/index.d.ts +2 -1
  363. package/dist/importers/test-utils.d.ts +2 -1
  364. package/dist/in-flight-reads.d.ts +2 -1
  365. package/dist/{index-BINUgPFo.d.ts → index-DWOb4wz9.d.ts} +2 -2
  366. package/dist/index.d.ts +712 -704
  367. package/dist/index.js +368 -299
  368. package/dist/intent.d.ts +2 -1
  369. package/dist/lcm/engine.d.ts +2 -1
  370. package/dist/lcm/engine.js +2 -2
  371. package/dist/lcm/index.d.ts +2 -1
  372. package/dist/lcm/index.js +7 -7
  373. package/dist/lcm/tools.d.ts +2 -1
  374. package/dist/lifecycle.d.ts +2 -1
  375. package/dist/live-connectors-runner.d.ts +2 -1
  376. package/dist/local-llm-config.d.ts +7 -1
  377. package/dist/local-llm-config.js +12 -0
  378. package/dist/local-llm.d.ts +2 -1
  379. package/dist/local-model-endpoint.d.ts +2 -1
  380. package/dist/location/index.d.ts +4 -3
  381. package/dist/location/index.js +60 -59
  382. package/dist/maintenance/memory-governance.d.ts +2 -1
  383. package/dist/maintenance/memory-governance.js +24 -23
  384. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
  385. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +25 -24
  386. package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
  387. package/dist/maintenance/rebuild-memory-projection.js +26 -25
  388. package/dist/{maintenance-ag1gYztC.d.ts → maintenance-CW9wCzMP.d.ts} +3 -3
  389. package/dist/mcp-memory-inspector-app.d.ts +14 -12
  390. package/dist/memory-action-policy.d.ts +2 -1
  391. package/dist/memory-cache.d.ts +2 -1
  392. package/dist/memory-controller.d.ts +2 -1
  393. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  394. package/dist/memory-projection-store.d.ts +2 -1
  395. package/dist/memory-provenance.d.ts +2 -1
  396. package/dist/memory-snapshot.d.ts +2 -1
  397. package/dist/memory-subject-cli.d.ts +14 -12
  398. package/dist/memory-subject.d.ts +14 -12
  399. package/dist/memory-worth-outcomes.d.ts +3 -2
  400. package/dist/models-json.d.ts +2 -1
  401. package/dist/namespaces/migrate.d.ts +4 -3
  402. package/dist/namespaces/migrate.js +25 -24
  403. package/dist/namespaces/principal.d.ts +2 -1
  404. package/dist/namespaces/search.d.ts +2 -1
  405. package/dist/namespaces/search.js +4 -4
  406. package/dist/namespaces/storage.d.ts +4 -3
  407. package/dist/namespaces/storage.js +24 -23
  408. package/dist/native-knowledge.d.ts +2 -1
  409. package/dist/offline-sync-impression-drain.d.ts +2 -1
  410. package/dist/offline-sync-impression-drain.js +4 -4
  411. package/dist/operator-doctor-corpus.d.ts +2 -1
  412. package/dist/operator-doctor-corpus.js +28 -27
  413. package/dist/operator-doctor-replica.d.ts +2 -1
  414. package/dist/operator-toolkit.d.ts +4 -3
  415. package/dist/operator-toolkit.js +49 -44
  416. package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
  417. package/dist/orchestration/maintenance.d.ts +5 -4
  418. package/dist/orchestration/maintenance.js +37 -36
  419. package/dist/{orchestrator-Cf3G-3Ed.d.ts → orchestrator-DocO0_hw.d.ts} +9 -9
  420. package/dist/orchestrator.d.ts +12 -10
  421. package/dist/orchestrator.js +208 -198
  422. package/dist/patterns-cli.d.ts +2 -1
  423. package/dist/{pipeline-AwB03fw_.d.ts → pipeline-CiYcqqhl.d.ts} +1 -1
  424. package/dist/policy-runtime.d.ts +2 -1
  425. package/dist/proactive-contention.d.ts +2 -1
  426. package/dist/provenance.d.ts +2 -1
  427. package/dist/provenance.js +2 -2
  428. package/dist/{public-http-C3bLjE-L.d.ts → public-http-C0FoTiL_.d.ts} +1 -1
  429. package/dist/qmd-preflight.d.ts +3 -2
  430. package/dist/{qmd-Bfaydrfm.d.ts → qmd-qXD4vatU.d.ts} +1 -1
  431. package/dist/qmd-recall-cache.d.ts +2 -1
  432. package/dist/qmd.d.ts +3 -2
  433. package/dist/recall-concurrency-config.d.ts +2 -1
  434. package/dist/recall-disclosure-escalation.d.ts +2 -1
  435. package/dist/recall-explain-renderer.d.ts +2 -1
  436. package/dist/recall-explain-renderer.js +3 -3
  437. package/dist/recall-memory-map.d.ts +2 -1
  438. package/dist/recall-navigate-access.d.ts +2 -1
  439. package/dist/recall-navigate-access.js +2 -2
  440. package/dist/recall-navigate-disclosure.d.ts +2 -1
  441. package/dist/recall-navigate-disclosure.js +1 -1
  442. package/dist/recall-navigate.d.ts +2 -1
  443. package/dist/recall-navigate.js +2 -2
  444. package/dist/recall-planner-llm.d.ts +3 -1
  445. package/dist/recall-planner-llm.js +4 -2
  446. package/dist/recall-planner-llm.js.map +1 -1
  447. package/dist/recall-state-view-admission.d.ts +3 -2
  448. package/dist/recall-state-view-admission.js +6 -6
  449. package/dist/recall-state.d.ts +2 -1
  450. package/dist/recall-tag-filter.d.ts +2 -1
  451. package/dist/recall-timings.d.ts +2 -1
  452. package/dist/recall-xray-cli.d.ts +2 -1
  453. package/dist/recall-xray-cli.js +4 -4
  454. package/dist/recall-xray-renderer.d.ts +2 -1
  455. package/dist/recall-xray-renderer.js +3 -3
  456. package/dist/recall-xray.d.ts +2 -1
  457. package/dist/recall-xray.js +2 -2
  458. package/dist/reconcile/cursor.d.ts +2 -1
  459. package/dist/reconcile/cursor.js +2 -2
  460. package/dist/reconcile/manifest.d.ts +12 -2
  461. package/dist/reconcile/manifest.js +8 -6
  462. package/dist/reconcile/plan.d.ts +2 -1
  463. package/dist/reconcile/plan.js +2 -2
  464. package/dist/replay/normalizers/chatgpt.d.ts +2 -1
  465. package/dist/replay/normalizers/claude.d.ts +2 -1
  466. package/dist/replay/normalizers/openclaw.d.ts +2 -1
  467. package/dist/replay/normalizers/shared.d.ts +2 -1
  468. package/dist/replay/runner.d.ts +2 -1
  469. package/dist/replay/types.d.ts +2 -1
  470. package/dist/replica-divergence.d.ts +2 -1
  471. package/dist/replica-peers-config.d.ts +2 -1
  472. package/dist/{resolution-OHJZG45O.js → resolution-4GG3QZRJ.js} +8 -8
  473. package/dist/resolution-4GG3QZRJ.js.map +1 -0
  474. package/dist/resolve-auth-token.d.ts +2 -1
  475. package/dist/resume-bundles.js +19 -15
  476. package/dist/retrieval-agents.d.ts +3 -2
  477. package/dist/retrieval-tiers.d.ts +2 -1
  478. package/dist/routing/engine.d.ts +2 -1
  479. package/dist/routing/store.d.ts +2 -1
  480. package/dist/salvage-envelope.d.ts +2 -1
  481. package/dist/salvage-envelope.js +2 -2
  482. package/dist/schemas.d.ts +370 -160
  483. package/dist/schemas.js +1 -1
  484. package/dist/{scope-profiles-nxTKvjE-.d.ts → scope-profiles-BT9rqC3w.d.ts} +1 -1
  485. package/dist/search/embed-helper.d.ts +2 -1
  486. package/dist/search/factory.d.ts +2 -1
  487. package/dist/search/factory.js +3 -3
  488. package/dist/search/index.d.ts +2 -1
  489. package/dist/search/index.js +7 -7
  490. package/dist/search/lancedb-backend.d.ts +2 -1
  491. package/dist/search/meilisearch-backend.d.ts +2 -1
  492. package/dist/search/noop-backend.d.ts +2 -1
  493. package/dist/search/orama-backend.d.ts +2 -1
  494. package/dist/search/port.d.ts +2 -1
  495. package/dist/search/remote-backend.d.ts +2 -1
  496. package/dist/{semantic-consolidation-C83DVakV.d.ts → semantic-consolidation-CmZi7thY.d.ts} +1 -1
  497. package/dist/semantic-consolidation.d.ts +3 -2
  498. package/dist/semantic-consolidation.js +25 -24
  499. package/dist/semantic-rule-promotion.js +24 -23
  500. package/dist/semantic-rule-verifier.d.ts +2 -1
  501. package/dist/semantic-rule-verifier.js +24 -23
  502. package/dist/{service-q-xtOoAr.d.ts → service-CLkA7AQB.d.ts} +2 -2
  503. package/dist/session-observer-bands.d.ts +2 -1
  504. package/dist/session-observer-state.d.ts +2 -1
  505. package/dist/shared-context/manager.d.ts +8 -7
  506. package/dist/signal.d.ts +2 -1
  507. package/dist/source-agent-qualifier.d.ts +2 -1
  508. package/dist/source-agent-qualifier.js +40 -39
  509. package/dist/standup/build.js +25 -24
  510. package/dist/{storage-Ca0MbTfm.d.ts → storage-wvX01lht.d.ts} +1 -1
  511. package/dist/storage.d.ts +3 -2
  512. package/dist/storage.js +23 -22
  513. package/dist/subject-config.d.ts +2 -1
  514. package/dist/subject-config.js +2 -2
  515. package/dist/summarizer.d.ts +2 -1
  516. package/dist/summarizer.js +6 -3
  517. package/dist/summary-snapshot.d.ts +2 -1
  518. package/dist/support-passport/index.d.ts +17 -15
  519. package/dist/support-passport/index.js +83 -80
  520. package/dist/temporal-supersession.d.ts +3 -2
  521. package/dist/temporal-timeline-recall.d.ts +2 -1
  522. package/dist/temporal-validity.d.ts +2 -1
  523. package/dist/threading.d.ts +2 -1
  524. package/dist/tier-migration.d.ts +3 -2
  525. package/dist/tier-routing.d.ts +2 -1
  526. package/dist/tier-routing.js +3 -3
  527. package/dist/{tier-stats-VK5PCO2L.js → tier-stats-LUSUUNU6.js} +4 -4
  528. package/dist/topics.d.ts +2 -1
  529. package/dist/transcript.d.ts +2 -1
  530. package/dist/transfer/capsule-import.js +1 -1
  531. package/dist/transfer/export-okf.d.ts +2 -1
  532. package/dist/transfer/export-okf.js +24 -23
  533. package/dist/transfer/types.d.ts +98 -98
  534. package/dist/trust-score-stage.d.ts +2 -1
  535. package/dist/trust-score.d.ts +2 -1
  536. package/dist/{types-yDgWDkrJ.d.ts → types-Cyr32ABj.d.ts} +51 -10
  537. package/dist/types.d.ts +2 -1
  538. package/dist/types.js +1 -1
  539. package/dist/utility-runtime.d.ts +2 -1
  540. package/dist/verified-recall.js +24 -23
  541. package/dist/who-knows-cli.d.ts +14 -12
  542. package/dist/who-knows-cli.js +25 -24
  543. package/dist/who-knows.d.ts +14 -12
  544. package/dist/who-knows.js +24 -23
  545. package/dist/write-envelope.d.ts +7 -1
  546. package/dist/write-envelope.js +1 -1
  547. package/package.json +42 -2
  548. package/src/access-boundary.ts +21 -6
  549. package/src/access-category-alias.test.ts +488 -51
  550. package/src/access-http.test.ts +292 -5
  551. package/src/access-http.ts +4 -0
  552. package/src/access-mcp.test.ts +2 -2
  553. package/src/access-observe-write-category.ts +25 -0
  554. package/src/access-observe-write-surface.ts +58 -57
  555. package/src/access-operations-batch.ts +28 -2
  556. package/src/access-operations.ts +6 -4
  557. package/src/access-schema.ts +106 -50
  558. package/src/access-service.ts +23 -9
  559. package/src/background-generation-config.ts +79 -0
  560. package/src/background-generation.test.ts +123 -0
  561. package/src/background-generation.ts +52 -0
  562. package/src/cli-fallback.ts +8 -2
  563. package/src/config.test.ts +172 -0
  564. package/src/config.ts +4 -45
  565. package/src/extraction-prompt.ts +37 -3
  566. package/src/extraction-source-grounding-rules.ts +46 -9
  567. package/src/extraction-source-grounding.ts +2 -1
  568. package/src/extraction-span-config.ts +81 -0
  569. package/src/extraction-span-materialize.test.ts +376 -0
  570. package/src/extraction-span-materialize.ts +241 -0
  571. package/src/extraction.ts +70 -25
  572. package/src/fallback-llm-codex-subscription.ts +168 -0
  573. package/src/fallback-llm.test.ts +46 -0
  574. package/src/fallback-llm.ts +60 -48
  575. package/src/index.ts +2 -16
  576. package/src/local-llm-config.ts +84 -0
  577. package/src/providers/codex-subscription.test.ts +804 -1
  578. package/src/providers/codex-subscription.ts +407 -65
  579. package/src/reconcile/manifest.test.ts +11 -1
  580. package/src/reconcile/manifest.ts +12 -0
  581. package/src/schemas.ts +14 -0
  582. package/src/source-agent-qualifier.ts +5 -1
  583. package/src/summarizer.ts +25 -0
  584. package/src/testing/subjects/extraction-lifecycle.test.ts +27 -10
  585. package/src/types.ts +12 -11
  586. package/src/write-envelope.ts +5 -0
  587. package/dist/chunk-27IOSH2W.js.map +0 -1
  588. package/dist/chunk-4MDKNUV4.js.map +0 -1
  589. package/dist/chunk-65RENJGB.js.map +0 -1
  590. package/dist/chunk-6J6K3STG.js.map +0 -1
  591. package/dist/chunk-7CBKAQIG.js.map +0 -1
  592. package/dist/chunk-AJTG3CP7.js.map +0 -1
  593. package/dist/chunk-DVOBLPSQ.js.map +0 -1
  594. package/dist/chunk-JHZCXUQI.js.map +0 -1
  595. package/dist/chunk-JR6PP7UM.js.map +0 -1
  596. package/dist/chunk-L2QLDZJC.js.map +0 -1
  597. package/dist/chunk-LEMD7WZJ.js.map +0 -1
  598. package/dist/chunk-LSLCFCCQ.js.map +0 -1
  599. package/dist/chunk-OQ7SSRXP.js.map +0 -1
  600. package/dist/chunk-OS2AT2JU.js.map +0 -1
  601. package/dist/chunk-UBG4GAEP.js.map +0 -1
  602. package/dist/chunk-XPJNT6PI.js.map +0 -1
  603. package/dist/chunk-YEN4TREG.js.map +0 -1
  604. /package/dist/{contradiction-scan-GVD4JJ7B.js.map → access-observe-write-category.js.map} +0 -0
  605. /package/dist/{resolution-OHJZG45O.js.map → background-generation-config.js.map} +0 -0
  606. /package/dist/{capsule-merge-ZCXUPLNJ.js.map → capsule-merge-IPG4IOFP.js.map} +0 -0
  607. /package/dist/{chunk-LO4UKPKX.js.map → chunk-27MKMTBY.js.map} +0 -0
  608. /package/dist/{chunk-TK4FHQRN.js.map → chunk-2J3V5QEO.js.map} +0 -0
  609. /package/dist/{chunk-JSRVXI6E.js.map → chunk-2OGTN37H.js.map} +0 -0
  610. /package/dist/{chunk-DK4X5B6I.js.map → chunk-2PTNJTBE.js.map} +0 -0
  611. /package/dist/{chunk-PWPIERBM.js.map → chunk-37CAEC7E.js.map} +0 -0
  612. /package/dist/{chunk-S2ULTQZR.js.map → chunk-3N3PBBEH.js.map} +0 -0
  613. /package/dist/{chunk-ZTG4P7NZ.js.map → chunk-3OYSIVOO.js.map} +0 -0
  614. /package/dist/{chunk-ZBEGS7OB.js.map → chunk-474DL7UB.js.map} +0 -0
  615. /package/dist/{chunk-YNN26CIZ.js.map → chunk-4B3HBIFX.js.map} +0 -0
  616. /package/dist/{chunk-HC4GFLMQ.js.map → chunk-4BCHFSC7.js.map} +0 -0
  617. /package/dist/{chunk-YEDVOYL2.js.map → chunk-4RX5O34R.js.map} +0 -0
  618. /package/dist/{chunk-W6IJMWTZ.js.map → chunk-5AERZWJD.js.map} +0 -0
  619. /package/dist/{chunk-PAAJWQH5.js.map → chunk-62D2PAAM.js.map} +0 -0
  620. /package/dist/{chunk-52II7PB6.js.map → chunk-645WOU5I.js.map} +0 -0
  621. /package/dist/{chunk-326KUXIR.js.map → chunk-6EHM2AV7.js.map} +0 -0
  622. /package/dist/{chunk-YM7YN37H.js.map → chunk-6ET2VII7.js.map} +0 -0
  623. /package/dist/{chunk-A2YQL2FF.js.map → chunk-6P4REYKL.js.map} +0 -0
  624. /package/dist/{chunk-FVJ4D6L7.js.map → chunk-6PRY6CLC.js.map} +0 -0
  625. /package/dist/{chunk-GLZH5VEN.js.map → chunk-6ZMNTRU3.js.map} +0 -0
  626. /package/dist/{chunk-Z7ACR6MJ.js.map → chunk-74AHCL56.js.map} +0 -0
  627. /package/dist/{chunk-5VAF4ID4.js.map → chunk-7S53BPTU.js.map} +0 -0
  628. /package/dist/{chunk-EEBQFG5E.js.map → chunk-A6CKMIPK.js.map} +0 -0
  629. /package/dist/{chunk-2YLMUME2.js.map → chunk-AECJY3GJ.js.map} +0 -0
  630. /package/dist/{chunk-NPNSKE76.js.map → chunk-B36GUU6T.js.map} +0 -0
  631. /package/dist/{chunk-Y63ZFP4X.js.map → chunk-BJEJUOGM.js.map} +0 -0
  632. /package/dist/{chunk-TLHNF6GA.js.map → chunk-BV4ZKIZH.js.map} +0 -0
  633. /package/dist/{chunk-3FJKJ5UZ.js.map → chunk-BX4EOMKT.js.map} +0 -0
  634. /package/dist/{chunk-BJETIR53.js.map → chunk-CBFYCDYO.js.map} +0 -0
  635. /package/dist/{chunk-ZWEZXVYH.js.map → chunk-CEO4DONG.js.map} +0 -0
  636. /package/dist/{chunk-WPDKBUWX.js.map → chunk-DPMTLJCT.js.map} +0 -0
  637. /package/dist/{chunk-LYDJRF45.js.map → chunk-EY5JAWZC.js.map} +0 -0
  638. /package/dist/{chunk-R4OCGPSH.js.map → chunk-FJMYMJLR.js.map} +0 -0
  639. /package/dist/{chunk-YXLUTALO.js.map → chunk-GAS7KYC7.js.map} +0 -0
  640. /package/dist/{chunk-UDZYNIDJ.js.map → chunk-GGAXFTNH.js.map} +0 -0
  641. /package/dist/{chunk-QURNMKME.js.map → chunk-GQQVEH6V.js.map} +0 -0
  642. /package/dist/{chunk-J7PB5UQ4.js.map → chunk-GT4ZHOKT.js.map} +0 -0
  643. /package/dist/{chunk-WIKO4SCR.js.map → chunk-H3TKENU4.js.map} +0 -0
  644. /package/dist/{chunk-ZLN7AROH.js.map → chunk-HIP6DKJJ.js.map} +0 -0
  645. /package/dist/{chunk-UYUCCQ46.js.map → chunk-HVS7TH2Y.js.map} +0 -0
  646. /package/dist/{chunk-Z3O53WZR.js.map → chunk-IWO6QXWJ.js.map} +0 -0
  647. /package/dist/{chunk-42DJ235G.js.map → chunk-J272ODKJ.js.map} +0 -0
  648. /package/dist/{chunk-JR6H5CYS.js.map → chunk-JA2QJOAX.js.map} +0 -0
  649. /package/dist/{chunk-R3TLVTWW.js.map → chunk-JDX2OA4R.js.map} +0 -0
  650. /package/dist/{chunk-HXSAWV3A.js.map → chunk-JNSENHV5.js.map} +0 -0
  651. /package/dist/{chunk-RRZKTSFG.js.map → chunk-JPOX2AJB.js.map} +0 -0
  652. /package/dist/{chunk-TKFSXDOB.js.map → chunk-K5DA5TRG.js.map} +0 -0
  653. /package/dist/{chunk-AZSKROVQ.js.map → chunk-KDFDXEXZ.js.map} +0 -0
  654. /package/dist/{chunk-AKE4GGQ3.js.map → chunk-KQW3YGEN.js.map} +0 -0
  655. /package/dist/{chunk-B3O3IRZN.js.map → chunk-L63GFNKL.js.map} +0 -0
  656. /package/dist/{chunk-YJ6VCDMZ.js.map → chunk-M6HBPLBA.js.map} +0 -0
  657. /package/dist/{chunk-L2WQVSKP.js.map → chunk-MLWMR2GE.js.map} +0 -0
  658. /package/dist/{chunk-WHHEPAO3.js.map → chunk-NWMUSKED.js.map} +0 -0
  659. /package/dist/{chunk-JRWW7GM6.js.map → chunk-OKO57IXB.js.map} +0 -0
  660. /package/dist/{chunk-VYXDUPYE.js.map → chunk-PPQEP4OH.js.map} +0 -0
  661. /package/dist/{chunk-Q4AUIFUA.js.map → chunk-QMWKENNK.js.map} +0 -0
  662. /package/dist/{chunk-XCOV45MO.js.map → chunk-R4VAUNNC.js.map} +0 -0
  663. /package/dist/{chunk-353KGBKY.js.map → chunk-RW4QNB4J.js.map} +0 -0
  664. /package/dist/{chunk-FQXJAC3T.js.map → chunk-SGUDMW2K.js.map} +0 -0
  665. /package/dist/{chunk-S5G2LAL7.js.map → chunk-SV4Z2S67.js.map} +0 -0
  666. /package/dist/{chunk-HUT2JR6I.js.map → chunk-T32B72QX.js.map} +0 -0
  667. /package/dist/{chunk-LMCD5W5B.js.map → chunk-TRLOFIQC.js.map} +0 -0
  668. /package/dist/{chunk-JZ2CHRLB.js.map → chunk-TTSJ7WUC.js.map} +0 -0
  669. /package/dist/{chunk-CNV2A557.js.map → chunk-TUKGXQ5T.js.map} +0 -0
  670. /package/dist/{chunk-QATYVTP7.js.map → chunk-UIOIDW3L.js.map} +0 -0
  671. /package/dist/{chunk-776GVKL7.js.map → chunk-ULDBGA5W.js.map} +0 -0
  672. /package/dist/{chunk-NN4JEFON.js.map → chunk-UQNYPK7G.js.map} +0 -0
  673. /package/dist/{chunk-A5UQ52YQ.js.map → chunk-UZZ7SQT3.js.map} +0 -0
  674. /package/dist/{chunk-F6IVBYFS.js.map → chunk-V6G2PSXA.js.map} +0 -0
  675. /package/dist/{chunk-RUXPVSML.js.map → chunk-VHOSM5G4.js.map} +0 -0
  676. /package/dist/{chunk-QBLDCI6E.js.map → chunk-VMNCZ627.js.map} +0 -0
  677. /package/dist/{chunk-P3ONDDIJ.js.map → chunk-VV4ZVUE6.js.map} +0 -0
  678. /package/dist/{chunk-A7GQBJP5.js.map → chunk-X2NFFBTO.js.map} +0 -0
  679. /package/dist/{chunk-ECKG5WSI.js.map → chunk-XGRXQR6T.js.map} +0 -0
  680. /package/dist/{chunk-LNDLXMH6.js.map → chunk-XN6XT6GR.js.map} +0 -0
  681. /package/dist/{chunk-C6KRO3SU.js.map → chunk-XVDZFTN5.js.map} +0 -0
  682. /package/dist/{chunk-2BQ4ZIWC.js.map → chunk-XWLLFKHM.js.map} +0 -0
  683. /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
  684. /package/dist/{chunk-BNGHPYZU.js.map → chunk-YUW66UAH.js.map} +0 -0
  685. /package/dist/{chunk-5JG5EBVL.js.map → chunk-ZEGL7YCC.js.map} +0 -0
  686. /package/dist/{chunk-PHP3MUGF.js.map → chunk-ZKZFFWLV.js.map} +0 -0
  687. /package/dist/{chunk-GCBIXUPT.js.map → chunk-ZMWSYUUL.js.map} +0 -0
  688. /package/dist/{chunk-X2QPKLPL.js.map → chunk-ZZUVBZL2.js.map} +0 -0
  689. /package/dist/{first-start-migration-L3UFX5CU.js.map → first-start-migration-ZWMV5CX4.js.map} +0 -0
  690. /package/dist/{tier-stats-VK5PCO2L.js.map → tier-stats-LUSUUNU6.js.map} +0 -0
@@ -5,7 +5,7 @@ import { computeLegacyContentHash } from "../content-hash.js";
5
5
  import { attachCitation, formatCitation } from "../source-attribution.js";
6
6
  import { parseFrontmatter } from "../storage.js";
7
7
  import { ContentHashIndex } from "../storage/content-hash-index.js";
8
- import { type ReconcileManifest, buildReconcileManifest, collapseActiveFactDuplicates } from "./manifest.js";
8
+ import { type ReconcileManifest, buildReconcileManifest, citationTemplateFingerprint, collapseActiveFactDuplicates, peerManifestRevision } from "./manifest.js";
9
9
  import { planReconciliation } from "./plan.js";
10
10
 
11
11
  const fileHash = (content: string): string => createHash("sha256").update(content).digest("hex");
@@ -29,6 +29,16 @@ function memoryFile(options: {
29
29
  ].join("\n");
30
30
  }
31
31
 
32
+ test("peer manifest revision includes the citation-template fingerprint", () => {
33
+ const fallback = peerManifestRevision();
34
+ const custom = peerManifestRevision("{{source}}");
35
+ assert.match(fallback, new RegExp(`(?:^|;)citation=${citationTemplateFingerprint(undefined)}(?:;|$)`));
36
+ assert.match(custom, new RegExp(`(?:^|;)citation=${citationTemplateFingerprint("{{source}}")}(?:;|$)`));
37
+ assert.notEqual(fallback, custom);
38
+ assert.notEqual(custom, peerManifestRevision("{{title}}"));
39
+ assert.equal(peerManifestRevision("{{source}}"), custom);
40
+ });
41
+
32
42
  test("reconcile manifest keeps file identity separate from canonical semantic identity", async () => {
33
43
  const content = "The deployment uses a durable queue with an enrichment suffix.";
34
44
  const semanticHash = ContentHashIndex.computeHash("The deployment uses a durable queue.");
@@ -30,6 +30,18 @@ export const CONTENT_HASH_NORMALIZER_VERSION = 4;
30
30
  */
31
31
  export const IDENTITY_RESOLUTION_VERSION = 2;
32
32
 
33
+ /**
34
+ * Identity of the manifest-affecting implementation this peer builds
35
+ * STREAMED manifests with. Advertised via offline-sync capabilities so the
36
+ * client can key peer-side plan caches on it: a peer that upgrades its
37
+ * normalization logic or citation template without rewriting stored files
38
+ * keeps the same file hashes, and only this revision invalidates the stale
39
+ * cached identities (#2803 / #2956 review).
40
+ */
41
+ export function peerManifestRevision(citationTemplate?: string): string {
42
+ return `schema=${RECONCILE_MANIFEST_SCHEMA_VERSION};normalizer=${CONTENT_HASH_NORMALIZER_VERSION};identity=${IDENTITY_RESOLUTION_VERSION};citation=${citationTemplateFingerprint(citationTemplate)}`;
43
+ }
44
+
33
45
  export interface ReconcileMemoryIdentity {
34
46
  id: string;
35
47
  category: string;
package/src/schemas.ts CHANGED
@@ -129,6 +129,20 @@ export const ExtractedFactSchema = z.object({
129
129
  .describe(
130
130
  'For category "procedure" only: ordered steps (intent per step). At least two steps; include explicit trigger phrasing in content (e.g. "When you deploy…").',
131
131
  ),
132
+ span: z
133
+ .object({
134
+ sourceMessageIndex: z.number(),
135
+ charStart: z.number(),
136
+ charEnd: z.number(),
137
+ frame: z.string(),
138
+ sourceHash: z.string().optional().nullable(),
139
+ sourceLength: z.number().optional().nullable(),
140
+ })
141
+ .optional()
142
+ .nullable()
143
+ .describe(
144
+ 'Span-mode only (issue #2333): offsets of a verbatim supporting span in the numbered conversation segment. Messages are numbered in order starting at 0; charStart/charEnd index that message\'s text in a [charStart, charEnd) interval (end-exclusive). "frame" is at most 15 words that make the span self-contained (resolve pronouns, name the subject). Optional sourceHash/sourceLength bind the span to the exact prompt text. When span-mode requests spans, omit the full "content" restatement and let the frame plus span carry the fact.',
145
+ ),
132
146
  reasoningTrace: z
133
147
  .object({
134
148
  steps: z
@@ -60,7 +60,11 @@ export function applyGroundingWithConnector(
60
60
  ctx: ExtractionGroundingContext,
61
61
  ): ExtractionResult {
62
62
  const caps = resolvePipelineProcessingCapabilities(config);
63
- const options = { sourceGrounding: caps.sourceGrounding, anchorTemporalExpressions: caps.delinearize };
63
+ const options = {
64
+ sourceGrounding: caps.sourceGrounding,
65
+ anchorTemporalExpressions: caps.delinearize,
66
+ spanMode: config.extraction?.spanMode ?? "off",
67
+ };
64
68
  const known = buildKnownConnectors(ctx.sourceConnector);
65
69
  // Scope-forcing is decoupled from strip/restore (runs without a trusted
66
70
  // connector) but gated on the capability: flag off = byte-identical pre-#2183.
package/src/summarizer.ts CHANGED
@@ -6,6 +6,10 @@ import { LocalLlmClient } from "./local-llm.js";
6
6
  import { FallbackLlmClient, fallbackLlmRuntimeContextFromConfig, gatewayTaskChainOptions } from "./fallback-llm.js";
7
7
  import { ModelRegistry } from "./model-registry.js";
8
8
  import { extractJsonCandidates } from "./json-extract.js";
9
+ import {
10
+ completeBackgroundGeneration,
11
+ parseBackgroundGenerationJson,
12
+ } from "./background-generation.js";
9
13
  import type { HourlySummary, TranscriptEntry, PluginConfig, GatewayConfig } from "./types.js";
10
14
  import type { TranscriptManager } from "./transcript.js";
11
15
  import { readSummarySnapshot, upsertSummarySnapshot, writeSummarySnapshot } from "./summary-snapshot.js";
@@ -216,6 +220,27 @@ export class HourlySummarizer {
216
220
  const hourIso = hourStart.toISOString();
217
221
  const startTime = Date.now();
218
222
 
223
+ if (this.config.backgroundGeneration) {
224
+ try {
225
+ const text = await completeBackgroundGeneration(this.config, [
226
+ { role: "system", content: "You are a conversation summarization system. Output valid JSON only." },
227
+ { role: "user", content: `Summarize this conversation:\n\n${conversation}` },
228
+ ]);
229
+ const parsed = parseBackgroundGenerationJson(text, (value) => HourlySummarySchema.parse(value));
230
+ if (parsed) {
231
+ return {
232
+ hour: hourIso,
233
+ sessionKey,
234
+ bullets: parsed.bullets,
235
+ turnCount: entries.length,
236
+ generatedAt: new Date().toISOString(),
237
+ };
238
+ }
239
+ } catch {
240
+ log.info("summary generation: background generation unavailable, continuing");
241
+ }
242
+ }
243
+
219
244
  // Try local LLM first if enabled
220
245
  if (this.shouldUseLocalLlm) {
221
246
  try {
@@ -73,6 +73,7 @@ function namespacedConfig(memoryDir: string): PluginConfig {
73
73
  { name: "alice", readPrincipals: ["alice"], writePrincipals: ["alice"] },
74
74
  { name: "bob", readPrincipals: ["bob"], writePrincipals: ["bob"] },
75
75
  ],
76
+ extraction: { spanMode: "on" },
76
77
  });
77
78
  }
78
79
 
@@ -98,6 +99,7 @@ function rememberedBindingConfig(memoryDir: string): PluginConfig {
98
99
  principalFromSessionKeyMode: "map",
99
100
  principalFromSessionKeyRules: [{ match: REMEMBERED_SESSION, principal: "alice" }],
100
101
  namespacePolicies: [{ name: "alice", readPrincipals: ["alice"], writePrincipals: ["alice"] }],
102
+ extraction: { spanMode: "on" },
101
103
  });
102
104
  }
103
105
 
@@ -107,6 +109,20 @@ const NAMESPACE_ROWS: Partial<Record<MatrixRowId, true>> = {
107
109
  "provider-rebinding": true,
108
110
  };
109
111
 
112
+ function spanBearingResult(turns: BufferTurn[]) {
113
+ const result = singleFactResult(turns.map((turn) => turn.content).join(" | "));
114
+ const first = turns[0]?.content ?? "";
115
+ const fact = result.facts[0];
116
+ if (fact === undefined) return result;
117
+ fact.span = {
118
+ sourceMessageIndex: 0,
119
+ charStart: 0,
120
+ charEnd: first.length,
121
+ frame: "Lifecycle probe",
122
+ };
123
+ return result;
124
+ }
125
+
110
126
  async function assertHarmonicEpisode(memoryDir: string, sessionKey?: string): Promise<void> {
111
127
  const status = await harmonicNodeStoreStatus(memoryDir);
112
128
  assert.equal(status.nodes.invalid, 0, "harmonic persistence must write only valid abstraction nodes");
@@ -133,10 +149,15 @@ const subject: LifecycleSubject<ExtractionLifecycleState> = {
133
149
  ? makeHarmonicLifecycleConfig(memoryDir, {
134
150
  extractionDedupeEnabled: true,
135
151
  extractionDedupeWindowMs: 60_000,
152
+ // Issue #2333: materialization sits inside the extraction
153
+ // path, so the dedupe/replay row must hold with spanMode on.
154
+ extraction: { spanMode: "on" },
136
155
  })
137
- : makeHarmonicLifecycleConfig(memoryDir);
156
+ // Issue #2333: extraction-lifecycle rows (compaction flush,
157
+ // before_reset, …) must pass with `extraction.spanMode: "on"`.
158
+ : makeHarmonicLifecycleConfig(memoryDir, { extraction: { spanMode: "on" } });
138
159
  primary = new Orchestrator(cfg);
139
- const calls = stubExtraction(primary, (turns) => singleFactResult(turns.map((turn) => turn.content).join(" | ")));
160
+ const calls = stubExtraction(primary, (turns) => spanBearingResult(turns));
140
161
  return { memoryDir, cfg, orchestrators: [primary], calls };
141
162
  } catch (err) {
142
163
  // Transactional setup: a partial build must not leak the orchestrator or temp dir.
@@ -216,11 +237,9 @@ const subject: LifecycleSubject<ExtractionLifecycleState> = {
216
237
  );
217
238
  await primary.destroy();
218
239
  state.orchestrators.length = 0;
219
- const second = new Orchestrator(makeHarmonicLifecycleConfig(state.memoryDir));
240
+ const second = new Orchestrator(makeHarmonicLifecycleConfig(state.memoryDir, { extraction: { spanMode: "on" } }));
220
241
  state.orchestrators.push(second);
221
- state.restartCalls = stubExtraction(second, (turns) =>
222
- singleFactResult(turns.map((turn) => turn.content).join(" | "))
223
- );
242
+ state.restartCalls = stubExtraction(second, (turns) => spanBearingResult(turns));
224
243
  // Drain the buffer that survived the restart (state/buffer.json).
225
244
  await second.flushSession("session-parked", { reason: "session_end" });
226
245
  return;
@@ -250,7 +269,7 @@ const subject: LifecycleSubject<ExtractionLifecycleState> = {
250
269
  // Rewire the seam: extraction succeeds but trips the abort mid-flight.
251
270
  state.abortFlushCalls = stubExtraction(primary, (turns) => {
252
271
  controller.abort();
253
- return singleFactResult(turns.map((turn) => turn.content).join(" | "));
272
+ return spanBearingResult(turns);
254
273
  });
255
274
  let abortRejected = false;
256
275
  await primary
@@ -267,9 +286,7 @@ const subject: LifecycleSubject<ExtractionLifecycleState> = {
267
286
  // A fresh, non-aborted flush must find the turn still buffered AND must
268
287
  // itself succeed — swallowing its failure would let a recovery-flush
269
288
  // regression pass vacuously (the extraction call still bumps the count).
270
- state.secondFlushCalls = stubExtraction(primary, (turns) =>
271
- singleFactResult(turns.map((turn) => turn.content).join(" | "))
272
- );
289
+ state.secondFlushCalls = stubExtraction(primary, (turns) => spanBearingResult(turns));
273
290
  await primary.flushSession("session-reset", { reason: "before_reset" });
274
291
  // The recovery flush must PERSIST the preserved turn as a fact...
275
292
  state.recoveredFactCount = (
package/src/types.ts CHANGED
@@ -4,6 +4,7 @@ import type { LocationConfig } from "./location/types.js";
4
4
  import type { OkfConfig } from "./okf/config.js";
5
5
  import type { ActivityConfig } from "./activity/types.js";
6
6
  import type { WearablesConfig } from "./wearables/types.js";
7
+ import type { ExtractionSpanConfig, ExtractedFactSpanRef } from "./extraction-span-config.js";
7
8
  import type { ExtractionLivenessConfig } from "./extraction-liveness.js";
8
9
  import type { ReplicaPeersConfig } from "./replica-peers-config.js";
9
10
  import type { ExternalWikiRoot } from "./external-wiki-config.js";
@@ -12,6 +13,8 @@ import type { ContradictionLocalizationConfig, ContradictionScanConfig } from ".
12
13
  import type { GraphPathScoringConfig } from "./graph-path-scoring-config.js";
13
14
  export type { ContradictionLocalizationConfig, ContradictionScanConfig } from "./contradiction-config.js";
14
15
  export type { GraphPathScoringConfig } from "./graph-path-scoring-config.js";
16
+ export type { BackgroundGenerationConfig } from "./background-generation-config.js";
17
+ import type { BackgroundGenerationConfig } from "./background-generation-config.js";
15
18
  import type {
16
19
  DriftDetectionSettings,
17
20
  MemoryDriftProvenance,
@@ -684,7 +687,6 @@ export interface SemanticChunkingConfigShape {
684
687
  embeddingBatchSize: number;
685
688
  fallbackToRecursive: boolean;
686
689
  }
687
-
688
690
  export interface PluginConfig
689
691
  extends BoundedJsonlStateConfig,
690
692
  SecurityConfig,
@@ -694,6 +696,7 @@ export interface PluginConfig
694
696
  LocalLlmConfig {
695
697
  openaiApiKey: string | undefined;
696
698
  openaiBaseUrl: string | undefined;
699
+ backgroundGeneration?: BackgroundGenerationConfig;
697
700
  model: string;
698
701
  reasoningEffort: ReasoningEffort;
699
702
  triggerMode: TriggerMode;
@@ -1231,6 +1234,8 @@ export interface PluginConfig
1231
1234
  dreamsPhases: DreamsPhasesConfig;
1232
1235
  procedural: ProceduralConfig;
1233
1236
  extractionLiveness: ExtractionLivenessConfig;
1237
+ /** Span-mode extraction (#2333 Phase B, bench-gated). Default off. */
1238
+ extraction: ExtractionSpanConfig;
1234
1239
  replicaPeers: ReplicaPeersConfig;
1235
1240
  converge: ConvergeConfig;
1236
1241
  /** Claim-level provenance spans (#1575); see `ProvenanceConfig` for defaults. */
@@ -3232,17 +3237,11 @@ export interface ExtractedFact {
3232
3237
  * content-hash dedup (rule 23 / checklist §13).
3233
3238
  */
3234
3239
  quote?: string;
3235
- /**
3236
- * Transient requireSpans signal (#1575 PR 2): quote unlocatable while
3237
- * `provenance.requireSpans` is on. Persist path routes the fact to
3238
- * `pending_review`. Stripped before persistence — never reaches frontmatter.
3239
- */
3240
+ /** Transient requireSpans signal (#1575 PR 2): quote unlocatable while
3241
+ * `provenance.requireSpans` is on routed to `pending_review`; stripped pre-persist. */
3240
3242
  requireSpansPending?: boolean;
3241
3243
  promptedByQuestion?: string;
3242
- /**
3243
- * Project- vs global-scoped; emitted when `extractionScopeClassificationEnabled`.
3244
- * Defaults to "project" with a coding context active, else "global".
3245
- */
3244
+ /** Project- vs global-scoped; emitted when `extractionScopeClassificationEnabled`; defaults "project" with a coding context. */
3246
3245
  scope?: MemoryScope;
3247
3246
  /** Extractor-assigned subject, present only when subjectClassification.enabled (issue #2372). */
3248
3247
  subject?: MemorySubject;
@@ -3278,6 +3277,9 @@ export interface ExtractedFact {
3278
3277
  * `observedAt`, then to the batch anchor, when absent.
3279
3278
  */
3280
3279
  sourceTurnTimestamp?: string;
3280
+ /** Transient span-mode reference (issue #2333): offsets into the exact
3281
+ * per-turn text the extraction model saw; stripped at materialization. */
3282
+ span?: ExtractedFactSpanRef | null;
3281
3283
  }
3282
3284
 
3283
3285
  export interface ExtractedReasoningTraceStep {
@@ -3859,7 +3861,6 @@ export interface HourlySummary {
3859
3861
  // ============================================================================
3860
3862
  // Dreams Pipeline Telemetry (issue #678 PR 3/4)
3861
3863
  // ============================================================================
3862
-
3863
3864
  // Re-export from the authoritative source to avoid duplicate definitions.
3864
3865
  // dreams-ledger.ts is the single source of truth; types.ts re-exports so
3865
3866
  // callers that import from types.js continue to work unchanged.
@@ -121,6 +121,11 @@ const MEMORY_CATEGORY_TABLE: Record<MemoryCategory, true> = {
121
121
  reasoning_trace: true,
122
122
  };
123
123
 
124
+ /**
125
+ * Canonical category spellings, sorted. Runtime counterpart of the
126
+ * `MemoryCategory` union for error messages and cross-module consistency
127
+ * checks (issue #2829).
128
+ */
124
129
  export const MEMORY_CATEGORY_NAMES = Object.keys(MEMORY_CATEGORY_TABLE).sort();
125
130
 
126
131
  export function isMemoryCategory(value: string): value is MemoryCategory {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/extraction-source-grounding-rules.ts"],"sourcesContent":["import type { ExtractionResult } from \"./types.js\";\nimport { anchorTemporalExpressions } from \"./delinearize.js\";\nimport {\n GROUNDING_AUXILIARY_TOKENS,\n GROUNDING_COPULAR_FORMS,\n GROUNDING_ENTITY_TYPE_PREFIXES,\n GROUNDING_MIN_COVERAGE,\n GROUNDING_MIN_SHARED_TOKENS,\n GROUNDING_STOPWORDS,\n areGroundingTokensCompatible,\n containsContiguousGroundingTokens,\n containsExactTokenSequence,\n groundingLexemes,\n groundingTokenSequence,\n hasContradictoryPolarity,\n hasExplicitRoleSubjectToken,\n isInterrogativeSourceSentence,\n normalizeForExactMatch,\n normalizedGroundingAlignmentTokenSequence,\n normalizedGroundingTokenSequence,\n sourceSentences,\n spacelessScriptGroundedTokenScore,\n splitGroundingClauses,\n stemToken,\n tokenize,\n tokenSequence,\n} from \"./extraction-source-grounding-helpers.js\";\n\nexport interface ExtractionSourceGroundingOptions {\n sourceGrounding: boolean;\n anchorTemporalExpressions: boolean;\n}\n\nexport function applyExtractionSourceGrounding(\n result: ExtractionResult,\n sourceText: string,\n assertionSourceText: string = sourceText,\n roleAssertionSources: ExtractionGroundingRoleSources | undefined,\n messageTimestamp: Date | undefined,\n options: ExtractionSourceGroundingOptions,\n): ExtractionResult {\n if (!options.sourceGrounding) return result;\n const anchorSource = (source: string): string =>\n options.anchorTemporalExpressions\n ? anchorTemporalExpressions(source, messageTimestamp ?? new Date())\n : source;\n const anchoredRoleSources = roleAssertionSources === undefined\n ? undefined\n : {\n profile: roleAssertionSources.profile === undefined\n ? undefined\n : anchorSource(roleAssertionSources.profile),\n identity: roleAssertionSources.identity === undefined\n ? undefined\n : anchorSource(roleAssertionSources.identity),\n };\n return filterExtractionResultBySource(\n result,\n anchorSource(sourceText),\n anchorSource(assertionSourceText),\n anchoredRoleSources,\n options.anchorTemporalExpressions ? anchorSource : undefined,\n );\n}\n\nexport interface ExtractionGroundingRoleSources {\n profile?: string;\n identity?: string;\n}\n\n\n\ninterface GroundingCopularClaim {\n subject: string;\n predicate: string;\n}\n\nfunction groundingCopularClaim(text: string): GroundingCopularClaim | undefined {\n const lexemes = groundingLexemes(text);\n const copulaIndex = lexemes.findIndex(({ token }) => GROUNDING_COPULAR_FORMS.has(token));\n if (copulaIndex <= 0) return undefined;\n\n let subjectIndex = copulaIndex - 1;\n while (\n subjectIndex >= 0\n && GROUNDING_AUXILIARY_TOKENS.has(lexemes[subjectIndex]!.token)\n ) {\n subjectIndex -= 1;\n }\n const subjectLexeme = lexemes[subjectIndex];\n const predicateLexeme = lexemes\n .slice(copulaIndex + 1)\n .find(({ token }) => GROUNDING_STOPWORDS[token] !== true);\n if (subjectLexeme === undefined || predicateLexeme === undefined) return undefined;\n\n return {\n subject: stemToken(subjectLexeme.token, subjectLexeme.preserveTerminalS, true),\n predicate: stemToken(predicateLexeme.token, predicateLexeme.preserveTerminalS, true),\n };\n}\n\nfunction hasCopularPredicateEvidence(candidate: string, source: string): boolean {\n const candidateClaim = groundingCopularClaim(candidate);\n if (candidateClaim === undefined) return true;\n const sourceClaim = groundingCopularClaim(source);\n return sourceClaim !== undefined\n && areGroundingTokensCompatible(candidateClaim.subject, sourceClaim.subject)\n && areGroundingTokensCompatible(candidateClaim.predicate, sourceClaim.predicate);\n}\nconst GROUNDING_ALIGNMENT_MODIFIERS = new Set([\n \"actively\",\n \"again\",\n \"already\",\n \"currently\",\n \"eventually\",\n \"finally\",\n \"generally\",\n \"mainly\",\n \"newly\",\n \"now\",\n \"often\",\n \"previously\",\n \"primarily\",\n \"quickly\",\n \"recently\",\n \"repeatedly\",\n \"simply\",\n \"slowly\",\n \"sometimes\",\n \"still\",\n \"successfully\",\n \"typically\",\n \"usually\",\n]);\n\nfunction isGroundingAlignmentModifier(token: string): boolean {\n return GROUNDING_ALIGNMENT_MODIFIERS.has(token);\n}\n\nfunction groundingSubjectTokenSequence(text: string): string[] {\n const lexemes = groundingLexemes(text)\n .filter(({ token }) => GROUNDING_STOPWORDS[token] !== true);\n const predicateIndex = lexemes.findIndex(({ isPredicate }) => isPredicate);\n if (predicateIndex < 1) return [];\n return lexemes\n .slice(0, predicateIndex)\n .filter(({ token }) => !isGroundingAlignmentModifier(token) && !token.endsWith(\"ly\"))\n .map(({ token, preserveTerminalS }) => stemToken(token, preserveTerminalS, true));\n}\n\n\nfunction hasAlignedSubjectPredicateOverlap(candidate: string, source: string): boolean {\n const candidateTokens = normalizedGroundingAlignmentTokenSequence(candidate);\n const sourceTokens = normalizedGroundingAlignmentTokenSequence(source);\n const candidateSubjectTokens = groundingSubjectTokenSequence(candidate);\n const sourceSubjectTokens = groundingSubjectTokenSequence(source);\n const hasCorrectionReordering = /\\b(?:rather\\s+than|instead\\s+of)\\b/iu.test(candidate)\n && /\\b(?:not|rather\\s+than|instead\\s+of)\\b/iu.test(source);\n if (\n candidateSubjectTokens.length > 0\n && sourceSubjectTokens.length > 0\n && !hasCorrectionReordering\n && (\n candidateSubjectTokens.length !== sourceSubjectTokens.length\n || candidateSubjectTokens.some(\n (token, index) => !areGroundingTokensCompatible(token, sourceSubjectTokens[index]!),\n )\n )\n ) {\n return false;\n }\n if (candidateTokens.length < 3 || sourceTokens.length < 3) {\n return hasCopularPredicateEvidence(candidate, source);\n }\n\n const candidateSubject = candidateTokens[0];\n if (candidateSubject === undefined) return false;\n for (let sourceSubjectIndex = 0; sourceSubjectIndex < sourceTokens.length; sourceSubjectIndex += 1) {\n if (!areGroundingTokensCompatible(candidateSubject, sourceTokens[sourceSubjectIndex]!)) continue;\n let sourceCursor = sourceSubjectIndex + 1;\n let foundAlignedToken = false;\n let aligned = true;\n for (let candidateIndex = 1; candidateIndex < candidateTokens.length; candidateIndex += 1) {\n const candidateToken = candidateTokens[candidateIndex]!;\n const sourceIndex = sourceTokens.findIndex(\n (sourceToken, index) =>\n index >= sourceCursor && areGroundingTokensCompatible(candidateToken, sourceToken),\n );\n if (sourceIndex === -1) {\n if (hasCorrectionReordering) continue;\n aligned = false;\n break;\n }\n foundAlignedToken = true;\n const candidateNext = candidateTokens[candidateIndex + 1];\n const sourceNext = sourceTokens[sourceIndex + 1];\n if (\n candidateNext !== undefined\n && sourceNext !== undefined\n && !hasCorrectionReordering\n && !areGroundingTokensCompatible(candidateNext, sourceNext)\n && !isGroundingAlignmentModifier(sourceNext)\n ) {\n aligned = false;\n break;\n }\n sourceCursor = sourceIndex + 1;\n }\n if (aligned && foundAlignedToken) return true;\n }\n return false;\n}\n\nfunction omitsSourceDisjunction(candidate: string, source: string): boolean {\n if (!/\\bor\\b/iu.test(source) || /\\bor\\b/iu.test(candidate)) return false;\n const candidateTokens = normalizedGroundingTokenSequence(candidate);\n return splitGroundingClauses([source], true).some((sourceSpan) => {\n const sourceSpanTokens = normalizedGroundingTokenSequence(sourceSpan);\n return candidateTokens.length === sourceSpanTokens.length\n && candidateTokens.every(\n (token, index) => areGroundingTokensCompatible(token, sourceSpanTokens[index]!),\n );\n });\n}\n\nfunction groundedTokenScore(\n candidate: string,\n source: string,\n requireAlignedArguments = true,\n requireAllCandidateTokensGrounded = true,\n): number {\n const scriptAwareScore = spacelessScriptGroundedTokenScore(candidate, source);\n if (scriptAwareScore !== null) return scriptAwareScore;\n const candidateTokens = tokenize(candidate);\n if (candidateTokens.size === 0) return 0;\n const sourceTokens = tokenize(source);\n const allowCorrectionReordering = /\\b(?:rather\\s+than|instead\\s+of)\\b/iu.test(candidate);\n let sharedTokens = 0;\n let allCandidateTokensGrounded = true;\n for (const token of candidateTokens) {\n if ([...sourceTokens].some((sourceToken) => areGroundingTokensCompatible(token, sourceToken))) {\n sharedTokens += 1;\n } else if (!allowCorrectionReordering && token !== \"rather\" && token !== \"instead\") {\n allCandidateTokensGrounded = false;\n }\n }\n if (\n (requireAllCandidateTokensGrounded && !allCandidateTokensGrounded)\n || sharedTokens < GROUNDING_MIN_SHARED_TOKENS\n || sharedTokens / candidateTokens.size < GROUNDING_MIN_COVERAGE\n ) {\n return 0;\n }\n if (requireAlignedArguments && !hasAlignedSubjectPredicateOverlap(candidate, source)) return 0;\n return sharedTokens / candidateTokens.size;\n}\n\nfunction candidateClauses(candidate: string): string[] {\n return sourceSentences(candidate).flatMap((sentence) =>\n /\\bor\\b/iu.test(sentence) ? [sentence] : splitGroundingClauses([sentence]));\n}\n\nfunction isSourceGroundedClause(\n candidate: string,\n source: string,\n includeInterrogativeSource = false,\n): boolean {\n let bestSupportedScore = 0;\n let bestContradictedScore = 0;\n const sentences = sourceSentences(source);\n for (let index = 0; index < sentences.length; index += 1) {\n const sentence = sentences[index];\n if (isYesNoAnswer(sentence)) {\n const precedingSentence = sentences[index - 1];\n const answerToken = tokenSequence(sentence)[0];\n const contradictoryPolarity = precedingSentence !== undefined\n ? hasContradictoryPolarity(candidate, precedingSentence)\n : false;\n if (\n precedingSentence !== undefined\n && isInterrogativeSourceSentence(precedingSentence)\n && !omitsSourceDisjunction(candidate, precedingSentence)\n && groundedTokenScore(candidate, precedingSentence) === 1\n && (\n (answerToken === \"yes\" && !contradictoryPolarity)\n || (answerToken === \"no\" && contradictoryPolarity)\n )\n ) {\n return true;\n }\n continue;\n }\n const sentenceText = normalizeForExactMatch(sentence);\n const isExplanatoryLabel = sentenceText.startsWith(`${normalizeForExactMatch(candidate)}:`)\n && !sentence.trim().endsWith(\"?\");\n if (!includeInterrogativeSource && isInterrogativeSourceSentence(sentence) && !isExplanatoryLabel) {\n continue;\n }\n if (omitsSourceDisjunction(candidate, sentence)) continue;\n const sourceSpans = /\\b(?:rather\\s+than|instead\\s+of)\\b/iu.test(candidate)\n ? [sentence]\n : splitGroundingClauses([sentence], true);\n for (const sourceSpan of sourceSpans) {\n const sourceSpanText = normalizeForExactMatch(sourceSpan);\n if (containsExactTokenSequence(candidate, sourceSpanText)) {\n if (!hasContradictoryPolarity(candidate, sourceSpan)) return true;\n bestContradictedScore = Math.max(bestContradictedScore, 1);\n continue;\n }\n const score = groundedTokenScore(\n candidate,\n sourceSpan,\n !includeInterrogativeSource,\n !includeInterrogativeSource,\n );\n if (score === 0) continue;\n if (hasContradictoryPolarity(candidate, sourceSpan)) {\n bestContradictedScore = Math.max(bestContradictedScore, score);\n } else {\n bestSupportedScore = Math.max(bestSupportedScore, score);\n }\n }\n }\n return bestSupportedScore > bestContradictedScore;\n}\nfunction isSourceGrounded(\n candidate: string,\n source: string,\n includeInterrogativeSource = false,\n): boolean {\n const candidateText = normalizeForExactMatch(candidate);\n const sourceText = source.normalize(\"NFKC\").trim();\n if (candidateText.length === 0 || sourceText.length === 0) return false;\n const hasSupportedExactMatch = sourceSentences(sourceText).some((sentence) => {\n const sentenceText = normalizeForExactMatch(sentence);\n const isExplanatoryLabel = sentenceText.startsWith(`${candidateText}:`)\n && !sentence.trim().endsWith(\"?\");\n if (!includeInterrogativeSource && isInterrogativeSourceSentence(sentence) && !isExplanatoryLabel) return false;\n if (omitsSourceDisjunction(candidateText, sentenceText)) return false;\n return containsExactTokenSequence(candidateText, sentenceText)\n && !hasContradictoryPolarity(candidateText, sentenceText);\n });\n if (hasSupportedExactMatch) return true;\n\n const clauses = candidateClauses(candidate);\n if (clauses.length > 1) {\n return clauses.every((clause) =>\n isSourceGroundedClause(clause, sourceText, includeInterrogativeSource));\n }\n return isSourceGroundedClause(candidate, sourceText, includeInterrogativeSource);\n}\n\nfunction normalizedEntityIdentifierTokens(name: string): string[] {\n const identifier = normalizeForExactMatch(name).replace(/[-_]+/gu, \" \");\n const tokens = groundingLexemes(identifier)\n .filter(({ token }) => GROUNDING_STOPWORDS[token] !== true)\n .map(({ token }) => stemToken(token, true));\n return tokens.length > 1 && GROUNDING_ENTITY_TYPE_PREFIXES.has(tokens[0] ?? \"\")\n ? tokens.slice(1)\n : tokens;\n}\n\nfunction isGroundedEntityName(name: string, source: string): boolean {\n const nameTokens = normalizedEntityIdentifierTokens(name);\n return nameTokens.length > 0 && sourceSentences(source).some((sentence) => {\n const sentenceTokens = groundingLexemes(sentence)\n .filter(({ token }) => GROUNDING_STOPWORDS[token] !== true)\n .map(({ token, preserveTerminalS }) => stemToken(token, preserveTerminalS));\n return containsContiguousGroundingTokens(nameTokens, sentenceTokens);\n });\n}\nfunction buildEntitySupportSource(name: string, source: string): string {\n const nameTokens = normalizedEntityIdentifierTokens(name);\n if (nameTokens.length === 0) return \"\";\n return sourceSentences(source)\n .filter((sentence) => {\n const sentenceTokens = groundingLexemes(sentence)\n .filter(({ token }) => GROUNDING_STOPWORDS[token] !== true)\n .map(({ token, preserveTerminalS }) => stemToken(token, preserveTerminalS));\n return containsContiguousGroundingTokens(nameTokens, sentenceTokens);\n })\n .join(\" \");\n}\n\nfunction hasGroundedPredicateAnchor(candidate: string, sentence: string): boolean {\n const candidateTokens = normalizedGroundingTokenSequence(candidate);\n const sourceTokens = normalizedGroundingTokenSequence(sentence);\n const comparableCandidateTokens = GROUNDING_ROLE_SUBJECT_TOKENS.has(\n (candidateTokens[0] ?? \"\").replace(/^[\\u0000\\u0001]/u, \"\"),\n )\n ? candidateTokens.slice(1)\n : candidateTokens;\n if (comparableCandidateTokens.length < 2) return false;\n const subjectToken = comparableCandidateTokens[0];\n if (\n subjectToken === undefined\n || !sourceTokens.some((sourceToken) => areGroundingTokensCompatible(subjectToken, sourceToken))\n ) {\n return false;\n }\n const candidatePredicateTokens = comparableCandidateTokens.slice(1);\n const sharedPredicateTokens = candidatePredicateTokens.filter((token) =>\n sourceTokens.some((sourceToken) => areGroundingTokensCompatible(token, sourceToken)));\n const requiredSharedTokens = Math.min(2, candidatePredicateTokens.length);\n return sharedPredicateTokens.length >= requiredSharedTokens;\n}\nfunction hasGroundingAnchor(\n candidate: string,\n assertionSource: string,\n includeInterrogativeSource = false,\n requirePredicateSupport = false,\n): boolean {\n return sourceSentences(assertionSource).some((sentence) => {\n if (!includeInterrogativeSource && isInterrogativeSourceSentence(sentence)) return false;\n if (omitsSourceDisjunction(candidate, sentence)) return false;\n const sourceSpans = /\\b(?:rather\\s+than|instead\\s+of)\\b/iu.test(candidate)\n ? [sentence]\n : splitGroundingClauses([sentence], true);\n return sourceSpans.some((sourceSpan) => {\n const exactMatch = containsExactTokenSequence(candidate, sourceSpan)\n && !hasContradictoryPolarity(candidate, sourceSpan);\n if (exactMatch) return true;\n if (requirePredicateSupport && !hasGroundedPredicateAnchor(candidate, sourceSpan)) return false;\n return groundedTokenScore(candidate, sourceSpan) > 0\n || hasRoleNormalizedGrounding(candidate, sourceSpan);\n });\n });\n}\n\nfunction hasAnswerSupport(\n candidate: string,\n source: string,\n assertionSource: string,\n): boolean {\n const assertedAnswerSentences = new Set(\n sourceSentences(assertionSource)\n .filter((sentence) => {\n const answerToken = tokenSequence(sentence)[0];\n return answerToken === \"yes\" || answerToken === \"no\";\n })\n .map((sentence) => normalizeForExactMatch(sentence)),\n );\n if (assertedAnswerSentences.size === 0) return false;\n const sentences = sourceSentences(source);\n return sentences.some((sentence, index) => {\n const answerToken = tokenSequence(sentence)[0];\n if (answerToken !== \"yes\" && answerToken !== \"no\") return false;\n if (!assertedAnswerSentences.has(normalizeForExactMatch(sentence))) return false;\n const precedingSentence = sentences[index - 1];\n if (\n precedingSentence === undefined\n || !isInterrogativeSourceSentence(precedingSentence)\n || omitsSourceDisjunction(candidate, precedingSentence)\n || groundedTokenScore(candidate, precedingSentence) !== 1\n ) {\n return false;\n }\n const contradictoryPolarity = hasContradictoryPolarity(candidate, precedingSentence);\n return answerToken === \"yes\" ? !contradictoryPolarity : contradictoryPolarity;\n });\n}\n\nconst GROUNDING_ROLE_SUBJECT_TOKENS = new Set([\"assistant\", \"user\"]);\n\nfunction hasRoleNormalizedGrounding(candidate: string, source: string): boolean {\n const candidateTokens = groundingTokenSequence(candidate);\n if (!GROUNDING_ROLE_SUBJECT_TOKENS.has(\n (candidateTokens[0] ?? \"\").replace(/^[\\u0000\\u0001]/u, \"\"),\n )) return false;\n const claimTokens = candidateTokens.slice(1);\n if (claimTokens.length === 0) return false;\n\n return sourceSentences(source).some((sentence) => {\n if (isInterrogativeSourceSentence(sentence)) return false;\n const sourceTokens = groundingTokenSequence(sentence);\n const requiredSharedTokens = Math.min(GROUNDING_MIN_SHARED_TOKENS, claimTokens.length);\n let sourceIndex = 0;\n let sharedTokens = 0;\n for (const claimToken of claimTokens) {\n const matchingIndex = sourceTokens.findIndex(\n (sourceToken, index) =>\n index >= sourceIndex && areGroundingTokensCompatible(claimToken, sourceToken),\n );\n if (matchingIndex === -1) continue;\n sharedTokens += 1;\n sourceIndex = matchingIndex + 1;\n }\n return sharedTokens >= requiredSharedTokens\n && !hasContradictoryPolarity(candidate, sentence);\n });\n}\n\ninterface GroundingContext {\n source: string;\n assertionSource: string | undefined;\n allowRoleNormalization: boolean;\n fallbackSource?: string;\n fallbackAssertionSource?: string;\n}\n\nfunction resolveGroundingContext(\n candidate: string,\n source: string,\n assertionSource: string | undefined,\n roleAssertionSources: ExtractionGroundingRoleSources | undefined,\n): GroundingContext {\n const candidateRole = (groundingTokenSequence(candidate)[0] ?? \"\")\n .replace(/^[\\u0000\\u0001]/u, \"\");\n if (!GROUNDING_ROLE_SUBJECT_TOKENS.has(candidateRole)) {\n return { source, assertionSource, allowRoleNormalization: false };\n }\n if (roleAssertionSources === undefined) {\n return { source, assertionSource, allowRoleNormalization: true };\n }\n const roleSource = candidateRole === \"user\"\n ? roleAssertionSources.profile\n : roleAssertionSources.identity;\n if (roleSource === undefined) {\n return { source, assertionSource, allowRoleNormalization: true };\n }\n return {\n source: roleSource,\n assertionSource: roleSource,\n allowRoleNormalization: true,\n fallbackSource: source,\n fallbackAssertionSource: assertionSource,\n };\n}\n\nfunction selectGroundingContext(candidate: string, context: GroundingContext): GroundingContext {\n if (isGroundedCandidate(\n candidate,\n context.source,\n context.assertionSource,\n false,\n context.allowRoleNormalization,\n )) {\n return context;\n }\n if (\n context.fallbackSource === undefined\n || !hasExplicitRoleSubjectToken(\n (groundingTokenSequence(candidate)[0] ?? \"\").replace(/^[\\u0000\\u0001]/u, \"\"),\n sourceSentences(context.fallbackSource).map((sentence) => groundingTokenSequence(sentence)),\n )\n ) return context;\n const fallbackContext: GroundingContext = {\n source: context.fallbackSource,\n assertionSource: context.fallbackAssertionSource,\n allowRoleNormalization: false,\n };\n return isGroundedCandidate(\n candidate,\n fallbackContext.source,\n fallbackContext.assertionSource,\n false,\n fallbackContext.allowRoleNormalization,\n )\n ? fallbackContext\n : context;\n}\n\nfunction isGroundedCandidate(\n candidate: string,\n source: string,\n assertionSource: string | undefined,\n includeInterrogativeSource = false,\n allowRoleNormalization = false,\n): boolean {\n const allowInterrogativeSource = includeInterrogativeSource\n || (\n assertionSource !== undefined\n && normalizeForExactMatch(assertionSource) !== normalizeForExactMatch(source)\n );\n const sourceGrounded = isSourceGrounded(candidate, source, allowInterrogativeSource);\n const roleGrounded = allowRoleNormalization && hasRoleNormalizedGrounding(candidate, source);\n const candidateTokens = groundingTokenSequence(candidate);\n const roleNormalizedCandidate = allowRoleNormalization\n && GROUNDING_ROLE_SUBJECT_TOKENS.has(\n (candidateTokens[0] ?? \"\").replace(/^[\\u0000\\u0001]/u, \"\"),\n );\n if (roleNormalizedCandidate && !roleGrounded) return false;\n if (!sourceGrounded && !roleGrounded) return false;\n if (assertionSource === undefined) return true;\n const clauses = candidateClauses(candidate);\n const requirePredicateSupport = !includeInterrogativeSource\n && assertionSource !== undefined\n && normalizeForExactMatch(assertionSource) !== normalizeForExactMatch(source);\n return clauses.length > 0\n && (\n clauses.every((clause) =>\n hasGroundingAnchor(clause, assertionSource, includeInterrogativeSource, requirePredicateSupport))\n || hasAnswerSupport(candidate, source, assertionSource)\n );\n}\n\nfunction buildFactSupportSource(\n source: string,\n supportingSentences: ReadonlyArray<string>,\n): string {\n const sentences = sourceSentences(source);\n const selectedIndices = new Set<number>();\n for (const supportingSentence of supportingSentences) {\n const supportIndex = sentences.indexOf(supportingSentence);\n if (supportIndex < 0) continue;\n let endIndex = supportIndex;\n while (\n endIndex < sentences.length - 1\n && sentences[endIndex]!.trimEnd().endsWith(\";\")\n && /^(?:its|their|this|that|these|those)\\b/iu.test(\n sentences[endIndex + 1]!.trimStart(),\n )\n ) {\n endIndex += 1;\n }\n for (let index = supportIndex; index <= endIndex; index += 1) {\n selectedIndices.add(index);\n }\n }\n return [...selectedIndices]\n .sort((left, right) => left - right)\n .map((index) => sentences[index]!)\n .join(\" \");\n}\nfunction buildProcedureSupportSource(\n fact: ExtractionResult[\"facts\"][number],\n source: string,\n factSupportSource: string,\n): string {\n if (fact.category !== \"procedure\" || fact.procedureSteps === undefined) return factSupportSource;\n const parentSupportSentences = new Set(\n sourceSentences(factSupportSource).map((sentence) => normalizeForExactMatch(sentence)),\n );\n const parentGroundedSteps = fact.procedureSteps.filter((step) =>\n isGroundedCandidate(step.intent, factSupportSource, undefined, false),\n );\n if (parentGroundedSteps.length === 0) return factSupportSource;\n return sourceSentences(source)\n .filter((sentence) => {\n if (parentSupportSentences.has(normalizeForExactMatch(sentence))) return true;\n const sentenceTokens = tokenize(sentence);\n return parentGroundedSteps.some((step) =>\n [...tokenize(step.intent)].some((token) =>\n [...sentenceTokens].some((sourceToken) => areGroundingTokensCompatible(token, sourceToken)),\n ),\n );\n })\n .join(\" \");\n}\nfunction filterGroundedFact(\n fact: ExtractionResult[\"facts\"][number],\n source: string,\n assertionSource: string | undefined,\n roleAssertionSources: ExtractionGroundingRoleSources | undefined,\n eventTimeNormalizer: ((eventTime: string) => string) | undefined,\n): ExtractionResult[\"facts\"][number] | undefined {\n const factContext = selectGroundingContext(\n fact.content,\n resolveGroundingContext(fact.content, source, assertionSource, roleAssertionSources),\n );\n if (!isGroundedCandidate(\n fact.content,\n factContext.source,\n factContext.assertionSource,\n false,\n factContext.allowRoleNormalization,\n )) return undefined;\n const factEventTime = fact.eventTime;\n const groundedFactEventTime = factEventTime === undefined\n ? undefined\n : eventTimeNormalizer?.(factEventTime) ?? factEventTime;\n const factSupportingSentences = sourceSentences(factContext.assertionSource ?? factContext.source).filter(\n (sentence) =>\n isGroundedCandidate(\n fact.content,\n sentence,\n undefined,\n false,\n factContext.allowRoleNormalization,\n ),\n );\n const factSupportingSource = factEventTime === undefined\n ? factSupportingSentences[0]\n : factSupportingSentences.find((sentence) =>\n isGroundedCandidate(\n groundedFactEventTime ?? factEventTime,\n sentence,\n undefined,\n false,\n factContext.allowRoleNormalization,\n ),\n ) ?? factSupportingSentences[0];\n const eventTimeSource = factSupportingSource ?? factContext.source;\n const eventTimeAssertionSource = factSupportingSource === undefined\n ? factContext.assertionSource\n : undefined;\n\n const factSupportSource = buildFactSupportSource(\n factContext.assertionSource ?? factContext.source,\n factSupportingSentences,\n );\n const groundedAttributes = fact.structuredAttributes\n ? Object.fromEntries(\n Object.entries(fact.structuredAttributes)\n .filter(([key, value]) =>\n isGroundedCandidate(\n `${key}: ${value}`,\n factSupportSource,\n undefined,\n false,\n factContext.allowRoleNormalization,\n ),\n ),\n )\n : undefined;\n const procedureGroundingSource = buildProcedureSupportSource(\n fact,\n factContext.assertionSource ?? factContext.source,\n factSupportSource,\n );\n const groundedProcedureSteps = fact.procedureSteps\n ? fact.procedureSteps.flatMap((step) => {\n if (!isGroundedCandidate(step.intent, procedureGroundingSource, undefined, false)) return [];\n const expectedOutcome = step.expectedOutcome\n && isGroundedCandidate(step.expectedOutcome, procedureGroundingSource, undefined, false)\n ? step.expectedOutcome\n : undefined;\n const toolCall = step.toolCall\n && isGroundedCandidate(step.toolCall.signature, procedureGroundingSource, undefined, false)\n ? step.toolCall\n : undefined;\n const {\n expectedOutcome: _expectedOutcome,\n toolCall: _toolCall,\n ...stepWithoutOptionalFields\n } = step;\n return [{\n ...stepWithoutOptionalFields,\n ...(expectedOutcome !== undefined ? { expectedOutcome } : {}),\n ...(toolCall !== undefined ? { toolCall } : {}),\n }];\n })\n : undefined;\n const groundedReasoningTrace = fact.reasoningTrace\n && fact.reasoningTrace.steps.length > 0\n && isGroundedCandidate(\n fact.reasoningTrace.finalAnswer,\n factContext.source,\n factContext.assertionSource,\n false,\n factContext.allowRoleNormalization,\n )\n && fact.reasoningTrace.steps.every((step) =>\n isGroundedCandidate(\n step.description,\n factContext.source,\n factContext.assertionSource,\n false,\n factContext.allowRoleNormalization,\n ),\n )\n ? {\n steps: fact.reasoningTrace.steps,\n finalAnswer: fact.reasoningTrace.finalAnswer,\n ...(fact.reasoningTrace.observedOutcome\n && isGroundedCandidate(\n fact.reasoningTrace.observedOutcome,\n factContext.source,\n factContext.assertionSource,\n false,\n factContext.allowRoleNormalization,\n )\n ? { observedOutcome: fact.reasoningTrace.observedOutcome }\n : {}),\n }\n : undefined;\n const groundedEventTime = groundedFactEventTime\n && isGroundedCandidate(groundedFactEventTime, eventTimeSource, eventTimeAssertionSource)\n ? factEventTime\n : undefined;\n const groundedEntityRef = fact.entityRef !== undefined\n && isGroundedEntityName(fact.entityRef, factSupportSource)\n ? fact.entityRef\n : undefined;\n const {\n entityRef: _entityRef,\n structuredAttributes: _structuredAttributes,\n procedureSteps: _procedureSteps,\n reasoningTrace: _reasoningTrace,\n eventTime: _eventTime,\n ...factWithoutGroundingFields\n } = fact;\n return {\n ...factWithoutGroundingFields,\n ...(groundedEntityRef !== undefined ? { entityRef: groundedEntityRef } : {}),\n ...(groundedAttributes && Object.keys(groundedAttributes).length > 0\n ? { structuredAttributes: groundedAttributes }\n : {}),\n ...(groundedProcedureSteps && groundedProcedureSteps.length > 0\n ? { procedureSteps: groundedProcedureSteps }\n : {}),\n ...(groundedReasoningTrace !== undefined ? { reasoningTrace: groundedReasoningTrace } : {}),\n ...(groundedEventTime !== undefined ? { eventTime: groundedEventTime } : {}),\n };\n}\n\nfunction filterGroundedEntity(\n entity: ExtractionResult[\"entities\"][number],\n source: string,\n assertionSource: string | undefined,\n): ExtractionResult[\"entities\"][number] | undefined {\n if (!isGroundedEntityName(entity.name, source)) return undefined;\n const entitySource = buildEntitySupportSource(entity.name, source);\n const entityAssertionSource = assertionSource === undefined\n ? undefined\n : buildEntitySupportSource(entity.name, assertionSource);\n const facts = entity.facts.filter((fact) =>\n isGroundedCandidate(fact, entitySource, entityAssertionSource),\n );\n const structuredSections = entity.structuredSections\n ?.flatMap((section) => {\n const groundedFacts = section.facts.filter((fact) =>\n isGroundedCandidate(fact, entitySource, entityAssertionSource),\n );\n return groundedFacts.length > 0\n ? [{ ...section, facts: groundedFacts }]\n : [];\n });\n if (facts.length === 0 && (structuredSections === undefined || structuredSections.length === 0)) {\n return undefined;\n }\n const { structuredSections: _structuredSections, ...entityWithoutSections } = entity;\n return {\n ...entityWithoutSections,\n facts,\n ...(structuredSections && structuredSections.length > 0 ? { structuredSections } : {}),\n };\n}\n\nfunction normalizedEntitySourceText(name: string): string {\n return normalizedEntityIdentifierTokens(name).join(\" \");\n}\n\nfunction isGroundedRelationship(\n relationship: NonNullable<ExtractionResult[\"relationships\"]>[number],\n source: string,\n assertionSource: string | undefined,\n): boolean {\n const sourceName = normalizedEntitySourceText(relationship.source);\n const targetName = normalizedEntitySourceText(relationship.target);\n const labelTokens = tokenize(relationship.label);\n if (sourceName.length === 0 || targetName.length === 0 || labelTokens.size === 0) return false;\n const relationText = `${sourceName} ${relationship.label} ${targetName}`;\n const hasCoherentSourceSpan = sourceSentences(source).some((sentence) => {\n if (isInterrogativeSourceSentence(sentence)) return false;\n return groundedTokenScore(relationText, sentence) === 1\n && !hasContradictoryPolarity(relationText, sentence);\n });\n return hasCoherentSourceSpan\n && isGroundedCandidate(relationText, source, assertionSource);\n}\nconst GROUNDING_TEMPORAL_WORDS = new Set([\n \"today\",\n \"yesterday\",\n \"tomorrow\",\n \"now\",\n \"recently\",\n \"earlier\",\n \"later\",\n \"soon\",\n \"morning\",\n \"afternoon\",\n \"evening\",\n \"tonight\",\n \"night\",\n \"noon\",\n \"midnight\",\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\",\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"q1\",\n \"q2\",\n \"q3\",\n \"q4\",\n]);\nconst GROUNDING_TEMPORAL_CLOCK_PATTERN = /\\b\\d{1,2}:\\d{2}(?:\\s*[ap]\\.?m\\.?)?\\b/iu;\nconst GROUNDING_TEMPORAL_DURATION_PATTERN = new RegExp(\n \"\\\\b(?:\\\\d+|one|two|three|four|five|six|seven|eight|nine|ten)\\\\s+\"\n + \"(?:seconds?|minutes?|hours?|days?|weeks?|months?|quarters?|years?)\\\\b\",\n \"iu\",\n);\n\nfunction isWhenQuestion(question: string): boolean {\n return /^(?:when|what\\s+(?:time|date)|which\\s+day)\\b/iu.test(question.trim());\n}\nfunction isWhyQuestion(question: string): boolean {\n return /^why\\b/iu.test(question.trim());\n}\n\nfunction hasCausalAnswerEvidence(question: string, sentence: string): boolean {\n if (!isWhyQuestion(question)) return true;\n return /\\b(?:because|since|due\\s+to|owing\\s+to|thanks\\s+to|therefore|thus|hence|so)\\b/iu.test(\n sentence,\n );\n}\n\nfunction hasTemporalAnswerEvidence(question: string, sentence: string): boolean {\n if (!isWhenQuestion(question)) return true;\n return groundingLexemes(sentence).some(({ token }) =>\n GROUNDING_TEMPORAL_WORDS.has(token) || /^(?:19|20)\\d{2}$/u.test(token),\n )\n || GROUNDING_TEMPORAL_CLOCK_PATTERN.test(sentence)\n || GROUNDING_TEMPORAL_DURATION_PATTERN.test(sentence);\n}\n\n\nfunction isUnknownAnswerSentence(sentence: string): boolean {\n return /\\b(?:unknown|unclear|unsure|unresolved|unanswered|not\\s+(?:known|sure|available)|don't\\s+know|do\\s+not\\s+know|no\\s+idea|pending)\\b/iu\n .test(sentence);\n}\n\nfunction isYesNoAnswer(sentence: string): boolean {\n return /^(?:yes|no)(?:[.!?]|,\\s*(?:absolutely|definitely|indeed|exactly|correct|of\\s+course|use\\s+that|do\\s+that)[.!?]?)?$/iu\n .test(sentence.trim());\n}\n\nconst GROUNDING_WH_OBJECT_QUESTION_PATTERN = new RegExp(\n \"^(?:(?:what|which)(?:\\\\s+.+?)?|who|whom)\\\\s+\"\n + \"(?:is|are|was|were|do|does|did|can|could|will|would|should|has|have|had)\\\\s+\"\n + \"(.+?)\\\\??$\",\n \"iu\",\n);\n\nfunction hasWhAnswerRoleAlignment(question: string, sentence: string): boolean {\n const normalizedQuestion = question.trim();\n const objectQuestionMatch = GROUNDING_WH_OBJECT_QUESTION_PATTERN.exec(normalizedQuestion);\n const sourceTokens = normalizedGroundingTokenSequence(sentence);\n if (objectQuestionMatch !== null) {\n const questionBodyLexemes = groundingLexemes(objectQuestionMatch[1] ?? \"\");\n const predicateIndex = questionBodyLexemes.findIndex(({ isPredicate }) => isPredicate);\n if (predicateIndex < 1) return false;\n const subjectTokens = groundingTokenSequence(\n questionBodyLexemes.slice(0, predicateIndex).map(({ surface }) => surface).join(\" \"),\n );\n const predicateTokens = groundingTokenSequence(\n questionBodyLexemes.slice(predicateIndex).map(({ surface }) => surface).join(\" \"),\n );\n if (subjectTokens.length === 0 || predicateTokens.length === 0) return false;\n let sourceIndex = 0;\n for (const token of [...subjectTokens, ...predicateTokens]) {\n const matchedIndex = sourceTokens.findIndex(\n (sourceToken, index) =>\n index >= sourceIndex && areGroundingTokensCompatible(token, sourceToken),\n );\n if (matchedIndex === -1) return false;\n sourceIndex = matchedIndex + 1;\n }\n return true;\n }\n\n const subjectQuestionMatch = /^(?:who|what)\\s+([^\\s?]+)\\s+(.+?)\\??$/iu.exec(normalizedQuestion);\n if (subjectQuestionMatch === null) return true;\n const predicateTokens = groundingTokenSequence(subjectQuestionMatch[1] ?? \"\");\n const objectTokens = groundingTokenSequence(subjectQuestionMatch[2] ?? \"\");\n if (predicateTokens.length === 0 || objectTokens.length === 0) return true;\n const predicateStart = sourceTokens.findIndex((sourceToken) =>\n areGroundingTokensCompatible(predicateTokens[0]!, sourceToken));\n if (predicateStart === -1) return false;\n let sourceIndex = predicateStart + predicateTokens.length;\n for (const objectToken of objectTokens) {\n const objectIndex = sourceTokens.findIndex(\n (sourceToken, index) =>\n index >= sourceIndex && areGroundingTokensCompatible(objectToken, sourceToken),\n );\n if (objectIndex === -1) return false;\n sourceIndex = objectIndex + 1;\n }\n return true;\n}\n\nfunction isQuestionAnsweredBySource(\n question: string,\n source: string,\n assertionSource: string | undefined,\n): boolean {\n const questionTokens = tokenize(question);\n if (questionTokens.size === 0) return false;\n const isYesNoQuestion = /^(?:is|are|am|was|were|do|does|did|can|could|will|would|should|has|have|had)\\b/iu\n .test(question.trim());\n const assertedSentences = new Set(sourceSentences(assertionSource ?? source).map((sentence) => normalizeForExactMatch(sentence)));\n const sentences = sourceSentences(source);\n return sentences.some((sentence, index) => {\n if (!assertedSentences.has(normalizeForExactMatch(sentence))) return false;\n if (isInterrogativeSourceSentence(sentence)) return false;\n if (isYesNoAnswer(sentence)) {\n const precedingSentence = sentences[index - 1];\n return precedingSentence !== undefined\n && isInterrogativeSourceSentence(precedingSentence)\n && groundedTokenScore(question, precedingSentence) === 1;\n }\n if (isUnknownAnswerSentence(sentence)) return false;\n const score = groundedTokenScore(question, sentence, false);\n if (score !== 1) return false;\n const sentenceTokens = tokenize(sentence);\n const hasAnswerToken = [...sentenceTokens].some((token) => !questionTokens.has(token));\n return (isYesNoQuestion || hasAnswerToken)\n && hasTemporalAnswerEvidence(question, sentence)\n && hasCausalAnswerEvidence(question, sentence)\n && hasWhAnswerRoleAlignment(question, sentence);\n });\n}\n\nfunction groundQuestion(\n question: ExtractionResult[\"questions\"][number],\n source: string,\n assertionSource: string | undefined,\n): ExtractionResult[\"questions\"][number] | undefined {\n if (isQuestionAnsweredBySource(question.question, source, assertionSource)) return undefined;\n if (!isGroundedCandidate(question.question, source, assertionSource, true)) return undefined;\n const normalizedContext = question.context.trim();\n if (\n normalizedContext.length > 0\n && !isGroundedCandidate(normalizedContext, assertionSource ?? source, undefined, false)\n ) {\n return { ...question, context: \"\" };\n }\n return question;\n}\n\nfunction isRoleGroundedCandidate(\n candidate: string,\n source: string,\n assertionSource: string | undefined,\n roleAssertionSources: ExtractionGroundingRoleSources | undefined,\n): boolean {\n const context = selectGroundingContext(\n candidate,\n resolveGroundingContext(candidate, source, assertionSource, roleAssertionSources),\n );\n return isGroundedCandidate(\n candidate,\n context.source,\n context.assertionSource,\n false,\n context.allowRoleNormalization,\n );\n}\n\nexport function filterExtractionResultBySource(\n result: ExtractionResult,\n source: string,\n assertionSource?: string,\n roleAssertionSources?: ExtractionGroundingRoleSources,\n eventTimeNormalizer?: (eventTime: string) => string,\n): ExtractionResult {\n if (source.trim().length === 0) {\n return {\n ...result,\n facts: [],\n profileUpdates: [],\n entities: [],\n questions: [],\n ...(result.relationships !== undefined ? { relationships: [] } : {}),\n identityReflection: undefined,\n };\n }\n\n const facts = result.facts.flatMap((fact) => {\n const grounded = filterGroundedFact(\n fact,\n source,\n assertionSource,\n roleAssertionSources,\n eventTimeNormalizer,\n );\n return grounded === undefined ? [] : [grounded];\n });\n const profileUpdates = result.profileUpdates.filter((update) =>\n isRoleGroundedCandidate(update, source, assertionSource, roleAssertionSources),\n );\n const entities = result.entities.flatMap((entity) => {\n const grounded = filterGroundedEntity(entity, source, assertionSource);\n return grounded === undefined ? [] : [grounded];\n });\n const questions = result.questions.flatMap((question) => {\n const grounded = groundQuestion(question, source, assertionSource);\n return grounded === undefined ? [] : [grounded];\n });\n const relationships = result.relationships?.filter((relationship) =>\n isGroundedRelationship(relationship, source, assertionSource),\n );\n const identityReflection = result.identityReflection\n && isRoleGroundedCandidate(\n result.identityReflection,\n source,\n assertionSource,\n roleAssertionSources,\n )\n ? result.identityReflection\n : undefined;\n\n return {\n ...result,\n facts,\n profileUpdates,\n entities,\n questions,\n ...(result.relationships !== undefined ? { relationships } : {}),\n ...(identityReflection !== undefined ? { identityReflection } : { identityReflection: undefined }),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCO,SAAS,+BACd,QACA,YACA,sBAA8B,YAC9B,sBACA,kBACA,SACkB;AAClB,MAAI,CAAC,QAAQ,gBAAiB,QAAO;AACrC,QAAM,eAAe,CAAC,WACpB,QAAQ,4BACJ,0BAA0B,QAAQ,oBAAoB,oBAAI,KAAK,CAAC,IAChE;AACN,QAAM,sBAAsB,yBAAyB,SACjD,SACA;AAAA,IACA,SAAS,qBAAqB,YAAY,SACtC,SACA,aAAa,qBAAqB,OAAO;AAAA,IAC7C,UAAU,qBAAqB,aAAa,SACxC,SACA,aAAa,qBAAqB,QAAQ;AAAA,EAChD;AACF,SAAO;AAAA,IACL;AAAA,IACA,aAAa,UAAU;AAAA,IACvB,aAAa,mBAAmB;AAAA,IAChC;AAAA,IACA,QAAQ,4BAA4B,eAAe;AAAA,EACrD;AACF;AAcA,SAAS,sBAAsB,MAAiD;AAC9E,QAAM,UAAU,iBAAiB,IAAI;AACrC,QAAM,cAAc,QAAQ,UAAU,CAAC,EAAE,MAAM,MAAM,wBAAwB,IAAI,KAAK,CAAC;AACvF,MAAI,eAAe,EAAG,QAAO;AAE7B,MAAI,eAAe,cAAc;AACjC,SACE,gBAAgB,KACb,2BAA2B,IAAI,QAAQ,YAAY,EAAG,KAAK,GAC9D;AACA,oBAAgB;AAAA,EAClB;AACA,QAAM,gBAAgB,QAAQ,YAAY;AAC1C,QAAM,kBAAkB,QACrB,MAAM,cAAc,CAAC,EACrB,KAAK,CAAC,EAAE,MAAM,MAAM,oBAAoB,KAAK,MAAM,IAAI;AAC1D,MAAI,kBAAkB,UAAa,oBAAoB,OAAW,QAAO;AAEzE,SAAO;AAAA,IACL,SAAS,UAAU,cAAc,OAAO,cAAc,mBAAmB,IAAI;AAAA,IAC7E,WAAW,UAAU,gBAAgB,OAAO,gBAAgB,mBAAmB,IAAI;AAAA,EACrF;AACF;AAEA,SAAS,4BAA4B,WAAmB,QAAyB;AAC/E,QAAM,iBAAiB,sBAAsB,SAAS;AACtD,MAAI,mBAAmB,OAAW,QAAO;AACzC,QAAM,cAAc,sBAAsB,MAAM;AAChD,SAAO,gBAAgB,UAClB,6BAA6B,eAAe,SAAS,YAAY,OAAO,KACxE,6BAA6B,eAAe,WAAW,YAAY,SAAS;AACnF;AACA,IAAM,gCAAgC,oBAAI,IAAI;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,6BAA6B,OAAwB;AAC5D,SAAO,8BAA8B,IAAI,KAAK;AAChD;AAEA,SAAS,8BAA8B,MAAwB;AAC7D,QAAM,UAAU,iBAAiB,IAAI,EAClC,OAAO,CAAC,EAAE,MAAM,MAAM,oBAAoB,KAAK,MAAM,IAAI;AAC5D,QAAM,iBAAiB,QAAQ,UAAU,CAAC,EAAE,YAAY,MAAM,WAAW;AACzE,MAAI,iBAAiB,EAAG,QAAO,CAAC;AAChC,SAAO,QACJ,MAAM,GAAG,cAAc,EACvB,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC,6BAA6B,KAAK,KAAK,CAAC,MAAM,SAAS,IAAI,CAAC,EACnF,IAAI,CAAC,EAAE,OAAO,kBAAkB,MAAM,UAAU,OAAO,mBAAmB,IAAI,CAAC;AACpF;AAGA,SAAS,kCAAkC,WAAmB,QAAyB;AACrF,QAAM,kBAAkB,0CAA0C,SAAS;AAC3E,QAAM,eAAe,0CAA0C,MAAM;AACrE,QAAM,yBAAyB,8BAA8B,SAAS;AACtE,QAAM,sBAAsB,8BAA8B,MAAM;AAChE,QAAM,0BAA0B,uCAAuC,KAAK,SAAS,KAChF,2CAA2C,KAAK,MAAM;AAC3D,MACE,uBAAuB,SAAS,KAC7B,oBAAoB,SAAS,KAC7B,CAAC,4BAEF,uBAAuB,WAAW,oBAAoB,UACnD,uBAAuB;AAAA,IACxB,CAAC,OAAO,UAAU,CAAC,6BAA6B,OAAO,oBAAoB,KAAK,CAAE;AAAA,EACpF,IAEF;AACA,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,SAAS,KAAK,aAAa,SAAS,GAAG;AACzD,WAAO,4BAA4B,WAAW,MAAM;AAAA,EACtD;AAEA,QAAM,mBAAmB,gBAAgB,CAAC;AAC1C,MAAI,qBAAqB,OAAW,QAAO;AAC3C,WAAS,qBAAqB,GAAG,qBAAqB,aAAa,QAAQ,sBAAsB,GAAG;AAClG,QAAI,CAAC,6BAA6B,kBAAkB,aAAa,kBAAkB,CAAE,EAAG;AACxF,QAAI,eAAe,qBAAqB;AACxC,QAAI,oBAAoB;AACxB,QAAI,UAAU;AACd,aAAS,iBAAiB,GAAG,iBAAiB,gBAAgB,QAAQ,kBAAkB,GAAG;AACzF,YAAM,iBAAiB,gBAAgB,cAAc;AACrD,YAAM,cAAc,aAAa;AAAA,QAC/B,CAAC,aAAa,UACZ,SAAS,gBAAgB,6BAA6B,gBAAgB,WAAW;AAAA,MACrF;AACA,UAAI,gBAAgB,IAAI;AACtB,YAAI,wBAAyB;AAC7B,kBAAU;AACV;AAAA,MACF;AACA,0BAAoB;AACpB,YAAM,gBAAgB,gBAAgB,iBAAiB,CAAC;AACxD,YAAM,aAAa,aAAa,cAAc,CAAC;AAC/C,UACE,kBAAkB,UACf,eAAe,UACf,CAAC,2BACD,CAAC,6BAA6B,eAAe,UAAU,KACvD,CAAC,6BAA6B,UAAU,GAC3C;AACA,kBAAU;AACV;AAAA,MACF;AACA,qBAAe,cAAc;AAAA,IAC/B;AACA,QAAI,WAAW,kBAAmB,QAAO;AAAA,EAC3C;AACA,SAAO;AACT;AAEA,SAAS,uBAAuB,WAAmB,QAAyB;AAC1E,MAAI,CAAC,WAAW,KAAK,MAAM,KAAK,WAAW,KAAK,SAAS,EAAG,QAAO;AACnE,QAAM,kBAAkB,iCAAiC,SAAS;AAClE,SAAO,sBAAsB,CAAC,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,eAAe;AAChE,UAAM,mBAAmB,iCAAiC,UAAU;AACpE,WAAO,gBAAgB,WAAW,iBAAiB,UAC9C,gBAAgB;AAAA,MACjB,CAAC,OAAO,UAAU,6BAA6B,OAAO,iBAAiB,KAAK,CAAE;AAAA,IAChF;AAAA,EACJ,CAAC;AACH;AAEA,SAAS,mBACP,WACA,QACA,0BAA0B,MAC1B,oCAAoC,MAC5B;AACR,QAAM,mBAAmB,kCAAkC,WAAW,MAAM;AAC5E,MAAI,qBAAqB,KAAM,QAAO;AACtC,QAAM,kBAAkB,SAAS,SAAS;AAC1C,MAAI,gBAAgB,SAAS,EAAG,QAAO;AACvC,QAAM,eAAe,SAAS,MAAM;AACpC,QAAM,4BAA4B,uCAAuC,KAAK,SAAS;AACvF,MAAI,eAAe;AACnB,MAAI,6BAA6B;AACjC,aAAW,SAAS,iBAAiB;AACnC,QAAI,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC,gBAAgB,6BAA6B,OAAO,WAAW,CAAC,GAAG;AAC7F,sBAAgB;AAAA,IAClB,WAAW,CAAC,6BAA6B,UAAU,YAAY,UAAU,WAAW;AAClF,mCAA6B;AAAA,IAC/B;AAAA,EACF;AACA,MACG,qCAAqC,CAAC,8BACpC,eAAe,+BACf,eAAe,gBAAgB,OAAO,wBACzC;AACA,WAAO;AAAA,EACT;AACA,MAAI,2BAA2B,CAAC,kCAAkC,WAAW,MAAM,EAAG,QAAO;AAC7F,SAAO,eAAe,gBAAgB;AACxC;AAEA,SAAS,iBAAiB,WAA6B;AACrD,SAAO,gBAAgB,SAAS,EAAE,QAAQ,CAAC,aACzC,WAAW,KAAK,QAAQ,IAAI,CAAC,QAAQ,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC9E;AAEA,SAAS,uBACP,WACA,QACA,6BAA6B,OACpB;AACT,MAAI,qBAAqB;AACzB,MAAI,wBAAwB;AAC5B,QAAM,YAAY,gBAAgB,MAAM;AACxC,WAAS,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS,GAAG;AACxD,UAAM,WAAW,UAAU,KAAK;AAChC,QAAI,cAAc,QAAQ,GAAG;AAC3B,YAAM,oBAAoB,UAAU,QAAQ,CAAC;AAC7C,YAAM,cAAc,cAAc,QAAQ,EAAE,CAAC;AAC7C,YAAM,wBAAwB,sBAAsB,SAChD,yBAAyB,WAAW,iBAAiB,IACrD;AACJ,UACE,sBAAsB,UACnB,8BAA8B,iBAAiB,KAC/C,CAAC,uBAAuB,WAAW,iBAAiB,KACpD,mBAAmB,WAAW,iBAAiB,MAAM,MAErD,gBAAgB,SAAS,CAAC,yBACvB,gBAAgB,QAAQ,wBAE9B;AACA,eAAO;AAAA,MACT;AACA;AAAA,IACF;AACA,UAAM,eAAe,uBAAuB,QAAQ;AACpD,UAAM,qBAAqB,aAAa,WAAW,GAAG,uBAAuB,SAAS,CAAC,GAAG,KACrF,CAAC,SAAS,KAAK,EAAE,SAAS,GAAG;AAClC,QAAI,CAAC,8BAA8B,8BAA8B,QAAQ,KAAK,CAAC,oBAAoB;AACjG;AAAA,IACF;AACA,QAAI,uBAAuB,WAAW,QAAQ,EAAG;AACjD,UAAM,cAAc,uCAAuC,KAAK,SAAS,IACrE,CAAC,QAAQ,IACT,sBAAsB,CAAC,QAAQ,GAAG,IAAI;AAC1C,eAAW,cAAc,aAAa;AACpC,YAAM,iBAAiB,uBAAuB,UAAU;AACxD,UAAI,2BAA2B,WAAW,cAAc,GAAG;AACzD,YAAI,CAAC,yBAAyB,WAAW,UAAU,EAAG,QAAO;AAC7D,gCAAwB,KAAK,IAAI,uBAAuB,CAAC;AACzD;AAAA,MACF;AACA,YAAM,QAAQ;AAAA,QACZ;AAAA,QACA;AAAA,QACA,CAAC;AAAA,QACD,CAAC;AAAA,MACH;AACA,UAAI,UAAU,EAAG;AACjB,UAAI,yBAAyB,WAAW,UAAU,GAAG;AACnD,gCAAwB,KAAK,IAAI,uBAAuB,KAAK;AAAA,MAC/D,OAAO;AACL,6BAAqB,KAAK,IAAI,oBAAoB,KAAK;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AACA,SAAO,qBAAqB;AAC9B;AACA,SAAS,iBACP,WACA,QACA,6BAA6B,OACpB;AACT,QAAM,gBAAgB,uBAAuB,SAAS;AACtD,QAAM,aAAa,OAAO,UAAU,MAAM,EAAE,KAAK;AACjD,MAAI,cAAc,WAAW,KAAK,WAAW,WAAW,EAAG,QAAO;AAClE,QAAM,yBAAyB,gBAAgB,UAAU,EAAE,KAAK,CAAC,aAAa;AAC5E,UAAM,eAAe,uBAAuB,QAAQ;AACpD,UAAM,qBAAqB,aAAa,WAAW,GAAG,aAAa,GAAG,KACjE,CAAC,SAAS,KAAK,EAAE,SAAS,GAAG;AAClC,QAAI,CAAC,8BAA8B,8BAA8B,QAAQ,KAAK,CAAC,mBAAoB,QAAO;AAC1G,QAAI,uBAAuB,eAAe,YAAY,EAAG,QAAO;AAChE,WAAO,2BAA2B,eAAe,YAAY,KACxD,CAAC,yBAAyB,eAAe,YAAY;AAAA,EAC5D,CAAC;AACD,MAAI,uBAAwB,QAAO;AAEnC,QAAM,UAAU,iBAAiB,SAAS;AAC1C,MAAI,QAAQ,SAAS,GAAG;AACtB,WAAO,QAAQ,MAAM,CAAC,WACpB,uBAAuB,QAAQ,YAAY,0BAA0B,CAAC;AAAA,EAC1E;AACA,SAAO,uBAAuB,WAAW,YAAY,0BAA0B;AACjF;AAEA,SAAS,iCAAiC,MAAwB;AAChE,QAAM,aAAa,uBAAuB,IAAI,EAAE,QAAQ,WAAW,GAAG;AACtE,QAAM,SAAS,iBAAiB,UAAU,EACvC,OAAO,CAAC,EAAE,MAAM,MAAM,oBAAoB,KAAK,MAAM,IAAI,EACzD,IAAI,CAAC,EAAE,MAAM,MAAM,UAAU,OAAO,IAAI,CAAC;AAC5C,SAAO,OAAO,SAAS,KAAK,+BAA+B,IAAI,OAAO,CAAC,KAAK,EAAE,IAC1E,OAAO,MAAM,CAAC,IACd;AACN;AAEA,SAAS,qBAAqB,MAAc,QAAyB;AACnE,QAAM,aAAa,iCAAiC,IAAI;AACxD,SAAO,WAAW,SAAS,KAAK,gBAAgB,MAAM,EAAE,KAAK,CAAC,aAAa;AACzE,UAAM,iBAAiB,iBAAiB,QAAQ,EAC7C,OAAO,CAAC,EAAE,MAAM,MAAM,oBAAoB,KAAK,MAAM,IAAI,EACzD,IAAI,CAAC,EAAE,OAAO,kBAAkB,MAAM,UAAU,OAAO,iBAAiB,CAAC;AAC5E,WAAO,kCAAkC,YAAY,cAAc;AAAA,EACrE,CAAC;AACH;AACA,SAAS,yBAAyB,MAAc,QAAwB;AACtE,QAAM,aAAa,iCAAiC,IAAI;AACxD,MAAI,WAAW,WAAW,EAAG,QAAO;AACpC,SAAO,gBAAgB,MAAM,EAC1B,OAAO,CAAC,aAAa;AACpB,UAAM,iBAAiB,iBAAiB,QAAQ,EAC7C,OAAO,CAAC,EAAE,MAAM,MAAM,oBAAoB,KAAK,MAAM,IAAI,EACzD,IAAI,CAAC,EAAE,OAAO,kBAAkB,MAAM,UAAU,OAAO,iBAAiB,CAAC;AAC5E,WAAO,kCAAkC,YAAY,cAAc;AAAA,EACrE,CAAC,EACA,KAAK,GAAG;AACb;AAEA,SAAS,2BAA2B,WAAmB,UAA2B;AAChF,QAAM,kBAAkB,iCAAiC,SAAS;AAClE,QAAM,eAAe,iCAAiC,QAAQ;AAC9D,QAAM,4BAA4B,8BAA8B;AAAA,KAC7D,gBAAgB,CAAC,KAAK,IAAI,QAAQ,oBAAoB,EAAE;AAAA,EAC3D,IACI,gBAAgB,MAAM,CAAC,IACvB;AACJ,MAAI,0BAA0B,SAAS,EAAG,QAAO;AACjD,QAAM,eAAe,0BAA0B,CAAC;AAChD,MACE,iBAAiB,UACd,CAAC,aAAa,KAAK,CAAC,gBAAgB,6BAA6B,cAAc,WAAW,CAAC,GAC9F;AACA,WAAO;AAAA,EACT;AACA,QAAM,2BAA2B,0BAA0B,MAAM,CAAC;AAClE,QAAM,wBAAwB,yBAAyB,OAAO,CAAC,UAC7D,aAAa,KAAK,CAAC,gBAAgB,6BAA6B,OAAO,WAAW,CAAC,CAAC;AACtF,QAAM,uBAAuB,KAAK,IAAI,GAAG,yBAAyB,MAAM;AACxE,SAAO,sBAAsB,UAAU;AACzC;AACA,SAAS,mBACP,WACA,iBACA,6BAA6B,OAC7B,0BAA0B,OACjB;AACT,SAAO,gBAAgB,eAAe,EAAE,KAAK,CAAC,aAAa;AACzD,QAAI,CAAC,8BAA8B,8BAA8B,QAAQ,EAAG,QAAO;AACnF,QAAI,uBAAuB,WAAW,QAAQ,EAAG,QAAO;AACxD,UAAM,cAAc,uCAAuC,KAAK,SAAS,IACrE,CAAC,QAAQ,IACT,sBAAsB,CAAC,QAAQ,GAAG,IAAI;AAC1C,WAAO,YAAY,KAAK,CAAC,eAAe;AACtC,YAAM,aAAa,2BAA2B,WAAW,UAAU,KAC9D,CAAC,yBAAyB,WAAW,UAAU;AACpD,UAAI,WAAY,QAAO;AACvB,UAAI,2BAA2B,CAAC,2BAA2B,WAAW,UAAU,EAAG,QAAO;AAC1F,aAAO,mBAAmB,WAAW,UAAU,IAAI,KAC9C,2BAA2B,WAAW,UAAU;AAAA,IACvD,CAAC;AAAA,EACH,CAAC;AACH;AAEA,SAAS,iBACP,WACA,QACA,iBACS;AACT,QAAM,0BAA0B,IAAI;AAAA,IAClC,gBAAgB,eAAe,EAC5B,OAAO,CAAC,aAAa;AACpB,YAAM,cAAc,cAAc,QAAQ,EAAE,CAAC;AAC7C,aAAO,gBAAgB,SAAS,gBAAgB;AAAA,IAClD,CAAC,EACA,IAAI,CAAC,aAAa,uBAAuB,QAAQ,CAAC;AAAA,EACvD;AACA,MAAI,wBAAwB,SAAS,EAAG,QAAO;AAC/C,QAAM,YAAY,gBAAgB,MAAM;AACxC,SAAO,UAAU,KAAK,CAAC,UAAU,UAAU;AACzC,UAAM,cAAc,cAAc,QAAQ,EAAE,CAAC;AAC7C,QAAI,gBAAgB,SAAS,gBAAgB,KAAM,QAAO;AAC1D,QAAI,CAAC,wBAAwB,IAAI,uBAAuB,QAAQ,CAAC,EAAG,QAAO;AAC3E,UAAM,oBAAoB,UAAU,QAAQ,CAAC;AAC7C,QACE,sBAAsB,UACnB,CAAC,8BAA8B,iBAAiB,KAChD,uBAAuB,WAAW,iBAAiB,KACnD,mBAAmB,WAAW,iBAAiB,MAAM,GACxD;AACA,aAAO;AAAA,IACT;AACA,UAAM,wBAAwB,yBAAyB,WAAW,iBAAiB;AACnF,WAAO,gBAAgB,QAAQ,CAAC,wBAAwB;AAAA,EAC1D,CAAC;AACH;AAEA,IAAM,gCAAgC,oBAAI,IAAI,CAAC,aAAa,MAAM,CAAC;AAEnE,SAAS,2BAA2B,WAAmB,QAAyB;AAC9E,QAAM,kBAAkB,uBAAuB,SAAS;AACxD,MAAI,CAAC,8BAA8B;AAAA,KAChC,gBAAgB,CAAC,KAAK,IAAI,QAAQ,oBAAoB,EAAE;AAAA,EAC3D,EAAG,QAAO;AACV,QAAM,cAAc,gBAAgB,MAAM,CAAC;AAC3C,MAAI,YAAY,WAAW,EAAG,QAAO;AAErC,SAAO,gBAAgB,MAAM,EAAE,KAAK,CAAC,aAAa;AAChD,QAAI,8BAA8B,QAAQ,EAAG,QAAO;AACpD,UAAM,eAAe,uBAAuB,QAAQ;AACpD,UAAM,uBAAuB,KAAK,IAAI,6BAA6B,YAAY,MAAM;AACrF,QAAI,cAAc;AAClB,QAAI,eAAe;AACnB,eAAW,cAAc,aAAa;AACpC,YAAM,gBAAgB,aAAa;AAAA,QACjC,CAAC,aAAa,UACZ,SAAS,eAAe,6BAA6B,YAAY,WAAW;AAAA,MAChF;AACA,UAAI,kBAAkB,GAAI;AAC1B,sBAAgB;AAChB,oBAAc,gBAAgB;AAAA,IAChC;AACA,WAAO,gBAAgB,wBAClB,CAAC,yBAAyB,WAAW,QAAQ;AAAA,EACpD,CAAC;AACH;AAUA,SAAS,wBACP,WACA,QACA,iBACA,sBACkB;AAClB,QAAM,iBAAiB,uBAAuB,SAAS,EAAE,CAAC,KAAK,IAC5D,QAAQ,oBAAoB,EAAE;AACjC,MAAI,CAAC,8BAA8B,IAAI,aAAa,GAAG;AACrD,WAAO,EAAE,QAAQ,iBAAiB,wBAAwB,MAAM;AAAA,EAClE;AACA,MAAI,yBAAyB,QAAW;AACtC,WAAO,EAAE,QAAQ,iBAAiB,wBAAwB,KAAK;AAAA,EACjE;AACA,QAAM,aAAa,kBAAkB,SACjC,qBAAqB,UACrB,qBAAqB;AACzB,MAAI,eAAe,QAAW;AAC5B,WAAO,EAAE,QAAQ,iBAAiB,wBAAwB,KAAK;AAAA,EACjE;AACA,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,wBAAwB;AAAA,IACxB,gBAAgB;AAAA,IAChB,yBAAyB;AAAA,EAC3B;AACF;AAEA,SAAS,uBAAuB,WAAmB,SAA6C;AAC9F,MAAI;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,EACV,GAAG;AACD,WAAO;AAAA,EACT;AACA,MACE,QAAQ,mBAAmB,UACxB,CAAC;AAAA,KACD,uBAAuB,SAAS,EAAE,CAAC,KAAK,IAAI,QAAQ,oBAAoB,EAAE;AAAA,IAC3E,gBAAgB,QAAQ,cAAc,EAAE,IAAI,CAAC,aAAa,uBAAuB,QAAQ,CAAC;AAAA,EAC5F,EACA,QAAO;AACT,QAAM,kBAAoC;AAAA,IACxC,QAAQ,QAAQ;AAAA,IAChB,iBAAiB,QAAQ;AAAA,IACzB,wBAAwB;AAAA,EAC1B;AACA,SAAO;AAAA,IACL;AAAA,IACA,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB;AAAA,IACA,gBAAgB;AAAA,EAClB,IACI,kBACA;AACN;AAEA,SAAS,oBACP,WACA,QACA,iBACA,6BAA6B,OAC7B,yBAAyB,OAChB;AACT,QAAM,2BAA2B,8BAE7B,oBAAoB,UACjB,uBAAuB,eAAe,MAAM,uBAAuB,MAAM;AAEhF,QAAM,iBAAiB,iBAAiB,WAAW,QAAQ,wBAAwB;AACnF,QAAM,eAAe,0BAA0B,2BAA2B,WAAW,MAAM;AAC3F,QAAM,kBAAkB,uBAAuB,SAAS;AACxD,QAAM,0BAA0B,0BAC3B,8BAA8B;AAAA,KAC9B,gBAAgB,CAAC,KAAK,IAAI,QAAQ,oBAAoB,EAAE;AAAA,EAC3D;AACF,MAAI,2BAA2B,CAAC,aAAc,QAAO;AACrD,MAAI,CAAC,kBAAkB,CAAC,aAAc,QAAO;AAC7C,MAAI,oBAAoB,OAAW,QAAO;AAC1C,QAAM,UAAU,iBAAiB,SAAS;AAC1C,QAAM,0BAA0B,CAAC,8BAC5B,oBAAoB,UACpB,uBAAuB,eAAe,MAAM,uBAAuB,MAAM;AAC9E,SAAO,QAAQ,SAAS,MAEpB,QAAQ,MAAM,CAAC,WACb,mBAAmB,QAAQ,iBAAiB,4BAA4B,uBAAuB,CAAC,KAC/F,iBAAiB,WAAW,QAAQ,eAAe;AAE5D;AAEA,SAAS,uBACP,QACA,qBACQ;AACR,QAAM,YAAY,gBAAgB,MAAM;AACxC,QAAM,kBAAkB,oBAAI,IAAY;AACxC,aAAW,sBAAsB,qBAAqB;AACpD,UAAM,eAAe,UAAU,QAAQ,kBAAkB;AACzD,QAAI,eAAe,EAAG;AACtB,QAAI,WAAW;AACf,WACE,WAAW,UAAU,SAAS,KAC3B,UAAU,QAAQ,EAAG,QAAQ,EAAE,SAAS,GAAG,KAC3C,2CAA2C;AAAA,MAC5C,UAAU,WAAW,CAAC,EAAG,UAAU;AAAA,IACrC,GACA;AACA,kBAAY;AAAA,IACd;AACA,aAAS,QAAQ,cAAc,SAAS,UAAU,SAAS,GAAG;AAC5D,sBAAgB,IAAI,KAAK;AAAA,IAC3B;AAAA,EACF;AACA,SAAO,CAAC,GAAG,eAAe,EACvB,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK,EAClC,IAAI,CAAC,UAAU,UAAU,KAAK,CAAE,EAChC,KAAK,GAAG;AACb;AACA,SAAS,4BACP,MACA,QACA,mBACQ;AACR,MAAI,KAAK,aAAa,eAAe,KAAK,mBAAmB,OAAW,QAAO;AAC/E,QAAM,yBAAyB,IAAI;AAAA,IACjC,gBAAgB,iBAAiB,EAAE,IAAI,CAAC,aAAa,uBAAuB,QAAQ,CAAC;AAAA,EACvF;AACA,QAAM,sBAAsB,KAAK,eAAe;AAAA,IAAO,CAAC,SACtD,oBAAoB,KAAK,QAAQ,mBAAmB,QAAW,KAAK;AAAA,EACtE;AACA,MAAI,oBAAoB,WAAW,EAAG,QAAO;AAC7C,SAAO,gBAAgB,MAAM,EAC1B,OAAO,CAAC,aAAa;AACpB,QAAI,uBAAuB,IAAI,uBAAuB,QAAQ,CAAC,EAAG,QAAO;AACzE,UAAM,iBAAiB,SAAS,QAAQ;AACxC,WAAO,oBAAoB;AAAA,MAAK,CAAC,SAC/B,CAAC,GAAG,SAAS,KAAK,MAAM,CAAC,EAAE;AAAA,QAAK,CAAC,UAC/B,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC,gBAAgB,6BAA6B,OAAO,WAAW,CAAC;AAAA,MAC5F;AAAA,IACF;AAAA,EACF,CAAC,EACA,KAAK,GAAG;AACb;AACA,SAAS,mBACP,MACA,QACA,iBACA,sBACA,qBAC+C;AAC/C,QAAM,cAAc;AAAA,IAClB,KAAK;AAAA,IACL,wBAAwB,KAAK,SAAS,QAAQ,iBAAiB,oBAAoB;AAAA,EACrF;AACA,MAAI,CAAC;AAAA,IACH,KAAK;AAAA,IACL,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,IACA,YAAY;AAAA,EACd,EAAG,QAAO;AACV,QAAM,gBAAgB,KAAK;AAC3B,QAAM,wBAAwB,kBAAkB,SAC5C,SACA,sBAAsB,aAAa,KAAK;AAC5C,QAAM,0BAA0B,gBAAgB,YAAY,mBAAmB,YAAY,MAAM,EAAE;AAAA,IACjG,CAAC,aACD;AAAA,MACE,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IACd;AAAA,EACF;AACA,QAAM,uBAAuB,kBAAkB,SAC3C,wBAAwB,CAAC,IACzB,wBAAwB;AAAA,IAAK,CAAC,aAC9B;AAAA,MACE,yBAAyB;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IACd;AAAA,EACF,KAAK,wBAAwB,CAAC;AAChC,QAAM,kBAAkB,wBAAwB,YAAY;AAC5D,QAAM,2BAA2B,yBAAyB,SACtD,YAAY,kBACZ;AAEJ,QAAM,oBAAoB;AAAA,IACxB,YAAY,mBAAmB,YAAY;AAAA,IAC3C;AAAA,EACF;AACA,QAAM,qBAAqB,KAAK,uBAC5B,OAAO;AAAA,IACP,OAAO,QAAQ,KAAK,oBAAoB,EACrC;AAAA,MAAO,CAAC,CAAC,KAAK,KAAK,MAClB;AAAA,QACE,GAAG,GAAG,KAAK,KAAK;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACJ,IACE;AACJ,QAAM,2BAA2B;AAAA,IAC/B;AAAA,IACA,YAAY,mBAAmB,YAAY;AAAA,IAC3C;AAAA,EACF;AACA,QAAM,yBAAyB,KAAK,iBAChC,KAAK,eAAe,QAAQ,CAAC,SAAS;AACtC,QAAI,CAAC,oBAAoB,KAAK,QAAQ,0BAA0B,QAAW,KAAK,EAAG,QAAO,CAAC;AAC3F,UAAM,kBAAkB,KAAK,mBACxB,oBAAoB,KAAK,iBAAiB,0BAA0B,QAAW,KAAK,IACrF,KAAK,kBACL;AACJ,UAAM,WAAW,KAAK,YACjB,oBAAoB,KAAK,SAAS,WAAW,0BAA0B,QAAW,KAAK,IACxF,KAAK,WACL;AACJ,UAAM;AAAA,MACJ,iBAAiB;AAAA,MACjB,UAAU;AAAA,MACV,GAAG;AAAA,IACL,IAAI;AACJ,WAAO,CAAC;AAAA,MACN,GAAG;AAAA,MACH,GAAI,oBAAoB,SAAY,EAAE,gBAAgB,IAAI,CAAC;AAAA,MAC3D,GAAI,aAAa,SAAY,EAAE,SAAS,IAAI,CAAC;AAAA,IAC/C,CAAC;AAAA,EACH,CAAC,IACC;AACJ,QAAM,yBAAyB,KAAK,kBAC/B,KAAK,eAAe,MAAM,SAAS,KACnC;AAAA,IACD,KAAK,eAAe;AAAA,IACpB,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,IACA,YAAY;AAAA,EACd,KACG,KAAK,eAAe,MAAM;AAAA,IAAM,CAAC,SAClC;AAAA,MACE,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA,YAAY;AAAA,IACd;AAAA,EACF,IACE;AAAA,IACA,OAAO,KAAK,eAAe;AAAA,IAC3B,aAAa,KAAK,eAAe;AAAA,IACjC,GAAI,KAAK,eAAe,mBACnB;AAAA,MACD,KAAK,eAAe;AAAA,MACpB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA,YAAY;AAAA,IACd,IACE,EAAE,iBAAiB,KAAK,eAAe,gBAAgB,IACvD,CAAC;AAAA,EACP,IACE;AACJ,QAAM,oBAAoB,yBACrB,oBAAoB,uBAAuB,iBAAiB,wBAAwB,IACrF,gBACA;AACJ,QAAM,oBAAoB,KAAK,cAAc,UACxC,qBAAqB,KAAK,WAAW,iBAAiB,IACvD,KAAK,YACL;AACJ,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,sBAAsB;AAAA,IACtB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,GAAG;AAAA,EACL,IAAI;AACJ,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,sBAAsB,SAAY,EAAE,WAAW,kBAAkB,IAAI,CAAC;AAAA,IAC1E,GAAI,sBAAsB,OAAO,KAAK,kBAAkB,EAAE,SAAS,IAC/D,EAAE,sBAAsB,mBAAmB,IAC3C,CAAC;AAAA,IACL,GAAI,0BAA0B,uBAAuB,SAAS,IAC1D,EAAE,gBAAgB,uBAAuB,IACzC,CAAC;AAAA,IACL,GAAI,2BAA2B,SAAY,EAAE,gBAAgB,uBAAuB,IAAI,CAAC;AAAA,IACzF,GAAI,sBAAsB,SAAY,EAAE,WAAW,kBAAkB,IAAI,CAAC;AAAA,EAC5E;AACF;AAEA,SAAS,qBACP,QACA,QACA,iBACkD;AAClD,MAAI,CAAC,qBAAqB,OAAO,MAAM,MAAM,EAAG,QAAO;AACvD,QAAM,eAAe,yBAAyB,OAAO,MAAM,MAAM;AACjE,QAAM,wBAAwB,oBAAoB,SAC9C,SACA,yBAAyB,OAAO,MAAM,eAAe;AACzD,QAAM,QAAQ,OAAO,MAAM;AAAA,IAAO,CAAC,SACjC,oBAAoB,MAAM,cAAc,qBAAqB;AAAA,EAC/D;AACA,QAAM,qBAAqB,OAAO,oBAC9B,QAAQ,CAAC,YAAY;AACrB,UAAM,gBAAgB,QAAQ,MAAM;AAAA,MAAO,CAAC,SAC1C,oBAAoB,MAAM,cAAc,qBAAqB;AAAA,IAC/D;AACA,WAAO,cAAc,SAAS,IAC1B,CAAC,EAAE,GAAG,SAAS,OAAO,cAAc,CAAC,IACrC,CAAC;AAAA,EACP,CAAC;AACH,MAAI,MAAM,WAAW,MAAM,uBAAuB,UAAa,mBAAmB,WAAW,IAAI;AAC/F,WAAO;AAAA,EACT;AACA,QAAM,EAAE,oBAAoB,qBAAqB,GAAG,sBAAsB,IAAI;AAC9E,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA,GAAI,sBAAsB,mBAAmB,SAAS,IAAI,EAAE,mBAAmB,IAAI,CAAC;AAAA,EACtF;AACF;AAEA,SAAS,2BAA2B,MAAsB;AACxD,SAAO,iCAAiC,IAAI,EAAE,KAAK,GAAG;AACxD;AAEA,SAAS,uBACP,cACA,QACA,iBACS;AACT,QAAM,aAAa,2BAA2B,aAAa,MAAM;AACjE,QAAM,aAAa,2BAA2B,aAAa,MAAM;AACjE,QAAM,cAAc,SAAS,aAAa,KAAK;AAC/C,MAAI,WAAW,WAAW,KAAK,WAAW,WAAW,KAAK,YAAY,SAAS,EAAG,QAAO;AACzF,QAAM,eAAe,GAAG,UAAU,IAAI,aAAa,KAAK,IAAI,UAAU;AACtE,QAAM,wBAAwB,gBAAgB,MAAM,EAAE,KAAK,CAAC,aAAa;AACvE,QAAI,8BAA8B,QAAQ,EAAG,QAAO;AACpD,WAAO,mBAAmB,cAAc,QAAQ,MAAM,KACjD,CAAC,yBAAyB,cAAc,QAAQ;AAAA,EACvD,CAAC;AACD,SAAO,yBACF,oBAAoB,cAAc,QAAQ,eAAe;AAChE;AACA,IAAM,2BAA2B,oBAAI,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,mCAAmC;AACzC,IAAM,sCAAsC,IAAI;AAAA,EAC9C;AAAA,EAEA;AACF;AAEA,SAAS,eAAe,UAA2B;AACjD,SAAO,iDAAiD,KAAK,SAAS,KAAK,CAAC;AAC9E;AACA,SAAS,cAAc,UAA2B;AAChD,SAAO,WAAW,KAAK,SAAS,KAAK,CAAC;AACxC;AAEA,SAAS,wBAAwB,UAAkB,UAA2B;AAC5E,MAAI,CAAC,cAAc,QAAQ,EAAG,QAAO;AACrC,SAAO,kFAAkF;AAAA,IACvF;AAAA,EACF;AACF;AAEA,SAAS,0BAA0B,UAAkB,UAA2B;AAC9E,MAAI,CAAC,eAAe,QAAQ,EAAG,QAAO;AACtC,SAAO,iBAAiB,QAAQ,EAAE;AAAA,IAAK,CAAC,EAAE,MAAM,MAC9C,yBAAyB,IAAI,KAAK,KAAK,oBAAoB,KAAK,KAAK;AAAA,EACvE,KACK,iCAAiC,KAAK,QAAQ,KAC9C,oCAAoC,KAAK,QAAQ;AACxD;AAGA,SAAS,wBAAwB,UAA2B;AAC1D,SAAO,uIACJ,KAAK,QAAQ;AAClB;AAEA,SAAS,cAAc,UAA2B;AAChD,SAAO,uHACJ,KAAK,SAAS,KAAK,CAAC;AACzB;AAEA,IAAM,uCAAuC,IAAI;AAAA,EAC/C;AAAA,EAGA;AACF;AAEA,SAAS,yBAAyB,UAAkB,UAA2B;AAC7E,QAAM,qBAAqB,SAAS,KAAK;AACzC,QAAM,sBAAsB,qCAAqC,KAAK,kBAAkB;AACxF,QAAM,eAAe,iCAAiC,QAAQ;AAC9D,MAAI,wBAAwB,MAAM;AAChC,UAAM,sBAAsB,iBAAiB,oBAAoB,CAAC,KAAK,EAAE;AACzE,UAAM,iBAAiB,oBAAoB,UAAU,CAAC,EAAE,YAAY,MAAM,WAAW;AACrF,QAAI,iBAAiB,EAAG,QAAO;AAC/B,UAAM,gBAAgB;AAAA,MACpB,oBAAoB,MAAM,GAAG,cAAc,EAAE,IAAI,CAAC,EAAE,QAAQ,MAAM,OAAO,EAAE,KAAK,GAAG;AAAA,IACrF;AACA,UAAMA,mBAAkB;AAAA,MACtB,oBAAoB,MAAM,cAAc,EAAE,IAAI,CAAC,EAAE,QAAQ,MAAM,OAAO,EAAE,KAAK,GAAG;AAAA,IAClF;AACA,QAAI,cAAc,WAAW,KAAKA,iBAAgB,WAAW,EAAG,QAAO;AACvE,QAAIC,eAAc;AAClB,eAAW,SAAS,CAAC,GAAG,eAAe,GAAGD,gBAAe,GAAG;AAC1D,YAAM,eAAe,aAAa;AAAA,QAChC,CAAC,aAAa,UACZ,SAASC,gBAAe,6BAA6B,OAAO,WAAW;AAAA,MAC3E;AACA,UAAI,iBAAiB,GAAI,QAAO;AAChC,MAAAA,eAAc,eAAe;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAEA,QAAM,uBAAuB,0CAA0C,KAAK,kBAAkB;AAC9F,MAAI,yBAAyB,KAAM,QAAO;AAC1C,QAAM,kBAAkB,uBAAuB,qBAAqB,CAAC,KAAK,EAAE;AAC5E,QAAM,eAAe,uBAAuB,qBAAqB,CAAC,KAAK,EAAE;AACzE,MAAI,gBAAgB,WAAW,KAAK,aAAa,WAAW,EAAG,QAAO;AACtE,QAAM,iBAAiB,aAAa,UAAU,CAAC,gBAC7C,6BAA6B,gBAAgB,CAAC,GAAI,WAAW,CAAC;AAChE,MAAI,mBAAmB,GAAI,QAAO;AAClC,MAAI,cAAc,iBAAiB,gBAAgB;AACnD,aAAW,eAAe,cAAc;AACtC,UAAM,cAAc,aAAa;AAAA,MAC/B,CAAC,aAAa,UACZ,SAAS,eAAe,6BAA6B,aAAa,WAAW;AAAA,IACjF;AACA,QAAI,gBAAgB,GAAI,QAAO;AAC/B,kBAAc,cAAc;AAAA,EAC9B;AACA,SAAO;AACT;AAEA,SAAS,2BACP,UACA,QACA,iBACS;AACT,QAAM,iBAAiB,SAAS,QAAQ;AACxC,MAAI,eAAe,SAAS,EAAG,QAAO;AACtC,QAAM,kBAAkB,mFACrB,KAAK,SAAS,KAAK,CAAC;AACvB,QAAM,oBAAoB,IAAI,IAAI,gBAAgB,mBAAmB,MAAM,EAAE,IAAI,CAAC,aAAa,uBAAuB,QAAQ,CAAC,CAAC;AAChI,QAAM,YAAY,gBAAgB,MAAM;AACxC,SAAO,UAAU,KAAK,CAAC,UAAU,UAAU;AACzC,QAAI,CAAC,kBAAkB,IAAI,uBAAuB,QAAQ,CAAC,EAAG,QAAO;AACrE,QAAI,8BAA8B,QAAQ,EAAG,QAAO;AACpD,QAAI,cAAc,QAAQ,GAAG;AAC3B,YAAM,oBAAoB,UAAU,QAAQ,CAAC;AAC7C,aAAO,sBAAsB,UACxB,8BAA8B,iBAAiB,KAC/C,mBAAmB,UAAU,iBAAiB,MAAM;AAAA,IAC3D;AACA,QAAI,wBAAwB,QAAQ,EAAG,QAAO;AAC9C,UAAM,QAAQ,mBAAmB,UAAU,UAAU,KAAK;AAC1D,QAAI,UAAU,EAAG,QAAO;AACxB,UAAM,iBAAiB,SAAS,QAAQ;AACxC,UAAM,iBAAiB,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,eAAe,IAAI,KAAK,CAAC;AACrF,YAAQ,mBAAmB,mBACtB,0BAA0B,UAAU,QAAQ,KAC5C,wBAAwB,UAAU,QAAQ,KAC1C,yBAAyB,UAAU,QAAQ;AAAA,EAClD,CAAC;AACH;AAEA,SAAS,eACP,UACA,QACA,iBACmD;AACnD,MAAI,2BAA2B,SAAS,UAAU,QAAQ,eAAe,EAAG,QAAO;AACnF,MAAI,CAAC,oBAAoB,SAAS,UAAU,QAAQ,iBAAiB,IAAI,EAAG,QAAO;AACnF,QAAM,oBAAoB,SAAS,QAAQ,KAAK;AAChD,MACE,kBAAkB,SAAS,KACxB,CAAC,oBAAoB,mBAAmB,mBAAmB,QAAQ,QAAW,KAAK,GACtF;AACA,WAAO,EAAE,GAAG,UAAU,SAAS,GAAG;AAAA,EACpC;AACA,SAAO;AACT;AAEA,SAAS,wBACP,WACA,QACA,iBACA,sBACS;AACT,QAAM,UAAU;AAAA,IACd;AAAA,IACA,wBAAwB,WAAW,QAAQ,iBAAiB,oBAAoB;AAAA,EAClF;AACA,SAAO;AAAA,IACL;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,EACV;AACF;AAEO,SAAS,+BACd,QACA,QACA,iBACA,sBACA,qBACkB;AAClB,MAAI,OAAO,KAAK,EAAE,WAAW,GAAG;AAC9B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO,CAAC;AAAA,MACR,gBAAgB,CAAC;AAAA,MACjB,UAAU,CAAC;AAAA,MACX,WAAW,CAAC;AAAA,MACZ,GAAI,OAAO,kBAAkB,SAAY,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC;AAAA,MAClE,oBAAoB;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,QAAQ,OAAO,MAAM,QAAQ,CAAC,SAAS;AAC3C,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,WAAO,aAAa,SAAY,CAAC,IAAI,CAAC,QAAQ;AAAA,EAChD,CAAC;AACD,QAAM,iBAAiB,OAAO,eAAe;AAAA,IAAO,CAAC,WACnD,wBAAwB,QAAQ,QAAQ,iBAAiB,oBAAoB;AAAA,EAC/E;AACA,QAAM,WAAW,OAAO,SAAS,QAAQ,CAAC,WAAW;AACnD,UAAM,WAAW,qBAAqB,QAAQ,QAAQ,eAAe;AACrE,WAAO,aAAa,SAAY,CAAC,IAAI,CAAC,QAAQ;AAAA,EAChD,CAAC;AACD,QAAM,YAAY,OAAO,UAAU,QAAQ,CAAC,aAAa;AACvD,UAAM,WAAW,eAAe,UAAU,QAAQ,eAAe;AACjE,WAAO,aAAa,SAAY,CAAC,IAAI,CAAC,QAAQ;AAAA,EAChD,CAAC;AACD,QAAM,gBAAgB,OAAO,eAAe;AAAA,IAAO,CAAC,iBAClD,uBAAuB,cAAc,QAAQ,eAAe;AAAA,EAC9D;AACA,QAAM,qBAAqB,OAAO,sBAC7B;AAAA,IACD,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,EACF,IACE,OAAO,qBACP;AAEJ,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,OAAO,kBAAkB,SAAY,EAAE,cAAc,IAAI,CAAC;AAAA,IAC9D,GAAI,uBAAuB,SAAY,EAAE,mBAAmB,IAAI,EAAE,oBAAoB,OAAU;AAAA,EAClG;AACF;","names":["predicateTokens","sourceIndex"]}