@noy-db/hub 0.7.0-pre.1 → 0.7.0-pre.10

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 (364) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/README.md +4 -1
  3. package/dist/api-GJQF7OAJ.js +20 -0
  4. package/dist/as/index.js +11 -11
  5. package/dist/at/index.js +9 -9
  6. package/dist/attestation/index.js +18 -18
  7. package/dist/{backup-Z7ZBTAQ6.js → backup-QZQEP5RO.js} +12 -12
  8. package/dist/blobs/index.js +13 -13
  9. package/dist/broker/index.js +12 -12
  10. package/dist/by/index.js +2 -2
  11. package/dist/cargo/index.js +33 -30
  12. package/dist/{chunk-AB5P32RE.js → chunk-2DGBRE4K.js} +2 -2
  13. package/dist/{chunk-XVU7J43V.js → chunk-2E2LT37H.js} +2 -2
  14. package/dist/{chunk-4LPF226H.js → chunk-2MQ2D5OZ.js} +5 -5
  15. package/dist/{chunk-DBNYPLWY.js → chunk-357ECVLE.js} +3 -3
  16. package/dist/{chunk-SHILAQH5.js → chunk-3GIA3HJ2.js} +2 -2
  17. package/dist/{chunk-QGJ4XIA7.js → chunk-3SWP2FYA.js} +8 -8
  18. package/dist/{chunk-N4CNVSUF.js → chunk-4RUFYGWG.js} +2 -2
  19. package/dist/{chunk-4G25SDQL.js → chunk-4U52PMEL.js} +4 -4
  20. package/dist/{chunk-H7HP56F6.js → chunk-5EC7X5QA.js} +5 -5
  21. package/dist/{chunk-WK5FSW7T.js → chunk-5NKHCJU5.js} +8 -8
  22. package/dist/{chunk-PQ6Z2TAP.js → chunk-5UKIZIO3.js} +2 -2
  23. package/dist/{chunk-QHJKK77B.js → chunk-5W5CEHLA.js} +6 -6
  24. package/dist/{chunk-YPSOHDNC.js → chunk-65ZYRK7O.js} +2 -2
  25. package/dist/{chunk-4ZPE6SKS.js → chunk-75WNTBZL.js} +3 -3
  26. package/dist/{chunk-H4M7ADXY.js → chunk-7PC3DRG7.js} +27 -17
  27. package/dist/chunk-7PC3DRG7.js.map +1 -0
  28. package/dist/{chunk-OWLVBOWO.js → chunk-7XT7KZTN.js} +10 -10
  29. package/dist/{chunk-QI5NWLVW.js → chunk-AHIIBDNH.js} +7 -7
  30. package/dist/{chunk-XSN63FUS.js → chunk-AW4KTQA4.js} +2 -2
  31. package/dist/{chunk-KDJGJR7F.js → chunk-CWFH36SI.js} +2 -2
  32. package/dist/{chunk-X67FCULK.js → chunk-DIVY2CJZ.js} +3 -3
  33. package/dist/{chunk-Z2PWOSCJ.js → chunk-DNMTN46H.js} +2 -2
  34. package/dist/{chunk-2LPVI4PX.js → chunk-DOPZWTMJ.js} +20 -8
  35. package/dist/chunk-DOPZWTMJ.js.map +1 -0
  36. package/dist/{chunk-HTGRQZFB.js → chunk-DZPMKY3J.js} +3 -3
  37. package/dist/{chunk-XJ3FEKEY.js → chunk-FKQCC4C5.js} +2 -2
  38. package/dist/{chunk-E6YA6UAP.js → chunk-FLRLZ4XZ.js} +2 -2
  39. package/dist/{chunk-ALUNQEBY.js → chunk-FN26SFGH.js} +2 -2
  40. package/dist/{chunk-TVIFAHZR.js → chunk-FPN5D4JX.js} +6 -6
  41. package/dist/{chunk-VTG7327U.js → chunk-FRIVOR5N.js} +4 -4
  42. package/dist/{chunk-3QARDAYW.js → chunk-FYT3DXPN.js} +2 -2
  43. package/dist/{chunk-YMLQBZFJ.js → chunk-FZWAGG5T.js} +6 -6
  44. package/dist/{chunk-CBRS2NEK.js → chunk-GHADG5QZ.js} +2 -2
  45. package/dist/{chunk-3L2MVE36.js → chunk-GKOJR53Y.js} +5 -5
  46. package/dist/{chunk-Y6GZ2P4M.js → chunk-GM4IM7TC.js} +2 -2
  47. package/dist/{chunk-CN6B5PEN.js → chunk-H5GVPOB4.js} +5 -5
  48. package/dist/{chunk-467SKJ65.js → chunk-HOIWW2LV.js} +4 -4
  49. package/dist/{chunk-ALB64CZM.js → chunk-HS3LEVT4.js} +7 -7
  50. package/dist/{chunk-YXA2TCTZ.js → chunk-I5LSKXT6.js} +4 -4
  51. package/dist/{chunk-S35S77YU.js → chunk-IAHDSFFA.js} +10 -10
  52. package/dist/{chunk-X62MEF2O.js → chunk-IRHIA3AL.js} +3 -3
  53. package/dist/{chunk-F23WQK3G.js → chunk-IS5LFHV2.js} +7 -7
  54. package/dist/{chunk-POS53FG6.js → chunk-IZTU6RKH.js} +2 -2
  55. package/dist/{chunk-VAG47QHV.js → chunk-J6FXVDKC.js} +2 -2
  56. package/dist/{chunk-2GXEQUEX.js → chunk-JFSUYGNE.js} +2 -2
  57. package/dist/{chunk-LR4Z47QD.js → chunk-JILOSL4O.js} +3 -3
  58. package/dist/{chunk-RC4BROYR.js → chunk-JRWLUWDM.js} +3 -3
  59. package/dist/{chunk-Z2WK53N6.js → chunk-JUBWUJY5.js} +2 -2
  60. package/dist/{chunk-JVLSU7S2.js → chunk-JY4U6CYV.js} +2 -2
  61. package/dist/{chunk-3SMSERQU.js → chunk-KKZPQLDH.js} +80 -80
  62. package/dist/{chunk-WLLUM35R.js → chunk-KQIDBIZL.js} +2 -2
  63. package/dist/{chunk-LKFKXS5K.js → chunk-KZTPL7NL.js} +2 -2
  64. package/dist/{chunk-S2VG3ABP.js → chunk-LAI7ENPW.js} +3 -3
  65. package/dist/{chunk-ZO252Q5S.js → chunk-LUVGSKXE.js} +6 -6
  66. package/dist/{chunk-PGFKIOR3.js → chunk-MENI33ZV.js} +3 -3
  67. package/dist/{chunk-MTBXJAS4.js → chunk-MOQ6OGKS.js} +4 -4
  68. package/dist/{chunk-5ACAVJUI.js → chunk-MTTPHBIE.js} +2 -2
  69. package/dist/{chunk-T3PHCEN4.js → chunk-MU74BYOD.js} +3 -3
  70. package/dist/{chunk-DFAUMLD7.js → chunk-MV2OEK3K.js} +5 -5
  71. package/dist/{chunk-RK7N4OQ5.js → chunk-N4CHCXDL.js} +3 -1
  72. package/dist/chunk-N4CHCXDL.js.map +1 -0
  73. package/dist/{chunk-LF6DMX4C.js → chunk-NMDMSHBF.js} +3 -3
  74. package/dist/{chunk-H3VG6XBC.js → chunk-NUXTUGAD.js} +15 -13
  75. package/dist/chunk-NUXTUGAD.js.map +1 -0
  76. package/dist/{chunk-225O5CXQ.js → chunk-O3SNM66K.js} +2 -2
  77. package/dist/{chunk-YCSM3GZU.js → chunk-OEJ4R52I.js} +2 -2
  78. package/dist/{chunk-IESNYJXZ.js → chunk-OKCQNMO6.js} +6 -6
  79. package/dist/{chunk-H36KSN6X.js → chunk-OLUTCM23.js} +7 -7
  80. package/dist/{chunk-RDHUZ674.js → chunk-OQDHIAR2.js} +4 -4
  81. package/dist/{chunk-KN4W2OQ4.js → chunk-OXZSMX2H.js} +10 -8
  82. package/dist/{chunk-KN4W2OQ4.js.map → chunk-OXZSMX2H.js.map} +1 -1
  83. package/dist/{chunk-DKWPJOYH.js → chunk-P22XPNFW.js} +2 -2
  84. package/dist/{chunk-GK4DRVUD.js → chunk-P2RJAVMR.js} +4 -4
  85. package/dist/{chunk-UCUALOSM.js → chunk-P7KJME6C.js} +2 -2
  86. package/dist/{chunk-HM4JSXX2.js → chunk-PCIBCL26.js} +3 -3
  87. package/dist/{chunk-4A4TYISP.js → chunk-PV7XXAXK.js} +2 -2
  88. package/dist/{chunk-5AFMP532.js → chunk-Q2OAAREU.js} +6 -6
  89. package/dist/{chunk-Z7ZXZL6Y.js → chunk-Q2ZN5DWZ.js} +2 -2
  90. package/dist/{chunk-L6GTLZRK.js → chunk-QJLOWGOU.js} +5 -5
  91. package/dist/{chunk-7LYUJNU3.js → chunk-QOHGWFAW.js} +2 -2
  92. package/dist/{chunk-6FOGTKBY.js → chunk-RCONOOVF.js} +5 -5
  93. package/dist/{chunk-VFIWDPXZ.js → chunk-RPX2H2OL.js} +3 -3
  94. package/dist/{chunk-JBIV4FLR.js → chunk-SW4TOSJL.js} +5 -1
  95. package/dist/chunk-SW4TOSJL.js.map +1 -0
  96. package/dist/{chunk-PCQDY6QN.js → chunk-SWFIXQF5.js} +6 -6
  97. package/dist/{chunk-ISSU3OH6.js → chunk-T66OY2U5.js} +7 -7
  98. package/dist/{chunk-6EW2UCVF.js → chunk-TAJZ7GXO.js} +3 -3
  99. package/dist/{chunk-57JTHWLQ.js → chunk-TQGT5BZE.js} +4 -4
  100. package/dist/{chunk-TOV6VMHF.js → chunk-U3RMWOXY.js} +3 -3
  101. package/dist/{chunk-PUJTKLPL.js → chunk-UL7TLJ54.js} +3 -3
  102. package/dist/{chunk-W5LHQXZU.js → chunk-USKHHOIV.js} +2 -2
  103. package/dist/{chunk-J4MN6XIU.js → chunk-UTFY6W6X.js} +2 -2
  104. package/dist/{chunk-P6ASQOZR.js → chunk-VT4DTCK5.js} +2 -2
  105. package/dist/{chunk-A2YW5EMU.js → chunk-X6YRP5EC.js} +5 -5
  106. package/dist/{chunk-FOG7YEJP.js → chunk-XGXVPCYW.js} +3 -3
  107. package/dist/{chunk-5263OEM3.js → chunk-XJP66QEN.js} +2 -2
  108. package/dist/{chunk-5W7YXFV5.js → chunk-XJTGBHK6.js} +67 -22
  109. package/dist/chunk-XJTGBHK6.js.map +1 -0
  110. package/dist/{chunk-OPXR4PB2.js → chunk-XKA6UH5V.js} +2 -2
  111. package/dist/{chunk-XDVVBETV.js → chunk-YHIAWECL.js} +2 -2
  112. package/dist/{chunk-J4UJ5FRV.js → chunk-Z277MC2O.js} +4 -4
  113. package/dist/{chunk-F7ZFRPGQ.js → chunk-ZB2K3FV7.js} +2 -2
  114. package/dist/{chunk-NLKLXXTO.js → chunk-ZQGRZN5L.js} +2 -2
  115. package/dist/classified/index.js +5 -5
  116. package/dist/{classified-marker-BSQHU4JT.js → classified-marker-R37XW5PC.js} +3 -3
  117. package/dist/collection-facade-OPJ3EC4L.js +45 -0
  118. package/dist/{computed-ASBNTLOK.js → computed-HW6IG5UH.js} +3 -3
  119. package/dist/consent/index.js +9 -9
  120. package/dist/cover/index.js +9 -9
  121. package/dist/custody/index.js +12 -12
  122. package/dist/{dead-filter-QKU56XTQ.js → dead-filter-GRT6RAML.js} +2 -2
  123. package/dist/debug/index.js +1 -1
  124. package/dist/{delegation-XWRPYODW.js → delegation-6QRAYSK6.js} +11 -11
  125. package/dist/derivations/index.js +12 -12
  126. package/dist/derive-AAIXSQIE.js +22 -0
  127. package/dist/directory/index.js +10 -10
  128. package/dist/{dispatch-4AP4PUZU.js → dispatch-DR3XITEC.js} +18 -18
  129. package/dist/{dispatch-VR4LRXZ7.js → dispatch-QCF7KPIP.js} +5 -5
  130. package/dist/{enclave-NYPT7WA7.js → enclave-OXZY3NOP.js} +9 -9
  131. package/dist/executor-67NA4KPO.js +29 -0
  132. package/dist/executor-7JDP7UBK.js +9 -0
  133. package/dist/executor-CRH5OB4V.js +9 -0
  134. package/dist/export-accessible-K4GJAU7U.js +23 -0
  135. package/dist/extract-partition-YJFL5OKK.js +38 -0
  136. package/dist/{fanout-sidecar-IWP3R4RC.js → fanout-sidecar-KGQCUJ7P.js} +9 -9
  137. package/dist/find-SVZHMEQI.js +11 -0
  138. package/dist/forget/index.js +9 -9
  139. package/dist/guards/index.js +4 -4
  140. package/dist/history/index.js +13 -13
  141. package/dist/i18n/index.js +14 -14
  142. package/dist/index.d.ts +13 -1
  143. package/dist/index.js +98 -92
  144. package/dist/index.js.map +1 -1
  145. package/dist/indexing/index.js +2 -2
  146. package/dist/introspection/index.js +11 -11
  147. package/dist/issue-64N6OG7U.js +19 -0
  148. package/dist/kernel/errors.d.ts +17 -0
  149. package/dist/kernel/types.d.ts +75 -0
  150. package/dist/{ledger-T5K4P2D7.js → ledger-ZAFULLAF.js} +11 -11
  151. package/dist/liberate-QAUKHU6W.js +25 -0
  152. package/dist/{link-set-76JZ6YB4.js → link-set-LQI2IJX6.js} +11 -11
  153. package/dist/{managed-secret-6YC32VXG.js → managed-secret-7OH7HKXV.js} +10 -10
  154. package/dist/materialized-views/index.js +20 -20
  155. package/dist/{migrate-cek-LBRKYUZZ.js → migrate-cek-QHZ75E6E.js} +2 -2
  156. package/dist/money/index.js +4 -4
  157. package/dist/noydb-ZUS5XAFT.js +86 -0
  158. package/dist/overlay-views/index.js +4 -4
  159. package/dist/periods/index.js +12 -12
  160. package/dist/pod/index.js +57 -57
  161. package/dist/{pod-handle-P6DPBM5U.js → pod-handle-BLOI4IFY.js} +9 -9
  162. package/dist/policy/index.js +10 -10
  163. package/dist/port/to/index.d.ts +2 -0
  164. package/dist/portability/index.js +8 -8
  165. package/dist/{post-register-53O7AJRZ.js → post-register-R33EKJQR.js} +6 -6
  166. package/dist/query/index.js +3 -3
  167. package/dist/reduce/index.js +4 -4
  168. package/dist/register-AYBQNTM3.js +32 -0
  169. package/dist/registry-CQWWOBO4.js +9 -0
  170. package/dist/registry-JCZ4BNLV.js +18 -0
  171. package/dist/registry-JFFENZ44.js +9 -0
  172. package/dist/registry-ZA4HACYR.js +19 -0
  173. package/dist/request-withdrawal-7IKUIAEB.js +31 -0
  174. package/dist/{reveal-XBIMHAXR.js → reveal-PI6ADRQU.js} +6 -6
  175. package/dist/revoke-PUJKRYJF.js +24 -0
  176. package/dist/satellites/index.js +1 -1
  177. package/dist/schema-update/index.js +2 -2
  178. package/dist/sealed-record/index.js +12 -12
  179. package/dist/search/index.js +4 -4
  180. package/dist/{seed-NSNIGYXE.js → seed-MCCGVPRI.js} +12 -12
  181. package/dist/sequence/index.js +9 -9
  182. package/dist/session/index.js +9 -9
  183. package/dist/shadow/index.js +2 -2
  184. package/dist/signer-5TA7FUC3.js +25 -0
  185. package/dist/snapshots/index.js +10 -10
  186. package/dist/{stale-MCS46TFO.js → stale-HZR7745Y.js} +10 -10
  187. package/dist/storage-J2QHNJCB.js +23 -0
  188. package/dist/{store-coordination-provider-6FM26VQM.js → store-coordination-provider-MYIHSZXT.js} +10 -10
  189. package/dist/sync/index.js +10 -10
  190. package/dist/team/index.js +15 -15
  191. package/dist/tiers/index.js +11 -11
  192. package/dist/to/index.js +8 -2
  193. package/dist/to/index.js.map +1 -1
  194. package/dist/transactions/index.js +3 -3
  195. package/dist/util/index.js +1 -1
  196. package/dist/vault-head/index.js +8 -8
  197. package/dist/{verify-WYOFLSNA.js → verify-R6CCBUA3.js} +5 -5
  198. package/dist/walk-3PA4ZOKS.js +21 -0
  199. package/dist/with-cargo/index.d.ts +1 -0
  200. package/dist/with-party/team/roster-epoch.d.ts +71 -0
  201. package/dist/with-party/team/roster-tag.d.ts +1 -1
  202. package/dist/withdraw-accessible-62VI4W7D.js +28 -0
  203. package/package.json +3 -3
  204. package/dist/api-EQYRTZO2.js +0 -20
  205. package/dist/chunk-2LPVI4PX.js.map +0 -1
  206. package/dist/chunk-5W7YXFV5.js.map +0 -1
  207. package/dist/chunk-H3VG6XBC.js.map +0 -1
  208. package/dist/chunk-H4M7ADXY.js.map +0 -1
  209. package/dist/chunk-JBIV4FLR.js.map +0 -1
  210. package/dist/chunk-RK7N4OQ5.js.map +0 -1
  211. package/dist/collection-facade-LG3NYZVB.js +0 -45
  212. package/dist/derive-CXHCY46K.js +0 -22
  213. package/dist/executor-3KFRQETS.js +0 -29
  214. package/dist/executor-AFHQYRAU.js +0 -9
  215. package/dist/executor-YYDW6XQI.js +0 -9
  216. package/dist/export-accessible-BX2ILB4C.js +0 -23
  217. package/dist/extract-partition-UPOVITFI.js +0 -38
  218. package/dist/find-SZBL2HPB.js +0 -11
  219. package/dist/issue-G53NB6EW.js +0 -19
  220. package/dist/liberate-VEOZRESE.js +0 -25
  221. package/dist/noydb-4VV2ZGLZ.js +0 -86
  222. package/dist/register-6TCBR6XD.js +0 -32
  223. package/dist/registry-DH2L4O2V.js +0 -18
  224. package/dist/registry-IWFMXCHX.js +0 -9
  225. package/dist/registry-Q3FG3OAX.js +0 -9
  226. package/dist/registry-YC3IFG3A.js +0 -19
  227. package/dist/request-withdrawal-NM5VYR6F.js +0 -31
  228. package/dist/revoke-MJNYWO72.js +0 -24
  229. package/dist/signer-6XVS2AU3.js +0 -25
  230. package/dist/storage-ZXUT476I.js +0 -23
  231. package/dist/walk-JNEOYCAU.js +0 -21
  232. package/dist/withdraw-accessible-ILTSXTIE.js +0 -28
  233. /package/dist/{api-EQYRTZO2.js.map → api-GJQF7OAJ.js.map} +0 -0
  234. /package/dist/{backup-Z7ZBTAQ6.js.map → backup-QZQEP5RO.js.map} +0 -0
  235. /package/dist/{chunk-AB5P32RE.js.map → chunk-2DGBRE4K.js.map} +0 -0
  236. /package/dist/{chunk-XVU7J43V.js.map → chunk-2E2LT37H.js.map} +0 -0
  237. /package/dist/{chunk-4LPF226H.js.map → chunk-2MQ2D5OZ.js.map} +0 -0
  238. /package/dist/{chunk-DBNYPLWY.js.map → chunk-357ECVLE.js.map} +0 -0
  239. /package/dist/{chunk-SHILAQH5.js.map → chunk-3GIA3HJ2.js.map} +0 -0
  240. /package/dist/{chunk-QGJ4XIA7.js.map → chunk-3SWP2FYA.js.map} +0 -0
  241. /package/dist/{chunk-N4CNVSUF.js.map → chunk-4RUFYGWG.js.map} +0 -0
  242. /package/dist/{chunk-4G25SDQL.js.map → chunk-4U52PMEL.js.map} +0 -0
  243. /package/dist/{chunk-H7HP56F6.js.map → chunk-5EC7X5QA.js.map} +0 -0
  244. /package/dist/{chunk-WK5FSW7T.js.map → chunk-5NKHCJU5.js.map} +0 -0
  245. /package/dist/{chunk-PQ6Z2TAP.js.map → chunk-5UKIZIO3.js.map} +0 -0
  246. /package/dist/{chunk-QHJKK77B.js.map → chunk-5W5CEHLA.js.map} +0 -0
  247. /package/dist/{chunk-YPSOHDNC.js.map → chunk-65ZYRK7O.js.map} +0 -0
  248. /package/dist/{chunk-4ZPE6SKS.js.map → chunk-75WNTBZL.js.map} +0 -0
  249. /package/dist/{chunk-OWLVBOWO.js.map → chunk-7XT7KZTN.js.map} +0 -0
  250. /package/dist/{chunk-QI5NWLVW.js.map → chunk-AHIIBDNH.js.map} +0 -0
  251. /package/dist/{chunk-XSN63FUS.js.map → chunk-AW4KTQA4.js.map} +0 -0
  252. /package/dist/{chunk-KDJGJR7F.js.map → chunk-CWFH36SI.js.map} +0 -0
  253. /package/dist/{chunk-X67FCULK.js.map → chunk-DIVY2CJZ.js.map} +0 -0
  254. /package/dist/{chunk-Z2PWOSCJ.js.map → chunk-DNMTN46H.js.map} +0 -0
  255. /package/dist/{chunk-HTGRQZFB.js.map → chunk-DZPMKY3J.js.map} +0 -0
  256. /package/dist/{chunk-XJ3FEKEY.js.map → chunk-FKQCC4C5.js.map} +0 -0
  257. /package/dist/{chunk-E6YA6UAP.js.map → chunk-FLRLZ4XZ.js.map} +0 -0
  258. /package/dist/{chunk-ALUNQEBY.js.map → chunk-FN26SFGH.js.map} +0 -0
  259. /package/dist/{chunk-TVIFAHZR.js.map → chunk-FPN5D4JX.js.map} +0 -0
  260. /package/dist/{chunk-VTG7327U.js.map → chunk-FRIVOR5N.js.map} +0 -0
  261. /package/dist/{chunk-3QARDAYW.js.map → chunk-FYT3DXPN.js.map} +0 -0
  262. /package/dist/{chunk-YMLQBZFJ.js.map → chunk-FZWAGG5T.js.map} +0 -0
  263. /package/dist/{chunk-CBRS2NEK.js.map → chunk-GHADG5QZ.js.map} +0 -0
  264. /package/dist/{chunk-3L2MVE36.js.map → chunk-GKOJR53Y.js.map} +0 -0
  265. /package/dist/{chunk-Y6GZ2P4M.js.map → chunk-GM4IM7TC.js.map} +0 -0
  266. /package/dist/{chunk-CN6B5PEN.js.map → chunk-H5GVPOB4.js.map} +0 -0
  267. /package/dist/{chunk-467SKJ65.js.map → chunk-HOIWW2LV.js.map} +0 -0
  268. /package/dist/{chunk-ALB64CZM.js.map → chunk-HS3LEVT4.js.map} +0 -0
  269. /package/dist/{chunk-YXA2TCTZ.js.map → chunk-I5LSKXT6.js.map} +0 -0
  270. /package/dist/{chunk-S35S77YU.js.map → chunk-IAHDSFFA.js.map} +0 -0
  271. /package/dist/{chunk-X62MEF2O.js.map → chunk-IRHIA3AL.js.map} +0 -0
  272. /package/dist/{chunk-F23WQK3G.js.map → chunk-IS5LFHV2.js.map} +0 -0
  273. /package/dist/{chunk-POS53FG6.js.map → chunk-IZTU6RKH.js.map} +0 -0
  274. /package/dist/{chunk-VAG47QHV.js.map → chunk-J6FXVDKC.js.map} +0 -0
  275. /package/dist/{chunk-2GXEQUEX.js.map → chunk-JFSUYGNE.js.map} +0 -0
  276. /package/dist/{chunk-LR4Z47QD.js.map → chunk-JILOSL4O.js.map} +0 -0
  277. /package/dist/{chunk-RC4BROYR.js.map → chunk-JRWLUWDM.js.map} +0 -0
  278. /package/dist/{chunk-Z2WK53N6.js.map → chunk-JUBWUJY5.js.map} +0 -0
  279. /package/dist/{chunk-JVLSU7S2.js.map → chunk-JY4U6CYV.js.map} +0 -0
  280. /package/dist/{chunk-3SMSERQU.js.map → chunk-KKZPQLDH.js.map} +0 -0
  281. /package/dist/{chunk-WLLUM35R.js.map → chunk-KQIDBIZL.js.map} +0 -0
  282. /package/dist/{chunk-LKFKXS5K.js.map → chunk-KZTPL7NL.js.map} +0 -0
  283. /package/dist/{chunk-S2VG3ABP.js.map → chunk-LAI7ENPW.js.map} +0 -0
  284. /package/dist/{chunk-ZO252Q5S.js.map → chunk-LUVGSKXE.js.map} +0 -0
  285. /package/dist/{chunk-PGFKIOR3.js.map → chunk-MENI33ZV.js.map} +0 -0
  286. /package/dist/{chunk-MTBXJAS4.js.map → chunk-MOQ6OGKS.js.map} +0 -0
  287. /package/dist/{chunk-5ACAVJUI.js.map → chunk-MTTPHBIE.js.map} +0 -0
  288. /package/dist/{chunk-T3PHCEN4.js.map → chunk-MU74BYOD.js.map} +0 -0
  289. /package/dist/{chunk-DFAUMLD7.js.map → chunk-MV2OEK3K.js.map} +0 -0
  290. /package/dist/{chunk-LF6DMX4C.js.map → chunk-NMDMSHBF.js.map} +0 -0
  291. /package/dist/{chunk-225O5CXQ.js.map → chunk-O3SNM66K.js.map} +0 -0
  292. /package/dist/{chunk-YCSM3GZU.js.map → chunk-OEJ4R52I.js.map} +0 -0
  293. /package/dist/{chunk-IESNYJXZ.js.map → chunk-OKCQNMO6.js.map} +0 -0
  294. /package/dist/{chunk-H36KSN6X.js.map → chunk-OLUTCM23.js.map} +0 -0
  295. /package/dist/{chunk-RDHUZ674.js.map → chunk-OQDHIAR2.js.map} +0 -0
  296. /package/dist/{chunk-DKWPJOYH.js.map → chunk-P22XPNFW.js.map} +0 -0
  297. /package/dist/{chunk-GK4DRVUD.js.map → chunk-P2RJAVMR.js.map} +0 -0
  298. /package/dist/{chunk-UCUALOSM.js.map → chunk-P7KJME6C.js.map} +0 -0
  299. /package/dist/{chunk-HM4JSXX2.js.map → chunk-PCIBCL26.js.map} +0 -0
  300. /package/dist/{chunk-4A4TYISP.js.map → chunk-PV7XXAXK.js.map} +0 -0
  301. /package/dist/{chunk-5AFMP532.js.map → chunk-Q2OAAREU.js.map} +0 -0
  302. /package/dist/{chunk-Z7ZXZL6Y.js.map → chunk-Q2ZN5DWZ.js.map} +0 -0
  303. /package/dist/{chunk-L6GTLZRK.js.map → chunk-QJLOWGOU.js.map} +0 -0
  304. /package/dist/{chunk-7LYUJNU3.js.map → chunk-QOHGWFAW.js.map} +0 -0
  305. /package/dist/{chunk-6FOGTKBY.js.map → chunk-RCONOOVF.js.map} +0 -0
  306. /package/dist/{chunk-VFIWDPXZ.js.map → chunk-RPX2H2OL.js.map} +0 -0
  307. /package/dist/{chunk-PCQDY6QN.js.map → chunk-SWFIXQF5.js.map} +0 -0
  308. /package/dist/{chunk-ISSU3OH6.js.map → chunk-T66OY2U5.js.map} +0 -0
  309. /package/dist/{chunk-6EW2UCVF.js.map → chunk-TAJZ7GXO.js.map} +0 -0
  310. /package/dist/{chunk-57JTHWLQ.js.map → chunk-TQGT5BZE.js.map} +0 -0
  311. /package/dist/{chunk-TOV6VMHF.js.map → chunk-U3RMWOXY.js.map} +0 -0
  312. /package/dist/{chunk-PUJTKLPL.js.map → chunk-UL7TLJ54.js.map} +0 -0
  313. /package/dist/{chunk-W5LHQXZU.js.map → chunk-USKHHOIV.js.map} +0 -0
  314. /package/dist/{chunk-J4MN6XIU.js.map → chunk-UTFY6W6X.js.map} +0 -0
  315. /package/dist/{chunk-P6ASQOZR.js.map → chunk-VT4DTCK5.js.map} +0 -0
  316. /package/dist/{chunk-A2YW5EMU.js.map → chunk-X6YRP5EC.js.map} +0 -0
  317. /package/dist/{chunk-FOG7YEJP.js.map → chunk-XGXVPCYW.js.map} +0 -0
  318. /package/dist/{chunk-5263OEM3.js.map → chunk-XJP66QEN.js.map} +0 -0
  319. /package/dist/{chunk-OPXR4PB2.js.map → chunk-XKA6UH5V.js.map} +0 -0
  320. /package/dist/{chunk-XDVVBETV.js.map → chunk-YHIAWECL.js.map} +0 -0
  321. /package/dist/{chunk-J4UJ5FRV.js.map → chunk-Z277MC2O.js.map} +0 -0
  322. /package/dist/{chunk-F7ZFRPGQ.js.map → chunk-ZB2K3FV7.js.map} +0 -0
  323. /package/dist/{chunk-NLKLXXTO.js.map → chunk-ZQGRZN5L.js.map} +0 -0
  324. /package/dist/{classified-marker-BSQHU4JT.js.map → classified-marker-R37XW5PC.js.map} +0 -0
  325. /package/dist/{collection-facade-LG3NYZVB.js.map → collection-facade-OPJ3EC4L.js.map} +0 -0
  326. /package/dist/{computed-ASBNTLOK.js.map → computed-HW6IG5UH.js.map} +0 -0
  327. /package/dist/{dead-filter-QKU56XTQ.js.map → dead-filter-GRT6RAML.js.map} +0 -0
  328. /package/dist/{delegation-XWRPYODW.js.map → delegation-6QRAYSK6.js.map} +0 -0
  329. /package/dist/{derive-CXHCY46K.js.map → derive-AAIXSQIE.js.map} +0 -0
  330. /package/dist/{dispatch-4AP4PUZU.js.map → dispatch-DR3XITEC.js.map} +0 -0
  331. /package/dist/{dispatch-VR4LRXZ7.js.map → dispatch-QCF7KPIP.js.map} +0 -0
  332. /package/dist/{enclave-NYPT7WA7.js.map → enclave-OXZY3NOP.js.map} +0 -0
  333. /package/dist/{executor-3KFRQETS.js.map → executor-67NA4KPO.js.map} +0 -0
  334. /package/dist/{executor-AFHQYRAU.js.map → executor-7JDP7UBK.js.map} +0 -0
  335. /package/dist/{executor-YYDW6XQI.js.map → executor-CRH5OB4V.js.map} +0 -0
  336. /package/dist/{export-accessible-BX2ILB4C.js.map → export-accessible-K4GJAU7U.js.map} +0 -0
  337. /package/dist/{extract-partition-UPOVITFI.js.map → extract-partition-YJFL5OKK.js.map} +0 -0
  338. /package/dist/{fanout-sidecar-IWP3R4RC.js.map → fanout-sidecar-KGQCUJ7P.js.map} +0 -0
  339. /package/dist/{find-SZBL2HPB.js.map → find-SVZHMEQI.js.map} +0 -0
  340. /package/dist/{issue-G53NB6EW.js.map → issue-64N6OG7U.js.map} +0 -0
  341. /package/dist/{ledger-T5K4P2D7.js.map → ledger-ZAFULLAF.js.map} +0 -0
  342. /package/dist/{liberate-VEOZRESE.js.map → liberate-QAUKHU6W.js.map} +0 -0
  343. /package/dist/{link-set-76JZ6YB4.js.map → link-set-LQI2IJX6.js.map} +0 -0
  344. /package/dist/{managed-secret-6YC32VXG.js.map → managed-secret-7OH7HKXV.js.map} +0 -0
  345. /package/dist/{migrate-cek-LBRKYUZZ.js.map → migrate-cek-QHZ75E6E.js.map} +0 -0
  346. /package/dist/{noydb-4VV2ZGLZ.js.map → noydb-ZUS5XAFT.js.map} +0 -0
  347. /package/dist/{pod-handle-P6DPBM5U.js.map → pod-handle-BLOI4IFY.js.map} +0 -0
  348. /package/dist/{post-register-53O7AJRZ.js.map → post-register-R33EKJQR.js.map} +0 -0
  349. /package/dist/{register-6TCBR6XD.js.map → register-AYBQNTM3.js.map} +0 -0
  350. /package/dist/{registry-DH2L4O2V.js.map → registry-CQWWOBO4.js.map} +0 -0
  351. /package/dist/{registry-IWFMXCHX.js.map → registry-JCZ4BNLV.js.map} +0 -0
  352. /package/dist/{registry-Q3FG3OAX.js.map → registry-JFFENZ44.js.map} +0 -0
  353. /package/dist/{registry-YC3IFG3A.js.map → registry-ZA4HACYR.js.map} +0 -0
  354. /package/dist/{request-withdrawal-NM5VYR6F.js.map → request-withdrawal-7IKUIAEB.js.map} +0 -0
  355. /package/dist/{reveal-XBIMHAXR.js.map → reveal-PI6ADRQU.js.map} +0 -0
  356. /package/dist/{revoke-MJNYWO72.js.map → revoke-PUJKRYJF.js.map} +0 -0
  357. /package/dist/{seed-NSNIGYXE.js.map → seed-MCCGVPRI.js.map} +0 -0
  358. /package/dist/{signer-6XVS2AU3.js.map → signer-5TA7FUC3.js.map} +0 -0
  359. /package/dist/{stale-MCS46TFO.js.map → stale-HZR7745Y.js.map} +0 -0
  360. /package/dist/{storage-ZXUT476I.js.map → storage-J2QHNJCB.js.map} +0 -0
  361. /package/dist/{store-coordination-provider-6FM26VQM.js.map → store-coordination-provider-MYIHSZXT.js.map} +0 -0
  362. /package/dist/{verify-WYOFLSNA.js.map → verify-R6CCBUA3.js.map} +0 -0
  363. /package/dist/{walk-JNEOYCAU.js.map → walk-3PA4ZOKS.js.map} +0 -0
  364. /package/dist/{withdraw-accessible-ILTSXTIE.js.map → withdraw-accessible-62VI4W7D.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  envelopePayloadHash
3
- } from "./chunk-RC4BROYR.js";
3
+ } from "./chunk-JRWLUWDM.js";
4
4
  import {
5
5
  NOYDB_FORMAT_VERSION
6
- } from "./chunk-RK7N4OQ5.js";
6
+ } from "./chunk-N4CHCXDL.js";
7
7
  import {
8
8
  DictKeyMissingError,
9
9
  PermissionDeniedError
10
- } from "./chunk-JBIV4FLR.js";
10
+ } from "./chunk-SW4TOSJL.js";
11
11
 
