@noy-db/hub 0.5.0 → 0.6.0-pre.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/dist/api-67SBPMMH.js +20 -0
  2. package/dist/attestation/index.js +18 -18
  3. package/dist/{backup-ENTZYW37.js → backup-GAYWQAFN.js} +16 -11
  4. package/dist/backup-GAYWQAFN.js.map +1 -0
  5. package/dist/blobs/index.js +20 -20
  6. package/dist/broker/index.js +12 -12
  7. package/dist/bundle-handle-5OUAI7CV.js +36 -0
  8. package/dist/bundle-handle-5OUAI7CV.js.map +1 -0
  9. package/dist/cargo/index.js +36 -36
  10. package/dist/{chunk-V3EGXDFN.js → chunk-24UICKTB.js} +3 -3
  11. package/dist/{chunk-77AEMXFA.js → chunk-24ZLWWEO.js} +1 -1
  12. package/dist/chunk-24ZLWWEO.js.map +1 -0
  13. package/dist/{chunk-6PFST3FC.js → chunk-27TCYH6G.js} +5 -5
  14. package/dist/{chunk-PTSVGKSR.js → chunk-2KIV7BEK.js} +2 -2
  15. package/dist/{chunk-3LYMOSY7.js → chunk-2LGDCNFJ.js} +2 -2
  16. package/dist/{chunk-NWK6SVBM.js → chunk-35EBKWQU.js} +3 -3
  17. package/dist/{chunk-QMCWYN6O.js → chunk-3737A6EA.js} +3 -3
  18. package/dist/{chunk-5UKUOMO6.js → chunk-3CLZY46Y.js} +464 -237
  19. package/dist/chunk-3CLZY46Y.js.map +1 -0
  20. package/dist/{chunk-G7ZIMGPQ.js → chunk-3EO7RZLJ.js} +6 -6
  21. package/dist/{chunk-GYJRDALN.js → chunk-3FSX6LDG.js} +2 -2
  22. package/dist/{chunk-4SG5TOXK.js → chunk-3HYWYLXL.js} +2 -2
  23. package/dist/{chunk-653KOQ7A.js → chunk-3IIPWA75.js} +11 -11
  24. package/dist/{chunk-IQ423YMK.js → chunk-3UK6STWO.js} +3 -3
  25. package/dist/chunk-46V67XP5.js +117 -0
  26. package/dist/chunk-46V67XP5.js.map +1 -0
  27. package/dist/{chunk-F5UWVF6Z.js → chunk-4HDYQL3J.js} +2 -2
  28. package/dist/{chunk-J7YVY7TW.js → chunk-4MQDV3HZ.js} +2 -2
  29. package/dist/{chunk-UC5Y7OEJ.js → chunk-4UVDI4XE.js} +3 -3
  30. package/dist/{chunk-4DGBZEV6.js → chunk-4VCWI42L.js} +2 -2
  31. package/dist/{chunk-GIGLOQL7.js → chunk-747LRSOO.js} +2 -2
  32. package/dist/{chunk-W7C7MMIS.js → chunk-7F4DBNSP.js} +3 -3
  33. package/dist/{chunk-5EKL6BXI.js → chunk-7G6VDWXB.js} +3 -3
  34. package/dist/{chunk-PZRYKOKP.js → chunk-AHLJSVRL.js} +2 -2
  35. package/dist/{chunk-L67H6FAQ.js → chunk-AR2JDFAE.js} +2 -2
  36. package/dist/{chunk-TJOUKMWF.js → chunk-BPTZ4K5L.js} +11 -11
  37. package/dist/{chunk-MFW466PX.js → chunk-CCZJJ4I2.js} +4 -4
  38. package/dist/{chunk-OKBNFUUX.js → chunk-CJ73OLMW.js} +2 -2
  39. package/dist/{chunk-FHK6WWUE.js → chunk-CYQOUTMY.js} +3 -3
  40. package/dist/{chunk-LQVRK2XJ.js → chunk-DCMQR46R.js} +5 -5
  41. package/dist/{chunk-QTMZDMJ6.js → chunk-DG27IUVI.js} +2 -2
  42. package/dist/{chunk-XVK7TULT.js → chunk-DMQCLZ4Z.js} +8 -6
  43. package/dist/chunk-DMQCLZ4Z.js.map +1 -0
  44. package/dist/{chunk-IHYSIPEK.js → chunk-DPJTDNUF.js} +68 -34
  45. package/dist/chunk-DPJTDNUF.js.map +1 -0
  46. package/dist/{chunk-PKBONLCP.js → chunk-E6427JU2.js} +2 -2
  47. package/dist/{chunk-KDWBVCIX.js → chunk-EK7DT5BT.js} +220 -13
  48. package/dist/chunk-EK7DT5BT.js.map +1 -0
  49. package/dist/chunk-EPFF7LOX.js +14 -0
  50. package/dist/chunk-EPFF7LOX.js.map +1 -0
  51. package/dist/{chunk-XID22NOA.js → chunk-F3GVO44K.js} +6 -6
  52. package/dist/{chunk-U2ID5A2I.js → chunk-FAXZQ5UF.js} +2 -2
  53. package/dist/{chunk-P6UIVLZK.js → chunk-FNSMZQS4.js} +2 -2
  54. package/dist/{chunk-NIKQQXI2.js → chunk-FUHKW252.js} +2 -2
  55. package/dist/{chunk-623QEHDB.js → chunk-FY343IZR.js} +8 -8
  56. package/dist/{chunk-KPZS5QAQ.js → chunk-GQ3BX5EA.js} +9 -1
  57. package/dist/chunk-GQ3BX5EA.js.map +1 -0
  58. package/dist/{chunk-7P4LL3JH.js → chunk-GS5RT2KK.js} +4 -4
  59. package/dist/{chunk-IM2KST7E.js → chunk-HFKGIBMD.js} +3 -3
  60. package/dist/{chunk-AR5D76T2.js → chunk-HNGSV2YC.js} +129 -1
  61. package/dist/chunk-HNGSV2YC.js.map +1 -0
  62. package/dist/chunk-HNHCQ556.js +63 -0
  63. package/dist/chunk-HNHCQ556.js.map +1 -0
  64. package/dist/chunk-HS7HNYBD.js +91 -0
  65. package/dist/chunk-HS7HNYBD.js.map +1 -0
  66. package/dist/{chunk-FT5Y4VSP.js → chunk-HVQGCKY4.js} +2 -2
  67. package/dist/{chunk-MYSNNMJ3.js → chunk-HXGUIPQB.js} +3 -3
  68. package/dist/{chunk-GTQF32TP.js → chunk-JEM2IGS3.js} +9 -9
  69. package/dist/chunk-JH3OHQM4.js +260 -0
  70. package/dist/chunk-JH3OHQM4.js.map +1 -0
  71. package/dist/{chunk-ALUVACKT.js → chunk-JIUVJ4M7.js} +2 -2
  72. package/dist/{chunk-NJHQE4LT.js → chunk-JRCYZEHU.js} +2 -2
  73. package/dist/{chunk-G3ORJ3IQ.js → chunk-JSRU5W2M.js} +5 -5
  74. package/dist/{chunk-SBGXQK5I.js → chunk-JXIDGFKS.js} +2 -2
  75. package/dist/{chunk-VYYM3MEN.js → chunk-KHKKD62N.js} +16 -2
  76. package/dist/chunk-KHKKD62N.js.map +1 -0
  77. package/dist/{chunk-FQ5CHJR7.js → chunk-KUDZVJKQ.js} +21 -2
  78. package/dist/chunk-KUDZVJKQ.js.map +1 -0
  79. package/dist/{chunk-MGXUAID4.js → chunk-KZ3KMDN3.js} +2 -2
  80. package/dist/{chunk-HGDXJVK2.js → chunk-LBGPO5RL.js} +6 -6
  81. package/dist/{chunk-F2WWHKO7.js → chunk-LTU4FLHG.js} +57 -27
  82. package/dist/chunk-LTU4FLHG.js.map +1 -0
  83. package/dist/{chunk-CLE3TMIS.js → chunk-MC2LFTQM.js} +5 -2
  84. package/dist/{chunk-ECGDJU5R.js → chunk-MJWCLSQL.js} +17 -8
  85. package/dist/chunk-MJWCLSQL.js.map +1 -0
  86. package/dist/{chunk-EAN4TAPC.js → chunk-MSWYQLMQ.js} +2 -2
  87. package/dist/{chunk-WK7ULBTP.js → chunk-MVOWXQHN.js} +5 -3
  88. package/dist/chunk-MVOWXQHN.js.map +1 -0
  89. package/dist/{chunk-K5OFKXUG.js → chunk-MXZ5TSTR.js} +118 -4
  90. package/dist/chunk-MXZ5TSTR.js.map +1 -0
  91. package/dist/{chunk-OKRXXFZZ.js → chunk-MZ5ZFO2D.js} +3 -3
  92. package/dist/{chunk-RQILGK3N.js → chunk-NQCNSVGI.js} +5 -5
  93. package/dist/{chunk-EFJAAFBW.js → chunk-NQRJ5AJO.js} +2 -2
  94. package/dist/{chunk-Q2SEJMP2.js → chunk-NVU7ZMPN.js} +2 -2
  95. package/dist/{chunk-Y2PTKKIN.js → chunk-OF3L2SD6.js} +2 -2
  96. package/dist/{chunk-MDRCEA56.js → chunk-OMSAULZM.js} +11 -11
  97. package/dist/{chunk-SL3PLML2.js → chunk-OSFPNKY4.js} +3 -3
  98. package/dist/{chunk-XX7YB5BI.js → chunk-P7NGLLUF.js} +5 -5
  99. package/dist/{chunk-QITP2JGX.js → chunk-PGAPBZEK.js} +7 -7
  100. package/dist/{chunk-KJNMTE2W.js → chunk-PP5CO2PR.js} +6 -6
  101. package/dist/{chunk-FZAP4JNC.js → chunk-RLWY6Z44.js} +227 -41
  102. package/dist/chunk-RLWY6Z44.js.map +1 -0
  103. package/dist/{chunk-NG4AQIYJ.js → chunk-ROWL352P.js} +5 -5
  104. package/dist/{chunk-V4O6YZSP.js → chunk-RPXL6KSX.js} +4 -4
  105. package/dist/{chunk-ODCEOSJF.js → chunk-SKONR2OL.js} +3 -3
  106. package/dist/{chunk-RM4FIXY2.js → chunk-SRGJET2F.js} +16 -5
  107. package/dist/chunk-SRGJET2F.js.map +1 -0
  108. package/dist/{chunk-QQL6XPPG.js → chunk-T4GPR2IR.js} +2 -2
  109. package/dist/{chunk-WFYKIDCS.js → chunk-TFZ7LLOQ.js} +88 -30
  110. package/dist/chunk-TFZ7LLOQ.js.map +1 -0
  111. package/dist/{chunk-NMYH55MW.js → chunk-TLNNHG3A.js} +4 -4
  112. package/dist/{chunk-DDB626I7.js → chunk-UHXCLPGC.js} +2 -2
  113. package/dist/{chunk-Q6MXHDSE.js → chunk-V5C5NNBR.js} +4 -4
  114. package/dist/{chunk-ELJOLQIG.js → chunk-VBY6ZLJT.js} +7 -7
  115. package/dist/{chunk-RPWMDIGK.js → chunk-VCETL77O.js} +34 -16
  116. package/dist/chunk-VCETL77O.js.map +1 -0
  117. package/dist/{chunk-IJV56FWY.js → chunk-VJFMXYKP.js} +2 -2
  118. package/dist/{chunk-BFG7LD6Z.js → chunk-VMCCGUQB.js} +2 -2
  119. package/dist/{chunk-PWEMRXPO.js → chunk-W3TVWF6N.js} +2 -2
  120. package/dist/{chunk-4TXO442D.js → chunk-WLYIROCJ.js} +2 -2
  121. package/dist/{chunk-MPW6AHTC.js → chunk-XB7LUDKM.js} +4 -4
  122. package/dist/{chunk-YA7Y3EZP.js → chunk-XBLKM73C.js} +10 -10
  123. package/dist/{chunk-LXRVTJ5D.js → chunk-YAWK6AWF.js} +2 -2
  124. package/dist/{chunk-6RDTG6E5.js → chunk-ZGGVOADG.js} +5 -5
  125. package/dist/{chunk-JLBCK7XM.js → chunk-ZK4CO2KZ.js} +6 -6
  126. package/dist/{chunk-DSDXAKIP.js → chunk-ZVF37PKE.js} +34 -5
  127. package/dist/chunk-ZVF37PKE.js.map +1 -0
  128. package/dist/{chunk-NZEGQWQ5.js → chunk-ZWMO5GL5.js} +5 -5
  129. package/dist/{chunk-4MSNAB64.js → chunk-ZXJXDHNK.js} +4 -4
  130. package/dist/classified/index.js +5 -5
  131. package/dist/{classified-marker-ZALWKOBC.js → classified-marker-MH3ON5OL.js} +3 -3
  132. package/dist/collection-facade-AHT7FATG.js +45 -0
  133. package/dist/{computed-YOQCGUCS.js → computed-6G5M3UPH.js} +3 -3
  134. package/dist/consent/index.js +9 -9
  135. package/dist/cover/index.js +3 -3
  136. package/dist/custody/index.js +11 -11
  137. package/dist/{dead-filter-6DVWST6U.js → dead-filter-U575NGSH.js} +2 -2
  138. package/dist/debug/index.js +1 -1
  139. package/dist/{delegation-WMO3Q3O5.js → delegation-PDYL6RWT.js} +10 -10
  140. package/dist/derivations/index.js +12 -12
  141. package/dist/derive-AKT4KU36.js +22 -0
  142. package/dist/directory/index.js +10 -10
  143. package/dist/{dispatch-VNR3TLBX.js → dispatch-4XIJSFTT.js} +5 -5
  144. package/dist/{dispatch-TKV4UCKB.js → dispatch-N5HGVUGU.js} +18 -18
  145. package/dist/{enclave-YWP3QAIQ.js → enclave-OPK24QDR.js} +13 -9
  146. package/dist/executor-3JZ4POTW.js +28 -0
  147. package/dist/executor-CYJQLKKI.js +9 -0
  148. package/dist/executor-S4QIKEHW.js +9 -0
  149. package/dist/export-accessible-CPTP5STN.js +23 -0
  150. package/dist/extract-partition-TWXPHVU7.js +38 -0
  151. package/dist/{fanout-sidecar-WYXO6QQT.js → fanout-sidecar-T2ZGLQFE.js} +9 -9
  152. package/dist/find-RBBYKXI7.js +11 -0
  153. package/dist/forget/index.js +9 -9
  154. package/dist/guards/index.js +4 -4
  155. package/dist/history/index.js +15 -15
  156. package/dist/i18n/index.js +14 -14
  157. package/dist/index.d.ts +35 -7
  158. package/dist/index.js +276 -201
  159. package/dist/index.js.map +1 -1
  160. package/dist/indexing/index.js +3 -3
  161. package/dist/introspection/index.js +12 -12
  162. package/dist/issue-N74C55X6.js +19 -0
  163. package/dist/kernel/collection.d.ts +10 -2
  164. package/dist/kernel/cutover-transform.d.ts +64 -0
  165. package/dist/kernel/enclave/crypto.d.ts +24 -0
  166. package/dist/kernel/enclave/index.d.ts +2 -1
  167. package/dist/kernel/errors.d.ts +123 -0
  168. package/dist/kernel/noydb.d.ts +10 -1
  169. package/dist/kernel/secret-mode.d.ts +59 -0
  170. package/dist/kernel/types.d.ts +98 -7
  171. package/dist/kernel/validation.d.ts +33 -0
  172. package/dist/kernel/vault.d.ts +18 -6
  173. package/dist/{ledger-BLYDYRTQ.js → ledger-DONWFC5M.js} +11 -11
  174. package/dist/liberate-KICI7AJN.js +24 -0
  175. package/dist/{link-set-7F5ZPDEB.js → link-set-2TTP4VLO.js} +11 -11
  176. package/dist/managed-secret-EAOYWRYF.js +27 -0
  177. package/dist/materialized-views/index.js +24 -24
  178. package/dist/money/index.js +3 -3
  179. package/dist/noydb-6W2XGQCS.js +83 -0
  180. package/dist/overlay-views/index.js +6 -6
  181. package/dist/periods/index.js +16 -16
  182. package/dist/pod/index.js +121 -12
  183. package/dist/policy/index.js +4 -4
  184. package/dist/port/to/index.d.ts +3 -1
  185. package/dist/port/to/locator.d.ts +84 -0
  186. package/dist/port/with/device-seal-strategy.d.ts +16 -0
  187. package/dist/port/with/strategies.d.ts +2 -0
  188. package/dist/portability/index.js +8 -8
  189. package/dist/{post-register-PQSY544J.js → post-register-ORQOQJCS.js} +6 -6
  190. package/dist/query/index.js +4 -4
  191. package/dist/reduce/index.js +4 -4
  192. package/dist/register-LHETZRJM.js +32 -0
  193. package/dist/registry-AMAZ6QRZ.js +19 -0
  194. package/dist/registry-CZVINVQH.js +9 -0
  195. package/dist/registry-IKUR2MXD.js +9 -0
  196. package/dist/registry-JRIN447B.js +18 -0
  197. package/dist/request-withdrawal-2DN2RGCO.js +31 -0
  198. package/dist/{reveal-HY7DZST4.js → reveal-AG4SCHUQ.js} +6 -6
  199. package/dist/revoke-ZX4NM2CJ.js +24 -0
  200. package/dist/satellites/index.js +1 -1
  201. package/dist/schema-update/index.js +6 -6
  202. package/dist/sealed-record/index.js +12 -12
  203. package/dist/search/index.js +4 -4
  204. package/dist/{seed-ALU3BHFS.js → seed-IRCDGIRK.js} +11 -11
  205. package/dist/sequence/index.js +9 -9
  206. package/dist/session/index.js +9 -9
  207. package/dist/shadow/index.js +2 -2
  208. package/dist/signer-7KHD4OL2.js +25 -0
  209. package/dist/snapshots/index.js +10 -10
  210. package/dist/{stale-U3WO5MYN.js → stale-K734VACF.js} +10 -10
  211. package/dist/storage-4H2GF6RQ.js +23 -0
  212. package/dist/{store-coordination-provider-AHGFEMFA.js → store-coordination-provider-4SKLSFUG.js} +3 -3
  213. package/dist/sync/index.js +10 -10
  214. package/dist/team/index.js +27 -15
  215. package/dist/tiers/index.js +10 -10
  216. package/dist/to/index.js +28 -3
  217. package/dist/to/index.js.map +1 -1
  218. package/dist/transactions/index.js +3 -3
  219. package/dist/util/index.js +1 -1
  220. package/dist/{verify-JEIXSK5U.js → verify-RO5RTZOJ.js} +5 -5
  221. package/dist/walk-MQHYNDLZ.js +21 -0
  222. package/dist/with-audit/guards/registry.d.ts +8 -1
  223. package/dist/with-audit/guards/types.d.ts +5 -0
  224. package/dist/with-audit/periods/index.d.ts +1 -1
  225. package/dist/with-audit/periods/periods.d.ts +7 -0
  226. package/dist/with-formula/derivations/registry.d.ts +6 -0
  227. package/dist/with-formula/derivations/types.d.ts +5 -0
  228. package/dist/with-lookup/indexing/eager-indexes.d.ts +10 -0
  229. package/dist/with-party/team/device-seal.d.ts +25 -0
  230. package/dist/with-party/team/echo-ceremony.d.ts +74 -0
  231. package/dist/with-party/team/echo-secret.d.ts +56 -0
  232. package/dist/with-party/team/index.d.ts +8 -0
  233. package/dist/with-party/team/keyring.d.ts +71 -9
  234. package/dist/with-party/team/rotate-recover.d.ts +99 -5
  235. package/dist/with-pod/bundle-handle.d.ts +9 -0
  236. package/dist/with-pod/bundle.d.ts +100 -2
  237. package/dist/with-pod/format.d.ts +92 -1
  238. package/dist/with-pod/index.d.ts +22 -1
  239. package/dist/with-pod/open.d.ts +117 -0
  240. package/dist/with-pod/redirect.d.ts +78 -0
  241. package/dist/with-pod/signature.d.ts +13 -0
  242. package/dist/with-shape/introspection/behaviors.d.ts +100 -0
  243. package/dist/with-shape/introspection/derivation-key.d.ts +17 -0
  244. package/dist/with-shape/introspection/describe.d.ts +36 -0
  245. package/dist/with-shape/introspection/index.d.ts +1 -0
  246. package/dist/with-shape/introspection/subsystem-matrix.d.ts +22 -0
  247. package/dist/with-shape/introspection/types.d.ts +2 -1
  248. package/dist/with-shape/links/names.d.ts +14 -0
  249. package/dist/with-shape/manifest/derive.d.ts +86 -0
  250. package/dist/with-shape/manifest/reserved-collections.d.ts +27 -0
  251. package/dist/with-shape/manifest/storage.d.ts +62 -0
  252. package/dist/with-shape/manifest/sync.d.ts +135 -0
  253. package/dist/with-shape/manifest/types.d.ts +49 -0
  254. package/dist/with-shape/manifest/writer.d.ts +32 -0
  255. package/dist/with-shape/persisted-schemas/field-ids.d.ts +29 -0
  256. package/dist/with-shape/persisted-schemas/register.d.ts +3 -0
  257. package/dist/with-shape/persisted-schemas/types.d.ts +17 -0
  258. package/dist/with-shape/schema-update/fence-controller.d.ts +34 -0
  259. package/dist/with-shape/schema-update/fence.d.ts +9 -0
  260. package/dist/with-shape/schema-update/strategies.d.ts +18 -2
  261. package/dist/with-shape/schema-update/types.d.ts +11 -0
  262. package/dist/with-sync/engine.d.ts +4 -0
  263. package/dist/with-sync/presence.d.ts +31 -1
  264. package/dist/withdraw-accessible-JSDQHXHE.js +28 -0
  265. package/dist/withdraw-accessible-JSDQHXHE.js.map +1 -0
  266. package/package.json +3 -3
  267. package/dist/api-M7REIE7H.js +0 -20
  268. package/dist/backup-ENTZYW37.js.map +0 -1
  269. package/dist/chunk-5UKUOMO6.js.map +0 -1
  270. package/dist/chunk-77AEMXFA.js.map +0 -1
  271. package/dist/chunk-AJAOXFCF.js +0 -129
  272. package/dist/chunk-AJAOXFCF.js.map +0 -1
  273. package/dist/chunk-AR5D76T2.js.map +0 -1
  274. package/dist/chunk-DSDXAKIP.js.map +0 -1
  275. package/dist/chunk-EBETHILL.js +0 -41
  276. package/dist/chunk-EBETHILL.js.map +0 -1
  277. package/dist/chunk-ECGDJU5R.js.map +0 -1
  278. package/dist/chunk-F2WWHKO7.js.map +0 -1
  279. package/dist/chunk-FQ5CHJR7.js.map +0 -1
  280. package/dist/chunk-FUECZSRM.js +0 -23
  281. package/dist/chunk-FUECZSRM.js.map +0 -1
  282. package/dist/chunk-FZAP4JNC.js.map +0 -1
  283. package/dist/chunk-IHYSIPEK.js.map +0 -1
  284. package/dist/chunk-K5OFKXUG.js.map +0 -1
  285. package/dist/chunk-KDWBVCIX.js.map +0 -1
  286. package/dist/chunk-KPZS5QAQ.js.map +0 -1
  287. package/dist/chunk-RM4FIXY2.js.map +0 -1
  288. package/dist/chunk-RPWMDIGK.js.map +0 -1
  289. package/dist/chunk-US2AR4BI.js +0 -25
  290. package/dist/chunk-US2AR4BI.js.map +0 -1
  291. package/dist/chunk-VYYM3MEN.js.map +0 -1
  292. package/dist/chunk-WFYKIDCS.js.map +0 -1
  293. package/dist/chunk-WK7ULBTP.js.map +0 -1
  294. package/dist/chunk-XVK7TULT.js.map +0 -1
  295. package/dist/collection-facade-KI53O6QB.js +0 -45
  296. package/dist/derive-P2NXWUNB.js +0 -22
  297. package/dist/executor-M4ZZNX6S.js +0 -28
  298. package/dist/executor-TI64S4LE.js +0 -9
  299. package/dist/executor-YBK3I2OT.js +0 -9
  300. package/dist/export-accessible-GBLYLGW4.js +0 -23
  301. package/dist/extract-partition-SFV35U2R.js +0 -38
  302. package/dist/find-HUSSZRBR.js +0 -11
  303. package/dist/issue-6TIJYWKS.js +0 -19
  304. package/dist/liberate-TSOW7IG5.js +0 -24
  305. package/dist/noydb-KFN6M6UJ.js +0 -81
  306. package/dist/register-S3ECUZPV.js +0 -25
  307. package/dist/registry-BWD2ED52.js +0 -8
  308. package/dist/registry-FZOHKUME.js +0 -18
  309. package/dist/registry-RISV7IDZ.js +0 -19
  310. package/dist/registry-ZE35A7WC.js +0 -9
  311. package/dist/request-withdrawal-KXVTQKR5.js +0 -31
  312. package/dist/revoke-J473JJ22.js +0 -24
  313. package/dist/signer-XLUKCCH3.js +0 -25
  314. package/dist/storage-IQONEOYY.js +0 -23
  315. package/dist/walk-BF36V4SR.js +0 -21
  316. package/dist/withdraw-accessible-TYTA23XH.js +0 -28
  317. /package/dist/{api-M7REIE7H.js.map → api-67SBPMMH.js.map} +0 -0
  318. /package/dist/{chunk-V3EGXDFN.js.map → chunk-24UICKTB.js.map} +0 -0
  319. /package/dist/{chunk-6PFST3FC.js.map → chunk-27TCYH6G.js.map} +0 -0
  320. /package/dist/{chunk-PTSVGKSR.js.map → chunk-2KIV7BEK.js.map} +0 -0
  321. /package/dist/{chunk-3LYMOSY7.js.map → chunk-2LGDCNFJ.js.map} +0 -0
  322. /package/dist/{chunk-NWK6SVBM.js.map → chunk-35EBKWQU.js.map} +0 -0
  323. /package/dist/{chunk-QMCWYN6O.js.map → chunk-3737A6EA.js.map} +0 -0
  324. /package/dist/{chunk-G7ZIMGPQ.js.map → chunk-3EO7RZLJ.js.map} +0 -0
  325. /package/dist/{chunk-GYJRDALN.js.map → chunk-3FSX6LDG.js.map} +0 -0
  326. /package/dist/{chunk-4SG5TOXK.js.map → chunk-3HYWYLXL.js.map} +0 -0
  327. /package/dist/{chunk-653KOQ7A.js.map → chunk-3IIPWA75.js.map} +0 -0
  328. /package/dist/{chunk-IQ423YMK.js.map → chunk-3UK6STWO.js.map} +0 -0
  329. /package/dist/{chunk-F5UWVF6Z.js.map → chunk-4HDYQL3J.js.map} +0 -0
  330. /package/dist/{chunk-J7YVY7TW.js.map → chunk-4MQDV3HZ.js.map} +0 -0
  331. /package/dist/{chunk-UC5Y7OEJ.js.map → chunk-4UVDI4XE.js.map} +0 -0
  332. /package/dist/{chunk-4DGBZEV6.js.map → chunk-4VCWI42L.js.map} +0 -0
  333. /package/dist/{chunk-GIGLOQL7.js.map → chunk-747LRSOO.js.map} +0 -0
  334. /package/dist/{chunk-W7C7MMIS.js.map → chunk-7F4DBNSP.js.map} +0 -0
  335. /package/dist/{chunk-5EKL6BXI.js.map → chunk-7G6VDWXB.js.map} +0 -0
  336. /package/dist/{chunk-PZRYKOKP.js.map → chunk-AHLJSVRL.js.map} +0 -0
  337. /package/dist/{chunk-L67H6FAQ.js.map → chunk-AR2JDFAE.js.map} +0 -0
  338. /package/dist/{chunk-TJOUKMWF.js.map → chunk-BPTZ4K5L.js.map} +0 -0
  339. /package/dist/{chunk-MFW466PX.js.map → chunk-CCZJJ4I2.js.map} +0 -0
  340. /package/dist/{chunk-OKBNFUUX.js.map → chunk-CJ73OLMW.js.map} +0 -0
  341. /package/dist/{chunk-FHK6WWUE.js.map → chunk-CYQOUTMY.js.map} +0 -0
  342. /package/dist/{chunk-LQVRK2XJ.js.map → chunk-DCMQR46R.js.map} +0 -0
  343. /package/dist/{chunk-QTMZDMJ6.js.map → chunk-DG27IUVI.js.map} +0 -0
  344. /package/dist/{chunk-PKBONLCP.js.map → chunk-E6427JU2.js.map} +0 -0
  345. /package/dist/{chunk-XID22NOA.js.map → chunk-F3GVO44K.js.map} +0 -0
  346. /package/dist/{chunk-U2ID5A2I.js.map → chunk-FAXZQ5UF.js.map} +0 -0
  347. /package/dist/{chunk-P6UIVLZK.js.map → chunk-FNSMZQS4.js.map} +0 -0
  348. /package/dist/{chunk-NIKQQXI2.js.map → chunk-FUHKW252.js.map} +0 -0
  349. /package/dist/{chunk-623QEHDB.js.map → chunk-FY343IZR.js.map} +0 -0
  350. /package/dist/{chunk-7P4LL3JH.js.map → chunk-GS5RT2KK.js.map} +0 -0
  351. /package/dist/{chunk-IM2KST7E.js.map → chunk-HFKGIBMD.js.map} +0 -0
  352. /package/dist/{chunk-FT5Y4VSP.js.map → chunk-HVQGCKY4.js.map} +0 -0
  353. /package/dist/{chunk-MYSNNMJ3.js.map → chunk-HXGUIPQB.js.map} +0 -0
  354. /package/dist/{chunk-GTQF32TP.js.map → chunk-JEM2IGS3.js.map} +0 -0
  355. /package/dist/{chunk-ALUVACKT.js.map → chunk-JIUVJ4M7.js.map} +0 -0
  356. /package/dist/{chunk-NJHQE4LT.js.map → chunk-JRCYZEHU.js.map} +0 -0
  357. /package/dist/{chunk-G3ORJ3IQ.js.map → chunk-JSRU5W2M.js.map} +0 -0
  358. /package/dist/{chunk-SBGXQK5I.js.map → chunk-JXIDGFKS.js.map} +0 -0
  359. /package/dist/{chunk-MGXUAID4.js.map → chunk-KZ3KMDN3.js.map} +0 -0
  360. /package/dist/{chunk-HGDXJVK2.js.map → chunk-LBGPO5RL.js.map} +0 -0
  361. /package/dist/{chunk-CLE3TMIS.js.map → chunk-MC2LFTQM.js.map} +0 -0
  362. /package/dist/{chunk-EAN4TAPC.js.map → chunk-MSWYQLMQ.js.map} +0 -0
  363. /package/dist/{chunk-OKRXXFZZ.js.map → chunk-MZ5ZFO2D.js.map} +0 -0
  364. /package/dist/{chunk-RQILGK3N.js.map → chunk-NQCNSVGI.js.map} +0 -0
  365. /package/dist/{chunk-EFJAAFBW.js.map → chunk-NQRJ5AJO.js.map} +0 -0
  366. /package/dist/{chunk-Q2SEJMP2.js.map → chunk-NVU7ZMPN.js.map} +0 -0
  367. /package/dist/{chunk-Y2PTKKIN.js.map → chunk-OF3L2SD6.js.map} +0 -0
  368. /package/dist/{chunk-MDRCEA56.js.map → chunk-OMSAULZM.js.map} +0 -0
  369. /package/dist/{chunk-SL3PLML2.js.map → chunk-OSFPNKY4.js.map} +0 -0
  370. /package/dist/{chunk-XX7YB5BI.js.map → chunk-P7NGLLUF.js.map} +0 -0
  371. /package/dist/{chunk-QITP2JGX.js.map → chunk-PGAPBZEK.js.map} +0 -0
  372. /package/dist/{chunk-KJNMTE2W.js.map → chunk-PP5CO2PR.js.map} +0 -0
  373. /package/dist/{chunk-NG4AQIYJ.js.map → chunk-ROWL352P.js.map} +0 -0
  374. /package/dist/{chunk-V4O6YZSP.js.map → chunk-RPXL6KSX.js.map} +0 -0
  375. /package/dist/{chunk-ODCEOSJF.js.map → chunk-SKONR2OL.js.map} +0 -0
  376. /package/dist/{chunk-QQL6XPPG.js.map → chunk-T4GPR2IR.js.map} +0 -0
  377. /package/dist/{chunk-NMYH55MW.js.map → chunk-TLNNHG3A.js.map} +0 -0
  378. /package/dist/{chunk-DDB626I7.js.map → chunk-UHXCLPGC.js.map} +0 -0
  379. /package/dist/{chunk-Q6MXHDSE.js.map → chunk-V5C5NNBR.js.map} +0 -0
  380. /package/dist/{chunk-ELJOLQIG.js.map → chunk-VBY6ZLJT.js.map} +0 -0
  381. /package/dist/{chunk-IJV56FWY.js.map → chunk-VJFMXYKP.js.map} +0 -0
  382. /package/dist/{chunk-BFG7LD6Z.js.map → chunk-VMCCGUQB.js.map} +0 -0
  383. /package/dist/{chunk-PWEMRXPO.js.map → chunk-W3TVWF6N.js.map} +0 -0
  384. /package/dist/{chunk-4TXO442D.js.map → chunk-WLYIROCJ.js.map} +0 -0
  385. /package/dist/{chunk-MPW6AHTC.js.map → chunk-XB7LUDKM.js.map} +0 -0
  386. /package/dist/{chunk-YA7Y3EZP.js.map → chunk-XBLKM73C.js.map} +0 -0
  387. /package/dist/{chunk-LXRVTJ5D.js.map → chunk-YAWK6AWF.js.map} +0 -0
  388. /package/dist/{chunk-6RDTG6E5.js.map → chunk-ZGGVOADG.js.map} +0 -0
  389. /package/dist/{chunk-JLBCK7XM.js.map → chunk-ZK4CO2KZ.js.map} +0 -0
  390. /package/dist/{chunk-NZEGQWQ5.js.map → chunk-ZWMO5GL5.js.map} +0 -0
  391. /package/dist/{chunk-4MSNAB64.js.map → chunk-ZXJXDHNK.js.map} +0 -0
  392. /package/dist/{classified-marker-ZALWKOBC.js.map → classified-marker-MH3ON5OL.js.map} +0 -0
  393. /package/dist/{collection-facade-KI53O6QB.js.map → collection-facade-AHT7FATG.js.map} +0 -0
  394. /package/dist/{computed-YOQCGUCS.js.map → computed-6G5M3UPH.js.map} +0 -0
  395. /package/dist/{dead-filter-6DVWST6U.js.map → dead-filter-U575NGSH.js.map} +0 -0
  396. /package/dist/{delegation-WMO3Q3O5.js.map → delegation-PDYL6RWT.js.map} +0 -0
  397. /package/dist/{derive-P2NXWUNB.js.map → derive-AKT4KU36.js.map} +0 -0
  398. /package/dist/{dispatch-VNR3TLBX.js.map → dispatch-4XIJSFTT.js.map} +0 -0
  399. /package/dist/{dispatch-TKV4UCKB.js.map → dispatch-N5HGVUGU.js.map} +0 -0
  400. /package/dist/{enclave-YWP3QAIQ.js.map → enclave-OPK24QDR.js.map} +0 -0
  401. /package/dist/{executor-M4ZZNX6S.js.map → executor-3JZ4POTW.js.map} +0 -0
  402. /package/dist/{executor-TI64S4LE.js.map → executor-CYJQLKKI.js.map} +0 -0
  403. /package/dist/{executor-YBK3I2OT.js.map → executor-S4QIKEHW.js.map} +0 -0
  404. /package/dist/{export-accessible-GBLYLGW4.js.map → export-accessible-CPTP5STN.js.map} +0 -0
  405. /package/dist/{extract-partition-SFV35U2R.js.map → extract-partition-TWXPHVU7.js.map} +0 -0
  406. /package/dist/{fanout-sidecar-WYXO6QQT.js.map → fanout-sidecar-T2ZGLQFE.js.map} +0 -0
  407. /package/dist/{find-HUSSZRBR.js.map → find-RBBYKXI7.js.map} +0 -0
  408. /package/dist/{issue-6TIJYWKS.js.map → issue-N74C55X6.js.map} +0 -0
  409. /package/dist/{ledger-BLYDYRTQ.js.map → ledger-DONWFC5M.js.map} +0 -0
  410. /package/dist/{liberate-TSOW7IG5.js.map → liberate-KICI7AJN.js.map} +0 -0
  411. /package/dist/{link-set-7F5ZPDEB.js.map → link-set-2TTP4VLO.js.map} +0 -0
  412. /package/dist/{noydb-KFN6M6UJ.js.map → managed-secret-EAOYWRYF.js.map} +0 -0
  413. /package/dist/{register-S3ECUZPV.js.map → noydb-6W2XGQCS.js.map} +0 -0
  414. /package/dist/{post-register-PQSY544J.js.map → post-register-ORQOQJCS.js.map} +0 -0
  415. /package/dist/{registry-BWD2ED52.js.map → register-LHETZRJM.js.map} +0 -0
  416. /package/dist/{registry-FZOHKUME.js.map → registry-AMAZ6QRZ.js.map} +0 -0
  417. /package/dist/{registry-RISV7IDZ.js.map → registry-CZVINVQH.js.map} +0 -0
  418. /package/dist/{registry-ZE35A7WC.js.map → registry-IKUR2MXD.js.map} +0 -0
  419. /package/dist/{request-withdrawal-KXVTQKR5.js.map → registry-JRIN447B.js.map} +0 -0
  420. /package/dist/{revoke-J473JJ22.js.map → request-withdrawal-2DN2RGCO.js.map} +0 -0
  421. /package/dist/{reveal-HY7DZST4.js.map → reveal-AG4SCHUQ.js.map} +0 -0
  422. /package/dist/{signer-XLUKCCH3.js.map → revoke-ZX4NM2CJ.js.map} +0 -0
  423. /package/dist/{seed-ALU3BHFS.js.map → seed-IRCDGIRK.js.map} +0 -0
  424. /package/dist/{stale-U3WO5MYN.js.map → signer-7KHD4OL2.js.map} +0 -0
  425. /package/dist/{storage-IQONEOYY.js.map → stale-K734VACF.js.map} +0 -0
  426. /package/dist/{walk-BF36V4SR.js.map → storage-4H2GF6RQ.js.map} +0 -0
  427. /package/dist/{store-coordination-provider-AHGFEMFA.js.map → store-coordination-provider-4SKLSFUG.js.map} +0 -0
  428. /package/dist/{verify-JEIXSK5U.js.map → verify-RO5RTZOJ.js.map} +0 -0
  429. /package/dist/{withdraw-accessible-TYTA23XH.js.map → walk-MQHYNDLZ.js.map} +0 -0
