@noy-db/hub 0.3.0-pre.5 → 0.3.0-pre.6

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 (340) hide show
  1. package/dist/adapter/index.d.ts +1 -1
  2. package/dist/adapter/index.js +1 -1
  3. package/dist/aggregate/index.d.ts +2 -2
  4. package/dist/aggregate/index.js +4 -4
  5. package/dist/api-OQ65LUSK.js +20 -0
  6. package/dist/as/index.d.ts +3 -3
  7. package/dist/as/index.js +9 -9
  8. package/dist/at/index.d.ts +1 -1
  9. package/dist/attestation/index.d.ts +2 -2
  10. package/dist/attestation/index.js +16 -16
  11. package/dist/{backup-OPONO6Q5.js → backup-Y3RMFGVX.js} +9 -9
  12. package/dist/blobs/index.d.ts +3 -3
  13. package/dist/blobs/index.js +8 -8
  14. package/dist/bundle/index.d.ts +4 -4
  15. package/dist/bundle/index.js +17 -17
  16. package/dist/{bundle-Bs13EZtX.d.ts → bundle-BPOSpGZG.d.ts} +1 -1
  17. package/dist/by/index.js +2 -2
  18. package/dist/cargo/index.d.ts +3 -3
  19. package/dist/cargo/index.js +19 -19
  20. package/dist/{chunk-BMQOH7MM.js → chunk-26FSVNBL.js} +2 -2
  21. package/dist/{chunk-ZBDK7T6X.js → chunk-3IMGBWP7.js} +5 -5
  22. package/dist/{chunk-LPRPVCNY.js → chunk-3UUXDQPM.js} +2 -2
  23. package/dist/{chunk-AF5ZRTZ4.js → chunk-47C4CI7R.js} +2 -2
  24. package/dist/{chunk-P27Z66EB.js → chunk-4I4UNXHM.js} +4 -4
  25. package/dist/{chunk-ULIHDPKL.js → chunk-55LSDABW.js} +2 -2
  26. package/dist/{chunk-P5WXDYMD.js → chunk-5GQE5IDB.js} +4 -4
  27. package/dist/{chunk-TLJOJBZD.js → chunk-5HZULLHE.js} +2 -2
  28. package/dist/chunk-5JQMX2EH.js +50 -0
  29. package/dist/chunk-5JQMX2EH.js.map +1 -0
  30. package/dist/{chunk-PGFY7IRW.js → chunk-5UOPIPZC.js} +3 -3
  31. package/dist/{chunk-6HNKCKFZ.js → chunk-65FW3ALF.js} +4 -4
  32. package/dist/{chunk-ZKF6HH7V.js → chunk-6P5AJ2ZS.js} +2 -2
  33. package/dist/{chunk-QNTEDPWP.js → chunk-6PALJTC2.js} +3 -3
  34. package/dist/{chunk-GBTUANXF.js → chunk-6Z435B6N.js} +5 -5
  35. package/dist/{chunk-Z3FZC5GV.js → chunk-73C4RPMX.js} +3 -3
  36. package/dist/{chunk-VMJ5URU7.js → chunk-7A7LTSJR.js} +5 -5
  37. package/dist/{chunk-OVO2RZAE.js → chunk-7AGLCOYE.js} +10 -10
  38. package/dist/{chunk-XYYW64LB.js → chunk-7CZ6YXMO.js} +2 -2
  39. package/dist/{chunk-RDHAGBEB.js → chunk-7KTL4RHZ.js} +3 -3
  40. package/dist/{chunk-4K3MQ5S3.js → chunk-BASCPHNM.js} +2 -2
  41. package/dist/{chunk-TL7QR5T6.js → chunk-BYS45GOJ.js} +3 -3
  42. package/dist/{chunk-P2LDXRGP.js → chunk-C2ZKWL37.js} +2 -2
  43. package/dist/{chunk-BKGIWGCX.js → chunk-C4NOLA5X.js} +2 -2
  44. package/dist/{chunk-EWR7HL3K.js → chunk-C57J6AWN.js} +30 -5
  45. package/dist/{chunk-EWR7HL3K.js.map → chunk-C57J6AWN.js.map} +1 -1
  46. package/dist/{chunk-TB5RNNJ4.js → chunk-C6A2DPRE.js} +4 -4
  47. package/dist/{chunk-SW56GSYC.js → chunk-CHK5VVMI.js} +2 -2
  48. package/dist/{chunk-A4DWPOP3.js → chunk-CYWF3JJE.js} +10 -10
  49. package/dist/{chunk-IEUIUSBO.js → chunk-D6ADQ4QL.js} +577 -82
  50. package/dist/chunk-D6ADQ4QL.js.map +1 -0
  51. package/dist/{chunk-H7RYPVMJ.js → chunk-DBBP35OP.js} +2 -2
  52. package/dist/{chunk-A5DYVMDR.js → chunk-E7MAS736.js} +3 -3
  53. package/dist/{chunk-3Y4QLJ6K.js → chunk-EU7HDMT3.js} +2 -2
  54. package/dist/{chunk-T65UZXR6.js → chunk-FCOZ7DEC.js} +3 -3
  55. package/dist/{chunk-HBKDR7R3.js → chunk-GEK6UGOJ.js} +2 -2
  56. package/dist/{chunk-PI5CG2OV.js → chunk-GGFT2XFF.js} +4 -4
  57. package/dist/chunk-GYGLAVCX.js +19 -0
  58. package/dist/chunk-GYGLAVCX.js.map +1 -0
  59. package/dist/{chunk-HY6ZGGEC.js → chunk-HJZ3CTZ2.js} +2 -2
  60. package/dist/{chunk-GXGK22QU.js → chunk-HU55NPHZ.js} +2 -2
  61. package/dist/{chunk-U24XHXNK.js → chunk-I6JJ6VJS.js} +2 -2
  62. package/dist/{chunk-3QRQOBS7.js → chunk-I7GTYPWF.js} +2 -2
  63. package/dist/{chunk-N5YVZHCB.js → chunk-II6DLDZM.js} +2 -2
  64. package/dist/{chunk-XJR3COJO.js → chunk-IVIGZTFH.js} +4 -4
  65. package/dist/{chunk-Z7KI4WHR.js → chunk-LFGJG4XZ.js} +2 -2
  66. package/dist/{chunk-ZKYMKF2S.js → chunk-ML5UP7YN.js} +5 -5
  67. package/dist/{chunk-ZROMNP7Q.js → chunk-MOQ5M46U.js} +2 -2
  68. package/dist/{chunk-GQOT6QJR.js → chunk-MT4YWJRW.js} +5 -5
  69. package/dist/{chunk-7SY3PTED.js → chunk-NL4HVTNO.js} +3 -3
  70. package/dist/{chunk-GZZL5R73.js → chunk-OCVO2V63.js} +4 -4
  71. package/dist/{chunk-U23JUUPX.js → chunk-OJ64XMPJ.js} +10 -2
  72. package/dist/{chunk-U23JUUPX.js.map → chunk-OJ64XMPJ.js.map} +1 -1
  73. package/dist/{chunk-VFRNWE5P.js → chunk-OLVIGEHQ.js} +6 -6
  74. package/dist/{chunk-HMXLN43G.js → chunk-OWGAXPRE.js} +2 -2
  75. package/dist/{chunk-T2EGAXPM.js → chunk-PAJCRV7O.js} +2 -2
  76. package/dist/{chunk-5MRE3C4Q.js → chunk-PLQCXH75.js} +2 -2
  77. package/dist/{chunk-RTS23VIJ.js → chunk-PYIUDUGS.js} +2 -2
  78. package/dist/{chunk-6UOSONVI.js → chunk-QQQE6QUO.js} +8 -8
  79. package/dist/{chunk-TYGW5TOR.js → chunk-RIZQZKU6.js} +4 -4
  80. package/dist/{chunk-VPCMJ5Z4.js → chunk-RLP65PI3.js} +5 -5
  81. package/dist/{chunk-6RXPSMKR.js → chunk-RNYDHIQL.js} +3 -3
  82. package/dist/{chunk-S2WKOCTU.js → chunk-RXUFMTD5.js} +2 -2
  83. package/dist/{chunk-SAJJWVNQ.js → chunk-S2IDC6MO.js} +38 -6
  84. package/dist/chunk-S2IDC6MO.js.map +1 -0
  85. package/dist/{chunk-Z5PIUYNB.js → chunk-S55MJQUQ.js} +5 -5
  86. package/dist/{chunk-O2DB4C3M.js → chunk-SXLMLECV.js} +3 -3
  87. package/dist/{chunk-OPTFANOX.js → chunk-TSAT3E7Y.js} +3 -3
  88. package/dist/{chunk-M66NAZA4.js → chunk-TWJVOYU2.js} +3 -3
  89. package/dist/{chunk-43ISXURO.js → chunk-U7LV2DUN.js} +2 -2
  90. package/dist/{chunk-FH52CDEW.js → chunk-UB3XHGFG.js} +5 -5
  91. package/dist/{chunk-TCIUO62Z.js → chunk-UWZ7O4NR.js} +2 -2
  92. package/dist/{chunk-LEA7WJEZ.js → chunk-UZZFV3O3.js} +7 -7
  93. package/dist/{chunk-P3NGV5RV.js → chunk-V76PHWLE.js} +2 -2
  94. package/dist/{chunk-UOEWDCUX.js → chunk-VFQOE76I.js} +2 -2
  95. package/dist/{chunk-VRPBEOWU.js → chunk-VIWOGJ2O.js} +2 -2
  96. package/dist/{chunk-5EWYUR5P.js → chunk-VK6OC22R.js} +2 -2
  97. package/dist/{chunk-ZT4GWVTX.js → chunk-WAL4MRBK.js} +4 -4
  98. package/dist/{chunk-H5XRIJX3.js → chunk-WAW4VFS7.js} +4 -4
  99. package/dist/{chunk-44UTIDE2.js → chunk-WQAT24C2.js} +6 -6
  100. package/dist/{chunk-OJU3CPFA.js → chunk-XDWNF4BS.js} +8 -8
  101. package/dist/{chunk-G7RDYYTE.js → chunk-XW5LZYV4.js} +2 -2
  102. package/dist/{chunk-LIP6JWYK.js → chunk-YTCCC6NG.js} +3 -3
  103. package/dist/{chunk-OFBFAVLI.js → chunk-YXGIPYH4.js} +52 -6
  104. package/dist/chunk-YXGIPYH4.js.map +1 -0
  105. package/dist/{chunk-NQVZB3S7.js → chunk-ZHK3F5RB.js} +5 -5
  106. package/dist/{chunk-G4MGYGSS.js → chunk-ZRJBLWKQ.js} +5 -5
  107. package/dist/classified/index.d.ts +3 -3
  108. package/dist/classified/index.js +3 -3
  109. package/dist/{collection-facade-THH4ASGX.js → collection-facade-5V3JS7SD.js} +13 -13
  110. package/dist/{computed-BMMEFRFJ.js → computed-6FOFXQPE.js} +3 -3
  111. package/dist/{config-drift-3UIJVI5G.js → config-drift-SWZNEH5H.js} +3 -3
  112. package/dist/consent/index.d.ts +2 -2
  113. package/dist/consent/index.js +7 -7
  114. package/dist/crdt/index.d.ts +2 -2
  115. package/dist/dead-filter-MGWMNRO2.js +28 -0
  116. package/dist/dead-filter-MGWMNRO2.js.map +1 -0
  117. package/dist/{delegation-BQNIEHZE.js → delegation-AUY42TGU.js} +9 -9
  118. package/dist/derivations/index.d.ts +3 -3
  119. package/dist/derivations/index.js +9 -9
  120. package/dist/derive-FWSEWWI7.js +21 -0
  121. package/dist/{dev-unlock-Cqd5Xv5J.d.ts → dev-unlock-DxecHstJ.d.ts} +1 -1
  122. package/dist/{enclave-YN6223OG.js → enclave-UYZGSE2C.js} +8 -8
  123. package/dist/executor-EUPYHCLU.js +9 -0
  124. package/dist/executor-KZ4B3PRT.js +9 -0
  125. package/dist/executor-XWPD5PIM.js +21 -0
  126. package/dist/export-accessible-M54OI6FO.js +23 -0
  127. package/dist/{extract-partition-6JGY3KYR.js → extract-partition-MIHAL6PP.js} +13 -13
  128. package/dist/{fanout-sidecar-WS22Q5WH.js → fanout-sidecar-SSEW7BQB.js} +7 -7
  129. package/dist/find-OH4BEULF.js +11 -0
  130. package/dist/forget/index.js +7 -7
  131. package/dist/guards/index.d.ts +3 -3
  132. package/dist/guards/index.js +6 -6
  133. package/dist/{hash-D8Q5MJLA.d.ts → hash-umqwdLhO.d.ts} +1 -1
  134. package/dist/history/index.d.ts +3 -3
  135. package/dist/history/index.js +9 -9
  136. package/dist/i18n/index.d.ts +2 -2
  137. package/dist/i18n/index.js +11 -11
  138. package/dist/in/index.d.ts +1 -1
  139. package/dist/{index-D4GQe1Rx.d.ts → index-B-LKCpm6.d.ts} +103 -4
  140. package/dist/{index-DRxk8q_7.d.ts → index-zdEVWlkZ.d.ts} +2 -2
  141. package/dist/index.d.ts +13 -13
  142. package/dist/index.js +114 -112
  143. package/dist/index.js.map +1 -1
  144. package/dist/indexing/index.d.ts +2 -2
  145. package/dist/indexing/index.js +4 -4
  146. package/dist/issue-PHWTGH2G.js +19 -0
  147. package/dist/kernel/index.d.ts +2 -2
  148. package/dist/kernel/index.js +10 -10
  149. package/dist/lazy/index.d.ts +2 -2
  150. package/dist/{ledger-KZWBKAG5.js → ledger-IWWY7IIC.js} +9 -9
  151. package/dist/liberate-QDTNV7SM.js +24 -0
  152. package/dist/{link-set-UQEIYQAM.js → link-set-HJOC7GB7.js} +9 -9
  153. package/dist/materialized-views/index.d.ts +3 -3
  154. package/dist/materialized-views/index.js +13 -13
  155. package/dist/{mime-magic-DmwT7OzZ.d.ts → mime-magic-C_O9KsAk.d.ts} +1 -1
  156. package/dist/noydb-Y5L74IDJ.js +62 -0
  157. package/dist/on/index.d.ts +1 -1
  158. package/dist/on/index.js +7 -7
  159. package/dist/overlay-views/index.d.ts +3 -3
  160. package/dist/overlay-views/index.js +4 -4
  161. package/dist/periods/index.d.ts +2 -2
  162. package/dist/periods/index.js +10 -10
  163. package/dist/pod/index.d.ts +2 -2
  164. package/dist/pod/index.js +9 -9
  165. package/dist/{policy-YIKUH4AD.js → policy-3ZKSGSRK.js} +3 -3
  166. package/dist/portability/index.d.ts +2 -2
  167. package/dist/portability/index.js +8 -8
  168. package/dist/post-register-BIXGCZ2M.js +55 -0
  169. package/dist/post-register-BIXGCZ2M.js.map +1 -0
  170. package/dist/{public-envelope-MRN5YYZZ.js → public-envelope-6UBQ4IUY.js} +3 -3
  171. package/dist/query/index.d.ts +1 -1
  172. package/dist/query/index.js +6 -6
  173. package/dist/register-OVONZ2MJ.js +23 -0
  174. package/dist/registry-AIEYUOSG.js +19 -0
  175. package/dist/registry-D5J7SVJ2.js +17 -0
  176. package/dist/registry-HSNQ4NBP.js +9 -0
  177. package/dist/{request-withdrawal-EHALV66Y.js → request-withdrawal-IHF64VIT.js} +12 -12
  178. package/dist/{reveal-TBLTFWQ2.js → reveal-B77Q2BJW.js} +5 -5
  179. package/dist/{revoke-MHAUAESM.js → revoke-BPPOUZPE.js} +9 -9
  180. package/dist/satellites/index.d.ts +5 -0
  181. package/dist/satellites/index.js +8 -0
  182. package/dist/sealed-record/index.d.ts +2 -2
  183. package/dist/sealed-record/index.js +10 -10
  184. package/dist/session/index.d.ts +3 -3
  185. package/dist/session/index.js +7 -7
  186. package/dist/shadow/index.d.ts +2 -2
  187. package/dist/shadow/index.js +2 -2
  188. package/dist/{signer-PQ74YXRY.js → signer-MNQEL27B.js} +8 -8
  189. package/dist/snapshots/index.d.ts +2 -2
  190. package/dist/snapshots/index.js +8 -8
  191. package/dist/{stale-7Q62KVI3.js → stale-COBBJORL.js} +2 -2
  192. package/dist/{storage-3FKGLQMC.js → storage-DVKYH7UU.js} +8 -8
  193. package/dist/storage-DVKYH7UU.js.map +1 -0
  194. package/dist/sync/index.d.ts +1 -1
  195. package/dist/sync/index.js +7 -7
  196. package/dist/team/index.d.ts +2 -2
  197. package/dist/team/index.js +13 -13
  198. package/dist/tiers/index.d.ts +1 -1
  199. package/dist/tiers/index.js +8 -8
  200. package/dist/to/index.d.ts +1 -1
  201. package/dist/to/index.js +1 -1
  202. package/dist/{transition-guard-C4hvR-Ac.d.ts → transition-guard-CzqWwVGP.d.ts} +1 -1
  203. package/dist/tx/index.d.ts +2 -2
  204. package/dist/tx/index.js +3 -3
  205. package/dist/util/index.js +1 -1
  206. package/dist/{validators-Ctgkj5qd.d.ts → validators-Bdiv0ucK.d.ts} +1 -1
  207. package/dist/{vault-diff-B1Ir6EGs.d.ts → vault-diff-BbZngJUP.d.ts} +1 -1
  208. package/dist/{verify-YB5LQHNA.js → verify-CAYGXYNO.js} +5 -5
  209. package/dist/{walk-T65TZDN2.js → walk-CVNXFUEF.js} +9 -9
  210. package/dist/with/index.d.ts +2 -2
  211. package/dist/with/index.js +9 -9
  212. package/dist/{with-materialized-view-Bp65kKdQ.d.ts → with-materialized-view-BmKXygt2.d.ts} +1 -1
  213. package/dist/{with-overlayed-view-BRhdQNrK.d.ts → with-overlayed-view-Bnwe7E75.d.ts} +1 -1
  214. package/dist/{with-rollup-bQRPc3y1.d.ts → with-rollup-JXTxc9cu.d.ts} +1 -1
  215. package/dist/{withdraw-accessible-JMX2TCPX.js → withdraw-accessible-5ALN3ZGM.js} +11 -11
  216. package/dist/withdraw-accessible-5ALN3ZGM.js.map +1 -0
  217. package/package.json +7 -3
  218. package/dist/api-JOXUNSKP.js +0 -20
  219. package/dist/chunk-IEUIUSBO.js.map +0 -1
  220. package/dist/chunk-OFBFAVLI.js.map +0 -1
  221. package/dist/chunk-SAJJWVNQ.js.map +0 -1
  222. package/dist/executor-CBTNU5VZ.js +0 -9
  223. package/dist/executor-DJHNSTIR.js +0 -9
  224. package/dist/executor-FGISLQIN.js +0 -21
  225. package/dist/export-accessible-P7SLRLK3.js +0 -23
  226. package/dist/find-RNBG7LBY.js +0 -11
  227. package/dist/issue-W5QG53B5.js +0 -19
  228. package/dist/liberate-AQ7OWBZZ.js +0 -24
  229. package/dist/noydb-WQZNAECY.js +0 -60
  230. package/dist/register-V5AQTXNI.js +0 -21
  231. package/dist/registry-IMNMHWTM.js +0 -17
  232. package/dist/registry-K6VUQXKV.js +0 -19
  233. package/dist/registry-ZVO3T4M5.js +0 -9
  234. /package/dist/{api-JOXUNSKP.js.map → api-OQ65LUSK.js.map} +0 -0
  235. /package/dist/{backup-OPONO6Q5.js.map → backup-Y3RMFGVX.js.map} +0 -0
  236. /package/dist/{chunk-BMQOH7MM.js.map → chunk-26FSVNBL.js.map} +0 -0
  237. /package/dist/{chunk-ZBDK7T6X.js.map → chunk-3IMGBWP7.js.map} +0 -0
  238. /package/dist/{chunk-LPRPVCNY.js.map → chunk-3UUXDQPM.js.map} +0 -0
  239. /package/dist/{chunk-AF5ZRTZ4.js.map → chunk-47C4CI7R.js.map} +0 -0
  240. /package/dist/{chunk-P27Z66EB.js.map → chunk-4I4UNXHM.js.map} +0 -0
  241. /package/dist/{chunk-ULIHDPKL.js.map → chunk-55LSDABW.js.map} +0 -0
  242. /package/dist/{chunk-P5WXDYMD.js.map → chunk-5GQE5IDB.js.map} +0 -0
  243. /package/dist/{chunk-TLJOJBZD.js.map → chunk-5HZULLHE.js.map} +0 -0
  244. /package/dist/{chunk-PGFY7IRW.js.map → chunk-5UOPIPZC.js.map} +0 -0
  245. /package/dist/{chunk-6HNKCKFZ.js.map → chunk-65FW3ALF.js.map} +0 -0
  246. /package/dist/{chunk-ZKF6HH7V.js.map → chunk-6P5AJ2ZS.js.map} +0 -0
  247. /package/dist/{chunk-QNTEDPWP.js.map → chunk-6PALJTC2.js.map} +0 -0
  248. /package/dist/{chunk-GBTUANXF.js.map → chunk-6Z435B6N.js.map} +0 -0
  249. /package/dist/{chunk-Z3FZC5GV.js.map → chunk-73C4RPMX.js.map} +0 -0
  250. /package/dist/{chunk-VMJ5URU7.js.map → chunk-7A7LTSJR.js.map} +0 -0
  251. /package/dist/{chunk-OVO2RZAE.js.map → chunk-7AGLCOYE.js.map} +0 -0
  252. /package/dist/{chunk-XYYW64LB.js.map → chunk-7CZ6YXMO.js.map} +0 -0
  253. /package/dist/{chunk-RDHAGBEB.js.map → chunk-7KTL4RHZ.js.map} +0 -0
  254. /package/dist/{chunk-4K3MQ5S3.js.map → chunk-BASCPHNM.js.map} +0 -0
  255. /package/dist/{chunk-TL7QR5T6.js.map → chunk-BYS45GOJ.js.map} +0 -0
  256. /package/dist/{chunk-P2LDXRGP.js.map → chunk-C2ZKWL37.js.map} +0 -0
  257. /package/dist/{chunk-BKGIWGCX.js.map → chunk-C4NOLA5X.js.map} +0 -0
  258. /package/dist/{chunk-TB5RNNJ4.js.map → chunk-C6A2DPRE.js.map} +0 -0
  259. /package/dist/{chunk-SW56GSYC.js.map → chunk-CHK5VVMI.js.map} +0 -0
  260. /package/dist/{chunk-A4DWPOP3.js.map → chunk-CYWF3JJE.js.map} +0 -0
  261. /package/dist/{chunk-H7RYPVMJ.js.map → chunk-DBBP35OP.js.map} +0 -0
  262. /package/dist/{chunk-A5DYVMDR.js.map → chunk-E7MAS736.js.map} +0 -0
  263. /package/dist/{chunk-3Y4QLJ6K.js.map → chunk-EU7HDMT3.js.map} +0 -0
  264. /package/dist/{chunk-T65UZXR6.js.map → chunk-FCOZ7DEC.js.map} +0 -0
  265. /package/dist/{chunk-HBKDR7R3.js.map → chunk-GEK6UGOJ.js.map} +0 -0
  266. /package/dist/{chunk-PI5CG2OV.js.map → chunk-GGFT2XFF.js.map} +0 -0
  267. /package/dist/{chunk-HY6ZGGEC.js.map → chunk-HJZ3CTZ2.js.map} +0 -0
  268. /package/dist/{chunk-GXGK22QU.js.map → chunk-HU55NPHZ.js.map} +0 -0
  269. /package/dist/{chunk-U24XHXNK.js.map → chunk-I6JJ6VJS.js.map} +0 -0
  270. /package/dist/{chunk-3QRQOBS7.js.map → chunk-I7GTYPWF.js.map} +0 -0
  271. /package/dist/{chunk-N5YVZHCB.js.map → chunk-II6DLDZM.js.map} +0 -0
  272. /package/dist/{chunk-XJR3COJO.js.map → chunk-IVIGZTFH.js.map} +0 -0
  273. /package/dist/{chunk-Z7KI4WHR.js.map → chunk-LFGJG4XZ.js.map} +0 -0
  274. /package/dist/{chunk-ZKYMKF2S.js.map → chunk-ML5UP7YN.js.map} +0 -0
  275. /package/dist/{chunk-ZROMNP7Q.js.map → chunk-MOQ5M46U.js.map} +0 -0
  276. /package/dist/{chunk-GQOT6QJR.js.map → chunk-MT4YWJRW.js.map} +0 -0
  277. /package/dist/{chunk-7SY3PTED.js.map → chunk-NL4HVTNO.js.map} +0 -0
  278. /package/dist/{chunk-GZZL5R73.js.map → chunk-OCVO2V63.js.map} +0 -0
  279. /package/dist/{chunk-VFRNWE5P.js.map → chunk-OLVIGEHQ.js.map} +0 -0
  280. /package/dist/{chunk-HMXLN43G.js.map → chunk-OWGAXPRE.js.map} +0 -0
  281. /package/dist/{chunk-T2EGAXPM.js.map → chunk-PAJCRV7O.js.map} +0 -0
  282. /package/dist/{chunk-5MRE3C4Q.js.map → chunk-PLQCXH75.js.map} +0 -0
  283. /package/dist/{chunk-RTS23VIJ.js.map → chunk-PYIUDUGS.js.map} +0 -0
  284. /package/dist/{chunk-6UOSONVI.js.map → chunk-QQQE6QUO.js.map} +0 -0
  285. /package/dist/{chunk-TYGW5TOR.js.map → chunk-RIZQZKU6.js.map} +0 -0
  286. /package/dist/{chunk-VPCMJ5Z4.js.map → chunk-RLP65PI3.js.map} +0 -0
  287. /package/dist/{chunk-6RXPSMKR.js.map → chunk-RNYDHIQL.js.map} +0 -0
  288. /package/dist/{chunk-S2WKOCTU.js.map → chunk-RXUFMTD5.js.map} +0 -0
  289. /package/dist/{chunk-Z5PIUYNB.js.map → chunk-S55MJQUQ.js.map} +0 -0
  290. /package/dist/{chunk-O2DB4C3M.js.map → chunk-SXLMLECV.js.map} +0 -0
  291. /package/dist/{chunk-OPTFANOX.js.map → chunk-TSAT3E7Y.js.map} +0 -0
  292. /package/dist/{chunk-M66NAZA4.js.map → chunk-TWJVOYU2.js.map} +0 -0
  293. /package/dist/{chunk-43ISXURO.js.map → chunk-U7LV2DUN.js.map} +0 -0
  294. /package/dist/{chunk-FH52CDEW.js.map → chunk-UB3XHGFG.js.map} +0 -0
  295. /package/dist/{chunk-TCIUO62Z.js.map → chunk-UWZ7O4NR.js.map} +0 -0
  296. /package/dist/{chunk-LEA7WJEZ.js.map → chunk-UZZFV3O3.js.map} +0 -0
  297. /package/dist/{chunk-P3NGV5RV.js.map → chunk-V76PHWLE.js.map} +0 -0
  298. /package/dist/{chunk-UOEWDCUX.js.map → chunk-VFQOE76I.js.map} +0 -0
  299. /package/dist/{chunk-VRPBEOWU.js.map → chunk-VIWOGJ2O.js.map} +0 -0
  300. /package/dist/{chunk-5EWYUR5P.js.map → chunk-VK6OC22R.js.map} +0 -0
  301. /package/dist/{chunk-ZT4GWVTX.js.map → chunk-WAL4MRBK.js.map} +0 -0
  302. /package/dist/{chunk-H5XRIJX3.js.map → chunk-WAW4VFS7.js.map} +0 -0
  303. /package/dist/{chunk-44UTIDE2.js.map → chunk-WQAT24C2.js.map} +0 -0
  304. /package/dist/{chunk-OJU3CPFA.js.map → chunk-XDWNF4BS.js.map} +0 -0
  305. /package/dist/{chunk-G7RDYYTE.js.map → chunk-XW5LZYV4.js.map} +0 -0
  306. /package/dist/{chunk-LIP6JWYK.js.map → chunk-YTCCC6NG.js.map} +0 -0
  307. /package/dist/{chunk-NQVZB3S7.js.map → chunk-ZHK3F5RB.js.map} +0 -0
  308. /package/dist/{chunk-G4MGYGSS.js.map → chunk-ZRJBLWKQ.js.map} +0 -0
  309. /package/dist/{collection-facade-THH4ASGX.js.map → collection-facade-5V3JS7SD.js.map} +0 -0
  310. /package/dist/{computed-BMMEFRFJ.js.map → computed-6FOFXQPE.js.map} +0 -0
  311. /package/dist/{config-drift-3UIJVI5G.js.map → config-drift-SWZNEH5H.js.map} +0 -0
  312. /package/dist/{delegation-BQNIEHZE.js.map → delegation-AUY42TGU.js.map} +0 -0
  313. /package/dist/{enclave-YN6223OG.js.map → derive-FWSEWWI7.js.map} +0 -0
  314. /package/dist/{executor-CBTNU5VZ.js.map → enclave-UYZGSE2C.js.map} +0 -0
  315. /package/dist/{executor-DJHNSTIR.js.map → executor-EUPYHCLU.js.map} +0 -0
  316. /package/dist/{executor-FGISLQIN.js.map → executor-KZ4B3PRT.js.map} +0 -0
  317. /package/dist/{export-accessible-P7SLRLK3.js.map → executor-XWPD5PIM.js.map} +0 -0
  318. /package/dist/{extract-partition-6JGY3KYR.js.map → export-accessible-M54OI6FO.js.map} +0 -0
  319. /package/dist/{find-RNBG7LBY.js.map → extract-partition-MIHAL6PP.js.map} +0 -0
  320. /package/dist/{fanout-sidecar-WS22Q5WH.js.map → fanout-sidecar-SSEW7BQB.js.map} +0 -0
  321. /package/dist/{issue-W5QG53B5.js.map → find-OH4BEULF.js.map} +0 -0
  322. /package/dist/{ledger-KZWBKAG5.js.map → issue-PHWTGH2G.js.map} +0 -0
  323. /package/dist/{liberate-AQ7OWBZZ.js.map → ledger-IWWY7IIC.js.map} +0 -0
  324. /package/dist/{link-set-UQEIYQAM.js.map → liberate-QDTNV7SM.js.map} +0 -0
  325. /package/dist/{noydb-WQZNAECY.js.map → link-set-HJOC7GB7.js.map} +0 -0
  326. /package/dist/{policy-YIKUH4AD.js.map → noydb-Y5L74IDJ.js.map} +0 -0
  327. /package/dist/{public-envelope-MRN5YYZZ.js.map → policy-3ZKSGSRK.js.map} +0 -0
  328. /package/dist/{register-V5AQTXNI.js.map → public-envelope-6UBQ4IUY.js.map} +0 -0
  329. /package/dist/{registry-IMNMHWTM.js.map → register-OVONZ2MJ.js.map} +0 -0
  330. /package/dist/{registry-K6VUQXKV.js.map → registry-AIEYUOSG.js.map} +0 -0
  331. /package/dist/{registry-ZVO3T4M5.js.map → registry-D5J7SVJ2.js.map} +0 -0
  332. /package/dist/{request-withdrawal-EHALV66Y.js.map → registry-HSNQ4NBP.js.map} +0 -0
  333. /package/dist/{revoke-MHAUAESM.js.map → request-withdrawal-IHF64VIT.js.map} +0 -0
  334. /package/dist/{reveal-TBLTFWQ2.js.map → reveal-B77Q2BJW.js.map} +0 -0
  335. /package/dist/{signer-PQ74YXRY.js.map → revoke-BPPOUZPE.js.map} +0 -0
  336. /package/dist/{stale-7Q62KVI3.js.map → satellites/index.js.map} +0 -0
  337. /package/dist/{storage-3FKGLQMC.js.map → signer-MNQEL27B.js.map} +0 -0
  338. /package/dist/{withdraw-accessible-JMX2TCPX.js.map → stale-COBBJORL.js.map} +0 -0
  339. /package/dist/{verify-YB5LQHNA.js.map → verify-CAYGXYNO.js.map} +0 -0
  340. /package/dist/{walk-T65TZDN2.js.map → walk-CVNXFUEF.js.map} +0 -0