12
12
  // src/via/lookup/handle.ts
13
13
  function isDeleteMarker(envelope) {
@@ -392,4 +392,4 @@ export {
392
392
  dictCollectionName,
393
393
  LookupHandle
394
394
  };
395
- //# sourceMappingURL=chunk-57JTHWLQ.js.map
395
+ //# sourceMappingURL=chunk-TQGT5BZE.js.map
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-NSITFOCJ.js";
4
4
  import {
5
5
  installViaBinder
6
- } from "./chunk-XDVVBETV.js";
6
+ } from "./chunk-YHIAWECL.js";
7
7
  import {
8
8
  NoydbError,
9
9
  ValidationError
10
- } from "./chunk-JBIV4FLR.js";
10
+ } from "./chunk-SW4TOSJL.js";
11
11
 
12
12
  // src/via/money/iso4217.ts
13
13
  var MINOR_UNITS = {
@@ -1044,4 +1044,4 @@ export {
1044
1044
  decodeMoneyFields,
1045
1045
  exactMath
1046
1046
  };
1047
- //# sourceMappingURL=chunk-TOV6VMHF.js.map
1047
+ //# sourceMappingURL=chunk-U3RMWOXY.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  validateProjectionLegs
3
- } from "./chunk-4ZPE6SKS.js";
3
+ } from "./chunk-75WNTBZL.js";
4
4
  import {
5
5
  MaterializedViewConfigError,
6
6
  ValidationError
7
- } from "./chunk-JBIV4FLR.js";
7
+ } from "./chunk-SW4TOSJL.js";
8
8
 
