@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
@@ -0,0 +1,306 @@
1
+ import {
2
+ NO_COVERAGE
3
+ } from "../chunk-RHVMZSUU.js";
4
+
5
+ // src/with-audit/coverage/sketch.ts
6
+ function fnv1a(s, seed = 2166136261) {
7
+ let h = seed >>> 0;
8
+ for (let i = 0; i < s.length; i++) {
9
+ h ^= s.charCodeAt(i);
10
+ h = Math.imul(h, 16777619) >>> 0;
11
+ }
12
+ h ^= h >>> 16;
13
+ h = Math.imul(h, 2246822507) >>> 0;
14
+ h ^= h >>> 13;
15
+ h = Math.imul(h, 3266489909) >>> 0;
16
+ h ^= h >>> 16;
17
+ return h >>> 0;
18
+ }
19
+ var HyperLogLog = class _HyperLogLog {
20
+ precision;
21
+ registers;
22
+ constructor(precision = 14) {
23
+ if (!Number.isInteger(precision) || precision < 4 || precision > 16) {
24
+ throw new RangeError(`HyperLogLog precision must be an integer in [4,16], got ${precision}`);
25
+ }
26
+ this.precision = precision;
27
+ this.registers = new Uint8Array(1 << precision);
28
+ }
29
+ add(id) {
30
+ const h = fnv1a(id);
31
+ const idx = h >>> 32 - this.precision;
32
+ const rest = h << this.precision >>> 0;
33
+ const rank = rest === 0 ? 32 - this.precision + 1 : Math.clz32(rest) + 1;
34
+ if (rank > this.registers[idx]) this.registers[idx] = rank;
35
+ }
36
+ /** Estimated distinct count. */
37
+ count() {
38
+ const m = this.registers.length;
39
+ let zeros = 0;
40
+ let sum = 0;
41
+ for (let i = 0; i < m; i++) {
42
+ const r = this.registers[i];
43
+ if (r === 0) zeros++;
44
+ sum += 2 ** -r;
45
+ }
46
+ const alpha = m === 16 ? 0.673 : m === 32 ? 0.697 : m === 64 ? 0.709 : 0.7213 / (1 + 1.079 / m);
47
+ const raw = alpha * m * m / sum;
48
+ if (raw <= 2.5 * m && zeros > 0) return Math.round(m * Math.log(m / zeros));
49
+ return Math.round(raw);
50
+ }
51
+ /** Serializable state — registers only. No id, no id-derived key. */
52
+ toJSON() {
53
+ let bin = "";
54
+ for (const b of this.registers) bin += String.fromCharCode(b);
55
+ return { p: this.precision, r: btoa(bin) };
56
+ }
57
+ static fromJSON(state) {
58
+ const hll = new _HyperLogLog(state.p);
59
+ const bin = atob(state.r);
60
+ for (let i = 0; i < hll.registers.length && i < bin.length; i++) {
61
+ hll.registers[i] = bin.charCodeAt(i);
62
+ }
63
+ return hll;
64
+ }
65
+ };
66
+ var BloomFilter = class {
67
+ bits;
68
+ hashes;
69
+ words;
70
+ constructor(bits = 1 << 14, hashes = 7) {
71
+ if (!Number.isInteger(bits) || bits < 64) throw new RangeError(`Bloom bits must be >= 64, got ${bits}`);
72
+ if (!Number.isInteger(hashes) || hashes < 1 || hashes > 16) {
73
+ throw new RangeError(`Bloom hashes must be in [1,16], got ${hashes}`);
74
+ }
75
+ this.bits = bits;
76
+ this.hashes = hashes;
77
+ this.words = new Uint32Array(Math.ceil(bits / 32));
78
+ }
79
+ /** Set the id's bits; returns true when the id was NOT already present. */
80
+ addIfAbsent(id) {
81
+ const h1 = fnv1a(id);
82
+ const h2 = fnv1a(id, 2654435761) | 1;
83
+ let novel = false;
84
+ for (let i = 0; i < this.hashes; i++) {
85
+ const bit = h1 + Math.imul(i, h2) >>> 0;
86
+ const pos = bit % this.bits;
87
+ const w = pos >>> 5;
88
+ const mask = 1 << (pos & 31);
89
+ if ((this.words[w] & mask) === 0) {
90
+ this.words[w] = this.words[w] | mask;
91
+ novel = true;
92
+ }
93
+ }
94
+ return novel;
95
+ }
96
+ clear() {
97
+ this.words.fill(0);
98
+ }
99
+ };
100
+
101
+ // src/with-audit/coverage/accounting.ts
102
+ var DEFAULT_ALERT_AT = [0.6, 0.9];
103
+ var HOUR_MS = 36e5;
104
+ var Account = class {
105
+ constructor(principal, vault, collection, opts) {
106
+ this.principal = principal;
107
+ this.vault = vault;
108
+ this.collection = collection;
109
+ this.hll = new HyperLogLog(opts.precision);
110
+ this.bloom = new BloomFilter(opts.bloomBits, opts.bloomHashes);
111
+ this.windowStart = opts.now;
112
+ }
113
+ principal;
114
+ vault;
115
+ collection;
116
+ hll;
117
+ bloom;
118
+ served = 0;
119
+ servedInWindow = 0;
120
+ novelInWindow = 0;
121
+ windowStart;
122
+ /** Running mean of previous windows' served counts, for burstiness. */
123
+ servedMean = 0;
124
+ windowsClosed = 0;
125
+ fired = /* @__PURE__ */ new Set();
126
+ };
127
+ var CoverageRegistry = class {
128
+ #accounts = /* @__PURE__ */ new Map();
129
+ #precision;
130
+ #bloomBits;
131
+ #bloomHashes;
132
+ #windowMs;
133
+ #collections;
134
+ #now;
135
+ #warnedEager = /* @__PURE__ */ new Set();
136
+ constructor(opts = {}) {
137
+ this.#precision = opts.precision ?? 14;
138
+ this.#bloomBits = opts.bloomBits ?? 1 << 14;
139
+ this.#bloomHashes = opts.bloomHashes ?? 7;
140
+ this.#windowMs = opts.windowMs ?? HOUR_MS;
141
+ this.#collections = opts.collections ?? {};
142
+ this.#now = opts.now ?? (() => Date.now());
143
+ if (this.#windowMs <= 0) throw new RangeError(`windowMs must be > 0, got ${this.#windowMs}`);
144
+ }
145
+ observer(vault, collection, principal, fieldMeta, emitter, eager) {
146
+ let accounted;
147
+ return (id) => {
148
+ accounted ??= this.#resolveAccounted(collection, fieldMeta(), eager);
149
+ if (!accounted) return;
150
+ this.#record(principal, vault, collection, id, emitter);
151
+ };
152
+ }
153
+ /**
154
+ * ⛔⛔ THE MEASUREMENT THAT DECIDES WHETHER THIS SENSOR SAYS ANYTHING TRUE.
155
+ *
156
+ * The design's unit is "the record decrypt". In hub that is only the same
157
+ * thing as "the record was read" for a LAZY collection (`prefetch: false`),
158
+ * where reads go per-id against the store. An EAGER collection — the default
159
+ * — decrypts its entire corpus once, at hydration, into the working set:
160
+ * measured on a 30-record collection, one `get()` after reopening the vault
161
+ * took the sensor from 0 to `coverage: 1`. Every principal who so much as
162
+ * opens the vault would trip every threshold.
163
+ *
164
+ * A sensor that reports total coverage for everyone is worse than no sensor:
165
+ * it is exactly the "invites reliance" failure this feature is supposed to
166
+ * be honest about. So an eager bulk-declared collection is NOT accounted,
167
+ * and the refusal is LOUD — silence here would look identical to "nobody has
168
+ * read anything", which is the most dangerous possible false negative.
169
+ *
170
+ * The codec cannot tell hydration from a read (it sees neither caller nor
171
+ * intent), so this cannot be fixed inside the sensor. Declaring the
172
+ * collection lazy is the fix, and the warning says so.
173
+ */
174
+ #resolveAccounted(collection, fieldMeta, eager) {
175
+ const declared = this.#collections[collection] !== void 0 || declaresBulk(fieldMeta);
176
+ if (!declared) return false;
177
+ if (!eager) return true;
178
+ if (!this.#warnedEager.has(collection)) {
179
+ this.#warnedEager.add(collection);
180
+ console.warn(
181
+ `[noy-db] withCoverage(): collection "${collection}" is bulk-declared but EAGER, so it is NOT accounted. An eager collection decrypts its whole corpus at hydration, which would read as 100% coverage for every principal that opens the vault. Declare it \`prefetch: false\` (with a \`cache\` budget) to make its reads countable. Coverage is telemetry either way \u2014 the remediation for bulk exposure is key custody (tiers, per-collection DEKs).`
182
+ );
183
+ }
184
+ return false;
185
+ }
186
+ #account(principal, vault, collection, now) {
187
+ const k = JSON.stringify([principal, vault, collection]);
188
+ let acc = this.#accounts.get(k);
189
+ if (acc === void 0) {
190
+ acc = new Account(principal, vault, collection, {
191
+ precision: this.#precision,
192
+ bloomBits: this.#bloomBits,
193
+ bloomHashes: this.#bloomHashes,
194
+ now
195
+ });
196
+ this.#accounts.set(k, acc);
197
+ }
198
+ return acc;
199
+ }
200
+ #record(principal, vault, collection, id, emitter) {
201
+ const now = this.#now();
202
+ const acc = this.#account(principal, vault, collection, now);
203
+ if (now - acc.windowStart >= this.#windowMs) {
204
+ acc.servedMean = acc.windowsClosed === 0 ? acc.servedInWindow : (acc.servedMean * acc.windowsClosed + acc.servedInWindow) / (acc.windowsClosed + 1);
205
+ acc.windowsClosed++;
206
+ acc.bloom.clear();
207
+ acc.servedInWindow = 0;
208
+ acc.novelInWindow = 0;
209
+ acc.windowStart = now;
210
+ }
211
+ acc.hll.add(id);
212
+ if (acc.bloom.addIfAbsent(id)) acc.novelInWindow++;
213
+ acc.served++;
214
+ acc.servedInWindow++;
215
+ const policy = this.#collections[collection];
216
+ const corpusSize = policy?.corpusSize;
217
+ if (corpusSize === void 0 || corpusSize <= 0) return;
218
+ const coverage = Math.min(1, acc.hll.count() / corpusSize);
219
+ for (const t of policy?.alertAt ?? DEFAULT_ALERT_AT) {
220
+ if (coverage < t || acc.fired.has(t)) continue;
221
+ acc.fired.add(t);
222
+ const event = {
223
+ principal,
224
+ vault,
225
+ collection,
226
+ novel: acc.novelInWindow,
227
+ served: acc.served,
228
+ coverage,
229
+ window: new Date(acc.windowStart).toISOString(),
230
+ source: "hub/coverage"
231
+ };
232
+ emitter.emit("coverage:threshold", event);
233
+ }
234
+ }
235
+ /** Current accounting, for an operator surface. Estimates, never exact. */
236
+ stats() {
237
+ const out = [];
238
+ for (const acc of this.#accounts.values()) {
239
+ const corpusSize = this.#collections[acc.collection]?.corpusSize;
240
+ const distinct = acc.hll.count();
241
+ out.push({
242
+ principal: acc.principal,
243
+ vault: acc.vault,
244
+ collection: acc.collection,
245
+ distinct,
246
+ served: acc.served,
247
+ novelInWindow: acc.novelInWindow,
248
+ servedInWindow: acc.servedInWindow,
249
+ burstiness: acc.servedMean > 0 ? acc.servedInWindow / acc.servedMean : 1,
250
+ ...corpusSize !== void 0 && corpusSize > 0 ? { coverage: Math.min(1, distinct / corpusSize) } : {},
251
+ window: new Date(acc.windowStart).toISOString()
252
+ });
253
+ }
254
+ return out;
255
+ }
256
+ /**
257
+ * Serializable state, for a deployment that wants coverage to survive a
258
+ * restart — the horizon must exceed tenure, and a process does not.
259
+ * ⛔ Sketches only. Never a record id: see {@link CoverageSnapshot}.
260
+ */
261
+ snapshot() {
262
+ const entries = [];
263
+ for (const acc of this.#accounts.values()) {
264
+ entries.push({
265
+ principal: acc.principal,
266
+ vault: acc.vault,
267
+ collection: acc.collection,
268
+ hll: acc.hll.toJSON(),
269
+ served: acc.served,
270
+ windowStart: acc.windowStart
271
+ });
272
+ }
273
+ return { _noydb_coverage: 1, entries };
274
+ }
275
+ /**
276
+ * Restore a snapshot. The novelty filter is deliberately NOT restored:
277
+ * novelty is a within-window notion and the window did not survive.
278
+ * Distinct-ever did, which is the quantity that must not reset.
279
+ */
280
+ restore(snapshot) {
281
+ for (const e of snapshot.entries) {
282
+ const acc = this.#account(e.principal, e.vault, e.collection, e.windowStart);
283
+ acc.hll = HyperLogLog.fromJSON(e.hll);
284
+ acc.served = e.served;
285
+ acc.windowStart = e.windowStart;
286
+ }
287
+ }
288
+ };
289
+ function declaresBulk(fieldMeta) {
290
+ if (fieldMeta === void 0) return false;
291
+ for (const meta of Object.values(fieldMeta)) if (meta?.bulk === "sensitive") return true;
292
+ return false;
293
+ }
294
+
295
+ // src/with-audit/coverage/active.ts
296
+ function withCoverage(opts = {}) {
297
+ return new CoverageRegistry(opts);
298
+ }
299
+ export {
300
+ BloomFilter,
301
+ CoverageRegistry,
302
+ HyperLogLog,
303
+ NO_COVERAGE,
304
+ withCoverage
305
+ };
306
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/with-audit/coverage/sketch.ts","../../src/with-audit/coverage/accounting.ts","../../src/with-audit/coverage/active.ts"],"sourcesContent":["/**\n * Bounded-size sketches for the coverage sensor (#1363).\n *\n * ⚠️ THE WHOLE POINT OF A SKETCH HERE IS WHAT IT CANNOT DO. Coverage state\n * answers *\"how much of this corpus has this principal seen\"*, and the exact\n * answer — the id set — is a SECOND COPY OF THE SENSITIVE SET. A sensor built\n * to notice bulk extraction would then be the best single artefact to extract.\n * So no structure in this module retains a record id, and none can be\n * enumerated back into one: HyperLogLog keeps per-register leading-zero ranks,\n * Bloom keeps bits. Both are lossy on purpose, and the accuracy that costs is\n * the price of the property (`no-record-ids.test.ts` pins it).\n *\n * @module\n */\n\n/** 32-bit FNV-1a. Not cryptographic — a sketch only needs good dispersion. */\nfunction fnv1a(s: string, seed = 0x811c9dc5): number {\n let h = seed >>> 0\n for (let i = 0; i < s.length; i++) {\n h ^= s.charCodeAt(i)\n h = Math.imul(h, 0x01000193) >>> 0\n }\n // Final avalanche (murmur3 fmix32) — FNV alone disperses low bits poorly,\n // and HLL reads the TOP bits for the register index.\n h ^= h >>> 16\n h = Math.imul(h, 0x85ebca6b) >>> 0\n h ^= h >>> 13\n h = Math.imul(h, 0xc2b2ae35) >>> 0\n h ^= h >>> 16\n return h >>> 0\n}\n\n// ─── HyperLogLog — distinct ids ever decrypted ────────────────────────────\n\n/**\n * HyperLogLog over `2^precision` one-byte registers.\n *\n * ⭐ SIZING IS THE OPEN QUESTION THIS FEATURE SHIPS WITH, not a settled\n * default. At the scale the design anticipates (~1k records, ~30 principals)\n * the estimator runs entirely in its LINEAR-COUNTING range, where accuracy is\n * a function of load factor rather than of HLL's asymptotic 1.04/√m. So the\n * default is chosen by MEASUREMENT, not theory — `__tests__/coverage/sketch.test.ts`\n * pins the error band this implementation actually produces:\n *\n * | distinct ids | p=10 (1 KiB) | p=12 (4 KiB) | **p=14 (16 KiB, default)** |\n * |---:|---:|---:|---:|\n * | 100 | 3.00% | 1.00% | **0.00%** |\n * | 1 000 | 2.90% | 0.50% | **0.40%** |\n * | 10 000 | 2.34% | 5.62% | **0.96%** |\n * | 50 000 | 2.31% | 1.70% | **1.52%** |\n *\n * (p=12's 5.62% at 10 000 is the linear-counting/raw-estimator crossover, and\n * is exactly why the default is not chosen from the memory column.)\n * 16 KiB is per `(principal, vault, collection)` — a ~30-principal deployment\n * with a handful of bulk-declared collections stays in the low megabytes.\n * `precision` is configurable for a deployment whose corpus is a different\n * order of magnitude.\n *\n * ⛔ An exact per-collection bitmap would be smaller AND exact at that scale.\n * It is not shipped because it leaks ids: bit *i* set means \"record *i* was\n * read\", which is the second copy this module exists to avoid. Revisit only\n * against a real dataset, and only with that trade stated.\n */\nexport class HyperLogLog {\n readonly precision: number\n private readonly registers: Uint8Array\n\n constructor(precision = 14) {\n if (!Number.isInteger(precision) || precision < 4 || precision > 16) {\n throw new RangeError(`HyperLogLog precision must be an integer in [4,16], got ${precision}`)\n }\n this.precision = precision\n this.registers = new Uint8Array(1 << precision)\n }\n\n add(id: string): void {\n const h = fnv1a(id)\n const idx = h >>> (32 - this.precision)\n // Rank = 1 + leading zeros of the remaining bits (bounded by the width).\n const rest = (h << this.precision) >>> 0\n const rank = rest === 0 ? 32 - this.precision + 1 : Math.clz32(rest) + 1\n if (rank > this.registers[idx]!) this.registers[idx] = rank\n }\n\n /** Estimated distinct count. */\n count(): number {\n const m = this.registers.length\n let zeros = 0\n let sum = 0\n for (let i = 0; i < m; i++) {\n const r = this.registers[i]!\n if (r === 0) zeros++\n sum += 2 ** -r\n }\n const alpha = m === 16 ? 0.673 : m === 32 ? 0.697 : m === 64 ? 0.709 : 0.7213 / (1 + 1.079 / m)\n const raw = (alpha * m * m) / sum\n // Small-range correction: linear counting, which is where a ~1k corpus\n // lives. This is the branch the pilot's scale actually exercises.\n if (raw <= 2.5 * m && zeros > 0) return Math.round(m * Math.log(m / zeros))\n return Math.round(raw)\n }\n\n /** Serializable state — registers only. No id, no id-derived key. */\n toJSON(): { readonly p: number; readonly r: string } {\n let bin = ''\n for (const b of this.registers) bin += String.fromCharCode(b)\n return { p: this.precision, r: btoa(bin) }\n }\n\n static fromJSON(state: { readonly p: number; readonly r: string }): HyperLogLog {\n const hll = new HyperLogLog(state.p)\n const bin = atob(state.r)\n for (let i = 0; i < hll.registers.length && i < bin.length; i++) {\n hll.registers[i] = bin.charCodeAt(i)\n }\n return hll\n }\n}\n\n// ─── Bloom — novelty within one window ────────────────────────────────────\n\n/**\n * Bloom filter for *novelty per window* — \"have I seen this id in this\n * window?\". False positives under-report novelty (a novel read is scored as a\n * repeat), which is the safe direction for a sensor that must not cry wolf;\n * false negatives are impossible.\n */\nexport class BloomFilter {\n readonly bits: number\n readonly hashes: number\n private readonly words: Uint32Array\n\n constructor(bits = 1 << 14, hashes = 7) {\n if (!Number.isInteger(bits) || bits < 64) throw new RangeError(`Bloom bits must be >= 64, got ${bits}`)\n if (!Number.isInteger(hashes) || hashes < 1 || hashes > 16) {\n throw new RangeError(`Bloom hashes must be in [1,16], got ${hashes}`)\n }\n this.bits = bits\n this.hashes = hashes\n this.words = new Uint32Array(Math.ceil(bits / 32))\n }\n\n /** Set the id's bits; returns true when the id was NOT already present. */\n addIfAbsent(id: string): boolean {\n const h1 = fnv1a(id)\n const h2 = fnv1a(id, 0x9e3779b1) | 1\n let novel = false\n for (let i = 0; i < this.hashes; i++) {\n const bit = (h1 + Math.imul(i, h2)) >>> 0\n const pos = bit % this.bits\n const w = pos >>> 5\n const mask = 1 << (pos & 31)\n if ((this.words[w]! & mask) === 0) {\n this.words[w] = this.words[w]! | mask\n novel = true\n }\n }\n return novel\n }\n\n clear(): void {\n this.words.fill(0)\n }\n}\n","/**\n * Coverage accounting (#1363) — per `(principal, vault, collection)`.\n *\n * ⛔⛔ **TELEMETRY, NOT A CONTROL.** Against an insider holding the device and\n * local keys this prevents nothing; it makes bulk extraction visible early,\n * attributable and loud. Key custody (tiers, per-collection DEKs) is the\n * remediation. Nothing in this module refuses a read, and nothing in it may\n * ever grow the ability to (#1251 §3: a refusal is a threshold the reader can\n * binary-search; a signal is not).\n *\n * What is accounted, and why each one:\n *\n * - **distinct ids ever decrypted** (HyperLogLog) — coverage is the protected\n * quantity, not rate: patience lowers an extractor's rate and never their\n * coverage. Monotonic, and the horizon is the life of the state, never a\n * 30-day window that resets faster than the attack completes.\n * - **novelty per window** (Bloom, cleared per window) — the discriminator\n * that is orthogonal to speed. A legitimate operator re-reads a working\n * subset (high volume, low novelty); an extractor reads new records.\n * - **served** — decrypts, all time and per window.\n * - **burstiness** — this window's served count over the running mean of the\n * previous windows'. 1 while there is no history to compare against.\n *\n * @module\n */\n\nimport { BloomFilter, HyperLogLog } from './sketch.js'\nimport type {\n CoverageEmitter,\n CoverageEvent,\n CoverageFieldMeta,\n CoverageObserver,\n CoverageStrategy,\n} from '../../port/with/coverage-strategy.js'\n\n/** Per-collection policy. Absent `corpusSize` ⇒ no coverage estimate, so no alert. */\nexport interface CoverageCollectionPolicy {\n /**\n * How many records the corpus holds. Coverage is `distinct / corpusSize`.\n * Deliberately DECLARED rather than counted: counting means a store read on\n * a sensor that must not touch the store, and a corpus size that moves with\n * every write makes an alert threshold un-reproducible.\n */\n readonly corpusSize?: number\n /** Coverage fractions to alert at. Default `[0.6, 0.9]`. Each fires at most once. */\n readonly alertAt?: readonly number[]\n}\n\nexport interface WithCoverageOptions {\n /**\n * HyperLogLog precision — the register file is `2^precision` bytes per\n * `(principal, vault, collection)`. Default 14 (16 KiB), chosen by\n * measurement; the table is in `sketch.ts`.\n */\n readonly precision?: number\n /** Bloom width in bits, per key, per window. Default 16 384 (2 KiB). */\n readonly bloomBits?: number\n /** Bloom hash count. Default 7. */\n readonly bloomHashes?: number\n /** Novelty window length. Default one hour. NOT the coverage horizon — that never resets. */\n readonly windowMs?: number\n /** Per-collection corpus size and alert thresholds. */\n readonly collections?: Readonly<Record<string, CoverageCollectionPolicy>>\n /** Clock seam, for tests. */\n readonly now?: () => number\n}\n\nexport interface CoverageStats {\n readonly principal: string\n readonly vault: string\n readonly collection: string\n /** HLL estimate of distinct ids ever decrypted. */\n readonly distinct: number\n readonly served: number\n readonly novelInWindow: number\n readonly servedInWindow: number\n readonly burstiness: number\n /** Absent when the collection declares no `corpusSize`. */\n readonly coverage?: number\n readonly window: string\n}\n\n/**\n * Serializable coverage state.\n *\n * ⛔ SKETCHES ONLY — the invariant this module exists to hold. A structure\n * that could name the records a principal has read would be a second copy of\n * the sensitive set: the sensor built to notice bulk extraction would become\n * the single best artefact to extract. Pinned by\n * `__tests__/coverage/no-record-ids.test.ts`.\n */\nexport interface CoverageSnapshot {\n readonly _noydb_coverage: 1\n readonly entries: ReadonlyArray<{\n readonly principal: string\n readonly vault: string\n readonly collection: string\n readonly hll: { readonly p: number; readonly r: string }\n readonly served: number\n readonly windowStart: number\n }>\n}\n\nconst DEFAULT_ALERT_AT = [0.6, 0.9] as const\nconst HOUR_MS = 3_600_000\n\nclass Account {\n hll: HyperLogLog\n readonly bloom: BloomFilter\n served = 0\n servedInWindow = 0\n novelInWindow = 0\n windowStart: number\n /** Running mean of previous windows' served counts, for burstiness. */\n servedMean = 0\n windowsClosed = 0\n readonly fired = new Set<number>()\n\n constructor(\n readonly principal: string,\n readonly vault: string,\n readonly collection: string,\n opts: { precision: number; bloomBits: number; bloomHashes: number; now: number },\n ) {\n this.hll = new HyperLogLog(opts.precision)\n this.bloom = new BloomFilter(opts.bloomBits, opts.bloomHashes)\n this.windowStart = opts.now\n }\n}\n\nexport class CoverageRegistry implements CoverageStrategy {\n readonly #accounts = new Map<string, Account>()\n readonly #precision: number\n readonly #bloomBits: number\n readonly #bloomHashes: number\n readonly #windowMs: number\n readonly #collections: Readonly<Record<string, CoverageCollectionPolicy>>\n readonly #now: () => number\n readonly #warnedEager = new Set<string>()\n\n constructor(opts: WithCoverageOptions = {}) {\n this.#precision = opts.precision ?? 14\n this.#bloomBits = opts.bloomBits ?? 1 << 14\n this.#bloomHashes = opts.bloomHashes ?? 7\n this.#windowMs = opts.windowMs ?? HOUR_MS\n this.#collections = opts.collections ?? {}\n this.#now = opts.now ?? (() => Date.now())\n if (this.#windowMs <= 0) throw new RangeError(`windowMs must be > 0, got ${this.#windowMs}`)\n }\n\n observer(\n vault: string,\n collection: string,\n principal: string,\n fieldMeta: () => CoverageFieldMeta | undefined,\n emitter: CoverageEmitter,\n eager: boolean,\n ): CoverageObserver | undefined {\n // Whether this collection is accounted resolves on the FIRST decrypt, not\n // here: `fieldMeta` can be attached to a Collection after construction\n // (`_applyFieldMeta`, first-wins) and this runs from the constructor. So\n // an opted-in deployment pays one boolean test per decrypt on the\n // collections it does not account for; an un-opted-in one pays nothing at\n // all, because NO_COVERAGE returns no observer.\n let accounted: boolean | undefined\n return (id: string): void => {\n accounted ??= this.#resolveAccounted(collection, fieldMeta(), eager)\n if (!accounted) return\n this.#record(principal, vault, collection, id, emitter)\n }\n }\n\n /**\n * ⛔⛔ THE MEASUREMENT THAT DECIDES WHETHER THIS SENSOR SAYS ANYTHING TRUE.\n *\n * The design's unit is \"the record decrypt\". In hub that is only the same\n * thing as \"the record was read\" for a LAZY collection (`prefetch: false`),\n * where reads go per-id against the store. An EAGER collection — the default\n * — decrypts its entire corpus once, at hydration, into the working set:\n * measured on a 30-record collection, one `get()` after reopening the vault\n * took the sensor from 0 to `coverage: 1`. Every principal who so much as\n * opens the vault would trip every threshold.\n *\n * A sensor that reports total coverage for everyone is worse than no sensor:\n * it is exactly the \"invites reliance\" failure this feature is supposed to\n * be honest about. So an eager bulk-declared collection is NOT accounted,\n * and the refusal is LOUD — silence here would look identical to \"nobody has\n * read anything\", which is the most dangerous possible false negative.\n *\n * The codec cannot tell hydration from a read (it sees neither caller nor\n * intent), so this cannot be fixed inside the sensor. Declaring the\n * collection lazy is the fix, and the warning says so.\n */\n #resolveAccounted(collection: string, fieldMeta: CoverageFieldMeta | undefined, eager: boolean): boolean {\n const declared = this.#collections[collection] !== undefined || declaresBulk(fieldMeta)\n if (!declared) return false\n if (!eager) return true\n if (!this.#warnedEager.has(collection)) {\n this.#warnedEager.add(collection)\n console.warn(\n `[noy-db] withCoverage(): collection \"${collection}\" is bulk-declared but EAGER, so it is NOT ` +\n `accounted. An eager collection decrypts its whole corpus at hydration, which would read as ` +\n `100% coverage for every principal that opens the vault. Declare it \\`prefetch: false\\` ` +\n `(with a \\`cache\\` budget) to make its reads countable. Coverage is telemetry either way — ` +\n `the remediation for bulk exposure is key custody (tiers, per-collection DEKs).`,\n )\n }\n return false\n }\n\n #account(principal: string, vault: string, collection: string, now: number): Account {\n const k = JSON.stringify([principal, vault, collection])\n let acc = this.#accounts.get(k)\n if (acc === undefined) {\n acc = new Account(principal, vault, collection, {\n precision: this.#precision,\n bloomBits: this.#bloomBits,\n bloomHashes: this.#bloomHashes,\n now,\n })\n this.#accounts.set(k, acc)\n }\n return acc\n }\n\n #record(principal: string, vault: string, collection: string, id: string, emitter: CoverageEmitter): void {\n const now = this.#now()\n const acc = this.#account(principal, vault, collection, now)\n\n if (now - acc.windowStart >= this.#windowMs) {\n // Close the window: fold its served count into the running mean, clear\n // the novelty filter. ⛔ The HLL is NOT cleared — the coverage horizon\n // must exceed tenure, and a horizon that resets is the low-and-slow hole\n // the whole reframe (#1251 §3) exists to close.\n acc.servedMean = acc.windowsClosed === 0\n ? acc.servedInWindow\n : (acc.servedMean * acc.windowsClosed + acc.servedInWindow) / (acc.windowsClosed + 1)\n acc.windowsClosed++\n acc.bloom.clear()\n acc.servedInWindow = 0\n acc.novelInWindow = 0\n acc.windowStart = now\n }\n\n // Unconditionally, before the novelty test: a Bloom false positive must not\n // leak into the distinct count, which is what an alert is computed from.\n acc.hll.add(id)\n if (acc.bloom.addIfAbsent(id)) acc.novelInWindow++\n acc.served++\n acc.servedInWindow++\n\n const policy = this.#collections[collection]\n const corpusSize = policy?.corpusSize\n if (corpusSize === undefined || corpusSize <= 0) return\n const coverage = Math.min(1, acc.hll.count() / corpusSize)\n for (const t of policy?.alertAt ?? DEFAULT_ALERT_AT) {\n if (coverage < t || acc.fired.has(t)) continue\n acc.fired.add(t)\n const event: CoverageEvent = {\n principal,\n vault,\n collection,\n novel: acc.novelInWindow,\n served: acc.served,\n coverage,\n window: new Date(acc.windowStart).toISOString(),\n source: 'hub/coverage',\n }\n emitter.emit('coverage:threshold', event)\n }\n }\n\n /** Current accounting, for an operator surface. Estimates, never exact. */\n stats(): readonly CoverageStats[] {\n const out: CoverageStats[] = []\n for (const acc of this.#accounts.values()) {\n const corpusSize = this.#collections[acc.collection]?.corpusSize\n const distinct = acc.hll.count()\n out.push({\n principal: acc.principal,\n vault: acc.vault,\n collection: acc.collection,\n distinct,\n served: acc.served,\n novelInWindow: acc.novelInWindow,\n servedInWindow: acc.servedInWindow,\n burstiness: acc.servedMean > 0 ? acc.servedInWindow / acc.servedMean : 1,\n ...(corpusSize !== undefined && corpusSize > 0\n ? { coverage: Math.min(1, distinct / corpusSize) }\n : {}),\n window: new Date(acc.windowStart).toISOString(),\n })\n }\n return out\n }\n\n /**\n * Serializable state, for a deployment that wants coverage to survive a\n * restart — the horizon must exceed tenure, and a process does not.\n * ⛔ Sketches only. Never a record id: see {@link CoverageSnapshot}.\n */\n snapshot(): CoverageSnapshot {\n const entries: Array<CoverageSnapshot['entries'][number]> = []\n for (const acc of this.#accounts.values()) {\n entries.push({\n principal: acc.principal,\n vault: acc.vault,\n collection: acc.collection,\n hll: acc.hll.toJSON(),\n served: acc.served,\n windowStart: acc.windowStart,\n })\n }\n return { _noydb_coverage: 1, entries }\n }\n\n /**\n * Restore a snapshot. The novelty filter is deliberately NOT restored:\n * novelty is a within-window notion and the window did not survive.\n * Distinct-ever did, which is the quantity that must not reset.\n */\n restore(snapshot: CoverageSnapshot): void {\n for (const e of snapshot.entries) {\n const acc = this.#account(e.principal, e.vault, e.collection, e.windowStart)\n acc.hll = HyperLogLog.fromJSON(e.hll)\n acc.served = e.served\n acc.windowStart = e.windowStart\n }\n }\n}\n\nfunction declaresBulk(fieldMeta: CoverageFieldMeta | undefined): boolean {\n if (fieldMeta === undefined) return false\n for (const meta of Object.values(fieldMeta)) if (meta?.bulk === 'sensitive') return true\n return false\n}\n","/**\n * `withCoverage()` — the opt-in read-coverage sensor (#1363).\n *\n * ⛔⛔ **Against an insider holding the device and local keys, this prevents\n * nothing. It makes bulk extraction visible early, attributable and loud. It\n * is telemetry.** The real remediation is key custody — tiers and\n * per-collection DEKs — and this factory is not a substitute for one. Read the\n * sentence again before wiring it into anything that describes itself as a\n * control.\n *\n * @module\n */\n\nimport { CoverageRegistry } from './accounting.js'\nimport type { WithCoverageOptions } from './accounting.js'\n\n/**\n * Enable coverage accounting for every collection that declares a\n * `bulk: 'sensitive'` field (or that is named in `opts.collections`).\n *\n * ```ts\n * const coverage = withCoverage({ collections: { clients: { corpusSize: 1200, alertAt: [0.6, 0.9] } } })\n * const db = await createNoydb({ user: 'alice', secret, coverageStrategy: coverage })\n * db.on('coverage:threshold', (e) => notifyOwner(e)) // a SIGNAL, never a refusal\n * ```\n *\n * The returned registry is the strategy AND the read surface: `stats()` for a\n * live view, `snapshot()`/`restore()` to carry the coverage horizon across a\n * restart. Nothing it returns can name a record that was read.\n */\nexport function withCoverage(opts: WithCoverageOptions = {}): CoverageRegistry {\n return new CoverageRegistry(opts)\n}\n"],"mappings":";;;;;AAgBA,SAAS,MAAM,GAAW,OAAO,YAAoB;AACnD,MAAI,IAAI,SAAS;AACjB,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,SAAK,EAAE,WAAW,CAAC;AACnB,QAAI,KAAK,KAAK,GAAG,QAAU,MAAM;AAAA,EACnC;AAGA,OAAK,MAAM;AACX,MAAI,KAAK,KAAK,GAAG,UAAU,MAAM;AACjC,OAAK,MAAM;AACX,MAAI,KAAK,KAAK,GAAG,UAAU,MAAM;AACjC,OAAK,MAAM;AACX,SAAO,MAAM;AACf;AAiCO,IAAM,cAAN,MAAM,aAAY;AAAA,EACd;AAAA,EACQ;AAAA,EAEjB,YAAY,YAAY,IAAI;AAC1B,QAAI,CAAC,OAAO,UAAU,SAAS,KAAK,YAAY,KAAK,YAAY,IAAI;AACnE,YAAM,IAAI,WAAW,2DAA2D,SAAS,EAAE;AAAA,IAC7F;AACA,SAAK,YAAY;AACjB,SAAK,YAAY,IAAI,WAAW,KAAK,SAAS;AAAA,EAChD;AAAA,EAEA,IAAI,IAAkB;AACpB,UAAM,IAAI,MAAM,EAAE;AAClB,UAAM,MAAM,MAAO,KAAK,KAAK;AAE7B,UAAM,OAAQ,KAAK,KAAK,cAAe;AACvC,UAAM,OAAO,SAAS,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,MAAM,IAAI,IAAI;AACvE,QAAI,OAAO,KAAK,UAAU,GAAG,EAAI,MAAK,UAAU,GAAG,IAAI;AAAA,EACzD;AAAA;AAAA,EAGA,QAAgB;AACd,UAAM,IAAI,KAAK,UAAU;AACzB,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,IAAI,KAAK,UAAU,CAAC;AAC1B,UAAI,MAAM,EAAG;AACb,aAAO,KAAK,CAAC;AAAA,IACf;AACA,UAAM,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,UAAU,IAAI,QAAQ;AAC7F,UAAM,MAAO,QAAQ,IAAI,IAAK;AAG9B,QAAI,OAAO,MAAM,KAAK,QAAQ,EAAG,QAAO,KAAK,MAAM,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC;AAC1E,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB;AAAA;AAAA,EAGA,SAAqD;AACnD,QAAI,MAAM;AACV,eAAW,KAAK,KAAK,UAAW,QAAO,OAAO,aAAa,CAAC;AAC5D,WAAO,EAAE,GAAG,KAAK,WAAW,GAAG,KAAK,GAAG,EAAE;AAAA,EAC3C;AAAA,EAEA,OAAO,SAAS,OAAgE;AAC9E,UAAM,MAAM,IAAI,aAAY,MAAM,CAAC;AACnC,UAAM,MAAM,KAAK,MAAM,CAAC;AACxB,aAAS,IAAI,GAAG,IAAI,IAAI,UAAU,UAAU,IAAI,IAAI,QAAQ,KAAK;AAC/D,UAAI,UAAU,CAAC,IAAI,IAAI,WAAW,CAAC;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AACF;AAUO,IAAM,cAAN,MAAkB;AAAA,EACd;AAAA,EACA;AAAA,EACQ;AAAA,EAEjB,YAAY,OAAO,KAAK,IAAI,SAAS,GAAG;AACtC,QAAI,CAAC,OAAO,UAAU,IAAI,KAAK,OAAO,GAAI,OAAM,IAAI,WAAW,iCAAiC,IAAI,EAAE;AACtG,QAAI,CAAC,OAAO,UAAU,MAAM,KAAK,SAAS,KAAK,SAAS,IAAI;AAC1D,YAAM,IAAI,WAAW,uCAAuC,MAAM,EAAE;AAAA,IACtE;AACA,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,QAAQ,IAAI,YAAY,KAAK,KAAK,OAAO,EAAE,CAAC;AAAA,EACnD;AAAA;AAAA,EAGA,YAAY,IAAqB;AAC/B,UAAM,KAAK,MAAM,EAAE;AACnB,UAAM,KAAK,MAAM,IAAI,UAAU,IAAI;AACnC,QAAI,QAAQ;AACZ,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAO,KAAK,KAAK,KAAK,GAAG,EAAE,MAAO;AACxC,YAAM,MAAM,MAAM,KAAK;AACvB,YAAM,IAAI,QAAQ;AAClB,YAAM,OAAO,MAAM,MAAM;AACzB,WAAK,KAAK,MAAM,CAAC,IAAK,UAAU,GAAG;AACjC,aAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAK;AACjC,gBAAQ;AAAA,MACV;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QAAc;AACZ,SAAK,MAAM,KAAK,CAAC;AAAA,EACnB;AACF;;;AC5DA,IAAM,mBAAmB,CAAC,KAAK,GAAG;AAClC,IAAM,UAAU;AAEhB,IAAM,UAAN,MAAc;AAAA,EAYZ,YACW,WACA,OACA,YACT,MACA;AAJS;AACA;AACA;AAGT,SAAK,MAAM,IAAI,YAAY,KAAK,SAAS;AACzC,SAAK,QAAQ,IAAI,YAAY,KAAK,WAAW,KAAK,WAAW;AAC7D,SAAK,cAAc,KAAK;AAAA,EAC1B;AAAA,EARW;AAAA,EACA;AAAA,EACA;AAAA,EAdX;AAAA,EACS;AAAA,EACT,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB;AAAA;AAAA,EAEA,aAAa;AAAA,EACb,gBAAgB;AAAA,EACP,QAAQ,oBAAI,IAAY;AAYnC;AAEO,IAAM,mBAAN,MAAmD;AAAA,EAC/C,YAAY,oBAAI,IAAqB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,oBAAI,IAAY;AAAA,EAExC,YAAY,OAA4B,CAAC,GAAG;AAC1C,SAAK,aAAa,KAAK,aAAa;AACpC,SAAK,aAAa,KAAK,aAAa,KAAK;AACzC,SAAK,eAAe,KAAK,eAAe;AACxC,SAAK,YAAY,KAAK,YAAY;AAClC,SAAK,eAAe,KAAK,eAAe,CAAC;AACzC,SAAK,OAAO,KAAK,QAAQ,MAAM,KAAK,IAAI;AACxC,QAAI,KAAK,aAAa,EAAG,OAAM,IAAI,WAAW,6BAA6B,KAAK,SAAS,EAAE;AAAA,EAC7F;AAAA,EAEA,SACE,OACA,YACA,WACA,WACA,SACA,OAC8B;AAO9B,QAAI;AACJ,WAAO,CAAC,OAAqB;AAC3B,oBAAc,KAAK,kBAAkB,YAAY,UAAU,GAAG,KAAK;AACnE,UAAI,CAAC,UAAW;AAChB,WAAK,QAAQ,WAAW,OAAO,YAAY,IAAI,OAAO;AAAA,IACxD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,kBAAkB,YAAoB,WAA0C,OAAyB;AACvG,UAAM,WAAW,KAAK,aAAa,UAAU,MAAM,UAAa,aAAa,SAAS;AACtF,QAAI,CAAC,SAAU,QAAO;AACtB,QAAI,CAAC,MAAO,QAAO;AACnB,QAAI,CAAC,KAAK,aAAa,IAAI,UAAU,GAAG;AACtC,WAAK,aAAa,IAAI,UAAU;AAChC,cAAQ;AAAA,QACN,wCAAwC,UAAU;AAAA,MAKpD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,WAAmB,OAAe,YAAoB,KAAsB;AACnF,UAAM,IAAI,KAAK,UAAU,CAAC,WAAW,OAAO,UAAU,CAAC;AACvD,QAAI,MAAM,KAAK,UAAU,IAAI,CAAC;AAC9B,QAAI,QAAQ,QAAW;AACrB,YAAM,IAAI,QAAQ,WAAW,OAAO,YAAY;AAAA,QAC9C,WAAW,KAAK;AAAA,QAChB,WAAW,KAAK;AAAA,QAChB,aAAa,KAAK;AAAA,QAClB;AAAA,MACF,CAAC;AACD,WAAK,UAAU,IAAI,GAAG,GAAG;AAAA,IAC3B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,WAAmB,OAAe,YAAoB,IAAY,SAAgC;AACxG,UAAM,MAAM,KAAK,KAAK;AACtB,UAAM,MAAM,KAAK,SAAS,WAAW,OAAO,YAAY,GAAG;AAE3D,QAAI,MAAM,IAAI,eAAe,KAAK,WAAW;AAK3C,UAAI,aAAa,IAAI,kBAAkB,IACnC,IAAI,kBACH,IAAI,aAAa,IAAI,gBAAgB,IAAI,mBAAmB,IAAI,gBAAgB;AACrF,UAAI;AACJ,UAAI,MAAM,MAAM;AAChB,UAAI,iBAAiB;AACrB,UAAI,gBAAgB;AACpB,UAAI,cAAc;AAAA,IACpB;AAIA,QAAI,IAAI,IAAI,EAAE;AACd,QAAI,IAAI,MAAM,YAAY,EAAE,EAAG,KAAI;AACnC,QAAI;AACJ,QAAI;AAEJ,UAAM,SAAS,KAAK,aAAa,UAAU;AAC3C,UAAM,aAAa,QAAQ;AAC3B,QAAI,eAAe,UAAa,cAAc,EAAG;AACjD,UAAM,WAAW,KAAK,IAAI,GAAG,IAAI,IAAI,MAAM,IAAI,UAAU;AACzD,eAAW,KAAK,QAAQ,WAAW,kBAAkB;AACnD,UAAI,WAAW,KAAK,IAAI,MAAM,IAAI,CAAC,EAAG;AACtC,UAAI,MAAM,IAAI,CAAC;AACf,YAAM,QAAuB;AAAA,QAC3B;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,IAAI;AAAA,QACX,QAAQ,IAAI;AAAA,QACZ;AAAA,QACA,QAAQ,IAAI,KAAK,IAAI,WAAW,EAAE,YAAY;AAAA,QAC9C,QAAQ;AAAA,MACV;AACA,cAAQ,KAAK,sBAAsB,KAAK;AAAA,IAC1C;AAAA,EACF;AAAA;AAAA,EAGA,QAAkC;AAChC,UAAM,MAAuB,CAAC;AAC9B,eAAW,OAAO,KAAK,UAAU,OAAO,GAAG;AACzC,YAAM,aAAa,KAAK,aAAa,IAAI,UAAU,GAAG;AACtD,YAAM,WAAW,IAAI,IAAI,MAAM;AAC/B,UAAI,KAAK;AAAA,QACP,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,QACX,YAAY,IAAI;AAAA,QAChB;AAAA,QACA,QAAQ,IAAI;AAAA,QACZ,eAAe,IAAI;AAAA,QACnB,gBAAgB,IAAI;AAAA,QACpB,YAAY,IAAI,aAAa,IAAI,IAAI,iBAAiB,IAAI,aAAa;AAAA,QACvE,GAAI,eAAe,UAAa,aAAa,IACzC,EAAE,UAAU,KAAK,IAAI,GAAG,WAAW,UAAU,EAAE,IAC/C,CAAC;AAAA,QACL,QAAQ,IAAI,KAAK,IAAI,WAAW,EAAE,YAAY;AAAA,MAChD,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAA6B;AAC3B,UAAM,UAAsD,CAAC;AAC7D,eAAW,OAAO,KAAK,UAAU,OAAO,GAAG;AACzC,cAAQ,KAAK;AAAA,QACX,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,QACX,YAAY,IAAI;AAAA,QAChB,KAAK,IAAI,IAAI,OAAO;AAAA,QACpB,QAAQ,IAAI;AAAA,QACZ,aAAa,IAAI;AAAA,MACnB,CAAC;AAAA,IACH;AACA,WAAO,EAAE,iBAAiB,GAAG,QAAQ;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,UAAkC;AACxC,eAAW,KAAK,SAAS,SAAS;AAChC,YAAM,MAAM,KAAK,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW;AAC3E,UAAI,MAAM,YAAY,SAAS,EAAE,GAAG;AACpC,UAAI,SAAS,EAAE;AACf,UAAI,cAAc,EAAE;AAAA,IACtB;AAAA,EACF;AACF;AAEA,SAAS,aAAa,WAAmD;AACvE,MAAI,cAAc,OAAW,QAAO;AACpC,aAAW,QAAQ,OAAO,OAAO,SAAS,EAAG,KAAI,MAAM,SAAS,YAAa,QAAO;AACpF,SAAO;AACT;;;ACjTO,SAAS,aAAa,OAA4B,CAAC,GAAqB;AAC7E,SAAO,IAAI,iBAAiB,IAAI;AAClC;","names":[]}
@@ -2,21 +2,21 @@ import {
2
2
  CustodyApi,
3
3
  NO_CUSTODY,
4
4
  withCustody
5
- } from "../chunk-GPEQUXHL.js";
6
- import "../chunk-G56KBWFY.js";
7
- import "../chunk-KG7TZKZG.js";
8
- import "../chunk-JMGDHKQF.js";
9
- import "../chunk-77K4PG6P.js";
10
- import "../chunk-SZJ3DLZA.js";
11
- import "../chunk-BOWNCWZT.js";
12
- import "../chunk-YSRUYAVU.js";
13
- import "../chunk-RMF67KCG.js";
5
+ } from "../chunk-B6SJIBQK.js";
6
+ import "../chunk-M7NI3IWE.js";
7
+ import "../chunk-7VCXZDA4.js";
8
+ import "../chunk-JCN44NCY.js";
9
+ import "../chunk-KJFW62P4.js";
10
+ import "../chunk-SEE332EV.js";
11
+ import "../chunk-6QSQQLSE.js";
12
+ import "../chunk-DE4DH2RZ.js";
13
+ import "../chunk-LQ4ZHOKP.js";
14
14
  import "../chunk-LP7BEXCT.js";
