@noy-db/hub 0.4.0-pre.1 → 0.4.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/README.md +3 -4
- package/dist/api-ZDKTWNBB.js +20 -0
- package/dist/attestation/index.js +18 -18
- package/dist/{backup-LU2DTZTI.js → backup-2UX7PRM5.js} +13 -13
- package/dist/blobs/index.js +30 -15
- package/dist/blobs/index.js.map +1 -1
- package/dist/broker/index.js +12 -12
- package/dist/broker/index.js.map +1 -1
- package/dist/cargo/index.js +53 -43
- package/dist/{chunk-YTGDPCPW.js → chunk-2J6UEN2V.js} +42 -18
- package/dist/chunk-2J6UEN2V.js.map +1 -0
- package/dist/{chunk-IY23KFNZ.js → chunk-35NMVJ7I.js} +3 -3
- package/dist/{chunk-S3BFKGET.js → chunk-3HUYRN24.js} +4 -4
- package/dist/chunk-3HUYRN24.js.map +1 -0
- package/dist/{walk-XS3PKM6I.js → chunk-3V3XR4S4.js} +4 -13
- package/dist/{walk-XS3PKM6I.js.map → chunk-3V3XR4S4.js.map} +1 -1
- package/dist/{chunk-RTEK4C4I.js → chunk-4JQK3L4V.js} +2 -2
- package/dist/{chunk-3ELCWU56.js → chunk-4ZKNC6A6.js} +2 -2
- package/dist/{chunk-VQNJ7UZL.js → chunk-55LKVALY.js} +106 -10
- package/dist/chunk-55LKVALY.js.map +1 -0
- package/dist/{chunk-VAIS3SOM.js → chunk-55LX6FSX.js} +2 -2
- package/dist/chunk-5D2ALSM5.js +19 -0
- package/dist/chunk-5D2ALSM5.js.map +1 -0
- package/dist/{chunk-6HPG2YNX.js → chunk-5DRROK5W.js} +2 -2
- package/dist/{chunk-S6Q37VGE.js → chunk-5GQEU4DN.js} +2 -2
- package/dist/chunk-5JOFWL4G.js +25 -0
- package/dist/chunk-5JOFWL4G.js.map +1 -0
- package/dist/{chunk-TOPYT5U5.js → chunk-63FE525P.js} +6 -6
- package/dist/chunk-6LJY7X5A.js +18 -0
- package/dist/chunk-6LJY7X5A.js.map +1 -0
- package/dist/{chunk-JVBO4SZL.js → chunk-6UBZ6I5Z.js} +2 -2
- package/dist/{chunk-BOKIKJJB.js → chunk-6ZNSB3H6.js} +5 -17
- package/dist/chunk-6ZNSB3H6.js.map +1 -0
- package/dist/{chunk-BMQWTQZ4.js → chunk-7YVBQJ7K.js} +13 -355
- package/dist/chunk-7YVBQJ7K.js.map +1 -0
- package/dist/{chunk-UFEVO57O.js → chunk-ABS7FMMD.js} +6 -6
- package/dist/chunk-AFHQATY4.js +47 -0
- package/dist/chunk-AFHQATY4.js.map +1 -0
- package/dist/{chunk-HOONYZY2.js → chunk-AKKRXT23.js} +7 -7
- package/dist/chunk-AKKRXT23.js.map +1 -0
- package/dist/{chunk-DDHM2TLX.js → chunk-AT2JJEKJ.js} +4 -4
- package/dist/chunk-AT2JJEKJ.js.map +1 -0
- package/dist/{chunk-M75ZZHSR.js → chunk-BLBAQRBM.js} +2 -2
- package/dist/{chunk-3SV2EPMN.js → chunk-BLCWSJLN.js} +88 -81
- package/dist/chunk-BLCWSJLN.js.map +1 -0
- package/dist/chunk-CADUYBQD.js +151 -0
- package/dist/chunk-CADUYBQD.js.map +1 -0
- package/dist/{chunk-G6EQYAL6.js → chunk-CI32CAFS.js} +5 -5
- package/dist/{chunk-FH52K7EG.js → chunk-CUZLNGD5.js} +2 -6
- package/dist/{chunk-FH52K7EG.js.map → chunk-CUZLNGD5.js.map} +1 -1
- package/dist/{chunk-2P7EGNKF.js → chunk-CXQW2NWO.js} +145 -3
- package/dist/chunk-CXQW2NWO.js.map +1 -0
- package/dist/{chunk-6B4DYGWO.js → chunk-DABACXEF.js} +3 -3
- package/dist/{chunk-F6T6L2UK.js → chunk-DMH3VZU5.js} +4 -4
- package/dist/chunk-DSDXAKIP.js +50 -0
- package/dist/chunk-DSDXAKIP.js.map +1 -0
- package/dist/{chunk-MQ6WOPSY.js → chunk-DZ2JXHWK.js} +5 -5
- package/dist/chunk-DZFQVICS.js +23 -0
- package/dist/chunk-DZFQVICS.js.map +1 -0
- package/dist/chunk-E23UGFVC.js +63 -0
- package/dist/chunk-E23UGFVC.js.map +1 -0
- package/dist/{chunk-UBNCR3YK.js → chunk-EE7UHLKH.js} +4 -4
- package/dist/chunk-EIPVYUEP.js +654 -0
- package/dist/chunk-EIPVYUEP.js.map +1 -0
- package/dist/{chunk-EGCRBCNA.js → chunk-EKRSCRNM.js} +3 -3
- package/dist/{chunk-YMUGBZN2.js → chunk-FQ5CHJR7.js} +1 -1
- package/dist/chunk-FQ5CHJR7.js.map +1 -0
- package/dist/{chunk-LB6OH6K2.js → chunk-FQZ6XTQ7.js} +17 -20
- package/dist/chunk-FQZ6XTQ7.js.map +1 -0
- package/dist/{chunk-IRQY7IR5.js → chunk-FRMPM7WG.js} +4 -4
- package/dist/{chunk-DVUZMT2W.js → chunk-G2JUIDFA.js} +9 -9
- package/dist/{chunk-DVUZMT2W.js.map → chunk-G2JUIDFA.js.map} +1 -1
- package/dist/{chunk-RND5ZPNP.js → chunk-G6WWZNJP.js} +13 -13
- package/dist/chunk-G6WWZNJP.js.map +1 -0
- package/dist/chunk-GJW4HX2O.js +1 -0
- package/dist/{chunk-T6GU5PPZ.js → chunk-GU3IP74F.js} +6 -6
- package/dist/{chunk-5OI6BR4H.js → chunk-GWWOGNBK.js} +308 -18
- package/dist/chunk-GWWOGNBK.js.map +1 -0
- package/dist/{chunk-UNCOC7QH.js → chunk-H2GPHUZD.js} +12 -13
- package/dist/chunk-H2GPHUZD.js.map +1 -0
- package/dist/{chunk-7CI6CP7Z.js → chunk-HMU5P6RL.js} +5 -5
- package/dist/chunk-HMU5P6RL.js.map +1 -0
- package/dist/{chunk-YJV2UZ7H.js → chunk-I5GEJX3R.js} +5 -5
- package/dist/chunk-I5GEJX3R.js.map +1 -0
- package/dist/{chunk-GWKAVKHI.js → chunk-IG6KUWBX.js} +2 -2
- package/dist/chunk-IG6KUWBX.js.map +1 -0
- package/dist/{chunk-MTQPRQHB.js → chunk-IPUG56GJ.js} +15 -5
- package/dist/{chunk-MTQPRQHB.js.map → chunk-IPUG56GJ.js.map} +1 -1
- package/dist/{chunk-SMIRGMS7.js → chunk-IXNCZTWA.js} +2 -2
- package/dist/{chunk-RM2XV574.js → chunk-IXTSNGYY.js} +3 -3
- package/dist/{chunk-KUPKLSX5.js → chunk-IYZISPGD.js} +7 -5
- package/dist/chunk-IYZISPGD.js.map +1 -0
- package/dist/{chunk-SMGEYW6G.js → chunk-JDOMW53O.js} +26 -16
- package/dist/chunk-JDOMW53O.js.map +1 -0
- package/dist/{chunk-PK6QCH2C.js → chunk-JJZGIE4U.js} +6 -5
- package/dist/{chunk-DRWBEDYO.js → chunk-JYJFGD2H.js} +2 -2
- package/dist/{chunk-TAGR72IR.js → chunk-KRCBZYTZ.js} +26 -177
- package/dist/chunk-KRCBZYTZ.js.map +1 -0
- package/dist/{chunk-HPUWOVR7.js → chunk-L2DGWBCT.js} +14 -14
- package/dist/chunk-L2DGWBCT.js.map +1 -0
- package/dist/{chunk-VEALDPHW.js → chunk-L3YYLT4E.js} +15 -2
- package/dist/chunk-L3YYLT4E.js.map +1 -0
- package/dist/{chunk-A7JJLVGH.js → chunk-LNPUSMZL.js} +29 -31
- package/dist/chunk-LNPUSMZL.js.map +1 -0
- package/dist/{chunk-KUIB4B5Q.js → chunk-LNZKOUJR.js} +2 -2
- package/dist/{chunk-IM3QVF53.js → chunk-MBKVNOJS.js} +6 -6
- package/dist/chunk-MCHBCNCE.js +367 -0
- package/dist/chunk-MCHBCNCE.js.map +1 -0
- package/dist/{chunk-VCBHAE4R.js → chunk-MHMLXJ3I.js} +2 -2
- package/dist/chunk-MHMLXJ3I.js.map +1 -0
- package/dist/{chunk-WNGGJWF7.js → chunk-MSMJJB4J.js} +2 -2
- package/dist/chunk-MSMJJB4J.js.map +1 -0
- package/dist/{chunk-T36RFODW.js → chunk-MXUT7FTE.js} +2 -2
- package/dist/chunk-MXUT7FTE.js.map +1 -0
- package/dist/{chunk-BGK233EA.js → chunk-N4BBNYIB.js} +11 -9
- package/dist/chunk-N4BBNYIB.js.map +1 -0
- package/dist/{chunk-3PF6CRDT.js → chunk-NFIBXF4V.js} +1082 -1583
- package/dist/chunk-NFIBXF4V.js.map +1 -0
- package/dist/{chunk-LOF2W3JU.js → chunk-NFNJLRY7.js} +368 -52
- package/dist/chunk-NFNJLRY7.js.map +1 -0
- package/dist/{chunk-N6WF5PKC.js → chunk-NFZGZ4AK.js} +2 -2
- package/dist/{chunk-JRBNCUNT.js → chunk-NGSJZFGL.js} +21 -4
- package/dist/chunk-NGSJZFGL.js.map +1 -0
- package/dist/chunk-NJ4DYYO5.js +81 -0
- package/dist/chunk-NJ4DYYO5.js.map +1 -0
- package/dist/{chunk-2IALOXZS.js → chunk-NM5UYF6Q.js} +2 -2
- package/dist/chunk-NM5UYF6Q.js.map +1 -0
- package/dist/{chunk-JBBSYJHP.js → chunk-NYEFP7DY.js} +4 -4
- package/dist/chunk-NYEFP7DY.js.map +1 -0
- package/dist/{chunk-CCOP5XDW.js → chunk-NZ24MX4J.js} +8 -46
- package/dist/chunk-NZ24MX4J.js.map +1 -0
- package/dist/{chunk-KWVJAOIN.js → chunk-OLEPKFTW.js} +4 -4
- package/dist/chunk-OLEPKFTW.js.map +1 -0
- package/dist/{chunk-OF75ACKS.js → chunk-PEATRIYJ.js} +9 -9
- package/dist/chunk-PEOZ34EM.js +13 -0
- package/dist/chunk-PEOZ34EM.js.map +1 -0
- package/dist/{chunk-UC2ETWF3.js → chunk-PTHKZWEH.js} +2 -14
- package/dist/{chunk-UC2ETWF3.js.map → chunk-PTHKZWEH.js.map} +1 -1
- package/dist/chunk-PVEWA2DU.js +23 -0
- package/dist/chunk-PVEWA2DU.js.map +1 -0
- package/dist/{chunk-LSASLXGC.js → chunk-QBAC3GXA.js} +1 -1
- package/dist/chunk-QBAC3GXA.js.map +1 -0
- package/dist/{chunk-RDXW3OBQ.js → chunk-QD46HPZG.js} +2 -2
- package/dist/chunk-QD46HPZG.js.map +1 -0
- package/dist/{chunk-N55W7KUL.js → chunk-QDIH2744.js} +2 -2
- package/dist/{chunk-6HY2X62D.js → chunk-QJNCB5SK.js} +2 -2
- package/dist/{chunk-4BRCIYFG.js → chunk-QX76XVQH.js} +6 -6
- package/dist/chunk-QX76XVQH.js.map +1 -0
- package/dist/{chunk-W2OG6JOL.js → chunk-QZWTRENR.js} +24 -7
- package/dist/chunk-QZWTRENR.js.map +1 -0
- package/dist/{chunk-6NQMXTYC.js → chunk-RO5NM6UI.js} +2 -2
- package/dist/chunk-RO5NM6UI.js.map +1 -0
- package/dist/chunk-SGDPRCC4.js +1075 -0
- package/dist/chunk-SGDPRCC4.js.map +1 -0
- package/dist/{chunk-2PCAVW2I.js → chunk-SHEEBRZ4.js} +2 -2
- package/dist/chunk-SMY5X46Z.js +14 -0
- package/dist/chunk-SMY5X46Z.js.map +1 -0
- package/dist/{chunk-ISMV2QVG.js → chunk-TG634KCO.js} +11 -2
- package/dist/chunk-TG634KCO.js.map +1 -0
- package/dist/{chunk-J6Q7UVQE.js → chunk-TUXQSFHZ.js} +4 -16
- package/dist/{chunk-J6Q7UVQE.js.map → chunk-TUXQSFHZ.js.map} +1 -1
- package/dist/{chunk-GULTLPFB.js → chunk-UADPR6F4.js} +3 -3
- package/dist/{chunk-GULTLPFB.js.map → chunk-UADPR6F4.js.map} +1 -1
- package/dist/{chunk-ZEQWCBCM.js → chunk-UDHBXYGG.js} +27 -5
- package/dist/chunk-UDHBXYGG.js.map +1 -0
- package/dist/{chunk-RA5VTXXG.js → chunk-V6UQZA2H.js} +2 -2
- package/dist/chunk-VG2ZSFYD.js +32 -0
- package/dist/chunk-VG2ZSFYD.js.map +1 -0
- package/dist/chunk-VKQCVU2Z.js +21 -0
- package/dist/chunk-VKQCVU2Z.js.map +1 -0
- package/dist/{chunk-QDPZWTN2.js → chunk-W3G5REIU.js} +2 -2
- package/dist/{chunk-WEYZTLXN.js → chunk-W3L64Y3J.js} +2 -2
- package/dist/{chunk-ONTBCHCP.js → chunk-W66AM5IB.js} +2 -2
- package/dist/chunk-W66AM5IB.js.map +1 -0
- package/dist/{chunk-A5BDDEXK.js → chunk-WBKZUO5V.js} +26 -43
- package/dist/chunk-WBKZUO5V.js.map +1 -0
- package/dist/{chunk-CBSY2N76.js → chunk-WLXMTYGO.js} +2 -2
- package/dist/{chunk-3U3FBR7O.js → chunk-X3F5YJG2.js} +2 -2
- package/dist/{chunk-GQNGCEP5.js → chunk-X45JYIAY.js} +3 -3
- package/dist/chunk-X45JYIAY.js.map +1 -0
- package/dist/{chunk-6XE5TMPR.js → chunk-X4MVWPHV.js} +3 -3
- package/dist/chunk-X4MVWPHV.js.map +1 -0
- package/dist/chunk-XZHEOSQ2.js +16 -0
- package/dist/chunk-XZHEOSQ2.js.map +1 -0
- package/dist/chunk-Y2NBBT6K.js +18 -0
- package/dist/chunk-Y2NBBT6K.js.map +1 -0
- package/dist/{chunk-DDATL6PU.js → chunk-Y2NJBNX3.js} +8 -8
- package/dist/{chunk-DDATL6PU.js.map → chunk-Y2NJBNX3.js.map} +1 -1
- package/dist/chunk-YMUFFJCO.js +23 -0
- package/dist/chunk-YMUFFJCO.js.map +1 -0
- package/dist/{chunk-O7WJ47EF.js → chunk-YWWQM7KP.js} +5 -14
- package/dist/chunk-YWWQM7KP.js.map +1 -0
- package/dist/{chunk-7O3AYBC7.js → chunk-YZJSJOUI.js} +235 -65
- package/dist/chunk-YZJSJOUI.js.map +1 -0
- package/dist/{chunk-5WZXVULX.js → chunk-ZTLOXFPB.js} +2 -2
- package/dist/chunk-ZTLOXFPB.js.map +1 -0
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-WQVIJAW2.js → classified-marker-7PKJBFCG.js} +3 -3
- package/dist/collection-facade-6I5K5IOD.js +45 -0
- package/dist/{computed-DSMPXG2Y.js → computed-AB45PS4V.js} +3 -3
- package/dist/consent/index.js +13 -9
- package/dist/consent/index.js.map +1 -1
- package/dist/cover/index.js +37 -0
- package/dist/crdt/index.js +4 -0
- package/dist/crdt/index.js.map +1 -1
- package/dist/custody/index.js +26 -0
- package/dist/{dead-filter-2A7IAJ3D.js → dead-filter-FL3WIUZS.js} +2 -2
- package/dist/{chunk-GYYCX5K6.js → delegation-QXZ4MPPH.js} +12 -6
- package/dist/{chunk-GYYCX5K6.js.map → delegation-QXZ4MPPH.js.map} +1 -1
- package/dist/derivations/index.js +12 -12
- package/dist/derive-VGS7FKE3.js +22 -0
- package/dist/directory/index.js +46 -0
- package/dist/dispatch-EGGC7UD7.js +72 -0
- package/dist/dispatch-EGGC7UD7.js.map +1 -0
- package/dist/dispatch-GDSTUTVP.js +194 -0
- package/dist/dispatch-GDSTUTVP.js.map +1 -0
- package/dist/{enclave-7MW6ZGXW.js → enclave-SPEEDYZ4.js} +11 -11
- package/dist/executor-IEBLTBCW.js +9 -0
- package/dist/executor-OTF556PL.js +28 -0
- package/dist/executor-RM7XWQDU.js +9 -0
- package/dist/export-accessible-P42BQ4PB.js +23 -0
- package/dist/extract-partition-TCYXRWBN.js +38 -0
- package/dist/{fanout-sidecar-WDYQ77VB.js → fanout-sidecar-SSMRSC2L.js} +9 -9
- package/dist/find-OZMTRIK3.js +11 -0
- package/dist/forget/index.js +11 -11
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +6 -6
- package/dist/history/index.js +16 -12
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +16 -14
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +42 -42
- package/dist/index.js +330 -2106
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +4 -2
- package/dist/indexing/index.js.map +1 -1
- package/dist/introspection/index.js +28 -0
- package/dist/issue-FCKN5O6C.js +19 -0
- package/dist/kernel/best-effort-revert.d.ts +9 -1
- package/dist/kernel/collection-config.d.ts +12 -70
- package/dist/kernel/collection.d.ts +11 -23
- package/dist/kernel/enclave/crypto.d.ts +8 -8
- package/dist/kernel/enclave/index.d.ts +3 -3
- package/dist/kernel/errors.d.ts +41 -22
- package/dist/kernel/lazy.d.ts +30 -0
- package/dist/kernel/noydb.d.ts +81 -124
- package/dist/kernel/query/builder.d.ts +10 -10
- package/dist/kernel/query/index.d.ts +0 -6
- package/dist/kernel/query/scan-builder.d.ts +4 -4
- package/dist/kernel/sync-policy.d.ts +76 -4
- package/dist/kernel/types.d.ts +146 -86
- package/dist/kernel/validation.d.ts +33 -33
- package/dist/kernel/vault.d.ts +41 -229
- package/dist/kernel/via/dispatch.d.ts +7 -0
- package/dist/{ledger-33BC4TR7.js → ledger-6XBEVWYP.js} +11 -11
- package/dist/liberate-CYUOS4NC.js +24 -0
- package/dist/{link-set-QK22TDEX.js → link-set-NK6L2A5S.js} +11 -11
- package/dist/materialized-views/index.js +22 -19
- package/dist/money/index.js +31 -0
- package/dist/noydb-FZZIMLCI.js +81 -0
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +15 -13
- package/dist/pod/index.js +26 -12
- package/dist/{policy-NAHB2TUT.js → policy/index.js} +6 -6
- package/dist/port/with/archive-strategy.d.ts +31 -0
- package/dist/port/with/blob-strategy.d.ts +15 -5
- package/dist/port/with/collection-options.d.ts +171 -0
- package/dist/port/with/collection-registries.d.ts +62 -0
- package/dist/port/with/strategies.d.ts +134 -0
- package/dist/port/with/team-strategy.d.ts +3 -2
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-JVTMJ6OW.js → post-register-VFIYISUK.js} +6 -6
- package/dist/query/index.js +6 -46
- package/dist/{aggregate → reduce}/index.js +24 -17
- package/dist/reduce/index.js.map +1 -0
- package/dist/register-UKU2J6MN.js +25 -0
- package/dist/registry-2VCWVHZS.js +19 -0
- package/dist/registry-7Y5WF7GS.js +9 -0
- package/dist/{registry-VW6P6A3J.js → registry-BWD2ED52.js} +2 -2
- package/dist/registry-DTWRJLSF.js +18 -0
- package/dist/request-withdrawal-JYDZ5XY2.js +31 -0
- package/dist/{reveal-LGBOM2BO.js → reveal-CL2BCW6A.js} +6 -6
- package/dist/revoke-2TSAD2T4.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/schema-update/index.js +26 -0
- package/dist/sealed-record/index.js +12 -12
- package/dist/search/index.js +36 -0
- package/dist/{seed-PWK45HDF.js → seed-NUVJEL7T.js} +12 -12
- package/dist/seed-NUVJEL7T.js.map +1 -0
- package/dist/sequence/index.js +30 -0
- package/dist/session/index.js +13 -9
- package/dist/session/index.js.map +1 -1
- package/dist/shadow/index.js +6 -2
- package/dist/shadow/index.js.map +1 -1
- package/dist/signer-K7Z2EOMG.js +25 -0
- package/dist/snapshots/index.js +14 -10
- package/dist/snapshots/index.js.map +1 -1
- package/dist/{stale-FJED42DM.js → stale-A4J26OIC.js} +11 -10
- package/dist/storage-YVHZUISN.js +23 -0
- package/dist/store/index.js +22 -0
- package/dist/{store-coordination-provider-APODTV4W.js → store-coordination-provider-EWRZL7XF.js} +3 -3
- package/dist/sync/index.js +15 -12
- package/dist/sync/index.js.map +1 -1
- package/dist/team/index.js +33 -48
- package/dist/tiers/index.js +10 -10
- package/dist/to/index.js +1 -1
- package/dist/{tx → transactions}/index.js +7 -3
- package/dist/transactions/index.js.map +1 -0
- package/dist/util/index.js +1 -1
- package/dist/{verify-26Y5GNMK.js → verify-7XWHJWUN.js} +5 -5
- package/dist/via/blob/active.d.ts +23 -7
- package/dist/via/blob/binding.d.ts +1 -1
- package/dist/via/blob/index.d.ts +7 -1
- package/dist/via/i18n/core.d.ts +1 -1
- package/dist/via/i18n/index.d.ts +2 -0
- package/dist/via/money/money-reducer.d.ts +2 -2
- package/dist/walk-P5D6CF4V.js +21 -0
- package/dist/with-audit/consent/index.d.ts +2 -0
- package/dist/with-audit/forget/active.d.ts +3 -3
- package/dist/with-audit/forget/index.d.ts +6 -5
- package/dist/with-audit/forget/strategy.d.ts +3 -3
- package/dist/with-audit/guards/executor.d.ts +4 -4
- package/dist/with-audit/guards/immutable-guard.d.ts +3 -3
- package/dist/with-audit/guards/index.d.ts +1 -1
- package/dist/with-audit/guards/registry.d.ts +3 -3
- package/dist/with-audit/guards/transition-guard.d.ts +3 -3
- package/dist/with-audit/guards/types.d.ts +10 -10
- package/dist/with-audit/guards/with-guard.d.ts +2 -2
- package/dist/with-audit/periods/index.d.ts +2 -0
- package/dist/with-audit/periods/vault-facade.d.ts +6 -0
- package/dist/with-audit/portability/export-accessible.d.ts +4 -4
- package/dist/with-audit/portability/request-withdrawal.d.ts +3 -3
- package/dist/with-audit/portability/withdraw-accessible.d.ts +2 -2
- package/dist/with-audit/sealed-record/strategy.d.ts +1 -1
- package/dist/with-audit/tiers/index.d.ts +1 -0
- package/dist/with-cargo/adopt-partition.d.ts +7 -7
- package/dist/{legacy/kernel.d.ts → with-cargo/floor.d.ts} +4 -4
- package/dist/with-cargo/index.d.ts +9 -2
- package/dist/with-commit/crdt/index.d.ts +2 -0
- package/dist/with-commit/history/index.d.ts +2 -0
- package/dist/with-commit/history/time-machine.d.ts +2 -2
- package/dist/with-commit/numbering/descriptor.d.ts +16 -6
- package/dist/with-commit/tx/active.d.ts +5 -5
- package/dist/with-commit/tx/index.d.ts +2 -2
- package/dist/with-commit/tx/invariants.d.ts +1 -1
- package/dist/with-commit/tx/strategy.d.ts +3 -3
- package/dist/with-fork/shadow/index.d.ts +2 -0
- package/dist/with-fork/snapshots/active.d.ts +2 -2
- package/dist/with-fork/snapshots/index.d.ts +3 -1
- package/dist/with-fork/snapshots/noydb-facade.d.ts +3 -3
- package/dist/with-fork/snapshots/strategy.d.ts +2 -2
- package/dist/with-formula/derivations/dispatch.d.ts +98 -0
- package/dist/with-formula/derivations/executor.d.ts +2 -2
- package/dist/with-formula/derivations/index.d.ts +4 -1
- package/dist/with-formula/derivations/registry.d.ts +3 -3
- package/dist/with-formula/derivations/stale.d.ts +2 -2
- package/dist/with-formula/derivations/types.d.ts +3 -3
- package/dist/with-formula/derivations/with-derivation.d.ts +2 -2
- package/dist/with-formula/derivations/with-rollup.d.ts +15 -8
- package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +3 -3
- package/dist/with-formula/materialized-views/dispatch.d.ts +75 -0
- package/dist/with-formula/materialized-views/index.d.ts +2 -1
- package/dist/with-formula/materialized-views/registry.d.ts +4 -4
- package/dist/with-formula/materialized-views/types.d.ts +11 -11
- package/dist/with-formula/materialized-views/with-materialized-view.d.ts +2 -2
- package/dist/with-formula/overlay-views/index.d.ts +1 -1
- package/dist/with-formula/overlay-views/registry.d.ts +4 -4
- package/dist/with-formula/overlay-views/types.d.ts +3 -3
- package/dist/with-formula/overlay-views/virtual-collection.d.ts +2 -2
- package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +2 -2
- package/dist/with-lookup/indexing/active.d.ts +5 -5
- package/dist/with-lookup/indexing/index.d.ts +3 -1
- package/dist/with-lookup/indexing/strategy.d.ts +3 -3
- package/dist/with-lookup/{aggregate → reduce}/active.d.ts +8 -8
- package/dist/with-lookup/{aggregate → reduce}/groupby.d.ts +21 -21
- package/dist/with-lookup/reduce/index.d.ts +34 -0
- package/dist/with-lookup/{aggregate → reduce}/reducers.d.ts +11 -12
- package/dist/with-lookup/{aggregate/aggregation.d.ts → reduce/reduction.d.ts} +21 -21
- package/dist/with-lookup/{aggregate → reduce}/strategy.d.ts +15 -15
- package/dist/with-lookup/search/build-docs.d.ts +7 -2
- package/dist/with-lookup/search/index.d.ts +1 -1
- package/dist/with-party/broker/index.d.ts +1 -0
- package/dist/with-party/broker/seed.d.ts +1 -1
- package/dist/with-party/custody/liberate.d.ts +3 -3
- package/dist/with-party/directory/cover/index.d.ts +1 -5
- package/dist/with-party/directory/cover/schema.d.ts +0 -6
- package/dist/with-party/directory/cover/storage.d.ts +0 -8
- package/dist/with-party/directory/cover/types.d.ts +0 -21
- package/dist/with-party/directory/index.d.ts +2 -0
- package/dist/with-party/session/dev-unlock.d.ts +2 -2
- package/dist/with-party/session/index.d.ts +2 -0
- package/dist/with-party/session/session.d.ts +2 -2
- package/dist/with-party/team/deed.d.ts +8 -8
- package/dist/with-party/team/index.d.ts +4 -7
- package/dist/with-party/team/keyring.d.ts +83 -35
- package/dist/with-party/team/{managed-passphrase.d.ts → managed-secret.d.ts} +27 -27
- package/dist/with-party/team/noydb-facade.d.ts +43 -42
- package/dist/with-party/team/peer-recover.d.ts +13 -13
- package/dist/with-party/team/recovery.d.ts +5 -5
- package/dist/with-party/team/rotate-recover.d.ts +30 -30
- package/dist/with-pod/bundle.d.ts +30 -32
- package/dist/with-pod/format.d.ts +2 -2
- package/dist/with-pod/index.d.ts +2 -1
- package/dist/with-shape/blobs/blob-compaction.d.ts +43 -3
- package/dist/with-shape/blobs/blob-pinning.d.ts +112 -0
- package/dist/with-shape/blobs/blob-set.d.ts +86 -2
- package/dist/with-shape/introspection/index.d.ts +6 -0
- package/dist/with-shape/schema-update/index.d.ts +1 -0
- package/dist/with-store/index.d.ts +3 -2
- package/dist/with-store/route-store.d.ts +1 -1
- package/dist/{with-party/team/sync-active.d.ts → with-sync/active.d.ts} +1 -1
- package/dist/{with-party/team/sync-credentials.d.ts → with-sync/credentials.d.ts} +3 -3
- package/dist/{with-party/team/sync.d.ts → with-sync/engine.d.ts} +5 -5
- package/dist/{with-party/sync → with-sync}/index.d.ts +4 -2
- package/dist/{with-party/team/sync-period-scope.d.ts → with-sync/period-scope.d.ts} +2 -2
- package/dist/{with-party/team → with-sync}/presence.d.ts +2 -2
- package/dist/{with-party/team/sync-strategy.d.ts → with-sync/strategy.d.ts} +6 -6
- package/dist/{with-party/team/sync-transaction.d.ts → with-sync/transaction.d.ts} +3 -3
- package/dist/withdraw-accessible-A2PWF5MZ.js +28 -0
- package/package.json +45 -36
- package/dist/aggregate/index.js.map +0 -1
- package/dist/api-IQFZJSQO.js +0 -20
- package/dist/as/index.js +0 -30
- package/dist/at/index.js +0 -1
- package/dist/bundle/index.js +0 -105
- package/dist/by/index.js +0 -11
- package/dist/chunk-2IALOXZS.js.map +0 -1
- package/dist/chunk-2MUZ3LY6.js +0 -205
- package/dist/chunk-2MUZ3LY6.js.map +0 -1
- package/dist/chunk-2P7EGNKF.js.map +0 -1
- package/dist/chunk-3PF6CRDT.js.map +0 -1
- package/dist/chunk-3SV2EPMN.js.map +0 -1
- package/dist/chunk-4BRCIYFG.js.map +0 -1
- package/dist/chunk-5OI6BR4H.js.map +0 -1
- package/dist/chunk-5WZXVULX.js.map +0 -1
- package/dist/chunk-6NQMXTYC.js.map +0 -1
- package/dist/chunk-6XE5TMPR.js.map +0 -1
- package/dist/chunk-7CI6CP7Z.js.map +0 -1
- package/dist/chunk-7O3AYBC7.js.map +0 -1
- package/dist/chunk-A5BDDEXK.js.map +0 -1
- package/dist/chunk-A7JJLVGH.js.map +0 -1
- package/dist/chunk-BGK233EA.js.map +0 -1
- package/dist/chunk-BMQWTQZ4.js.map +0 -1
- package/dist/chunk-BOKIKJJB.js.map +0 -1
- package/dist/chunk-CCOP5XDW.js.map +0 -1
- package/dist/chunk-CHFZDSE4.js +0 -1
- package/dist/chunk-DDHM2TLX.js.map +0 -1
- package/dist/chunk-GQNGCEP5.js.map +0 -1
- package/dist/chunk-GVZQ4NAM.js +0 -14
- package/dist/chunk-GVZQ4NAM.js.map +0 -1
- package/dist/chunk-GWKAVKHI.js.map +0 -1
- package/dist/chunk-HOONYZY2.js.map +0 -1
- package/dist/chunk-HPUWOVR7.js.map +0 -1
- package/dist/chunk-ISMV2QVG.js.map +0 -1
- package/dist/chunk-JBBSYJHP.js.map +0 -1
- package/dist/chunk-JRBNCUNT.js.map +0 -1
- package/dist/chunk-JZWWLLVY.js +0 -99
- package/dist/chunk-JZWWLLVY.js.map +0 -1
- package/dist/chunk-KUPKLSX5.js.map +0 -1
- package/dist/chunk-KWVJAOIN.js.map +0 -1
- package/dist/chunk-LB6OH6K2.js.map +0 -1
- package/dist/chunk-LB7FD65R.js +0 -163
- package/dist/chunk-LB7FD65R.js.map +0 -1
- package/dist/chunk-LOF2W3JU.js.map +0 -1
- package/dist/chunk-LSASLXGC.js.map +0 -1
- package/dist/chunk-O7WJ47EF.js.map +0 -1
- package/dist/chunk-ONTBCHCP.js.map +0 -1
- package/dist/chunk-PT37L5DV.js +0 -255
- package/dist/chunk-PT37L5DV.js.map +0 -1
- package/dist/chunk-RDXW3OBQ.js.map +0 -1
- package/dist/chunk-RND5ZPNP.js.map +0 -1
- package/dist/chunk-S3BFKGET.js.map +0 -1
- package/dist/chunk-SMGEYW6G.js.map +0 -1
- package/dist/chunk-T36RFODW.js.map +0 -1
- package/dist/chunk-TAGR72IR.js.map +0 -1
- package/dist/chunk-UNCOC7QH.js.map +0 -1
- package/dist/chunk-VCBHAE4R.js.map +0 -1
- package/dist/chunk-VEALDPHW.js.map +0 -1
- package/dist/chunk-VQNJ7UZL.js.map +0 -1
- package/dist/chunk-W2OG6JOL.js.map +0 -1
- package/dist/chunk-WNGGJWF7.js.map +0 -1
- package/dist/chunk-YJV2UZ7H.js.map +0 -1
- package/dist/chunk-YMUGBZN2.js.map +0 -1
- package/dist/chunk-YTGDPCPW.js.map +0 -1
- package/dist/chunk-ZEQWCBCM.js.map +0 -1
- package/dist/collection-facade-MJXSC3Q6.js +0 -44
- package/dist/cover-B5SJDHR3.js +0 -52
- package/dist/delegation-A5A75KQO.js +0 -25
- package/dist/derive-HJSMH7RA.js +0 -21
- package/dist/executor-AXE4XMLT.js +0 -26
- package/dist/executor-KGNLJD6M.js +0 -9
- package/dist/executor-XGIS6CR7.js +0 -9
- package/dist/export-accessible-VVBJM3MM.js +0 -23
- package/dist/extract-partition-LGGBTQET.js +0 -38
- package/dist/find-YS6XWB46.js +0 -11
- package/dist/in/index.js +0 -1
- package/dist/issue-LSR5PS6H.js +0 -19
- package/dist/legacy/bundle.d.ts +0 -30
- package/dist/liberate-GBSAYLPJ.js +0 -24
- package/dist/noydb-MTUBMWFE.js +0 -70
- package/dist/on/index.js +0 -17
- package/dist/port/as/index.d.ts +0 -26
- package/dist/port/at/index.d.ts +0 -18
- package/dist/port/in/index.d.ts +0 -21
- package/dist/port/on/index.d.ts +0 -27
- package/dist/port/ui/index.d.ts +0 -21
- package/dist/port/with/index.d.ts +0 -18
- package/dist/register-X462DNDM.js +0 -23
- package/dist/registry-3XMCT7MQ.js +0 -18
- package/dist/registry-KHD2I3M2.js +0 -19
- package/dist/registry-NPOWJHC4.js +0 -9
- package/dist/request-withdrawal-U7K3JTMY.js +0 -31
- package/dist/revoke-OCWDSWRQ.js +0 -24
- package/dist/seed-PWK45HDF.js.map +0 -1
- package/dist/signer-3YFBLZRN.js +0 -25
- package/dist/storage-W3GURVFU.js +0 -23
- package/dist/tx/index.js.map +0 -1
- package/dist/ui/index.js +0 -1
- package/dist/with/index.js +0 -31
- package/dist/with-lookup/aggregate/index.d.ts +0 -23
- package/dist/withdraw-accessible-Y3B2535F.js +0 -28
- /package/dist/{api-IQFZJSQO.js.map → api-ZDKTWNBB.js.map} +0 -0
- /package/dist/{backup-LU2DTZTI.js.map → backup-2UX7PRM5.js.map} +0 -0
- /package/dist/{chunk-IY23KFNZ.js.map → chunk-35NMVJ7I.js.map} +0 -0
- /package/dist/{chunk-RTEK4C4I.js.map → chunk-4JQK3L4V.js.map} +0 -0
- /package/dist/{chunk-3ELCWU56.js.map → chunk-4ZKNC6A6.js.map} +0 -0
- /package/dist/{chunk-VAIS3SOM.js.map → chunk-55LX6FSX.js.map} +0 -0
- /package/dist/{chunk-6HPG2YNX.js.map → chunk-5DRROK5W.js.map} +0 -0
- /package/dist/{chunk-S6Q37VGE.js.map → chunk-5GQEU4DN.js.map} +0 -0
- /package/dist/{chunk-TOPYT5U5.js.map → chunk-63FE525P.js.map} +0 -0
- /package/dist/{chunk-JVBO4SZL.js.map → chunk-6UBZ6I5Z.js.map} +0 -0
- /package/dist/{chunk-UFEVO57O.js.map → chunk-ABS7FMMD.js.map} +0 -0
- /package/dist/{chunk-M75ZZHSR.js.map → chunk-BLBAQRBM.js.map} +0 -0
- /package/dist/{chunk-G6EQYAL6.js.map → chunk-CI32CAFS.js.map} +0 -0
- /package/dist/{chunk-6B4DYGWO.js.map → chunk-DABACXEF.js.map} +0 -0
- /package/dist/{chunk-F6T6L2UK.js.map → chunk-DMH3VZU5.js.map} +0 -0
- /package/dist/{chunk-MQ6WOPSY.js.map → chunk-DZ2JXHWK.js.map} +0 -0
- /package/dist/{chunk-UBNCR3YK.js.map → chunk-EE7UHLKH.js.map} +0 -0
- /package/dist/{chunk-EGCRBCNA.js.map → chunk-EKRSCRNM.js.map} +0 -0
- /package/dist/{chunk-IRQY7IR5.js.map → chunk-FRMPM7WG.js.map} +0 -0
- /package/dist/{as/index.js.map → chunk-GJW4HX2O.js.map} +0 -0
- /package/dist/{chunk-T6GU5PPZ.js.map → chunk-GU3IP74F.js.map} +0 -0
- /package/dist/{chunk-SMIRGMS7.js.map → chunk-IXNCZTWA.js.map} +0 -0
- /package/dist/{chunk-RM2XV574.js.map → chunk-IXTSNGYY.js.map} +0 -0
- /package/dist/{chunk-PK6QCH2C.js.map → chunk-JJZGIE4U.js.map} +0 -0
- /package/dist/{chunk-DRWBEDYO.js.map → chunk-JYJFGD2H.js.map} +0 -0
- /package/dist/{chunk-KUIB4B5Q.js.map → chunk-LNZKOUJR.js.map} +0 -0
- /package/dist/{chunk-IM3QVF53.js.map → chunk-MBKVNOJS.js.map} +0 -0
- /package/dist/{chunk-N6WF5PKC.js.map → chunk-NFZGZ4AK.js.map} +0 -0
- /package/dist/{chunk-OF75ACKS.js.map → chunk-PEATRIYJ.js.map} +0 -0
- /package/dist/{chunk-N55W7KUL.js.map → chunk-QDIH2744.js.map} +0 -0
- /package/dist/{chunk-6HY2X62D.js.map → chunk-QJNCB5SK.js.map} +0 -0
- /package/dist/{chunk-2PCAVW2I.js.map → chunk-SHEEBRZ4.js.map} +0 -0
- /package/dist/{chunk-RA5VTXXG.js.map → chunk-V6UQZA2H.js.map} +0 -0
- /package/dist/{chunk-QDPZWTN2.js.map → chunk-W3G5REIU.js.map} +0 -0
- /package/dist/{chunk-WEYZTLXN.js.map → chunk-W3L64Y3J.js.map} +0 -0
- /package/dist/{chunk-CBSY2N76.js.map → chunk-WLXMTYGO.js.map} +0 -0
- /package/dist/{chunk-3U3FBR7O.js.map → chunk-X3F5YJG2.js.map} +0 -0
- /package/dist/{classified-marker-WQVIJAW2.js.map → classified-marker-7PKJBFCG.js.map} +0 -0
- /package/dist/{at/index.js.map → collection-facade-6I5K5IOD.js.map} +0 -0
- /package/dist/{bundle/index.js.map → computed-AB45PS4V.js.map} +0 -0
- /package/dist/{by → cover}/index.js.map +0 -0
- /package/dist/{in → custody}/index.js.map +0 -0
- /package/dist/{dead-filter-2A7IAJ3D.js.map → dead-filter-FL3WIUZS.js.map} +0 -0
- /package/dist/{chunk-CHFZDSE4.js.map → derive-VGS7FKE3.js.map} +0 -0
- /package/dist/{on → directory}/index.js.map +0 -0
- /package/dist/{collection-facade-MJXSC3Q6.js.map → enclave-SPEEDYZ4.js.map} +0 -0
- /package/dist/{computed-DSMPXG2Y.js.map → executor-IEBLTBCW.js.map} +0 -0
- /package/dist/{cover-B5SJDHR3.js.map → executor-OTF556PL.js.map} +0 -0
- /package/dist/{delegation-A5A75KQO.js.map → executor-RM7XWQDU.js.map} +0 -0
- /package/dist/{derive-HJSMH7RA.js.map → export-accessible-P42BQ4PB.js.map} +0 -0
- /package/dist/{enclave-7MW6ZGXW.js.map → extract-partition-TCYXRWBN.js.map} +0 -0
- /package/dist/{fanout-sidecar-WDYQ77VB.js.map → fanout-sidecar-SSMRSC2L.js.map} +0 -0
- /package/dist/{executor-AXE4XMLT.js.map → find-OZMTRIK3.js.map} +0 -0
- /package/dist/{ui → introspection}/index.js.map +0 -0
- /package/dist/{executor-KGNLJD6M.js.map → issue-FCKN5O6C.js.map} +0 -0
- /package/dist/{executor-XGIS6CR7.js.map → ledger-6XBEVWYP.js.map} +0 -0
- /package/dist/{export-accessible-VVBJM3MM.js.map → liberate-CYUOS4NC.js.map} +0 -0
- /package/dist/{extract-partition-LGGBTQET.js.map → link-set-NK6L2A5S.js.map} +0 -0
- /package/dist/{with → money}/index.js.map +0 -0
- /package/dist/{find-YS6XWB46.js.map → noydb-FZZIMLCI.js.map} +0 -0
- /package/dist/{issue-LSR5PS6H.js.map → policy/index.js.map} +0 -0
- /package/dist/{post-register-JVTMJ6OW.js.map → post-register-VFIYISUK.js.map} +0 -0
- /package/dist/{ledger-33BC4TR7.js.map → register-UKU2J6MN.js.map} +0 -0
- /package/dist/{liberate-GBSAYLPJ.js.map → registry-2VCWVHZS.js.map} +0 -0
- /package/dist/{link-set-QK22TDEX.js.map → registry-7Y5WF7GS.js.map} +0 -0
- /package/dist/{noydb-MTUBMWFE.js.map → registry-BWD2ED52.js.map} +0 -0
- /package/dist/{policy-NAHB2TUT.js.map → registry-DTWRJLSF.js.map} +0 -0
- /package/dist/{register-X462DNDM.js.map → request-withdrawal-JYDZ5XY2.js.map} +0 -0
- /package/dist/{reveal-LGBOM2BO.js.map → reveal-CL2BCW6A.js.map} +0 -0
- /package/dist/{registry-3XMCT7MQ.js.map → revoke-2TSAD2T4.js.map} +0 -0
- /package/dist/{registry-KHD2I3M2.js.map → schema-update/index.js.map} +0 -0
- /package/dist/{registry-NPOWJHC4.js.map → search/index.js.map} +0 -0
- /package/dist/{registry-VW6P6A3J.js.map → sequence/index.js.map} +0 -0
- /package/dist/{request-withdrawal-U7K3JTMY.js.map → signer-K7Z2EOMG.js.map} +0 -0
- /package/dist/{revoke-OCWDSWRQ.js.map → stale-A4J26OIC.js.map} +0 -0
- /package/dist/{signer-3YFBLZRN.js.map → storage-YVHZUISN.js.map} +0 -0
- /package/dist/{stale-FJED42DM.js.map → store/index.js.map} +0 -0
- /package/dist/{store-coordination-provider-APODTV4W.js.map → store-coordination-provider-EWRZL7XF.js.map} +0 -0
- /package/dist/{verify-26Y5GNMK.js.map → verify-7XWHJWUN.js.map} +0 -0
- /package/dist/{storage-W3GURVFU.js.map → walk-P5D6CF4V.js.map} +0 -0
- /package/dist/with-lookup/{aggregate → reduce}/canonical-key.d.ts +0 -0
- /package/dist/{with-party → with-sync}/tab-coordination.d.ts +0 -0
- /package/dist/{with-party → with-sync}/tab-write-relay.d.ts +0 -0
- /package/dist/{withdraw-accessible-Y3B2535F.js.map → withdraw-accessible-A2PWF5MZ.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Session tokens —
|
|
3
3
|
*
|
|
4
|
-
* After a vault is unlocked (via
|
|
4
|
+
* After a vault is unlocked (via secret, WebAuthn, OIDC, or magic-
|
|
5
5
|
* link), the caller can call `createSession()` to get a session token that
|
|
6
6
|
* allows re-establishing the KEK for the session lifetime without re-running
|
|
7
7
|
* PBKDF2 or any interactive auth challenge.
|
|
@@ -75,7 +75,7 @@ export interface CreateSessionOptions {
|
|
|
75
75
|
/**
|
|
76
76
|
* Create a session for an already-unlocked keyring.
|
|
77
77
|
*
|
|
78
|
-
* Call this after any successful unlock (
|
|
78
|
+
* Call this after any successful unlock (secret, WebAuthn, OIDC,
|
|
79
79
|
* magic-link). The returned `sessionId` is the handle for later
|
|
80
80
|
* `resolveSession()` and `revokeSession()` calls.
|
|
81
81
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* FR-6 — Deed: sealed / hidden-owner provisioning.
|
|
3
3
|
*
|
|
4
4
|
* A **Deed** is a vault owned by a *latent* principal who never
|
|
5
|
-
* authenticates. The owner credential (the random
|
|
5
|
+
* authenticates. The owner credential (the random secret that
|
|
6
6
|
* derives `KEK_owner`) is minted machine-side and sealed under a
|
|
7
7
|
* **non-firm** {@link SealingKeyProvider} — that sealing boundary is
|
|
8
8
|
* the cryptographic *inalienability anchor*: whoever holds the
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* Provisioning reuses the managed-mode seam:
|
|
15
15
|
* - {@link resolveManagedSecret} mints + seals + persists the random
|
|
16
|
-
*
|
|
16
|
+
* secret at `_meta/sealed-secret` (and unseals it on every
|
|
17
17
|
* subsequent open through the same provider).
|
|
18
18
|
* - {@link createOwnerKeyring} derives `KEK_owner` from that
|
|
19
|
-
*
|
|
19
|
+
* secret and writes the `_keyring/<ownerUserId>` file.
|
|
20
20
|
*
|
|
21
21
|
* On top of that, a Deed writes a `_meta/deed` **marker**. The marker
|
|
22
22
|
* is PLAINTEXT metadata — it records WHO the latent owner is and WHICH
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
*/
|
|
31
31
|
import type { NoydbStore } from '../../kernel/types.js';
|
|
32
32
|
import type { UnlockedKeyring } from './keyring.js';
|
|
33
|
-
import type { SealingKeyProvider } from './managed-
|
|
33
|
+
import type { SealingKeyProvider } from './managed-secret.js';
|
|
34
34
|
/** Reserved id for the Deed marker under `_meta`. */
|
|
35
35
|
export declare const DEED_RECORD_ID: "deed";
|
|
36
36
|
/**
|
|
@@ -60,7 +60,7 @@ export interface DeedMarker {
|
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Provision a Deed: a latent owner whose credential is sealed under
|
|
63
|
-
* `sealing` (a NON-firm provider). Mints + seals the owner
|
|
63
|
+
* `sealing` (a NON-firm provider). Mints + seals the owner secret
|
|
64
64
|
* via {@link resolveManagedSecret}, derives the owner keyring via
|
|
65
65
|
* {@link createOwnerKeyring}, then writes the plaintext `_meta/deed`
|
|
66
66
|
* marker. Returns the unlocked owner keyring.
|
|
@@ -68,8 +68,8 @@ export interface DeedMarker {
|
|
|
68
68
|
* The returned keyring is the only in-memory window onto `KEK_owner`
|
|
69
69
|
* for this call; the persistent re-entry point is the sealing provider
|
|
70
70
|
* (re-run {@link resolveManagedSecret} with the same provider to
|
|
71
|
-
* re-resolve the
|
|
72
|
-
* unlock — no interactive
|
|
71
|
+
* re-resolve the secret, then {@link createOwnerKeyring}/load to
|
|
72
|
+
* unlock — no interactive secret is ever required).
|
|
73
73
|
*
|
|
74
74
|
* There is deliberately no firm-controlled fallback: the marker's
|
|
75
75
|
* `sealedUnder` is the single cryptographic anchor of ownership.
|
|
@@ -85,7 +85,7 @@ export declare function loadDeedMarker(store: NoydbStore, vault: string): Promis
|
|
|
85
85
|
export declare function isDeedVault(store: NoydbStore, vault: string): Promise<boolean>;
|
|
86
86
|
/**
|
|
87
87
|
* Persist a {@link DeedMarker} at `_meta/deed`. Mirrors
|
|
88
|
-
* `
|
|
88
|
+
* `saveSealedSecret`'s envelope shape: a standard
|
|
89
89
|
* {@link EncryptedEnvelope} with AES-GCM bypassed (`_iv: ''`), the
|
|
90
90
|
* payload stored as plaintext JSON in `_data`. The marker is metadata,
|
|
91
91
|
* not a secret — sealing it would defeat its purpose (auditors /
|
|
@@ -18,10 +18,11 @@ export { TeamNotEnabledError } from '../../kernel/errors.js';
|
|
|
18
18
|
export type { UnlockedKeyring } from './keyring.js';
|
|
19
19
|
export { loadKeyring, createOwnerKeyring, grant, revoke, changeSecret, listUsers, listUsersWithEnvelopes, ensureCollectionDEK, persistKeyring, updateKeyringIdentity, buildRecipientKeyringFile, } from './keyring.js';
|
|
20
20
|
export type { BundleRecipient, ListUsersOptions } from './keyring.js';
|
|
21
|
+
export type { LoadKeyringOptions, CreateOwnerKeyringOptions, RotateKeysOptions, ChangeSecretOptions, } from './keyring.js';
|
|
21
22
|
export { enrollAuthenticator, removeAuthenticator, updateAuthenticator, findAuthenticator, } from './authenticators.js';
|
|
22
23
|
export type { EnrollAuthenticatorOptions, EnrollAuthenticatorWrappingKEKOptions, EnrollAuthenticatorWrappingDEKsOptions, UpdateAuthenticatorOptions, } from './authenticators.js';
|
|
23
|
-
export {
|
|
24
|
-
export type {
|
|
24
|
+
export { rotateSecret, recoverSecret, } from './rotate-recover.js';
|
|
25
|
+
export type { RotateSecretInput, RecoverSecretInput, RecoverSecretResult, RecoveryProof, SlotRewrapContext, SlotRewrapCeremony, } from './rotate-recover.js';
|
|
25
26
|
export { recoverUser } from './peer-recover.js';
|
|
26
27
|
export type { RecoverUserOptions } from './peer-recover.js';
|
|
27
28
|
export { mintPaperRecoveryEntry, unwrapDeksFromPaperEntry, loadPaperRecoveryEntries, savePaperRecoveryEntries, burnPaperRecoveryEntry, } from './recovery.js';
|
|
@@ -31,8 +32,4 @@ export type { WrappedDeksBlob } from './wrapped-deks.js';
|
|
|
31
32
|
export { writeMagicLinkGrant, readMagicLinkGrantRecord, listMagicLinkGrants, unwrapMagicLinkGrant, revokeMagicLinkGrant, deriveMagicLinkContentKey, magicLinkGrantRecordId, isMagicLinkGrantExpired, } from './magic-link-grant.js';
|
|
32
33
|
export { hasExportCapability, evaluateExportCapability, } from './keyring.js';
|
|
33
34
|
export { hasImportCapability, evaluateImportCapability, } from './keyring.js';
|
|
34
|
-
export {
|
|
35
|
-
export { SyncTransaction } from './sync-transaction.js';
|
|
36
|
-
export { PresenceHandle } from './presence.js';
|
|
37
|
-
export { putCredential, getCredential, deleteCredential, listCredentials, credentialStatus, SYNC_CREDENTIALS_COLLECTION, } from './sync-credentials.js';
|
|
38
|
-
export type { SyncCredential } from './sync-credentials.js';
|
|
35
|
+
export { describeAuthConfig, diagramAuthConfig, describeUserAuth, describeAllUsersAuth, } from '../auth-introspection/index.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { NoydbStore, KeyringFile, KeyringAuthenticator, Role, Permissions, GrantOptions, RevokeOptions, UpdateUserOptions, UserInfo, ExportCapability, ExportFormat, ImportCapability, VaultPolicyOnDisk, UserEnvelope
|
|
1
|
+
import type { NoydbStore, KeyringFile, KeyringAuthenticator, Role, Permissions, GrantOptions, RevokeOptions, UpdateUserOptions, UserInfo, ExportCapability, ExportFormat, ImportCapability, VaultPolicyOnDisk, UserEnvelope } from '../../kernel/types.js';
|
|
2
2
|
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
3
|
-
import { type
|
|
3
|
+
import { type SecretPolicy } from '../../kernel/validation.js';
|
|
4
4
|
/** In-memory representation of an unlocked keyring. */
|
|
5
5
|
export interface UnlockedKeyring {
|
|
6
6
|
readonly userId: string;
|
|
@@ -9,7 +9,7 @@ export interface UnlockedKeyring {
|
|
|
9
9
|
readonly permissions: Permissions;
|
|
10
10
|
readonly deks: Map<string, EnclaveKey>;
|
|
11
11
|
/**
|
|
12
|
-
* The KEK, when this keyring was unlocked via tier 1 (
|
|
12
|
+
* The KEK, when this keyring was unlocked via tier 1 (secret) or
|
|
13
13
|
* a wrap-KEK tier-2 method (WebAuthn / OIDC). `null` when the
|
|
14
14
|
* keyring was opened via:
|
|
15
15
|
*
|
|
@@ -71,8 +71,15 @@ export interface UnlockedKeyring {
|
|
|
71
71
|
}
|
|
72
72
|
/** Mint a fresh wrapped-canary string. Deterministic for a given KEK. */
|
|
73
73
|
export declare function mintKeyringCanary(kek: EnclaveKey): Promise<string>;
|
|
74
|
+
/** Options for {@link loadKeyring} (#846b). */
|
|
75
|
+
export interface LoadKeyringOptions {
|
|
76
|
+
/** The user whose keyring to unlock. */
|
|
77
|
+
readonly userId: string;
|
|
78
|
+
/** That user's secret. */
|
|
79
|
+
readonly secret: string;
|
|
80
|
+
}
|
|
74
81
|
/** Load and unlock a user's keyring for a vault. */
|
|
75
|
-
export declare function loadKeyring(
|
|
82
|
+
export declare function loadKeyring(store: NoydbStore, vault: string, opts: LoadKeyringOptions): Promise<UnlockedKeyring>;
|
|
76
83
|
/**
|
|
77
84
|
* Open-policy pre-gate: decide create-vs-fail-closed **before** any
|
|
78
85
|
* vault write. `openVault` must not self-provision an owner keyring into a
|
|
@@ -81,26 +88,38 @@ export declare function loadKeyring(adapter: NoydbStore, vault: string, userId:
|
|
|
81
88
|
* `store.list`. Returns when the open may proceed (the caller is a member, or
|
|
82
89
|
* the vault is genuinely-new and `create` is allowed, in which case the caller
|
|
83
90
|
* falls through to the normal `createOwnerKeyring` path); throws `NoAccessError`
|
|
84
|
-
* otherwise. Placed before managed-
|
|
91
|
+
* otherwise. Placed before managed-secret secret resolution (which persists
|
|
85
92
|
* on first open), so a fail-closed open writes nothing.
|
|
86
93
|
*/
|
|
87
94
|
export declare function assertKeyringOpenAllowed(store: NoydbStore, vault: string, userId: string, create: boolean): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Options for {@link createOwnerKeyring} (#846b). The `SecretPolicy` knobs are
|
|
97
|
+
* flattened into the same bag rather than nested, so `assertStrongSecret` can
|
|
98
|
+
* take `opts` directly.
|
|
99
|
+
*/
|
|
100
|
+
export interface CreateOwnerKeyringOptions extends SecretPolicy {
|
|
101
|
+
/** The owner to create. */
|
|
102
|
+
readonly userId: string;
|
|
103
|
+
/** The owner's secret. */
|
|
104
|
+
readonly secret: string;
|
|
105
|
+
/** Gate creation on the phrase-format strength rules. Default false. */
|
|
106
|
+
readonly validate?: boolean;
|
|
107
|
+
/** Escape hatch for fixtures and migrations — skips the strength gate. */
|
|
108
|
+
readonly allowWeakSecret?: boolean;
|
|
109
|
+
}
|
|
88
110
|
/**
|
|
89
111
|
* Create the initial owner keyring for a new vault.
|
|
90
112
|
*
|
|
91
|
-
* Pass `{ validate: true }` (or
|
|
113
|
+
* Pass `{ validate: true }` (or any `SecretPolicy` knob) to gate creation
|
|
92
114
|
* on the phrase-format strength rules — `Noydb` threads this from
|
|
93
|
-
* `NoydbOptions.
|
|
115
|
+
* `NoydbOptions.validateSecret`. Direct callers (CLI, scripts,
|
|
94
116
|
* test fixtures) opt in explicitly.
|
|
95
117
|
*/
|
|
96
|
-
export declare function createOwnerKeyring(
|
|
97
|
-
validate?: boolean;
|
|
98
|
-
allowWeakPassphrase?: boolean;
|
|
99
|
-
}): Promise<UnlockedKeyring>;
|
|
118
|
+
export declare function createOwnerKeyring(store: NoydbStore, vault: string, opts: CreateOwnerKeyringOptions): Promise<UnlockedKeyring>;
|
|
100
119
|
/** Grant access to a new user. Caller must have grant privilege. */
|
|
101
|
-
export declare function grant(
|
|
120
|
+
export declare function grant(store: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, options: GrantOptions): Promise<void>;
|
|
102
121
|
/** Revoke a user's access. Optionally rotate keys for affected collections. */
|
|
103
|
-
export declare function revoke(
|
|
122
|
+
export declare function revoke(store: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, options: RevokeOptions): Promise<void>;
|
|
104
123
|
/**
|
|
105
124
|
* Mutate `role`, `displayName`, and/or `permissions` on an existing
|
|
106
125
|
* keyring. Pure plaintext-header rewrite — no DEK rewrap, no KEK
|
|
@@ -125,33 +144,62 @@ export declare function revoke(adapter: NoydbStore, vault: string, callerKeyring
|
|
|
125
144
|
* @throws `ValidationError` when the diff is empty (nothing to update).
|
|
126
145
|
*
|
|
127
146
|
*/
|
|
128
|
-
export declare function updateKeyringIdentity(
|
|
147
|
+
export declare function updateKeyringIdentity(store: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, options: UpdateUserOptions): Promise<void>;
|
|
129
148
|
/**
|
|
130
149
|
* Rotate DEKs for specified collections:
|
|
131
150
|
* 1. Generate new DEKs
|
|
132
151
|
* 2. Re-encrypt all records in affected collections
|
|
133
152
|
* 3. Re-wrap new DEKs for all remaining users
|
|
134
153
|
*/
|
|
135
|
-
export declare function rotateKeys(adapter: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, collections: string[]): Promise<void>;
|
|
136
154
|
/**
|
|
137
|
-
*
|
|
155
|
+
* What a DEK rotation leaves behind (#854).
|
|
156
|
+
*
|
|
157
|
+
* A member's DEKs are wrapped under that member's KEK, and a KEK derives only
|
|
158
|
+
* from that member's secret — so the caller cannot re-wrap a fresh DEK for
|
|
159
|
+
* anyone else. That is the zero-knowledge property working as designed, but it
|
|
160
|
+
* means rotation necessarily DROPS the rotated collections from every other
|
|
161
|
+
* member's keyring rather than re-keying them.
|
|
162
|
+
*
|
|
163
|
+
* `needsRegrant` names exactly who lost what, so the caller can re-run
|
|
164
|
+
* `grant()` instead of discovering the access loss later.
|
|
165
|
+
*/
|
|
166
|
+
export interface RotateResult {
|
|
167
|
+
/** (member, collection) pairs whose access was dropped by the rotation. */
|
|
168
|
+
readonly needsRegrant: ReadonlyArray<{
|
|
169
|
+
readonly userId: string;
|
|
170
|
+
readonly collection: string;
|
|
171
|
+
}>;
|
|
172
|
+
}
|
|
173
|
+
/** Options for {@link rotateKeys} (#846b — was a bare `string[]`). */
|
|
174
|
+
export interface RotateKeysOptions {
|
|
175
|
+
/** Collections whose DEKs are re-minted. */
|
|
176
|
+
readonly collections: readonly string[];
|
|
177
|
+
}
|
|
178
|
+
export declare function rotateKeys(store: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, opts: RotateKeysOptions): Promise<RotateResult>;
|
|
179
|
+
/** Options for {@link changeSecret} (#846b). */
|
|
180
|
+
export interface ChangeSecretOptions extends SecretPolicy {
|
|
181
|
+
/** The replacement secret. */
|
|
182
|
+
readonly newSecret: string;
|
|
183
|
+
/** Escape hatch for fixtures and migrations — skips the strength gate. */
|
|
184
|
+
readonly allowWeakSecret?: boolean;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Change the user's secret. Re-wraps every DEK under the new KEK.
|
|
138
188
|
*
|
|
139
|
-
* Validates the new
|
|
140
|
-
* `
|
|
189
|
+
* Validates the new secret against the strength rules unless
|
|
190
|
+
* `allowWeakSecret: true` is passed. Mirrors `rotateSecret`'s
|
|
141
191
|
* default-on validation contract.
|
|
142
192
|
*
|
|
143
|
-
* `db.
|
|
144
|
-
* on top of this primitive and additionally requires the OLD
|
|
193
|
+
* `db.team.rotateSecret()` adds a `checkGate('rotate-secret')` step
|
|
194
|
+
* on top of this primitive and additionally requires the OLD secret
|
|
145
195
|
* for re-derivation; `changeSecret` reuses the cached unlocked KEK so
|
|
146
|
-
* the OLD
|
|
196
|
+
* the OLD secret is not retyped.
|
|
147
197
|
*/
|
|
148
|
-
export declare function changeSecret(
|
|
149
|
-
allowWeakPassphrase?: boolean;
|
|
150
|
-
}): Promise<UnlockedKeyring>;
|
|
198
|
+
export declare function changeSecret(store: NoydbStore, vault: string, keyring: UnlockedKeyring, opts: ChangeSecretOptions): Promise<UnlockedKeyring>;
|
|
151
199
|
/**
|
|
152
200
|
* Recipient slot in a re-keyed `.noydb` bundle. Each slot becomes its
|
|
153
|
-
* own keyring file inside the bundle, sealed with its own
|
|
154
|
-
* Same role/permission semantics as `db.grant()` but no
|
|
201
|
+
* own keyring file inside the bundle, sealed with its own secret.
|
|
202
|
+
* Same role/permission semantics as `db.grant()` but no store side
|
|
155
203
|
* effect — the slot only exists inside the bundle bytes.
|
|
156
204
|
*
|
|
157
205
|
* @public
|
|
@@ -161,8 +209,8 @@ export interface BundleRecipient {
|
|
|
161
209
|
readonly id: string;
|
|
162
210
|
/** Optional display name. Defaults to `id`. */
|
|
163
211
|
readonly displayName?: string;
|
|
164
|
-
/**
|
|
165
|
-
readonly
|
|
212
|
+
/** Secret the recipient will type to unlock. */
|
|
213
|
+
readonly secret: string;
|
|
166
214
|
/** Role on the destination vault. Defaults to `'viewer'`. */
|
|
167
215
|
readonly role?: Role;
|
|
168
216
|
/**
|
|
@@ -193,7 +241,7 @@ export interface BundleRecipient {
|
|
|
193
241
|
}
|
|
194
242
|
/**
|
|
195
243
|
* Build a `KeyringFile` for one bundle recipient, given the source
|
|
196
|
-
* vault's unwrapped DEKs. Mirrors `grant()` minus the
|
|
244
|
+
* vault's unwrapped DEKs. Mirrors `grant()` minus the store write —
|
|
197
245
|
* the produced file is meant to be embedded in the bundle's
|
|
198
246
|
* `keyrings` map, never persisted to the source vault.
|
|
199
247
|
*
|
|
@@ -204,7 +252,7 @@ export interface BundleRecipient {
|
|
|
204
252
|
*/
|
|
205
253
|
export declare function buildRecipientKeyringFile(callerKeyring: UnlockedKeyring, recipient: BundleRecipient): Promise<KeyringFile>;
|
|
206
254
|
/** List all users with access to a vault. */
|
|
207
|
-
export declare function listUsers(
|
|
255
|
+
export declare function listUsers(store: NoydbStore, vault: string): Promise<UserInfo[]>;
|
|
208
256
|
/**
|
|
209
257
|
* Optional filter knobs for {@link listUsersWithEnvelopes}.
|
|
210
258
|
*
|
|
@@ -254,18 +302,18 @@ export interface ListUsersOptions {
|
|
|
254
302
|
* Order matches `listUsers()` (store-defined; sort if you need a
|
|
255
303
|
* stable display order).
|
|
256
304
|
*/
|
|
257
|
-
export declare function listUsersWithEnvelopes<T = unknown>(
|
|
305
|
+
export declare function listUsersWithEnvelopes<T = unknown>(store: NoydbStore, vault: string, userEnvelopeDek: EnclaveKey, callerRole: Role, options?: ListUsersOptions): Promise<Array<{
|
|
258
306
|
user: UserInfo;
|
|
259
|
-
envelope:
|
|
307
|
+
envelope: UserEnvelope<T> | null;
|
|
260
308
|
}>>;
|
|
261
309
|
/** Ensure a DEK exists for a collection. Generates one if new. */
|
|
262
|
-
export declare function ensureCollectionDEK(
|
|
310
|
+
export declare function ensureCollectionDEK(store: NoydbStore, vault: string, keyring: UnlockedKeyring): Promise<(collectionName: string) => Promise<EnclaveKey>>;
|
|
263
311
|
/** Check if a user has write permission for a collection. */
|
|
264
312
|
export declare function hasWritePermission(keyring: UnlockedKeyring, collectionName: string): boolean;
|
|
265
313
|
/** Check if a user has any access to a collection. */
|
|
266
314
|
export declare function hasAccess(keyring: UnlockedKeyring, collectionName: string): boolean;
|
|
267
|
-
/** Persist a keyring file to the
|
|
268
|
-
export declare function persistKeyring(
|
|
315
|
+
/** Persist a keyring file to the store. */
|
|
316
|
+
export declare function persistKeyring(store: NoydbStore, vault: string, keyring: UnlockedKeyring): Promise<void>;
|
|
269
317
|
/**
|
|
270
318
|
* Check whether a keyring is authorised for a given `@noy-db/as-*`
|
|
271
319
|
* export tier.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Managed-
|
|
2
|
+
* Managed-secret mode — rubber-hose-resistant vaults.
|
|
3
3
|
*
|
|
4
|
-
* A vault mode where the
|
|
4
|
+
* A vault mode where the secret is machine-generated and never
|
|
5
5
|
* exposed to the user, sealed under a developer-provided
|
|
6
6
|
* {@link SealingKeyProvider} (macOS Keychain, Windows Credential
|
|
7
7
|
* Manager, libsecret, AWS KMS, …). The user has no secret to give
|
|
@@ -27,31 +27,31 @@
|
|
|
27
27
|
* implementation of both `RecipientSealer` and
|
|
28
28
|
* `SealingKeyProvider` using real WebCrypto RSA-OAEP + AES-GCM;
|
|
29
29
|
* safe for tests and same-process sender/recipient scenarios.
|
|
30
|
-
* - {@link
|
|
31
|
-
* plaintext envelope storage at `_meta/sealed-
|
|
30
|
+
* - {@link loadSealedSecret} / {@link saveSealedSecret} —
|
|
31
|
+
* plaintext envelope storage at `_meta/sealed-secret`.
|
|
32
32
|
* Mirrors the `_meta/handle` and `_meta/public-envelope` AES-
|
|
33
33
|
* GCM-bypassed patterns. The sealing layer (provider's job)
|
|
34
34
|
* is the security boundary; hub doesn't have a key to encrypt
|
|
35
35
|
* with at this layer — that's the whole point of the design.
|
|
36
36
|
* - {@link resolveManagedSecret} — orchestrates the "generate +
|
|
37
37
|
* seal + persist on first open; unseal on reopen" flow.
|
|
38
|
-
* Returns the plaintext
|
|
38
|
+
* Returns the plaintext secret string that the rest of the
|
|
39
39
|
* `createNoydb` keyring path consumes.
|
|
40
40
|
*
|
|
41
41
|
* Deferred to follow-ups:
|
|
42
|
-
* - Block `rotate-
|
|
42
|
+
* - Block `rotate-secret` policy gate under managed mode.
|
|
43
43
|
* - Mandatory strong-recovery enforcement.
|
|
44
44
|
* - Recovery flow under managed mode (generates fresh sealed phrase).
|
|
45
45
|
*
|
|
46
|
-
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Managed-
|
|
46
|
+
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Managed-secret mode
|
|
47
47
|
*
|
|
48
48
|
* @module
|
|
49
49
|
*/
|
|
50
50
|
import type { NoydbStore, RecipientSealer } from '../../kernel/types.js';
|
|
51
51
|
/**
|
|
52
52
|
* The contract concrete providers (per-platform key stores) implement
|
|
53
|
-
* to seal and unseal a hub-generated random
|
|
54
|
-
*
|
|
53
|
+
* to seal and unseal a hub-generated random secret. The plaintext
|
|
54
|
+
* secret NEVER leaves hub-controlled memory in unsealed form —
|
|
55
55
|
* the provider receives the bytes, returns opaque sealed bytes, and
|
|
56
56
|
* later reverses the operation. Hub treats the sealed bytes as
|
|
57
57
|
* fully opaque.
|
|
@@ -69,7 +69,7 @@ import type { NoydbStore, RecipientSealer } from '../../kernel/types.js';
|
|
|
69
69
|
export interface SealingKeyProvider {
|
|
70
70
|
/**
|
|
71
71
|
* Non-sensitive identifier disclosed in the persisted envelope.
|
|
72
|
-
* Surfaced to consumers via `
|
|
72
|
+
* Surfaced to consumers via `loadSealedSecret().providerId` so
|
|
73
73
|
* a vault opened with the wrong provider class can detect the
|
|
74
74
|
* mismatch and surface a clear error. NOT secret — fine to log.
|
|
75
75
|
*
|
|
@@ -78,8 +78,8 @@ export interface SealingKeyProvider {
|
|
|
78
78
|
* parses this; it's purely audit metadata.
|
|
79
79
|
*/
|
|
80
80
|
readonly id: string;
|
|
81
|
-
/** Seal raw
|
|
82
|
-
seal(
|
|
81
|
+
/** Seal raw secret bytes. Output bytes are opaque to hub. */
|
|
82
|
+
seal(secret: Uint8Array): Promise<Uint8Array>;
|
|
83
83
|
/**
|
|
84
84
|
* Reverse {@link seal}. MUST throw on tamper, wrong-provider, or
|
|
85
85
|
* any other failure — hub treats a thrown error as "this provider
|
|
@@ -90,7 +90,7 @@ export interface SealingKeyProvider {
|
|
|
90
90
|
/**
|
|
91
91
|
* In-memory test provider. NOT secure — uses a deterministic
|
|
92
92
|
* per-instance "key" (16-byte SHA-256 of `id`) XOR'd over the
|
|
93
|
-
*
|
|
93
|
+
* secret plus a 4-byte provider-id fingerprint prefix. The XOR is
|
|
94
94
|
* sufficient to make different `id` values produce mutually-unsealable
|
|
95
95
|
* outputs (the contract tests for that), but offers ZERO real
|
|
96
96
|
* confidentiality — never use outside tests.
|
|
@@ -104,7 +104,7 @@ export declare class MemorySealingKeyProvider implements SealingKeyProvider {
|
|
|
104
104
|
constructor(opts: {
|
|
105
105
|
id: string;
|
|
106
106
|
});
|
|
107
|
-
seal(
|
|
107
|
+
seal(secret: Uint8Array): Promise<Uint8Array>;
|
|
108
108
|
unseal(sealed: Uint8Array): Promise<Uint8Array>;
|
|
109
109
|
}
|
|
110
110
|
/**
|
|
@@ -201,17 +201,17 @@ export declare class MemoryRecipientSealer implements SealingKeyProvider, Recipi
|
|
|
201
201
|
seal(plaintext: Uint8Array): Promise<Uint8Array>;
|
|
202
202
|
unseal(bytes: Uint8Array): Promise<Uint8Array>;
|
|
203
203
|
}
|
|
204
|
-
/** Reserved id for the managed-
|
|
205
|
-
export declare const
|
|
206
|
-
/** Plaintext payload stored inside the `_meta/sealed-
|
|
207
|
-
export interface
|
|
204
|
+
/** Reserved id for the managed-secret envelope under `_meta`. */
|
|
205
|
+
export declare const SEALED_SECRET_RECORD_ID: "sealed-secret";
|
|
206
|
+
/** Plaintext payload stored inside the `_meta/sealed-secret` envelope. */
|
|
207
|
+
export interface SealedSecret {
|
|
208
208
|
readonly _noydb_sealed: 1;
|
|
209
209
|
readonly providerId: string;
|
|
210
210
|
/** Sealed bytes. Base64-encoded on the wire; decoded on load. */
|
|
211
211
|
readonly sealed: Uint8Array;
|
|
212
212
|
}
|
|
213
213
|
/**
|
|
214
|
-
* Wire-format envelope persisted at `_meta/sealed-
|
|
214
|
+
* Wire-format envelope persisted at `_meta/sealed-secret` for
|
|
215
215
|
* managed-mode vaults. The provider produces raw sealed bytes via
|
|
216
216
|
* {@link SealingKeyProvider.seal}; this wrapper carries the dispatch
|
|
217
217
|
* metadata hub needs to pick the right provider on the unseal path.
|
|
@@ -237,8 +237,8 @@ export interface SealedEnvelope {
|
|
|
237
237
|
readonly payload: string;
|
|
238
238
|
}
|
|
239
239
|
/**
|
|
240
|
-
* Parse a `_meta/sealed-
|
|
241
|
-
* in-memory {@link
|
|
240
|
+
* Parse a `_meta/sealed-secret` `_data` JSON string into the
|
|
241
|
+
* in-memory {@link SealedSecret} representation. Accepts both:
|
|
242
242
|
*
|
|
243
243
|
* 1. v1 wire format `{ v: 1, _noydb_sealed: 1, pid, payload }` —
|
|
244
244
|
* the current shape.
|
|
@@ -251,20 +251,20 @@ export interface SealedEnvelope {
|
|
|
251
251
|
*
|
|
252
252
|
* @internal — exported only for the migration safety-net test suite.
|
|
253
253
|
*/
|
|
254
|
-
export declare function parseSealedEnvelope(raw: unknown):
|
|
255
|
-
export declare function
|
|
254
|
+
export declare function parseSealedEnvelope(raw: unknown): SealedSecret | undefined;
|
|
255
|
+
export declare function saveSealedSecret(store: NoydbStore, vault: string, payload: {
|
|
256
256
|
readonly providerId: string;
|
|
257
257
|
readonly sealed: Uint8Array;
|
|
258
258
|
}): Promise<void>;
|
|
259
|
-
export declare function
|
|
259
|
+
export declare function loadSealedSecret(store: NoydbStore, vault: string): Promise<SealedSecret | undefined>;
|
|
260
260
|
/**
|
|
261
|
-
* Resolve the effective plaintext
|
|
261
|
+
* Resolve the effective plaintext secret string for a managed-mode
|
|
262
262
|
* vault. Two paths:
|
|
263
263
|
*
|
|
264
264
|
* 1. **First open (no envelope persisted):** generate a 256-bit random
|
|
265
265
|
* via `crypto.getRandomValues`, base64-encode for use as a
|
|
266
|
-
*
|
|
267
|
-
* provider, persist `_meta/sealed-
|
|
266
|
+
* secret string, seal the underlying bytes under the
|
|
267
|
+
* provider, persist `_meta/sealed-secret`, return the
|
|
268
268
|
* base64 string.
|
|
269
269
|
*
|
|
270
270
|
* 2. **Reopen (envelope exists):** read + unseal + decode → return.
|