9
9
  // src/with-formula/materialized-views/with-materialized-view.ts
10
10
  function withMaterializedView(spec) {
@@ -181,4 +181,4 @@ function withMaterializedView(spec) {
181
181
  export {
182
182
  withMaterializedView
183
183
  };
184
- //# sourceMappingURL=chunk-PUJTKLPL.js.map
184
+ //# sourceMappingURL=chunk-UL7TLJ54.js.map
@@ -3,7 +3,7 @@ import {
3
3
  InvalidKeyError,
4
4
  TamperedError,
5
5
  ValidationError
6
- } from "./chunk-JBIV4FLR.js";
6
+ } from "./chunk-SW4TOSJL.js";
7
7
 
8
8
  // src/kernel/enclave/crypto.ts
9
9
  var PBKDF2_ITERATIONS = 6e5;
@@ -448,4 +448,4 @@ export {
448
448
  bufferToBase64,
449
449
  base64ToBuffer
450
450
  };
451
- //# sourceMappingURL=chunk-W5LHQXZU.js.map
451
+ //# sourceMappingURL=chunk-USKHHOIV.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PortabilityNotEnabledError
3
- } from "./chunk-JBIV4FLR.js";
3
+ } from "./chunk-SW4TOSJL.js";
4
4
 
5
5
  // src/with-audit/portability/strategy.ts
