@noy-db/hub 0.8.0-pre.0 → 0.9.0-pre.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 (706) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +8 -8
  3. package/codemods/0.4.0-pre.json +1 -1
  4. package/codemods/0.8.0-pre.json +1 -1
  5. package/dist/api-MSJXVYQG.js +18 -0
  6. package/dist/as/index.js +34 -25
  7. package/dist/as/index.js.map +1 -1
  8. package/dist/at/index.js +9 -10
  9. package/dist/attestation/index.js +39 -28
  10. package/dist/attestation/index.js.map +1 -1
  11. package/dist/{backup-7TFRVFLH.js → backup-7RKNZMQO.js} +15 -16
  12. package/dist/backup-7RKNZMQO.js.map +1 -0
  13. package/dist/blobs/index.js +13 -14
  14. package/dist/blobs/index.js.map +1 -1
  15. package/dist/broker/index.js +20 -13
  16. package/dist/broker/index.js.map +1 -1
  17. package/dist/by/index.js +2 -2
  18. package/dist/capsule/contract.d.ts +159 -0
  19. package/dist/capsule/contract.js +95 -0
  20. package/dist/capsule/enclave-aes/bound.d.ts +52 -0
  21. package/dist/{kernel/enclave → capsule/enclave-aes}/broker/proof.d.ts +12 -3
  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 +361 -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 +62 -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-57BDK7LG.js +209 -0
  50. package/dist/cargo/index.js +36 -36
  51. package/dist/{chunk-BUDAGWL5.js → chunk-226V6XXJ.js} +41 -6
  52. package/dist/chunk-226V6XXJ.js.map +1 -0
  53. package/dist/{chunk-QWGU66MP.js → chunk-2A56DSRI.js} +5 -7
  54. package/dist/chunk-2A56DSRI.js.map +1 -0
  55. package/dist/chunk-2DX4JCRI.js +1 -0
  56. package/dist/{chunk-ODVPTDPK.js → chunk-2ELOCEXE.js} +1 -1
  57. package/dist/chunk-2ELOCEXE.js.map +1 -0
  58. package/dist/{chunk-CKNGS5MH.js → chunk-2WJKJZSO.js} +3 -5
  59. package/dist/chunk-2WJKJZSO.js.map +1 -0
  60. package/dist/{chunk-ZSX4S5XB.js → chunk-2ZFD2UJC.js} +9 -9
  61. package/dist/{chunk-YSK2CU2Q.js → chunk-3V6LZHUO.js} +3 -3
  62. package/dist/chunk-3V6LZHUO.js.map +1 -0
  63. package/dist/{chunk-HT2AHGQI.js → chunk-3Y5JLSXS.js} +2 -2
  64. package/dist/{chunk-M7NI3IWE.js → chunk-45VHWE4C.js} +67 -60
  65. package/dist/chunk-45VHWE4C.js.map +1 -0
  66. package/dist/{chunk-LGNDFRYC.js → chunk-4CFHL5RY.js} +1 -1
  67. package/dist/chunk-4CFHL5RY.js.map +1 -0
  68. package/dist/{enclave-27SMF6GF.js → chunk-4J3MNVVX.js} +83 -56
  69. package/dist/chunk-4J3MNVVX.js.map +1 -0
  70. package/dist/{chunk-SI3V7D4G.js → chunk-4UIP3QNW.js} +2 -2
  71. package/dist/{chunk-WNJ4AVGE.js → chunk-55P6OBB7.js} +2 -2
  72. package/dist/{chunk-6LNL42F5.js → chunk-5HNW4ZTA.js} +12 -15
  73. package/dist/chunk-5HNW4ZTA.js.map +1 -0
  74. package/dist/{chunk-SYVZW77S.js → chunk-5LMCVBMY.js} +6 -8
  75. package/dist/chunk-5LMCVBMY.js.map +1 -0
  76. package/dist/{chunk-MKXXMNJH.js → chunk-5UUJE4FP.js} +3 -3
  77. package/dist/chunk-5XONHAFD.js +12 -0
  78. package/dist/chunk-5XONHAFD.js.map +1 -0
  79. package/dist/{chunk-X4773RBR.js → chunk-6QLCS7ET.js} +2 -2
  80. package/dist/chunk-6QLCS7ET.js.map +1 -0
  81. package/dist/{chunk-FW22ZCXT.js → chunk-6WS35E6X.js} +2 -2
  82. package/dist/{chunk-FCKWQE2H.js → chunk-6Y5E4SJU.js} +7 -8
  83. package/dist/chunk-6Y5E4SJU.js.map +1 -0
  84. package/dist/{chunk-4AF3TUMP.js → chunk-72XBVN4J.js} +8 -2
  85. package/dist/{chunk-4AF3TUMP.js.map → chunk-72XBVN4J.js.map} +1 -1
  86. package/dist/{chunk-QBBUZ3I3.js → chunk-7BMOS4JQ.js} +11 -11
  87. package/dist/chunk-7BMOS4JQ.js.map +1 -0
  88. package/dist/{chunk-5FDLC6G7.js → chunk-7CT6SX4M.js} +3 -3
  89. package/dist/chunk-7CT6SX4M.js.map +1 -0
  90. package/dist/{chunk-LQ4ZHOKP.js → chunk-ABU6A4Z5.js} +36 -27
  91. package/dist/chunk-ABU6A4Z5.js.map +1 -0
  92. package/dist/{chunk-WX5ADGTZ.js → chunk-AJFPAHMW.js} +3 -3
  93. package/dist/chunk-AJFPAHMW.js.map +1 -0
  94. package/dist/{chunk-ZE4CHIED.js → chunk-APFFJN5T.js} +39 -37
  95. package/dist/chunk-APFFJN5T.js.map +1 -0
  96. package/dist/{chunk-6OWXYZK2.js → chunk-B65CC6Z6.js} +2 -2
  97. package/dist/{chunk-F2TDU7MQ.js → chunk-BJH77UY2.js} +2 -2
  98. package/dist/{chunk-L7DOS3TE.js → chunk-BMHQHH7Q.js} +3 -3
  99. package/dist/chunk-BMHQHH7Q.js.map +1 -0
  100. package/dist/{chunk-BJ2IXQ5Q.js → chunk-BNFNQNEP.js} +2 -2
  101. package/dist/chunk-BU2ABHFW.js +74 -0
  102. package/dist/chunk-BU2ABHFW.js.map +1 -0
  103. package/dist/{chunk-HLEK5VAN.js → chunk-BUE7R3B5.js} +2 -2
  104. package/dist/{chunk-ISZQJBML.js → chunk-BVF3SXD7.js} +6 -6
  105. package/dist/chunk-BVF3SXD7.js.map +1 -0
  106. package/dist/{chunk-M522UYZ2.js → chunk-BYHCKX73.js} +6 -10
  107. package/dist/chunk-BYHCKX73.js.map +1 -0
  108. package/dist/{chunk-EOVMT6TB.js → chunk-C53ER7AG.js} +2 -2
  109. package/dist/{chunk-K6W7BVZ6.js → chunk-CAD7N6HQ.js} +3 -3
  110. package/dist/chunk-CB4467G3.js +565 -0
  111. package/dist/chunk-CB4467G3.js.map +1 -0
  112. package/dist/{chunk-NWHBJQAL.js → chunk-D4V5JJAK.js} +4 -4
  113. package/dist/chunk-D4V5JJAK.js.map +1 -0
  114. package/dist/{chunk-QWFHIOD2.js → chunk-D5A3GCZ4.js} +11 -12
  115. package/dist/chunk-D5A3GCZ4.js.map +1 -0
  116. package/dist/{chunk-5O7D6ZTW.js → chunk-DHU2AQ6T.js} +2 -2
  117. package/dist/{chunk-DC5QVPV7.js → chunk-DL6BZKP3.js} +3 -3
  118. package/dist/chunk-DL6BZKP3.js.map +1 -0
  119. package/dist/{chunk-FQ54DWUQ.js → chunk-EA4VDI5D.js} +4 -4
  120. package/dist/chunk-EA4VDI5D.js.map +1 -0
  121. package/dist/{chunk-IT22PWKV.js → chunk-ECGXA4LT.js} +2 -2
  122. package/dist/{chunk-BP6DARYA.js → chunk-EMAWOGVH.js} +4 -4
  123. package/dist/chunk-EMAWOGVH.js.map +1 -0
  124. package/dist/{chunk-3F7GLNAE.js → chunk-EUD3HQM4.js} +7 -11
  125. package/dist/chunk-EUD3HQM4.js.map +1 -0
  126. package/dist/{chunk-T2LBQ5DV.js → chunk-FSQNGPHH.js} +335 -250
  127. package/dist/chunk-FSQNGPHH.js.map +1 -0
  128. package/dist/{chunk-7VCXZDA4.js → chunk-FZXRLNJO.js} +7 -11
  129. package/dist/chunk-FZXRLNJO.js.map +1 -0
  130. package/dist/{chunk-6LMQ5R26.js → chunk-G46JSSVX.js} +7 -7
  131. package/dist/{chunk-6LMQ5R26.js.map → chunk-G46JSSVX.js.map} +1 -1
  132. package/dist/{chunk-GF5BZ7D4.js → chunk-G5EDYVSE.js} +11 -13
  133. package/dist/chunk-G5EDYVSE.js.map +1 -0
  134. package/dist/chunk-G66YXUTY.js +60 -0
  135. package/dist/chunk-G66YXUTY.js.map +1 -0
  136. package/dist/{chunk-FFWI7UH7.js → chunk-GAGT3YZN.js} +1 -1
  137. package/dist/chunk-GAGT3YZN.js.map +1 -0
  138. package/dist/{chunk-4MXI3ODD.js → chunk-GCUMOKTN.js} +3 -3
  139. package/dist/{chunk-FH2L2E34.js → chunk-GETUTTZU.js} +4 -4
  140. package/dist/{chunk-FH2L2E34.js.map → chunk-GETUTTZU.js.map} +1 -1
  141. package/dist/chunk-GMKGGY7V.js +234 -0
  142. package/dist/chunk-GMKGGY7V.js.map +1 -0
  143. package/dist/{chunk-B6SJIBQK.js → chunk-GOJQ5DZA.js} +4 -4
  144. package/dist/{chunk-EIPVYUEP.js → chunk-GQ4MF3CM.js} +3 -3
  145. package/dist/chunk-GQ4MF3CM.js.map +1 -0
  146. package/dist/{chunk-PDCG6PR5.js → chunk-GRS2HIV6.js} +2 -2
  147. package/dist/chunk-GRS2HIV6.js.map +1 -0
  148. package/dist/{chunk-PEOZ34EM.js → chunk-GSAK56VF.js} +1 -1
  149. package/dist/chunk-GSAK56VF.js.map +1 -0
  150. package/dist/{chunk-3H5KLDZN.js → chunk-H3YM66EI.js} +4 -8
  151. package/dist/chunk-H3YM66EI.js.map +1 -0
  152. package/dist/{chunk-NRT6QZQB.js → chunk-IVMFIKNA.js} +6 -6
  153. package/dist/chunk-IVMFIKNA.js.map +1 -0
  154. package/dist/{chunk-PSIV7CJV.js → chunk-J4KAPKBJ.js} +2 -2
  155. package/dist/chunk-J4KAPKBJ.js.map +1 -0
  156. package/dist/{chunk-N5DNADLQ.js → chunk-JA25QG5M.js} +224 -34
  157. package/dist/chunk-JA25QG5M.js.map +1 -0
  158. package/dist/{chunk-T7IR4N2S.js → chunk-JBMMWYOH.js} +3 -1
  159. package/dist/{chunk-T7IR4N2S.js.map → chunk-JBMMWYOH.js.map} +1 -1
  160. package/dist/{chunk-YNIUIERI.js → chunk-JPSL5GIZ.js} +18 -59
  161. package/dist/chunk-JPSL5GIZ.js.map +1 -0
  162. package/dist/{chunk-TKUOEU2F.js → chunk-JSWKVZCR.js} +2 -2
  163. package/dist/chunk-JZ4EDEIP.js +22 -0
  164. package/dist/chunk-JZ4EDEIP.js.map +1 -0
  165. package/dist/{chunk-QOOUUR4A.js → chunk-K673OO6B.js} +10 -4
  166. package/dist/chunk-K673OO6B.js.map +1 -0
  167. package/dist/{chunk-NNARWO72.js → chunk-K7RW7FI4.js} +13 -12
  168. package/dist/chunk-K7RW7FI4.js.map +1 -0
  169. package/dist/{chunk-ZXABPVM6.js → chunk-L2F3CFCH.js} +9 -13
  170. package/dist/chunk-L2F3CFCH.js.map +1 -0
  171. package/dist/{chunk-X25NWUZB.js → chunk-L5A3KR7R.js} +3 -3
  172. package/dist/{chunk-T52GX4SA.js → chunk-LGGIFKJP.js} +4 -4
  173. package/dist/{chunk-ID6Z6E66.js → chunk-MQ7YWBQ5.js} +2 -2
  174. package/dist/{chunk-FXQBGFOX.js → chunk-MRJDLXI3.js} +14 -8
  175. package/dist/{chunk-FXQBGFOX.js.map → chunk-MRJDLXI3.js.map} +1 -1
  176. package/dist/chunk-NH2UOV3B.js +18 -0
  177. package/dist/chunk-NH2UOV3B.js.map +1 -0
  178. package/dist/{chunk-FN5EBVTQ.js → chunk-NIXRB5BP.js} +2 -2
  179. package/dist/{chunk-RHVMZSUU.js → chunk-NV4OESHC.js} +1 -1
  180. package/dist/chunk-NV4OESHC.js.map +1 -0
  181. package/dist/{chunk-HBRLNOHL.js → chunk-NYJBYVBG.js} +4 -4
  182. package/dist/{chunk-DF73H4UN.js → chunk-NZULV7LK.js} +5 -5
  183. package/dist/chunk-NZULV7LK.js.map +1 -0
  184. package/dist/{chunk-HK67PX4J.js → chunk-OFD2HD6F.js} +1 -1
  185. package/dist/chunk-OFD2HD6F.js.map +1 -0
  186. package/dist/{chunk-WY2XXTET.js → chunk-OJU67C23.js} +4 -4
  187. package/dist/{chunk-WY2XXTET.js.map → chunk-OJU67C23.js.map} +1 -1
  188. package/dist/{chunk-ZUVBC32X.js → chunk-OK57EATL.js} +2 -2
  189. package/dist/{chunk-KJFW62P4.js → chunk-OM3SEDI4.js} +652 -662
  190. package/dist/chunk-OM3SEDI4.js.map +1 -0
  191. package/dist/{chunk-TOPYQ6GA.js → chunk-PCYPXLEX.js} +6 -6
  192. package/dist/{chunk-GYGLAVCX.js → chunk-PFCTSXHU.js} +6 -2
  193. package/dist/chunk-PFCTSXHU.js.map +1 -0
  194. package/dist/{chunk-VNNRUGMM.js → chunk-PGC35KXE.js} +2 -2
  195. package/dist/{chunk-4I522ERM.js → chunk-PT2YCQVK.js} +4 -4
  196. package/dist/{chunk-Z5HTYMMQ.js → chunk-PTJY5R3O.js} +2 -2
  197. package/dist/chunk-PUBI455O.js +157 -0
  198. package/dist/chunk-PUBI455O.js.map +1 -0
  199. package/dist/{chunk-MTL7MXGR.js → chunk-QDHHHI5Q.js} +16 -17
  200. package/dist/chunk-QDHHHI5Q.js.map +1 -0
  201. package/dist/{chunk-F24ZZTHQ.js → chunk-QGFEBNHO.js} +4 -4
  202. package/dist/{chunk-A6IJU4TK.js → chunk-QGSNJD3B.js} +2 -2
  203. package/dist/chunk-QJNAHPVT.js +91 -0
  204. package/dist/chunk-QJNAHPVT.js.map +1 -0
  205. package/dist/{chunk-BK2HHQGN.js → chunk-QSHATAXJ.js} +2 -2
  206. package/dist/{chunk-ANWPSTZU.js → chunk-QXJXG7DN.js} +57 -30
  207. package/dist/chunk-QXJXG7DN.js.map +1 -0
  208. package/dist/{chunk-HBPPGWUM.js → chunk-RDOEOPOI.js} +14 -9
  209. package/dist/chunk-RDOEOPOI.js.map +1 -0
  210. package/dist/{chunk-JCN44NCY.js → chunk-RIZTZJX6.js} +2 -2
  211. package/dist/{chunk-MVZ2TPVP.js → chunk-RNACRT5H.js} +2 -2
  212. package/dist/chunk-RWFQVNXR.js +24 -0
  213. package/dist/chunk-RWFQVNXR.js.map +1 -0
  214. package/dist/{chunk-TROR3ALR.js → chunk-SFCD6OU7.js} +2 -2
  215. package/dist/{chunk-S57HTZ6X.js → chunk-SNM7LSYG.js} +5 -8
  216. package/dist/chunk-SNM7LSYG.js.map +1 -0
  217. package/dist/chunk-SPPOUJLN.js +40 -0
  218. package/dist/chunk-SPPOUJLN.js.map +1 -0
  219. package/dist/{chunk-3ELRMVJK.js → chunk-SWXLZ4HX.js} +31 -35
  220. package/dist/chunk-SWXLZ4HX.js.map +1 -0
  221. package/dist/{chunk-6B3VNR4P.js → chunk-TFWFPZRU.js} +26 -35
  222. package/dist/chunk-TFWFPZRU.js.map +1 -0
  223. package/dist/{chunk-F7XGHL5O.js → chunk-TMIJAR2X.js} +3 -3
  224. package/dist/{chunk-F7XGHL5O.js.map → chunk-TMIJAR2X.js.map} +1 -1
  225. package/dist/{chunk-I3JDRCMW.js → chunk-TZYTMZZY.js} +10 -10
  226. package/dist/{chunk-AOWGXU6D.js → chunk-UAKY6E4N.js} +2 -2
  227. package/dist/chunk-UHFGK6YA.js +40 -0
  228. package/dist/chunk-UHFGK6YA.js.map +1 -0
  229. package/dist/{chunk-3JWHAR6E.js → chunk-UNSQZSZP.js} +2 -2
  230. package/dist/{chunk-FQ5VRHIB.js → chunk-UOZOWN73.js} +5 -9
  231. package/dist/chunk-UOZOWN73.js.map +1 -0
  232. package/dist/{chunk-GHLTDZRS.js → chunk-V55JASXO.js} +25 -4
  233. package/dist/chunk-V55JASXO.js.map +1 -0
  234. package/dist/{chunk-244VXYPG.js → chunk-VSUQI5Q6.js} +45 -4
  235. package/dist/chunk-VSUQI5Q6.js.map +1 -0
  236. package/dist/{chunk-6K7DPM7D.js → chunk-WFWFXDNS.js} +2 -2
  237. package/dist/{chunk-CF5UU4S7.js → chunk-WHOKGHJ3.js} +7 -7
  238. package/dist/{chunk-LGRLME4M.js → chunk-X2RP4TO5.js} +16 -16
  239. package/dist/chunk-X2RP4TO5.js.map +1 -0
  240. package/dist/{chunk-VNPEWFPD.js → chunk-XA34THLF.js} +8 -6
  241. package/dist/chunk-XA34THLF.js.map +1 -0
  242. package/dist/{chunk-HVSCEIYL.js → chunk-XITHENBI.js} +12 -14
  243. package/dist/chunk-XITHENBI.js.map +1 -0
  244. package/dist/{chunk-ENAG3IY7.js → chunk-XKBTJGFP.js} +26 -28
  245. package/dist/chunk-XKBTJGFP.js.map +1 -0
  246. package/dist/{chunk-32YV3TJT.js → chunk-XXNWU5QZ.js} +2 -2
  247. package/dist/{chunk-B57AFBY2.js → chunk-XXQ5XIYY.js} +2 -2
  248. package/dist/{chunk-ORDURZBU.js → chunk-YFFMPZPY.js} +2 -2
  249. package/dist/{chunk-MDWKM2XC.js → chunk-YKGJ44Z7.js} +3 -3
  250. package/dist/{chunk-IUWCVHQ7.js → chunk-YQFBH5ZJ.js} +4 -4
  251. package/dist/{chunk-IUWCVHQ7.js.map → chunk-YQFBH5ZJ.js.map} +1 -1
  252. package/dist/{chunk-UPD5NWI5.js → chunk-Z3ZXVB2Y.js} +29 -16
  253. package/dist/chunk-Z3ZXVB2Y.js.map +1 -0
  254. package/dist/chunk-ZBUAX4EF.js +27 -0
  255. package/dist/chunk-ZBUAX4EF.js.map +1 -0
  256. package/dist/{chunk-MLPHLJIQ.js → chunk-ZHQJAV6D.js} +2 -2
  257. package/dist/{chunk-UD5EVGZ7.js → chunk-ZMVSKYTJ.js} +56 -96
  258. package/dist/chunk-ZMVSKYTJ.js.map +1 -0
  259. package/dist/{chunk-7JE7BDYJ.js → chunk-ZVSKSUGI.js} +5 -5
  260. package/dist/{chunk-J6UOHJY5.js → chunk-ZWF3EWZA.js} +4 -8
  261. package/dist/chunk-ZWF3EWZA.js.map +1 -0
  262. package/dist/classified/index.js +5 -5
  263. package/dist/{classified-marker-W3USLL5M.js → classified-marker-KHDOYIJB.js} +3 -3
  264. package/dist/classified-marker-KHDOYIJB.js.map +1 -0
  265. package/dist/collection-facade-LZIF7GWD.js +41 -0
  266. package/dist/{computed-TPFBX7U4.js → computed-XMFTHAXV.js} +3 -3
  267. package/dist/consent/index.js +10 -11
  268. package/dist/consent/index.js.map +1 -1
  269. package/dist/cover/index.js +9 -10
  270. package/dist/coverage/index.js +1 -1
  271. package/dist/custody/index.js +13 -13
  272. package/dist/{dead-filter-U2UYKSZL.js → dead-filter-CXV5NS67.js} +11 -3
  273. package/dist/dead-filter-CXV5NS67.js.map +1 -0
  274. package/dist/debug/index.js +11 -2
  275. package/dist/debug/index.js.map +1 -1
  276. package/dist/{delegation-S3AEPW2T.js → delegation-ONLM4JFI.js} +52 -31
  277. package/dist/delegation-ONLM4JFI.js.map +1 -0
  278. package/dist/derivations/index.js +25 -25
  279. package/dist/derive-3YSIS36W.js +20 -0
  280. package/dist/directory/index.js +10 -11
  281. package/dist/{dispatch-RH4LHKBH.js → dispatch-2MQFMEGY.js} +22 -23
  282. package/dist/dispatch-2MQFMEGY.js.map +1 -0
  283. package/dist/{dispatch-3CQDJV5Q.js → dispatch-OFDA4WQV.js} +5 -5
  284. package/dist/executor-E6YDJ7YA.js +8 -0
  285. package/dist/executor-NJX3YQQ4.js +35 -0
  286. package/dist/executor-WWM3DD4P.js +8 -0
  287. package/dist/export-accessible-RLHU5G4W.js +22 -0
  288. package/dist/extract-partition-QII2EDCS.js +35 -0
  289. package/dist/{fanout-sidecar-OT6RYLOL.js → fanout-sidecar-BO67PCPO.js} +13 -15
  290. package/dist/fanout-sidecar-BO67PCPO.js.map +1 -0
  291. package/dist/find-6M7GYDUZ.js +10 -0
  292. package/dist/forget/index.js +26 -10
  293. package/dist/forget/index.js.map +1 -1
  294. package/dist/guards/index.js +4 -4
  295. package/dist/history/index.js +13 -14
  296. package/dist/history/index.js.map +1 -1
  297. package/dist/i18n/index.js +14 -15
  298. package/dist/i18n/index.js.map +1 -1
  299. package/dist/index.d.ts +15 -13
  300. package/dist/index.js +198 -187
  301. package/dist/index.js.map +1 -1
  302. package/dist/indexing/index.js +6 -6
  303. package/dist/introspection/index.js +16 -13
  304. package/dist/issue-LPEEEMPP.js +19 -0
  305. package/dist/kernel/attestation-types.d.ts +62 -0
  306. package/dist/kernel/cache/index.d.ts +1 -1
  307. package/dist/kernel/collection-config.d.ts +1 -48
  308. package/dist/kernel/collection.d.ts +2 -1
  309. package/dist/kernel/cutover-transform.d.ts +1 -1
  310. package/dist/kernel/errors.d.ts +63 -6
  311. package/dist/kernel/export-scope.d.ts +40 -0
  312. package/dist/kernel/merge-authority.d.ts +1 -1
  313. package/dist/kernel/noydb.d.ts +3 -1
  314. package/dist/kernel/paths.d.ts +29 -5
  315. package/dist/kernel/prepared-write.d.ts +1 -1
  316. package/dist/kernel/put-many-atomic.d.ts +1 -1
  317. package/dist/kernel/query/live/live.d.ts +2 -1
  318. package/dist/kernel/query/sort-key.d.ts +0 -2
  319. package/dist/kernel/secret-mode.d.ts +1 -1
  320. package/dist/kernel/tx-write-gate.d.ts +2 -4
  321. package/dist/kernel/types.d.ts +135 -11
  322. package/dist/kernel/validation.d.ts +0 -10
  323. package/dist/kernel/vault.d.ts +6 -2
  324. package/dist/kernel/via/reconcile.d.ts +1 -42
  325. package/dist/kernel/write-queue.d.ts +17 -0
  326. package/dist/{ledger-KZPCMVZY.js → ledger-MSJGWKGW.js} +11 -12
  327. package/dist/liberate-LEKDYKTC.js +25 -0
  328. package/dist/link-set-QXXSPPHL.js +29 -0
  329. package/dist/{managed-secret-S3MQ6SH6.js → managed-secret-VSK7ANQI.js} +10 -11
  330. package/dist/materialized-views/index.js +27 -28
  331. package/dist/{migrate-cek-V7GKJZ7O.js → migrate-cek-GEBFYBDC.js} +2 -2
  332. package/dist/money/index.js +5 -5
  333. package/dist/noydb-F2AUF6KL.js +98 -0
  334. package/dist/on/index.js +25 -0
  335. package/dist/overlay-views/index.js +4 -4
  336. package/dist/periods/index.js +12 -13
  337. package/dist/pod/index.js +76 -74
  338. package/dist/{pod-handle-WGDFB4C2.js → pod-handle-YE7CT66T.js} +10 -11
  339. package/dist/pod-handle-YE7CT66T.js.map +1 -0
  340. package/dist/policy/index.js +10 -11
  341. package/dist/port/as/active.d.ts +4 -0
  342. package/dist/port/as/index.d.ts +1 -0
  343. package/dist/port/by/index.d.ts +14 -5
  344. package/dist/port/on/index.d.ts +27 -1
  345. package/dist/port/to/index.d.ts +1 -1
  346. package/dist/port/with/blob-strategy.d.ts +1 -1
  347. package/dist/port/with/broker-strategy.d.ts +14 -0
  348. package/dist/port/with/classified-strategy.d.ts +1 -1
  349. package/dist/port/with/collection-options.d.ts +1 -1
  350. package/dist/port/with/collection-registries.d.ts +1 -1
  351. package/dist/port/with/coverage-strategy.d.ts +17 -1
  352. package/dist/port/with/formats-strategy.d.ts +34 -1
  353. package/dist/port/with/lookup-strategy.d.ts +87 -6
  354. package/dist/port/with/service-bus.d.ts +2 -1
  355. package/dist/portability/index.js +8 -8
  356. package/dist/{post-register-SLSXIPBV.js → post-register-QC5TEAW3.js} +6 -6
  357. package/dist/post-register-QC5TEAW3.js.map +1 -0
  358. package/dist/query/all/index.js +16 -16
  359. package/dist/query/index.js +8 -8
  360. package/dist/query/live/index.js +7 -7
  361. package/dist/query/reduce/index.js +10 -10
  362. package/dist/query/relate/index.js +10 -10
  363. package/dist/reduce/index.js +8 -8
  364. package/dist/register-SN72QALV.js +30 -0
  365. package/dist/registry-253FF7C6.js +35 -0
  366. package/dist/registry-3AZWQTDT.js +23 -0
  367. package/dist/registry-7UEBTHWG.js +8 -0
  368. package/dist/registry-IVJ67NFQ.js +8 -0
  369. package/dist/request-withdrawal-UKVJZKX2.js +28 -0
  370. package/dist/{reveal-4BCKPEC2.js → reveal-YQTRNQFH.js} +10 -9
  371. package/dist/reveal-YQTRNQFH.js.map +1 -0
  372. package/dist/revoke-G2KXJQA5.js +24 -0
  373. package/dist/satellites/index.js +1 -1
  374. package/dist/schema-update/index.js +2 -2
  375. package/dist/sealed-record/index.js +16 -18
  376. package/dist/sealed-record/index.js.map +1 -1
  377. package/dist/search/index.js +4 -4
  378. package/dist/{seed-4JS2RJ4A.js → seed-JMQTRKRE.js} +125 -34
  379. package/dist/seed-JMQTRKRE.js.map +1 -0
  380. package/dist/sequence/index.js +9 -10
  381. package/dist/session/index.js +9 -10
  382. package/dist/session/index.js.map +1 -1
  383. package/dist/shadow/index.js +2 -2
  384. package/dist/signer-IUIYR3CX.js +23 -0
  385. package/dist/snapshots/index.js +11 -11
  386. package/dist/stale-SKV33PBU.js +28 -0
  387. package/dist/storage-NPBYP2SM.js +21 -0
  388. package/dist/store/index.js +1 -1
  389. package/dist/{store-coordination-provider-2O2VUHKW.js → store-coordination-provider-Z6HKPOGM.js} +11 -12
  390. package/dist/store-coordination-provider-Z6HKPOGM.js.map +1 -0
  391. package/dist/sync/index.js +18 -13
  392. package/dist/sync/index.js.map +1 -1
  393. package/dist/team/index.js +18 -17
  394. package/dist/tiers/index.js +11 -12
  395. package/dist/to/index.js +2 -2
  396. package/dist/transactions/index.js +3 -3
  397. package/dist/util/index.js +1 -1
  398. package/dist/vault-head/index.js +11 -14
  399. package/dist/vault-head/index.js.map +1 -1
  400. package/dist/{verify-RVT67IMH.js → verify-KWQIWLGH.js} +14 -12
  401. package/dist/verify-KWQIWLGH.js.map +1 -0
  402. package/dist/via/classified/binding.d.ts +2 -2
  403. package/dist/via/classified/config-drift.d.ts +2 -2
  404. package/dist/via/classified/errors.d.ts +1 -1
  405. package/dist/via/classified/presets.d.ts +29 -0
  406. package/dist/via/classified/resolve.d.ts +7 -0
  407. package/dist/via/geo/binding.d.ts +0 -4
  408. package/dist/via/lookup/handle.d.ts +4 -4
  409. package/dist/via/lookup/index.d.ts +32 -0
  410. package/dist/via/money/binding.d.ts +0 -9
  411. package/dist/walk-F4OLXI5H.js +20 -0
  412. package/dist/with-audit/attestation/index.d.ts +2 -1
  413. package/dist/with-audit/attestation/issue.d.ts +2 -2
  414. package/dist/with-audit/attestation/revoke.d.ts +2 -2
  415. package/dist/with-audit/attestation/scheme.d.ts +7 -0
  416. package/dist/with-audit/attestation/signer.d.ts +1 -1
  417. package/dist/with-audit/attestation/strategy.d.ts +4 -3
  418. package/dist/with-audit/attestation/types.d.ts +10 -0
  419. package/dist/with-audit/attestation/vault-facade.d.ts +9 -2
  420. package/dist/with-audit/attestation/verifier.d.ts +6 -0
  421. package/dist/with-audit/consent/consent.d.ts +1 -1
  422. package/dist/with-audit/consent/strategy.d.ts +1 -1
  423. package/dist/with-audit/forget/completeness.d.ts +66 -0
  424. package/dist/with-audit/forget/index.d.ts +2 -0
  425. package/dist/with-audit/forget/strategy.d.ts +65 -0
  426. package/dist/with-audit/forget/subject-index.d.ts +1 -1
  427. package/dist/with-audit/periods/periods.d.ts +0 -9
  428. package/dist/with-audit/periods/reserved-collections.d.ts +7 -0
  429. package/dist/with-audit/periods/vault-facade.d.ts +1 -1
  430. package/dist/with-audit/portability/request-withdrawal.d.ts +0 -1
  431. package/dist/with-audit/portability/withdraw-accessible.d.ts +0 -1
  432. package/dist/with-audit/sealed-record/index.d.ts +2 -2
  433. package/dist/with-audit/sealed-record/strategy.d.ts +1 -1
  434. package/dist/with-audit/tiers/index.d.ts +3 -3
  435. package/dist/with-audit/tiers/strategy.d.ts +19 -0
  436. package/dist/with-cargo/adopt-partition.d.ts +1 -1
  437. package/dist/with-cargo/extract-partition.d.ts +1 -47
  438. package/dist/with-cargo/floor.d.ts +1 -1
  439. package/dist/with-commit/history/history.d.ts +2 -2
  440. package/dist/with-commit/history/index.d.ts +1 -1
  441. package/dist/with-commit/history/ledger/store.d.ts +1 -1
  442. package/dist/with-commit/history/strategy.d.ts +1 -1
  443. package/dist/with-commit/history/time-machine.d.ts +1 -1
  444. package/dist/with-commit/numbering/index.d.ts +1 -3
  445. package/dist/with-commit/sequence/index.d.ts +1 -1
  446. package/dist/with-commit/tx/transaction.d.ts +2 -24
  447. package/dist/with-commit/vault-head/head.d.ts +1 -1
  448. package/dist/with-commit/vault-head/index.d.ts +1 -1
  449. package/dist/with-commit/vault-head/strategy.d.ts +8 -1
  450. package/dist/with-commit/vault-head/verify.d.ts +1 -1
  451. package/dist/with-fork/snapshots/noydb-facade.d.ts +7 -0
  452. package/dist/with-formula/derivations/dispatch.d.ts +1 -1
  453. package/dist/with-formula/derivations/fanout-sidecar.d.ts +1 -1
  454. package/dist/with-formula/derivations/trigger-match.d.ts +8 -5
  455. package/dist/with-formula/materialized-views/emit-memo.d.ts +0 -2
  456. package/dist/with-lookup/embeddings/index.d.ts +1 -2
  457. package/dist/with-lookup/indexing/collection-facade.d.ts +2 -16
  458. package/dist/with-lookup/indexing/eager-indexes.d.ts +2 -1
  459. package/dist/with-lookup/search/collection-facade.d.ts +1 -13
  460. package/dist/with-party/broker/index.d.ts +4 -4
  461. package/dist/with-party/broker/seed.d.ts +25 -10
  462. package/dist/with-party/directory/user-envelope/storage.d.ts +1 -1
  463. package/dist/with-party/policy/noydb-facade.d.ts +1 -31
  464. package/dist/with-party/team/delegation.d.ts +59 -3
  465. package/dist/with-party/team/echo-secret.d.ts +2 -4
  466. package/dist/with-party/team/index.d.ts +1 -1
  467. package/dist/with-party/team/keyring.d.ts +2 -22
  468. package/dist/with-party/team/magic-link-grant.d.ts +12 -2
  469. package/dist/with-party/team/noydb-facade.d.ts +5 -0
  470. package/dist/with-party/team/recovery.d.ts +1 -1
  471. package/dist/with-party/team/reserved-secret-collections.d.ts +10 -8
  472. package/dist/with-party/team/roster-tag.d.ts +43 -2
  473. package/dist/with-party/team/rotate-recover.d.ts +1 -1
  474. package/dist/with-party/team/tiers.d.ts +36 -5
  475. package/dist/with-party/team/wrapped-deks.d.ts +1 -1
  476. package/dist/with-pod/index.d.ts +1 -1
  477. package/dist/with-shape/blobs/blob-compaction.d.ts +1 -1
  478. package/dist/with-shape/blobs/blob-intent.d.ts +1 -1
  479. package/dist/with-shape/blobs/blob-set.d.ts +25 -2
  480. package/dist/with-shape/blobs/legacy-sweep.d.ts +17 -1
  481. package/dist/with-shape/introspection/describe.d.ts +2 -3
  482. package/dist/with-shape/introspection/index.d.ts +1 -0
  483. package/dist/with-shape/introspection/types.d.ts +2 -1
  484. package/dist/with-shape/introspection/walk.d.ts +1 -1
  485. package/dist/with-shape/links/lazy-handle.d.ts +1 -1
  486. package/dist/with-shape/links/link-set.d.ts +1 -1
  487. package/dist/with-shape/manifest/derive.d.ts +1 -1
  488. package/dist/with-shape/manifest/storage.d.ts +1 -1
  489. package/dist/with-shape/persisted-schemas/register.d.ts +1 -1
  490. package/dist/with-shape/persisted-schemas/storage.d.ts +1 -1
  491. package/dist/with-shape/satellites/dead-filter.d.ts +1 -1
  492. package/dist/with-shape/satellites/declare.d.ts +1 -1
  493. package/dist/with-shape/satellites/marker.d.ts +1 -1
  494. package/dist/with-shape/satellites/post-register.d.ts +1 -1
  495. package/dist/with-shape/schema-update/fence.d.ts +7 -0
  496. package/dist/with-sync/engine.d.ts +30 -1
  497. package/dist/with-sync/presence.d.ts +5 -10
  498. package/dist/with-sync/reserved-mirror.d.ts +89 -0
  499. package/dist/with-sync/strategy.d.ts +7 -0
  500. package/dist/with-sync/tab-write-relay.d.ts +0 -10
  501. package/dist/withdraw-accessible-ZKPLZ66E.js +25 -0
  502. package/dist/withdraw-accessible-ZKPLZ66E.js.map +1 -0
  503. package/package.json +14 -5
  504. package/dist/api-GVYEKSJE.js +0 -19
  505. package/dist/backup-7TFRVFLH.js.map +0 -1
  506. package/dist/chunk-244VXYPG.js.map +0 -1
  507. package/dist/chunk-3ELRMVJK.js.map +0 -1
  508. package/dist/chunk-3F7GLNAE.js.map +0 -1
  509. package/dist/chunk-3H5KLDZN.js.map +0 -1
  510. package/dist/chunk-5FDLC6G7.js.map +0 -1
  511. package/dist/chunk-6B3VNR4P.js.map +0 -1
  512. package/dist/chunk-6LNL42F5.js.map +0 -1
  513. package/dist/chunk-6QSQQLSE.js +0 -95
  514. package/dist/chunk-6QSQQLSE.js.map +0 -1
  515. package/dist/chunk-7VCXZDA4.js.map +0 -1
  516. package/dist/chunk-ANWPSTZU.js.map +0 -1
  517. package/dist/chunk-BP6DARYA.js.map +0 -1
  518. package/dist/chunk-BUDAGWL5.js.map +0 -1
  519. package/dist/chunk-CKNGS5MH.js.map +0 -1
  520. package/dist/chunk-DC5QVPV7.js.map +0 -1
  521. package/dist/chunk-DE4DH2RZ.js +0 -29
  522. package/dist/chunk-DE4DH2RZ.js.map +0 -1
  523. package/dist/chunk-DF73H4UN.js.map +0 -1
  524. package/dist/chunk-EIPVYUEP.js.map +0 -1
  525. package/dist/chunk-ENAG3IY7.js.map +0 -1
  526. package/dist/chunk-FCKWQE2H.js.map +0 -1
  527. package/dist/chunk-FFWI7UH7.js.map +0 -1
  528. package/dist/chunk-FQ54DWUQ.js.map +0 -1
  529. package/dist/chunk-FQ5VRHIB.js.map +0 -1
  530. package/dist/chunk-GF5BZ7D4.js.map +0 -1
  531. package/dist/chunk-GHLTDZRS.js.map +0 -1
  532. package/dist/chunk-GYGLAVCX.js.map +0 -1
  533. package/dist/chunk-HBPPGWUM.js.map +0 -1
  534. package/dist/chunk-HK67PX4J.js.map +0 -1
  535. package/dist/chunk-HVSCEIYL.js.map +0 -1
  536. package/dist/chunk-IEX7NK2K.js +0 -125
  537. package/dist/chunk-IEX7NK2K.js.map +0 -1
  538. package/dist/chunk-ISZQJBML.js.map +0 -1
  539. package/dist/chunk-J6UOHJY5.js.map +0 -1
  540. package/dist/chunk-KJFW62P4.js.map +0 -1
  541. package/dist/chunk-L7DOS3TE.js.map +0 -1
  542. package/dist/chunk-LGNDFRYC.js.map +0 -1
  543. package/dist/chunk-LGRLME4M.js.map +0 -1
  544. package/dist/chunk-LP7BEXCT.js +0 -32
  545. package/dist/chunk-LP7BEXCT.js.map +0 -1
  546. package/dist/chunk-LQ4ZHOKP.js.map +0 -1
  547. package/dist/chunk-M522UYZ2.js.map +0 -1
  548. package/dist/chunk-M7NI3IWE.js.map +0 -1
  549. package/dist/chunk-MTL7MXGR.js.map +0 -1
  550. package/dist/chunk-N5DNADLQ.js.map +0 -1
  551. package/dist/chunk-NNARWO72.js.map +0 -1
  552. package/dist/chunk-NRT6QZQB.js.map +0 -1
  553. package/dist/chunk-NWHBJQAL.js.map +0 -1
  554. package/dist/chunk-ODVPTDPK.js.map +0 -1
  555. package/dist/chunk-PDCG6PR5.js.map +0 -1
  556. package/dist/chunk-PEOZ34EM.js.map +0 -1
  557. package/dist/chunk-PSIV7CJV.js.map +0 -1
  558. package/dist/chunk-QBBUZ3I3.js.map +0 -1
  559. package/dist/chunk-QOOUUR4A.js.map +0 -1
  560. package/dist/chunk-QWFHIOD2.js.map +0 -1
  561. package/dist/chunk-QWGU66MP.js.map +0 -1
  562. package/dist/chunk-RHVMZSUU.js.map +0 -1
  563. package/dist/chunk-S57HTZ6X.js.map +0 -1
  564. package/dist/chunk-SEE332EV.js +0 -66
  565. package/dist/chunk-SEE332EV.js.map +0 -1
  566. package/dist/chunk-SOIQ4MM4.js +0 -20
  567. package/dist/chunk-SOIQ4MM4.js.map +0 -1
  568. package/dist/chunk-SYVZW77S.js.map +0 -1
  569. package/dist/chunk-T2LBQ5DV.js.map +0 -1
  570. package/dist/chunk-UBSFPGVJ.js +0 -1
  571. package/dist/chunk-UD5EVGZ7.js.map +0 -1
  572. package/dist/chunk-UPD5NWI5.js.map +0 -1
  573. package/dist/chunk-UYB234ZR.js +0 -479
  574. package/dist/chunk-UYB234ZR.js.map +0 -1
  575. package/dist/chunk-VNPEWFPD.js.map +0 -1
  576. package/dist/chunk-WX5ADGTZ.js.map +0 -1
  577. package/dist/chunk-X4773RBR.js.map +0 -1
  578. package/dist/chunk-YNIUIERI.js.map +0 -1
  579. package/dist/chunk-YSK2CU2Q.js.map +0 -1
  580. package/dist/chunk-ZE4CHIED.js.map +0 -1
  581. package/dist/chunk-ZXABPVM6.js.map +0 -1
  582. package/dist/classified-marker-W3USLL5M.js.map +0 -1
  583. package/dist/collection-facade-QU6IJBN3.js +0 -48
  584. package/dist/dead-filter-U2UYKSZL.js.map +0 -1
  585. package/dist/delegation-S3AEPW2T.js.map +0 -1
  586. package/dist/derive-OX7F6TGG.js +0 -21
  587. package/dist/dispatch-RH4LHKBH.js.map +0 -1
  588. package/dist/executor-B6SRO2QS.js +0 -36
  589. package/dist/executor-BI5CHWRY.js +0 -8
  590. package/dist/executor-RBKM5W5K.js +0 -8
  591. package/dist/export-accessible-VMA3YM5V.js +0 -22
  592. package/dist/extract-partition-NF7PXGPP.js +0 -37
  593. package/dist/fanout-sidecar-OT6RYLOL.js.map +0 -1
  594. package/dist/find-LZMP26KF.js +0 -10
  595. package/dist/issue-IHARXWW5.js +0 -18
  596. package/dist/kernel/enclave/classify/compare.d.ts +0 -10
  597. package/dist/kernel/enclave/index.d.ts +0 -87
  598. package/dist/kernel/enclave/record-keys/lifecycle.d.ts +0 -124
  599. package/dist/kernel/enclave/record-keys/rekey-blob.d.ts +0 -88
  600. package/dist/kernel/enclave/record-keys/rekey.d.ts +0 -91
  601. package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +0 -14
  602. package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +0 -123
  603. package/dist/kernel/enclave/record-keys/sealing.d.ts +0 -70
  604. package/dist/liberate-GRLCZMW4.js +0 -24
  605. package/dist/link-set-JCMJ7ULP.js +0 -30
  606. package/dist/noydb-SWQJ3MZS.js +0 -97
  607. package/dist/pod-handle-WGDFB4C2.js.map +0 -1
  608. package/dist/post-register-SLSXIPBV.js.map +0 -1
  609. package/dist/register-F3OYE7MJ.js +0 -31
  610. package/dist/registry-CILQFXFK.js +0 -8
  611. package/dist/registry-XNNYQVKV.js +0 -8
  612. package/dist/registry-YCDZV3VW.js +0 -35
  613. package/dist/registry-ZGYS33TE.js +0 -24
  614. package/dist/request-withdrawal-Z5NC6TXT.js +0 -30
  615. package/dist/reveal-4BCKPEC2.js.map +0 -1
  616. package/dist/revoke-ZL62WC2D.js +0 -23
  617. package/dist/seed-4JS2RJ4A.js.map +0 -1
  618. package/dist/signer-MBZZMXTC.js +0 -24
  619. package/dist/stale-TJ3DYZMQ.js +0 -29
  620. package/dist/storage-SVMKRGCW.js +0 -22
  621. package/dist/store-coordination-provider-2O2VUHKW.js.map +0 -1
  622. package/dist/verify-RVT67IMH.js.map +0 -1
  623. package/dist/walk-HJ42EISE.js +0 -21
  624. package/dist/withdraw-accessible-5NZUPAVA.js +0 -27
  625. /package/dist/{api-GVYEKSJE.js.map → api-MSJXVYQG.js.map} +0 -0
  626. /package/dist/{collection-facade-QU6IJBN3.js.map → capsule/contract.js.map} +0 -0
  627. /package/dist/{kernel/enclave → capsule/enclave-aes}/classify/bidx.d.ts +0 -0
  628. /package/dist/{kernel/enclave → capsule/enclave-aes}/classify/digest.d.ts +0 -0
  629. /package/dist/{kernel/enclave → capsule/enclave-aes}/classify/vdig.d.ts +0 -0
  630. /package/dist/{kernel/enclave/classify → capsule/plumbing}/kofn.d.ts +0 -0
  631. /package/dist/{kernel/enclave/classify → capsule/plumbing}/normalize.d.ts +0 -0
  632. /package/dist/{kernel/enclave → capsule/plumbing}/record-aad.d.ts +0 -0
  633. /package/dist/{chunk-UBSFPGVJ.js.map → capsule-57BDK7LG.js.map} +0 -0
  634. /package/dist/{computed-TPFBX7U4.js.map → chunk-2DX4JCRI.js.map} +0 -0
  635. /package/dist/{chunk-ZSX4S5XB.js.map → chunk-2ZFD2UJC.js.map} +0 -0
  636. /package/dist/{chunk-HT2AHGQI.js.map → chunk-3Y5JLSXS.js.map} +0 -0
  637. /package/dist/{chunk-SI3V7D4G.js.map → chunk-4UIP3QNW.js.map} +0 -0
  638. /package/dist/{chunk-WNJ4AVGE.js.map → chunk-55P6OBB7.js.map} +0 -0
  639. /package/dist/{chunk-MKXXMNJH.js.map → chunk-5UUJE4FP.js.map} +0 -0
  640. /package/dist/{chunk-FW22ZCXT.js.map → chunk-6WS35E6X.js.map} +0 -0
  641. /package/dist/{chunk-6OWXYZK2.js.map → chunk-B65CC6Z6.js.map} +0 -0
  642. /package/dist/{chunk-F2TDU7MQ.js.map → chunk-BJH77UY2.js.map} +0 -0
  643. /package/dist/{chunk-BJ2IXQ5Q.js.map → chunk-BNFNQNEP.js.map} +0 -0
  644. /package/dist/{chunk-HLEK5VAN.js.map → chunk-BUE7R3B5.js.map} +0 -0
  645. /package/dist/{chunk-EOVMT6TB.js.map → chunk-C53ER7AG.js.map} +0 -0
  646. /package/dist/{chunk-K6W7BVZ6.js.map → chunk-CAD7N6HQ.js.map} +0 -0
  647. /package/dist/{chunk-5O7D6ZTW.js.map → chunk-DHU2AQ6T.js.map} +0 -0
  648. /package/dist/{chunk-IT22PWKV.js.map → chunk-ECGXA4LT.js.map} +0 -0
  649. /package/dist/{chunk-4MXI3ODD.js.map → chunk-GCUMOKTN.js.map} +0 -0
  650. /package/dist/{chunk-B6SJIBQK.js.map → chunk-GOJQ5DZA.js.map} +0 -0
  651. /package/dist/{chunk-TKUOEU2F.js.map → chunk-JSWKVZCR.js.map} +0 -0
  652. /package/dist/{chunk-X25NWUZB.js.map → chunk-L5A3KR7R.js.map} +0 -0
  653. /package/dist/{chunk-T52GX4SA.js.map → chunk-LGGIFKJP.js.map} +0 -0
  654. /package/dist/{chunk-ID6Z6E66.js.map → chunk-MQ7YWBQ5.js.map} +0 -0
  655. /package/dist/{chunk-FN5EBVTQ.js.map → chunk-NIXRB5BP.js.map} +0 -0
  656. /package/dist/{chunk-HBRLNOHL.js.map → chunk-NYJBYVBG.js.map} +0 -0
  657. /package/dist/{chunk-ZUVBC32X.js.map → chunk-OK57EATL.js.map} +0 -0
  658. /package/dist/{chunk-TOPYQ6GA.js.map → chunk-PCYPXLEX.js.map} +0 -0
  659. /package/dist/{chunk-VNNRUGMM.js.map → chunk-PGC35KXE.js.map} +0 -0
  660. /package/dist/{chunk-4I522ERM.js.map → chunk-PT2YCQVK.js.map} +0 -0
  661. /package/dist/{chunk-Z5HTYMMQ.js.map → chunk-PTJY5R3O.js.map} +0 -0
  662. /package/dist/{chunk-F24ZZTHQ.js.map → chunk-QGFEBNHO.js.map} +0 -0
  663. /package/dist/{chunk-A6IJU4TK.js.map → chunk-QGSNJD3B.js.map} +0 -0
  664. /package/dist/{chunk-BK2HHQGN.js.map → chunk-QSHATAXJ.js.map} +0 -0
  665. /package/dist/{chunk-JCN44NCY.js.map → chunk-RIZTZJX6.js.map} +0 -0
  666. /package/dist/{chunk-MVZ2TPVP.js.map → chunk-RNACRT5H.js.map} +0 -0
  667. /package/dist/{chunk-TROR3ALR.js.map → chunk-SFCD6OU7.js.map} +0 -0
  668. /package/dist/{chunk-I3JDRCMW.js.map → chunk-TZYTMZZY.js.map} +0 -0
  669. /package/dist/{chunk-AOWGXU6D.js.map → chunk-UAKY6E4N.js.map} +0 -0
  670. /package/dist/{chunk-3JWHAR6E.js.map → chunk-UNSQZSZP.js.map} +0 -0
  671. /package/dist/{chunk-6K7DPM7D.js.map → chunk-WFWFXDNS.js.map} +0 -0
  672. /package/dist/{chunk-CF5UU4S7.js.map → chunk-WHOKGHJ3.js.map} +0 -0
  673. /package/dist/{chunk-32YV3TJT.js.map → chunk-XXNWU5QZ.js.map} +0 -0
  674. /package/dist/{chunk-B57AFBY2.js.map → chunk-XXQ5XIYY.js.map} +0 -0
  675. /package/dist/{chunk-ORDURZBU.js.map → chunk-YFFMPZPY.js.map} +0 -0
  676. /package/dist/{chunk-MDWKM2XC.js.map → chunk-YKGJ44Z7.js.map} +0 -0
  677. /package/dist/{chunk-MLPHLJIQ.js.map → chunk-ZHQJAV6D.js.map} +0 -0
  678. /package/dist/{chunk-7JE7BDYJ.js.map → chunk-ZVSKSUGI.js.map} +0 -0
  679. /package/dist/{derive-OX7F6TGG.js.map → collection-facade-LZIF7GWD.js.map} +0 -0
  680. /package/dist/{enclave-27SMF6GF.js.map → computed-XMFTHAXV.js.map} +0 -0
  681. /package/dist/{executor-B6SRO2QS.js.map → derive-3YSIS36W.js.map} +0 -0
  682. /package/dist/{dispatch-3CQDJV5Q.js.map → dispatch-OFDA4WQV.js.map} +0 -0
  683. /package/dist/{executor-BI5CHWRY.js.map → executor-E6YDJ7YA.js.map} +0 -0
  684. /package/dist/{executor-RBKM5W5K.js.map → executor-NJX3YQQ4.js.map} +0 -0
  685. /package/dist/{export-accessible-VMA3YM5V.js.map → executor-WWM3DD4P.js.map} +0 -0
  686. /package/dist/{extract-partition-NF7PXGPP.js.map → export-accessible-RLHU5G4W.js.map} +0 -0
  687. /package/dist/{find-LZMP26KF.js.map → extract-partition-QII2EDCS.js.map} +0 -0
  688. /package/dist/{issue-IHARXWW5.js.map → find-6M7GYDUZ.js.map} +0 -0
  689. /package/dist/{ledger-KZPCMVZY.js.map → issue-LPEEEMPP.js.map} +0 -0
  690. /package/dist/{liberate-GRLCZMW4.js.map → ledger-MSJGWKGW.js.map} +0 -0
  691. /package/dist/{link-set-JCMJ7ULP.js.map → liberate-LEKDYKTC.js.map} +0 -0
  692. /package/dist/{managed-secret-S3MQ6SH6.js.map → link-set-QXXSPPHL.js.map} +0 -0
  693. /package/dist/{noydb-SWQJ3MZS.js.map → managed-secret-VSK7ANQI.js.map} +0 -0
  694. /package/dist/{migrate-cek-V7GKJZ7O.js.map → migrate-cek-GEBFYBDC.js.map} +0 -0
  695. /package/dist/{register-F3OYE7MJ.js.map → noydb-F2AUF6KL.js.map} +0 -0
  696. /package/dist/{registry-CILQFXFK.js.map → register-SN72QALV.js.map} +0 -0
  697. /package/dist/{registry-XNNYQVKV.js.map → registry-253FF7C6.js.map} +0 -0
  698. /package/dist/{registry-YCDZV3VW.js.map → registry-3AZWQTDT.js.map} +0 -0
  699. /package/dist/{registry-ZGYS33TE.js.map → registry-7UEBTHWG.js.map} +0 -0
  700. /package/dist/{request-withdrawal-Z5NC6TXT.js.map → registry-IVJ67NFQ.js.map} +0 -0
  701. /package/dist/{revoke-ZL62WC2D.js.map → request-withdrawal-UKVJZKX2.js.map} +0 -0
  702. /package/dist/{signer-MBZZMXTC.js.map → revoke-G2KXJQA5.js.map} +0 -0
  703. /package/dist/{stale-TJ3DYZMQ.js.map → signer-IUIYR3CX.js.map} +0 -0
  704. /package/dist/{storage-SVMKRGCW.js.map → stale-SKV33PBU.js.map} +0 -0
  705. /package/dist/{walk-HJ42EISE.js.map → storage-NPBYP2SM.js.map} +0 -0
  706. /package/dist/{withdraw-accessible-5NZUPAVA.js.map → walk-F4OLXI5H.js.map} +0 -0
