@remnic/core 9.28.0 → 9.29.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/dist/access-admin-ops-surface.d.ts +10 -10
  2. package/dist/access-admin-ops-surface.js +32 -32
  3. package/dist/access-authorization-probe.d.ts +10 -10
  4. package/dist/access-authorization-probe.js +33 -33
  5. package/dist/access-boundary.d.ts +10 -10
  6. package/dist/access-boundary.js +32 -32
  7. package/dist/access-cli.js +101 -98
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-health-types.d.ts +1 -1
  10. package/dist/access-http-lcm-compaction.d.ts +10 -10
  11. package/dist/access-http.d.ts +10 -10
  12. package/dist/access-http.js +43 -43
  13. package/dist/access-identity-continuity-surface.d.ts +8 -8
  14. package/dist/access-identity-continuity-surface.js +32 -32
  15. package/dist/access-lcm-surface.d.ts +10 -10
  16. package/dist/access-lcm-surface.js +32 -32
  17. package/dist/access-mcp.d.ts +10 -10
  18. package/dist/access-mcp.js +38 -38
  19. package/dist/access-memory-search-fanout.d.ts +2 -2
  20. package/dist/access-memory-search-fanout.js +3 -3
  21. package/dist/{access-namespace-preflight-BiQ_-iUJ.d.ts → access-namespace-preflight-DCXBkDp0.d.ts} +1 -1
  22. package/dist/access-namespace-preflight.d.ts +3 -3
  23. package/dist/access-namespace-preflight.js +32 -32
  24. package/dist/access-observe-write-surface.d.ts +10 -10
  25. package/dist/access-observe-write-surface.js +32 -32
  26. package/dist/access-operations-batch.js +35 -35
  27. package/dist/access-operations.d.ts +10 -10
  28. package/dist/access-operations.js +37 -37
  29. package/dist/access-recall-concurrency.d.ts +10 -10
  30. package/dist/access-recall-concurrency.js +32 -32
  31. package/dist/access-recall-response.d.ts +10 -10
  32. package/dist/access-recall-response.js +32 -32
  33. package/dist/access-recall-surface.d.ts +10 -10
  34. package/dist/access-recall-surface.js +32 -32
  35. package/dist/access-schema.d.ts +7 -7
  36. package/dist/access-schema.js +4 -4
  37. package/dist/{access-service-CXkIgcGh.d.ts → access-service-DvPW_M5j.d.ts} +7 -7
  38. package/dist/access-service.d.ts +10 -10
  39. package/dist/access-service.js +32 -32
  40. package/dist/access-surface-catalog.d.ts +10 -10
  41. package/dist/access-wearables-meetings-surface.d.ts +3 -3
  42. package/dist/action-confidence.d.ts +1 -1
  43. package/dist/active-memory-bridge.d.ts +1 -1
  44. package/dist/active-memory-bridge.js +3 -3
  45. package/dist/active-recall.d.ts +1 -1
  46. package/dist/active-recall.js +1 -1
  47. package/dist/adapters/index.js +4 -4
  48. package/dist/adapters/registry.js +2 -2
  49. package/dist/behavior-learner.d.ts +1 -1
  50. package/dist/behavior-signals.d.ts +1 -1
  51. package/dist/bootstrap.d.ts +8 -8
  52. package/dist/briefing.d.ts +2 -2
  53. package/dist/briefing.js +8 -8
  54. package/dist/buffer-surprise-report.d.ts +1 -1
  55. package/dist/buffer.d.ts +2 -2
  56. package/dist/buffer.js +2 -2
  57. package/dist/bulk-import/index.d.ts +3 -3
  58. package/dist/calibration.d.ts +1 -1
  59. package/dist/capabilities.d.ts +3 -2
  60. package/dist/capabilities.js +1 -1
  61. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-GWVG7LGC.js} +2 -2
  62. package/dist/{catalog-Bouj8Gfg.d.ts → catalog-BIVgftWu.d.ts} +1 -1
  63. package/dist/causal-behavior.d.ts +1 -1
  64. package/dist/causal-consolidation.d.ts +1 -1
  65. package/dist/causal-consolidation.js +9 -9
  66. package/dist/causal-trajectory-graph.d.ts +1 -1
  67. package/dist/{chunk-GQSMYXKL.js → chunk-2AXMQWCN.js} +2 -2
  68. package/dist/{chunk-VYYNBJXH.js → chunk-2D7FEUCK.js} +6 -6
  69. package/dist/{chunk-PXQM2HOG.js → chunk-2GXM5N5A.js} +2 -2
  70. package/dist/{chunk-RDQGLJRR.js → chunk-2XRE6FLM.js} +2 -1
  71. package/dist/{chunk-RDQGLJRR.js.map → chunk-2XRE6FLM.js.map} +1 -1
  72. package/dist/{chunk-JIF3VRKQ.js → chunk-35DL7IOI.js} +10 -10
  73. package/dist/{chunk-2H7OEVPO.js → chunk-3GD2HFR6.js} +2 -2
  74. package/dist/{chunk-KKBTBUVT.js → chunk-3JNDOAQ2.js} +5 -5
  75. package/dist/{chunk-4TFIRMTE.js → chunk-4A6YGWQN.js} +2 -2
  76. package/dist/{chunk-IKMAO55B.js → chunk-55MDBZLC.js} +2 -2
  77. package/dist/{chunk-RKXZ7P4V.js → chunk-5QDRGWT2.js} +3 -3
  78. package/dist/{chunk-IPLYGWQF.js → chunk-5W7CTZ2E.js} +6 -6
  79. package/dist/{chunk-ALTP3MFS.js → chunk-5ZCUDWD4.js} +2 -2
  80. package/dist/{chunk-B7GROTXD.js → chunk-6LKEUCEM.js} +2 -2
  81. package/dist/{chunk-2AJ72VVS.js → chunk-7BZOBA5J.js} +3 -3
  82. package/dist/{chunk-44DUJETW.js → chunk-7HXCF4RE.js} +2 -2
  83. package/dist/{chunk-WVVK2RFM.js → chunk-7L45JFPW.js} +14 -14
  84. package/dist/{chunk-R372P2EH.js → chunk-ACXPX4AG.js} +2 -2
  85. package/dist/{chunk-7CPOZH6Y.js → chunk-ALSGMEJR.js} +5 -5
  86. package/dist/{chunk-JGUXPJUQ.js → chunk-AS7YMSL6.js} +2 -2
  87. package/dist/{chunk-DKQM5Q6Q.js → chunk-CW4AGY3G.js} +4 -4
  88. package/dist/{chunk-ZN4UZWMT.js → chunk-D2ANTDGO.js} +3 -3
  89. package/dist/{chunk-3UOSVTFR.js → chunk-D3LMYTBV.js} +9 -9
  90. package/dist/{chunk-FOCEI3TN.js → chunk-DRBXHRXE.js} +2 -1
  91. package/dist/chunk-DRBXHRXE.js.map +1 -0
  92. package/dist/{chunk-LIHC3T43.js → chunk-E5OBR6CJ.js} +4 -4
  93. package/dist/{chunk-XY7QPJDA.js → chunk-E6EE5B67.js} +2 -2
  94. package/dist/{chunk-TBMRQZDY.js → chunk-EP5BVCRI.js} +2 -2
  95. package/dist/{chunk-MJPV4LBH.js → chunk-FUYEVEX7.js} +83 -83
  96. package/dist/{chunk-2BEJ4XCF.js → chunk-FZRQZW4H.js} +2 -2
  97. package/dist/{chunk-X6ROIHFE.js → chunk-G5R3D5UP.js} +2 -2
  98. package/dist/{chunk-2FYNLDKJ.js → chunk-GAWOEQEQ.js} +2 -2
  99. package/dist/{chunk-TKBDJTXG.js → chunk-GBJ4RDFR.js} +94 -20
  100. package/dist/chunk-GBJ4RDFR.js.map +1 -0
  101. package/dist/{chunk-QH6CS6XJ.js → chunk-H24WNPA2.js} +2 -2
  102. package/dist/{chunk-VFNI3RPT.js → chunk-HKJCMOT6.js} +2 -2
  103. package/dist/{chunk-JQ7T5VDC.js → chunk-HUHX2OCX.js} +1 -1
  104. package/dist/chunk-HUHX2OCX.js.map +1 -0
  105. package/dist/{chunk-EZWWCN7I.js → chunk-IAEAFLF2.js} +2 -2
  106. package/dist/{chunk-NBNDVNJ2.js → chunk-IGPEJVBY.js} +3 -3
  107. package/dist/{chunk-MQVINOJQ.js → chunk-IYZ5K7MU.js} +3 -3
  108. package/dist/{chunk-Q5VJUNXA.js → chunk-JMQUBRV6.js} +105 -42
  109. package/dist/chunk-JMQUBRV6.js.map +1 -0
  110. package/dist/{chunk-2TQ2UFKH.js → chunk-JP3YPDAW.js} +57 -57
  111. package/dist/{chunk-P2CLYN6H.js → chunk-K5GB36ME.js} +2 -2
  112. package/dist/{chunk-227UFSEQ.js → chunk-LEPOP46W.js} +4 -4
  113. package/dist/{chunk-FBZTWUK5.js → chunk-OFHFH655.js} +8 -8
  114. package/dist/{chunk-GJPCP5CA.js → chunk-OP6F6L3S.js} +2 -2
  115. package/dist/{chunk-FGBJBYWP.js → chunk-OVRQLAYR.js} +3 -3
  116. package/dist/{chunk-2NLLXCJG.js → chunk-OWHERGF2.js} +2 -2
  117. package/dist/{chunk-3BSJBIZ3.js → chunk-OYJKSZIQ.js} +2 -2
  118. package/dist/chunk-P2BM76KT.js +528 -0
  119. package/dist/chunk-P2BM76KT.js.map +1 -0
  120. package/dist/{chunk-UR5SIN7H.js → chunk-PBUZNGMX.js} +30 -30
  121. package/dist/{chunk-P2OZKKYP.js → chunk-PHWUFPCO.js} +2 -2
  122. package/dist/{chunk-Q6YJW6KE.js → chunk-PKRIQL3V.js} +2 -2
  123. package/dist/{chunk-BR4UFMLO.js → chunk-PTSNLEXK.js} +3 -3
  124. package/dist/{chunk-AHFZXUZM.js → chunk-QDKK63Y7.js} +3 -3
  125. package/dist/{chunk-JBPKEARU.js → chunk-RKNJBZ55.js} +4 -4
  126. package/dist/{chunk-FCCMFVS6.js → chunk-RPSYDM6C.js} +2 -2
  127. package/dist/chunk-RPW2NOU6.js +33 -0
  128. package/dist/chunk-RPW2NOU6.js.map +1 -0
  129. package/dist/{chunk-MWTMTW2T.js → chunk-SH6YO3LT.js} +3 -3
  130. package/dist/{chunk-IYT632D5.js → chunk-UBKEQOTD.js} +3 -3
  131. package/dist/{chunk-BJJAX3IZ.js → chunk-UTRO5UJU.js} +2 -2
  132. package/dist/{chunk-X7Y7WX73.js → chunk-UVYI6VIX.js} +1 -1
  133. package/dist/{chunk-S24E4MBQ.js → chunk-VSURVXKY.js} +9 -9
  134. package/dist/chunk-WOCNN776.js +742 -0
  135. package/dist/chunk-WOCNN776.js.map +1 -0
  136. package/dist/{chunk-YOBNCD3Z.js → chunk-WRFBW2TT.js} +10 -10
  137. package/dist/{chunk-MXJ3VP6S.js → chunk-WU7TTVOD.js} +7 -7
  138. package/dist/{chunk-EG64LXKL.js → chunk-XOZ4ALGB.js} +3 -3
  139. package/dist/{chunk-2PHX3I5C.js → chunk-Z54EM5YZ.js} +10 -10
  140. package/dist/{cli-DJbkaZBU.d.ts → cli-CxoSOiG0.d.ts} +5 -5
  141. package/dist/cli.d.ts +12 -12
  142. package/dist/cli.js +65 -65
  143. package/dist/compounding/engine.d.ts +2 -2
  144. package/dist/compounding/engine.js +9 -9
  145. package/dist/compounding/preference-consolidator.d.ts +1 -1
  146. package/dist/compression-optimizer.d.ts +1 -1
  147. package/dist/config.d.ts +1 -1
  148. package/dist/config.js +1 -1
  149. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  150. package/dist/connectors/codex-materialize-runner.js +8 -8
  151. package/dist/connectors/codex-materialize.d.ts +1 -1
  152. package/dist/connectors/index.d.ts +1 -1
  153. package/dist/connectors/index.js +9 -9
  154. package/dist/consolidation-provenance-check.d.ts +2 -2
  155. package/dist/consolidation-undo.d.ts +2 -2
  156. package/dist/contradiction/index.d.ts +2 -2
  157. package/dist/contradiction/index.js +6 -6
  158. package/dist/{contradiction-scan-HMF7CNKD.js → contradiction-scan-HYLIRMJ2.js} +3 -3
  159. package/dist/conversation-index/backend.d.ts +1 -1
  160. package/dist/conversation-index/backend.js +2 -2
  161. package/dist/conversation-index/chunker.d.ts +1 -1
  162. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  163. package/dist/conversation-index/indexer.d.ts +1 -1
  164. package/dist/conversation-index/search.d.ts +1 -1
  165. package/dist/corpus-watermark.d.ts +1 -1
  166. package/dist/corpus-watermark.js +16 -16
  167. package/dist/day-summary.d.ts +1 -1
  168. package/dist/day-summary.js +2 -2
  169. package/dist/delinearize.d.ts +1 -1
  170. package/dist/direct-answer-wiring.d.ts +1 -1
  171. package/dist/direct-answer.d.ts +1 -1
  172. package/dist/embedding-fallback.d.ts +1 -1
  173. package/dist/embedding-fallback.js +2 -2
  174. package/dist/enrichment/index.d.ts +1 -1
  175. package/dist/entity-retrieval.d.ts +2 -2
  176. package/dist/entity-retrieval.js +8 -8
  177. package/dist/entity-schema.d.ts +1 -1
  178. package/dist/explicit-capture.d.ts +8 -8
  179. package/dist/explicit-capture.js +2 -2
  180. package/dist/extraction-error-classification.d.ts +1 -1
  181. package/dist/extraction-faithfulness.d.ts +1 -1
  182. package/dist/extraction-judge-telemetry.d.ts +1 -1
  183. package/dist/extraction-judge-training.d.ts +1 -1
  184. package/dist/extraction-judge.d.ts +1 -1
  185. package/dist/extraction-liveness.d.ts +1 -1
  186. package/dist/extraction-source-grounding-helpers.d.ts +34 -0
  187. package/dist/extraction-source-grounding-helpers.js +62 -0
  188. package/dist/extraction-source-grounding-helpers.js.map +1 -0
  189. package/dist/extraction-source-grounding-rules.d.ts +18 -0
  190. package/dist/extraction-source-grounding-rules.js +12 -0
  191. package/dist/extraction-source-grounding-rules.js.map +1 -0
  192. package/dist/extraction-source-grounding.d.ts +11 -0
  193. package/dist/extraction-source-grounding.js +13 -0
  194. package/dist/extraction-source-grounding.js.map +1 -0
  195. package/dist/extraction.d.ts +3 -1
  196. package/dist/extraction.js +7 -4
  197. package/dist/fallback-llm.d.ts +1 -1
  198. package/dist/{first-start-migration-BKNGOFED.js → first-start-migration-F2QJD66E.js} +5 -5
  199. package/dist/graph-dashboard-diff.d.ts +1 -1
  200. package/dist/graph-dashboard-key.d.ts +1 -1
  201. package/dist/graph-dashboard-parser.d.ts +1 -1
  202. package/dist/graph-edge-reinforcement.d.ts +1 -1
  203. package/dist/graph-snapshot.d.ts +1 -1
  204. package/dist/graph.d.ts +1 -1
  205. package/dist/importance.d.ts +1 -1
  206. package/dist/importers/index.d.ts +1 -1
  207. package/dist/in-flight-reads.d.ts +1 -1
  208. package/dist/index.d.ts +19 -19
  209. package/dist/index.js +156 -153
  210. package/dist/intent.d.ts +1 -1
  211. package/dist/lcm/engine.d.ts +1 -1
  212. package/dist/lcm/engine.js +4 -4
  213. package/dist/lcm/index.d.ts +1 -1
  214. package/dist/lcm/index.js +10 -10
  215. package/dist/lcm/tools.d.ts +1 -1
  216. package/dist/lifecycle.d.ts +1 -1
  217. package/dist/live-connectors-runner.d.ts +1 -1
  218. package/dist/local-llm.d.ts +1 -1
  219. package/dist/local-llm.js +2 -2
  220. package/dist/local-model-endpoint.d.ts +1 -1
  221. package/dist/maintenance/memory-governance.d.ts +1 -1
  222. package/dist/maintenance/memory-governance.js +8 -8
  223. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  224. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +8 -8
  225. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  226. package/dist/maintenance/rebuild-memory-projection.js +9 -9
  227. package/dist/{maintenance-DveW6azo.d.ts → maintenance-Cb-PjxQd.d.ts} +3 -3
  228. package/dist/mcp-memory-inspector-app.d.ts +10 -10
  229. package/dist/memory-action-policy.d.ts +1 -1
  230. package/dist/memory-cache.d.ts +1 -1
  231. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  232. package/dist/memory-projection-store.d.ts +1 -1
  233. package/dist/memory-provenance.d.ts +1 -1
  234. package/dist/memory-worth-outcomes.d.ts +2 -2
  235. package/dist/models-json.d.ts +1 -1
  236. package/dist/namespaces/migrate.d.ts +3 -3
  237. package/dist/namespaces/migrate.js +15 -15
  238. package/dist/namespaces/principal.d.ts +1 -1
  239. package/dist/namespaces/principal.js +2 -2
  240. package/dist/namespaces/search.d.ts +1 -1
  241. package/dist/namespaces/search.js +7 -7
  242. package/dist/namespaces/storage.d.ts +3 -3
  243. package/dist/namespaces/storage.js +8 -8
  244. package/dist/native-knowledge.d.ts +1 -1
  245. package/dist/offline-sync-impression-drain.d.ts +1 -1
  246. package/dist/offline-sync-impression-drain.js +6 -6
  247. package/dist/operator-doctor-corpus.d.ts +1 -1
  248. package/dist/operator-doctor-corpus.js +17 -17
  249. package/dist/operator-doctor-replica.d.ts +1 -1
  250. package/dist/operator-toolkit.d.ts +3 -3
  251. package/dist/operator-toolkit.js +23 -23
  252. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  253. package/dist/orchestration/compression-guideline-coordinator.js +2 -2
  254. package/dist/orchestration/maintenance.d.ts +4 -4
  255. package/dist/orchestration/maintenance.js +15 -15
  256. package/dist/{orchestrator-Cvlgpe6I.d.ts → orchestrator-5GKqb_HL.d.ts} +7 -7
  257. package/dist/orchestrator.d.ts +8 -8
  258. package/dist/orchestrator.js +103 -100
  259. package/dist/patterns-cli.d.ts +1 -1
  260. package/dist/{pipeline-BveYVaz7.d.ts → pipeline-3Qi1TpRo.d.ts} +1 -1
  261. package/dist/policy-runtime.d.ts +1 -1
  262. package/dist/proactive-contention.d.ts +1 -1
  263. package/dist/provenance.d.ts +1 -1
  264. package/dist/{qmd-CLWDsbYR.d.ts → qmd-D9JqzzRX.d.ts} +1 -1
  265. package/dist/qmd-preflight.d.ts +2 -2
  266. package/dist/qmd-recall-cache.d.ts +1 -1
  267. package/dist/qmd.d.ts +2 -2
  268. package/dist/recall-concurrency-config.d.ts +1 -1
  269. package/dist/recall-disclosure-escalation.d.ts +1 -1
  270. package/dist/recall-explain-renderer.d.ts +1 -1
  271. package/dist/recall-explain-renderer.js +3 -3
  272. package/dist/recall-memory-map.d.ts +1 -1
  273. package/dist/recall-planner-llm.d.ts +1 -1
  274. package/dist/recall-state.d.ts +1 -1
  275. package/dist/recall-tag-filter.d.ts +1 -1
  276. package/dist/recall-timings.d.ts +1 -1
  277. package/dist/recall-xray-cli.d.ts +1 -1
  278. package/dist/recall-xray-cli.js +4 -4
  279. package/dist/recall-xray-renderer.d.ts +1 -1
  280. package/dist/recall-xray-renderer.js +3 -3
  281. package/dist/recall-xray.d.ts +1 -1
  282. package/dist/recall-xray.js +2 -2
  283. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  284. package/dist/replay/normalizers/claude.d.ts +1 -1
  285. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  286. package/dist/replay/normalizers/shared.d.ts +1 -1
  287. package/dist/replay/runner.d.ts +1 -1
  288. package/dist/replay/types.d.ts +1 -1
  289. package/dist/replica-divergence.d.ts +1 -1
  290. package/dist/replica-peers-config.d.ts +1 -1
  291. package/dist/resolve-auth-token.d.ts +1 -1
  292. package/dist/resume-bundles.js +2 -2
  293. package/dist/retrieval-agents.d.ts +2 -2
  294. package/dist/retrieval-tiers.d.ts +1 -1
  295. package/dist/routing/engine.d.ts +1 -1
  296. package/dist/routing/store.d.ts +1 -1
  297. package/dist/salvage-envelope.d.ts +1 -1
  298. package/dist/{scope-profiles-BVf3DZ7z.d.ts → scope-profiles-C4g6_UdP.d.ts} +1 -1
  299. package/dist/search/embed-helper.d.ts +1 -1
  300. package/dist/search/embed-helper.js +2 -2
  301. package/dist/search/factory.d.ts +1 -1
  302. package/dist/search/factory.js +6 -6
  303. package/dist/search/index.d.ts +1 -1
  304. package/dist/search/index.js +10 -10
  305. package/dist/search/lancedb-backend.d.ts +1 -1
  306. package/dist/search/meilisearch-backend.d.ts +1 -1
  307. package/dist/search/noop-backend.d.ts +1 -1
  308. package/dist/search/orama-backend.d.ts +1 -1
  309. package/dist/search/port.d.ts +1 -1
  310. package/dist/search/remote-backend.d.ts +1 -1
  311. package/dist/{semantic-consolidation-DXLV47y2.d.ts → semantic-consolidation-BrxqnzTW.d.ts} +1 -1
  312. package/dist/semantic-consolidation.d.ts +2 -2
  313. package/dist/semantic-consolidation.js +9 -9
  314. package/dist/semantic-rule-promotion.js +8 -8
  315. package/dist/semantic-rule-verifier.d.ts +1 -1
  316. package/dist/semantic-rule-verifier.js +8 -8
  317. package/dist/{service-DbgPTeMJ.d.ts → service-Bi1JgxdP.d.ts} +2 -2
  318. package/dist/session-observer-bands.d.ts +1 -1
  319. package/dist/session-observer-state.d.ts +1 -1
  320. package/dist/shared-context/manager.d.ts +1 -1
  321. package/dist/shared-context/manager.js +2 -2
  322. package/dist/signal.d.ts +1 -1
  323. package/dist/{storage-DOzTm8wG.d.ts → storage-CcH6yPk2.d.ts} +1 -1
  324. package/dist/storage.d.ts +2 -2
  325. package/dist/storage.js +7 -7
  326. package/dist/summarizer.d.ts +1 -1
  327. package/dist/summarizer.js +3 -3
  328. package/dist/summary-snapshot.d.ts +1 -1
  329. package/dist/temporal-supersession.d.ts +2 -2
  330. package/dist/temporal-timeline-recall.d.ts +1 -1
  331. package/dist/temporal-validity.d.ts +1 -1
  332. package/dist/threading.d.ts +1 -1
  333. package/dist/tier-migration.d.ts +2 -2
  334. package/dist/tier-routing.d.ts +1 -1
  335. package/dist/{tier-stats-XKD7SXYY.js → tier-stats-OPTSBNRH.js} +2 -2
  336. package/dist/topics.d.ts +1 -1
  337. package/dist/transcript.d.ts +1 -1
  338. package/dist/transfer/autodetect.js +1 -1
  339. package/dist/transfer/backup.js +2 -2
  340. package/dist/transfer/capsule-export.js +3 -3
  341. package/dist/transfer/capsule-import.js +2 -2
  342. package/dist/trust-score-stage.d.ts +1 -1
  343. package/dist/trust-score.d.ts +1 -1
  344. package/dist/{types-BA7W-_xy.d.ts → types-Dg0w9ADr.d.ts} +1 -0
  345. package/dist/types.d.ts +1 -1
  346. package/dist/types.js +1 -1
  347. package/dist/utility-runtime.d.ts +1 -1
  348. package/dist/verified-recall.js +8 -8
  349. package/dist/write-envelope.d.ts +1 -1
  350. package/package.json +2 -2
  351. package/src/capabilities.test.ts +1 -0
  352. package/src/capabilities.ts +7 -7
  353. package/src/config.test.ts +5 -0
  354. package/src/config.ts +1 -1
  355. package/src/extraction-source-grounding-helpers.ts +603 -0
  356. package/src/extraction-source-grounding-rules.ts +1031 -0
  357. package/src/extraction-source-grounding.test.ts +2337 -0
  358. package/src/extraction-source-grounding.ts +50 -0
  359. package/src/extraction.ts +120 -15
  360. package/src/storage/entity-canonical-id-migration.ts +151 -23
  361. package/src/types.ts +2 -2
  362. package/dist/chunk-FOCEI3TN.js.map +0 -1
  363. package/dist/chunk-JQ7T5VDC.js.map +0 -1
  364. package/dist/chunk-Q5VJUNXA.js.map +0 -1
  365. package/dist/chunk-TKBDJTXG.js.map +0 -1
  366. /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-GWVG7LGC.js.map} +0 -0
  367. /package/dist/{chunk-GQSMYXKL.js.map → chunk-2AXMQWCN.js.map} +0 -0
  368. /package/dist/{chunk-VYYNBJXH.js.map → chunk-2D7FEUCK.js.map} +0 -0
  369. /package/dist/{chunk-PXQM2HOG.js.map → chunk-2GXM5N5A.js.map} +0 -0
  370. /package/dist/{chunk-JIF3VRKQ.js.map → chunk-35DL7IOI.js.map} +0 -0
  371. /package/dist/{chunk-2H7OEVPO.js.map → chunk-3GD2HFR6.js.map} +0 -0
  372. /package/dist/{chunk-KKBTBUVT.js.map → chunk-3JNDOAQ2.js.map} +0 -0
  373. /package/dist/{chunk-4TFIRMTE.js.map → chunk-4A6YGWQN.js.map} +0 -0
  374. /package/dist/{chunk-IKMAO55B.js.map → chunk-55MDBZLC.js.map} +0 -0
  375. /package/dist/{chunk-RKXZ7P4V.js.map → chunk-5QDRGWT2.js.map} +0 -0
  376. /package/dist/{chunk-IPLYGWQF.js.map → chunk-5W7CTZ2E.js.map} +0 -0
  377. /package/dist/{chunk-ALTP3MFS.js.map → chunk-5ZCUDWD4.js.map} +0 -0
  378. /package/dist/{chunk-B7GROTXD.js.map → chunk-6LKEUCEM.js.map} +0 -0
  379. /package/dist/{chunk-2AJ72VVS.js.map → chunk-7BZOBA5J.js.map} +0 -0
  380. /package/dist/{chunk-44DUJETW.js.map → chunk-7HXCF4RE.js.map} +0 -0
  381. /package/dist/{chunk-WVVK2RFM.js.map → chunk-7L45JFPW.js.map} +0 -0
  382. /package/dist/{chunk-R372P2EH.js.map → chunk-ACXPX4AG.js.map} +0 -0
  383. /package/dist/{chunk-7CPOZH6Y.js.map → chunk-ALSGMEJR.js.map} +0 -0
  384. /package/dist/{chunk-JGUXPJUQ.js.map → chunk-AS7YMSL6.js.map} +0 -0
  385. /package/dist/{chunk-DKQM5Q6Q.js.map → chunk-CW4AGY3G.js.map} +0 -0
  386. /package/dist/{chunk-ZN4UZWMT.js.map → chunk-D2ANTDGO.js.map} +0 -0
  387. /package/dist/{chunk-3UOSVTFR.js.map → chunk-D3LMYTBV.js.map} +0 -0
  388. /package/dist/{chunk-LIHC3T43.js.map → chunk-E5OBR6CJ.js.map} +0 -0
  389. /package/dist/{chunk-XY7QPJDA.js.map → chunk-E6EE5B67.js.map} +0 -0
  390. /package/dist/{chunk-TBMRQZDY.js.map → chunk-EP5BVCRI.js.map} +0 -0
  391. /package/dist/{chunk-MJPV4LBH.js.map → chunk-FUYEVEX7.js.map} +0 -0
  392. /package/dist/{chunk-2BEJ4XCF.js.map → chunk-FZRQZW4H.js.map} +0 -0
  393. /package/dist/{chunk-X6ROIHFE.js.map → chunk-G5R3D5UP.js.map} +0 -0
  394. /package/dist/{chunk-2FYNLDKJ.js.map → chunk-GAWOEQEQ.js.map} +0 -0
  395. /package/dist/{chunk-QH6CS6XJ.js.map → chunk-H24WNPA2.js.map} +0 -0
  396. /package/dist/{chunk-VFNI3RPT.js.map → chunk-HKJCMOT6.js.map} +0 -0
  397. /package/dist/{chunk-EZWWCN7I.js.map → chunk-IAEAFLF2.js.map} +0 -0
  398. /package/dist/{chunk-NBNDVNJ2.js.map → chunk-IGPEJVBY.js.map} +0 -0
  399. /package/dist/{chunk-MQVINOJQ.js.map → chunk-IYZ5K7MU.js.map} +0 -0
  400. /package/dist/{chunk-2TQ2UFKH.js.map → chunk-JP3YPDAW.js.map} +0 -0
  401. /package/dist/{chunk-P2CLYN6H.js.map → chunk-K5GB36ME.js.map} +0 -0
  402. /package/dist/{chunk-227UFSEQ.js.map → chunk-LEPOP46W.js.map} +0 -0
  403. /package/dist/{chunk-FBZTWUK5.js.map → chunk-OFHFH655.js.map} +0 -0
  404. /package/dist/{chunk-GJPCP5CA.js.map → chunk-OP6F6L3S.js.map} +0 -0
  405. /package/dist/{chunk-FGBJBYWP.js.map → chunk-OVRQLAYR.js.map} +0 -0
  406. /package/dist/{chunk-2NLLXCJG.js.map → chunk-OWHERGF2.js.map} +0 -0
  407. /package/dist/{chunk-3BSJBIZ3.js.map → chunk-OYJKSZIQ.js.map} +0 -0
  408. /package/dist/{chunk-UR5SIN7H.js.map → chunk-PBUZNGMX.js.map} +0 -0
  409. /package/dist/{chunk-P2OZKKYP.js.map → chunk-PHWUFPCO.js.map} +0 -0
  410. /package/dist/{chunk-Q6YJW6KE.js.map → chunk-PKRIQL3V.js.map} +0 -0
  411. /package/dist/{chunk-BR4UFMLO.js.map → chunk-PTSNLEXK.js.map} +0 -0
  412. /package/dist/{chunk-AHFZXUZM.js.map → chunk-QDKK63Y7.js.map} +0 -0
  413. /package/dist/{chunk-JBPKEARU.js.map → chunk-RKNJBZ55.js.map} +0 -0
  414. /package/dist/{chunk-FCCMFVS6.js.map → chunk-RPSYDM6C.js.map} +0 -0
  415. /package/dist/{chunk-MWTMTW2T.js.map → chunk-SH6YO3LT.js.map} +0 -0
  416. /package/dist/{chunk-IYT632D5.js.map → chunk-UBKEQOTD.js.map} +0 -0
  417. /package/dist/{chunk-BJJAX3IZ.js.map → chunk-UTRO5UJU.js.map} +0 -0
  418. /package/dist/{chunk-X7Y7WX73.js.map → chunk-UVYI6VIX.js.map} +0 -0
  419. /package/dist/{chunk-S24E4MBQ.js.map → chunk-VSURVXKY.js.map} +0 -0
  420. /package/dist/{chunk-YOBNCD3Z.js.map → chunk-WRFBW2TT.js.map} +0 -0
  421. /package/dist/{chunk-MXJ3VP6S.js.map → chunk-WU7TTVOD.js.map} +0 -0
  422. /package/dist/{chunk-EG64LXKL.js.map → chunk-XOZ4ALGB.js.map} +0 -0
  423. /package/dist/{chunk-2PHX3I5C.js.map → chunk-Z54EM5YZ.js.map} +0 -0
  424. /package/dist/{contradiction-scan-HMF7CNKD.js.map → contradiction-scan-HYLIRMJ2.js.map} +0 -0
  425. /package/dist/{first-start-migration-BKNGOFED.js.map → first-start-migration-F2QJD66E.js.map} +0 -0
  426. /package/dist/{tier-stats-XKD7SXYY.js.map → tier-stats-OPTSBNRH.js.map} +0 -0
