@noy-db/hub 0.7.1-pre.0 → 0.8.0

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.
Files changed (812) hide show
  1. package/CHANGELOG.md +147 -14
  2. package/LICENSE +202 -21
  3. package/NOTICE +1 -0
  4. package/README.md +5 -5
  5. package/codemods/0.8.0-pre.json +61 -0
  6. package/dist/api-OS747DS4.js +18 -0
  7. package/dist/as/index.js +11 -12
  8. package/dist/as/index.js.map +1 -1
  9. package/dist/at/index.js +9 -10
  10. package/dist/attestation/index.js +37 -26
  11. package/dist/attestation/index.js.map +1 -1
  12. package/dist/{backup-XKCXVKV3.js → backup-YE2VQ26S.js} +15 -16
  13. package/dist/backup-YE2VQ26S.js.map +1 -0
  14. package/dist/blobs/index.js +13 -14
  15. package/dist/blobs/index.js.map +1 -1
  16. package/dist/broker/index.js +12 -13
  17. package/dist/broker/index.js.map +1 -1
  18. package/dist/by/index.js +2 -2
  19. package/dist/capsule/contract.d.ts +159 -0
  20. package/dist/capsule/contract.js +95 -0
  21. package/dist/capsule/enclave-aes/bound.d.ts +52 -0
  22. package/dist/capsule/enclave-aes/capabilities.d.ts +2 -0
  23. package/dist/capsule/enclave-aes/classify/compare.d.ts +20 -0
  24. package/dist/{kernel/enclave → capsule/enclave-aes}/classify/find.d.ts +1 -1
  25. package/dist/{kernel/enclave → capsule/enclave-aes}/classify/reveal.d.ts +1 -1
  26. package/dist/{kernel/enclave → capsule/enclave-aes}/classify/verify.d.ts +2 -2
  27. package/dist/{kernel/enclave → capsule/enclave-aes}/classify/write.d.ts +1 -1
  28. package/dist/{kernel/enclave → capsule/enclave-aes}/crypto.d.ts +33 -129
  29. package/dist/capsule/enclave-aes/index.d.ts +113 -0
  30. package/dist/capsule/enclave-aes/index.js +335 -0
  31. package/dist/capsule/enclave-aes/index.js.map +1 -0
  32. package/dist/capsule/enclave-aes/primitives.d.ts +29 -0
  33. package/dist/capsule/index.d.ts +27 -0
  34. package/dist/capsule/plumbing/ct-equal.d.ts +11 -0
  35. package/dist/{kernel/enclave/record-keys → capsule/plumbing}/deterministic.d.ts +8 -21
  36. package/dist/capsule/plumbing/digest.d.ts +122 -0
  37. package/dist/{kernel/enclave/record-keys → capsule/plumbing}/envelope-body.d.ts +44 -48
  38. package/dist/capsule/plumbing/index.d.ts +100 -0
  39. package/dist/capsule/plumbing/lifecycle.d.ts +50 -0
  40. package/dist/{kernel/enclave/record-keys → capsule/plumbing}/record-codec.d.ts +80 -20
  41. package/dist/{kernel/enclave → capsule/plumbing}/record-envelope.d.ts +1 -1
  42. package/dist/capsule/plumbing/rekey-blob.d.ts +33 -0
  43. package/dist/capsule/plumbing/rekey.d.ts +44 -0
  44. package/dist/capsule/plumbing/sealed-slot.d.ts +22 -0
  45. package/dist/capsule/plumbing/sealed-slots.d.ts +37 -0
  46. package/dist/capsule/plumbing/sealing.d.ts +29 -0
  47. package/dist/capsule/plumbing/sign.d.ts +9 -0
  48. package/dist/{kernel/enclave/record-keys → capsule/plumbing}/tombstone.d.ts +2 -2
  49. package/dist/capsule-VOLX3QRQ.js +209 -0
  50. package/dist/cargo/index.js +39 -36
  51. package/dist/{chunk-Q2MPFCQ7.js → chunk-23D6M6VM.js} +5 -5
  52. package/dist/chunk-23D6M6VM.js.map +1 -0
  53. package/dist/{chunk-R7BX2NB3.js → chunk-244QBK7Z.js} +4 -4
  54. package/dist/chunk-244QBK7Z.js.map +1 -0
  55. package/dist/chunk-2AFX33YA.js +936 -0
  56. package/dist/chunk-2AFX33YA.js.map +1 -0
  57. package/dist/{chunk-MVMXZYXT.js → chunk-2GHDLTPE.js} +2 -2
  58. package/dist/{chunk-GYGLAVCX.js → chunk-2MG3SW7Q.js} +6 -2
  59. package/dist/chunk-2MG3SW7Q.js.map +1 -0
  60. package/dist/{chunk-XLMEZIAJ.js → chunk-2ODVB6LZ.js} +2 -2
  61. package/dist/{chunk-HJUWN7JN.js → chunk-2PVXF5CS.js} +33 -8
  62. package/dist/chunk-2PVXF5CS.js.map +1 -0
  63. package/dist/{chunk-YJRT5UQM.js → chunk-2RH777HH.js} +21 -20
  64. package/dist/{chunk-YJRT5UQM.js.map → chunk-2RH777HH.js.map} +1 -1
  65. package/dist/{chunk-7O3Y4PPD.js → chunk-37EPTBBR.js} +153 -16
  66. package/dist/chunk-37EPTBBR.js.map +1 -0
  67. package/dist/{chunk-2ENE6445.js → chunk-3A5DUZ56.js} +102 -16
  68. package/dist/chunk-3A5DUZ56.js.map +1 -0
  69. package/dist/chunk-3EWS67C7.js +461 -0
  70. package/dist/chunk-3EWS67C7.js.map +1 -0
  71. package/dist/{chunk-SGZAIJCV.js → chunk-3L2NBKDR.js} +4 -8
  72. package/dist/chunk-3L2NBKDR.js.map +1 -0
  73. package/dist/{chunk-YMUFFJCO.js → chunk-3TDUWVWB.js} +5 -2
  74. package/dist/chunk-3TDUWVWB.js.map +1 -0
  75. package/dist/{chunk-4GVM6QZA.js → chunk-3XJQBBZD.js} +26 -28
  76. package/dist/chunk-3XJQBBZD.js.map +1 -0
  77. package/dist/{chunk-4ZS56W5S.js → chunk-42ALPZ2B.js} +672 -664
  78. package/dist/chunk-42ALPZ2B.js.map +1 -0
  79. package/dist/chunk-4CIQDWRB.js +524 -0
  80. package/dist/chunk-4CIQDWRB.js.map +1 -0
  81. package/dist/{chunk-RMS3NEA3.js → chunk-4JPMZTJY.js} +2 -2
  82. package/dist/{chunk-P3MG6QCN.js → chunk-4T3SE27M.js} +5 -9
  83. package/dist/chunk-4T3SE27M.js.map +1 -0
  84. package/dist/chunk-4V3Q35WG.js +204 -0
  85. package/dist/chunk-4V3Q35WG.js.map +1 -0
  86. package/dist/{chunk-NQKIUNW5.js → chunk-52MGURXO.js} +2 -2
  87. package/dist/{chunk-EQEYOJBM.js → chunk-5A4345TG.js} +4 -4
  88. package/dist/chunk-5A4345TG.js.map +1 -0
  89. package/dist/{chunk-334WSVOW.js → chunk-5FE75J4S.js} +6 -6
  90. package/dist/chunk-5FE75J4S.js.map +1 -0
  91. package/dist/chunk-5KC7QYEC.js +565 -0
  92. package/dist/chunk-5KC7QYEC.js.map +1 -0
  93. package/dist/{chunk-RSGLUIO6.js → chunk-5UMK7GRI.js} +13 -12
  94. package/dist/chunk-5UMK7GRI.js.map +1 -0
  95. package/dist/chunk-5WWDGFOS.js +275 -0
  96. package/dist/chunk-5WWDGFOS.js.map +1 -0
  97. package/dist/{chunk-QPQUVOZ2.js → chunk-6QVKPHBF.js} +3 -5
  98. package/dist/chunk-6QVKPHBF.js.map +1 -0
  99. package/dist/{chunk-ACAQ2DSG.js → chunk-747G6CT3.js} +2 -2
  100. package/dist/chunk-747G6CT3.js.map +1 -0
  101. package/dist/{chunk-QTQUH4DS.js → chunk-7R2Q7CPL.js} +16 -16
  102. package/dist/chunk-7R2Q7CPL.js.map +1 -0
  103. package/dist/{chunk-UGTBXF5U.js → chunk-7XMHMVTS.js} +3 -3
  104. package/dist/{chunk-YJX7EOJD.js → chunk-A4XMIZT3.js} +6 -6
  105. package/dist/{chunk-YJX7EOJD.js.map → chunk-A4XMIZT3.js.map} +1 -1
  106. package/dist/{chunk-A66I4JOA.js → chunk-AEQGFRU4.js} +4 -4
  107. package/dist/chunk-AEQGFRU4.js.map +1 -0
  108. package/dist/chunk-AL6ML4LA.js +1558 -0
  109. package/dist/chunk-AL6ML4LA.js.map +1 -0
  110. package/dist/{chunk-BZ3534YM.js → chunk-AUKKUPVB.js} +2 -2
  111. package/dist/{chunk-CUZLNGD5.js → chunk-B2YY6WDD.js} +1 -1
  112. package/dist/chunk-B2YY6WDD.js.map +1 -0
  113. package/dist/chunk-BKT776R5.js +1 -0
  114. package/dist/chunk-BNWA3WG5.js +22 -0
  115. package/dist/chunk-BNWA3WG5.js.map +1 -0
  116. package/dist/{chunk-VXANTWBJ.js → chunk-BPWYQ25R.js} +92 -6
  117. package/dist/{chunk-VXANTWBJ.js.map → chunk-BPWYQ25R.js.map} +1 -1
  118. package/dist/{chunk-6LKOJBV6.js → chunk-BVCUTXE3.js} +2 -2
  119. package/dist/chunk-CY2CYVWZ.js +41 -0
  120. package/dist/chunk-CY2CYVWZ.js.map +1 -0
  121. package/dist/{chunk-M4YPHYEH.js → chunk-DHHGL42E.js} +70 -25
  122. package/dist/chunk-DHHGL42E.js.map +1 -0
  123. package/dist/{chunk-VTFVLCUH.js → chunk-DIZLQVAA.js} +2 -2
  124. package/dist/{chunk-G73UVHCA.js → chunk-DLD5LGDS.js} +11 -12
  125. package/dist/chunk-DLD5LGDS.js.map +1 -0
  126. package/dist/{chunk-WQBG4SZS.js → chunk-DQESF6RP.js} +60 -49
  127. package/dist/chunk-DQESF6RP.js.map +1 -0
  128. package/dist/{chunk-LWBCUYZW.js → chunk-E2N2T5ZO.js} +2 -2
  129. package/dist/{chunk-3PGS7TYR.js → chunk-EGVJ7TM4.js} +29 -32
  130. package/dist/chunk-EGVJ7TM4.js.map +1 -0
  131. package/dist/{chunk-JVIBCBC7.js → chunk-EJLV62NI.js} +2 -2
  132. package/dist/{chunk-KKEESNPE.js → chunk-EYG2CY2X.js} +126 -19
  133. package/dist/chunk-EYG2CY2X.js.map +1 -0
  134. package/dist/{enclave-55PAM4YO.js → chunk-EZGV6F47.js} +83 -56
  135. package/dist/chunk-EZGV6F47.js.map +1 -0
  136. package/dist/{chunk-CHQCZZWC.js → chunk-EZOAKKTB.js} +36 -27
  137. package/dist/chunk-EZOAKKTB.js.map +1 -0
  138. package/dist/chunk-F6NCB7KT.js +13 -0
  139. package/dist/chunk-F6NCB7KT.js.map +1 -0
  140. package/dist/chunk-FFJFE4T7.js +100 -0
  141. package/dist/chunk-FFJFE4T7.js.map +1 -0
  142. package/dist/{chunk-JMGDHKQF.js → chunk-FLPCETP6.js} +2 -2
  143. package/dist/chunk-FOEDQATO.js +53 -0
  144. package/dist/chunk-FOEDQATO.js.map +1 -0
  145. package/dist/{chunk-DGOZ4UZD.js → chunk-FVH5QYY2.js} +2 -2
  146. package/dist/{chunk-HIWCKBEY.js → chunk-G2MVBDFP.js} +54 -28
  147. package/dist/chunk-G2MVBDFP.js.map +1 -0
  148. package/dist/chunk-GMKGGY7V.js +234 -0
  149. package/dist/chunk-GMKGGY7V.js.map +1 -0
  150. package/dist/{chunk-EIPVYUEP.js → chunk-GQ4MF3CM.js} +3 -3
  151. package/dist/chunk-GQ4MF3CM.js.map +1 -0
  152. package/dist/{chunk-PEOZ34EM.js → chunk-GSAK56VF.js} +1 -1
  153. package/dist/chunk-GSAK56VF.js.map +1 -0
  154. package/dist/{chunk-5VCRVKOZ.js → chunk-GUZET4SG.js} +12 -4
  155. package/dist/chunk-GUZET4SG.js.map +1 -0
  156. package/dist/{chunk-JBDFMYKQ.js → chunk-GZT3NQRA.js} +2 -2
  157. package/dist/{chunk-K23VKTN4.js → chunk-H23XHRTT.js} +19 -34
  158. package/dist/chunk-H23XHRTT.js.map +1 -0
  159. package/dist/{chunk-TFR7DSOV.js → chunk-H427H63K.js} +2 -2
  160. package/dist/{chunk-DFMWUOU5.js → chunk-H7JBY4P7.js} +23 -32
  161. package/dist/chunk-H7JBY4P7.js.map +1 -0
  162. package/dist/{chunk-SKGMN35F.js → chunk-HS554XAF.js} +3 -3
  163. package/dist/chunk-HS554XAF.js.map +1 -0
  164. package/dist/{chunk-HK67PX4J.js → chunk-HW7CMKUG.js} +1 -1
  165. package/dist/chunk-HW7CMKUG.js.map +1 -0
  166. package/dist/{chunk-3BVH633C.js → chunk-IMQKWR46.js} +5 -7
  167. package/dist/chunk-IMQKWR46.js.map +1 -0
  168. package/dist/{chunk-R42NSZI6.js → chunk-IUBMZPHM.js} +7 -7
  169. package/dist/chunk-IUBMZPHM.js.map +1 -0
  170. package/dist/{chunk-CUQPWYRX.js → chunk-IUT3GWP3.js} +75 -386
  171. package/dist/chunk-IUT3GWP3.js.map +1 -0
  172. package/dist/{chunk-RF6D3Y5E.js → chunk-JDEYF3PJ.js} +4 -8
  173. package/dist/{chunk-RF6D3Y5E.js.map → chunk-JDEYF3PJ.js.map} +1 -1
  174. package/dist/{chunk-PPTHY5QO.js → chunk-JIBUPZHA.js} +99 -8
  175. package/dist/chunk-JIBUPZHA.js.map +1 -0
  176. package/dist/{chunk-SMH6SRX7.js → chunk-JOSPH3E5.js} +2 -2
  177. package/dist/chunk-JQYKPKG6.js +193 -0
  178. package/dist/chunk-JQYKPKG6.js.map +1 -0
  179. package/dist/{chunk-7APJ6CO6.js → chunk-JSMTXZR3.js} +45 -13
  180. package/dist/chunk-JSMTXZR3.js.map +1 -0
  181. package/dist/chunk-JWWYRR4Q.js +12 -0
  182. package/dist/chunk-JWWYRR4Q.js.map +1 -0
  183. package/dist/{chunk-BVN6KXL2.js → chunk-KZXDLBY6.js} +14 -9
  184. package/dist/chunk-KZXDLBY6.js.map +1 -0
  185. package/dist/chunk-LGNDFRYC.js +23 -0
  186. package/dist/chunk-LGNDFRYC.js.map +1 -0
  187. package/dist/{chunk-XKWGNJ26.js → chunk-LIOVX5TJ.js} +7 -11
  188. package/dist/chunk-LIOVX5TJ.js.map +1 -0
  189. package/dist/{chunk-AYX7AINO.js → chunk-LNSVGRHO.js} +5 -7
  190. package/dist/chunk-LNSVGRHO.js.map +1 -0
  191. package/dist/chunk-M5B2W6YY.js +293 -0
  192. package/dist/chunk-M5B2W6YY.js.map +1 -0
  193. package/dist/chunk-MBMTND6D.js +456 -0
  194. package/dist/chunk-MBMTND6D.js.map +1 -0
  195. package/dist/{chunk-3BZZJJMQ.js → chunk-MILI22XQ.js} +3 -3
  196. package/dist/{chunk-A2HKRLPV.js → chunk-MXKI4ABF.js} +18 -59
  197. package/dist/chunk-MXKI4ABF.js.map +1 -0
  198. package/dist/{chunk-ZYIYHJ5R.js → chunk-MXOQ5JCG.js} +869 -238
  199. package/dist/chunk-MXOQ5JCG.js.map +1 -0
  200. package/dist/{chunk-V7ZRRCRJ.js → chunk-N7EVQD5S.js} +9 -13
  201. package/dist/chunk-N7EVQD5S.js.map +1 -0
  202. package/dist/chunk-N7UDP5VU.js +757 -0
  203. package/dist/chunk-N7UDP5VU.js.map +1 -0
  204. package/dist/chunk-NBQ3KK6X.js +270 -0
  205. package/dist/chunk-NBQ3KK6X.js.map +1 -0
  206. package/dist/{chunk-ZORTV6NH.js → chunk-NCO25JZO.js} +88 -4
  207. package/dist/chunk-NCO25JZO.js.map +1 -0
  208. package/dist/chunk-NH2UOV3B.js +18 -0
  209. package/dist/chunk-NH2UOV3B.js.map +1 -0
  210. package/dist/chunk-NYMLINRP.js +28 -0
  211. package/dist/chunk-NYMLINRP.js.map +1 -0
  212. package/dist/{chunk-YYP7WSEB.js → chunk-O2IMQSNA.js} +2 -2
  213. package/dist/chunk-O46CHQT7.js +215 -0
  214. package/dist/chunk-O46CHQT7.js.map +1 -0
  215. package/dist/chunk-OIEO4WDL.js +27 -0
  216. package/dist/chunk-OIEO4WDL.js.map +1 -0
  217. package/dist/{chunk-TRGTKX5E.js → chunk-OKSTSITU.js} +27 -4
  218. package/dist/chunk-OKSTSITU.js.map +1 -0
  219. package/dist/chunk-OYW3I5M4.js +31 -0
  220. package/dist/chunk-OYW3I5M4.js.map +1 -0
  221. package/dist/{chunk-Q7HZX3IF.js → chunk-PD64727P.js} +2 -2
  222. package/dist/chunk-PD64727P.js.map +1 -0
  223. package/dist/{chunk-FET5XCAT.js → chunk-PP3K67AJ.js} +34 -6
  224. package/dist/chunk-PP3K67AJ.js.map +1 -0
  225. package/dist/chunk-Q2XRFWOI.js +40 -0
  226. package/dist/chunk-Q2XRFWOI.js.map +1 -0
  227. package/dist/{chunk-QIZPZMUI.js → chunk-Q4UHJ5SN.js} +2 -2
  228. package/dist/{chunk-FAHMLERK.js → chunk-QBLT6POL.js} +2 -2
  229. package/dist/chunk-QMWY2FDS.js +157 -0
  230. package/dist/chunk-QMWY2FDS.js.map +1 -0
  231. package/dist/{chunk-LH5A3ZPG.js → chunk-RB4DOPGZ.js} +150 -22
  232. package/dist/chunk-RB4DOPGZ.js.map +1 -0
  233. package/dist/chunk-RHVMZSUU.js +7 -0
  234. package/dist/chunk-RHVMZSUU.js.map +1 -0
  235. package/dist/{chunk-BUE2D7PX.js → chunk-SMV2HRDU.js} +2 -2
  236. package/dist/chunk-SUZKW6UR.js +25 -0
  237. package/dist/chunk-SUZKW6UR.js.map +1 -0
  238. package/dist/{chunk-7MG7SJT7.js → chunk-SV2PM2OY.js} +1 -1
  239. package/dist/chunk-SV2PM2OY.js.map +1 -0
  240. package/dist/{chunk-UXVWEX5L.js → chunk-SYNY3VB5.js} +6 -2
  241. package/dist/chunk-SYNY3VB5.js.map +1 -0
  242. package/dist/{chunk-4GFX6MPA.js → chunk-TEHHROZL.js} +6 -8
  243. package/dist/chunk-TEHHROZL.js.map +1 -0
  244. package/dist/chunk-TKVUE4JF.js +1289 -0
  245. package/dist/chunk-TKVUE4JF.js.map +1 -0
  246. package/dist/{chunk-SFAWCTEM.js → chunk-TZZBXPZK.js} +2 -2
  247. package/dist/{chunk-F3W6YMDC.js → chunk-U2FZNEWJ.js} +4 -4
  248. package/dist/chunk-U2FZNEWJ.js.map +1 -0
  249. package/dist/{chunk-BLN54W3L.js → chunk-UA372JHH.js} +56 -3
  250. package/dist/chunk-UA372JHH.js.map +1 -0
  251. package/dist/{chunk-6YXCPL4T.js → chunk-UEFOQH74.js} +2 -2
  252. package/dist/chunk-UEFOQH74.js.map +1 -0
  253. package/dist/{chunk-2N5ML6HT.js → chunk-UIYESRD6.js} +9 -11
  254. package/dist/chunk-UIYESRD6.js.map +1 -0
  255. package/dist/{chunk-UHHPLO3I.js → chunk-V3RWOOSO.js} +4 -4
  256. package/dist/{chunk-KTFRCC5C.js → chunk-V7ADQF5O.js} +82 -8
  257. package/dist/chunk-V7ADQF5O.js.map +1 -0
  258. package/dist/{chunk-453F654R.js → chunk-VAORSCSU.js} +3 -3
  259. package/dist/chunk-VAORSCSU.js.map +1 -0
  260. package/dist/{chunk-GPNTB4Y7.js → chunk-VFHCKG5M.js} +6 -10
  261. package/dist/chunk-VFHCKG5M.js.map +1 -0
  262. package/dist/{chunk-2577DKXB.js → chunk-VHBKYN2J.js} +3 -3
  263. package/dist/chunk-VHBKYN2J.js.map +1 -0
  264. package/dist/chunk-VHM7HCKB.js +220 -0
  265. package/dist/chunk-VHM7HCKB.js.map +1 -0
  266. package/dist/{chunk-ZHKOPKE3.js → chunk-VKI2EB3N.js} +3 -3
  267. package/dist/chunk-VKI2EB3N.js.map +1 -0
  268. package/dist/{chunk-UDHWDSRL.js → chunk-VMV5SBE4.js} +16 -17
  269. package/dist/chunk-VMV5SBE4.js.map +1 -0
  270. package/dist/{chunk-SPYWXKJN.js → chunk-VQDZYB2B.js} +3 -3
  271. package/dist/chunk-VQDZYB2B.js.map +1 -0
  272. package/dist/{chunk-Q2PU57HC.js → chunk-VVOLDVIR.js} +2 -2
  273. package/dist/{chunk-3VF3WQ4F.js → chunk-WPOYWFSE.js} +7 -7
  274. package/dist/{chunk-3VF3WQ4F.js.map → chunk-WPOYWFSE.js.map} +1 -1
  275. package/dist/{chunk-OTQZ7ZWU.js → chunk-WXE4W2U6.js} +7 -11
  276. package/dist/chunk-WXE4W2U6.js.map +1 -0
  277. package/dist/chunk-XBKH4FOC.js +195 -0
  278. package/dist/chunk-XBKH4FOC.js.map +1 -0
  279. package/dist/{chunk-TUFM4UZP.js → chunk-XQRFSKYM.js} +2 -2
  280. package/dist/{chunk-3V4KWFX7.js → chunk-XSPFDUDG.js} +58 -53
  281. package/dist/chunk-XSPFDUDG.js.map +1 -0
  282. package/dist/{chunk-GY4WYNNG.js → chunk-Y2RKVFKR.js} +2 -2
  283. package/dist/{chunk-UP4BECPY.js → chunk-Y3LPTBG7.js} +89 -27
  284. package/dist/chunk-Y3LPTBG7.js.map +1 -0
  285. package/dist/{chunk-4OZNXTO4.js → chunk-YRXFFWG4.js} +2 -2
  286. package/dist/classified/index.js +5 -5
  287. package/dist/{classified-marker-BWOFVYAC.js → classified-marker-SIYKUU5L.js} +3 -3
  288. package/dist/classified-marker-SIYKUU5L.js.map +1 -0
  289. package/dist/collection-facade-CS7CA2XO.js +47 -0
  290. package/dist/{computed-VPOKQK4N.js → computed-FAD7SED4.js} +3 -3
  291. package/dist/consent/index.js +10 -11
  292. package/dist/consent/index.js.map +1 -1
  293. package/dist/cover/index.js +10 -11
  294. package/dist/coverage/index.js +306 -0
  295. package/dist/coverage/index.js.map +1 -0
  296. package/dist/custody/index.js +12 -13
  297. package/dist/{dead-filter-PKQDLOT4.js → dead-filter-4F3LWYKH.js} +11 -3
  298. package/dist/dead-filter-4F3LWYKH.js.map +1 -0
  299. package/dist/debug/index.js +11 -2
  300. package/dist/debug/index.js.map +1 -1
  301. package/dist/{delegation-DS5NRILW.js → delegation-NANZDG4N.js} +13 -16
  302. package/dist/delegation-NANZDG4N.js.map +1 -0
  303. package/dist/derivations/index.js +25 -23
  304. package/dist/derive-XLOJVXPU.js +20 -0
  305. package/dist/directory/index.js +10 -11
  306. package/dist/{dispatch-IEPAVQUM.js → dispatch-H4HV32AM.js} +5 -5
  307. package/dist/{dispatch-Q6MWLOJY.js → dispatch-JDZNGEB3.js} +20 -21
  308. package/dist/dispatch-JDZNGEB3.js.map +1 -0
  309. package/dist/executor-FMPVN6DT.js +35 -0
  310. package/dist/executor-LBBBRTN5.js +8 -0
  311. package/dist/executor-OSRZST2U.js +8 -0
  312. package/dist/export-accessible-RAOJAAU5.js +22 -0
  313. package/dist/extract-partition-JD5CUSTG.js +37 -0
  314. package/dist/{fanout-sidecar-S3QL53YX.js → fanout-sidecar-L7NHPIOC.js} +13 -15
  315. package/dist/fanout-sidecar-L7NHPIOC.js.map +1 -0
  316. package/dist/find-JRN4RNQ5.js +10 -0
  317. package/dist/forget/index.js +9 -10
  318. package/dist/forget/index.js.map +1 -1
  319. package/dist/guards/index.js +4 -4
  320. package/dist/history/index.js +13 -14
  321. package/dist/history/index.js.map +1 -1
  322. package/dist/i18n/index.js +14 -15
  323. package/dist/i18n/index.js.map +1 -1
  324. package/dist/index.d.ts +36 -14
  325. package/dist/index.js +970 -163
  326. package/dist/index.js.map +1 -1
  327. package/dist/indexing/index.js +13 -5
  328. package/dist/indexing/index.js.map +1 -1
  329. package/dist/introspection/index.js +11 -12
  330. package/dist/issue-YIVBZUTH.js +19 -0
  331. package/dist/ivf-flat-UZ6DQDLS.js +314 -0
  332. package/dist/ivf-flat-UZ6DQDLS.js.map +1 -0
  333. package/dist/{json-schema-V3M5MUCM.js → json-schema-3SHX72CC.js} +2 -1
  334. package/dist/json-schema-3SHX72CC.js.map +1 -0
  335. package/dist/kernel/attestation-types.d.ts +62 -0
  336. package/dist/kernel/collection-config.d.ts +5 -68
  337. package/dist/kernel/collection.d.ts +30 -9
  338. package/dist/kernel/cutover-transform.d.ts +1 -1
  339. package/dist/kernel/errors.d.ts +257 -38
  340. package/dist/kernel/generation-map.d.ts +48 -0
  341. package/dist/kernel/merge-authority.d.ts +1 -1
  342. package/dist/kernel/noydb.d.ts +6 -1
  343. package/dist/kernel/paths.d.ts +29 -5
  344. package/dist/kernel/prepared-write.d.ts +1 -1
  345. package/dist/kernel/present-cache.d.ts +58 -0
  346. package/dist/kernel/query/all.d.ts +7 -0
  347. package/dist/kernel/query/builder.d.ts +601 -270
  348. package/dist/kernel/query/civil-date.d.ts +64 -0
  349. package/dist/kernel/query/cursor.d.ts +40 -0
  350. package/dist/kernel/query/distinct-key.d.ts +98 -0
  351. package/dist/kernel/query/hydration.d.ts +76 -0
  352. package/dist/kernel/query/index.d.ts +31 -15
  353. package/dist/kernel/query/internal/core.d.ts +30 -0
  354. package/dist/kernel/query/internal/hooks.d.ts +22 -0
  355. package/dist/kernel/query/internal/maintenance.d.ts +43 -0
  356. package/dist/kernel/query/live/incremental.d.ts +314 -0
  357. package/dist/kernel/query/live/index.d.ts +22 -0
  358. package/dist/kernel/query/live/install.d.ts +2 -0
  359. package/dist/kernel/query/{live.d.ts → live/live.d.ts} +39 -9
  360. package/dist/kernel/query/live/methods.d.ts +107 -0
  361. package/dist/kernel/query/predicate.d.ts +119 -1
  362. package/dist/kernel/query/reduce/date-trunc.d.ts +75 -0
  363. package/dist/kernel/query/reduce/index.d.ts +36 -0
  364. package/dist/kernel/query/reduce/install.d.ts +2 -0
  365. package/dist/kernel/query/reduce/methods.d.ts +259 -0
  366. package/dist/kernel/query/reduce/scan-methods.d.ts +121 -0
  367. package/dist/kernel/query/relate/explain.d.ts +199 -0
  368. package/dist/kernel/query/relate/index.d.ts +48 -0
  369. package/dist/kernel/query/relate/install.d.ts +2 -0
  370. package/dist/kernel/query/relate/join-on.d.ts +126 -0
  371. package/dist/kernel/query/relate/join-reduce.d.ts +16 -0
  372. package/dist/kernel/query/relate/join.d.ts +452 -0
  373. package/dist/kernel/query/relate/methods.d.ts +426 -0
  374. package/dist/kernel/query/relate/partition.d.ts +87 -0
  375. package/dist/kernel/query/relate/scan-methods.d.ts +163 -0
  376. package/dist/kernel/query/relate/traverse.d.ts +109 -0
  377. package/dist/kernel/query/scan-builder.d.ts +79 -176
  378. package/dist/kernel/query/sort-key.d.ts +52 -0
  379. package/dist/kernel/secret-mode.d.ts +1 -1
  380. package/dist/kernel/tx-write-gate.d.ts +77 -0
  381. package/dist/kernel/types.d.ts +113 -8
  382. package/dist/kernel/validation.d.ts +27 -10
  383. package/dist/kernel/vault.d.ts +11 -6
  384. package/dist/kernel/via/compose.d.ts +3 -0
  385. package/dist/kernel/via/index.d.ts +56 -0
  386. package/dist/kernel/via/pipeline.d.ts +48 -0
  387. package/dist/kernel/write-queue.d.ts +17 -0
  388. package/dist/{ledger-EDXFFZQL.js → ledger-5ZMGE44K.js} +11 -12
  389. package/dist/liberate-WZSZM2W6.js +24 -0
  390. package/dist/link-set-MFXC24VK.js +29 -0
  391. package/dist/{managed-secret-NCWEMPUQ.js → managed-secret-MFTFT22X.js} +10 -11
  392. package/dist/materialized-views/index.js +30 -24
  393. package/dist/{migrate-cek-5ENH64AA.js → migrate-cek-DZRFFOHW.js} +2 -2
  394. package/dist/money/index.js +5 -5
  395. package/dist/noydb-ITIGNKUF.js +96 -0
  396. package/dist/overlay-views/index.js +4 -4
  397. package/dist/periods/index.js +12 -13
  398. package/dist/pod/index.js +74 -67
  399. package/dist/{pod-handle-ECVCDIXW.js → pod-handle-A3LET7NO.js} +10 -11
  400. package/dist/pod-handle-A3LET7NO.js.map +1 -0
  401. package/dist/policy/index.js +10 -11
  402. package/dist/port/on/index.d.ts +1 -1
  403. package/dist/port/to/index.d.ts +1 -1
  404. package/dist/port/with/blob-strategy.d.ts +10 -1
  405. package/dist/port/with/classified-strategy.d.ts +1 -1
  406. package/dist/port/with/collection-options.d.ts +6 -1
  407. package/dist/port/with/collection-registries.d.ts +1 -1
  408. package/dist/port/with/coverage-strategy.d.ts +83 -0
  409. package/dist/port/with/lookup-strategy.d.ts +2 -2
  410. package/dist/port/with/service-bus.d.ts +46 -0
  411. package/dist/port/with/strategies.d.ts +2 -0
  412. package/dist/portability/index.js +8 -8
  413. package/dist/{post-register-3IPCSG6Q.js → post-register-7ND27CF2.js} +6 -6
  414. package/dist/post-register-7ND27CF2.js.map +1 -0
  415. package/dist/query/all/index.js +31 -0
  416. package/dist/query/index.js +20 -32
  417. package/dist/query/live/index.js +21 -0
  418. package/dist/query/live/index.js.map +1 -0
  419. package/dist/query/reduce/index.js +33 -0
  420. package/dist/query/reduce/index.js.map +1 -0
  421. package/dist/query/relate/index.js +56 -0
  422. package/dist/query/relate/index.js.map +1 -0
  423. package/dist/reduce/index.js +72 -18
  424. package/dist/reduce/index.js.map +1 -1
  425. package/dist/register-DT5HZ2LZ.js +30 -0
  426. package/dist/registry-BHRZGZHF.js +8 -0
  427. package/dist/registry-ET6ZFFWA.js +34 -0
  428. package/dist/registry-HXFGLGTG.js +8 -0
  429. package/dist/registry-THCPDEOD.js +23 -0
  430. package/dist/request-withdrawal-AV2MJJKY.js +30 -0
  431. package/dist/{reveal-QZDHSGD4.js → reveal-B2TLP4JQ.js} +10 -9
  432. package/dist/reveal-B2TLP4JQ.js.map +1 -0
  433. package/dist/revoke-6DWIEOCV.js +24 -0
  434. package/dist/satellites/index.js +1 -1
  435. package/dist/schema-update/index.js +2 -2
  436. package/dist/sealed-record/index.js +16 -18
  437. package/dist/sealed-record/index.js.map +1 -1
  438. package/dist/search/index.js +11 -5
  439. package/dist/{seed-X5CC22CQ.js → seed-XNSE4U3S.js} +15 -18
  440. package/dist/seed-XNSE4U3S.js.map +1 -0
  441. package/dist/sequence/index.js +9 -10
  442. package/dist/session/index.js +9 -10
  443. package/dist/session/index.js.map +1 -1
  444. package/dist/shadow/index.js +2 -2
  445. package/dist/signer-MHGW3OIL.js +23 -0
  446. package/dist/snapshots/index.js +11 -11
  447. package/dist/stale-6GCFMOOR.js +28 -0
  448. package/dist/storage-BYN5LO6Z.js +21 -0
  449. package/dist/storage-BYN5LO6Z.js.map +1 -0
  450. package/dist/store/index.js +1 -1
  451. package/dist/{store-coordination-provider-4WZAIRHC.js → store-coordination-provider-C4BPT5XF.js} +11 -12
  452. package/dist/store-coordination-provider-C4BPT5XF.js.map +1 -0
  453. package/dist/sync/index.js +10 -11
  454. package/dist/sync/index.js.map +1 -1
  455. package/dist/team/index.js +17 -16
  456. package/dist/tiers/index.js +13 -12
  457. package/dist/to/index.js +2 -2
  458. package/dist/transactions/index.js +3 -3
  459. package/dist/util/index.js +1 -1
  460. package/dist/vault-head/index.js +11 -14
  461. package/dist/vault-head/index.js.map +1 -1
  462. package/dist/{verify-6MDTIUEV.js → verify-UKALW7C2.js} +14 -12
  463. package/dist/verify-UKALW7C2.js.map +1 -0
  464. package/dist/via/blob/index.d.ts +1 -0
  465. package/dist/via/classified/binding.d.ts +2 -2
  466. package/dist/via/classified/config-drift.d.ts +2 -2
  467. package/dist/via/classified/errors.d.ts +1 -1
  468. package/dist/via/geo/binding.d.ts +31 -0
  469. package/dist/via/geo/descriptor.d.ts +54 -0
  470. package/dist/via/geo/geohash.d.ts +95 -0
  471. package/dist/via/geo/index.d.ts +13 -0
  472. package/dist/via/geo/where.d.ts +50 -0
  473. package/dist/via/i18n/core.d.ts +1 -1
  474. package/dist/via/lookup/handle.d.ts +4 -4
  475. package/dist/via/lookup/registry.d.ts +1 -1
  476. package/dist/via/lookup/snapshot.d.ts +3 -3
  477. package/dist/walk-4VPK7AS4.js +20 -0
  478. package/dist/walk-4VPK7AS4.js.map +1 -0
  479. package/dist/with-audit/attestation/index.d.ts +2 -1
  480. package/dist/with-audit/attestation/issue.d.ts +2 -2
  481. package/dist/with-audit/attestation/revoke.d.ts +2 -2
  482. package/dist/with-audit/attestation/scheme.d.ts +7 -0
  483. package/dist/with-audit/attestation/signer.d.ts +1 -1
  484. package/dist/with-audit/attestation/strategy.d.ts +2 -2
  485. package/dist/with-audit/attestation/types.d.ts +10 -0
  486. package/dist/with-audit/attestation/vault-facade.d.ts +2 -2
  487. package/dist/with-audit/attestation/verifier.d.ts +6 -0
  488. package/dist/with-audit/consent/consent.d.ts +1 -1
  489. package/dist/with-audit/consent/strategy.d.ts +1 -1
  490. package/dist/with-audit/coverage/accounting.d.ts +112 -0
  491. package/dist/with-audit/coverage/active.d.ts +29 -0
  492. package/dist/with-audit/coverage/index.d.ts +61 -0
  493. package/dist/with-audit/coverage/sketch.d.ts +75 -0
  494. package/dist/with-audit/forget/subject-index.d.ts +1 -1
  495. package/dist/with-audit/periods/periods.d.ts +55 -7
  496. package/dist/with-audit/periods/reserved-collections.d.ts +3 -0
  497. package/dist/with-audit/periods/vault-facade.d.ts +18 -1
  498. package/dist/with-audit/sealed-record/index.d.ts +2 -2
  499. package/dist/with-audit/sealed-record/strategy.d.ts +1 -1
  500. package/dist/with-audit/tiers/index.d.ts +53 -2
  501. package/dist/with-audit/tiers/strategy.d.ts +8 -0
  502. package/dist/with-cargo/adopt-partition.d.ts +1 -1
  503. package/dist/with-cargo/extract-partition.d.ts +1 -1
  504. package/dist/with-cargo/floor.d.ts +3 -3
  505. package/dist/with-commit/history/history.d.ts +2 -2
  506. package/dist/with-commit/history/index.d.ts +1 -1
  507. package/dist/with-commit/history/ledger/store.d.ts +1 -1
  508. package/dist/with-commit/history/strategy.d.ts +1 -1
  509. package/dist/with-commit/history/time-machine.d.ts +1 -1
  510. package/dist/with-commit/numbering/index.d.ts +1 -1
  511. package/dist/with-commit/sequence/index.d.ts +1 -1
  512. package/dist/with-commit/tx/invariants.d.ts +1 -1
  513. package/dist/with-commit/tx/transaction.d.ts +13 -3
  514. package/dist/with-commit/vault-head/head.d.ts +1 -1
  515. package/dist/with-commit/vault-head/index.d.ts +1 -1
  516. package/dist/with-commit/vault-head/strategy.d.ts +1 -1
  517. package/dist/with-commit/vault-head/verify.d.ts +1 -1
  518. package/dist/with-formula/derivations/dispatch.d.ts +1 -1
  519. package/dist/with-formula/derivations/fanout-sidecar.d.ts +1 -1
  520. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +4 -3
  521. package/dist/with-formula/materialized-views/emit-memo.d.ts +40 -0
  522. package/dist/with-formula/materialized-views/executor.d.ts +8 -0
  523. package/dist/with-formula/materialized-views/index.d.ts +1 -1
  524. package/dist/with-formula/materialized-views/registry.d.ts +15 -0
  525. package/dist/with-formula/materialized-views/types.d.ts +106 -14
  526. package/dist/with-formula/materialized-views/window-stage.d.ts +11 -0
  527. package/dist/with-formula/overlay-views/types.d.ts +1 -1
  528. package/dist/with-formula/overlay-views/virtual-collection.d.ts +13 -4
  529. package/dist/with-lookup/embeddings/chunks.d.ts +79 -0
  530. package/dist/with-lookup/embeddings/descriptor.d.ts +21 -0
  531. package/dist/with-lookup/embeddings/index.d.ts +3 -0
  532. package/dist/with-lookup/embeddings/ivf-flat.d.ts +93 -0
  533. package/dist/with-lookup/embeddings/vector-index.d.ts +73 -0
  534. package/dist/with-lookup/embeddings/vector-set.d.ts +94 -1
  535. package/dist/with-lookup/embeddings/with-vector-index.d.ts +67 -0
  536. package/dist/with-lookup/indexing/collection-facade.d.ts +86 -3
  537. package/dist/with-lookup/indexing/compound-indexes.d.ts +129 -0
  538. package/dist/with-lookup/indexing/eager-indexes.d.ts +170 -1
  539. package/dist/with-lookup/indexing/index-snapshot.d.ts +62 -0
  540. package/dist/with-lookup/indexing/lazy-builder.d.ts +33 -0
  541. package/dist/with-lookup/indexing/persisted-field-indexes.d.ts +104 -0
  542. package/dist/with-lookup/indexing/persisted-indexes.d.ts +12 -0
  543. package/dist/with-lookup/indexing/sorted-indexes.d.ts +117 -0
  544. package/dist/with-lookup/indexing/unique-constraints.d.ts +106 -23
  545. package/dist/with-lookup/reduce/active.d.ts +2 -24
  546. package/dist/with-lookup/reduce/group-core.d.ts +43 -0
  547. package/dist/with-lookup/reduce/groupby.d.ts +195 -36
  548. package/dist/with-lookup/reduce/incremental-group.d.ts +153 -0
  549. package/dist/with-lookup/reduce/index.d.ts +26 -5
  550. package/dist/with-lookup/reduce/reducers.d.ts +255 -1
  551. package/dist/with-lookup/reduce/reduction.d.ts +44 -13
  552. package/dist/with-lookup/reduce/strategy.d.ts +43 -3
  553. package/dist/with-lookup/reduce/window.d.ts +262 -0
  554. package/dist/with-lookup/search/collection-facade.d.ts +45 -9
  555. package/dist/with-lookup/search/index-store.d.ts +5 -3
  556. package/dist/with-lookup/search/index.d.ts +4 -2
  557. package/dist/with-lookup/search/inverted-index.d.ts +38 -2
  558. package/dist/with-lookup/search/persisted-index-store.d.ts +5 -2
  559. package/dist/with-lookup/search/phrase.d.ts +28 -0
  560. package/dist/with-lookup/search/retrieve-types.d.ts +57 -1
  561. package/dist/with-lookup/search/serialize.d.ts +29 -3
  562. package/dist/with-lookup/search/strategy.d.ts +2 -6
  563. package/dist/with-party/broker/index.d.ts +3 -3
  564. package/dist/with-party/directory/cover/index.d.ts +1 -1
  565. package/dist/with-party/directory/cover/storage.d.ts +1 -1
  566. package/dist/with-party/directory/cover/types.d.ts +1 -1
  567. package/dist/with-party/directory/index.d.ts +1 -1
  568. package/dist/with-party/directory/types.d.ts +1 -1
  569. package/dist/with-party/directory/user-envelope/api.d.ts +1 -1
  570. package/dist/with-party/directory/user-envelope/storage.d.ts +1 -1
  571. package/dist/with-party/policy/engine.d.ts +1 -1
  572. package/dist/with-party/policy/index.d.ts +1 -1
  573. package/dist/with-party/policy/presets.d.ts +1 -1
  574. package/dist/with-party/team/authenticators.d.ts +91 -1
  575. package/dist/with-party/team/delegation.d.ts +1 -1
  576. package/dist/with-party/team/echo-secret.d.ts +2 -2
  577. package/dist/with-party/team/index.d.ts +4 -3
  578. package/dist/with-party/team/keyring.d.ts +2 -2
  579. package/dist/with-party/team/magic-link-grant.d.ts +1 -1
  580. package/dist/with-party/team/managed-secret.d.ts +1 -1
  581. package/dist/with-party/team/noydb-facade.d.ts +12 -3
  582. package/dist/with-party/team/recovery.d.ts +1 -1
  583. package/dist/with-party/team/roster-tag.d.ts +1 -1
  584. package/dist/with-party/team/rotate-recover.d.ts +1 -1
  585. package/dist/with-party/team/wrapped-deks.d.ts +1 -1
  586. package/dist/with-pod/format.d.ts +1 -1
  587. package/dist/with-pod/index.d.ts +1 -1
  588. package/dist/with-pod/pod.d.ts +1 -1
  589. package/dist/with-shape/blobs/blob-compaction.d.ts +17 -1
  590. package/dist/with-shape/blobs/blob-intent.d.ts +1 -1
  591. package/dist/with-shape/blobs/blob-set.d.ts +23 -4
  592. package/dist/with-shape/blobs/legacy-sweep.d.ts +35 -0
  593. package/dist/with-shape/introspection/describe.d.ts +7 -1
  594. package/dist/with-shape/introspection/field-meta.d.ts +18 -0
  595. package/dist/with-shape/introspection/types.d.ts +57 -1
  596. package/dist/with-shape/introspection/walk.d.ts +1 -1
  597. package/dist/with-shape/links/lazy-handle.d.ts +1 -1
  598. package/dist/with-shape/links/link-set.d.ts +1 -1
  599. package/dist/with-shape/links/vault-facade.d.ts +1 -1
  600. package/dist/with-shape/manifest/derive.d.ts +1 -1
  601. package/dist/with-shape/manifest/storage.d.ts +1 -1
  602. package/dist/with-shape/persisted-schemas/register.d.ts +1 -1
  603. package/dist/with-shape/persisted-schemas/storage.d.ts +1 -1
  604. package/dist/with-shape/satellites/dead-filter.d.ts +1 -1
  605. package/dist/with-shape/satellites/declare.d.ts +1 -1
  606. package/dist/with-shape/satellites/marker.d.ts +1 -1
  607. package/dist/with-shape/satellites/post-register.d.ts +1 -1
  608. package/dist/with-store/partitioned/index.d.ts +337 -0
  609. package/dist/with-sync/change-broadcast.d.ts +153 -0
  610. package/dist/with-sync/presence.d.ts +5 -10
  611. package/dist/withdraw-accessible-HL7GACUE.js +27 -0
  612. package/dist/withdraw-accessible-HL7GACUE.js.map +1 -0
  613. package/package.json +48 -12
  614. package/dist/api-WYW4YEQG.js +0 -19
  615. package/dist/backup-XKCXVKV3.js.map +0 -1
  616. package/dist/chunk-2577DKXB.js.map +0 -1
  617. package/dist/chunk-2ENE6445.js.map +0 -1
  618. package/dist/chunk-2N5ML6HT.js.map +0 -1
  619. package/dist/chunk-334WSVOW.js.map +0 -1
  620. package/dist/chunk-3BVH633C.js.map +0 -1
  621. package/dist/chunk-3PGS7TYR.js.map +0 -1
  622. package/dist/chunk-3V4KWFX7.js.map +0 -1
  623. package/dist/chunk-453F654R.js.map +0 -1
  624. package/dist/chunk-4GFX6MPA.js.map +0 -1
  625. package/dist/chunk-4GVM6QZA.js.map +0 -1
  626. package/dist/chunk-4ZS56W5S.js.map +0 -1
  627. package/dist/chunk-5VCRVKOZ.js.map +0 -1
  628. package/dist/chunk-6YXCPL4T.js.map +0 -1
  629. package/dist/chunk-7APJ6CO6.js.map +0 -1
  630. package/dist/chunk-7MG2LHO5.js +0 -1616
  631. package/dist/chunk-7MG2LHO5.js.map +0 -1
  632. package/dist/chunk-7MG7SJT7.js.map +0 -1
  633. package/dist/chunk-7O3Y4PPD.js.map +0 -1
  634. package/dist/chunk-A2HKRLPV.js.map +0 -1
  635. package/dist/chunk-A66I4JOA.js.map +0 -1
  636. package/dist/chunk-ACAQ2DSG.js.map +0 -1
  637. package/dist/chunk-ATL3ZVXT.js +0 -151
  638. package/dist/chunk-ATL3ZVXT.js.map +0 -1
  639. package/dist/chunk-AYX7AINO.js.map +0 -1
  640. package/dist/chunk-BLN54W3L.js.map +0 -1
  641. package/dist/chunk-BRLKZUBT.js +0 -95
  642. package/dist/chunk-BRLKZUBT.js.map +0 -1
  643. package/dist/chunk-BTDR2PXY.js +0 -29
  644. package/dist/chunk-BTDR2PXY.js.map +0 -1
  645. package/dist/chunk-BVN6KXL2.js.map +0 -1
  646. package/dist/chunk-CHQCZZWC.js.map +0 -1
  647. package/dist/chunk-CUQPWYRX.js.map +0 -1
  648. package/dist/chunk-CUZLNGD5.js.map +0 -1
  649. package/dist/chunk-DFMWUOU5.js.map +0 -1
  650. package/dist/chunk-EIPVYUEP.js.map +0 -1
  651. package/dist/chunk-EQEYOJBM.js.map +0 -1
  652. package/dist/chunk-F3W6YMDC.js.map +0 -1
  653. package/dist/chunk-FET5XCAT.js.map +0 -1
  654. package/dist/chunk-G73UVHCA.js.map +0 -1
  655. package/dist/chunk-GPNTB4Y7.js.map +0 -1
  656. package/dist/chunk-GYGLAVCX.js.map +0 -1
  657. package/dist/chunk-HIWCKBEY.js.map +0 -1
  658. package/dist/chunk-HJUWN7JN.js.map +0 -1
  659. package/dist/chunk-HK67PX4J.js.map +0 -1
  660. package/dist/chunk-HPVZCW43.js +0 -479
  661. package/dist/chunk-HPVZCW43.js.map +0 -1
  662. package/dist/chunk-I3ISCYT7.js +0 -159
  663. package/dist/chunk-I3ISCYT7.js.map +0 -1
  664. package/dist/chunk-K23VKTN4.js.map +0 -1
  665. package/dist/chunk-KKEESNPE.js.map +0 -1
  666. package/dist/chunk-KTFRCC5C.js.map +0 -1
  667. package/dist/chunk-LH5A3ZPG.js.map +0 -1
  668. package/dist/chunk-LP7BEXCT.js +0 -32
  669. package/dist/chunk-LP7BEXCT.js.map +0 -1
  670. package/dist/chunk-M4YPHYEH.js.map +0 -1
  671. package/dist/chunk-NSITFOCJ.js +0 -99
  672. package/dist/chunk-NSITFOCJ.js.map +0 -1
  673. package/dist/chunk-OTQZ7ZWU.js.map +0 -1
  674. package/dist/chunk-P3MG6QCN.js.map +0 -1
  675. package/dist/chunk-PEOZ34EM.js.map +0 -1
  676. package/dist/chunk-PPTHY5QO.js.map +0 -1
  677. package/dist/chunk-Q2MPFCQ7.js.map +0 -1
  678. package/dist/chunk-Q7HZX3IF.js.map +0 -1
  679. package/dist/chunk-QPQUVOZ2.js.map +0 -1
  680. package/dist/chunk-QTQUH4DS.js.map +0 -1
  681. package/dist/chunk-R42NSZI6.js.map +0 -1
  682. package/dist/chunk-R7BX2NB3.js.map +0 -1
  683. package/dist/chunk-RSGLUIO6.js.map +0 -1
  684. package/dist/chunk-RTBJ5IOO.js +0 -87
  685. package/dist/chunk-RTBJ5IOO.js.map +0 -1
  686. package/dist/chunk-SGZAIJCV.js.map +0 -1
  687. package/dist/chunk-SKGMN35F.js.map +0 -1
  688. package/dist/chunk-SPYWXKJN.js.map +0 -1
  689. package/dist/chunk-SZJ3DLZA.js +0 -66
  690. package/dist/chunk-SZJ3DLZA.js.map +0 -1
  691. package/dist/chunk-TRGTKX5E.js.map +0 -1
  692. package/dist/chunk-UDHWDSRL.js.map +0 -1
  693. package/dist/chunk-UP4BECPY.js.map +0 -1
  694. package/dist/chunk-UXVWEX5L.js.map +0 -1
  695. package/dist/chunk-V7ZRRCRJ.js.map +0 -1
  696. package/dist/chunk-WQBG4SZS.js.map +0 -1
  697. package/dist/chunk-XKWGNJ26.js.map +0 -1
  698. package/dist/chunk-YMUFFJCO.js.map +0 -1
  699. package/dist/chunk-ZHKOPKE3.js.map +0 -1
  700. package/dist/chunk-ZN4FD4PE.js +0 -364
  701. package/dist/chunk-ZN4FD4PE.js.map +0 -1
  702. package/dist/chunk-ZORTV6NH.js.map +0 -1
  703. package/dist/chunk-ZYIYHJ5R.js.map +0 -1
  704. package/dist/classified-marker-BWOFVYAC.js.map +0 -1
  705. package/dist/collection-facade-JSJYIKS4.js +0 -45
  706. package/dist/dead-filter-PKQDLOT4.js.map +0 -1
  707. package/dist/delegation-DS5NRILW.js.map +0 -1
  708. package/dist/derive-E642AOUB.js +0 -21
  709. package/dist/dispatch-Q6MWLOJY.js.map +0 -1
  710. package/dist/executor-5NIMLSKZ.js +0 -8
  711. package/dist/executor-7UQ3BZ4F.js +0 -29
  712. package/dist/executor-AQVXV5GZ.js +0 -8
  713. package/dist/export-accessible-ORMKLA3E.js +0 -22
  714. package/dist/extract-partition-NKYO3WNG.js +0 -37
  715. package/dist/fanout-sidecar-S3QL53YX.js.map +0 -1
  716. package/dist/find-NOGJ25VX.js +0 -10
  717. package/dist/issue-3DTQ7VJJ.js +0 -18
  718. package/dist/json-schema-V3M5MUCM.js.map +0 -1
  719. package/dist/kernel/enclave/classify/compare.d.ts +0 -10
  720. package/dist/kernel/enclave/index.d.ts +0 -87
  721. package/dist/kernel/enclave/record-keys/lifecycle.d.ts +0 -124
  722. package/dist/kernel/enclave/record-keys/rekey-blob.d.ts +0 -88
  723. package/dist/kernel/enclave/record-keys/rekey.d.ts +0 -91
  724. package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +0 -14
  725. package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +0 -123
  726. package/dist/kernel/enclave/record-keys/sealing.d.ts +0 -70
  727. package/dist/kernel/query/join.d.ts +0 -232
  728. package/dist/liberate-V35QUHJP.js +0 -24
  729. package/dist/link-set-2TTM3IZC.js +0 -30
  730. package/dist/noydb-62MX4QUG.js +0 -90
  731. package/dist/pod-handle-ECVCDIXW.js.map +0 -1
  732. package/dist/post-register-3IPCSG6Q.js.map +0 -1
  733. package/dist/register-HHLXEQDN.js +0 -31
  734. package/dist/registry-23WF3TGH.js +0 -8
  735. package/dist/registry-4AYVUNXK.js +0 -8
  736. package/dist/registry-JS3YFQQM.js +0 -18
  737. package/dist/registry-XX2Z7B46.js +0 -32
  738. package/dist/request-withdrawal-CHPATE4G.js +0 -30
  739. package/dist/reveal-QZDHSGD4.js.map +0 -1
  740. package/dist/revoke-7M2VW4ON.js +0 -23
  741. package/dist/seed-X5CC22CQ.js.map +0 -1
  742. package/dist/signer-SJQJVSM6.js +0 -24
  743. package/dist/stale-BZS6H2RY.js +0 -29
  744. package/dist/storage-RW4QBS23.js +0 -22
  745. package/dist/store-coordination-provider-4WZAIRHC.js.map +0 -1
  746. package/dist/verify-6MDTIUEV.js.map +0 -1
  747. package/dist/walk-ZURCH6RZ.js +0 -21
  748. package/dist/withdraw-accessible-PXR4IXDX.js +0 -27
  749. /package/dist/{api-WYW4YEQG.js.map → api-OS747DS4.js.map} +0 -0
  750. /package/dist/{computed-VPOKQK4N.js.map → capsule/contract.js.map} +0 -0
  751. /package/dist/{kernel/enclave → capsule/enclave-aes}/broker/proof.d.ts +0 -0
  752. /package/dist/{kernel/enclave → capsule/enclave-aes}/classify/bidx.d.ts +0 -0
  753. /package/dist/{kernel/enclave → capsule/enclave-aes}/classify/digest.d.ts +0 -0
  754. /package/dist/{kernel/enclave → capsule/enclave-aes}/classify/vdig.d.ts +0 -0
  755. /package/dist/{kernel/enclave/classify → capsule/plumbing}/kofn.d.ts +0 -0
  756. /package/dist/{kernel/enclave/classify → capsule/plumbing}/normalize.d.ts +0 -0
  757. /package/dist/{kernel/enclave → capsule/plumbing}/record-aad.d.ts +0 -0
  758. /package/dist/{collection-facade-JSJYIKS4.js.map → capsule-VOLX3QRQ.js.map} +0 -0
  759. /package/dist/{chunk-MVMXZYXT.js.map → chunk-2GHDLTPE.js.map} +0 -0
  760. /package/dist/{chunk-XLMEZIAJ.js.map → chunk-2ODVB6LZ.js.map} +0 -0
  761. /package/dist/{chunk-RMS3NEA3.js.map → chunk-4JPMZTJY.js.map} +0 -0
  762. /package/dist/{chunk-NQKIUNW5.js.map → chunk-52MGURXO.js.map} +0 -0
  763. /package/dist/{chunk-UGTBXF5U.js.map → chunk-7XMHMVTS.js.map} +0 -0
  764. /package/dist/{chunk-BZ3534YM.js.map → chunk-AUKKUPVB.js.map} +0 -0
  765. /package/dist/{derive-E642AOUB.js.map → chunk-BKT776R5.js.map} +0 -0
  766. /package/dist/{chunk-6LKOJBV6.js.map → chunk-BVCUTXE3.js.map} +0 -0
  767. /package/dist/{chunk-VTFVLCUH.js.map → chunk-DIZLQVAA.js.map} +0 -0
  768. /package/dist/{chunk-LWBCUYZW.js.map → chunk-E2N2T5ZO.js.map} +0 -0
  769. /package/dist/{chunk-JVIBCBC7.js.map → chunk-EJLV62NI.js.map} +0 -0
  770. /package/dist/{chunk-JMGDHKQF.js.map → chunk-FLPCETP6.js.map} +0 -0
  771. /package/dist/{chunk-DGOZ4UZD.js.map → chunk-FVH5QYY2.js.map} +0 -0
  772. /package/dist/{chunk-JBDFMYKQ.js.map → chunk-GZT3NQRA.js.map} +0 -0
  773. /package/dist/{chunk-TFR7DSOV.js.map → chunk-H427H63K.js.map} +0 -0
  774. /package/dist/{chunk-SMH6SRX7.js.map → chunk-JOSPH3E5.js.map} +0 -0
  775. /package/dist/{chunk-3BZZJJMQ.js.map → chunk-MILI22XQ.js.map} +0 -0
  776. /package/dist/{chunk-YYP7WSEB.js.map → chunk-O2IMQSNA.js.map} +0 -0
  777. /package/dist/{chunk-QIZPZMUI.js.map → chunk-Q4UHJ5SN.js.map} +0 -0
  778. /package/dist/{chunk-FAHMLERK.js.map → chunk-QBLT6POL.js.map} +0 -0
  779. /package/dist/{chunk-BUE2D7PX.js.map → chunk-SMV2HRDU.js.map} +0 -0
  780. /package/dist/{chunk-SFAWCTEM.js.map → chunk-TZZBXPZK.js.map} +0 -0
  781. /package/dist/{chunk-UHHPLO3I.js.map → chunk-V3RWOOSO.js.map} +0 -0
  782. /package/dist/{chunk-Q2PU57HC.js.map → chunk-VVOLDVIR.js.map} +0 -0
  783. /package/dist/{chunk-TUFM4UZP.js.map → chunk-XQRFSKYM.js.map} +0 -0
  784. /package/dist/{chunk-GY4WYNNG.js.map → chunk-Y2RKVFKR.js.map} +0 -0
  785. /package/dist/{chunk-4OZNXTO4.js.map → chunk-YRXFFWG4.js.map} +0 -0
  786. /package/dist/{enclave-55PAM4YO.js.map → collection-facade-CS7CA2XO.js.map} +0 -0
  787. /package/dist/{executor-5NIMLSKZ.js.map → computed-FAD7SED4.js.map} +0 -0
  788. /package/dist/{executor-7UQ3BZ4F.js.map → derive-XLOJVXPU.js.map} +0 -0
  789. /package/dist/{dispatch-IEPAVQUM.js.map → dispatch-H4HV32AM.js.map} +0 -0
  790. /package/dist/{executor-AQVXV5GZ.js.map → executor-FMPVN6DT.js.map} +0 -0
  791. /package/dist/{export-accessible-ORMKLA3E.js.map → executor-LBBBRTN5.js.map} +0 -0
  792. /package/dist/{extract-partition-NKYO3WNG.js.map → executor-OSRZST2U.js.map} +0 -0
  793. /package/dist/{find-NOGJ25VX.js.map → export-accessible-RAOJAAU5.js.map} +0 -0
  794. /package/dist/{issue-3DTQ7VJJ.js.map → extract-partition-JD5CUSTG.js.map} +0 -0
  795. /package/dist/{ledger-EDXFFZQL.js.map → find-JRN4RNQ5.js.map} +0 -0
  796. /package/dist/{liberate-V35QUHJP.js.map → issue-YIVBZUTH.js.map} +0 -0
  797. /package/dist/{link-set-2TTM3IZC.js.map → ledger-5ZMGE44K.js.map} +0 -0
  798. /package/dist/{managed-secret-NCWEMPUQ.js.map → liberate-WZSZM2W6.js.map} +0 -0
  799. /package/dist/{noydb-62MX4QUG.js.map → link-set-MFXC24VK.js.map} +0 -0
  800. /package/dist/{register-HHLXEQDN.js.map → managed-secret-MFTFT22X.js.map} +0 -0
  801. /package/dist/{migrate-cek-5ENH64AA.js.map → migrate-cek-DZRFFOHW.js.map} +0 -0
  802. /package/dist/{registry-23WF3TGH.js.map → noydb-ITIGNKUF.js.map} +0 -0
  803. /package/dist/{registry-4AYVUNXK.js.map → query/all/index.js.map} +0 -0
  804. /package/dist/{registry-JS3YFQQM.js.map → register-DT5HZ2LZ.js.map} +0 -0
  805. /package/dist/{registry-XX2Z7B46.js.map → registry-BHRZGZHF.js.map} +0 -0
  806. /package/dist/{request-withdrawal-CHPATE4G.js.map → registry-ET6ZFFWA.js.map} +0 -0
  807. /package/dist/{revoke-7M2VW4ON.js.map → registry-HXFGLGTG.js.map} +0 -0
  808. /package/dist/{signer-SJQJVSM6.js.map → registry-THCPDEOD.js.map} +0 -0
  809. /package/dist/{stale-BZS6H2RY.js.map → request-withdrawal-AV2MJJKY.js.map} +0 -0
  810. /package/dist/{storage-RW4QBS23.js.map → revoke-6DWIEOCV.js.map} +0 -0
  811. /package/dist/{walk-ZURCH6RZ.js.map → signer-MHGW3OIL.js.map} +0 -0
  812. /package/dist/{withdraw-accessible-PXR4IXDX.js.map → stale-6GCFMOOR.js.map} +0 -0