@@ -1,3 +1,6 @@
1
+ import {
2
+ loadVaultPolicy
3
+ } from "./chunk-T45LAT2Y.js";
1
4
  import {
2
5
  jsonSchemaToFields
3
6
  } from "./chunk-TQ3REHVF.js";
@@ -6,20 +9,17 @@ import {
6
9
  SEQUENCE_COLLECTION,
7
10
  compileSequenceFormat,
8
11
  resolveSequenceKey
9
- } from "./chunk-P27Z66EB.js";
10
- import {
11
- loadVaultPolicy
12
- } from "./chunk-T45LAT2Y.js";
12
+ } from "./chunk-4I4UNXHM.js";
13
13
  import {
14
14
  LinkIntegrityError,
15
15
  isLinkCollectionName,
16
16
  linkCollectionName,
17
17
  linkRowKey
18
- } from "./chunk-P3NGV5RV.js";
18
+ } from "./chunk-V76PHWLE.js";
19
19
  import {
20
- derivePersistedSchema,
21
- isZod4Schema
22
- } from "./chunk-ULIHDPKL.js";
20
+ hashFields,
21
+ validateSatelliteDeclaration
22
+ } from "./chunk-5JQMX2EH.js";
23
23
  import {
24
24
  loadFence
25
25
  } from "./chunk-YFF2RP3X.js";