6
6
  var NO_PORTABILITY = {
@@ -27,4 +27,4 @@ var NO_PORTABILITY = {
27
27
  export {
28
28
  NO_PORTABILITY
29
29
  };
30
- //# sourceMappingURL=chunk-J4MN6XIU.js.map
30
+ //# sourceMappingURL=chunk-UTFY6W6X.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-Y2NBBT6K.js";
4
4
  import {
5
5
  sha256Hex
6
- } from "./chunk-W5LHQXZU.js";
6
+ } from "./chunk-USKHHOIV.js";
7
7
 
8
8
  // src/with-shape/persisted-schemas/derive.ts
9
9
  function isZodSchema(value) {
@@ -79,4 +79,4 @@ export {
79
79
  isZod4Schema,
80
80
  derivePersistedSchema
81
81
  };
82
- //# sourceMappingURL=chunk-P6ASQOZR.js.map
82
+ //# sourceMappingURL=chunk-VT4DTCK5.js.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  getHistory,
3
3
  historyIdentity
4
- } from "./chunk-6EW2UCVF.js";
4
+ } from "./chunk-TAJZ7GXO.js";
5
5
  import {
6
6
  liveRecordIsElevated
7
- } from "./chunk-POS53FG6.js";
7
+ } from "./chunk-IZTU6RKH.js";
8
8
  import {
9
9
  openEnvelopeJson
10
- } from "./chunk-2LPVI4PX.js";
10
+ } from "./chunk-DOPZWTMJ.js";
11
11
  import {
12
12
  ReadOnlyAtInstantError
13
- } from "./chunk-JBIV4FLR.js";
13
+ } from "./chunk-SW4TOSJL.js";
14
14
 
