@noy-db/hub 0.7.0 → 0.8.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 (616) hide show
  1. package/CHANGELOG.md +105 -14
  2. package/LICENSE +202 -21
  3. package/NOTICE +1 -0
  4. package/README.md +27 -10
  5. package/codemods/0.8.0-pre.json +61 -0
  6. package/dist/api-GVYEKSJE.js +19 -0
  7. package/dist/as/index.js +11 -11
  8. package/dist/at/index.js +9 -9
  9. package/dist/attestation/index.js +20 -20
  10. package/dist/{backup-IJTB4S4M.js → backup-7TFRVFLH.js} +21 -15
  11. package/dist/backup-7TFRVFLH.js.map +1 -0
  12. package/dist/blobs/index.js +13 -13
  13. package/dist/broker/index.js +12 -12
  14. package/dist/by/index.js +2 -2
  15. package/dist/cargo/index.js +39 -36
  16. package/dist/{chunk-7O3Y4PPD.js → chunk-244VXYPG.js} +140 -16
  17. package/dist/chunk-244VXYPG.js.map +1 -0
  18. package/dist/{chunk-BUE2D7PX.js → chunk-32YV3TJT.js} +2 -2
  19. package/dist/{chunk-3RCJJBNR.js → chunk-3ELRMVJK.js} +12 -12
  20. package/dist/{chunk-6GMZ7HEE.js → chunk-3F7GLNAE.js} +6 -6
  21. package/dist/{chunk-2Y4IMKA6.js → chunk-3H5KLDZN.js} +4 -4
  22. package/dist/{chunk-VTFVLCUH.js → chunk-3JWHAR6E.js} +2 -2
  23. package/dist/{chunk-YMUFFJCO.js → chunk-3TDUWVWB.js} +5 -2
  24. package/dist/chunk-3TDUWVWB.js.map +1 -0
  25. package/dist/{chunk-JBDFMYKQ.js → chunk-4AF3TUMP.js} +2 -2
  26. package/dist/{chunk-ZORTV6NH.js → chunk-4I522ERM.js} +88 -4
  27. package/dist/chunk-4I522ERM.js.map +1 -0
  28. package/dist/{chunk-MUM7IANK.js → chunk-4MXI3ODD.js} +4 -4
  29. package/dist/chunk-4MXI3ODD.js.map +1 -0
  30. package/dist/{chunk-BLN54W3L.js → chunk-5FDLC6G7.js} +56 -3
  31. package/dist/chunk-5FDLC6G7.js.map +1 -0
  32. package/dist/chunk-5O7D6ZTW.js +53 -0
  33. package/dist/chunk-5O7D6ZTW.js.map +1 -0
  34. package/dist/{chunk-J6FXAEUG.js → chunk-6B3VNR4P.js} +12 -12
  35. package/dist/{chunk-TUFM4UZP.js → chunk-6K7DPM7D.js} +2 -2
  36. package/dist/{chunk-K6LHRFBL.js → chunk-6LMQ5R26.js} +7 -7
  37. package/dist/{chunk-SPXXX5E4.js → chunk-6LNL42F5.js} +94 -32
  38. package/dist/chunk-6LNL42F5.js.map +1 -0
  39. package/dist/{chunk-XLMEZIAJ.js → chunk-6OWXYZK2.js} +2 -2
  40. package/dist/{chunk-BOWNCWZT.js → chunk-6QSQQLSE.js} +3 -3
  41. package/dist/chunk-7JE7BDYJ.js +1558 -0
  42. package/dist/chunk-7JE7BDYJ.js.map +1 -0
  43. package/dist/{chunk-KG7TZKZG.js → chunk-7VCXZDA4.js} +5 -5
  44. package/dist/chunk-7VCXZDA4.js.map +1 -0
  45. package/dist/{chunk-NQKIUNW5.js → chunk-A6IJU4TK.js} +2 -2
  46. package/dist/{chunk-BM5TWITZ.js → chunk-ANWPSTZU.js} +38 -9
  47. package/dist/chunk-ANWPSTZU.js.map +1 -0
  48. package/dist/{chunk-QIZPZMUI.js → chunk-AOWGXU6D.js} +2 -2
  49. package/dist/{chunk-CUZLNGD5.js → chunk-B2YY6WDD.js} +1 -1
  50. package/dist/chunk-B2YY6WDD.js.map +1 -0
  51. package/dist/{chunk-SFAWCTEM.js → chunk-B57AFBY2.js} +2 -2
  52. package/dist/{chunk-GPEQUXHL.js → chunk-B6SJIBQK.js} +4 -4
  53. package/dist/chunk-BJ2IXQ5Q.js +100 -0
  54. package/dist/chunk-BJ2IXQ5Q.js.map +1 -0
  55. package/dist/{chunk-Q2PU57HC.js → chunk-BK2HHQGN.js} +2 -2
  56. package/dist/chunk-BKT776R5.js +1 -0
  57. package/dist/{chunk-KUX3OB6D.js → chunk-BP6DARYA.js} +33 -5
  58. package/dist/chunk-BP6DARYA.js.map +1 -0
  59. package/dist/{chunk-FXBIP2WD.js → chunk-BUDAGWL5.js} +6 -6
  60. package/dist/chunk-CF5UU4S7.js +757 -0
  61. package/dist/chunk-CF5UU4S7.js.map +1 -0
  62. package/dist/{chunk-BOET4NA4.js → chunk-CKNGS5MH.js} +3 -3
  63. package/dist/chunk-CY2CYVWZ.js +41 -0
  64. package/dist/chunk-CY2CYVWZ.js.map +1 -0
  65. package/dist/{chunk-2577DKXB.js → chunk-DC5QVPV7.js} +2 -2
  66. package/dist/chunk-DC5QVPV7.js.map +1 -0
  67. package/dist/{chunk-YSRUYAVU.js → chunk-DE4DH2RZ.js} +2 -2
  68. package/dist/{chunk-6I2RQCET.js → chunk-DF73H4UN.js} +4 -4
  69. package/dist/{chunk-4GVM6QZA.js → chunk-ENAG3IY7.js} +2 -2
  70. package/dist/chunk-ENAG3IY7.js.map +1 -0
  71. package/dist/{chunk-K7NTTA6P.js → chunk-EOVMT6TB.js} +2 -2
  72. package/dist/chunk-F24ZZTHQ.js +193 -0
  73. package/dist/chunk-F24ZZTHQ.js.map +1 -0
  74. package/dist/chunk-F2TDU7MQ.js +456 -0
  75. package/dist/chunk-F2TDU7MQ.js.map +1 -0
  76. package/dist/chunk-F6NCB7KT.js +13 -0
  77. package/dist/chunk-F6NCB7KT.js.map +1 -0
  78. package/dist/{chunk-SPYWXKJN.js → chunk-F7XGHL5O.js} +3 -3
  79. package/dist/chunk-F7XGHL5O.js.map +1 -0
  80. package/dist/{chunk-XTXOCYOJ.js → chunk-FCKWQE2H.js} +5 -5
  81. package/dist/{chunk-U4FOQDY4.js → chunk-FH2L2E34.js} +4 -4
  82. package/dist/chunk-FH2L2E34.js.map +1 -0
  83. package/dist/{chunk-4OZNXTO4.js → chunk-FN5EBVTQ.js} +2 -2
  84. package/dist/chunk-FQ54DWUQ.js +270 -0
  85. package/dist/chunk-FQ54DWUQ.js.map +1 -0
  86. package/dist/{chunk-NKHRDYOR.js → chunk-FQ5VRHIB.js} +4 -4
  87. package/dist/{chunk-FAHMLERK.js → chunk-FW22ZCXT.js} +2 -2
  88. package/dist/chunk-FXQBGFOX.js +524 -0
  89. package/dist/chunk-FXQBGFOX.js.map +1 -0
  90. package/dist/{chunk-AO42KJO6.js → chunk-GF5BZ7D4.js} +45 -9
  91. package/dist/chunk-GF5BZ7D4.js.map +1 -0
  92. package/dist/{chunk-TRGTKX5E.js → chunk-GHLTDZRS.js} +5 -3
  93. package/dist/{chunk-TRGTKX5E.js.map → chunk-GHLTDZRS.js.map} +1 -1
  94. package/dist/{chunk-5WDXHNSW.js → chunk-HBPPGWUM.js} +5 -5
  95. package/dist/chunk-HBPPGWUM.js.map +1 -0
  96. package/dist/{chunk-KTFRCC5C.js → chunk-HBRLNOHL.js} +82 -8
  97. package/dist/chunk-HBRLNOHL.js.map +1 -0
  98. package/dist/chunk-HLEK5VAN.js +275 -0
  99. package/dist/chunk-HLEK5VAN.js.map +1 -0
  100. package/dist/{chunk-RMS3NEA3.js → chunk-HT2AHGQI.js} +2 -2
  101. package/dist/{chunk-CHJBLCOG.js → chunk-HVSCEIYL.js} +7 -7
  102. package/dist/{chunk-UXWB3FPF.js → chunk-I3JDRCMW.js} +150 -22
  103. package/dist/chunk-I3JDRCMW.js.map +1 -0
  104. package/dist/{chunk-GY4WYNNG.js → chunk-ID6Z6E66.js} +2 -2
  105. package/dist/{chunk-EYBQEIUY.js → chunk-IEX7NK2K.js} +3 -3
  106. package/dist/{chunk-KUJDV5QH.js → chunk-ISZQJBML.js} +5 -5
  107. package/dist/{chunk-LWBCUYZW.js → chunk-IT22PWKV.js} +2 -2
  108. package/dist/{chunk-EQEYOJBM.js → chunk-IUWCVHQ7.js} +3 -3
  109. package/dist/chunk-IUWCVHQ7.js.map +1 -0
  110. package/dist/{chunk-7V4TP3AF.js → chunk-J6UOHJY5.js} +4 -4
  111. package/dist/{chunk-JMGDHKQF.js → chunk-JCN44NCY.js} +2 -2
  112. package/dist/{chunk-CARABLSQ.js → chunk-K6W7BVZ6.js} +3 -3
  113. package/dist/{chunk-77K4PG6P.js → chunk-KJFW62P4.js} +29 -11
  114. package/dist/chunk-KJFW62P4.js.map +1 -0
  115. package/dist/{chunk-453F654R.js → chunk-L7DOS3TE.js} +2 -2
  116. package/dist/chunk-LGNDFRYC.js +23 -0
  117. package/dist/chunk-LGNDFRYC.js.map +1 -0
  118. package/dist/{chunk-WEQEYLCS.js → chunk-LGRLME4M.js} +7 -7
  119. package/dist/{chunk-RMF67KCG.js → chunk-LQ4ZHOKP.js} +2 -2
  120. package/dist/{chunk-ZVO4QVPD.js → chunk-M522UYZ2.js} +5 -5
  121. package/dist/{chunk-G56KBWFY.js → chunk-M7NI3IWE.js} +45 -12
  122. package/dist/chunk-M7NI3IWE.js.map +1 -0
  123. package/dist/chunk-MDWKM2XC.js +293 -0
  124. package/dist/chunk-MDWKM2XC.js.map +1 -0
  125. package/dist/chunk-MKXXMNJH.js +204 -0
  126. package/dist/chunk-MKXXMNJH.js.map +1 -0
  127. package/dist/{chunk-SKGMN35F.js → chunk-MLPHLJIQ.js} +3 -3
  128. package/dist/chunk-MLPHLJIQ.js.map +1 -0
  129. package/dist/{chunk-2N4GY74U.js → chunk-MTL7MXGR.js} +6 -6
  130. package/dist/{chunk-TFR7DSOV.js → chunk-MVZ2TPVP.js} +2 -2
  131. package/dist/{chunk-CPWQB3N5.js → chunk-N5DNADLQ.js} +7 -7
  132. package/dist/{chunk-ELNXJMGB.js → chunk-NNARWO72.js} +6 -6
  133. package/dist/{chunk-PT43Y56J.js → chunk-NRT6QZQB.js} +102 -16
  134. package/dist/chunk-NRT6QZQB.js.map +1 -0
  135. package/dist/{chunk-QIBVIOXO.js → chunk-NWHBJQAL.js} +99 -8
  136. package/dist/chunk-NWHBJQAL.js.map +1 -0
  137. package/dist/chunk-NYMLINRP.js +28 -0
  138. package/dist/chunk-NYMLINRP.js.map +1 -0
  139. package/dist/{chunk-7MG7SJT7.js → chunk-ODVPTDPK.js} +1 -1
  140. package/dist/chunk-ODVPTDPK.js.map +1 -0
  141. package/dist/chunk-ORDURZBU.js +461 -0
  142. package/dist/chunk-ORDURZBU.js.map +1 -0
  143. package/dist/{chunk-6YXCPL4T.js → chunk-PDCG6PR5.js} +2 -2
  144. package/dist/{chunk-REDOOY2Q.js → chunk-PSIV7CJV.js} +2 -2
  145. package/dist/{chunk-NA2NIJZI.js → chunk-QBBUZ3I3.js} +126 -19
  146. package/dist/chunk-QBBUZ3I3.js.map +1 -0
  147. package/dist/{chunk-5VCRVKOZ.js → chunk-QOOUUR4A.js} +6 -4
  148. package/dist/{chunk-5VCRVKOZ.js.map → chunk-QOOUUR4A.js.map} +1 -1
  149. package/dist/{chunk-ANATMFIO.js → chunk-QWFHIOD2.js} +5 -5
  150. package/dist/{chunk-X2DLENDQ.js → chunk-QWGU66MP.js} +3 -3
  151. package/dist/chunk-RHVMZSUU.js +7 -0
  152. package/dist/chunk-RHVMZSUU.js.map +1 -0
  153. package/dist/{chunk-BSFNRLK2.js → chunk-S57HTZ6X.js} +5 -5
  154. package/dist/{chunk-SZJ3DLZA.js → chunk-SEE332EV.js} +2 -2
  155. package/dist/{chunk-YYP7WSEB.js → chunk-SI3V7D4G.js} +2 -2
  156. package/dist/{chunk-UGTBXF5U.js → chunk-SOIQ4MM4.js} +3 -3
  157. package/dist/chunk-SUZKW6UR.js +25 -0
  158. package/dist/chunk-SUZKW6UR.js.map +1 -0
  159. package/dist/{chunk-VXGSWL6L.js → chunk-SYVZW77S.js} +6 -6
  160. package/dist/{chunk-6GOE5PGN.js → chunk-T2LBQ5DV.js} +883 -227
  161. package/dist/chunk-T2LBQ5DV.js.map +1 -0
  162. package/dist/chunk-T52GX4SA.js +215 -0
  163. package/dist/chunk-T52GX4SA.js.map +1 -0
  164. package/dist/{chunk-MVMXZYXT.js → chunk-TKUOEU2F.js} +2 -2
  165. package/dist/chunk-TOPYQ6GA.js +31 -0
  166. package/dist/chunk-TOPYQ6GA.js.map +1 -0
  167. package/dist/{chunk-SMH6SRX7.js → chunk-TROR3ALR.js} +2 -2
  168. package/dist/{chunk-2C3AQB46.js → chunk-UD5EVGZ7.js} +42 -389
  169. package/dist/chunk-UD5EVGZ7.js.map +1 -0
  170. package/dist/{chunk-KJIMGIWO.js → chunk-UPD5NWI5.js} +65 -17
  171. package/dist/chunk-UPD5NWI5.js.map +1 -0
  172. package/dist/{chunk-SL3JAAKN.js → chunk-UYB234ZR.js} +30 -2
  173. package/dist/chunk-UYB234ZR.js.map +1 -0
  174. package/dist/chunk-VHM7HCKB.js +220 -0
  175. package/dist/chunk-VHM7HCKB.js.map +1 -0
  176. package/dist/{chunk-DGOZ4UZD.js → chunk-VNNRUGMM.js} +2 -2
  177. package/dist/{chunk-HDOU6I2Y.js → chunk-VNPEWFPD.js} +4 -4
  178. package/dist/{chunk-L7CIOOBW.js → chunk-WNJ4AVGE.js} +2 -2
  179. package/dist/{chunk-FMZY5Q6L.js → chunk-WX5ADGTZ.js} +3 -3
  180. package/dist/{chunk-VXANTWBJ.js → chunk-WY2XXTET.js} +92 -6
  181. package/dist/{chunk-VXANTWBJ.js.map → chunk-WY2XXTET.js.map} +1 -1
  182. package/dist/{chunk-6X6SEMEE.js → chunk-X25NWUZB.js} +33 -8
  183. package/dist/chunk-X25NWUZB.js.map +1 -0
  184. package/dist/{chunk-Q7HZX3IF.js → chunk-X4773RBR.js} +2 -2
  185. package/dist/chunk-XBKH4FOC.js +195 -0
  186. package/dist/chunk-XBKH4FOC.js.map +1 -0
  187. package/dist/{chunk-ANSIZYEG.js → chunk-YNIUIERI.js} +3 -3
  188. package/dist/chunk-YSK2CU2Q.js +936 -0
  189. package/dist/chunk-YSK2CU2Q.js.map +1 -0
  190. package/dist/{chunk-UXVWEX5L.js → chunk-Z5HTYMMQ.js} +6 -2
  191. package/dist/chunk-Z5HTYMMQ.js.map +1 -0
  192. package/dist/{chunk-RRNRNANG.js → chunk-ZE4CHIED.js} +66 -75
  193. package/dist/chunk-ZE4CHIED.js.map +1 -0
  194. package/dist/chunk-ZSX4S5XB.js +1289 -0
  195. package/dist/chunk-ZSX4S5XB.js.map +1 -0
  196. package/dist/{chunk-BZ3534YM.js → chunk-ZUVBC32X.js} +2 -2
  197. package/dist/{chunk-L742JPKZ.js → chunk-ZXABPVM6.js} +6 -6
  198. package/dist/classified/index.js +5 -5
  199. package/dist/{classified-marker-LI2SF2E4.js → classified-marker-W3USLL5M.js} +3 -3
  200. package/dist/collection-facade-QU6IJBN3.js +48 -0
  201. package/dist/{computed-VPOKQK4N.js → computed-TPFBX7U4.js} +3 -3
  202. package/dist/consent/index.js +9 -9
  203. package/dist/cover/index.js +10 -10
  204. package/dist/coverage/index.js +306 -0
  205. package/dist/coverage/index.js.map +1 -0
  206. package/dist/custody/index.js +12 -12
  207. package/dist/{dead-filter-TSWZQRR5.js → dead-filter-U2UYKSZL.js} +2 -2
  208. package/dist/debug/index.js +1 -1
  209. package/dist/{delegation-OVIFFPG4.js → delegation-S3AEPW2T.js} +11 -11
  210. package/dist/derivations/index.js +25 -22
  211. package/dist/derive-OX7F6TGG.js +21 -0
  212. package/dist/directory/index.js +10 -10
  213. package/dist/{dispatch-WC6X2M6C.js → dispatch-3CQDJV5Q.js} +5 -5
  214. package/dist/{dispatch-S73TK3IY.js → dispatch-RH4LHKBH.js} +21 -21
  215. package/dist/{enclave-KJOTOH7X.js → enclave-27SMF6GF.js} +15 -9
  216. package/dist/executor-B6SRO2QS.js +36 -0
  217. package/dist/executor-BI5CHWRY.js +8 -0
  218. package/dist/executor-RBKM5W5K.js +8 -0
  219. package/dist/export-accessible-VMA3YM5V.js +22 -0
  220. package/dist/extract-partition-NF7PXGPP.js +37 -0
  221. package/dist/{fanout-sidecar-WUFXNYP4.js → fanout-sidecar-OT6RYLOL.js} +9 -9
  222. package/dist/find-LZMP26KF.js +10 -0
  223. package/dist/forget/index.js +9 -9
  224. package/dist/guards/index.js +4 -4
  225. package/dist/history/index.js +13 -13
  226. package/dist/i18n/index.js +14 -14
  227. package/dist/index.d.ts +29 -6
  228. package/dist/index.js +999 -191
  229. package/dist/index.js.map +1 -1
  230. package/dist/indexing/index.js +13 -5
  231. package/dist/indexing/index.js.map +1 -1
  232. package/dist/introspection/index.js +11 -11
  233. package/dist/issue-IHARXWW5.js +18 -0
  234. package/dist/ivf-flat-UZ6DQDLS.js +314 -0
  235. package/dist/ivf-flat-UZ6DQDLS.js.map +1 -0
  236. package/dist/{json-schema-V3M5MUCM.js → json-schema-3SHX72CC.js} +2 -1
  237. package/dist/json-schema-3SHX72CC.js.map +1 -0
  238. package/dist/kernel/collection-config.d.ts +4 -20
  239. package/dist/kernel/collection.d.ts +29 -8
  240. package/dist/kernel/enclave/crypto.d.ts +16 -0
  241. package/dist/kernel/enclave/index.d.ts +1 -1
  242. package/dist/kernel/enclave/record-keys/record-codec.d.ts +25 -0
  243. package/dist/kernel/errors.d.ts +227 -36
  244. package/dist/kernel/generation-map.d.ts +48 -0
  245. package/dist/kernel/memory-store.d.ts +35 -7
  246. package/dist/kernel/noydb.d.ts +6 -1
  247. package/dist/kernel/present-cache.d.ts +58 -0
  248. package/dist/kernel/query/all.d.ts +7 -0
  249. package/dist/kernel/query/builder.d.ts +601 -270
  250. package/dist/kernel/query/civil-date.d.ts +64 -0
  251. package/dist/kernel/query/cursor.d.ts +40 -0
  252. package/dist/kernel/query/distinct-key.d.ts +98 -0
  253. package/dist/kernel/query/hydration.d.ts +76 -0
  254. package/dist/kernel/query/index.d.ts +31 -15
  255. package/dist/kernel/query/internal/core.d.ts +30 -0
  256. package/dist/kernel/query/internal/hooks.d.ts +22 -0
  257. package/dist/kernel/query/internal/maintenance.d.ts +43 -0
  258. package/dist/kernel/query/live/incremental.d.ts +314 -0
  259. package/dist/kernel/query/live/index.d.ts +22 -0
  260. package/dist/kernel/query/live/install.d.ts +2 -0
  261. package/dist/kernel/query/{live.d.ts → live/live.d.ts} +39 -9
  262. package/dist/kernel/query/live/methods.d.ts +107 -0
  263. package/dist/kernel/query/predicate.d.ts +119 -1
  264. package/dist/kernel/query/reduce/date-trunc.d.ts +75 -0
  265. package/dist/kernel/query/reduce/index.d.ts +36 -0
  266. package/dist/kernel/query/reduce/install.d.ts +2 -0
  267. package/dist/kernel/query/reduce/methods.d.ts +259 -0
  268. package/dist/kernel/query/reduce/scan-methods.d.ts +121 -0
  269. package/dist/kernel/query/relate/explain.d.ts +199 -0
  270. package/dist/kernel/query/relate/index.d.ts +48 -0
  271. package/dist/kernel/query/relate/install.d.ts +2 -0
  272. package/dist/kernel/query/relate/join-on.d.ts +126 -0
  273. package/dist/kernel/query/relate/join-reduce.d.ts +16 -0
  274. package/dist/kernel/query/relate/join.d.ts +452 -0
  275. package/dist/kernel/query/relate/methods.d.ts +426 -0
  276. package/dist/kernel/query/relate/partition.d.ts +87 -0
  277. package/dist/kernel/query/relate/scan-methods.d.ts +163 -0
  278. package/dist/kernel/query/relate/traverse.d.ts +109 -0
  279. package/dist/kernel/query/scan-builder.d.ts +79 -176
  280. package/dist/kernel/query/sort-key.d.ts +52 -0
  281. package/dist/kernel/tx-write-gate.d.ts +77 -0
  282. package/dist/kernel/types.d.ts +71 -3
  283. package/dist/kernel/validation.d.ts +27 -10
  284. package/dist/kernel/vault.d.ts +9 -4
  285. package/dist/kernel/via/compose.d.ts +3 -0
  286. package/dist/kernel/via/index.d.ts +56 -0
  287. package/dist/kernel/via/pipeline.d.ts +48 -0
  288. package/dist/{ledger-F33ZVMTK.js → ledger-KZPCMVZY.js} +11 -11
  289. package/dist/liberate-GRLCZMW4.js +24 -0
  290. package/dist/link-set-JCMJ7ULP.js +30 -0
  291. package/dist/{managed-secret-PQYKSR6T.js → managed-secret-S3MQ6SH6.js} +10 -10
  292. package/dist/materialized-views/index.js +30 -23
  293. package/dist/{migrate-cek-5ENH64AA.js → migrate-cek-V7GKJZ7O.js} +2 -2
  294. package/dist/money/index.js +5 -5
  295. package/dist/noydb-SWQJ3MZS.js +97 -0
  296. package/dist/overlay-views/index.js +4 -4
  297. package/dist/periods/index.js +12 -12
  298. package/dist/pod/index.js +75 -68
  299. package/dist/{pod-handle-Q736KYON.js → pod-handle-WGDFB4C2.js} +9 -9
  300. package/dist/policy/index.js +10 -10
  301. package/dist/port/with/blob-strategy.d.ts +9 -0
  302. package/dist/port/with/collection-options.d.ts +5 -0
  303. package/dist/port/with/coverage-strategy.d.ts +83 -0
  304. package/dist/port/with/service-bus.d.ts +46 -0
  305. package/dist/port/with/strategies.d.ts +2 -0
  306. package/dist/portability/index.js +8 -8
  307. package/dist/{post-register-LNE2FE2A.js → post-register-SLSXIPBV.js} +6 -6
  308. package/dist/query/all/index.js +31 -0
  309. package/dist/query/index.js +20 -32
  310. package/dist/query/live/index.js +21 -0
  311. package/dist/query/live/index.js.map +1 -0
  312. package/dist/query/reduce/index.js +33 -0
  313. package/dist/query/reduce/index.js.map +1 -0
  314. package/dist/query/relate/index.js +56 -0
  315. package/dist/query/relate/index.js.map +1 -0
  316. package/dist/reduce/index.js +72 -18
  317. package/dist/reduce/index.js.map +1 -1
  318. package/dist/register-F3OYE7MJ.js +31 -0
  319. package/dist/registry-CILQFXFK.js +8 -0
  320. package/dist/registry-XNNYQVKV.js +8 -0
  321. package/dist/registry-YCDZV3VW.js +35 -0
  322. package/dist/registry-ZGYS33TE.js +24 -0
  323. package/dist/request-withdrawal-Z5NC6TXT.js +30 -0
  324. package/dist/{reveal-67RDQRIN.js → reveal-4BCKPEC2.js} +6 -6
  325. package/dist/revoke-ZL62WC2D.js +23 -0
  326. package/dist/satellites/index.js +1 -1
  327. package/dist/schema-update/index.js +2 -2
  328. package/dist/sealed-record/index.js +12 -12
  329. package/dist/search/index.js +11 -5
  330. package/dist/{seed-G42JYN56.js → seed-4JS2RJ4A.js} +12 -12
  331. package/dist/sequence/index.js +9 -9
  332. package/dist/session/index.js +9 -9
  333. package/dist/shadow/index.js +2 -2
  334. package/dist/signer-MBZZMXTC.js +24 -0
  335. package/dist/snapshots/index.js +10 -10
  336. package/dist/{stale-DDL7WQEZ.js → stale-TJ3DYZMQ.js} +10 -10
  337. package/dist/storage-SVMKRGCW.js +22 -0
  338. package/dist/{store-coordination-provider-MEQ2MJQG.js → store-coordination-provider-2O2VUHKW.js} +10 -10
  339. package/dist/sync/index.js +10 -10
  340. package/dist/team/index.js +17 -15
  341. package/dist/tiers/index.js +13 -11
  342. package/dist/to/index.js +2 -2
  343. package/dist/transactions/index.js +3 -3
  344. package/dist/util/index.js +1 -1
  345. package/dist/vault-head/index.js +8 -8
  346. package/dist/{verify-KOV2G5D6.js → verify-RVT67IMH.js} +5 -5
  347. package/dist/via/blob/index.d.ts +1 -0
  348. package/dist/via/geo/binding.d.ts +31 -0
  349. package/dist/via/geo/descriptor.d.ts +54 -0
  350. package/dist/via/geo/geohash.d.ts +95 -0
  351. package/dist/via/geo/index.d.ts +13 -0
  352. package/dist/via/geo/where.d.ts +50 -0
  353. package/dist/via/i18n/core.d.ts +1 -1
  354. package/dist/via/lookup/registry.d.ts +1 -1
  355. package/dist/via/lookup/snapshot.d.ts +3 -3
  356. package/dist/walk-HJ42EISE.js +21 -0
  357. package/dist/walk-HJ42EISE.js.map +1 -0
  358. package/dist/with-audit/coverage/accounting.d.ts +112 -0
  359. package/dist/with-audit/coverage/active.d.ts +29 -0
  360. package/dist/with-audit/coverage/index.d.ts +61 -0
  361. package/dist/with-audit/coverage/sketch.d.ts +75 -0
  362. package/dist/with-audit/periods/periods.d.ts +55 -7
  363. package/dist/with-audit/periods/reserved-collections.d.ts +3 -0
  364. package/dist/with-audit/periods/vault-facade.d.ts +17 -0
  365. package/dist/with-audit/tiers/index.d.ts +51 -0
  366. package/dist/with-audit/tiers/strategy.d.ts +8 -0
  367. package/dist/with-cargo/floor.d.ts +2 -2
  368. package/dist/with-commit/tx/invariants.d.ts +1 -1
  369. package/dist/with-commit/tx/transaction.d.ts +13 -3
  370. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +4 -3
  371. package/dist/with-formula/materialized-views/emit-memo.d.ts +40 -0
  372. package/dist/with-formula/materialized-views/executor.d.ts +8 -0
  373. package/dist/with-formula/materialized-views/index.d.ts +1 -1
  374. package/dist/with-formula/materialized-views/registry.d.ts +15 -0
  375. package/dist/with-formula/materialized-views/types.d.ts +106 -14
  376. package/dist/with-formula/materialized-views/window-stage.d.ts +11 -0
  377. package/dist/with-formula/overlay-views/types.d.ts +1 -1
  378. package/dist/with-formula/overlay-views/virtual-collection.d.ts +13 -4
  379. package/dist/with-lookup/embeddings/chunks.d.ts +79 -0
  380. package/dist/with-lookup/embeddings/descriptor.d.ts +21 -0
  381. package/dist/with-lookup/embeddings/index.d.ts +3 -0
  382. package/dist/with-lookup/embeddings/ivf-flat.d.ts +93 -0
  383. package/dist/with-lookup/embeddings/vector-index.d.ts +73 -0
  384. package/dist/with-lookup/embeddings/vector-set.d.ts +94 -1
  385. package/dist/with-lookup/embeddings/with-vector-index.d.ts +67 -0
  386. package/dist/with-lookup/indexing/collection-facade.d.ts +85 -2
  387. package/dist/with-lookup/indexing/compound-indexes.d.ts +129 -0
  388. package/dist/with-lookup/indexing/eager-indexes.d.ts +170 -1
  389. package/dist/with-lookup/indexing/index-snapshot.d.ts +62 -0
  390. package/dist/with-lookup/indexing/lazy-builder.d.ts +33 -0
  391. package/dist/with-lookup/indexing/persisted-field-indexes.d.ts +104 -0
  392. package/dist/with-lookup/indexing/persisted-indexes.d.ts +12 -0
  393. package/dist/with-lookup/indexing/sorted-indexes.d.ts +117 -0
  394. package/dist/with-lookup/indexing/unique-constraints.d.ts +106 -23
  395. package/dist/with-lookup/reduce/active.d.ts +2 -24
  396. package/dist/with-lookup/reduce/group-core.d.ts +43 -0
  397. package/dist/with-lookup/reduce/groupby.d.ts +195 -36
  398. package/dist/with-lookup/reduce/incremental-group.d.ts +153 -0
  399. package/dist/with-lookup/reduce/index.d.ts +26 -5
  400. package/dist/with-lookup/reduce/reducers.d.ts +255 -1
  401. package/dist/with-lookup/reduce/reduction.d.ts +44 -13
  402. package/dist/with-lookup/reduce/strategy.d.ts +43 -3
  403. package/dist/with-lookup/reduce/window.d.ts +262 -0
  404. package/dist/with-lookup/search/collection-facade.d.ts +44 -8
  405. package/dist/with-lookup/search/index-store.d.ts +5 -3
  406. package/dist/with-lookup/search/index.d.ts +4 -2
  407. package/dist/with-lookup/search/inverted-index.d.ts +38 -2
  408. package/dist/with-lookup/search/persisted-index-store.d.ts +5 -2
  409. package/dist/with-lookup/search/phrase.d.ts +28 -0
  410. package/dist/with-lookup/search/retrieve-types.d.ts +57 -1
  411. package/dist/with-lookup/search/serialize.d.ts +29 -3
  412. package/dist/with-lookup/search/strategy.d.ts +2 -6
  413. package/dist/with-party/directory/cover/index.d.ts +1 -1
  414. package/dist/with-party/directory/cover/storage.d.ts +1 -1
  415. package/dist/with-party/directory/cover/types.d.ts +1 -1
  416. package/dist/with-party/directory/index.d.ts +1 -1
  417. package/dist/with-party/directory/types.d.ts +1 -1
  418. package/dist/with-party/directory/user-envelope/api.d.ts +1 -1
  419. package/dist/with-party/policy/engine.d.ts +1 -1
  420. package/dist/with-party/policy/index.d.ts +1 -1
  421. package/dist/with-party/policy/presets.d.ts +1 -1
  422. package/dist/with-party/team/authenticators.d.ts +91 -1
  423. package/dist/with-party/team/index.d.ts +3 -2
  424. package/dist/with-party/team/keyring.d.ts +13 -6
  425. package/dist/with-party/team/managed-secret.d.ts +1 -1
  426. package/dist/with-party/team/noydb-facade.d.ts +12 -3
  427. package/dist/with-party/team/wrapped-deks.d.ts +4 -4
  428. package/dist/with-pod/format.d.ts +1 -1
  429. package/dist/with-pod/pod.d.ts +5 -5
  430. package/dist/with-shape/blobs/blob-compaction.d.ts +16 -0
  431. package/dist/with-shape/blobs/blob-set.d.ts +21 -2
  432. package/dist/with-shape/blobs/legacy-sweep.d.ts +35 -0
  433. package/dist/with-shape/introspection/describe.d.ts +6 -0
  434. package/dist/with-shape/introspection/field-meta.d.ts +18 -0
  435. package/dist/with-shape/introspection/types.d.ts +57 -1
  436. package/dist/with-shape/links/vault-facade.d.ts +1 -1
  437. package/dist/with-store/partitioned/index.d.ts +337 -0
  438. package/dist/with-sync/change-broadcast.d.ts +153 -0
  439. package/dist/withdraw-accessible-5NZUPAVA.js +27 -0
  440. package/dist/withdraw-accessible-5NZUPAVA.js.map +1 -0
  441. package/package.json +37 -10
  442. package/dist/api-TXFOVOXX.js +0 -19
  443. package/dist/backup-IJTB4S4M.js.map +0 -1
  444. package/dist/chunk-2577DKXB.js.map +0 -1
  445. package/dist/chunk-2C3AQB46.js.map +0 -1
  446. package/dist/chunk-4GVM6QZA.js.map +0 -1
  447. package/dist/chunk-5WDXHNSW.js.map +0 -1
  448. package/dist/chunk-6GOE5PGN.js.map +0 -1
  449. package/dist/chunk-6X6SEMEE.js.map +0 -1
  450. package/dist/chunk-77K4PG6P.js.map +0 -1
  451. package/dist/chunk-7MG2LHO5.js +0 -1616
  452. package/dist/chunk-7MG2LHO5.js.map +0 -1
  453. package/dist/chunk-7MG7SJT7.js.map +0 -1
  454. package/dist/chunk-7O3Y4PPD.js.map +0 -1
  455. package/dist/chunk-AO42KJO6.js.map +0 -1
  456. package/dist/chunk-ATL3ZVXT.js +0 -151
  457. package/dist/chunk-ATL3ZVXT.js.map +0 -1
  458. package/dist/chunk-BLN54W3L.js.map +0 -1
  459. package/dist/chunk-BM5TWITZ.js.map +0 -1
  460. package/dist/chunk-CUZLNGD5.js.map +0 -1
  461. package/dist/chunk-EQEYOJBM.js.map +0 -1
  462. package/dist/chunk-G56KBWFY.js.map +0 -1
  463. package/dist/chunk-I3ISCYT7.js +0 -159
  464. package/dist/chunk-I3ISCYT7.js.map +0 -1
  465. package/dist/chunk-KG7TZKZG.js.map +0 -1
  466. package/dist/chunk-KJIMGIWO.js.map +0 -1
  467. package/dist/chunk-KTFRCC5C.js.map +0 -1
  468. package/dist/chunk-KUX3OB6D.js.map +0 -1
  469. package/dist/chunk-MUM7IANK.js.map +0 -1
  470. package/dist/chunk-NA2NIJZI.js.map +0 -1
  471. package/dist/chunk-NSITFOCJ.js +0 -99
  472. package/dist/chunk-NSITFOCJ.js.map +0 -1
  473. package/dist/chunk-PT43Y56J.js.map +0 -1
  474. package/dist/chunk-QIBVIOXO.js.map +0 -1
  475. package/dist/chunk-RRNRNANG.js.map +0 -1
  476. package/dist/chunk-RTBJ5IOO.js +0 -87
  477. package/dist/chunk-RTBJ5IOO.js.map +0 -1
  478. package/dist/chunk-SKGMN35F.js.map +0 -1
  479. package/dist/chunk-SL3JAAKN.js.map +0 -1
  480. package/dist/chunk-SPXXX5E4.js.map +0 -1
  481. package/dist/chunk-SPYWXKJN.js.map +0 -1
  482. package/dist/chunk-U4FOQDY4.js.map +0 -1
  483. package/dist/chunk-UXVWEX5L.js.map +0 -1
  484. package/dist/chunk-UXWB3FPF.js.map +0 -1
  485. package/dist/chunk-YMUFFJCO.js.map +0 -1
  486. package/dist/chunk-ZN4FD4PE.js +0 -364
  487. package/dist/chunk-ZN4FD4PE.js.map +0 -1
  488. package/dist/chunk-ZORTV6NH.js.map +0 -1
  489. package/dist/collection-facade-4GRREZ6C.js +0 -45
  490. package/dist/derive-6O5SWQKN.js +0 -21
  491. package/dist/executor-5NIMLSKZ.js +0 -8
  492. package/dist/executor-AQVXV5GZ.js +0 -8
  493. package/dist/executor-PUAO6AKJ.js +0 -29
  494. package/dist/export-accessible-72EQNBMR.js +0 -22
  495. package/dist/extract-partition-PUYNU3UF.js +0 -37
  496. package/dist/find-2ABFCZX4.js +0 -10
  497. package/dist/issue-SIDORTSZ.js +0 -18
  498. package/dist/json-schema-V3M5MUCM.js.map +0 -1
  499. package/dist/kernel/query/join.d.ts +0 -232
  500. package/dist/liberate-LCDPNAG2.js +0 -24
  501. package/dist/link-set-FKNWAYKS.js +0 -30
  502. package/dist/noydb-DUXZPKSN.js +0 -90
  503. package/dist/register-I2DZXGAR.js +0 -31
  504. package/dist/registry-23WF3TGH.js +0 -8
  505. package/dist/registry-4AYVUNXK.js +0 -8
  506. package/dist/registry-VSSQPIGF.js +0 -18
  507. package/dist/registry-YLEWMGAC.js +0 -32
  508. package/dist/request-withdrawal-KFQHEZ25.js +0 -30
  509. package/dist/revoke-DQDZAZZM.js +0 -23
  510. package/dist/signer-WAMDZHEN.js +0 -24
  511. package/dist/storage-FLR73HHF.js +0 -22
  512. package/dist/walk-3UQBRMDV.js +0 -21
  513. package/dist/withdraw-accessible-EL5GXZBS.js +0 -27
  514. /package/dist/{api-TXFOVOXX.js.map → api-GVYEKSJE.js.map} +0 -0
  515. /package/dist/{chunk-BUE2D7PX.js.map → chunk-32YV3TJT.js.map} +0 -0
  516. /package/dist/{chunk-3RCJJBNR.js.map → chunk-3ELRMVJK.js.map} +0 -0
  517. /package/dist/{chunk-6GMZ7HEE.js.map → chunk-3F7GLNAE.js.map} +0 -0
  518. /package/dist/{chunk-2Y4IMKA6.js.map → chunk-3H5KLDZN.js.map} +0 -0
  519. /package/dist/{chunk-VTFVLCUH.js.map → chunk-3JWHAR6E.js.map} +0 -0
  520. /package/dist/{chunk-JBDFMYKQ.js.map → chunk-4AF3TUMP.js.map} +0 -0
  521. /package/dist/{chunk-J6FXAEUG.js.map → chunk-6B3VNR4P.js.map} +0 -0
  522. /package/dist/{chunk-TUFM4UZP.js.map → chunk-6K7DPM7D.js.map} +0 -0
  523. /package/dist/{chunk-K6LHRFBL.js.map → chunk-6LMQ5R26.js.map} +0 -0
  524. /package/dist/{chunk-XLMEZIAJ.js.map → chunk-6OWXYZK2.js.map} +0 -0
  525. /package/dist/{chunk-BOWNCWZT.js.map → chunk-6QSQQLSE.js.map} +0 -0
  526. /package/dist/{chunk-NQKIUNW5.js.map → chunk-A6IJU4TK.js.map} +0 -0
  527. /package/dist/{chunk-QIZPZMUI.js.map → chunk-AOWGXU6D.js.map} +0 -0
  528. /package/dist/{chunk-SFAWCTEM.js.map → chunk-B57AFBY2.js.map} +0 -0
  529. /package/dist/{chunk-GPEQUXHL.js.map → chunk-B6SJIBQK.js.map} +0 -0
  530. /package/dist/{chunk-Q2PU57HC.js.map → chunk-BK2HHQGN.js.map} +0 -0
  531. /package/dist/{collection-facade-4GRREZ6C.js.map → chunk-BKT776R5.js.map} +0 -0
  532. /package/dist/{chunk-FXBIP2WD.js.map → chunk-BUDAGWL5.js.map} +0 -0
  533. /package/dist/{chunk-BOET4NA4.js.map → chunk-CKNGS5MH.js.map} +0 -0
  534. /package/dist/{chunk-YSRUYAVU.js.map → chunk-DE4DH2RZ.js.map} +0 -0
  535. /package/dist/{chunk-6I2RQCET.js.map → chunk-DF73H4UN.js.map} +0 -0
  536. /package/dist/{chunk-K7NTTA6P.js.map → chunk-EOVMT6TB.js.map} +0 -0
  537. /package/dist/{chunk-XTXOCYOJ.js.map → chunk-FCKWQE2H.js.map} +0 -0
  538. /package/dist/{chunk-4OZNXTO4.js.map → chunk-FN5EBVTQ.js.map} +0 -0
  539. /package/dist/{chunk-NKHRDYOR.js.map → chunk-FQ5VRHIB.js.map} +0 -0
  540. /package/dist/{chunk-FAHMLERK.js.map → chunk-FW22ZCXT.js.map} +0 -0
  541. /package/dist/{chunk-RMS3NEA3.js.map → chunk-HT2AHGQI.js.map} +0 -0
  542. /package/dist/{chunk-CHJBLCOG.js.map → chunk-HVSCEIYL.js.map} +0 -0
  543. /package/dist/{chunk-GY4WYNNG.js.map → chunk-ID6Z6E66.js.map} +0 -0
  544. /package/dist/{chunk-EYBQEIUY.js.map → chunk-IEX7NK2K.js.map} +0 -0
  545. /package/dist/{chunk-KUJDV5QH.js.map → chunk-ISZQJBML.js.map} +0 -0
  546. /package/dist/{chunk-LWBCUYZW.js.map → chunk-IT22PWKV.js.map} +0 -0
  547. /package/dist/{chunk-7V4TP3AF.js.map → chunk-J6UOHJY5.js.map} +0 -0
  548. /package/dist/{chunk-JMGDHKQF.js.map → chunk-JCN44NCY.js.map} +0 -0
  549. /package/dist/{chunk-CARABLSQ.js.map → chunk-K6W7BVZ6.js.map} +0 -0
  550. /package/dist/{chunk-453F654R.js.map → chunk-L7DOS3TE.js.map} +0 -0
  551. /package/dist/{chunk-WEQEYLCS.js.map → chunk-LGRLME4M.js.map} +0 -0
  552. /package/dist/{chunk-RMF67KCG.js.map → chunk-LQ4ZHOKP.js.map} +0 -0
  553. /package/dist/{chunk-ZVO4QVPD.js.map → chunk-M522UYZ2.js.map} +0 -0
  554. /package/dist/{chunk-2N4GY74U.js.map → chunk-MTL7MXGR.js.map} +0 -0
  555. /package/dist/{chunk-TFR7DSOV.js.map → chunk-MVZ2TPVP.js.map} +0 -0
  556. /package/dist/{chunk-CPWQB3N5.js.map → chunk-N5DNADLQ.js.map} +0 -0
  557. /package/dist/{chunk-ELNXJMGB.js.map → chunk-NNARWO72.js.map} +0 -0
  558. /package/dist/{chunk-6YXCPL4T.js.map → chunk-PDCG6PR5.js.map} +0 -0
  559. /package/dist/{chunk-REDOOY2Q.js.map → chunk-PSIV7CJV.js.map} +0 -0
  560. /package/dist/{chunk-ANATMFIO.js.map → chunk-QWFHIOD2.js.map} +0 -0
  561. /package/dist/{chunk-X2DLENDQ.js.map → chunk-QWGU66MP.js.map} +0 -0
  562. /package/dist/{chunk-BSFNRLK2.js.map → chunk-S57HTZ6X.js.map} +0 -0
  563. /package/dist/{chunk-SZJ3DLZA.js.map → chunk-SEE332EV.js.map} +0 -0
  564. /package/dist/{chunk-YYP7WSEB.js.map → chunk-SI3V7D4G.js.map} +0 -0
  565. /package/dist/{chunk-UGTBXF5U.js.map → chunk-SOIQ4MM4.js.map} +0 -0
  566. /package/dist/{chunk-VXGSWL6L.js.map → chunk-SYVZW77S.js.map} +0 -0
  567. /package/dist/{chunk-MVMXZYXT.js.map → chunk-TKUOEU2F.js.map} +0 -0
  568. /package/dist/{chunk-SMH6SRX7.js.map → chunk-TROR3ALR.js.map} +0 -0
  569. /package/dist/{chunk-DGOZ4UZD.js.map → chunk-VNNRUGMM.js.map} +0 -0
  570. /package/dist/{chunk-HDOU6I2Y.js.map → chunk-VNPEWFPD.js.map} +0 -0
  571. /package/dist/{chunk-L7CIOOBW.js.map → chunk-WNJ4AVGE.js.map} +0 -0
  572. /package/dist/{chunk-FMZY5Q6L.js.map → chunk-WX5ADGTZ.js.map} +0 -0
  573. /package/dist/{chunk-Q7HZX3IF.js.map → chunk-X4773RBR.js.map} +0 -0
  574. /package/dist/{chunk-ANSIZYEG.js.map → chunk-YNIUIERI.js.map} +0 -0
  575. /package/dist/{chunk-BZ3534YM.js.map → chunk-ZUVBC32X.js.map} +0 -0
  576. /package/dist/{chunk-L742JPKZ.js.map → chunk-ZXABPVM6.js.map} +0 -0
  577. /package/dist/{classified-marker-LI2SF2E4.js.map → classified-marker-W3USLL5M.js.map} +0 -0
  578. /package/dist/{computed-VPOKQK4N.js.map → collection-facade-QU6IJBN3.js.map} +0 -0
  579. /package/dist/{derive-6O5SWQKN.js.map → computed-TPFBX7U4.js.map} +0 -0
  580. /package/dist/{dead-filter-TSWZQRR5.js.map → dead-filter-U2UYKSZL.js.map} +0 -0
  581. /package/dist/{delegation-OVIFFPG4.js.map → delegation-S3AEPW2T.js.map} +0 -0
  582. /package/dist/{enclave-KJOTOH7X.js.map → derive-OX7F6TGG.js.map} +0 -0
  583. /package/dist/{dispatch-WC6X2M6C.js.map → dispatch-3CQDJV5Q.js.map} +0 -0
  584. /package/dist/{dispatch-S73TK3IY.js.map → dispatch-RH4LHKBH.js.map} +0 -0
  585. /package/dist/{executor-5NIMLSKZ.js.map → enclave-27SMF6GF.js.map} +0 -0
  586. /package/dist/{executor-AQVXV5GZ.js.map → executor-B6SRO2QS.js.map} +0 -0
  587. /package/dist/{executor-PUAO6AKJ.js.map → executor-BI5CHWRY.js.map} +0 -0
  588. /package/dist/{export-accessible-72EQNBMR.js.map → executor-RBKM5W5K.js.map} +0 -0
  589. /package/dist/{extract-partition-PUYNU3UF.js.map → export-accessible-VMA3YM5V.js.map} +0 -0
  590. /package/dist/{find-2ABFCZX4.js.map → extract-partition-NF7PXGPP.js.map} +0 -0
  591. /package/dist/{fanout-sidecar-WUFXNYP4.js.map → fanout-sidecar-OT6RYLOL.js.map} +0 -0
  592. /package/dist/{issue-SIDORTSZ.js.map → find-LZMP26KF.js.map} +0 -0
  593. /package/dist/{ledger-F33ZVMTK.js.map → issue-IHARXWW5.js.map} +0 -0
  594. /package/dist/{liberate-LCDPNAG2.js.map → ledger-KZPCMVZY.js.map} +0 -0
  595. /package/dist/{link-set-FKNWAYKS.js.map → liberate-GRLCZMW4.js.map} +0 -0
  596. /package/dist/{managed-secret-PQYKSR6T.js.map → link-set-JCMJ7ULP.js.map} +0 -0
  597. /package/dist/{noydb-DUXZPKSN.js.map → managed-secret-S3MQ6SH6.js.map} +0 -0
  598. /package/dist/{migrate-cek-5ENH64AA.js.map → migrate-cek-V7GKJZ7O.js.map} +0 -0
  599. /package/dist/{register-I2DZXGAR.js.map → noydb-SWQJ3MZS.js.map} +0 -0
  600. /package/dist/{pod-handle-Q736KYON.js.map → pod-handle-WGDFB4C2.js.map} +0 -0
  601. /package/dist/{post-register-LNE2FE2A.js.map → post-register-SLSXIPBV.js.map} +0 -0
  602. /package/dist/{registry-23WF3TGH.js.map → query/all/index.js.map} +0 -0
  603. /package/dist/{registry-4AYVUNXK.js.map → register-F3OYE7MJ.js.map} +0 -0
  604. /package/dist/{registry-VSSQPIGF.js.map → registry-CILQFXFK.js.map} +0 -0
  605. /package/dist/{registry-YLEWMGAC.js.map → registry-XNNYQVKV.js.map} +0 -0
  606. /package/dist/{request-withdrawal-KFQHEZ25.js.map → registry-YCDZV3VW.js.map} +0 -0
  607. /package/dist/{revoke-DQDZAZZM.js.map → registry-ZGYS33TE.js.map} +0 -0
  608. /package/dist/{signer-WAMDZHEN.js.map → request-withdrawal-Z5NC6TXT.js.map} +0 -0
  609. /package/dist/{reveal-67RDQRIN.js.map → reveal-4BCKPEC2.js.map} +0 -0
  610. /package/dist/{stale-DDL7WQEZ.js.map → revoke-ZL62WC2D.js.map} +0 -0
  611. /package/dist/{seed-G42JYN56.js.map → seed-4JS2RJ4A.js.map} +0 -0
  612. /package/dist/{storage-FLR73HHF.js.map → signer-MBZZMXTC.js.map} +0 -0
  613. /package/dist/{walk-3UQBRMDV.js.map → stale-TJ3DYZMQ.js.map} +0 -0
  614. /package/dist/{withdraw-accessible-EL5GXZBS.js.map → storage-SVMKRGCW.js.map} +0 -0
  615. /package/dist/{store-coordination-provider-MEQ2MJQG.js.map → store-coordination-provider-2O2VUHKW.js.map} +0 -0
  616. /package/dist/{verify-KOV2G5D6.js.map → verify-RVT67IMH.js.map} +0 -0