@@ -0,0 +1,742 @@
1
+ import {
2
+ GROUNDING_AUXILIARY_TOKENS,
3
+ GROUNDING_COPULAR_FORMS,
4
+ GROUNDING_ENTITY_TYPE_PREFIXES,
5
+ GROUNDING_MIN_COVERAGE,
6
+ GROUNDING_MIN_SHARED_TOKENS,
7
+ GROUNDING_STOPWORDS,
8
+ areGroundingTokensCompatible,
9
+ containsContiguousGroundingTokens,
10
+ containsExactTokenSequence,
11
+ groundingLexemes,
12
+ groundingTokenSequence,
13
+ hasContradictoryPolarity,
14
+ hasExplicitRoleSubjectToken,
15
+ isInterrogativeSourceSentence,
16
+ normalizeForExactMatch,
17
+ normalizedGroundingAlignmentTokenSequence,
18
+ normalizedGroundingTokenSequence,
19
+ sourceSentences,
20
+ splitGroundingClauses,
21
+ stemToken,
22
+ tokenSequence,
23
+ tokenize
24
+ } from "./chunk-P2BM76KT.js";
25
+ import {
26
+ anchorTemporalExpressions
27
+ } from "./chunk-VEWZZM3H.js";
28
+
29
+ // src/extraction-source-grounding-rules.ts
30
+ function applyExtractionSourceGrounding(result, sourceText, assertionSourceText = sourceText, roleAssertionSources, messageTimestamp, options) {
31
+ if (!options.sourceGrounding) return result;
32
+ const anchorSource = (source) => options.anchorTemporalExpressions ? anchorTemporalExpressions(source, messageTimestamp ?? /* @__PURE__ */ new Date()) : source;
33
+ const anchoredRoleSources = roleAssertionSources === void 0 ? void 0 : {
34
+ profile: roleAssertionSources.profile === void 0 ? void 0 : anchorSource(roleAssertionSources.profile),
35
+ identity: roleAssertionSources.identity === void 0 ? void 0 : anchorSource(roleAssertionSources.identity)
36
+ };
37
+ return filterExtractionResultBySource(
38
+ result,
39
+ anchorSource(sourceText),
40
+ anchorSource(assertionSourceText),
41
+ anchoredRoleSources,
42
+ options.anchorTemporalExpressions ? anchorSource : void 0
43
+ );
44
+ }
45
+ function groundingCopularClaim(text) {
46
+ const lexemes = groundingLexemes(text);
47
+ const copulaIndex = lexemes.findIndex(({ token }) => GROUNDING_COPULAR_FORMS.has(token));
48
+ if (copulaIndex <= 0) return void 0;
49
+ let subjectIndex = copulaIndex - 1;
50
+ while (subjectIndex >= 0 && GROUNDING_AUXILIARY_TOKENS.has(lexemes[subjectIndex].token)) {
51
+ subjectIndex -= 1;
52
+ }
53
+ const subjectLexeme = lexemes[subjectIndex];
54
+ const predicateLexeme = lexemes.slice(copulaIndex + 1).find(({ token }) => GROUNDING_STOPWORDS[token] !== true);
55
+ if (subjectLexeme === void 0 || predicateLexeme === void 0) return void 0;
56
+ return {
57
+ subject: stemToken(subjectLexeme.token, subjectLexeme.preserveTerminalS),
58
+ predicate: stemToken(predicateLexeme.token, predicateLexeme.preserveTerminalS)
59
+ };
60
+ }
61
+ function hasCopularPredicateEvidence(candidate, source) {
62
+ const candidateClaim = groundingCopularClaim(candidate);
63
+ if (candidateClaim === void 0) return true;
64
+ const sourceClaim = groundingCopularClaim(source);
65
+ return sourceClaim !== void 0 && areGroundingTokensCompatible(candidateClaim.subject, sourceClaim.subject) && areGroundingTokensCompatible(candidateClaim.predicate, sourceClaim.predicate);
66
+ }
67
+ var GROUNDING_ALIGNMENT_MODIFIERS = /* @__PURE__ */ new Set([
68
+ "actively",
69
+ "again",
70
+ "already",
71
+ "currently",
72
+ "eventually",
73
+ "finally",
74
+ "generally",
75
+ "mainly",
76
+ "newly",
77
+ "now",
78
+ "often",
79
+ "previously",
80
+ "primarily",
81
+ "quickly",
82
+ "recently",
83
+ "repeatedly",
84
+ "simply",
85
+ "slowly",
86
+ "sometimes",
87
+ "still",
88
+ "successfully",
89
+ "typically",
90
+ "usually"
91
+ ]);
92
+ function isGroundingAlignmentModifier(token) {
93
+ return GROUNDING_ALIGNMENT_MODIFIERS.has(token);
94
+ }
95
+ function hasAlignedSubjectPredicateOverlap(candidate, source) {
96
+ const candidateTokens = normalizedGroundingAlignmentTokenSequence(candidate);
97
+ const sourceTokens = normalizedGroundingAlignmentTokenSequence(source);
98
+ if (candidateTokens.length < 3 || sourceTokens.length < 3) {
99
+ return hasCopularPredicateEvidence(candidate, source);
100
+ }
101
+ const candidateSubject = candidateTokens[0];
102
+ if (candidateSubject === void 0) return false;
103
+ const hasCorrectionReordering = /\b(?:rather\s+than|instead\s+of)\b/iu.test(candidate) && /\b(?:not|rather\s+than|instead\s+of)\b/iu.test(source);
104
+ for (let sourceSubjectIndex = 0; sourceSubjectIndex < sourceTokens.length; sourceSubjectIndex += 1) {
105
+ if (!areGroundingTokensCompatible(candidateSubject, sourceTokens[sourceSubjectIndex])) continue;
106
+ let sourceCursor = sourceSubjectIndex + 1;
107
+ let foundAlignedToken = false;
108
+ let aligned = true;
109
+ for (let candidateIndex = 1; candidateIndex < candidateTokens.length; candidateIndex += 1) {
110
+ const candidateToken = candidateTokens[candidateIndex];
111
+ const sourceIndex = sourceTokens.findIndex(
112
+ (sourceToken, index) => index >= sourceCursor && areGroundingTokensCompatible(candidateToken, sourceToken)
113
+ );
114
+ if (sourceIndex === -1) {
115
+ if (hasCorrectionReordering) continue;
116
+ aligned = false;
117
+ break;
118
+ }
119
+ foundAlignedToken = true;
120
+ const candidateNext = candidateTokens[candidateIndex + 1];
121
+ const sourceNext = sourceTokens[sourceIndex + 1];
122
+ if (candidateNext !== void 0 && sourceNext !== void 0 && !hasCorrectionReordering && !areGroundingTokensCompatible(candidateNext, sourceNext) && !isGroundingAlignmentModifier(sourceNext)) {
123
+ aligned = false;
124
+ break;
125
+ }
126
+ sourceCursor = sourceIndex + 1;
127
+ }
128
+ if (aligned && foundAlignedToken) return true;
129
+ }
130
+ return false;
131
+ }
132
+ function groundedTokenScore(candidate, source, requireAlignedArguments = true, requireAllCandidateTokensGrounded = true) {
133
+ const candidateTokens = tokenize(candidate);
134
+ if (candidateTokens.size === 0) return 0;
135
+ const sourceTokens = tokenize(source);
136
+ const allowCorrectionReordering = /\b(?:rather\s+than|instead\s+of)\b/iu.test(candidate);
137
+ let sharedTokens = 0;
138
+ let allCandidateTokensGrounded = true;
139
+ for (const token of candidateTokens) {
140
+ if ([...sourceTokens].some((sourceToken) => areGroundingTokensCompatible(token, sourceToken))) {
141
+ sharedTokens += 1;
142
+ } else if (!allowCorrectionReordering && token !== "rather" && token !== "instead") {
143
+ allCandidateTokensGrounded = false;
144
+ }
145
+ }
146
+ if (requireAllCandidateTokensGrounded && !allCandidateTokensGrounded || sharedTokens < GROUNDING_MIN_SHARED_TOKENS || sharedTokens / candidateTokens.size < GROUNDING_MIN_COVERAGE) {
147
+ return 0;
148
+ }
149
+ if (requireAlignedArguments && !hasAlignedSubjectPredicateOverlap(candidate, source)) return 0;
150
+ return sharedTokens / candidateTokens.size;
151
+ }
152
+ function candidateClauses(candidate) {
153
+ return splitGroundingClauses(sourceSentences(candidate));
154
+ }
155
+ function isSourceGroundedClause(candidate, source, includeInterrogativeSource = false) {
156
+ let bestSupportedScore = 0;
157
+ let bestContradictedScore = 0;
158
+ const sentences = sourceSentences(source);
159
+ for (let index = 0; index < sentences.length; index += 1) {
160
+ const sentence = sentences[index];
161
+ if (isYesNoAnswer(sentence)) {
162
+ const precedingSentence = sentences[index - 1];
163
+ const answerToken = tokenSequence(sentence)[0];
164
+ const contradictoryPolarity = precedingSentence !== void 0 ? hasContradictoryPolarity(candidate, precedingSentence) : false;
165
+ if (precedingSentence !== void 0 && isInterrogativeSourceSentence(precedingSentence) && groundedTokenScore(candidate, precedingSentence) === 1 && (answerToken === "yes" && !contradictoryPolarity || answerToken === "no" && contradictoryPolarity)) {
166
+ return true;
167
+ }
168
+ continue;
169
+ }
170
+ const sentenceText = normalizeForExactMatch(sentence);
171
+ const isExplanatoryLabel = sentenceText.startsWith(`${normalizeForExactMatch(candidate)}:`) && !sentence.trim().endsWith("?");
172
+ if (!includeInterrogativeSource && isInterrogativeSourceSentence(sentence) && !isExplanatoryLabel) {
173
+ continue;
174
+ }
175
+ const sourceSpans = /\b(?:rather\s+than|instead\s+of)\b/iu.test(candidate) ? [sentence] : splitGroundingClauses([sentence]);
176
+ for (const sourceSpan of sourceSpans) {
177
+ const sourceSpanText = normalizeForExactMatch(sourceSpan);
178
+ if (containsExactTokenSequence(candidate, sourceSpanText)) {
179
+ if (!hasContradictoryPolarity(candidate, sourceSpan)) return true;
180
+ bestContradictedScore = Math.max(bestContradictedScore, 1);
181
+ continue;
182
+ }
183
+ const score = groundedTokenScore(
184
+ candidate,
185
+ sourceSpan,
186
+ !includeInterrogativeSource,
187
+ !includeInterrogativeSource
188
+ );
189
+ if (score === 0) continue;
190
+ if (hasContradictoryPolarity(candidate, sourceSpan)) {
191
+ bestContradictedScore = Math.max(bestContradictedScore, score);
192
+ } else {
193
+ bestSupportedScore = Math.max(bestSupportedScore, score);
194
+ }
195
+ }
196
+ }
197
+ return bestSupportedScore > bestContradictedScore;
198
+ }
199
+ function isSourceGrounded(candidate, source, includeInterrogativeSource = false) {
200
+ const candidateText = normalizeForExactMatch(candidate);
201
+ const sourceText = source.normalize("NFKC").trim();
202
+ if (candidateText.length === 0 || sourceText.length === 0) return false;
203
+ const hasSupportedExactMatch = sourceSentences(sourceText).some((sentence) => {
204
+ const sentenceText = normalizeForExactMatch(sentence);
205
+ const isExplanatoryLabel = sentenceText.startsWith(`${candidateText}:`) && !sentence.trim().endsWith("?");
206
+ if (!includeInterrogativeSource && isInterrogativeSourceSentence(sentence) && !isExplanatoryLabel) return false;
207
+ return containsExactTokenSequence(candidateText, sentenceText) && !hasContradictoryPolarity(candidateText, sentenceText);
208
+ });
209
+ if (hasSupportedExactMatch) return true;
210
+ const clauses = candidateClauses(candidateText);
211
+ if (clauses.length > 1) {
212
+ return clauses.every((clause) => isSourceGroundedClause(clause, sourceText, includeInterrogativeSource));
213
+ }
214
+ return isSourceGroundedClause(candidateText, sourceText, includeInterrogativeSource);
215
+ }
216
+ function normalizedEntityIdentifierTokens(name) {
217
+ const identifier = normalizeForExactMatch(name).replace(/[-_]+/gu, " ");
218
+ const tokens = groundingLexemes(identifier).filter(({ token }) => GROUNDING_STOPWORDS[token] !== true).map(({ token }) => stemToken(token, true));
219
+ return tokens.length > 1 && GROUNDING_ENTITY_TYPE_PREFIXES.has(tokens[0] ?? "") ? tokens.slice(1) : tokens;
220
+ }
221
+ function isGroundedEntityName(name, source) {
222
+ const nameTokens = normalizedEntityIdentifierTokens(name);
223
+ return nameTokens.length > 0 && sourceSentences(source).some((sentence) => {
224
+ const sentenceTokens = groundingLexemes(sentence).filter(({ token }) => GROUNDING_STOPWORDS[token] !== true).map(({ token, preserveTerminalS }) => stemToken(token, preserveTerminalS));
225
+ return containsContiguousGroundingTokens(nameTokens, sentenceTokens);
226
+ });
227
+ }
228
+ function buildEntitySupportSource(name, source) {
229
+ const nameTokens = normalizedEntityIdentifierTokens(name);
230
+ if (nameTokens.length === 0) return "";
231
+ return sourceSentences(source).filter((sentence) => {
232
+ const sentenceTokens = groundingLexemes(sentence).filter(({ token }) => GROUNDING_STOPWORDS[token] !== true).map(({ token, preserveTerminalS }) => stemToken(token, preserveTerminalS));
233
+ return containsContiguousGroundingTokens(nameTokens, sentenceTokens);
234
+ }).join(" ");
235
+ }
236
+ function hasGroundedPredicateAnchor(candidate, sentence) {
237
+ const candidateTokens = normalizedGroundingTokenSequence(candidate);
238
+ const sourceTokens = normalizedGroundingTokenSequence(sentence);
239
+ const comparableCandidateTokens = GROUNDING_ROLE_SUBJECT_TOKENS.has(candidateTokens[0] ?? "") ? candidateTokens.slice(1) : candidateTokens;
240
+ if (comparableCandidateTokens.length < 2) return false;
241
+ const subjectToken = comparableCandidateTokens[0];
242
+ if (subjectToken === void 0 || !sourceTokens.includes(subjectToken)) {
243
+ return false;
244
+ }
245
+ const candidatePredicateTokens = comparableCandidateTokens.slice(1);
246
+ const sourceTokenSet = new Set(sourceTokens);
247
+ const sharedPredicateTokens = candidatePredicateTokens.filter((token) => sourceTokenSet.has(token));
248
+ const requiredSharedTokens = Math.min(2, candidatePredicateTokens.length);
249
+ return sharedPredicateTokens.length >= requiredSharedTokens;
250
+ }
251
+ function hasGroundingAnchor(candidate, assertionSource, includeInterrogativeSource = false, requirePredicateSupport = false) {
252
+ return sourceSentences(assertionSource).some((sentence) => {
253
+ if (!includeInterrogativeSource && isInterrogativeSourceSentence(sentence)) return false;
254
+ const sourceSpans = /\b(?:rather\s+than|instead\s+of)\b/iu.test(candidate) ? [sentence] : splitGroundingClauses([sentence]);
255
+ return sourceSpans.some((sourceSpan) => {
256
+ const exactMatch = containsExactTokenSequence(candidate, sourceSpan) && !hasContradictoryPolarity(candidate, sourceSpan);
257
+ if (exactMatch) return true;
258
+ if (requirePredicateSupport && !hasGroundedPredicateAnchor(candidate, sourceSpan)) return false;
259
+ return groundedTokenScore(candidate, sourceSpan) > 0 || hasRoleNormalizedGrounding(candidate, sourceSpan);
260
+ });
261
+ });
262
+ }
263
+ function hasAnswerSupport(candidate, source, assertionSource) {
264
+ const assertedAnswerSentences = new Set(
265
+ sourceSentences(assertionSource).filter((sentence) => {
266
+ const answerToken = tokenSequence(sentence)[0];
267
+ return answerToken === "yes" || answerToken === "no";
268
+ }).map((sentence) => normalizeForExactMatch(sentence))
269
+ );
270
+ if (assertedAnswerSentences.size === 0) return false;
271
+ const sentences = sourceSentences(source);
272
+ return sentences.some((sentence, index) => {
273
+ const answerToken = tokenSequence(sentence)[0];
274
+ if (answerToken !== "yes" && answerToken !== "no") return false;
275
+ if (!assertedAnswerSentences.has(normalizeForExactMatch(sentence))) return false;
276
+ const precedingSentence = sentences[index - 1];
277
+ if (precedingSentence === void 0 || !isInterrogativeSourceSentence(precedingSentence) || groundedTokenScore(candidate, precedingSentence) !== 1) {
278
+ return false;
279
+ }
280
+ const contradictoryPolarity = hasContradictoryPolarity(candidate, precedingSentence);
281
+ return answerToken === "yes" ? !contradictoryPolarity : contradictoryPolarity;
282
+ });
283
+ }
284
+ var GROUNDING_ROLE_SUBJECT_TOKENS = /* @__PURE__ */ new Set(["assistant", "user"]);
285
+ function hasRoleNormalizedGrounding(candidate, source) {
286
+ const candidateTokens = groundingTokenSequence(candidate);
287
+ if (!GROUNDING_ROLE_SUBJECT_TOKENS.has(candidateTokens[0] ?? "")) return false;
288
+ const claimTokens = candidateTokens.slice(1);
289
+ if (claimTokens.length === 0) return false;
290
+ return sourceSentences(source).some((sentence) => {
291
+ if (isInterrogativeSourceSentence(sentence)) return false;
292
+ const sourceTokens = groundingTokenSequence(sentence);
293
+ const requiredSharedTokens = Math.min(GROUNDING_MIN_SHARED_TOKENS, claimTokens.length);
294
+ let sourceIndex = 0;
295
+ let sharedTokens = 0;
296
+ for (const claimToken of claimTokens) {
297
+ const matchingIndex = sourceTokens.indexOf(claimToken, sourceIndex);
298
+ if (matchingIndex === -1) continue;
299
+ sharedTokens += 1;
300
+ sourceIndex = matchingIndex + 1;
301
+ }
302
+ return sharedTokens >= requiredSharedTokens && !hasContradictoryPolarity(candidate, sentence);
303
+ });
304
+ }
305
+ function resolveGroundingContext(candidate, source, assertionSource, roleAssertionSources) {
306
+ const candidateRole = groundingTokenSequence(candidate)[0];
307
+ if (!GROUNDING_ROLE_SUBJECT_TOKENS.has(candidateRole ?? "")) {
308
+ return { source, assertionSource, allowRoleNormalization: false };
309
+ }
310
+ if (roleAssertionSources === void 0) {
311
+ return { source, assertionSource, allowRoleNormalization: true };
312
+ }
313
+ const roleSource = candidateRole === "user" ? roleAssertionSources.profile : roleAssertionSources.identity;
314
+ return {
315
+ source: roleSource ?? "",
316
+ assertionSource: roleSource ?? "",
317
+ allowRoleNormalization: true,
318
+ fallbackSource: source,
319
+ fallbackAssertionSource: assertionSource
320
+ };
321
+ }
322
+ function selectGroundingContext(candidate, context) {
323
+ if (isGroundedCandidate(
324
+ candidate,
325
+ context.source,
326
+ context.assertionSource,
327
+ false,
328
+ context.allowRoleNormalization
329
+ )) {
330
+ return context;
331
+ }
332
+ if (context.fallbackSource === void 0 || !hasExplicitRoleSubjectToken(
333
+ groundingTokenSequence(candidate)[0],
334
+ sourceSentences(context.fallbackSource).map((sentence) => groundingTokenSequence(sentence))
335
+ )) return context;
336
+ const fallbackContext = {
337
+ source: context.fallbackSource,
338
+ assertionSource: context.fallbackAssertionSource,
339
+ allowRoleNormalization: false
340
+ };
341
+ return isGroundedCandidate(
342
+ candidate,
343
+ fallbackContext.source,
344
+ fallbackContext.assertionSource,
345
+ false,
346
+ fallbackContext.allowRoleNormalization
347
+ ) ? fallbackContext : context;
348
+ }
349
+ function isGroundedCandidate(candidate, source, assertionSource, includeInterrogativeSource = false, allowRoleNormalization = false) {
350
+ const allowInterrogativeSource = includeInterrogativeSource || assertionSource !== void 0 && normalizeForExactMatch(assertionSource) !== normalizeForExactMatch(source);
351
+ const sourceGrounded = isSourceGrounded(candidate, source, allowInterrogativeSource);
352
+ const roleGrounded = allowRoleNormalization && hasRoleNormalizedGrounding(candidate, source);
353
+ const candidateTokens = groundingTokenSequence(candidate);
354
+ const roleNormalizedCandidate = allowRoleNormalization && GROUNDING_ROLE_SUBJECT_TOKENS.has(candidateTokens[0] ?? "");
355
+ if (roleNormalizedCandidate && !roleGrounded) return false;
356
+ if (!sourceGrounded && !roleGrounded) return false;
357
+ if (assertionSource === void 0) return true;
358
+ const clauses = candidateClauses(candidate);
359
+ const requirePredicateSupport = !includeInterrogativeSource && assertionSource !== void 0 && normalizeForExactMatch(assertionSource) !== normalizeForExactMatch(source);
360
+ return clauses.length > 0 && (clauses.every((clause) => hasGroundingAnchor(clause, assertionSource, includeInterrogativeSource, requirePredicateSupport)) || hasAnswerSupport(candidate, source, assertionSource));
361
+ }
362
+ function buildFactSupportSource(source, supportingSentences) {
363
+ const sentences = sourceSentences(source);
364
+ const selectedIndices = /* @__PURE__ */ new Set();
365
+ for (const supportingSentence of supportingSentences) {
366
+ const supportIndex = sentences.indexOf(supportingSentence);
367
+ if (supportIndex < 0) continue;
368
+ let endIndex = supportIndex;
369
+ while (endIndex < sentences.length - 1 && sentences[endIndex].trimEnd().endsWith(";") && /^(?:its|their|this|that|these|those)\b/iu.test(
370
+ sentences[endIndex + 1].trimStart()
371
+ )) {
372
+ endIndex += 1;
373
+ }
374
+ for (let index = supportIndex; index <= endIndex; index += 1) {
375
+ selectedIndices.add(index);
376
+ }
377
+ }
378
+ return [...selectedIndices].sort((left, right) => left - right).map((index) => sentences[index]).join(" ");
379
+ }
380
+ function buildProcedureSupportSource(fact, source, factSupportSource) {
381
+ if (fact.category !== "procedure" || fact.procedureSteps === void 0) return factSupportSource;
382
+ const parentSupportSentences = new Set(
383
+ sourceSentences(factSupportSource).map((sentence) => normalizeForExactMatch(sentence))
384
+ );
385
+ const parentGroundedSteps = fact.procedureSteps.filter(
386
+ (step) => isGroundedCandidate(step.intent, factSupportSource, void 0, false)
387
+ );
388
+ if (parentGroundedSteps.length === 0) return factSupportSource;
389
+ return sourceSentences(source).filter((sentence) => {
390
+ if (parentSupportSentences.has(normalizeForExactMatch(sentence))) return true;
391
+ const sentenceTokens = tokenize(sentence);
392
+ return parentGroundedSteps.some(
393
+ (step) => [...tokenize(step.intent)].some(
394
+ (token) => [...sentenceTokens].some((sourceToken) => areGroundingTokensCompatible(token, sourceToken))
395
+ )
396
+ );
397
+ }).join(" ");
398
+ }
399
+ function filterGroundedFact(fact, source, assertionSource, roleAssertionSources, eventTimeNormalizer) {
400
+ const factContext = selectGroundingContext(
401
+ fact.content,
402
+ resolveGroundingContext(fact.content, source, assertionSource, roleAssertionSources)
403
+ );
404
+ if (!isGroundedCandidate(
405
+ fact.content,
406
+ factContext.source,
407
+ factContext.assertionSource,
408
+ false,
409
+ factContext.allowRoleNormalization
410
+ )) return void 0;
411
+ const factEventTime = fact.eventTime;
412
+ const groundedFactEventTime = factEventTime === void 0 ? void 0 : eventTimeNormalizer?.(factEventTime) ?? factEventTime;
413
+ const factSupportingSentences = sourceSentences(factContext.assertionSource ?? factContext.source).filter(
414
+ (sentence) => isGroundedCandidate(
415
+ fact.content,
416
+ sentence,
417
+ void 0,
418
+ false,
419
+ factContext.allowRoleNormalization
420
+ )
421
+ );
422
+ const factSupportingSource = factEventTime === void 0 ? factSupportingSentences[0] : factSupportingSentences.find(
423
+ (sentence) => isGroundedCandidate(
424
+ groundedFactEventTime ?? factEventTime,
425
+ sentence,
426
+ void 0,
427
+ false,
428
+ factContext.allowRoleNormalization
429
+ )
430
+ ) ?? factSupportingSentences[0];
431
+ const eventTimeSource = factSupportingSource ?? factContext.source;
432
+ const eventTimeAssertionSource = factSupportingSource === void 0 ? factContext.assertionSource : void 0;
433
+ const factSupportSource = buildFactSupportSource(
434
+ factContext.assertionSource ?? factContext.source,
435
+ factSupportingSentences
436
+ );
437
+ const groundedAttributes = fact.structuredAttributes ? Object.fromEntries(
438
+ Object.entries(fact.structuredAttributes).filter(
439
+ ([key, value]) => isGroundedCandidate(
440
+ `${key}: ${value}`,
441
+ factSupportSource,
442
+ void 0,
443
+ false,
444
+ factContext.allowRoleNormalization
445
+ )
446
+ )
447
+ ) : void 0;
448
+ const procedureGroundingSource = buildProcedureSupportSource(
449
+ fact,
450
+ factContext.assertionSource ?? factContext.source,
451
+ factSupportSource
452
+ );
453
+ const groundedProcedureSteps = fact.procedureSteps ? fact.procedureSteps.flatMap((step) => {
454
+ if (!isGroundedCandidate(step.intent, procedureGroundingSource, void 0, false)) return [];
455
+ const expectedOutcome = step.expectedOutcome && isGroundedCandidate(step.expectedOutcome, procedureGroundingSource, void 0, false) ? step.expectedOutcome : void 0;
456
+ const toolCall = step.toolCall && isGroundedCandidate(step.toolCall.signature, procedureGroundingSource, void 0, false) ? step.toolCall : void 0;
457
+ const {
458
+ expectedOutcome: _expectedOutcome,
459
+ toolCall: _toolCall,
460
+ ...stepWithoutOptionalFields
461
+ } = step;
462
+ return [{
463
+ ...stepWithoutOptionalFields,
464
+ ...expectedOutcome !== void 0 ? { expectedOutcome } : {},
465
+ ...toolCall !== void 0 ? { toolCall } : {}
466
+ }];
467
+ }) : void 0;
468
+ const groundedReasoningTrace = fact.reasoningTrace && fact.reasoningTrace.steps.length > 0 && isGroundedCandidate(
469
+ fact.reasoningTrace.finalAnswer,
470
+ factContext.source,
471
+ factContext.assertionSource,
472
+ false,
473
+ factContext.allowRoleNormalization
474
+ ) && fact.reasoningTrace.steps.every(
475
+ (step) => isGroundedCandidate(
476
+ step.description,
477
+ factContext.source,
478
+ factContext.assertionSource,
479
+ false,
480
+ factContext.allowRoleNormalization
481
+ )
482
+ ) ? {
483
+ steps: fact.reasoningTrace.steps,
484
+ finalAnswer: fact.reasoningTrace.finalAnswer,
485
+ ...fact.reasoningTrace.observedOutcome && isGroundedCandidate(
486
+ fact.reasoningTrace.observedOutcome,
487
+ factContext.source,
488
+ factContext.assertionSource,
489
+ false,
490
+ factContext.allowRoleNormalization
491
+ ) ? { observedOutcome: fact.reasoningTrace.observedOutcome } : {}
492
+ } : void 0;
493
+ const groundedEventTime = groundedFactEventTime && isGroundedCandidate(groundedFactEventTime, eventTimeSource, eventTimeAssertionSource) ? factEventTime : void 0;
494
+ const groundedEntityRef = fact.entityRef !== void 0 && isGroundedEntityName(fact.entityRef, factSupportSource) ? fact.entityRef : void 0;
495
+ const {
496
+ entityRef: _entityRef,
497
+ structuredAttributes: _structuredAttributes,
498
+ procedureSteps: _procedureSteps,
499
+ reasoningTrace: _reasoningTrace,
500
+ eventTime: _eventTime,
501
+ ...factWithoutGroundingFields
502
+ } = fact;
503
+ return {
504
+ ...factWithoutGroundingFields,
505
+ ...groundedEntityRef !== void 0 ? { entityRef: groundedEntityRef } : {},
506
+ ...groundedAttributes && Object.keys(groundedAttributes).length > 0 ? { structuredAttributes: groundedAttributes } : {},
507
+ ...groundedProcedureSteps && groundedProcedureSteps.length > 0 ? { procedureSteps: groundedProcedureSteps } : {},
508
+ ...groundedReasoningTrace !== void 0 ? { reasoningTrace: groundedReasoningTrace } : {},
509
+ ...groundedEventTime !== void 0 ? { eventTime: groundedEventTime } : {}
510
+ };
511
+ }
512
+ function filterGroundedEntity(entity, source, assertionSource) {
513
+ if (!isGroundedEntityName(entity.name, source)) return void 0;
514
+ const entitySource = buildEntitySupportSource(entity.name, source);
515
+ const entityAssertionSource = assertionSource === void 0 ? void 0 : buildEntitySupportSource(entity.name, assertionSource);
516
+ const facts = entity.facts.filter(
517
+ (fact) => isGroundedCandidate(fact, entitySource, entityAssertionSource)
518
+ );
519
+ const structuredSections = entity.structuredSections?.flatMap((section) => {
520
+ const groundedFacts = section.facts.filter(
521
+ (fact) => isGroundedCandidate(fact, entitySource, entityAssertionSource)
522
+ );
523
+ return groundedFacts.length > 0 ? [{ ...section, facts: groundedFacts }] : [];
524
+ });
525
+ if (facts.length === 0 && (structuredSections === void 0 || structuredSections.length === 0)) {
526
+ return void 0;
527
+ }
528
+ const { structuredSections: _structuredSections, ...entityWithoutSections } = entity;
529
+ return {
530
+ ...entityWithoutSections,
531
+ facts,
532
+ ...structuredSections && structuredSections.length > 0 ? { structuredSections } : {}
533
+ };
534
+ }
535
+ function normalizedEntitySourceText(name) {
536
+ return normalizedEntityIdentifierTokens(name).join(" ");
537
+ }
538
+ function isGroundedRelationship(relationship, source, assertionSource) {
539
+ const sourceName = normalizedEntitySourceText(relationship.source);
540
+ const targetName = normalizedEntitySourceText(relationship.target);
541
+ const labelTokens = tokenize(relationship.label);
542
+ if (sourceName.length === 0 || targetName.length === 0 || labelTokens.size === 0) return false;
543
+ const relationText = `${sourceName} ${relationship.label} ${targetName}`;
544
+ const hasCoherentSourceSpan = sourceSentences(source).some((sentence) => {
545
+ if (isInterrogativeSourceSentence(sentence)) return false;
546
+ return groundedTokenScore(relationText, sentence) === 1 && !hasContradictoryPolarity(relationText, sentence);
547
+ });
548
+ return hasCoherentSourceSpan && isGroundedCandidate(relationText, source, assertionSource);
549
+ }
550
+ var GROUNDING_TEMPORAL_WORDS = /* @__PURE__ */ new Set([
551
+ "today",
552
+ "yesterday",
553
+ "tomorrow",
554
+ "now",
555
+ "recently",
556
+ "earlier",
557
+ "later",
558
+ "soon",
559
+ "morning",
560
+ "afternoon",
561
+ "evening",
562
+ "tonight",
563
+ "night",
564
+ "noon",
565
+ "midnight",
566
+ "monday",
567
+ "tuesday",
568
+ "wednesday",
569
+ "thursday",
570
+ "friday",
571
+ "saturday",
572
+ "sunday",
573
+ "january",
574
+ "february",
575
+ "march",
576
+ "april",
577
+ "may",
578
+ "june",
579
+ "july",
580
+ "august",
581
+ "september",
582
+ "october",
583
+ "november",
584
+ "december",
585
+ "q1",
586
+ "q2",
587
+ "q3",
588
+ "q4"
589
+ ]);
590
+ var GROUNDING_TEMPORAL_CLOCK_PATTERN = /\b\d{1,2}:\d{2}(?:\s*[ap]\.?m\.?)?\b/iu;
591
+ var GROUNDING_TEMPORAL_DURATION_PATTERN = new RegExp(
592
+ "\\b(?:\\d+|one|two|three|four|five|six|seven|eight|nine|ten)\\s+(?:seconds?|minutes?|hours?|days?|weeks?|months?|quarters?|years?)\\b",
593
+ "iu"
594
+ );
595
+ function isWhenQuestion(question) {
596
+ return /^(?:when|what\s+(?:time|date)|which\s+day)\b/iu.test(question.trim());
597
+ }
598
+ function isWhyQuestion(question) {
599
+ return /^why\b/iu.test(question.trim());
600
+ }
601
+ function hasCausalAnswerEvidence(question, sentence) {
602
+ if (!isWhyQuestion(question)) return true;
603
+ return /\b(?:because|since|due\s+to|owing\s+to|thanks\s+to|therefore|thus|hence|so)\b/iu.test(
604
+ sentence
605
+ );
606
+ }
607
+ function hasTemporalAnswerEvidence(question, sentence) {
608
+ if (!isWhenQuestion(question)) return true;
609
+ return groundingLexemes(sentence).some(
610
+ ({ token }) => GROUNDING_TEMPORAL_WORDS.has(token) || /^(?:19|20)\d{2}$/u.test(token)
611
+ ) || GROUNDING_TEMPORAL_CLOCK_PATTERN.test(sentence) || GROUNDING_TEMPORAL_DURATION_PATTERN.test(sentence);
612
+ }
613
+ function isUnknownAnswerSentence(sentence) {
614
+ 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.test(sentence);
615
+ }
616
+ function isYesNoAnswer(sentence) {
617
+ return /^(?:yes|no)(?:[.!?]|,\s*(?:absolutely|definitely|indeed|exactly|correct|of\s+course|use\s+that|do\s+that)[.!?]?)?$/iu.test(sentence.trim());
618
+ }
619
+ function hasWhAnswerRoleAlignment(question, sentence) {
620
+ const normalizedQuestion = question.trim();
621
+ const objectQuestionMatch = /^(?:what|which)\s+.+?\s+(?:is|are|was|were|do|does|did|can|could|will|would|should|has|have|had)\s+(.+?)\s+([^\s?]+)\??$/iu.exec(normalizedQuestion);
622
+ const sourceTokens = normalizedGroundingTokenSequence(sentence);
623
+ if (objectQuestionMatch !== null) {
624
+ const subjectTokens = groundingTokenSequence(objectQuestionMatch[1] ?? "");
625
+ const predicateTokens2 = groundingTokenSequence(objectQuestionMatch[2] ?? "");
626
+ if (subjectTokens.length === 0 || predicateTokens2.length === 0) return true;
627
+ let sourceIndex2 = 0;
628
+ for (const token of [...subjectTokens, ...predicateTokens2]) {
629
+ const matchedIndex = sourceTokens.indexOf(token, sourceIndex2);
630
+ if (matchedIndex === -1) return false;
631
+ sourceIndex2 = matchedIndex + 1;
632
+ }
633
+ return true;
634
+ }
635
+ const subjectQuestionMatch = /^(?:who|what)\s+([^\s?]+)\s+(.+?)\??$/iu.exec(normalizedQuestion);
636
+ if (subjectQuestionMatch === null) return true;
637
+ const predicateTokens = groundingTokenSequence(subjectQuestionMatch[1] ?? "");
638
+ const objectTokens = groundingTokenSequence(subjectQuestionMatch[2] ?? "");
639
+ if (predicateTokens.length === 0 || objectTokens.length === 0) return true;
640
+ const predicateStart = sourceTokens.indexOf(predicateTokens[0]);
641
+ if (predicateStart === -1) return false;
642
+ let sourceIndex = predicateStart + predicateTokens.length;
643
+ for (const objectToken of objectTokens) {
644
+ const objectIndex = sourceTokens.indexOf(objectToken, sourceIndex);
645
+ if (objectIndex === -1) return false;
646
+ sourceIndex = objectIndex + 1;
647
+ }
648
+ return true;
649
+ }
650
+ function isQuestionAnsweredBySource(question, source, assertionSource) {
651
+ const questionTokens = tokenize(question);
652
+ if (questionTokens.size === 0) return false;
653
+ const isYesNoQuestion = /^(?:is|are|am|was|were|do|does|did|can|could|will|would|should|has|have|had)\b/iu.test(question.trim());
654
+ const assertedSentences = new Set(sourceSentences(assertionSource ?? source).map((sentence) => normalizeForExactMatch(sentence)));
655
+ const sentences = sourceSentences(source);
656
+ return sentences.some((sentence, index) => {
657
+ if (!assertedSentences.has(normalizeForExactMatch(sentence))) return false;
658
+ if (isInterrogativeSourceSentence(sentence)) return false;
659
+ if (isYesNoAnswer(sentence)) {
660
+ const precedingSentence = sentences[index - 1];
661
+ return precedingSentence !== void 0 && isInterrogativeSourceSentence(precedingSentence) && groundedTokenScore(question, precedingSentence) === 1;
662
+ }
663
+ if (isUnknownAnswerSentence(sentence)) return false;
664
+ const score = groundedTokenScore(question, sentence, false);
665
+ if (score !== 1) return false;
666
+ const sentenceTokens = tokenize(sentence);
667
+ const hasAnswerToken = [...sentenceTokens].some((token) => !questionTokens.has(token));
668
+ return (isYesNoQuestion || hasAnswerToken) && hasTemporalAnswerEvidence(question, sentence) && hasCausalAnswerEvidence(question, sentence) && hasWhAnswerRoleAlignment(question, sentence);
669
+ });
670
+ }
671
+ function groundQuestion(question, source, assertionSource) {
672
+ if (isQuestionAnsweredBySource(question.question, source, assertionSource)) return void 0;
673
+ if (!isGroundedCandidate(question.question, source, assertionSource, true)) return void 0;
674
+ const normalizedContext = question.context.trim();
675
+ if (normalizedContext.length > 0 && !isGroundedCandidate(normalizedContext, assertionSource ?? source, void 0, false)) {
676
+ return { ...question, context: "" };
677
+ }
678
+ return question;
679
+ }
680
+ function filterExtractionResultBySource(result, source, assertionSource, roleAssertionSources, eventTimeNormalizer) {
681
+ if (source.trim().length === 0) {
682
+ return {
683
+ ...result,
684
+ facts: [],
685
+ profileUpdates: [],
686
+ entities: [],
687
+ questions: [],
688
+ ...result.relationships !== void 0 ? { relationships: [] } : {},
689
+ identityReflection: void 0
690
+ };
691
+ }
692
+ const facts = result.facts.flatMap((fact) => {
693
+ const grounded = filterGroundedFact(
694
+ fact,
695
+ source,
696
+ assertionSource,
697
+ roleAssertionSources,
698
+ eventTimeNormalizer
699
+ );
700
+ return grounded === void 0 ? [] : [grounded];
701
+ });
702
+ const profileGroundingSource = roleAssertionSources?.profile ?? source;
703
+ const profileAssertionSource = roleAssertionSources?.profile ?? assertionSource;
704
+ const profileUpdates = result.profileUpdates.filter(
705
+ (update) => isGroundedCandidate(update, profileGroundingSource, profileAssertionSource, false, true)
706
+ );
707
+ const entities = result.entities.flatMap((entity) => {
708
+ const grounded = filterGroundedEntity(entity, source, assertionSource);
709
+ return grounded === void 0 ? [] : [grounded];
710
+ });
711
+ const questions = result.questions.flatMap((question) => {
712
+ const grounded = groundQuestion(question, source, assertionSource);
713
+ return grounded === void 0 ? [] : [grounded];
714
+ });
715
+ const relationships = result.relationships?.filter(
716
+ (relationship) => isGroundedRelationship(relationship, source, assertionSource)
717
+ );
718
+ const identityGroundingSource = roleAssertionSources?.identity ?? source;
719
+ const identityAssertionSource = roleAssertionSources?.identity ?? assertionSource;
720
+ const identityReflection = result.identityReflection && isGroundedCandidate(
721
+ result.identityReflection,
722
+ identityGroundingSource,
723
+ identityAssertionSource,
724
+ false,
725
+ true
726
+ ) ? result.identityReflection : void 0;
727
+ return {
728
+ ...result,
729
+ facts,
730
+ profileUpdates,
731
+ entities,
732
+ questions,
733
+ ...result.relationships !== void 0 ? { relationships } : {},
734
+ ...identityReflection !== void 0 ? { identityReflection } : { identityReflection: void 0 }
735
+ };
736
+ }
737
+
738
+ export {
739
+ applyExtractionSourceGrounding,
740
+ filterExtractionResultBySource
741
+ };
742
+ //# sourceMappingURL=chunk-WOCNN776.js.map