15
15
  // src/with-commit/history/time-machine.ts
16
16
  var VaultInstant = class {
@@ -208,4 +208,4 @@ export {
208
208
  VaultInstant,
209
209
  CollectionInstant
210
210
  };
211
- //# sourceMappingURL=chunk-A2YW5EMU.js.map
211
+ //# sourceMappingURL=chunk-X6YRP5EC.js.map
@@ -2,10 +2,10 @@ import {
2
2
  base64ToBuffer,
3
3
  decryptBytesWithAAD,
4
4
  encryptBytesWithAAD
5
- } from "./chunk-W5LHQXZU.js";
5
+ } from "./chunk-USKHHOIV.js";
6
6
  import {
7
7
  TamperedError
8
- } from "./chunk-JBIV4FLR.js";
8
+ } from "./chunk-SW4TOSJL.js";
9
9
 
10
10
  // src/kernel/enclave/classify/compare.ts
11
11
  var subtle = globalThis.crypto.subtle;
@@ -92,4 +92,4 @@ export {
92
92
  openVdigPayload,
93
93
  evaluateKofN
94
94
  };
95
- //# sourceMappingURL=chunk-FOG7YEJP.js.map
95
+ //# sourceMappingURL=chunk-XGXVPCYW.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DerivationCycleError,
3
3
  MaterializedViewCycleError