15
- import "../chunk-SL3JAAKN.js";
16
- import "../chunk-7MG7SJT7.js";
15
+ import "../chunk-UYB234ZR.js";
16
+ import "../chunk-ODVPTDPK.js";
17
17
  import {
18
18
  CustodyNotEnabledError
19
- } from "../chunk-7O3Y4PPD.js";
19
+ } from "../chunk-244VXYPG.js";
20
20
  export {
21
21
  CustodyApi,
22
22
  CustodyNotEnabledError,
@@ -4,7 +4,7 @@ import {
4
4
 
5
5
  // src/with-shape/satellites/dead-filter.ts
6
6
  async function liveBaseIdSetsForBundle(store, vaultName, collectionNames, getDEK) {
7
- const { loadPersistedSchema } = await import("./storage-FLR73HHF.js");
7
+ const { loadPersistedSchema } = await import("./storage-SVMKRGCW.js");
8
8
  const out = /* @__PURE__ */ new Map();
9
9
  for (const name of collectionNames) {
10
10
  if (name.startsWith("_")) continue;
@@ -24,4 +24,4 @@ async function liveBaseIdSetsForBundle(store, vaultName, collectionNames, getDEK
24
24
  export {
25
25
  liveBaseIdSetsForBundle
26
26
  };
27
- //# sourceMappingURL=dead-filter-TSWZQRR5.js.map
27
+ //# sourceMappingURL=dead-filter-U2UYKSZL.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DebugPlaintextError,
3
3
  DebugReservedFieldError
4
- } from "../chunk-7O3Y4PPD.js";
4
+ } from "../chunk-244VXYPG.js";
5
5
 
6
6
  // src/kernel/debug.ts
7
7
  function readPlaintextRecord(envelope) {
@@ -1,30 +1,30 @@
1
- import "./chunk-UGTBXF5U.js";
1
+ import "./chunk-SOIQ4MM4.js";
2
2
  import {
3
3
  generateULID
4
4
  } from "./chunk-4AOERLTV.js";
5
5
  import {
6
6
  dekKey
7
- } from "./chunk-JMGDHKQF.js";
7
+ } from "./chunk-JCN44NCY.js";
8
8
  import {
9
9
  buildRecordAad,
10
10
  openEnvelopeJson
11
- } from "./chunk-77K4PG6P.js";
11
+ } from "./chunk-KJFW62P4.js";
12
12
  import {
13
13
  buildRecordEnvelope
14
- } from "./chunk-SZJ3DLZA.js";
15
- import "./chunk-BOWNCWZT.js";
16
- import "./chunk-YSRUYAVU.js";
17
- import "./chunk-RMF67KCG.js";
14
+ } from "./chunk-SEE332EV.js";
15
+ import "./chunk-6QSQQLSE.js";
16
+ import "./chunk-DE4DH2RZ.js";
17
+ import "./chunk-LQ4ZHOKP.js";
18
18
  import "./chunk-LP7BEXCT.js";
19
19
  import {
20
20
  encrypt,
21
21
  unwrapKey,
22
22
  wrapKey
23
- } from "./chunk-SL3JAAKN.js";
24
- import "./chunk-7MG7SJT7.js";
23
+ } from "./chunk-UYB234ZR.js";
24
+ import "./chunk-ODVPTDPK.js";
25
25
  import {
26
26
  DelegationTargetMissingError
27
- } from "./chunk-7O3Y4PPD.js";
27
+ } from "./chunk-244VXYPG.js";
28
28
 