@@ -1,4 +1,30 @@
1
- /** (De)serialize an InvertedIndex to/from a JSON string for persistence (L1.5). */
2
- import { InvertedIndex } from './inverted-index.js';
1
+ /**
2
+ * (De)serialize an InvertedIndex to/from a JSON string for persistence (L1.5).
3
+ *
4
+ * ## Why a validator, and why its failure mode is "rebuild" (#1354)
5
+ *
6
+ * Positional postings changed the persisted shape, so this module adopts the
7
+ * discipline #1359 established for the field-index sidecars: a blob is used
8
+ * only if it is EXACTLY the current format, and anything else is discarded
9
+ * whole and rebuilt from the record cache. There is no migration path and no
10
+ * partial load, because a half-trusted index answers confidently and wrongly —
11
+ * a pre-#1354 blob read leniently would report "no positions here", which a
12
+ * phrase query cannot distinguish from "your phrase is not in this record".
13
+ *
14
+ * ⭐ An out-of-order position list is REJECTED, not re-sorted. Re-sorting would
15
+ * launder a corrupt blob into a plausible-looking answer; the cache can always
16
+ * rebuild the truth.
17
+ */
18
+ import { InvertedIndex, type IndexSnapshot } from './inverted-index.js';
3
19
  export declare function serializeIndex(idx: InvertedIndex): string;