@@ -1,29 +1,33 @@
1
+ import {
2
+ hashFields,
3
+ validateSatelliteDeclaration
4
+ } from "./chunk-HVQGCKY4.js";
1
5
  import {
2
6
  resolveStaleOnRead
3
- } from "./chunk-F5UWVF6Z.js";
7
+ } from "./chunk-4HDYQL3J.js";
8
+ import {
9
+ isManifestReservedCollection
10
+ } from "./chunk-EPFF7LOX.js";
4
11
  import {
5
12
  LinkIntegrityError,
13
+ declareLink,
6
14
  isLinkCollectionName,
7
15
  linkCollectionName,
8
16
  linkRowKey
9
- } from "./chunk-EBETHILL.js";
10
- import {
11
- hashFields,
12
- validateSatelliteDeclaration
13
- } from "./chunk-FT5Y4VSP.js";
17
+ } from "./chunk-HNHCQ556.js";
14
18
  import {
15
19
  isBaseLive,
16
20
  liveBaseIdSet
17
21
  } from "./chunk-GYGLAVCX.js";
18
22
  import {
19
23
  loadFence
20
- } from "./chunk-WK7ULBTP.js";
24
+ } from "./chunk-MVOWXQHN.js";
21
25
  import {
22
26
  VectorSet,
23
27
  buildPersistedIndexCallbacks,
24
28
  encodeVecId,
25
29
  syncTierSearch
26
- } from "./chunk-6RDTG6E5.js";
30
+ } from "./chunk-ZGGVOADG.js";
27
31
  import {
28
32
  SchemaUpdateGate
29
33
  } from "./chunk-6LJY7X5A.js";