29
29
  // src/with-party/team/delegation.ts
30
30
  var DELEGATIONS_COLLECTION = "_delegations";
@@ -102,4 +102,4 @@ export {
102
102
  loadActiveDelegations,
103
103
  revokeDelegation
104
104
  };
105
- //# sourceMappingURL=delegation-OVIFFPG4.js.map
105
+ //# sourceMappingURL=delegation-S3AEPW2T.js.map
@@ -1,44 +1,47 @@
1
1
  import {
2
2
  DerivationRegistry
3
- } from "../chunk-HDOU6I2Y.js";
3
+ } from "../chunk-VNPEWFPD.js";
4
4
  import "../chunk-FFWI7UH7.js";
5
5
  import {
6
6
  DerivationExecutor
7
- } from "../chunk-TFR7DSOV.js";
7
+ } from "../chunk-MVZ2TPVP.js";
8
8
  import {
9
9
  withDerivation,
10
10
  withRollup
11
- } from "../chunk-BUE2D7PX.js";
12
- import "../chunk-2C3AQB46.js";
11
+ } from "../chunk-32YV3TJT.js";
12
+ import "../chunk-UD5EVGZ7.js";
13
13
  import "../chunk-TFMM5DBB.js";
14
- import "../chunk-RTBJ5IOO.js";
15
- import "../chunk-5VCRVKOZ.js";
14
+ import "../chunk-MDWKM2XC.js";
16
15
  import "../chunk-VYYM3MEN.js";