@@ -0,0 +1,159 @@
1
+ /**
2
+ * The capsule seam (capsule seam spec, Section 2).
3
+ *
4
+ * A capsule is hub's crypto interior behind one contract. `enclave-aes` is the
5
+ * default and ships INSIDE hub, so `npm install @noy-db/hub` alone is a working
6
+ * noy-db. An alternative binds at BUILD TIME through hub's `imports` map —
7
+ * deliberately not at runtime: a `createNoydb({ capsule })` option would be a
8
+ * hot-swap surface, and a build condition lives in build config where the
9
+ * shipped bundle stays auditable (`npm ls` tells an auditor whether a build is
10
+ * plaintext-at-rest).
11
+ *
12
+ * ⛔ `CapsuleKey` is OPAQUE outside `capsule/`. Never construct, inspect or
13
+ * serialise one; only pass it between contract functions. A fork may define it
14
+ * as something that is not a `CryptoKey` at all — hardware-backed,
15
+ * post-quantum, or null for a capsule that does no encryption.
16
+ */
17
+ import { NoydbError } from '../kernel/errors.js';
18
+ import type { VdigFieldPolicy } from '../kernel/types.js';
19
+ /** Opaque key at the capsule seam. `CryptoKey` in the reference capsule. */
20
+ export type CapsuleKey = CryptoKey;
21
+ /** Opaque asymmetric pair at the capsule seam. */
22
+ export type CapsuleKeyPair = CryptoKeyPair;
23
+ /**
24
+ * The groups a capsule may support. A capsule declares its set via
25
+ * `capabilities()`; a service needing a group asserts at `createNoydb()`.
26
+ *
27
+ * `authenticate` and `seal` are what an `enclave-*` MUST support and an
28
+ * `exclave-*` MUST refuse. That prefix rule is asserted by the conformance
29
+ * suite from the package name, which is what makes the prefix a trust posture
30
+ * rather than a naming convention.
31
+ */
32
+ export type CapsuleGroup = 'authenticate' | 'seal' | 'cipher' | 'digest' | 'sign' | 'codec' | 'sealing' | 'deterministic' | 'classify';
33
+ /**
34
+ * Thrown at `createNoydb()` when a service needs a group the bound capsule
35
+ * does not support.
36
+ *
37
+ * ⚠️ Never thrown on first write, and never discovered by try/catch probing: a
38
+ * consumer learns at startup or not at all. A capability discovered mid-write
39
+ * is a half-built vault.
40
+ */
41
+ /**
42
+ * Refuse at CONSTRUCTION when a service needs a capsule group the bound
43
+ * capsule lacks.
44
+ *
45
+ * ⛔ At startup or not at all. A capability discovered on first write is a
46
+ * half-built vault: some records sealed, a service silently inert, and a
47
+ * consumer who cannot tell a missing capability from a bug. `capabilities()`
48
+ * is a set, so this is a membership test — never a try/catch probe against the
49
+ * primitive itself, which would make "unsupported" and "broken" the same
50
+ * observation.
51
+ *
52
+ * Lives on the CONTRACT, not in the kernel: it depends on nothing but the
53
+ * declared set, and every capsule's consumers need the same assertion.
54
+ *
55
+ * ⚠️ Per-service wiring is deliberately NOT done yet. `enclave-aes` supports
56
+ * every group, so every call site would be unreachable code behind an
57
+ * untestable branch. It lands in Stage C with `exclave-plain`, which is the
58
+ * first capsule that refuses anything. Until then this is exercised against a
59
+ * stub set — see `__tests__/capsule-capabilities.test.ts`.
60
+ */
61
+ export declare function assertCapsuleSupports(caps: ReadonlySet<CapsuleGroup>, group: CapsuleGroup, requirer: string): void;
62
+ export declare class CapsuleNotSupportedError extends NoydbError {
63
+ readonly group: CapsuleGroup;
64
+ readonly requirer: string;
65
+ constructor(group: CapsuleGroup, requirer: string);
66
+ }
67
+ /**
68
+ * The 13 cipher primitives the shared plumbing needs — the ENTIRE surface a
69
+ * capsule must actually implement.
70
+ *
71
+ * ⭐ This is the measurement that shaped Stage C. `enclave-aes` is ~4,200
72
+ * lines, but only ~1,200 of them touch `crypto.subtle`; the other ~3,000 are
73
+ * envelope assembly, record-identity AAD, tombstones and the record codec —
74
+ * plumbing that is IDENTICAL for every capsule because it encodes hub's
75
+ * envelope format, not anyone's cipher. `makeCapsule()` binds that plumbing to
76
+ * these primitives, so a second capsule writes ~400 lines instead of ~3,400
77
+ * and the format lives in exactly one place.
78
+ *
79
+ * The alternative — copying the plumbing into each capsule — was rejected for
80
+ * a specific reason: nothing would fail when the two copies drifted. A change
81
+ * to the tombstone shape or the AAD would have to be made twice, and the
82
+ * second miss surfaces as an envelope that one capsule writes and the other
83
+ * cannot read.
84
+ *
85
+ * ⚠️ Declared with PROPERTY syntax (`encrypt: (…) => …`), never method
86
+ * shorthand. Two reasons, both measured. TypeScript checks method shorthand
87
+ * BIVARIANTLY, so a capsule whose `encrypt` took the wrong number of arguments
88
+ * would satisfy a shorthand declaration and fail only at a call site — the
89
+ * exact hole #16 fell through. And `@typescript-eslint/unbound-method` refuses
90
+ * to let a shorthand method be destructured off the object, which is precisely
91
+ * how the plumbing consumes these.
92
+ *
93
+ * ⚠️ Every primitive here is `async` except `bufferToBase64`, including ones a
94
+ * plaintext capsule answers instantly. That is deliberate: a capsule that
95
+ * needs real asynchrony (hardware-backed keys, a remote KMS) must be
96
+ * expressible without changing this type, and a synchronous implementation
97
+ * loses nothing by returning a resolved promise.
98
+ */
99
+ export interface CapsulePrimitives<K = CapsuleKey> {
100
+ encrypt: (plaintext: string, key: K, aad?: Uint8Array) => Promise<{
101
+ iv: string;
102
+ data: string;
103
+ }>;
104
+ decrypt: (iv: string, data: string, key: K, aad?: Uint8Array) => Promise<string>;
105
+ encryptBytesWithAAD: (bytes: Uint8Array, key: K, aad: Uint8Array) => Promise<{
106
+ iv: string;
107
+ data: string;
108
+ }>;
109
+ decryptBytesWithAAD: (iv: string, data: string, key: K, aad: Uint8Array) => Promise<Uint8Array>;
110
+ /** Same plaintext + key + context ⇒ same ciphertext. Refused by a capsule without the group. */
111
+ encryptDeterministic: (plaintext: string, key: K, context: string) => Promise<{
112
+ iv: string;
113
+ data: string;
114
+ }>;
115
+ /** ⚠️ ONE argument. The AES capsule derives the CONTEXT into the IV, not the key
116
+ * (`encryptDeterministic` calls `deriveDeterministicIV(dek, context, plaintext)`),
117
+ * so a `(dek, context)` signature here would have been a plausible-looking lie
118
+ * that only the call sites caught. */
119
+ deriveDeterministicKey: (dek: K) => Promise<K>;
120
+ deriveSealedFieldKey: (dek: K, collectionName: string, field: string) => Promise<K>;
121
+ deriveSealedFieldKeyFromCek: (cek: K, collectionName: string, field: string) => Promise<K>;
122
+ generateDEK: () => Promise<K>;
123
+ wrapCek: (cek: K, dek: K) => Promise<string>;
124
+ unwrapCek: (wrapped: string, dek: K) => Promise<K>;
125
+ /** Accepts `ArrayBuffer` too — the AES capsule's callers pass raw `subtle` output. */
126
+ bufferToBase64: (buffer: ArrayBuffer | Uint8Array) => string;
127
+ mintVdigSlot: (value: string, policy: VdigFieldPolicy, prevBlob: string | undefined, cek: K, collection: string, id: string, field: string) => Promise<string>;
128
+ mintBidxTag: (normalized: string, dek: K, collection: string, field: string) => Promise<string>;
129
+ /** The vdig payload is sealed under a capsule-derived slot key, so open/seal
130
+ * are the capsule's, not the plumbing's. `rotateRecordCek` needs both to
131
+ * carry a classified slot across a key rotation. */
132
+ openVdigPayload: (blob: string, cek: K, collection: string, id: string, field: string) => Promise<VdigPayload>;
133
+ sealVdigPayload: (payload: VdigPayload, cek: K, collection: string, id: string, field: string) => Promise<string>;
134
+ }
135
+ /** The classified verify-digest payload, at the seam because both the capsule
136
+ * and the plumbing name it. Structural, not the capsule's own type. */
137
+ export interface VdigDigestEntry {
138
+ readonly salt: string;
139
+ readonly hash: string;
140
+ }
141
+ export interface VdigPayload {
142
+ readonly v: 1;
143
+ readonly alg: 'PBKDF2-SHA256';
144
+ readonly iter: number;
145
+ readonly cur: VdigDigestEntry & {
146
+ readonly at: string;
147
+ };
148
+ readonly ring?: readonly VdigDigestEntry[];
149
+ }
150
+ export { makeCapsule } from './plumbing/index.js';
151
+ export type { Capsule, RecordCodec } from './plumbing/index.js';
152
+ export { sha256Hex, sha256Bytes, hmacSha256Hex, hmacSignHex, hkdfAesGcmKey, deriveBlobAddressKey, derivePresenceKey, derivePresenceTagKey, generateIV, generateSalt, generateRecoverySecret, bufferToBase64, base64ToBuffer, encodeEchoParts, KEY_BITS, } from './plumbing/digest.js';
153
+ export type { EchoSecretParts } from './plumbing/digest.js';
154
+ export { buildRecordAad, recordAadFor, buildRecordEnvelope, buildTombstone, isTombstone, isTombstoneShape, buildDeleteMarker, isDeleteMarker, requireSealedBody, sealedBodyArgs, envelopeBodySize, hasPerRecordKey, envelopeBodyForHash, hasSealedBody, normalizeForVerify, parseSealedSlot, } from './plumbing/index.js';
155
+ export type { RecordIdentity, RecordRef } from './plumbing/index.js';
156
+ export { buildSealedRecordEnvelope } from './plumbing/record-envelope.js';
157
+ export { generateSigningKeyPair, signBytes, verifyBytes } from './plumbing/sign.js';
158
+ export { ctEqualTags } from './plumbing/ct-equal.js';
159
+ export { evaluateKofN } from './plumbing/kofn.js';
@@ -0,0 +1,95 @@
1
+ import {
2
+ CapsuleNotSupportedError,
3
+ assertCapsuleSupports
4
+ } from "../chunk-OIEO4WDL.js";
5
+ import {
6
+ generateSigningKeyPair,
7
+ signBytes,
8
+ verifyBytes
9
+ } from "../chunk-Q2XRFWOI.js";
10
+ import {
11
+ evaluateKofN
12
+ } from "../chunk-NH2UOV3B.js";
13
+ import {
14
+ buildDeleteMarker,
15
+ buildRecordAad,
16
+ buildRecordEnvelope,
17
+ buildSealedRecordEnvelope,
18
+ buildTombstone,
19
+ ctEqualTags,
20
+ envelopeBodyForHash,
21
+ envelopeBodySize,
22
+ hasPerRecordKey,
23
+ hasSealedBody,
24
+ isDeleteMarker,
25
+ isTombstone,
26
+ isTombstoneShape,
27
+ makeCapsule,
28
+ parseSealedSlot,
29
+ recordAadFor,
30
+ requireSealedBody,
31
+ sealedBodyArgs
32
+ } from "../chunk-42ALPZ2B.js";
33
+ import {
34
+ KEY_BITS,
35
+ base64ToBuffer,
36
+ bufferToBase64,
37
+ deriveBlobAddressKey,
38
+ derivePresenceKey,
39
+ derivePresenceTagKey,
40
+ encodeEchoParts,
41
+ generateIV,
42
+ generateRecoverySecret,
43
+ generateSalt,
44
+ hkdfAesGcmKey,
45
+ hmacSha256Hex,
46
+ hmacSignHex,
47
+ normalizeForVerify,
48
+ sha256Bytes,
49
+ sha256Hex
50
+ } from "../chunk-QMWY2FDS.js";
51
+ import "../chunk-SV2PM2OY.js";
52
+ import "../chunk-37EPTBBR.js";
53
+ export {
54
+ CapsuleNotSupportedError,
55
+ KEY_BITS,
56
+ assertCapsuleSupports,
57
+ base64ToBuffer,
58
+ bufferToBase64,
59
+ buildDeleteMarker,
60
+ buildRecordAad,
61
+ buildRecordEnvelope,
62
+ buildSealedRecordEnvelope,
63
+ buildTombstone,
64
+ ctEqualTags,
65
+ deriveBlobAddressKey,
66
+ derivePresenceKey,
67
+ derivePresenceTagKey,
68
+ encodeEchoParts,
69
+ envelopeBodyForHash,
70
+ envelopeBodySize,
71
+ evaluateKofN,
72
+ generateIV,
73
+ generateRecoverySecret,
74
+ generateSalt,
75
+ generateSigningKeyPair,
76
+ hasPerRecordKey,
77
+ hasSealedBody,
78
+ hkdfAesGcmKey,
79
+ hmacSha256Hex,
80
+ hmacSignHex,
81
+ isDeleteMarker,
82
+ isTombstone,
83
+ isTombstoneShape,
84
+ makeCapsule,
85
+ normalizeForVerify,
86
+ parseSealedSlot,
87
+ recordAadFor,
88
+ requireSealedBody,
89
+ sealedBodyArgs,
90
+ sha256Bytes,
91
+ sha256Hex,
92
+ signBytes,
93
+ verifyBytes
94
+ };
95
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1,52 @@
1
+ export declare const aesCapsule: {
2
+ findByDet: <T>(ctx: import("./index.js").DeterministicContext<T>, field: string, value: unknown) => Promise<T | null>;
3
+ queryByDet: <T>(ctx: import("./index.js").DeterministicContext<T>, field: string, value: unknown) => Promise<T[]>;
4
+ SEALED_CEK_NS: string;
5
+ sealRecordToHost: (ctx: import("./index.js").SealingContext, collection: string, id: string, hostSealer: import("../../index.js").RecipientSealer, opts: {
6
+ expiresAt: string;
7
+ }) => Promise<{
8
+ pid: string;
9
+ envelopeKey: string;
10
+ }>;
11
+ revokeSealedRecord: (ctx: import("./index.js").SealingContext, collection: string, id: string, pid: string, opts?: {
12
+ hard?: boolean;
13
+ }) => Promise<void>;
14
+ rotateRecordCek: (ctx: import("./index.js").SealingContext, collection: string, id: string) => Promise<void>;
15
+ rekeyBlobSet: (adapter: import("../../index.js").NoydbStore, vault: string, oldDek: import("../contract.js").CapsuleKey, newDek: import("../contract.js").CapsuleKey, otherDeks?: readonly import("../contract.js").CapsuleKey[]) => Promise<import("../plumbing/rekey-blob.js").BlobRekeyReport>;
16
+ rekeyEnvelopeToDek: (ref: {
17
+ readonly collection: string;
18
+ readonly id: string;
19
+ }, envelope: import("../../index.js").EncryptedEnvelope, oldDek: import("../contract.js").CapsuleKey, newDek: import("../contract.js").CapsuleKey) => Promise<import("../../index.js").EncryptedEnvelope>;
20
+ rekeyEnvelopeIfNeeded: (ref: {
21
+ readonly collection: string;
22
+ readonly id: string;
23
+ }, envelope: import("../../index.js").EncryptedEnvelope, oldDek: import("../contract.js").CapsuleKey, newDek: import("../contract.js").CapsuleKey) => Promise<import("../../index.js").EncryptedEnvelope | null>;
24
+ envelopeOpensUnderAny: (ref: {
25
+ readonly collection: string;
26
+ readonly id: string;
27
+ }, envelope: import("../../index.js").EncryptedEnvelope, keys: readonly import("../contract.js").CapsuleKey[]) => Promise<boolean>;
28
+ resolveStableCek: (deps: import("../plumbing/lifecycle.js").StableCekDeps, id: string) => Promise<import("../contract.js").CapsuleKey>;
29
+ rewrapBodyToDek: (from: import("./index.js").RecordIdentity, to: import("./index.js").RecordIdentity, envelope: Pick<import("../../index.js").EncryptedEnvelope, "_iv" | "_data" | "_cek" | "_tier" | "_by">, fromDek: import("../contract.js").CapsuleKey, toDek: import("../contract.js").CapsuleKey) => Promise<import("./index.js").RewrappedBody>;
30
+ applyRewrappedBody: (envelope: import("../../index.js").EncryptedEnvelope, body: import("./index.js").RewrappedBody) => import("../../index.js").EncryptedEnvelope;
31
+ rewrapEnvelope: (identity: import("./index.js").RecordIdentity, envelope: import("../../index.js").EncryptedEnvelope, fromDek: import("../contract.js").CapsuleKey, toDek: import("../contract.js").CapsuleKey) => Promise<import("../../index.js").EncryptedEnvelope>;
32
+ isRewrappedUnder: (identity: import("./index.js").RecordIdentity, envelope: Pick<import("../../index.js").EncryptedEnvelope, "_iv" | "_data" | "_cek">, dek: import("../contract.js").CapsuleKey) => Promise<boolean>;
33
+ RecordCodec: import("../plumbing/record-codec.js").BoundRecordCodec;
34
+ sealFields: (record: Record<string, unknown>, sensitiveFields: ReadonlySet<string>, keyMaterial: import("../plumbing/sealed-slots.js").SealKeyMaterial) => Promise<import("../plumbing/sealed-slots.js").SealFieldsResult>;
35
+ unsealOneField: (field: string, blob: string, keyMaterial: import("../plumbing/sealed-slots.js").SealKeyMaterial) => Promise<unknown>;
36
+ makeHandleProducer: (keyMaterial: import("../plumbing/sealed-slots.js").SealKeyMaterial) => (field: string, blob: string) => import("../../index.js").SealedHandle<unknown>;
37
+ unsealFields: (record: Record<string, unknown>, sealed: Record<string, string>, keyMaterial: import("../plumbing/sealed-slots.js").SealKeyMaterial, opts?: {
38
+ asHandles?: boolean;
39
+ }) => Promise<Record<string, unknown>>;
40
+ makeSealedSlotCapability: (ctx: import("../plumbing/sealed-slots.js").SealedSlotCapabilityCtx, recordId: string, cek?: import("../contract.js").CapsuleKey) => import("../../kernel/via/index.js").ViaCryptoCtx["sealedSlots"];
41
+ makeReservedEnvelopes: (dekResolver: import("../plumbing/sealed-slots.js").ReservedEnvelopeDekResolver, declaredPrefixes: readonly string[]) => import("../../kernel/via/index.js").ViaCryptoCtx["reservedEnvelopes"];
42
+ dualReadSealedSlot: (blob: string, field: string, collection: string, cek: CryptoKey | undefined, dek: CryptoKey) => Promise<string>;
43
+ openEnvelopeJson: (ref: import("./index.js").RecordRef, env: import("../../index.js").EncryptedEnvelope, key: import("../contract.js").CapsuleKey, opts?: {
44
+ encrypted?: boolean;
45
+ }) => Promise<string>;
46
+ writeEnvelopeBody: (identity: import("./index.js").RecordIdentity, json: string, key: import("../contract.js").CapsuleKey, opts?: {
47
+ encrypted?: boolean;
48
+ perRecordKey?: boolean;
49
+ }) => Promise<Pick<import("../../index.js").EncryptedEnvelope, "_iv" | "_data" | "_cek">>;
50
+ verifyRecordIdentity: (ref: import("./index.js").RecordRef, env: import("../../index.js").EncryptedEnvelope, key: import("../contract.js").CapsuleKey) => Promise<boolean>;
51
+ };
52
+ export declare const dualReadSealedSlot: (blob: string, field: string, collection: string, cek: CryptoKey | undefined, dek: CryptoKey) => Promise<string>;
@@ -0,0 +1,2 @@
1
+ import type { CapsuleGroup } from '../contract.js';
2
+ export declare function capabilities(): ReadonlySet<CapsuleGroup>;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * C2 — fixed-length-tag constant-time comparison (hub-portable; no
3
+ * Node timingSafeEqual). Two mandatory rules (spec §3):
4
+ * 1. Only fixed 32-byte tags are ever compared — ctEqualTags throws on
5
+ * anything else (tag length is structural, never secret-dependent).
6
+ * 2. Every comparand is reduced to a 32-byte tag under a FRESH ephemeral
7
+ * HMAC-SHA256 key before comparison — keyed blinding makes compare
8
+ * timing uncorrelated with underlying values; rule 1 (not blinding)
9
+ * is what removes input-length timing. Length inequality folds into
10
+ * unequal tags — never an early return.
11
+ * @module
12
+ */
13
+ /**
14
+ * Blinded equality of arbitrary-length byte strings: fresh K_e per
15
+ * comparison (never stored, never reused), HMAC both sides to 32-byte
16
+ * tags, then ctEqualTags. On the digest path the inputs are already
17
+ * 32-byte PBKDF2 outputs but still route through this reduction so
18
+ * there is exactly ONE comparison construction (spec §3 rule 2).
19
+ */
20
+ export declare function blindedEqual(a: Uint8Array, b: Uint8Array): Promise<boolean>;
@@ -25,7 +25,7 @@
25
25
  * @module
