@noy-db/hub 0.4.0 → 0.5.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 (325) hide show
  1. package/dist/api-M7REIE7H.js +20 -0
  2. package/dist/attestation/index.js +16 -16
  3. package/dist/{backup-X7F3TCFV.js → backup-ENTZYW37.js} +9 -9
  4. package/dist/blobs/index.js +11 -11
  5. package/dist/broker/index.js +10 -10
  6. package/dist/cargo/index.js +26 -26
  7. package/dist/{chunk-6ZNSB3H6.js → chunk-3LYMOSY7.js} +2 -2
  8. package/dist/{chunk-LXRTP3AQ.js → chunk-4DGBZEV6.js} +2 -2
  9. package/dist/{chunk-LRRX57UA.js → chunk-4MSNAB64.js} +4 -4
  10. package/dist/{chunk-MXUT7FTE.js → chunk-4SG5TOXK.js} +2 -2
  11. package/dist/{chunk-W66AM5IB.js → chunk-4TXO442D.js} +2 -2
  12. package/dist/{chunk-UADPR6F4.js → chunk-5EKL6BXI.js} +3 -3
  13. package/dist/{chunk-ZBYFMI6D.js → chunk-5UKUOMO6.js} +247 -136
  14. package/dist/chunk-5UKUOMO6.js.map +1 -0
  15. package/dist/{chunk-SU6SGWXM.js → chunk-623QEHDB.js} +6 -6
  16. package/dist/{chunk-IVYQAVWO.js → chunk-653KOQ7A.js} +7 -7
  17. package/dist/{chunk-2BET5QTS.js → chunk-6PFST3FC.js} +4 -4
  18. package/dist/{chunk-PWPYO73B.js → chunk-6RDTG6E5.js} +5 -5
  19. package/dist/{chunk-DAFBJS4Y.js → chunk-7P4LL3JH.js} +3 -3
  20. package/dist/{chunk-S7GIXBXV.js → chunk-AJAOXFCF.js} +8 -8
  21. package/dist/chunk-AJAOXFCF.js.map +1 -0
  22. package/dist/{chunk-L3YYLT4E.js → chunk-ALUVACKT.js} +2 -2
  23. package/dist/{chunk-QZWTRENR.js → chunk-AR5D76T2.js} +5 -1
  24. package/dist/chunk-AR5D76T2.js.map +1 -0
  25. package/dist/{chunk-5DRROK5W.js → chunk-BFG7LD6Z.js} +2 -2
  26. package/dist/{chunk-6UBZ6I5Z.js → chunk-DDB626I7.js} +2 -2
  27. package/dist/{chunk-W3G5REIU.js → chunk-EAN4TAPC.js} +2 -2
  28. package/dist/{chunk-4JQK3L4V.js → chunk-EBETHILL.js} +2 -2
  29. package/dist/{chunk-467SWYT5.js → chunk-ECGDJU5R.js} +3 -3
  30. package/dist/{chunk-WYUAEZSC.js → chunk-ELJOLQIG.js} +14 -13
  31. package/dist/chunk-ELJOLQIG.js.map +1 -0
  32. package/dist/{chunk-ZFG5EBI3.js → chunk-F2WWHKO7.js} +5 -5
  33. package/dist/{chunk-NJ4DYYO5.js → chunk-F5UWVF6Z.js} +2 -2
  34. package/dist/{chunk-Q36YXK77.js → chunk-FHK6WWUE.js} +2 -2
  35. package/dist/{chunk-SHEEBRZ4.js → chunk-FT5Y4VSP.js} +2 -2
  36. package/dist/{chunk-JQ2AX4T5.js → chunk-FUECZSRM.js} +2 -2
  37. package/dist/{chunk-Q5YJCVJY.js → chunk-FZAP4JNC.js} +4 -4
  38. package/dist/{chunk-SFBYQMZM.js → chunk-G3ORJ3IQ.js} +4 -4
  39. package/dist/{chunk-HLKXPJ4V.js → chunk-G7ZIMGPQ.js} +5 -5
  40. package/dist/{chunk-QJNCB5SK.js → chunk-GIGLOQL7.js} +2 -2
  41. package/dist/{chunk-ERGECZEI.js → chunk-GTQF32TP.js} +5 -5
  42. package/dist/{chunk-JYJFGD2H.js → chunk-GYJRDALN.js} +2 -2
  43. package/dist/{chunk-HZZP2ZIG.js → chunk-HGDXJVK2.js} +4 -4
  44. package/dist/{chunk-ZNWSG7XC.js → chunk-IHYSIPEK.js} +6 -6
  45. package/dist/{chunk-5GQEU4DN.js → chunk-IJV56FWY.js} +2 -2
  46. package/dist/{chunk-5UQ7Y6SQ.js → chunk-IM2KST7E.js} +3 -3
  47. package/dist/{chunk-7H3WWH6J.js → chunk-IQ423YMK.js} +3 -3
  48. package/dist/{chunk-P4JO3H6R.js → chunk-J7YVY7TW.js} +2 -2
  49. package/dist/{chunk-YGK2HMLR.js → chunk-JLBCK7XM.js} +8 -8
  50. package/dist/chunk-JLBCK7XM.js.map +1 -0
  51. package/dist/{chunk-2J6UEN2V.js → chunk-K5OFKXUG.js} +2 -2
  52. package/dist/{chunk-JEI6JJNI.js → chunk-KDWBVCIX.js} +5 -5
  53. package/dist/{chunk-T2MOJF76.js → chunk-KJNMTE2W.js} +6 -6
  54. package/dist/{chunk-NFZGZ4AK.js → chunk-L67H6FAQ.js} +2 -2
  55. package/dist/{chunk-RBTVFPHF.js → chunk-LQVRK2XJ.js} +4 -4
  56. package/dist/{chunk-MHMLXJ3I.js → chunk-LXRVTJ5D.js} +2 -2
  57. package/dist/{chunk-LLYIMSQQ.js → chunk-MDRCEA56.js} +10 -10
  58. package/dist/{chunk-KRCBZYTZ.js → chunk-MFW466PX.js} +4 -4
  59. package/dist/{chunk-RO5NM6UI.js → chunk-MGXUAID4.js} +2 -2
  60. package/dist/{chunk-OWHP3H5C.js → chunk-MPW6AHTC.js} +3 -3
  61. package/dist/{chunk-35NMVJ7I.js → chunk-MYSNNMJ3.js} +3 -3
  62. package/dist/{chunk-QGIBI6GL.js → chunk-NG4AQIYJ.js} +4 -4
  63. package/dist/{chunk-BLBAQRBM.js → chunk-NIKQQXI2.js} +2 -2
  64. package/dist/{chunk-55LX6FSX.js → chunk-NJHQE4LT.js} +2 -2
  65. package/dist/{chunk-TS5XLBZR.js → chunk-NMYH55MW.js} +4 -4
  66. package/dist/{chunk-GTYFIVIZ.js → chunk-NWK6SVBM.js} +5 -5
  67. package/dist/chunk-NWK6SVBM.js.map +1 -0
  68. package/dist/{chunk-IFOH7RBI.js → chunk-NZEGQWQ5.js} +4 -4
  69. package/dist/{chunk-DTFA5DO4.js → chunk-ODCEOSJF.js} +2 -2
  70. package/dist/{chunk-NYEFP7DY.js → chunk-OKBNFUUX.js} +2 -2
  71. package/dist/{chunk-SGDPRCC4.js → chunk-OKRXXFZZ.js} +3 -3
  72. package/dist/{chunk-IG6KUWBX.js → chunk-P6UIVLZK.js} +2 -2
  73. package/dist/{chunk-V6UQZA2H.js → chunk-PKBONLCP.js} +2 -2
  74. package/dist/{chunk-MSMJJB4J.js → chunk-PTSVGKSR.js} +2 -2
  75. package/dist/{chunk-IXNCZTWA.js → chunk-PWEMRXPO.js} +2 -2
  76. package/dist/{chunk-PTHKZWEH.js → chunk-PZRYKOKP.js} +2 -2
  77. package/dist/{chunk-KD4HGBJV.js → chunk-Q6MXHDSE.js} +3 -3
  78. package/dist/{chunk-RQ4ZI4ZI.js → chunk-QITP2JGX.js} +5 -5
  79. package/dist/{chunk-WBKZUO5V.js → chunk-QMCWYN6O.js} +3 -3
  80. package/dist/{chunk-4ZKNC6A6.js → chunk-QQL6XPPG.js} +2 -2
  81. package/dist/{chunk-TG634KCO.js → chunk-QTMZDMJ6.js} +2 -2
  82. package/dist/{chunk-AT2JJEKJ.js → chunk-RM4FIXY2.js} +4 -4
  83. package/dist/{chunk-AKKRXT23.js → chunk-RPWMDIGK.js} +2 -2
  84. package/dist/{chunk-NBXFCQX4.js → chunk-RQILGK3N.js} +8 -8
  85. package/dist/chunk-RQILGK3N.js.map +1 -0
  86. package/dist/{chunk-NM5UYF6Q.js → chunk-SBGXQK5I.js} +2 -2
  87. package/dist/{chunk-SF2ZIRD6.js → chunk-SL3PLML2.js} +3 -3
  88. package/dist/{chunk-3ECU57YH.js → chunk-TJOUKMWF.js} +8 -8
  89. package/dist/{chunk-QD46HPZG.js → chunk-U2ID5A2I.js} +2 -2
  90. package/dist/{chunk-X4MVWPHV.js → chunk-UC5Y7OEJ.js} +3 -3
  91. package/dist/{chunk-SBHN6QUT.js → chunk-US2AR4BI.js} +2 -2
  92. package/dist/{chunk-DQZXPGGZ.js → chunk-V3EGXDFN.js} +3 -3
  93. package/dist/{chunk-ZHDSUZQU.js → chunk-V4O6YZSP.js} +3 -3
  94. package/dist/{chunk-3HUYRN24.js → chunk-W7C7MMIS.js} +3 -3
  95. package/dist/{chunk-NLYALJMY.js → chunk-WFYKIDCS.js} +30 -11
  96. package/dist/chunk-WFYKIDCS.js.map +1 -0
  97. package/dist/{chunk-TWPK7KUJ.js → chunk-XID22NOA.js} +5 -5
  98. package/dist/{chunk-E23UGFVC.js → chunk-XVK7TULT.js} +2 -2
  99. package/dist/{chunk-WUHEP3HH.js → chunk-XX7YB5BI.js} +4 -4
  100. package/dist/{chunk-ZTLOXFPB.js → chunk-Y2PTKKIN.js} +2 -2
  101. package/dist/{chunk-KYRDJI5O.js → chunk-YA7Y3EZP.js} +10 -10
  102. package/dist/classified/index.js +4 -4
  103. package/dist/{classified-marker-LE54HWSX.js → classified-marker-ZALWKOBC.js} +3 -3
  104. package/dist/{collection-facade-DO2AABZT.js → collection-facade-KI53O6QB.js} +15 -15
  105. package/dist/{computed-AB45PS4V.js → computed-YOQCGUCS.js} +3 -3
  106. package/dist/consent/index.js +7 -7
  107. package/dist/cover/index.js +2 -2
  108. package/dist/custody/index.js +9 -9
  109. package/dist/{dead-filter-V3LVWYEJ.js → dead-filter-6DVWST6U.js} +2 -2
  110. package/dist/debug/index.js +1 -1
  111. package/dist/{delegation-JDUMAF6L.js → delegation-WMO3Q3O5.js} +8 -8
  112. package/dist/derivations/index.js +10 -10
  113. package/dist/{derive-ZPGVLE2Q.js → derive-P2NXWUNB.js} +8 -8
  114. package/dist/directory/index.js +8 -8
  115. package/dist/{dispatch-W7NWQ637.js → dispatch-TKV4UCKB.js} +16 -16
  116. package/dist/{dispatch-6TV3DGO6.js → dispatch-VNR3TLBX.js} +5 -5
  117. package/dist/{enclave-YFCLPIDR.js → enclave-YWP3QAIQ.js} +7 -7
  118. package/dist/executor-M4ZZNX6S.js +28 -0
  119. package/dist/executor-TI64S4LE.js +9 -0
  120. package/dist/executor-YBK3I2OT.js +9 -0
  121. package/dist/export-accessible-GBLYLGW4.js +23 -0
  122. package/dist/extract-partition-SFV35U2R.js +38 -0
  123. package/dist/{fanout-sidecar-273RDMYS.js → fanout-sidecar-WYXO6QQT.js} +7 -7
  124. package/dist/find-HUSSZRBR.js +11 -0
  125. package/dist/forget/index.js +7 -7
  126. package/dist/guards/index.js +5 -5
  127. package/dist/history/index.js +10 -10
  128. package/dist/i18n/index.js +12 -12
  129. package/dist/index.d.ts +1 -1
  130. package/dist/index.js +86 -84
  131. package/dist/index.js.map +1 -1
  132. package/dist/indexing/index.js +2 -2
  133. package/dist/introspection/index.js +9 -9
  134. package/dist/issue-6TIJYWKS.js +19 -0
  135. package/dist/kernel/collection-config.d.ts +4 -0
  136. package/dist/kernel/collection.d.ts +24 -6
  137. package/dist/kernel/errors.d.ts +15 -0
  138. package/dist/kernel/put-many-atomic.d.ts +45 -0
  139. package/dist/kernel/vault.d.ts +14 -0
  140. package/dist/{ledger-XE7JF2I2.js → ledger-BLYDYRTQ.js} +9 -9
  141. package/dist/liberate-TSOW7IG5.js +24 -0
  142. package/dist/{link-set-CGYC3OH5.js → link-set-7F5ZPDEB.js} +9 -9
  143. package/dist/materialized-views/index.js +22 -22
  144. package/dist/money/index.js +3 -3
  145. package/dist/noydb-KFN6M6UJ.js +81 -0
  146. package/dist/overlay-views/index.js +4 -4
  147. package/dist/periods/index.js +11 -11
  148. package/dist/pod/index.js +9 -9
  149. package/dist/policy/index.js +2 -2
  150. package/dist/port/with/write-hooks.d.ts +6 -0
  151. package/dist/portability/index.js +8 -8
  152. package/dist/{post-register-LY35EDTJ.js → post-register-PQSY544J.js} +6 -6
  153. package/dist/query/index.js +3 -3
  154. package/dist/reduce/index.js +4 -4
  155. package/dist/{register-6RIBIT3I.js → register-S3ECUZPV.js} +10 -10
  156. package/dist/registry-FZOHKUME.js +18 -0
  157. package/dist/registry-RISV7IDZ.js +19 -0
  158. package/dist/registry-ZE35A7WC.js +9 -0
  159. package/dist/{request-withdrawal-FT3ORAWN.js → request-withdrawal-KXVTQKR5.js} +12 -12
  160. package/dist/{reveal-T34ADTPY.js → reveal-HY7DZST4.js} +4 -4
  161. package/dist/{revoke-HC7WG3HE.js → revoke-J473JJ22.js} +9 -9
  162. package/dist/satellites/index.js +1 -1
  163. package/dist/schema-update/index.js +2 -2
  164. package/dist/sealed-record/index.js +10 -10
  165. package/dist/search/index.js +4 -4
  166. package/dist/{seed-JOV54PB3.js → seed-ALU3BHFS.js} +13 -13
  167. package/dist/seed-ALU3BHFS.js.map +1 -0
  168. package/dist/sequence/index.js +7 -7
  169. package/dist/session/index.js +7 -7
  170. package/dist/shadow/index.js +2 -2
  171. package/dist/{signer-CTWOH6KT.js → signer-XLUKCCH3.js} +8 -8
  172. package/dist/snapshots/index.js +8 -8
  173. package/dist/{stale-T3V7XEOB.js → stale-U3WO5MYN.js} +8 -8
  174. package/dist/{storage-LLNLPWWB.js → storage-IQONEOYY.js} +8 -8
  175. package/dist/sync/index.js +8 -8
  176. package/dist/team/index.js +11 -11
  177. package/dist/tiers/index.js +8 -8
  178. package/dist/to/index.js +1 -1
  179. package/dist/transactions/index.js +3 -3
  180. package/dist/util/index.js +1 -1
  181. package/dist/{verify-7XWHJWUN.js → verify-JEIXSK5U.js} +5 -5
  182. package/dist/walk-BF36V4SR.js +21 -0
  183. package/dist/with-commit/tx/atomic-eligibility.d.ts +13 -11
  184. package/dist/with-sync/engine.d.ts +13 -0
  185. package/dist/{withdraw-accessible-ANSVG6XG.js → withdraw-accessible-TYTA23XH.js} +11 -11
  186. package/package.json +3 -3
  187. package/dist/api-SI2IVBQO.js +0 -20
  188. package/dist/chunk-GTYFIVIZ.js.map +0 -1
  189. package/dist/chunk-NBXFCQX4.js.map +0 -1
  190. package/dist/chunk-NLYALJMY.js.map +0 -1
  191. package/dist/chunk-QZWTRENR.js.map +0 -1
  192. package/dist/chunk-S7GIXBXV.js.map +0 -1
  193. package/dist/chunk-WYUAEZSC.js.map +0 -1
  194. package/dist/chunk-YGK2HMLR.js.map +0 -1
  195. package/dist/chunk-ZBYFMI6D.js.map +0 -1
  196. package/dist/executor-FPHKWDWT.js +0 -28
  197. package/dist/executor-IEBLTBCW.js +0 -9
  198. package/dist/executor-RM7XWQDU.js +0 -9
  199. package/dist/export-accessible-EKM3HGB2.js +0 -23
  200. package/dist/extract-partition-LS4ET5A6.js +0 -38
  201. package/dist/find-OZMTRIK3.js +0 -11
  202. package/dist/issue-LIA7FXBJ.js +0 -19
  203. package/dist/liberate-WZ3RHVKW.js +0 -24
  204. package/dist/noydb-ZLPVCDES.js +0 -81
  205. package/dist/registry-7Y5WF7GS.js +0 -9
  206. package/dist/registry-MUSL4AW6.js +0 -19
  207. package/dist/registry-RON4WHAP.js +0 -18
  208. package/dist/seed-JOV54PB3.js.map +0 -1
  209. package/dist/walk-G3NFEP5L.js +0 -21
  210. /package/dist/{api-SI2IVBQO.js.map → api-M7REIE7H.js.map} +0 -0
  211. /package/dist/{backup-X7F3TCFV.js.map → backup-ENTZYW37.js.map} +0 -0
  212. /package/dist/{chunk-6ZNSB3H6.js.map → chunk-3LYMOSY7.js.map} +0 -0
  213. /package/dist/{chunk-LXRTP3AQ.js.map → chunk-4DGBZEV6.js.map} +0 -0
  214. /package/dist/{chunk-LRRX57UA.js.map → chunk-4MSNAB64.js.map} +0 -0
  215. /package/dist/{chunk-MXUT7FTE.js.map → chunk-4SG5TOXK.js.map} +0 -0
  216. /package/dist/{chunk-W66AM5IB.js.map → chunk-4TXO442D.js.map} +0 -0
  217. /package/dist/{chunk-UADPR6F4.js.map → chunk-5EKL6BXI.js.map} +0 -0
  218. /package/dist/{chunk-SU6SGWXM.js.map → chunk-623QEHDB.js.map} +0 -0
  219. /package/dist/{chunk-IVYQAVWO.js.map → chunk-653KOQ7A.js.map} +0 -0
  220. /package/dist/{chunk-2BET5QTS.js.map → chunk-6PFST3FC.js.map} +0 -0
  221. /package/dist/{chunk-PWPYO73B.js.map → chunk-6RDTG6E5.js.map} +0 -0
  222. /package/dist/{chunk-DAFBJS4Y.js.map → chunk-7P4LL3JH.js.map} +0 -0
  223. /package/dist/{chunk-L3YYLT4E.js.map → chunk-ALUVACKT.js.map} +0 -0
  224. /package/dist/{chunk-5DRROK5W.js.map → chunk-BFG7LD6Z.js.map} +0 -0
  225. /package/dist/{chunk-6UBZ6I5Z.js.map → chunk-DDB626I7.js.map} +0 -0
  226. /package/dist/{chunk-W3G5REIU.js.map → chunk-EAN4TAPC.js.map} +0 -0
  227. /package/dist/{chunk-4JQK3L4V.js.map → chunk-EBETHILL.js.map} +0 -0
  228. /package/dist/{chunk-467SWYT5.js.map → chunk-ECGDJU5R.js.map} +0 -0
  229. /package/dist/{chunk-ZFG5EBI3.js.map → chunk-F2WWHKO7.js.map} +0 -0
  230. /package/dist/{chunk-NJ4DYYO5.js.map → chunk-F5UWVF6Z.js.map} +0 -0
  231. /package/dist/{chunk-Q36YXK77.js.map → chunk-FHK6WWUE.js.map} +0 -0
  232. /package/dist/{chunk-SHEEBRZ4.js.map → chunk-FT5Y4VSP.js.map} +0 -0
  233. /package/dist/{chunk-JQ2AX4T5.js.map → chunk-FUECZSRM.js.map} +0 -0
  234. /package/dist/{chunk-Q5YJCVJY.js.map → chunk-FZAP4JNC.js.map} +0 -0
  235. /package/dist/{chunk-SFBYQMZM.js.map → chunk-G3ORJ3IQ.js.map} +0 -0
  236. /package/dist/{chunk-HLKXPJ4V.js.map → chunk-G7ZIMGPQ.js.map} +0 -0
  237. /package/dist/{chunk-QJNCB5SK.js.map → chunk-GIGLOQL7.js.map} +0 -0
  238. /package/dist/{chunk-ERGECZEI.js.map → chunk-GTQF32TP.js.map} +0 -0
  239. /package/dist/{chunk-JYJFGD2H.js.map → chunk-GYJRDALN.js.map} +0 -0
  240. /package/dist/{chunk-HZZP2ZIG.js.map → chunk-HGDXJVK2.js.map} +0 -0
  241. /package/dist/{chunk-ZNWSG7XC.js.map → chunk-IHYSIPEK.js.map} +0 -0
  242. /package/dist/{chunk-5GQEU4DN.js.map → chunk-IJV56FWY.js.map} +0 -0
  243. /package/dist/{chunk-5UQ7Y6SQ.js.map → chunk-IM2KST7E.js.map} +0 -0
  244. /package/dist/{chunk-7H3WWH6J.js.map → chunk-IQ423YMK.js.map} +0 -0
  245. /package/dist/{chunk-P4JO3H6R.js.map → chunk-J7YVY7TW.js.map} +0 -0
  246. /package/dist/{chunk-2J6UEN2V.js.map → chunk-K5OFKXUG.js.map} +0 -0
  247. /package/dist/{chunk-JEI6JJNI.js.map → chunk-KDWBVCIX.js.map} +0 -0
  248. /package/dist/{chunk-T2MOJF76.js.map → chunk-KJNMTE2W.js.map} +0 -0
  249. /package/dist/{chunk-NFZGZ4AK.js.map → chunk-L67H6FAQ.js.map} +0 -0
  250. /package/dist/{chunk-RBTVFPHF.js.map → chunk-LQVRK2XJ.js.map} +0 -0
  251. /package/dist/{chunk-MHMLXJ3I.js.map → chunk-LXRVTJ5D.js.map} +0 -0
  252. /package/dist/{chunk-LLYIMSQQ.js.map → chunk-MDRCEA56.js.map} +0 -0
  253. /package/dist/{chunk-KRCBZYTZ.js.map → chunk-MFW466PX.js.map} +0 -0
  254. /package/dist/{chunk-RO5NM6UI.js.map → chunk-MGXUAID4.js.map} +0 -0
  255. /package/dist/{chunk-OWHP3H5C.js.map → chunk-MPW6AHTC.js.map} +0 -0
  256. /package/dist/{chunk-35NMVJ7I.js.map → chunk-MYSNNMJ3.js.map} +0 -0
  257. /package/dist/{chunk-QGIBI6GL.js.map → chunk-NG4AQIYJ.js.map} +0 -0
  258. /package/dist/{chunk-BLBAQRBM.js.map → chunk-NIKQQXI2.js.map} +0 -0
  259. /package/dist/{chunk-55LX6FSX.js.map → chunk-NJHQE4LT.js.map} +0 -0
  260. /package/dist/{chunk-TS5XLBZR.js.map → chunk-NMYH55MW.js.map} +0 -0
  261. /package/dist/{chunk-IFOH7RBI.js.map → chunk-NZEGQWQ5.js.map} +0 -0
  262. /package/dist/{chunk-DTFA5DO4.js.map → chunk-ODCEOSJF.js.map} +0 -0
  263. /package/dist/{chunk-NYEFP7DY.js.map → chunk-OKBNFUUX.js.map} +0 -0
  264. /package/dist/{chunk-SGDPRCC4.js.map → chunk-OKRXXFZZ.js.map} +0 -0
  265. /package/dist/{chunk-IG6KUWBX.js.map → chunk-P6UIVLZK.js.map} +0 -0
  266. /package/dist/{chunk-V6UQZA2H.js.map → chunk-PKBONLCP.js.map} +0 -0
  267. /package/dist/{chunk-MSMJJB4J.js.map → chunk-PTSVGKSR.js.map} +0 -0
  268. /package/dist/{chunk-IXNCZTWA.js.map → chunk-PWEMRXPO.js.map} +0 -0
  269. /package/dist/{chunk-PTHKZWEH.js.map → chunk-PZRYKOKP.js.map} +0 -0
  270. /package/dist/{chunk-KD4HGBJV.js.map → chunk-Q6MXHDSE.js.map} +0 -0
  271. /package/dist/{chunk-RQ4ZI4ZI.js.map → chunk-QITP2JGX.js.map} +0 -0
  272. /package/dist/{chunk-WBKZUO5V.js.map → chunk-QMCWYN6O.js.map} +0 -0
  273. /package/dist/{chunk-4ZKNC6A6.js.map → chunk-QQL6XPPG.js.map} +0 -0
  274. /package/dist/{chunk-TG634KCO.js.map → chunk-QTMZDMJ6.js.map} +0 -0
  275. /package/dist/{chunk-AT2JJEKJ.js.map → chunk-RM4FIXY2.js.map} +0 -0
  276. /package/dist/{chunk-AKKRXT23.js.map → chunk-RPWMDIGK.js.map} +0 -0
  277. /package/dist/{chunk-NM5UYF6Q.js.map → chunk-SBGXQK5I.js.map} +0 -0
  278. /package/dist/{chunk-SF2ZIRD6.js.map → chunk-SL3PLML2.js.map} +0 -0
  279. /package/dist/{chunk-3ECU57YH.js.map → chunk-TJOUKMWF.js.map} +0 -0
  280. /package/dist/{chunk-QD46HPZG.js.map → chunk-U2ID5A2I.js.map} +0 -0
  281. /package/dist/{chunk-X4MVWPHV.js.map → chunk-UC5Y7OEJ.js.map} +0 -0
  282. /package/dist/{chunk-SBHN6QUT.js.map → chunk-US2AR4BI.js.map} +0 -0
  283. /package/dist/{chunk-DQZXPGGZ.js.map → chunk-V3EGXDFN.js.map} +0 -0
  284. /package/dist/{chunk-ZHDSUZQU.js.map → chunk-V4O6YZSP.js.map} +0 -0
  285. /package/dist/{chunk-3HUYRN24.js.map → chunk-W7C7MMIS.js.map} +0 -0
  286. /package/dist/{chunk-TWPK7KUJ.js.map → chunk-XID22NOA.js.map} +0 -0
  287. /package/dist/{chunk-E23UGFVC.js.map → chunk-XVK7TULT.js.map} +0 -0
  288. /package/dist/{chunk-WUHEP3HH.js.map → chunk-XX7YB5BI.js.map} +0 -0
  289. /package/dist/{chunk-ZTLOXFPB.js.map → chunk-Y2PTKKIN.js.map} +0 -0
  290. /package/dist/{chunk-KYRDJI5O.js.map → chunk-YA7Y3EZP.js.map} +0 -0
  291. /package/dist/{classified-marker-LE54HWSX.js.map → classified-marker-ZALWKOBC.js.map} +0 -0
  292. /package/dist/{collection-facade-DO2AABZT.js.map → collection-facade-KI53O6QB.js.map} +0 -0
  293. /package/dist/{computed-AB45PS4V.js.map → computed-YOQCGUCS.js.map} +0 -0
  294. /package/dist/{dead-filter-V3LVWYEJ.js.map → dead-filter-6DVWST6U.js.map} +0 -0
  295. /package/dist/{delegation-JDUMAF6L.js.map → delegation-WMO3Q3O5.js.map} +0 -0
  296. /package/dist/{derive-ZPGVLE2Q.js.map → derive-P2NXWUNB.js.map} +0 -0
  297. /package/dist/{dispatch-W7NWQ637.js.map → dispatch-TKV4UCKB.js.map} +0 -0
  298. /package/dist/{dispatch-6TV3DGO6.js.map → dispatch-VNR3TLBX.js.map} +0 -0
  299. /package/dist/{enclave-YFCLPIDR.js.map → enclave-YWP3QAIQ.js.map} +0 -0
  300. /package/dist/{executor-FPHKWDWT.js.map → executor-M4ZZNX6S.js.map} +0 -0
  301. /package/dist/{executor-IEBLTBCW.js.map → executor-TI64S4LE.js.map} +0 -0
  302. /package/dist/{executor-RM7XWQDU.js.map → executor-YBK3I2OT.js.map} +0 -0
  303. /package/dist/{export-accessible-EKM3HGB2.js.map → export-accessible-GBLYLGW4.js.map} +0 -0
  304. /package/dist/{extract-partition-LS4ET5A6.js.map → extract-partition-SFV35U2R.js.map} +0 -0
  305. /package/dist/{fanout-sidecar-273RDMYS.js.map → fanout-sidecar-WYXO6QQT.js.map} +0 -0
  306. /package/dist/{find-OZMTRIK3.js.map → find-HUSSZRBR.js.map} +0 -0
  307. /package/dist/{issue-LIA7FXBJ.js.map → issue-6TIJYWKS.js.map} +0 -0
  308. /package/dist/{ledger-XE7JF2I2.js.map → ledger-BLYDYRTQ.js.map} +0 -0
  309. /package/dist/{liberate-WZ3RHVKW.js.map → liberate-TSOW7IG5.js.map} +0 -0
  310. /package/dist/{link-set-CGYC3OH5.js.map → link-set-7F5ZPDEB.js.map} +0 -0
  311. /package/dist/{noydb-ZLPVCDES.js.map → noydb-KFN6M6UJ.js.map} +0 -0
  312. /package/dist/{post-register-LY35EDTJ.js.map → post-register-PQSY544J.js.map} +0 -0
  313. /package/dist/{register-6RIBIT3I.js.map → register-S3ECUZPV.js.map} +0 -0
  314. /package/dist/{registry-7Y5WF7GS.js.map → registry-FZOHKUME.js.map} +0 -0
  315. /package/dist/{registry-MUSL4AW6.js.map → registry-RISV7IDZ.js.map} +0 -0
  316. /package/dist/{registry-RON4WHAP.js.map → registry-ZE35A7WC.js.map} +0 -0
  317. /package/dist/{request-withdrawal-FT3ORAWN.js.map → request-withdrawal-KXVTQKR5.js.map} +0 -0
  318. /package/dist/{reveal-T34ADTPY.js.map → reveal-HY7DZST4.js.map} +0 -0
  319. /package/dist/{revoke-HC7WG3HE.js.map → revoke-J473JJ22.js.map} +0 -0
  320. /package/dist/{signer-CTWOH6KT.js.map → signer-XLUKCCH3.js.map} +0 -0
  321. /package/dist/{stale-T3V7XEOB.js.map → stale-U3WO5MYN.js.map} +0 -0
  322. /package/dist/{storage-LLNLPWWB.js.map → storage-IQONEOYY.js.map} +0 -0
  323. /package/dist/{verify-7XWHJWUN.js.map → verify-JEIXSK5U.js.map} +0 -0
  324. /package/dist/{walk-G3NFEP5L.js.map → walk-BF36V4SR.js.map} +0 -0
  325. /package/dist/{withdraw-accessible-ANSVG6XG.js.map → withdraw-accessible-TYTA23XH.js.map} +0 -0