@@ -5,7 +5,7 @@
5
5
  * `_v`, `_ts`, `_by`, `_source`, `_sourceTs`, `_tier`, `_elevatedBy`) and a
6
6
  * protected body (enclave-owned; `_iv`, `_data`, `_cek`, `_det`, `_sealed`,
7
7
  * `_debug`). The four helpers below are the ONLY sanctioned way for code
8
- * outside `kernel/enclave/**` to read or construct the protected body —
8
+ * outside `capsule/enclave-aes/**` to read or construct the protected body —
9
9
  * later migration batches move the ~121 direct `_iv`/`_data`/`_cek`/`_sealed`
10
10
  * access sites in `with-*` services onto these.
11
11
  *
@@ -13,41 +13,40 @@
13
13
  * per-function doc for its oracle call site) — this file introduces no new
14
14
  * crypto or semantics, only a narrower door onto what already runs.
15
15
  */
16
- import { type RecordIdentity, type RecordRef } from '../record-aad.js';
17
- import { type EnclaveKey } from '../crypto.js';
18
- import type { EncryptedEnvelope } from '../../types.js';
16
+ import { type RecordIdentity, type RecordRef } from './record-aad.js';
17
+ import type { CapsuleKey, CapsulePrimitives } from '../contract.js';
18
+ import type { EncryptedEnvelope } from '../../kernel/types.js';
19
19
  /**
20
- * Open an envelope's protected body to its JSON text.
20
+ * The sealed body, or a typed refusal (#15).
21
21
  *
22
- * Mirrors the dominant direct-decrypt call-site shape (e.g.
23
- * `with-audit/consent/consent.ts`'s `decryptEntry`):
24
- * - `opts.encrypted === false` (default `true`) → plaintext collection;
25
- * returns `env._data` as-is, `key` untouched.
26
- * - `env._cek` present → per-record-key envelope (mirrors
27
- * `record-codec.ts`'s `resolveEnvelopeCek`): unwrap the CEK under `key`
28
- * (the collection DEK), decrypt the body under the unwrapped CEK.
29
- * - `env._cek` absent → legacy path, decrypt the body directly under `key`.
22
+ * Since `_iv`/`_data` became optional, every AES path that is about to call
23
+ * `decrypt()` needs this one narrowing. It is deliberately the ONLY place in
24
+ * the enclave that turns absence into an error: the alternative — a `!` or a
25
+ * `?? ''` at each of the two dozen decrypt sites — would have spelled the
26
+ * same decision twenty-four times and produced an AEAD failure (i.e. hub's
27
+ * tamper alert) instead of an honest one.
28
+ *
29
+ * Ask {@link hasSealedBody} FIRST when absence is a legitimate outcome; this
30
+ * helper is for the paths where it is not.
30
31
  */