@@ -31,38 +35,41 @@ import {
31
35
  NO_CLASSIFIED,
32
36
  guardClassifiedCompat,
33
37
  resolveClassifiedFields
34
- } from "./chunk-7P4LL3JH.js";
38
+ } from "./chunk-GS5RT2KK.js";
35
39
  import {
36
40
  NO_TIERS,
37
41
  classifySealedShred,
38
42
  syncDerivedOutputs
39
- } from "./chunk-QITP2JGX.js";
43
+ } from "./chunk-PGAPBZEK.js";
40
44
  import {
41
45
  NO_PORTABILITY
42
- } from "./chunk-NIKQQXI2.js";
46
+ } from "./chunk-FUHKW252.js";
43
47
  import {
44
48
  NO_CARGO,
45
49
  runDrainBarrier
46
- } from "./chunk-QTMZDMJ6.js";
50
+ } from "./chunk-DG27IUVI.js";
47
51
  import {
48
- resolveManagedSecret,
49
52
  saveSealedSecret
50
- } from "./chunk-CLE3TMIS.js";
53
+ } from "./chunk-MC2LFTQM.js";
51
54
  import {
55
+ fallbackDerivationName,
52
56
  jsonSchemaToFields
53
- } from "./chunk-VYYM3MEN.js";
57
+ } from "./chunk-KHKKD62N.js";
54
58
  import {
55
59
  derivePersistedSchema,
56
60
  isZod4Schema
57
- } from "./chunk-3LYMOSY7.js";
61
+ } from "./chunk-2LGDCNFJ.js";
62
+ import {
63
+ loadPersistedSchema
64
+ } from "./chunk-V5C5NNBR.js";
58
65
  import {
59
66
  CustodyApi,
60
67
  NO_CUSTODY
61
- } from "./chunk-NMYH55MW.js";
68
+ } from "./chunk-TLNNHG3A.js";
62
69
  import {
63
70
  DEFAULT_POSTURE,
64
71
  ViaGraph
65
- } from "./chunk-QQL6XPPG.js";
72
+ } from "./chunk-T4GPR2IR.js";
66
73
  import {
67
74
  buildLookupAltIndex,
68
75
  buildLookupSnapshotRows,
@@ -86,30 +93,31 @@ import {
86
93
  selfWriteFieldEqual,
87
94
  touchFor,
88
95
  updateReferencingRecords
89
- } from "./chunk-4MSNAB64.js";
96
+ } from "./chunk-ZXJXDHNK.js";
90
97
  import {
91
98
  OverlayedCollection
92
- } from "./chunk-Y2PTKKIN.js";
99
+ } from "./chunk-OF3L2SD6.js";
93
100
  import {
94
101
  INDEXED_STORE_POLICY,
95
102
  NO_SYNC
96
103
  } from "./chunk-55LKVALY.js";