@@ -1,16 +1,16 @@
1
- import {
2
- hashFields,
3
- validateSatelliteDeclaration
4
- } from "./chunk-SHEEBRZ4.js";
5
1
  import {
6
2
  resolveStaleOnRead
7
- } from "./chunk-NJ4DYYO5.js";
3
+ } from "./chunk-F5UWVF6Z.js";
8
4
  import {
9
5
  LinkIntegrityError,
10
6
  isLinkCollectionName,
11
7
  linkCollectionName,
12
8
  linkRowKey
13
- } from "./chunk-4JQK3L4V.js";
9
+ } from "./chunk-EBETHILL.js";
10
+ import {
11
+ hashFields,
12
+ validateSatelliteDeclaration
13
+ } from "./chunk-FT5Y4VSP.js";
14
14
  import {
15
15
  isBaseLive,
16
16
  liveBaseIdSet
@@ -23,7 +23,7 @@ import {
23
23
  buildPersistedIndexCallbacks,
24
24
  encodeVecId,
25
25
  syncTierSearch
26
- } from "./chunk-PWPYO73B.js";
26
+ } from "./chunk-6RDTG6E5.js";
27
27
  import {
28
28
  SchemaUpdateGate
29
29
  } from "./chunk-6LJY7X5A.js";
@@ -31,19 +31,19 @@ import {
31
31
  NO_CLASSIFIED,
32
32
  guardClassifiedCompat,
33
33
  resolveClassifiedFields
34
- } from "./chunk-DAFBJS4Y.js";
34
+ } from "./chunk-7P4LL3JH.js";
35
35
  import {
36
36
  NO_TIERS,
37
37
  classifySealedShred,
38
38
  syncDerivedOutputs
39
- } from "./chunk-RQ4ZI4ZI.js";
39
+ } from "./chunk-QITP2JGX.js";
40
40
  import {
41
41
  NO_PORTABILITY
42
- } from "./chunk-BLBAQRBM.js";
42
+ } from "./chunk-NIKQQXI2.js";
43
43
  import {
44
44
  NO_CARGO,
45
45
  runDrainBarrier
46
- } from "./chunk-TG634KCO.js";
46
+ } from "./chunk-QTMZDMJ6.js";
47
47
  import {
48
48
  resolveManagedSecret,
49
49
  saveSealedSecret
@@ -54,15 +54,15 @@ import {
54
54
  import {
55
55
  derivePersistedSchema,
56
56
  isZod4Schema
57
- } from "./chunk-6ZNSB3H6.js";
57
+ } from "./chunk-3LYMOSY7.js";
58
58
  import {
59
59
  CustodyApi,
60
60
  NO_CUSTODY
61
- } from "./chunk-TS5XLBZR.js";
61
+ } from "./chunk-NMYH55MW.js";
62
62
  import {
63
63
  DEFAULT_POSTURE,
64
64
  ViaGraph
65
- } from "./chunk-4ZKNC6A6.js";
65
+ } from "./chunk-QQL6XPPG.js";
66
66
  import {
67
67
  buildLookupAltIndex,
68
68
  buildLookupSnapshotRows,
@@ -86,30 +86,30 @@ import {
86
86
  selfWriteFieldEqual,
87
87
  touchFor,
88
88
  updateReferencingRecords
89
- } from "./chunk-LRRX57UA.js";
89
+ } from "./chunk-4MSNAB64.js";
90
90
  import {
91
91
  OverlayedCollection
92
- } from "./chunk-ZTLOXFPB.js";
92
+ } from "./chunk-Y2PTKKIN.js";
93
93
  import {
94
94
  INDEXED_STORE_POLICY,
95
95
  NO_SYNC
96
96
  } from "./chunk-55LKVALY.js";