31
- export declare function openEnvelopeJson(ref: RecordRef, env: EncryptedEnvelope, key: EnclaveKey, opts?: {
32
- encrypted?: boolean;
33
- }): Promise<string>;
32
+ export declare function requireSealedBody(env: Pick<EncryptedEnvelope, '_iv' | '_data'>, where: string): {
33
+ iv: string;
34
+ data: string;
35
+ };
34
36
  /**
35
- * Produce the protected-body fields (`_iv`/`_data`/`_cek`) for an envelope a
36
- * caller is assembling.
37
+ * {@link requireSealedBody} shaped for the `decrypt(iv, data, …)` argument
38
+ * list, so a narrowing can be spliced into an existing call without
39
+ * restructuring the statement around it:
40
+ *
41
+ * ```ts
42
+ * await decrypt(...sealedBodyArgs(env, 'rekeyRecord'), dek, aad)
43
+ * ```
37
44
  *
38
- * - `opts.encrypted === false` (default `true`) → plaintext collection;
39
- * emits `{ _iv: '', _data: json }` (today's `buildPlaintextEnvelope`
40
- * shape), `key` untouched.
41
- * - `opts.perRecordKey === true` → mints a fresh per-record CEK, encrypts
42
- * the body under it, and AES-KW-wraps the CEK under `key` (mirrors
43
- * `encryptJsonString`'s `cek !== undefined` branch, except the CEK is
44
- * generated here rather than supplied by the caller).
45
- * - otherwise → legacy path, body encrypted directly under `key`.
45
+ * The tuple return type is load-bearing — it is what lets the spread satisfy
46
+ * two fixed positional parameters. Widening it to `string[]` would compile
47
+ * here and fail at every call site.
46
48
  */