@@ -29,7 +29,20 @@ import {
29
29
  NO_SEARCH,
30
30
  VectorSet,
31
31
  buildPersistedIndexCallbacks
32
- } from "./chunk-A4DWPOP3.js";
32
+ } from "./chunk-CYWF3JJE.js";
33
+ import {
34
+ derivePersistedSchema,
35
+ isZod4Schema
36
+ } from "./chunk-55LSDABW.js";
37
+ import {
38
+ isBaseLive,
39
+ liveBaseIdSet
40
+ } from "./chunk-GYGLAVCX.js";
41
+ import {
42
+ CustodyApi,
43
+ NO_CARGO,
44
+ NO_CUSTODY
45
+ } from "./chunk-GGFT2XFF.js";
33
46
  import {
34
47
  ServiceBus,
35
48
  WriteHookRegistry,
@@ -37,50 +50,45 @@ import {
37
50
  assertCanImport,
38
51
  canExport,
39
52
  canImport
40
- } from "./chunk-7SY3PTED.js";
53
+ } from "./chunk-NL4HVTNO.js";
41
54
  import {
42
55
  NO_ATTESTATION
43
- } from "./chunk-Z7KI4WHR.js";
56
+ } from "./chunk-LFGJG4XZ.js";
44
57
  import {
45
58
  NO_CLASSIFIED,
46
59
  enforceClassifiedWrite,
47
60
  resolveClassifiedFields
48
- } from "./chunk-AF5ZRTZ4.js";
61
+ } from "./chunk-47C4CI7R.js";
49
62
  import {
50
63
  NO_TIERS,
51
64
  classifySealedShred
52
- } from "./chunk-VMJ5URU7.js";
65
+ } from "./chunk-7A7LTSJR.js";
53
66
  import {
54
67
  NO_PORTABILITY
55
- } from "./chunk-N5YVZHCB.js";
56
- import {
57
- CustodyApi,
58
- NO_CARGO,
59
- NO_CUSTODY
60
- } from "./chunk-PI5CG2OV.js";
68
+ } from "./chunk-II6DLDZM.js";
61
69
  import {
62
70
  runDrainBarrier
63
- } from "./chunk-3Y4QLJ6K.js";
71
+ } from "./chunk-EU7HDMT3.js";
64
72
  import {
65
73
  PERIODS_COLLECTION
66
- } from "./chunk-GZZL5R73.js";
74
+ } from "./chunk-OCVO2V63.js";
67
75
  import {
68
76
  TxContext,
69
77
  revertExecuted
70
- } from "./chunk-T65UZXR6.js";
78
+ } from "./chunk-FCOZ7DEC.js";
71
79
  import {
72
80
  OverlayedCollection
73
- } from "./chunk-ZROMNP7Q.js";
81
+ } from "./chunk-MOQ5M46U.js";
74
82
  import {
75
83
  EXPORT_AUDIT_COLLECTION,
76
84
  createExportBlobsHandle,
77
85
  runCompaction
78
- } from "./chunk-5MRE3C4Q.js";
86
+ } from "./chunk-PLQCXH75.js";
79
87
  import {
80
88
  LazyQuery,
81
89
  decodeIdxId,
82
90
  encodeIdxId
83
- } from "./chunk-QNTEDPWP.js";
91
+ } from "./chunk-6PALJTC2.js";
84
92
  import {
85
93
  IMPLICIT_LAZY,
86
94
  Lru,
@@ -93,7 +101,7 @@ import {
93
101
  import {
94
102
  isDictCollectionName,
95
103
  isStaticDictDescriptor
96
- } from "./chunk-44UTIDE2.js";
104
+ } from "./chunk-WQAT24C2.js";
97
105
  import {
98
106
  NO_TEAM,
99
107
  enrollAuthenticator,
@@ -104,7 +112,7 @@ import {
104
112
  rotatePassphrase,
105
113
  updateAuthenticator,
106
114
  writeMagicLinkGrant
107
- } from "./chunk-LEA7WJEZ.js";
115
+ } from "./chunk-UZZFV3O3.js";
108
116
  import {
109
117
  hasRecoveryEnrolled,
110
118
  hasStrongRecoveryEnrolled,
@@ -114,7 +122,7 @@ import {
114
122
  mintShamirRecoveryEntry,
115
123
  savePaperRecoveryEntries,
116
124
  saveShamirRecoveryEntries
117
- } from "./chunk-LPRPVCNY.js";
125
+ } from "./chunk-3UUXDQPM.js";
118
126
  import {
119
127
  INDEXED_STORE_POLICY
120
128
  } from "./chunk-VQNJ7UZL.js";
@@ -130,17 +138,17 @@ import {
130
138
  listUsers,
131
139
  loadKeyring,
132
140
  updateKeyringIdentity
133
- } from "./chunk-ZT4GWVTX.js";
141
+ } from "./chunk-WAL4MRBK.js";
134
142
  import {
135
143
  persistDirectoryConfig,
136
144
  readDirectoryConfig
137
- } from "./chunk-TB5RNNJ4.js";
145
+ } from "./chunk-C6A2DPRE.js";
138
146
  import {
139
147
  generateULID
140
148
  } from "./chunk-ZJADGNYF.js";