97
97
  import {
98
98
  NO_ATTESTATION
99
- } from "./chunk-5GQEU4DN.js";
99
+ } from "./chunk-IJV56FWY.js";
100
100
  import {
101
101
  NO_CONSENT
102
102
  } from "./chunk-PEOZ34EM.js";
103
103
  import {
104
104
  NO_PERIODS
105
- } from "./chunk-ZFG5EBI3.js";
105
+ } from "./chunk-F2WWHKO7.js";
106
106
  import {
107
107
  PERIODS_COLLECTION,
108
108
  PERIOD_ARCHIVES_COLLECTION,
109
109
  PERIOD_FREEZES_COLLECTION,
110
110
  PERIOD_TARGET_PURGES_COLLECTION,
111
111
  periodExclusiveUpperBound
112
- } from "./chunk-NM5UYF6Q.js";
112
+ } from "./chunk-SBGXQK5I.js";
113
113
  import {
114
114
  NO_SHADOW
115
115
  } from "./chunk-SMY5X46Z.js";
@@ -118,9 +118,8 @@ import {
118
118
  } from "./chunk-DZFQVICS.js";
119
119
  import {
120
120
  TxContext,
121
- bestEffortRevert,
122
- revertExecuted
123
- } from "./chunk-GTYFIVIZ.js";
121
+ bestEffortRevert
122
+ } from "./chunk-NWK6SVBM.js";
124
123
  import {
125
124
  lazy
126
125
  } from "./chunk-5D2ALSM5.js";