97
104
  import {
98
105
  NO_ATTESTATION
99
- } from "./chunk-IJV56FWY.js";
106
+ } from "./chunk-VJFMXYKP.js";
100
107
  import {
101
108
  NO_CONSENT
102
109
  } from "./chunk-PEOZ34EM.js";
103
110
  import {
104
- NO_PERIODS
105
- } from "./chunk-F2WWHKO7.js";
111
+ NO_PERIODS,
112
+ purgeMarkersOn
113
+ } from "./chunk-LTU4FLHG.js";
106
114
  import {
107
115
  PERIODS_COLLECTION,
108
116
  PERIOD_ARCHIVES_COLLECTION,
109
117
  PERIOD_FREEZES_COLLECTION,
110
118
  PERIOD_TARGET_PURGES_COLLECTION,
111
119
  periodExclusiveUpperBound
112
- } from "./chunk-SBGXQK5I.js";
120
+ } from "./chunk-JXIDGFKS.js";
113
121
  import {
114
122
  NO_SHADOW
115
123
  } from "./chunk-SMY5X46Z.js";
@@ -119,7 +127,7 @@ import {
119
127
  import {
120
128
  TxContext,
121
129
  bestEffortRevert
122
- } from "./chunk-NWK6SVBM.js";
130
+ } from "./chunk-35EBKWQU.js";
123
131
  import {
124
132
  lazy
125
133
  } from "./chunk-5D2ALSM5.js";
@@ -127,29 +135,32 @@ import {
127
135
  InvertedIndex,
128
136
  MemoryIndexStore,
129
137
  NO_SEARCH
130
- } from "./chunk-YA7Y3EZP.js";
138
+ } from "./chunk-XBLKM73C.js";
131
139
  import {
132
140
  NO_SEQUENCE,
133
141
  SEQUENCE_COLLECTION,
134
142
  compileSequenceFormat,
135
143
  resolveSequenceKey
136
- } from "./chunk-RQILGK3N.js";
144
+ } from "./chunk-NQCNSVGI.js";
137
145
  import {
138
146
  Query,
139
147
  ScanBuilder
140
- } from "./chunk-QMCWYN6O.js";
148
+ } from "./chunk-3737A6EA.js";
141
149
  import {
142
150
  EXPORT_AUDIT_COLLECTION,
143
151
  NO_BLOBS,
144
152
  createExportBlobsHandle,
145
153
  runCompaction
146
- } from "./chunk-XX7YB5BI.js";
154
+ } from "./chunk-P7NGLLUF.js";
147
155
  import {
148
156
  LazyQuery,
149
157
  NO_INDEXING,
150
158
  decodeIdxId,
151
159
  encodeIdxId
152
- } from "./chunk-ALUVACKT.js";
160
+ } from "./chunk-JIUVJ4M7.js";
161
+ import {
162
+ normalizeIndexDefs
163
+ } from "./chunk-GQ3BX5EA.js";
153
164
  import {
154
165
  IMPLICIT_LAZY,
155
166
  Lru,
@@ -169,7 +180,7 @@ import {
169
180
  } from "./chunk-PVEWA2DU.js";
170
181
  import {
171
182
  dictCollectionName
172
- } from "./chunk-MPW6AHTC.js";
183
+ } from "./chunk-XB7LUDKM.js";
173
184
  import {
174
185
  NO_I18N,
175
186
  getAtPath,
@@ -177,11 +188,11 @@ import {
177
188
  isDictKeyDescriptor,
178
189
  isI18nTextDescriptor,
179
190
  isStaticDictDescriptor
180
- } from "./chunk-5EKL6BXI.js";
191
+ } from "./chunk-7G6VDWXB.js";
181
192
  import {
182
193
  isViaInstalled,
183
194
  viaBinder
184
- } from "./chunk-DDB626I7.js";
195
+ } from "./chunk-UHXCLPGC.js";
185
196
  import {
186
197
  NO_TEAM,
187
198
  describeAllUsersAuth,
@@ -204,7 +215,7 @@ import {
204
215
  saveShamirRecoveryEntries,
205
216
  updateAuthenticator,
206
217
  writeMagicLinkGrant
207
- } from "./chunk-IHYSIPEK.js";
218
+ } from "./chunk-DPJTDNUF.js";
208
219
  import {
209
220
  assertKeyringOpenAllowed,
210
221
  buildRecipientKeyringFile,
@@ -219,15 +230,15 @@ import {
219
230
  listUsers,
220
231
  loadKeyring,
221
232
  updateKeyringIdentity
222
- } from "./chunk-FZAP4JNC.js";
233
+ } from "./chunk-RLWY6Z44.js";
223
234
  import {
224
235
  persistDirectoryConfig,
225
236
  readDirectoryConfig
226
- } from "./chunk-6PFST3FC.js";
237
+ } from "./chunk-27TCYH6G.js";
227
238
  import {
228
239
  NO_BROKER,
229
240
  buildCredentialBrokerHandle
230
- } from "./chunk-PWEMRXPO.js";
241
+ } from "./chunk-W3TVWF6N.js";
231
242
  import {
232
243
  NO_SESSION
233
244
  } from "./chunk-VKQCVU2Z.js";