17
- import "../chunk-REDOOY2Q.js";
16
+ import "../chunk-PSIV7CJV.js";
18
17
  import "../chunk-Y2NBBT6K.js";
19
- import "../chunk-2Y4IMKA6.js";
20
- import "../chunk-U4FOQDY4.js";
18
+ import "../chunk-3H5KLDZN.js";
19
+ import "../chunk-FH2L2E34.js";
20
+ import "../chunk-QOOUUR4A.js";
21
+ import "../chunk-NYMLINRP.js";
21
22
  import "../chunk-V4PXLYWM.js";
22
- import "../chunk-MVMXZYXT.js";
23
- import "../chunk-6I2RQCET.js";
24
- import "../chunk-TRGTKX5E.js";
25
- import "../chunk-UXVWEX5L.js";
26
- import "../chunk-BOET4NA4.js";
27
- import "../chunk-77K4PG6P.js";
28
- import "../chunk-SZJ3DLZA.js";
29
- import "../chunk-BOWNCWZT.js";
30
- import "../chunk-YSRUYAVU.js";
31
- import "../chunk-RMF67KCG.js";
23
+ import "../chunk-ORDURZBU.js";
24
+ import "../chunk-XBKH4FOC.js";
25
+ import "../chunk-TKUOEU2F.js";
26
+ import "../chunk-DF73H4UN.js";
27
+ import "../chunk-GHLTDZRS.js";
28
+ import "../chunk-Z5HTYMMQ.js";
29
+ import "../chunk-CKNGS5MH.js";
30
+ import "../chunk-KJFW62P4.js";
31
+ import "../chunk-SEE332EV.js";
32
+ import "../chunk-6QSQQLSE.js";
33
+ import "../chunk-DE4DH2RZ.js";
34
+ import "../chunk-LQ4ZHOKP.js";
32
35
  import "../chunk-LP7BEXCT.js";