47
- export declare function writeEnvelopeBody(identity: RecordIdentity, json: string, key: EnclaveKey, opts?: {
48
- encrypted?: boolean;
49
- perRecordKey?: boolean;
50
- }): Promise<Pick<EncryptedEnvelope, '_iv' | '_data' | '_cek'>>;
49
+ export declare function sealedBodyArgs(env: Pick<EncryptedEnvelope, '_iv' | '_data'>, where: string): [string, string];
51
50
  /**
52
51
  * Approximate protected-body payload size for KPI/telemetry (#807's
53
52
  * period-scoped pull download counters): `_data` + `_iv` string length —
@@ -79,7 +78,7 @@ export declare function hasPerRecordKey(env: EncryptedEnvelope): boolean;
79
78
  *
80
79
  * Deliberately reimplements the two-key-object canonicalization inline
81
80
  * rather than importing `with-commit/history/ledger/entry.ts`'s general
82
- * `canonicalJson` — `kernel/enclave/**` may import only spine types (C3),
81
+ * `canonicalJson` — `capsule/enclave-aes/**` may import only spine types (C3),
83
82
  * never a `with-*` service. For this fixed `{ _data: string; _sealed:
84
83
  * Record<string, string> }` shape the two produce byte-identical output
85
84
  * (verified against that exact call site's oracle expression in
@@ -99,21 +98,18 @@ export declare function envelopeBodyForHash(env: EncryptedEnvelope): string;
99
98
  */
