@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.
- package/dist/access-admin-ops-surface.d.ts +14 -12
- package/dist/access-admin-ops-surface.js +77 -74
- package/dist/access-authorization-probe.d.ts +14 -12
- package/dist/access-authorization-probe.js +78 -75
- package/dist/access-boundary.d.ts +14 -12
- package/dist/access-boundary.js +77 -74
- package/dist/access-cli.js +180 -170
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +2 -1
- package/dist/access-extraction-force-flush.d.ts +14 -12
- package/dist/access-extraction-force-flush.js +77 -74
- package/dist/access-health-types.d.ts +2 -1
- package/dist/access-http-briefing.d.ts +14 -12
- package/dist/access-http-briefing.js +78 -75
- package/dist/access-http-lcm-compaction.d.ts +14 -12
- package/dist/access-http-lifecycle-flush.d.ts +14 -12
- package/dist/access-http-offline-stream.d.ts +14 -12
- package/dist/access-http-query.d.ts +3 -2
- package/dist/access-http-query.js +79 -76
- package/dist/access-http.d.ts +15 -13
- package/dist/access-http.js +97 -94
- package/dist/access-identity-continuity-surface.d.ts +12 -10
- package/dist/access-identity-continuity-surface.js +77 -74
- package/dist/access-lcm-surface.d.ts +14 -12
- package/dist/access-lcm-surface.js +77 -74
- package/dist/access-mcp.d.ts +14 -12
- package/dist/access-mcp.js +86 -83
- package/dist/access-memory-search-fanout.d.ts +3 -2
- package/dist/{access-namespace-preflight-D8qri11P.d.ts → access-namespace-preflight-DY4z6L5X.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +4 -3
- package/dist/access-namespace-preflight.js +77 -74
- package/dist/access-observe-transcript.d.ts +12 -10
- package/dist/access-observe-write-category.d.ts +37 -0
- package/dist/access-observe-write-category.js +34 -0
- package/dist/access-observe-write-surface.d.ts +17 -15
- package/dist/access-observe-write-surface.js +77 -74
- package/dist/access-offline-manifest.d.ts +12 -10
- package/dist/access-offline-manifest.js +15 -15
- package/dist/access-operations-batch.js +80 -77
- package/dist/access-operations.d.ts +17 -30
- package/dist/access-operations.js +85 -82
- package/dist/access-recall-concurrency.d.ts +14 -12
- package/dist/access-recall-concurrency.js +77 -74
- package/dist/access-recall-response.d.ts +14 -12
- package/dist/access-recall-response.js +77 -74
- package/dist/access-recall-surface.d.ts +14 -12
- package/dist/access-recall-surface.js +77 -74
- package/dist/access-schema.d.ts +214 -111
- package/dist/access-schema.js +7 -13
- package/dist/{access-service-Cl_x57xR.d.ts → access-service-gBcdRUHY.d.ts} +101 -77
- package/dist/access-service-helpers.d.ts +14 -12
- package/dist/access-service.d.ts +14 -12
- package/dist/access-service.js +77 -74
- package/dist/access-surface-catalog.d.ts +14 -12
- package/dist/access-surface-catalog.js +79 -76
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +5 -3
- package/dist/action-confidence.d.ts +2 -1
- package/dist/active-memory-bridge.d.ts +2 -1
- package/dist/active-memory-bridge.js +3 -3
- package/dist/active-recall.d.ts +2 -1
- package/dist/active-recall.js +20 -16
- package/dist/active-recall.js.map +1 -1
- package/dist/activity/digest.d.ts +2 -1
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/ambient-provenance.d.ts +2 -1
- package/dist/artifact-search.d.ts +2 -1
- package/dist/{auto-sync-4YFATLFQ.js → auto-sync-RP4C6ZPF.js} +12 -10
- package/dist/{auto-sync-4YFATLFQ.js.map → auto-sync-RP4C6ZPF.js.map} +1 -1
- package/dist/background-generation-config.d.ts +10 -0
- package/dist/background-generation-config.js +9 -0
- package/dist/background-generation.d.ts +25 -0
- package/dist/background-generation.js +11 -0
- package/dist/background-generation.js.map +1 -0
- package/dist/behavior-learner.d.ts +2 -1
- package/dist/behavior-signals.d.ts +2 -1
- package/dist/bootstrap.d.ts +12 -10
- package/dist/briefing-window.d.ts +3 -2
- package/dist/briefing.d.ts +3 -2
- package/dist/briefing.js +25 -24
- package/dist/buffer-surprise-report.d.ts +2 -1
- package/dist/buffer-turn-helpers.d.ts +2 -1
- package/dist/buffer.d.ts +3 -2
- package/dist/buffer.js +8 -8
- package/dist/bulk-import/index.d.ts +4 -3
- package/dist/calibration.d.ts +3 -1
- package/dist/calibration.js +5 -3
- package/dist/calibration.js.map +1 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/{capsule-merge-ZCXUPLNJ.js → capsule-merge-IPG4IOFP.js} +2 -2
- package/dist/{catalog-Bq1AxZwF.d.ts → catalog-CW87xGx8.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +2 -1
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.d.ts +2 -1
- package/dist/causal-consolidation.js +27 -26
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.d.ts +2 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-LO4UKPKX.js → chunk-27MKMTBY.js} +2 -2
- package/dist/{chunk-TK4FHQRN.js → chunk-2J3V5QEO.js} +4 -4
- package/dist/{chunk-DVOBLPSQ.js → chunk-2MT4ADLQ.js} +15 -39
- package/dist/chunk-2MT4ADLQ.js.map +1 -0
- package/dist/{chunk-JSRVXI6E.js → chunk-2OGTN37H.js} +10 -10
- package/dist/{chunk-DK4X5B6I.js → chunk-2PTNJTBE.js} +2 -2
- package/dist/chunk-2QG4SLZI.js +44 -0
- package/dist/chunk-2QG4SLZI.js.map +1 -0
- package/dist/{chunk-27IOSH2W.js → chunk-375ARKRS.js} +32 -11
- package/dist/chunk-375ARKRS.js.map +1 -0
- package/dist/{chunk-PWPIERBM.js → chunk-37CAEC7E.js} +4 -4
- package/dist/{chunk-S2ULTQZR.js → chunk-3N3PBBEH.js} +2 -2
- package/dist/{chunk-ZTG4P7NZ.js → chunk-3OYSIVOO.js} +168 -168
- package/dist/{chunk-ZBEGS7OB.js → chunk-474DL7UB.js} +3 -3
- package/dist/{chunk-YNN26CIZ.js → chunk-4B3HBIFX.js} +2 -2
- package/dist/{chunk-HC4GFLMQ.js → chunk-4BCHFSC7.js} +3 -3
- package/dist/{chunk-YEDVOYL2.js → chunk-4RX5O34R.js} +2 -2
- package/dist/{chunk-W6IJMWTZ.js → chunk-5AERZWJD.js} +2 -2
- package/dist/{chunk-XPJNT6PI.js → chunk-5N4MZLEH.js} +10 -6
- package/dist/chunk-5N4MZLEH.js.map +1 -0
- package/dist/{chunk-UBG4GAEP.js → chunk-5U7K4W6K.js} +6 -2
- package/dist/chunk-5U7K4W6K.js.map +1 -0
- package/dist/{chunk-PAAJWQH5.js → chunk-62D2PAAM.js} +4 -4
- package/dist/{chunk-JHZCXUQI.js → chunk-62QIQEUC.js} +157 -154
- package/dist/chunk-62QIQEUC.js.map +1 -0
- package/dist/{chunk-52II7PB6.js → chunk-645WOU5I.js} +4 -4
- package/dist/{chunk-326KUXIR.js → chunk-6EHM2AV7.js} +6 -6
- package/dist/{chunk-YM7YN37H.js → chunk-6ET2VII7.js} +2 -2
- package/dist/chunk-6H2G7RFT.js +58 -0
- package/dist/chunk-6H2G7RFT.js.map +1 -0
- package/dist/{chunk-A2YQL2FF.js → chunk-6P4REYKL.js} +5 -5
- package/dist/{chunk-FVJ4D6L7.js → chunk-6PRY6CLC.js} +4 -4
- package/dist/{chunk-GLZH5VEN.js → chunk-6ZMNTRU3.js} +2 -2
- package/dist/{chunk-Z7ACR6MJ.js → chunk-74AHCL56.js} +3 -3
- package/dist/{chunk-5VAF4ID4.js → chunk-7S53BPTU.js} +25 -25
- package/dist/{chunk-EEBQFG5E.js → chunk-A6CKMIPK.js} +14 -14
- package/dist/chunk-A6CXG5WI.js +51 -0
- package/dist/chunk-A6CXG5WI.js.map +1 -0
- package/dist/{chunk-JR6PP7UM.js → chunk-ACY4ZPF7.js} +28 -2
- package/dist/chunk-ACY4ZPF7.js.map +1 -0
- package/dist/{chunk-2YLMUME2.js → chunk-AECJY3GJ.js} +2 -2
- package/dist/{chunk-NPNSKE76.js → chunk-B36GUU6T.js} +4 -4
- package/dist/{chunk-Y63ZFP4X.js → chunk-BJEJUOGM.js} +2 -2
- package/dist/{chunk-7CBKAQIG.js → chunk-BOADKFN4.js} +28 -4
- package/dist/chunk-BOADKFN4.js.map +1 -0
- package/dist/{chunk-TLHNF6GA.js → chunk-BV4ZKIZH.js} +1 -1
- package/dist/{chunk-3FJKJ5UZ.js → chunk-BX4EOMKT.js} +2 -2
- package/dist/{chunk-6J6K3STG.js → chunk-BYZKLEWG.js} +15 -12
- package/dist/chunk-BYZKLEWG.js.map +1 -0
- package/dist/{chunk-BJETIR53.js → chunk-CBFYCDYO.js} +3 -3
- package/dist/{chunk-ZWEZXVYH.js → chunk-CEO4DONG.js} +2 -2
- package/dist/chunk-CWTCMZGE.js +858 -0
- package/dist/chunk-CWTCMZGE.js.map +1 -0
- package/dist/{chunk-WPDKBUWX.js → chunk-DPMTLJCT.js} +2 -2
- package/dist/{chunk-65RENJGB.js → chunk-E2AWJ7KQ.js} +8 -4
- package/dist/chunk-E2AWJ7KQ.js.map +1 -0
- package/dist/{chunk-LYDJRF45.js → chunk-EY5JAWZC.js} +2 -2
- package/dist/{chunk-R4OCGPSH.js → chunk-FJMYMJLR.js} +2 -2
- package/dist/{chunk-OS2AT2JU.js → chunk-G43PMSME.js} +27 -10
- package/dist/chunk-G43PMSME.js.map +1 -0
- package/dist/{chunk-YXLUTALO.js → chunk-GAS7KYC7.js} +5 -5
- package/dist/{chunk-LSLCFCCQ.js → chunk-GDYU6VF4.js} +1 -1
- package/dist/chunk-GDYU6VF4.js.map +1 -0
- package/dist/{chunk-UDZYNIDJ.js → chunk-GGAXFTNH.js} +2 -2
- package/dist/{chunk-QURNMKME.js → chunk-GQQVEH6V.js} +6 -6
- package/dist/{chunk-J7PB5UQ4.js → chunk-GT4ZHOKT.js} +3 -3
- package/dist/{chunk-WIKO4SCR.js → chunk-H3TKENU4.js} +5 -5
- package/dist/{chunk-ZLN7AROH.js → chunk-HIP6DKJJ.js} +5 -5
- package/dist/{chunk-UYUCCQ46.js → chunk-HVS7TH2Y.js} +2 -2
- package/dist/{chunk-Z3O53WZR.js → chunk-IWO6QXWJ.js} +2 -2
- package/dist/{chunk-4MDKNUV4.js → chunk-IYKZJVL5.js} +1 -1
- package/dist/chunk-IYKZJVL5.js.map +1 -0
- package/dist/{chunk-42DJ235G.js → chunk-J272ODKJ.js} +2 -2
- package/dist/{chunk-JR6H5CYS.js → chunk-JA2QJOAX.js} +2 -2
- package/dist/{chunk-R3TLVTWW.js → chunk-JDX2OA4R.js} +3 -3
- package/dist/chunk-JE26AUX6.js +16 -0
- package/dist/chunk-JE26AUX6.js.map +1 -0
- package/dist/{chunk-AJTG3CP7.js → chunk-JHU4EYDV.js} +11 -1
- package/dist/chunk-JHU4EYDV.js.map +1 -0
- package/dist/{chunk-HXSAWV3A.js → chunk-JNSENHV5.js} +6 -6
- package/dist/{chunk-RRZKTSFG.js → chunk-JPOX2AJB.js} +2 -2
- package/dist/{chunk-TKFSXDOB.js → chunk-K5DA5TRG.js} +9 -9
- package/dist/{chunk-AZSKROVQ.js → chunk-KDFDXEXZ.js} +2 -2
- package/dist/{chunk-AKE4GGQ3.js → chunk-KQW3YGEN.js} +2 -2
- package/dist/{chunk-B3O3IRZN.js → chunk-L63GFNKL.js} +1 -1
- package/dist/{chunk-YEN4TREG.js → chunk-LQNRVPTV.js} +54 -567
- package/dist/chunk-LQNRVPTV.js.map +1 -0
- package/dist/{chunk-YJ6VCDMZ.js → chunk-M6HBPLBA.js} +2 -2
- package/dist/chunk-MCRVQ5YQ.js +14 -0
- package/dist/chunk-MCRVQ5YQ.js.map +1 -0
- package/dist/{chunk-L2WQVSKP.js → chunk-MLWMR2GE.js} +2 -2
- package/dist/{chunk-WHHEPAO3.js → chunk-NWMUSKED.js} +8 -8
- package/dist/chunk-OEBLZZKK.js +53 -0
- package/dist/chunk-OEBLZZKK.js.map +1 -0
- package/dist/{chunk-JRWW7GM6.js → chunk-OKO57IXB.js} +7 -7
- package/dist/{chunk-L2QLDZJC.js → chunk-P4ZAEYKG.js} +67 -33
- package/dist/chunk-P4ZAEYKG.js.map +1 -0
- package/dist/{chunk-MPAJFFP3.js → chunk-PGAB2V53.js} +5 -5
- package/dist/{chunk-MPAJFFP3.js.map → chunk-PGAB2V53.js.map} +1 -1
- package/dist/{chunk-VYXDUPYE.js → chunk-PPQEP4OH.js} +2 -2
- package/dist/{chunk-LEMD7WZJ.js → chunk-QHT7MOUF.js} +70 -25
- package/dist/chunk-QHT7MOUF.js.map +1 -0
- package/dist/chunk-QJ2AX6DU.js +19 -0
- package/dist/chunk-QJ2AX6DU.js.map +1 -0
- package/dist/{chunk-Q4AUIFUA.js → chunk-QMWKENNK.js} +4 -4
- package/dist/{chunk-XCOV45MO.js → chunk-R4VAUNNC.js} +3 -3
- package/dist/{chunk-353KGBKY.js → chunk-RW4QNB4J.js} +4 -4
- package/dist/{chunk-FQXJAC3T.js → chunk-SGUDMW2K.js} +4 -4
- package/dist/{chunk-S5G2LAL7.js → chunk-SV4Z2S67.js} +4 -4
- package/dist/{chunk-HUT2JR6I.js → chunk-T32B72QX.js} +3 -3
- package/dist/{chunk-OQ7SSRXP.js → chunk-TRHBQVVO.js} +23 -17
- package/dist/chunk-TRHBQVVO.js.map +1 -0
- package/dist/{chunk-LMCD5W5B.js → chunk-TRLOFIQC.js} +2 -2
- package/dist/{chunk-JZ2CHRLB.js → chunk-TTSJ7WUC.js} +2 -2
- package/dist/{chunk-CNV2A557.js → chunk-TUKGXQ5T.js} +3 -3
- package/dist/{chunk-QATYVTP7.js → chunk-UIOIDW3L.js} +2 -2
- package/dist/{chunk-776GVKL7.js → chunk-ULDBGA5W.js} +2 -2
- package/dist/{chunk-NN4JEFON.js → chunk-UQNYPK7G.js} +3 -3
- package/dist/{chunk-A5UQ52YQ.js → chunk-UZZ7SQT3.js} +5 -5
- package/dist/{chunk-F6IVBYFS.js → chunk-V6G2PSXA.js} +72 -72
- package/dist/{chunk-RUXPVSML.js → chunk-VHOSM5G4.js} +6 -6
- package/dist/{chunk-QBLDCI6E.js → chunk-VMNCZ627.js} +2 -2
- package/dist/{chunk-P3ONDDIJ.js → chunk-VV4ZVUE6.js} +2 -2
- package/dist/{chunk-A7GQBJP5.js → chunk-X2NFFBTO.js} +4 -4
- package/dist/{chunk-ECKG5WSI.js → chunk-XGRXQR6T.js} +2 -2
- package/dist/{chunk-LNDLXMH6.js → chunk-XN6XT6GR.js} +3 -3
- package/dist/{chunk-C6KRO3SU.js → chunk-XVDZFTN5.js} +4 -4
- package/dist/chunk-XVZA6VXC.js +160 -0
- package/dist/chunk-XVZA6VXC.js.map +1 -0
- package/dist/{chunk-2BQ4ZIWC.js → chunk-XWLLFKHM.js} +8 -8
- package/dist/chunk-YFTNZMGR.js +71 -0
- package/dist/chunk-YFTNZMGR.js.map +1 -0
- package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
- package/dist/{chunk-BNGHPYZU.js → chunk-YUW66UAH.js} +3 -3
- package/dist/{chunk-5JG5EBVL.js → chunk-ZEGL7YCC.js} +2 -2
- package/dist/{chunk-PHP3MUGF.js → chunk-ZKZFFWLV.js} +2 -2
- package/dist/{chunk-GCBIXUPT.js → chunk-ZMWSYUUL.js} +2 -2
- package/dist/{chunk-X2QPKLPL.js → chunk-ZZUVBZL2.js} +2 -2
- package/dist/{cli-p813oxbm.d.ts → cli-BNg-TAlz.d.ts} +5 -5
- package/dist/cli-fallback.d.ts +4 -2
- package/dist/cli-fallback.js +3 -1
- package/dist/cli.d.ts +16 -14
- package/dist/cli.js +125 -119
- package/dist/coding/export-okf-codegraph.d.ts +2 -1
- package/dist/coding/export-okf-codegraph.js +24 -23
- package/dist/coding/export-okf-codegraph.js.map +1 -1
- package/dist/coding/pre-action-gate.d.ts +2 -1
- package/dist/coding/pre-action-gate.js +2 -2
- package/dist/compat/codex-cli-fallback.d.ts +1 -1
- package/dist/compat/codex-cli-fallback.js +3 -1
- package/dist/compat/codex-cli-fallback.js.map +1 -1
- package/dist/compounding/engine.d.ts +3 -2
- package/dist/compounding/engine.js +25 -24
- package/dist/compounding/preference-consolidator.d.ts +2 -1
- package/dist/compression-optimizer.d.ts +2 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.js +18 -14
- package/dist/connectors/codex-materialize-runner.d.ts +2 -1
- package/dist/connectors/codex-materialize-runner.js +24 -23
- package/dist/connectors/codex-materialize.d.ts +2 -1
- package/dist/connectors/index.d.ts +2 -1
- package/dist/connectors/index.js +27 -26
- package/dist/consolidation-provenance-check.d.ts +3 -2
- package/dist/consolidation-undo.d.ts +3 -2
- package/dist/contradiction/index.d.ts +5 -3
- package/dist/contradiction/index.js +7 -7
- package/dist/{contradiction-scan-GVD4JJ7B.js → contradiction-scan-BSGKZHYJ.js} +4 -4
- package/dist/contradiction-scan-BSGKZHYJ.js.map +1 -0
- package/dist/converge-config.d.ts +2 -1
- package/dist/convergence-refresh.d.ts +3 -2
- package/dist/convergence-refresh.js +27 -26
- package/dist/conversation-index/backend.d.ts +2 -1
- package/dist/conversation-index/chunker.d.ts +2 -1
- package/dist/conversation-index/faiss-adapter.d.ts +2 -1
- package/dist/conversation-index/indexer.d.ts +2 -1
- package/dist/conversation-index/search.d.ts +2 -1
- package/dist/corpus-watermark.d.ts +2 -1
- package/dist/corpus-watermark.js +27 -26
- package/dist/cross-lingual-recall.d.ts +2 -1
- package/dist/dashboard-runtime.js +2 -2
- package/dist/day-summary.d.ts +2 -1
- package/dist/deep-recall-http-glue.d.ts +14 -12
- package/dist/deep-recall-http-glue.js +2 -12
- package/dist/deep-recall-mcp-tools.d.ts +14 -12
- package/dist/deep-recall-policy-llm.d.ts +3 -1
- package/dist/deep-recall-policy-llm.js +5 -3
- package/dist/deep-recall-seeds.d.ts +2 -1
- package/dist/deep-recall.js +2 -2
- package/dist/delinearize.d.ts +2 -1
- package/dist/dependency-propagation-config.d.ts +2 -1
- package/dist/{dependency-propagation-delivery-DLiAtj25.d.ts → dependency-propagation-delivery-Cq1ekOwV.d.ts} +1 -1
- package/dist/direct-answer-wiring.d.ts +2 -1
- package/dist/direct-answer.d.ts +2 -1
- package/dist/embedding-fallback.d.ts +2 -1
- package/dist/enrichment/index.d.ts +2 -1
- package/dist/entity-origin-fields.d.ts +2 -1
- package/dist/entity-retrieval.d.ts +3 -2
- package/dist/entity-retrieval.js +26 -25
- package/dist/entity-schema.d.ts +2 -1
- package/dist/episodic-context.d.ts +2 -1
- package/dist/eval-trajectory-contracts.d.ts +2 -1
- package/dist/eval-trajectory-store.d.ts +2 -1
- package/dist/eval-trajectory.d.ts +2 -1
- package/dist/event-order-recall.js +3 -3
- package/dist/explicit-capture.d.ts +12 -10
- package/dist/explicit-capture.js +6 -6
- package/dist/external-wiki-access.d.ts +14 -12
- package/dist/external-wiki-access.js +78 -75
- package/dist/external-wiki-collection-registration.d.ts +2 -1
- package/dist/external-wiki-collection.d.ts +2 -1
- package/dist/external-wiki-mcp-tools.d.ts +14 -12
- package/dist/extraction-error-classification.d.ts +2 -1
- package/dist/extraction-faithfulness.d.ts +3 -1
- package/dist/extraction-faithfulness.js +5 -3
- package/dist/extraction-judge-telemetry.d.ts +3 -1
- package/dist/extraction-judge-training.d.ts +3 -1
- package/dist/extraction-judge.d.ts +3 -1
- package/dist/extraction-judge.js +6 -4
- package/dist/extraction-liveness.d.ts +2 -1
- package/dist/extraction-normalization.d.ts +2 -1
- package/dist/extraction-normalization.js +2 -2
- package/dist/extraction-prompt.d.ts +12 -2
- package/dist/extraction-prompt.js +7 -3
- package/dist/extraction-source-grounding-rules.d.ts +4 -2
- package/dist/extraction-source-grounding-rules.js +1 -1
- package/dist/extraction-source-grounding.d.ts +3 -2
- package/dist/extraction-source-grounding.js +4 -4
- package/dist/extraction-span-config.d.ts +16 -0
- package/dist/extraction-span-config.js +15 -0
- package/dist/extraction-span-config.js.map +1 -0
- package/dist/extraction-span-materialize.d.ts +106 -0
- package/dist/extraction-span-materialize.js +30 -0
- package/dist/extraction-span-materialize.js.map +1 -0
- package/dist/extraction-span-slice.js +3 -12
- package/dist/extraction-span-slice.js.map +1 -1
- package/dist/extraction-span-source-hash.js +4 -46
- package/dist/extraction-span-source-hash.js.map +1 -1
- package/dist/extraction-span-validate.js +3 -15
- package/dist/extraction-span-validate.js.map +1 -1
- package/dist/extraction.d.ts +8 -1
- package/dist/extraction.js +48 -43
- package/dist/fallback-llm-codex-subscription.d.ts +79 -0
- package/dist/fallback-llm-codex-subscription.js +22 -0
- package/dist/fallback-llm-codex-subscription.js.map +1 -0
- package/dist/fallback-llm.d.ts +5 -1
- package/dist/fallback-llm.js +4 -2
- package/dist/{first-start-migration-L3UFX5CU.js → first-start-migration-ZWMV5CX4.js} +4 -4
- package/dist/{generic-recall-paths-DbitKJI5.d.ts → generic-recall-paths-BcySh_f9.d.ts} +1 -1
- package/dist/graph-append-error.d.ts +2 -1
- package/dist/graph-dashboard-diff.d.ts +2 -1
- package/dist/graph-dashboard-key.d.ts +2 -1
- package/dist/graph-dashboard-parser.d.ts +2 -1
- package/dist/graph-edge-reinforcement.d.ts +2 -1
- package/dist/graph-jsonl.d.ts +2 -1
- package/dist/graph-path-reconstruction.d.ts +2 -1
- package/dist/graph-path-scoring.d.ts +2 -1
- package/dist/graph-snapshot.d.ts +2 -1
- package/dist/graph.d.ts +2 -1
- package/dist/harmonic-retrieval.js +3 -3
- package/dist/importance.d.ts +2 -1
- package/dist/importers/index.d.ts +2 -1
- package/dist/importers/test-utils.d.ts +2 -1
- package/dist/in-flight-reads.d.ts +2 -1
- package/dist/{index-BINUgPFo.d.ts → index-DWOb4wz9.d.ts} +2 -2
- package/dist/index.d.ts +712 -704
- package/dist/index.js +368 -299
- package/dist/intent.d.ts +2 -1
- package/dist/lcm/engine.d.ts +2 -1
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.d.ts +2 -1
- package/dist/lcm/index.js +7 -7
- package/dist/lcm/tools.d.ts +2 -1
- package/dist/lifecycle.d.ts +2 -1
- package/dist/live-connectors-runner.d.ts +2 -1
- package/dist/local-llm-config.d.ts +7 -1
- package/dist/local-llm-config.js +12 -0
- package/dist/local-llm.d.ts +2 -1
- package/dist/local-model-endpoint.d.ts +2 -1
- package/dist/location/index.d.ts +4 -3
- package/dist/location/index.js +60 -59
- package/dist/maintenance/memory-governance.d.ts +2 -1
- package/dist/maintenance/memory-governance.js +24 -23
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +25 -24
- package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-projection.js +26 -25
- package/dist/{maintenance-ag1gYztC.d.ts → maintenance-CW9wCzMP.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +14 -12
- package/dist/memory-action-policy.d.ts +2 -1
- package/dist/memory-cache.d.ts +2 -1
- package/dist/memory-controller.d.ts +2 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
- package/dist/memory-projection-store.d.ts +2 -1
- package/dist/memory-provenance.d.ts +2 -1
- package/dist/memory-snapshot.d.ts +2 -1
- package/dist/memory-subject-cli.d.ts +14 -12
- package/dist/memory-subject.d.ts +14 -12
- package/dist/memory-worth-outcomes.d.ts +3 -2
- package/dist/models-json.d.ts +2 -1
- package/dist/namespaces/migrate.d.ts +4 -3
- package/dist/namespaces/migrate.js +25 -24
- package/dist/namespaces/principal.d.ts +2 -1
- package/dist/namespaces/search.d.ts +2 -1
- package/dist/namespaces/search.js +4 -4
- package/dist/namespaces/storage.d.ts +4 -3
- package/dist/namespaces/storage.js +24 -23
- package/dist/native-knowledge.d.ts +2 -1
- package/dist/offline-sync-impression-drain.d.ts +2 -1
- package/dist/offline-sync-impression-drain.js +4 -4
- package/dist/operator-doctor-corpus.d.ts +2 -1
- package/dist/operator-doctor-corpus.js +28 -27
- package/dist/operator-doctor-replica.d.ts +2 -1
- package/dist/operator-toolkit.d.ts +4 -3
- package/dist/operator-toolkit.js +49 -44
- package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
- package/dist/orchestration/maintenance.d.ts +5 -4
- package/dist/orchestration/maintenance.js +37 -36
- package/dist/{orchestrator-Cf3G-3Ed.d.ts → orchestrator-DocO0_hw.d.ts} +9 -9
- package/dist/orchestrator.d.ts +12 -10
- package/dist/orchestrator.js +208 -198
- package/dist/patterns-cli.d.ts +2 -1
- package/dist/{pipeline-AwB03fw_.d.ts → pipeline-CiYcqqhl.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +2 -1
- package/dist/proactive-contention.d.ts +2 -1
- package/dist/provenance.d.ts +2 -1
- package/dist/provenance.js +2 -2
- package/dist/{public-http-C3bLjE-L.d.ts → public-http-C0FoTiL_.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +3 -2
- package/dist/{qmd-Bfaydrfm.d.ts → qmd-qXD4vatU.d.ts} +1 -1
- package/dist/qmd-recall-cache.d.ts +2 -1
- package/dist/qmd.d.ts +3 -2
- package/dist/recall-concurrency-config.d.ts +2 -1
- package/dist/recall-disclosure-escalation.d.ts +2 -1
- package/dist/recall-explain-renderer.d.ts +2 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +2 -1
- package/dist/recall-navigate-access.d.ts +2 -1
- package/dist/recall-navigate-access.js +2 -2
- package/dist/recall-navigate-disclosure.d.ts +2 -1
- package/dist/recall-navigate-disclosure.js +1 -1
- package/dist/recall-navigate.d.ts +2 -1
- package/dist/recall-navigate.js +2 -2
- package/dist/recall-planner-llm.d.ts +3 -1
- package/dist/recall-planner-llm.js +4 -2
- package/dist/recall-planner-llm.js.map +1 -1
- package/dist/recall-state-view-admission.d.ts +3 -2
- package/dist/recall-state-view-admission.js +6 -6
- package/dist/recall-state.d.ts +2 -1
- package/dist/recall-tag-filter.d.ts +2 -1
- package/dist/recall-timings.d.ts +2 -1
- package/dist/recall-xray-cli.d.ts +2 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +2 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +2 -1
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +2 -1
- package/dist/reconcile/cursor.js +2 -2
- package/dist/reconcile/manifest.d.ts +12 -2
- package/dist/reconcile/manifest.js +8 -6
- package/dist/reconcile/plan.d.ts +2 -1
- package/dist/reconcile/plan.js +2 -2
- package/dist/replay/normalizers/chatgpt.d.ts +2 -1
- package/dist/replay/normalizers/claude.d.ts +2 -1
- package/dist/replay/normalizers/openclaw.d.ts +2 -1
- package/dist/replay/normalizers/shared.d.ts +2 -1
- package/dist/replay/runner.d.ts +2 -1
- package/dist/replay/types.d.ts +2 -1
- package/dist/replica-divergence.d.ts +2 -1
- package/dist/replica-peers-config.d.ts +2 -1
- package/dist/{resolution-OHJZG45O.js → resolution-4GG3QZRJ.js} +8 -8
- package/dist/resolution-4GG3QZRJ.js.map +1 -0
- package/dist/resolve-auth-token.d.ts +2 -1
- package/dist/resume-bundles.js +19 -15
- package/dist/retrieval-agents.d.ts +3 -2
- package/dist/retrieval-tiers.d.ts +2 -1
- package/dist/routing/engine.d.ts +2 -1
- package/dist/routing/store.d.ts +2 -1
- package/dist/salvage-envelope.d.ts +2 -1
- package/dist/salvage-envelope.js +2 -2
- package/dist/schemas.d.ts +370 -160
- package/dist/schemas.js +1 -1
- package/dist/{scope-profiles-nxTKvjE-.d.ts → scope-profiles-BT9rqC3w.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +2 -1
- package/dist/search/factory.d.ts +2 -1
- package/dist/search/factory.js +3 -3
- package/dist/search/index.d.ts +2 -1
- package/dist/search/index.js +7 -7
- package/dist/search/lancedb-backend.d.ts +2 -1
- package/dist/search/meilisearch-backend.d.ts +2 -1
- package/dist/search/noop-backend.d.ts +2 -1
- package/dist/search/orama-backend.d.ts +2 -1
- package/dist/search/port.d.ts +2 -1
- package/dist/search/remote-backend.d.ts +2 -1
- package/dist/{semantic-consolidation-C83DVakV.d.ts → semantic-consolidation-CmZi7thY.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +3 -2
- package/dist/semantic-consolidation.js +25 -24
- package/dist/semantic-rule-promotion.js +24 -23
- package/dist/semantic-rule-verifier.d.ts +2 -1
- package/dist/semantic-rule-verifier.js +24 -23
- package/dist/{service-q-xtOoAr.d.ts → service-CLkA7AQB.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +2 -1
- package/dist/session-observer-state.d.ts +2 -1
- package/dist/shared-context/manager.d.ts +8 -7
- package/dist/signal.d.ts +2 -1
- package/dist/source-agent-qualifier.d.ts +2 -1
- package/dist/source-agent-qualifier.js +40 -39
- package/dist/standup/build.js +25 -24
- package/dist/{storage-Ca0MbTfm.d.ts → storage-wvX01lht.d.ts} +1 -1
- package/dist/storage.d.ts +3 -2
- package/dist/storage.js +23 -22
- package/dist/subject-config.d.ts +2 -1
- package/dist/subject-config.js +2 -2
- package/dist/summarizer.d.ts +2 -1
- package/dist/summarizer.js +6 -3
- package/dist/summary-snapshot.d.ts +2 -1
- package/dist/support-passport/index.d.ts +17 -15
- package/dist/support-passport/index.js +83 -80
- package/dist/temporal-supersession.d.ts +3 -2
- package/dist/temporal-timeline-recall.d.ts +2 -1
- package/dist/temporal-validity.d.ts +2 -1
- package/dist/threading.d.ts +2 -1
- package/dist/tier-migration.d.ts +3 -2
- package/dist/tier-routing.d.ts +2 -1
- package/dist/tier-routing.js +3 -3
- package/dist/{tier-stats-VK5PCO2L.js → tier-stats-LUSUUNU6.js} +4 -4
- package/dist/topics.d.ts +2 -1
- package/dist/transcript.d.ts +2 -1
- package/dist/transfer/capsule-import.js +1 -1
- package/dist/transfer/export-okf.d.ts +2 -1
- package/dist/transfer/export-okf.js +24 -23
- package/dist/transfer/types.d.ts +98 -98
- package/dist/trust-score-stage.d.ts +2 -1
- package/dist/trust-score.d.ts +2 -1
- package/dist/{types-yDgWDkrJ.d.ts → types-Cyr32ABj.d.ts} +51 -10
- package/dist/types.d.ts +2 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +2 -1
- package/dist/verified-recall.js +24 -23
- package/dist/who-knows-cli.d.ts +14 -12
- package/dist/who-knows-cli.js +25 -24
- package/dist/who-knows.d.ts +14 -12
- package/dist/who-knows.js +24 -23
- package/dist/write-envelope.d.ts +7 -1
- package/dist/write-envelope.js +1 -1
- package/package.json +42 -2
- package/src/access-boundary.ts +21 -6
- package/src/access-category-alias.test.ts +488 -51
- package/src/access-http.test.ts +292 -5
- package/src/access-http.ts +4 -0
- package/src/access-mcp.test.ts +2 -2
- package/src/access-observe-write-category.ts +25 -0
- package/src/access-observe-write-surface.ts +58 -57
- package/src/access-operations-batch.ts +28 -2
- package/src/access-operations.ts +6 -4
- package/src/access-schema.ts +106 -50
- package/src/access-service.ts +23 -9
- package/src/background-generation-config.ts +79 -0
- package/src/background-generation.test.ts +123 -0
- package/src/background-generation.ts +52 -0
- package/src/cli-fallback.ts +8 -2
- package/src/config.test.ts +172 -0
- package/src/config.ts +4 -45
- package/src/extraction-prompt.ts +37 -3
- package/src/extraction-source-grounding-rules.ts +46 -9
- package/src/extraction-source-grounding.ts +2 -1
- package/src/extraction-span-config.ts +81 -0
- package/src/extraction-span-materialize.test.ts +376 -0
- package/src/extraction-span-materialize.ts +241 -0
- package/src/extraction.ts +70 -25
- package/src/fallback-llm-codex-subscription.ts +168 -0
- package/src/fallback-llm.test.ts +46 -0
- package/src/fallback-llm.ts +60 -48
- package/src/index.ts +2 -16
- package/src/local-llm-config.ts +84 -0
- package/src/providers/codex-subscription.test.ts +804 -1
- package/src/providers/codex-subscription.ts +407 -65
- package/src/reconcile/manifest.test.ts +11 -1
- package/src/reconcile/manifest.ts +12 -0
- package/src/schemas.ts +14 -0
- package/src/source-agent-qualifier.ts +5 -1
- package/src/summarizer.ts +25 -0
- package/src/testing/subjects/extraction-lifecycle.test.ts +27 -10
- package/src/types.ts +12 -11
- package/src/write-envelope.ts +5 -0
- package/dist/chunk-27IOSH2W.js.map +0 -1
- package/dist/chunk-4MDKNUV4.js.map +0 -1
- package/dist/chunk-65RENJGB.js.map +0 -1
- package/dist/chunk-6J6K3STG.js.map +0 -1
- package/dist/chunk-7CBKAQIG.js.map +0 -1
- package/dist/chunk-AJTG3CP7.js.map +0 -1
- package/dist/chunk-DVOBLPSQ.js.map +0 -1
- package/dist/chunk-JHZCXUQI.js.map +0 -1
- package/dist/chunk-JR6PP7UM.js.map +0 -1
- package/dist/chunk-L2QLDZJC.js.map +0 -1
- package/dist/chunk-LEMD7WZJ.js.map +0 -1
- package/dist/chunk-LSLCFCCQ.js.map +0 -1
- package/dist/chunk-OQ7SSRXP.js.map +0 -1
- package/dist/chunk-OS2AT2JU.js.map +0 -1
- package/dist/chunk-UBG4GAEP.js.map +0 -1
- package/dist/chunk-XPJNT6PI.js.map +0 -1
- package/dist/chunk-YEN4TREG.js.map +0 -1
- /package/dist/{contradiction-scan-GVD4JJ7B.js.map → access-observe-write-category.js.map} +0 -0
- /package/dist/{resolution-OHJZG45O.js.map → background-generation-config.js.map} +0 -0
- /package/dist/{capsule-merge-ZCXUPLNJ.js.map → capsule-merge-IPG4IOFP.js.map} +0 -0
- /package/dist/{chunk-LO4UKPKX.js.map → chunk-27MKMTBY.js.map} +0 -0
- /package/dist/{chunk-TK4FHQRN.js.map → chunk-2J3V5QEO.js.map} +0 -0
- /package/dist/{chunk-JSRVXI6E.js.map → chunk-2OGTN37H.js.map} +0 -0
- /package/dist/{chunk-DK4X5B6I.js.map → chunk-2PTNJTBE.js.map} +0 -0
- /package/dist/{chunk-PWPIERBM.js.map → chunk-37CAEC7E.js.map} +0 -0
- /package/dist/{chunk-S2ULTQZR.js.map → chunk-3N3PBBEH.js.map} +0 -0
- /package/dist/{chunk-ZTG4P7NZ.js.map → chunk-3OYSIVOO.js.map} +0 -0
- /package/dist/{chunk-ZBEGS7OB.js.map → chunk-474DL7UB.js.map} +0 -0
- /package/dist/{chunk-YNN26CIZ.js.map → chunk-4B3HBIFX.js.map} +0 -0
- /package/dist/{chunk-HC4GFLMQ.js.map → chunk-4BCHFSC7.js.map} +0 -0
- /package/dist/{chunk-YEDVOYL2.js.map → chunk-4RX5O34R.js.map} +0 -0
- /package/dist/{chunk-W6IJMWTZ.js.map → chunk-5AERZWJD.js.map} +0 -0
- /package/dist/{chunk-PAAJWQH5.js.map → chunk-62D2PAAM.js.map} +0 -0
- /package/dist/{chunk-52II7PB6.js.map → chunk-645WOU5I.js.map} +0 -0
- /package/dist/{chunk-326KUXIR.js.map → chunk-6EHM2AV7.js.map} +0 -0
- /package/dist/{chunk-YM7YN37H.js.map → chunk-6ET2VII7.js.map} +0 -0
- /package/dist/{chunk-A2YQL2FF.js.map → chunk-6P4REYKL.js.map} +0 -0
- /package/dist/{chunk-FVJ4D6L7.js.map → chunk-6PRY6CLC.js.map} +0 -0
- /package/dist/{chunk-GLZH5VEN.js.map → chunk-6ZMNTRU3.js.map} +0 -0
- /package/dist/{chunk-Z7ACR6MJ.js.map → chunk-74AHCL56.js.map} +0 -0
- /package/dist/{chunk-5VAF4ID4.js.map → chunk-7S53BPTU.js.map} +0 -0
- /package/dist/{chunk-EEBQFG5E.js.map → chunk-A6CKMIPK.js.map} +0 -0
- /package/dist/{chunk-2YLMUME2.js.map → chunk-AECJY3GJ.js.map} +0 -0
- /package/dist/{chunk-NPNSKE76.js.map → chunk-B36GUU6T.js.map} +0 -0
- /package/dist/{chunk-Y63ZFP4X.js.map → chunk-BJEJUOGM.js.map} +0 -0
- /package/dist/{chunk-TLHNF6GA.js.map → chunk-BV4ZKIZH.js.map} +0 -0
- /package/dist/{chunk-3FJKJ5UZ.js.map → chunk-BX4EOMKT.js.map} +0 -0
- /package/dist/{chunk-BJETIR53.js.map → chunk-CBFYCDYO.js.map} +0 -0
- /package/dist/{chunk-ZWEZXVYH.js.map → chunk-CEO4DONG.js.map} +0 -0
- /package/dist/{chunk-WPDKBUWX.js.map → chunk-DPMTLJCT.js.map} +0 -0
- /package/dist/{chunk-LYDJRF45.js.map → chunk-EY5JAWZC.js.map} +0 -0
- /package/dist/{chunk-R4OCGPSH.js.map → chunk-FJMYMJLR.js.map} +0 -0
- /package/dist/{chunk-YXLUTALO.js.map → chunk-GAS7KYC7.js.map} +0 -0
- /package/dist/{chunk-UDZYNIDJ.js.map → chunk-GGAXFTNH.js.map} +0 -0
- /package/dist/{chunk-QURNMKME.js.map → chunk-GQQVEH6V.js.map} +0 -0
- /package/dist/{chunk-J7PB5UQ4.js.map → chunk-GT4ZHOKT.js.map} +0 -0
- /package/dist/{chunk-WIKO4SCR.js.map → chunk-H3TKENU4.js.map} +0 -0
- /package/dist/{chunk-ZLN7AROH.js.map → chunk-HIP6DKJJ.js.map} +0 -0
- /package/dist/{chunk-UYUCCQ46.js.map → chunk-HVS7TH2Y.js.map} +0 -0
- /package/dist/{chunk-Z3O53WZR.js.map → chunk-IWO6QXWJ.js.map} +0 -0
- /package/dist/{chunk-42DJ235G.js.map → chunk-J272ODKJ.js.map} +0 -0
- /package/dist/{chunk-JR6H5CYS.js.map → chunk-JA2QJOAX.js.map} +0 -0
- /package/dist/{chunk-R3TLVTWW.js.map → chunk-JDX2OA4R.js.map} +0 -0
- /package/dist/{chunk-HXSAWV3A.js.map → chunk-JNSENHV5.js.map} +0 -0
- /package/dist/{chunk-RRZKTSFG.js.map → chunk-JPOX2AJB.js.map} +0 -0
- /package/dist/{chunk-TKFSXDOB.js.map → chunk-K5DA5TRG.js.map} +0 -0
- /package/dist/{chunk-AZSKROVQ.js.map → chunk-KDFDXEXZ.js.map} +0 -0
- /package/dist/{chunk-AKE4GGQ3.js.map → chunk-KQW3YGEN.js.map} +0 -0
- /package/dist/{chunk-B3O3IRZN.js.map → chunk-L63GFNKL.js.map} +0 -0
- /package/dist/{chunk-YJ6VCDMZ.js.map → chunk-M6HBPLBA.js.map} +0 -0
- /package/dist/{chunk-L2WQVSKP.js.map → chunk-MLWMR2GE.js.map} +0 -0
- /package/dist/{chunk-WHHEPAO3.js.map → chunk-NWMUSKED.js.map} +0 -0
- /package/dist/{chunk-JRWW7GM6.js.map → chunk-OKO57IXB.js.map} +0 -0
- /package/dist/{chunk-VYXDUPYE.js.map → chunk-PPQEP4OH.js.map} +0 -0
- /package/dist/{chunk-Q4AUIFUA.js.map → chunk-QMWKENNK.js.map} +0 -0
- /package/dist/{chunk-XCOV45MO.js.map → chunk-R4VAUNNC.js.map} +0 -0
- /package/dist/{chunk-353KGBKY.js.map → chunk-RW4QNB4J.js.map} +0 -0
- /package/dist/{chunk-FQXJAC3T.js.map → chunk-SGUDMW2K.js.map} +0 -0
- /package/dist/{chunk-S5G2LAL7.js.map → chunk-SV4Z2S67.js.map} +0 -0
- /package/dist/{chunk-HUT2JR6I.js.map → chunk-T32B72QX.js.map} +0 -0
- /package/dist/{chunk-LMCD5W5B.js.map → chunk-TRLOFIQC.js.map} +0 -0
- /package/dist/{chunk-JZ2CHRLB.js.map → chunk-TTSJ7WUC.js.map} +0 -0
- /package/dist/{chunk-CNV2A557.js.map → chunk-TUKGXQ5T.js.map} +0 -0
- /package/dist/{chunk-QATYVTP7.js.map → chunk-UIOIDW3L.js.map} +0 -0
- /package/dist/{chunk-776GVKL7.js.map → chunk-ULDBGA5W.js.map} +0 -0
- /package/dist/{chunk-NN4JEFON.js.map → chunk-UQNYPK7G.js.map} +0 -0
- /package/dist/{chunk-A5UQ52YQ.js.map → chunk-UZZ7SQT3.js.map} +0 -0
- /package/dist/{chunk-F6IVBYFS.js.map → chunk-V6G2PSXA.js.map} +0 -0
- /package/dist/{chunk-RUXPVSML.js.map → chunk-VHOSM5G4.js.map} +0 -0
- /package/dist/{chunk-QBLDCI6E.js.map → chunk-VMNCZ627.js.map} +0 -0
- /package/dist/{chunk-P3ONDDIJ.js.map → chunk-VV4ZVUE6.js.map} +0 -0
- /package/dist/{chunk-A7GQBJP5.js.map → chunk-X2NFFBTO.js.map} +0 -0
- /package/dist/{chunk-ECKG5WSI.js.map → chunk-XGRXQR6T.js.map} +0 -0
- /package/dist/{chunk-LNDLXMH6.js.map → chunk-XN6XT6GR.js.map} +0 -0
- /package/dist/{chunk-C6KRO3SU.js.map → chunk-XVDZFTN5.js.map} +0 -0
- /package/dist/{chunk-2BQ4ZIWC.js.map → chunk-XWLLFKHM.js.map} +0 -0
- /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
- /package/dist/{chunk-BNGHPYZU.js.map → chunk-YUW66UAH.js.map} +0 -0
- /package/dist/{chunk-5JG5EBVL.js.map → chunk-ZEGL7YCC.js.map} +0 -0
- /package/dist/{chunk-PHP3MUGF.js.map → chunk-ZKZFFWLV.js.map} +0 -0
- /package/dist/{chunk-GCBIXUPT.js.map → chunk-ZMWSYUUL.js.map} +0 -0
- /package/dist/{chunk-X2QPKLPL.js.map → chunk-ZZUVBZL2.js.map} +0 -0
- /package/dist/{first-start-migration-L3UFX5CU.js.map → first-start-migration-ZWMV5CX4.js.map} +0 -0
- /package/dist/{tier-stats-VK5PCO2L.js.map → tier-stats-LUSUUNU6.js.map} +0 -0
package/src/config.test.ts
CHANGED
|
@@ -2724,3 +2724,175 @@ test("parseConfig coerces string-typed sharedContextAllowBindingAuthority from t
|
|
|
2724
2724
|
);
|
|
2725
2725
|
}
|
|
2726
2726
|
});
|
|
2727
|
+
|
|
2728
|
+
test("parseConfig consumes backgroundGeneration and leaves openaiBaseUrl untouched", () => {
|
|
2729
|
+
withIsolatedConnectorsDir(false, () => {
|
|
2730
|
+
const previousKey = process.env.OPENAI_API_KEY;
|
|
2731
|
+
const previousBase = process.env.OPENAI_BASE_URL;
|
|
2732
|
+
delete process.env.OPENAI_API_KEY;
|
|
2733
|
+
delete process.env.OPENAI_BASE_URL;
|
|
2734
|
+
try {
|
|
2735
|
+
const parsed = parseConfig({
|
|
2736
|
+
backgroundGeneration: {
|
|
2737
|
+
endpoint: "http://127.0.0.1:8765/v1/chat/completions",
|
|
2738
|
+
token: "bridge-token-fixture",
|
|
2739
|
+
timeoutSeconds: 120,
|
|
2740
|
+
},
|
|
2741
|
+
});
|
|
2742
|
+
assert.equal(parsed.openaiBaseUrl, undefined);
|
|
2743
|
+
assert.equal(parsed.openaiApiKey, undefined);
|
|
2744
|
+
assert.deepEqual(parsed.backgroundGeneration, {
|
|
2745
|
+
endpoint: "http://127.0.0.1:8765/v1/chat/completions",
|
|
2746
|
+
token: "bridge-token-fixture",
|
|
2747
|
+
timeoutSeconds: 120,
|
|
2748
|
+
});
|
|
2749
|
+
|
|
2750
|
+
const explicitOpenAi = parseConfig({
|
|
2751
|
+
backgroundGeneration: {
|
|
2752
|
+
endpoint: "http://127.0.0.1:8765/v1/chat/completions",
|
|
2753
|
+
token: "bridge-token-fixture",
|
|
2754
|
+
timeoutSeconds: 120,
|
|
2755
|
+
},
|
|
2756
|
+
openaiBaseUrl: "http://127.0.0.1:9999/v1",
|
|
2757
|
+
openaiApiKey: "keep-me",
|
|
2758
|
+
});
|
|
2759
|
+
assert.equal(explicitOpenAi.openaiBaseUrl, "http://127.0.0.1:9999/v1");
|
|
2760
|
+
assert.equal(explicitOpenAi.openaiApiKey, "keep-me");
|
|
2761
|
+
assert.equal(
|
|
2762
|
+
explicitOpenAi.backgroundGeneration?.endpoint,
|
|
2763
|
+
"http://127.0.0.1:8765/v1/chat/completions",
|
|
2764
|
+
);
|
|
2765
|
+
} finally {
|
|
2766
|
+
if (previousKey === undefined) delete process.env.OPENAI_API_KEY;
|
|
2767
|
+
else process.env.OPENAI_API_KEY = previousKey;
|
|
2768
|
+
if (previousBase === undefined) delete process.env.OPENAI_BASE_URL;
|
|
2769
|
+
else process.env.OPENAI_BASE_URL = previousBase;
|
|
2770
|
+
}
|
|
2771
|
+
});
|
|
2772
|
+
});
|
|
2773
|
+
|
|
2774
|
+
test("parseConfig ignores llmBridgeClientConfigPath", () => {
|
|
2775
|
+
withIsolatedConnectorsDir(false, () => {
|
|
2776
|
+
const parsed = parseConfig({
|
|
2777
|
+
llmBridgeClientConfigPath: "/no/such/remnic-llm-bridge-client.json",
|
|
2778
|
+
});
|
|
2779
|
+
assert.equal(parsed.backgroundGeneration, undefined);
|
|
2780
|
+
});
|
|
2781
|
+
});
|
|
2782
|
+
|
|
2783
|
+
test("parseConfig rejects backgroundGeneration without a token", () => {
|
|
2784
|
+
withIsolatedConnectorsDir(false, () => {
|
|
2785
|
+
assert.throws(
|
|
2786
|
+
() =>
|
|
2787
|
+
parseConfig({
|
|
2788
|
+
backgroundGeneration: {
|
|
2789
|
+
endpoint: "http://127.0.0.1:8765/v1/chat/completions",
|
|
2790
|
+
},
|
|
2791
|
+
}),
|
|
2792
|
+
/must include a token/,
|
|
2793
|
+
);
|
|
2794
|
+
});
|
|
2795
|
+
});
|
|
2796
|
+
|
|
2797
|
+
test("parseConfig ignores Hermes timeout_seconds on backgroundGeneration", () => {
|
|
2798
|
+
withIsolatedConnectorsDir(false, () => {
|
|
2799
|
+
const parsed = parseConfig({
|
|
2800
|
+
backgroundGeneration: {
|
|
2801
|
+
endpoint: "http://127.0.0.1:8765/v1/chat/completions",
|
|
2802
|
+
token: "bridge-token-fixture",
|
|
2803
|
+
timeout_seconds: 45,
|
|
2804
|
+
},
|
|
2805
|
+
});
|
|
2806
|
+
assert.equal(parsed.backgroundGeneration?.timeoutSeconds, 120);
|
|
2807
|
+
});
|
|
2808
|
+
});
|
|
2809
|
+
|
|
2810
|
+
test("parseConfig keeps env openaiBaseUrl isolated from backgroundGeneration", () => {
|
|
2811
|
+
withIsolatedConnectorsDir(false, () => {
|
|
2812
|
+
const previousKey = process.env.OPENAI_API_KEY;
|
|
2813
|
+
const previousBase = process.env.OPENAI_BASE_URL;
|
|
2814
|
+
process.env.OPENAI_API_KEY = "env-openai-key";
|
|
2815
|
+
process.env.OPENAI_BASE_URL = "http://127.0.0.1:9999/v1";
|
|
2816
|
+
try {
|
|
2817
|
+
const parsed = parseConfig({
|
|
2818
|
+
backgroundGeneration: {
|
|
2819
|
+
endpoint: "http://127.0.0.1:8765/v1/chat/completions",
|
|
2820
|
+
token: "bridge-token-fixture",
|
|
2821
|
+
timeoutSeconds: 45,
|
|
2822
|
+
},
|
|
2823
|
+
});
|
|
2824
|
+
assert.equal(parsed.openaiBaseUrl, "http://127.0.0.1:9999/v1");
|
|
2825
|
+
assert.equal(parsed.openaiApiKey, "env-openai-key");
|
|
2826
|
+
assert.deepEqual(parsed.backgroundGeneration, {
|
|
2827
|
+
endpoint: "http://127.0.0.1:8765/v1/chat/completions",
|
|
2828
|
+
token: "bridge-token-fixture",
|
|
2829
|
+
timeoutSeconds: 45,
|
|
2830
|
+
});
|
|
2831
|
+
} finally {
|
|
2832
|
+
if (previousKey === undefined) delete process.env.OPENAI_API_KEY;
|
|
2833
|
+
else process.env.OPENAI_API_KEY = previousKey;
|
|
2834
|
+
if (previousBase === undefined) delete process.env.OPENAI_BASE_URL;
|
|
2835
|
+
else process.env.OPENAI_BASE_URL = previousBase;
|
|
2836
|
+
}
|
|
2837
|
+
});
|
|
2838
|
+
});
|
|
2839
|
+
|
|
2840
|
+
test("parseConfig rejects a non-object backgroundGeneration value", () => {
|
|
2841
|
+
withIsolatedConnectorsDir(false, () => {
|
|
2842
|
+
assert.throws(
|
|
2843
|
+
() => parseConfig({ backgroundGeneration: "http://127.0.0.1:8765/v1/chat/completions" }),
|
|
2844
|
+
/backgroundGeneration must be an object/,
|
|
2845
|
+
);
|
|
2846
|
+
});
|
|
2847
|
+
});
|
|
2848
|
+
|
|
2849
|
+
test("parseConfig strips a slash-rich bridge endpoint without regex", () => {
|
|
2850
|
+
withIsolatedConnectorsDir(false, () => {
|
|
2851
|
+
const parsed = parseConfig({
|
|
2852
|
+
backgroundGeneration: {
|
|
2853
|
+
endpoint: `http://127.0.0.1:8765/v1/chat/completions${"/".repeat(10_000)}`,
|
|
2854
|
+
token: "bridge-token-fixture",
|
|
2855
|
+
},
|
|
2856
|
+
});
|
|
2857
|
+
assert.equal(
|
|
2858
|
+
parsed.backgroundGeneration?.endpoint,
|
|
2859
|
+
"http://127.0.0.1:8765/v1/chat/completions",
|
|
2860
|
+
);
|
|
2861
|
+
assert.equal(parsed.openaiBaseUrl, undefined);
|
|
2862
|
+
});
|
|
2863
|
+
});
|
|
2864
|
+
|
|
2865
|
+
test("parseConfig rejects plaintext non-loopback backgroundGeneration endpoints", () => {
|
|
2866
|
+
withIsolatedConnectorsDir(false, () => {
|
|
2867
|
+
for (const endpoint of [
|
|
2868
|
+
"http://192.168.10.20:8765/v1/chat/completions",
|
|
2869
|
+
"http://example.test/v1/chat/completions",
|
|
2870
|
+
]) {
|
|
2871
|
+
assert.throws(
|
|
2872
|
+
() =>
|
|
2873
|
+
parseConfig({
|
|
2874
|
+
backgroundGeneration: {
|
|
2875
|
+
endpoint,
|
|
2876
|
+
token: "bridge-token-fixture",
|
|
2877
|
+
},
|
|
2878
|
+
}),
|
|
2879
|
+
/must use HTTPS unless the host is loopback/,
|
|
2880
|
+
);
|
|
2881
|
+
}
|
|
2882
|
+
|
|
2883
|
+
for (const endpoint of [
|
|
2884
|
+
"http://127.0.0.1:8765/v1/chat/completions",
|
|
2885
|
+
"http://localhost:8765/v1/chat/completions",
|
|
2886
|
+
"http://[::1]:8765/v1/chat/completions",
|
|
2887
|
+
"https://example.test/v1/chat/completions",
|
|
2888
|
+
]) {
|
|
2889
|
+
const parsed = parseConfig({
|
|
2890
|
+
backgroundGeneration: {
|
|
2891
|
+
endpoint,
|
|
2892
|
+
token: "bridge-token-fixture",
|
|
2893
|
+
},
|
|
2894
|
+
});
|
|
2895
|
+
assert.equal(parsed.backgroundGeneration?.endpoint, endpoint);
|
|
2896
|
+
}
|
|
2897
|
+
});
|
|
2898
|
+
});
|
package/src/config.ts
CHANGED
|
@@ -25,6 +25,7 @@ import type {
|
|
|
25
25
|
TriggerMode,
|
|
26
26
|
TrustWeights,
|
|
27
27
|
} from "./types.js";
|
|
28
|
+
import { parseLocalLlmConfig } from "./local-llm-config.js";
|
|
28
29
|
import { parseConvergeConfig } from "./converge-config.js";
|
|
29
30
|
import { parseExternalWikiRecallGuard } from "./external-wiki-guard.js";
|
|
30
31
|
import { log } from "./logger.js";
|
|
@@ -40,7 +41,7 @@ import { coerceBool, coerceBooleanLike, coerceInstallExtension, coerceNumber } f
|
|
|
40
41
|
import { parseSubjectRuntimeConfig } from "./subject-config.js";
|
|
41
42
|
import { parseRecallStateViews } from "./recall-state-view.js";
|
|
42
43
|
import { parseRecallConcurrencyConfig } from "./recall-concurrency-config.js";
|
|
43
|
-
import {
|
|
44
|
+
import { parseExtractionFields } from "./extraction-span-config.js";
|
|
44
45
|
import { parseReplicaPeersConfig } from "./replica-peers-config.js";
|
|
45
46
|
import { parseDependencyPropagationConfig } from "./dependency-propagation-config.js";
|
|
46
47
|
import { parseProceduralMaintenanceConfig } from "./procedural/maintenance-config.js";
|
|
@@ -2332,7 +2333,7 @@ export function parseConfig(
|
|
|
2332
2333
|
dreaming,
|
|
2333
2334
|
dreamsPhases,
|
|
2334
2335
|
procedural,
|
|
2335
|
-
|
|
2336
|
+
...parseExtractionFields(cfg),
|
|
2336
2337
|
replicaPeers: parseReplicaPeersConfig(cfg),
|
|
2337
2338
|
converge: parseConvergeConfig(cfg.converge),
|
|
2338
2339
|
wearables,
|
|
@@ -2680,49 +2681,7 @@ export function parseConfig(
|
|
|
2680
2681
|
typeof cfg.abstractionNodeStoreDir === "string" && cfg.abstractionNodeStoreDir.trim().length > 0
|
|
2681
2682
|
? cfg.abstractionNodeStoreDir.trim()
|
|
2682
2683
|
: path.join(memoryDir, "state", "abstraction-nodes"),
|
|
2683
|
-
|
|
2684
|
-
localLlmEnabled: cfg.localLlmEnabled === true || cfg.localLlmEnabled === "true", // default: false
|
|
2685
|
-
localLlmUrl:
|
|
2686
|
-
typeof cfg.localLlmUrl === "string" && cfg.localLlmUrl.length > 0
|
|
2687
|
-
? cfg.localLlmUrl
|
|
2688
|
-
: "http://localhost:1234/v1",
|
|
2689
|
-
localLlmModel:
|
|
2690
|
-
typeof cfg.localLlmModel === "string" && cfg.localLlmModel.length > 0
|
|
2691
|
-
? cfg.localLlmModel
|
|
2692
|
-
: "local-model",
|
|
2693
|
-
localLlmApiKey:
|
|
2694
|
-
typeof cfg.localLlmApiKey === "string" && cfg.localLlmApiKey.length > 0
|
|
2695
|
-
? resolveEnvVars(cfg.localLlmApiKey)
|
|
2696
|
-
: localLlmApiKeyEnv === undefined
|
|
2697
|
-
? undefined
|
|
2698
|
-
: readEnvVar(localLlmApiKeyEnv),
|
|
2699
|
-
localLlmApiKeyEnv,
|
|
2700
|
-
localLlmHeaders:
|
|
2701
|
-
cfg.localLlmHeaders && typeof cfg.localLlmHeaders === "object" && !Array.isArray(cfg.localLlmHeaders)
|
|
2702
|
-
? Object.fromEntries(
|
|
2703
|
-
Object.entries(cfg.localLlmHeaders as Record<string, unknown>)
|
|
2704
|
-
.filter(([, value]) => typeof value === "string")
|
|
2705
|
-
.map(([key, value]) => [key, String(value)]),
|
|
2706
|
-
)
|
|
2707
|
-
: undefined,
|
|
2708
|
-
localLlmAuthHeader: cfg.localLlmAuthHeader !== false,
|
|
2709
|
-
localLlmFallback: cfg.localLlmFallback !== false, // default: true
|
|
2710
|
-
localLlmHomeDir:
|
|
2711
|
-
typeof cfg.localLlmHomeDir === "string" && cfg.localLlmHomeDir.length > 0
|
|
2712
|
-
? cfg.localLlmHomeDir
|
|
2713
|
-
: undefined,
|
|
2714
|
-
localLmsCliPath:
|
|
2715
|
-
typeof cfg.localLmsCliPath === "string" && cfg.localLmsCliPath.length > 0
|
|
2716
|
-
? cfg.localLmsCliPath
|
|
2717
|
-
: undefined,
|
|
2718
|
-
localLmsBinDir:
|
|
2719
|
-
typeof cfg.localLmsBinDir === "string" && cfg.localLmsBinDir.length > 0
|
|
2720
|
-
? cfg.localLmsBinDir
|
|
2721
|
-
: undefined,
|
|
2722
|
-
localLlmTimeoutMs:
|
|
2723
|
-
parseBoundedIntegerMs(cfg.localLlmTimeoutMs, 180_000, 1, 86_400_000),
|
|
2724
|
-
localLlmMaxContext:
|
|
2725
|
-
parseOptionalIntegerAtLeast(cfg.localLlmMaxContext, 1024, "localLlmMaxContext"),
|
|
2684
|
+
...parseLocalLlmConfig(cfg, localLlmApiKeyEnv, resolveEnvVars),
|
|
2726
2685
|
// Observability (disabled by default to avoid log spam)
|
|
2727
2686
|
slowLogEnabled: cfg.slowLogEnabled === true,
|
|
2728
2687
|
slowLogThresholdMs:
|
package/src/extraction-prompt.ts
CHANGED
|
@@ -45,9 +45,19 @@ export const EXTRACTION_RESPONSE_SHAPE = `{
|
|
|
45
45
|
"episodeTitle": "<six-to-eight word conversation segment title>",
|
|
46
46
|
"relationships": [{"source": "<normalized-name>", "target": "<normalized-name>", "label": "<source-grounded relationship>"}]
|
|
47
47
|
}`;
|
|
48
|
+
export function extractionResponseShape(spanMode: "off" | "shadow" | "on" = "off"): string {
|
|
49
|
+
if (spanMode === "off") return EXTRACTION_RESPONSE_SHAPE;
|
|
50
|
+
return EXTRACTION_RESPONSE_SHAPE.replace(
|
|
51
|
+
`"eventTime": "<optional source temporal expression>"`,
|
|
52
|
+
`"eventTime": "<optional source temporal expression>",
|
|
53
|
+
"span": {"sourceMessageIndex": <message number>, "charStart": <number>, "charEnd": <number>, "frame": "<at most 15 words>"}`,
|
|
54
|
+
);
|
|
55
|
+
}
|
|
48
56
|
export const EXTRACTION_RESPONSE_PLACEHOLDERS: Record<string, true> = {};
|
|
49
|
-
for (const
|
|
50
|
-
|
|
57
|
+
for (const shape of [EXTRACTION_RESPONSE_SHAPE, extractionResponseShape("on")]) {
|
|
58
|
+
for (const placeholder of shape.match(/<[^<>\r\n]+>/g) ?? []) {
|
|
59
|
+
EXTRACTION_RESPONSE_PLACEHOLDERS[placeholder] = true;
|
|
60
|
+
}
|
|
51
61
|
}
|
|
52
62
|
export const CUE_ANCHOR_PROMPT_INSTRUCTION = `- For each fact, emit at most 3 "cueAnchors".
|
|
53
63
|
- Each cue anchor value must be a source-grounded search hook of at most 120 characters, in the form "<main entity or topic> <key aspect>".
|
|
@@ -76,6 +86,30 @@ export function eventTimePromptInstruction(config: PluginConfig): string {
|
|
|
76
86
|
When a fact states when it became or stopped being true, copy that explicit temporal expression verbatim into "eventTime". Omit "eventTime" when no such expression appears; never infer dates.`;
|
|
77
87
|
}
|
|
78
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Span-mode extraction instructions (issue #2333 Phase B). Empty when the
|
|
91
|
+
* mode is off (byte-identical prompt). The offset convention mirrors the
|
|
92
|
+
* Phase A bench: messages numbered in order from 0, offsets index the
|
|
93
|
+
* message's own text (after the `[role] ` tag), [charStart, charEnd)
|
|
94
|
+
* end-exclusive.
|
|
95
|
+
*/
|
|
96
|
+
export function spanModePromptSection(spanMode: "off" | "shadow" | "on"): string {
|
|
97
|
+
if (spanMode === "off") return "";
|
|
98
|
+
const requestBoth = spanMode === "shadow";
|
|
99
|
+
return `
|
|
100
|
+
Span mode (numbered-message offsets):
|
|
101
|
+
- Conversation messages are numbered in order starting at 0 (the "[role] text" blocks).
|
|
102
|
+
- For each fact, return "span": {"sourceMessageIndex": <message number>, "charStart": <number>, "charEnd": <number>, "frame": "<at most 15 words>"} pointing at the verbatim supporting words in that message's text (the text after the "] "). Offsets are [charStart, charEnd), end-exclusive, counting from the first character of the message text.
|
|
103
|
+
- "frame" is at most 15 generated words that make the span self-contained: resolve pronouns to names, name the subject (e.g., frame "Maya's relocation:" + span "moved to Seattle last spring…").${
|
|
104
|
+
requestBoth
|
|
105
|
+
? `
|
|
106
|
+
- This run is in SHADOW mode: ALSO include the full standalone "content" restatement exactly as you would normally write it, in addition to "span".`
|
|
107
|
+
: `
|
|
108
|
+
- Set "content" to the frame text (the short ≤15-word frame) — do not restate the full fact; the span plus frame carry it.`
|
|
109
|
+
}
|
|
110
|
+
- Invalid spans fall back to the frame, so keep the frame informative.`;
|
|
111
|
+
}
|
|
112
|
+
|
|
79
113
|
/**
|
|
80
114
|
* Build extraction instructions shared between local and cloud LLM.
|
|
81
115
|
*
|
|
@@ -170,7 +204,7 @@ When you see something that matches a known entity, use THAT name exactly. Only
|
|
|
170
204
|
`
|
|
171
205
|
: ""
|
|
172
206
|
}
|
|
173
|
-
${eventTimePromptInstruction(config)}
|
|
207
|
+
${eventTimePromptInstruction(config)}${spanModePromptSection(config.extraction?.spanMode ?? "off")}
|
|
174
208
|
Also extract relationships between entities mentioned in the conversation.
|
|
175
209
|
- Format: {source: "entity-name", target: "entity-name", label: "relationship description"}
|
|
176
210
|
- Max 5 relationships per extraction
|
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
export interface ExtractionSourceGroundingOptions {
|
|
30
30
|
sourceGrounding: boolean;
|
|
31
31
|
anchorTemporalExpressions: boolean;
|
|
32
|
+
spanMode?: "off" | "shadow" | "on";
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
export function applyExtractionSourceGrounding(
|
|
@@ -60,6 +61,7 @@ export function applyExtractionSourceGrounding(
|
|
|
60
61
|
anchorSource(assertionSourceText),
|
|
61
62
|
anchoredRoleSources,
|
|
62
63
|
options.anchorTemporalExpressions ? anchorSource : undefined,
|
|
64
|
+
options.spanMode ?? "off",
|
|
63
65
|
);
|
|
64
66
|
}
|
|
65
67
|
|
|
@@ -653,18 +655,51 @@ function filterGroundedFact(
|
|
|
653
655
|
assertionSource: string | undefined,
|
|
654
656
|
roleAssertionSources: ExtractionGroundingRoleSources | undefined,
|
|
655
657
|
eventTimeNormalizer: ((eventTime: string) => string) | undefined,
|
|
658
|
+
spanMode: "off" | "shadow" | "on" = "off",
|
|
656
659
|
): ExtractionResult["facts"][number] | undefined {
|
|
657
|
-
|
|
660
|
+
// Span-materialized content (issue #2333) is "frame: verbatim slice". The
|
|
661
|
+
// frame is generated deixis, so full-content gating would drop a verbatim
|
|
662
|
+
// fact. Only on-mode facts whose content is that materialized shape may
|
|
663
|
+
// fall back to the slice. Shadow stays zero-diff with off.
|
|
664
|
+
const quote = typeof fact.quote === "string" ? fact.quote : "";
|
|
665
|
+
const materializedPrefix = quote.length > 0 && fact.content.endsWith(quote) && fact.content !== quote
|
|
666
|
+
? fact.content.slice(0, fact.content.length - quote.length)
|
|
667
|
+
: "";
|
|
668
|
+
const embeddedQuote =
|
|
669
|
+
spanMode === "on"
|
|
670
|
+
&& quote.trim().length > 0
|
|
671
|
+
&& (materializedPrefix.endsWith(": ") || /[:—-]\s$/.test(materializedPrefix))
|
|
672
|
+
? quote
|
|
673
|
+
: undefined;
|
|
674
|
+
const contentContext = selectGroundingContext(
|
|
658
675
|
fact.content,
|
|
659
676
|
resolveGroundingContext(fact.content, source, assertionSource, roleAssertionSources),
|
|
660
677
|
);
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
678
|
+
let gateContent = fact.content;
|
|
679
|
+
let factContext = contentContext;
|
|
680
|
+
if (
|
|
681
|
+
!isGroundedCandidate(
|
|
682
|
+
fact.content,
|
|
683
|
+
contentContext.source,
|
|
684
|
+
contentContext.assertionSource,
|
|
685
|
+
false,
|
|
686
|
+
contentContext.allowRoleNormalization,
|
|
687
|
+
)
|
|
688
|
+
) {
|
|
689
|
+
if (embeddedQuote === undefined) return undefined;
|
|
690
|
+
gateContent = embeddedQuote;
|
|
691
|
+
factContext = selectGroundingContext(
|
|
692
|
+
gateContent,
|
|
693
|
+
resolveGroundingContext(gateContent, source, assertionSource, roleAssertionSources),
|
|
694
|
+
);
|
|
695
|
+
if (!isGroundedCandidate(
|
|
696
|
+
gateContent,
|
|
697
|
+
factContext.source,
|
|
698
|
+
factContext.assertionSource,
|
|
699
|
+
false,
|
|
700
|
+
factContext.allowRoleNormalization,
|
|
701
|
+
)) return undefined;
|
|
702
|
+
}
|
|
668
703
|
const factEventTime = fact.eventTime;
|
|
669
704
|
const groundedFactEventTime = factEventTime === undefined
|
|
670
705
|
? undefined
|
|
@@ -672,7 +707,7 @@ function filterGroundedFact(
|
|
|
672
707
|
const factSupportingSentences = sourceSentences(factContext.assertionSource ?? factContext.source).filter(
|
|
673
708
|
(sentence) =>
|
|
674
709
|
isGroundedCandidate(
|
|
675
|
-
|
|
710
|
+
gateContent,
|
|
676
711
|
sentence,
|
|
677
712
|
undefined,
|
|
678
713
|
false,
|
|
@@ -1068,6 +1103,7 @@ export function filterExtractionResultBySource(
|
|
|
1068
1103
|
assertionSource?: string,
|
|
1069
1104
|
roleAssertionSources?: ExtractionGroundingRoleSources,
|
|
1070
1105
|
eventTimeNormalizer?: (eventTime: string) => string,
|
|
1106
|
+
spanMode: "off" | "shadow" | "on" = "off",
|
|
1071
1107
|
): ExtractionResult {
|
|
1072
1108
|
if (source.trim().length === 0) {
|
|
1073
1109
|
return {
|
|
@@ -1088,6 +1124,7 @@ export function filterExtractionResultBySource(
|
|
|
1088
1124
|
assertionSource,
|
|
1089
1125
|
roleAssertionSources,
|
|
1090
1126
|
eventTimeNormalizer,
|
|
1127
|
+
spanMode,
|
|
1091
1128
|
);
|
|
1092
1129
|
return grounded === undefined ? [] : [grounded];
|
|
1093
1130
|
});
|
|
@@ -99,6 +99,7 @@ export function filterExtractionResultBySource(
|
|
|
99
99
|
assertionSource?: string,
|
|
100
100
|
roleAssertionSources?: ExtractionGroundingRoleSources,
|
|
101
101
|
eventTimeNormalizer?: (eventTime: string) => string,
|
|
102
|
+
spanMode: "off" | "shadow" | "on" = "off",
|
|
102
103
|
): ExtractionResult {
|
|
103
|
-
return filterGroundingRules(result, source, assertionSource, roleAssertionSources, eventTimeNormalizer);
|
|
104
|
+
return filterGroundingRules(result, source, assertionSource, roleAssertionSources, eventTimeNormalizer, spanMode);
|
|
104
105
|
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Span-mode extraction config + fact span-ref types (issue #2333 Phase B,
|
|
3
|
+
* bench-gated). Sibling module so config.ts and types.ts stay under their
|
|
4
|
+
* structural ratchets (#1995); types.ts re-exports both.
|
|
5
|
+
*
|
|
6
|
+
* Default "off"; an unrecognized value is REJECTED, never defaulted
|
|
7
|
+
* (checklist #39) — silently ignoring it would run an unbenched extraction
|
|
8
|
+
* contract.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { parseExtractionLivenessConfig } from "./extraction-liveness.js";
|
|
13
|
+
|
|
14
|
+
export interface ExtractionSpanConfig {
|
|
15
|
+
/**
|
|
16
|
+
* - "off" (default): extraction generates content as before.
|
|
17
|
+
* - "shadow": request spans AND content; materialize + compare + log
|
|
18
|
+
* agreement telemetry; persist the generated content (zero behavior
|
|
19
|
+
* change).
|
|
20
|
+
* - "on": persist materialized frame+span content, falling back per fact
|
|
21
|
+
* to generated content when the span fails validation.
|
|
22
|
+
*/
|
|
23
|
+
spanMode: "off" | "shadow" | "on";
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface ExtractedFactSpanRef {
|
|
27
|
+
/** Ordinal of the source turn in the extraction segment (0-based). */
|
|
28
|
+
sourceMessageIndex: number;
|
|
29
|
+
/** [charStart, charEnd) into the turn's exact in-memory text (UTF-16 code units). */
|
|
30
|
+
charStart: number;
|
|
31
|
+
charEnd: number;
|
|
32
|
+
/** ≤ 15 generated words making the span self-contained (resolves deixis). */
|
|
33
|
+
frame: string;
|
|
34
|
+
/** Optional prompt-source identity; when present it must match the captured stamp. */
|
|
35
|
+
sourceHash?: string;
|
|
36
|
+
sourceLength?: number;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const EXTRACTION_SPAN_MODES = ["off", "shadow", "on"] as const;
|
|
40
|
+
const extractionSpanBlockSchema = z.object({ spanMode: z.unknown().optional() }).strict();
|
|
41
|
+
|
|
42
|
+
/** Span + liveness fields for parseConfig. One spread keeps config.ts at the ratchet. */
|
|
43
|
+
export function parseExtractionFields(cfg: Record<string, unknown>) {
|
|
44
|
+
return {
|
|
45
|
+
extraction: parseExtractionSpanConfig(cfg.extraction),
|
|
46
|
+
extractionLiveness: parseExtractionLivenessConfig(cfg),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function parseExtractionSpanConfig(raw: unknown): ExtractionSpanConfig {
|
|
51
|
+
if (raw === undefined) {
|
|
52
|
+
return { spanMode: "off" };
|
|
53
|
+
}
|
|
54
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
55
|
+
throw new Error(
|
|
56
|
+
`extraction must be an object with optional spanMode (got ${JSON.stringify(raw)}). Omit the key for the default "off".`,
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
const block = raw as Record<string, unknown>;
|
|
60
|
+
const parsed = extractionSpanBlockSchema.safeParse(block);
|
|
61
|
+
if (!parsed.success) {
|
|
62
|
+
const unknownKeys = parsed.error.issues.flatMap((issue) =>
|
|
63
|
+
issue.code === "unrecognized_keys" ? issue.keys : []
|
|
64
|
+
);
|
|
65
|
+
throw new Error(
|
|
66
|
+
`extraction has unknown propert${unknownKeys.length === 1 ? "y" : "ies"}: ${unknownKeys.join(", ")}. Allowed: "spanMode".`,
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
const spanMode = block.spanMode;
|
|
70
|
+
if (spanMode === undefined) {
|
|
71
|
+
return { spanMode: "off" };
|
|
72
|
+
}
|
|
73
|
+
for (const mode of EXTRACTION_SPAN_MODES) {
|
|
74
|
+
if (spanMode === mode) {
|
|
75
|
+
return { spanMode: mode };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
throw new Error(
|
|
79
|
+
`extraction.spanMode must be one of "off", "shadow", "on" (got ${JSON.stringify(spanMode)}). Omit the key for the default "off".`,
|
|
80
|
+
);
|
|
81
|
+
}
|