@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/access-operations.ts","../src/relay/mission-access.ts","../src/relay/mission.ts","../src/location/access-operations.ts","../src/standup/access-operations.ts"],"sourcesContent":["/**\n * Pilot operation definitions for the access boundary (issue #1525).\n *\n * Three operations migrate through the registry in this PR — `memory_get`,\n * `memory_search`, and the `memory_store` write op — so the boundary's\n * normalization matrix (rules 17/28/36/48/51) and shared error mapping reach\n * MCP, HTTP, and CLI from one place. Domain-group migrations (memory ops →\n * connectors → namespaces …) land as follow-up PRs that add `defineOperation`\n * calls here and delete the surface-local validation they replace.\n *\n * Importing this module for its side effects registers the pilot operations;\n * surfaces then dispatch via {@link getOperation} from `./access-boundary.js`.\n */\n\nimport { z } from \"zod\";\n\nimport { defineOperation } from \"./access-boundary.js\";\nimport { memoryStoreRequestSchema, type MemoryStoreRequest } from \"./access-schema.js\";\nimport { EngramAccessInputError } from \"./access-service.js\";\nimport { CorrectionContractError } from \"./correction/correction-contract.js\";\nimport { externalWikiSearchOperation } from \"./external-wiki-access.js\";\nimport type {\n EngramAccessMemoryResponse,\n EngramAccessWriteResponse,\n} from \"./access-service.js\";\nimport {\n DECISION_SUBCOMMANDS,\n type DecisionSurfaceRequest,\n type DecisionSurfaceResponse,\n} from \"./coding/decision-surfaces.js\";\nimport {\n type ArchitectureSurfaceRequest,\n type ArchitectureSurfaceResponse,\n} from \"./coding/architecture-surfaces.js\";\nimport {\n type CodegraphSurfaceRequest,\n type CodegraphSurfaceResponse,\n isCodegraphToolName,\n} from \"./coding/codegraph-surfaces.js\";\nimport {\n DELTA_SUBCOMMANDS,\n type DeltaSurfaceRequest,\n type DeltaSurfaceResponse,\n} from \"./coding/session-delta-surfaces.js\";\n\n// ---------------------------------------------------------------------------\n// memory_get — fetch one memory by id\n// ---------------------------------------------------------------------------\n\n/**\n * `memoryId` is required and non-empty (rule 51: the MCP dispatcher previously\n * fell back to `typeof args.memoryId === \"string\" ? args.memoryId : \"\"`,\n * silently passing an empty id into the service). `namespace` is\n * `.nullable().optional()` because MCP clients send `null` (gotcha #2).\n * `namespace` has no `.min(1)` because the pre-boundary handlers forwarded\n * empty/whitespace strings, and `resolveNamespace` treats empty identically\n * to absent (both trim to falsy → default namespace). Rejecting empty would\n * break HTTP callers that send a bare `?namespace=` (Cursor review).\n */\nconst memoryGetSchema = z.object({\n memoryId: z.string().trim().min(1, \"memoryId is required\").max(512),\n // Issue #1582 — when memoryId is a `[m:xxxx]` handle, sessionKey scopes the\n // resolution to this session's recent recall history.\n sessionKey: z.string().trim().min(1).max(512).nullable().optional(),\n namespace: z.string().trim().max(256).nullable().optional(),\n});\n\nexport interface MemoryGetInput {\n readonly memoryId: string;\n readonly sessionKey?: string | null;\n readonly namespace?: string | null;\n}\n\nexport interface MemoryGetOutput {\n readonly result: EngramAccessMemoryResponse;\n}\n\nexport const memoryGetOperation = defineOperation<MemoryGetInput, MemoryGetOutput>({\n name: \"memory_get\",\n description: \"Fetch one memory by id.\",\n schema: memoryGetSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryGet(\n input.memoryId,\n input.namespace ?? undefined,\n ctx.authenticatedPrincipal,\n input.sessionKey ?? undefined,\n );\n return { result };\n },\n});\n\n// ---------------------------------------------------------------------------\n// memory_search — semantic search across memories\n// ---------------------------------------------------------------------------\n\nconst memorySearchSchema = z.object({\n query: z.string().trim().min(1, \"query is required\").max(2048),\n namespace: z.string().trim().max(256).nullable().optional(),\n // No upper cap: the pre-boundary MCP handler forwarded any finite number to\n // memorySearch, and the QMD/search backends honor large limits. Capping at\n // 100 would reject existing clients that request larger result sets.\n maxResults: z.number().int().min(1).nullable().optional(),\n collection: z.string().trim().min(1).max(256).nullable().optional(),\n // Ranking mode. Mirrors the in-process manager's override so a host that\n // asks for vector or lexical ranking gets the same semantics whether it\n // talks to an embedded orchestrator or a standalone daemon (issue #2120).\n mode: z.enum([\"search\", \"hybrid\", \"bm25\", \"vector\"]).nullable().optional(),\n});\n\nexport interface MemorySearchInput {\n readonly query: string;\n readonly namespace?: string | null;\n readonly maxResults?: number | null;\n readonly collection?: string | null;\n readonly mode?: \"search\" | \"hybrid\" | \"bm25\" | \"vector\" | null;\n}\n\nexport interface MemorySearchOutput {\n readonly result: {\n readonly query: string;\n readonly results: ReadonlyArray<{ path: string; score: number; snippet: string }>;\n readonly count: number;\n };\n}\n\nexport const memorySearchOperation = defineOperation<MemorySearchInput, MemorySearchOutput>({\n name: \"memory_search\",\n description: \"Search memories across readable namespaces.\",\n schema: memorySearchSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memorySearch({\n query: input.query,\n namespace: input.namespace ?? undefined,\n maxResults: input.maxResults ?? undefined,\n collection: input.collection ?? undefined,\n mode: input.mode ?? undefined,\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\n// ---------------------------------------------------------------------------\n// memory_store — the pilot WRITE op\n// ---------------------------------------------------------------------------\n\nexport type MemoryStoreInput = MemoryStoreRequest;\n\nexport interface MemoryStoreOutput {\n readonly result: EngramAccessWriteResponse;\n}\n\nexport const memoryStoreOperation = defineOperation<MemoryStoreInput, MemoryStoreOutput>({\n name: \"memory_store\",\n description: \"Store an explicit memory through the access layer.\",\n // Reuse the existing schema verbatim — the migration is behavior-preserving;\n // the schema's external contract is NOT changing in this PR (per the issue's\n // pitfall note).\n schema: memoryStoreRequestSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryStore(\n {\n ...input,\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n ...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),\n },\n // Forward transport-level hooks (e.g. HTTP's atomic write-quota gate)\n // so the hook still fires inside the service's idempotent-write lock —\n // never before, never on a replay (#1434 invariant preserved by the\n // boundary migration).\n\n ctx.hooks,\n );\n return { result };\n },\n});\n\n// ---------------------------------------------------------------------------\n// coding_decision — decision-record surfaces (issue #1548 Track A PR 2)\n// ---------------------------------------------------------------------------\n\n/**\n * The subcommand field is required and MUST be one of the four valid values\n * (rule 51 — reject loudly, list the options, never silently default). The\n * remaining fields are optional because each subcommand uses a different\n * subset; the handler validates subcommand-specific requirements after\n * routing.\n */\n/**\n * MCP clients send `null` for absent optional fields. Zod `.optional()`\n * rejects `null`, so strip nulls at the object level before the inner\n * schema validates (review: cursor null-field thread).\n */\nconst codingDecisionSchema = z.preprocess(\n (data) => {\n if (data && typeof data === \"object\" && !Array.isArray(data)) {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(data as Record<string, unknown>)) {\n if (v !== null) out[k] = v;\n }\n return out;\n }\n return data;\n },\n z.object({\n subcommand: z.enum(DECISION_SUBCOMMANDS),\n sessionKey: z.string().trim().max(512).optional(),\n namespace: z.string().trim().max(256).optional(),\n id: z.string().trim().max(512).optional(),\n title: z.string().trim().max(512).optional(),\n status: z.string().trim().max(64).optional(),\n context: z.string().trim().max(8192).optional(),\n decision: z.string().trim().max(8192).optional(),\n consequences: z.string().trim().max(8192).optional(),\n entityRefs: z.array(z.string().trim().min(1).max(256)).optional(),\n supersedesId: z.string().trim().max(512).optional(),\n }),\n);\n\nexport type CodingDecisionInput = DecisionSurfaceRequest;\nexport type CodingDecisionOutput = { result: DecisionSurfaceResponse };\n\nexport const codingDecisionOperation = defineOperation<\n CodingDecisionInput,\n CodingDecisionOutput\n>({\n name: \"coding_decision\",\n description:\n \"List, get, record, or supersede decision records in the session's coding namespace (issue #1548 Track A).\",\n schema: codingDecisionSchema as z.ZodType<CodingDecisionInput>,\n handler: async (input, ctx) => {\n const result = await ctx.service.codingDecision(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\n// ---------------------------------------------------------------------------\n// coding_architecture — architecture-card surfaces (issue #1548 Track A PR 3)\n// ---------------------------------------------------------------------------\n\nconst codingArchitectureSchema = z.preprocess(\n (data) => {\n if (data !== null && typeof data === \"object\" && !Array.isArray(data)) {\n const obj = data as Record<string, unknown>;\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== null) cleaned[key] = value;\n }\n return cleaned;\n }\n return data;\n },\n z.object({\n subcommand: z.enum([\"get\", \"refresh\"]),\n sessionKey: z.string().optional(),\n namespace: z.string().optional(),\n }),\n);\n\nexport type CodingArchitectureInput = ArchitectureSurfaceRequest;\nexport type CodingArchitectureOutput = { result: ArchitectureSurfaceResponse };\n\nexport const codingArchitectureOperation = defineOperation<\n CodingArchitectureInput,\n CodingArchitectureOutput\n>({\n name: \"coding_architecture\",\n description:\n \"Get or refresh the architecture card for the session's coding namespace (issue #1548 Track A PR 3).\",\n schema: codingArchitectureSchema as z.ZodType<CodingArchitectureInput>,\n handler: async (input, ctx) => {\n const result = await ctx.service.codingArchitecture(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nconst codegraphSurfaceSchema = z.preprocess(\n (data) => {\n if (data !== null && typeof data === \"object\" && !Array.isArray(data)) {\n const obj = data as Record<string, unknown>;\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== null) cleaned[key] = value;\n }\n return cleaned;\n }\n return data;\n },\n z.object({\n tool: z.string().refine(isCodegraphToolName, {\n message: \"tool must be one of the codegraph tool names\",\n }),\n sessionKey: z.string().max(512).optional(),\n principal: z.string().max(256).optional(),\n project: z.string().max(256).optional(),\n query: z.string().max(2048).optional(),\n limit: z.number().int().positive().max(200).optional(),\n start: z.string().max(512).optional(),\n direction: z.string().max(64).optional(),\n depth: z.number().int().positive().max(10).optional(),\n qualifiedName: z.string().max(1024).optional(),\n path: z.string().max(2048).optional(),\n structuredQuery: z.record(z.string(), z.unknown()).optional(),\n head: z.string().max(256).optional(),\n repoRoot: z.string().max(2048).optional(),\n mode: z.string().max(64).optional(),\n confirm: z.boolean().optional(),\n subcommand: z.string().max(64).optional(),\n id: z.string().max(512).optional(),\n title: z.string().max(512).optional(),\n status: z.string().max(64).optional(),\n context: z.string().max(8192).optional(),\n decision: z.string().max(8192).optional(),\n consequences: z.string().max(8192).optional(),\n entityRefs: z.array(z.string().max(256)).optional(),\n supersedesId: z.string().max(512).optional(),\n traces: z.array(z.unknown()).optional(),\n }),\n) as z.ZodType<CodegraphSurfaceRequest>;\n\n// ---------------------------------------------------------------------------\n// coding_delta — session-delta surface (issue #1548 Track A PR 4)\n// ---------------------------------------------------------------------------\n\nconst codingDeltaSchema = z.preprocess(\n (data) => {\n if (data !== null && typeof data === \"object\" && !Array.isArray(data)) {\n const obj = data as Record<string, unknown>;\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== null) cleaned[key] = value;\n }\n return cleaned;\n }\n return data;\n },\n z.object({\n subcommand: z.enum(DELTA_SUBCOMMANDS),\n sessionKey: z.string().trim().max(512).optional(),\n namespace: z.string().trim().max(256).optional(),\n }),\n);\n\nexport type CodingDeltaInput = DeltaSurfaceRequest;\nexport type CodingDeltaOutput = { result: DeltaSurfaceResponse };\n\nexport const codingDeltaOperation = defineOperation<\n CodingDeltaInput,\n CodingDeltaOutput\n>({\n name: \"coding_delta\",\n description:\n \"Get the session delta (commits + touched files since last seen) for the session's coding namespace (issue #1548 Track A PR 4).\",\n schema: codingDeltaSchema as z.ZodType<CodingDeltaInput>,\n handler: async (input, ctx) => {\n const result = await ctx.service.codingDelta(input, ctx.authenticatedPrincipal);\n return { result };\n },\n});\n\n// ---------------------------------------------------------------------------\n// memory_correct_plan / memory_correct_apply — Correction Contract (#1580)\n// ---------------------------------------------------------------------------\n//\n// One plan/apply pipeline for every memory correction (supersession,\n// invalidation, tombstone, edit, rescope, redaction). The MCP/HTTP/CLI\n// surfaces all dispatch through these two ops so the boundary's validation +\n// error mapping reach every correction path (rule 22 / 39).\n\nconst memoryCorrectPlanSchema = z.preprocess(\n (data) => {\n if (data && typeof data === \"object\" && !Array.isArray(data)) {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(data as Record<string, unknown>)) {\n if (v !== null) out[k] = v;\n }\n return out;\n }\n return data;\n },\n z.object({\n text: z.string().trim().min(1).max(10_000),\n targetIds: z.array(z.string().trim().min(1).max(512)).optional(),\n sessionKey: z.string().trim().max(512).optional(),\n namespace: z.string().trim().max(256).optional(),\n }),\n);\n\nexport interface MemoryCorrectPlanInput {\n text: string;\n targetIds?: string[];\n sessionKey?: string;\n namespace?: string;\n}\n\nexport interface MemoryCorrectPlanOutput {\n readonly result: unknown; // CorrectionPlan — opaque to the boundary\n}\n\nexport const memoryCorrectPlanOperation = defineOperation<\n MemoryCorrectPlanInput,\n MemoryCorrectPlanOutput\n>({\n name: \"memory_correct_plan\",\n description:\n \"Plan a memory correction from a plain-language statement (issue #1580). Returns a CorrectionPlan with a diff preview; apply via memory_correct_apply.\",\n schema: memoryCorrectPlanSchema as z.ZodType<MemoryCorrectPlanInput>,\n handler: async (input, ctx) => {\n try {\n const result = await ctx.service.correctionPlan(\n {\n text: input.text,\n ...(input.targetIds ? { targetIds: input.targetIds } : {}),\n ...(input.sessionKey ? { sessionKey: input.sessionKey } : {}),\n ...(input.namespace ? { namespace: input.namespace } : {}),\n ...(ctx.authenticatedPrincipal ? { principal: ctx.authenticatedPrincipal } : {}),\n },\n ctx.abortSignal ? { abortSignal: ctx.abortSignal } : undefined,\n );\n return { result };\n } catch (err) {\n if (err instanceof CorrectionContractError) throw new EngramAccessInputError(err.message);\n throw err;\n }\n },\n});\n\nconst memoryCorrectApplySchema = z.preprocess(\n (data) => {\n if (data && typeof data === \"object\" && !Array.isArray(data)) {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(data as Record<string, unknown>)) {\n if (v !== null) out[k] = v;\n }\n return out;\n }\n return data;\n },\n z.object({\n planId: z.string().trim().min(1).max(512),\n confirm: z.boolean().optional(),\n sessionKey: z.string().trim().max(512).optional(),\n namespace: z.string().trim().max(256).optional(),\n }),\n);\n\nexport interface MemoryCorrectApplyInput {\n planId: string;\n confirm?: boolean;\n sessionKey?: string;\n namespace?: string;\n}\n\nexport interface MemoryCorrectApplyOutput {\n readonly result: unknown; // CorrectionOutcome — opaque to the boundary\n}\n\nexport const memoryCorrectApplyOperation = defineOperation<\n MemoryCorrectApplyInput,\n MemoryCorrectApplyOutput\n>({\n name: \"memory_correct_apply\",\n description:\n \"Apply a planned memory correction by planId (issue #1580). Requires confirm: true when correction.applyRequiresConfirm is on (default).\",\n schema: memoryCorrectApplySchema as z.ZodType<MemoryCorrectApplyInput>,\n handler: async (input, ctx) => {\n try {\n const result = await ctx.service.correctionApply(input.planId, {\n confirm: input.confirm === true,\n ...(input.sessionKey ? { sessionKey: input.sessionKey } : {}),\n ...(input.namespace ? { namespace: input.namespace } : {}),\n ...(ctx.authenticatedPrincipal ? { principal: ctx.authenticatedPrincipal } : {}),\n ...(ctx.abortSignal ? { abortSignal: ctx.abortSignal } : {}),\n });\n return { result };\n } catch (err) {\n if (err instanceof CorrectionContractError) throw new EngramAccessInputError(err.message);\n throw err;\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Surface registration map — what each transport calls the pilot ops\n// ---------------------------------------------------------------------------\n\n/**\n * The canonical short names (no `engram.`/`remnic.` prefix) of the operations\n * the boundary owns today. The fitness test treats this set as the migrated\n * set; everything else on a surface is unmigrated and counted by the ratchet.\n */\nexport const codegraphIndexOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_index\",\n description:\n \"Codegraph parity tool (issue #1554): index. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphListProjectsOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_list_projects\",\n description:\n \"Codegraph parity tool (issue #1554): list_projects. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphDeleteProjectOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_delete_project\",\n description:\n \"Codegraph parity tool (issue #1554): delete_project. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphIndexStatusOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_index_status\",\n description:\n \"Codegraph parity tool (issue #1554): index_status. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphSearchGraphOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_search_graph\",\n description:\n \"Codegraph parity tool (issue #1554): search_graph. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphTracePathOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_trace_path\",\n description:\n \"Codegraph parity tool (issue #1554): trace_path. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphDetectChangesOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_detect_changes\",\n description:\n \"Codegraph parity tool (issue #1554): detect_changes. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphQueryGraphOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_query_graph\",\n description:\n \"Codegraph parity tool (issue #1554): query_graph. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphGetSchemaOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_get_schema\",\n description:\n \"Codegraph parity tool (issue #1554): get_schema. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphGetSnippetOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_get_snippet\",\n description:\n \"Codegraph parity tool (issue #1554): get_snippet. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphGetArchitectureOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_get_architecture\",\n description:\n \"Codegraph parity tool (issue #1554): get_architecture. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphSearchCodeOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_search_code\",\n description:\n \"Codegraph parity tool (issue #1554): search_code. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphManageAdrOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_manage_adr\",\n description:\n \"Codegraph parity tool (issue #1554): manage_adr. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\nexport const codegraphIngestTracesOperation = defineOperation<\n CodegraphSurfaceRequest,\n { result: CodegraphSurfaceResponse }\n>({\n name: \"codegraph_ingest_traces\",\n description:\n \"Codegraph parity tool (issue #1554): ingest_traces. Delegates to the shared codegraph surface handler.\",\n schema: codegraphSurfaceSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.codegraphTool(input, ctx.authenticatedPrincipal, ctx.sourceConnector);\n return { result };\n },\n});\n\n// Batch-migrated operations (issue #1525): registers all remaining\n// handlers through the boundary as a side effect of importing this module.\nimport \"./access-operations-batch.js\";\n// Owner-controlled support passport operations (issue #2355).\nimport \"./support-passport/access-operations.js\";\n// Remnic Relay mission evidence operations (issue #1966).\nimport \"./relay/mission-access.js\";\n// Location sync surfaces (issue #2047).\nimport \"./location/access-operations.js\";\nimport \"./standup/access-operations.js\";\n\nexport const REGISTERED_OPERATIONS = [\n memoryGetOperation.spec.name,\n memorySearchOperation.spec.name,\n externalWikiSearchOperation.spec.name,\n memoryStoreOperation.spec.name,\n codingDecisionOperation.spec.name,\n codingArchitectureOperation.spec.name,\n codegraphIndexOperation.spec.name,\n codegraphListProjectsOperation.spec.name,\n codegraphDeleteProjectOperation.spec.name,\n codegraphIndexStatusOperation.spec.name,\n codegraphSearchGraphOperation.spec.name,\n codegraphTracePathOperation.spec.name,\n codegraphDetectChangesOperation.spec.name,\n codegraphQueryGraphOperation.spec.name,\n codegraphGetSchemaOperation.spec.name,\n codegraphGetSnippetOperation.spec.name,\n codegraphGetArchitectureOperation.spec.name,\n codegraphSearchCodeOperation.spec.name,\n codegraphManageAdrOperation.spec.name,\n codegraphIngestTracesOperation.spec.name,\n codingDeltaOperation.spec.name,\n memoryCorrectPlanOperation.spec.name,\n memoryCorrectApplyOperation.spec.name,\n] as const;\n","import { z } from \"zod\";\n\nimport { type OperationContext, defineOperation } from \"../access-boundary.js\";\nimport { EngramAccessInputError, type EngramAccessService } from \"../access-service.js\";\nimport {\n RELAY_MISSION_MAX_EVENT_LIMIT,\n RelayIsoDateTimeSchema,\n type RelayMissionAppendResult,\n type RelayMissionEventInput,\n RelayMissionEventInputSchema,\n RelayMissionIdSchema,\n type RelayMissionReadOptions,\n RelayMissionReadOptionsSchema,\n type RelayMissionSnapshot,\n RelayMissionStore,\n} from \"./mission.js\";\n\nconst namespaceSchema = z.string().trim().min(1).max(128).nullable().optional();\n\nconst RelayMissionAppendAccessSchema = z\n .object({\n missionId: RelayMissionIdSchema,\n namespace: namespaceSchema,\n event: RelayMissionEventInputSchema,\n })\n .strict();\n\nconst optionalLimitSchema = z.preprocess((value) => {\n if (value === undefined || value === null) return undefined;\n if (typeof value === \"string\" && /^(?:0|[1-9]\\d*)$/.test(value)) return Number(value);\n return value;\n}, z.number().int().min(1).max(RELAY_MISSION_MAX_EVENT_LIMIT).optional());\n\nconst RelayMissionReadAccessSchema = z\n .object({\n missionId: RelayMissionIdSchema,\n namespace: namespaceSchema,\n since: RelayIsoDateTimeSchema.optional(),\n until: RelayIsoDateTimeSchema.optional(),\n limit: optionalLimitSchema,\n })\n .strict()\n .refine(\n (value) =>\n value.since === undefined || value.until === undefined || Date.parse(value.since) < Date.parse(value.until),\n { message: \"since must be earlier than until\", path: [\"until\"] }\n );\n\nexport interface RelayMissionAppendAccessInput {\n missionId: string;\n namespace?: string | null;\n event: RelayMissionEventInput;\n}\n\nexport interface RelayMissionReadAccessInput extends RelayMissionReadOptions {\n missionId: string;\n namespace?: string | null;\n}\n\nexport interface RelayMissionAppendAccessOutput {\n result: RelayMissionAppendResult;\n}\n\nexport interface RelayMissionReadAccessOutput {\n result: RelayMissionSnapshot;\n}\n\n/**\n * Shared service contract for transports that need to append Relay evidence.\n * Namespace resolution stays in the existing access service so the append\n * inherits the same tenancy and principal rules as every memory write.\n */\nexport async function appendRelayMissionEvent(\n service: EngramAccessService,\n input: RelayMissionAppendAccessInput,\n authenticatedPrincipal?: string,\n beforeAppend?: () => void | Promise<void>\n): Promise<RelayMissionAppendResult> {\n const event = RelayMissionEventInputSchema.parse(input.event);\n const approvalPrincipal = authenticatedPrincipal?.trim() || undefined;\n if (event.payload.kind === \"correction_approved\" && event.payload.approvedBy.kind === \"human\") {\n if (!approvalPrincipal) {\n throw new EngramAccessInputError(\n \"Relay human approval requires a server-resolved authenticated principal\"\n );\n }\n if (event.payload.approvedBy.id !== approvalPrincipal) {\n throw new EngramAccessInputError(\n \"Relay human approval identity must match the server-resolved authenticated principal\"\n );\n }\n }\n const resolved = await service.getWritableStorageForNamespace(input.namespace ?? undefined, approvalPrincipal);\n const store = new RelayMissionStore({\n rootDir: resolved.storage.dir,\n namespace: resolved.namespace,\n });\n return store.append(input.missionId, event, { authenticatedPrincipal: approvalPrincipal, beforeAppend });\n}\n\n/** Namespace-authorized, bounded Relay snapshot read shared by HTTP and UI. */\nexport async function readRelayMission(\n service: EngramAccessService,\n input: RelayMissionReadAccessInput,\n authenticatedPrincipal?: string\n): Promise<RelayMissionSnapshot> {\n const resolved = await service.getReadableStorageForNamespace(input.namespace ?? undefined, authenticatedPrincipal);\n const store = new RelayMissionStore({\n rootDir: resolved.storage.dir,\n namespace: resolved.namespace,\n });\n const options = RelayMissionReadOptionsSchema.parse({\n ...(input.since === undefined ? {} : { since: input.since }),\n ...(input.until === undefined ? {} : { until: input.until }),\n ...(input.limit === undefined ? {} : { limit: input.limit }),\n });\n return store.read(input.missionId, options);\n}\n\nexport const relayMissionAppendOperation = defineOperation<\n RelayMissionAppendAccessInput,\n RelayMissionAppendAccessOutput\n>({\n name: \"relay_mission_append\",\n description: \"Append one evidence-backed event to an isolated Relay mission.\",\n schema: RelayMissionAppendAccessSchema as z.ZodType<RelayMissionAppendAccessInput>,\n handler: async (input, ctx: OperationContext) => ({\n result: await appendRelayMissionEvent(ctx.service, input, ctx.authenticatedPrincipal, ctx.hooks?.enforceWriteQuota),\n }),\n});\n\nexport const relayMissionReadOperation = defineOperation<RelayMissionReadAccessInput, RelayMissionReadAccessOutput>({\n name: \"relay_mission_read\",\n description: \"Read one bounded, browser-ready Relay mission receipt.\",\n schema: RelayMissionReadAccessSchema as z.ZodType<RelayMissionReadAccessInput>,\n handler: async (input, ctx: OperationContext) => ({\n result: await readRelayMission(ctx.service, input, ctx.authenticatedPrincipal),\n }),\n});\n","import { createHash, randomUUID } from \"node:crypto\";\nimport { promises as fs, constants as fsConstants } from \"node:fs\";\nimport path from \"node:path\";\nimport { z } from \"zod\";\n\nimport { serializeMutations, withHeldFileLock } from \"../utils/serialize-mutations.js\";\n\nexport const RELAY_MISSION_SCHEMA_VERSION = \"1\" as const;\nexport const RELAY_MISSION_MAX_FILE_BYTES = 4 * 1024 * 1024;\nexport const RELAY_MISSION_MAX_LINE_BYTES = 64 * 1024;\nexport const RELAY_MISSION_MAX_EVENTS = 2_000;\nexport const RELAY_MISSION_DEFAULT_EVENT_LIMIT = 200;\nexport const RELAY_MISSION_MAX_EVENT_LIMIT = 500;\n\nexport const RelayMissionIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, {\n message: \"must contain only lowercase letters, numbers, and single hyphens\",\n });\n\nconst identifierSchema = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[A-Za-z0-9](?:[A-Za-z0-9._:@-]{0,126}[A-Za-z0-9])?$/, {\n message: \"must be a bounded identifier\",\n });\n\nconst namespaceSchema = z.string().trim().min(1).max(128);\nconst authenticatedPrincipalSchema = z.string().trim().min(1).max(256);\nconst shortTextSchema = z.string().trim().min(1).max(240);\nconst statementSchema = z.string().trim().min(1).max(4_000);\nconst uniqueIdentifierListSchema = (minimum: number, maximum: number) =>\n z\n .array(identifierSchema)\n .min(minimum)\n .max(maximum)\n .refine((values) => new Set(values).size === values.length, \"must not contain duplicate identifiers\");\n\nexport const RelayIsoDateTimeSchema = z\n .string()\n .datetime({ offset: true })\n .refine((value) => Number.isFinite(Date.parse(value)), \"must be a representable timestamp\");\n\nexport const RelayEvidenceRefSchema = z\n .object({\n kind: z.enum([\"memory\", \"recall_audit\", \"source\", \"test\", \"commit\", \"correction\", \"agent_output\", \"approval\"]),\n id: identifierSchema,\n label: shortTextSchema,\n locator: z.string().trim().min(1).max(2_048).optional(),\n capture: z.enum([\"at_action\", \"historical_lookup\", \"fixture\"]),\n })\n .strict();\n\nexport type RelayEvidenceRef = z.infer<typeof RelayEvidenceRefSchema>;\n\nconst evidenceListSchema = z.array(RelayEvidenceRefSchema).max(16);\nconst agentIdentityFields = {\n agentId: identifierSchema,\n sessionId: identifierSchema,\n} as const;\n\nconst RelayMissionPayloadUnionSchema = z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"mission_started\"),\n title: shortTextSchema,\n objective: statementSchema,\n runMode: z.enum([\"live\", \"replay\", \"fixture\"]),\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"agent_status\"),\n ...agentIdentityFields,\n label: shortTextSchema,\n role: shortTextSchema,\n status: z.enum([\"idle\", \"working\", \"blocked\", \"complete\", \"failed\"]),\n detail: statementSchema.optional(),\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"agent_output\"),\n ...agentIdentityFields,\n outputId: identifierSchema,\n summary: statementSchema,\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"belief_observed\"),\n ...agentIdentityFields,\n beliefId: identifierSchema,\n decisionId: identifierSchema,\n statement: statementSchema,\n confidence: z.number().finite().min(0).max(1).optional(),\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"conflict_detected\"),\n conflictId: identifierSchema,\n decisionIds: uniqueIdentifierListSchema(2, 8),\n agentIds: uniqueIdentifierListSchema(2, 16),\n summary: statementSchema,\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"test_result\"),\n testId: identifierSchema,\n decisionId: identifierSchema,\n correctionId: identifierSchema.optional(),\n command: z.string().trim().min(1).max(1_000),\n status: z.enum([\"passed\", \"failed\", \"error\"]),\n summary: statementSchema,\n durationMs: z.number().int().nonnegative().max(3_600_000).optional(),\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"correction_proposed\"),\n correctionId: identifierSchema,\n conflictId: identifierSchema,\n proposedDecisionId: identifierSchema,\n supersedesDecisionIds: uniqueIdentifierListSchema(1, 8),\n statement: statementSchema,\n rationale: statementSchema,\n proposedBy: identifierSchema,\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"correction_approved\"),\n correctionId: identifierSchema,\n approvedBy: z\n .object({\n kind: z.enum([\"human\", \"agent\"]),\n id: identifierSchema,\n label: shortTextSchema,\n })\n .strict(),\n note: statementSchema.optional(),\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"decision_superseded\"),\n decisionId: identifierSchema,\n replacementDecisionId: identifierSchema,\n correctionId: identifierSchema,\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"recall_observed\"),\n ...agentIdentityFields,\n recallReceiptId: identifierSchema,\n decisionId: identifierSchema,\n query: statementSchema,\n capturedAtAction: z.boolean(),\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"propagation_verified\"),\n ...agentIdentityFields,\n correctionId: identifierSchema,\n decisionId: identifierSchema,\n recallReceiptId: identifierSchema,\n staleDecisionAbsent: z.boolean(),\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"mission_completed\"),\n outcome: z.enum([\"recovered\", \"failed\", \"inconclusive\"]),\n summary: statementSchema,\n evidence: evidenceListSchema.default([]),\n })\n .strict(),\n]);\n\nexport const RelayMissionPayloadSchema = RelayMissionPayloadUnionSchema.superRefine((value, ctx) => {\n if (value.kind === \"decision_superseded\" && value.decisionId === value.replacementDecisionId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"a decision cannot supersede itself\",\n path: [\"replacementDecisionId\"],\n });\n }\n if (value.kind === \"correction_approved\" && !value.evidence.some((item) => item.kind === \"approval\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"correction approval requires approval evidence\",\n path: [\"evidence\"],\n });\n }\n if (\n value.kind === \"decision_superseded\" &&\n !value.evidence.some((item) => item.kind === \"correction\" && item.id === value.correctionId)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"decision supersession requires matching correction evidence\",\n path: [\"evidence\"],\n });\n }\n if (value.kind !== \"recall_observed\" && value.kind !== \"propagation_verified\") return;\n const matchingRecallEvidence = value.evidence.find(\n (item) => item.kind === \"recall_audit\" && item.id === value.recallReceiptId\n );\n if (!matchingRecallEvidence) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"recall proof requires a matching recall-audit reference\",\n path: [\"evidence\"],\n });\n return;\n }\n if (value.kind === \"recall_observed\") {\n const expectedCapture = value.capturedAtAction ? \"at_action\" : \"historical_lookup\";\n if (matchingRecallEvidence.capture !== expectedCapture && matchingRecallEvidence.capture !== \"fixture\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `recall evidence must be labeled ${expectedCapture}`,\n path: [\"evidence\", value.evidence.indexOf(matchingRecallEvidence), \"capture\"],\n });\n }\n }\n});\n\nexport type RelayMissionPayload = z.infer<typeof RelayMissionPayloadSchema>;\n\nexport const RelayMissionEventInputSchema = z\n .object({\n occurredAt: RelayIsoDateTimeSchema.optional(),\n idempotencyKey: identifierSchema.optional(),\n payload: RelayMissionPayloadSchema,\n })\n .strict();\n\nexport type RelayMissionEventInput = z.infer<typeof RelayMissionEventInputSchema>;\n\nexport const RelayMissionEventSchema = z\n .object({\n schemaVersion: z.literal(RELAY_MISSION_SCHEMA_VERSION),\n eventId: identifierSchema,\n missionId: RelayMissionIdSchema,\n namespace: namespaceSchema,\n authenticatedPrincipal: authenticatedPrincipalSchema.optional(),\n recordedAt: RelayIsoDateTimeSchema,\n occurredAt: RelayIsoDateTimeSchema,\n idempotencyKey: identifierSchema.optional(),\n payload: RelayMissionPayloadSchema,\n })\n .strict();\n\nexport type RelayMissionEvent = z.infer<typeof RelayMissionEventSchema>;\n\nexport const RelayMissionReadOptionsSchema = z\n .object({\n since: RelayIsoDateTimeSchema.optional(),\n until: RelayIsoDateTimeSchema.optional(),\n limit: z.number().int().min(1).max(RELAY_MISSION_MAX_EVENT_LIMIT).default(RELAY_MISSION_DEFAULT_EVENT_LIMIT),\n })\n .strict()\n .refine(\n (value) =>\n value.since === undefined || value.until === undefined || Date.parse(value.since) < Date.parse(value.until),\n { message: \"since must be earlier than until\", path: [\"until\"] }\n );\n\nexport type RelayMissionReadOptions = z.input<typeof RelayMissionReadOptionsSchema>;\n\nexport type RelayMissionStatus =\n | \"not_started\"\n | \"active\"\n | \"awaiting_approval\"\n | \"correcting\"\n | \"verified\"\n | \"completed\"\n | \"failed\";\n\nexport interface RelayAgentOutputSnapshot {\n outputId: string;\n summary: string;\n occurredAt: string;\n evidence: RelayEvidenceRef[];\n}\n\nexport interface RelayRecallSnapshot {\n recallReceiptId: string;\n sessionId: string;\n decisionId: string;\n query: string;\n capturedAtAction: boolean;\n coldStart: boolean;\n occurredAt: string;\n evidence: RelayEvidenceRef[];\n}\n\nexport interface RelayAgentSnapshot {\n agentId: string;\n label: string;\n role: string;\n status: \"idle\" | \"working\" | \"blocked\" | \"complete\" | \"failed\";\n sessionIds: string[];\n outputs: RelayAgentOutputSnapshot[];\n recalls: RelayRecallSnapshot[];\n lastSeenAt: string;\n}\n\nexport interface RelayDecisionSnapshot {\n decisionId: string;\n statement: string;\n status: \"active\" | \"superseded\" | \"proposed\";\n heldByAgentIds: string[];\n beliefIds: string[];\n evidence: RelayEvidenceRef[];\n firstObservedAt: string;\n supersededAt?: string;\n supersededBy?: string;\n correctionId?: string;\n}\n\nexport interface RelayConflictSnapshot {\n conflictId: string;\n decisionIds: string[];\n agentIds: string[];\n summary: string;\n status: \"open\" | \"proposed\" | \"resolved\";\n correctionId?: string;\n occurredAt: string;\n evidence: RelayEvidenceRef[];\n}\n\nexport interface RelayCorrectionSnapshot {\n correctionId: string;\n conflictId: string;\n proposedDecisionId: string;\n supersedesDecisionIds: string[];\n statement: string;\n rationale: string;\n proposedBy: string;\n status: \"proposed\" | \"approved\" | \"applied\" | \"propagated\";\n proposedAt: string;\n approvedAt?: string;\n approvedBy?: { kind: \"human\" | \"agent\"; id: string; label: string };\n approvalNote?: string;\n approvalPrincipal?: string;\n appliedAt?: string;\n propagatedAt?: string;\n evidence: RelayEvidenceRef[];\n}\n\nexport interface RelayTestSnapshot {\n testId: string;\n decisionId: string;\n correctionId?: string;\n command: string;\n status: \"passed\" | \"failed\" | \"error\";\n summary: string;\n durationMs?: number;\n occurredAt: string;\n evidence: RelayEvidenceRef[];\n}\n\nexport interface RelayPropagationSnapshot {\n correctionId: string;\n agentId: string;\n sessionId: string;\n decisionId: string;\n recallReceiptId: string;\n staleDecisionAbsent: boolean;\n occurredAt: string;\n evidence: RelayEvidenceRef[];\n}\n\nexport interface RelayMissionSnapshot {\n schemaVersion: typeof RELAY_MISSION_SCHEMA_VERSION;\n missionId: string;\n namespace: string;\n found: boolean;\n readHealth: \"empty\" | \"ok\" | \"partial\";\n status: RelayMissionStatus;\n mission: {\n title: string | null;\n objective: string | null;\n runMode: \"live\" | \"replay\" | \"fixture\" | null;\n startedAt: string | null;\n completedAt: string | null;\n };\n agents: RelayAgentSnapshot[];\n decisions: RelayDecisionSnapshot[];\n conflicts: RelayConflictSnapshot[];\n corrections: RelayCorrectionSnapshot[];\n tests: RelayTestSnapshot[];\n propagation: RelayPropagationSnapshot[];\n outcome: {\n result: \"recovered\" | \"failed\" | \"inconclusive\";\n summary: string;\n occurredAt: string;\n evidence: RelayEvidenceRef[];\n } | null;\n receipt: {\n complete: boolean;\n missingEvidence: string[];\n activeDecisionIds: string[];\n supersededDecisionIds: string[];\n coldStartVerified: boolean;\n passingOutcomeVerified: boolean;\n };\n bounds: {\n totalEvents: number;\n returnedEvents: number;\n corruptLines: number;\n truncated: boolean;\n since: string | null;\n until: string | null;\n };\n events: RelayMissionEvent[];\n}\n\nexport type RelayMissionStoreErrorCode =\n | \"idempotency_conflict\"\n | \"limit_exceeded\"\n | \"lock_unavailable\"\n | \"read_failed\"\n | \"unsafe_path\"\n | \"write_failed\";\n\nexport class RelayMissionStoreError extends Error {\n constructor(\n public readonly code: RelayMissionStoreErrorCode,\n message: string,\n options?: ErrorOptions\n ) {\n super(message, options);\n this.name = \"RelayMissionStoreError\";\n }\n}\n\nexport interface RelayMissionStoreOptions {\n rootDir: string;\n namespace: string;\n now?: () => Date;\n createEventId?: () => string;\n maxFileBytes?: number;\n maxEvents?: number;\n lockMaxWaitMs?: number;\n}\n\ninterface MissionFileRead {\n exists: boolean;\n events: RelayMissionEvent[];\n corruptLines: number;\n rawBytes: number;\n}\n\ninterface PinnedMissionDirectory {\n logicalPath: string;\n accessPath: string;\n handle: import(\"node:fs/promises\").FileHandle;\n}\n\nexport interface RelayMissionAppendResult {\n appended: boolean;\n replayed: boolean;\n event: RelayMissionEvent;\n}\n\nexport class RelayMissionStore {\n private readonly rootDir: string;\n private readonly namespace: string;\n private readonly now: () => Date;\n private readonly createEventId: () => string;\n private readonly maxFileBytes: number;\n private readonly maxEvents: number;\n private readonly lockMaxWaitMs: number;\n\n constructor(options: RelayMissionStoreOptions) {\n if (typeof options.rootDir !== \"string\" || options.rootDir.trim().length === 0) {\n throw new TypeError(\"RelayMissionStore rootDir must be a non-empty string\");\n }\n this.rootDir = path.resolve(options.rootDir);\n this.namespace = namespaceSchema.parse(options.namespace);\n this.now = options.now ?? (() => new Date());\n this.createEventId = options.createEventId ?? (() => `relay-${randomUUID()}`);\n this.maxFileBytes = positiveIntegerOption(options.maxFileBytes, \"maxFileBytes\", RELAY_MISSION_MAX_FILE_BYTES);\n this.maxEvents = positiveIntegerOption(options.maxEvents, \"maxEvents\", RELAY_MISSION_MAX_EVENTS);\n this.lockMaxWaitMs = positiveIntegerOption(options.lockMaxWaitMs, \"lockMaxWaitMs\", 5_000);\n }\n\n async append(\n missionIdValue: string,\n inputValue: RelayMissionEventInput,\n hooks: { authenticatedPrincipal?: string; beforeAppend?: () => void | Promise<void> } = {}\n ): Promise<RelayMissionAppendResult> {\n const missionId = RelayMissionIdSchema.parse(missionIdValue);\n const input = RelayMissionEventInputSchema.parse(inputValue);\n const authenticatedPrincipal =\n hooks.authenticatedPrincipal === undefined\n ? undefined\n : authenticatedPrincipalSchema.parse(hooks.authenticatedPrincipal);\n const missionDir = await this.openMissionDirectory(true);\n const filePath = path.join(missionDir.accessPath, `${missionId}.jsonl`);\n const logicalFilePath = path.join(missionDir.logicalPath, `${missionId}.jsonl`);\n const lockPath = `${filePath}.lock`;\n\n try {\n return await serializeMutations(`relay-mission:${logicalFilePath}`, () =>\n withHeldFileLock(\n lockPath,\n { staleMs: 30_000, maxWaitMs: this.lockMaxWaitMs, heartbeatMs: 10_000 },\n async (acquired) => {\n if (!acquired) {\n throw new RelayMissionStoreError(\"lock_unavailable\", \"could not acquire Relay mission lock\");\n }\n\n const existing = await this.readFile(filePath, missionId);\n if (input.idempotencyKey) {\n const replay = existing.events.find((event) => event.idempotencyKey === input.idempotencyKey);\n if (replay) {\n if (!sameIdempotentInput(replay, input, authenticatedPrincipal)) {\n throw new RelayMissionStoreError(\n \"idempotency_conflict\",\n `idempotency key ${input.idempotencyKey} was already used for different input`\n );\n }\n return { appended: false, replayed: true, event: replay };\n }\n }\n\n if (existing.events.length >= this.maxEvents) {\n throw new RelayMissionStoreError(\n \"limit_exceeded\",\n `mission ${missionId} reached the ${this.maxEvents}-event limit`\n );\n }\n\n // Transport quotas run only after idempotency replay detection and\n // while this mission's mutation lock is held. A response-lost retry\n // remains replayable even when the original append used the final\n // quota slot.\n await hooks.beforeAppend?.();\n\n const recordedAt = validNow(this.now);\n const event = RelayMissionEventSchema.parse({\n schemaVersion: RELAY_MISSION_SCHEMA_VERSION,\n eventId: this.createEventId(),\n missionId,\n namespace: this.namespace,\n ...(authenticatedPrincipal === undefined ? {} : { authenticatedPrincipal }),\n recordedAt,\n occurredAt: input.occurredAt ?? recordedAt,\n ...(input.idempotencyKey ? { idempotencyKey: input.idempotencyKey } : {}),\n payload: input.payload,\n });\n const line = `${JSON.stringify(event)}\\n`;\n const lineBytes = Buffer.byteLength(line, \"utf8\");\n if (lineBytes > RELAY_MISSION_MAX_LINE_BYTES) {\n throw new RelayMissionStoreError(\n \"limit_exceeded\",\n `Relay mission event exceeds ${RELAY_MISSION_MAX_LINE_BYTES} bytes`\n );\n }\n if (existing.rawBytes + lineBytes > this.maxFileBytes) {\n throw new RelayMissionStoreError(\n \"limit_exceeded\",\n `mission ${missionId} would exceed the ${this.maxFileBytes}-byte limit`\n );\n }\n\n await this.appendFile(filePath, line);\n return { appended: true, replayed: false, event };\n }\n )\n );\n } finally {\n await missionDir.handle.close().catch(() => undefined);\n }\n }\n\n async read(missionIdValue: string, readOptions: RelayMissionReadOptions = {}): Promise<RelayMissionSnapshot> {\n const missionId = RelayMissionIdSchema.parse(missionIdValue);\n const options = RelayMissionReadOptionsSchema.parse(readOptions);\n const missionDir = await this.openMissionDirectory(false);\n if (missionDir === null) {\n return reduceRelayMission({\n missionId,\n namespace: this.namespace,\n events: [],\n fileExists: false,\n options,\n });\n }\n const filePath = path.join(missionDir.accessPath, `${missionId}.jsonl`);\n const logicalFilePath = path.join(missionDir.logicalPath, `${missionId}.jsonl`);\n\n try {\n // Coordinate with writers in this process without creating a lock file.\n // Cross-process appends are single bounded O_APPEND records; a torn or\n // malformed record remains explicit partial evidence rather than being\n // silently accepted.\n return await serializeMutations(`relay-mission:${logicalFilePath}`, async () => {\n const read = await this.readFile(filePath, missionId);\n return reduceRelayMission({\n missionId,\n namespace: this.namespace,\n events: read.events,\n corruptLines: read.corruptLines,\n fileExists: read.exists,\n options,\n });\n });\n } finally {\n await missionDir.handle.close().catch(() => undefined);\n }\n }\n\n private async openMissionDirectory(create: true): Promise<PinnedMissionDirectory>;\n private async openMissionDirectory(create: false): Promise<PinnedMissionDirectory | null>;\n private async openMissionDirectory(create: boolean): Promise<PinnedMissionDirectory | null> {\n let currentHandle: import(\"node:fs/promises\").FileHandle | undefined;\n try {\n currentHandle = await openVerifiedDirectory(this.rootDir, \"Relay root must be a real directory\");\n let logicalPath = this.rootDir;\n for (const segment of [\"state\", \"relay\", \"missions\"]) {\n let childHandle: import(\"node:fs/promises\").FileHandle;\n try {\n childHandle = create\n ? await openOrCreatePinnedChildDirectory(currentHandle, segment)\n : await openVerifiedDirectory(\n path.join(pinnedDirectoryPath(currentHandle), segment),\n \"Relay directory symlinks are rejected\"\n );\n } catch (error) {\n if (!create && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n await currentHandle.close();\n return null;\n }\n throw error;\n }\n await currentHandle.close();\n currentHandle = childHandle;\n logicalPath = path.join(logicalPath, segment);\n }\n return {\n logicalPath,\n accessPath: pinnedDirectoryPath(currentHandle),\n handle: currentHandle,\n };\n } catch (error) {\n await currentHandle?.close().catch(() => undefined);\n if (error instanceof RelayMissionStoreError) throw error;\n throw new RelayMissionStoreError(\"unsafe_path\", \"Relay mission directory is unavailable or unsafe\", {\n cause: error,\n });\n }\n }\n\n private async readFile(filePath: string, missionId: string): Promise<MissionFileRead> {\n let handle: import(\"node:fs/promises\").FileHandle | undefined;\n try {\n handle = await fs.open(filePath, fsConstants.O_RDONLY | fsConstants.O_NOFOLLOW);\n const info = await handle.stat();\n if (!info.isFile()) {\n throw new RelayMissionStoreError(\"unsafe_path\", \"Relay mission path is not a file\");\n }\n if (info.nlink !== 1) {\n throw new RelayMissionStoreError(\"unsafe_path\", \"Relay mission hard links are rejected\");\n }\n if (info.size > this.maxFileBytes) {\n throw new RelayMissionStoreError(\n \"limit_exceeded\",\n `mission ${missionId} exceeds the ${this.maxFileBytes}-byte read limit`\n );\n }\n const raw = await handle.readFile(\"utf8\");\n const parsed = parseMissionJsonl(raw, missionId, this.namespace, this.maxEvents);\n return { exists: true, rawBytes: Buffer.byteLength(raw, \"utf8\"), ...parsed };\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return { exists: false, events: [], corruptLines: 0, rawBytes: 0 };\n }\n if (error instanceof RelayMissionStoreError) throw error;\n throw new RelayMissionStoreError(\"read_failed\", \"failed to read Relay mission\", {\n cause: error,\n });\n } finally {\n await handle?.close().catch(() => undefined);\n }\n }\n\n private async appendFile(filePath: string, line: string): Promise<void> {\n let handle: import(\"node:fs/promises\").FileHandle | undefined;\n try {\n handle = await fs.open(\n filePath,\n fsConstants.O_WRONLY | fsConstants.O_CREAT | fsConstants.O_APPEND | fsConstants.O_NOFOLLOW,\n 0o600\n );\n const info = await handle.stat();\n if (!info.isFile()) {\n throw new RelayMissionStoreError(\"unsafe_path\", \"Relay mission path is not a file\");\n }\n if (info.nlink !== 1) {\n throw new RelayMissionStoreError(\"unsafe_path\", \"Relay mission hard links are rejected\");\n }\n await handle.chmod(0o600);\n await handle.writeFile(line, \"utf8\");\n await handle.sync();\n } catch (error) {\n if (error instanceof RelayMissionStoreError) throw error;\n if ((error as NodeJS.ErrnoException).code === \"ELOOP\") {\n throw new RelayMissionStoreError(\"unsafe_path\", \"Relay mission symlink is rejected\", {\n cause: error,\n });\n }\n throw new RelayMissionStoreError(\"write_failed\", \"failed to append Relay mission\", {\n cause: error,\n });\n } finally {\n await handle?.close().catch(() => undefined);\n }\n }\n}\n\ninterface ReduceRelayMissionInput {\n missionId: string;\n namespace: string;\n events: RelayMissionEvent[];\n corruptLines?: number;\n fileExists?: boolean;\n options?: RelayMissionReadOptions;\n}\n\nexport function reduceRelayMission(input: ReduceRelayMissionInput): RelayMissionSnapshot {\n const missionId = RelayMissionIdSchema.parse(input.missionId);\n const namespace = namespaceSchema.parse(input.namespace);\n const options = RelayMissionReadOptionsSchema.parse(input.options ?? {});\n const corruptLines = input.corruptLines ?? 0;\n const sinceMs = options.since ? Date.parse(options.since) : undefined;\n const untilMs = options.until ? Date.parse(options.until) : undefined;\n const appendPositions = new Map(input.events.map((event, index) => [event, index] as const));\n const orderedEvents = [...input.events].sort(compareRelayEvents);\n const firstStartEvent = input.events.find((event) => event.payload.kind === \"mission_started\");\n const firstCompletionEvent = input.events.find((event) => event.payload.kind === \"mission_completed\");\n const firstStartPosition = firstStartEvent === undefined ? -1 : (appendPositions.get(firstStartEvent) ?? -1);\n const firstCompletionPosition =\n firstCompletionEvent === undefined ? -1 : (appendPositions.get(firstCompletionEvent) ?? -1);\n const filteredEvents = orderedEvents.filter((event) => {\n const occurredAt = Date.parse(event.occurredAt);\n return (sinceMs === undefined || occurredAt >= sinceMs) && (untilMs === undefined || occurredAt < untilMs);\n });\n\n const agents = new Map<string, RelayAgentSnapshot>();\n const decisions = new Map<string, RelayDecisionSnapshot>();\n const conflicts = new Map<string, RelayConflictSnapshot>();\n const corrections = new Map<string, RelayCorrectionSnapshot>();\n const tests: RelayTestSnapshot[] = [];\n const propagation: RelayPropagationSnapshot[] = [];\n const beliefAppendPositions = new Map<string, number>();\n const conflictAppendPositions = new Map<string, number>();\n const correctionProposalAppendPositions = new Map<string, number>();\n const correctionApprovalAppendPositions = new Map<string, number>();\n const correctionAppliedAppendPositions = new Map<string, number>();\n const recallAppendPositions = new Map<RelayRecallSnapshot, number>();\n const propagationAppendPositions = new Map<RelayPropagationSnapshot, number>();\n const testAppendPositions = new Map<RelayTestSnapshot, number>();\n const missingEvidence = new Set<string>();\n if (corruptLines > 0) missingEvidence.add(\"mission:corrupt-events\");\n const substantiveAgentIds = new Set<string>();\n const substantiveSessionIds = new Set<string>();\n const conflictDisagreementIds = new Set<string>();\n const groundedCorrectionIds = new Set<string>();\n let title: string | null = null;\n let objective: string | null = null;\n let runMode: \"live\" | \"replay\" | \"fixture\" | null = null;\n let startedAt: string | null = null;\n let completedAt: string | null = null;\n let status: RelayMissionStatus = \"not_started\";\n let outcome: RelayMissionSnapshot[\"outcome\"] = null;\n\n const ensureAgent = (agentId: string, sessionId: string, occurredAt: string): RelayAgentSnapshot => {\n const existing = agents.get(agentId);\n if (existing) {\n if (!existing.sessionIds.includes(sessionId)) existing.sessionIds.push(sessionId);\n existing.lastSeenAt = occurredAt;\n return existing;\n }\n const created: RelayAgentSnapshot = {\n agentId,\n label: agentId,\n role: \"Codex agent\",\n status: \"working\",\n sessionIds: [sessionId],\n outputs: [],\n recalls: [],\n lastSeenAt: occurredAt,\n };\n agents.set(agentId, created);\n return created;\n };\n\n const markSubstantiveParticipation = (agentId: string, sessionId?: string): void => {\n substantiveAgentIds.add(agentId);\n if (sessionId) substantiveSessionIds.add(sessionId);\n };\n\n for (const event of orderedEvents) {\n const payload = event.payload;\n const appendPosition = appendPositions.get(event) ?? -1;\n if (\n payload.kind !== \"mission_started\" &&\n firstStartEvent !== undefined &&\n (appendPosition < firstStartPosition || compareRelayEvents(event, firstStartEvent) < 0)\n ) {\n missingEvidence.add(`mission:event-before-start:${event.eventId}`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n continue;\n }\n if (\n payload.kind !== \"mission_completed\" &&\n (outcome !== null || (firstCompletionPosition >= 0 && appendPosition > firstCompletionPosition))\n ) {\n missingEvidence.add(`mission:event-after-completion:${event.eventId}`);\n if (payload.kind === \"mission_started\") missingEvidence.add(\"mission:lifecycle-order\");\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n continue;\n }\n switch (payload.kind) {\n case \"mission_started\":\n if (startedAt !== null) {\n missingEvidence.add(\"mission:duplicate-start\");\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n title = payload.title;\n objective = payload.objective;\n runMode = payload.runMode;\n startedAt = event.occurredAt;\n if (outcome === null) status = \"active\";\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n case \"agent_status\": {\n const agent = ensureAgent(payload.agentId, payload.sessionId, event.occurredAt);\n markSubstantiveParticipation(payload.agentId, payload.sessionId);\n agent.label = payload.label;\n agent.role = payload.role;\n agent.status = payload.status;\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"agent_output\": {\n const agent = ensureAgent(payload.agentId, payload.sessionId, event.occurredAt);\n markSubstantiveParticipation(payload.agentId, payload.sessionId);\n agent.outputs.push({\n outputId: payload.outputId,\n summary: payload.summary,\n occurredAt: event.occurredAt,\n evidence: payload.evidence,\n });\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"belief_observed\": {\n ensureAgent(payload.agentId, payload.sessionId, event.occurredAt);\n markSubstantiveParticipation(payload.agentId, payload.sessionId);\n recordEarliestAppendPosition(\n beliefAppendPositions,\n beliefAppendPositionKey(payload.agentId, payload.decisionId),\n appendPosition\n );\n const existing = decisions.get(payload.decisionId);\n if (existing) {\n if (!decisionStatementsMatch(existing.statement, payload.statement)) {\n missingEvidence.add(`decision:${payload.decisionId}:statement-consistency`);\n }\n if (!existing.heldByAgentIds.includes(payload.agentId)) {\n existing.heldByAgentIds.push(payload.agentId);\n }\n if (!existing.beliefIds.includes(payload.beliefId)) existing.beliefIds.push(payload.beliefId);\n existing.evidence.push(...payload.evidence);\n } else {\n decisions.set(payload.decisionId, {\n decisionId: payload.decisionId,\n statement: payload.statement,\n status: \"active\",\n heldByAgentIds: [payload.agentId],\n beliefIds: [payload.beliefId],\n evidence: [...payload.evidence],\n firstObservedAt: event.occurredAt,\n });\n }\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"conflict_detected\": {\n recordEarliestAppendPosition(conflictAppendPositions, payload.conflictId, appendPosition);\n const normalizedDecisionStatements = payload.decisionIds\n .map((decisionId) => decisions.get(decisionId)?.statement)\n .filter((statement): statement is string => statement !== undefined)\n .map(normalizeDecisionStatement);\n if (\n normalizedDecisionStatements.length !== payload.decisionIds.length ||\n new Set(normalizedDecisionStatements).size < 2\n ) {\n missingEvidence.add(`conflict:${payload.conflictId}:distinct-decision-statements`);\n } else {\n conflictDisagreementIds.add(payload.conflictId);\n }\n const participantHoldings = payload.agentIds.map((agentId) => ({\n agentId,\n decisionIds: uniqueSorted(\n payload.decisionIds.filter((decisionId) => decisions.get(decisionId)?.heldByAgentIds.includes(agentId))\n ),\n }));\n for (const participant of participantHoldings) {\n if (participant.decisionIds.length === 0) {\n missingEvidence.add(`conflict:${payload.conflictId}:participant:${participant.agentId}:decision-link`);\n }\n }\n for (const decisionId of payload.decisionIds) {\n if (!participantHoldings.some((participant) => participant.decisionIds.includes(decisionId))) {\n missingEvidence.add(`conflict:${payload.conflictId}:decision:${decisionId}:participant-link`);\n }\n if (\n !payload.agentIds.some(\n (agentId) =>\n (beliefAppendPositions.get(beliefAppendPositionKey(agentId, decisionId)) ?? Number.POSITIVE_INFINITY) <\n appendPosition\n )\n ) {\n missingEvidence.add(`conflict:${payload.conflictId}:decision:${decisionId}:append-order`);\n }\n }\n for (const agentId of payload.agentIds) {\n if (\n !payload.decisionIds.some(\n (decisionId) =>\n (beliefAppendPositions.get(beliefAppendPositionKey(agentId, decisionId)) ?? Number.POSITIVE_INFINITY) <\n appendPosition\n )\n ) {\n missingEvidence.add(`conflict:${payload.conflictId}:participant:${agentId}:append-order`);\n }\n }\n if (\n participantHoldings.every((participant) => participant.decisionIds.length > 0) &&\n new Set(participantHoldings.map((participant) => participant.decisionIds.join(\"\\0\"))).size < 2\n ) {\n missingEvidence.add(`conflict:${payload.conflictId}:distinct-participant-beliefs`);\n }\n if (conflicts.has(payload.conflictId)) {\n missingEvidence.add(`conflict:${payload.conflictId}:duplicate`);\n } else {\n conflicts.set(payload.conflictId, {\n conflictId: payload.conflictId,\n decisionIds: uniqueSorted(payload.decisionIds),\n agentIds: uniqueSorted(payload.agentIds),\n summary: payload.summary,\n status: \"open\",\n occurredAt: event.occurredAt,\n evidence: payload.evidence,\n });\n }\n for (const agentId of payload.agentIds) substantiveAgentIds.add(agentId);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"test_result\": {\n const testSnapshot: RelayTestSnapshot = {\n testId: payload.testId,\n decisionId: payload.decisionId,\n ...(payload.correctionId === undefined ? {} : { correctionId: payload.correctionId }),\n command: payload.command,\n status: payload.status,\n summary: payload.summary,\n ...(payload.durationMs === undefined ? {} : { durationMs: payload.durationMs }),\n occurredAt: event.occurredAt,\n evidence: payload.evidence,\n };\n tests.push(testSnapshot);\n testAppendPositions.set(testSnapshot, appendPosition);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"correction_proposed\": {\n if (corrections.has(payload.correctionId)) {\n missingEvidence.add(`correction:${payload.correctionId}:duplicate-proposal`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n substantiveAgentIds.add(payload.proposedBy);\n const correction: RelayCorrectionSnapshot = {\n correctionId: payload.correctionId,\n conflictId: payload.conflictId,\n proposedDecisionId: payload.proposedDecisionId,\n supersedesDecisionIds: uniqueSorted(payload.supersedesDecisionIds),\n statement: payload.statement,\n rationale: payload.rationale,\n proposedBy: payload.proposedBy,\n status: \"proposed\",\n proposedAt: event.occurredAt,\n evidence: [...payload.evidence],\n };\n corrections.set(payload.correctionId, correction);\n correctionProposalAppendPositions.set(payload.correctionId, appendPosition);\n const existingProposedDecision = decisions.get(payload.proposedDecisionId);\n const replacementStatementMatches =\n existingProposedDecision === undefined ||\n decisionStatementsMatch(existingProposedDecision.statement, payload.statement);\n if (!replacementStatementMatches) {\n missingEvidence.add(`correction:${payload.correctionId}:replacement-statement`);\n }\n if (existingProposedDecision === undefined) {\n decisions.set(payload.proposedDecisionId, {\n decisionId: payload.proposedDecisionId,\n statement: payload.statement,\n status: \"proposed\",\n heldByAgentIds: [],\n beliefIds: [],\n evidence: [...payload.evidence],\n firstObservedAt: event.occurredAt,\n });\n }\n const conflict = conflicts.get(payload.conflictId);\n const conflictAppendPosition = conflictAppendPositions.get(payload.conflictId);\n const conflictPredatesProposal =\n conflictAppendPosition !== undefined && conflictAppendPosition < appendPosition;\n if (!conflictPredatesProposal) {\n missingEvidence.add(`correction:${payload.correctionId}:conflict-append-order`);\n }\n const correctionSourceIds = sourceEvidenceIds(payload.evidence);\n if (correctionSourceIds.size === 0) {\n missingEvidence.add(`correction:${payload.correctionId}:source`);\n }\n if (conflict) {\n const conflictSourceIds = sourceEvidenceIds(conflict.evidence);\n if (conflictSourceIds.size === 0) {\n missingEvidence.add(`conflict:${payload.conflictId}:source`);\n }\n const sourceLinked = [...correctionSourceIds].some((sourceId) => conflictSourceIds.has(sourceId));\n if (!sourceLinked) {\n missingEvidence.add(`correction:${payload.correctionId}:source-link`);\n }\n if (!correctionCoversConflict(correction, conflict)) {\n missingEvidence.add(`conflict:${payload.conflictId}:decision-link`);\n } else if (\n sourceLinked &&\n conflictPredatesProposal &&\n conflictDisagreementIds.has(payload.conflictId) &&\n replacementStatementMatches\n ) {\n groundedCorrectionIds.add(payload.correctionId);\n conflict.status = \"proposed\";\n conflict.correctionId = payload.correctionId;\n }\n } else {\n missingEvidence.add(`conflict:${payload.conflictId}:observation`);\n }\n status = \"awaiting_approval\";\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"correction_approved\": {\n if (payload.approvedBy.kind === \"agent\") substantiveAgentIds.add(payload.approvedBy.id);\n const correction = corrections.get(payload.correctionId);\n if (correction) {\n const proposalAppendPosition = correctionProposalAppendPositions.get(payload.correctionId);\n const proposalPredatesApproval =\n proposalAppendPosition !== undefined && proposalAppendPosition < appendPosition;\n const authenticatedHumanApproval =\n payload.approvedBy.kind !== \"human\" ||\n runMode !== \"live\" ||\n event.authenticatedPrincipal === payload.approvedBy.id;\n if (!proposalPredatesApproval) {\n missingEvidence.add(`correction:${payload.correctionId}:approval-append-order`);\n } else if (!authenticatedHumanApproval) {\n missingEvidence.add(`correction:${payload.correctionId}:authenticated-human-approval`);\n } else if (correction.approvedAt === undefined) {\n correction.approvedAt = event.occurredAt;\n correction.approvedBy = payload.approvedBy;\n correction.approvalNote = payload.note;\n if (event.authenticatedPrincipal !== undefined) {\n correction.approvalPrincipal = event.authenticatedPrincipal;\n }\n correctionApprovalAppendPositions.set(payload.correctionId, appendPosition);\n if (correction.status === \"proposed\") correction.status = \"approved\";\n status = \"correcting\";\n } else {\n missingEvidence.add(`correction:${payload.correctionId}:duplicate-approval`);\n }\n correction.evidence.push(...payload.evidence);\n } else {\n missingEvidence.add(`correction:${payload.correctionId}:proposal`);\n }\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"decision_superseded\": {\n const correction = corrections.get(payload.correctionId);\n if (!correction) {\n missingEvidence.add(`correction:${payload.correctionId}:proposal`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (correction.approvedAt === undefined || correction.approvedBy === undefined) {\n missingEvidence.add(`correction:${payload.correctionId}:approval`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n const approvalAppendPosition = correctionApprovalAppendPositions.get(payload.correctionId);\n if (approvalAppendPosition === undefined || approvalAppendPosition >= appendPosition) {\n missingEvidence.add(`correction:${payload.correctionId}:approval-append-order`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n const conflict = conflicts.get(correction.conflictId);\n if (!conflict || !correctionCoversConflict(correction, conflict)) {\n missingEvidence.add(`conflict:${correction.conflictId}:decision-link`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (!groundedCorrectionIds.has(payload.correctionId)) {\n missingEvidence.add(`correction:${payload.correctionId}:source-link`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (\n !correction.supersedesDecisionIds.includes(payload.decisionId) ||\n correction.proposedDecisionId !== payload.replacementDecisionId\n ) {\n missingEvidence.add(`correction:${payload.correctionId}:supersession-link`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n\n const stale = decisions.get(payload.decisionId);\n const replacement = decisions.get(payload.replacementDecisionId);\n if (!stale) missingEvidence.add(`decision:${payload.decisionId}:observation`);\n if (!replacement) missingEvidence.add(`decision:${payload.replacementDecisionId}:replacement`);\n if (!stale || !replacement) {\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n\n stale.status = \"superseded\";\n stale.supersededAt = event.occurredAt;\n stale.supersededBy = payload.replacementDecisionId;\n stale.correctionId = payload.correctionId;\n stale.evidence.push(...payload.evidence);\n replacement.status = \"active\";\n replacement.evidence.push(...payload.evidence);\n correction.evidence.push(...payload.evidence);\n if (correctionSupersessionComplete(correction, decisions)) {\n correction.appliedAt ??= event.occurredAt;\n recordEarliestAppendPosition(correctionAppliedAppendPositions, payload.correctionId, appendPosition);\n if (correction.status !== \"propagated\") correction.status = \"applied\";\n conflict.status = \"resolved\";\n }\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"recall_observed\": {\n const agent = ensureAgent(payload.agentId, payload.sessionId, event.occurredAt);\n const coldStart =\n !substantiveAgentIds.has(payload.agentId) &&\n !substantiveSessionIds.has(payload.sessionId) &&\n agent.recalls.length === 0;\n const recallSnapshot: RelayRecallSnapshot = {\n recallReceiptId: payload.recallReceiptId,\n sessionId: payload.sessionId,\n decisionId: payload.decisionId,\n query: payload.query,\n capturedAtAction: payload.capturedAtAction,\n coldStart,\n occurredAt: event.occurredAt,\n evidence: payload.evidence,\n };\n agent.recalls.push(recallSnapshot);\n recallAppendPositions.set(recallSnapshot, appendPosition);\n markSubstantiveParticipation(payload.agentId, payload.sessionId);\n const decision = decisions.get(payload.decisionId);\n if (decision && !decision.heldByAgentIds.includes(payload.agentId)) {\n decision.heldByAgentIds.push(payload.agentId);\n }\n if (!decision) missingEvidence.add(`decision:${payload.decisionId}:recall-target`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"propagation_verified\": {\n const agent = ensureAgent(payload.agentId, payload.sessionId, event.occurredAt);\n const correction = corrections.get(payload.correctionId);\n if (!correction) {\n missingEvidence.add(`correction:${payload.correctionId}:proposal`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (correction.approvedAt === undefined || correction.approvedBy === undefined) {\n missingEvidence.add(`correction:${payload.correctionId}:approval`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (\n (correction.status !== \"applied\" && correction.status !== \"propagated\") ||\n correction.appliedAt === undefined ||\n correction.proposedDecisionId !== payload.decisionId\n ) {\n missingEvidence.add(`correction:${payload.correctionId}:supersession`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n const recalled = agent.recalls.find(\n (recall) =>\n recall.recallReceiptId === payload.recallReceiptId &&\n recall.sessionId === payload.sessionId &&\n recall.decisionId === payload.decisionId\n );\n if (!recalled) {\n missingEvidence.add(`recall:${payload.recallReceiptId}:observation`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n const appliedAppendPosition = correctionAppliedAppendPositions.get(payload.correctionId);\n const recallAppendPosition = recallAppendPositions.get(recalled);\n if (\n appliedAppendPosition === undefined ||\n recallAppendPosition === undefined ||\n appliedAppendPosition >= recallAppendPosition\n ) {\n missingEvidence.add(`recall:${payload.recallReceiptId}:post-application-append-order`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (recallAppendPosition >= appendPosition) {\n missingEvidence.add(`recall:${payload.recallReceiptId}:propagation-append-order`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (!recalled.capturedAtAction) {\n missingEvidence.add(`recall:${payload.recallReceiptId}:at-action`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (!recalled.coldStart) {\n missingEvidence.add(`recall:${payload.recallReceiptId}:cold-start`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (compareInstants(correction.appliedAt, recalled.occurredAt) >= 0) {\n missingEvidence.add(`recall:${payload.recallReceiptId}:post-application`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (compareInstants(recalled.occurredAt, event.occurredAt) >= 0) {\n missingEvidence.add(`recall:${payload.recallReceiptId}:propagation-order`);\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n\n const propagationSnapshot: RelayPropagationSnapshot = {\n correctionId: payload.correctionId,\n agentId: payload.agentId,\n sessionId: payload.sessionId,\n decisionId: payload.decisionId,\n recallReceiptId: payload.recallReceiptId,\n staleDecisionAbsent: payload.staleDecisionAbsent,\n occurredAt: event.occurredAt,\n evidence: payload.evidence,\n };\n propagation.push(propagationSnapshot);\n propagationAppendPositions.set(propagationSnapshot, appendPosition);\n correction.evidence.push(...payload.evidence);\n if (payload.staleDecisionAbsent) {\n correction.status = \"propagated\";\n correction.propagatedAt = event.occurredAt;\n }\n status = payload.staleDecisionAbsent ? \"verified\" : \"correcting\";\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n case \"mission_completed\":\n if (outcome !== null) {\n missingEvidence.add(\"mission:duplicate-completion\");\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n if (startedAt === null) missingEvidence.add(\"mission:start\");\n outcome = {\n result: payload.outcome,\n summary: payload.summary,\n occurredAt: event.occurredAt,\n evidence: payload.evidence,\n };\n completedAt = event.occurredAt;\n status = payload.outcome === \"failed\" ? \"failed\" : \"completed\";\n collectMissingEvidence(missingEvidence, event, payload.evidence);\n break;\n }\n }\n\n for (const conflict of conflicts.values()) {\n if (sourceEvidenceIds(conflict.evidence).size === 0) {\n missingEvidence.add(`conflict:${conflict.conflictId}:source`);\n }\n for (const decisionId of conflict.decisionIds) {\n if (!decisions.has(decisionId)) missingEvidence.add(`decision:${decisionId}:conflict-target`);\n }\n for (const agentId of conflict.agentIds) {\n if (!agents.has(agentId)) missingEvidence.add(`agent:${agentId}:conflict-participant`);\n }\n }\n for (const correction of corrections.values()) {\n if (sourceEvidenceIds(correction.evidence).size === 0) {\n missingEvidence.add(`correction:${correction.correctionId}:source`);\n }\n if (correction.approvedAt === undefined || correction.approvedBy === undefined) {\n missingEvidence.add(`correction:${correction.correctionId}:approval`);\n } else if (correction.approvedBy.kind !== \"human\") {\n missingEvidence.add(`correction:${correction.correctionId}:human-approval`);\n } else if (runMode === \"live\" && correction.approvalPrincipal !== correction.approvedBy.id) {\n missingEvidence.add(`correction:${correction.correctionId}:authenticated-human-approval`);\n }\n if (correction.status === \"approved\" || correction.status === \"proposed\") {\n missingEvidence.add(`correction:${correction.correctionId}:supersession`);\n }\n if (correction.status === \"applied\") {\n missingEvidence.add(`correction:${correction.correctionId}:propagation`);\n }\n }\n\n const liveFixtureEvidenceEventIds =\n runMode === \"live\"\n ? orderedEvents\n .filter((event) => event.payload.evidence.some((item) => item.capture === \"fixture\"))\n .map((event) => event.eventId)\n : [];\n for (const eventId of liveFixtureEvidenceEventIds) {\n missingEvidence.add(`mission:live-fixture-evidence:${eventId}`);\n }\n const captureTrustValid = liveFixtureEvidenceEventIds.length === 0;\n\n const sortedDecisions = [...decisions.values()]\n .map((decision) => ({\n ...decision,\n heldByAgentIds: uniqueSorted(decision.heldByAgentIds),\n beliefIds: uniqueSorted(decision.beliefIds),\n evidence: uniqueEvidence(decision.evidence),\n }))\n .sort((a, b) => compareText(a.decisionId, b.decisionId));\n const coldStartVerified = captureTrustValid && propagation.some((item) => item.staleDecisionAbsent);\n const passingOutcomeVerified =\n captureTrustValid &&\n outcome?.result === \"recovered\" &&\n tests.some((test) => {\n const testAppendPosition = testAppendPositions.get(test);\n if (\n test.status !== \"passed\" ||\n test.correctionId === undefined ||\n testAppendPosition === undefined ||\n firstCompletionPosition < 0 ||\n testAppendPosition >= firstCompletionPosition ||\n compareInstants(test.occurredAt, outcome.occurredAt) >= 0\n ) {\n return false;\n }\n const correction = corrections.get(test.correctionId);\n if (\n correction?.status !== \"propagated\" ||\n correction.proposedDecisionId !== test.decisionId ||\n !test.evidence.some((item) => item.kind === \"correction\" && item.id === correction.correctionId) ||\n !test.evidence.some((item) => item.kind === \"test\")\n ) {\n return false;\n }\n return propagation.some((item) => {\n const propagationAppendPosition = propagationAppendPositions.get(item);\n return (\n item.staleDecisionAbsent &&\n item.correctionId === correction.correctionId &&\n item.decisionId === test.decisionId &&\n propagationAppendPosition !== undefined &&\n propagationAppendPosition < testAppendPosition &&\n compareInstants(item.occurredAt, test.occurredAt) < 0\n );\n });\n });\n if (outcome && !passingOutcomeVerified) missingEvidence.add(\"outcome:passing-test\");\n if (outcome?.result === \"recovered\" && !coldStartVerified) {\n missingEvidence.add(\"outcome:cold-start-propagation\");\n }\n if (input.events.length > 0 && startedAt === null) missingEvidence.add(\"mission:start\");\n if (startedAt !== null && completedAt !== null && compareInstants(startedAt, completedAt) >= 0) {\n missingEvidence.add(\"mission:lifecycle-order\");\n }\n if (\n firstStartEvent !== undefined &&\n firstCompletionEvent !== undefined &&\n (firstStartPosition >= firstCompletionPosition || compareRelayEvents(firstStartEvent, firstCompletionEvent) >= 0)\n ) {\n missingEvidence.add(\"mission:lifecycle-order\");\n }\n\n const eventWindow = filteredEvents.slice(Math.max(0, filteredEvents.length - options.limit));\n // `found` describes whether the mission has any valid persisted evidence,\n // not whether the caller's optional time window happened to select an\n // event. A known mission with an empty [since, until) window is distinct\n // from a mission that has never existed.\n const found = input.events.length > 0;\n return {\n schemaVersion: RELAY_MISSION_SCHEMA_VERSION,\n missionId,\n namespace,\n found,\n readHealth: corruptLines > 0 ? \"partial\" : found || input.fileExists ? \"ok\" : \"empty\",\n status,\n mission: { title, objective, runMode, startedAt, completedAt },\n agents: [...agents.values()]\n .map((agent) => ({\n ...agent,\n sessionIds: uniqueSorted(agent.sessionIds),\n outputs: agent.outputs.sort((a, b) => compareTimedIds(a, b, \"outputId\")),\n recalls: agent.recalls.sort((a, b) => compareTimedIds(a, b, \"recallReceiptId\")),\n }))\n .sort((a, b) => compareText(a.agentId, b.agentId)),\n decisions: sortedDecisions,\n conflicts: [...conflicts.values()].sort((a, b) => compareText(a.conflictId, b.conflictId)),\n corrections: [...corrections.values()]\n .map((correction) => ({ ...correction, evidence: uniqueEvidence(correction.evidence) }))\n .sort((a, b) => compareText(a.correctionId, b.correctionId)),\n tests: tests.sort((a, b) => compareTimedIds(a, b, \"testId\")),\n propagation: propagation.sort((a, b) => {\n const byTime = compareInstants(a.occurredAt, b.occurredAt);\n if (byTime !== 0) return byTime;\n const byAgent = compareText(a.agentId, b.agentId);\n return byAgent !== 0 ? byAgent : compareText(a.recallReceiptId, b.recallReceiptId);\n }),\n outcome,\n receipt: {\n complete:\n status === \"completed\" &&\n outcome?.result === \"recovered\" &&\n passingOutcomeVerified &&\n coldStartVerified &&\n missingEvidence.size === 0,\n missingEvidence: [...missingEvidence].sort(compareText),\n activeDecisionIds: sortedDecisions\n .filter((decision) => decision.status === \"active\")\n .map((decision) => decision.decisionId),\n supersededDecisionIds: sortedDecisions\n .filter((decision) => decision.status === \"superseded\")\n .map((decision) => decision.decisionId),\n coldStartVerified,\n passingOutcomeVerified,\n },\n bounds: {\n totalEvents: filteredEvents.length,\n returnedEvents: eventWindow.length,\n corruptLines,\n truncated: filteredEvents.length > eventWindow.length,\n since: options.since ?? null,\n until: options.until ?? null,\n },\n events: eventWindow,\n };\n}\n\nexport function compareRelayEvents(a: RelayMissionEvent, b: RelayMissionEvent): number {\n const byOccurrence = compareInstants(a.occurredAt, b.occurredAt);\n if (byOccurrence !== 0) return byOccurrence;\n const byRecord = compareInstants(a.recordedAt, b.recordedAt);\n if (byRecord !== 0) return byRecord;\n return compareText(a.eventId, b.eventId);\n}\n\nfunction parseMissionJsonl(\n raw: string,\n missionId: string,\n namespace: string,\n maxEvents: number\n): Pick<MissionFileRead, \"events\" | \"corruptLines\"> {\n const events: RelayMissionEvent[] = [];\n let corruptLines = 0;\n for (const line of raw.split(\"\\n\")) {\n if (line.trim().length === 0) continue;\n if (Buffer.byteLength(line, \"utf8\") > RELAY_MISSION_MAX_LINE_BYTES) {\n corruptLines += 1;\n continue;\n }\n let candidate: unknown;\n try {\n candidate = JSON.parse(line);\n } catch {\n corruptLines += 1;\n continue;\n }\n const parsed = RelayMissionEventSchema.safeParse(candidate);\n if (!parsed.success || parsed.data.missionId !== missionId || parsed.data.namespace !== namespace) {\n corruptLines += 1;\n continue;\n }\n if (events.length >= maxEvents) {\n throw new RelayMissionStoreError(\n \"limit_exceeded\",\n `mission ${missionId} exceeds the ${maxEvents}-event read limit`\n );\n }\n events.push(parsed.data);\n }\n return { events, corruptLines };\n}\n\nfunction collectMissingEvidence(missing: Set<string>, event: RelayMissionEvent, evidence: RelayEvidenceRef[]): void {\n if (evidence.length === 0) missing.add(`event:${event.eventId}:evidence`);\n}\n\nfunction sameIdempotentInput(\n event: RelayMissionEvent,\n input: z.infer<typeof RelayMissionEventInputSchema>,\n authenticatedPrincipal: string | undefined\n): boolean {\n if (event.authenticatedPrincipal !== authenticatedPrincipal) return false;\n if (input.occurredAt !== undefined && event.occurredAt !== input.occurredAt) return false;\n return stableJson(event.payload) === stableJson(input.payload);\n}\n\nfunction stableJson(value: unknown): string {\n if (Array.isArray(value)) return `[${value.map(stableJson).join(\",\")}]`;\n if (value && typeof value === \"object\") {\n const entries = Object.entries(value as Record<string, unknown>)\n .sort(([a], [b]) => compareText(a, b))\n .map(([key, child]) => `${JSON.stringify(key)}:${stableJson(child)}`);\n return `{${entries.join(\",\")}}`;\n }\n return JSON.stringify(value) ?? \"null\";\n}\n\nfunction uniqueEvidence(evidence: RelayEvidenceRef[]): RelayEvidenceRef[] {\n const byKey = new Map<string, RelayEvidenceRef>();\n for (const item of evidence) byKey.set(`${item.kind}\\0${item.id}`, item);\n return [...byKey.values()].sort((a, b) => {\n const byKind = compareText(a.kind, b.kind);\n return byKind !== 0 ? byKind : compareText(a.id, b.id);\n });\n}\n\nfunction uniqueSorted(values: string[]): string[] {\n return [...new Set(values)].sort(compareText);\n}\n\nfunction compareText(a: string, b: string): number {\n if (a < b) return -1;\n if (a > b) return 1;\n return 0;\n}\n\nfunction compareInstants(a: string, b: string): number {\n const aMs = Date.parse(a);\n const bMs = Date.parse(b);\n if (aMs < bMs) return -1;\n if (aMs > bMs) return 1;\n return 0;\n}\n\nfunction compareTimedIds<T extends { occurredAt: string }, K extends keyof T>(a: T, b: T, idKey: K): number {\n const byTime = compareInstants(a.occurredAt, b.occurredAt);\n if (byTime !== 0) return byTime;\n return compareText(String(a[idKey]), String(b[idKey]));\n}\n\nfunction beliefAppendPositionKey(agentId: string, decisionId: string): string {\n return `${agentId}\\0${decisionId}`;\n}\n\nfunction normalizeDecisionStatement(statement: string): string {\n return statement\n .normalize(\"NFKC\")\n .trim()\n .toLowerCase()\n .replace(/\\s+/g, \" \")\n .replace(/[.!?]+$/, \"\");\n}\n\nfunction decisionStatementsMatch(left: string, right: string): boolean {\n return normalizeDecisionStatement(left) === normalizeDecisionStatement(right);\n}\n\nfunction recordEarliestAppendPosition(positions: Map<string, number>, key: string, position: number): void {\n const current = positions.get(key);\n if (current === undefined || position < current) positions.set(key, position);\n}\n\nfunction correctionSupersessionComplete(\n correction: RelayCorrectionSnapshot,\n decisions: ReadonlyMap<string, RelayDecisionSnapshot>\n): boolean {\n return correction.supersedesDecisionIds.every((decisionId) => {\n const decision = decisions.get(decisionId);\n return (\n decision?.status === \"superseded\" &&\n decision.supersededBy === correction.proposedDecisionId &&\n decision.correctionId === correction.correctionId\n );\n });\n}\n\nfunction correctionCoversConflict(\n correction: Pick<RelayCorrectionSnapshot, \"proposedDecisionId\" | \"supersedesDecisionIds\">,\n conflict: Pick<RelayConflictSnapshot, \"decisionIds\">\n): boolean {\n const expectedSuperseded = uniqueSorted(\n conflict.decisionIds.filter((decisionId) => decisionId !== correction.proposedDecisionId)\n );\n const declaredSuperseded = uniqueSorted(correction.supersedesDecisionIds);\n return (\n expectedSuperseded.length === declaredSuperseded.length &&\n expectedSuperseded.every((decisionId, index) => decisionId === declaredSuperseded[index])\n );\n}\n\nfunction sourceEvidenceIds(evidence: readonly RelayEvidenceRef[]): Set<string> {\n return new Set(evidence.filter((item) => item.kind === \"source\").map((item) => item.id));\n}\n\nfunction positiveIntegerOption(value: number | undefined, name: string, fallback: number): number {\n if (value === undefined) return fallback;\n if (!Number.isInteger(value) || value <= 0) {\n throw new TypeError(`RelayMissionStore ${name} must be a positive integer`);\n }\n return value;\n}\n\nfunction validNow(now: () => Date): string {\n const value = now();\n if (!(value instanceof Date) || !Number.isFinite(value.getTime())) {\n throw new TypeError(\"RelayMissionStore now() must return a valid Date\");\n }\n return value.toISOString();\n}\n\nasync function openOrCreatePinnedChildDirectory(\n parentHandle: import(\"node:fs/promises\").FileHandle,\n segment: string\n): Promise<import(\"node:fs/promises\").FileHandle> {\n const directory = path.join(pinnedDirectoryPath(parentHandle), segment);\n try {\n await fs.mkdir(directory, { mode: 0o700 });\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") throw error;\n }\n return openVerifiedDirectory(directory, \"Relay directory symlinks are rejected\");\n}\n\nasync function openVerifiedDirectory(\n directory: string,\n unsafeMessage: string\n): Promise<import(\"node:fs/promises\").FileHandle> {\n const before = await fs.lstat(directory);\n if (before.isSymbolicLink() || !before.isDirectory()) {\n throw new RelayMissionStoreError(\"unsafe_path\", unsafeMessage);\n }\n const handle = await fs.open(directory, fsConstants.O_RDONLY | fsConstants.O_DIRECTORY | fsConstants.O_NOFOLLOW);\n try {\n const openInfo = await handle.stat();\n const after = await fs.lstat(directory);\n if (\n after.isSymbolicLink() ||\n !after.isDirectory() ||\n before.dev !== openInfo.dev ||\n before.ino !== openInfo.ino ||\n after.dev !== openInfo.dev ||\n after.ino !== openInfo.ino\n ) {\n throw new RelayMissionStoreError(\"unsafe_path\", \"Relay directory changed during validation\");\n }\n return handle;\n } catch (error) {\n await handle.close().catch(() => undefined);\n throw error;\n }\n}\n\nfunction pinnedDirectoryPath(handle: import(\"node:fs/promises\").FileHandle): string {\n if (process.platform === \"linux\") return `/proc/self/fd/${handle.fd}`;\n if (process.platform === \"darwin\" || process.platform === \"freebsd\" || process.platform === \"openbsd\") {\n return `/dev/fd/${handle.fd}`;\n }\n throw new RelayMissionStoreError(\n \"unsafe_path\",\n `Relay pinned directory access is unsupported on ${process.platform}`\n );\n}\n\nexport function relayMissionReceiptDigest(snapshot: RelayMissionSnapshot): string {\n const receipt = {\n schemaVersion: snapshot.schemaVersion,\n missionId: snapshot.missionId,\n namespace: snapshot.namespace,\n status: snapshot.status,\n decisions: snapshot.decisions,\n corrections: snapshot.corrections,\n propagation: snapshot.propagation,\n tests: snapshot.tests,\n outcome: snapshot.outcome,\n receipt: snapshot.receipt,\n };\n return createHash(\"sha256\").update(stableJson(receipt)).digest(\"hex\");\n}\n","/**\n * Location boundary operations (issue #2047) — the five `location_*`\n * operations registered through the access boundary so MCP, HTTP, and any\n * batch transport share one validated dispatch. Handlers are thin: they run\n * the same `location/surfaces.ts` runners the CLI uses. Fleet-wide: location\n * config and day files are machine-level (no namespace scoping).\n */\n\nimport { z } from \"zod\";\nimport { defineOperation } from \"../access-boundary.js\";\nimport type { EngramAccessService } from \"../access-service.js\";\nimport { backfillMemoryStorage } from \"./backfill.js\";\nimport {\n runLocationBackfill,\n runLocationCheck,\n runLocationDay,\n runLocationStatus,\n runLocationSync,\n type LocationSurfaceDeps,\n} from \"./surfaces.js\";\n\n/** Zod shape shared by the location operations (null-for-absent tolerant). */\nconst dateField = z.union([z.string(), z.null()]).optional();\nconst daysField = z.union([z.number(), z.string(), z.null()]).optional();\nconst dryRunField = z.union([z.boolean(), z.null()]).optional();\n\nfunction locationDeps(service: EngramAccessService): LocationSurfaceDeps {\n return {\n config: service.configRef.location,\n memoryDir: service.memoryDir,\n getMemoryStorage: () => backfillMemoryStorage(service.configRef),\n };\n}\n\ndefineOperation({\n name: \"location_status\",\n description: \"Location sync status (gates, providers, last sync, day counts).\",\n fleetWide: true,\n schema: z.object({}).passthrough(),\n handler: async (_input, ctx) => ({\n result: await runLocationStatus(locationDeps(ctx.service)),\n }),\n});\n\ndefineOperation({\n name: \"location_check\",\n description: \"Probe every enabled location provider.\",\n fleetWide: true,\n schema: z.object({}).passthrough(),\n handler: async (_input, ctx) => ({\n result: await runLocationCheck(locationDeps(ctx.service)),\n }),\n});\n\ndefineOperation({\n name: \"location_sync\",\n description: \"Sync location days (default window: syncDays ending yesterday).\",\n fleetWide: true,\n schema: z.object({ date: dateField, days: daysField }).passthrough(),\n handler: async (input, ctx) => ({\n result: {\n days: await runLocationSync(locationDeps(ctx.service), {\n ...(input.date !== undefined && input.date !== null && input.date !== \"\" ? { endDate: input.date } : {}),\n ...(input.days !== undefined && input.days !== null && input.days !== \"\" ? { days: Number(input.days) } : {}),\n }),\n },\n }),\n});\n\ndefineOperation({\n name: \"location_backfill\",\n description: \"Sync an explicit historical day range (≤ 90 days) and re-tag overlapping memories (issue #2046).\",\n fleetWide: true,\n schema: z.object({ from: dateField, to: dateField, dryRun: dryRunField }).passthrough(),\n handler: async (input, ctx) => ({\n result: await runLocationBackfill(locationDeps(ctx.service), {\n from: input.from ?? null,\n to: input.to ?? null,\n dryRun: input.dryRun === true,\n }),\n }),\n});\n\ndefineOperation({\n name: \"location_day\",\n description: \"Read one stored location day.\",\n fleetWide: true,\n schema: z.object({ date: dateField }).passthrough(),\n handler: async (input, ctx) => ({\n result: await runLocationDay(locationDeps(ctx.service).memoryDir, input.date),\n }),\n});\n\n","import { z } from \"zod\";\n\nimport { defineOperation } from \"../access-boundary.js\";\nimport { buildStandup, parseStandupDate } from \"./build.js\";\n\ndefineOperation({\n name: \"standup\",\n description: \"Deterministic yesterday/today/blockers standup brief.\",\n fleetWide: true,\n schema: z.object({ date: z.string().optional() }).strict(),\n handler: async (input, ctx) => ({\n result: buildStandup(ctx.service.memoryDir, parseStandupDate(input.date)),\n }),\n});\n"],"mappings":"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","names":["z","z","event","namespaceSchema","z","z","z","z","z","z"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/extraction-prompt.ts"],"sourcesContent":["/**\n * Extraction prompt construction (issue #1995 sibling extraction).\n *\n * The system prompt, its JSON response shape, and the placeholder table\n * derived from that shape are prompt DATA, not engine behavior. They live here\n * so `extraction.ts` holds the pipeline and one module owns the text every\n * extraction path — local LLM, direct client, gateway fallback — sends.\n */\n\nimport { AMBIENT_CAPTURE_PROMPT_SECTION, AMBIENT_SPECULATIVE_TIER_CLAUSE } from \"./ambient-provenance.js\";\nimport { resolveMemoryLifecycleCapabilities, resolveRecallAuxiliaryCapabilities } from \"./capabilities.js\";\nimport type { PluginConfig } from \"./types.js\";\n\nexport const EXTRACTION_RESPONSE_SHAPE = `{\n \"facts\": [{\n \"category\": \"<category>\",\n \"content\": \"<source-grounded statement>\",\n \"confidence\": 0.0,\n \"tags\": [\"<tag>\"],\n \"entityRef\": \"<optional normalized-name>\",\n \"cueAnchors\": [{\"type\": \"<anchor-type>\", \"value\": \"<entity-or-topic plus key aspect>\"}],\n \"promptedByQuestion\": \"<optional source-grounded question>\",\n \"quote\": \"<optional exact contiguous source span>\",\n \"scope\": \"<optional project-or-global>\",\n \"subject\": \"<optional user-or-agent>\",\n \"structuredAttributes\": {\"<key>\": \"<value>\"},\n \"procedureSteps\": [{\"order\": 1, \"intent\": \"<step>\"}, {\"order\": 2, \"intent\": \"<step>\"}],\n \"reasoningTrace\": {\n \"steps\": [{\"order\": 1, \"description\": \"<step>\"}, {\"order\": 2, \"description\": \"<step>\"}],\n \"finalAnswer\": \"<answer>\",\n \"observedOutcome\": \"<optional outcome>\"\n },\n \"eventTime\": \"<optional source temporal expression>\"\n }],\n \"entities\": [{\n \"name\": \"<normalized-name>\",\n \"type\": \"<entity-type>\",\n \"facts\": [\"<source-grounded statement>\"],\n \"promptedByQuestion\": \"<optional source-grounded question>\",\n \"structuredSections\": [{\"key\": \"<section-key>\", \"title\": \"<section-title>\", \"facts\": [\"<source-grounded statement>\"]}]\n }],\n \"profileUpdates\": [\"<source-grounded profile update>\"],\n \"questions\": [{\"question\": \"<source-grounded unresolved question>\", \"context\": \"<source-grounded context>\", \"priority\": 0.0}],\n \"identityReflection\": \"<conversation-grounded agent reflection>\",\n \"episodeTitle\": \"<six-to-eight word conversation segment title>\",\n \"relationships\": [{\"source\": \"<normalized-name>\", \"target\": \"<normalized-name>\", \"label\": \"<source-grounded relationship>\"}]\n}`;\nexport const EXTRACTION_RESPONSE_PLACEHOLDERS: Record<string, true> = {};\nfor (const placeholder of EXTRACTION_RESPONSE_SHAPE.match(/<[^<>\\r\\n]+>/g) ?? []) {\n EXTRACTION_RESPONSE_PLACEHOLDERS[placeholder] = true;\n}\nexport const CUE_ANCHOR_PROMPT_INSTRUCTION = `- For each fact, emit at most 3 \"cueAnchors\".\n- 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>\".\n- Set each cue anchor type to entity, file, tool, outcome, constraint, or date.\n- Omit cue anchors when the conversation does not support a useful search hook.\n- Example: \"Alice booked Bistro Max for Mike's surprise party\" can use {\"type\":\"entity\",\"value\":\"Mike surprise party\"} and {\"type\":\"entity\",\"value\":\"Alice restaurant booking\"}.`;\n\n/**\n * Output-language policy (issue #2190). Every prompt that produces memory\n * content embeds this verbatim so non-English conversations are not silently\n * translated to English — translated memories fail later lexical recall.\n */\nexport const OUTPUT_LANGUAGE_POLICY = `Output language: write facts, profile updates, entity names and aliases, tags, questions, and any rewritten or merged memory content in the source language of the conversation or input memories. Never translate into English or another language unless the user explicitly asked for a translation.`;\n\n/**\n * Bi-temporal event-time extraction instruction (#1578 PR2). Emitted on\n * every extraction entry path when `temporal.biTemporal` is on so the LLM\n * emits an optional per-fact `eventTime` expression. The expression is\n * resolved against the source turn timestamp at write time — never\n * wall-clock — so replay/import of old transcripts anchors correctly.\n * Returns an empty string when the gate is off (byte-identical prompt).\n */\nexport function eventTimePromptInstruction(config: PluginConfig): string {\n if (!config.temporalBiTemporal) return \"\";\n return `\nWhen 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.`;\n}\n\n/**\n * Build extraction instructions shared between local and cloud LLM.\n *\n * `ambientCapture` marks input from an always-on recorder, which may carry\n * speech the user never authored (issue #2294).\n */\nexport function buildExtractionInstructions(\n config: PluginConfig,\n existingEntities?: string[],\n ambientCapture = false\n): string {\n const lifecycleCaps = resolveMemoryLifecycleCapabilities(config);\n return `You are a memory extraction system. Analyze the following conversation and extract durable, reusable memories.\n\nMemory categories:\n- fact: Objective information about the world\n- preference: User likes, dislikes, or stylistic choices\n- correction: User correcting a mistake or misconception (highest priority)\n- entity: Information about a specific person, project, tool, or company\n- decision: A choice that was made with rationale\n- relationship: How two entities relate to each other (e.g., \"Alice is Bob's manager\", \"Acme Corp uses Shopify\")\n- principle: Durable rules, values, or operating beliefs (e.g., \"never use Chat Completions API\")\n- commitment: Promises, obligations, or deadlines (e.g., \"deploy by Friday\", \"call accountant Monday\")\n- moment: Emotionally significant events or milestones (e.g., \"first successful deployment of engram\")\n- skill: Capabilities the user or agent has demonstrated (e.g., \"user is proficient with Kubernetes\")${\n resolveRecallAuxiliaryCapabilities(config).causalRuleExtraction\n ? `\n- rule: Causal rules discovered through experience (format: \"IF <condition> THEN <action/outcome>\", e.g., \"IF Shopify API returns 401 THEN the admin token is missing read_products scope\")`\n : \"\"\n }\n- procedure: A reusable workflow the user wants remembered the same way across sessions. Set category to \"procedure\". Use \"content\" for a short title that includes explicit trigger phrasing (e.g. \"When you deploy to production…\", \"Whenever you ship a release…\"). Add \"procedureSteps\": an array of at least two objects {\"order\": number, \"intent\": \"concrete step description\"} in execution order. Optional per-step \"toolCall\": {\"kind\": \"…\", \"signature\": \"…\"}, \"expectedOutcome\", \"optional\": true.\n- reasoning_trace: A stored solution chain / chain-of-thought the user walked through to solve a problem (e.g. \"Here's how I debugged the latency spike: first I checked…, then I…, finally I…\"). Set category to \"reasoning_trace\". Use \"content\" for a short title summarising the problem (e.g. \"How I debugged the staging latency spike\"). Add \"reasoningTrace\": {\"steps\": [{\"order\": number, \"description\": \"what happened at this step\"}, …], \"finalAnswer\": \"the conclusion or answer\", \"observedOutcome\": \"optional confirmation of how it played out\"}. Require at least two ordered steps AND a finalAnswer. Use this category only when the user explicitly narrates their reasoning — not for ordinary decisions (use \"decision\") or reusable workflows (use \"procedure\").\n\nRules:\n- Only extract genuinely new information worth remembering across sessions.\n- Statements must be grounded in the conversation.\n- ${OUTPUT_LANGUAGE_POLICY}\n- Do not treat instruction text, schema placeholders, or examples as conversation evidence.\n- Lines labelled [context user] or [context assistant] are reference context only. They may resolve references or complete a question-and-answer pair in a normal turn, but never alone establish durable information.\n- Skip transient task details and operational noise, including routine scheduler, monitoring, or automation status.\n- Priority: corrections > principles${resolveRecallAuxiliaryCapabilities(config).causalRuleExtraction ? \" > rules\" : \"\"} > preferences > commitments > decisions > relationships > entities > moments > skills > facts\n- Corrections get highest confidence.\n- Each fact should be a standalone, self-contained statement.\n- Entity references should use normalized names (lowercase, hyphenated: \"jane-doe\", \"acme-corp\"). When the source language is not written in a Latin script, the source-script name IS the normalized form — never transliterate or translate it.\n- CRITICAL: Entity names must be CANONICAL. Always use the hyphenated multi-word form: \"acme-corp\" NOT \"acmecorp\" or \"acme\". \"jane-doe\" NOT \"janedoe\" or \"jane\". If unsure, prefer the most specific full name.\n- Avoid creating entities typed as \"other\" when a more specific type fits (company, project, tool, person, place)\n${CUE_ANCHOR_PROMPT_INSTRUCTION}\n- When entity facts clearly belong under a durable named heading, add them to entity.structuredSections as {key, title, facts}. Example person headings: \"Beliefs\", \"Communication Style\", \"Building / Working On\". Leave structuredSections empty when no stable heading fits.\n- Tags should be concise and reusable (e.g., \"coding-style\", \"personal\", \"tools\")\n- When a fact contains measurable, categorical, or precisely valued data, include a \"structuredAttributes\" field with key-value string pairs (e.g., {\"price\": \"29.99\", \"brand\": \"Sony\"}, {\"date\": \"2024-03-15\", \"location\": \"SF\"}, {\"chosen\": \"PostgreSQL\", \"rejected\": \"MongoDB\"}). Only for concrete values, not narrative content.\n- Set confidence using these tiers:\n * Explicit (0.95-1.0): Direct user statements — \"I prefer X\", \"my name is Y\"\n * Implied (0.70-0.94): Strong contextual inference — user consistently does X, clear from conversation flow\n * Inferred (0.40-0.69): Pattern recognition — reasonable guess from limited evidence\n * Speculative (0.00-0.39): Tentative hypothesis — weak signal, needs future confirmation. Speculative memories auto-expire after 30 days if not confirmed.${ambientCapture ? AMBIENT_SPECULATIVE_TIER_CLAUSE : \"\"}${\n config.provenance?.enabled\n ? `\n- Source quotes: For each fact, include a \"quote\" field containing the EXACT verbatim words from the conversation that support the fact. Copy a contiguous span from a single speaker turn (not a paraphrase, not a summary). Cap at ~300 characters. This grounds every memory in the literal utterance that created it.`\n : \"\"\n }\n- For commitments: include any deadline or timeframe mentioned${\n lifecycleCaps.extractionScopeClassification\n ? `\n\nScope classification:\nFor each fact, set \"scope\" to one of:\n- \"global\" — knowledge that applies across projects: core framework/library bugs, API behavior patterns, user preferences (editor, language, style), general coding patterns, infrastructure knowledge, technology facts not tied to one codebase\n- \"project\" — knowledge specific to one codebase: file paths, environment configs, deployment details, project-specific workarounds, team/stakeholder info tied to one project, repo-specific conventions. Tool, command, or CLI-flag instructions TIED TO ONE AGENT are also \"project\", because the same tool name means different things in different agent integrations (a \"search\" tool may search repository code in one agent and the web in another); when keeping such an agent-tied instruction, the fact text MUST name the originating agent as a leading \"In <agent>,\" clause (e.g. \"In Pi, use the search tool with a repository path.\"). A tool/command fact that holds in every agent and every repo is NOT agent-tied — leave it \"global\" and do not add a qualifier (e.g. \"\\`git status --short\\` emits compact output\"). Examples: \"In Pi, the search tool takes a repository path\" -> \"project\"; \"\\`git status --short\\` emits compact output\" -> \"global\".\nWhen in doubt, prefer \"project\" — it is safer to keep knowledge scoped narrowly.`\n : \"\"\n }\n${\n ambientCapture\n ? `${AMBIENT_CAPTURE_PROMPT_SECTION}\n`\n : \"\"\n}\nEntity creation rules (STRICT):\n- Only create entities for DURABLE things: real people, companies, products, tools, ongoing projects\n- NEVER create entities for transient items: individual PRs, branches, Jira tickets, meetings, agent task IDs, log files, database tables, cron job runs, sessions\n- When you learn something about a transient item (e.g., PR #58 fixed a bug), store it as a FACT with an entityRef to the parent project — do NOT create an entity for the PR itself\n- Prefer attaching facts to broad parent entities rather than creating sub-entities. E.g., \"acme-store uses Algolia for search\" is a fact on entity \"acme-store\", NOT a new entity \"acme-store-algolia-connector\"\n- The entity list should be SHORT — think \"things that would have their own Wikipedia page\" not \"things mentioned in passing\"\n\n${\n existingEntities && existingEntities.length > 0\n ? `\nKNOWN ENTITIES (use these exact names when referencing existing things):\n${existingEntities.join(\", \")}\n\nWhen you see something that matches a known entity, use THAT name exactly. Only create a NEW entity if nothing in this list represents it.\n`\n : \"\"\n}\n${eventTimePromptInstruction(config)}\nAlso extract relationships between entities mentioned in the conversation.\n- Format: {source: \"entity-name\", target: \"entity-name\", label: \"relationship description\"}\n- Max 5 relationships per extraction\n- Only include clear, durable relationships (e.g., \"works at\", \"created\", \"manages\", \"uses\")\n- Use normalized entity names (e.g., \"person-jane-doe\", \"company-acme-corp\")\n\n\nAlso emit \"episodeTitle\" as a six-to-eight word title for this conversation segment.\nQuestions are optional. Include only source-grounded unresolved questions that would be useful in future sessions; otherwise return an empty array.\n\nFinally, write a brief identity reflection about the agent who had this conversation, based only on the conversation. Do not write about the extraction process.`;\n}\n\nexport const CONSOLIDATION_RESPONSE_SCHEMA = `{\n \"items\": [\n {\n \"existingId\": \"id\",\n \"action\": \"ADD\",\n \"mergeWith\": \"optional-existing-id\",\n \"updatedContent\": \"optional replacement content\",\n \"reason\": \"brief reason for this action\"\n }\n ],\n \"profileUpdates\": [\"optional profile update\"],\n \"entityUpdates\": [{\"name\": \"person-jane-doe\", \"type\": \"person\", \"facts\": [\"Now leads the backend team\", \"Recently migrated the user service to TypeScript\"]}]\n}`;\n\nexport const PROFILE_CONSOLIDATION_RESPONSE_SCHEMA = `{\n \"consolidatedProfile\": \"# Behavioral Profile\\\\n\\\\n... (complete markdown)\",\n \"removedCount\": 42,\n \"summary\": \"brief summary of what was consolidated\"\n}`;\n\n/**\n * System prompt shared by every consolidation path (gateway, direct client,\n * local LLM). Owns the causal-rule clause and the output-language policy so\n * the three paths cannot drift (issue #2190).\n */\nexport function buildConsolidationSystemPrompt(config: PluginConfig): string {\n return `You are a memory consolidation system. Compare new memories against existing ones and decide what to do with each.\n\nActions:\n- ADD: Keep the new memory as-is (no duplicate exists)\n- MERGE: Combine with an existing memory (provide mergeWith ID and updated content)\n- UPDATE: Replace existing memory content (provide updated content)\n- INVALIDATE: Remove existing memory (it's been superseded or is wrong)\n- SKIP: This new memory is redundant (exact duplicate or subset of existing)\n\nAlso:\n- Suggest profile updates based on patterns across memories\n- Identify entity updates for entity tracking${resolveRecallAuxiliaryCapabilities(config).causalRuleExtraction ? `\n- When merging or updating memories, look for IF→THEN causal patterns. If a memory describes \"X failed/succeeded because Y\" or \"doing X led to Y\", rewrite its content to make the causal rule explicit in the form \"IF <condition> THEN <action/outcome>\".` : \"\"}\n- ${OUTPUT_LANGUAGE_POLICY}`;\n}\n\n/**\n * System prompt shared by every profile-consolidation path (gateway, direct\n * client, local LLM). Owns the output-language policy (issue #2190).\n */\nexport function buildProfileConsolidationSystemPrompt(targetLines: number): string {\n return `You are a profile consolidation system. You are given a behavioral profile (markdown) that has grown too large. Your job is to produce a CONSOLIDATED version that:\n\n1. PRESERVES all ## section headers and their structure\n2. MERGES duplicate or near-duplicate bullet points into single, clear statements\n3. REMOVES stale information that has been superseded by newer bullets\n4. REMOVES trivial or overly specific operational details that won't be useful across sessions\n5. KEEPS the most important, durable observations about the user's preferences, habits, identity, and working style\n6. Target roughly ${targetLines} lines — this is a soft target, prioritize quality over length\n7. Write in the same style as the existing profile — concise bullets, no fluff\n8. ${OUTPUT_LANGUAGE_POLICY}\n\nThe output should be the COMPLETE consolidated profile as valid markdown, starting with \"# Behavioral Profile\".`;\n}\n"],"mappings":";;;;;;;;;;AAaO,IAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkClC,IAAM,mCAAyD,CAAC;AACvE,WAAW,eAAe,0BAA0B,MAAM,eAAe,KAAK,CAAC,GAAG;AAChF,mCAAiC,WAAW,IAAI;AAClD;AACO,IAAM,gCAAgC;AAAA;AAAA;AAAA;AAAA;AAWtC,IAAM,yBAAyB;AAU/B,SAAS,2BAA2B,QAA8B;AACvE,MAAI,CAAC,OAAO,mBAAoB,QAAO;AACvC,SAAO;AAAA;AAET;AAQO,SAAS,4BACd,QACA,kBACA,iBAAiB,OACT;AACR,QAAM,gBAAgB,mCAAmC,MAAM;AAC/D,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uGAaL,mCAAmC,MAAM,EAAE,uBACvC;AAAA,+LAEA,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOE,sBAAsB;AAAA;AAAA;AAAA;AAAA,sCAIY,mCAAmC,MAAM,EAAE,uBAAuB,aAAa,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrH,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mKAQ+H,iBAAiB,kCAAkC,EAAE,GAC/M,OAAO,YAAY,UACf;AAAA,6TAEA,EACN;AAAA,gEAEE,cAAc,gCACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yFAOA,EACN;AAAA,EAEA,iBACI,GAAG,8BAA8B;AAAA,IAEjC,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,oBAAoB,iBAAiB,SAAS,IAC1C;AAAA;AAAA,EAEJ,iBAAiB,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA,IAIvB,EACN;AAAA,EACE,2BAA2B,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYpC;AAEO,IAAM,gCAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AActC,IAAM,wCAAwC;AAAA;AAAA;AAAA;AAAA;AAW9C,SAAS,+BAA+B,QAA8B;AAC3E,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+CAWsC,mCAAmC,MAAM,EAAE,uBAAuB;AAAA,oQAC8I,EAAE;AAAA,IAC7P,sBAAsB;AAC1B;AAMO,SAAS,sCAAsC,aAA6B;AACjF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAOW,WAAW;AAAA;AAAA,KAE1B,sBAAsB;AAAA;AAAA;AAG3B;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const MemoryActionTypeSchema = z.enum([\n \"store_episode\",\n \"store_note\",\n \"update_note\",\n \"create_artifact\",\n \"summarize_node\",\n \"discard\",\n \"link_graph\",\n]);\n\nexport const MemoryActionEligibilityContextSchema = z\n .object({\n confidence: z.number().min(0).max(1),\n lifecycleState: z.enum([\"active\", \"validated\", \"candidate\", \"stale\", \"archived\"]),\n importance: z.number().min(0).max(1),\n source: z.enum([\"extraction\", \"consolidation\", \"replay\", \"manual\", \"unknown\"]),\n })\n .strict();\n\nexport function parseMemoryActionType(value: unknown): z.infer<typeof MemoryActionTypeSchema> {\n const parsed = MemoryActionTypeSchema.safeParse(value);\n return parsed.success ? parsed.data : \"discard\";\n}\n\nexport function parseMemoryActionEligibilityContext(\n value: unknown,\n): z.infer<typeof MemoryActionEligibilityContextSchema> {\n const parsed = MemoryActionEligibilityContextSchema.safeParse(value);\n if (parsed.success) return parsed.data;\n return {\n confidence: 0,\n lifecycleState: \"candidate\",\n importance: 0,\n source: \"unknown\",\n };\n}\n\nexport const ProcedureStepExtractSchema = z.object({\n order: z.number(),\n intent: z.string(),\n toolCall: z\n .object({\n kind: z.string(),\n signature: z.string(),\n })\n .optional()\n .nullable(),\n expectedOutcome: z.string().optional().nullable(),\n optional: z.boolean().optional().nullable(),\n});\n\nexport const ExtractedFactSchema = z.object({\n category: z.enum([\n \"fact\",\n \"preference\",\n \"correction\",\n \"entity\",\n \"decision\",\n \"relationship\",\n \"principle\",\n \"commitment\",\n \"moment\",\n \"skill\",\n \"rule\",\n \"procedure\",\n \"reasoning_trace\",\n ]),\n content: z\n .string()\n .describe(\"The memory content — a clear, standalone statement\"),\n confidence: z\n .number()\n .min(0)\n .max(1)\n .describe(\"How confident are you this is correct (0-1)\"),\n tags: z.array(z.string()).describe(\"Relevant tags for categorization\"),\n entityRef: z\n .string()\n .optional()\n .nullable()\n .describe(\"If about an entity, its normalized name (e.g. person-jane-doe)\"),\n cueAnchors: z\n .array(\n z.object({\n type: z.enum([\"entity\", \"file\", \"tool\", \"outcome\", \"constraint\", \"date\"]),\n value: z.string(),\n }),\n )\n .optional()\n .nullable()\n .describe(\"Up to three short retrieval cues for this fact.\"),\n promptedByQuestion: z\n .string()\n .optional()\n .nullable()\n .describe(\"Optional proactive follow-up question that surfaced this fact.\"),\n scope: z\n .enum([\"project\", \"global\"])\n .optional()\n .nullable()\n .describe(\n 'Scope classification: \"global\" for cross-project knowledge (framework bugs, library behavior, API patterns, user preferences, general coding patterns); \"project\" for project-specific knowledge (file paths, env configs, deployment details, project workarounds) and for tool, command, or CLI-flag instructions tied to one agent, since the same tool name can mean different things across agents. When keeping such an agent-tied instruction, begin the fact with a leading \"In <agent>,\" clause naming that agent. Defaults to \"project\" when a coding context is active.',\n ),\n subject: z\n .enum([\"user\", \"agent\"])\n .optional()\n .nullable()\n .describe(\n 'Memory subject: \"user\" when the fact models the person (preferences, relationships, biography, moments, commitments about their life); \"agent\" when it is reusable operating knowledge (procedures, principles, tool-usage lessons, debugging strategies, environment facts with no personal content). Emit only for fact/decision-like facts; the category defaults cover preference, relationship, moment, commitment, procedure, principle, and skill.',\n ),\n quote: z\n .string()\n .optional()\n .nullable()\n .describe(\n \"The EXACT verbatim words from the conversation that support this fact. Copy a contiguous span from a single speaker turn (not a paraphrase). Cap at ~300 characters. This is the grounding evidence for downstream faithfulness verification (issue #1575).\",\n ),\n structuredAttributes: z\n .record(z.string(), z.string())\n .optional()\n .nullable()\n .describe(\"Structured key-value attributes when the fact contains measurable or categorical data (e.g., {\\\"price\\\": \\\"29.99\\\", \\\"color\\\": \\\"blue\\\", \\\"date\\\": \\\"2024-03-15\\\"}).\"),\n procedureSteps: z\n .array(ProcedureStepExtractSchema)\n .optional()\n .nullable()\n .describe(\n 'For category \"procedure\" only: ordered steps (intent per step). At least two steps; include explicit trigger phrasing in content (e.g. \"When you deploy…\").',\n ),\n reasoningTrace: z\n .object({\n steps: z\n .array(\n z.object({\n order: z.number(),\n description: z.string(),\n }),\n )\n // Prompts and normalizer require >=2 ordered steps; enforce it at\n // the schema layer so gateway-path parsing rejects malformed traces\n // rather than persisting them (local/direct-client normalization\n // already enforces this, keeping the two paths symmetric).\n .min(2)\n .describe(\"Ordered reasoning steps the user walked through (require >=2).\"),\n // Accept snake_case aliases so a loose gateway model using\n // `final_answer` / `observed_outcome` does not fail schema parsing\n // and drop the entire extraction result. Local/direct-client\n // normalization already tolerates these keys; the gateway path must\n // too. Zod's `union` keeps the parse successful either way.\n finalAnswer: z\n .string()\n .optional()\n .nullable()\n .describe(\"The conclusion, decision, or answer the chain arrived at.\"),\n final_answer: z\n .string()\n .optional()\n .nullable()\n .describe(\"Alias for finalAnswer (snake_case). Gateway-tolerance shim.\"),\n observedOutcome: z\n .string()\n .optional()\n .nullable()\n .describe(\"Optional note about how the answer actually played out.\"),\n observed_outcome: z\n .string()\n .optional()\n .nullable()\n .describe(\"Alias for observedOutcome (snake_case). Gateway-tolerance shim.\"),\n })\n // Either finalAnswer OR final_answer must be present — enforce here so\n // the rest of the pipeline can assume a usable string downstream.\n .refine(\n (v) =>\n (typeof v.finalAnswer === \"string\" && v.finalAnswer.trim().length > 0) ||\n (typeof v.final_answer === \"string\" && v.final_answer.trim().length > 0),\n { message: \"reasoningTrace requires finalAnswer (or final_answer)\" },\n )\n .optional()\n .nullable()\n .describe(\n 'For category \"reasoning_trace\" only: a stored solution chain with ordered steps, a final answer, and an optional observed outcome. Require at least two steps. IMPORTANT: must include a non-empty finalAnswer (or final_answer) — the JSON Schema sent to providers cannot enforce this constraint.',\n ),\n eventTime: z\n .string()\n .optional()\n .nullable()\n .describe(\n 'Optional event-time expression for bi-temporal validity (#1578). An ISO date (\"2025-03-01\") or a relative expression verbatim (\"last March\", \"yesterday\", \"since 2024\", \"until 2025-06-01\"). Resolved against the source turn timestamp at write time — NOT wall-clock. Omit when the fact has no explicit temporal anchor.',\n ),\n event_time: z\n .string()\n .optional()\n .nullable()\n .describe(\"Alias for eventTime (snake_case). Gateway-tolerance shim (#1578).\"),\n}).superRefine((value, ctx) => {\n if (value.category === \"procedure\" && (!Array.isArray(value.procedureSteps) || value.procedureSteps.length < 2)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"procedureSteps\"],\n message: \"procedure facts require at least two procedureSteps\",\n });\n }\n\n if (value.category === \"reasoning_trace\" && value.reasoningTrace == null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"reasoningTrace\"],\n message: \"reasoning_trace facts require reasoningTrace\",\n });\n }\n});\n\nexport const EntityMentionSchema = z.object({\n name: z\n .string()\n .describe(\"Normalized entity name (e.g. jane-doe, acme-corp, my-project)\"),\n type: z.enum([\"person\", \"project\", \"tool\", \"company\", \"place\", \"other\"]),\n facts: z\n .array(z.string())\n .describe(\"New facts learned about this entity in this conversation\"),\n promptedByQuestion: z\n .string()\n .optional()\n .nullable()\n .describe(\"Optional proactive follow-up question that surfaced this entity.\"),\n structuredSections: z\n .array(z.object({\n key: z.string(),\n title: z.string(),\n facts: z.array(z.string()),\n }))\n .optional()\n .nullable()\n .describe(\"Optional named sections for entity-specific facts. Use when facts clearly belong under a durable heading such as Beliefs or Building / Working On.\"),\n});\n\nexport const ExtractedQuestionSchema = z.object({\n question: z.string().describe(\"A genuine question the AI is curious about based on this conversation\"),\n context: z.string().describe(\"Why this question matters or what prompted it\"),\n priority: z.number().min(0).max(1).describe(\"How important/urgent this question is (0-1)\"),\n});\n\nexport const ProactiveQuestionsResultSchema = z.object({\n questions: z\n .array(ExtractedQuestionSchema)\n .describe(\"Additional follow-up questions discovered in a proactive second-pass extraction.\"),\n});\n\nexport const ExtractedRelationshipSchema = z.object({\n source: z.string().describe(\"Source entity name (normalized, e.g. person-jane-doe)\"),\n target: z.string().describe(\"Target entity name (normalized, e.g. company-acme-corp)\"),\n label: z.string().describe(\"Relationship label (e.g. 'works at', 'created', 'manages')\"),\n promptedByQuestion: z\n .string()\n .optional()\n .nullable()\n .describe(\"Optional proactive follow-up question that surfaced this relationship.\"),\n});\n\nexport const ProactiveExtractionResultSchema = z.object({\n facts: z\n .array(ExtractedFactSchema)\n .describe(\n \"Additional high-confidence memories recovered only after answering proactive follow-up questions from the same buffered conversation.\",\n ),\n profileUpdates: z\n .array(z.string())\n .describe(\n \"Additional profile updates directly supported by the buffered conversation. Omit anything speculative.\",\n ),\n entities: z\n .array(EntityMentionSchema)\n .describe(\n \"Additional entities or entity facts surfaced by the proactive follow-up pass.\",\n ),\n relationships: z\n .array(ExtractedRelationshipSchema)\n .optional()\n .nullable()\n .describe(\n \"Additional relationships surfaced by the proactive follow-up pass.\",\n ),\n});\n\n/**\n * Salvage array for model-produced extraction output (issue #2455).\n *\n * Mixed valid+invalid items parse to the valid subset so one malformed\n * element no longer discards the whole extraction. A non-empty array with\n * zero valid items still fails, so bounded retry stays effective and wholly\n * malformed output is never silently accepted as empty. Empty arrays stay\n * valid. Consolidation schemas intentionally stay strict — do not use this\n * for them.\n */\nfunction salvageArray<T extends z.ZodTypeAny>(itemSchema: T) {\n return z\n .array(z.unknown())\n .transform((items, ctx) => {\n const valid: z.infer<T>[] = [];\n for (const raw of items) {\n const parsed = itemSchema.safeParse(raw);\n if (parsed.success) {\n valid.push(parsed.data);\n }\n }\n if (items.length > 0 && valid.length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"array contains no items matching the schema\",\n });\n return z.NEVER;\n }\n return valid;\n });\n}\n\nexport const ExtractionResultSchema = z.object({\n facts: salvageArray(ExtractedFactSchema).describe(\n \"Extracted memories from the conversation. Include facts, preferences, corrections, and decisions. Only extract genuinely new, durable information — skip transient task state.\",\n ),\n profileUpdates: salvageArray(z.string()).describe(\n \"Updates to the user's behavioral profile. Each string is a standalone statement about the user's preferences, habits, or personality. Only include genuinely new insights.\",\n ),\n entities: salvageArray(EntityMentionSchema).describe(\n \"Entities mentioned in the conversation with new facts about them.\",\n ),\n questions: salvageArray(ExtractedQuestionSchema).describe(\n \"Zero to three source-grounded questions useful in future sessions. Return an empty array when the conversation supports none.\",\n ),\n identityReflection: z\n .string()\n .optional()\n .nullable()\n .describe(\n \"A brief reflection on what you learned about yourself as an agent in this interaction — patterns in your behavior, growth, things you did well or could improve.\",\n ),\n episodeTitle: z\n .string()\n .optional()\n .nullable()\n .describe(\"A six-to-eight word title for this conversation segment.\"),\n relationships: salvageArray(ExtractedRelationshipSchema)\n .optional()\n .nullable()\n .describe(\n \"Relationships between entities discovered in this conversation. Max 5 per extraction. Format: {source, target, label}.\",\n ),\n});\n\n/**\n * Provider-facing extraction contract. Keep this free of transforms/refinements:\n * JSON Schema generators cannot faithfully represent salvageArray's ZodEffects.\n * ExtractionResultSchema remains the authoritative tolerant parser after the\n * provider returns.\n */\nexport const ExtractionProviderOutputSchema = z.object({\n facts: z.array(ExtractedFactSchema),\n profileUpdates: z.array(z.string()),\n entities: z.array(EntityMentionSchema),\n questions: z.array(ExtractedQuestionSchema),\n identityReflection: z.string().optional().nullable(),\n episodeTitle: z.string().optional().nullable(),\n relationships: z.array(ExtractedRelationshipSchema).optional().nullable(),\n});\n\nexport const ConsolidationItemSchema = z.object({\n existingId: z\n .string()\n .describe(\"The ID of the existing memory being evaluated\"),\n action: z.enum([\"ADD\", \"MERGE\", \"UPDATE\", \"INVALIDATE\", \"SKIP\"]),\n mergeWith: z\n .string()\n .optional()\n .nullable()\n .describe(\"If MERGE, the ID of the memory to merge with\"),\n updatedContent: z\n .string()\n .optional()\n .nullable()\n .describe(\"If UPDATE or MERGE, the new content\"),\n reason: z.string().describe(\"Brief reason for this decision\"),\n});\n\nexport const ConsolidationResultSchema = z.object({\n items: z\n .array(ConsolidationItemSchema)\n .describe(\n \"Decisions for each existing memory: ADD (keep as-is), MERGE (combine with another), UPDATE (revise content), INVALIDATE (mark as outdated/wrong), SKIP (no action needed)\",\n ),\n profileUpdates: z\n .array(z.string())\n .describe(\"New profile statements to add or update\"),\n entityUpdates: z\n .array(EntityMentionSchema)\n .describe(\"Entity updates from consolidation analysis\"),\n});\n\nexport function buildProfileConsolidationResultSchema(targetLines: number) {\n return z.object({\n consolidatedProfile: z\n .string()\n .describe(\n `The full consolidated profile as markdown. Preserve all ## section headers. Merge duplicate or near-duplicate bullets into single clear statements. Remove stale or superseded information. Keep the most important and durable observations. Target roughly ${targetLines} lines.`,\n ),\n removedCount: z\n .number()\n .describe(\"Number of bullets removed or merged during consolidation\"),\n summary: z\n .string()\n .describe(\"Brief summary of what was consolidated\"),\n });\n}\n\nexport const ProfileConsolidationResultSchema = buildProfileConsolidationResultSchema(50);\n\nexport const IdentityConsolidationResultSchema = z.object({\n learnedPatterns: z\n .array(z.string())\n .describe(\n \"Consolidated behavioral patterns and lessons learned, each a concise standalone statement\",\n ),\n summary: z\n .string()\n .describe(\n \"A brief paragraph summarizing the agent's core identity insights\",\n ),\n});\n\nexport type IdentityConsolidationResultParsed = z.infer<\n typeof IdentityConsolidationResultSchema\n>;\n\n// Contradiction Verification (Phase 2B)\nexport const ContradictionVerificationSchema = z.object({\n isContradiction: z\n .boolean()\n .describe(\"Whether the two memories truly contradict each other\"),\n confidence: z\n .number()\n .min(0)\n .max(1)\n .describe(\"How confident are you in this assessment (0-1)\"),\n reasoning: z\n .string()\n .describe(\"Explanation of why these are or are not contradictory\"),\n whichIsNewer: z\n .enum([\"first\", \"second\", \"unclear\"])\n .describe(\"Which memory represents the more recent/current state\"),\n});\n\nexport type ContradictionVerificationResult = z.infer<\n typeof ContradictionVerificationSchema\n>;\n\n// Memory Linking (Phase 3A)\nexport const MemoryLinkSchema = z.object({\n targetId: z\n .string()\n .describe(\"The ID of the memory this links to\"),\n linkType: z\n .enum([\"follows\", \"references\", \"contradicts\", \"supports\", \"related\"])\n .describe(\"The type of relationship\"),\n strength: z\n .number()\n .min(0)\n .max(1)\n .describe(\"How strong is this relationship (0-1)\"),\n reason: z\n .string()\n .optional()\n .nullable()\n .describe(\"Why this link exists\"),\n});\n\nexport const SuggestedLinksSchema = z.object({\n links: z\n .array(MemoryLinkSchema)\n .describe(\"Suggested links between memories based on semantic analysis\"),\n});\n\nexport type MemoryLink = z.infer<typeof MemoryLinkSchema>;\nexport type SuggestedLinks = z.infer<typeof SuggestedLinksSchema>;\n\n// Memory Summarization (Phase 4A)\nexport const MemorySummarySchema = z.object({\n summaryText: z\n .string()\n .describe(\"A concise summary of the batch of memories\"),\n keyFacts: z\n .array(z.string())\n .describe(\"The most important facts extracted from these memories\"),\n keyEntities: z\n .array(z.string())\n .describe(\"Key entities mentioned across these memories\"),\n});\n\nexport type MemorySummaryResult = z.infer<typeof MemorySummarySchema>;\n\nexport const DaySummaryResultSchema = z.object({\n summary: z.string().min(1).describe(\"A concise end-of-day summary paragraph.\"),\n bullets: z.array(z.string()).default([]).describe(\"The most important moments from the day.\"),\n next_actions: z.array(z.string()).default([]).describe(\"Concrete next actions for tomorrow.\"),\n risks_or_open_loops: z.array(z.string()).default([]).describe(\"Open loops, blockers, or fragile assumptions still needing attention.\"),\n});\n\n// v8.15 behavior-loop auto-tuning state contracts\nexport const BehaviorLoopAdjustmentSchema = z.object({\n parameter: z.string().min(1),\n previousValue: z.number(),\n nextValue: z.number(),\n delta: z.number(),\n evidenceCount: z.number().int().min(0),\n confidence: z.number().min(0).max(1),\n reason: z.string(),\n appliedAt: z.string(),\n});\n\nexport const BehaviorLoopPolicyStateSchema = z.object({\n version: z.number().int().min(0),\n windowDays: z.number().int().min(0),\n minSignalCount: z.number().int().min(0),\n maxDeltaPerCycle: z.number().min(0).max(1),\n protectedParams: z.array(z.string()),\n adjustments: z.array(BehaviorLoopAdjustmentSchema),\n updatedAt: z.string(),\n});\n\nexport type BehaviorLoopAdjustmentParsed = z.infer<typeof BehaviorLoopAdjustmentSchema>;\nexport type BehaviorLoopPolicyStateParsed = z.infer<typeof BehaviorLoopPolicyStateSchema>;\n\nexport type MemoryActionTypeParsed = z.infer<typeof MemoryActionTypeSchema>;\nexport type MemoryActionEligibilityContextParsed = z.infer<typeof MemoryActionEligibilityContextSchema>;\nexport type ExtractedFactParsed = z.infer<typeof ExtractedFactSchema>;\nexport type EntityMentionParsed = z.infer<typeof EntityMentionSchema>;\nexport type ExtractedQuestionParsed = z.infer<typeof ExtractedQuestionSchema>;\nexport type ProactiveQuestionsResultParsed = z.infer<typeof ProactiveQuestionsResultSchema>;\nexport type ExtractionResultParsed = z.infer<typeof ExtractionResultSchema>;\nexport type ConsolidationItemParsed = z.infer<typeof ConsolidationItemSchema>;\nexport type ConsolidationResultParsed = z.infer<\n typeof ConsolidationResultSchema\n>;\n"],"mappings":"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","names":[]}
|