@@ -128,29 +127,29 @@ import {
128
127
  InvertedIndex,
129
128
  MemoryIndexStore,
130
129
  NO_SEARCH
131
- } from "./chunk-KYRDJI5O.js";
130
+ } from "./chunk-YA7Y3EZP.js";
132
131
  import {
133
132
  NO_SEQUENCE,
134
133
  SEQUENCE_COLLECTION,
135
134
  compileSequenceFormat,
136
135
  resolveSequenceKey
137
- } from "./chunk-NBXFCQX4.js";
136
+ } from "./chunk-RQILGK3N.js";
138
137
  import {
139
138
  Query,
140
139
  ScanBuilder
141
- } from "./chunk-WBKZUO5V.js";
140
+ } from "./chunk-QMCWYN6O.js";
142
141
  import {
143
142
  EXPORT_AUDIT_COLLECTION,
144
143
  NO_BLOBS,
145
144
  createExportBlobsHandle,
146
145
  runCompaction
147
- } from "./chunk-WUHEP3HH.js";
146
+ } from "./chunk-XX7YB5BI.js";
148
147
  import {
149
148
  LazyQuery,
150
149
  NO_INDEXING,
151
150
  decodeIdxId,
152
151
  encodeIdxId
153
- } from "./chunk-L3YYLT4E.js";
152
+ } from "./chunk-ALUVACKT.js";
154
153
  import {
155
154
  IMPLICIT_LAZY,
156
155
  Lru,
@@ -170,7 +169,7 @@ import {
170
169
  } from "./chunk-PVEWA2DU.js";
171
170
  import {
172
171
  dictCollectionName
173
- } from "./chunk-OWHP3H5C.js";
172
+ } from "./chunk-MPW6AHTC.js";
174
173
  import {
175
174
  NO_I18N,
176
175
  getAtPath,
@@ -178,11 +177,11 @@ import {
178
177
  isDictKeyDescriptor,
179
178
  isI18nTextDescriptor,
180
179
  isStaticDictDescriptor
181
- } from "./chunk-UADPR6F4.js";
180
+ } from "./chunk-5EKL6BXI.js";
182
181
  import {
183
182
  isViaInstalled,
184
183
  viaBinder
185
- } from "./chunk-6UBZ6I5Z.js";
184
+ } from "./chunk-DDB626I7.js";
186
185
  import {
187
186
  NO_TEAM,
188
187
  describeAllUsersAuth,
@@ -205,7 +204,7 @@ import {
205
204
  saveShamirRecoveryEntries,
206
205
  updateAuthenticator,
207
206
  writeMagicLinkGrant
208
- } from "./chunk-ZNWSG7XC.js";
207
+ } from "./chunk-IHYSIPEK.js";
209
208
  import {
210
209
  assertKeyringOpenAllowed,
211
210
  buildRecipientKeyringFile,
@@ -220,15 +219,15 @@ import {
220
219
  listUsers,
221
220
  loadKeyring,
222
221
  updateKeyringIdentity
223
- } from "./chunk-Q5YJCVJY.js";
222
+ } from "./chunk-FZAP4JNC.js";
224
223
  import {
225
224
  persistDirectoryConfig,
226
225
  readDirectoryConfig
227
- } from "./chunk-2BET5QTS.js";
226
+ } from "./chunk-6PFST3FC.js";
228
227
  import {
229
228
  NO_BROKER,
230
229
  buildCredentialBrokerHandle
231
- } from "./chunk-IXNCZTWA.js";
230
+ } from "./chunk-PWEMRXPO.js";
232
231
  import {
233
232
  NO_SESSION
234
233
  } from "./chunk-VKQCVU2Z.js";