@@ -241,10 +252,10 @@ import {
241
252
  assertCutoverTierSafe,
242
253
  assertTierWritable,
243
254
  liveRecordIsElevated
244
- } from "./chunk-GYJRDALN.js";
255
+ } from "./chunk-3FSX6LDG.js";
245
256
  import {
246
257
  sha256Hex
247
- } from "./chunk-V3EGXDFN.js";
258
+ } from "./chunk-24UICKTB.js";
248
259
  import {
249
260
  NO_FORGET,
250
261
  addSubjectRef,
@@ -253,10 +264,10 @@ import {
253
264
  readDottedPath,
254
265
  rebuildSubjectIndex,
255
266
  removeSubjectRef
256
- } from "./chunk-V4O6YZSP.js";
267
+ } from "./chunk-RPXL6KSX.js";
257
268
  import {
258
269
  NO_SEALED_RECORD
259
- } from "./chunk-U2ID5A2I.js";
270
+ } from "./chunk-FAXZQ5UF.js";
260
271
  import {
261
272
  RecordCodec,
262
273
  SEALED_CEK_NS,
@@ -267,20 +278,20 @@ import {
267
278
  queryByDet,
268
279
  resolveStableCek,
269
280
  validateSchemaInput
270
- } from "./chunk-623QEHDB.js";
281
+ } from "./chunk-FY343IZR.js";
271
282
  import {
272
283
  buildDeleteMarker,
273
284
  buildTombstone,
274
285
  isDeleteMarker,
275
286
  isTombstone
276
- } from "./chunk-EFJAAFBW.js";
287
+ } from "./chunk-NQRJ5AJO.js";
277
288
  import {
278
289
  encrypt
279
- } from "./chunk-RPWMDIGK.js";
290
+ } from "./chunk-VCETL77O.js";
280
291
  import {
281
292
  NOYDB_FORMAT_VERSION,
282
293
  SealedHandle
283
- } from "./chunk-77AEMXFA.js";
294
+ } from "./chunk-24ZLWWEO.js";
284
295
  import {
285
296
  AlreadyElevatedError,
286
297
  AttestationError,
@@ -290,6 +301,7 @@ import {
290
301
  ConflictError,
291
302
  DebugPlaintextError,
292
303
  DictKeyInUseError,
304
+ EchoCeremonyRequiredError,
293
305
  ElevationExpiredError,
294
306
  ExportCapabilityError,
295
307
  FieldNotQueryableError,
@@ -322,7 +334,7 @@ import {
322
334
  UnsupportedTierCompositionError,
323
335
  ValidationError,
324
336
  isConflictError
325
- } from "./chunk-AR5D76T2.js";
337
+ } from "./chunk-HNGSV2YC.js";
326
338
 
327
339
  // src/with-commit/tx/strategy.ts
328
340
  var NOT_ENABLED = new Error(
@@ -386,9 +398,91 @@ function resolveStrategies(options) {
386
398
  return resolved;
387
399
  }
388
400
 
401
+ // src/kernel/secret-mode.ts
402
+ function validateSecretModeOptions(options) {
403
+ const encrypted = options.encrypt !== false;
404
+ const managed = options.secretMode === "managed";
405
+ const echo = options.secretMode === "echo";
406
+ if (options.secret && options.getKeyring) {
407
+ throw new ValidationError("Provide either `secret` or `getKeyring`, not both");
408
+ }
409
+ if (managed) {
410
+ if (options.secret) {
411
+ throw new ValidationError(
412
+ '`secretMode: "managed"` is mutually exclusive with `secret` \u2014 managed mode generates the secret itself. Drop `secret`.'
413
+ );
414
+ }
415
+ if (options.getKeyring) {
416
+ throw new ValidationError(
417
+ '`secretMode: "managed"` is mutually exclusive with `getKeyring` \u2014 a custom unlock callback would bypass the sealing flow. Drop `getKeyring`.'
418
+ );
419
+ }
420
+ if (!options.sealingKey) {
421
+ throw new ValidationError(
422
+ '`secretMode: "managed"` requires `sealingKey: SealingKeyProvider` (see @noy-db/seal-macos-keychain / @noy-db/seal-aws-kms / etc.).'
423
+ );
424
+ }
425
+ }
426
+ if (echo && typeof options.secret === "string") {
427
+ throw new ValidationError(
428
+ "secretMode 'echo' requires a structured { prompt, echo, key } secret \u2014 a single string can never unlock an echo vault (AG-1)."
429
+ );
430
+ }
431
+ if (echo && typeof options.secret === "object" && options.secret !== null) {
432
+ const parts = options.secret;
433
+ if (typeof parts.prompt !== "string" || typeof parts.echo !== "string" || typeof parts.key !== "string") {
434
+ throw new ValidationError(
435
+ "secretMode 'echo' requires a structured secret with all three fields present as strings: prompt, echo, key."
436
+ );
437
+ }
438
+ }
439
+ if (!echo && options.secret !== void 0 && typeof options.secret !== "string") {
440
+ throw new ValidationError("A { prompt, echo, key } secret requires secretMode: 'echo'.");
441
+ }
442
+ if (!echo && options.deviceSeal !== void 0) {
443
+ throw new ValidationError("deviceSeal is only meaningful with secretMode: 'echo'.");
444
+ }
445
+ if (!echo && options.echoSecretPolicy !== void 0) {
446
+ throw new ValidationError("echoSecretPolicy is only meaningful with secretMode: 'echo'.");
447
+ }
448
+ if (!echo && options.echoMaskHint !== void 0) {
449
+ throw new ValidationError("echoMaskHint is only meaningful with secretMode: 'echo'.");
450
+ }
451
+ if (echo && options.sealingKey !== void 0) {
452
+ throw new ValidationError(
453
+ "secretMode 'echo' is mutually exclusive with `sealingKey` \u2014 that provider belongs to managed mode."
454
+ );
455
+ }
456
+ if (echo && options.secret === void 0 && options.getKeyring === void 0) {
457
+ throw new ValidationError(
458
+ "secretMode 'echo' requires either a structured secret or a getKeyring ceremony hook."
459
+ );
460
+ }
461
+ if (encrypted && !managed && !options.secret && !options.getKeyring) {
462
+ throw new ValidationError("A secret (secret) or getKeyring callback is required when encryption is enabled");
463
+ }
464
+ }
465
+ async function resolveEffectiveSecret(options, store, vault) {
466
+ if (options.secretMode === "managed") {
467
+ const { resolveManagedSecret } = await import("./managed-secret-EAOYWRYF.js");
468
+ return resolveManagedSecret(store, vault, options.sealingKey);
469
+ }
470
+ return options.secret;
471
+ }
472
+ function ownerKeyringOptions(options, secret) {
473
+ return {
474
+ userId: options.user,
475
+ secret,
476
+ validate: options.secretMode === "managed" ? false : options.validateSecret === true,
477
+ ...options.deviceSeal !== void 0 && { deviceSeal: options.deviceSeal },
478
+ ...options.echoSecretPolicy !== void 0 && { echoSecretPolicy: options.echoSecretPolicy },
479
+ ...options.echoMaskHint !== void 0 && { echoMaskHint: options.echoMaskHint }
480
+ };
481
+ }
482
+
389
483
  // src/port/by/default-provider.ts
390
484
  async function createDefaultCoordinationProvider(store) {
391
- const { StoreCoordinationProvider } = await import("./store-coordination-provider-AHGFEMFA.js");
485
+ const { StoreCoordinationProvider } = await import("./store-coordination-provider-4SKLSFUG.js");
392
486
  return new StoreCoordinationProvider(store);
393
487
  }
394
488
 
@@ -835,6 +929,40 @@ async function countLiveEnvelopes(adapter, vault, name, storeCiphertext) {
835
929
  return n;
836
930
  }
837
931
 
932
+ // src/kernel/cutover-transform.ts
933
+ async function applyCutoverTransform(ctx) {
934
+ const ids = await ctx.adapter.list(ctx.vault, ctx.name);
935
+ await assertCutoverTierSafe(ctx.adapter, ctx.vault, ctx.name, ctx.tiers !== null);
936
+ let count = 0;
937
+ for (const id of ids) {
938
+ const env = await ctx.adapter.get(ctx.vault, ctx.name, id);
939
+ if (!env || isTombstone(env, ctx.storeCiphertext) || isDeleteMarker(env)) continue;
940
+ const decoded = await ctx.codec.decryptRecord(env, { skipValidation: true, id });
941
+ if (decoded === null) continue;
942
+ const record = decoded;
943
+ const next = ctx.transform(record);
944
+ const nextVersion = (env._v ?? 0) + 1;
945
+ const cek = ctx.perRecordCek ? await ctx.resolveRecordCek(id) : void 0;
946
+ const migEnvelope = await ctx.codec.encryptRecord(next, nextVersion, cek, void 0, void 0, ctx.vdigFields !== null ? { id, prev: env } : void 0, id);
947
+ await ctx.adapter.put(ctx.vault, ctx.name, id, migEnvelope);
948
+ await ctx.onRecordMutated(id, "put", "cutover");
949
+ if (ctx.ledger) {
950
+ await ctx.ledger.append({
951
+ op: "migration",
952
+ collection: ctx.name,
953
+ id,
954
+ version: nextVersion,
955
+ actor: ctx.keyring.userId,
956
+ payloadHash: await ctx.envelopePayloadHash(migEnvelope),
957
+ reason: "schema:coordinated-cutover"
958
+ }).catch(() => {
959
+ });
960
+ }
961
+ count++;
962
+ }
963
+ return count;
964
+ }
965
+
838
966
  // src/with-lookup/indexing/collection-facade.ts
839
967
  function readPersistedValue(record, field) {
840
968
  if (!field.includes(".")) return record[field];
@@ -1474,6 +1602,16 @@ async function deriveZodFields(schema) {
1474
1602
  }
1475
1603
  return result;
1476
1604
  }
1605
+ async function resolveDescribeFieldIds(store, vaultName, collectionName, getDEK) {
1606
+ let dek;
1607
+ try {
1608
+ dek = await getDEK(collectionName);
1609
+ } catch {
1610
+ return {};
1611
+ }
1612
+ const persisted = await loadPersistedSchema(store, vaultName, collectionName, dek);
1613
+ return persisted?.fieldIds !== void 0 ? { fieldIds: persisted.fieldIds } : {};
1614
+ }
1477
1615
  function deriveWidget(opts) {
1478
1616
  if (opts.resolvedWidget !== void 0) return opts.resolvedWidget;
1479
1617
  switch (opts.semanticType) {
@@ -1498,7 +1636,7 @@ function deriveWidget(opts) {
1498
1636
  return "text";
1499
1637
  }
1500
1638
  function buildDescription(input) {
1501
- const { collection, fieldMeta, moneyFields, dictKeyFields, lookupFields, computed, refs, zodFields, dictLabels, meta, i18nFields, classified, taint } = input;
1639
+ const { collection, fieldMeta, moneyFields, dictKeyFields, lookupFields, computed, refs, zodFields, dictLabels, meta, i18nFields, classified, taint, fieldIds } = input;
1502
1640
  const lookupFragments = input.viaFragments?.["lookup"]?.lookupFields;
1503
1641
  const blobFragments = input.viaFragments?.["blob"]?.blobFields;
1504
1642
  if (zodFields !== void 0 && Object.keys(zodFields).length > 0 && fieldMeta !== void 0) {
@@ -1665,6 +1803,7 @@ function buildDescription(input) {
1665
1803
  const editable = !isComputed && key !== "id" && blobBlock === void 0;
1666
1804
  const field = {
1667
1805
  key,
1806
+ ...fieldIds?.[key] !== void 0 ? { id: fieldIds[key] } : {},
1668
1807
  type,
1669
1808
  optional: zod?.optional ?? false,
1670
1809
  ...zod?.constraints !== void 0 ? { constraints: zod.constraints } : {},
@@ -2277,7 +2416,7 @@ function resolveCollectionConfig(opts) {
2277
2416
  }
2278
2417
 
2279
2418
  // src/with-formula/computed/lazy.ts
2280
- var loadComputed = lazy(() => import("./computed-YOQCGUCS.js"));
2419
+ var loadComputed = lazy(() => import("./computed-6G5M3UPH.js"));
2281
2420
  async function loadEvalComputedFields() {
2282
2421
  return (await loadComputed()).evalComputedFields;
2283
2422
  }
@@ -2378,6 +2517,8 @@ var Collection = class {
2378
2517
  * `null` when no `unique:true` indexes are declared on this collection, or when the collection is in lazy mode (which throws at registration).
2379
2518
  */
2380
2519
  uniqueConstraints;
2520
+ declaredIndexes;
2521
+ // declared index defs, normalized (introspection only)
2381
2522
  /**
2382
2523
  * True once `_idx/*` side-cars have been bulk-loaded into
2383
2524
  * `persistedIndexes`. Flipped by `ensurePersistedIndexesLoaded()` on
@@ -2699,12 +2840,7 @@ var Collection = class {
2699
2840
  );
2700
2841
  }
2701
2842
  if (this.sensitiveFields.size > 0 && opts.indexes) {
2702
- const indexedFields = /* @__PURE__ */ new Set();
2703
- for (const def of opts.indexes) {
2704
- if (typeof def === "string") indexedFields.add(def);
2705
- else if (Array.isArray(def)) for (const f of def) indexedFields.add(f);
2706
- else for (const f of def.fields) indexedFields.add(f);
2707
- }
2843
+ const indexedFields = new Set(normalizeIndexDefs(opts.indexes).flatMap((d) => d.fields));
2708
2844
  const leaked = [...this.sensitiveFields].filter((f) => indexedFields.has(f));
2709
2845
  if (leaked.length > 0) {
2710
2846
  console.warn(
@@ -2808,6 +2944,7 @@ var Collection = class {
2808
2944
  defs: opts.indexes ?? [],
2809
2945
  lazy: this.lazy
2810
2946
  });
2947
+ this.declaredIndexes = normalizeIndexDefs(opts.indexes ?? []);
2811
2948
  this.indexes?.setCanonicalizer((f, v) => this.via?.canonicalizeIndexKey(f, v));
2812
2949
  this.persistedIndexes?.setCanonicalizer((f, v) => this.via?.canonicalizeIndexKey(f, v));
2813
2950
  this.uniqueConstraints = buildUniqueConstraintSet(this.name, opts.indexes, {
@@ -2838,6 +2975,10 @@ var Collection = class {
2838
2975
  getMeta() {
2839
2976
  return this.meta;
2840
2977
  }
2978
+ getDeclaredIndexes() {
2979
+ return this.declaredIndexes;
2980
+ }
2981
+ // declared index defs, normalized; consumed by walk.ts
2841
2982
  /**
2842
2983
  * Aggregate all collection-level configuration options that are actively set
2843
2984
  * into a {@link CollectionConfig} snapshot. Returns `undefined` when no options
@@ -2933,8 +3074,10 @@ var Collection = class {
2933
3074
  ...this.i18nFields !== void 0 ? { i18nFields: this.i18nFields } : {},
2934
3075
  ...this.classified !== void 0 ? { classified: this.classified.byField } : {},
2935
3076
  ...this.via?.taint !== void 0 ? { taint: this.via.taint } : {},
2936
- ...this.via ? { viaFragments: this.via.describeFragments() } : {}
3077
+ ...this.via ? { viaFragments: this.via.describeFragments() } : {},
2937
3078
  // #650 Task 7
3079
+ ...await resolveDescribeFieldIds(this.adapter, this.vault, this.name, this.getDEK)
3080
+ // #946
2938
3081
  });
2939
3082
  }
2940
3083
  /** JSON Schema for this collection with describe() metadata as x- extensions. */
@@ -3055,7 +3198,7 @@ var Collection = class {
3055
3198
  }
3056
3199
  await this.onAccess?.("find", "*");
3057
3200
  if (hits.length === 0) return [];
3058
- const { verifyDigestField } = await import("./verify-JEIXSK5U.js");
3201
+ const { verifyDigestField } = await import("./verify-RO5RTZOJ.js");
3059
3202
  const policy = {
3060
3203
  normalize: spec.verifyNormalize ?? "password",
3061
3204
  notLastN: spec.notLastN ?? 0,
@@ -3261,7 +3404,7 @@ var Collection = class {
3261
3404
  }
3262
3405
  }
3263
3406
  if (this.materializedViewSource !== void 0) {
3264
- const { resolveStaleMVOnRead } = await import("./stale-U3WO5MYN.js");
3407
+ const { resolveStaleMVOnRead } = await import("./stale-K734VACF.js");
3265
3408
  await resolveStaleMVOnRead(this.materializedViewSource, this.name, this.#dispatchCtx({ collection: this.name, id: "resolve-on-read" }));
3266
3409
  }
3267
3410
  let record;
@@ -3791,7 +3934,7 @@ var Collection = class {
3791
3934
  */
3792
3935
  async dispatchMaterializedViews(id, record, wave) {
3793
3936
  if (this.materializedViewSource === void 0) return;
3794
- const { dispatchMaterializedViews } = await import("./dispatch-VNR3TLBX.js");
3937
+ const { dispatchMaterializedViews } = await import("./dispatch-4XIJSFTT.js");
3795
3938
  return dispatchMaterializedViews(this.#mvDispatchCtx(this.materializedViewSource), id, record, wave);
3796
3939
  }
3797
3940
  /**
@@ -3964,7 +4107,7 @@ var Collection = class {
3964
4107
  * dispatch wave's per-target dedup; `undefined` on the local-write path (byte-identical). */
3965
4108
  async dispatchDerivations(id, record, version, wave) {
3966
4109
  if (this.derivationSource === void 0) return;
3967
- const { dispatchDerivations } = await import("./dispatch-TKV4UCKB.js");
4110
+ const { dispatchDerivations } = await import("./dispatch-N5HGVUGU.js");
3968
4111
  return dispatchDerivations({
3969
4112
  ...this.#derivationDeleteCtx(this.derivationSource),
3970
4113
  via: this.via,
@@ -4008,38 +4151,28 @@ var Collection = class {
4008
4151
  }
4009
4152
  }
4010
4153
  /**
4011
- * @internal — bulk-rewrite every record through a cutover transform. Raw adapter path (bypasses the write gate + guards — the transform is trusted and runs only during the `migrating` phase). Bumps each record's `_v` and appends a ledger `op:'migration'` entry. #708: refuses BEFORE any rewrite if a live record is elevated (assertCutoverTierSafe) — demote it first.
4154
+ * @internal — bulk-rewrite every record through a cutover transform. Body
4155
+ * lives in `./cutover-transform.js` (kernel-surface line ceiling); this is
4156
+ * a thin context-passing delegator. See {@link applyCutoverTransform} for
4157
+ * the full behavior doc.
4012
4158
  */
4013
4159
  async _applyCutoverTransform(transform) {
4014
- const ids = await this.adapter.list(this.vault, this.name);
4015
- await assertCutoverTierSafe(this.adapter, this.vault, this.name, this.tiers !== null);
4016
- let count = 0;
4017
- for (const id of ids) {
4018
- const env = await this.adapter.get(this.vault, this.name, id);
4019
- if (!env || isTombstone(env, this.storeCiphertext) || isDeleteMarker(env)) continue;
4020
- const decoded = await this.codec.decryptRecord(env, { skipValidation: true, id });
4021
- if (decoded === null) continue;
4022
- const record = decoded;
4023
- const next = transform(record);
4024
- const nextVersion = (env._v ?? 0) + 1;
4025
- const cek = this.perRecordCek ? await this.resolveRecordCek(id) : void 0;
4026
- await this.adapter.put(this.vault, this.name, id, await this.codec.encryptRecord(next, nextVersion, cek, void 0, void 0, this.vdigFields !== null ? { id, prev: env } : void 0, id));
4027
- await this._onRecordMutated(id, "put", "cutover");
4028
- if (this.ledger) {
4029
- await this.ledger.append({
4030
- op: "migration",
4031
- collection: this.name,
4032
- id,
4033
- version: nextVersion,
4034
- actor: this.keyring.userId,
4035
- payloadHash: "",
4036
- reason: "schema:coordinated-cutover"
4037
- }).catch(() => {
4038
- });
4039
- }
4040
- count++;
4041
- }
4042
- return count;
4160
+ return applyCutoverTransform({
4161
+ adapter: this.adapter,
4162
+ vault: this.vault,
4163
+ name: this.name,
4164
+ tiers: this.tiers,
4165
+ storeCiphertext: this.storeCiphertext,
4166
+ codec: this.codec,
4167
+ perRecordCek: this.perRecordCek,
4168
+ vdigFields: this.vdigFields,
4169
+ ledger: this.ledger,
4170
+ keyring: this.keyring,
4171
+ resolveRecordCek: this.resolveRecordCek.bind(this),
4172
+ onRecordMutated: this._onRecordMutated.bind(this),
4173
+ envelopePayloadHash: (envelope) => this.strategies.history.envelopePayloadHash(envelope),
4174
+ transform
4175
+ });
4043
4176
  }
4044
4177
  /** @internal Untracked delete body — call {@link delete}, not this. */
4045
4178
  async _deleteInternal(id) {
@@ -4289,7 +4422,7 @@ var Collection = class {
4289
4422
  */
4290
4423
  async dispatchArrayDerivationsOnDelete(id, eraseRecordShapeToo = false) {
4291
4424
  if (this.derivationSource === void 0) return 0;
4292
- const { dispatchArrayDerivationsOnDelete } = await import("./dispatch-TKV4UCKB.js");
4425
+ const { dispatchArrayDerivationsOnDelete } = await import("./dispatch-N5HGVUGU.js");
4293
4426
  return dispatchArrayDerivationsOnDelete(this.#derivationDeleteCtx(this.derivationSource), id, eraseRecordShapeToo);
4294
4427
  }
4295
4428
  /**
@@ -4303,7 +4436,7 @@ var Collection = class {
4303
4436
  */
4304
4437
  async dispatchMaterializedViewsOnDelete(id) {
4305
4438
  if (this.materializedViewSource === void 0) return { deleted: 0, residueUndecodable: [], residueDeclined: [] };
4306
- const { dispatchMaterializedViewsOnDelete } = await import("./dispatch-VNR3TLBX.js");
4439
+ const { dispatchMaterializedViewsOnDelete } = await import("./dispatch-4XIJSFTT.js");
4307
4440
  return dispatchMaterializedViewsOnDelete(this.#mvDispatchCtx(this.materializedViewSource), id);
4308
4441
  }
4309
4442
  /**
@@ -4323,7 +4456,7 @@ var Collection = class {
4323
4456
  );
4324
4457
  }
4325
4458
  if (this.materializedViewSource !== void 0) {
4326
- const { resolveStaleMVOnRead } = await import("./stale-U3WO5MYN.js");
4459
+ const { resolveStaleMVOnRead } = await import("./stale-K734VACF.js");
4327
4460
  await resolveStaleMVOnRead(this.materializedViewSource, this.name, this.#dispatchCtx({ collection: this.name, id: "resolve-on-read" }));
4328
4461
  }
4329
4462
  await this.ensureHydrated();
@@ -5433,14 +5566,14 @@ var Collection = class {
5433
5566
  /** C-A/R10: persist the classified marker once per classified handle (store I/O in config-drift.ts). */
5434
5567
  async _ensureClassifiedMarker() {
5435
5568
  if (this._markerPersisted || this.vdigFields === null) return;
5436
- const { persistClassifiedMarkerForFields } = await import("./classified-marker-ZALWKOBC.js");
5569
+ const { persistClassifiedMarkerForFields } = await import("./classified-marker-MH3ON5OL.js");
5437
5570
  await persistClassifiedMarkerForFields(this.adapter, this.vault, this.name, this.vdigFields, await this.getDEK(this.name));
5438
5571
  this._markerPersisted = true;
5439
5572
  }
5440
5573
  /** C-A/R10 drift signal — the marker's declared digest-only set, memoized to one store read per handle (see config-drift.ts). */
5441
5574
  async _classifiedMarkerDigestOnly() {
5442
5575
  if (this._markerDigestOnlyCache !== void 0) return this._markerDigestOnlyCache;
5443
- const { readClassifiedMarkerDigestOnly } = await import("./classified-marker-ZALWKOBC.js");
5576
+ const { readClassifiedMarkerDigestOnly } = await import("./classified-marker-MH3ON5OL.js");
5444
5577
  this._markerDigestOnlyCache = await readClassifiedMarkerDigestOnly(this.adapter, this.vault, this.name, await this.getDEK(this.name));
5445
5578
  return this._markerDigestOnlyCache;
5446
5579
  }
@@ -6915,7 +7048,7 @@ var VaultLinks = class {
6915
7048
  // src/with-shape/links/lazy-handle.ts
6916
7049
  function makeLazyLinkSetHandle(d) {
6917
7050
  let engine = null;
6918
- const load = () => engine ??= import("./link-set-7F5ZPDEB.js").then(
7051
+ const load = () => engine ??= import("./link-set-2TTP4VLO.js").then(
6919
7052
  ({ LinkSet }) => new LinkSet(d.adapter, d.vault, d.name, d.spec, d.encrypted, d.getDEK, d.actor, d.emitter, d.endpointExists)
6920
7053
  );
6921
7054
  return {
@@ -7343,6 +7476,115 @@ function reconcileViaAttach(coll, graph, name, vaultCtx, plan) {
7343
7476
  reconcileCollectionReadState(coll, vaultCtx, plan, hadI18n, hadLookup);
7344
7477
  }
7345
7478
 
7479
+ // src/with-shape/introspection/behaviors.ts
7480
+ function buildBehaviorSummary(registries) {
7481
+ return {
7482
+ guards: buildGuardEntries(registries.guards),
7483
+ derivations: buildDerivationEntries(registries.derivations),
7484
+ materializedViews: buildMaterializedViewEntries(registries.materializedViews),
7485
+ overlays: buildOverlayEntries(registries.overlays),
7486
+ satellites: buildSatelliteEntries(registries.satellites)
7487
+ };
7488
+ }
7489
+ function buildGuardEntries(registry) {
7490
+ if (!registry) return [];
7491
+ const all = registry.all();
7492
+ const used = /* @__PURE__ */ new Set();
7493
+ for (const spec of all) {
7494
+ if (spec.name !== void 0) used.add(spec.name);
7495
+ }
7496
+ const unnamedOccurrence = /* @__PURE__ */ new Map();
7497
+ return all.map((spec) => {
7498
+ let name = spec.name;
7499
+ if (name === void 0) {
7500
+ let occurrence = (unnamedOccurrence.get(spec.collection) ?? 0) + 1;
7501
+ let candidate = `${spec.collection}#${occurrence}`;
7502
+ while (used.has(candidate)) {
7503
+ occurrence++;
7504
+ candidate = `${spec.collection}#${occurrence}`;
7505
+ }
7506
+ unnamedOccurrence.set(spec.collection, occurrence);
7507
+ name = candidate;
7508
+ used.add(name);
7509
+ }
7510
+ return {
7511
+ name,
7512
+ collection: spec.collection,
7513
+ ...spec.frozenFields ? { frozenFields: { fields: spec.frozenFields.fields } } : {},
7514
+ ...spec.amendment ? { amendment: { roles: spec.amendment.roles } } : {}
7515
+ };
7516
+ });
7517
+ }
7518
+ function buildDerivationEntries(registry) {
7519
+ if (!registry) return [];
7520
+ const all = registry.all();
7521
+ const usedNames = /* @__PURE__ */ new Set();
7522
+ for (const { spec } of all) {
7523
+ if (spec.name !== void 0) usedNames.add(spec.name);
7524
+ }
7525
+ const entries = all.map(({ spec }) => {
7526
+ const outputCollections = Object.values(spec.outputs).map((o) => o.collection);
7527
+ const name = spec.name ?? fallbackDerivationName(outputCollections, spec.source, usedNames);
7528
+ if (spec.name === void 0) usedNames.add(name);
7529
+ const outputs = {};
7530
+ for (const [key, output] of Object.entries(spec.outputs)) {
7531
+ outputs[key] = output.shape === "record" ? { shape: "record", collection: output.collection, ...output.optional !== void 0 ? { optional: output.optional } : {}, ...output.denorm ? { denorm: output.denorm } : {} } : { shape: "array", collection: output.collection, ...output.maxFanout !== void 0 ? { maxFanout: output.maxFanout } : {} };
7532
+ }
7533
+ return {
7534
+ name,
7535
+ source: spec.source,
7536
+ ...spec.sources ? { sources: spec.sources } : {},
7537
+ ...spec.triggerBy ? { triggerBy: spec.triggerBy } : {},
7538
+ ...spec.rollup ? { rollup: { from: spec.rollup.from, key: spec.rollup.key, field: spec.rollup.field } } : {},
7539
+ deterministic: true,
7540
+ outputs,
7541
+ lifecycle: spec.lifecycle,
7542
+ ...spec.strict !== void 0 ? { strict: spec.strict } : {}
7543
+ };
7544
+ });
7545
+ return entries;
7546
+ }
7547
+ function buildMaterializedViewEntries(registry) {
7548
+ if (!registry) return [];
7549
+ return registry.all().map(({ spec }) => ({
7550
+ name: spec.name,
7551
+ spec: stripFunctions(spec)
7552
+ }));
7553
+ }
7554
+ function buildOverlayEntries(registry) {
7555
+ if (!registry) return [];
7556
+ return registry.all().map((spec) => ({
7557
+ name: spec.name,
7558
+ base: spec.base,
7559
+ overlay: spec.overlay,
7560
+ shadowField: spec.shadowField,
7561
+ shadowValue: spec.shadowValue,
7562
+ ...spec.mergeMode ? { mergeMode: spec.mergeMode } : {}
7563
+ }));
7564
+ }
7565
+ function buildSatelliteEntries(registry) {
7566
+ if (!registry) return [];
7567
+ return registry.allSpecs().map((spec) => ({
7568
+ name: spec.satellite,
7569
+ base: spec.base,
7570
+ fields: spec.fields,
7571
+ ...spec.joined !== void 0 ? { joined: spec.joined } : {}
7572
+ }));
7573
+ }
7574
+ function stripFunctions(value) {
7575
+ if (typeof value === "function") return void 0;
7576
+ if (Array.isArray(value)) return value.map(stripFunctions).filter((v) => v !== void 0);
7577
+ if (value !== null && typeof value === "object") {
7578
+ const out = {};
7579
+ for (const [k, v] of Object.entries(value)) {
7580
+ const stripped = stripFunctions(v);
7581
+ if (stripped !== void 0) out[k] = stripped;
7582
+ }
7583
+ return out;
7584
+ }
7585
+ return value;
7586
+ }
7587
+
7346
7588
  // src/with-shape/satellites/registry.ts
7347
7589
  var SatelliteRegistry = class {
7348
7590
  byBase = /* @__PURE__ */ new Map();
@@ -7453,7 +7695,7 @@ function declareSatellite(ctx, collectionName, options, existingRegistry) {
7453
7695
  ctx.forEachSyncEngine((e) => e.remirrorPairResolvers([spec.base, spec.satellite]));
7454
7696
  const registry = reg;
7455
7697
  const baseSchema = ctx.getBaseSchema(spec.base);
7456
- void import("./post-register-PQSY544J.js").then((m) => m.postRegister(ctx.adapter, ctx.vaultName, spec, ctx.getDEK, baseSchema, registry)).catch(() => {
7698
+ void import("./post-register-ORQOQJCS.js").then((m) => m.postRegister(ctx.adapter, ctx.vaultName, spec, ctx.getDEK, baseSchema, registry)).catch(() => {
7457
7699
  });
7458
7700
  return reg;
7459
7701
  }
@@ -7785,6 +8027,21 @@ async function migrateSatelliteCek(name, coll) {
7785
8027
  }
7786
8028
 
7787
8029
  // src/with-shape/schema-update/fence-controller.ts
8030
+ function schemaBumpAuditHook(getLedger, actor) {
8031
+ return async (generation) => {
8032
+ const ledger = getLedger();
8033
+ if (!ledger) return;
8034
+ await ledger.append({
8035
+ op: "lifecycle",
8036
+ collection: "",
8037
+ id: "",
8038
+ version: 0,
8039
+ actor,
8040
+ payloadHash: "",
8041
+ reason: `schema:generation-bump=${generation}`
8042
+ });
8043
+ };
8044
+ }
7788
8045
  var SchemaFenceController = class {
7789
8046
  #coordination;
7790
8047
  #vault;
@@ -7794,6 +8051,7 @@ var SchemaFenceController = class {
7794
8051
  #staleMs;
7795
8052
  #quiesceTimeoutMs;
7796
8053
  #emit;
8054
+ #auditBump;
7797
8055
  #snapshot = 0;
7798
8056
  #pending = /* @__PURE__ */ new Map();
7799
8057
  constructor(opts) {
@@ -7806,6 +8064,7 @@ var SchemaFenceController = class {
7806
8064
  this.#quiesceTimeoutMs = opts.quiesceTimeoutMs ?? 6e4;
7807
8065
  this.#emit = opts.emit ?? (() => {
7808
8066
  });
8067
+ this.#auditBump = opts.auditBump;
7809
8068
  }
7810
8069
  /** Capture the generation snapshot at vault-open. */
7811
8070
  async init() {
@@ -7868,6 +8127,8 @@ var SchemaFenceController = class {
7868
8127
  this.#pending.clear();
7869
8128
  await this.#setState(nextVersion, "normal");
7870
8129
  this.#snapshot = nextVersion;
8130
+ if (this.#auditBump) await this.#auditBump(nextVersion).catch(() => {
8131
+ });
7871
8132
  }
7872
8133
  );
7873
8134
  return { migrated };
@@ -7955,6 +8216,13 @@ var VaultAttestation = class {
7955
8216
  }
7956
8217
  };
7957
8218
 
8219
+ // src/with-shape/introspection/subsystem-matrix.ts
8220
+ function buildSubsystemMatrix(strategies, registries) {
8221
+ const matrix = {};
8222
+ for (const key of STRATEGY_KEYS) matrix[key] = strategies[key] !== STRATEGY_DEFAULTS[key];
8223
+ return { ...matrix, ...registries };
8224
+ }
8225
+
7958
8226
  // src/kernel/vault.ts
7959
8227
  var COLLECTION_PASSTHROUGH_KEYS = [
7960
8228
  "indexes",
@@ -8200,7 +8468,8 @@ var Vault = class {
8200
8468
  onFlush: () => this.noydb._writeQueueTracker.onFlush(),
8201
8469
  clientId: this.noydb._clientId,
8202
8470
  sessionId: this.noydb._sessionId,
8203
- emit: (e) => this.emitter.emit("schema:fence-changed", { vault: this.name, ...e })
8471
+ emit: (e) => this.emitter.emit("schema:fence-changed", { vault: this.name, ...e }),
8472
+ auditBump: schemaBumpAuditHook(() => this.getLedgerOrNull(), this.keyring.userId)
8204
8473
  });
8205
8474
  this.emitter = opts.emitter;
8206
8475
  this.onDirty = opts.onDirty;
@@ -8365,7 +8634,7 @@ var Vault = class {
8365
8634
  if (isDictCollectionName(collectionName)) throw new ReservedCollectionNameError(collectionName);
8366
8635
  if (collectionName === SEQUENCE_COLLECTION) throw new ReservedCollectionNameError(collectionName);
8367
8636
  if (isLinkCollectionName(collectionName)) throw new ReservedCollectionNameError(collectionName);
8368
- if (isSecretBearingReservedCollection(collectionName)) throw new ReservedCollectionNameError(collectionName);
8637
+ if (isSecretBearingReservedCollection(collectionName) || isManifestReservedCollection(collectionName)) throw new ReservedCollectionNameError(collectionName);
8369
8638
  if (this.satelliteRegistry?.byJoined(collectionName)) {
8370
8639
  throw new SatelliteConfigError(`"${collectionName}" is a joined handle \u2014 use vault.joined('${collectionName}'), not vault.collection().`);
8371
8640
  }
@@ -8409,14 +8678,15 @@ var Vault = class {
8409
8678
  const strategies = options.schemaUpdate ?? [];
8410
8679
  const work = (async () => {
8411
8680
  const dek = await this.getDEK(collectionName);
8412
- const { persistSchemaIfNeeded } = await import("./register-S3ECUZPV.js");
8681
+ const { persistSchemaIfNeeded } = await import("./register-LHETZRJM.js");
8413
8682
  const result = await persistSchemaIfNeeded({
8414
8683
  store: this.adapter,
8415
8684
  vault: this.name,
8416
8685
  collectionName,
8417
8686
  validator,
8418
8687
  dek,
8419
- strategies
8688
+ strategies,
8689
+ manifestSync: { getDEK: this.getDEK, lookupDEK: async (name) => this.keyring.deks.get(name), getLedgerOrNull: () => this._getLedgerOrNull() }
8420
8690
  });
8421
8691
  const decision = result.decision ?? { action: "allow" };
8422
8692
  if (decision.action === "cutover") {
@@ -8558,12 +8828,13 @@ var Vault = class {
8558
8828
  const work = (async () => {
8559
8829
  try {
8560
8830
  const dek = await this.getDEK(collectionName);
8561
- await (await import("./register-S3ECUZPV.js")).persistSchemaIfNeeded({
8831
+ await (await import("./register-LHETZRJM.js")).persistSchemaIfNeeded({
8562
8832
  store: this.adapter,
8563
8833
  vault: this.name,
8564
8834
  collectionName,
8565
8835
  validator,
8566
- dek
8836
+ dek,
8837
+ manifestSync: { getDEK: this.getDEK, lookupDEK: async (name) => this.keyring.deks.get(name), getLedgerOrNull: () => this._getLedgerOrNull() }
8567
8838
  });
8568
8839
  } catch (err) {
8569
8840
  console.warn(
@@ -8713,7 +8984,7 @@ var Vault = class {
8713
8984
  *
8714
8985
  * Emits no ledger/event itself — its callers (#604's `freezePeriod`, #615's
8715
8986
  * `purgePeriodTargets`) own the audit record. The sweep body is shared via
8716
- * {@link _purgeMarkersOn}, which #615 also aims at push-only sync targets.
8987
+ * `purgeMarkersOn`, which #615 also aims at push-only sync targets.
8717
8988
  *
8718
8989
  * Purges the local adapter only. Markers already pushed to the vault's
8719
8990
  * push-only (`backup`/`archive`) sync targets are reclaimed by #615's
@@ -8721,25 +8992,7 @@ var Vault = class {
8721
8992
  * them would re-open the resurrection window — the deferred half of #611).
8722
8993
  */
8723
8994
  async _purgeDeleteMarkers(before, collections) {
8724
- return this._purgeMarkersOn(this.adapter, before, collections);
8725
- }
8726
- /**
8727
- * @internal #615. Sweep delete markers with `_ts < before` off ANY store
8728
- * (local adapter or a push-only sync target). Returns the count removed.
8729
- */
8730
- async _purgeMarkersOn(store, before, collections) {
8731
- const snapshot = await store.loadAll(this.name);
8732
- let removed = 0;
8733
- for (const [coll, records] of Object.entries(snapshot)) {
8734
- if (collections && !collections.includes(coll)) continue;
8735
- for (const [id, env] of Object.entries(records)) {
8736
- if (isDeleteMarker(env) && env._ts < before) {
8737
- await store.delete(this.name, coll, id);
8738
- removed++;
8739
- }
8740
- }
8741
- }
8742
- return removed;
8995
+ return purgeMarkersOn(this.adapter, this.name, before, collections);
8743
8996
  }
8744
8997
  /**
8745
8998
  * @internal #613. Relocate this closed period's in-window records (those
@@ -8765,7 +9018,7 @@ var Vault = class {
8765
9018
  async _purgePeriodTargets(before) {
8766
9019
  const out = [];
8767
9020
  for (const t of this.getPurgeableTargets()) {
8768
- const purgedCount = await this._purgeMarkersOn(t.store, before);
9021
+ const purgedCount = await purgeMarkersOn(t.store, this.name, before);
8769
9022
  out.push({ ...t.label !== void 0 ? { label: t.label } : {}, role: t.role, purgedCount });
8770
9023
  }
8771
9024
  return out;
@@ -8951,24 +9204,7 @@ var Vault = class {
8951
9204
  * (`'cascade'` default, `'strict'`, `'warn'`).
8952
9205
  */
8953
9206
  link(name, spec) {
8954
- const a = typeof spec.a === "string" ? spec.a : spec.a.target;
8955
- const b = typeof spec.b === "string" ? spec.b : spec.b.target;
8956
- for (const [slot, target] of [["a", a], ["b", b]]) {
8957
- if (!target || target.startsWith("_") || target.includes("/")) {
8958
- throw new ValidationError(
8959
- `vault.link("${name}"): endpoint "${slot}" must be a simple collection name, got "${target}".`
8960
- );
8961
- }
8962
- }
8963
- const resolved = { a, b, ...spec.onDelete ? { onDelete: spec.onDelete } : {} };
8964
- const existing = this.linkRegistry.get(name);
8965
- if (existing) {
8966
- if (existing.a !== resolved.a || existing.b !== resolved.b || (existing.onDelete ?? "cascade") !== (resolved.onDelete ?? "cascade")) {
8967
- throw new ValidationError(`vault.link("${name}"): conflicting re-declaration.`);
8968
- }
8969
- return;
8970
- }
8971
- this.linkRegistry.set(name, resolved);
9207
+ declareLink(this.linkRegistry, name, spec);
8972
9208
  }
8973
9209
  /**
8974
9210
  * Access a declared link set. Throws if `name` was not first
@@ -9258,6 +9494,19 @@ var Vault = class {
9258
9494
  publishRevocationList() {
9259
9495
  return this.attestation.publishRevocationList();
9260
9496
  }
9497
+ /**
9498
+ * @internal #943 — read-only access to this vault's persisted document
9499
+ * signer, for pod export signing. Never mints and does NOT require the
9500
+ * `withAttestation()` opt-in (role-agnostic, pure read): if no signer has
9501
+ * ever been minted, resolves to `null` (unsigned pod) rather than throwing
9502
+ * or minting one. Dynamic-imports `signer.js` (the S4 gate escape hatch —
9503
+ * see `_ensureFenceCoordination` above) since it is a with-* service path.
9504
+ */
9505
+ // eslint-disable-next-line @typescript-eslint/consistent-type-imports
9506
+ async _loadPodSigner() {
9507
+ const { loadSigner } = await import("./signer-7KHD4OL2.js");
9508
+ return loadSigner(this.adapter, this.name, this.getDEK);
9509
+ }
9261
9510
  async writeExportAudit(entry) {
9262
9511
  const json = JSON.stringify(entry);
9263
9512
  const envelope = this.encrypted ? await (async () => {
@@ -9738,7 +9987,7 @@ var Vault = class {
9738
9987
  async _initGuards(handles) {
9739
9988
  if (handles.length === 0) return;
9740
9989
  const [{ GuardRegistry }, { ReadOnlyVaultFacade }] = await Promise.all([
9741
- import("./registry-BWD2ED52.js"),
9990
+ import("./registry-IKUR2MXD.js"),
9742
9991
  import("./read-only-facade-CHCKSEPD.js")
9743
9992
  ]);
9744
9993
  const registry = new GuardRegistry();
@@ -9766,7 +10015,7 @@ var Vault = class {
9766
10015
  async _initDerivations(handles) {
9767
10016
  if (handles.length === 0) return;
9768
10017
  const [{ DerivationRegistry }, { ReadOnlyVaultFacade }] = await Promise.all([
9769
- import("./registry-FZOHKUME.js"),
10018
+ import("./registry-JRIN447B.js"),
9770
10019
  import("./read-only-facade-CHCKSEPD.js")
9771
10020
  ]);
9772
10021
  const registry = new DerivationRegistry();
@@ -9798,7 +10047,7 @@ var Vault = class {
9798
10047
  */
9799
10048
  async _initMaterializedViews(handles) {
9800
10049
  if (handles.length === 0) return;
9801
- const { MaterializedViewRegistry } = await import("./registry-RISV7IDZ.js");
10050
+ const { MaterializedViewRegistry } = await import("./registry-AMAZ6QRZ.js");
9802
10051
  const registry = new MaterializedViewRegistry();
9803
10052
  this.materializedViewRegistry = registry;
9804
10053
  const db = this;
@@ -9823,7 +10072,7 @@ var Vault = class {
9823
10072
  */
9824
10073
  async _initOverlayedViews(handles) {
9825
10074
  if (handles.length === 0) return;
9826
- const { OverlayedViewRegistry } = await import("./registry-ZE35A7WC.js");
10075
+ const { OverlayedViewRegistry } = await import("./registry-CZVINVQH.js");
9827
10076
  const registry = new OverlayedViewRegistry();
9828
10077
  const mvRegistry = this.materializedViewRegistry;
9829
10078
  const overlayNames = /* @__PURE__ */ new Set();
@@ -9851,6 +10100,21 @@ var Vault = class {
9851
10100
  _getOverlayedViewRegistry() {
9852
10101
  return this.overlayedViewRegistry;
9853
10102
  }
10103
+ /**
10104
+ * Read-only enumeration of the five behavior registries — guards,
10105
+ * derivations, materialized views, overlays, satellites — each entry
10106
+ * carrying its name and the serializable half of its spec (never a
10107
+ * function body). @see with-shape/introspection/behaviors.ts
10108
+ */
10109
+ listBehaviors() {
10110
+ return buildBehaviorSummary({
10111
+ guards: this.guardRegistry,
10112
+ derivations: this.derivationRegistry,
10113
+ materializedViews: this.materializedViewRegistry,
10114
+ overlays: this.overlayedViewRegistry,
10115
+ satellites: this.satelliteRegistry
10116
+ });
10117
+ }
9854
10118
  /** @internal — ctx for `putDerivedOutput`'s frozen-period skip+audit (#638 Task 5). */
9855
10119
  _dispatchCtx(source) {
9856
10120
  return { emit: (e, p) => this.emitter.emit(e, p), source, audit: ledgerAuditHook(this.getLedgerOrNull() ?? void 0, this.keyring.userId) };
@@ -9870,14 +10134,14 @@ var Vault = class {
9870
10134
  if (!reg) {
9871
10135
  throw new Error(`refreshView: no MV registered with name "${name}"`);
9872
10136
  }
9873
- const { MaterializedViewExecutor } = await import("./executor-M4ZZNX6S.js");
10137
+ const { MaterializedViewExecutor } = await import("./executor-3JZ4POTW.js");
9874
10138
  const result = await MaterializedViewExecutor.refresh(reg, {
9875
10139
  getCollection: (n) => this.collection(n),
9876
10140
  getActiveTxContext: () => this.noydb._activeTxContextOrNull,
9877
10141
  getQueryContext: () => this,
9878
10142
  dispatchCtx: this._dispatchCtx({ collection: name, id: "refreshView" })
9879
10143
  });
9880
- const { clearMVStaleFully } = await import("./stale-U3WO5MYN.js");
10144
+ const { clearMVStaleFully } = await import("./stale-K734VACF.js");
9881
10145
  await clearMVStaleFully(this.adapter, this.name, registry, name);
9882
10146
  return result;
9883
10147
  }
@@ -9890,7 +10154,7 @@ var Vault = class {
9890
10154
  if (registry === null) return { derived: 0, failed: 0, skippedFrozen: 0 };
9891
10155
  const strategies = registry.strategiesForSource(sourceCollection);
9892
10156
  if (strategies.length === 0) return { derived: 0, failed: 0, skippedFrozen: 0 };
9893
- const { DerivationExecutor } = await import("./executor-TI64S4LE.js");
10157
+ const { DerivationExecutor } = await import("./executor-S4QIKEHW.js");
9894
10158
  const sourceColl = this.collection(sourceCollection);
9895
10159
  const records = await sourceColl.list();
9896
10160
  const ctx = { vault: this.derivationFacade ?? new (await import("./read-only-facade-CHCKSEPD.js")).ReadOnlyVaultFacade(this, "derivation") };
@@ -9917,7 +10181,7 @@ var Vault = class {
9917
10181
  if (!outSpec) continue;
9918
10182
  const outputColl = this.collection(outSpec.collection);
9919
10183
  if (out.kind === "array") {
9920
- const { loadFanoutSidecar, saveFanoutSidecar } = await import("./fanout-sidecar-WYXO6QQT.js");
10184
+ const { loadFanoutSidecar, saveFanoutSidecar } = await import("./fanout-sidecar-T2ZGLQFE.js");
9921
10185
  const prior = await loadFanoutSidecar(this.adapter, this.name, spec.source, id, key, this.getDEK, this.encrypted);
9922
10186
  const prevKeys = new Set(prior?.keys ?? []);
9923
10187
  const newKeysList = out.entries.map((e) => e.key);
@@ -10144,7 +10408,7 @@ var Vault = class {
10144
10408
  * collection.
10145
10409
  */
10146
10410
  async delegate(opts) {
10147
- const { issueDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-WMO3Q3O5.js");
10411
+ const { issueDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-PDYL6RWT.js");
10148
10412
  if (!this.keyring.kek) {
10149
10413
  throw new ValidationError(
10150
10414
  "issueDelegation: keyring.kek is null \u2014 issuing a delegation requires a tier-1 unlock. Re-authenticate at tier 1 (secret) first."
@@ -10166,7 +10430,7 @@ var Vault = class {
10166
10430
  * if the id does not exist.
10167
10431
  */
10168
10432
  async revokeDelegation(id) {
10169
- const { revokeDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-WMO3Q3O5.js");
10433
+ const { revokeDelegation, DELEGATIONS_COLLECTION } = await import("./delegation-PDYL6RWT.js");
10170
10434
  await revokeDelegation(this.adapter, this.name, id);
10171
10435
  void DELEGATIONS_COLLECTION;
10172
10436
  }
@@ -10414,7 +10678,7 @@ var Vault = class {
10414
10678
  * @see docs/superpowers/specs/2026-05-22-schema-dump-design.md
10415
10679
  */
10416
10680
  async dumpSchema(opts = {}) {
10417
- const { dumpVaultSchema } = await import("./walk-BF36V4SR.js");
10681
+ const { dumpVaultSchema } = await import("./walk-MQHYNDLZ.js");
10418
10682
  return dumpVaultSchema(this, opts);
10419
10683
  }
10420
10684
  /**
@@ -10454,12 +10718,12 @@ var Vault = class {
10454
10718
  refRegistry: this.refRegistry,
10455
10719
  getDEK: this.getDEK,
10456
10720
  keyring: this.keyring,
10457
- subsystems: {
10721
+ subsystems: buildSubsystemMatrix(this.strategies, {
10458
10722
  guards: this.guardRegistry !== null,
10459
10723
  derivations: this.derivationRegistry !== null,
10460
10724
  materializedViews: this.materializedViewRegistry !== null,
10461
10725
  overlayViews: this.overlayedViewRegistry !== null
10462
- },
10726
+ }),
10463
10727
  ...this.vaultMeta !== void 0 ? { vaultMeta: this.vaultMeta } : {},
10464
10728
  mvRegistry: this.materializedViewRegistry,
10465
10729
  overlayRegistry: this.overlayedViewRegistry,
@@ -10510,30 +10774,8 @@ var Vault = class {
10510
10774
  * separate vault instances now.
10511
10775
  */
10512
10776
  async getBundleHandle() {
10513
- const existing = await this.adapter.get(this.name, "_meta", "handle");
10514
- if (existing) {
10515
- try {
10516
- const parsed = JSON.parse(existing._data);
10517
- if (parsed !== null && typeof parsed === "object" && "handle" in parsed) {
10518
- const handle2 = parsed.handle;
10519
- if (typeof handle2 === "string" && /^[0-9A-HJKMNP-TV-Z]{26}$/.test(handle2)) {
10520
- return handle2;
10521
- }
10522
- }
10523
- } catch {
10524
- }
10525
- }
10526
- const { generateULID: generateULID2 } = await import("./ulid-PTAIMDG4.js");
10527
- const handle = generateULID2();
10528
- const envelope = {
10529
- _noydb: NOYDB_FORMAT_VERSION,
10530
- _v: 1,
10531
- _ts: (/* @__PURE__ */ new Date()).toISOString(),
10532
- _iv: "",
10533
- _data: JSON.stringify({ handle })
10534
- };
10535
- await this.adapter.put(this.name, "_meta", "handle", envelope);
10536
- return handle;
10777
+ const { buildBundleHandle } = await import("./bundle-handle-5OUAI7CV.js");
10778
+ return buildBundleHandle(this.adapter, this.name);
10537
10779
  }
10538
10780
  /**
10539
10781
  * Read the owner-curated cover for this vault (or `undefined` if
@@ -10564,7 +10806,7 @@ var Vault = class {
10564
10806
  * both modes round-trip cleanly.
10565
10807
  */
10566
10808
  async dump() {
10567
- const { dumpVault } = await import("./backup-ENTZYW37.js");
10809
+ const { dumpVault } = await import("./backup-GAYWQAFN.js");
10568
10810
  return dumpVault(this.backupContext());
10569
10811
  }
10570
10812
  /**
@@ -10616,7 +10858,7 @@ var Vault = class {
10616
10858
  * — there's no chain to verify against.
10617
10859
  */
10618
10860
  async load(backupJson) {
10619
- const { loadVault } = await import("./backup-ENTZYW37.js");
10861
+ const { loadVault } = await import("./backup-GAYWQAFN.js");
10620
10862
  return loadVault(this.backupContext(), backupJson);
10621
10863
  }
10622
10864
  /**
@@ -10648,7 +10890,7 @@ var Vault = class {
10648
10890
  * way to detect tampering of an in-place vault.
10649
10891
  */
10650
10892
  async verifyBackupIntegrity() {
10651
- const { verifyBackupIntegrity } = await import("./backup-ENTZYW37.js");
10893
+ const { verifyBackupIntegrity } = await import("./backup-GAYWQAFN.js");
10652
10894
  return verifyBackupIntegrity(this.backupContext());
10653
10895
  }
10654
10896
  /**
@@ -10866,7 +11108,7 @@ var Vault = class {
10866
11108
  * is the live validator object, not a serialization of it).
10867
11109
  */
10868
11110
  async exportJSON(opts = {}) {
10869
- const { exportVaultJSON } = await import("./backup-ENTZYW37.js");
11111
+ const { exportVaultJSON } = await import("./backup-GAYWQAFN.js");
10870
11112
  return exportVaultJSON(this.backupContext(), opts);
10871
11113
  }
10872
11114
  };
@@ -12763,7 +13005,7 @@ var Noydb = class {
12763
13005
  if (!facade) return;
12764
13006
  const ctx = { existing, vault: facade, userId: e.userId, role: e.role };
12765
13007
  await registry.runChecks(e.collection, incoming, ctx);
12766
- const { GuardExecutor } = await import("./executor-YBK3I2OT.js");
13008
+ const { GuardExecutor } = await import("./executor-CYJQLKKI.js");
12767
13009
  for (const g of guards) {
12768
13010
  await GuardExecutor.checkFrozenFields(g, e.docId, existing, incoming, e.computedFieldNames);
12769
13011
  }
@@ -13234,6 +13476,7 @@ var Noydb = class {
13234
13476
  "Noydb.listAccessibleVaults(): a secret (secret) is required when encryption is enabled."
13235
13477
  );
13236
13478
  }
13479
+ const probeSecret = this.options.secret;
13237
13480
  const minRank = ROLE_RANK[options.minRole ?? "client"];
13238
13481
  const universe = await adapter.listVaults();
13239
13482
  const accessible = [];
@@ -13242,10 +13485,16 @@ var Noydb = class {
13242
13485
  try {
13243
13486
  keyring = await loadKeyring(adapter, vault, {
13244
13487
  userId: this.options.user,
13245
- secret: this.options.secret
13488
+ secret: probeSecret
13246
13489
  });
13247
13490
  } catch (err) {
13248
- if (err instanceof NoAccessError || err instanceof InvalidKeyError || err instanceof KeyringCorruptError) {
13491
+ if (err instanceof NoAccessError || err instanceof InvalidKeyError || err instanceof KeyringCorruptError || // Mixed universe (#940): a string secret probing an echo keyring
13492
+ // throws EchoCeremonyRequiredError, echo parts probing a standard
13493
+ // keyring throw ValidationError — both from `deriveKekForKeyring`,
13494
+ // both meaning "no accessible key material here", exactly like a
13495
+ // wrong secret. `createNoydb` already rejects a secret/mode shape
13496
+ // mismatch, so neither can be a caller misconfiguration.
13497
+ err instanceof EchoCeremonyRequiredError || err instanceof ValidationError) {
13249
13498
  continue;
13250
13499
  }
13251
13500
  throw err;
@@ -13469,6 +13718,10 @@ var Noydb = class {
13469
13718
  get _store() {
13470
13719
  return this.options.store;
13471
13720
  }
13721
+ /** The default store this instance was opened with (#948). */
13722
+ get store() {
13723
+ return this.options.store;
13724
+ }
13472
13725
  /**
13473
13726
  * Currently-running multi-record transaction, or `null` outside
13474
13727
  * Phase 2. `Collection.dispatchDerivations` consults this so a
@@ -13530,6 +13783,25 @@ var Noydb = class {
13530
13783
  }
13531
13784
  return engine.status();
13532
13785
  }
13786
+ /**
13787
+ * Enumerate the sync targets wired for `vault` (#948) — the primary engine
13788
+ * (keyed by vault name) plus any additional targets (keyed `vault::label`
13789
+ * or `vault::role`). No preset name: a resolved `SyncPolicy` doesn't retain
13790
+ * which preset (if any) produced it.
13791
+ */
13792
+ listSyncTargets(vault) {
13793
+ const targets = [];
13794
+ for (const [key, engine] of this.syncEngines) {
13795
+ if (key === vault || key.startsWith(`${vault}::`)) {
13796
+ targets.push({
13797
+ label: engine.label,
13798
+ role: engine.role,
13799
+ policy: engine.policy ? { push: { mode: engine.policy.push.mode }, pull: { mode: engine.policy.pull.mode } } : void 0
13800
+ });
13801
+ }
13802
+ }
13803
+ return targets;
13804
+ }
13533
13805
  getSyncEngine(vault) {
13534
13806
  const engine = this.syncEngines.get(vault);
13535
13807
  if (!engine) {
@@ -14007,16 +14279,7 @@ var Noydb = class {
14007
14279
  return keyring2;
14008
14280
  }
14009
14281
  await assertKeyringOpenAllowed(this.options.store, vault, this.options.user, opts.create);
14010
- let effectiveSecret;
14011
- if (this.options.secretMode === "managed") {
14012
- effectiveSecret = await resolveManagedSecret(
14013
- this.options.store,
14014
- vault,
14015
- this.options.sealingKey
14016
- );
14017
- } else {
14018
- effectiveSecret = this.options.secret;
14019
- }
14282
+ const effectiveSecret = await resolveEffectiveSecret(this.options, this.options.store, vault);
14020
14283
  if (!effectiveSecret) {
14021
14284
  throw new ValidationError("A secret (secret) or getKeyring callback is required when encryption is enabled");
14022
14285
  }
@@ -14025,22 +14288,10 @@ var Noydb = class {
14025
14288
  keyring = await loadKeyring(this.options.store, vault, { userId: this.options.user, secret: effectiveSecret });
14026
14289
  } catch (err) {
14027
14290
  if (err instanceof NoAccessError) {
14028
- keyring = await createOwnerKeyring(this.options.store, vault, {
14029
- userId: this.options.user,
14030
- secret: effectiveSecret,
14031
- // Managed mode generates 256-bit base64 strings that don't satisfy
14032
- // the human-secret strength rules (no spaces, no "words").
14033
- // Skip validation in managed mode — the entropy floor is already
14034
- // 256 bits by construction.
14035
- validate: this.options.secretMode === "managed" ? false : this.options.validateSecret === true
14036
- });
14291
+ keyring = await createOwnerKeyring(this.options.store, vault, ownerKeyringOptions(this.options, effectiveSecret));
14037
14292
  } else if (err instanceof InvalidKeyError && this.options.onInvalidKey === "reset") {
14038
14293
  await this.options.store.delete(vault, "_keyring", this.options.user);
14039
- keyring = await createOwnerKeyring(this.options.store, vault, {
14040
- userId: this.options.user,
14041
- secret: effectiveSecret,
14042
- validate: this.options.secretMode === "managed" ? false : this.options.validateSecret === true
14043
- });
14294
+ keyring = await createOwnerKeyring(this.options.store, vault, ownerKeyringOptions(this.options, effectiveSecret));
14044
14295
  } else {
14045
14296
  throw err;
14046
14297
  }
@@ -14075,33 +14326,9 @@ var Noydb = class {
14075
14326
  };
14076
14327
  async function createNoydb(options) {
14077
14328
  if (!options.store) options = { ...options, store: memoryStore() };
14078
- const encrypted = options.encrypt !== false;
14079
- const managed = options.secretMode === "managed";
14080
- if (options.secret && options.getKeyring) {
14081
- throw new ValidationError("Provide either `secret` or `getKeyring`, not both");
14082
- }
14083
- if (managed) {
14084
- if (options.secret) {
14085
- throw new ValidationError(
14086
- '`secretMode: "managed"` is mutually exclusive with `secret` \u2014 managed mode generates the secret itself. Drop `secret`.'
14087
- );
14088
- }
14089
- if (options.getKeyring) {
14090
- throw new ValidationError(
14091
- '`secretMode: "managed"` is mutually exclusive with `getKeyring` \u2014 a custom unlock callback would bypass the sealing flow. Drop `getKeyring`.'
14092
- );
14093
- }
14094
- if (!options.sealingKey) {
14095
- throw new ValidationError(
14096
- '`secretMode: "managed"` requires `sealingKey: SealingKeyProvider` (see @noy-db/seal-macos-keychain / @noy-db/seal-aws-kms / etc.).'
14097
- );
14098
- }
14099
- }
14100
- if (encrypted && !managed && !options.secret && !options.getKeyring) {
14101
- throw new ValidationError("A secret (secret) or getKeyring callback is required when encryption is enabled");
14102
- }
14329
+ validateSecretModeOptions(options);
14103
14330
  if (!options.coordinationStrategy) options = { ...options, coordinationStrategy: await createDefaultCoordinationProvider(options.store) };
14104
- if (!options.userApiFactory) options = { ...options, userApiFactory: (await import("./api-M7REIE7H.js")).createUserApi };
14331
+ if (!options.userApiFactory) options = { ...options, userApiFactory: (await import("./api-67SBPMMH.js")).createUserApi };
14105
14332
  if (!options.policyFactory) {
14106
14333
  const policyModule = await import("./policy/index.js");
14107
14334
  options = { ...options, policyFactory: policyModule.createNoydbPolicy, policyCheckGateFn: policyModule.checkGate };
@@ -14136,4 +14363,4 @@ export {
14136
14363
  Noydb,
14137
14364
  createNoydb
14138
14365
  };
14139
- //# sourceMappingURL=chunk-5UKUOMO6.js.map
14366
+ //# sourceMappingURL=chunk-3CLZY46Y.js.map