4
- export declare function deserializeIndex(json: string): InvertedIndex;
20
+ /** `null` the blob is unusable and the caller must rebuild. Never throws. */
21
+ export declare function deserializeIndex(json: string): InvertedIndex | null;
22
+ /**
23
+ * Decode + structurally validate a persisted index snapshot. Returns `null` for
24
+ * anything that is not exactly the current format: torn JSON, a stamp from
25
+ * another release, a shape mismatch, a position list that is not strictly
26
+ * ascending or that names a token the doc does not have, or a `pos`/`posFields`
27
+ * disagreement (a doc whose field opted in but carries no positions would make
28
+ * every phrase query silently miss it).
29
+ */
30
+ export declare function parseIndexSnapshot(json: string): IndexSnapshot | null;
@@ -16,15 +16,11 @@
16
16
  */
17
17
  import type { SearchContext } from './collection-facade.js';
18
18
  import type { SearchOptions, SearchResult } from './index.js';
19
- import type { RetrieveOptions, RetrieveHit } from './retrieve-types.js';
19
+ import type { RetrieveOptions, RetrieveHit, SimilarToOptions } from './retrieve-types.js';
20
20
  export interface SearchStrategy {
21
21
  search<T>(ctx: SearchContext<T>, field: string, query: string, opts?: SearchOptions): Promise<SearchResult<T>[]>;
22
22
  retrieve<T>(ctx: SearchContext<T>, query: string, opts?: RetrieveOptions<T>): Promise<RetrieveHit<T>[]>;
23
- similarTo<T>(ctx: SearchContext<T>, vector: Float32Array, opts?: {
24
- k?: number;
25
- minScore?: number;
26
- includeRecord?: boolean;
27
- }): Promise<RetrieveHit<T>[]>;
23
+ similarTo<T>(ctx: SearchContext<T>, vector: Float32Array, opts?: SimilarToOptions): Promise<RetrieveHit<T>[]>;
28
24
  warmIndex<T>(ctx: SearchContext<T>): Promise<void>;
29
25
  flushIndex<T>(ctx: SearchContext<T>): Promise<void>;
30
26
  embedOnWrite<T>(ctx: SearchContext<T>, id: string, record: T, version: number): Promise<void>;
@@ -2,7 +2,7 @@
2
2
  * Cover service — barrel export. (Formerly "public envelope"; the
3
3
  * old names remain as deprecated aliases for one pre-release window.)
4
4
  *
5
- * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/public-envelope.md
5
+ * @see https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md
6
6
  *
7
7
  * @module
8
8
  */
@@ -50,6 +50,6 @@ export declare function resolveLocale(cover: Cover, locale: string): Cover;
50
50
  * 3. First non-empty value in the map.
51
51
  * 4. Empty string (only if every translation is empty — pathological).
52
52
  *
53
- * This deviation is documented in `https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/public-envelope.md`.
53
+ * This deviation is documented in `https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md`.
54
54
  */
55
55
  export declare function pickLocale(value: string | Record<string, string>, locale: string, defaultLocale: string | undefined): string;
@@ -8,7 +8,7 @@
8
8
  * record still lives at `_meta/public-envelope` and carries the
9
9
  * `_noydb_public: 1` discriminator.)