@@ -242,10 +241,10 @@ import {
242
241
  assertCutoverTierSafe,
243
242
  assertTierWritable,
244
243
  liveRecordIsElevated
245
- } from "./chunk-JYJFGD2H.js";
244
+ } from "./chunk-GYJRDALN.js";
246
245
  import {
247
246
  sha256Hex
248
- } from "./chunk-DQZXPGGZ.js";
247
+ } from "./chunk-V3EGXDFN.js";
249
248
  import {
250
249
  NO_FORGET,
251
250
  addSubjectRef,
@@ -254,10 +253,10 @@ import {
254
253
  readDottedPath,
255
254
  rebuildSubjectIndex,
256
255
  removeSubjectRef
257
- } from "./chunk-ZHDSUZQU.js";
256
+ } from "./chunk-V4O6YZSP.js";
258
257
  import {
259
258
  NO_SEALED_RECORD
260
- } from "./chunk-QD46HPZG.js";
259
+ } from "./chunk-U2ID5A2I.js";
261
260
  import {
262
261
  RecordCodec,
263
262
  SEALED_CEK_NS,
@@ -268,7 +267,7 @@ import {
268
267
  queryByDet,
269
268
  resolveStableCek,
270
269
  validateSchemaInput
271
- } from "./chunk-SU6SGWXM.js";
270
+ } from "./chunk-623QEHDB.js";
272
271
  import {
273
272
  buildDeleteMarker,
274
273
  buildTombstone,
@@ -277,7 +276,7 @@ import {
277
276
  } from "./chunk-EFJAAFBW.js";
278
277
  import {
279
278
  encrypt
280
- } from "./chunk-AKKRXT23.js";
279
+ } from "./chunk-RPWMDIGK.js";
281
280
  import {
282
281
  NOYDB_FORMAT_VERSION,
283
282
  SealedHandle
@@ -321,8 +320,9 @@ import {
321
320
  UniqueConstraintError,
322
321
  UnsupportedIndexOptionError,
323
322
  UnsupportedTierCompositionError,
324
- ValidationError
325
- } from "./chunk-QZWTRENR.js";
323
+ ValidationError,
324
+ isConflictError
325
+ } from "./chunk-AR5D76T2.js";
326
326
 
327
327
  // src/with-commit/tx/strategy.ts
328
328
  var NOT_ENABLED = new Error(
@@ -1710,6 +1710,109 @@ function buildDescription(input) {
1710
1710
  };
1711
1711
  }
1712
1712
 
1713
+ // src/kernel/put-many-atomic.ts
1714
+ var toRevertLeg = ({ op, priorEnvelope }) => ({
1715
+ vaultName: op.vaultName,
1716
+ collectionName: op.collectionName,
1717
+ id: op.id,
1718
+ prior: priorEnvelope
1719
+ });
1720
+ async function runPutManyAtomic(ctx, entries) {
1721
+ const { store, vault, name } = ctx;
1722
+ const priors = /* @__PURE__ */ new Map();
1723
+ let duplicateId = false;
1724
+ for (const [id, , opts] of entries) {
1725
+ if (priors.has(id)) duplicateId = true;
1726
+ else priors.set(id, await store.get(vault, name, id));
1727
+ if (opts?.expectedVersion !== void 0) {
1728
+ const actual = priors.get(id)?._v ?? 0;
1729
+ if (actual !== opts.expectedVersion) {
1730
+ throw new ConflictError(
1731
+ actual,
1732
+ `putMany atomic: ${vault}/${name}/${id} expected v${opts.expectedVersion}, found v${actual}`
1733
+ );
1734
+ }
1735
+ }
1736
+ }
1737
+ if (!duplicateId && store.capabilities?.txAtomic === true && typeof store.tx === "function" && ctx.host._txAtomicSafe("put")) {
1738
+ return commitViaStoreTx(ctx, entries, priors);
1739
+ }
1740
+ return commitSequentially(ctx, entries, priors);
1741
+ }
1742
+ async function commitViaStoreTx(ctx, entries, priors) {
1743
+ const { host, store, vault, name } = ctx;
1744
+ await host._assertWriteGates();
1745
+ const executed = [];
1746
+ const legs = [];
1747
+ for (const [id, record] of entries) {
1748
+ const prior = priors.get(id) ?? null;
1749
+ executed.push({ op: { type: "put", vaultName: vault, collectionName: name, id }, priorEnvelope: prior });
1750
+ const prepared = await host._preparePut(id, record);
1751
+ legs.push({
1752
+ prepared,
1753
+ // Every leg carries CAS against the Phase-1 snapshot, so a writer
1754
+ // landing between prepare and the batch reaching the store loses.
1755
+ txOp: { type: "put", vault, collection: name, id, expectedVersion: prior?._v ?? 0, envelope: prepared.envelope }
1756
+ });
1757
+ }
1758
+ await store.tx(legs.map((l) => l.txOp));
1759
+ try {
1760
+ for (const leg of legs) {
1761
+ await host._finalizePut(leg.prepared);
1762
+ await host._fireAtomicAfterWrite("put", leg.prepared);
1763
+ }
1764
+ } catch (err) {
1765
+ await bestEffortRevert(executed.map(toRevertLeg), store);
1766
+ for (const { op } of [...executed].reverse()) {
1767
+ try {
1768
+ await host._invalidateCacheEntry(op.id);
1769
+ } catch {
1770
+ }
1771
+ }
1772
+ throw err;
1773
+ }
1774
+ return { ok: true, success: entries.map(([id]) => id), failures: [] };
1775
+ }
1776
+ async function commitSequentially(ctx, entries, priors) {
1777
+ const { host, store, vault, name, derivationSource } = ctx;
1778
+ const txCtx = derivationSource?.createTxContext() ?? null;
1779
+ if (txCtx !== null && derivationSource) {
1780
+ derivationSource.setActiveTxContext(txCtx);
1781
+ }
1782
+ const localExecuted = [];
1783
+ try {
1784
+ for (const [id, record] of entries) {
1785
+ const entry = {
1786
+ op: { type: "put", vaultName: vault, collectionName: name, id },
1787
+ priorEnvelope: priors.get(id) ?? null
1788
+ };
1789
+ if (txCtx !== null) txCtx._executed.push(entry);
1790
+ else localExecuted.push(entry);
1791
+ await host.put(id, record);
1792
+ }
1793
+ return { ok: true, success: entries.map(([id]) => id), failures: [] };
1794
+ } catch (err) {
1795
+ const executedForRevert = txCtx !== null ? txCtx._executed : localExecuted;
1796
+ await bestEffortRevert(executedForRevert.map(toRevertLeg), store);
1797
+ for (const { op } of [...executedForRevert].reverse()) {
1798
+ if (op.vaultName !== vault) continue;
1799
+ try {
1800
+ if (op.collectionName === name) {
1801
+ await host._invalidateCacheEntry(op.id);
1802
+ } else if (derivationSource) {
1803
+ await derivationSource.getCollection(op.collectionName)._invalidateCacheEntry(op.id);
1804
+ }
1805
+ } catch {
1806
+ }
1807
+ }
1808
+ throw err;
1809
+ } finally {
1810
+ if (txCtx !== null && derivationSource) {
1811
+ derivationSource.clearActiveTxContext(txCtx);
1812
+ }
1813
+ }
1814
+ }
1815
+
1713
1816
  // src/kernel/via/compose.ts