141
149
  import {
142
150
  sha256Hex
143
- } from "./chunk-M66NAZA4.js";
151
+ } from "./chunk-TWJVOYU2.js";
144
152
  import {
145
153
  NO_FORGET,
146
154
  addSubjectRef,
@@ -149,10 +157,10 @@ import {
149
157
  readDottedPath,
150
158
  rebuildSubjectIndex,
151
159
  removeSubjectRef
152
- } from "./chunk-O2DB4C3M.js";
160
+ } from "./chunk-SXLMLECV.js";
153
161
  import {
154
162
  NO_SEALED_RECORD
155
- } from "./chunk-G7RDYYTE.js";
163
+ } from "./chunk-XW5LZYV4.js";
156
164
  import {
157
165
  RecordCodec,
158
166
  SEALED_CEK_NS,
@@ -162,7 +170,7 @@ import {
162
170
  queryByDet,
163
171
  resolveStableCek,
164
172
  validateSchemaInput
165
- } from "./chunk-OVO2RZAE.js";
173
+ } from "./chunk-7AGLCOYE.js";
166
174
  import {
167
175
  buildTombstone,
168
176
  isTombstone
@@ -172,25 +180,25 @@ import {
172
180
  } from "./chunk-LN22XH4B.js";
173
181
  import {
174
182
  encrypt
175
- } from "./chunk-TLJOJBZD.js";
183
+ } from "./chunk-5HZULLHE.js";
176
184
  import {
177
185
  NO_AGGREGATE,
178
186
  Query,
179
187
  ScanBuilder
180
- } from "./chunk-GBTUANXF.js";
188
+ } from "./chunk-6Z435B6N.js";
181
189
  import {
182
190
  canonicalGroupKey
183
- } from "./chunk-P5WXDYMD.js";
191
+ } from "./chunk-5GQE5IDB.js";
184
192
  import {
185
193
  moneyRuntime,
186
194
  readPath
187
- } from "./chunk-ZKF6HH7V.js";
195
+ } from "./chunk-6P5AJ2ZS.js";
188
196
  import {
189
197
  getAtPath,
190
198
  resolvePolicy,
191
199
  setAtPathInPlace,
192
200
  stripI18nFilled
193
- } from "./chunk-4K3MQ5S3.js";
201
+ } from "./chunk-BASCPHNM.js";
194
202
  import {
195
203
  AlreadyElevatedError,
196
204
  AttestationError,
@@ -217,6 +225,7 @@ import {
217
225
  RecoveryNotEnrolledError,
218
226
  RecoveryProfileNotImplementedError,
219
227
  ReservedCollectionNameError,
228
+ SatelliteConfigError,
220
229
  SchemaFenceError,
221
230
  StaticDictReadonlyError,
222
231
  StoreCapabilityError,
@@ -227,7 +236,7 @@ import {
227
236
  UnknownDictCodeError,
228
237
  UnsupportedIndexOptionError,
229
238
  ValidationError
230
- } from "./chunk-U23JUUPX.js";
239
+ } from "./chunk-OJ64XMPJ.js";
231
240
 
232
241
  // src/port/by/default-provider.ts
233
242
  async function createDefaultCoordinationProvider(store) {
@@ -1060,7 +1069,7 @@ async function resolveStaleOnRead(accessor, outputCollection, id) {
1060
1069
  }
1061
1070
  const sourceWithId = { ...source, id };
1062
1071
  if (DerivationExecutor === null) {
1063
- ({ DerivationExecutor } = await import("./executor-CBTNU5VZ.js"));
1072
+ ({ DerivationExecutor } = await import("./executor-EUPYHCLU.js"));
1064
1073
  }
1065
1074
  const ctx = { vault: accessor.getReadOnlyFacade() };
1066
1075
  const result = await DerivationExecutor.run(spec, sourceWithId, 0, strategyHash, ctx);
@@ -1350,7 +1359,7 @@ function resolveCollectionConfig(opts) {
1350
1359
  // src/with-formula/computed/lazy.ts
1351
1360
  var fn = null;
1352
1361
  async function loadEvalComputedFields() {
1353
- fn ??= (await import("./computed-BMMEFRFJ.js")).evalComputedFields;
1362
+ fn ??= (await import("./computed-6FOFXQPE.js")).evalComputedFields;
1354
1363
  return fn;
1355
1364
  }
1356
1365
 
@@ -2188,7 +2197,7 @@ var Collection = class {
2188
2197
  }
2189
2198
  await this.onAccess?.("find", "*");
2190
2199
  if (hits.length === 0) return [];
2191
- const { verifyDigestField } = await import("./verify-YB5LQHNA.js");
2200
+ const { verifyDigestField } = await import("./verify-CAYGXYNO.js");
2192
2201
  const policy = {
2193
2202
  normalize: spec.verifyNormalize ?? "password",
2194
2203
  notLastN: spec.notLastN ?? 0,
@@ -2364,7 +2373,7 @@ var Collection = class {
2364
2373
  }
2365
2374
  }
2366
2375
  if (this.materializedViewSource !== void 0) {
2367
- const { resolveStaleMVOnRead } = await import("./stale-7Q62KVI3.js");
2376
+ const { resolveStaleMVOnRead } = await import("./stale-COBBJORL.js");
2368
2377
  await resolveStaleMVOnRead(this.materializedViewSource, this.name);
2369
2378
  }
2370
2379
  let record;
@@ -2927,7 +2936,7 @@ var Collection = class {
2927
2936
  if (mode === "eager") {
2928
2937
  if (executor === null) {
2929
2938
  ;
2930
- ({ MaterializedViewExecutor: executor } = await import("./executor-FGISLQIN.js"));
2939
+ ({ MaterializedViewExecutor: executor } = await import("./executor-XWPD5PIM.js"));
2931
2940
  }
2932
2941
  await executor.refresh(reg, {
2933
2942
  getCollection: (name) => this.materializedViewSource.getCollection(name),
@@ -2936,7 +2945,7 @@ var Collection = class {
2936
2945
  });
2937
2946
  } else if (mode === "lazy") {
2938
2947
  if (staleHelpers === null) {
2939
- staleHelpers = await import("./stale-7Q62KVI3.js");
2948
+ staleHelpers = await import("./stale-COBBJORL.js");
2940
2949
  }
2941
2950
  staleHelpers.markMVStale(registry, reg.spec.name);
2942
2951
  }
@@ -3121,7 +3130,7 @@ var Collection = class {
3121
3130
  continue;
3122
3131
  }
3123
3132
  if (DerivationExecutor === null) {
3124
- ({ DerivationExecutor } = await import("./executor-CBTNU5VZ.js"));
3133
+ ({ DerivationExecutor } = await import("./executor-EUPYHCLU.js"));
3125
3134
  }
3126
3135
  for (const run of runs) {
3127
3136
  const ctx = { vault: this.derivationSource.getReadOnlyFacade() };
@@ -3140,7 +3149,7 @@ var Collection = class {
3140
3149
  const outputCollection = this.derivationSource.getCollection(outSpec.collection);
3141
3150
  const txCtx = this.derivationSource.getActiveTxContext();
3142
3151
  if (out.kind === "array") {
3143
- const { loadFanoutSidecar, saveFanoutSidecar } = await import("./fanout-sidecar-WS22Q5WH.js");
3152
+ const { loadFanoutSidecar, saveFanoutSidecar } = await import("./fanout-sidecar-SSEW7BQB.js");
3144
3153
  const prior = await loadFanoutSidecar(this.adapter, this.vault, spec.source, run.runId, key, this.getDEK, this.storeCiphertext);
3145
3154
  const prevKeys = new Set(prior?.keys ?? []);
3146
3155
  const newKeysList = out.entries.map((e) => e.key);
@@ -3493,7 +3502,7 @@ var Collection = class {
3493
3502
  for (const [outputKey, outSpec] of Object.entries(spec.outputs)) {
3494
3503
  if (outSpec.shape !== "array") continue;
3495
3504
  if (helpers === null) {
3496
- helpers = await import("./fanout-sidecar-WS22Q5WH.js");
3505
+ helpers = await import("./fanout-sidecar-SSEW7BQB.js");
3497
3506
  }
3498
3507
  const sidecar = await helpers.loadFanoutSidecar(this.adapter, this.vault, spec.source, id, outputKey, this.getDEK, this.storeCiphertext);
3499
3508
  if (!sidecar) continue;
@@ -3527,7 +3536,7 @@ var Collection = class {
3527
3536
  if (mode === "eager") {
3528
3537
  if (executor === null) {
3529
3538
  ;
3530
- ({ MaterializedViewExecutor: executor } = await import("./executor-FGISLQIN.js"));
3539
+ ({ MaterializedViewExecutor: executor } = await import("./executor-XWPD5PIM.js"));
3531
3540
  }
3532
3541
  await executor.refresh(reg, {
3533
3542
  getCollection: (name) => this.materializedViewSource.getCollection(name),
@@ -3536,7 +3545,7 @@ var Collection = class {
3536
3545
  });
3537
3546
  } else if (mode === "lazy") {
3538
3547
  if (staleHelpers === null) {
3539
- staleHelpers = await import("./stale-7Q62KVI3.js");
3548
+ staleHelpers = await import("./stale-COBBJORL.js");
3540
3549
  }
3541
3550
  staleHelpers.markMVStale(registry, reg.spec.name);
3542
3551
  }
@@ -3559,7 +3568,7 @@ var Collection = class {
3559
3568
  );
3560
3569
  }
3561
3570
  if (this.materializedViewSource !== void 0) {
3562
- const { resolveStaleMVOnRead } = await import("./stale-7Q62KVI3.js");
3571
+ const { resolveStaleMVOnRead } = await import("./stale-COBBJORL.js");
3563
3572
  await resolveStaleMVOnRead(this.materializedViewSource, this.name);
3564
3573
  }
3565
3574
  await this.ensureHydrated();
@@ -4193,6 +4202,15 @@ var Collection = class {
4193
4202
  _invalidateCekCacheEntry(id) {
4194
4203
  this.cekCache?.remove(id);
4195
4204
  }
4205
+ /** @internal Satellite fan-out revert cleanup (spec #591): drop the sync dirty entry ('revert' is
4206
+ * onDirty-channel-only) and re-announce the RESTORED state as a plain put/delete — `subscribe()`
4207
+ * only understands those two actions, and the restored record may exist again. */
4208
+ async _compensateRevertedWrite(id) {
4209
+ await this._invalidateCacheEntry(id);
4210
+ await this.onDirty?.(this.name, id, "revert", 0);
4211
+ const restored = await this.get(id);
4212
+ this.emitter.emit("change", { vault: this.vault, collection: this.name, id, action: restored !== null ? "put" : "delete" });
4213
+ }
4196
4214
  async _invalidateCacheEntry(id) {
4197
4215
  if (this.lazy && this.lru) {
4198
4216
  this.lru.remove(id);
@@ -4704,14 +4722,14 @@ var Collection = class {
4704
4722
  /** C-A/R10: persist the classified marker once per classified handle (store I/O in config-drift.ts). */
4705
4723
  async _ensureClassifiedMarker() {
4706
4724
  if (this._markerPersisted || this.vdigFields === null) return;
4707
- const { persistClassifiedMarkerForFields } = await import("./config-drift-3UIJVI5G.js");
4725
+ const { persistClassifiedMarkerForFields } = await import("./config-drift-SWZNEH5H.js");
4708
4726
  await persistClassifiedMarkerForFields(this.adapter, this.vault, this.name, this.vdigFields, await this.getDEK(this.name));
4709
4727
  this._markerPersisted = true;
4710
4728
  }
4711
4729
  /** C-A/R10 drift signal — the marker's declared digest-only set, memoized to one store read per handle (see config-drift.ts). */
4712
4730
  async _classifiedMarkerDigestOnly() {
4713
4731
  if (this._markerDigestOnlyCache !== void 0) return this._markerDigestOnlyCache;
4714
- const { readClassifiedMarkerDigestOnly } = await import("./config-drift-3UIJVI5G.js");
4732
+ const { readClassifiedMarkerDigestOnly } = await import("./config-drift-SWZNEH5H.js");
4715
4733
  this._markerDigestOnlyCache = await readClassifiedMarkerDigestOnly(this.adapter, this.vault, this.name, await this.getDEK(this.name));
4716
4734
  return this._markerDigestOnlyCache;
4717
4735
  }
@@ -5758,7 +5776,7 @@ var VaultLinks = class {
5758
5776
  // src/with-shape/links/lazy-handle.ts
5759
5777
  function makeLazyLinkSetHandle(d) {
5760
5778
  let engine = null;
5761
- const load = () => engine ??= import("./link-set-UQEIYQAM.js").then(
5779
+ const load = () => engine ??= import("./link-set-HJOC7GB7.js").then(
5762
5780
  ({ LinkSet }) => new LinkSet(d.adapter, d.vault, d.name, d.spec, d.encrypted, d.getDEK, d.actor, d.emitter, d.endpointExists)
5763
5781
  );
5764
5782
  return {
@@ -5772,6 +5790,423 @@ function makeLazyLinkSetHandle(d) {
5772
5790
  };
5773
5791
  }
5774
5792
 
5793
+ // src/with-shape/satellites/registry.ts
5794
+ var SatelliteRegistry = class {
5795
+ byBase = /* @__PURE__ */ new Map();
5796
+ bySat = /* @__PURE__ */ new Map();
5797
+ byJoin = /* @__PURE__ */ new Map();
5798
+ poisoned = /* @__PURE__ */ new Map();
5799
+ locks = /* @__PURE__ */ new Map();
5800
+ register(spec) {
5801
+ if (this.byBase.has(spec.base)) {
5802
+ throw new SatelliteConfigError(`R-S1: base "${spec.base}" already has satellite "${this.byBase.get(spec.base).satellite}" \u2014 v1 allows exactly one satellite per base.`);
5803
+ }
5804
+ if (this.byBase.has(spec.satellite)) {
5805
+ throw new SatelliteConfigError(`R-S3: "${spec.satellite}" is itself registered as a base (of "${this.byBase.get(spec.satellite).satellite}") \u2014 no satellite-of-satellite chains.`);
5806
+ }
5807
+ const taken = (n) => this.byBase.has(n) || this.bySat.has(n) || this.byJoin.has(n);
5808
+ if (spec.joined !== void 0 && taken(spec.joined)) {
5809
+ throw new SatelliteConfigError(`R-S5: joined name "${spec.joined}" collides with an existing pair member or joined name.`);
5810
+ }
5811
+ this.byBase.set(spec.base, spec);
5812
+ this.bySat.set(spec.satellite, spec);
5813
+ if (spec.joined !== void 0) this.byJoin.set(spec.joined, spec);
5814
+ }
5815
+ satelliteOf(base) {
5816
+ return this.byBase.get(base) ?? null;
5817
+ }
5818
+ bySatellite(name) {
5819
+ return this.bySat.get(name) ?? null;
5820
+ }
5821
+ byJoined(name) {
5822
+ return this.byJoin.get(name) ?? null;
5823
+ }
5824
+ isPairMember(name) {
5825
+ return this.byBase.has(name) || this.bySat.has(name);
5826
+ }
5827
+ allSpecs() {
5828
+ return [...this.byBase.values()];
5829
+ }
5830
+ expandNames(names) {
5831
+ const out = new Set(names);
5832
+ for (const n of names) {
5833
+ const asBase = this.byBase.get(n);
5834
+ if (asBase) out.add(asBase.satellite);
5835
+ const asSat = this.bySat.get(n);
5836
+ if (asSat) out.add(asSat.base);
5837
+ }
5838
+ return [...out];
5839
+ }
5840
+ poison(satellite, reason) {
5841
+ this.poisoned.set(satellite, reason);
5842
+ }
5843
+ assertNotPoisoned(satellite) {
5844
+ const reason = this.poisoned.get(satellite);
5845
+ if (reason !== void 0) throw new SatelliteConfigError(reason);
5846
+ }
5847
+ /** Per-base async mutex: chains sections on a stored promise tail. */
5848
+ async withPairLock(base, fn2) {
5849
+ const tail = this.locks.get(base) ?? Promise.resolve();
5850
+ let release;
5851
+ const gate = new Promise((res) => {
5852
+ release = res;
5853
+ });
5854
+ this.locks.set(base, tail.then(() => gate));
5855
+ await tail;
5856
+ try {
5857
+ return await fn2();
5858
+ } finally {
5859
+ release();
5860
+ }
5861
+ }
5862
+ };
5863
+
5864
+ // src/with-shape/satellites/declare.ts
5865
+ function declareSatellite(ctx, collectionName, options, existingRegistry) {
5866
+ if (existingRegistry !== null) {
5867
+ const existing = existingRegistry.bySatellite(collectionName);
5868
+ if (existing) {
5869
+ const same = existing.base === options.satelliteOf && hashFields(existing.fields) === hashFields(options.fields ?? []) && (existing.joined ?? null) === (options.joined ?? null);
5870
+ if (!same) {
5871
+ throw new SatelliteConfigError(`R-S9: "${collectionName}" re-declared divergently within this session (base/fields/joined mismatch).`);
5872
+ }
5873
+ return existingRegistry;
5874
+ }
5875
+ }
5876
+ const spec = validateSatelliteDeclaration({
5877
+ satellite: collectionName,
5878
+ satelliteOf: options.satelliteOf,
5879
+ fields: options.fields,
5880
+ joined: options.joined,
5881
+ baseIsSatellite: (existingRegistry?.bySatellite(options.satelliteOf) ?? null) !== null,
5882
+ // R-S8 direction (i): refuse if EITHER this declaration sets crdt, OR the
5883
+ // base was already constructed with crdt mode before this pairing.
5884
+ crdtMode: options.crdt !== void 0 || ctx.getBaseCrdt(options.satelliteOf) !== void 0,
5885
+ joinedCollidesWithCollection: options.joined !== void 0 && ctx.collectionExists(options.joined)
5886
+ });
5887
+ if (ctx.forgetSubjects[spec.base] !== void 0 && options.perRecordKeys !== true) {
5888
+ throw new SatelliteConfigError(`R-S7: satellite "${collectionName}" of forget-covered base "${spec.base}" must declare perRecordKeys.`);
5889
+ }
5890
+ let reg = existingRegistry;
5891
+ if (reg === null) {
5892
+ const created = new SatelliteRegistry();
5893
+ ctx.registerPoisonHook((e) => {
5894
+ if (e.vault === ctx.vaultName) created.assertNotPoisoned(e.collection);
5895
+ });
5896
+ ctx.forEachSyncEngine((e) => e.setPairExpander((names) => created.expandNames(names)));
5897
+ reg = created;
5898
+ }
5899
+ reg.register(spec);
5900
+ ctx.forEachSyncEngine((e) => e.remirrorPairResolvers([spec.base, spec.satellite]));
5901
+ const registry = reg;
5902
+ const baseSchema = ctx.getBaseSchema(spec.base);
5903
+ void import("./post-register-BIXGCZ2M.js").then((m) => m.postRegister(ctx.adapter, ctx.vaultName, spec, ctx.getDEK, baseSchema, registry)).catch(() => {
5904
+ });
5905
+ return reg;
5906
+ }
5907
+
5908
+ // src/with-shape/satellites/raw-target.ts
5909
+ var RAW_TARGET = /* @__PURE__ */ Symbol("noydb.satellite.rawTarget");
5910
+
5911
+ // src/with-shape/satellites/fanout.ts
5912
+ function unwrap(handle) {
5913
+ return handle[RAW_TARGET] ?? handle;
5914
+ }
5915
+ async function revertAndCompensate(deps, executed) {
5916
+ for (const leg of [...executed].reverse()) {
5917
+ try {
5918
+ if (leg.prior !== null) await deps.adapter.put(deps.vaultName, leg.coll, leg.id, leg.prior);
5919
+ else await deps.adapter.delete(deps.vaultName, leg.coll, leg.id);
5920
+ await leg.handle._compensateRevertedWrite(leg.id);
5921
+ } catch {
5922
+ }
5923
+ }
5924
+ }
5925
+ async function joinedPut(deps, id, record) {
5926
+ deps.registry.assertNotPoisoned(deps.spec.satellite);
5927
+ const base = unwrap(deps.base());
5928
+ const satellite = unwrap(deps.satellite());
5929
+ const satFields = new Set(deps.spec.fields);
5930
+ const baseRec = {};
5931
+ const satRec = {};
5932
+ for (const [k, v] of Object.entries(record)) (satFields.has(k) ? satRec : baseRec)[k] = v;
5933
+ await base.validateInput(baseRec);
5934
+ await satellite.validateInput(satRec);
5935
+ return deps.registry.withPairLock(deps.spec.base, async () => {
5936
+ const executed = [];
5937
+ const run = async (handle, coll, rec) => {
5938
+ executed.push({ coll, id, prior: await deps.adapter.get(deps.vaultName, coll, id), handle });
5939
+ await handle.put(id, rec);
5940
+ };
5941
+ try {
5942
+ await run(base, deps.spec.base, baseRec);
5943
+ await run(satellite, deps.spec.satellite, satRec);
5944
+ } catch (err) {
5945
+ await revertAndCompensate(deps, executed);
5946
+ throw err;
5947
+ }
5948
+ });
5949
+ }
5950
+ async function pairDelete(deps, id) {
5951
+ const base = unwrap(deps.base());
5952
+ const satellite = unwrap(deps.satellite());
5953
+ return deps.registry.withPairLock(deps.spec.base, async () => {
5954
+ const executed = [];
5955
+ const run = async (handle, coll) => {
5956
+ executed.push({ coll, id, prior: await deps.adapter.get(deps.vaultName, coll, id), handle });
5957
+ await handle.delete(id);
5958
+ };
5959
+ try {
5960
+ await run(satellite, deps.spec.satellite);
5961
+ await run(base, deps.spec.base);
5962
+ } catch (err) {
5963
+ await revertAndCompensate(deps, executed);
5964
+ throw err;
5965
+ }
5966
+ });
5967
+ }
5968
+
5969
+ // src/with-shape/satellites/proxy.ts
5970
+ async function listWithIds(target) {
5971
+ const records = await target.list();
5972
+ const ids = [...target.cache.keys()];
5973
+ const out = [];
5974
+ for (let i = 0; i < records.length; i++) {
5975
+ const id = ids[i];
5976
+ if (id !== void 0) out.push([id, records[i]]);
5977
+ }
5978
+ return out;
5979
+ }
5980
+ async function filterLiveHits(hits, adapter, vaultName, base) {
5981
+ const live = await Promise.all(hits.map((h) => isBaseLive(adapter, vaultName, base, h.id)));
5982
+ return hits.filter((_, i) => live[i]);
5983
+ }
5984
+ function makeSatelliteProxy(target, spec, registry) {
5985
+ const adapter = target.adapter;
5986
+ const vaultName = target.vault;
5987
+ const queryNotExistenceFiltered = () => {
5988
+ throw new SatelliteConfigError(
5989
+ `satellite "${spec.satellite}": query() is not existence-filtered. Query's terminal methods (toArray/first/count) read the in-memory cache synchronously, while existence authority (\xA7 Convergence & existence authority, rule 1) requires an async, undecrypted check against live base state \u2014 the two shapes don't compose without either breaking query()'s synchronous contract or accepting a check that misses out-of-band base mutations. Use list() (or get()) for existence-safe reads on satellite collections.`
5990
+ );
5991
+ };
5992
+ const getOne = async (id) => {
5993
+ if (!await isBaseLive(adapter, vaultName, spec.base, id)) return null;
5994
+ return target.get(id);
5995
+ };
5996
+ const putOne = async (id, record) => {
5997
+ return registry.withPairLock(spec.base, async () => {
5998
+ registry.assertNotPoisoned(spec.satellite);
5999
+ if (!await isBaseLive(adapter, vaultName, spec.base, id)) {
6000
+ throw new SatelliteConfigError(
6001
+ `R-S6: satellite "${spec.satellite}" put for "${id}" with no live base record in "${spec.base}" \u2014 create the base first (or write through the joined handle).`
6002
+ );
6003
+ }
6004
+ return target.put(id, record);
6005
+ });
6006
+ };
6007
+ const overrides = {
6008
+ get: getOne,
6009
+ async list() {
6010
+ const live = await liveBaseIdSet(adapter, vaultName, spec.base);
6011
+ const pairs = await listWithIds(target);
6012
+ return pairs.filter(([id]) => live.has(id)).map(([, record]) => record);
6013
+ },
6014
+ query: queryNotExistenceFiltered,
6015
+ put: putOne,
6016
+ // #591 review I1: the real `getMany` loops `this.get(id)` bound to the raw
6017
+ // target, never this proxy's existence-filtered `get` — same Map<id, T|null>
6018
+ // shape, built from the overridden single-get instead.
6019
+ async getMany(ids) {
6020
+ const result = /* @__PURE__ */ new Map();
6021
+ for (const id of ids) result.set(id, await getOne(id));
6022
+ return result;
6023
+ },
6024
+ // #591 review I1: the real `putMany` (non-atomic) loops `this.put(id, record)`
6025
+ // bound to the raw target, bypassing R-S6/pair-lock/poison per item; looping
6026
+ // through the overridden single-put here restores that per-item enforcement
6027
+ // while preserving the real putMany's { ok, success, failures } shape — a
6028
+ // refused item becomes a failure entry, not a thrown error. Atomic mode is a
6029
+ // single transaction by design (looping per-item `put` would break its
6030
+ // all-or-nothing revert guarantee), so instead the WHOLE call is refused
6031
+ // with R-S6 up front, under the pair lock + poison check, if any id lacks a
6032
+ // live base — only then does it delegate to the real atomic executor.
6033
+ async putMany(entries, options) {
6034
+ if (options?.atomic) {
6035
+ return registry.withPairLock(spec.base, async () => {
6036
+ registry.assertNotPoisoned(spec.satellite);
6037
+ for (const [id] of entries) {
6038
+ if (!await isBaseLive(adapter, vaultName, spec.base, id)) {
6039
+ throw new SatelliteConfigError(
6040
+ `R-S6: satellite "${spec.satellite}" putMany(atomic) refused \u2014 "${id}" has no live base record in "${spec.base}".`
6041
+ );
6042
+ }
6043
+ }
6044
+ return target.putMany(entries, options);
6045
+ });
6046
+ }
6047
+ const success = [];
6048
+ const failures = [];
6049
+ for (const [id, record] of entries) {
6050
+ try {
6051
+ await putOne(id, record);
6052
+ success.push(id);
6053
+ } catch (error) {
6054
+ failures.push({ id, error });
6055
+ }
6056
+ }
6057
+ return { ok: failures.length === 0, success, failures };
6058
+ },
6059
+ // No `deleteMany` override: the real `deleteMany` loops the raw
6060
+ // `this.delete(id)` too, but this proxy never overrides single `delete`
6061
+ // (satellite delete is legal, unguarded — see makeBaseProxy for the leg
6062
+ // that DOES need fan-out) — there is nothing for a bulk delete to bypass.
6063
+ // #591 Task 9: search/retrieve/similarTo answer from the search facade's
6064
+ // own cache/index (never the get/list overrides above), so they need
6065
+ // their own existence post-filter — every retrieval surface the facade
6066
+ // exposes is covered here.
6067
+ async search(field, query, opts) {
6068
+ const hits = await target.search(field, query, opts);
6069
+ return filterLiveHits(hits, adapter, vaultName, spec.base);
6070
+ },
6071
+ async retrieve(query, opts) {
6072
+ const hits = await target.retrieve(query, opts);
6073
+ return filterLiveHits(hits, adapter, vaultName, spec.base);
6074
+ },
6075
+ async similarTo(vector, opts) {
6076
+ const hits = await target.similarTo(vector, opts);
6077
+ return filterLiveHits(hits, adapter, vaultName, spec.base);
6078
+ },
6079
+ // #591 Task 9 review fix: findByDet/queryByDet scan envelopes straight
6080
+ // off the adapter (kernel/enclave/record-keys/deterministic.ts) and
6081
+ // return BARE records (no id), so a post-filter can't correlate a match
6082
+ // back to its base row. Instead the scan itself is scoped: re-run the
6083
+ // same det functions over the collection's own DeterministicContext
6084
+ // (`detContext()` is private like `adapter`/`cache` above) with its
6085
+ // `adapter.list` narrowed to live-base ids — a dead-base match is then
6086
+ // never visited, so findByDet correctly continues to a later live match
6087
+ // rather than short-circuiting on a ghost.
6088
+ async findByDet(field, value) {
6089
+ return findByDet(liveScopedDetContext(), field, value);
6090
+ },
6091
+ async queryByDet(field, value) {
6092
+ return queryByDet(liveScopedDetContext(), field, value);
6093
+ }
6094
+ };
6095
+ const liveScopedDetContext = () => {
6096
+ const ctx = target.detContext();
6097
+ const raw = ctx.adapter;
6098
+ return {
6099
+ ...ctx,
6100
+ adapter: {
6101
+ ...raw,
6102
+ get: raw.get.bind(raw),
6103
+ async list(v, c) {
6104
+ const ids = await raw.list(v, c);
6105
+ const live = await Promise.all(ids.map((id) => isBaseLive(adapter, vaultName, spec.base, id)));
6106
+ return ids.filter((_, i) => live[i]);
6107
+ }
6108
+ }
6109
+ };
6110
+ };
6111
+ return new Proxy(target, {
6112
+ get(t, prop, _recv) {
6113
+ if (prop === RAW_TARGET) return t;
6114
+ if (typeof prop === "string" && prop in overrides) return overrides[prop];
6115
+ const v = Reflect.get(t, prop, t);
6116
+ return typeof v === "function" ? v.bind(t) : v;
6117
+ }
6118
+ });
6119
+ }
6120
+ function makeBaseProxy(target, spec, registry, satellite) {
6121
+ const adapter = target.adapter;
6122
+ const vaultName = target.vault;
6123
+ const deleteOne = async (id) => {
6124
+ return pairDelete({ spec, base: () => target, satellite, adapter, vaultName, registry }, id);
6125
+ };
6126
+ const overrides = {
6127
+ delete: deleteOne,
6128
+ async deleteMany(ids) {
6129
+ const success = [];
6130
+ const failures = [];
6131
+ for (const id of ids) {
6132
+ try {
6133
+ await deleteOne(id);
6134
+ success.push(id);
6135
+ } catch (error) {
6136
+ failures.push({ id, error });
6137
+ }
6138
+ }
6139
+ return { ok: failures.length === 0, success, failures };
6140
+ }
6141
+ };
6142
+ return new Proxy(target, {
6143
+ get(t, prop, _recv) {
6144
+ if (prop === RAW_TARGET) return t;
6145
+ if (typeof prop === "string" && prop in overrides) return overrides[prop];
6146
+ const v = Reflect.get(t, prop, t);
6147
+ return typeof v === "function" ? v.bind(t) : v;
6148
+ }
6149
+ });
6150
+ }
6151
+
6152
+ // src/with-shape/satellites/joined.ts
6153
+ function makeJoinedHandle(spec, deps) {
6154
+ const base = () => deps.base();
6155
+ const satellite = () => deps.satellite();
6156
+ const adapter = deps.adapter;
6157
+ const nullSat = () => Object.fromEntries(spec.fields.map((f) => [f, null]));
6158
+ const merge = (b, s) => ({ ...nullSat(), ...s ?? {}, ...b });
6159
+ return {
6160
+ async get(id) {
6161
+ if (!await isBaseLive(adapter, deps.vaultName, spec.base, id)) return null;
6162
+ const b = await base().get(id);
6163
+ if (b === null) return null;
6164
+ const s = await satellite().get(id);
6165
+ return merge(b, s);
6166
+ },
6167
+ async put(id, record) {
6168
+ await joinedPut(deps, id, record);
6169
+ },
6170
+ async delete(id) {
6171
+ await pairDelete(deps, id);
6172
+ },
6173
+ async list() {
6174
+ const live = await liveBaseIdSet(adapter, deps.vaultName, spec.base);
6175
+ const pairs = await listWithIds(base());
6176
+ const out = [];
6177
+ for (const [id, b] of pairs) {
6178
+ if (!live.has(id)) continue;
6179
+ out.push(merge(b, await satellite().get(id)));
6180
+ }
6181
+ return out;
6182
+ },
6183
+ async describe() {
6184
+ const [b, s] = await Promise.all([base().describe({}), satellite().describe({})]);
6185
+ return {
6186
+ collection: spec.joined ?? `${spec.base}+${spec.satellite}`,
6187
+ fields: [...b.fields, ...s.fields],
6188
+ meta: { label: spec.joined ?? spec.base }
6189
+ };
6190
+ }
6191
+ };
6192
+ }
6193
+
6194
+ // src/with-shape/satellites/forget.ts
6195
+ function expandRefsWithSatellites(refs, registry) {
6196
+ if (registry === null) return refs;
6197
+ const out = [];
6198
+ let anySat = false;
6199
+ for (const ref2 of refs) {
6200
+ const spec = registry.satelliteOf(ref2.collection);
6201
+ if (spec) {
6202
+ anySat = true;
6203
+ out.push({ collection: spec.satellite, id: ref2.id, satelliteOf: ref2.collection });
6204
+ }
6205
+ out.push(ref2);
6206
+ }
6207
+ return anySat ? out : refs;
6208
+ }
6209
+
5775
6210
  // src/with-shape/schema-update/gate.ts
5776
6211
  var SchemaUpdateGate = class {
5777
6212
  #decision;
@@ -6110,6 +6545,8 @@ var Vault = class {
6110
6545
  */
6111
6546
  reloadKeyring;
6112
6547
  collectionCache = /* @__PURE__ */ new Map();
6548
+ satelliteRegistry = null;
6549
+ // spec #591, archetype-③
6113
6550
  /** Vault-level schema cutover fence/controller. */
6114
6551
  schemaFence;
6115
6552
  /** Per-client heartbeat/watcher; started lazily on cutover registration. */
@@ -6401,6 +6838,29 @@ var Vault = class {
6401
6838
  if (isSecretBearingReservedCollection(collectionName)) {
6402
6839
  throw new ReservedCollectionNameError(collectionName);
6403
6840
  }
6841
+ if (this.satelliteRegistry?.byJoined(collectionName)) {
6842
+ throw new SatelliteConfigError(`"${collectionName}" is a joined handle \u2014 use vault.joined('${collectionName}'), not vault.collection().`);
6843
+ }
6844
+ if (options?.crdt !== void 0 && this.satelliteRegistry?.isPairMember(collectionName)) {
6845
+ throw new SatelliteConfigError("R-S8: crdtMode is refused on either member of a satellite pair in v1 (revert cannot compensate a merge).");
6846
+ }
6847
+ if (options?.satelliteOf !== void 0) {
6848
+ this.satelliteRegistry = declareSatellite({
6849
+ adapter: this.adapter,
6850
+ vaultName: this.name,
6851
+ forgetSubjects: this.forgetStrategy.subjects,
6852
+ getDEK: this.getDEK,
6853
+ getBaseSchema: (base) => this.collectionCache.get(base)?.getSchema(),
6854
+ getBaseCrdt: (base) => this.collectionCache.get(base)?.getConfig()?.crdt,
6855
+ collectionExists: (name) => this.collectionCache.has(name),
6856
+ registerPoisonHook: (hook) => {
6857
+ this.noydb._writeHooks.onBeforeWrite(hook);
6858
+ },
6859
+ forEachSyncEngine: (fn2) => {
6860
+ this.noydb._forEachSyncEngine(this.name, fn2);
6861
+ }
6862
+ }, collectionName, { ...options, satelliteOf: options.satelliteOf }, this.satelliteRegistry);
6863
+ }
6404
6864
  let coll = this.collectionCache.get(collectionName);
6405
6865
  if (coll && options?.moneyFields) {
6406
6866
  coll._applyMoneyFields(options.moneyFields);
@@ -6461,7 +6921,7 @@ var Vault = class {
6461
6921
  const strategies = options.schemaUpdate ?? [];
6462
6922
  const work = (async () => {
6463
6923
  const dek = await this.getDEK(collectionName);
6464
- const { persistSchemaIfNeeded } = await import("./register-V5AQTXNI.js");
6924
+ const { persistSchemaIfNeeded } = await import("./register-OVONZ2MJ.js");
6465
6925
  const result = await persistSchemaIfNeeded({
6466
6926
  store: this.adapter,
6467
6927
  vault: this.name,
@@ -6640,7 +7100,7 @@ var Vault = class {
6640
7100
  const work = (async () => {
6641
7101
  try {
6642
7102
  const dek = await this.getDEK(collectionName);
6643
- await (await import("./register-V5AQTXNI.js")).persistSchemaIfNeeded({
7103
+ await (await import("./register-OVONZ2MJ.js")).persistSchemaIfNeeded({
6644
7104
  store: this.adapter,
6645
7105
  vault: this.name,
6646
7106
  collectionName,
@@ -6656,8 +7116,27 @@ var Vault = class {
6656
7116
  this._pendingSchemaWrites.push(work);
6657
7117
  }
6658
7118
  }
7119
+ if (this.satelliteRegistry) {
7120
+ const spec = this.satelliteRegistry.bySatellite(collectionName);
7121
+ if (spec) return makeSatelliteProxy(coll, spec, this.satelliteRegistry);
7122
+ const baseSpec = this.satelliteRegistry.satelliteOf(collectionName);
7123
+ if (baseSpec) return makeBaseProxy(coll, baseSpec, this.satelliteRegistry, () => this.collection(baseSpec.satellite));
7124
+ }
6659
7125
  return coll;
6660
7126
  }
7127
+ /** Full-record handle for a satellite pair registered with `joined:` (spec #591). Narrow type — not a Collection. */
7128
+ joined(name) {
7129
+ const spec = this.satelliteRegistry?.byJoined(name);
7130
+ if (!spec) throw new SatelliteConfigError(`No joined handle "${name}" is registered \u2014 declare it via collection(satellite, { joined: '${name}' }).`);
7131
+ return makeJoinedHandle(spec, {
7132
+ spec,
7133
+ base: () => this.collection(spec.base),
7134
+ satellite: () => this.collection(spec.satellite),
7135
+ adapter: this.adapter,
7136
+ vaultName: this.name,
7137
+ registry: this.satelliteRegistry
7138
+ });
7139
+ }
6661
7140
  /**
6662
7141
  * Await all background persisted-schema writes triggered by
6663
7142
  * `collection({ persistJsonSchema: true })` calls on this vault.
@@ -7464,6 +7943,7 @@ var Vault = class {
7464
7943
  throw new ForgetStrategyNotConfiguredError();
7465
7944
  }
7466
7945
  const refs = await lookupSubject(this.adapter, this.name, this.getDEK, this.encrypted, subjectId);
7946
+ const allRefs = expandRefsWithSatellites(refs, this.satelliteRegistry);
7467
7947
  let recordsShredded = 0;
7468
7948
  let historyVersionsShredded = 0;
7469
7949
  const collections = /* @__PURE__ */ new Set();
@@ -7479,9 +7959,10 @@ var Vault = class {
7479
7959
  const indexResidue = [];
7480
7960
  const blobsEnabled = this.blobStrategy !== void 0;
7481
7961
  const actor = this.keyring.userId;
7482
- for (const ref2 of refs) {
7962
+ for (const ref2 of allRefs) {
7483
7963
  const coll = this.collection(ref2.collection);
7484
- const perRecordKeys = this.forgetStrategy.subjects[ref2.collection] !== void 0;
7964
+ const satelliteOf = ref2.satelliteOf;
7965
+ const perRecordKeys = this.forgetStrategy.subjects[satelliteOf ?? ref2.collection] !== void 0;
7485
7966
  const live = await this.adapter.get(this.name, ref2.collection, ref2.id);
7486
7967
  if (perRecordKeys && live && live._data && !hasPerRecordKey(live)) {
7487
7968
  unmigratedRecords.push(`${ref2.collection}:${ref2.id}`);
@@ -7513,7 +7994,17 @@ var Vault = class {
7513
7994
  } catch {
7514
7995
  sealedCekResidue.push(`${ref2.collection}:${ref2.id}`);
7515
7996
  }
7516
- const shred = await coll._writeTombstone(ref2.id, actor);
7997
+ let shred;
7998
+ try {
7999
+ shred = await coll._writeTombstone(ref2.id, actor);
8000
+ } catch (cause) {
8001
+ if (satelliteOf === void 0) throw cause;
8002
+ throw new SatelliteConfigError(
8003
+ // R-S4: abort the whole forget rather than leave the heavy side un-erased
8004
+ `R-S4: forget could not fan out to satellite "${ref2.collection}" \u2014 aborting rather than leaving the heavy side`,
8005
+ { cause }
8006
+ );
8007
+ }
7517
8008
  if (shred !== null) {
7518
8009
  recordsShredded++;
7519
8010
  collections.add(ref2.collection);
@@ -7723,7 +8214,7 @@ var Vault = class {
7723
8214
  async _initDerivations(handles) {
7724
8215
  if (handles.length === 0) return;
7725
8216
  const [{ DerivationRegistry }, { ReadOnlyVaultFacade }] = await Promise.all([
7726
- import("./registry-IMNMHWTM.js"),
8217
+ import("./registry-D5J7SVJ2.js"),
7727
8218
  import("./read-only-facade-5ADRJVTM.js")
7728
8219
  ]);
7729
8220
  const registry = new DerivationRegistry();
@@ -7754,7 +8245,7 @@ var Vault = class {
7754
8245
  */
7755
8246
  async _initMaterializedViews(handles) {
7756
8247
  if (handles.length === 0) return;
7757
- const { MaterializedViewRegistry } = await import("./registry-K6VUQXKV.js");
8248
+ const { MaterializedViewRegistry } = await import("./registry-AIEYUOSG.js");
7758
8249
  const registry = new MaterializedViewRegistry();
7759
8250
  this.materializedViewRegistry = registry;
7760
8251
  const db = this;
@@ -7778,7 +8269,7 @@ var Vault = class {
7778
8269
  */
7779
8270
  async _initOverlayedViews(handles) {
7780
8271
  if (handles.length === 0) return;
7781
- const { OverlayedViewRegistry } = await import("./registry-ZVO3T4M5.js");
8272
+ const { OverlayedViewRegistry } = await import("./registry-HSNQ4NBP.js");
7782
8273
  const registry = new OverlayedViewRegistry();
7783
8274
  const mvRegistry = this.materializedViewRegistry;
7784
8275
  const overlayNames = /* @__PURE__ */ new Set();
@@ -7825,13 +8316,13 @@ var Vault = class {
7825
8316
  if (!reg) {
7826
8317
  throw new Error(`refreshView: no MV registered with name "${name}"`);
7827
8318
  }
7828
- const { MaterializedViewExecutor } = await import("./executor-FGISLQIN.js");
8319
+ const { MaterializedViewExecutor } = await import("./executor-XWPD5PIM.js");
7829
8320
  const result = await MaterializedViewExecutor.refresh(reg, {
7830
8321
  getCollection: (n) => this.collection(n),
7831
8322
  getActiveTxContext: () => this.noydb._activeTxContextOrNull,
7832
8323
  getQueryContext: () => this
7833
8324
  });
7834
- const { clearMVStale } = await import("./stale-7Q62KVI3.js");
8325
+ const { clearMVStale } = await import("./stale-COBBJORL.js");
7835
8326
  clearMVStale(registry, name);
7836
8327
  return result;
7837
8328
  }
@@ -7847,7 +8338,7 @@ var Vault = class {
7847
8338
  if (registry === null) return { derived: 0, failed: 0 };
7848
8339
  const strategies = registry.strategiesForSource(sourceCollection);
7849
8340
  if (strategies.length === 0) return { derived: 0, failed: 0 };
7850
- const { DerivationExecutor } = await import("./executor-CBTNU5VZ.js");
8341
+ const { DerivationExecutor } = await import("./executor-EUPYHCLU.js");
7851
8342
  const sourceColl = this.collection(sourceCollection);
7852
8343
  const records = await sourceColl.list();
7853
8344
  const ctx = { vault: this.derivationFacade ?? new (await import("./read-only-facade-5ADRJVTM.js")).ReadOnlyVaultFacade(this, "derivation") };
@@ -7872,7 +8363,7 @@ var Vault = class {
7872
8363
  if (!outSpec) continue;
7873
8364
  const outputColl = this.collection(outSpec.collection);
7874
8365
  if (out.kind === "array") {
7875
- const { loadFanoutSidecar, saveFanoutSidecar } = await import("./fanout-sidecar-WS22Q5WH.js");
8366
+ const { loadFanoutSidecar, saveFanoutSidecar } = await import("./fanout-sidecar-SSEW7BQB.js");
7876
8367
  const prior = await loadFanoutSidecar(this.adapter, this.name, spec.source, id, key, this.getDEK, this.encrypted);
7877
8368
  const prevKeys = new Set(prior?.keys ?? []);
7878
8369
  const newKeysList = out.entries.map((e) => e.key);
@@ -8094,7 +8585,7 @@ var Vault = class {
8094
8585
  * collection.
8095
8586
  */
8096
8587
  async delegate(opts) {
8097
- const { issueDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-BQNIEHZE.js");
8588
+ const { issueDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-AUY42TGU.js");
8098
8589
  if (!this.keyring.kek) {
8099
8590
  throw new ValidationError(
8100
8591
  "issueDelegation: keyring.kek is null \u2014 issuing a delegation requires a tier-1 unlock. Re-authenticate at tier 1 (passphrase) first."
@@ -8116,7 +8607,7 @@ var Vault = class {
8116
8607
  * if the id does not exist.
8117
8608
  */
8118
8609
  async revokeDelegation(id) {
8119
- const { revokeDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-BQNIEHZE.js");
8610
+ const { revokeDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-AUY42TGU.js");
8120
8611
  await revokeDelegation(this.adapter, this.name, id);
8121
8612
  void DELEGATIONS_COLLECTION;
8122
8613
  }
@@ -8332,7 +8823,7 @@ var Vault = class {
8332
8823
  * @see docs/superpowers/specs/2026-05-22-schema-dump-design.md
8333
8824
  */
8334
8825
  async dumpSchema(opts = {}) {
8335
- const { dumpVaultSchema } = await import("./walk-T65TZDN2.js");
8826
+ const { dumpVaultSchema } = await import("./walk-CVNXFUEF.js");
8336
8827
  return dumpVaultSchema(this, opts);
8337
8828
  }
8338
8829
  /**
@@ -8467,7 +8958,7 @@ var Vault = class {
8467
8958
  * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/public-envelope.md
8468
8959
  */
8469
8960
  async getPublicEnvelope(opts = {}) {
8470
- const { readPublicEnvelope } = await import("./public-envelope-MRN5YYZZ.js");
8961
+ const { readPublicEnvelope } = await import("./public-envelope-6UBQ4IUY.js");
8471
8962
  return readPublicEnvelope(this.adapter, this.name, opts);
8472
8963
  }
8473
8964
  /**
@@ -8482,7 +8973,7 @@ var Vault = class {
8482
8973
  * both modes round-trip cleanly.
8483
8974
  */
8484
8975
  async dump() {
8485
- const { dumpVault } = await import("./backup-OPONO6Q5.js");
8976
+ const { dumpVault } = await import("./backup-Y3RMFGVX.js");
8486
8977
  return dumpVault(this.backupContext());
8487
8978
  }
8488
8979
  /**
@@ -8534,7 +9025,7 @@ var Vault = class {
8534
9025
  * — there's no chain to verify against.
8535
9026
  */
8536
9027
  async load(backupJson) {
8537
- const { loadVault } = await import("./backup-OPONO6Q5.js");
9028
+ const { loadVault } = await import("./backup-Y3RMFGVX.js");
8538
9029
  return loadVault(this.backupContext(), backupJson);
8539
9030
  }
8540
9031
  /**
@@ -8566,7 +9057,7 @@ var Vault = class {
8566
9057
  * way to detect tampering of an in-place vault.
8567
9058
  */
8568
9059
  async verifyBackupIntegrity() {
8569
- const { verifyBackupIntegrity } = await import("./backup-OPONO6Q5.js");
9060
+ const { verifyBackupIntegrity } = await import("./backup-Y3RMFGVX.js");
8570
9061
  return verifyBackupIntegrity(this.backupContext());
8571
9062
  }
8572
9063
  /**
@@ -8784,7 +9275,7 @@ var Vault = class {
8784
9275
  * is the live validator object, not a serialization of it).
8785
9276
  */
8786
9277
  async exportJSON(opts = {}) {
8787
- const { exportVaultJSON } = await import("./backup-OPONO6Q5.js");
9278
+ const { exportVaultJSON } = await import("./backup-Y3RMFGVX.js");
8788
9279
  return exportVaultJSON(this.backupContext(), opts);
8789
9280
  }
8790
9281
  };
@@ -10656,7 +11147,7 @@ var Noydb = class {
10656
11147
  if (!facade) return;
10657
11148
  const ctx = { existing, vault: facade, userId: e.userId, role: e.role };
10658
11149
  await registry.runChecks(e.collection, incoming, ctx);
10659
- const { GuardExecutor } = await import("./executor-DJHNSTIR.js");
11150
+ const { GuardExecutor } = await import("./executor-KZ4B3PRT.js");
10660
11151
  for (const g of guards) {
10661
11152
  await GuardExecutor.checkFrozenFields(g, e.docId, existing, incoming, e.computedFieldNames);
10662
11153
  }
@@ -10821,7 +11312,8 @@ var Noydb = class {
10821
11312
  onDirty: targets.length > 0 ? async (coll, id, action, version) => {
10822
11313
  for (const [key, engine] of this.syncEngines) {
10823
11314
  if (key === name || key.startsWith(`${name}::`)) {
10824
- void engine.trackChange(coll, id, action, version);
11315
+ if (action === "revert") void engine.removeDirty(coll, id);
11316
+ else void engine.trackChange(coll, id, action, version);
10825
11317
  }
10826
11318
  }
10827
11319
  } : void 0,
@@ -11487,6 +11979,9 @@ var Noydb = class {
11487
11979
  }
11488
11980
  return engine;
11489
11981
  }
11982
+ _forEachSyncEngine(vault, fn2) {
11983
+ for (const [key, engine] of this.syncEngines) if (key === vault || key.startsWith(`${vault}::`)) fn2(engine);
11984
+ }
11490
11985
  // ─── Events ────────────────────────────────────────────────────
11491
11986
  on(event, handler) {
11492
11987
  this.emitter.on(event, handler);
@@ -11909,7 +12404,7 @@ var Noydb = class {
11909
12404
  "setPublicEnvelope: the public-envelope feature is not enabled. Pass `publicEnvelope: true` (or a schema object) to `createNoydb`."
11910
12405
  );
11911
12406
  }
11912
- const { loadPublicEnvelope, savePublicEnvelope, resolveSchema, validatePublicEnvelopeInput } = await import("./public-envelope-MRN5YYZZ.js");
12407
+ const { loadPublicEnvelope, savePublicEnvelope, resolveSchema, validatePublicEnvelopeInput } = await import("./public-envelope-6UBQ4IUY.js");
11913
12408
  const schema = resolveSchema(this.options.publicEnvelope);
11914
12409
  validatePublicEnvelopeInput(input, schema);
11915
12410
  const now = (/* @__PURE__ */ new Date()).toISOString();
@@ -11938,7 +12433,7 @@ var Noydb = class {
11938
12433
  * regardless).
11939
12434
  */
11940
12435
  async getPublicEnvelope(vault, opts = {}) {
11941
- const { readPublicEnvelope } = await import("./public-envelope-MRN5YYZZ.js");
12436
+ const { readPublicEnvelope } = await import("./public-envelope-6UBQ4IUY.js");
11942
12437
  return readPublicEnvelope(this.options.store, vault, opts);
11943
12438
  }
11944
12439
  // ─── Auth introspection ─────────────────────────────────────────
@@ -12129,9 +12624,9 @@ async function createNoydb(options) {
12129
12624
  throw new ValidationError("A secret (passphrase) or getKeyring callback is required when encryption is enabled");
12130
12625
  }
12131
12626
  if (!options.coordinationStrategy) options = { ...options, coordinationStrategy: await createDefaultCoordinationProvider(options.store) };
12132
- if (!options.userApiFactory) options = { ...options, userApiFactory: (await import("./api-JOXUNSKP.js")).createUserApi };
12627
+ if (!options.userApiFactory) options = { ...options, userApiFactory: (await import("./api-OQ65LUSK.js")).createUserApi };
12133
12628
  if (!options.policyFactory) {
12134
- const policyModule = await import("./policy-YIKUH4AD.js");
12629
+ const policyModule = await import("./policy-3ZKSGSRK.js");
12135
12630
  options = { ...options, policyFactory: policyModule.createNoydbPolicy, policyCheckGateFn: policyModule.checkGate };
12136
12631
  }
12137
12632
  return new Noydb(options);
@@ -12166,4 +12661,4 @@ export {
12166
12661
  Noydb,
12167
12662
  createNoydb
12168
12663
  };
12169
- //# sourceMappingURL=chunk-IEUIUSBO.js.map
12664
+ //# sourceMappingURL=chunk-D6ADQ4QL.js.map