@noy-db/hub 0.7.0-pre.1 → 0.7.0-pre.11
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/CHANGELOG.md +247 -0
- package/README.md +7 -4
- package/dist/api-UE2XQKDN.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/at/index.js +9 -9
- package/dist/attestation/index.js +18 -18
- package/dist/{backup-Z7ZBTAQ6.js → backup-VASRVLDZ.js} +12 -12
- package/dist/blobs/index.js +13 -13
- package/dist/broker/index.js +12 -12
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +33 -30
- package/dist/{chunk-QI5NWLVW.js → chunk-2Z47NMFK.js} +7 -7
- package/dist/{chunk-AB5P32RE.js → chunk-4OZNXTO4.js} +2 -2
- package/dist/{chunk-N4CNVSUF.js → chunk-4RUFYGWG.js} +2 -2
- package/dist/{chunk-YMLQBZFJ.js → chunk-5FUULQ6F.js} +6 -6
- package/dist/{chunk-PQ6Z2TAP.js → chunk-5UKIZIO3.js} +2 -2
- package/dist/{chunk-UCUALOSM.js → chunk-6YXCPL4T.js} +2 -2
- package/dist/{chunk-S2VG3ABP.js → chunk-7MG2LHO5.js} +3 -3
- package/dist/{chunk-JBIV4FLR.js → chunk-7O3Y4PPD.js} +5 -1
- package/dist/chunk-7O3Y4PPD.js.map +1 -0
- package/dist/{chunk-HM4JSXX2.js → chunk-A5WZEPXJ.js} +3 -3
- package/dist/{chunk-T3PHCEN4.js → chunk-ANSIZYEG.js} +3 -3
- package/dist/{chunk-4LPF226H.js → chunk-B2ZSGYSF.js} +5 -5
- package/dist/{chunk-QHJKK77B.js → chunk-BBWVXF57.js} +6 -6
- package/dist/{chunk-PCQDY6QN.js → chunk-BERJ4AWW.js} +6 -6
- package/dist/{chunk-5AFMP532.js → chunk-BMSOTHIA.js} +6 -6
- package/dist/{chunk-FOG7YEJP.js → chunk-BOWNCWZT.js} +3 -3
- package/dist/{chunk-J4MN6XIU.js → chunk-BZ3534YM.js} +2 -2
- package/dist/{chunk-2LPVI4PX.js → chunk-CIGAQBJR.js} +20 -8
- package/dist/chunk-CIGAQBJR.js.map +1 -0
- package/dist/{chunk-SHILAQH5.js → chunk-DGOZ4UZD.js} +2 -2
- package/dist/{chunk-OWLVBOWO.js → chunk-DJ3LNNZQ.js} +10 -10
- package/dist/{chunk-F23WQK3G.js → chunk-DMJZBQ7F.js} +7 -7
- package/dist/{chunk-PGFKIOR3.js → chunk-E3EBMC4G.js} +3 -3
- package/dist/{chunk-H3VG6XBC.js → chunk-ESVREVWN.js} +15 -13
- package/dist/chunk-ESVREVWN.js.map +1 -0
- package/dist/{chunk-ZO252Q5S.js → chunk-EVKR67PQ.js} +6 -6
- package/dist/{chunk-Z7ZXZL6Y.js → chunk-FAHMLERK.js} +2 -2
- package/dist/{chunk-ALUNQEBY.js → chunk-FYEZC4PX.js} +2 -2
- package/dist/{chunk-H36KSN6X.js → chunk-GHHUF2KL.js} +7 -7
- package/dist/{chunk-Y6GZ2P4M.js → chunk-GM4IM7TC.js} +2 -2
- package/dist/{chunk-Z2PWOSCJ.js → chunk-GY4WYNNG.js} +2 -2
- package/dist/{chunk-S35S77YU.js → chunk-HN4FNA4X.js} +10 -10
- package/dist/{chunk-3SMSERQU.js → chunk-I6DGKPTY.js} +96 -84
- package/dist/chunk-I6DGKPTY.js.map +1 -0
- package/dist/{chunk-RC4BROYR.js → chunk-IPFE6MVM.js} +3 -3
- package/dist/{chunk-4A4TYISP.js → chunk-JBDFMYKQ.js} +2 -2
- package/dist/{chunk-QGJ4XIA7.js → chunk-JJR2JIN4.js} +8 -8
- package/dist/{chunk-POS53FG6.js → chunk-JMGDHKQF.js} +2 -2
- package/dist/{chunk-Z2WK53N6.js → chunk-JUBWUJY5.js} +2 -2
- package/dist/{chunk-GK4DRVUD.js → chunk-KCUIMITG.js} +4 -4
- package/dist/{chunk-MTBXJAS4.js → chunk-KLPASWYY.js} +4 -4
- package/dist/{chunk-LR4Z47QD.js → chunk-KTDGZPOZ.js} +3 -3
- package/dist/{chunk-F7ZFRPGQ.js → chunk-KTFRCC5C.js} +2 -2
- package/dist/{chunk-H4M7ADXY.js → chunk-LHH6H43C.js} +27 -17
- package/dist/chunk-LHH6H43C.js.map +1 -0
- package/dist/{chunk-7LYUJNU3.js → chunk-LWBCUYZW.js} +2 -2
- package/dist/{chunk-LF6DMX4C.js → chunk-MLO75SFJ.js} +3 -3
- package/dist/{chunk-CN6B5PEN.js → chunk-MMOZQTXV.js} +5 -5
- package/dist/{chunk-2GXEQUEX.js → chunk-MVMXZYXT.js} +2 -2
- package/dist/{chunk-RK7N4OQ5.js → chunk-N4CHCXDL.js} +3 -1
- package/dist/chunk-N4CHCXDL.js.map +1 -0
- package/dist/{chunk-XJ3FEKEY.js → chunk-NQKIUNW5.js} +2 -2
- package/dist/{chunk-RDHUZ674.js → chunk-OEA5NVSU.js} +4 -4
- package/dist/{chunk-X62MEF2O.js → chunk-PFBL4M7E.js} +3 -3
- package/dist/{chunk-6FOGTKBY.js → chunk-PKJ43CMD.js} +5 -5
- package/dist/{chunk-PUJTKLPL.js → chunk-PQKG5AHH.js} +3 -3
- package/dist/{chunk-5ACAVJUI.js → chunk-Q2PU57HC.js} +2 -2
- package/dist/{chunk-TVIFAHZR.js → chunk-Q4RWFV3G.js} +6 -6
- package/dist/{chunk-E6YA6UAP.js → chunk-Q7HZX3IF.js} +2 -2
- package/dist/{chunk-H7HP56F6.js → chunk-QHW35ZON.js} +5 -5
- package/dist/{chunk-4ZPE6SKS.js → chunk-QIBVIOXO.js} +3 -3
- package/dist/{chunk-WLLUM35R.js → chunk-QIZPZMUI.js} +2 -2
- package/dist/{chunk-57JTHWLQ.js → chunk-RDZZHYMV.js} +4 -4
- package/dist/{chunk-467SKJ65.js → chunk-RGSTMLVO.js} +4 -4
- package/dist/{chunk-LKFKXS5K.js → chunk-RMF67KCG.js} +2 -2
- package/dist/{chunk-YCSM3GZU.js → chunk-RMS3NEA3.js} +2 -2
- package/dist/{chunk-WK5FSW7T.js → chunk-RTYJRFQO.js} +8 -8
- package/dist/{chunk-ISSU3OH6.js → chunk-S5AMPTNE.js} +7 -7
- package/dist/{chunk-OPXR4PB2.js → chunk-SFAWCTEM.js} +2 -2
- package/dist/{chunk-3QARDAYW.js → chunk-SKGMN35F.js} +2 -2
- package/dist/{chunk-W5LHQXZU.js → chunk-SL3JAAKN.js} +2 -2
- package/dist/{chunk-VTG7327U.js → chunk-SWVNZQVR.js} +4 -4
- package/dist/{chunk-YPSOHDNC.js → chunk-T6PSWLAR.js} +2 -2
- package/dist/{chunk-225O5CXQ.js → chunk-TFR7DSOV.js} +2 -2
- package/dist/{chunk-A2YW5EMU.js → chunk-THX6FEEC.js} +5 -5
- package/dist/{chunk-VFIWDPXZ.js → chunk-TO3EQ7HF.js} +3 -3
- package/dist/{chunk-X67FCULK.js → chunk-TRGTKX5E.js} +3 -3
- package/dist/{chunk-JVLSU7S2.js → chunk-TUFM4UZP.js} +2 -2
- package/dist/{chunk-IESNYJXZ.js → chunk-U7VPHXXO.js} +6 -6
- package/dist/{chunk-5263OEM3.js → chunk-UB5CRTFF.js} +2 -2
- package/dist/{chunk-HTGRQZFB.js → chunk-UGTBXF5U.js} +3 -3
- package/dist/{chunk-P6ASQOZR.js → chunk-URHRIAV6.js} +2 -2
- package/dist/{chunk-XDVVBETV.js → chunk-UXVWEX5L.js} +2 -2
- package/dist/{chunk-5W7YXFV5.js → chunk-VNR2SNVJ.js} +67 -22
- package/dist/chunk-VNR2SNVJ.js.map +1 -0
- package/dist/{chunk-CBRS2NEK.js → chunk-VTFVLCUH.js} +2 -2
- package/dist/{chunk-TOV6VMHF.js → chunk-VXANTWBJ.js} +3 -3
- package/dist/{chunk-L6GTLZRK.js → chunk-WQF3QABE.js} +5 -5
- package/dist/{chunk-3L2MVE36.js → chunk-WSJG5L5C.js} +5 -5
- package/dist/{chunk-YXA2TCTZ.js → chunk-WWNYSV7S.js} +4 -4
- package/dist/{chunk-DBNYPLWY.js → chunk-XGDYGUEH.js} +3 -3
- package/dist/{chunk-XVU7J43V.js → chunk-XLMEZIAJ.js} +2 -2
- package/dist/{chunk-6EW2UCVF.js → chunk-XNIQ7DP2.js} +3 -3
- package/dist/{chunk-J4UJ5FRV.js → chunk-Y4MJQ2UG.js} +4 -4
- package/dist/{chunk-KN4W2OQ4.js → chunk-YCXICMOY.js} +10 -8
- package/dist/{chunk-KN4W2OQ4.js.map → chunk-YCXICMOY.js.map} +1 -1
- package/dist/{chunk-VAG47QHV.js → chunk-YPMW26SL.js} +2 -2
- package/dist/{chunk-DFAUMLD7.js → chunk-YQWBEJCS.js} +5 -5
- package/dist/{chunk-KDJGJR7F.js → chunk-YSRUYAVU.js} +2 -2
- package/dist/{chunk-NLKLXXTO.js → chunk-YYP7WSEB.js} +2 -2
- package/dist/{chunk-ALB64CZM.js → chunk-ZG4XLOKB.js} +7 -7
- package/dist/{chunk-4G25SDQL.js → chunk-ZN4FD4PE.js} +4 -4
- package/dist/{chunk-XSN63FUS.js → chunk-ZORTV6NH.js} +2 -2
- package/dist/{chunk-DKWPJOYH.js → chunk-ZR2YMODS.js} +2 -2
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-BSQHU4JT.js → classified-marker-67HBIJMZ.js} +3 -3
- package/dist/collection-facade-MGGHQ3HU.js +45 -0
- package/dist/{computed-ASBNTLOK.js → computed-LSEZYRJS.js} +3 -3
- package/dist/consent/index.js +9 -9
- package/dist/cover/index.js +9 -9
- package/dist/custody/index.js +12 -12
- package/dist/{dead-filter-QKU56XTQ.js → dead-filter-M3NZUWBZ.js} +2 -2
- package/dist/debug/index.js +1 -1
- package/dist/{delegation-XWRPYODW.js → delegation-OLJUWTVA.js} +11 -11
- package/dist/derivations/index.js +12 -12
- package/dist/derive-LY47HG7Q.js +22 -0
- package/dist/directory/index.js +10 -10
- package/dist/{dispatch-VR4LRXZ7.js → dispatch-44J4TL72.js} +5 -5
- package/dist/{dispatch-4AP4PUZU.js → dispatch-IM52HDXT.js} +18 -18
- package/dist/{enclave-NYPT7WA7.js → enclave-4YBQK77G.js} +9 -9
- package/dist/executor-KSPGNVDO.js +29 -0
- package/dist/executor-MZJXBWNM.js +9 -0
- package/dist/executor-TOLPBHOC.js +9 -0
- package/dist/export-accessible-LGV6IAFX.js +23 -0
- package/dist/extract-partition-RYJZIKQZ.js +38 -0
- package/dist/{fanout-sidecar-IWP3R4RC.js → fanout-sidecar-TSFPXY5C.js} +9 -9
- package/dist/find-LC7P63MX.js +11 -0
- package/dist/forget/index.js +9 -9
- package/dist/guards/index.js +4 -4
- package/dist/history/index.js +13 -13
- package/dist/i18n/index.js +14 -14
- package/dist/index.d.ts +19 -3
- package/dist/index.js +98 -92
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +2 -2
- package/dist/introspection/index.js +11 -11
- package/dist/issue-IOXM3RSJ.js +19 -0
- package/dist/kernel/errors.d.ts +45 -0
- package/dist/kernel/types.d.ts +75 -0
- package/dist/{ledger-T5K4P2D7.js → ledger-HXHIOD36.js} +11 -11
- package/dist/liberate-4APIV7FR.js +25 -0
- package/dist/{link-set-76JZ6YB4.js → link-set-6RAHEKZN.js} +11 -11
- package/dist/{managed-secret-6YC32VXG.js → managed-secret-P3JQ7ZG4.js} +10 -10
- package/dist/materialized-views/index.js +20 -20
- package/dist/{migrate-cek-LBRKYUZZ.js → migrate-cek-25KNTS5U.js} +2 -2
- package/dist/money/index.js +4 -4
- package/dist/noydb-QJFZAH34.js +86 -0
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +12 -12
- package/dist/pod/index.js +57 -57
- package/dist/{pod-handle-P6DPBM5U.js → pod-handle-6II7KFBR.js} +9 -9
- package/dist/policy/index.js +10 -10
- package/dist/port/to/index.d.ts +2 -0
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-53O7AJRZ.js → post-register-BPJ36A6D.js} +6 -6
- package/dist/query/index.js +3 -3
- package/dist/reduce/index.js +4 -4
- package/dist/register-AEOOGKNO.js +32 -0
- package/dist/registry-FZXPQRAB.js +18 -0
- package/dist/registry-I6FP4677.js +19 -0
- package/dist/registry-SHMGHEK4.js +9 -0
- package/dist/registry-SKSOUXNF.js +9 -0
- package/dist/request-withdrawal-6HJT4ODF.js +31 -0
- package/dist/{reveal-XBIMHAXR.js → reveal-DDQBDWPM.js} +6 -6
- package/dist/revoke-U7U3FMXU.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/schema-update/index.js +2 -2
- package/dist/sealed-record/index.js +12 -12
- package/dist/search/index.js +4 -4
- package/dist/{seed-NSNIGYXE.js → seed-3RXT4VGN.js} +12 -12
- package/dist/sequence/index.js +9 -9
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-7NK7TMWU.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/{stale-MCS46TFO.js → stale-KSPG6LFX.js} +10 -10
- package/dist/storage-WP4M7IFO.js +23 -0
- package/dist/{store-coordination-provider-6FM26VQM.js → store-coordination-provider-O2VUEMJH.js} +10 -10
- package/dist/sync/index.js +10 -10
- package/dist/team/index.js +15 -15
- package/dist/tiers/index.js +11 -11
- package/dist/to/index.js +8 -2
- package/dist/to/index.js.map +1 -1
- package/dist/transactions/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/vault-head/index.js +8 -8
- package/dist/{verify-WYOFLSNA.js → verify-JBXCAGDL.js} +5 -5
- package/dist/walk-G3CZIL4L.js +21 -0
- package/dist/with-cargo/index.d.ts +1 -0
- package/dist/with-party/team/roster-epoch.d.ts +71 -0
- package/dist/with-party/team/roster-tag.d.ts +1 -1
- package/dist/with-shape/introspection/describe.d.ts +30 -0
- package/dist/withdraw-accessible-6Q7NE4EY.js +28 -0
- package/package.json +3 -3
- package/dist/api-EQYRTZO2.js +0 -20
- package/dist/chunk-2LPVI4PX.js.map +0 -1
- package/dist/chunk-3SMSERQU.js.map +0 -1
- package/dist/chunk-5W7YXFV5.js.map +0 -1
- package/dist/chunk-H3VG6XBC.js.map +0 -1
- package/dist/chunk-H4M7ADXY.js.map +0 -1
- package/dist/chunk-JBIV4FLR.js.map +0 -1
- package/dist/chunk-RK7N4OQ5.js.map +0 -1
- package/dist/collection-facade-LG3NYZVB.js +0 -45
- package/dist/derive-CXHCY46K.js +0 -22
- package/dist/executor-3KFRQETS.js +0 -29
- package/dist/executor-AFHQYRAU.js +0 -9
- package/dist/executor-YYDW6XQI.js +0 -9
- package/dist/export-accessible-BX2ILB4C.js +0 -23
- package/dist/extract-partition-UPOVITFI.js +0 -38
- package/dist/find-SZBL2HPB.js +0 -11
- package/dist/issue-G53NB6EW.js +0 -19
- package/dist/liberate-VEOZRESE.js +0 -25
- package/dist/noydb-4VV2ZGLZ.js +0 -86
- package/dist/register-6TCBR6XD.js +0 -32
- package/dist/registry-DH2L4O2V.js +0 -18
- package/dist/registry-IWFMXCHX.js +0 -9
- package/dist/registry-Q3FG3OAX.js +0 -9
- package/dist/registry-YC3IFG3A.js +0 -19
- package/dist/request-withdrawal-NM5VYR6F.js +0 -31
- package/dist/revoke-MJNYWO72.js +0 -24
- package/dist/signer-6XVS2AU3.js +0 -25
- package/dist/storage-ZXUT476I.js +0 -23
- package/dist/walk-JNEOYCAU.js +0 -21
- package/dist/withdraw-accessible-ILTSXTIE.js +0 -28
- /package/dist/{api-EQYRTZO2.js.map → api-UE2XQKDN.js.map} +0 -0
- /package/dist/{backup-Z7ZBTAQ6.js.map → backup-VASRVLDZ.js.map} +0 -0
- /package/dist/{chunk-QI5NWLVW.js.map → chunk-2Z47NMFK.js.map} +0 -0
- /package/dist/{chunk-AB5P32RE.js.map → chunk-4OZNXTO4.js.map} +0 -0
- /package/dist/{chunk-N4CNVSUF.js.map → chunk-4RUFYGWG.js.map} +0 -0
- /package/dist/{chunk-YMLQBZFJ.js.map → chunk-5FUULQ6F.js.map} +0 -0
- /package/dist/{chunk-PQ6Z2TAP.js.map → chunk-5UKIZIO3.js.map} +0 -0
- /package/dist/{chunk-UCUALOSM.js.map → chunk-6YXCPL4T.js.map} +0 -0
- /package/dist/{chunk-S2VG3ABP.js.map → chunk-7MG2LHO5.js.map} +0 -0
- /package/dist/{chunk-HM4JSXX2.js.map → chunk-A5WZEPXJ.js.map} +0 -0
- /package/dist/{chunk-T3PHCEN4.js.map → chunk-ANSIZYEG.js.map} +0 -0
- /package/dist/{chunk-4LPF226H.js.map → chunk-B2ZSGYSF.js.map} +0 -0
- /package/dist/{chunk-QHJKK77B.js.map → chunk-BBWVXF57.js.map} +0 -0
- /package/dist/{chunk-PCQDY6QN.js.map → chunk-BERJ4AWW.js.map} +0 -0
- /package/dist/{chunk-5AFMP532.js.map → chunk-BMSOTHIA.js.map} +0 -0
- /package/dist/{chunk-FOG7YEJP.js.map → chunk-BOWNCWZT.js.map} +0 -0
- /package/dist/{chunk-J4MN6XIU.js.map → chunk-BZ3534YM.js.map} +0 -0
- /package/dist/{chunk-SHILAQH5.js.map → chunk-DGOZ4UZD.js.map} +0 -0
- /package/dist/{chunk-OWLVBOWO.js.map → chunk-DJ3LNNZQ.js.map} +0 -0
- /package/dist/{chunk-F23WQK3G.js.map → chunk-DMJZBQ7F.js.map} +0 -0
- /package/dist/{chunk-PGFKIOR3.js.map → chunk-E3EBMC4G.js.map} +0 -0
- /package/dist/{chunk-ZO252Q5S.js.map → chunk-EVKR67PQ.js.map} +0 -0
- /package/dist/{chunk-Z7ZXZL6Y.js.map → chunk-FAHMLERK.js.map} +0 -0
- /package/dist/{chunk-ALUNQEBY.js.map → chunk-FYEZC4PX.js.map} +0 -0
- /package/dist/{chunk-H36KSN6X.js.map → chunk-GHHUF2KL.js.map} +0 -0
- /package/dist/{chunk-Y6GZ2P4M.js.map → chunk-GM4IM7TC.js.map} +0 -0
- /package/dist/{chunk-Z2PWOSCJ.js.map → chunk-GY4WYNNG.js.map} +0 -0
- /package/dist/{chunk-S35S77YU.js.map → chunk-HN4FNA4X.js.map} +0 -0
- /package/dist/{chunk-RC4BROYR.js.map → chunk-IPFE6MVM.js.map} +0 -0
- /package/dist/{chunk-4A4TYISP.js.map → chunk-JBDFMYKQ.js.map} +0 -0
- /package/dist/{chunk-QGJ4XIA7.js.map → chunk-JJR2JIN4.js.map} +0 -0
- /package/dist/{chunk-POS53FG6.js.map → chunk-JMGDHKQF.js.map} +0 -0
- /package/dist/{chunk-Z2WK53N6.js.map → chunk-JUBWUJY5.js.map} +0 -0
- /package/dist/{chunk-GK4DRVUD.js.map → chunk-KCUIMITG.js.map} +0 -0
- /package/dist/{chunk-MTBXJAS4.js.map → chunk-KLPASWYY.js.map} +0 -0
- /package/dist/{chunk-LR4Z47QD.js.map → chunk-KTDGZPOZ.js.map} +0 -0
- /package/dist/{chunk-F7ZFRPGQ.js.map → chunk-KTFRCC5C.js.map} +0 -0
- /package/dist/{chunk-7LYUJNU3.js.map → chunk-LWBCUYZW.js.map} +0 -0
- /package/dist/{chunk-LF6DMX4C.js.map → chunk-MLO75SFJ.js.map} +0 -0
- /package/dist/{chunk-CN6B5PEN.js.map → chunk-MMOZQTXV.js.map} +0 -0
- /package/dist/{chunk-2GXEQUEX.js.map → chunk-MVMXZYXT.js.map} +0 -0
- /package/dist/{chunk-XJ3FEKEY.js.map → chunk-NQKIUNW5.js.map} +0 -0
- /package/dist/{chunk-RDHUZ674.js.map → chunk-OEA5NVSU.js.map} +0 -0
- /package/dist/{chunk-X62MEF2O.js.map → chunk-PFBL4M7E.js.map} +0 -0
- /package/dist/{chunk-6FOGTKBY.js.map → chunk-PKJ43CMD.js.map} +0 -0
- /package/dist/{chunk-PUJTKLPL.js.map → chunk-PQKG5AHH.js.map} +0 -0
- /package/dist/{chunk-5ACAVJUI.js.map → chunk-Q2PU57HC.js.map} +0 -0
- /package/dist/{chunk-TVIFAHZR.js.map → chunk-Q4RWFV3G.js.map} +0 -0
- /package/dist/{chunk-E6YA6UAP.js.map → chunk-Q7HZX3IF.js.map} +0 -0
- /package/dist/{chunk-H7HP56F6.js.map → chunk-QHW35ZON.js.map} +0 -0
- /package/dist/{chunk-4ZPE6SKS.js.map → chunk-QIBVIOXO.js.map} +0 -0
- /package/dist/{chunk-WLLUM35R.js.map → chunk-QIZPZMUI.js.map} +0 -0
- /package/dist/{chunk-57JTHWLQ.js.map → chunk-RDZZHYMV.js.map} +0 -0
- /package/dist/{chunk-467SKJ65.js.map → chunk-RGSTMLVO.js.map} +0 -0
- /package/dist/{chunk-LKFKXS5K.js.map → chunk-RMF67KCG.js.map} +0 -0
- /package/dist/{chunk-YCSM3GZU.js.map → chunk-RMS3NEA3.js.map} +0 -0
- /package/dist/{chunk-WK5FSW7T.js.map → chunk-RTYJRFQO.js.map} +0 -0
- /package/dist/{chunk-ISSU3OH6.js.map → chunk-S5AMPTNE.js.map} +0 -0
- /package/dist/{chunk-OPXR4PB2.js.map → chunk-SFAWCTEM.js.map} +0 -0
- /package/dist/{chunk-3QARDAYW.js.map → chunk-SKGMN35F.js.map} +0 -0
- /package/dist/{chunk-W5LHQXZU.js.map → chunk-SL3JAAKN.js.map} +0 -0
- /package/dist/{chunk-VTG7327U.js.map → chunk-SWVNZQVR.js.map} +0 -0
- /package/dist/{chunk-YPSOHDNC.js.map → chunk-T6PSWLAR.js.map} +0 -0
- /package/dist/{chunk-225O5CXQ.js.map → chunk-TFR7DSOV.js.map} +0 -0
- /package/dist/{chunk-A2YW5EMU.js.map → chunk-THX6FEEC.js.map} +0 -0
- /package/dist/{chunk-VFIWDPXZ.js.map → chunk-TO3EQ7HF.js.map} +0 -0
- /package/dist/{chunk-X67FCULK.js.map → chunk-TRGTKX5E.js.map} +0 -0
- /package/dist/{chunk-JVLSU7S2.js.map → chunk-TUFM4UZP.js.map} +0 -0
- /package/dist/{chunk-IESNYJXZ.js.map → chunk-U7VPHXXO.js.map} +0 -0
- /package/dist/{chunk-5263OEM3.js.map → chunk-UB5CRTFF.js.map} +0 -0
- /package/dist/{chunk-HTGRQZFB.js.map → chunk-UGTBXF5U.js.map} +0 -0
- /package/dist/{chunk-P6ASQOZR.js.map → chunk-URHRIAV6.js.map} +0 -0
- /package/dist/{chunk-XDVVBETV.js.map → chunk-UXVWEX5L.js.map} +0 -0
- /package/dist/{chunk-CBRS2NEK.js.map → chunk-VTFVLCUH.js.map} +0 -0
- /package/dist/{chunk-TOV6VMHF.js.map → chunk-VXANTWBJ.js.map} +0 -0
- /package/dist/{chunk-L6GTLZRK.js.map → chunk-WQF3QABE.js.map} +0 -0
- /package/dist/{chunk-3L2MVE36.js.map → chunk-WSJG5L5C.js.map} +0 -0
- /package/dist/{chunk-YXA2TCTZ.js.map → chunk-WWNYSV7S.js.map} +0 -0
- /package/dist/{chunk-DBNYPLWY.js.map → chunk-XGDYGUEH.js.map} +0 -0
- /package/dist/{chunk-XVU7J43V.js.map → chunk-XLMEZIAJ.js.map} +0 -0
- /package/dist/{chunk-6EW2UCVF.js.map → chunk-XNIQ7DP2.js.map} +0 -0
- /package/dist/{chunk-J4UJ5FRV.js.map → chunk-Y4MJQ2UG.js.map} +0 -0
- /package/dist/{chunk-VAG47QHV.js.map → chunk-YPMW26SL.js.map} +0 -0
- /package/dist/{chunk-DFAUMLD7.js.map → chunk-YQWBEJCS.js.map} +0 -0
- /package/dist/{chunk-KDJGJR7F.js.map → chunk-YSRUYAVU.js.map} +0 -0
- /package/dist/{chunk-NLKLXXTO.js.map → chunk-YYP7WSEB.js.map} +0 -0
- /package/dist/{chunk-ALB64CZM.js.map → chunk-ZG4XLOKB.js.map} +0 -0
- /package/dist/{chunk-4G25SDQL.js.map → chunk-ZN4FD4PE.js.map} +0 -0
- /package/dist/{chunk-XSN63FUS.js.map → chunk-ZORTV6NH.js.map} +0 -0
- /package/dist/{chunk-DKWPJOYH.js.map → chunk-ZR2YMODS.js.map} +0 -0
- /package/dist/{classified-marker-BSQHU4JT.js.map → classified-marker-67HBIJMZ.js.map} +0 -0
- /package/dist/{collection-facade-LG3NYZVB.js.map → collection-facade-MGGHQ3HU.js.map} +0 -0
- /package/dist/{computed-ASBNTLOK.js.map → computed-LSEZYRJS.js.map} +0 -0
- /package/dist/{dead-filter-QKU56XTQ.js.map → dead-filter-M3NZUWBZ.js.map} +0 -0
- /package/dist/{delegation-XWRPYODW.js.map → delegation-OLJUWTVA.js.map} +0 -0
- /package/dist/{derive-CXHCY46K.js.map → derive-LY47HG7Q.js.map} +0 -0
- /package/dist/{dispatch-VR4LRXZ7.js.map → dispatch-44J4TL72.js.map} +0 -0
- /package/dist/{dispatch-4AP4PUZU.js.map → dispatch-IM52HDXT.js.map} +0 -0
- /package/dist/{enclave-NYPT7WA7.js.map → enclave-4YBQK77G.js.map} +0 -0
- /package/dist/{executor-3KFRQETS.js.map → executor-KSPGNVDO.js.map} +0 -0
- /package/dist/{executor-AFHQYRAU.js.map → executor-MZJXBWNM.js.map} +0 -0
- /package/dist/{executor-YYDW6XQI.js.map → executor-TOLPBHOC.js.map} +0 -0
- /package/dist/{export-accessible-BX2ILB4C.js.map → export-accessible-LGV6IAFX.js.map} +0 -0
- /package/dist/{extract-partition-UPOVITFI.js.map → extract-partition-RYJZIKQZ.js.map} +0 -0
- /package/dist/{fanout-sidecar-IWP3R4RC.js.map → fanout-sidecar-TSFPXY5C.js.map} +0 -0
- /package/dist/{find-SZBL2HPB.js.map → find-LC7P63MX.js.map} +0 -0
- /package/dist/{issue-G53NB6EW.js.map → issue-IOXM3RSJ.js.map} +0 -0
- /package/dist/{ledger-T5K4P2D7.js.map → ledger-HXHIOD36.js.map} +0 -0
- /package/dist/{liberate-VEOZRESE.js.map → liberate-4APIV7FR.js.map} +0 -0
- /package/dist/{link-set-76JZ6YB4.js.map → link-set-6RAHEKZN.js.map} +0 -0
- /package/dist/{managed-secret-6YC32VXG.js.map → managed-secret-P3JQ7ZG4.js.map} +0 -0
- /package/dist/{migrate-cek-LBRKYUZZ.js.map → migrate-cek-25KNTS5U.js.map} +0 -0
- /package/dist/{noydb-4VV2ZGLZ.js.map → noydb-QJFZAH34.js.map} +0 -0
- /package/dist/{pod-handle-P6DPBM5U.js.map → pod-handle-6II7KFBR.js.map} +0 -0
- /package/dist/{post-register-53O7AJRZ.js.map → post-register-BPJ36A6D.js.map} +0 -0
- /package/dist/{register-6TCBR6XD.js.map → register-AEOOGKNO.js.map} +0 -0
- /package/dist/{registry-DH2L4O2V.js.map → registry-FZXPQRAB.js.map} +0 -0
- /package/dist/{registry-IWFMXCHX.js.map → registry-I6FP4677.js.map} +0 -0
- /package/dist/{registry-Q3FG3OAX.js.map → registry-SHMGHEK4.js.map} +0 -0
- /package/dist/{registry-YC3IFG3A.js.map → registry-SKSOUXNF.js.map} +0 -0
- /package/dist/{request-withdrawal-NM5VYR6F.js.map → request-withdrawal-6HJT4ODF.js.map} +0 -0
- /package/dist/{reveal-XBIMHAXR.js.map → reveal-DDQBDWPM.js.map} +0 -0
- /package/dist/{revoke-MJNYWO72.js.map → revoke-U7U3FMXU.js.map} +0 -0
- /package/dist/{seed-NSNIGYXE.js.map → seed-3RXT4VGN.js.map} +0 -0
- /package/dist/{signer-6XVS2AU3.js.map → signer-7NK7TMWU.js.map} +0 -0
- /package/dist/{stale-MCS46TFO.js.map → stale-KSPG6LFX.js.map} +0 -0
- /package/dist/{storage-ZXUT476I.js.map → storage-WP4M7IFO.js.map} +0 -0
- /package/dist/{store-coordination-provider-6FM26VQM.js.map → store-coordination-provider-O2VUEMJH.js.map} +0 -0
- /package/dist/{verify-WYOFLSNA.js.map → verify-JBXCAGDL.js.map} +0 -0
- /package/dist/{walk-JNEOYCAU.js.map → walk-G3CZIL4L.js.map} +0 -0
- /package/dist/{withdraw-accessible-ILTSXTIE.js.map → withdraw-accessible-6Q7NE4EY.js.map} +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildRecordAad,
|
|
3
3
|
openEnvelopeJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CIGAQBJR.js";
|
|
5
5
|
import {
|
|
6
6
|
buildRecordEnvelope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4RUFYGWG.js";
|
|
8
8
|
import {
|
|
9
9
|
encrypt
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SL3JAAKN.js";
|
|
11
11
|
import {
|
|
12
12
|
ConflictError
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
14
14
|
|
|
15
15
|
// src/with-audit/attestation/signer.ts
|
|
16
16
|
import { generateDocSigningKeyPair } from "@noy-db/attestation";
|
|
@@ -55,4 +55,4 @@ export {
|
|
|
55
55
|
loadSigner,
|
|
56
56
|
loadOrCreateSigner
|
|
57
57
|
};
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-WSJG5L5C.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildRecordAad,
|
|
3
3
|
openEnvelopeJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CIGAQBJR.js";
|
|
5
5
|
import {
|
|
6
6
|
buildRecordEnvelope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4RUFYGWG.js";
|
|
8
8
|
import {
|
|
9
9
|
encrypt
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SL3JAAKN.js";
|
|
11
11
|
|
|
12
12
|
// src/with-shape/persisted-schemas/storage.ts
|
|
13
13
|
var SCHEMAS_COLLECTION = "_schemas";
|
|
@@ -45,4 +45,4 @@ export {
|
|
|
45
45
|
loadPersistedSchema,
|
|
46
46
|
savePersistedSchema
|
|
47
47
|
};
|
|
48
|
-
//# sourceMappingURL=chunk-
|
|
48
|
+
//# sourceMappingURL=chunk-WWNYSV7S.js.map
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
persistUserVisibility,
|
|
5
5
|
readUserVisibility,
|
|
6
6
|
saveUserEnvelope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-YQWBEJCS.js";
|
|
8
8
|
import {
|
|
9
9
|
PolicyDeniedError
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
11
11
|
|
|
12
12
|
// src/with-party/directory/user-envelope/api.ts
|
|
13
13
|
var UserApi = class {
|
|
@@ -379,4 +379,4 @@ export {
|
|
|
379
379
|
UserApi,
|
|
380
380
|
createUserApi
|
|
381
381
|
};
|
|
382
|
-
//# sourceMappingURL=chunk-
|
|
382
|
+
//# sourceMappingURL=chunk-XGDYGUEH.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ReadOnlyFrameError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
4
4
|
|
|
5
5
|
// src/with-fork/shadow/vault-frame.ts
|
|
6
6
|
var VaultFrame = class {
|
|
@@ -71,4 +71,4 @@ export {
|
|
|
71
71
|
VaultFrame,
|
|
72
72
|
CollectionFrame
|
|
73
73
|
};
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
//# sourceMappingURL=chunk-XLMEZIAJ.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isRewrappedUnder,
|
|
3
3
|
rewrapEnvelope
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CIGAQBJR.js";
|
|
5
5
|
import {
|
|
6
6
|
buildRecordEnvelope,
|
|
7
7
|
isTombstone,
|
|
8
8
|
isTombstoneShape
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-4RUFYGWG.js";
|
|
10
10
|
|
|
11
11
|
// src/with-commit/history/history.ts
|
|
12
12
|
var HISTORY_COLLECTION = "_history";
|
|
@@ -187,4 +187,4 @@ export {
|
|
|
187
187
|
rewrapHistory,
|
|
188
188
|
NO_HISTORY
|
|
189
189
|
};
|
|
190
|
-
//# sourceMappingURL=chunk-
|
|
190
|
+
//# sourceMappingURL=chunk-XNIQ7DP2.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
grant,
|
|
3
3
|
revoke
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-VNR2SNVJ.js";
|
|
5
5
|
import {
|
|
6
6
|
CustodyNotEnabledError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
8
8
|
|
|
9
9
|
// src/with-party/custody/active.ts
|
|
10
10
|
function withCustody() {
|
|
@@ -16,7 +16,7 @@ function withCustody() {
|
|
|
16
16
|
return host._revokeCustodianImpl(revoke, vault, options, factors);
|
|
17
17
|
},
|
|
18
18
|
async liberate(vault, opts) {
|
|
19
|
-
const { liberateVault } = await import("./liberate-
|
|
19
|
+
const { liberateVault } = await import("./liberate-4APIV7FR.js");
|
|
20
20
|
return liberateVault(vault, opts);
|
|
21
21
|
}
|
|
22
22
|
};
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
withCustody,
|
|
75
75
|
CustodyApi
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-Y4MJQ2UG.js.map
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
2
|
freezeSnapshotOnly
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QHW35ZON.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveManagedSecret
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JUBWUJY5.js";
|
|
7
7
|
import {
|
|
8
8
|
assertRosterTagValid,
|
|
9
9
|
createOwnerKeyring,
|
|
10
10
|
mintRosterTag,
|
|
11
|
+
nextRosterEpoch,
|
|
11
12
|
requireRosterKey
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VNR2SNVJ.js";
|
|
13
14
|
import {
|
|
14
15
|
buildRecordEnvelope
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-4RUFYGWG.js";
|
|
16
17
|
import {
|
|
17
18
|
wrapKey
|
|
18
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-SL3JAAKN.js";
|
|
19
20
|
import {
|
|
20
21
|
PermissionDeniedError
|
|
21
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
22
23
|
|
|
23
24
|
// src/with-party/team/deed.ts
|
|
24
25
|
var DEED_RECORD_ID = "deed";
|
|
@@ -107,7 +108,8 @@ async function liberateVault(vault, opts) {
|
|
|
107
108
|
}
|
|
108
109
|
const rosterKey = requireRosterKey(keyring, "liberateVault");
|
|
109
110
|
const merged = { ...keyringFile, deks: mergedDeks };
|
|
110
|
-
const
|
|
111
|
+
const withEpoch = { ...merged, roster_epoch: nextRosterEpoch(keyringFile.roster_epoch) };
|
|
112
|
+
const mergedFile = { ...withEpoch, roster_tag: await mintRosterTag(withEpoch, rosterKey) };
|
|
111
113
|
await adapter.put(vaultName, "_keyring", opts.newOwnerId, { ...env, _data: JSON.stringify(mergedFile) });
|
|
112
114
|
await vault._getLedgerOrNull()?.append({
|
|
113
115
|
op: "lifecycle",
|
|
@@ -135,4 +137,4 @@ export {
|
|
|
135
137
|
isDeedVault,
|
|
136
138
|
liberateVault
|
|
137
139
|
};
|
|
138
|
-
//# sourceMappingURL=chunk-
|
|
140
|
+
//# sourceMappingURL=chunk-YCXICMOY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/with-party/team/deed.ts","../src/with-party/custody/liberate.ts"],"sourcesContent":["/**\n * FR-6 — Deed: sealed / hidden-owner provisioning.\n *\n * A **Deed** is a vault owned by a *latent* principal who never\n * authenticates. The owner credential (the random secret that\n * derives `KEK_owner`) is minted machine-side and sealed under a\n * **non-firm** {@link NoydbSealer} — that sealing boundary is\n * the cryptographic *inalienability anchor*: whoever holds the\n * provider (the client / their KMS) is the only party that can ever\n * re-derive `KEK_owner`. A firm-side custodian operates the vault\n * fully but can never reach the owner key — there is deliberately NO\n * firm-controlled fallback.\n *\n * Provisioning reuses the managed-mode seam:\n * - {@link resolveManagedSecret} mints + seals + persists the random\n * secret at `_meta/sealed-secret` (and unseals it on every\n * subsequent open through the same provider).\n * - {@link createOwnerKeyring} derives `KEK_owner` from that\n * secret and writes the `_keyring/<ownerUserId>` file.\n *\n * On top of that, a Deed writes a `_meta/deed` **marker**. The marker\n * is PLAINTEXT metadata — it records WHO the latent owner is and WHICH\n * sealing boundary protects them, so it must be readable without\n * unlocking the vault (a custodian or auditor inspecting the vault must\n * be able to see \"this is a Deed vault, owner = X, sealed under Y\"\n * without any key). The marker itself is therefore never sealed; only\n * the owner *credential* is.\n *\n * @module\n */\n\nimport { buildRecordEnvelope } from '../../kernel/enclave/index.js'\nimport type { NoydbStore } from '../../kernel/types.js'\nimport type { UnlockedKeyring } from './keyring.js'\nimport { createOwnerKeyring } from './keyring.js'\nimport type { NoydbSealer } from './managed-secret.js'\nimport { resolveManagedSecret } from './managed-secret.js'\n\n/** Reserved id for the Deed marker under `_meta`. */\nexport const DEED_RECORD_ID = 'deed' as const\n\n/**\n * Plaintext metadata recording a vault's latent-owner Deed. Persisted\n * at `_meta/deed`. Readable without unlocking the vault by design — it\n * carries no secret material, only the identity of the latent owner\n * and the sealing boundary that anchors inalienability.\n */\nexport interface DeedMarker {\n /** The latent owner principal — the user id of the `_keyring/<id>` owner file. */\n readonly ownerUserId: string\n /**\n * The `NoydbSealer.id` the owner credential is sealed under.\n * The inalienability anchor: only the holder of this (non-firm)\n * provider can re-derive `KEK_owner`. Audit metadata — never secret.\n */\n readonly sealedUnder: string\n /** Always `true` for a Deed — the owner never authenticates interactively. */\n readonly latent: true\n /** ISO-8601 timestamp the Deed was issued. */\n readonly issuedAt: string\n /**\n * ISO-8601 timestamp the vault was liberated (a new owner claimed it\n * via the audited Liberate ceremony), if any. Absent until liberation.\n */\n readonly liberatedAt?: string\n}\n\n/**\n * Wire-format payload stored inside the `_meta/deed` envelope. Carries\n * a magic marker for forensics + the {@link DeedMarker} fields. JSON,\n * AES-GCM bypassed (the marker is plaintext metadata by design).\n */\ninterface DeedEnvelopePayload extends DeedMarker {\n readonly _noydb_deed: 1\n}\n\n/**\n * Provision a Deed: a latent owner whose credential is sealed under\n * `sealing` (a NON-firm provider). Mints + seals the owner secret\n * via {@link resolveManagedSecret}, derives the owner keyring via\n * {@link createOwnerKeyring}, then writes the plaintext `_meta/deed`\n * marker. Returns the unlocked owner keyring.\n *\n * The returned keyring is the only in-memory window onto `KEK_owner`\n * for this call; the persistent re-entry point is the sealing provider\n * (re-run {@link resolveManagedSecret} with the same provider to\n * re-resolve the secret, then {@link createOwnerKeyring}/load to\n * unlock — no interactive secret is ever required).\n *\n * There is deliberately no firm-controlled fallback: the marker's\n * `sealedUnder` is the single cryptographic anchor of ownership.\n */\nexport async function createDeedOwner(\n store: NoydbStore,\n vault: string,\n ownerUserId: string,\n sealing: NoydbSealer,\n): Promise<UnlockedKeyring> {\n // 1. Mint + seal + persist the random owner secret under the\n // non-firm provider (writes _meta/sealed-secret).\n const secret = await resolveManagedSecret(store, vault, sealing)\n\n // 2. Derive KEK_owner from the (never-human-seen) secret and\n // write the owner keyring file.\n const keyring = await createOwnerKeyring(store, vault, { userId: ownerUserId, secret: secret })\n\n // 3. Write the plaintext Deed marker. NOT sealed — it is audit\n // metadata that must be readable without unlocking.\n await saveDeedMarker(store, vault, {\n ownerUserId,\n sealedUnder: sealing.id,\n latent: true,\n issuedAt: new Date().toISOString(),\n })\n\n return keyring\n}\n\n/**\n * Read the {@link DeedMarker} from `_meta/deed`, or `null` if the vault\n * has no Deed marker (i.e. it is not a Deed vault). Plaintext read — no\n * unlocking required.\n */\nexport async function loadDeedMarker(\n store: NoydbStore,\n vault: string,\n): Promise<DeedMarker | null> {\n const envelope = await store.get(vault, '_meta', DEED_RECORD_ID)\n if (!envelope) return null\n let payload: unknown\n try {\n payload = JSON.parse(envelope._data)\n } catch {\n return null\n }\n if (typeof payload !== 'object' || payload === null) return null\n const r = payload as Record<string, unknown>\n if (r._noydb_deed !== 1) return null\n if (\n typeof r.ownerUserId !== 'string'\n || typeof r.sealedUnder !== 'string'\n || r.latent !== true\n || typeof r.issuedAt !== 'string'\n ) {\n return null\n }\n const marker: DeedMarker = {\n ownerUserId: r.ownerUserId,\n sealedUnder: r.sealedUnder,\n latent: true,\n issuedAt: r.issuedAt,\n ...(typeof r.liberatedAt === 'string' ? { liberatedAt: r.liberatedAt } : {}),\n }\n return marker\n}\n\n/** Whether `vault` carries a Deed marker (a sealed/latent owner). */\nexport async function isDeedVault(\n store: NoydbStore,\n vault: string,\n): Promise<boolean> {\n return (await loadDeedMarker(store, vault)) !== null\n}\n\n/**\n * Persist a {@link DeedMarker} at `_meta/deed`. Mirrors\n * `saveSealedSecret`'s envelope shape: a standard\n * {@link EncryptedEnvelope} with AES-GCM bypassed (`_iv: ''`), the\n * payload stored as plaintext JSON in `_data`. The marker is metadata,\n * not a secret — sealing it would defeat its purpose (auditors /\n * custodians must read it without a key).\n *\n * @internal — used by `createDeedOwner` and (later) the Liberate\n * ceremony to stamp `liberatedAt`.\n */\nexport async function saveDeedMarker(\n store: NoydbStore,\n vault: string,\n marker: DeedMarker,\n): Promise<void> {\n const persisted: DeedEnvelopePayload = { _noydb_deed: 1, ...marker }\n const prior = await store.get(vault, '_meta', DEED_RECORD_ID)\n const env = buildRecordEnvelope(\n { collection: '_meta', id: DEED_RECORD_ID, version: (prior?._v ?? 0) + 1 },\n // AES-GCM bypassed — the marker is plaintext audit metadata.\n { iv: '', data: JSON.stringify(persisted) },\n )\n await store.put(vault, '_meta', DEED_RECORD_ID, env)\n}\n","/**\n * `liberateVault` — the audited claim of ownership over a\n * sealed-owner (Deed) vault. The inverse of withdrawal.\n *\n * A **Deed** vault's owner credential is sealed under a non-firm provider, so\n * the firm-side **custodian** (which holds every collection DEK and operates\n * the vault fully) can never reach `KEK_owner`. Liberation is the ONLY route\n * by which a custodian assumes ownership, and it is deliberately a manual,\n * audited ceremony:\n *\n * 1. gate `'liberate-vault'` (fail-closed)\n * 2. caller MUST be the `custodian` (the de-facto authority holding the DEKs)\n * 3. freeze a PRE-liberation EVIDENCE snapshot (hash-pinned in the ledger) —\n * but PRESERVE the live data for the new owner (see the freeze decision\n * below)\n * 4. mint a NEW owner keyring re-wrapping the incumbent DEKs under the new\n * owner's KEK\n * 5. lifecycle ledger `liberation-claimed:<newOwnerId>:<legalBasis>`\n * 6. stamp the `_meta/deed` marker with `liberatedAt`\n *\n * ## Security: the inalienability floor\n *\n * Liberation **mints a new owner from the custodian's DEKs** — it does NOT\n * unseal the original sealed owner. The old sealed-owner credential is left\n * untouched and ORPHANED (its `_keyring/<id>` file remains, its KEK is still\n * sealed under the non-firm provider), never impersonated. The new owner is a\n * DISTINCT principal under a fresh KEK derived from `newOwnerSecret`. This\n * preserves the inalienability floor: the act of claiming ownership is itself\n * auditable and produces a different principal, rather than silently assuming\n * the latent owner's identity.\n *\n * ## Freeze decision: snapshot-only, not freeze-and-delete\n *\n * `freezeAndDeleteClosure` (withdraw-accessible.ts) writes a hash-pinned\n * snapshot and THEN delete-closures the live records — correct for a\n * destructive withdrawal, WRONG for liberation. Liberation transfers\n * operational continuity; it must leave the live data intact for the new\n * owner. We therefore call the snapshot-only core `freezeSnapshotOnly`\n * (factored out of that module; the freeze-AND-delete withdrawal path is\n * unchanged) to pin the evidence snapshot while preserving the records.\n *\n * @module\n */\n\nimport type { Vault } from '../../kernel/vault.js'\nimport type { FactorProofBundle, KeyringFile } from '../../kernel/types.js'\nimport { PermissionDeniedError } from '../../kernel/errors.js'\nimport { wrapKey } from '../../kernel/enclave/index.js'\nimport { createOwnerKeyring, requireRosterKey } from '../team/keyring.js'\nimport { mintRosterTag, assertRosterTagValid } from '../team/roster-tag.js'\nimport type { FrozenSnapshotRef } from '../../with-audit/portability/withdraw-accessible.js'\nimport { freezeSnapshotOnly } from '../../with-audit/portability/withdraw-accessible.js'\nimport { loadDeedMarker, saveDeedMarker } from '../team/deed.js'\n\nexport interface LiberateOptions {\n /** The id of the new owner principal the custodian mints by claiming ownership. */\n readonly newOwnerId: string\n /** The secret that derives the new owner's KEK (the DEKs are re-wrapped under it). */\n readonly newOwnerSecret: string\n /** Legal/contractual basis recorded in the audit (e.g. 'contractual-handover'). */\n readonly legalBasis: string\n readonly factors?: FactorProofBundle\n}\n\nexport interface LiberateResult {\n /** The hash-pinned pre-liberation evidence snapshot. */\n readonly snapshot: FrozenSnapshotRef\n}\n\n/**\n * Audited claim of ownership over a sealed-owner vault by its custodian. See\n * the module doc for the full ceremony + security rationale.\n */\nexport async function liberateVault(\n vault: Vault,\n opts: LiberateOptions,\n): Promise<LiberateResult> {\n // 1. gate — fail-closed `liberate-vault`.\n await vault.noydb.checkGate(vault.name, 'liberate-vault', opts.factors)\n\n // 2. caller must be the custodian (the de-facto authority holding the DEKs).\n const { name: vaultName, adapter, keyring } = vault._introspectState()\n if (keyring.role !== 'custodian') {\n throw new PermissionDeniedError(\n 'liberation is claimed only by the custodian (the de-facto authority holding the DEKs)',\n )\n }\n\n // Refuse to clobber an existing principal: the new owner must be a FRESH id.\n // (Checked before any side effect so a colliding id never leaves a half-run\n // ceremony — no orphan snapshot, no partial keyring overwrite.)\n const existing = await adapter.get(vaultName, '_keyring', opts.newOwnerId)\n if (existing) {\n throw new PermissionDeniedError(\n `liberateVault: newOwnerId \"${opts.newOwnerId}\" already exists as a principal; choose a fresh id (liberation mints a distinct owner, it never overwrites an existing keyring)`,\n )\n }\n\n // 3. Pre-liberation EVIDENCE snapshot of every operational collection —\n // snapshot-only (live data preserved for the new owner; liberation\n // transfers operational continuity, it does not erase).\n const collections = await listOperationalCollections(vault)\n const snapshot = await freezeSnapshotOnly(vault, collections, { actorUserId: keyring.userId })\n\n // 4. Mint a NEW owner keyring, re-wrapping the incumbent DEKs under the new\n // owner's fresh KEK. The old sealed owner is NOT unsealed — a DISTINCT\n // principal is minted and the original owner credential is left orphaned\n // (inalienability floor). Mirrors adopt-partition.ts's DEK re-wrap.\n const newOwner = await createOwnerKeyring(adapter, vaultName, { userId: opts.newOwnerId, secret: opts.newOwnerSecret })\n if (!newOwner.kek) {\n throw new PermissionDeniedError(\n `new owner keyring for \"${opts.newOwnerId}\" has no KEK to re-wrap the incumbent DEKs under`,\n )\n }\n const env = await adapter.get(vaultName, '_keyring', opts.newOwnerId)\n if (!env) {\n throw new PermissionDeniedError(`new owner keyring for \"${opts.newOwnerId}\" did not persist`)\n }\n const keyringFile = JSON.parse(env._data) as KeyringFile\n // #1096 — this is a read-BACK of the file `createOwnerKeyring` just wrote, and\n // it is about to be edited and restamped, so the store gets a window to alter\n // it in between. Verified against the NEW owner's own roster key, not the\n // incumbent's: at this instant the file is still stamped under the fresh key\n // minted above (the swap to the incumbent key happens below).\n const mintedRosterKey = requireRosterKey(newOwner, 'liberateVault')\n await assertRosterTagValid(keyringFile, mintedRosterKey, opts.newOwnerId)\n const mergedDeks: Record<string, string> = { ...keyringFile.deks }\n for (const [collection, dek] of keyring.deks) {\n mergedDeks[collection] = await wrapKey(dek, newOwner.kek)\n }\n // #1096 — liberation joins a new owner to an EXISTING vault, so the vault's\n // roster key must stay the incumbent one. `createOwnerKeyring` above minted a\n // fresh roster key (correct for a new vault, wrong here), and the merge loop\n // has just overwritten `_roster` with the incumbent's — so the tag it stamped\n // no longer matches the key in the file. Restamp under the key that actually\n // ends up persisted, or the new owner cannot open the vault they just claimed.\n //\n // Keeping the incumbent key is the substantive half: a fresh one would leave\n // the new owner unable to verify any co-member's roster, and every co-member\n // unable to verify theirs.\n const rosterKey = requireRosterKey(keyring, 'liberateVault')\n const merged: KeyringFile = { ...keyringFile, deks: mergedDeks }\n const mergedFile: KeyringFile = { ...merged, roster_tag: await mintRosterTag(merged, rosterKey) }\n await adapter.put(vaultName, '_keyring', opts.newOwnerId, { ...env, _data: JSON.stringify(mergedFile) })\n\n // 5. Lifecycle ledger audit (no-op if the history strategy is absent).\n await vault._getLedgerOrNull()?.append({\n op: 'lifecycle', collection: '', id: '', version: 0, actor: opts.newOwnerId, payloadHash: '',\n reason: `liberation-claimed:${opts.newOwnerId}:${opts.legalBasis}`,\n })\n\n // 6. Stamp the Deed marker with `liberatedAt` (if a marker exists).\n const marker = await loadDeedMarker(adapter, vaultName)\n if (marker) {\n await saveDeedMarker(adapter, vaultName, { ...marker, liberatedAt: new Date().toISOString() })\n }\n\n return { snapshot }\n}\n\n/**\n * Enumerate the vault's operational (user-facing) collections — those carried\n * by the caller's keyring DEK map, minus the reserved internal collections\n * (`_*`). These are the collections frozen into the evidence snapshot.\n */\nasync function listOperationalCollections(vault: Vault): Promise<readonly string[]> {\n const { keyring } = vault._introspectState()\n return [...keyring.deks.keys()].filter((c) => !c.startsWith('_'))\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/with-party/team/deed.ts","../src/with-party/custody/liberate.ts"],"sourcesContent":["/**\n * FR-6 — Deed: sealed / hidden-owner provisioning.\n *\n * A **Deed** is a vault owned by a *latent* principal who never\n * authenticates. The owner credential (the random secret that\n * derives `KEK_owner`) is minted machine-side and sealed under a\n * **non-firm** {@link NoydbSealer} — that sealing boundary is\n * the cryptographic *inalienability anchor*: whoever holds the\n * provider (the client / their KMS) is the only party that can ever\n * re-derive `KEK_owner`. A firm-side custodian operates the vault\n * fully but can never reach the owner key — there is deliberately NO\n * firm-controlled fallback.\n *\n * Provisioning reuses the managed-mode seam:\n * - {@link resolveManagedSecret} mints + seals + persists the random\n * secret at `_meta/sealed-secret` (and unseals it on every\n * subsequent open through the same provider).\n * - {@link createOwnerKeyring} derives `KEK_owner` from that\n * secret and writes the `_keyring/<ownerUserId>` file.\n *\n * On top of that, a Deed writes a `_meta/deed` **marker**. The marker\n * is PLAINTEXT metadata — it records WHO the latent owner is and WHICH\n * sealing boundary protects them, so it must be readable without\n * unlocking the vault (a custodian or auditor inspecting the vault must\n * be able to see \"this is a Deed vault, owner = X, sealed under Y\"\n * without any key). The marker itself is therefore never sealed; only\n * the owner *credential* is.\n *\n * @module\n */\n\nimport { buildRecordEnvelope } from '../../kernel/enclave/index.js'\nimport type { NoydbStore } from '../../kernel/types.js'\nimport type { UnlockedKeyring } from './keyring.js'\nimport { createOwnerKeyring } from './keyring.js'\nimport type { NoydbSealer } from './managed-secret.js'\nimport { resolveManagedSecret } from './managed-secret.js'\n\n/** Reserved id for the Deed marker under `_meta`. */\nexport const DEED_RECORD_ID = 'deed' as const\n\n/**\n * Plaintext metadata recording a vault's latent-owner Deed. Persisted\n * at `_meta/deed`. Readable without unlocking the vault by design — it\n * carries no secret material, only the identity of the latent owner\n * and the sealing boundary that anchors inalienability.\n */\nexport interface DeedMarker {\n /** The latent owner principal — the user id of the `_keyring/<id>` owner file. */\n readonly ownerUserId: string\n /**\n * The `NoydbSealer.id` the owner credential is sealed under.\n * The inalienability anchor: only the holder of this (non-firm)\n * provider can re-derive `KEK_owner`. Audit metadata — never secret.\n */\n readonly sealedUnder: string\n /** Always `true` for a Deed — the owner never authenticates interactively. */\n readonly latent: true\n /** ISO-8601 timestamp the Deed was issued. */\n readonly issuedAt: string\n /**\n * ISO-8601 timestamp the vault was liberated (a new owner claimed it\n * via the audited Liberate ceremony), if any. Absent until liberation.\n */\n readonly liberatedAt?: string\n}\n\n/**\n * Wire-format payload stored inside the `_meta/deed` envelope. Carries\n * a magic marker for forensics + the {@link DeedMarker} fields. JSON,\n * AES-GCM bypassed (the marker is plaintext metadata by design).\n */\ninterface DeedEnvelopePayload extends DeedMarker {\n readonly _noydb_deed: 1\n}\n\n/**\n * Provision a Deed: a latent owner whose credential is sealed under\n * `sealing` (a NON-firm provider). Mints + seals the owner secret\n * via {@link resolveManagedSecret}, derives the owner keyring via\n * {@link createOwnerKeyring}, then writes the plaintext `_meta/deed`\n * marker. Returns the unlocked owner keyring.\n *\n * The returned keyring is the only in-memory window onto `KEK_owner`\n * for this call; the persistent re-entry point is the sealing provider\n * (re-run {@link resolveManagedSecret} with the same provider to\n * re-resolve the secret, then {@link createOwnerKeyring}/load to\n * unlock — no interactive secret is ever required).\n *\n * There is deliberately no firm-controlled fallback: the marker's\n * `sealedUnder` is the single cryptographic anchor of ownership.\n */\nexport async function createDeedOwner(\n store: NoydbStore,\n vault: string,\n ownerUserId: string,\n sealing: NoydbSealer,\n): Promise<UnlockedKeyring> {\n // 1. Mint + seal + persist the random owner secret under the\n // non-firm provider (writes _meta/sealed-secret).\n const secret = await resolveManagedSecret(store, vault, sealing)\n\n // 2. Derive KEK_owner from the (never-human-seen) secret and\n // write the owner keyring file.\n const keyring = await createOwnerKeyring(store, vault, { userId: ownerUserId, secret: secret })\n\n // 3. Write the plaintext Deed marker. NOT sealed — it is audit\n // metadata that must be readable without unlocking.\n await saveDeedMarker(store, vault, {\n ownerUserId,\n sealedUnder: sealing.id,\n latent: true,\n issuedAt: new Date().toISOString(),\n })\n\n return keyring\n}\n\n/**\n * Read the {@link DeedMarker} from `_meta/deed`, or `null` if the vault\n * has no Deed marker (i.e. it is not a Deed vault). Plaintext read — no\n * unlocking required.\n */\nexport async function loadDeedMarker(\n store: NoydbStore,\n vault: string,\n): Promise<DeedMarker | null> {\n const envelope = await store.get(vault, '_meta', DEED_RECORD_ID)\n if (!envelope) return null\n let payload: unknown\n try {\n payload = JSON.parse(envelope._data)\n } catch {\n return null\n }\n if (typeof payload !== 'object' || payload === null) return null\n const r = payload as Record<string, unknown>\n if (r._noydb_deed !== 1) return null\n if (\n typeof r.ownerUserId !== 'string'\n || typeof r.sealedUnder !== 'string'\n || r.latent !== true\n || typeof r.issuedAt !== 'string'\n ) {\n return null\n }\n const marker: DeedMarker = {\n ownerUserId: r.ownerUserId,\n sealedUnder: r.sealedUnder,\n latent: true,\n issuedAt: r.issuedAt,\n ...(typeof r.liberatedAt === 'string' ? { liberatedAt: r.liberatedAt } : {}),\n }\n return marker\n}\n\n/** Whether `vault` carries a Deed marker (a sealed/latent owner). */\nexport async function isDeedVault(\n store: NoydbStore,\n vault: string,\n): Promise<boolean> {\n return (await loadDeedMarker(store, vault)) !== null\n}\n\n/**\n * Persist a {@link DeedMarker} at `_meta/deed`. Mirrors\n * `saveSealedSecret`'s envelope shape: a standard\n * {@link EncryptedEnvelope} with AES-GCM bypassed (`_iv: ''`), the\n * payload stored as plaintext JSON in `_data`. The marker is metadata,\n * not a secret — sealing it would defeat its purpose (auditors /\n * custodians must read it without a key).\n *\n * @internal — used by `createDeedOwner` and (later) the Liberate\n * ceremony to stamp `liberatedAt`.\n */\nexport async function saveDeedMarker(\n store: NoydbStore,\n vault: string,\n marker: DeedMarker,\n): Promise<void> {\n const persisted: DeedEnvelopePayload = { _noydb_deed: 1, ...marker }\n const prior = await store.get(vault, '_meta', DEED_RECORD_ID)\n const env = buildRecordEnvelope(\n { collection: '_meta', id: DEED_RECORD_ID, version: (prior?._v ?? 0) + 1 },\n // AES-GCM bypassed — the marker is plaintext audit metadata.\n { iv: '', data: JSON.stringify(persisted) },\n )\n await store.put(vault, '_meta', DEED_RECORD_ID, env)\n}\n","/**\n * `liberateVault` — the audited claim of ownership over a\n * sealed-owner (Deed) vault. The inverse of withdrawal.\n *\n * A **Deed** vault's owner credential is sealed under a non-firm provider, so\n * the firm-side **custodian** (which holds every collection DEK and operates\n * the vault fully) can never reach `KEK_owner`. Liberation is the ONLY route\n * by which a custodian assumes ownership, and it is deliberately a manual,\n * audited ceremony:\n *\n * 1. gate `'liberate-vault'` (fail-closed)\n * 2. caller MUST be the `custodian` (the de-facto authority holding the DEKs)\n * 3. freeze a PRE-liberation EVIDENCE snapshot (hash-pinned in the ledger) —\n * but PRESERVE the live data for the new owner (see the freeze decision\n * below)\n * 4. mint a NEW owner keyring re-wrapping the incumbent DEKs under the new\n * owner's KEK\n * 5. lifecycle ledger `liberation-claimed:<newOwnerId>:<legalBasis>`\n * 6. stamp the `_meta/deed` marker with `liberatedAt`\n *\n * ## Security: the inalienability floor\n *\n * Liberation **mints a new owner from the custodian's DEKs** — it does NOT\n * unseal the original sealed owner. The old sealed-owner credential is left\n * untouched and ORPHANED (its `_keyring/<id>` file remains, its KEK is still\n * sealed under the non-firm provider), never impersonated. The new owner is a\n * DISTINCT principal under a fresh KEK derived from `newOwnerSecret`. This\n * preserves the inalienability floor: the act of claiming ownership is itself\n * auditable and produces a different principal, rather than silently assuming\n * the latent owner's identity.\n *\n * ## Freeze decision: snapshot-only, not freeze-and-delete\n *\n * `freezeAndDeleteClosure` (withdraw-accessible.ts) writes a hash-pinned\n * snapshot and THEN delete-closures the live records — correct for a\n * destructive withdrawal, WRONG for liberation. Liberation transfers\n * operational continuity; it must leave the live data intact for the new\n * owner. We therefore call the snapshot-only core `freezeSnapshotOnly`\n * (factored out of that module; the freeze-AND-delete withdrawal path is\n * unchanged) to pin the evidence snapshot while preserving the records.\n *\n * @module\n */\n\nimport type { Vault } from '../../kernel/vault.js'\nimport type { FactorProofBundle, KeyringFile } from '../../kernel/types.js'\nimport { PermissionDeniedError } from '../../kernel/errors.js'\nimport { wrapKey } from '../../kernel/enclave/index.js'\nimport { createOwnerKeyring, requireRosterKey } from '../team/keyring.js'\nimport { mintRosterTag, assertRosterTagValid } from '../team/roster-tag.js'\nimport { nextRosterEpoch } from '../team/roster-epoch.js'\nimport type { FrozenSnapshotRef } from '../../with-audit/portability/withdraw-accessible.js'\nimport { freezeSnapshotOnly } from '../../with-audit/portability/withdraw-accessible.js'\nimport { loadDeedMarker, saveDeedMarker } from '../team/deed.js'\n\nexport interface LiberateOptions {\n /** The id of the new owner principal the custodian mints by claiming ownership. */\n readonly newOwnerId: string\n /** The secret that derives the new owner's KEK (the DEKs are re-wrapped under it). */\n readonly newOwnerSecret: string\n /** Legal/contractual basis recorded in the audit (e.g. 'contractual-handover'). */\n readonly legalBasis: string\n readonly factors?: FactorProofBundle\n}\n\nexport interface LiberateResult {\n /** The hash-pinned pre-liberation evidence snapshot. */\n readonly snapshot: FrozenSnapshotRef\n}\n\n/**\n * Audited claim of ownership over a sealed-owner vault by its custodian. See\n * the module doc for the full ceremony + security rationale.\n */\nexport async function liberateVault(\n vault: Vault,\n opts: LiberateOptions,\n): Promise<LiberateResult> {\n // 1. gate — fail-closed `liberate-vault`.\n await vault.noydb.checkGate(vault.name, 'liberate-vault', opts.factors)\n\n // 2. caller must be the custodian (the de-facto authority holding the DEKs).\n const { name: vaultName, adapter, keyring } = vault._introspectState()\n if (keyring.role !== 'custodian') {\n throw new PermissionDeniedError(\n 'liberation is claimed only by the custodian (the de-facto authority holding the DEKs)',\n )\n }\n\n // Refuse to clobber an existing principal: the new owner must be a FRESH id.\n // (Checked before any side effect so a colliding id never leaves a half-run\n // ceremony — no orphan snapshot, no partial keyring overwrite.)\n const existing = await adapter.get(vaultName, '_keyring', opts.newOwnerId)\n if (existing) {\n throw new PermissionDeniedError(\n `liberateVault: newOwnerId \"${opts.newOwnerId}\" already exists as a principal; choose a fresh id (liberation mints a distinct owner, it never overwrites an existing keyring)`,\n )\n }\n\n // 3. Pre-liberation EVIDENCE snapshot of every operational collection —\n // snapshot-only (live data preserved for the new owner; liberation\n // transfers operational continuity, it does not erase).\n const collections = await listOperationalCollections(vault)\n const snapshot = await freezeSnapshotOnly(vault, collections, { actorUserId: keyring.userId })\n\n // 4. Mint a NEW owner keyring, re-wrapping the incumbent DEKs under the new\n // owner's fresh KEK. The old sealed owner is NOT unsealed — a DISTINCT\n // principal is minted and the original owner credential is left orphaned\n // (inalienability floor). Mirrors adopt-partition.ts's DEK re-wrap.\n const newOwner = await createOwnerKeyring(adapter, vaultName, { userId: opts.newOwnerId, secret: opts.newOwnerSecret })\n if (!newOwner.kek) {\n throw new PermissionDeniedError(\n `new owner keyring for \"${opts.newOwnerId}\" has no KEK to re-wrap the incumbent DEKs under`,\n )\n }\n const env = await adapter.get(vaultName, '_keyring', opts.newOwnerId)\n if (!env) {\n throw new PermissionDeniedError(`new owner keyring for \"${opts.newOwnerId}\" did not persist`)\n }\n const keyringFile = JSON.parse(env._data) as KeyringFile\n // #1096 — this is a read-BACK of the file `createOwnerKeyring` just wrote, and\n // it is about to be edited and restamped, so the store gets a window to alter\n // it in between. Verified against the NEW owner's own roster key, not the\n // incumbent's: at this instant the file is still stamped under the fresh key\n // minted above (the swap to the incumbent key happens below).\n const mintedRosterKey = requireRosterKey(newOwner, 'liberateVault')\n await assertRosterTagValid(keyringFile, mintedRosterKey, opts.newOwnerId)\n const mergedDeks: Record<string, string> = { ...keyringFile.deks }\n for (const [collection, dek] of keyring.deks) {\n mergedDeks[collection] = await wrapKey(dek, newOwner.kek)\n }\n // #1096 — liberation joins a new owner to an EXISTING vault, so the vault's\n // roster key must stay the incumbent one. `createOwnerKeyring` above minted a\n // fresh roster key (correct for a new vault, wrong here), and the merge loop\n // has just overwritten `_roster` with the incumbent's — so the tag it stamped\n // no longer matches the key in the file. Restamp under the key that actually\n // ends up persisted, or the new owner cannot open the vault they just claimed.\n //\n // Keeping the incumbent key is the substantive half: a fresh one would leave\n // the new owner unable to verify any co-member's roster, and every co-member\n // unable to verify theirs.\n const rosterKey = requireRosterKey(keyring, 'liberateVault')\n const merged: KeyringFile = { ...keyringFile, deks: mergedDeks }\n // #1097 — stamped BEFORE the tag is minted, so it lands inside the\n // authenticated canonical and a store can neither edit nor strip it.\n const withEpoch = { ...merged, roster_epoch: nextRosterEpoch(keyringFile.roster_epoch) }\n const mergedFile: KeyringFile = { ...withEpoch, roster_tag: await mintRosterTag(withEpoch, rosterKey) }\n await adapter.put(vaultName, '_keyring', opts.newOwnerId, { ...env, _data: JSON.stringify(mergedFile) })\n\n // 5. Lifecycle ledger audit (no-op if the history strategy is absent).\n await vault._getLedgerOrNull()?.append({\n op: 'lifecycle', collection: '', id: '', version: 0, actor: opts.newOwnerId, payloadHash: '',\n reason: `liberation-claimed:${opts.newOwnerId}:${opts.legalBasis}`,\n })\n\n // 6. Stamp the Deed marker with `liberatedAt` (if a marker exists).\n const marker = await loadDeedMarker(adapter, vaultName)\n if (marker) {\n await saveDeedMarker(adapter, vaultName, { ...marker, liberatedAt: new Date().toISOString() })\n }\n\n return { snapshot }\n}\n\n/**\n * Enumerate the vault's operational (user-facing) collections — those carried\n * by the caller's keyring DEK map, minus the reserved internal collections\n * (`_*`). These are the collections frozen into the evidence snapshot.\n */\nasync function listOperationalCollections(vault: Vault): Promise<readonly string[]> {\n const { keyring } = vault._introspectState()\n return [...keyring.deks.keys()].filter((c) => !c.startsWith('_'))\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-5D2ALSM5.js";
|
|
4
4
|
|
|
5
5
|
// src/with-formula/derivations/stale.ts
|
|
6
|
-
var loadDerivationExecutor = lazy(() => import("./executor-
|
|
6
|
+
var loadDerivationExecutor = lazy(() => import("./executor-TOLPBHOC.js"));
|
|
7
7
|
var _staleByRegistry = /* @__PURE__ */ new WeakMap();
|
|
8
8
|
var keyFor = (source, sourceId) => `${source}/${sourceId}`;
|
|
9
9
|
async function markStale(registry, strategy, sourceId) {
|
|
@@ -78,4 +78,4 @@ export {
|
|
|
78
78
|
markStale,
|
|
79
79
|
resolveStaleOnRead
|
|
80
80
|
};
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-YPMW26SL.js.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildRecordAad,
|
|
3
3
|
openEnvelopeJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CIGAQBJR.js";
|
|
5
5
|
import {
|
|
6
6
|
buildRecordEnvelope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4RUFYGWG.js";
|
|
8
8
|
import {
|
|
9
9
|
encrypt
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SL3JAAKN.js";
|
|
11
11
|
import {
|
|
12
12
|
ConflictError,
|
|
13
13
|
USER_ENVELOPE_COLLECTION,
|
|
14
14
|
USER_ENVELOPE_MAX_BYTES,
|
|
15
15
|
UserEnvelopeOversizedError
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
17
17
|
|
|
18
18
|
// src/with-party/directory/storage.ts
|
|
19
19
|
var META_COLLECTION = "_meta";
|
|
@@ -142,4 +142,4 @@ export {
|
|
|
142
142
|
deleteUserEnvelope,
|
|
143
143
|
listUserEnvelopeIds
|
|
144
144
|
};
|
|
145
|
-
//# sourceMappingURL=chunk-
|
|
145
|
+
//# sourceMappingURL=chunk-YQWBEJCS.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
decrypt,
|
|
3
3
|
deriveSealedFieldKey,
|
|
4
4
|
deriveSealedFieldKeyFromCek
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SL3JAAKN.js";
|
|
6
6
|
|
|
7
7
|
// src/kernel/enclave/record-keys/sealed-slot.ts
|
|
8
8
|
function parseSealedSlot(blob) {
|
|
@@ -26,4 +26,4 @@ export {
|
|
|
26
26
|
parseSealedSlot,
|
|
27
27
|
dualReadSealedSlot
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-YSRUYAVU.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
IllegalTransitionError,
|
|
3
3
|
RecordLockedError,
|
|
4
4
|
ValidationError
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
6
6
|
|
|
7
7
|
// src/with-audit/guards/with-guard.ts
|
|
8
8
|
function withGuard(strategy) {
|
|
@@ -124,4 +124,4 @@ export {
|
|
|
124
124
|
immutableGuard,
|
|
125
125
|
transitionGuard
|
|
126
126
|
};
|
|
127
|
-
//# sourceMappingURL=chunk-
|
|
127
|
+
//# sourceMappingURL=chunk-YYP7WSEB.js.map
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assertTierAccess
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UGTBXF5U.js";
|
|
4
4
|
import {
|
|
5
5
|
dekKey,
|
|
6
6
|
liveRecordIsElevated,
|
|
7
7
|
liveRecordTier
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JMGDHKQF.js";
|
|
9
9
|
import {
|
|
10
10
|
buildRecordAad,
|
|
11
11
|
openEnvelopeJson,
|
|
12
12
|
writeEnvelopeBody
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-CIGAQBJR.js";
|
|
14
14
|
import {
|
|
15
15
|
buildRecordEnvelope,
|
|
16
16
|
buildSealedRecordEnvelope
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-4RUFYGWG.js";
|
|
18
18
|
import {
|
|
19
19
|
base64ToBuffer,
|
|
20
20
|
bufferToBase64,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
sha256Hex,
|
|
28
28
|
unwrapCek,
|
|
29
29
|
wrapCek
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-SL3JAAKN.js";
|
|
31
31
|
import {
|
|
32
32
|
BLOB_ADDRESS_KEY_ID,
|
|
33
33
|
BlobIntentPendingError,
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
UnsupportedTierCompositionError,
|
|
40
40
|
ValidationError,
|
|
41
41
|
isConflictError
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
43
43
|
|
|
44
44
|
// src/with-shape/blobs/blob-pinning.ts
|
|
45
45
|
function memoryBlobPinStore() {
|
|
@@ -3137,4 +3137,4 @@ export {
|
|
|
3137
3137
|
DEFAULT_CHUNK_SIZE,
|
|
3138
3138
|
BlobSet
|
|
3139
3139
|
};
|
|
3140
|
-
//# sourceMappingURL=chunk-
|
|
3140
|
+
//# sourceMappingURL=chunk-ZG4XLOKB.js.map
|
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
} from "./chunk-NSITFOCJ.js";
|
|
10
10
|
import {
|
|
11
11
|
applyI18nLocale
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TRGTKX5E.js";
|
|
13
13
|
import {
|
|
14
14
|
viaBinder
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-UXVWEX5L.js";
|
|
16
16
|
import {
|
|
17
17
|
GroupCardinalityError
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
19
19
|
|
|
20
20
|
// src/with-lookup/reduce/reduction.ts
|
|
21
21
|
function reduceRecords(records, spec) {
|
|
@@ -361,4 +361,4 @@ export {
|
|
|
361
361
|
groupAndReduce,
|
|
362
362
|
GroupedReduction
|
|
363
363
|
};
|
|
364
|
-
//# sourceMappingURL=chunk-
|
|
364
|
+
//# sourceMappingURL=chunk-ZN4FD4PE.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
DanglingReferenceError,
|
|
6
6
|
JoinTooLargeError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7O3Y4PPD.js";
|
|
8
8
|
|
|
9
9
|
// src/kernel/query/join.ts
|
|
10
10
|
var DEFAULT_JOIN_MAX_ROWS = 5e4;
|
|
@@ -186,4 +186,4 @@ export {
|
|
|
186
186
|
applyJoins,
|
|
187
187
|
resetJoinWarnings
|
|
188
188
|
};
|
|
189
|
-
//# sourceMappingURL=chunk-
|
|
189
|
+
//# sourceMappingURL=chunk-ZORTV6NH.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
writePod
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PKJ43CMD.js";
|
|
4
4
|
|
|
5
5
|
// src/with-audit/portability/export-accessible.ts
|
|
6
6
|
function resolveAccessibleCollections(keyring, scope, writableOnly = false) {
|
|
@@ -42,4 +42,4 @@ export {
|
|
|
42
42
|
buildAccessibleBundle,
|
|
43
43
|
exportAccessibleData
|
|
44
44
|
};
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
45
|
+
//# sourceMappingURL=chunk-ZR2YMODS.js.map
|
package/dist/classified/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
classified,
|
|
3
3
|
luhnCheck,
|
|
4
4
|
withClassified
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-5FUULQ6F.js";
|
|
6
6
|
import {
|
|
7
7
|
ClassifiedNeverStoredError,
|
|
8
8
|
ClassifiedValidationError,
|
|
@@ -11,15 +11,15 @@ import {
|
|
|
11
11
|
isClassifiedFieldSpec,
|
|
12
12
|
isClassifiedGroup,
|
|
13
13
|
resolveClassifiedFields
|
|
14
|
-
} from "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
14
|
+
} from "../chunk-KCUIMITG.js";
|
|
15
|
+
import "../chunk-UXVWEX5L.js";
|
|
16
|
+
import "../chunk-N4CHCXDL.js";
|
|
17
17
|
import {
|
|
18
18
|
ClassifiedConfigError,
|
|
19
19
|
ClassifiedRevealError,
|
|
20
20
|
ClassifiedRotationError,
|
|
21
21
|
ClassifiedVerifyError
|
|
22
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-7O3Y4PPD.js";
|
|
23
23
|
import "../chunk-PZ5AY32C.js";
|
|
24
24
|
export {
|
|
25
25
|
ClassifiedConfigError,
|
|
@@ -13,11 +13,11 @@ function markerForFields(vdigFields) {
|
|
|
13
13
|
async function persistClassifiedMarkerForFields(store, vault, collectionName, vdigFields, dek) {
|
|
14
14
|
const marker = markerForFields(vdigFields);
|
|
15
15
|
if (marker === null) return;
|
|
16
|
-
const { persistClassifiedMarker } = await import("./register-
|
|
16
|
+
const { persistClassifiedMarker } = await import("./register-AEOOGKNO.js");
|
|
17
17
|
await persistClassifiedMarker({ store, vault, collectionName, dek, marker });
|
|
18
18
|
}
|
|
19
19
|
async function readClassifiedMarkerDigestOnly(store, vault, collectionName, dek) {
|
|
20
|
-
const { loadPersistedSchema } = await import("./storage-
|
|
20
|
+
const { loadPersistedSchema } = await import("./storage-WP4M7IFO.js");
|
|
21
21
|
const persisted = await loadPersistedSchema(store, vault, collectionName, dek);
|
|
22
22
|
return persisted?.classified?.digestOnly ?? [];
|
|
23
23
|
}
|
|
@@ -25,4 +25,4 @@ export {
|
|
|
25
25
|
persistClassifiedMarkerForFields,
|
|
26
26
|
readClassifiedMarkerDigestOnly
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=classified-marker-
|
|
28
|
+
//# sourceMappingURL=classified-marker-67HBIJMZ.js.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildPersistedIndexCallbacks,
|
|
3
|
+
buildRetrievalDocs,
|
|
4
|
+
embedOnWrite,
|
|
5
|
+
flushIndex,
|
|
6
|
+
hasIndexedBlobFields,
|
|
7
|
+
rebuildEmbeddings,
|
|
8
|
+
retrieve,
|
|
9
|
+
search,
|
|
10
|
+
similarTo,
|
|
11
|
+
syncTierSearch,
|
|
12
|
+
warmIndex
|
|
13
|
+
} from "./chunk-WQF3QABE.js";
|
|
14
|
+
import "./chunk-HN4FNA4X.js";
|
|
15
|
+
import "./chunk-AURFOK3D.js";
|
|
16
|
+
import "./chunk-MVMXZYXT.js";
|
|
17
|
+
import "./chunk-RDZZHYMV.js";
|
|
18
|
+
import "./chunk-TRGTKX5E.js";
|
|
19
|
+
import "./chunk-UXVWEX5L.js";
|
|
20
|
+
import "./chunk-IPFE6MVM.js";
|
|
21
|
+
import "./chunk-JMGDHKQF.js";
|
|
22
|
+
import "./chunk-CIGAQBJR.js";
|
|
23
|
+
import "./chunk-4RUFYGWG.js";
|
|
24
|
+
import "./chunk-BOWNCWZT.js";
|
|
25
|
+
import "./chunk-YSRUYAVU.js";
|
|
26
|
+
import "./chunk-RMF67KCG.js";
|
|
27
|
+
import "./chunk-LP7BEXCT.js";
|
|
28
|
+
import "./chunk-SL3JAAKN.js";
|
|
29
|
+
import "./chunk-N4CHCXDL.js";
|
|
30
|
+
import "./chunk-7O3Y4PPD.js";
|
|
31
|
+
import "./chunk-PZ5AY32C.js";
|
|
32
|
+
export {
|
|
33
|
+
buildPersistedIndexCallbacks,
|
|
34
|
+
buildRetrievalDocs,
|
|
35
|
+
embedOnWrite,
|
|
36
|
+
flushIndex,
|
|
37
|
+
hasIndexedBlobFields,
|
|
38
|
+
rebuildEmbeddings,
|
|
39
|
+
retrieve,
|
|
40
|
+
search,
|
|
41
|
+
similarTo,
|
|
42
|
+
syncTierSearch,
|
|
43
|
+
warmIndex
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=collection-facade-MGGHQ3HU.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ComputedFieldError,
|
|
3
3
|
evalComputedFields
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-LWBCUYZW.js";
|
|
5
|
+
import "./chunk-7O3Y4PPD.js";
|
|
6
6
|
import "./chunk-PZ5AY32C.js";
|
|
7
7
|
export {
|
|
8
8
|
ComputedFieldError,
|
|
9
9
|
evalComputedFields
|
|
10
10
|
};
|
|
11
|
-
//# sourceMappingURL=computed-
|
|
11
|
+
//# sourceMappingURL=computed-LSEZYRJS.js.map
|
package/dist/consent/index.js
CHANGED
|
@@ -2,20 +2,20 @@ import {
|
|
|
2
2
|
CONSENT_AUDIT_COLLECTION,
|
|
3
3
|
loadConsentEntries,
|
|
4
4
|
writeConsentEntry
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-KLPASWYY.js";
|
|
6
6
|
import {
|
|
7
7
|
NO_CONSENT
|
|
8
8
|
} from "../chunk-PEOZ34EM.js";
|
|
9
9
|
import "../chunk-4AOERLTV.js";
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-CIGAQBJR.js";
|
|
11
|
+
import "../chunk-4RUFYGWG.js";
|
|
12
|
+
import "../chunk-BOWNCWZT.js";
|
|
13
|
+
import "../chunk-YSRUYAVU.js";
|
|
14
|
+
import "../chunk-RMF67KCG.js";
|
|
15
15
|
import "../chunk-LP7BEXCT.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-SL3JAAKN.js";
|
|
17
|
+
import "../chunk-N4CHCXDL.js";
|
|
18
|
+
import "../chunk-7O3Y4PPD.js";
|
|
19
19
|
import "../chunk-PZ5AY32C.js";
|
|
20
20
|
|
|
21
21
|
// src/with-audit/consent/active.ts
|
package/dist/cover/index.js
CHANGED
|
@@ -14,16 +14,16 @@ import {
|
|
|
14
14
|
saveCover,
|
|
15
15
|
validateCoverInput,
|
|
16
16
|
validateCoverSize
|
|
17
|
-
} from "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
17
|
+
} from "../chunk-MLO75SFJ.js";
|
|
18
|
+
import "../chunk-CIGAQBJR.js";
|
|
19
|
+
import "../chunk-4RUFYGWG.js";
|
|
20
|
+
import "../chunk-BOWNCWZT.js";
|
|
21
|
+
import "../chunk-YSRUYAVU.js";
|
|
22
|
+
import "../chunk-RMF67KCG.js";
|
|
23
23
|
import "../chunk-LP7BEXCT.js";
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-SL3JAAKN.js";
|
|
25
|
+
import "../chunk-N4CHCXDL.js";
|
|
26
|
+
import "../chunk-7O3Y4PPD.js";
|
|
27
27
|
import "../chunk-PZ5AY32C.js";
|
|
28
28
|
export {
|
|
29
29
|
COVER_FIELDS,
|