@remnic/core 9.69.22 → 9.69.24
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/abstraction-nodes.js +3 -2
- package/dist/access-admin-ops-surface.d.ts +14 -12
- package/dist/access-admin-ops-surface.js +94 -91
- package/dist/access-authorization-probe.d.ts +14 -12
- package/dist/access-authorization-probe.js +95 -92
- package/dist/access-boundary.d.ts +14 -12
- package/dist/access-boundary.js +94 -91
- package/dist/access-citation-namespace.js +3 -3
- package/dist/access-cli.js +200 -195
- 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 +94 -91
- package/dist/access-health-types.d.ts +2 -1
- package/dist/access-http-briefing.d.ts +156 -0
- package/dist/access-http-briefing.js +233 -0
- 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 +96 -93
- package/dist/access-http.d.ts +15 -13
- package/dist/access-http.js +119 -114
- package/dist/access-identity-continuity-surface.d.ts +12 -10
- package/dist/access-identity-continuity-surface.js +94 -91
- package/dist/access-lcm-surface.d.ts +14 -12
- package/dist/access-lcm-surface.js +94 -91
- package/dist/access-mcp.d.ts +14 -12
- package/dist/access-mcp.js +105 -101
- package/dist/access-memory-search-fanout.d.ts +3 -2
- package/dist/{access-namespace-preflight-BMHhxoL9.d.ts → access-namespace-preflight-BsvmyENS.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +4 -3
- package/dist/access-namespace-preflight.js +94 -91
- package/dist/access-observe-transcript.d.ts +12 -10
- package/dist/access-observe-write-surface.d.ts +14 -12
- package/dist/access-observe-write-surface.js +94 -91
- package/dist/access-offline-manifest.d.ts +12 -10
- package/dist/access-offline-manifest.js +15 -15
- package/dist/access-operations-batch.js +99 -95
- package/dist/access-operations.d.ts +14 -12
- package/dist/access-operations.js +104 -100
- package/dist/access-recall-concurrency.d.ts +14 -12
- package/dist/access-recall-concurrency.js +94 -91
- package/dist/access-recall-response.d.ts +14 -12
- package/dist/access-recall-response.js +94 -91
- package/dist/access-recall-surface.d.ts +14 -12
- package/dist/access-recall-surface.js +94 -91
- package/dist/access-schema.js +8 -7
- package/dist/{access-service-BlsNXFwx.d.ts → access-service-DWdY9Mlk.d.ts} +7 -7
- package/dist/access-service-helpers.d.ts +14 -12
- package/dist/access-service.d.ts +14 -12
- package/dist/access-service.js +94 -91
- package/dist/access-surface-catalog.d.ts +14 -12
- package/dist/access-surface-catalog.js +97 -93
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +4 -3
- package/dist/action-confidence.d.ts +2 -1
- package/dist/active-memory-bridge.d.ts +2 -1
- package/dist/active-recall.d.ts +2 -1
- package/dist/active-recall.js +16 -13
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +7 -7
- package/dist/adapters/registry.js +3 -3
- package/dist/ambient-provenance.d.ts +2 -1
- package/dist/artifact-search.d.ts +2 -1
- package/dist/{auto-sync-GRUJFD2F.js → auto-sync-WNGG2GC2.js} +9 -9
- 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 +36 -36
- 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 +13 -13
- package/dist/bulk-import/index.d.ts +4 -3
- package/dist/calibration.d.ts +2 -1
- package/dist/calibration.js +2 -1
- package/dist/calibration.js.map +1 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
- package/dist/{capsule-merge-SEHERWWP.js → capsule-merge-IPG4IOFP.js} +5 -5
- package/dist/{catalog-C1qHsGew.d.ts → catalog-CDZLyiXL.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +2 -1
- package/dist/causal-behavior.js +4 -3
- package/dist/causal-behavior.js.map +1 -1
- package/dist/causal-chain.js +4 -3
- package/dist/causal-consolidation.d.ts +2 -1
- package/dist/causal-consolidation.js +42 -42
- package/dist/causal-retrieval.js +4 -3
- package/dist/causal-retrieval.js.map +1 -1
- package/dist/causal-trajectory-graph.d.ts +5 -2
- package/dist/causal-trajectory-graph.js +6 -2
- package/dist/causal-trajectory-graph.js.map +1 -1
- package/dist/causal-trajectory.js +3 -2
- package/dist/{chunk-KTVSPFCQ.js → chunk-22FVR2KE.js} +2 -2
- package/dist/{chunk-7Y5V3LAP.js → chunk-27QVNSQ3.js} +2 -2
- package/dist/{chunk-R7LY4YKF.js → chunk-2EKJDQZB.js} +2 -2
- package/dist/{chunk-FCATYKQA.js → chunk-2IOHTUP3.js} +263 -13
- package/dist/chunk-2IOHTUP3.js.map +1 -0
- package/dist/{chunk-HOUST5UX.js → chunk-2ITE4C2Z.js} +2 -2
- package/dist/{chunk-JOYC4RYC.js → chunk-2JVJ7UHC.js} +2 -2
- package/dist/{chunk-X2NFFBTO.js → chunk-2L5FSNPC.js} +7 -7
- package/dist/{chunk-DUAJKRR2.js → chunk-2SGLMP2E.js} +2 -2
- package/dist/{chunk-6FUMA6AA.js → chunk-2Z4GS5E6.js} +2 -2
- package/dist/{chunk-G6MXN2G5.js → chunk-37KUQPX4.js} +6 -6
- package/dist/{chunk-DDQQY2E3.js → chunk-3BTFBQLO.js} +7 -7
- package/dist/chunk-3BTFBQLO.js.map +1 -0
- package/dist/{chunk-UR6PBX2J.js → chunk-3K7V3HE6.js} +35 -60
- package/dist/chunk-3K7V3HE6.js.map +1 -0
- package/dist/{chunk-WKAXBXVA.js → chunk-3QQTXYZ6.js} +2 -2
- package/dist/{chunk-DJUKBGAD.js → chunk-46EST7JO.js} +5 -5
- package/dist/chunk-46EST7JO.js.map +1 -0
- package/dist/{chunk-4ZWCQJNM.js → chunk-46WM6JX2.js} +5 -5
- package/dist/{chunk-CASWJ2HM.js → chunk-46ZPIGWI.js} +3 -3
- package/dist/{chunk-HTIIXNJQ.js → chunk-4FIH6MPS.js} +6 -3
- package/dist/chunk-4FIH6MPS.js.map +1 -0
- package/dist/{chunk-MCA2X4WH.js → chunk-4IHBN6WU.js} +2 -2
- package/dist/{chunk-W7IGLX4G.js → chunk-4O6WRBGE.js} +7 -7
- package/dist/chunk-4O6WRBGE.js.map +1 -0
- package/dist/{chunk-FB7LAJQM.js → chunk-4TKJGOCJ.js} +2 -2
- package/dist/{chunk-H7BZBSP6.js → chunk-52II7PB6.js} +4 -4
- package/dist/{chunk-N4Y5T6VD.js → chunk-54WHLA65.js} +4 -4
- package/dist/chunk-56Y6EKZN.js +24 -0
- package/dist/chunk-56Y6EKZN.js.map +1 -0
- package/dist/{chunk-YVLENSNS.js → chunk-5ATKSPEQ.js} +2 -2
- package/dist/{chunk-OLT3YTDH.js → chunk-5FAGCOZD.js} +37 -24
- package/dist/chunk-5FAGCOZD.js.map +1 -0
- package/dist/{chunk-ZVZHG7AI.js → chunk-5UBH37SL.js} +3 -3
- package/dist/{chunk-N3WZU76A.js → chunk-66OJSCI6.js} +2 -2
- package/dist/{chunk-D35XLYQ7.js → chunk-6CVNSDCZ.js} +11 -11
- package/dist/{chunk-KA2HZCMG.js → chunk-6NXSYYGP.js} +2 -2
- package/dist/{chunk-2HIJHXB3.js → chunk-6WHJ2EAB.js} +2 -2
- package/dist/{chunk-ZZM476NV.js → chunk-6XL73HQ4.js} +4 -4
- package/dist/{chunk-EJ5RKUXW.js → chunk-AQ7SYDVO.js} +2 -2
- package/dist/{chunk-2Z3DG5CQ.js → chunk-B3O3IRZN.js} +2 -2
- package/dist/{chunk-P77QX3ID.js → chunk-B6O2YLUR.js} +21 -20
- package/dist/chunk-B6O2YLUR.js.map +1 -0
- package/dist/{chunk-RACZB5HT.js → chunk-BD7JTBYP.js} +4 -4
- package/dist/{chunk-I762GW7V.js → chunk-BLJWYCNO.js} +5 -5
- package/dist/{chunk-ACPCA4NO.js → chunk-BMWN7B3Y.js} +6 -6
- package/dist/chunk-BMWN7B3Y.js.map +1 -0
- package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
- package/dist/{chunk-KK66P5GQ.js → chunk-C553ZTLF.js} +46 -48
- package/dist/chunk-C553ZTLF.js.map +1 -0
- package/dist/{chunk-GCASGYIO.js → chunk-C7HJ3NEI.js} +2 -2
- package/dist/{chunk-C24UZSFW.js → chunk-CEH2AFXG.js} +6 -6
- package/dist/{chunk-WVGXCBOC.js → chunk-D5F7TKMH.js} +2 -2
- package/dist/chunk-DGS34QSY.js +141 -0
- package/dist/chunk-DGS34QSY.js.map +1 -0
- package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
- package/dist/{chunk-2OXIPF3A.js → chunk-DZD3WGCD.js} +4 -4
- package/dist/{chunk-UMEOXLIZ.js → chunk-E2P7TZTF.js} +5 -5
- package/dist/{chunk-6FC3IZ26.js → chunk-EBA5DA77.js} +2 -2
- package/dist/{chunk-N7JK2RKG.js → chunk-EOQ6FSQP.js} +2 -2
- package/dist/chunk-EUT2WCWS.js +54 -0
- package/dist/chunk-EUT2WCWS.js.map +1 -0
- package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
- package/dist/{chunk-XDMI5VKE.js → chunk-FVOP3NT7.js} +2 -2
- package/dist/{chunk-NRLELHAY.js → chunk-G7NYVKD6.js} +2 -2
- package/dist/{chunk-B3W7GWQB.js → chunk-GHTSNGBZ.js} +2 -2
- package/dist/chunk-GKCXTSFF.js +17 -0
- package/dist/chunk-GKCXTSFF.js.map +1 -0
- package/dist/{chunk-LUDBXTBJ.js → chunk-H272ZPQ3.js} +5 -5
- package/dist/{chunk-SN4JXNLL.js → chunk-H3TKENU4.js} +2 -2
- package/dist/{chunk-4HYNMLT6.js → chunk-H4SEGIZY.js} +2 -2
- package/dist/{chunk-ACZN5ZXD.js → chunk-H54VWRPS.js} +13 -13
- package/dist/{chunk-HTP6XRUI.js → chunk-HM7RHKS4.js} +2 -2
- package/dist/{chunk-Z3SQEEB6.js → chunk-HWLIMQE2.js} +2 -2
- package/dist/{chunk-NQFCLAYT.js → chunk-ICKJ52PE.js} +99 -322
- package/dist/chunk-ICKJ52PE.js.map +1 -0
- package/dist/{chunk-2QSZNTDO.js → chunk-JBPKEARU.js} +7 -7
- package/dist/{chunk-DK6GMO6D.js → chunk-JEC4DVM3.js} +16 -16
- package/dist/chunk-JEC4DVM3.js.map +1 -0
- package/dist/{chunk-ET2CNMLD.js → chunk-JN72EPOE.js} +2 -2
- package/dist/{chunk-U62OK7BB.js → chunk-JPKK466T.js} +188 -21
- package/dist/chunk-JPKK466T.js.map +1 -0
- package/dist/{chunk-JCCWJHOP.js → chunk-JYZSRNR7.js} +2 -2
- package/dist/{chunk-7D6HXODY.js → chunk-K7724CH2.js} +2 -2
- package/dist/{chunk-X33MJFD2.js → chunk-KAXCYM66.js} +3 -3
- package/dist/{chunk-7RRUHJPG.js → chunk-KB2G2I6Q.js} +3 -3
- package/dist/{chunk-ZXBTTMGZ.js → chunk-KEF46KL2.js} +5 -5
- package/dist/{chunk-5UZXUTVO.js → chunk-KNA3BXXL.js} +6 -2
- package/dist/chunk-KNA3BXXL.js.map +1 -0
- package/dist/{chunk-UWTDARPF.js → chunk-KTWG7CNY.js} +6 -6
- package/dist/{chunk-XQYTSZW3.js → chunk-L7Z57SID.js} +6 -6
- package/dist/{chunk-JMAG7WZ7.js → chunk-LO4UKPKX.js} +3 -3
- package/dist/{chunk-LDWIPYJ6.js → chunk-LS2FHUML.js} +3 -3
- package/dist/{chunk-GDB4J2H3.js → chunk-MPC7TYTZ.js} +2 -2
- package/dist/{chunk-2GF27PGH.js → chunk-MRPOZBJC.js} +3 -3
- package/dist/{chunk-BR3OOQZQ.js → chunk-MWN6QEI2.js} +2 -2
- package/dist/{chunk-NZGO2GKL.js → chunk-MY5EDR46.js} +4 -4
- package/dist/{chunk-LCMUZDBZ.js → chunk-N3ZOP7KC.js} +3 -3
- package/dist/{chunk-TVW4C7PV.js → chunk-NB3LRY4T.js} +6 -6
- package/dist/{chunk-QJCWK2A7.js → chunk-ND6IQGSZ.js} +2 -2
- package/dist/{chunk-NOB2T2FC.js → chunk-NHLLKEKK.js} +2 -2
- package/dist/{chunk-7GSSHAXC.js → chunk-NLYVH66G.js} +6 -6
- package/dist/chunk-NLYVH66G.js.map +1 -0
- package/dist/{chunk-EJIWBTVM.js → chunk-O6ZNNVSP.js} +2 -2
- package/dist/{chunk-AG46P24C.js → chunk-OB3XMWX5.js} +4 -4
- package/dist/{chunk-NYRB7BKY.js → chunk-OEYZXDQI.js} +6 -6
- package/dist/chunk-OEYZXDQI.js.map +1 -0
- package/dist/{chunk-46QMN7I7.js → chunk-PAZY2ZKP.js} +6 -6
- package/dist/{chunk-EF4JUM55.js → chunk-PX4UMA5Z.js} +2 -2
- package/dist/chunk-QLK3SL7Q.js +242 -0
- package/dist/chunk-QLK3SL7Q.js.map +1 -0
- package/dist/{chunk-GGYDJJBO.js → chunk-QOOBICJF.js} +5 -5
- package/dist/chunk-QOOBICJF.js.map +1 -0
- package/dist/{chunk-NNZFPYYX.js → chunk-R7QY5ZVB.js} +2 -2
- package/dist/{chunk-RO2X2EYM.js → chunk-R7RTXEYG.js} +2 -2
- package/dist/{chunk-3LJPSRAN.js → chunk-RBCQVOVJ.js} +3 -3
- package/dist/{chunk-N4F7ZSSG.js → chunk-RC5DXXWC.js} +2 -2
- package/dist/{chunk-VLAQV4HT.js → chunk-RJYJ7KR7.js} +1636 -611
- package/dist/chunk-RJYJ7KR7.js.map +1 -0
- package/dist/{chunk-5CF2R4NS.js → chunk-RKBLRTNT.js} +2 -2
- package/dist/{chunk-5QZR2RA3.js → chunk-ROBHL3GL.js} +2 -2
- package/dist/{chunk-D5ZNOKR7.js → chunk-S7T2TY65.js} +3 -3
- package/dist/{chunk-C2JCVZWX.js → chunk-SCXURCVT.js} +25 -13
- package/dist/chunk-SCXURCVT.js.map +1 -0
- package/dist/{chunk-3LADWWMA.js → chunk-SJDQ5RSN.js} +3 -3
- package/dist/{chunk-45XVII3J.js → chunk-SMWTZLHE.js} +99 -89
- package/dist/{chunk-45XVII3J.js.map → chunk-SMWTZLHE.js.map} +1 -1
- package/dist/{chunk-XOQGUGJL.js → chunk-SO7SV523.js} +1 -1
- package/dist/{chunk-XOQGUGJL.js.map → chunk-SO7SV523.js.map} +1 -1
- package/dist/{chunk-CHWUICVY.js → chunk-SV4Z2S67.js} +4 -4
- package/dist/{chunk-JHP45LO5.js → chunk-SVXJLDDC.js} +9 -7
- package/dist/{chunk-JHP45LO5.js.map → chunk-SVXJLDDC.js.map} +1 -1
- package/dist/{chunk-SEF4IOFE.js → chunk-SWIKABKI.js} +2 -2
- package/dist/{chunk-JRRQ747T.js → chunk-TBXAY2SS.js} +13 -13
- package/dist/{chunk-J6A3CX5N.js → chunk-TG3FAM2S.js} +33 -8
- package/dist/{chunk-J6A3CX5N.js.map → chunk-TG3FAM2S.js.map} +1 -1
- package/dist/{chunk-XZBXINXZ.js → chunk-TNSCIPBQ.js} +4 -4
- package/dist/{chunk-S37NN23M.js → chunk-TVEONGBU.js} +2 -2
- package/dist/{chunk-5RPMTFB6.js → chunk-TWF35IC6.js} +3 -3
- package/dist/{chunk-BZTJEILZ.js → chunk-U6N5IBVY.js} +2 -2
- package/dist/{chunk-7TUB6JWA.js → chunk-UCKYTA2T.js} +3 -3
- package/dist/{chunk-PPOT6SPR.js → chunk-UNNPNBR2.js} +11 -11
- package/dist/{chunk-KQAFEZQX.js → chunk-VDX2J7OX.js} +2 -2
- package/dist/{chunk-J2R275FN.js → chunk-VVX5PZFS.js} +4 -4
- package/dist/{chunk-ME35HVDJ.js → chunk-VYCOJKSX.js} +2 -2
- package/dist/{chunk-F5UWQ4LX.js → chunk-W24T5YMW.js} +2 -2
- package/dist/{chunk-HDQUQBPW.js → chunk-W3K3HITK.js} +2 -2
- package/dist/{chunk-GDASG7NC.js → chunk-W4F3C7N7.js} +2 -2
- package/dist/{chunk-LFK623SF.js → chunk-WJHGDE7X.js} +5 -5
- package/dist/{chunk-DP4EBV7C.js → chunk-WMLEPWMO.js} +16 -16
- package/dist/chunk-WMLEPWMO.js.map +1 -0
- package/dist/{chunk-3Q6RD76J.js → chunk-WQZZDN5M.js} +5 -5
- package/dist/{chunk-ZJWDWPX6.js → chunk-X5K5TAQZ.js} +4 -4
- package/dist/{chunk-ZL3XX5LW.js → chunk-XM24CDZX.js} +3 -3
- package/dist/{chunk-JTWZKNUH.js → chunk-XOVKXJEP.js} +3 -3
- package/dist/{chunk-OGTKQ5MJ.js → chunk-XSGUMQQQ.js} +62 -50
- package/dist/chunk-XSGUMQQQ.js.map +1 -0
- package/dist/{chunk-X5YYSAZX.js → chunk-XUE46UYW.js} +3 -3
- package/dist/{chunk-DJORULH3.js → chunk-YRLHEEQT.js} +2 -2
- package/dist/{chunk-TA7UZZMW.js → chunk-Z3O53WZR.js} +2 -2
- package/dist/{chunk-4LG4CPOC.js → chunk-Z6COGHHN.js} +2 -2
- package/dist/{chunk-RE3H6Y2X.js → chunk-ZIW5JVRM.js} +2 -2
- package/dist/{cli-BNtvR-nU.d.ts → cli-DD0P-lu8.d.ts} +6 -6
- package/dist/cli.d.ts +16 -14
- package/dist/cli.js +154 -149
- package/dist/coding/export-okf-codegraph.d.ts +2 -1
- package/dist/coding/export-okf-codegraph.js +37 -37
- package/dist/coding/pre-action-gate.d.ts +2 -1
- package/dist/coding/pre-action-gate.js +4 -3
- package/dist/commitment-ledger.js +3 -2
- package/dist/compounding/engine.d.ts +3 -2
- package/dist/compounding/engine.js +37 -37
- 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 +16 -13
- package/dist/connectors/codex-materialize-runner.d.ts +2 -1
- package/dist/connectors/codex-materialize-runner.js +38 -38
- package/dist/connectors/codex-materialize.d.ts +2 -1
- package/dist/connectors/codex-materialize.js +4 -4
- package/dist/connectors/index.d.ts +2 -1
- package/dist/connectors/index.js +38 -38
- package/dist/consolidation-provenance-check.d.ts +3 -2
- package/dist/consolidation-provenance-check.js +4 -4
- package/dist/consolidation-undo.d.ts +3 -2
- package/dist/consolidation-undo.js +3 -3
- package/dist/contradiction/index.d.ts +4 -3
- package/dist/contradiction/index.js +9 -9
- package/dist/converge-config.d.ts +2 -1
- package/dist/convergence-refresh.d.ts +3 -2
- package/dist/convergence-refresh.js +38 -38
- 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 +38 -38
- package/dist/cross-lingual-recall.d.ts +2 -1
- package/dist/cue-anchors.js +4 -3
- 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 +9 -8
- package/dist/deep-recall-mcp-tools.d.ts +14 -12
- package/dist/deep-recall-policy-llm.d.ts +2 -1
- 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-DjpUlhLi.d.ts → dependency-propagation-delivery-CQPCu0o5.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 +36 -36
- 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-store.js +4 -3
- package/dist/eval-trajectory.d.ts +2 -1
- package/dist/eval-trajectory.js +4 -3
- package/dist/evals.js +3 -2
- package/dist/event-order-recall.js +2 -2
- package/dist/explicit-capture.d.ts +12 -10
- package/dist/explicit-capture.js +10 -10
- package/dist/external-wiki-access.d.ts +14 -12
- package/dist/external-wiki-access.js +95 -92
- 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 +2 -1
- package/dist/extraction-judge-telemetry.d.ts +2 -1
- package/dist/extraction-judge-training.d.ts +2 -1
- package/dist/extraction-judge.d.ts +2 -1
- package/dist/extraction-liveness.d.ts +2 -1
- package/dist/extraction-normalization.d.ts +2 -1
- package/dist/extraction-prompt.d.ts +2 -1
- package/dist/extraction-source-grounding-rules.d.ts +2 -1
- package/dist/extraction-source-grounding.d.ts +2 -1
- package/dist/extraction.d.ts +2 -1
- package/dist/extraction.js +43 -43
- package/dist/fallback-llm.d.ts +2 -1
- package/dist/{first-start-migration-KHIMCBIC.js → first-start-migration-RC345GPL.js} +6 -5
- package/dist/{first-start-migration-KHIMCBIC.js.map → first-start-migration-RC345GPL.js.map} +1 -1
- package/dist/{forget-2AE4MDK3.js → forget-SZ2BXDGF.js} +3 -3
- package/dist/{graph-444E-DrF.d.ts → graph-DRkl22KE.d.ts} +10 -12
- package/dist/graph-append-error.d.ts +40 -0
- package/dist/graph-append-error.js +8 -0
- package/dist/graph-dashboard-diff.d.ts +5 -2
- package/dist/graph-dashboard-key.d.ts +5 -2
- package/dist/graph-dashboard-parser.d.ts +5 -2
- package/dist/{graph-edge-decay-DGTBFALQ.js → graph-edge-decay-MKIRZ762.js} +10 -4
- package/dist/graph-edge-decay-MKIRZ762.js.map +1 -0
- package/dist/graph-edge-reinforcement.d.ts +5 -2
- package/dist/graph-jsonl.d.ts +82 -0
- package/dist/graph-jsonl.js +23 -0
- package/dist/graph-jsonl.js.map +1 -0
- package/dist/graph-path-reconstruction.d.ts +5 -2
- package/dist/graph-path-scoring.d.ts +5 -2
- package/dist/graph-snapshot.d.ts +5 -2
- package/dist/graph-snapshot.js +7 -3
- package/dist/graph-write-lock.d.ts +84 -0
- package/dist/graph-write-lock.js +15 -0
- package/dist/graph-write-lock.js.map +1 -0
- package/dist/graph.d.ts +5 -2
- package/dist/graph.js +10 -3
- package/dist/harmonic-construction.js +5 -4
- package/dist/harmonic-retrieval.js +5 -4
- package/dist/importance.d.ts +2 -1
- package/dist/importers/index.d.ts +2 -1
- package/dist/in-flight-reads.d.ts +2 -1
- package/dist/{index-CsUrdMyL.d.ts → index-C9VXenR8.d.ts} +2 -2
- package/dist/index.d.ts +39 -25
- package/dist/index.js +291 -284
- package/dist/intent.d.ts +2 -1
- package/dist/json-store.js +2 -1
- package/dist/lcm/engine.d.ts +2 -1
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.d.ts +2 -1
- package/dist/lcm/index.js +6 -6
- 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/live-connectors-runner.js +3 -2
- 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 +39 -39
- package/dist/maintenance/memory-governance.d.ts +2 -1
- package/dist/maintenance/memory-governance.js +36 -36
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +36 -36
- package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-projection.js +37 -37
- package/dist/{maintenance-D1GRGLTE.d.ts → maintenance-C14sorKa.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-mutations.js +3 -3
- 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-subject.js +5 -5
- 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 +37 -37
- package/dist/namespaces/principal.d.ts +2 -1
- package/dist/namespaces/search.d.ts +2 -1
- package/dist/namespaces/search.js +11 -11
- package/dist/namespaces/storage.d.ts +4 -3
- package/dist/namespaces/storage.js +36 -36
- package/dist/native-knowledge.d.ts +2 -1
- package/dist/objective-state-writers.js +4 -3
- package/dist/objective-state.js +3 -2
- package/dist/offline-sync-file-io.js +4 -3
- package/dist/offline-sync-impression-drain.d.ts +2 -1
- package/dist/offline-sync-impression-drain.js +7 -7
- package/dist/offline-sync.js +5 -4
- package/dist/operator-doctor-corpus.d.ts +2 -1
- package/dist/operator-doctor-corpus.js +39 -39
- package/dist/operator-doctor-replica.d.ts +2 -1
- package/dist/operator-toolkit.d.ts +6 -4
- package/dist/operator-toolkit.js +61 -58
- package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
- package/dist/orchestration/maintenance.d.ts +5 -4
- package/dist/orchestration/maintenance.js +46 -46
- package/dist/{orchestrator-DeqaPGT5.d.ts → orchestrator-DgyvFfPR.d.ts} +9 -9
- package/dist/orchestrator.d.ts +12 -10
- package/dist/orchestrator.js +201 -196
- package/dist/page-versioning.d.ts +73 -4
- package/dist/page-versioning.js +11 -3
- package/dist/patterns-cli.d.ts +2 -1
- package/dist/{pipeline-umUzU0D1.d.ts → pipeline-DRUwHb1X.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/{public-http-Bevrjll9.d.ts → public-http-C4i8Opxc.d.ts} +1 -1
- package/dist/{purge-OP6BEDFY.js → purge-TZKRE6ZQ.js} +5 -5
- package/dist/purge-TZKRE6ZQ.js.map +1 -0
- package/dist/{qmd-BasT78PP.d.ts → qmd-BVWlg1YS.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +3 -2
- package/dist/qmd-recall-cache.d.ts +2 -1
- package/dist/qmd.d.ts +3 -2
- package/dist/qmd.js +4 -4
- 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 +2 -1
- package/dist/recall-state.d.ts +2 -1
- package/dist/recall-state.js +3 -3
- 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/manifest.d.ts +2 -1
- package/dist/reconcile/manifest.js +7 -7
- package/dist/reconcile/plan.d.ts +2 -1
- 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-4DLI3IOR.js → resolution-VKATP2HT.js} +10 -10
- package/dist/resolution-VKATP2HT.js.map +1 -0
- package/dist/resolve-auth-token.d.ts +2 -1
- package/dist/resume-bundles.js +21 -18
- 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 +7 -7
- package/dist/{scope-profiles-DXYzyOXW.d.ts → scope-profiles-Vl00B1KU.d.ts} +1 -1
- package/dist/search/document-scanner.js +3 -3
- package/dist/search/embed-helper.d.ts +2 -1
- package/dist/search/factory.d.ts +2 -1
- package/dist/search/factory.js +10 -10
- package/dist/search/index.d.ts +2 -1
- package/dist/search/index.js +16 -16
- package/dist/search/lancedb-backend.d.ts +2 -1
- package/dist/search/lancedb-backend.js +4 -4
- package/dist/search/meilisearch-backend.d.ts +2 -1
- package/dist/search/meilisearch-backend.js +4 -4
- package/dist/search/noop-backend.d.ts +2 -1
- package/dist/search/orama-backend.d.ts +2 -1
- package/dist/search/orama-backend.js +4 -4
- package/dist/search/port.d.ts +2 -1
- package/dist/search/remote-backend.d.ts +2 -1
- package/dist/secure-store/index.js +3 -3
- package/dist/{semantic-consolidation-CqDeaY0U.d.ts → semantic-consolidation-BC9-GFuT.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +3 -2
- package/dist/semantic-consolidation.js +39 -39
- package/dist/semantic-merge-config.d.ts +17 -0
- package/dist/semantic-merge-config.js +1 -0
- package/dist/semantic-merge-config.js.map +1 -0
- package/dist/semantic-rule-promotion.js +36 -36
- package/dist/semantic-rule-verifier.d.ts +2 -1
- package/dist/semantic-rule-verifier.js +36 -36
- package/dist/{service-BKD-DVYZ.d.ts → service-BOy6dHfc.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 +2 -1
- package/dist/signal.d.ts +2 -1
- package/dist/source-agent-qualifier.d.ts +2 -1
- package/dist/source-agent-qualifier.js +42 -42
- package/dist/source-attribution.d.ts +18 -6
- package/dist/source-attribution.js +3 -1
- package/dist/standup/build.js +36 -36
- package/dist/{storage-BcFd1lN_.d.ts → storage-BLJRnFi6.d.ts} +15 -8
- package/dist/storage.d.ts +3 -2
- package/dist/storage.js +35 -35
- package/dist/subject-config.d.ts +2 -1
- package/dist/subject-config.js +6 -6
- package/dist/summarizer.d.ts +2 -1
- package/dist/summary-snapshot.d.ts +2 -1
- package/dist/support-passport/index.d.ts +17 -15
- package/dist/support-passport/index.js +97 -94
- 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-stats-2TOW3QNL.js → tier-stats-KA6OZX2C.js} +6 -5
- package/dist/{tier-stats-2TOW3QNL.js.map → tier-stats-KA6OZX2C.js.map} +1 -1
- package/dist/topics.d.ts +2 -1
- package/dist/transcript.d.ts +2 -1
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +6 -6
- package/dist/transfer/export-okf.d.ts +2 -1
- package/dist/transfer/export-okf.js +37 -37
- package/dist/trust-score-stage.d.ts +2 -1
- package/dist/trust-score.d.ts +2 -1
- package/dist/trust-zones.js +3 -2
- package/dist/{types-BRg3tMyp.d.ts → types-YY-eKKU7.d.ts} +3 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.js +1 -1
- package/dist/utility-learner.js +4 -3
- package/dist/utility-runtime.d.ts +2 -1
- package/dist/utility-runtime.js +5 -4
- package/dist/utility-telemetry.js +3 -2
- package/dist/verified-recall.js +36 -36
- package/dist/who-knows-cli.d.ts +14 -12
- package/dist/who-knows-cli.js +37 -37
- package/dist/who-knows.d.ts +14 -12
- package/dist/who-knows.js +36 -36
- package/dist/work/board.js +3 -3
- package/dist/work/storage.js +2 -2
- package/dist/work-product-ledger.js +3 -2
- package/dist/write-envelope.d.ts +2 -1
- package/dist/write-envelope.js +6 -6
- package/package.json +2 -2
- package/src/abstraction-nodes.ts +1 -4
- package/src/access-http-briefing.ts +35 -0
- package/src/access-http.test.ts +76 -0
- package/src/access-http.ts +20 -23
- package/src/access-surface-catalog.test.ts +9 -0
- package/src/access-surface-catalog.ts +1 -0
- package/src/binary-lifecycle/backend.ts +2 -1
- package/src/config.ts +2 -0
- package/src/connectors/live/github.ts +10 -17
- package/src/connectors/live/gmail.ts +8 -19
- package/src/connectors/live/google-drive.ts +6 -13
- package/src/connectors/live/notion.ts +11 -21
- package/src/cue-anchors.ts +1 -6
- package/src/dedup/connector-scope.ts +39 -0
- package/src/dedup/merge-content.test.ts +21 -0
- package/src/dedup/merge-content.ts +21 -7
- package/src/dedup/merge-judge.ts +146 -0
- package/src/dedup/merge.test.ts +3542 -0
- package/src/dedup/merge.ts +384 -0
- package/src/dedup/novelty-gate.ts +12 -10
- package/src/dedup/semantic.ts +7 -9
- package/src/graph-append-error.ts +28 -0
- package/src/graph-jsonl.ts +267 -0
- package/src/graph-write-lock.test.ts +228 -0
- package/src/graph-write-lock.ts +132 -0
- package/src/graph.ts +49 -45
- package/src/harmonic-construction.test.ts +329 -0
- package/src/json-store.ts +17 -20
- package/src/live-connectors-runner.ts +2 -1
- package/src/location/store.ts +1 -4
- package/src/maintenance/graph-edge-decay.ts +24 -13
- package/src/maintenance/purge.ts +2 -5
- package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +3 -6
- package/src/maintenance/rebuild-memory-projection.ts +2 -5
- package/src/namespaces/catalog.ts +1 -9
- package/src/offline-sync-file-io.test.ts +39 -0
- package/src/offline-sync-file-io.ts +3 -7
- package/src/orchestration/contradiction-localization.integration.test.ts +35 -0
- package/src/orchestration/extraction-anchor-snapshot.ts +6 -1
- package/src/orchestration/extraction-persist-deps.ts +2 -1
- package/src/orchestration/extraction-persist-profile-promotion.test.ts +456 -0
- package/src/orchestration/extraction-persist-promotion.test.ts +534 -0
- package/src/orchestration/extraction-persist-promotion.ts +387 -1
- package/src/orchestration/extraction-persist.ts +95 -94
- package/src/orchestration/harmonic-construction-persist.test.ts +69 -0
- package/src/orchestration/harmonic-construction-persist.ts +55 -0
- package/src/orchestration/persistence-index.ts +35 -7
- package/src/orchestration/semantic-merge-commit-effects.ts +354 -0
- package/src/orchestration/semantic-merge-persist.ts +1095 -0
- package/src/orchestration/semantic-merge-promotion-payload.ts +161 -0
- package/src/orchestrator.ts +2 -2
- package/src/page-versioning.ts +396 -22
- package/src/procedural/procedure-miner.ts +1 -9
- package/src/search/document-scanner.ts +3 -6
- package/src/semantic-merge-config.ts +16 -0
- package/src/semantic-rule-promotion.ts +1 -4
- package/src/source-attribution-roundtrip.test.ts +21 -0
- package/src/source-attribution.ts +57 -17
- package/src/storage-contract/versioning.test.ts +500 -1
- package/src/storage.ts +30 -30
- package/src/testing/subjects/graph-edge-decay.test.ts +163 -0
- package/src/testing/subjects/semantic-merge-lifecycle.test.ts +1175 -0
- package/src/types.ts +2 -0
- package/src/utils/errno.test.ts +31 -0
- package/src/utils/errno.ts +5 -0
- package/src/wearables/index.ts +1 -0
- package/src/wearables/registry.ts +23 -0
- package/dist/chunk-5UZXUTVO.js.map +0 -1
- package/dist/chunk-7GSSHAXC.js.map +0 -1
- package/dist/chunk-ACPCA4NO.js.map +0 -1
- package/dist/chunk-C2JCVZWX.js.map +0 -1
- package/dist/chunk-DDQQY2E3.js.map +0 -1
- package/dist/chunk-DJUKBGAD.js.map +0 -1
- package/dist/chunk-DK6GMO6D.js.map +0 -1
- package/dist/chunk-DP4EBV7C.js.map +0 -1
- package/dist/chunk-FCATYKQA.js.map +0 -1
- package/dist/chunk-GGYDJJBO.js.map +0 -1
- package/dist/chunk-HTIIXNJQ.js.map +0 -1
- package/dist/chunk-KK66P5GQ.js.map +0 -1
- package/dist/chunk-NQFCLAYT.js.map +0 -1
- package/dist/chunk-NYRB7BKY.js.map +0 -1
- package/dist/chunk-OGTKQ5MJ.js.map +0 -1
- package/dist/chunk-OLT3YTDH.js.map +0 -1
- package/dist/chunk-P77QX3ID.js.map +0 -1
- package/dist/chunk-U62OK7BB.js.map +0 -1
- package/dist/chunk-UR6PBX2J.js.map +0 -1
- package/dist/chunk-VLAQV4HT.js.map +0 -1
- package/dist/chunk-W7IGLX4G.js.map +0 -1
- package/dist/purge-OP6BEDFY.js.map +0 -1
- /package/dist/{capsule-crypto-7FJQINUR.js.map → access-http-briefing.js.map} +0 -0
- /package/dist/{auto-sync-GRUJFD2F.js.map → auto-sync-WNGG2GC2.js.map} +0 -0
- /package/dist/{graph-edge-decay-DGTBFALQ.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
- /package/dist/{capsule-merge-SEHERWWP.js.map → capsule-merge-IPG4IOFP.js.map} +0 -0
- /package/dist/{chunk-KTVSPFCQ.js.map → chunk-22FVR2KE.js.map} +0 -0
- /package/dist/{chunk-7Y5V3LAP.js.map → chunk-27QVNSQ3.js.map} +0 -0
- /package/dist/{chunk-R7LY4YKF.js.map → chunk-2EKJDQZB.js.map} +0 -0
- /package/dist/{chunk-HOUST5UX.js.map → chunk-2ITE4C2Z.js.map} +0 -0
- /package/dist/{chunk-JOYC4RYC.js.map → chunk-2JVJ7UHC.js.map} +0 -0
- /package/dist/{chunk-X2NFFBTO.js.map → chunk-2L5FSNPC.js.map} +0 -0
- /package/dist/{chunk-DUAJKRR2.js.map → chunk-2SGLMP2E.js.map} +0 -0
- /package/dist/{chunk-6FUMA6AA.js.map → chunk-2Z4GS5E6.js.map} +0 -0
- /package/dist/{chunk-G6MXN2G5.js.map → chunk-37KUQPX4.js.map} +0 -0
- /package/dist/{chunk-WKAXBXVA.js.map → chunk-3QQTXYZ6.js.map} +0 -0
- /package/dist/{chunk-4ZWCQJNM.js.map → chunk-46WM6JX2.js.map} +0 -0
- /package/dist/{chunk-CASWJ2HM.js.map → chunk-46ZPIGWI.js.map} +0 -0
- /package/dist/{chunk-MCA2X4WH.js.map → chunk-4IHBN6WU.js.map} +0 -0
- /package/dist/{chunk-FB7LAJQM.js.map → chunk-4TKJGOCJ.js.map} +0 -0
- /package/dist/{chunk-H7BZBSP6.js.map → chunk-52II7PB6.js.map} +0 -0
- /package/dist/{chunk-N4Y5T6VD.js.map → chunk-54WHLA65.js.map} +0 -0
- /package/dist/{chunk-YVLENSNS.js.map → chunk-5ATKSPEQ.js.map} +0 -0
- /package/dist/{chunk-ZVZHG7AI.js.map → chunk-5UBH37SL.js.map} +0 -0
- /package/dist/{chunk-N3WZU76A.js.map → chunk-66OJSCI6.js.map} +0 -0
- /package/dist/{chunk-D35XLYQ7.js.map → chunk-6CVNSDCZ.js.map} +0 -0
- /package/dist/{chunk-KA2HZCMG.js.map → chunk-6NXSYYGP.js.map} +0 -0
- /package/dist/{chunk-2HIJHXB3.js.map → chunk-6WHJ2EAB.js.map} +0 -0
- /package/dist/{chunk-ZZM476NV.js.map → chunk-6XL73HQ4.js.map} +0 -0
- /package/dist/{chunk-EJ5RKUXW.js.map → chunk-AQ7SYDVO.js.map} +0 -0
- /package/dist/{chunk-2Z3DG5CQ.js.map → chunk-B3O3IRZN.js.map} +0 -0
- /package/dist/{chunk-RACZB5HT.js.map → chunk-BD7JTBYP.js.map} +0 -0
- /package/dist/{chunk-I762GW7V.js.map → chunk-BLJWYCNO.js.map} +0 -0
- /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
- /package/dist/{chunk-GCASGYIO.js.map → chunk-C7HJ3NEI.js.map} +0 -0
- /package/dist/{chunk-C24UZSFW.js.map → chunk-CEH2AFXG.js.map} +0 -0
- /package/dist/{chunk-WVGXCBOC.js.map → chunk-D5F7TKMH.js.map} +0 -0
- /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
- /package/dist/{chunk-2OXIPF3A.js.map → chunk-DZD3WGCD.js.map} +0 -0
- /package/dist/{chunk-UMEOXLIZ.js.map → chunk-E2P7TZTF.js.map} +0 -0
- /package/dist/{chunk-6FC3IZ26.js.map → chunk-EBA5DA77.js.map} +0 -0
- /package/dist/{chunk-N7JK2RKG.js.map → chunk-EOQ6FSQP.js.map} +0 -0
- /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
- /package/dist/{chunk-XDMI5VKE.js.map → chunk-FVOP3NT7.js.map} +0 -0
- /package/dist/{chunk-NRLELHAY.js.map → chunk-G7NYVKD6.js.map} +0 -0
- /package/dist/{chunk-B3W7GWQB.js.map → chunk-GHTSNGBZ.js.map} +0 -0
- /package/dist/{chunk-LUDBXTBJ.js.map → chunk-H272ZPQ3.js.map} +0 -0
- /package/dist/{chunk-SN4JXNLL.js.map → chunk-H3TKENU4.js.map} +0 -0
- /package/dist/{chunk-4HYNMLT6.js.map → chunk-H4SEGIZY.js.map} +0 -0
- /package/dist/{chunk-ACZN5ZXD.js.map → chunk-H54VWRPS.js.map} +0 -0
- /package/dist/{chunk-HTP6XRUI.js.map → chunk-HM7RHKS4.js.map} +0 -0
- /package/dist/{chunk-Z3SQEEB6.js.map → chunk-HWLIMQE2.js.map} +0 -0
- /package/dist/{chunk-2QSZNTDO.js.map → chunk-JBPKEARU.js.map} +0 -0
- /package/dist/{chunk-ET2CNMLD.js.map → chunk-JN72EPOE.js.map} +0 -0
- /package/dist/{chunk-JCCWJHOP.js.map → chunk-JYZSRNR7.js.map} +0 -0
- /package/dist/{chunk-7D6HXODY.js.map → chunk-K7724CH2.js.map} +0 -0
- /package/dist/{chunk-X33MJFD2.js.map → chunk-KAXCYM66.js.map} +0 -0
- /package/dist/{chunk-7RRUHJPG.js.map → chunk-KB2G2I6Q.js.map} +0 -0
- /package/dist/{chunk-ZXBTTMGZ.js.map → chunk-KEF46KL2.js.map} +0 -0
- /package/dist/{chunk-UWTDARPF.js.map → chunk-KTWG7CNY.js.map} +0 -0
- /package/dist/{chunk-XQYTSZW3.js.map → chunk-L7Z57SID.js.map} +0 -0
- /package/dist/{chunk-JMAG7WZ7.js.map → chunk-LO4UKPKX.js.map} +0 -0
- /package/dist/{chunk-LDWIPYJ6.js.map → chunk-LS2FHUML.js.map} +0 -0
- /package/dist/{chunk-GDB4J2H3.js.map → chunk-MPC7TYTZ.js.map} +0 -0
- /package/dist/{chunk-2GF27PGH.js.map → chunk-MRPOZBJC.js.map} +0 -0
- /package/dist/{chunk-BR3OOQZQ.js.map → chunk-MWN6QEI2.js.map} +0 -0
- /package/dist/{chunk-NZGO2GKL.js.map → chunk-MY5EDR46.js.map} +0 -0
- /package/dist/{chunk-LCMUZDBZ.js.map → chunk-N3ZOP7KC.js.map} +0 -0
- /package/dist/{chunk-TVW4C7PV.js.map → chunk-NB3LRY4T.js.map} +0 -0
- /package/dist/{chunk-QJCWK2A7.js.map → chunk-ND6IQGSZ.js.map} +0 -0
- /package/dist/{chunk-NOB2T2FC.js.map → chunk-NHLLKEKK.js.map} +0 -0
- /package/dist/{chunk-EJIWBTVM.js.map → chunk-O6ZNNVSP.js.map} +0 -0
- /package/dist/{chunk-AG46P24C.js.map → chunk-OB3XMWX5.js.map} +0 -0
- /package/dist/{chunk-46QMN7I7.js.map → chunk-PAZY2ZKP.js.map} +0 -0
- /package/dist/{chunk-EF4JUM55.js.map → chunk-PX4UMA5Z.js.map} +0 -0
- /package/dist/{chunk-NNZFPYYX.js.map → chunk-R7QY5ZVB.js.map} +0 -0
- /package/dist/{chunk-RO2X2EYM.js.map → chunk-R7RTXEYG.js.map} +0 -0
- /package/dist/{chunk-3LJPSRAN.js.map → chunk-RBCQVOVJ.js.map} +0 -0
- /package/dist/{chunk-N4F7ZSSG.js.map → chunk-RC5DXXWC.js.map} +0 -0
- /package/dist/{chunk-5CF2R4NS.js.map → chunk-RKBLRTNT.js.map} +0 -0
- /package/dist/{chunk-5QZR2RA3.js.map → chunk-ROBHL3GL.js.map} +0 -0
- /package/dist/{chunk-D5ZNOKR7.js.map → chunk-S7T2TY65.js.map} +0 -0
- /package/dist/{chunk-3LADWWMA.js.map → chunk-SJDQ5RSN.js.map} +0 -0
- /package/dist/{chunk-CHWUICVY.js.map → chunk-SV4Z2S67.js.map} +0 -0
- /package/dist/{chunk-SEF4IOFE.js.map → chunk-SWIKABKI.js.map} +0 -0
- /package/dist/{chunk-JRRQ747T.js.map → chunk-TBXAY2SS.js.map} +0 -0
- /package/dist/{chunk-XZBXINXZ.js.map → chunk-TNSCIPBQ.js.map} +0 -0
- /package/dist/{chunk-S37NN23M.js.map → chunk-TVEONGBU.js.map} +0 -0
- /package/dist/{chunk-5RPMTFB6.js.map → chunk-TWF35IC6.js.map} +0 -0
- /package/dist/{chunk-BZTJEILZ.js.map → chunk-U6N5IBVY.js.map} +0 -0
- /package/dist/{chunk-7TUB6JWA.js.map → chunk-UCKYTA2T.js.map} +0 -0
- /package/dist/{chunk-PPOT6SPR.js.map → chunk-UNNPNBR2.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-VDX2J7OX.js.map} +0 -0
- /package/dist/{chunk-J2R275FN.js.map → chunk-VVX5PZFS.js.map} +0 -0
- /package/dist/{chunk-ME35HVDJ.js.map → chunk-VYCOJKSX.js.map} +0 -0
- /package/dist/{chunk-F5UWQ4LX.js.map → chunk-W24T5YMW.js.map} +0 -0
- /package/dist/{chunk-HDQUQBPW.js.map → chunk-W3K3HITK.js.map} +0 -0
- /package/dist/{chunk-GDASG7NC.js.map → chunk-W4F3C7N7.js.map} +0 -0
- /package/dist/{chunk-LFK623SF.js.map → chunk-WJHGDE7X.js.map} +0 -0
- /package/dist/{chunk-3Q6RD76J.js.map → chunk-WQZZDN5M.js.map} +0 -0
- /package/dist/{chunk-ZJWDWPX6.js.map → chunk-X5K5TAQZ.js.map} +0 -0
- /package/dist/{chunk-ZL3XX5LW.js.map → chunk-XM24CDZX.js.map} +0 -0
- /package/dist/{chunk-JTWZKNUH.js.map → chunk-XOVKXJEP.js.map} +0 -0
- /package/dist/{chunk-X5YYSAZX.js.map → chunk-XUE46UYW.js.map} +0 -0
- /package/dist/{chunk-DJORULH3.js.map → chunk-YRLHEEQT.js.map} +0 -0
- /package/dist/{chunk-TA7UZZMW.js.map → chunk-Z3O53WZR.js.map} +0 -0
- /package/dist/{chunk-4LG4CPOC.js.map → chunk-Z6COGHHN.js.map} +0 -0
- /package/dist/{chunk-RE3H6Y2X.js.map → chunk-ZIW5JVRM.js.map} +0 -0
- /package/dist/{forget-2AE4MDK3.js.map → forget-SZ2BXDGF.js.map} +0 -0
- /package/dist/{resolution-4DLI3IOR.js.map → graph-append-error.js.map} +0 -0
package/src/abstraction-nodes.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { mkdir, unlink, writeFile } from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { listJsonFilesStrict, readJsonFile, withJsonStoreMutationLock, writeJsonFileAtomic } from "./json-store.js";
|
|
4
4
|
import { compareDeterministicStrings, mergeSortedUniqueStrings } from "./deterministic-order.js";
|
|
5
|
+
import { isNotFoundError } from "./utils/errno.js";
|
|
5
6
|
import {
|
|
6
7
|
assertIsoRecordedAt,
|
|
7
8
|
assertSafePathSegment,
|
|
@@ -12,10 +13,6 @@ import {
|
|
|
12
13
|
validateStringRecord,
|
|
13
14
|
} from "./store-contract.js";
|
|
14
15
|
|
|
15
|
-
function isNotFoundError(error: unknown): boolean {
|
|
16
|
-
return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
|
|
17
|
-
}
|
|
18
|
-
|
|
19
16
|
export type AbstractionNodeKind = "episode" | "topic" | "project" | "workflow" | "constraint";
|
|
20
17
|
export type AbstractionLevel = "micro" | "meso" | "macro";
|
|
21
18
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getOperation } from "./access-boundary.js";
|
|
2
|
+
import { EngramAccessInputError, type EngramAccessService } from "./access-service.js";
|
|
3
|
+
|
|
4
|
+
type JsonResponder = (status: number, payload: unknown) => void;
|
|
5
|
+
|
|
6
|
+
export interface BriefingHttpOptions {
|
|
7
|
+
/** Request body already run through the namespace gate (gatedBodyNamespace). */
|
|
8
|
+
gatedBody: Record<string, unknown>;
|
|
9
|
+
service: EngramAccessService;
|
|
10
|
+
principal: string | undefined;
|
|
11
|
+
respondJson: JsonResponder;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* POST /engram/v1/briefing — daily briefing over the access HTTP boundary.
|
|
16
|
+
*
|
|
17
|
+
* Dispatches the registered `briefing` boundary operation (the one the MCP
|
|
18
|
+
* tool uses) so schema validation, namespace gating, and principal
|
|
19
|
+
* propagation reach every HTTP briefing call — the same shape as the
|
|
20
|
+
* coding/delta read dispatch. Pure read: nothing persists, so no
|
|
21
|
+
* write-quota accounting. The operation result already carries both
|
|
22
|
+
* renderings (markdown + json sections) in one response, letting thin
|
|
23
|
+
* clients render without a CLI subprocess.
|
|
24
|
+
*/
|
|
25
|
+
export async function respondBriefingHttp(options: BriefingHttpOptions): Promise<void> {
|
|
26
|
+
const op = getOperation("briefing");
|
|
27
|
+
if (!op) {
|
|
28
|
+
throw new EngramAccessInputError("access-boundary: operation not registered: briefing");
|
|
29
|
+
}
|
|
30
|
+
const output = (await op.run(options.gatedBody, {
|
|
31
|
+
service: options.service,
|
|
32
|
+
authenticatedPrincipal: options.principal,
|
|
33
|
+
})) as { result: unknown };
|
|
34
|
+
options.respondJson(200, output.result);
|
|
35
|
+
}
|
package/src/access-http.test.ts
CHANGED
|
@@ -810,6 +810,82 @@ test("HTTP coding-context endpoint accepts projectTag shorthand", async () => {
|
|
|
810
810
|
}
|
|
811
811
|
});
|
|
812
812
|
|
|
813
|
+
test("HTTP briefing endpoint dispatches through the briefing operation", async () => {
|
|
814
|
+
const calls: unknown[] = [];
|
|
815
|
+
const service = {
|
|
816
|
+
briefing: async (request: unknown) => {
|
|
817
|
+
calls.push(request);
|
|
818
|
+
return {
|
|
819
|
+
format: "markdown",
|
|
820
|
+
window: { from: "2026-08-21", to: "2026-08-22" },
|
|
821
|
+
namespace: "team",
|
|
822
|
+
markdown: "# Briefing",
|
|
823
|
+
json: { sections: { activeThreads: [] } },
|
|
824
|
+
};
|
|
825
|
+
},
|
|
826
|
+
} as unknown as EngramAccessService;
|
|
827
|
+
const server = new EngramAccessHttpServer({
|
|
828
|
+
service,
|
|
829
|
+
port: 0,
|
|
830
|
+
authToken: "test-token",
|
|
831
|
+
principal: "panel-user",
|
|
832
|
+
adminConsoleEnabled: false,
|
|
833
|
+
});
|
|
834
|
+
|
|
835
|
+
const status = await server.start();
|
|
836
|
+
try {
|
|
837
|
+
const response = await fetch(
|
|
838
|
+
`http://127.0.0.1:${status.port}/engram/v1/briefing`,
|
|
839
|
+
{
|
|
840
|
+
method: "POST",
|
|
841
|
+
headers: {
|
|
842
|
+
authorization: "Bearer test-token",
|
|
843
|
+
"content-type": "application/json",
|
|
844
|
+
},
|
|
845
|
+
body: JSON.stringify({
|
|
846
|
+
since: "24h",
|
|
847
|
+
namespace: "team",
|
|
848
|
+
format: "markdown",
|
|
849
|
+
maxFollowups: 5,
|
|
850
|
+
}),
|
|
851
|
+
},
|
|
852
|
+
);
|
|
853
|
+
|
|
854
|
+
assert.equal(response.status, 200);
|
|
855
|
+
const body = (await response.json()) as { format: string; markdown: string; json: { sections: { activeThreads: unknown[] } } };
|
|
856
|
+
assert.equal(body.format, "markdown");
|
|
857
|
+
assert.equal(body.markdown, "# Briefing");
|
|
858
|
+
assert.deepEqual(body.json.sections.activeThreads, []);
|
|
859
|
+
assert.deepEqual(calls, [
|
|
860
|
+
{
|
|
861
|
+
since: "24h",
|
|
862
|
+
focus: undefined,
|
|
863
|
+
namespace: "team",
|
|
864
|
+
format: "markdown",
|
|
865
|
+
maxFollowups: 5,
|
|
866
|
+
principal: "panel-user",
|
|
867
|
+
},
|
|
868
|
+
]);
|
|
869
|
+
|
|
870
|
+
const invalid = await fetch(
|
|
871
|
+
`http://127.0.0.1:${status.port}/engram/v1/briefing`,
|
|
872
|
+
{
|
|
873
|
+
method: "POST",
|
|
874
|
+
headers: {
|
|
875
|
+
authorization: "Bearer test-token",
|
|
876
|
+
"content-type": "application/json",
|
|
877
|
+
},
|
|
878
|
+
body: JSON.stringify({ format: "jsno" }),
|
|
879
|
+
},
|
|
880
|
+
);
|
|
881
|
+
assert.equal(invalid.status, 400);
|
|
882
|
+
assert.equal(((await invalid.json()) as { code: string }).code, "input_error");
|
|
883
|
+
assert.equal(calls.length, 1);
|
|
884
|
+
} finally {
|
|
885
|
+
await server.stop();
|
|
886
|
+
}
|
|
887
|
+
});
|
|
888
|
+
|
|
813
889
|
test("HTTP contradiction scan uses writable namespace resolver", async () => {
|
|
814
890
|
const resolverCalls: Array<{
|
|
815
891
|
namespace: string | undefined;
|
package/src/access-http.ts
CHANGED
|
@@ -49,6 +49,7 @@ import { getOperation, type OperationName } from "./access-boundary.js";
|
|
|
49
49
|
import { authorizationProbeNamespaces, authorizationProbeRequiresPrincipalNamespace, probeOperationAuthorization } from "./access-authorization-probe.js";
|
|
50
50
|
import { resolveQueryNamespaceWritablePreflight } from "./access-namespace-preflight.js";
|
|
51
51
|
import { respondAccessCapabilitiesHttp } from "./access-http-lcm-compaction.js";
|
|
52
|
+
import { respondBriefingHttp } from "./access-http-briefing.js";
|
|
52
53
|
import { handleWhoKnowsHttpQuery } from "./who-knows.js";
|
|
53
54
|
import {
|
|
54
55
|
assertOperationAllowed,
|
|
@@ -994,11 +995,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
994
995
|
// `memory_search` tool already exposes, reachable by HTTP-only clients.
|
|
995
996
|
this.enforceTokenOp("memory_search"); // boundary dispatch (issue #1525)
|
|
996
997
|
const operation = getOperation("memory_search");
|
|
997
|
-
if (!operation)
|
|
998
|
-
throw new EngramAccessInputError(
|
|
999
|
-
"access-boundary: operation not registered: memory_search",
|
|
1000
|
-
);
|
|
1001
|
-
}
|
|
998
|
+
if (!operation) throw new EngramAccessInputError("access-boundary: operation not registered: memory_search");
|
|
1002
999
|
// The body `namespace` is user-controlled, so it must pass the same
|
|
1003
1000
|
// effective-namespace allow-list gate as every other namespace-scoped
|
|
1004
1001
|
// route (issue #1850 finding 2); the authenticated principal — never a
|
|
@@ -1946,9 +1943,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
1946
1943
|
namespace: this.resolveNamespace(req, body.namespace),
|
|
1947
1944
|
};
|
|
1948
1945
|
const op = getOperation("memory_store");
|
|
1949
|
-
if (!op)
|
|
1950
|
-
throw new EngramAccessInputError("access-boundary: operation not registered: memory_store");
|
|
1951
|
-
}
|
|
1946
|
+
if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: memory_store");
|
|
1952
1947
|
const output = (await op.run(envelope, {
|
|
1953
1948
|
service: this.service,
|
|
1954
1949
|
authenticatedPrincipal: this.resolveRequestPrincipal(req),
|
|
@@ -1980,9 +1975,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
1980
1975
|
this.ensureWriteRateLimitAvailable(req);
|
|
1981
1976
|
}
|
|
1982
1977
|
const op = getOperation("coding_decision");
|
|
1983
|
-
if (!op)
|
|
1984
|
-
throw new EngramAccessInputError("access-boundary: operation not registered: coding_decision");
|
|
1985
|
-
}
|
|
1978
|
+
if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: coding_decision");
|
|
1986
1979
|
const output = (await op.run(this.gatedBodyNamespace(req, body), {
|
|
1987
1980
|
service: this.service,
|
|
1988
1981
|
authenticatedPrincipal: this.resolveRequestPrincipal(req),
|
|
@@ -2005,9 +1998,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
2005
1998
|
this.ensureWriteRateLimitAvailable(req);
|
|
2006
1999
|
}
|
|
2007
2000
|
const op = getOperation("coding_architecture");
|
|
2008
|
-
if (!op)
|
|
2009
|
-
throw new EngramAccessInputError("access-boundary: operation not registered: coding_architecture");
|
|
2010
|
-
}
|
|
2001
|
+
if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: coding_architecture");
|
|
2011
2002
|
const output = (await op.run(this.gatedBodyNamespace(req, body), {
|
|
2012
2003
|
service: this.service,
|
|
2013
2004
|
authenticatedPrincipal: this.resolveRequestPrincipal(req),
|
|
@@ -2028,9 +2019,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
2028
2019
|
// write-quota enforcement.
|
|
2029
2020
|
const body = await this.readJsonBody(req);
|
|
2030
2021
|
const op = getOperation("coding_delta");
|
|
2031
|
-
if (!op)
|
|
2032
|
-
throw new EngramAccessInputError("access-boundary: operation not registered: coding_delta");
|
|
2033
|
-
}
|
|
2022
|
+
if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: coding_delta");
|
|
2034
2023
|
const output = (await op.run(this.gatedBodyNamespace(req, body), {
|
|
2035
2024
|
service: this.service,
|
|
2036
2025
|
authenticatedPrincipal: this.resolveRequestPrincipal(req),
|
|
@@ -2039,6 +2028,18 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
2039
2028
|
return;
|
|
2040
2029
|
}
|
|
2041
2030
|
|
|
2031
|
+
// Daily briefing — pure read through the registered `briefing` boundary
|
|
2032
|
+
// operation (sibling module; see access-http-briefing.ts).
|
|
2033
|
+
if (req.method === "POST" && pathname === "/engram/v1/briefing") {
|
|
2034
|
+
await respondBriefingHttp({
|
|
2035
|
+
gatedBody: this.gatedBodyNamespace(req, await this.readJsonBody(req)),
|
|
2036
|
+
service: this.service,
|
|
2037
|
+
principal: this.resolveRequestPrincipal(req),
|
|
2038
|
+
respondJson: (status, payload) => this.respondJson(res, status, payload),
|
|
2039
|
+
});
|
|
2040
|
+
return;
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2042
2043
|
// ── Correction Contract (issue #1580) — plan / apply / pending ─────────
|
|
2043
2044
|
// All three routes dispatch through the boundary operations so schema
|
|
2044
2045
|
// validation + namespace policy reach every correction path (rule 22/39).
|
|
@@ -2051,9 +2052,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
2051
2052
|
this.ensureWriteRateLimitAvailable(req);
|
|
2052
2053
|
const body = await this.readJsonBody(req);
|
|
2053
2054
|
const op = getOperation("memory_correct_plan");
|
|
2054
|
-
if (!op)
|
|
2055
|
-
throw new EngramAccessInputError("access-boundary: operation not registered: memory_correct_plan");
|
|
2056
|
-
}
|
|
2055
|
+
if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: memory_correct_plan");
|
|
2057
2056
|
const output = (await op.run(this.gatedBodyNamespace(req, body), {
|
|
2058
2057
|
service: this.service,
|
|
2059
2058
|
authenticatedPrincipal: this.resolveRequestPrincipal(req),
|
|
@@ -2067,9 +2066,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
2067
2066
|
this.ensureWriteRateLimitAvailable(req);
|
|
2068
2067
|
const body = await this.readJsonBody(req);
|
|
2069
2068
|
const op = getOperation("memory_correct_apply");
|
|
2070
|
-
if (!op)
|
|
2071
|
-
throw new EngramAccessInputError("access-boundary: operation not registered: memory_correct_apply");
|
|
2072
|
-
}
|
|
2069
|
+
if (!op) throw new EngramAccessInputError("access-boundary: operation not registered: memory_correct_apply");
|
|
2073
2070
|
const output = (await op.run(this.gatedBodyNamespace(req, body), {
|
|
2074
2071
|
service: this.service,
|
|
2075
2072
|
authenticatedPrincipal: this.resolveRequestPrincipal(req),
|
|
@@ -325,6 +325,15 @@ function extractHttpRouteDispatchMap(): Map<string, Set<string>> {
|
|
|
325
325
|
}
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
|
+
if (/\bawait\s+respondBriefingHttp\(/.test(source)) {
|
|
329
|
+
const briefingSource = readFileSync(
|
|
330
|
+
new URL("./access-http-briefing.ts", import.meta.url),
|
|
331
|
+
"utf-8",
|
|
332
|
+
);
|
|
333
|
+
if (briefingSource.includes('getOperation("briefing")')) {
|
|
334
|
+
routeOps.set("POST /engram/v1/briefing", new Set(["briefing"]));
|
|
335
|
+
}
|
|
336
|
+
}
|
|
328
337
|
if (/\bawait\s+this\.handleReviewDeckRequest\(/.test(source)) {
|
|
329
338
|
const deckSource = readFileSync(
|
|
330
339
|
new URL("./review/review-deck-http-base.ts", import.meta.url),
|
|
@@ -254,6 +254,7 @@ export const HTTP_ROUTES: readonly HttpRouteEntry[] = [
|
|
|
254
254
|
{ method: "POST", pathname: "/engram/v1/coding/decisions", operation: "coding_decision" },
|
|
255
255
|
{ method: "POST", pathname: "/engram/v1/coding/architecture", operation: "coding_architecture" },
|
|
256
256
|
{ method: "POST", pathname: "/engram/v1/coding/delta", operation: "coding_delta" },
|
|
257
|
+
{ method: "POST", pathname: "/engram/v1/briefing", operation: "briefing" },
|
|
257
258
|
{ method: "POST", pathname: "/engram/v1/suggestions", operation: "suggestion_submit" },
|
|
258
259
|
{ method: "GET", pathname: "/engram/v1/memories", operation: "memory_list" },
|
|
259
260
|
{ method: "GET", pathname: "/engram/v1/recall/timings", operation: "recall_timings" },
|
|
@@ -10,6 +10,7 @@ import type { Stats } from "node:fs";
|
|
|
10
10
|
import fsp from "node:fs/promises";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
import type { BinaryStorageBackendConfig } from "./types.js";
|
|
13
|
+
import { isErrnoCode } from "../utils/errno.js";
|
|
13
14
|
|
|
14
15
|
// ---------------------------------------------------------------------------
|
|
15
16
|
// Interface
|
|
@@ -154,7 +155,7 @@ export class FilesystemBackend implements BinaryStorageBackend {
|
|
|
154
155
|
}
|
|
155
156
|
|
|
156
157
|
const realParent = await fsp.realpath(destDir).catch((err: NodeJS.ErrnoException) => {
|
|
157
|
-
if (err
|
|
158
|
+
if (isErrnoCode(err, "ENOENT")) return null;
|
|
158
159
|
throw err;
|
|
159
160
|
});
|
|
160
161
|
if (realParent === null) {
|
package/src/config.ts
CHANGED
|
@@ -50,6 +50,7 @@ import { parseDeepRecallConfig } from "./deep-recall-config.js";
|
|
|
50
50
|
import { parseContradictionLocalizationConfig, parseContradictionScanConfig } from "./contradiction-config.js";
|
|
51
51
|
import { parseGraphPathScoringConfig } from "./graph-path-scoring-config.js";
|
|
52
52
|
import { parseWritePathDedupConfig } from "./dedup/novelty-gate.js";
|
|
53
|
+
import { parseSemanticMergeConfig } from "./dedup/merge.js";
|
|
53
54
|
import { hasLegacyConnectorEntries } from "./connectors/paths.js";
|
|
54
55
|
import {
|
|
55
56
|
parseQmdChunkStrategy,
|
|
@@ -3199,6 +3200,7 @@ export function parseConfig(
|
|
|
3199
3200
|
// v6.0 Fact deduplication & archival
|
|
3200
3201
|
factDeduplicationEnabled: cfg.factDeduplicationEnabled !== false,
|
|
3201
3202
|
...parseWritePathDedupConfig(cfg),
|
|
3203
|
+
...parseSemanticMergeConfig(cfg),
|
|
3202
3204
|
factArchivalEnabled: cfg.factArchivalEnabled === true,
|
|
3203
3205
|
factArchivalAgeDays:
|
|
3204
3206
|
typeof cfg.factArchivalAgeDays === "number" ? cfg.factArchivalAgeDays : 90,
|
|
@@ -63,6 +63,7 @@ import type {
|
|
|
63
63
|
SyncIncrementalArgs,
|
|
64
64
|
SyncIncrementalResult,
|
|
65
65
|
} from "./framework.js";
|
|
66
|
+
import { throwIfAborted } from "../../abort-error.js";
|
|
66
67
|
|
|
67
68
|
// ---------------------------------------------------------------------------
|
|
68
69
|
// Public constants
|
|
@@ -425,14 +426,6 @@ function pickNumericGitHubStatus(e: {
|
|
|
425
426
|
|
|
426
427
|
const GITHUB_API_BASE = "https://api.github.com";
|
|
427
428
|
|
|
428
|
-
function throwIfAborted(signal: AbortSignal | undefined): void {
|
|
429
|
-
if (signal?.aborted) {
|
|
430
|
-
const err = new Error("github: sync aborted");
|
|
431
|
-
err.name = "AbortError";
|
|
432
|
-
throw err;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
|
|
436
429
|
function makeGitHubApiError(status: number, message: string): Error & { githubStatus: number } {
|
|
437
430
|
const err = new Error(`github: HTTP ${status}: ${message}`) as Error & {
|
|
438
431
|
githubStatus: number;
|
|
@@ -526,7 +519,7 @@ export function createGitHubConnector(
|
|
|
526
519
|
|
|
527
520
|
async syncIncremental(args: SyncIncrementalArgs): Promise<SyncIncrementalResult> {
|
|
528
521
|
const config = validateGitHubConfig(args.config);
|
|
529
|
-
throwIfAborted(args.abortSignal);
|
|
522
|
+
throwIfAborted(args.abortSignal, "github: sync aborted");
|
|
530
523
|
|
|
531
524
|
// Short-circuit: nothing to do if no repos are configured.
|
|
532
525
|
if (config.repos.length === 0) {
|
|
@@ -582,7 +575,7 @@ async function seedWatermarks(
|
|
|
582
575
|
// seenIds starts empty for first-sync; nothing has been processed yet.
|
|
583
576
|
|
|
584
577
|
for (const repo of config.repos) {
|
|
585
|
-
throwIfAborted(signal);
|
|
578
|
+
throwIfAborted(signal, "github: sync aborted");
|
|
586
579
|
|
|
587
580
|
// Issue comments
|
|
588
581
|
try {
|
|
@@ -599,7 +592,7 @@ async function seedWatermarks(
|
|
|
599
592
|
// 404/403 → repo inaccessible, skip silently.
|
|
600
593
|
}
|
|
601
594
|
|
|
602
|
-
throwIfAborted(signal);
|
|
595
|
+
throwIfAborted(signal, "github: sync aborted");
|
|
603
596
|
|
|
604
597
|
// PR review comments
|
|
605
598
|
try {
|
|
@@ -617,7 +610,7 @@ async function seedWatermarks(
|
|
|
617
610
|
|
|
618
611
|
// Discussions (GraphQL not used; we use the REST search endpoint for simplicity)
|
|
619
612
|
if (config.includeDiscussions) {
|
|
620
|
-
throwIfAborted(signal);
|
|
613
|
+
throwIfAborted(signal, "github: sync aborted");
|
|
621
614
|
try {
|
|
622
615
|
const latest = await fetchLatestTimestamp(
|
|
623
616
|
fetchFn,
|
|
@@ -683,7 +676,7 @@ async function incrementalSync(
|
|
|
683
676
|
|
|
684
677
|
for (const repo of config.repos) {
|
|
685
678
|
if (totalConsumed >= MAX_ITEMS_PER_PASS) break;
|
|
686
|
-
throwIfAborted(signal);
|
|
679
|
+
throwIfAborted(signal, "github: sync aborted");
|
|
687
680
|
|
|
688
681
|
// --- Issue comments ---
|
|
689
682
|
{
|
|
@@ -730,7 +723,7 @@ async function incrementalSync(
|
|
|
730
723
|
}
|
|
731
724
|
|
|
732
725
|
if (totalConsumed >= MAX_ITEMS_PER_PASS) break;
|
|
733
|
-
throwIfAborted(signal);
|
|
726
|
+
throwIfAborted(signal, "github: sync aborted");
|
|
734
727
|
|
|
735
728
|
// --- PR review comments ---
|
|
736
729
|
{
|
|
@@ -775,7 +768,7 @@ async function incrementalSync(
|
|
|
775
768
|
|
|
776
769
|
// --- Discussion comments (optional) ---
|
|
777
770
|
if (config.includeDiscussions && totalConsumed < MAX_ITEMS_PER_PASS) {
|
|
778
|
-
throwIfAborted(signal);
|
|
771
|
+
throwIfAborted(signal, "github: sync aborted");
|
|
779
772
|
const wmKey = watermarkKey(repo, "discussion");
|
|
780
773
|
const since = payload.watermarks[wmKey];
|
|
781
774
|
try {
|
|
@@ -922,14 +915,14 @@ async function fetchAndFilterComments(
|
|
|
922
915
|
let nextUrl: string | undefined = firstPageUrl;
|
|
923
916
|
|
|
924
917
|
while (nextUrl && consumed < remainingBudget) {
|
|
925
|
-
throwIfAborted(signal);
|
|
918
|
+
throwIfAborted(signal, "github: sync aborted");
|
|
926
919
|
|
|
927
920
|
const data = await githubGet(fetchFn, token, nextUrl, signal);
|
|
928
921
|
if (!Array.isArray(data)) break;
|
|
929
922
|
|
|
930
923
|
for (const item of data) {
|
|
931
924
|
if (consumed >= remainingBudget) break;
|
|
932
|
-
throwIfAborted(signal);
|
|
925
|
+
throwIfAborted(signal, "github: sync aborted");
|
|
933
926
|
|
|
934
927
|
const comment = normalizeGitHubComment(item, kind);
|
|
935
928
|
if (!comment) {
|
|
@@ -72,6 +72,7 @@ import type {
|
|
|
72
72
|
SyncIncrementalResult,
|
|
73
73
|
} from "./framework.js";
|
|
74
74
|
import { isTransientHttpError } from "./transient-errors.js";
|
|
75
|
+
import { throwIfAborted } from "../../abort-error.js";
|
|
75
76
|
|
|
76
77
|
// ---------------------------------------------------------------------------
|
|
77
78
|
// Public constants
|
|
@@ -585,18 +586,6 @@ export function pruneSkippedIds(
|
|
|
585
586
|
return pruned;
|
|
586
587
|
}
|
|
587
588
|
|
|
588
|
-
// ---------------------------------------------------------------------------
|
|
589
|
-
// Cooperative cancellation
|
|
590
|
-
// ---------------------------------------------------------------------------
|
|
591
|
-
|
|
592
|
-
function throwIfAborted(signal: AbortSignal | undefined): void {
|
|
593
|
-
if (signal?.aborted) {
|
|
594
|
-
const err = new Error("gmail: sync aborted");
|
|
595
|
-
err.name = "AbortError";
|
|
596
|
-
throw err;
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
|
|
600
589
|
// ---------------------------------------------------------------------------
|
|
601
590
|
// Gmail API client helpers
|
|
602
591
|
// ---------------------------------------------------------------------------
|
|
@@ -671,7 +660,7 @@ async function exchangeRefreshToken(
|
|
|
671
660
|
config: GmailConnectorConfig,
|
|
672
661
|
signal: AbortSignal | undefined,
|
|
673
662
|
): Promise<string> {
|
|
674
|
-
throwIfAborted(signal);
|
|
663
|
+
throwIfAborted(signal, "gmail: sync aborted");
|
|
675
664
|
const body = new URLSearchParams({
|
|
676
665
|
client_id: config.clientId,
|
|
677
666
|
client_secret: config[CLIENT_SECRET_FIELD],
|
|
@@ -860,11 +849,11 @@ export function createGmailConnector(
|
|
|
860
849
|
|
|
861
850
|
async syncIncremental(args: SyncIncrementalArgs): Promise<SyncIncrementalResult> {
|
|
862
851
|
const config = validateGmailConfig(args.config);
|
|
863
|
-
throwIfAborted(args.abortSignal);
|
|
852
|
+
throwIfAborted(args.abortSignal, "gmail: sync aborted");
|
|
864
853
|
|
|
865
854
|
// Exchange credentials for a short-lived access token.
|
|
866
855
|
const accessToken = await exchangeRefreshToken(fetchFn, config, args.abortSignal);
|
|
867
|
-
throwIfAborted(args.abortSignal);
|
|
856
|
+
throwIfAborted(args.abortSignal, "gmail: sync aborted");
|
|
868
857
|
|
|
869
858
|
// First-sync bootstrap: record "now" as the watermark and return
|
|
870
859
|
// without importing anything. Mirrors Drive's getStartPageToken pattern.
|
|
@@ -981,7 +970,7 @@ async function incrementalSync(
|
|
|
981
970
|
|
|
982
971
|
// Page through messages.list until exhausted, aborted, or per-pass cap hit.
|
|
983
972
|
while (true) {
|
|
984
|
-
throwIfAborted(signal);
|
|
973
|
+
throwIfAborted(signal, "gmail: sync aborted");
|
|
985
974
|
|
|
986
975
|
// Build the list URL.
|
|
987
976
|
let listPath = `/users/${encodeURIComponent(config.userId)}/messages?maxResults=${LIST_PAGE_SIZE}&q=${encodeURIComponent(listQuery)}`;
|
|
@@ -1013,7 +1002,7 @@ async function incrementalSync(
|
|
|
1013
1002
|
throw listErr;
|
|
1014
1003
|
}
|
|
1015
1004
|
}
|
|
1016
|
-
throwIfAborted(signal);
|
|
1005
|
+
throwIfAborted(signal, "gmail: sync aborted");
|
|
1017
1006
|
|
|
1018
1007
|
const listPage = listData as {
|
|
1019
1008
|
messages?: GmailMessageRef[];
|
|
@@ -1026,7 +1015,7 @@ async function incrementalSync(
|
|
|
1026
1015
|
let capHitMidPage = false;
|
|
1027
1016
|
|
|
1028
1017
|
for (const ref of messages) {
|
|
1029
|
-
throwIfAborted(signal);
|
|
1018
|
+
throwIfAborted(signal, "gmail: sync aborted");
|
|
1030
1019
|
|
|
1031
1020
|
// Thread 2: if this id was permanently skipped in a prior pass, skip
|
|
1032
1021
|
// it again without consuming the per-pass cap. The message is immutable
|
|
@@ -1232,7 +1221,7 @@ async function fetchMessageDocument(
|
|
|
1232
1221
|
fetchedAt: string,
|
|
1233
1222
|
signal: AbortSignal | undefined,
|
|
1234
1223
|
): Promise<ConnectorDocument | SkippedWithDate | "inaccessible" | null> {
|
|
1235
|
-
throwIfAborted(signal);
|
|
1224
|
+
throwIfAborted(signal, "gmail: sync aborted");
|
|
1236
1225
|
|
|
1237
1226
|
let message: GmailMessage;
|
|
1238
1227
|
try {
|
|
@@ -64,6 +64,7 @@ import type {
|
|
|
64
64
|
SyncIncrementalResult,
|
|
65
65
|
} from "./framework.js";
|
|
66
66
|
import { isTransientHttpError } from "./transient-errors.js";
|
|
67
|
+
import { throwIfAborted } from "../../abort-error.js";
|
|
67
68
|
|
|
68
69
|
/**
|
|
69
70
|
* Stable connector id. Lives in the registry under this exact string.
|
|
@@ -414,10 +415,10 @@ export function createGoogleDriveConnector(
|
|
|
414
415
|
async syncIncremental(args: SyncIncrementalArgs): Promise<SyncIncrementalResult> {
|
|
415
416
|
// Re-validate on every pass: a JS caller could mutate it between passes.
|
|
416
417
|
const config = validateGoogleDriveConfig(args.config);
|
|
417
|
-
throwIfAborted(args.abortSignal);
|
|
418
|
+
throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
|
|
418
419
|
|
|
419
420
|
const client = await clientFactory(config);
|
|
420
|
-
throwIfAborted(args.abortSignal);
|
|
421
|
+
throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
|
|
421
422
|
|
|
422
423
|
// Cursor bootstrap. On the very first pass (cursor=null) we ask Drive
|
|
423
424
|
// for a page token but DO NOT consume any changes — this aligns with
|
|
@@ -455,7 +456,7 @@ export function createGoogleDriveConnector(
|
|
|
455
456
|
// Page through `changes.list` until we run out, hit the per-pass cap,
|
|
456
457
|
// or get aborted.
|
|
457
458
|
while (true) {
|
|
458
|
-
throwIfAborted(args.abortSignal);
|
|
459
|
+
throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
|
|
459
460
|
const remaining = MAX_CHANGES_PER_PASS - consumed;
|
|
460
461
|
if (remaining <= 0) {
|
|
461
462
|
// Hit the cap — persist whatever we have. The next pass resumes
|
|
@@ -467,7 +468,7 @@ export function createGoogleDriveConnector(
|
|
|
467
468
|
const page = await client.listChanges({ pageToken, pageSize });
|
|
468
469
|
|
|
469
470
|
for (const change of page.changes) {
|
|
470
|
-
throwIfAborted(args.abortSignal);
|
|
471
|
+
throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
|
|
471
472
|
consumed++;
|
|
472
473
|
const decision = decideChange(change, folderScope);
|
|
473
474
|
switch (decision.kind) {
|
|
@@ -538,7 +539,7 @@ async function fetchDocument(
|
|
|
538
539
|
fetchedAt: string,
|
|
539
540
|
abortSignal: AbortSignal | undefined,
|
|
540
541
|
): Promise<ConnectorDocument | null> {
|
|
541
|
-
throwIfAborted(abortSignal);
|
|
542
|
+
throwIfAborted(abortSignal, "googleDrive: sync aborted");
|
|
542
543
|
const file = decision.file;
|
|
543
544
|
let body: string;
|
|
544
545
|
try {
|
|
@@ -581,14 +582,6 @@ async function fetchDocument(
|
|
|
581
582
|
};
|
|
582
583
|
}
|
|
583
584
|
|
|
584
|
-
function throwIfAborted(signal: AbortSignal | undefined): void {
|
|
585
|
-
if (signal?.aborted) {
|
|
586
|
-
const err = new Error("googleDrive: sync aborted");
|
|
587
|
-
err.name = "AbortError";
|
|
588
|
-
throw err;
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
|
|
592
585
|
/**
|
|
593
586
|
* Classify a per-file fetch error as "transient" (re-throw to caller so
|
|
594
587
|
* the sync stops without advancing the cursor and the next poll retries)
|
|
@@ -60,6 +60,7 @@ import type {
|
|
|
60
60
|
SyncIncrementalResult,
|
|
61
61
|
} from "./framework.js";
|
|
62
62
|
import { isTransientHttpError } from "./transient-errors.js";
|
|
63
|
+
import { throwIfAborted } from "../../abort-error.js";
|
|
63
64
|
|
|
64
65
|
// ---------------------------------------------------------------------------
|
|
65
66
|
// Public constants
|
|
@@ -362,17 +363,6 @@ export function isTransientNotionError(err: unknown): boolean {
|
|
|
362
363
|
const NOTION_BASE_URL = "https://api.notion.com/v1";
|
|
363
364
|
const NOTION_API_VERSION = "2022-06-28";
|
|
364
365
|
|
|
365
|
-
/**
|
|
366
|
-
* Throw if aborted (cooperative cancellation).
|
|
367
|
-
*/
|
|
368
|
-
function throwIfAborted(signal: AbortSignal | undefined): void {
|
|
369
|
-
if (signal?.aborted) {
|
|
370
|
-
const err = new Error("notion: sync aborted");
|
|
371
|
-
err.name = "AbortError";
|
|
372
|
-
throw err;
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
|
|
376
366
|
/**
|
|
377
367
|
* Build a Notion API error with the HTTP status attached for classification.
|
|
378
368
|
*/
|
|
@@ -531,14 +521,14 @@ async function fetchPageText(
|
|
|
531
521
|
signal: AbortSignal | undefined,
|
|
532
522
|
): Promise<string> {
|
|
533
523
|
if (depth > MAX_BLOCK_DEPTH) return "";
|
|
534
|
-
throwIfAborted(signal);
|
|
524
|
+
throwIfAborted(signal, "notion: sync aborted");
|
|
535
525
|
|
|
536
526
|
const lines: string[] = [];
|
|
537
527
|
let cursor: string | undefined = undefined;
|
|
538
528
|
|
|
539
529
|
// Page through block children.
|
|
540
530
|
while (true) {
|
|
541
|
-
throwIfAborted(signal);
|
|
531
|
+
throwIfAborted(signal, "notion: sync aborted");
|
|
542
532
|
const pathQuery = cursor
|
|
543
533
|
? `/blocks/${blockId}/children?page_size=100&start_cursor=${encodeURIComponent(cursor)}`
|
|
544
534
|
: `/blocks/${blockId}/children?page_size=100`;
|
|
@@ -552,7 +542,7 @@ async function fetchPageText(
|
|
|
552
542
|
};
|
|
553
543
|
|
|
554
544
|
for (const block of page.results ?? []) {
|
|
555
|
-
throwIfAborted(signal);
|
|
545
|
+
throwIfAborted(signal, "notion: sync aborted");
|
|
556
546
|
const text = extractBlockText(block);
|
|
557
547
|
if (text.length > 0) lines.push(text);
|
|
558
548
|
|
|
@@ -653,7 +643,7 @@ export function createNotionConnector(
|
|
|
653
643
|
|
|
654
644
|
async syncIncremental(args: SyncIncrementalArgs): Promise<SyncIncrementalResult> {
|
|
655
645
|
const config = validateNotionConfig(args.config);
|
|
656
|
-
throwIfAborted(args.abortSignal);
|
|
646
|
+
throwIfAborted(args.abortSignal, "notion: sync aborted");
|
|
657
647
|
|
|
658
648
|
// Short-circuit: if no databases are configured, there is nothing to do.
|
|
659
649
|
// We still return a valid cursor so the framework has something to
|
|
@@ -719,12 +709,12 @@ async function seedWatermark(
|
|
|
719
709
|
const databases = { ...payload.databases };
|
|
720
710
|
|
|
721
711
|
for (const dbId of config.databaseIds) {
|
|
722
|
-
throwIfAborted(signal);
|
|
712
|
+
throwIfAborted(signal, "notion: sync aborted");
|
|
723
713
|
let notionCursor: string | undefined = undefined;
|
|
724
714
|
let latestInDb = "";
|
|
725
715
|
|
|
726
716
|
while (true) {
|
|
727
|
-
throwIfAborted(signal);
|
|
717
|
+
throwIfAborted(signal, "notion: sync aborted");
|
|
728
718
|
const body: Record<string, unknown> = { page_size: 100, sorts: [] };
|
|
729
719
|
if (notionCursor) body.start_cursor = notionCursor;
|
|
730
720
|
|
|
@@ -784,7 +774,7 @@ async function incrementalSync(
|
|
|
784
774
|
let totalConsumed = 0;
|
|
785
775
|
|
|
786
776
|
for (const dbId of config.databaseIds) {
|
|
787
|
-
throwIfAborted(signal);
|
|
777
|
+
throwIfAborted(signal, "notion: sync aborted");
|
|
788
778
|
if (totalConsumed >= MAX_PAGES_PER_PASS) break;
|
|
789
779
|
|
|
790
780
|
const dbWatermark = payload.databases[dbId];
|
|
@@ -807,7 +797,7 @@ async function incrementalSync(
|
|
|
807
797
|
let databaseFullyDrained = false;
|
|
808
798
|
|
|
809
799
|
while (true) {
|
|
810
|
-
throwIfAborted(signal);
|
|
800
|
+
throwIfAborted(signal, "notion: sync aborted");
|
|
811
801
|
if (totalConsumed >= MAX_PAGES_PER_PASS) break;
|
|
812
802
|
|
|
813
803
|
const body: Record<string, unknown> = {
|
|
@@ -845,7 +835,7 @@ async function incrementalSync(
|
|
|
845
835
|
|
|
846
836
|
let cutoffMidPage = false;
|
|
847
837
|
for (const notionPage of pageResp.results ?? []) {
|
|
848
|
-
throwIfAborted(signal);
|
|
838
|
+
throwIfAborted(signal, "notion: sync aborted");
|
|
849
839
|
|
|
850
840
|
const pageId = notionPage.id;
|
|
851
841
|
const lastEdited = notionPage.last_edited_time;
|
|
@@ -970,7 +960,7 @@ async function fetchPageDocument(
|
|
|
970
960
|
fetchedAt: string,
|
|
971
961
|
signal: AbortSignal | undefined,
|
|
972
962
|
): Promise<ConnectorDocument | "too-large" | "empty" | null> {
|
|
973
|
-
throwIfAborted(signal);
|
|
963
|
+
throwIfAborted(signal, "notion: sync aborted");
|
|
974
964
|
|
|
975
965
|
let text: string;
|
|
976
966
|
try {
|