@noy-db/hub 0.7.1-pre.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 (610) hide show
  1. package/CHANGELOG.md +97 -14
  2. package/LICENSE +202 -21
  3. package/NOTICE +1 -0
  4. package/README.md +5 -5
  5. package/codemods/0.8.0-pre.json +61 -0
  6. package/dist/api-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-XKCXVKV3.js → backup-7TFRVFLH.js} +12 -12
  11. package/dist/blobs/index.js +13 -13
  12. package/dist/broker/index.js +12 -12
  13. package/dist/by/index.js +2 -2
  14. package/dist/cargo/index.js +39 -36
  15. package/dist/{chunk-7O3Y4PPD.js → chunk-244VXYPG.js} +140 -16
  16. package/dist/chunk-244VXYPG.js.map +1 -0
  17. package/dist/{chunk-BUE2D7PX.js → chunk-32YV3TJT.js} +2 -2
  18. package/dist/{chunk-3PGS7TYR.js → chunk-3ELRMVJK.js} +12 -12
  19. package/dist/{chunk-OTQZ7ZWU.js → chunk-3F7GLNAE.js} +6 -6
  20. package/dist/{chunk-SGZAIJCV.js → chunk-3H5KLDZN.js} +4 -4
  21. package/dist/{chunk-VTFVLCUH.js → chunk-3JWHAR6E.js} +2 -2
  22. package/dist/{chunk-YMUFFJCO.js → chunk-3TDUWVWB.js} +5 -2
  23. package/dist/chunk-3TDUWVWB.js.map +1 -0
  24. package/dist/{chunk-JBDFMYKQ.js → chunk-4AF3TUMP.js} +2 -2
  25. package/dist/{chunk-ZORTV6NH.js → chunk-4I522ERM.js} +88 -4
  26. package/dist/chunk-4I522ERM.js.map +1 -0
  27. package/dist/{chunk-A66I4JOA.js → chunk-4MXI3ODD.js} +4 -4
  28. package/dist/chunk-4MXI3ODD.js.map +1 -0
  29. package/dist/{chunk-BLN54W3L.js → chunk-5FDLC6G7.js} +56 -3
  30. package/dist/chunk-5FDLC6G7.js.map +1 -0
  31. package/dist/chunk-5O7D6ZTW.js +53 -0
  32. package/dist/chunk-5O7D6ZTW.js.map +1 -0
  33. package/dist/{chunk-DFMWUOU5.js → chunk-6B3VNR4P.js} +12 -12
  34. package/dist/{chunk-TUFM4UZP.js → chunk-6K7DPM7D.js} +2 -2
  35. package/dist/{chunk-3VF3WQ4F.js → chunk-6LMQ5R26.js} +7 -7
  36. package/dist/{chunk-UP4BECPY.js → chunk-6LNL42F5.js} +94 -32
  37. package/dist/chunk-6LNL42F5.js.map +1 -0
  38. package/dist/{chunk-XLMEZIAJ.js → chunk-6OWXYZK2.js} +2 -2
  39. package/dist/{chunk-BRLKZUBT.js → chunk-6QSQQLSE.js} +3 -3
  40. package/dist/chunk-7JE7BDYJ.js +1558 -0
  41. package/dist/chunk-7JE7BDYJ.js.map +1 -0
  42. package/dist/{chunk-XKWGNJ26.js → chunk-7VCXZDA4.js} +5 -5
  43. package/dist/chunk-7VCXZDA4.js.map +1 -0
  44. package/dist/{chunk-NQKIUNW5.js → chunk-A6IJU4TK.js} +2 -2
  45. package/dist/{chunk-HIWCKBEY.js → chunk-ANWPSTZU.js} +38 -9
  46. package/dist/chunk-ANWPSTZU.js.map +1 -0
  47. package/dist/{chunk-QIZPZMUI.js → chunk-AOWGXU6D.js} +2 -2
  48. package/dist/{chunk-CUZLNGD5.js → chunk-B2YY6WDD.js} +1 -1
  49. package/dist/chunk-B2YY6WDD.js.map +1 -0
  50. package/dist/{chunk-SFAWCTEM.js → chunk-B57AFBY2.js} +2 -2
  51. package/dist/{chunk-UHHPLO3I.js → chunk-B6SJIBQK.js} +4 -4
  52. package/dist/chunk-BJ2IXQ5Q.js +100 -0
  53. package/dist/chunk-BJ2IXQ5Q.js.map +1 -0
  54. package/dist/{chunk-Q2PU57HC.js → chunk-BK2HHQGN.js} +2 -2
  55. package/dist/chunk-BKT776R5.js +1 -0
  56. package/dist/{chunk-FET5XCAT.js → chunk-BP6DARYA.js} +33 -5
  57. package/dist/chunk-BP6DARYA.js.map +1 -0
  58. package/dist/{chunk-YJX7EOJD.js → chunk-BUDAGWL5.js} +6 -6
  59. package/dist/chunk-CF5UU4S7.js +757 -0
  60. package/dist/chunk-CF5UU4S7.js.map +1 -0
  61. package/dist/{chunk-QPQUVOZ2.js → chunk-CKNGS5MH.js} +3 -3
  62. package/dist/chunk-CY2CYVWZ.js +41 -0
  63. package/dist/chunk-CY2CYVWZ.js.map +1 -0
  64. package/dist/{chunk-2577DKXB.js → chunk-DC5QVPV7.js} +2 -2
  65. package/dist/chunk-DC5QVPV7.js.map +1 -0
  66. package/dist/{chunk-BTDR2PXY.js → chunk-DE4DH2RZ.js} +2 -2
  67. package/dist/{chunk-Q2MPFCQ7.js → chunk-DF73H4UN.js} +4 -4
  68. package/dist/{chunk-4GVM6QZA.js → chunk-ENAG3IY7.js} +2 -2
  69. package/dist/chunk-ENAG3IY7.js.map +1 -0
  70. package/dist/{chunk-6LKOJBV6.js → chunk-EOVMT6TB.js} +2 -2
  71. package/dist/chunk-F24ZZTHQ.js +193 -0
  72. package/dist/chunk-F24ZZTHQ.js.map +1 -0
  73. package/dist/chunk-F2TDU7MQ.js +456 -0
  74. package/dist/chunk-F2TDU7MQ.js.map +1 -0
  75. package/dist/chunk-F6NCB7KT.js +13 -0
  76. package/dist/chunk-F6NCB7KT.js.map +1 -0
  77. package/dist/{chunk-SPYWXKJN.js → chunk-F7XGHL5O.js} +3 -3
  78. package/dist/chunk-F7XGHL5O.js.map +1 -0
  79. package/dist/{chunk-R42NSZI6.js → chunk-FCKWQE2H.js} +5 -5
  80. package/dist/{chunk-R7BX2NB3.js → chunk-FH2L2E34.js} +4 -4
  81. package/dist/chunk-FH2L2E34.js.map +1 -0
  82. package/dist/{chunk-4OZNXTO4.js → chunk-FN5EBVTQ.js} +2 -2
  83. package/dist/chunk-FQ54DWUQ.js +270 -0
  84. package/dist/chunk-FQ54DWUQ.js.map +1 -0
  85. package/dist/{chunk-P3MG6QCN.js → chunk-FQ5VRHIB.js} +4 -4
  86. package/dist/{chunk-FAHMLERK.js → chunk-FW22ZCXT.js} +2 -2
  87. package/dist/chunk-FXQBGFOX.js +524 -0
  88. package/dist/chunk-FXQBGFOX.js.map +1 -0
  89. package/dist/{chunk-7APJ6CO6.js → chunk-GF5BZ7D4.js} +45 -9
  90. package/dist/chunk-GF5BZ7D4.js.map +1 -0
  91. package/dist/{chunk-TRGTKX5E.js → chunk-GHLTDZRS.js} +5 -3
  92. package/dist/{chunk-TRGTKX5E.js.map → chunk-GHLTDZRS.js.map} +1 -1
  93. package/dist/{chunk-BVN6KXL2.js → chunk-HBPPGWUM.js} +5 -5
  94. package/dist/chunk-HBPPGWUM.js.map +1 -0
  95. package/dist/{chunk-KTFRCC5C.js → chunk-HBRLNOHL.js} +82 -8
  96. package/dist/chunk-HBRLNOHL.js.map +1 -0
  97. package/dist/chunk-HLEK5VAN.js +275 -0
  98. package/dist/chunk-HLEK5VAN.js.map +1 -0
  99. package/dist/{chunk-RMS3NEA3.js → chunk-HT2AHGQI.js} +2 -2
  100. package/dist/{chunk-2N5ML6HT.js → chunk-HVSCEIYL.js} +7 -7
  101. package/dist/{chunk-LH5A3ZPG.js → chunk-I3JDRCMW.js} +150 -22
  102. package/dist/chunk-I3JDRCMW.js.map +1 -0
  103. package/dist/{chunk-GY4WYNNG.js → chunk-ID6Z6E66.js} +2 -2
  104. package/dist/{chunk-YJRT5UQM.js → chunk-IEX7NK2K.js} +3 -3
  105. package/dist/{chunk-334WSVOW.js → chunk-ISZQJBML.js} +5 -5
  106. package/dist/{chunk-LWBCUYZW.js → chunk-IT22PWKV.js} +2 -2
  107. package/dist/{chunk-EQEYOJBM.js → chunk-IUWCVHQ7.js} +3 -3
  108. package/dist/chunk-IUWCVHQ7.js.map +1 -0
  109. package/dist/{chunk-RF6D3Y5E.js → chunk-J6UOHJY5.js} +4 -4
  110. package/dist/{chunk-JMGDHKQF.js → chunk-JCN44NCY.js} +2 -2
  111. package/dist/{chunk-3BZZJJMQ.js → chunk-K6W7BVZ6.js} +3 -3
  112. package/dist/{chunk-4ZS56W5S.js → chunk-KJFW62P4.js} +29 -11
  113. package/dist/chunk-KJFW62P4.js.map +1 -0
  114. package/dist/{chunk-453F654R.js → chunk-L7DOS3TE.js} +2 -2
  115. package/dist/chunk-LGNDFRYC.js +23 -0
  116. package/dist/chunk-LGNDFRYC.js.map +1 -0
  117. package/dist/{chunk-QTQUH4DS.js → chunk-LGRLME4M.js} +7 -7
  118. package/dist/{chunk-CHQCZZWC.js → chunk-LQ4ZHOKP.js} +2 -2
  119. package/dist/{chunk-GPNTB4Y7.js → chunk-M522UYZ2.js} +5 -5
  120. package/dist/{chunk-3V4KWFX7.js → chunk-M7NI3IWE.js} +45 -12
  121. package/dist/chunk-M7NI3IWE.js.map +1 -0
  122. package/dist/chunk-MDWKM2XC.js +293 -0
  123. package/dist/chunk-MDWKM2XC.js.map +1 -0
  124. package/dist/chunk-MKXXMNJH.js +204 -0
  125. package/dist/chunk-MKXXMNJH.js.map +1 -0
  126. package/dist/{chunk-SKGMN35F.js → chunk-MLPHLJIQ.js} +3 -3
  127. package/dist/chunk-MLPHLJIQ.js.map +1 -0
  128. package/dist/{chunk-UDHWDSRL.js → chunk-MTL7MXGR.js} +6 -6
  129. package/dist/{chunk-TFR7DSOV.js → chunk-MVZ2TPVP.js} +2 -2
  130. package/dist/{chunk-K23VKTN4.js → chunk-N5DNADLQ.js} +7 -7
  131. package/dist/{chunk-RSGLUIO6.js → chunk-NNARWO72.js} +6 -6
  132. package/dist/{chunk-2ENE6445.js → chunk-NRT6QZQB.js} +102 -16
  133. package/dist/chunk-NRT6QZQB.js.map +1 -0
  134. package/dist/{chunk-PPTHY5QO.js → chunk-NWHBJQAL.js} +99 -8
  135. package/dist/chunk-NWHBJQAL.js.map +1 -0
  136. package/dist/chunk-NYMLINRP.js +28 -0
  137. package/dist/chunk-NYMLINRP.js.map +1 -0
  138. package/dist/{chunk-7MG7SJT7.js → chunk-ODVPTDPK.js} +1 -1
  139. package/dist/chunk-ODVPTDPK.js.map +1 -0
  140. package/dist/chunk-ORDURZBU.js +461 -0
  141. package/dist/chunk-ORDURZBU.js.map +1 -0
  142. package/dist/{chunk-6YXCPL4T.js → chunk-PDCG6PR5.js} +2 -2
  143. package/dist/{chunk-ACAQ2DSG.js → chunk-PSIV7CJV.js} +2 -2
  144. package/dist/{chunk-KKEESNPE.js → chunk-QBBUZ3I3.js} +126 -19
  145. package/dist/chunk-QBBUZ3I3.js.map +1 -0
  146. package/dist/{chunk-5VCRVKOZ.js → chunk-QOOUUR4A.js} +6 -4
  147. package/dist/{chunk-5VCRVKOZ.js.map → chunk-QOOUUR4A.js.map} +1 -1
  148. package/dist/{chunk-G73UVHCA.js → chunk-QWFHIOD2.js} +5 -5
  149. package/dist/{chunk-AYX7AINO.js → chunk-QWGU66MP.js} +3 -3
  150. package/dist/chunk-RHVMZSUU.js +7 -0
  151. package/dist/chunk-RHVMZSUU.js.map +1 -0
  152. package/dist/{chunk-3BVH633C.js → chunk-S57HTZ6X.js} +5 -5
  153. package/dist/{chunk-SZJ3DLZA.js → chunk-SEE332EV.js} +2 -2
  154. package/dist/{chunk-YYP7WSEB.js → chunk-SI3V7D4G.js} +2 -2
  155. package/dist/{chunk-UGTBXF5U.js → chunk-SOIQ4MM4.js} +3 -3
  156. package/dist/chunk-SUZKW6UR.js +25 -0
  157. package/dist/chunk-SUZKW6UR.js.map +1 -0
  158. package/dist/{chunk-4GFX6MPA.js → chunk-SYVZW77S.js} +6 -6
  159. package/dist/{chunk-ZYIYHJ5R.js → chunk-T2LBQ5DV.js} +815 -222
  160. package/dist/chunk-T2LBQ5DV.js.map +1 -0
  161. package/dist/chunk-T52GX4SA.js +215 -0
  162. package/dist/chunk-T52GX4SA.js.map +1 -0
  163. package/dist/{chunk-MVMXZYXT.js → chunk-TKUOEU2F.js} +2 -2
  164. package/dist/chunk-TOPYQ6GA.js +31 -0
  165. package/dist/chunk-TOPYQ6GA.js.map +1 -0
  166. package/dist/{chunk-SMH6SRX7.js → chunk-TROR3ALR.js} +2 -2
  167. package/dist/{chunk-CUQPWYRX.js → chunk-UD5EVGZ7.js} +42 -389
  168. package/dist/chunk-UD5EVGZ7.js.map +1 -0
  169. package/dist/{chunk-M4YPHYEH.js → chunk-UPD5NWI5.js} +65 -17
  170. package/dist/chunk-UPD5NWI5.js.map +1 -0
  171. package/dist/{chunk-HPVZCW43.js → chunk-UYB234ZR.js} +2 -2
  172. package/dist/chunk-VHM7HCKB.js +220 -0
  173. package/dist/chunk-VHM7HCKB.js.map +1 -0
  174. package/dist/{chunk-DGOZ4UZD.js → chunk-VNNRUGMM.js} +2 -2
  175. package/dist/{chunk-F3W6YMDC.js → chunk-VNPEWFPD.js} +4 -4
  176. package/dist/{chunk-JVIBCBC7.js → chunk-WNJ4AVGE.js} +2 -2
  177. package/dist/{chunk-ZHKOPKE3.js → chunk-WX5ADGTZ.js} +3 -3
  178. package/dist/{chunk-VXANTWBJ.js → chunk-WY2XXTET.js} +92 -6
  179. package/dist/{chunk-VXANTWBJ.js.map → chunk-WY2XXTET.js.map} +1 -1
  180. package/dist/{chunk-HJUWN7JN.js → chunk-X25NWUZB.js} +33 -8
  181. package/dist/chunk-X25NWUZB.js.map +1 -0
  182. package/dist/{chunk-Q7HZX3IF.js → chunk-X4773RBR.js} +2 -2
  183. package/dist/chunk-XBKH4FOC.js +195 -0
  184. package/dist/chunk-XBKH4FOC.js.map +1 -0
  185. package/dist/{chunk-A2HKRLPV.js → chunk-YNIUIERI.js} +3 -3
  186. package/dist/chunk-YSK2CU2Q.js +936 -0
  187. package/dist/chunk-YSK2CU2Q.js.map +1 -0
  188. package/dist/{chunk-UXVWEX5L.js → chunk-Z5HTYMMQ.js} +6 -2
  189. package/dist/chunk-Z5HTYMMQ.js.map +1 -0
  190. package/dist/{chunk-WQBG4SZS.js → chunk-ZE4CHIED.js} +56 -34
  191. package/dist/chunk-ZE4CHIED.js.map +1 -0
  192. package/dist/chunk-ZSX4S5XB.js +1289 -0
  193. package/dist/chunk-ZSX4S5XB.js.map +1 -0
  194. package/dist/{chunk-BZ3534YM.js → chunk-ZUVBC32X.js} +2 -2
  195. package/dist/{chunk-V7ZRRCRJ.js → chunk-ZXABPVM6.js} +6 -6
  196. package/dist/classified/index.js +5 -5
  197. package/dist/{classified-marker-BWOFVYAC.js → classified-marker-W3USLL5M.js} +3 -3
  198. package/dist/collection-facade-QU6IJBN3.js +48 -0
  199. package/dist/{computed-VPOKQK4N.js → computed-TPFBX7U4.js} +3 -3
  200. package/dist/consent/index.js +9 -9
  201. package/dist/cover/index.js +10 -10
  202. package/dist/coverage/index.js +306 -0
  203. package/dist/coverage/index.js.map +1 -0
  204. package/dist/custody/index.js +12 -12
  205. package/dist/{dead-filter-PKQDLOT4.js → dead-filter-U2UYKSZL.js} +2 -2
  206. package/dist/debug/index.js +1 -1
  207. package/dist/{delegation-DS5NRILW.js → delegation-S3AEPW2T.js} +11 -11
  208. package/dist/derivations/index.js +25 -22
  209. package/dist/derive-OX7F6TGG.js +21 -0
  210. package/dist/directory/index.js +10 -10
  211. package/dist/{dispatch-IEPAVQUM.js → dispatch-3CQDJV5Q.js} +5 -5
  212. package/dist/{dispatch-Q6MWLOJY.js → dispatch-RH4LHKBH.js} +21 -21
  213. package/dist/{enclave-55PAM4YO.js → enclave-27SMF6GF.js} +9 -9
  214. package/dist/executor-B6SRO2QS.js +36 -0
  215. package/dist/executor-BI5CHWRY.js +8 -0
  216. package/dist/executor-RBKM5W5K.js +8 -0
  217. package/dist/export-accessible-VMA3YM5V.js +22 -0
  218. package/dist/extract-partition-NF7PXGPP.js +37 -0
  219. package/dist/{fanout-sidecar-S3QL53YX.js → fanout-sidecar-OT6RYLOL.js} +9 -9
  220. package/dist/find-LZMP26KF.js +10 -0
  221. package/dist/forget/index.js +9 -9
  222. package/dist/guards/index.js +4 -4
  223. package/dist/history/index.js +13 -13
  224. package/dist/i18n/index.js +14 -14
  225. package/dist/index.d.ts +28 -6
  226. package/dist/index.js +999 -191
  227. package/dist/index.js.map +1 -1
  228. package/dist/indexing/index.js +13 -5
  229. package/dist/indexing/index.js.map +1 -1
  230. package/dist/introspection/index.js +11 -11
  231. package/dist/issue-IHARXWW5.js +18 -0
  232. package/dist/ivf-flat-UZ6DQDLS.js +314 -0
  233. package/dist/ivf-flat-UZ6DQDLS.js.map +1 -0
  234. package/dist/{json-schema-V3M5MUCM.js → json-schema-3SHX72CC.js} +2 -1
  235. package/dist/json-schema-3SHX72CC.js.map +1 -0
  236. package/dist/kernel/collection-config.d.ts +4 -20
  237. package/dist/kernel/collection.d.ts +29 -8
  238. package/dist/kernel/enclave/record-keys/record-codec.d.ts +25 -0
  239. package/dist/kernel/errors.d.ts +227 -36
  240. package/dist/kernel/generation-map.d.ts +48 -0
  241. package/dist/kernel/noydb.d.ts +6 -1
  242. package/dist/kernel/present-cache.d.ts +58 -0
  243. package/dist/kernel/query/all.d.ts +7 -0
  244. package/dist/kernel/query/builder.d.ts +601 -270
  245. package/dist/kernel/query/civil-date.d.ts +64 -0
  246. package/dist/kernel/query/cursor.d.ts +40 -0
  247. package/dist/kernel/query/distinct-key.d.ts +98 -0
  248. package/dist/kernel/query/hydration.d.ts +76 -0
  249. package/dist/kernel/query/index.d.ts +31 -15
  250. package/dist/kernel/query/internal/core.d.ts +30 -0
  251. package/dist/kernel/query/internal/hooks.d.ts +22 -0
  252. package/dist/kernel/query/internal/maintenance.d.ts +43 -0
  253. package/dist/kernel/query/live/incremental.d.ts +314 -0
  254. package/dist/kernel/query/live/index.d.ts +22 -0
  255. package/dist/kernel/query/live/install.d.ts +2 -0
  256. package/dist/kernel/query/{live.d.ts → live/live.d.ts} +39 -9
  257. package/dist/kernel/query/live/methods.d.ts +107 -0
  258. package/dist/kernel/query/predicate.d.ts +119 -1
  259. package/dist/kernel/query/reduce/date-trunc.d.ts +75 -0
  260. package/dist/kernel/query/reduce/index.d.ts +36 -0
  261. package/dist/kernel/query/reduce/install.d.ts +2 -0
  262. package/dist/kernel/query/reduce/methods.d.ts +259 -0
  263. package/dist/kernel/query/reduce/scan-methods.d.ts +121 -0
  264. package/dist/kernel/query/relate/explain.d.ts +199 -0
  265. package/dist/kernel/query/relate/index.d.ts +48 -0
  266. package/dist/kernel/query/relate/install.d.ts +2 -0
  267. package/dist/kernel/query/relate/join-on.d.ts +126 -0
  268. package/dist/kernel/query/relate/join-reduce.d.ts +16 -0
  269. package/dist/kernel/query/relate/join.d.ts +452 -0
  270. package/dist/kernel/query/relate/methods.d.ts +426 -0
  271. package/dist/kernel/query/relate/partition.d.ts +87 -0
  272. package/dist/kernel/query/relate/scan-methods.d.ts +163 -0
  273. package/dist/kernel/query/relate/traverse.d.ts +109 -0
  274. package/dist/kernel/query/scan-builder.d.ts +79 -176
  275. package/dist/kernel/query/sort-key.d.ts +52 -0
  276. package/dist/kernel/tx-write-gate.d.ts +77 -0
  277. package/dist/kernel/types.d.ts +71 -3
  278. package/dist/kernel/validation.d.ts +27 -10
  279. package/dist/kernel/vault.d.ts +9 -4
  280. package/dist/kernel/via/compose.d.ts +3 -0
  281. package/dist/kernel/via/index.d.ts +56 -0
  282. package/dist/kernel/via/pipeline.d.ts +48 -0
  283. package/dist/{ledger-EDXFFZQL.js → ledger-KZPCMVZY.js} +11 -11
  284. package/dist/liberate-GRLCZMW4.js +24 -0
  285. package/dist/link-set-JCMJ7ULP.js +30 -0
  286. package/dist/{managed-secret-NCWEMPUQ.js → managed-secret-S3MQ6SH6.js} +10 -10
  287. package/dist/materialized-views/index.js +30 -23
  288. package/dist/{migrate-cek-5ENH64AA.js → migrate-cek-V7GKJZ7O.js} +2 -2
  289. package/dist/money/index.js +5 -5
  290. package/dist/noydb-SWQJ3MZS.js +97 -0
  291. package/dist/overlay-views/index.js +4 -4
  292. package/dist/periods/index.js +12 -12
  293. package/dist/pod/index.js +75 -68
  294. package/dist/{pod-handle-ECVCDIXW.js → pod-handle-WGDFB4C2.js} +9 -9
  295. package/dist/policy/index.js +10 -10
  296. package/dist/port/with/blob-strategy.d.ts +9 -0
  297. package/dist/port/with/collection-options.d.ts +5 -0
  298. package/dist/port/with/coverage-strategy.d.ts +83 -0
  299. package/dist/port/with/service-bus.d.ts +46 -0
  300. package/dist/port/with/strategies.d.ts +2 -0
  301. package/dist/portability/index.js +8 -8
  302. package/dist/{post-register-3IPCSG6Q.js → post-register-SLSXIPBV.js} +6 -6
  303. package/dist/query/all/index.js +31 -0
  304. package/dist/query/index.js +20 -32
  305. package/dist/query/live/index.js +21 -0
  306. package/dist/query/live/index.js.map +1 -0
  307. package/dist/query/reduce/index.js +33 -0
  308. package/dist/query/reduce/index.js.map +1 -0
  309. package/dist/query/relate/index.js +56 -0
  310. package/dist/query/relate/index.js.map +1 -0
  311. package/dist/reduce/index.js +72 -18
  312. package/dist/reduce/index.js.map +1 -1
  313. package/dist/register-F3OYE7MJ.js +31 -0
  314. package/dist/registry-CILQFXFK.js +8 -0
  315. package/dist/registry-XNNYQVKV.js +8 -0
  316. package/dist/registry-YCDZV3VW.js +35 -0
  317. package/dist/registry-ZGYS33TE.js +24 -0
  318. package/dist/request-withdrawal-Z5NC6TXT.js +30 -0
  319. package/dist/{reveal-QZDHSGD4.js → reveal-4BCKPEC2.js} +6 -6
  320. package/dist/revoke-ZL62WC2D.js +23 -0
  321. package/dist/satellites/index.js +1 -1
  322. package/dist/schema-update/index.js +2 -2
  323. package/dist/sealed-record/index.js +12 -12
  324. package/dist/search/index.js +11 -5
  325. package/dist/{seed-X5CC22CQ.js → seed-4JS2RJ4A.js} +12 -12
  326. package/dist/sequence/index.js +9 -9
  327. package/dist/session/index.js +9 -9
  328. package/dist/shadow/index.js +2 -2
  329. package/dist/signer-MBZZMXTC.js +24 -0
  330. package/dist/snapshots/index.js +10 -10
  331. package/dist/{stale-BZS6H2RY.js → stale-TJ3DYZMQ.js} +10 -10
  332. package/dist/storage-SVMKRGCW.js +22 -0
  333. package/dist/{store-coordination-provider-4WZAIRHC.js → store-coordination-provider-2O2VUHKW.js} +10 -10
  334. package/dist/sync/index.js +10 -10
  335. package/dist/team/index.js +17 -15
  336. package/dist/tiers/index.js +13 -11
  337. package/dist/to/index.js +2 -2
  338. package/dist/transactions/index.js +3 -3
  339. package/dist/util/index.js +1 -1
  340. package/dist/vault-head/index.js +8 -8
  341. package/dist/{verify-6MDTIUEV.js → verify-RVT67IMH.js} +5 -5
  342. package/dist/via/blob/index.d.ts +1 -0
  343. package/dist/via/geo/binding.d.ts +31 -0
  344. package/dist/via/geo/descriptor.d.ts +54 -0
  345. package/dist/via/geo/geohash.d.ts +95 -0
  346. package/dist/via/geo/index.d.ts +13 -0
  347. package/dist/via/geo/where.d.ts +50 -0
  348. package/dist/via/i18n/core.d.ts +1 -1
  349. package/dist/via/lookup/registry.d.ts +1 -1
  350. package/dist/via/lookup/snapshot.d.ts +3 -3
  351. package/dist/walk-HJ42EISE.js +21 -0
  352. package/dist/walk-HJ42EISE.js.map +1 -0
  353. package/dist/with-audit/coverage/accounting.d.ts +112 -0
  354. package/dist/with-audit/coverage/active.d.ts +29 -0
  355. package/dist/with-audit/coverage/index.d.ts +61 -0
  356. package/dist/with-audit/coverage/sketch.d.ts +75 -0
  357. package/dist/with-audit/periods/periods.d.ts +55 -7
  358. package/dist/with-audit/periods/reserved-collections.d.ts +3 -0
  359. package/dist/with-audit/periods/vault-facade.d.ts +17 -0
  360. package/dist/with-audit/tiers/index.d.ts +51 -0
  361. package/dist/with-audit/tiers/strategy.d.ts +8 -0
  362. package/dist/with-cargo/floor.d.ts +2 -2
  363. package/dist/with-commit/tx/invariants.d.ts +1 -1
  364. package/dist/with-commit/tx/transaction.d.ts +13 -3
  365. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +4 -3
  366. package/dist/with-formula/materialized-views/emit-memo.d.ts +40 -0
  367. package/dist/with-formula/materialized-views/executor.d.ts +8 -0
  368. package/dist/with-formula/materialized-views/index.d.ts +1 -1
  369. package/dist/with-formula/materialized-views/registry.d.ts +15 -0
  370. package/dist/with-formula/materialized-views/types.d.ts +106 -14
  371. package/dist/with-formula/materialized-views/window-stage.d.ts +11 -0
  372. package/dist/with-formula/overlay-views/types.d.ts +1 -1
  373. package/dist/with-formula/overlay-views/virtual-collection.d.ts +13 -4
  374. package/dist/with-lookup/embeddings/chunks.d.ts +79 -0
  375. package/dist/with-lookup/embeddings/descriptor.d.ts +21 -0
  376. package/dist/with-lookup/embeddings/index.d.ts +3 -0
  377. package/dist/with-lookup/embeddings/ivf-flat.d.ts +93 -0
  378. package/dist/with-lookup/embeddings/vector-index.d.ts +73 -0
  379. package/dist/with-lookup/embeddings/vector-set.d.ts +94 -1
  380. package/dist/with-lookup/embeddings/with-vector-index.d.ts +67 -0
  381. package/dist/with-lookup/indexing/collection-facade.d.ts +85 -2
  382. package/dist/with-lookup/indexing/compound-indexes.d.ts +129 -0
  383. package/dist/with-lookup/indexing/eager-indexes.d.ts +170 -1
  384. package/dist/with-lookup/indexing/index-snapshot.d.ts +62 -0
  385. package/dist/with-lookup/indexing/lazy-builder.d.ts +33 -0
  386. package/dist/with-lookup/indexing/persisted-field-indexes.d.ts +104 -0
  387. package/dist/with-lookup/indexing/persisted-indexes.d.ts +12 -0
  388. package/dist/with-lookup/indexing/sorted-indexes.d.ts +117 -0
  389. package/dist/with-lookup/indexing/unique-constraints.d.ts +106 -23
  390. package/dist/with-lookup/reduce/active.d.ts +2 -24
  391. package/dist/with-lookup/reduce/group-core.d.ts +43 -0
  392. package/dist/with-lookup/reduce/groupby.d.ts +195 -36
  393. package/dist/with-lookup/reduce/incremental-group.d.ts +153 -0
  394. package/dist/with-lookup/reduce/index.d.ts +26 -5
  395. package/dist/with-lookup/reduce/reducers.d.ts +255 -1
  396. package/dist/with-lookup/reduce/reduction.d.ts +44 -13
  397. package/dist/with-lookup/reduce/strategy.d.ts +43 -3
  398. package/dist/with-lookup/reduce/window.d.ts +262 -0
  399. package/dist/with-lookup/search/collection-facade.d.ts +44 -8
  400. package/dist/with-lookup/search/index-store.d.ts +5 -3
  401. package/dist/with-lookup/search/index.d.ts +4 -2
  402. package/dist/with-lookup/search/inverted-index.d.ts +38 -2
  403. package/dist/with-lookup/search/persisted-index-store.d.ts +5 -2
  404. package/dist/with-lookup/search/phrase.d.ts +28 -0
  405. package/dist/with-lookup/search/retrieve-types.d.ts +57 -1
  406. package/dist/with-lookup/search/serialize.d.ts +29 -3
  407. package/dist/with-lookup/search/strategy.d.ts +2 -6
  408. package/dist/with-party/directory/cover/index.d.ts +1 -1
  409. package/dist/with-party/directory/cover/storage.d.ts +1 -1
  410. package/dist/with-party/directory/cover/types.d.ts +1 -1
  411. package/dist/with-party/directory/index.d.ts +1 -1
  412. package/dist/with-party/directory/types.d.ts +1 -1
  413. package/dist/with-party/directory/user-envelope/api.d.ts +1 -1
  414. package/dist/with-party/policy/engine.d.ts +1 -1
  415. package/dist/with-party/policy/index.d.ts +1 -1
  416. package/dist/with-party/policy/presets.d.ts +1 -1
  417. package/dist/with-party/team/authenticators.d.ts +91 -1
  418. package/dist/with-party/team/index.d.ts +3 -2
  419. package/dist/with-party/team/keyring.d.ts +1 -1
  420. package/dist/with-party/team/managed-secret.d.ts +1 -1
  421. package/dist/with-party/team/noydb-facade.d.ts +12 -3
  422. package/dist/with-pod/format.d.ts +1 -1
  423. package/dist/with-pod/pod.d.ts +1 -1
  424. package/dist/with-shape/blobs/blob-compaction.d.ts +16 -0
  425. package/dist/with-shape/blobs/blob-set.d.ts +21 -2
  426. package/dist/with-shape/blobs/legacy-sweep.d.ts +35 -0
  427. package/dist/with-shape/introspection/describe.d.ts +6 -0
  428. package/dist/with-shape/introspection/field-meta.d.ts +18 -0
  429. package/dist/with-shape/introspection/types.d.ts +57 -1
  430. package/dist/with-shape/links/vault-facade.d.ts +1 -1
  431. package/dist/with-store/partitioned/index.d.ts +337 -0
  432. package/dist/with-sync/change-broadcast.d.ts +153 -0
  433. package/dist/withdraw-accessible-5NZUPAVA.js +27 -0
  434. package/dist/withdraw-accessible-5NZUPAVA.js.map +1 -0
  435. package/package.json +37 -10
  436. package/dist/api-WYW4YEQG.js +0 -19
  437. package/dist/chunk-2577DKXB.js.map +0 -1
  438. package/dist/chunk-2ENE6445.js.map +0 -1
  439. package/dist/chunk-3V4KWFX7.js.map +0 -1
  440. package/dist/chunk-4GVM6QZA.js.map +0 -1
  441. package/dist/chunk-4ZS56W5S.js.map +0 -1
  442. package/dist/chunk-7APJ6CO6.js.map +0 -1
  443. package/dist/chunk-7MG2LHO5.js +0 -1616
  444. package/dist/chunk-7MG2LHO5.js.map +0 -1
  445. package/dist/chunk-7MG7SJT7.js.map +0 -1
  446. package/dist/chunk-7O3Y4PPD.js.map +0 -1
  447. package/dist/chunk-A66I4JOA.js.map +0 -1
  448. package/dist/chunk-ATL3ZVXT.js +0 -151
  449. package/dist/chunk-ATL3ZVXT.js.map +0 -1
  450. package/dist/chunk-BLN54W3L.js.map +0 -1
  451. package/dist/chunk-BVN6KXL2.js.map +0 -1
  452. package/dist/chunk-CUQPWYRX.js.map +0 -1
  453. package/dist/chunk-CUZLNGD5.js.map +0 -1
  454. package/dist/chunk-EQEYOJBM.js.map +0 -1
  455. package/dist/chunk-FET5XCAT.js.map +0 -1
  456. package/dist/chunk-HIWCKBEY.js.map +0 -1
  457. package/dist/chunk-HJUWN7JN.js.map +0 -1
  458. package/dist/chunk-I3ISCYT7.js +0 -159
  459. package/dist/chunk-I3ISCYT7.js.map +0 -1
  460. package/dist/chunk-KKEESNPE.js.map +0 -1
  461. package/dist/chunk-KTFRCC5C.js.map +0 -1
  462. package/dist/chunk-LH5A3ZPG.js.map +0 -1
  463. package/dist/chunk-M4YPHYEH.js.map +0 -1
  464. package/dist/chunk-NSITFOCJ.js +0 -99
  465. package/dist/chunk-NSITFOCJ.js.map +0 -1
  466. package/dist/chunk-PPTHY5QO.js.map +0 -1
  467. package/dist/chunk-R7BX2NB3.js.map +0 -1
  468. package/dist/chunk-RTBJ5IOO.js +0 -87
  469. package/dist/chunk-RTBJ5IOO.js.map +0 -1
  470. package/dist/chunk-SKGMN35F.js.map +0 -1
  471. package/dist/chunk-SPYWXKJN.js.map +0 -1
  472. package/dist/chunk-UP4BECPY.js.map +0 -1
  473. package/dist/chunk-UXVWEX5L.js.map +0 -1
  474. package/dist/chunk-WQBG4SZS.js.map +0 -1
  475. package/dist/chunk-XKWGNJ26.js.map +0 -1
  476. package/dist/chunk-YMUFFJCO.js.map +0 -1
  477. package/dist/chunk-ZN4FD4PE.js +0 -364
  478. package/dist/chunk-ZN4FD4PE.js.map +0 -1
  479. package/dist/chunk-ZORTV6NH.js.map +0 -1
  480. package/dist/chunk-ZYIYHJ5R.js.map +0 -1
  481. package/dist/collection-facade-JSJYIKS4.js +0 -45
  482. package/dist/derive-E642AOUB.js +0 -21
  483. package/dist/executor-5NIMLSKZ.js +0 -8
  484. package/dist/executor-7UQ3BZ4F.js +0 -29
  485. package/dist/executor-AQVXV5GZ.js +0 -8
  486. package/dist/export-accessible-ORMKLA3E.js +0 -22
  487. package/dist/extract-partition-NKYO3WNG.js +0 -37
  488. package/dist/find-NOGJ25VX.js +0 -10
  489. package/dist/issue-3DTQ7VJJ.js +0 -18
  490. package/dist/json-schema-V3M5MUCM.js.map +0 -1
  491. package/dist/kernel/query/join.d.ts +0 -232
  492. package/dist/liberate-V35QUHJP.js +0 -24
  493. package/dist/link-set-2TTM3IZC.js +0 -30
  494. package/dist/noydb-62MX4QUG.js +0 -90
  495. package/dist/register-HHLXEQDN.js +0 -31
  496. package/dist/registry-23WF3TGH.js +0 -8
  497. package/dist/registry-4AYVUNXK.js +0 -8
  498. package/dist/registry-JS3YFQQM.js +0 -18
  499. package/dist/registry-XX2Z7B46.js +0 -32
  500. package/dist/request-withdrawal-CHPATE4G.js +0 -30
  501. package/dist/revoke-7M2VW4ON.js +0 -23
  502. package/dist/signer-SJQJVSM6.js +0 -24
  503. package/dist/storage-RW4QBS23.js +0 -22
  504. package/dist/walk-ZURCH6RZ.js +0 -21
  505. package/dist/withdraw-accessible-PXR4IXDX.js +0 -27
  506. /package/dist/{api-WYW4YEQG.js.map → api-GVYEKSJE.js.map} +0 -0
  507. /package/dist/{backup-XKCXVKV3.js.map → backup-7TFRVFLH.js.map} +0 -0
  508. /package/dist/{chunk-BUE2D7PX.js.map → chunk-32YV3TJT.js.map} +0 -0
  509. /package/dist/{chunk-3PGS7TYR.js.map → chunk-3ELRMVJK.js.map} +0 -0
  510. /package/dist/{chunk-OTQZ7ZWU.js.map → chunk-3F7GLNAE.js.map} +0 -0
  511. /package/dist/{chunk-SGZAIJCV.js.map → chunk-3H5KLDZN.js.map} +0 -0
  512. /package/dist/{chunk-VTFVLCUH.js.map → chunk-3JWHAR6E.js.map} +0 -0
  513. /package/dist/{chunk-JBDFMYKQ.js.map → chunk-4AF3TUMP.js.map} +0 -0
  514. /package/dist/{chunk-DFMWUOU5.js.map → chunk-6B3VNR4P.js.map} +0 -0
  515. /package/dist/{chunk-TUFM4UZP.js.map → chunk-6K7DPM7D.js.map} +0 -0
  516. /package/dist/{chunk-3VF3WQ4F.js.map → chunk-6LMQ5R26.js.map} +0 -0
  517. /package/dist/{chunk-XLMEZIAJ.js.map → chunk-6OWXYZK2.js.map} +0 -0
  518. /package/dist/{chunk-BRLKZUBT.js.map → chunk-6QSQQLSE.js.map} +0 -0
  519. /package/dist/{chunk-NQKIUNW5.js.map → chunk-A6IJU4TK.js.map} +0 -0
  520. /package/dist/{chunk-QIZPZMUI.js.map → chunk-AOWGXU6D.js.map} +0 -0
  521. /package/dist/{chunk-SFAWCTEM.js.map → chunk-B57AFBY2.js.map} +0 -0
  522. /package/dist/{chunk-UHHPLO3I.js.map → chunk-B6SJIBQK.js.map} +0 -0
  523. /package/dist/{chunk-Q2PU57HC.js.map → chunk-BK2HHQGN.js.map} +0 -0
  524. /package/dist/{collection-facade-JSJYIKS4.js.map → chunk-BKT776R5.js.map} +0 -0
  525. /package/dist/{chunk-YJX7EOJD.js.map → chunk-BUDAGWL5.js.map} +0 -0
  526. /package/dist/{chunk-QPQUVOZ2.js.map → chunk-CKNGS5MH.js.map} +0 -0
  527. /package/dist/{chunk-BTDR2PXY.js.map → chunk-DE4DH2RZ.js.map} +0 -0
  528. /package/dist/{chunk-Q2MPFCQ7.js.map → chunk-DF73H4UN.js.map} +0 -0
  529. /package/dist/{chunk-6LKOJBV6.js.map → chunk-EOVMT6TB.js.map} +0 -0
  530. /package/dist/{chunk-R42NSZI6.js.map → chunk-FCKWQE2H.js.map} +0 -0
  531. /package/dist/{chunk-4OZNXTO4.js.map → chunk-FN5EBVTQ.js.map} +0 -0
  532. /package/dist/{chunk-P3MG6QCN.js.map → chunk-FQ5VRHIB.js.map} +0 -0
  533. /package/dist/{chunk-FAHMLERK.js.map → chunk-FW22ZCXT.js.map} +0 -0
  534. /package/dist/{chunk-RMS3NEA3.js.map → chunk-HT2AHGQI.js.map} +0 -0
  535. /package/dist/{chunk-2N5ML6HT.js.map → chunk-HVSCEIYL.js.map} +0 -0
  536. /package/dist/{chunk-GY4WYNNG.js.map → chunk-ID6Z6E66.js.map} +0 -0
  537. /package/dist/{chunk-YJRT5UQM.js.map → chunk-IEX7NK2K.js.map} +0 -0
  538. /package/dist/{chunk-334WSVOW.js.map → chunk-ISZQJBML.js.map} +0 -0
  539. /package/dist/{chunk-LWBCUYZW.js.map → chunk-IT22PWKV.js.map} +0 -0
  540. /package/dist/{chunk-RF6D3Y5E.js.map → chunk-J6UOHJY5.js.map} +0 -0
  541. /package/dist/{chunk-JMGDHKQF.js.map → chunk-JCN44NCY.js.map} +0 -0
  542. /package/dist/{chunk-3BZZJJMQ.js.map → chunk-K6W7BVZ6.js.map} +0 -0
  543. /package/dist/{chunk-453F654R.js.map → chunk-L7DOS3TE.js.map} +0 -0
  544. /package/dist/{chunk-QTQUH4DS.js.map → chunk-LGRLME4M.js.map} +0 -0
  545. /package/dist/{chunk-CHQCZZWC.js.map → chunk-LQ4ZHOKP.js.map} +0 -0
  546. /package/dist/{chunk-GPNTB4Y7.js.map → chunk-M522UYZ2.js.map} +0 -0
  547. /package/dist/{chunk-UDHWDSRL.js.map → chunk-MTL7MXGR.js.map} +0 -0
  548. /package/dist/{chunk-TFR7DSOV.js.map → chunk-MVZ2TPVP.js.map} +0 -0
  549. /package/dist/{chunk-K23VKTN4.js.map → chunk-N5DNADLQ.js.map} +0 -0
  550. /package/dist/{chunk-RSGLUIO6.js.map → chunk-NNARWO72.js.map} +0 -0
  551. /package/dist/{chunk-6YXCPL4T.js.map → chunk-PDCG6PR5.js.map} +0 -0
  552. /package/dist/{chunk-ACAQ2DSG.js.map → chunk-PSIV7CJV.js.map} +0 -0
  553. /package/dist/{chunk-G73UVHCA.js.map → chunk-QWFHIOD2.js.map} +0 -0
  554. /package/dist/{chunk-AYX7AINO.js.map → chunk-QWGU66MP.js.map} +0 -0
  555. /package/dist/{chunk-3BVH633C.js.map → chunk-S57HTZ6X.js.map} +0 -0
  556. /package/dist/{chunk-SZJ3DLZA.js.map → chunk-SEE332EV.js.map} +0 -0
  557. /package/dist/{chunk-YYP7WSEB.js.map → chunk-SI3V7D4G.js.map} +0 -0
  558. /package/dist/{chunk-UGTBXF5U.js.map → chunk-SOIQ4MM4.js.map} +0 -0
  559. /package/dist/{chunk-4GFX6MPA.js.map → chunk-SYVZW77S.js.map} +0 -0
  560. /package/dist/{chunk-MVMXZYXT.js.map → chunk-TKUOEU2F.js.map} +0 -0
  561. /package/dist/{chunk-SMH6SRX7.js.map → chunk-TROR3ALR.js.map} +0 -0
  562. /package/dist/{chunk-HPVZCW43.js.map → chunk-UYB234ZR.js.map} +0 -0
  563. /package/dist/{chunk-DGOZ4UZD.js.map → chunk-VNNRUGMM.js.map} +0 -0
  564. /package/dist/{chunk-F3W6YMDC.js.map → chunk-VNPEWFPD.js.map} +0 -0
  565. /package/dist/{chunk-JVIBCBC7.js.map → chunk-WNJ4AVGE.js.map} +0 -0
  566. /package/dist/{chunk-ZHKOPKE3.js.map → chunk-WX5ADGTZ.js.map} +0 -0
  567. /package/dist/{chunk-Q7HZX3IF.js.map → chunk-X4773RBR.js.map} +0 -0
  568. /package/dist/{chunk-A2HKRLPV.js.map → chunk-YNIUIERI.js.map} +0 -0
  569. /package/dist/{chunk-BZ3534YM.js.map → chunk-ZUVBC32X.js.map} +0 -0
  570. /package/dist/{chunk-V7ZRRCRJ.js.map → chunk-ZXABPVM6.js.map} +0 -0
  571. /package/dist/{classified-marker-BWOFVYAC.js.map → classified-marker-W3USLL5M.js.map} +0 -0
  572. /package/dist/{computed-VPOKQK4N.js.map → collection-facade-QU6IJBN3.js.map} +0 -0
  573. /package/dist/{derive-E642AOUB.js.map → computed-TPFBX7U4.js.map} +0 -0
  574. /package/dist/{dead-filter-PKQDLOT4.js.map → dead-filter-U2UYKSZL.js.map} +0 -0
  575. /package/dist/{delegation-DS5NRILW.js.map → delegation-S3AEPW2T.js.map} +0 -0
  576. /package/dist/{enclave-55PAM4YO.js.map → derive-OX7F6TGG.js.map} +0 -0
  577. /package/dist/{dispatch-IEPAVQUM.js.map → dispatch-3CQDJV5Q.js.map} +0 -0
  578. /package/dist/{dispatch-Q6MWLOJY.js.map → dispatch-RH4LHKBH.js.map} +0 -0
  579. /package/dist/{executor-5NIMLSKZ.js.map → enclave-27SMF6GF.js.map} +0 -0
  580. /package/dist/{executor-7UQ3BZ4F.js.map → executor-B6SRO2QS.js.map} +0 -0
  581. /package/dist/{executor-AQVXV5GZ.js.map → executor-BI5CHWRY.js.map} +0 -0
  582. /package/dist/{export-accessible-ORMKLA3E.js.map → executor-RBKM5W5K.js.map} +0 -0
  583. /package/dist/{extract-partition-NKYO3WNG.js.map → export-accessible-VMA3YM5V.js.map} +0 -0
  584. /package/dist/{find-NOGJ25VX.js.map → extract-partition-NF7PXGPP.js.map} +0 -0
  585. /package/dist/{fanout-sidecar-S3QL53YX.js.map → fanout-sidecar-OT6RYLOL.js.map} +0 -0
  586. /package/dist/{issue-3DTQ7VJJ.js.map → find-LZMP26KF.js.map} +0 -0
  587. /package/dist/{ledger-EDXFFZQL.js.map → issue-IHARXWW5.js.map} +0 -0
  588. /package/dist/{liberate-V35QUHJP.js.map → ledger-KZPCMVZY.js.map} +0 -0
  589. /package/dist/{link-set-2TTM3IZC.js.map → liberate-GRLCZMW4.js.map} +0 -0
  590. /package/dist/{managed-secret-NCWEMPUQ.js.map → link-set-JCMJ7ULP.js.map} +0 -0
  591. /package/dist/{noydb-62MX4QUG.js.map → managed-secret-S3MQ6SH6.js.map} +0 -0
  592. /package/dist/{migrate-cek-5ENH64AA.js.map → migrate-cek-V7GKJZ7O.js.map} +0 -0
  593. /package/dist/{register-HHLXEQDN.js.map → noydb-SWQJ3MZS.js.map} +0 -0
  594. /package/dist/{pod-handle-ECVCDIXW.js.map → pod-handle-WGDFB4C2.js.map} +0 -0
  595. /package/dist/{post-register-3IPCSG6Q.js.map → post-register-SLSXIPBV.js.map} +0 -0
  596. /package/dist/{registry-23WF3TGH.js.map → query/all/index.js.map} +0 -0
  597. /package/dist/{registry-4AYVUNXK.js.map → register-F3OYE7MJ.js.map} +0 -0
  598. /package/dist/{registry-JS3YFQQM.js.map → registry-CILQFXFK.js.map} +0 -0
  599. /package/dist/{registry-XX2Z7B46.js.map → registry-XNNYQVKV.js.map} +0 -0
  600. /package/dist/{request-withdrawal-CHPATE4G.js.map → registry-YCDZV3VW.js.map} +0 -0
  601. /package/dist/{revoke-7M2VW4ON.js.map → registry-ZGYS33TE.js.map} +0 -0
  602. /package/dist/{signer-SJQJVSM6.js.map → request-withdrawal-Z5NC6TXT.js.map} +0 -0
  603. /package/dist/{reveal-QZDHSGD4.js.map → reveal-4BCKPEC2.js.map} +0 -0
  604. /package/dist/{stale-BZS6H2RY.js.map → revoke-ZL62WC2D.js.map} +0 -0
  605. /package/dist/{seed-X5CC22CQ.js.map → seed-4JS2RJ4A.js.map} +0 -0
  606. /package/dist/{storage-RW4QBS23.js.map → signer-MBZZMXTC.js.map} +0 -0
  607. /package/dist/{walk-ZURCH6RZ.js.map → stale-TJ3DYZMQ.js.map} +0 -0
  608. /package/dist/{withdraw-accessible-PXR4IXDX.js.map → storage-SVMKRGCW.js.map} +0 -0
  609. /package/dist/{store-coordination-provider-4WZAIRHC.js.map → store-coordination-provider-2O2VUHKW.js.map} +0 -0
  610. /package/dist/{verify-6MDTIUEV.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';
@@ -497,7 +497,7 @@ export interface ListUsersOptions {
497
497
  * strong as the role the calling layer passes in. The hub-level wrapper
498
498
  * on `Vault` sources `callerRole` from the unlocked keyring's `role`
499
499
  * field, which is signed-by-construction (it lives in the user's own
500
- * 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` →
501
501
  * "Directory visibility".
502
502
  *
503
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. */
@@ -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
@@ -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). */
@@ -46,6 +46,16 @@ export interface FieldDescriptor {
46
46
  readonly optional?: boolean;
47
47
  /** Foreign-key target as `<collection>.<field>` when declared. */
48
48
  readonly references?: string;
49
+ /**
50
+ * Read-shape sensitivity, declared as `FieldMeta.bulk` (#1363). Present only
51
+ * when the collection is live in this process (the declaration lives in the
52
+ * `fieldMeta` channel, which is not persisted with the schema).
53
+ *
54
+ * ⚠️ Telemetry, never a control: it tells a coverage sensor which
55
+ * collections have a corpus worth accounting for. Against an insider holding
56
+ * the device and local keys it prevents nothing — key custody does.
57
+ */
58
+ readonly bulk?: 'sensitive';
49
59
  }
50
60
  export interface CollectionStats {
51
61
  readonly records: number;
@@ -113,6 +123,23 @@ export interface CollectionDescriptor {
113
123
  readonly stats?: CollectionStats;
114
124
  readonly meta?: CollectionMeta;
115
125
  readonly config?: CollectionConfig;
126
+ /**
127
+ * #1447 — fields the datastore itself computes or resolves, as
128
+ * `field → the via brands covering it` (`money`, `computed`, `i18n`,
129
+ * `lookup`, `geo`, `classified`, `blob`). Absent when the collection
130
+ * declares no via pipeline.
131
+ *
132
+ * Exists so a consumer can gate documentation against what the vault
133
+ * actually enforces. The reported case: a rulebook described three
134
+ * vault-computed fields as app-owned — the UNDERSTATING direction, which is
135
+ * silent, because it produces app-side reimplementation of a guarantee that
136
+ * already exists rather than a missing behaviour someone trips over.
137
+ *
138
+ * ⛔ Brand and field only. A binding's CONFIGURATION is deliberately absent:
139
+ * a dump saying "this field is classified, sensitivity pii" is a map of the
140
+ * columns worth attacking, in an artefact that by design leaves the vault.
141
+ */
142
+ readonly via?: Record<string, readonly string[]>;
116
143
  }
117
144
  export interface MaterializedViewDescriptor {
118
145
  readonly sources: ReadonlyArray<string>;
@@ -134,8 +161,37 @@ export interface InternalCollectionStats {
134
161
  readonly records: number;
135
162
  readonly bytes: number;
136
163
  }
164
+ /**
165
+ * A report section `dumpSchema()` is capable of emitting (#1447).
166
+ *
167
+ * ⛔ CAPABILITY OF THE EMITTER, NEVER CONTENT OF THIS DUMP. `reports` lists
168
+ * what this hub *would* have reported, not what it found — a vault that
169
+ * genuinely declares no via fields still lists `'via'`.
170
+ *
171
+ * That distinction is the entire point. A content-based list reintroduces the
172
+ * ambiguity it exists to remove: a consumer could not tell "no via fields
173
+ * here" from "this hub cannot report them", which is exactly how a
174
+ * documentation gate switching to the live report passes VACUOUSLY on a hub
175
+ * too old to answer. Measured by a consumer attempting that adoption.
176
+ */
177
+ export type SnapshotReport = 'via' | 'stats';
137
178
  export interface VaultSchemaSnapshot {
138
- readonly _noydb_snapshot: 1;
179
+ readonly _noydb_snapshot: 2;
180
+ /**
181
+ * Which report sections this snapshot's emitter can produce (#1447).
182
+ *
183
+ * Check this before concluding anything from an ABSENT section:
184
+ *
185
+ * ```ts
186
+ * if (!snap.reports.includes('via')) throw new Error('hub cannot report via')
187
+ * // only now is a missing `via` key evidence that a collection declares none
188
+ * ```
189
+ *
190
+ * Required, and required deliberately: an optional field would leave
191
+ * `undefined` meaning "old emitter", which is the same ambiguity one level up.
192
+ * Every snapshot states what it can say.
193
+ */
194
+ readonly reports: readonly SnapshotReport[];
139
195
  readonly vault: string;
140
196
  readonly emittedAt: string;
141
197
  readonly subsystems: Record<string, boolean>;
@@ -16,7 +16,7 @@
16
16
  */
17
17
  import { type RefDescriptor, type RefViolation, type RefRegistry } from '../../kernel/refs.js';
18
18
  import { type LinkSpec, type LinkSetHandle } from './names.js';
19
- import type { JoinableSource } from '../../kernel/query/index.js';
19
+ import type { JoinableSource } from '../../kernel/query/relate/join.js';
20
20
  import type { Collection } from '../../kernel/collection.js';
21
21
  import type { NoydbStore } from '../../kernel/types.js';
22
22
  import type { TxContext } from '../../with-commit/tx/transaction.js';