4
- } from "./chunk-JBIV4FLR.js";
4
+ } from "./chunk-SW4TOSJL.js";
5
5
 
6
6
  // src/kernel/via/graph.ts
7
7
  var DEFAULT_POSTURE = { encryptedAtRest: "envelope", queryable: "full", exportable: true, forgettable: false };
@@ -341,4 +341,4 @@ export {
341
341
  DEFAULT_POSTURE,
342
342
  ViaGraph
343
343
  };
344
- //# sourceMappingURL=chunk-5263OEM3.js.map
344
+ //# sourceMappingURL=chunk-XJP66QEN.js.map
@@ -5,18 +5,18 @@ import {
5
5
  readDirectoryConfig,
6
6
  readUserVisibility,
7
7
  saveUserEnvelope
8
- } from "./chunk-DFAUMLD7.js";
8
+ } from "./chunk-MV2OEK3K.js";
9
9
  import {
10
10
  parseDekKey
11
- } from "./chunk-POS53FG6.js";
11
+ } from "./chunk-IZTU6RKH.js";
12
12
  import {
13
13
  envelopeOpensUnderAny,
14
14
  rekeyBlobSet,
15
15
  rekeyEnvelopeIfNeeded
16
- } from "./chunk-2LPVI4PX.js";
16
+ } from "./chunk-DOPZWTMJ.js";
17
17
  import {
18
18
  buildRecordEnvelope
19
- } from "./chunk-N4CNVSUF.js";
19
+ } from "./chunk-4RUFYGWG.js";
20
20
  import {
21
21
  base64ToBuffer,
22
22
  bufferToBase64,
@@ -31,10 +31,10 @@ import {
31
31
  generateSalt,
32
32
  unwrapKey,
33
33
  wrapKey
34
- } from "./chunk-W5LHQXZU.js";
34
+ } from "./chunk-USKHHOIV.js";
35
35
  import {
36
36
  NOYDB_KEYRING_VERSION
37
- } from "./chunk-RK7N4OQ5.js";
37
+ } from "./chunk-N4CHCXDL.js";
38
38
  import {
39
39
  BLOB_ADDRESS_KEY_ID,
40
40
  DirectoryDisabledError,
@@ -51,7 +51,21 @@ import {
51
51
  USER_ENVELOPE_COLLECTION,
52
52
  ValidationError,
53
53
  WrongPromptError
54
- } from "./chunk-JBIV4FLR.js";
54
+ } from "./chunk-SW4TOSJL.js";
55
+
56
+ // src/with-party/team/roster-epoch.ts
57
+ function assertRosterEpochCurrent(found, expected, userId) {
58
+ if (expected === void 0) return;
59
+ if (found === void 0) {
60
+ throw new KeyringTamperedError({ userId, reason: "roster-epoch-absent" });
61
+ }
62
+ if (!Number.isFinite(found) || found < expected) {
63
+ throw new KeyringTamperedError({ userId, reason: "roster-epoch-rewound" });
64
+ }
65
+ }
66
+ function nextRosterEpoch(current) {
67
+ return Number.isFinite(current) ? current + 1 : 1;
68
+ }
55
69
 