33
- import "../chunk-SL3JAAKN.js";
34
- import "../chunk-7MG7SJT7.js";
36
+ import "../chunk-UYB234ZR.js";
37
+ import "../chunk-ODVPTDPK.js";
35
38
  import {
36
39
  DerivationCapExceededError,
37
40
  DerivationCycleError,
38
41
  DerivationDepthError,
39
42
  DerivationOutputShapeError,
40
43
  DerivationOutputUnknownError
41
- } from "../chunk-7O3Y4PPD.js";
44
+ } from "../chunk-244VXYPG.js";
42
45
  export {
43
46
  DerivationCapExceededError,
44
47
  DerivationCycleError,
@@ -0,0 +1,21 @@
1
+ import {
2
+ derivePersistedSchema,
3
+ isZod4Schema,
4
+ isZodSchema
5
+ } from "./chunk-PSIV7CJV.js";
6
+ import "./chunk-Y2NBBT6K.js";
7
+ import "./chunk-KJFW62P4.js";
8
+ import "./chunk-SEE332EV.js";
9
+ import "./chunk-6QSQQLSE.js";
10
+ import "./chunk-DE4DH2RZ.js";
11
+ import "./chunk-LQ4ZHOKP.js";
12
+ import "./chunk-LP7BEXCT.js";
13
+ import "./chunk-UYB234ZR.js";
14
+ import "./chunk-ODVPTDPK.js";
15
+ import "./chunk-244VXYPG.js";
16
+ export {
17
+ derivePersistedSchema,
18
+ isZod4Schema,
19
+ isZodSchema
20
+ };
21
+ //# sourceMappingURL=derive-OX7F6TGG.js.map
@@ -1,7 +1,7 @@
1
1
  import "../chunk-GJW4HX2O.js";
2
2
  import {
3
3
  UserApi
4
- } from "../chunk-MUM7IANK.js";
4
+ } from "../chunk-4MXI3ODD.js";
5
5
  import {
6
6
  DIRECTORY_RECORD_ID,
7
7
  META_COLLECTION,
@@ -16,16 +16,16 @@ import {
16
16
  readUserVisibility,
17
17
  saveUserEnvelope,
18
18
  visibilityRecordId
19
- } from "../chunk-KG7TZKZG.js";
20
- import "../chunk-77K4PG6P.js";
21
- import "../chunk-SZJ3DLZA.js";
22
- import "../chunk-BOWNCWZT.js";
23
- import "../chunk-YSRUYAVU.js";
24
- import "../chunk-RMF67KCG.js";
19
+ } from "../chunk-7VCXZDA4.js";
20
+ import "../chunk-KJFW62P4.js";
21
+ import "../chunk-SEE332EV.js";
22
+ import "../chunk-6QSQQLSE.js";
23
+ import "../chunk-DE4DH2RZ.js";
24
+ import "../chunk-LQ4ZHOKP.js";
25
25
  import "../chunk-LP7BEXCT.js";