26
26
  */
27
27
  import type { EnclaveKey } from '../crypto.js';
28
- import { type VerifyNormalizeMode } from './normalize.js';
28
+ import { type VerifyNormalizeMode } from '../../plumbing/normalize.js';
29
29
  /**
30
30
  * Normalize `candidate` and mint it into a blind-index target tag at
31
31
  * `costByte` (default {@link CURRENT_COST_BYTE}), for string-comparison
@@ -1,4 +1,4 @@
1
- import type { EncryptedEnvelope } from '../../types.js';
1
+ import type { EncryptedEnvelope } from '../../../kernel/types.js';
2
2
  import type { EnclaveKey } from '../crypto.js';
3
3
  export interface RevealEngineCtx {
4
4
  readonly collection: string;
@@ -15,8 +15,8 @@
15
15
  * @module
16
16
  */
17
17
  import { type EnclaveKey } from '../crypto.js';
18
- import { type VerifyNormalizeMode } from './normalize.js';
19
- import type { EncryptedEnvelope, VdigFieldPolicy, ClassifiedVerdict } from '../../types.js';
18
+ import { type VerifyNormalizeMode } from '../../plumbing/normalize.js';
19
+ import type { EncryptedEnvelope, VdigFieldPolicy, ClassifiedVerdict } from '../../../kernel/types.js';
20
20
  export interface VerifyEngineCtx {
21
21
  readonly collection: string;
22
22
  getEnvelope(id: string): Promise<EncryptedEnvelope | null>;
@@ -4,5 +4,5 @@
4
4
  * @module
5
5
  */
6
6
  import { type EnclaveKey } from '../crypto.js';
7
- import type { VdigFieldPolicy } from '../../types.js';
7
+ import type { VdigFieldPolicy } from '../../../kernel/types.js';
8
8
  export declare function mintVdigSlot(rawValue: string, policy: VdigFieldPolicy, prevBlob: string | undefined, cek: EnclaveKey, collection: string, recordId: string, field: string): Promise<string>;
@@ -35,42 +35,28 @@
35
35
  *
36
36
  * @module
37
37
  */
38
+ import { type EchoSecretParts } from '../plumbing/digest.js';
38
39
  /**
39
40
  * **EnclaveKey** — the opaque key type at the enclave seam.
40
41
  *
41
42
  * In noy-db's reference enclave this is `CryptoKey` (the Web Crypto API's
42
43
  * key handle). A fork's enclave redefines this alias to its own key
43
44
  * representation (e.g. `type EnclaveKey = null` for a keyless HSM-backed
44
- * fork) — outside `kernel/enclave/**`, every consumer must treat it as
45
+ * fork) — outside `capsule/enclave-aes/**`, every consumer must treat it as
45
46
  * opaque: never construct, inspect, or serialize it directly, only pass it
46
47
  * between barrel functions (`encrypt`/`decrypt`/`wrapKey`/`unwrapKey`/…).
47
48
  */
48
49
  export type EnclaveKey = CryptoKey;
50
+ /** Opaque asymmetric pair at the enclave seam — `CryptoKeyPair` in the reference enclave. */
51
+ export type EnclaveKeyPair = CryptoKeyPair;
49
52
  /** Derive a KEK from a secret and salt using PBKDF2-SHA256. */
50
53
  export declare function deriveKey(secret: string, salt: Uint8Array): Promise<CryptoKey>;
51
54
  /** One three-part echo secret: prompt (typed) → echo (revealed) → key (typed). */
52
- export interface EchoSecretParts {
53
- readonly prompt: string;
54
- readonly echo: string;
55
- readonly key: string;
56
- }
57
55
  /**
58
- * AG-1 encoding: domain context + 4-byte big-endian length prefix per
59
- * part. Two independent guarantees make a single typed string unable to
60
- * derive an echo vault's KEK (spec AG-1):
61
- *
62
- * 1. The `0xFF` context prefix — UTF-8 never produces that byte, so the
63
- * encoding is provably not the encoding of ANY string (not merely of
64
- * no separator-joined form).
65
- * 2. Structural length prefixes — part boundaries are key material, so
66
- * re-splitting the same characters changes the derived KEK.
67
- *
68
- * @throws ValidationError when any part is not a string — the single
69
- * chokepoint every echo KEK derivation and block mint passes through, so a
70
- * malformed parts object cannot be `TextEncoder`-coerced into key material.
56
+ * Domain context for the AG-1 encoding. The leading `0xFF` is the load-bearing
57
+ * byte: it is not a legal UTF-8 lead byte, so `TextEncoder` can never emit it —
58
+ * no string's UTF-8 encoding can equal an AG-1 encoding, whatever the string.
71
59
  */
72
- export declare function encodeEchoParts(parts: EchoSecretParts): Uint8Array;
73
- /** Derive the tier-1 KEK from a 3-part echo secret (spec: KEK from ALL parts). */
74
60
  export declare function deriveEchoKey(parts: EchoSecretParts, salt: Uint8Array): Promise<CryptoKey>;
75
61
  /**
76
62
  * Which AES algorithm/usage a {@link deriveSecretKey} result is for:
@@ -93,6 +79,13 @@ export declare function deriveSecretKey(secret: string, salt: Uint8Array, params
93
79
  }): Promise<CryptoKey>;
94
80
  /** Generate a random AES-256-GCM data encryption key. */
95
81
  export declare function generateDEK(): Promise<CryptoKey>;
82
+ /**
83
+ * Generate a NON-extractable AES-256-GCM key for in-memory-only use — a
84
+ * session key, a device seal. Unlike {@link generateDEK} it can never be
85
+ * wrapped or exported: WebCrypto enforces that, and it is the tab-scope
86
+ * invariant `with-party/session` and `device-seal` rely on.
87
+ */
88
+ export declare function generateEphemeralKey(): Promise<CryptoKey>;
96
89
  /** Serialize a DEK set to `{ collection: base64(rawKey) }`. */
97
90
  export declare function exportDekSet(deks: Map<string, CryptoKey>): Promise<Record<string, string>>;
98
91
  /**
@@ -104,6 +97,10 @@ export declare function importDekSet(exported: Record<string, string>): Promise<
104
97
  export declare function wrapKey(dek: CryptoKey, kek: CryptoKey): Promise<string>;
105
98
  /** Unwrap (decrypt) a DEK from base64 string using a KEK. */
106
99
  export declare function unwrapKey(wrappedBase64: string, kek: CryptoKey): Promise<CryptoKey>;
100
+ /** Wrap the constant AES-GCM key built from `plaintext` under `kek`. */
101
+ export declare function mintCanary(kek: CryptoKey, plaintext: Uint8Array): Promise<string>;
102
+ /** True iff `wrapped` unwraps under `kek` — the KEK is right AND the bytes are intact. */
103
+ export declare function checkCanary(wrapped: string, kek: CryptoKey): Promise<boolean>;
107
104
  /**
108
105
  * AES-KW-wrap a per-record CEK under a collection/tier DEK. Returns base64.
109
106
  * Deterministic over `(cek, dek)`.
@@ -120,6 +117,13 @@ export declare function unwrapCek(wrappedBase64: string, dek: CryptoKey): Promis
120
117
  * used solely to open the record's `_iv`/`_data` body under `decrypt()`.
121
118
  */
122
119
  export declare function importCek(rawKey: Uint8Array): Promise<CryptoKey>;
120
+ /**
121
+ * Import a raw 32-byte pre-shared key as a NON-extractable AES-256-GCM key
122
+ * (encrypt + decrypt). The transfer seal (`with-cargo`) and the RSA-OAEP
123
+ * TLV's per-blob CEK (`managed-secret`) both hand raw bytes to the enclave
124
+ * here; the bytes never become a key anywhere else.
125
+ */
126
+ export declare function importTransferKey(raw: Uint8Array): Promise<CryptoKey>;
123
127
  export interface EncryptResult {
124
128
  iv: string;
125
129
  data: string;
@@ -160,66 +164,6 @@ export declare function encryptBytes(data: Uint8Array, dek: CryptoKey): Promise<
160
164
  * Counterpart to `encryptBytes`. Throws `TamperedError` on auth-tag failure.
161
165
  */
162
166
  export declare function decryptBytes(ivBase64: string, dataBase64: string, dek: CryptoKey): Promise<Uint8Array>;
163
- /**
164
- * SHA-256 hex digest of raw bytes. Used to derive content-addressed
165
- * eTags for blob deduplication. Computed on plaintext bytes
166
- * before compression and encryption so the eTag identifies content, not
167
- * ciphertext, and survives re-encryption (key rotation, re-upload).
168
- */
169
- export declare function sha256Hex(data: Uint8Array): Promise<string>;
170
- /**
171
- * Compute HMAC-SHA-256(key, data) and return hex string.
172
- *
173
- * Used to derive content-addressed eTags that are opaque to the store:
174
- * ```
175
- * eTag = hmacSha256Hex(blobDEK, plaintext)
176
- * ```
177
- *
178
- * Unlike a plain SHA-256, the HMAC is keyed by the vault-shared `_blob` DEK,
179
- * so an attacker with store access cannot pre-compute eTags for known files.
180
- * Deduplication still works within a vault (same key + same content = same eTag).
181
- */
182
- /**
183
- * Derive the blob CONTENT-ADDRESSING key for one tier (#1126).
184
- *
185
- * The blob eTag is an HMAC over the plaintext. It used to be keyed by the
186
- * `_blob` DEK — the very key `rotateKeys` replaces — so after any rotation
187
- * `HMAC(live DEK, plaintext) !== storedETag` for every blob written before it,
188
- * permanently. `decryptResponse()` checks that unconditionally, so the
189
- * presigned-URL read path raised `TamperedError` on legitimate data forever;
190
- * dedup also split, minting a second address for identical bytes.
191
- *
192
- * The fix is a `root` that rotation never touches (`_blob_addr`, refused by
193
- * `rotateKeys` exactly as `_roster` is). Rotation then re-keys chunk BODIES
194
- * while every address stays stable, which is what makes the AAD
195
- * `{eTag}:{i}:{count}` and every `_blob_index` / `_blob_slots_*` /
196
- * `_blob_versions_*` row survive it untouched.
197
- *
198
- * **Derived PER TIER, deliberately.** A single vault-wide address would make an
199
- * elevated blob and a tier-0 blob with identical content share an eTag,
200
- * leaking equality across a boundary the tier system exists to enforce — and
201
- * `rehomeForTier` re-addresses on a tier move precisely because the address is
202
- * tier-scoped today. Domain separation keeps that property while removing the
203
- * rotation coupling: the two are independent axes, and only one of them was
204
- * ever meant to change the address.
205
- *
206
- * Same HKDF idiom as `asKwKey`, with its own salt so the addressing key can
207
- * never coincide with a wrapping or encryption key.
208
- */
209
- export declare function deriveBlobAddressKey(root: CryptoKey, tier: number): Promise<CryptoKey>;
210
- export declare function hmacSha256Hex(key: CryptoKey, data: Uint8Array): Promise<string>;
211
- /**
212
- * Encrypt raw bytes with AES-256-GCM using Additional Authenticated Data.
213
- *
214
- * The AAD binds each chunk to its parent blob and position, preventing
215
- * chunk reorder, substitution, and truncation attacks:
216
- * ```
217
- * AAD = UTF-8("{eTag}:{chunkIndex}:{chunkCount}")
218
- * ```
219
- *
220
- * The AAD is NOT stored — the reader reconstructs it from `BlobObject`
221
- * metadata and passes it to `decryptBytesWithAAD`.
222
- */
223
167
  export declare function encryptBytesWithAAD(data: Uint8Array, dek: CryptoKey, aad: Uint8Array): Promise<EncryptResult>;
224
168
  /**
225
169
  * Decrypt AES-256-GCM ciphertext with AAD verification.
@@ -229,41 +173,6 @@ export declare function encryptBytesWithAAD(data: Uint8Array, dek: CryptoKey, aa
229
173
  * tag fails and this throws `TamperedError`.
230
174
  */
231
175
  export declare function decryptBytesWithAAD(ivBase64: string, dataBase64: string, dek: CryptoKey, aad: Uint8Array): Promise<Uint8Array>;
232
- /**
233
- * Derive an AES-256-GCM presence key from a collection DEK using HKDF-SHA256.
234
- *
235
- * The presence key is domain-separated from the data DEK by the fixed salt
236
- * `'noydb-presence'` and the `info` = collection name. This means:
237
- * - The adapter never sees the presence key.
238
- * - Presence payloads rotate automatically when the collection DEK is rotated.
239
- * - Revoked users cannot derive the new presence key after a DEK rotation.
240
- *
241
- * @param dek The collection's AES-256-GCM DEK (extractable).
242
- * @param collectionName Used as the HKDF `info` parameter for domain separation.
243
- * @returns A non-extractable AES-256-GCM key suitable for presence payload encryption.
244
- */
245
- export declare function derivePresenceKey(dek: CryptoKey, collectionName: string): Promise<CryptoKey>;
246
- /**
247
- * Derive a **per-field** AES-256-GCM key from a collection DEK using
248
- * HKDF-SHA256, used to encrypt a single sensitive field into its own
249
- * `_sealed[field]` envelope slot (structural group-encryption).
250
- *
251
- * Domain-separated from the data DEK (and from the presence/deterministic
252
- * channels) by the fixed salt `'noydb-sealed'` and an `info` of
253
- * `JSON.stringify(['noydb-sealed', collectionName, field])`. The JSON-array
254
- * encoding is injective — each element is separately quoted/escaped — so
255
- * collection `a/sealed/b` + field `c` cannot collide with collection `a` +
256
- * field `b/sealed/c`. Each sensitive field gets a **distinct** key, so a
257
- * `_sealed[a]` ciphertext does not authenticate under field `b`'s key —
258
- * sealed fields are cryptographically isolated from one another. The
259
- * collection name keeps the same field name in two collections from sharing a
260
- * key, mirroring how `derivePresenceKey` / `encryptDeterministic` domain-separate.
261
- *
262
- * @param dek The collection's AES-256-GCM DEK (extractable).
263
- * @param collectionName Part of the HKDF `info` for domain separation.
264
- * @param field Sensitive field name — the rest of the `info`.
265
- * @returns A non-extractable AES-256-GCM key for that field's sealed slot.
266
- */
267
176
  export declare function deriveSealedFieldKey(dek: CryptoKey, collectionName: string, field: string): Promise<CryptoKey>;
268
177
  /**
269
178
  * Derive a per-record sealed-field key from the record's **per-record CEK**
@@ -334,18 +243,13 @@ export declare function encryptDeterministic(plaintext: string, dek: CryptoKey,
334
243
  * ciphertext throws `TamperedError` just like randomized AES-GCM.
335
244
  */
336
245
  export declare function decryptDeterministic(ivBase64: string, dataBase64: string, dek: CryptoKey): Promise<string>;
337
- /** Generate a random 12-byte IV for AES-GCM. */
338
- export declare function generateIV(): Uint8Array;
339
- /** Generate a random 32-byte salt for PBKDF2. */
340
- export declare function generateSalt(): Uint8Array;
246
+ export declare function generateRecipientKeyPair(): Promise<CryptoKeyPair>;
247
+ export declare function exportRecipientPublicKeySpki(pair: CryptoKeyPair): Promise<Uint8Array>;
248
+ export declare function importRecipientPublicKeySpki(spki: Uint8Array): Promise<CryptoKey>;
249
+ /** RSA-OAEP-encrypt `bytes` (a 32-byte CEK) to the recipient's public key. */
250
+ export declare function recipientWrap(pub: CryptoKey, bytes: Uint8Array): Promise<Uint8Array>;
341
251
  /**
342
- * Mint a fresh recovery secret the high-entropy value a recovery profile
343
- * wraps the DEK set under and then hands out (Shamir splits it into shares;
344
- * paper prints it). Not a salt: a salt is public, this is not, and a fork
345
- * may size them differently. The reference enclave returns 32 bytes.
346
- *
347
- * Callers must zero the buffer once it has been wrapped and split.
252
+ * RSA-OAEP-decrypt with the pair's private key. Propagates WebCrypto's own
253
+ * error on failure callers that need a typed error map it themselves.
348
254
  */
349
- export declare function generateRecoverySecret(): Uint8Array;
350
- export declare function bufferToBase64(buffer: ArrayBuffer | Uint8Array): string;
351
- export declare function base64ToBuffer(base64: string): Uint8Array<ArrayBuffer>;
255
+ export declare function recipientUnwrap(pair: CryptoKeyPair, wrapped: Uint8Array): Promise<Uint8Array>;