100
99
  export declare function hasSealedBody(env: Pick<EncryptedEnvelope, '_iv'>): boolean;
101
100
  /**
102
- * Does `env` authenticate at the identity `ref` claims, under `key`? (#1042)
103
- *
104
- * The merge's fail-closed check, living here because it is envelope surgery:
105
- * deciding "is there a sealed body at all" reads `_iv`, which
106
- * `enclave-body-only` reserves to this folder. An earlier draft did that test
107
- * in `kernel/noydb.ts` and the guard refused it — correctly, since a caller
108
- * outside the enclave inspecting protected fields is how envelope knowledge
109
- * leaks back out.
110
- *
111
- * Returns a boolean rather than throwing: `applyRemote` must be able to reject
112
- * one poisoned record without halting an entire sync, and a hostile store
113
- * would very much like the opposite.
114
- *
115
- * **A record with no sealed body is vacuously authentic** — a tombstone carries
116
- * none, and a plaintext collection has no AEAD to verify. Those are pass-through
117
- * by construction, not by omission.
101
+ * The cipher-dependent half: the three doors that actually reach the capsule's
102
+ * `encrypt`/`decrypt`. Everything above this line is cipher-FREE — it inspects
103
+ * envelope fields or derives hash input, so it stays a plain module export that
104
+ * both capsules share with nothing to bind.
118
105
  */