26
- import "../chunk-SL3JAAKN.js";
27
- import "../chunk-7MG7SJT7.js";
28
- import "../chunk-7O3Y4PPD.js";
26
+ import "../chunk-UYB234ZR.js";
27
+ import "../chunk-ODVPTDPK.js";
28
+ import "../chunk-244VXYPG.js";
29
29
  export {
30
30
  DIRECTORY_RECORD_ID,
31
31
  META_COLLECTION,
@@ -14,7 +14,7 @@ async function dispatchMaterializedViews(ctx, id, record, wave) {
14
14
  if (wave?.seen(`mv\0${reg.spec.name}`)) continue;
15
15
  if (executor === null) {
16
16
  ;
17
- ({ MaterializedViewExecutor: executor } = await import("./executor-PUAO6AKJ.js"));
17
+ ({ MaterializedViewExecutor: executor } = await import("./executor-B6SRO2QS.js"));
18
18
  }
19
19
  await executor.refresh(reg, {
20
20
  getCollection: (name) => source.getCollection(name),
@@ -23,7 +23,7 @@ async function dispatchMaterializedViews(ctx, id, record, wave) {
23
23
  dispatchCtx: dispatchCtx({ collection: collectionName, id })
24
24
  });
25
25
  } else if (mode === "lazy") {
26
- if (staleHelpers === null) staleHelpers = await import("./stale-DDL7WQEZ.js");
26
+ if (staleHelpers === null) staleHelpers = await import("./stale-TJ3DYZMQ.js");
27
27
  staleHelpers.markMVStale(registry, reg.spec.name);
28
28
  }
29
29
  }
@@ -45,7 +45,7 @@ async function dispatchMaterializedViewsOnDelete(ctx, id) {
45
45
  if (mode === "eager") {
46
46
  if (executor === null) {
47
47
  ;
48
- ({ MaterializedViewExecutor: executor } = await import("./executor-PUAO6AKJ.js"));
48
+ ({ MaterializedViewExecutor: executor } = await import("./executor-B6SRO2QS.js"));
49
49
  }
50
50
  const rr = await executor.refresh(reg, {
51
51
  getCollection: (name) => source.getCollection(name),
@@ -58,7 +58,7 @@ async function dispatchMaterializedViewsOnDelete(ctx, id) {
58
58
  residueDeclined.push(...rr.residueDeclined);
59
59
  continue;
60
60
  }
61
- if (staleHelpers === null) staleHelpers = await import("./stale-DDL7WQEZ.js");
61
+ if (staleHelpers === null) staleHelpers = await import("./stale-TJ3DYZMQ.js");
62
62
  const inv = await staleHelpers.invalidateMVAtRest(source, reg, mode);
63
63
  deleted += inv.deleted;
64
64
  residueUndecodable.push(...inv.residueUndecodable.map((rid) => `${reg.outputCollection}:${rid}`));
@@ -70,4 +70,4 @@ export {
70
70
  dispatchMaterializedViews,
71
71
  dispatchMaterializedViewsOnDelete
72
72
  };
73
- //# sourceMappingURL=dispatch-WC6X2M6C.js.map
73
+ //# sourceMappingURL=dispatch-3CQDJV5Q.js.map