10
10
  *
11
- * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/public-envelope.md
11
+ * @see https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md
12
12
  *
13
13
  * @module
14
14
  */
@@ -2,7 +2,7 @@
2
2
  * User-list visibility — barrel export for the
3
3
  * `@noy-db/hub/directory` surface.
4
4
  *
5
- * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/user-envelope.md → Directory visibility
5
+ * @see https://github.com/noy-db/docs/blob/main/content/docs/services/user-envelope.md → Directory visibility
6
6
  *
7
7
  * @module
8
8
  */
@@ -14,7 +14,7 @@
14
14
  * flags exist to keep admin-UI listings tidy, not to hide principals
15
15
  * from a determined attacker.
16
16
  *
17
- * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/user-envelope.md → Directory visibility
17
+ * @see https://github.com/noy-db/docs/blob/main/content/docs/services/user-envelope.md → Directory visibility
18
18
  *
19
19
  * @module
20
20
  */
@@ -130,7 +130,7 @@ export declare class UserApi implements VaultUserApi {
130
130
  * Honest caveat: this is a UX flag, not a privacy guarantee. The
131
131
  * envelope ciphertext at `_users/<keyringId>` and the keyring file at
132
132
  * `_keyring/<userId>` are both still observable to anyone with direct
133
- * store read access. See `https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/user-envelope.md` →
133
+ * store read access. See `https://github.com/noy-db/docs/blob/main/content/docs/services/user-envelope.md` →
134
134
  * "Directory visibility".
135
135
  */
136
136
  setMyVisibility(visibility: UserVisibility): Promise<void>;
@@ -7,7 +7,7 @@
7
7
  * a stable {@link PolicyDenyReason} so consumers can branch in error
8
8
  * UIs.
9
9
  *
10
- * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → checkGate() API
10
+ * @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → checkGate() API
11
11
  *
12
12
  * @module
13
13
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Policy gate DSL — barrel export for the `@noy-db/hub/policy` surface.
3
3
  *
4
- * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Policy gates DSL
4
+ * @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → Policy gates DSL
5
5
  *
6
6
  * @module
7
7
  */
@@ -9,7 +9,7 @@ import type { VaultPolicy } from '../../kernel/types.js';
9
9
  * The unspecified gates (e.g. `view-user-auth`) inherit the engine
10
10
  * default of `{ enabled: false, minTier: 1 }` — they fail closed.
11
11
  *
12
- * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Built-in gates
12
+ * @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → Built-in gates
13
13
  */
14
14
  export declare const PERSONAL_POLICY: VaultPolicy;
15
15
  /**
@@ -9,12 +9,14 @@
9
9
  * (`on-webauthn`, `on-oidc`, `on-password`); this module accepts the
10
10
  * package's `wrapped_kek` ciphertext + `meta` payload and persists it.
11
11
  *
12
- * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Tier 2 — Authenticate
12
+ * @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → Tier 2 — Authenticate
13
13
  *
14
14
  * @module
15
15
  */
16
16
  import type { NoydbStore, KeyringAuthenticator } from '../../kernel/types.js';
17
17
  import type { UnlockedKeyring } from './keyring.js';
18
+ import { type SlotRewrapCeremony } from './rotate-recover.js';
19
+ import type { RotateSecretInput } from './rotate-recover.js';
18
20
  /** Fields shared across both wrap-KEK and wrap-DEKs enroll inputs. */
19
21
  interface EnrollAuthenticatorBase {
20
22
  readonly id: string;
@@ -84,6 +86,29 @@ export declare function updateAuthenticator(store: NoydbStore, vault: string, ke
84
86
  /**
85
87
  * Drop a slot by id. No-op if the slot doesn't exist (idempotent —
86
88
  * removing a non-existent slot is a recoverable retry, not an error).
89
+ *
90
+ * ⛔ **THIS HIDES A CREDENTIAL. IT DOES NOT REVOKE ONE.** (#1445) The slot
91
+ * leaves the keyring file and nothing else happens — no key material moves. A
92
+ * slot blob captured before removal, or cached by an honest client earlier in
93
+ * the same session, still unwraps the FULL LIVE DEK SET and reads every record,
94
+ * for as long as those DEKs remain current.
95
+ *
96
+ * That is not a leak in one `on-*` package. `@noy-db/on-password`'s
97
+ * `unwrapDeksWithPassword` and `@noy-db/on-webauthn`'s `unwrapKeyringSummary`
98
+ * both carry the DEK map inside the blob and need no store, no keyring and no
99
+ * network — the blob authenticates itself. A membership check inside a verifier
100
+ * cannot close it, because a blob holder calls the primitive directly and never
101
+ * reaches the verifier.
102
+ *
103
+ * ⭐ To actually revoke, see {@link revokeAuthenticator} — removal, then a DEK
104
+ * rotation, then a re-wrap of the slots that stay. Every step is required and
105
+ * the reasons are measured, not assumed; read that doc before assembling the
106
+ * sequence by hand.
107
+ *
108
+ * ⚠️ Idempotency is only sound when the slot list is actually
109
+ * visible — see {@link assertSlotListVisible} (#1426).
110
+ *
111
+ * @throws `ValidationError` when the session cannot see the slot list.
87
112
  */
88
113
  export declare function removeAuthenticator(store: NoydbStore, vault: string, keyring: UnlockedKeyring, slotId: string): Promise<UnlockedKeyring>;
89
114
  /**
@@ -92,4 +117,69 @@ export declare function removeAuthenticator(store: NoydbStore, vault: string, ke
92
117
  * before invoking the method-specific verifier.
93
118
  */
94
119
  export declare function findAuthenticator(keyring: UnlockedKeyring, slotId: string): KeyringAuthenticator | undefined;
120
+ /** Inputs for {@link revokeAuthenticator}. */
121
+ export interface RevokeAuthenticatorOptions {
122
+ /** The slot to revoke. */
123
+ readonly slotId: string;
124
+ /**
125
+ * The vault owner's CURRENT secret. Passed as both `oldSecret` and
126
+ * `newSecret` to `rotateSecret`, which accepts them being equal — measured,
127
+ * so revoking one credential does not force everyone onto a new phrase.
128
+ */
129
+ readonly secret: RotateSecretInput['oldSecret'];
130
+ /**
131
+ * A re-wrap ceremony for EVERY slot that stays, keyed by slot id.
132
+ *
133
+ * ⛔ A slot with no ceremony is DROPPED, not preserved — that is
134
+ * `rotateSecret`'s existing behaviour (#29 / PR5: "without `slotCeremonies`,
135
+ * rotation drops every slot"), and it is the honest outcome, because after
136
+ * step 2 its blob wraps DEKs that no longer exist. Supplying one requires
137
+ * that credential to be present: the password for `on-password`, a live
138
+ * assertion for `on-webauthn`. There is no way around that — re-wrapping a
139
+ * credential is the credential's own operation.
140
+ */
141
+ readonly slotCeremonies?: {
142
+ readonly [slotId: string]: SlotRewrapCeremony;
143
+ };
144
+ }
145
+ /**
146
+ * Actually revoke an authenticator slot: remove it, mint fresh DEKs, and
147
+ * re-wrap the slots that stay (#1445).
148
+ *
149
+ * ## Why this is three steps and not one
150
+ *
151
+ * Each was measured, because the composition looks obvious and the obvious
152
+ * compositions do not work:
153
+ *
154
+ * 1. **{@link removeAuthenticator}** hides the slot. On its own it revokes
155
+ * nothing — the captured blob carries its own DEKs.
156
+ * 2. **`rotateKeys`** is the step that revokes. It is the ONLY one that calls
157
+ * `generateDEK()`. Measured: a collection's DEK is byte-identical across a
158
+ * `rotateSecret` and different across a `rotateKeys`.
159
+ * ⚠️ `rotateSecret` alone does NOT revoke, however it reads:
160
+ * it unwraps every DEK with the old KEK and rewraps THE SAME KEY MATERIAL
161
+ * under the new one. A captured blob holds DEK VALUES and records are
162
+ * encrypted with DEKs, so rewrapping them changes nothing the holder needs.
163
+ * 3. **`rotateSecret` with `slotCeremonies`** re-wraps the remaining slots
164
+ * around the new DEKs. Without it they survive step 2 BYTE-IDENTICAL
165
+ * (measured: `rotateKeys` never touches `authenticators[]`) and therefore
166
+ * silently wrap keys that no longer exist — every other credential in the
167
+ * vault dies quietly. This step is what makes the operation safe for
168
+ * everyone who was not being revoked.
169
+ *
170
+ * ⭐ Neither primitive is sufficient alone and they are not interchangeable:
171
+ * `rotateKeys` mints keys but cannot re-wrap slots; `rotateSecret` re-wraps
172
+ * slots but cannot mint keys.
173
+ *
174
+ * ## Cost
175
+ *
176
+ * Step 2 re-encrypts every record in every affected collection, and every
177
+ * remaining credential holder must be present for step 3. This is expensive on
178
+ * purpose: it is what revocation costs when the credential is a bearer token.
179
+ *
180
+ * @throws `ValidationError` when the session cannot see the slot list
181
+ * ({@link assertSlotListVisible}) — a tier-1 unlock is required, and #1432
182
+ * guarantees the KEK rotation needs is present at this point.
183
+ */
184
+ export declare function revokeAuthenticator(store: NoydbStore, vault: string, keyring: UnlockedKeyring, options: RevokeAuthenticatorOptions): Promise<UnlockedKeyring>;
95
185
  export {};
@@ -19,8 +19,9 @@ export type { UnlockedKeyring } from './keyring.js';
19
19
  export { loadKeyring, createOwnerKeyring, grant, revoke, changeSecret, listUsers, listUsersWithEnvelopes, ensureCollectionDEK, persistKeyring, updateKeyringIdentity, buildRecipientKeyringFile, } from './keyring.js';
20
20
  export type { PodRecipient, ListUsersOptions } from './keyring.js';
21
21
  export type { LoadKeyringOptions, CreateOwnerKeyringOptions, RotateKeysOptions, ChangeSecretOptions, } from './keyring.js';
22
- export { enrollAuthenticator, removeAuthenticator, updateAuthenticator, findAuthenticator, } from './authenticators.js';
23
- export type { EnrollAuthenticatorOptions, EnrollAuthenticatorWrappingKEKOptions, EnrollAuthenticatorWrappingDEKsOptions, UpdateAuthenticatorOptions, } from './authenticators.js';
22
+ export { enrollAuthenticator, removeAuthenticator, revokeAuthenticator, // #1445 the three-step revocation; removeAuthenticator alone only hides
23
+ updateAuthenticator, findAuthenticator, } from './authenticators.js';
24
+ export type { EnrollAuthenticatorOptions, EnrollAuthenticatorWrappingKEKOptions, EnrollAuthenticatorWrappingDEKsOptions, UpdateAuthenticatorOptions, RevokeAuthenticatorOptions, } from './authenticators.js';
24
25
  export { rotateSecret, recoverSecret, } from './rotate-recover.js';
25
26
  export type { RotateSecretInput, RecoverSecretInput, RecoverSecretResult, RecoveryProof, SlotRewrapContext, SlotRewrapCeremony, } from './rotate-recover.js';
26
27
  export { recoverUser } from './peer-recover.js';
@@ -16,14 +16,21 @@ export interface UnlockedKeyring {
16
16
  */
17
17
  readonly pendingDeks?: Map<string, EnclaveKey> | undefined;
18
18
  /**
19
- * The KEK, when this keyring was unlocked via tier 1 (secret) or
20
- * a wrap-KEK tier-2 method (WebAuthn / OIDC). `null` when the
21
- * keyring was opened via:
19
+ * The KEK, when this keyring was unlocked via tier 1 (secret).
20
+ * `null` for every other path:
22
21
  *
23
22
  * - Unencrypted mode (no KEK exists)
23
+ * - **Every shipped tier-2 unlock** — `@noy-db/on-webauthn`,
24
+ * `@noy-db/on-oidc` and `@noy-db/on-password` all rebuild the
25
+ * DEK set from their own slot and return `kek: null`. A slot
26
+ * being wrap-KEK on disk (`wrapped_kek`, see
27
+ * `KeyringAuthenticatorWrappingKEK`) is what lets `rotateSecret`
28
+ * re-wrap it via the slot ceremony; it does not mean the unlock
29
+ * surfaces the KEK. (Measured against on-webauthn / on-oidc
30
+ * source and the published 0.7.0 dist, 2026-09-02 — an earlier
31
+ * version of this comment claimed both yield the KEK; neither
32
+ * ever did.)
24
33
  * - Tier-3 PIN quick-resume (`@noy-db/on-pin`)
25
- * - Wrap-DEKs tier-2 unlock (`@noy-db/on-password`'s
26
- * `verifyPasswordSlot`)
27
34
  * - Session-state restore (`session/session.ts`)
28
35
  * - Dev-unlock fixture (`session/dev-unlock.ts`)
29
36
  *
@@ -490,7 +497,7 @@ export interface ListUsersOptions {
490
497
  * strong as the role the calling layer passes in. The hub-level wrapper
491
498
  * on `Vault` sources `callerRole` from the unlocked keyring's `role`
492
499
  * field, which is signed-by-construction (it lives in the user's own
493
- * keyring file). See `https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/user-envelope.md` →
500
+ * keyring file). See `https://github.com/noy-db/docs/blob/main/content/docs/services/user-envelope.md` →
494
501
  * "Directory visibility".
495
502
  *
496
503
  * Principals without a persisted envelope (legacy keyrings predating
@@ -43,7 +43,7 @@
43
43
  * - Mandatory strong-recovery enforcement.
44
44
  * - Recovery flow under managed mode (generates fresh sealed phrase).
45
45
  *
46
- * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Managed-secret mode
46
+ * @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → Managed-secret mode
47
47
  *
48
48
  * @module
49
49
  */
@@ -19,7 +19,7 @@
19
19
  * Internal service — reached through `noydb.team.rotateSecret(...)` etc.
20
20
  */
21
21
  import type { NoydbOptions, NoydbStore, KeyringAuthenticator } from '../../kernel/types.js';
22
- import type { RotateResult, RotateKeysOptions, RosterVerifyResult, QuarantineResult } from './keyring.js';
22
+ import { type RotateResult, type RotateKeysOptions, type RosterVerifyResult, type QuarantineResult } from './keyring.js';
23
23
  import { type RotateSecretInput, type RecoverSecretInput, type RecoverSecretResult, type RotateRecoveryOptions, type RotateRecoveryResult, type EnrollRecoveryResult, type RecoveryEnrollmentInput, type RecoveryProof } from './rotate-recover.js';
24
24
  import { type RecoverUserOptions } from './peer-recover.js';
25
25
  import { type PaperRecoveryEntry, type ShamirRecoveryEntry } from './recovery.js';
@@ -92,9 +92,18 @@ export declare class TeamFacade {
92
92
  */
93
93
  enrollAuthenticator(vault: string, options: EnrollAuthenticatorOptions, factors?: FactorProofBundle): Promise<void>;
94
94
  /**
95
- * Remove a tier-2 authenticator slot. Idempotent — removing a
96
- * non-existent slot is a successful no-op. Gated by
95
+ * Remove a tier-2 authenticator slot. Idempotent — removing a slot
96
+ * that is not in the keyring is a successful no-op. Gated by
97
97
  * `remove-authenticator`.
98
+ *
99
+ * ⚠️ Idempotency needs the slot list to be VISIBLE, and a tier-3
100
+ * PIN-resumed / session-restored keyring carries an empty one
101
+ * (#1426). Such a session throws `ValidationError` rather than
102
+ * reporting a removal it did not perform — re-authenticate at tier 1
103
+ * first.
104
+ *
105
+ * @throws `ValidationError` when the active keyring cannot see its
106
+ * slot list (`kek === null`).
98
107
  */
99
108
  removeAuthenticator(vault: string, slotId: string, factors?: FactorProofBundle): Promise<void>;
100
109
  /** Read the slot list for a vault. Internal — `describeAuthConfig` consumes this. */
@@ -66,10 +66,10 @@ export interface WrappedDeksBlob {
66
66
  * PIN). Caller normalization rules apply (e.g. paper
67
67
  * recovery uppercase-strips the code before reaching this function).
68
68
  *
69
- * @param deks - DEK set to wrap. Each DEK must be exportable via
70
- * `subtle.exportKey('raw', dek)` (the hub mints DEKs
71
- * this way; consumers feeding non-extractable keys
72
- * will get `InvalidAccessError` from WebCrypto).
69
+ * @param deks - DEK set to wrap. Serialized through the enclave's
70
+ * `exportDekSet` door (the hub mints DEKs extractable;
71
+ * consumers feeding non-extractable keys will get
72
+ * `InvalidAccessError` from WebCrypto).
73
73
  * @param credential - String input the consumer minted (paper code,
74
74
  * password, PIN). Treated as opaque bytes by PBKDF2.
75
75
  */
@@ -113,7 +113,7 @@ export interface NoydbPodHeader {
113
113
  /** SHA-256 of the compressed body bytes (lowercase hex). Lets readers verify integrity without decompressing. */
114
114
  readonly bodySha256: string;
115
115
  /**
116
- * Owner-curated cover (`https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/public-envelope.md`).
116
+ * Owner-curated cover (`https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md`).
117
117
  * Optional — present only when the source vault has a
118
118
  * `_meta/public-envelope` document AND the writer's hub is opted
119
119
  * into the feature. Treat as **untrusted hint**; the body's
@@ -27,7 +27,7 @@
27
27
  * *unwrapped JSON string*, not a Vault object. The caller
28
28
  * is responsible for piping that JSON into
29
29
  * `vault.load(json, secret)`. Splitting the layers
30
- * keeps the bundle module free of any crypto/secret
30
+ * keeps `format.ts` free of any crypto/secret
31
31
  * concerns — it's purely a format layer. The same `readPod`
32
32
  * call can also feed verification tools, format inspectors, or
33
33
  * archive utilities that don't care about decryption.
@@ -51,7 +51,7 @@ export type AutoCredentialKind = 'secret' | 'password' | 'pin';
51
51
  * correct login/prefill path rather than treating all credentials
52
52
  * as secrets.
53
53
  *
54
- * `bundle.ts` is a pure format layer — it carries the credential
54
+ * `format.ts` is a pure format layer — it carries the credential
55
55
  * without interpreting it. The consumer is responsible for
56
56
  * dispatching on `kind`.
57
57
  */
@@ -274,7 +274,7 @@ export interface WritePodOptions {
274
274
  * bundle that is missing something, and the defect surfaces later — in
275
275
  * whoever imports it — with nothing left to trace it back to.
276
276
  *
277
- * `bundle-option-keys.test.ts` parses `WritePodOptions` out of this file and
277
+ * `pod-option-keys.test.ts` parses `WritePodOptions` out of this file and
278
278
  * fails if the two ever drift, so adding an option is enough; you do not have
279
279
  * to remember to update this list, only to keep the interface shape parseable.
280
280
  *
@@ -285,7 +285,7 @@ export declare const WRITE_POD_OPTION_KEYS: readonly ["compression", "collection
285
285
  * Result returned by `readPod`. The caller is expected to
286
286
  * pass `dumpJson` into `vault.load(json, secret)` to
287
287
  * actually restore a vault. Splitting the layers keeps the
288
- * bundle module free of crypto concerns — see file-level docs.
288
+ * `format.ts` free of crypto concerns — see file-level docs.
289
289
  */
290
290
  export interface PodReadResult {
291
291
  readonly header: NoydbPodHeader;
@@ -471,7 +471,7 @@ export interface PodVerifyResult {
471
471
  */
472
472
  export declare function verifyPodHeader(bytes: Uint8Array, trustedKeys: Readonly<Record<string, string>>): Promise<PodVerifyResult>;
473
473
  /**
474
- * Read just the bundle's cover (`https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/public-envelope.md`)
474
+ * Read just the bundle's cover (`https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md`)
475
475
  * — without verifying the body or even parsing the dump JSON. Pass
476
476
  * the raw bundle bytes; receive the owner-curated metadata or
477
477
  * `undefined` if the bundle was written without one.
@@ -31,6 +31,7 @@
31
31
  import type { NoydbStore, SlotInfo } from '../../kernel/types.js';
32
32
  import { type EnclaveKey } from '../../kernel/enclave/index.js';
33
33
  import { type OrphanChunkReport } from './orphan-report.js';
34
+ import { type UnreferencedLegacyBlobReport } from './legacy-sweep.js';
34
35
  export interface BlobFieldPolicy<T = unknown> {
35
36
  /**
36
37
  * Via port brand marker — lets a `BlobFieldPolicy` satisfy the kernel's
@@ -158,6 +159,15 @@ export interface CompactionResult {
158
159
  * is the expected reading everywhere else.
159
160
  */
160
161
  readonly orphanBlobChunks: OrphanChunkReport;
162
+ /**
163
+ * #1453 — legacy (no `_cek`) blobs at `refCount <= 0`: released by every
164
+ * reference-drop path but never reclaimed, because a legacy chunk has no
165
+ * eager shred. Counted on every run; deleted only with
166
+ * `reclaimLegacyBlobs: true`. Not an orphan in the `orphanBlobChunks`
167
+ * sense — these rows keep their index entry, which is exactly why that
168
+ * report could not see them.
169
+ */
170
+ readonly unreferencedLegacyBlobs: UnreferencedLegacyBlobReport;
161
171
  }
162
172
  export interface CompactRunOptions {
163
173
  /** Override "now" for deterministic testing. */
@@ -189,6 +199,12 @@ export interface CompactRunOptions {
189
199
  readonly cacheBudget?: {
190
200
  readonly maxBytes: number;
191
201
  };
202
+ /**
203
+ * #1453 — reclaim unreferenced legacy blobs (chunks first, then the index
204
+ * row). Off by default: reclaiming is irreversible and the default posture
205
+ * for a maintenance pass is to report. Ignored under `dryRun`.
206
+ */
207
+ readonly reclaimLegacyBlobs?: boolean;
192
208
  }
193
209
  export interface CompactionContext {
194
210
  readonly adapter: NoydbStore;
@@ -82,6 +82,8 @@ export declare class BlobSet {
82
82
  * a cleared view: see `ownerRecordElevated()`/`ownerTier()`.
83
83
  */
84
84
  private readonly clearedTier;
85
+ /** #1452 — see `BlobsStrategyOpenArgs.assertOwnerWritable`. */
86
+ private readonly assertOwnerWritable;
85
87
  constructor(opts: {
86
88
  store: NoydbStore;
87
89
  vault: string;
@@ -99,6 +101,7 @@ export declare class BlobSet {
99
101
  keyring?: UnlockedKeyring;
100
102
  clearedTier?: number;
101
103
  pinCache?: BlobPinCache;
104
+ assertOwnerWritable?: () => Promise<void>;
102
105
  });
103
106
  /**
104
107
  * #724 I1 completion: a legacy (non-`perRecordKeys`) blob has no per-blob
@@ -1275,10 +1278,26 @@ export declare class BlobSet {
1275
1278
  */
1276
1279
  list(): Promise<SlotInfo[]>;
1277
1280
  /**
1278
- * Delete the named slot from this record.
1279
- * Decrements refCount on the blob. Chunks are GC'd by `vault.blobGC()`.
1281
+ * Delete the named slot from this record and decrement the blob's refCount.
1282
+ * At refCount 0 an erasable blob (`perRecordKeys`) is crypto-shredded on the
1283
+ * spot; a legacy blob keeps its chunks until
1284
+ * `vault.compact({ reclaimLegacyBlobs: true })` reclaims them (#1453), or
1285
+ * `blob(id).migrate()` makes it erasable first.
1286
+ *
1287
+ * Gated on the owning record (#1452): refused where an update of the record
1288
+ * would be refused.
1280
1289
  */
1281
1290
  delete(slotName: string): Promise<void>;
1291
+ /**
1292
+ * #1451 — release EVERY slot this record holds. Called by
1293
+ * `Collection.delete()` after the record is gone, so "the record is deleted"
1294
+ * and "its attachments are released" are one operation. Ungated: the record
1295
+ * delete itself already passed the gate bus. Ref-counted like any release —
1296
+ * content another record still holds survives.
1297
+ */
1298
+ releaseAll(): Promise<void>;
1299
+ /** The body of {@link delete}, minus the owner gate. */
1300
+ private releaseSlot;
1282
1301
  /**
1283
1302
  * Pin the named slot for offline availability ON THIS DEVICE.
1284
1303
  *
@@ -0,0 +1,35 @@
1
+ /**
2
+ * #1453 — count, and optionally reclaim, legacy blobs nothing references.
3
+ *
4
+ * A legacy blob (no per-blob `_cek`) is left at refCount 0 "for deferred GC"
5
+ * by `releaseRef`; before this the deferred GC had no verb outside
6
+ * `forget()` (which needs `withForget`), and `orphanBlobChunks` could not see
7
+ * these rows because they keep their index entry — so `vault.compact()`
8
+ * reported clean over a vault whose blob storage grew on every overwrite.
9
+ *
10
+ * Reclaiming here is SAFE where reclaiming orphans is not (see
11
+ * `orphan-report.ts`): the decision reads `refCount` off an AAD-bound index
12
+ * row the hub decrypted itself, never the store's `list()`. A withholding
13
+ * store cannot make a live blob look unreferenced; it can only hide a row from
14
+ * this sweep, which then does nothing to it.
15
+ *
16
+ * Rows sealed at an elevated tier do not open under the flat `_blob` DEK and
17
+ * are skipped, not counted: this is a tier-0 pass.
18
+ */
19
+ import type { NoydbStore } from '../../kernel/types.js';
20
+ import { type EnclaveKey } from '../../kernel/enclave/index.js';
21
+ /** What `vault.compact()` reports (and, on request, reclaims) about legacy blobs. */
22
+ export interface UnreferencedLegacyBlobReport {
23
+ /** `_blob_index` rows with no `_cek` (legacy) and `refCount <= 0`. */
24
+ readonly blobs: number;
25
+ /** Chunk rows those blobs still hold. */
26
+ readonly chunks: number;
27
+ /** How many of those blobs this run deleted (chunks first, then the index row). */
28
+ readonly reclaimed: number;
29
+ }
30
+ export declare function sweepUnreferencedLegacyBlobs(ctx: {
31
+ adapter: NoydbStore;
32
+ vault: string;
33
+ getDEK: (name: string) => Promise<EnclaveKey>;
34
+ encrypted: boolean;
35
+ }, reclaim: boolean): Promise<UnreferencedLegacyBlobReport>;
@@ -48,6 +48,12 @@ export interface DescribedField {
48
48
  readonly semanticType?: string;
49
49
  readonly unit?: string;
50
50
  readonly sensitivity?: 'public' | 'pii' | 'secret';
51
+ /**
52
+ * Read-shape sensitivity (#1363) — orthogonal to {@link DescribedField.sensitivity}.
53
+ * Telemetry plumbing, never a control: it tells a sensor which collections
54
+ * have a coverage worth accounting for. See `FieldMeta.bulk`.
55
+ */
56
+ readonly bulk?: 'sensitive';
51
57
  readonly aggregate?: 'sum' | 'count' | 'distinct' | 'none';
52
58
  readonly aliases?: readonly string[];
53
59
  readonly ref?: {
@@ -19,6 +19,24 @@ export interface FieldMeta {
19
19
  unit?: string;
20
20
  /** Data classification driving redaction/inspector masking. */
21
21
  sensitivity?: 'public' | 'pii' | 'secret';
22
+ /**
23
+ * Sensitivity that is a property of the READ SHAPE, not the value (#1251).
24
+ *
25
+ * ⚠️ Declaring this prevents nothing. Against an insider holding the device
26
+ * and local keys it is TELEMETRY: it lets an opt-in sensor make bulk
27
+ * extraction visible early, attributable and loud. The real remediation is
28
+ * key custody — tiers and per-collection DEKs — not this label.
29
+ *
30
+ * Reads as: *this field's collection is a corpus whose COVERAGE is a
31
+ * protected quantity.* Deliberately ORTHOGONAL to {@link FieldMeta.sensitivity}:
32
+ * a company tax id stays `'public'` (it is public by law) and is still
33
+ * `bulk: 'sensitive'`, because the book of business is the set, not the value.
34
+ *
35
+ * The kernel does NOTHING with it beyond carrying it through introspection
36
+ * (`describe()` / `dumpSchema()`), so a sensor can discover which
37
+ * collections to account for. Zero runtime cost when unused.
38
+ */
39
+ bulk?: 'sensitive';
22
40
  /** Default aggregation for this field. */
23
41
  aggregate?: 'sum' | 'count' | 'distinct' | 'none';
24
42
  /** Canonical search synonyms (data vocabulary, not UI). */