1714
1817
  function via(...descriptors) {
1715
1818
  if (descriptors.length === 0) {
@@ -2174,7 +2277,7 @@ function resolveCollectionConfig(opts) {
2174
2277
  }
2175
2278
 
2176
2279
  // src/with-formula/computed/lazy.ts
2177
- var loadComputed = lazy(() => import("./computed-AB45PS4V.js"));
2280
+ var loadComputed = lazy(() => import("./computed-YOQCGUCS.js"));
2178
2281
  async function loadEvalComputedFields() {
2179
2282
  return (await loadComputed()).evalComputedFields;
2180
2283
  }
@@ -2952,7 +3055,7 @@ var Collection = class {
2952
3055
  }
2953
3056
  await this.onAccess?.("find", "*");
2954
3057
  if (hits.length === 0) return [];
2955
- const { verifyDigestField } = await import("./verify-7XWHJWUN.js");
3058
+ const { verifyDigestField } = await import("./verify-JEIXSK5U.js");
2956
3059
  const policy = {
2957
3060
  normalize: spec.verifyNormalize ?? "password",
2958
3061
  notLastN: spec.notLastN ?? 0,
@@ -3158,7 +3261,7 @@ var Collection = class {
3158
3261
  }
3159
3262
  }
3160
3263
  if (this.materializedViewSource !== void 0) {
3161
- const { resolveStaleMVOnRead } = await import("./stale-T3V7XEOB.js");
3264
+ const { resolveStaleMVOnRead } = await import("./stale-U3WO5MYN.js");
3162
3265
  await resolveStaleMVOnRead(this.materializedViewSource, this.name, this.#dispatchCtx({ collection: this.name, id: "resolve-on-read" }));
3163
3266
  }
3164
3267
  let record;
@@ -3688,7 +3791,7 @@ var Collection = class {
3688
3791
  */
3689
3792
  async dispatchMaterializedViews(id, record, wave) {
3690
3793
  if (this.materializedViewSource === void 0) return;
3691
- const { dispatchMaterializedViews } = await import("./dispatch-6TV3DGO6.js");
3794
+ const { dispatchMaterializedViews } = await import("./dispatch-VNR3TLBX.js");
3692
3795
  return dispatchMaterializedViews(this.#mvDispatchCtx(this.materializedViewSource), id, record, wave);
3693
3796
  }
3694
3797
  /**
@@ -3861,7 +3964,7 @@ var Collection = class {
3861
3964
  * dispatch wave's per-target dedup; `undefined` on the local-write path (byte-identical). */
3862
3965
  async dispatchDerivations(id, record, version, wave) {
3863
3966
  if (this.derivationSource === void 0) return;
3864
- const { dispatchDerivations } = await import("./dispatch-W7NWQ637.js");
3967
+ const { dispatchDerivations } = await import("./dispatch-TKV4UCKB.js");
3865
3968
  return dispatchDerivations({
3866
3969
  ...this.#derivationDeleteCtx(this.derivationSource),
3867
3970
  via: this.via,
@@ -4186,7 +4289,7 @@ var Collection = class {
4186
4289
  */
4187
4290
  async dispatchArrayDerivationsOnDelete(id, eraseRecordShapeToo = false) {
4188
4291
  if (this.derivationSource === void 0) return 0;
4189
- const { dispatchArrayDerivationsOnDelete } = await import("./dispatch-W7NWQ637.js");
4292
+ const { dispatchArrayDerivationsOnDelete } = await import("./dispatch-TKV4UCKB.js");
4190
4293
  return dispatchArrayDerivationsOnDelete(this.#derivationDeleteCtx(this.derivationSource), id, eraseRecordShapeToo);
4191
4294
  }
4192
4295
  /**
@@ -4200,7 +4303,7 @@ var Collection = class {
4200
4303
  */
4201
4304
  async dispatchMaterializedViewsOnDelete(id) {
4202
4305
  if (this.materializedViewSource === void 0) return { deleted: 0, residueUndecodable: [], residueDeclined: [] };
4203
- const { dispatchMaterializedViewsOnDelete } = await import("./dispatch-6TV3DGO6.js");
4306
+ const { dispatchMaterializedViewsOnDelete } = await import("./dispatch-VNR3TLBX.js");
4204
4307
  return dispatchMaterializedViewsOnDelete(this.#mvDispatchCtx(this.materializedViewSource), id);
4205
4308
  }
4206
4309
  /**
@@ -4220,7 +4323,7 @@ var Collection = class {
4220
4323
  );
4221
4324
  }
4222
4325
  if (this.materializedViewSource !== void 0) {
4223
- const { resolveStaleMVOnRead } = await import("./stale-T3V7XEOB.js");
4326
+ const { resolveStaleMVOnRead } = await import("./stale-U3WO5MYN.js");
4224
4327
  await resolveStaleMVOnRead(this.materializedViewSource, this.name, this.#dispatchCtx({ collection: this.name, id: "resolve-on-read" }));
4225
4328
  }
4226
4329
  await this.ensureHydrated();
@@ -4308,8 +4411,11 @@ var Collection = class {
4308
4411
  * **True tx-atomic putMany** — pass `{ atomic: true }` to switch
4309
4412
  * to the transaction executor: pre-flight CAS against every
4310
4413
  * item's `expectedVersion`, then commit all ops with best-effort
4311
- * revert on mid-batch failure. Atomic mode throws on failure rather
4312
- * than returning a mixed-results object.
4414
+ * revert on mid-batch failure. On a store that declares `txAtomic`
4415
+ * the whole batch is instead submitted as ONE `store.tx()` call with
4416
+ * per-leg CAS (#921) — genuinely all-or-nothing, with history/ledger/
4417
+ * change events firing after the batch is durable. Atomic mode throws
4418
+ * on failure rather than returning a mixed-results object.
4313
4419
  *
4314
4420
  * ## Change events
4315
4421
  *
@@ -4334,66 +4440,20 @@ var Collection = class {
4334
4440
  return { ok: failures.length === 0, success, failures };
4335
4441
  }
4336
4442
  /**
4337
- * Atomic-mode implementation of {@link putMany}. Pre-flights every
4338
- * `expectedVersion`, executes all puts in declaration order, and
4339
- * reverts executed ops via the raw adapter on mid-batch failure.
4340
- * See `runTransaction` for the shared semantics + crash-window caveat.
4443
+ * Atomic-mode implementation of {@link putMany} both branches live in
4444
+ * `kernel/put-many-atomic.ts`: #921 delegates the batch through ONE
4445
+ * `store.tx()` on a `txAtomic` store when the single-collection
4446
+ * reduction of the #906 gate admits it (store bits + no duplicate ids +
4447
+ * `_txAtomicSafe('put')`); anything else keeps the sequential pre-flight
4448
+ * → execute → best-effort-revert loop.
4341
4449
  *
4342
4450
  * @internal
4343
4451
  */
4344
- async putManyAtomic(entries) {
4345
- const priors = /* @__PURE__ */ new Map();
4346
- for (const [id, , opts] of entries) {
4347
- if (!priors.has(id)) {
4348
- priors.set(id, await this.adapter.get(this.vault, this.name, id));
4349
- }
4350
- if (opts?.expectedVersion !== void 0) {
4351
- const env = priors.get(id) ?? null;
4352
- const actual = env?._v ?? 0;
4353
- if (actual !== opts.expectedVersion) {
4354
- throw new ConflictError(
4355
- actual,
4356
- `putMany atomic: ${this.vault}/${this.name}/${id} expected v${opts.expectedVersion}, found v${actual}`
4357
- );
4358
- }
4359
- }
4360
- }
4361
- const txCtx = this.derivationSource?.createTxContext() ?? null;
4362
- if (txCtx !== null && this.derivationSource) {
4363
- this.derivationSource.setActiveTxContext(txCtx);
4364
- }
4365
- const localExecuted = [];
4366
- try {
4367
- for (const [id, record] of entries) {
4368
- const entry = {
4369
- op: { type: "put", vaultName: this.vault, collectionName: this.name, id },
4370
- priorEnvelope: priors.get(id) ?? null
4371
- };
4372
- if (txCtx !== null) txCtx._executed.push(entry);
4373
- else localExecuted.push(entry);
4374
- await this.put(id, record);
4375
- }
4376
- return { ok: true, success: entries.map(([id]) => id), failures: [] };
4377
- } catch (err) {
4378
- const executedForRevert = txCtx !== null ? txCtx._executed : localExecuted;
4379
- await revertExecuted(executedForRevert, this.adapter);
4380
- for (const { op } of [...executedForRevert].reverse()) {
4381
- if (op.vaultName !== this.vault) continue;
4382
- try {
4383
- if (op.collectionName === this.name) {
4384
- await this._invalidateCacheEntry(op.id);
4385
- } else if (this.derivationSource) {
4386
- await this.derivationSource.getCollection(op.collectionName)._invalidateCacheEntry(op.id);
4387
- }
4388
- } catch {
4389
- }
4390
- }
4391
- throw err;
4392
- } finally {
4393
- if (txCtx !== null && this.derivationSource) {
4394
- this.derivationSource.clearActiveTxContext(txCtx);
4395
- }
4396
- }
4452
+ putManyAtomic(entries) {
4453
+ return runPutManyAtomic(
4454
+ { host: this, store: this.adapter, vault: this.vault, name: this.name, derivationSource: this.derivationSource },
4455
+ entries
4456
+ );
4397
4457
  }
4398
4458
  /**
4399
4459
  * Get many records in one call. Returns a `Map<id, T | null>` —
@@ -5373,14 +5433,14 @@ var Collection = class {
5373
5433
  /** C-A/R10: persist the classified marker once per classified handle (store I/O in config-drift.ts). */
5374
5434
  async _ensureClassifiedMarker() {
5375
5435
  if (this._markerPersisted || this.vdigFields === null) return;
5376
- const { persistClassifiedMarkerForFields } = await import("./classified-marker-LE54HWSX.js");
5436
+ const { persistClassifiedMarkerForFields } = await import("./classified-marker-ZALWKOBC.js");
5377
5437
  await persistClassifiedMarkerForFields(this.adapter, this.vault, this.name, this.vdigFields, await this.getDEK(this.name));
5378
5438
  this._markerPersisted = true;
5379
5439
  }
5380
5440
  /** C-A/R10 drift signal — the marker's declared digest-only set, memoized to one store read per handle (see config-drift.ts). */
5381
5441
  async _classifiedMarkerDigestOnly() {
5382
5442
  if (this._markerDigestOnlyCache !== void 0) return this._markerDigestOnlyCache;
5383
- const { readClassifiedMarkerDigestOnly } = await import("./classified-marker-LE54HWSX.js");
5443
+ const { readClassifiedMarkerDigestOnly } = await import("./classified-marker-ZALWKOBC.js");
5384
5444
  this._markerDigestOnlyCache = await readClassifiedMarkerDigestOnly(this.adapter, this.vault, this.name, await this.getDEK(this.name));
5385
5445
  return this._markerDigestOnlyCache;
5386
5446
  }
@@ -5479,11 +5539,33 @@ var Collection = class {
5479
5539
  await this.schemaFence?.assertWritable(this.name);
5480
5540
  }
5481
5541
  // @internal #906 — the two refusals `put()`/`delete()` assert BEFORE anything else: the schema-update gate (an opt-in but persistent `reject` decision) and the schema fence (stale generation → MigrationRequiredError; draining/migrating vault or pending per-collection cutover → SchemaFenceError). Neither lives in the prepare halves, and the atomic commit path calls those directly — so it asserts here, per op, mirroring put()/delete() exactly (the fence does a fresh store read per call, so per-op matches today's cost model). Deliberately NOT moved into the prepare halves: that would double-assert on the OCC path.
5542
+ /**
5543
+ * @internal #931 — the after-write OBSERVERS `put()`/`delete()` fire in
5544
+ * their wrappers (user `onAfterWrite` hooks, then the `afterPut`/
5545
+ * `afterDelete` observe bus), replayed for one atomic-path leg after its
5546
+ * finalize. Neither can refuse a completed write, so since #931 they no
5547
+ * longer gate `_txAtomicSafe`; skipping them silently would still be a
5548
+ * policy hole (forget's subject index and the cross-tab write relay are
5549
+ * both wired this way), so the atomic path calls this per leg. The
5550
+ * WriteEvent is built from the prepared carrier — same prior basis the
5551
+ * wrappers use — and the same re-entrancy guards apply (`runAfter`
5552
+ * suppresses nested hook firing; the bus gate checks `dispatching`).
5553
+ */
5554
+ async _fireAtomicAfterWrite(opType, prepared) {
5555
+ const hooksActive = this.#hooksActive();
5556
+ const busPoint = opType === "put" ? "afterPut" : "afterDelete";
5557
+ const busActive = (this.subsystemBus?.hasHandlers(busPoint) ?? false) && !(this.subsystemBus?.dispatching ?? false);
5558
+ if (!hooksActive && !busActive) return;
5559
+ const base = { vault: this.vault, collection: this.name, userId: this.keyring.userId, timestamp: Date.now(), txId: this.#txIdForHook() };
5560
+ const event = opType === "put" ? { ...base, op: prepared.prior ? "update" : "create", docId: prepared.id, before: prepared.prior?.record ?? null, after: prepared.event, baseVersion: prepared.prior?.version ?? 0, version: prepared.version } : { ...base, op: "delete", docId: prepared.id, before: prepared.existing?.record ?? null, after: null, baseVersion: prepared.existing?.version ?? 0, version: (prepared.existing?.version ?? 0) + 1 };
5561
+ if (hooksActive) await this.writeHooks.runAfter(event);
5562
+ if (busActive) await this.subsystemBus.dispatch(busPoint, event);
5563
+ }
5482
5564
  _txAtomicSafe(opType) {
5483
- if (this.materializedViewSource !== void 0 && this.materializedViewSource.registry().mvsForSource(this.name).length > 0 || this.derivationSource !== void 0 && this.derivationSource.registry().strategiesForSource(this.name).length > 0 || this.crdtMode !== void 0 || this.uniqueConstraints !== null || this.#hooksActive() || (this.subsystemBus?.hasHandlers(opType === "put" ? "afterPut" : "afterDelete") ?? false)) return false;
5484
- return opType === "put" ? Object.keys(this._refs).length === 0 : this.refEnforcer === void 0;
5565
+ if (this.materializedViewSource !== void 0 && this.materializedViewSource.registry().mvsForSource(this.name).length > 0 || this.derivationSource !== void 0 && this.derivationSource.registry().strategiesForSource(this.name).length > 0 || this.crdtMode !== void 0 || this.uniqueConstraints !== null || this.writeHooks !== void 0 && this.writeHooks.hasBeforeHandlers && !this.writeHooks.suppressed) return false;
5566
+ return opType === "put" ? Object.keys(this._refs).length === 0 : this.refEnforcer === void 0 || !this.refEnforcer._deleteCascadesPossible(this.name);
5485
5567
  }
5486
- // @internal #893/#906-prep atomic-commit eligibility gate (Task 4) — false on any derivation/MV source (any lifecycle), CRDT mode, unique constraints, or refs on this write direction. Put uses precise outbound `_refs`; delete deliberately uses blanket `refEnforcer` presence, NOT `refRegistry.getInbound()` — `enforceRefsOnDelete` (with-shape/links/vault-facade.ts) cascades from THREE sources (lookup-ref edges, classic inbound refs, managed links), and only the blanket check is >= as strict as all three. #906: also false while user write-hooks or an `afterPut`/`afterDelete` bus handler are live note both signals are db-GLOBAL (one `onAfterWrite` anywhere, including the auto-registered cross-tab write relay, keeps every collection on the OCC path) both fire in `put()`/`delete()`, which the atomic path bypasses (a `beforeWrite` hook can REFUSE a write, so silently skipping them would be a policy hole). See atomic-eligibility.ts.
5568
+ // @internal #893/#906-prep atomic-commit eligibility gate (Task 4) — false on any derivation/MV source (any lifecycle), CRDT mode, unique constraints, or refs on this write direction. Put uses precise outbound `_refs`; delete (#922) consults the enforcer's `_deleteCascadesPossible(name)` — Vault unions ALL THREE cascade sources `enforceRefsOnDelete` (with-shape/links/vault-facade.ts) fires from (lookup-ref edges, classic inbound refs, managed links); anything narrower (e.g. `getInbound` alone) would admit unsafe atomic deletes, because `_prepareDelete` runs those cascades DURING prepare. #931 narrows #906's hooks blanket: only BEFORE-hooks gate (they can REFUSE a write, which only `put()`/`delete()` honors); after-hooks and the `afterPut`/`afterDelete` observe bus cannot refuse, so the atomic path fires them itself post-finalize via `_fireAtomicAfterWrite` instead of forfeiting the batch (the pre-#931 db-global blanket cost multi-tab write-relay and forget-subject apps the atomic path entirely). See atomic-eligibility.ts.
5487
5569
  _reconcileReadState(patch) {
5488
5570
  if (patch.dictKeyFields) this.dictKeyFields = { ...patch.dictKeyFields, ...this.dictKeyFields };
5489
5571
  if (patch.i18nFields) this.i18nFields = { ...patch.i18nFields, ...this.i18nFields };
@@ -5889,7 +5971,7 @@ var DeferredNumberingStore = class {
5889
5971
  try {
5890
5972
  await this.writeJson(NUMBERING_HEAD_COLLECTION, series, { series, lastSerial: serial, watermark: now.earliest }, headEnv?._v ?? 0);
5891
5973
  } catch (err) {
5892
- if (err instanceof ConflictError) return [];
5974
+ if (isConflictError(err)) return [];
5893
5975
  throw err;
5894
5976
  }
5895
5977
  for (const { id, entry } of settled) {
@@ -6833,7 +6915,7 @@ var VaultLinks = class {
6833
6915
  // src/with-shape/links/lazy-handle.ts
6834
6916
  function makeLazyLinkSetHandle(d) {
6835
6917
  let engine = null;
6836
- const load = () => engine ??= import("./link-set-CGYC3OH5.js").then(
6918
+ const load = () => engine ??= import("./link-set-7F5ZPDEB.js").then(
6837
6919
  ({ LinkSet }) => new LinkSet(d.adapter, d.vault, d.name, d.spec, d.encrypted, d.getDEK, d.actor, d.emitter, d.endpointExists)
6838
6920
  );
6839
6921
  return {
@@ -7371,7 +7453,7 @@ function declareSatellite(ctx, collectionName, options, existingRegistry) {
7371
7453
  ctx.forEachSyncEngine((e) => e.remirrorPairResolvers([spec.base, spec.satellite]));
7372
7454
  const registry = reg;
7373
7455
  const baseSchema = ctx.getBaseSchema(spec.base);
7374
- void import("./post-register-LY35EDTJ.js").then((m) => m.postRegister(ctx.adapter, ctx.vaultName, spec, ctx.getDEK, baseSchema, registry)).catch(() => {
7456
+ void import("./post-register-PQSY544J.js").then((m) => m.postRegister(ctx.adapter, ctx.vaultName, spec, ctx.getDEK, baseSchema, registry)).catch(() => {
7375
7457
  });
7376
7458
  return reg;
7377
7459
  }
@@ -8327,7 +8409,7 @@ var Vault = class {
8327
8409
  const strategies = options.schemaUpdate ?? [];
8328
8410
  const work = (async () => {
8329
8411
  const dek = await this.getDEK(collectionName);
8330
- const { persistSchemaIfNeeded } = await import("./register-6RIBIT3I.js");
8412
+ const { persistSchemaIfNeeded } = await import("./register-S3ECUZPV.js");
8331
8413
  const result = await persistSchemaIfNeeded({
8332
8414
  store: this.adapter,
8333
8415
  vault: this.name,
@@ -8476,7 +8558,7 @@ var Vault = class {
8476
8558
  const work = (async () => {
8477
8559
  try {
8478
8560
  const dek = await this.getDEK(collectionName);
8479
- await (await import("./register-6RIBIT3I.js")).persistSchemaIfNeeded({
8561
+ await (await import("./register-S3ECUZPV.js")).persistSchemaIfNeeded({
8480
8562
  store: this.adapter,
8481
8563
  vault: this.name,
8482
8564
  collectionName,
@@ -9230,6 +9312,27 @@ var Vault = class {
9230
9312
  async enforceRefsOnDelete(collectionName, id) {
9231
9313
  return this.linksEnforcer.enforceRefsOnDelete(this.graph, collectionName, id);
9232
9314
  }
9315
+ /**
9316
+ * #922 — can a delete on `collectionName` trigger ANY cross-record work in
9317
+ * `enforceRefsOnDelete` above? Unions ALL THREE of its cascade sources —
9318
+ * lookup-ref edges (`graph.referencingEdgesOf`), classic inbound refs
9319
+ * (`refRegistry.getInbound`), and managed link sets whose either endpoint
9320
+ * is this collection. `Collection._txAtomicSafe('delete')` consults this
9321
+ * instead of the pre-#922 blanket enforcer-presence check: `_prepareDelete`
9322
+ * runs those cascades DURING prepare (not abortable), so a delete may take
9323
+ * the atomic tx path only when all three sources are provably absent.
9324
+ * Registry state only — no store reads, safe to call at commit time.
9325
+ *
9326
+ * @internal
9327
+ */
9328
+ _deleteCascadesPossible(collectionName) {
9329
+ if (this.graph.referencingEdgesOf(collectionName).length > 0) return true;
9330
+ if (this.refRegistry.getInbound(collectionName).length > 0) return true;
9331
+ for (const spec of this.linkRegistry.values()) {
9332
+ if (spec.a === collectionName || spec.b === collectionName) return true;
9333
+ }
9334
+ return false;
9335
+ }
9233
9336
  // ─── Join resolver) ────────────────────
9234
9337
  /**
9235
9338
  * Look up the `RefDescriptor` the left collection declared for a
@@ -9663,7 +9766,7 @@ var Vault = class {
9663
9766
  async _initDerivations(handles) {
9664
9767
  if (handles.length === 0) return;
9665
9768
  const [{ DerivationRegistry }, { ReadOnlyVaultFacade }] = await Promise.all([
9666
- import("./registry-RON4WHAP.js"),
9769
+ import("./registry-FZOHKUME.js"),
9667
9770
  import("./read-only-facade-CHCKSEPD.js")
9668
9771
  ]);
9669
9772
  const registry = new DerivationRegistry();
@@ -9695,7 +9798,7 @@ var Vault = class {
9695
9798
  */
9696
9799
  async _initMaterializedViews(handles) {
9697
9800
  if (handles.length === 0) return;
9698
- const { MaterializedViewRegistry } = await import("./registry-MUSL4AW6.js");
9801
+ const { MaterializedViewRegistry } = await import("./registry-RISV7IDZ.js");
9699
9802
  const registry = new MaterializedViewRegistry();
9700
9803
  this.materializedViewRegistry = registry;
9701
9804
  const db = this;
@@ -9720,7 +9823,7 @@ var Vault = class {
9720
9823
  */
9721
9824
  async _initOverlayedViews(handles) {
9722
9825
  if (handles.length === 0) return;
9723
- const { OverlayedViewRegistry } = await import("./registry-7Y5WF7GS.js");
9826
+ const { OverlayedViewRegistry } = await import("./registry-ZE35A7WC.js");
9724
9827
  const registry = new OverlayedViewRegistry();
9725
9828
  const mvRegistry = this.materializedViewRegistry;
9726
9829
  const overlayNames = /* @__PURE__ */ new Set();
@@ -9767,14 +9870,14 @@ var Vault = class {
9767
9870
  if (!reg) {
9768
9871
  throw new Error(`refreshView: no MV registered with name "${name}"`);
9769
9872
  }
9770
- const { MaterializedViewExecutor } = await import("./executor-FPHKWDWT.js");
9873
+ const { MaterializedViewExecutor } = await import("./executor-M4ZZNX6S.js");
9771
9874
  const result = await MaterializedViewExecutor.refresh(reg, {
9772
9875
  getCollection: (n) => this.collection(n),
9773
9876
  getActiveTxContext: () => this.noydb._activeTxContextOrNull,
9774
9877
  getQueryContext: () => this,
9775
9878
  dispatchCtx: this._dispatchCtx({ collection: name, id: "refreshView" })
9776
9879
  });
9777
- const { clearMVStaleFully } = await import("./stale-T3V7XEOB.js");
9880
+ const { clearMVStaleFully } = await import("./stale-U3WO5MYN.js");
9778
9881
  await clearMVStaleFully(this.adapter, this.name, registry, name);
9779
9882
  return result;
9780
9883
  }
@@ -9787,7 +9890,7 @@ var Vault = class {
9787
9890
  if (registry === null) return { derived: 0, failed: 0, skippedFrozen: 0 };
9788
9891
  const strategies = registry.strategiesForSource(sourceCollection);
9789
9892
  if (strategies.length === 0) return { derived: 0, failed: 0, skippedFrozen: 0 };
9790
- const { DerivationExecutor } = await import("./executor-IEBLTBCW.js");
9893
+ const { DerivationExecutor } = await import("./executor-TI64S4LE.js");
9791
9894
  const sourceColl = this.collection(sourceCollection);
9792
9895
  const records = await sourceColl.list();
9793
9896
  const ctx = { vault: this.derivationFacade ?? new (await import("./read-only-facade-CHCKSEPD.js")).ReadOnlyVaultFacade(this, "derivation") };
@@ -9814,7 +9917,7 @@ var Vault = class {
9814
9917
  if (!outSpec) continue;
9815
9918
  const outputColl = this.collection(outSpec.collection);
9816
9919
  if (out.kind === "array") {
9817
- const { loadFanoutSidecar, saveFanoutSidecar } = await import("./fanout-sidecar-273RDMYS.js");
9920
+ const { loadFanoutSidecar, saveFanoutSidecar } = await import("./fanout-sidecar-WYXO6QQT.js");
9818
9921
  const prior = await loadFanoutSidecar(this.adapter, this.name, spec.source, id, key, this.getDEK, this.encrypted);
9819
9922
  const prevKeys = new Set(prior?.keys ?? []);
9820
9923
  const newKeysList = out.entries.map((e) => e.key);
@@ -10041,7 +10144,7 @@ var Vault = class {
10041
10144
  * collection.
10042
10145
  */
10043
10146
  async delegate(opts) {
10044
- const { issueDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-JDUMAF6L.js");
10147
+ const { issueDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-WMO3Q3O5.js");
10045
10148
  if (!this.keyring.kek) {
10046
10149
  throw new ValidationError(
10047
10150
  "issueDelegation: keyring.kek is null \u2014 issuing a delegation requires a tier-1 unlock. Re-authenticate at tier 1 (secret) first."
@@ -10063,7 +10166,7 @@ var Vault = class {
10063
10166
  * if the id does not exist.
10064
10167
  */
10065
10168
  async revokeDelegation(id) {
10066
- const { revokeDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-JDUMAF6L.js");
10169
+ const { revokeDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-WMO3Q3O5.js");
10067
10170
  await revokeDelegation(this.adapter, this.name, id);
10068
10171
  void DELEGATIONS_COLLECTION;
10069
10172
  }
@@ -10311,7 +10414,7 @@ var Vault = class {
10311
10414
  * @see docs/superpowers/specs/2026-05-22-schema-dump-design.md
10312
10415
  */
10313
10416
  async dumpSchema(opts = {}) {
10314
- const { dumpVaultSchema } = await import("./walk-G3NFEP5L.js");
10417
+ const { dumpVaultSchema } = await import("./walk-BF36V4SR.js");
10315
10418
  return dumpVaultSchema(this, opts);
10316
10419
  }
10317
10420
  /**
@@ -10461,7 +10564,7 @@ var Vault = class {
10461
10564
  * both modes round-trip cleanly.
10462
10565
  */
10463
10566
  async dump() {
10464
- const { dumpVault } = await import("./backup-X7F3TCFV.js");
10567
+ const { dumpVault } = await import("./backup-ENTZYW37.js");
10465
10568
  return dumpVault(this.backupContext());
10466
10569
  }
10467
10570
  /**
@@ -10513,7 +10616,7 @@ var Vault = class {
10513
10616
  * — there's no chain to verify against.
10514
10617
  */
10515
10618
  async load(backupJson) {
10516
- const { loadVault } = await import("./backup-X7F3TCFV.js");
10619
+ const { loadVault } = await import("./backup-ENTZYW37.js");
10517
10620
  return loadVault(this.backupContext(), backupJson);
10518
10621
  }
10519
10622
  /**
@@ -10545,7 +10648,7 @@ var Vault = class {
10545
10648
  * way to detect tampering of an in-place vault.
10546
10649
  */
10547
10650
  async verifyBackupIntegrity() {
10548
- const { verifyBackupIntegrity } = await import("./backup-X7F3TCFV.js");
10651
+ const { verifyBackupIntegrity } = await import("./backup-ENTZYW37.js");
10549
10652
  return verifyBackupIntegrity(this.backupContext());
10550
10653
  }
10551
10654
  /**
@@ -10763,7 +10866,7 @@ var Vault = class {
10763
10866
  * is the live validator object, not a serialization of it).
10764
10867
  */
10765
10868
  async exportJSON(opts = {}) {
10766
- const { exportVaultJSON } = await import("./backup-X7F3TCFV.js");
10869
+ const { exportVaultJSON } = await import("./backup-ENTZYW37.js");
10767
10870
  return exportVaultJSON(this.backupContext(), opts);
10768
10871
  }
10769
10872
  };
@@ -10879,6 +10982,14 @@ var WriteHookRegistry = class {
10879
10982
  get hasHandlers() {
10880
10983
  return this.#before.length > 0 || this.#after.length > 0;
10881
10984
  }
10985
+ /**
10986
+ * True when any BEFORE hook is registered — the refusal-capable kind. #931:
10987
+ * the atomic-commit eligibility gate keys on this alone; after-hooks are
10988
+ * observers and fire post-finalize on the atomic path instead of gating it.
10989
+ */
10990
+ get hasBeforeHandlers() {
10991
+ return this.#before.length > 0;
10992
+ }
10882
10993
  onBeforeWrite(handler) {
10883
10994
  this.#before.push(handler);
10884
10995
  return () => {
@@ -12652,7 +12763,7 @@ var Noydb = class {
12652
12763
  if (!facade) return;
12653
12764
  const ctx = { existing, vault: facade, userId: e.userId, role: e.role };
12654
12765
  await registry.runChecks(e.collection, incoming, ctx);
12655
- const { GuardExecutor } = await import("./executor-RM7XWQDU.js");
12766
+ const { GuardExecutor } = await import("./executor-YBK3I2OT.js");
12656
12767
  for (const g of guards) {
12657
12768
  await GuardExecutor.checkFrozenFields(g, e.docId, existing, incoming, e.computedFieldNames);
12658
12769
  }
@@ -13990,7 +14101,7 @@ async function createNoydb(options) {
13990
14101
  throw new ValidationError("A secret (secret) or getKeyring callback is required when encryption is enabled");
13991
14102
  }
13992
14103
  if (!options.coordinationStrategy) options = { ...options, coordinationStrategy: await createDefaultCoordinationProvider(options.store) };
13993
- if (!options.userApiFactory) options = { ...options, userApiFactory: (await import("./api-SI2IVBQO.js")).createUserApi };
14104
+ if (!options.userApiFactory) options = { ...options, userApiFactory: (await import("./api-M7REIE7H.js")).createUserApi };
13994
14105
  if (!options.policyFactory) {
13995
14106
  const policyModule = await import("./policy/index.js");
13996
14107
  options = { ...options, policyFactory: policyModule.createNoydbPolicy, policyCheckGateFn: policyModule.checkGate };
@@ -14025,4 +14136,4 @@ export {
14025
14136
  Noydb,
14026
14137
  createNoydb
14027
14138
  };
14028
- //# sourceMappingURL=chunk-ZBYFMI6D.js.map
14139
+ //# sourceMappingURL=chunk-5UKUOMO6.js.map