56
70
  // src/with-party/team/roster-tag.ts
57
71
  function stable(value) {
@@ -89,7 +103,24 @@ function rosterCanonical(file) {
89
103
  pending_dek_slots: Object.keys(file.pending_deks ?? {}).sort(),
90
104
  expires_at: file.expires_at ?? null,
91
105
  export_capability: file.export_capability ?? null,
92
- import_capability: file.import_capability ?? null
106
+ import_capability: file.import_capability ?? null,
107
+ // #1097 — the roster epoch, bound ONLY WHEN PRESENT.
108
+ //
109
+ // The conditional spread is the entire backward-compatibility story, not a
110
+ // style choice. `stable()` drops `undefined`, so a file written before the
111
+ // epoch existed produces the byte-identical canonical string it always did
112
+ // and its roster tag still verifies. Writing `file.roster_epoch ?? null` —
113
+ // the shape every other optional field above uses — would have changed that
114
+ // string for every existing keyring, failed every existing tag, and
115
+ // rendered every existing vault unopenable. #1115 took exactly that cost
116
+ // deliberately; there is no reason to take it again for a field that can be
117
+ // additive.
118
+ //
119
+ // A PRESENT epoch is authenticated: stripping it changes the canonical and
120
+ // the tag stops verifying, so a store cannot downgrade a file to the
121
+ // no-epoch shape. It can only replay a file that genuinely never had one,
122
+ // which is why absence must read as UNKNOWN rather than as zero.
123
+ ...file.roster_epoch !== void 0 ? { roster_epoch: file.roster_epoch } : {}
93
124
  });
94
125
  }
95
126
  async function mintRosterTag(file, rosterKey) {
@@ -531,13 +562,14 @@ async function createOwnerKeyring(store, vault, opts) {
531
562
  [BLOB_ADDRESS_KEY_ID]: wrappedBlobAddressKey
532
563
  }
533
564
  };