119
- export declare function verifyRecordIdentity(ref: RecordRef, env: EncryptedEnvelope, key: EnclaveKey): Promise<boolean>;
106
+ export declare function makeEnvelopeBody(p: CapsulePrimitives): {
107
+ openEnvelopeJson: (ref: RecordRef, env: EncryptedEnvelope, key: CapsuleKey, opts?: {
108
+ encrypted?: boolean;
109
+ }) => Promise<string>;
110
+ writeEnvelopeBody: (identity: RecordIdentity, json: string, key: CapsuleKey, opts?: {
111
+ encrypted?: boolean;
112
+ perRecordKey?: boolean;
113
+ }) => Promise<Pick<EncryptedEnvelope, "_iv" | "_data" | "_cek">>;
114
+ verifyRecordIdentity: (ref: RecordRef, env: EncryptedEnvelope, key: CapsuleKey) => Promise<boolean>;
115
+ };
@@ -0,0 +1,100 @@
1
+ /**
2
+ * `makeCapsule()` — hub's envelope plumbing, bound to one capsule's cipher.
3
+ *
4
+ * ⭐ WHY THIS EXISTS. `enclave-aes` is ~4,200 lines, but only ~1,200 touch
5
+ * `crypto.subtle`. The other ~3,000 — envelope assembly, record-identity AAD,
6
+ * tombstones, the record codec, sealed slots, rekeying — encode HUB'S ENVELOPE
7
+ * FORMAT, not anyone's cipher, so they are identical for every capsule. This
8
+ * module is the single copy; a capsule supplies {@link CapsulePrimitives} and
9
+ * gets the whole surface back.
10
+ *
11
+ * The alternative was copying the plumbing into each capsule. Rejected because
12
+ * nothing would fail when the copies drifted: a change to the tombstone shape
13
+ * or the AAD would have to be made twice, and the miss surfaces as an envelope
14
+ * one capsule writes and the other cannot read — at runtime, in a consumer.
15
+ *
16
+ * ⚠️ BINDING IS PER-CALL, NOT PER-PROCESS, and that is load-bearing. An
17
+ * earlier sketch bound primitives once into module state (`setPrimitives(p)`),
18
+ * which is simpler and wrong: the conformance kit runs two capsules in the
19
+ * same process, so a single global would make the second one silently inherit
20
+ * the first one's cipher — and both suites would still pass.
21
+ *
22
+ * Cipher-FREE helpers are NOT in here. They are plain exports of their own
23
+ * modules (`buildRecordAad`, `isTombstone`, `hasSealedBody`, …) because they
24
+ * inspect envelope fields and need nothing bound. Re-exported below so the
25
+ * capsule surface stays one import for consumers.
26
+ */
27
+ import type { CapsulePrimitives } from '../contract.js';
28
+ export { buildRecordAad, recordAadFor, type RecordIdentity, type RecordRef, } from './record-aad.js';
29
+ export { buildRecordEnvelope } from './record-envelope.js';
30
+ export { isTombstone, isTombstoneShape, buildTombstone, isDeleteMarker, buildDeleteMarker, } from './tombstone.js';
31
+ export { normalizeForVerify } from './normalize.js';
32
+ export { parseSealedSlot } from './sealed-slot.js';
33
+ export { requireSealedBody, sealedBodyArgs, envelopeBodySize, hasPerRecordKey, envelopeBodyForHash, hasSealedBody, } from './envelope-body.js';
34
+ /**
35
+ * Bind the plumbing to a capsule's primitives.
36
+ *
37
+ * Composition order is a real dependency order, not a style choice:
38
+ * `sealedSlot` feeds both `sealedSlots` and `sealing`; `sealedSlots` feeds the
39
+ * codec. Everything else depends only on `p`.
40
+ */
41
+ export declare function makeCapsule(p: CapsulePrimitives): {
42
+ findByDet: <T>(ctx: import("./deterministic.js").DeterministicContext<T>, field: string, value: unknown) => Promise<T | null>;
43
+ queryByDet: <T>(ctx: import("./deterministic.js").DeterministicContext<T>, field: string, value: unknown) => Promise<T[]>;
44
+ SEALED_CEK_NS: string;
45
+ sealRecordToHost: (ctx: import("./sealing.js").SealingContext, collection: string, id: string, hostSealer: import("../../index.js").RecipientSealer, opts: {
46
+ expiresAt: string;
47
+ }) => Promise<{
48
+ pid: string;
49
+ envelopeKey: string;
50
+ }>;
51
+ revokeSealedRecord: (ctx: import("./sealing.js").SealingContext, collection: string, id: string, pid: string, opts?: {
52
+ hard?: boolean;
53
+ }) => Promise<void>;
54
+ rotateRecordCek: (ctx: import("./sealing.js").SealingContext, collection: string, id: string) => Promise<void>;
55
+ 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("./rekey-blob.js").BlobRekeyReport>;
56
+ rekeyEnvelopeToDek: (ref: {
57
+ readonly collection: string;
58
+ readonly id: string;
59
+ }, envelope: import("../../index.js").EncryptedEnvelope, oldDek: import("../contract.js").CapsuleKey, newDek: import("../contract.js").CapsuleKey) => Promise<import("../../index.js").EncryptedEnvelope>;
60
+ rekeyEnvelopeIfNeeded: (ref: {
61
+ readonly collection: string;
62
+ readonly id: string;
63
+ }, envelope: import("../../index.js").EncryptedEnvelope, oldDek: import("../contract.js").CapsuleKey, newDek: import("../contract.js").CapsuleKey) => Promise<import("../../index.js").EncryptedEnvelope | null>;
64
+ envelopeOpensUnderAny: (ref: {
65
+ readonly collection: string;
66
+ readonly id: string;
67
+ }, envelope: import("../../index.js").EncryptedEnvelope, keys: readonly import("../contract.js").CapsuleKey[]) => Promise<boolean>;
68
+ resolveStableCek: (deps: import("./lifecycle.js").StableCekDeps, id: string) => Promise<import("../contract.js").CapsuleKey>;
69
+ rewrapBodyToDek: (from: import("./record-aad.js").RecordIdentity, to: import("./record-aad.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("./lifecycle.js").RewrappedBody>;
70
+ applyRewrappedBody: (envelope: import("../../index.js").EncryptedEnvelope, body: import("./lifecycle.js").RewrappedBody) => import("../../index.js").EncryptedEnvelope;
71
+ rewrapEnvelope: (identity: import("./record-aad.js").RecordIdentity, envelope: import("../../index.js").EncryptedEnvelope, fromDek: import("../contract.js").CapsuleKey, toDek: import("../contract.js").CapsuleKey) => Promise<import("../../index.js").EncryptedEnvelope>;
72
+ isRewrappedUnder: (identity: import("./record-aad.js").RecordIdentity, envelope: Pick<import("../../index.js").EncryptedEnvelope, "_iv" | "_data" | "_cek">, dek: import("../contract.js").CapsuleKey) => Promise<boolean>;
73
+ RecordCodec: import("./record-codec.js").BoundRecordCodec;
74
+ sealFields: (record: Record<string, unknown>, sensitiveFields: ReadonlySet<string>, keyMaterial: import("./sealed-slots.js").SealKeyMaterial) => Promise<import("./sealed-slots.js").SealFieldsResult>;
75
+ unsealOneField: (field: string, blob: string, keyMaterial: import("./sealed-slots.js").SealKeyMaterial) => Promise<unknown>;
76
+ makeHandleProducer: (keyMaterial: import("./sealed-slots.js").SealKeyMaterial) => (field: string, blob: string) => import("../../index.js").SealedHandle<unknown>;
77
+ unsealFields: (record: Record<string, unknown>, sealed: Record<string, string>, keyMaterial: import("./sealed-slots.js").SealKeyMaterial, opts?: {
78
+ asHandles?: boolean;
79
+ }) => Promise<Record<string, unknown>>;
80
+ makeSealedSlotCapability: (ctx: import("./sealed-slots.js").SealedSlotCapabilityCtx, recordId: string, cek?: import("../contract.js").CapsuleKey) => import("../../kernel/via/index.js").ViaCryptoCtx["sealedSlots"];
81
+ makeReservedEnvelopes: (dekResolver: import("./sealed-slots.js").ReservedEnvelopeDekResolver, declaredPrefixes: readonly string[]) => import("../../kernel/via/index.js").ViaCryptoCtx["reservedEnvelopes"];
82
+ dualReadSealedSlot: (blob: string, field: string, collection: string, cek: CryptoKey | undefined, dek: CryptoKey) => Promise<string>;
83
+ openEnvelopeJson: (ref: import("./record-aad.js").RecordRef, env: import("../../index.js").EncryptedEnvelope, key: import("../contract.js").CapsuleKey, opts?: {
84
+ encrypted?: boolean;
85
+ }) => Promise<string>;
86
+ writeEnvelopeBody: (identity: import("./record-aad.js").RecordIdentity, json: string, key: import("../contract.js").CapsuleKey, opts?: {
87
+ encrypted?: boolean;
88
+ perRecordKey?: boolean;
89
+ }) => Promise<Pick<import("../../index.js").EncryptedEnvelope, "_iv" | "_data" | "_cek">>;
90
+ verifyRecordIdentity: (ref: import("./record-aad.js").RecordRef, env: import("../../index.js").EncryptedEnvelope, key: import("../contract.js").CapsuleKey) => Promise<boolean>;
91
+ };
92
+ /**
93
+ * `RecordCodec` as a TYPE is the module-level generic base class; as a VALUE
94
+ * it is the capsule-bound subclass `makeCapsule()` returns. Hub parameterises
95
+ * the type in six places, and an `InstanceType<…>` alias would have dropped
96
+ * `T` at every one of them without an error — see the note in
97
+ * `record-codec.ts`.
98
+ */
99
+ export type { RecordCodecBase as RecordCodec } from './record-codec.js';
100
+ export type Capsule = ReturnType<typeof makeCapsule>;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Per-record CEK lifecycle helpers for the WRITE path.
3
+ *
4
+ * These are the collection-coupled CEK operations, lifted off `Collection`
5
+ * behind narrow deps so the kernel file delegates instead of carrying the
6
+ * crypto inline:
7
+ *
8
+ * - {@link resolveStableCek} — the stable-CEK rule: an update or history
9
+ * snapshot reuses the record's existing CEK so a single CEK delete kills
10
+ * the whole version chain; a genuine insert (or legacy record being
11
+ * migrated) mints a fresh one.
12
+ * - {@link rewrapBodyToDek} — move a record body's wrapping from one DEK to
13
+ * another (tier elevate/demote, bundle re-key) WITHOUT changing the body
14
+ * key: unwrap the CEK under the source DEK, re-encrypt the body under the
15
+ * same CEK, re-wrap the CEK under the destination DEK. History-chain
16
+ * identity is preserved because the body key never changes.
17
+ *
18
+ * Both are pure functions over their deps — the `cekCache` ownership stays on
19
+ * the collection (its lifetime is tied to `load()`), so callers cache the
20
+ * returned key themselves.
21
+ */
22
+ import type { EncryptedEnvelope } from '../../kernel/types.js';
23
+ import { type RecordIdentity } from './record-aad.js';
24
+ import type { Lru } from '../../kernel/cache/index.js';
25
+ /** Dependencies {@link resolveStableCek} needs from its collection. */
26
+ import type { CapsuleKey, CapsulePrimitives } from '../contract.js';
27
+ export interface StableCekDeps {
28
+ /** The collection's per-record CEK cache (`null` → no caching). */
29
+ readonly cache: Lru<string, CapsuleKey> | null;
30
+ /** Read the record's live envelope (to recover an existing `_cek`). */
31
+ getLive(id: string): Promise<EncryptedEnvelope | null>;
32
+ /** The DEK the CEK is wrapped under (the collection DEK on the normal path). */
33
+ getDEK(): Promise<CapsuleKey>;
34
+ }
35
+ /** Re-wrapped body bytes + the (optional) CEK to cache. */
36
+ export interface RewrappedBody {
37
+ readonly _iv: string;
38
+ readonly _data: string;
39
+ /** Present iff the source envelope carried a CEK (per-record-key record). */
40
+ readonly _cek?: string;
41
+ /** The body key when one exists, so the caller can cache it; `null` for a legacy record. */
42
+ readonly cek: CapsuleKey | null;
43
+ }
44
+ export declare function makeLifecycle(p: CapsulePrimitives): {
45
+ resolveStableCek: (deps: StableCekDeps, id: string) => Promise<CapsuleKey>;
46
+ rewrapBodyToDek: (from: RecordIdentity, to: RecordIdentity, envelope: Pick<EncryptedEnvelope, "_iv" | "_data" | "_cek" | "_tier" | "_by">, fromDek: CapsuleKey, toDek: CapsuleKey) => Promise<RewrappedBody>;
47
+ applyRewrappedBody: (envelope: EncryptedEnvelope, body: RewrappedBody) => EncryptedEnvelope;
48
+ rewrapEnvelope: (identity: RecordIdentity, envelope: EncryptedEnvelope, fromDek: CapsuleKey, toDek: CapsuleKey) => Promise<EncryptedEnvelope>;
49
+ isRewrappedUnder: (identity: RecordIdentity, envelope: Pick<EncryptedEnvelope, "_iv" | "_data" | "_cek">, dek: CapsuleKey) => Promise<boolean>;
50
+ };
@@ -16,24 +16,33 @@
16
16
  *
17
17
  * Internal service — not exported as a `@noy-db/hub/*` subpath.
18
18
  */
19
- import { type EnclaveKey } from '../crypto.js';
20
- import { type EncryptedEnvelope, type CrdtMode, type CrdtStrategy, type VdigFieldPolicy, type SealedHandle } from '../../types.js';
21
- import { type RecordIdentity, type RecordRef } from '../record-aad.js';
22
- import { type StandardSchemaV1 } from '../../schema.js';
23
- import type { Lru } from '../../cache/index.js';
24
- import type { ViaCryptoCtx } from '../../via/index.js';
25
- import type { ViaPipeline } from '../../via/pipeline.js';
19
+ import { type EncryptedEnvelope, type CrdtMode, type CrdtStrategy, type VdigFieldPolicy, type SealedHandle } from '../../kernel/types.js';
20
+ import { type RecordIdentity, type RecordRef } from './record-aad.js';
21
+ import { type StandardSchemaV1 } from '../../kernel/schema.js';
22
+ import type { Lru } from '../../kernel/cache/index.js';
23
+ import type { ViaCryptoCtx } from '../../kernel/via/index.js';
24
+ import type { ViaPipeline } from '../../kernel/via/pipeline.js';
26
25
  /**
27
- * One classified per-slot verdict from {@link RecordCodec.classifySealedShred}.
26
+ * One classified per-slot verdict from {@link RecordCodecBase.classifySealedShred}.
28
27
  * `shreddable` — CEK-only, tombstone makes it undecryptable. `dekResidue` —
29
28
  * collection-DEK-keyed, survives in synced/backup copies. The third class is
30
29
  * BOTH: a `_bidx` blind-index tag is live-dropped by the tombstone yet retained
31
30
  * under the surviving DEK in any pre-forget backup (honest dual accounting).
32
31
  */
32
+ import type { CapsuleKey, CapsulePrimitives } from '../contract.js';
33
+ import type { makeSealedSlots } from './sealed-slots.js';
33
34
  export type SealedShredSlot = {
34
35
  readonly field: string;
35
36
  readonly class: 'shreddable' | 'dekResidue' | 'live-shreddable+dekResidue-in-backups';
36
37
  };
38
+ /**
39
+ * The record codec, bound to a capsule.
40
+ *
41
+ * ⚠️ `RecordCodec` is a CLASS declared inside this factory, so the NAME is no
42
+ * longer a module-level type. Hub names it in ~40 places as a type, which is
43
+ * why `plumbing/index.ts` re-exports an `InstanceType<…>` alias under the same
44
+ * name — the type keeps working unchanged for every existing consumer.
45
+ */
37
46
  /** Everything the moving crypto methods touched on `this.*`, as a flat context. */
38
47
  export interface RecordCodecContext<T> {
39
48
  /** Collection name — the crypto AAD scope and schema-error context. */
@@ -75,13 +84,13 @@ export interface RecordCodecContext<T> {
75
84
  * `_dict_status` collection) so a binding's at-rest hook can address a
76
85
  * different collection's DEK without ever holding the resolver itself.
77
86
  */
78
- getDEK(collection?: string): Promise<EnclaveKey>;
87
+ getDEK(collection?: string): Promise<CapsuleKey>;
79
88
  /**
80
89
  * The collection's per-record CEK cache (SHARED reference, not a copy).
81
90
  * Ownership/lifetime stays on Collection; codec reads+writes it in
82
91
  * resolveEnvelopeCek exactly as the inline code did. `null` → no caching.
83
92
  */
84
- readonly cekCache: Lru<string, EnclaveKey> | null;
93
+ readonly cekCache: Lru<string, CapsuleKey> | null;
85
94
  /**
86
95
  * Compiled Via pipeline (money, i18n, …), or undefined for a collection
87
96
  * with none declared. `encryptRecord`/`decryptRecord` consult
@@ -92,7 +101,7 @@ export interface RecordCodecContext<T> {
92
101
  *
93
102
  * Mutable (not `readonly`, #638 Task 3): `Collection.via` can be
94
103
  * reassigned post-construction (the taint overlay, `via/graph-wiring.ts#
95
- * applyTaintOverlay`) — `RecordCodec.setVia` below keeps this in sync so
104
+ * applyTaintOverlay`) — `RecordCodecBase.setVia` below keeps this in sync so
96
105
  * at-rest hooks read the LIVE pipeline, not a stale construction-time
97
106
  * snapshot.
98
107
  */
@@ -110,9 +119,27 @@ export interface RecordCodecContext<T> {
110
119
  */
111
120
  readonly onDecrypt?: ((id: string) => void) | undefined;
112
121
  }
113
- export declare class RecordCodec<T> {
122
+ /**
123
+ * The codec's capsule-provided surface: the 15 primitives + sealed-slot helpers
124
+ * its methods call.
125
+ */
126
+ export type CapsuleBinding = CapsulePrimitives & ReturnType<typeof makeSealedSlots>;
127
+ /**
128
+ * ⚠️ MODULE-LEVEL AND GENERIC ON PURPOSE. The obvious shape — declaring the
129
+ * class inside `makeRecordCodec` and exporting `InstanceType<…>` — compiles and
130
+ * silently DROPS `T`: `RecordCodec<Invoice>` degrades to `RecordCodec<unknown>`
131
+ * at the six places hub parameterises it, turning typed records into `unknown`
132
+ * with no error anywhere.
133
+ *
134
+ * The other way to keep `T` would be a hand-written `interface RecordCodec<T>`
135
+ * that the class implements — i.e. a second declaration of 15 signatures that
136
+ * nothing checks against the first. That is exactly the drift #16 was, so it
137
+ * was not done twice. A base class has one declaration and cannot drift.
138
+ */
139
+ export declare class RecordCodecBase<T> {
140
+ protected readonly caps: CapsuleBinding;
114
141
  private readonly ctx;
115
- constructor(ctx: RecordCodecContext<T>);
142
+ constructor(caps: CapsuleBinding, ctx: RecordCodecContext<T>);
116
143
  /**
117
144
  * @internal Update the live Via pipeline this codec's at-rest hooks read
118
145
  * (#638 Task 3) — called by `via/graph-wiring.ts#applyTaintOverlay` right
@@ -195,7 +222,7 @@ export declare class RecordCodec<T> {
195
222
  * the choice must be made before AAD is switched on, not inferred from this
196
223
  * migration.
197
224
  */
198
- encryptJsonString(ref: RecordRef, json: string, version: number, cek?: EnclaveKey, source?: string, sourceTs?: string): Promise<EncryptedEnvelope>;
225
+ encryptJsonString(ref: RecordRef, json: string, version: number, cek?: CapsuleKey, source?: string, sourceTs?: string): Promise<EncryptedEnvelope>;
199
226
  /**
200
227
  * `ref` is FIRST and required (#1051). It was previously a trailing optional
201
228
  * `id?: string`, which TypeScript cannot promote to required because it sits
@@ -207,7 +234,7 @@ export declare class RecordCodec<T> {
207
234
  * compile on the hottest write path. Carries the collection too — see
208
235
  * {@link encryptJsonString} for why the codec must not assume its own.
209
236
  */
210
- encryptRecord(ref: RecordRef, record: T, version: number, cek?: EnclaveKey, source?: string, sourceTs?: string, vdig?: {
237
+ encryptRecord(ref: RecordRef, record: T, version: number, cek?: CapsuleKey, source?: string, sourceTs?: string, vdig?: {
211
238
  readonly id: string;
212
239
  readonly prev: EncryptedEnvelope | null;
213
240
  }): Promise<EncryptedEnvelope>;
@@ -219,7 +246,7 @@ export declare class RecordCodec<T> {
219
246
  * ({@link decryptJsonString}) and the sealed-field path ({@link decryptRecord}
220
247
  * / {@link toCacheRecord}) so both agree on the record's key.
221
248
  */
222
- resolveEnvelopeCek(envelope: EncryptedEnvelope, id?: string): Promise<EnclaveKey | undefined>;
249
+ resolveEnvelopeCek(envelope: EncryptedEnvelope, id?: string): Promise<CapsuleKey | undefined>;
223
250
  /**
224
251
  * Low-level: decrypt an envelope and return the raw JSON string.
225
252
  *
@@ -262,7 +289,7 @@ export declare class RecordCodec<T> {
262
289
  * {@link Sealed} handle's `reveal()` — so the on-demand reveal and the eager
263
290
  * materialisation always agree byte-for-byte.
264
291
  */
265
- unsealField(field: string, blob: string, cek?: EnclaveKey): Promise<unknown>;
292
+ unsealField(field: string, blob: string, cek?: CapsuleKey): Promise<unknown>;
266
293
  /**
267
294
  * Build the `ViaCryptoCtx` for forget()'s per-ref via-erase fold (#629
268
295
  * Task 10) — resolves the live envelope's CEK exactly like
@@ -291,7 +318,7 @@ export declare class RecordCodec<T> {
291
318
  * may sit in the working-set cache (or be logged/serialised) without
292
319
  * exposing the value, which decrypts only on `reveal()`.
293
320
  */
294
- makeSealedHandle(field: string, blob: string, cek?: EnclaveKey): SealedHandle<unknown>;
321
+ makeSealedHandle(field: string, blob: string, cek?: CapsuleKey): SealedHandle<unknown>;
295
322
  /**
296
323
  * Replace every field the just-written envelope actually sealed with a
297
324
  * {@link Sealed} handle, leaving every other field as its plaintext value.
@@ -333,7 +360,7 @@ export declare class RecordCodec<T> {
333
360
  * never a tier DEK (tier writes don't seal fields; `_sealed` reaches a
334
361
  * tiered envelope only via a tier-0 write later elevated).
335
362
  */
336
- applySealedSlots(record: T, sealed: Record<string, string>, cek: EnclaveKey | undefined, opts?: {
363
+ applySealedSlots(record: T, sealed: Record<string, string>, cek: CapsuleKey | undefined, opts?: {
337
364
  id?: string;
338
365
  sealedAsHandles?: boolean;
339
366
  }): Promise<T>;
@@ -363,7 +390,7 @@ export declare class RecordCodec<T> {
363
390
  * output-recompute path, not the public per-record read surface schema
364
391
  * validation guards.
365
392
  */
366
- decryptRecordAtDek(ref: RecordRef, envelope: EncryptedEnvelope, dek: EnclaveKey): Promise<T | null>;
393
+ decryptRecordAtDek(ref: RecordRef, envelope: EncryptedEnvelope, dek: CapsuleKey): Promise<T | null>;
367
394
  /**
368
395
  * Decrypt an envelope into a record of type `T`.
369
396
  *
@@ -384,3 +411,18 @@ export declare class RecordCodec<T> {
384
411
  sealedAsHandles?: boolean;
385
412
  }): Promise<T | null>;
386
413
  }
414
+ /**
415
+ * The capsule-bound codec constructor: same shape callers have always used
416
+ * (`new RecordCodec(ctx)`), with the capsule already closed over.
417
+ */
418
+ /**
419
+ * `BoundRecordCodec` — PUBLISHED API, reachable from @noy-db/hub/capsule. Flagged as unused because
420
+ * nothing inside hub imports it from this module; a consumer does. Do not narrow
421
+ * or delete without a seam change (#55).
422
+ *
423
+ * @public
424
+ */
425
+ export type BoundRecordCodec = (new <T>(ctx: RecordCodecContext<T>) => RecordCodecBase<T>) & Omit<typeof RecordCodecBase, never>;
426
+ export declare function makeRecordCodec(p: CapsulePrimitives, slots: ReturnType<typeof makeSealedSlots>): {
427
+ RecordCodec: BoundRecordCodec;
428
+ };
@@ -1,4 +1,4 @@
1
- import type { EncryptedEnvelope } from '../types.js';
1
+ import type { EncryptedEnvelope } from '../../kernel/types.js';
2
2
  import type { RecordIdentity } from './record-aad.js';
3
3
  /** The body an envelope carries, independent of who is writing it. */
4
4
  export interface RecordEnvelopeBody {
@@ -0,0 +1,33 @@
1
+ import type { NoydbStore } from '../../kernel/types.js';
2
+ /** Blob metadata envelopes, keyed by eTag. owner: with-shape/blobs/blob-set.ts */
3
+ import type { CapsuleKey, CapsulePrimitives } from '../contract.js';
4
+ /**
5
+ * What a rotation did to the blob set.
6
+ *
7
+ * Deliberately NOT on the enclave barrel: no caller outside this module binds
8
+ * it, and that surface is the fork-swap trust boundary, so exporting a type
9
+ * nobody consumes is pure widening.
10
+ *
11
+ * It is a return value rather than a log line because `foreign` and `blobs`
12
+ * are the only way to tell "left alone, correctly" from "left alone, because
13
+ * the caller passed a wrong `otherDeks` set". Both re-key nothing and both
14
+ * return successfully. `rotate-preserves-blobs.test.ts` asserts these counts
15
+ * against a direct call for exactly that reason.
16
+ */
17
+ export interface BlobRekeyReport {
18
+ /** Index envelopes moved onto the new DEK. */
19
+ readonly blobs: number;
20
+ /** Chunk envelopes re-encrypted under the new DEK. */
21
+ readonly chunks: number;
22
+ /**
23
+ * Index envelopes left alone because they open under a DEK the caller holds
24
+ * for a DIFFERENT slot — an elevated blob, sealed under `_blob#<tier>`. Those
25
+ * are that slot's rotation to do, not this one's.
26
+ */
27
+ readonly foreign: number;
28
+ /** Index envelopes already under the new DEK — a resumed rotation. */
29
+ readonly alreadyMoved: number;
30
+ }
31
+ export declare function makeRekeyBlob(p: CapsulePrimitives): {
32
+ rekeyBlobSet: (adapter: NoydbStore, vault: string, oldDek: CapsuleKey, newDek: CapsuleKey, otherDeks?: readonly CapsuleKey[]) => Promise<BlobRekeyReport>;
33
+ };
@@ -0,0 +1,44 @@
1
+ import type { EncryptedEnvelope } from '../../kernel/types.js';
2
+ /**
3
+ * Produce the envelope `envelope` becomes once its collection's DEK rotates
4
+ * from `oldDek` to `newDek`.
5
+ *
6
+ * **Every slot is carried forward except `_bidx`.** The previous inline version
7
+ * built a fresh literal holding only `_noydb/_v/_ts/_iv/_data`, silently
8
+ * discarding `_by`, `_tier`, `_cek`, `_sealed`, `_vdig` and `_source`. Losing
9
+ * `_tier` was the worst of those: tier-0 reads treat elevated as missing, so an
10
+ * elevated record did not error after a rotation — it simply disappeared.
11
+ *
12
+ * `_bidx` is dropped deliberately. It is a DEK-rooted equality tag, so a tag
13
+ * carried across a DEK rotation can never be re-derived to match a query again
14
+ * while still leaking the old equality partition. Index coverage regrows
15
+ * per-record on the next `put()` under the new DEK.
16
+ *
17
+ * Two shapes, and picking the wrong one is why this needed a helper:
18
+ *
19
+ * - **per-record CEK** (`_cek` present) — the body is sealed under the CEK and
20
+ * the CEK is wrapped under the collection DEK, so rotation re-wraps the CEK
21
+ * and leaves the body **untouched**. The old inline code instead ran
22
+ * `decrypt(body, oldDek)` on these, which throws: rotation could not complete
23
+ * on a collection containing any CEK record.
24
+ * - **bare** — body sealed directly under the DEK, so decrypt and re-encrypt.
25
+ *
26
+ * Idempotence is the caller's problem, not this function's: it assumes
27
+ * `envelope` is still under `oldDek`. A resumable rotation must know which side
28
+ * of the migration each record is on before calling.
29
+ */
30
+ import type { CapsuleKey, CapsulePrimitives } from '../contract.js';
31
+ export declare function makeRekey(p: CapsulePrimitives): {
32
+ rekeyEnvelopeToDek: (ref: {
33
+ readonly collection: string;
34
+ readonly id: string;
35
+ }, envelope: EncryptedEnvelope, oldDek: CapsuleKey, newDek: CapsuleKey) => Promise<EncryptedEnvelope>;
36
+ rekeyEnvelopeIfNeeded: (ref: {
37
+ readonly collection: string;
38
+ readonly id: string;
39
+ }, envelope: EncryptedEnvelope, oldDek: CapsuleKey, newDek: CapsuleKey) => Promise<EncryptedEnvelope | null>;
40
+ envelopeOpensUnderAny: (ref: {
41
+ readonly collection: string;
42
+ readonly id: string;
43
+ }, envelope: EncryptedEnvelope, keys: readonly CapsuleKey[]) => Promise<boolean>;
44
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Sealed-slot (`iv:data`) parsing + the CEK/DEK dual-read, factored out so the
3
+ * three callers that decrypt a `_sealed[field]` slot share ONE implementation
4
+ * with no coupling between them:
5
+ *
6
+ * - {@link RecordCodec.unsealField} / `classifySealedShred` (read + classify),
7
+ * - `record-keys/sealing.ts:rotateRecordCek` (re-seal under a new CEK).
8
+ *
9
+ * These are pure helpers over an explicit `(cek, dek)` pair — NOT a context
10
+ * object — so `sealing.ts` (which holds only the DEK) can import them without
11
+ * pulling in the whole codec, avoiding a codec↔sealing dependency cycle.
12
+ */
13
+ import type { CapsulePrimitives } from '../contract.js';
14
+ /** Parse an `iv:data` sealed slot (split on the FIRST `:`). Cipher-free, so it
15
+ * needs no primitives and stays a plain module-level export. */
16
+ export declare function parseSealedSlot(blob: string): {
17
+ iv: string;
18
+ data: string;
19
+ };
20
+ export declare function makeSealedSlot(p: CapsulePrimitives): {
21
+ dualReadSealedSlot: (blob: string, field: string, collection: string, cek: CryptoKey | undefined, dek: CryptoKey) => Promise<string>;
22
+ };
@@ -0,0 +1,37 @@
1
+ import { SealedHandle } from '../../kernel/types.js';
2
+ import type { ViaCryptoCtx } from '../../kernel/via/index.js';
3
+ /**
4
+ * Key material for one collection's sealed-field derivation. `cek`, when
5
+ * supplied, is preferred (record-scoped); `getDEK` is the fallback (and,
6
+ * for legacy/no-CEK collections, the only key) — mirrors the dual-read
7
+ * `RecordCodec` has always done.
8
+ */
9
+ import type { CapsuleKey, CapsulePrimitives } from '../contract.js';
10
+ export interface SealKeyMaterial {
11
+ readonly collection: string;
12
+ readonly cek?: CapsuleKey;
13
+ getDEK(): Promise<CapsuleKey>;
14
+ }
15
+ export interface SealFieldsResult {
16
+ readonly openRecord: Record<string, unknown>;
17
+ readonly sealed: Record<string, string> | undefined;
18
+ }
19
+ /** What {@link makeSealedSlotCapability} needs — a subset of `RecordCodecContext`. */
20
+ export interface SealedSlotCapabilityCtx {
21
+ readonly name: string;
22
+ getDEK(): Promise<CapsuleKey>;
23
+ }
24
+ /** Resolve the DEK for an arbitrary (possibly synthetic, e.g. `_dict_en`) collection name. */
25
+ export type ReservedEnvelopeDekResolver = (collection: string) => Promise<CapsuleKey>;
26
+ export declare function makeSealedSlots(p: CapsulePrimitives, sealedSlot: {
27
+ dualReadSealedSlot: (blob: string, field: string, collection: string, cek: CapsuleKey | undefined, dek: CapsuleKey) => Promise<string>;
28
+ }): {
29
+ sealFields: (record: Record<string, unknown>, sensitiveFields: ReadonlySet<string>, keyMaterial: SealKeyMaterial) => Promise<SealFieldsResult>;
30
+ unsealOneField: (field: string, blob: string, keyMaterial: SealKeyMaterial) => Promise<unknown>;
31
+ makeHandleProducer: (keyMaterial: SealKeyMaterial) => (field: string, blob: string) => SealedHandle<unknown>;
32
+ unsealFields: (record: Record<string, unknown>, sealed: Record<string, string>, keyMaterial: SealKeyMaterial, opts?: {
33
+ asHandles?: boolean;
34
+ }) => Promise<Record<string, unknown>>;
35
+ makeSealedSlotCapability: (ctx: SealedSlotCapabilityCtx, recordId: string, cek?: CapsuleKey) => ViaCryptoCtx["sealedSlots"];
36
+ makeReservedEnvelopes: (dekResolver: ReservedEnvelopeDekResolver, declaredPrefixes: readonly string[]) => ViaCryptoCtx["reservedEnvelopes"];
37
+ };
@@ -0,0 +1,29 @@
1
+ import { type NoydbStore, type RecipientSealer } from '../../kernel/types.js';
2
+ import type { CapsuleKey, CapsulePrimitives } from '../contract.js';
3
+ /** What the grantor functions need from their `Vault`. */
4
+ export interface SealingContext {
5
+ readonly adapter: NoydbStore;
6
+ /** Vault id (the adapter's first coordinate). */
7
+ readonly vault: string;
8
+ /** Resolve the DEK a record's CEK is wrapped under. */
9
+ getDEK(collection: string): Promise<CapsuleKey>;
10
+ /** Actor id stamped on `_by` (empty string → omit). */
11
+ readonly actor: string;
12
+ /** Evict the per-record CEK cache + decrypted-record cache after a rotation. */
13
+ invalidateRecordCaches(collection: string, id: string): Promise<void>;
14
+ }
15
+ export declare function makeSealing(p: CapsulePrimitives, sealedSlot: {
16
+ dualReadSealedSlot: (blob: string, field: string, collection: string, cek: CapsuleKey | undefined, dek: CapsuleKey) => Promise<string>;
17
+ }): {
18
+ SEALED_CEK_NS: string;
19
+ sealRecordToHost: (ctx: SealingContext, collection: string, id: string, hostSealer: RecipientSealer, opts: {
20
+ expiresAt: string;
21
+ }) => Promise<{
22
+ pid: string;
23
+ envelopeKey: string;
24
+ }>;
25
+ revokeSealedRecord: (ctx: SealingContext, collection: string, id: string, pid: string, opts?: {
26
+ hard?: boolean;
27
+ }) => Promise<void>;
28
+ rotateRecordCek: (ctx: SealingContext, collection: string, id: string) => Promise<void>;
29
+ };