565
+ const withEpoch = { ...authorityWithDeks, roster_epoch: nextRosterEpoch(void 0) };
534
566
  const keyringFile = {
535
567
  _noydb_keyring: NOYDB_KEYRING_VERSION,
536
- ...authorityWithDeks,
568
+ ...withEpoch,
537
569
  salt: bufferToBase64(salt),
538
570
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
539
571
  canary,
540
- roster_tag: await mintRosterTag(authorityWithDeks, rosterKey),
572
+ roster_tag: await mintRosterTag(withEpoch, rosterKey),
541
573
  // The presence of this block is what makes the keyring an echo keyring —
542
574
  // `deriveKekForKeyring` reads it to refuse a single-string unlock (AG-1).
543
575
  ...typeof secret !== "string" ? {
@@ -637,15 +669,16 @@ async function grant(store, vault, callerKeyring, options) {
637
669
  ...options.importCapability !== void 0 && { import_capability: options.importCapability }
638
670
  };
639
671
  const authorityWithDeks = { ...authority, deks: wrappedDeks };
672
+ const withEpoch = { ...authorityWithDeks, roster_epoch: nextRosterEpoch(previousGrantFound?.file.roster_epoch) };
640
673
  const keyringFile = {
641
674
  _noydb_keyring: NOYDB_KEYRING_VERSION,
642
- ...authorityWithDeks,
675
+ ...withEpoch,
643
676
  salt: bufferToBase64(newSalt),
644
677
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
645
678
  canary,
646
679
  // The grantee's own copy of the roster key rode in via the `_`-prefix
647
680
  // propagation loop above, so they can verify this tag on first unlock.
648
- roster_tag: await mintRosterTag(authorityWithDeks, callerRosterKey)
681
+ roster_tag: await mintRosterTag(withEpoch, callerRosterKey)
649
682
  };
650
683
  await writeKeyringFile(store, vault, options.userId, keyringFile);
651
684
  if (previousDekNames !== null && options.userId !== callerKeyring.userId) {
@@ -873,7 +906,8 @@ async function updateKeyringIdentity(store, vault, callerKeyring, options) {
873
906
  },
874
907
  ...options.permissions !== void 0 && { permissions: options.permissions }
875
908
  };
876
- const next = { ...edited, roster_tag: await mintRosterTag(edited, rosterKey) };
909
+ const withEpoch = { ...edited, roster_epoch: nextRosterEpoch(target.roster_epoch) };
910
+ const next = { ...withEpoch, roster_tag: await mintRosterTag(withEpoch, rosterKey) };
877
911
  await writeKeyringFile(store, vault, options.userId, next);
878
912
  }
879
913
  var HISTORY_COLLECTION = "_history";
@@ -1011,9 +1045,10 @@ async function rotateKeys(store, vault, callerKeyring, opts) {
1011
1045
  deks: updatedDeks,
1012
1046
  permissions: updatedPermissions
1013
1047
  };
1048
+ const withEpoch = { ...edited, roster_epoch: nextRosterEpoch(userKeyringFile.roster_epoch) };
1014
1049
  const updatedKeyring = {
1015
- ...edited,
1016
- roster_tag: await mintRosterTag(edited, callerRosterKey)
1050
+ ...withEpoch,
1051
+ roster_tag: await mintRosterTag(withEpoch, callerRosterKey)
1017
1052
  };
1018
1053
  await writeKeyringFile(store, vault, userId, updatedKeyring);
1019
1054
  }
@@ -1050,13 +1085,14 @@ async function changeSecret(store, vault, keyring, opts) {
1050
1085
  ...existingAuthority?.import_capability !== void 0 && { import_capability: existingAuthority.import_capability }
1051
1086
  };
1052
1087
  const authorityWithDeks = { ...authority, deks: wrappedDeks };
1088
+ const withEpoch = { ...authorityWithDeks, roster_epoch: nextRosterEpoch(existingAuthority?.roster_epoch) };
1053
1089
  const keyringFile = {
1054
1090
  _noydb_keyring: NOYDB_KEYRING_VERSION,
1055
- ...authorityWithDeks,
1091
+ ...withEpoch,
1056
1092
  salt: bufferToBase64(newSalt),
1057
1093
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
1058
1094
  canary,
1059
- roster_tag: await mintRosterTag(authorityWithDeks, rosterKey)
1095
+ roster_tag: await mintRosterTag(withEpoch, rosterKey)
1060
1096
  };
1061
1097
  await writeKeyringFile(store, vault, keyring.userId, keyringFile);
1062
1098
  return {
@@ -1124,15 +1160,16 @@ async function buildRecipientKeyringFile(callerKeyring, recipient) {
1124
1160
  ...recipient.expiresAt !== void 0 ? { expires_at: recipient.expiresAt } : {}
1125
1161
  };
1126
1162
  const authorityWithDeks = { ...authority, deks: wrappedDeks };
1163
+ const withEpoch = { ...authorityWithDeks, roster_epoch: nextRosterEpoch(void 0) };
1127
1164
  return {
1128
1165
  _noydb_keyring: NOYDB_KEYRING_VERSION,
1129
- ...authorityWithDeks,
1166
+ ...withEpoch,
1130
1167
  salt: bufferToBase64(newSalt),
1131
1168
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
1132
1169
  canary,
1133
1170
  // The recipient's copy of the roster key rode in via the `_`-prefix
1134
1171
  // propagation loop above, so the slot verifies on first unlock.
1135
- roster_tag: await mintRosterTag(authorityWithDeks, rosterKey),
1172
+ roster_tag: await mintRosterTag(withEpoch, rosterKey),
1136
1173
  // The presence of this block is what makes the recipient's slot an
1137
1174
  // echo keyring — mirrors `createOwnerKeyring`'s same dance so the
1138
1175
  // ceremony (prompt → echo → key) travels with the pod, not just a
@@ -1291,13 +1328,14 @@ async function persistKeyring(store, vault, keyring) {
1291
1328
  deks: wrappedDeks,
1292
1329
  ...Object.keys(wrappedPending).length > 0 ? { pending_deks: wrappedPending } : {}
1293
1330
  };
1331
+ const withEpoch = { ...authorityWithDeks, roster_epoch: nextRosterEpoch(existingFound?.file.roster_epoch) };
1294
1332
  const keyringFile = {
1295
1333
  _noydb_keyring: NOYDB_KEYRING_VERSION,
1296
- ...authorityWithDeks,
1334
+ ...withEpoch,
1297
1335
  salt: bufferToBase64(keyring.salt),
1298
1336
  created_at: existingCreatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
1299
1337
  canary,
1300
- roster_tag: await mintRosterTag(authorityWithDeks, rosterKey),
1338
+ roster_tag: await mintRosterTag(withEpoch, rosterKey),
1301
1339
  ...keyring.authenticators.length > 0 && { authenticators: keyring.authenticators },
1302
1340
  ...keyring.policy !== void 0 && { policy: keyring.policy },
1303
1341
  ...existingEcho !== void 0 && { echo: existingEcho }
@@ -1342,6 +1380,11 @@ function resolvePermissions(role, explicit) {
1342
1380
  return explicit ?? {};
1343
1381
  }
1344
1382
  async function writeKeyringFile(store, vault, userId, keyringFile) {
1383
+ if (keyringFile.roster_epoch === void 0) {
1384
+ throw new Error(
1385
+ `writeKeyringFile: refusing to write a keyring for "${userId}" with no roster_epoch (#1097). Stamp it with nextRosterEpoch(previous) onto the authority object BEFORE minting the roster tag, so it is covered by rosterCanonical.`
1386
+ );
1387
+ }
1345
1388
  const envelope = buildRecordEnvelope(
1346
1389
  { collection: "_keyring", id: userId, version: 1 },
1347
1390
  { iv: "", data: JSON.stringify(keyringFile) }
@@ -1350,6 +1393,8 @@ async function writeKeyringFile(store, vault, userId, keyringFile) {
1350
1393
  }
1351
1394
 
1352
1395
  export {
1396
+ assertRosterEpochCurrent,
1397
+ nextRosterEpoch,
1353
1398
  mintRosterTag,
1354
1399
  assertRosterAuthenticated,
1355
1400
  assertRosterTagValid,
@@ -1395,4 +1440,4 @@ export {
1395
1440
  hasImportCapability,
1396
1441
  evaluateImportCapability
1397
1442
  };
1398
- //# sourceMappingURL=chunk-5W7YXFV5.js.map
1443
+ //# sourceMappingURL=chunk-XJTGBHK6.js.map