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

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 (360) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/README.md +3 -3
  3. package/dist/api-UE2XQKDN.js +20 -0
  4. package/dist/as/index.js +11 -10
  5. package/dist/as/index.js.map +1 -1
  6. package/dist/at/index.js +6 -6
  7. package/dist/attestation/index.js +16 -16
  8. package/dist/{backup-QZQEP5RO.js → backup-R6A4VZRX.js} +12 -12
  9. package/dist/blobs/index.js +11 -11
  10. package/dist/broker/index.js +10 -10
  11. package/dist/by/index.js +2 -2
  12. package/dist/cargo/index.js +27 -27
  13. package/dist/{chunk-AHIIBDNH.js → chunk-2Z47NMFK.js} +6 -6
  14. package/dist/{chunk-2DGBRE4K.js → chunk-4OZNXTO4.js} +2 -2
  15. package/dist/{chunk-FZWAGG5T.js → chunk-5FUULQ6F.js} +6 -6
  16. package/dist/{chunk-P7KJME6C.js → chunk-6YXCPL4T.js} +2 -2
  17. package/dist/{chunk-XJP66QEN.js → chunk-7BE7ZDVQ.js} +380 -2
  18. package/dist/chunk-7BE7ZDVQ.js.map +1 -0
  19. package/dist/{chunk-LAI7ENPW.js → chunk-7MG2LHO5.js} +3 -3
  20. package/dist/{chunk-NUXTUGAD.js → chunk-7NTBVFGD.js} +10 -10
  21. package/dist/{chunk-SW4TOSJL.js → chunk-7O3Y4PPD.js} +1 -1
  22. package/dist/chunk-7O3Y4PPD.js.map +1 -0
  23. package/dist/{chunk-MU74BYOD.js → chunk-ANSIZYEG.js} +3 -3
  24. package/dist/{chunk-2MQ2D5OZ.js → chunk-B2ZSGYSF.js} +4 -4
  25. package/dist/{chunk-5W5CEHLA.js → chunk-BBWVXF57.js} +4 -4
  26. package/dist/{chunk-SWFIXQF5.js → chunk-BERJ4AWW.js} +5 -5
  27. package/dist/{chunk-Q2OAAREU.js → chunk-BMSOTHIA.js} +5 -5
  28. package/dist/{chunk-XGXVPCYW.js → chunk-BOWNCWZT.js} +3 -3
  29. package/dist/{chunk-65ZYRK7O.js → chunk-BUE2D7PX.js} +26 -3
  30. package/dist/chunk-BUE2D7PX.js.map +1 -0
  31. package/dist/{chunk-UTFY6W6X.js → chunk-BZ3534YM.js} +2 -2
  32. package/dist/{chunk-DOPZWTMJ.js → chunk-CIGAQBJR.js} +6 -6
  33. package/dist/{chunk-3GIA3HJ2.js → chunk-DGOZ4UZD.js} +2 -2
  34. package/dist/{chunk-7XT7KZTN.js → chunk-DJ3LNNZQ.js} +8 -8
  35. package/dist/{chunk-IS5LFHV2.js → chunk-DMJZBQ7F.js} +6 -6
  36. package/dist/{chunk-MENI33ZV.js → chunk-E3EBMC4G.js} +3 -3
  37. package/dist/{chunk-T66OY2U5.js → chunk-E5OHKSBD.js} +6 -6
  38. package/dist/{chunk-LUVGSKXE.js → chunk-EVKR67PQ.js} +5 -5
  39. package/dist/{chunk-Q2ZN5DWZ.js → chunk-FAHMLERK.js} +2 -2
  40. package/dist/{chunk-FN26SFGH.js → chunk-FYEZC4PX.js} +2 -2
  41. package/dist/{chunk-OLUTCM23.js → chunk-GHHUF2KL.js} +5 -5
  42. package/dist/{chunk-DNMTN46H.js → chunk-GY4WYNNG.js} +2 -2
  43. package/dist/{chunk-OQDHIAR2.js → chunk-H7XCIM3Z.js} +61 -8
  44. package/dist/chunk-H7XCIM3Z.js.map +1 -0
  45. package/dist/{chunk-IAHDSFFA.js → chunk-HN4FNA4X.js} +10 -10
  46. package/dist/{chunk-JRWLUWDM.js → chunk-IPFE6MVM.js} +3 -3
  47. package/dist/{chunk-PV7XXAXK.js → chunk-JBDFMYKQ.js} +2 -2
  48. package/dist/{chunk-3SWP2FYA.js → chunk-JJR2JIN4.js} +8 -8
  49. package/dist/{chunk-IZTU6RKH.js → chunk-JMGDHKQF.js} +2 -2
  50. package/dist/{chunk-P2RJAVMR.js → chunk-KCUIMITG.js} +3 -3
  51. package/dist/chunk-KL7AS3HV.js +84 -0
  52. package/dist/chunk-KL7AS3HV.js.map +1 -0
  53. package/dist/{chunk-MOQ6OGKS.js → chunk-KLPASWYY.js} +3 -3
  54. package/dist/{chunk-JILOSL4O.js → chunk-KTDGZPOZ.js} +2 -2
  55. package/dist/{chunk-ZB2K3FV7.js → chunk-KTFRCC5C.js} +2 -2
  56. package/dist/{chunk-7PC3DRG7.js → chunk-LHH6H43C.js} +6 -6
  57. package/dist/{chunk-QOHGWFAW.js → chunk-LWBCUYZW.js} +2 -2
  58. package/dist/{chunk-NMDMSHBF.js → chunk-MLO75SFJ.js} +2 -2
  59. package/dist/{chunk-H5GVPOB4.js → chunk-MMOZQTXV.js} +4 -4
  60. package/dist/{chunk-JFSUYGNE.js → chunk-MVMXZYXT.js} +2 -2
  61. package/dist/{chunk-FKQCC4C5.js → chunk-NQKIUNW5.js} +2 -2
  62. package/dist/{chunk-IRHIA3AL.js → chunk-PFBL4M7E.js} +3 -3
  63. package/dist/{chunk-RCONOOVF.js → chunk-PKJ43CMD.js} +5 -5
  64. package/dist/{chunk-UL7TLJ54.js → chunk-PQKG5AHH.js} +3 -3
  65. package/dist/{chunk-MTTPHBIE.js → chunk-Q2PU57HC.js} +2 -2
  66. package/dist/{chunk-FPN5D4JX.js → chunk-Q4RWFV3G.js} +5 -5
  67. package/dist/{chunk-FLRLZ4XZ.js → chunk-Q7HZX3IF.js} +2 -2
  68. package/dist/{chunk-5EC7X5QA.js → chunk-QHW35ZON.js} +4 -4
  69. package/dist/{chunk-75WNTBZL.js → chunk-QIBVIOXO.js} +3 -3
  70. package/dist/{chunk-KQIDBIZL.js → chunk-QIZPZMUI.js} +2 -2
  71. package/dist/{chunk-TQGT5BZE.js → chunk-RDZZHYMV.js} +3 -3
  72. package/dist/{chunk-HOIWW2LV.js → chunk-RGSTMLVO.js} +3 -3
  73. package/dist/{chunk-KZTPL7NL.js → chunk-RMF67KCG.js} +2 -2
  74. package/dist/{chunk-OEJ4R52I.js → chunk-RMS3NEA3.js} +2 -2
  75. package/dist/{chunk-5NKHCJU5.js → chunk-RTYJRFQO.js} +6 -6
  76. package/dist/chunk-RXLYKVTF.js +17 -0
  77. package/dist/chunk-RXLYKVTF.js.map +1 -0
  78. package/dist/{chunk-XKA6UH5V.js → chunk-SFAWCTEM.js} +2 -2
  79. package/dist/{chunk-FYT3DXPN.js → chunk-SKGMN35F.js} +2 -2
  80. package/dist/{chunk-USKHHOIV.js → chunk-SL3JAAKN.js} +2 -2
  81. package/dist/{chunk-FRIVOR5N.js → chunk-SWVNZQVR.js} +4 -4
  82. package/dist/chunk-TFMM5DBB.js +20 -0
  83. package/dist/chunk-TFMM5DBB.js.map +1 -0
  84. package/dist/{chunk-O3SNM66K.js → chunk-TFR7DSOV.js} +2 -2
  85. package/dist/{chunk-X6YRP5EC.js → chunk-THX6FEEC.js} +5 -5
  86. package/dist/{chunk-RPX2H2OL.js → chunk-TO3EQ7HF.js} +3 -3
  87. package/dist/chunk-TPHAGLUH.js +30 -0
  88. package/dist/chunk-TPHAGLUH.js.map +1 -0
  89. package/dist/{chunk-DIVY2CJZ.js → chunk-TRGTKX5E.js} +3 -3
  90. package/dist/{chunk-JY4U6CYV.js → chunk-TUFM4UZP.js} +2 -2
  91. package/dist/{chunk-OKCQNMO6.js → chunk-U7VPHXXO.js} +5 -5
  92. package/dist/{chunk-DZPMKY3J.js → chunk-UGTBXF5U.js} +3 -3
  93. package/dist/{chunk-VT4DTCK5.js → chunk-URHRIAV6.js} +2 -2
  94. package/dist/{chunk-YHIAWECL.js → chunk-UXVWEX5L.js} +2 -2
  95. package/dist/{chunk-PCIBCL26.js → chunk-VGICZPVE.js} +7 -5
  96. package/dist/{chunk-PCIBCL26.js.map → chunk-VGICZPVE.js.map} +1 -1
  97. package/dist/{chunk-XJTGBHK6.js → chunk-VNR2SNVJ.js} +6 -6
  98. package/dist/{chunk-GHADG5QZ.js → chunk-VTFVLCUH.js} +2 -2
  99. package/dist/{chunk-U3RMWOXY.js → chunk-VXANTWBJ.js} +3 -3
  100. package/dist/{chunk-KHKKD62N.js → chunk-VYYM3MEN.js} +2 -16
  101. package/dist/chunk-VYYM3MEN.js.map +1 -0
  102. package/dist/{chunk-QJLOWGOU.js → chunk-WQF3QABE.js} +5 -5
  103. package/dist/{chunk-GKOJR53Y.js → chunk-WSJG5L5C.js} +4 -4
  104. package/dist/{chunk-I5LSKXT6.js → chunk-WWNYSV7S.js} +3 -3
  105. package/dist/{chunk-357ECVLE.js → chunk-XGDYGUEH.js} +3 -3
  106. package/dist/{chunk-2E2LT37H.js → chunk-XLMEZIAJ.js} +2 -2
  107. package/dist/{chunk-KKZPQLDH.js → chunk-XMF3GKUR.js} +125 -465
  108. package/dist/chunk-XMF3GKUR.js.map +1 -0
  109. package/dist/{chunk-TAJZ7GXO.js → chunk-XNIQ7DP2.js} +2 -2
  110. package/dist/{chunk-Z277MC2O.js → chunk-Y4MJQ2UG.js} +4 -4
  111. package/dist/{chunk-OXZSMX2H.js → chunk-YCXICMOY.js} +5 -5
  112. package/dist/{chunk-MV2OEK3K.js → chunk-YQWBEJCS.js} +4 -4
  113. package/dist/{chunk-CWFH36SI.js → chunk-YSRUYAVU.js} +2 -2
  114. package/dist/{chunk-ZQGRZN5L.js → chunk-YYP7WSEB.js} +2 -2
  115. package/dist/{chunk-HS3LEVT4.js → chunk-ZG4XLOKB.js} +6 -6
  116. package/dist/{chunk-4U52PMEL.js → chunk-ZN4FD4PE.js} +4 -4
  117. package/dist/{chunk-AW4KTQA4.js → chunk-ZORTV6NH.js} +2 -2
  118. package/dist/{chunk-P22XPNFW.js → chunk-ZR2YMODS.js} +2 -2
  119. package/dist/classified/index.js +4 -4
  120. package/dist/{classified-marker-R37XW5PC.js → classified-marker-67HBIJMZ.js} +3 -3
  121. package/dist/{collection-facade-OPJ3EC4L.js → collection-facade-MGGHQ3HU.js} +15 -15
  122. package/dist/{computed-HW6IG5UH.js → computed-LSEZYRJS.js} +3 -3
  123. package/dist/consent/index.js +7 -7
  124. package/dist/cover/index.js +7 -7
  125. package/dist/custody/index.js +10 -10
  126. package/dist/{dead-filter-GRT6RAML.js → dead-filter-M3NZUWBZ.js} +2 -2
  127. package/dist/debug/index.js +1 -1
  128. package/dist/{delegation-6QRAYSK6.js → delegation-OLJUWTVA.js} +9 -9
  129. package/dist/derivations/index.js +24 -13
  130. package/dist/{derive-AAIXSQIE.js → derive-LY47HG7Q.js} +8 -8
  131. package/dist/directory/index.js +8 -8
  132. package/dist/{dispatch-QCF7KPIP.js → dispatch-44J4TL72.js} +5 -5
  133. package/dist/dispatch-XEBHUGBV.js +250 -0
  134. package/dist/dispatch-XEBHUGBV.js.map +1 -0
  135. package/dist/{enclave-OXZY3NOP.js → enclave-4YBQK77G.js} +7 -7
  136. package/dist/executor-KSPGNVDO.js +29 -0
  137. package/dist/executor-MZJXBWNM.js +9 -0
  138. package/dist/executor-TOLPBHOC.js +9 -0
  139. package/dist/export-accessible-LGV6IAFX.js +23 -0
  140. package/dist/extract-partition-RYJZIKQZ.js +38 -0
  141. package/dist/{fanout-sidecar-KGQCUJ7P.js → fanout-sidecar-TSFPXY5C.js} +7 -7
  142. package/dist/find-LC7P63MX.js +11 -0
  143. package/dist/forget/index.js +7 -7
  144. package/dist/guards/index.js +4 -4
  145. package/dist/history/index.js +11 -11
  146. package/dist/i18n/index.js +12 -12
  147. package/dist/index.d.ts +8 -4
  148. package/dist/index.js +96 -96
  149. package/dist/indexing/index.js +2 -2
  150. package/dist/introspection/index.js +11 -10
  151. package/dist/issue-IOXM3RSJ.js +19 -0
  152. package/dist/kernel/collection.d.ts +11 -6
  153. package/dist/kernel/errors.d.ts +28 -0
  154. package/dist/kernel/match-pairs.d.ts +30 -0
  155. package/dist/{ledger-ZAFULLAF.js → ledger-HXHIOD36.js} +9 -9
  156. package/dist/liberate-4APIV7FR.js +25 -0
  157. package/dist/{link-set-LQI2IJX6.js → link-set-6RAHEKZN.js} +9 -9
  158. package/dist/{managed-secret-7OH7HKXV.js → managed-secret-P3JQ7ZG4.js} +7 -7
  159. package/dist/materialized-views/index.js +18 -18
  160. package/dist/{migrate-cek-QHZ75E6E.js → migrate-cek-25KNTS5U.js} +2 -2
  161. package/dist/money/index.js +4 -4
  162. package/dist/noydb-JJXPICIC.js +88 -0
  163. package/dist/overlay-views/index.js +4 -4
  164. package/dist/periods/index.js +10 -10
  165. package/dist/pod/index.js +55 -53
  166. package/dist/{pod-handle-BLOI4IFY.js → pod-handle-6II7KFBR.js} +7 -7
  167. package/dist/policy/index.js +7 -7
  168. package/dist/portability/index.js +8 -8
  169. package/dist/{post-register-R33EKJQR.js → post-register-BPJ36A6D.js} +6 -6
  170. package/dist/query/index.js +3 -3
  171. package/dist/reduce/index.js +4 -4
  172. package/dist/{register-AYBQNTM3.js → register-AEOOGKNO.js} +13 -13
  173. package/dist/registry-BZQIVNNO.js +29 -0
  174. package/dist/registry-I6FP4677.js +19 -0
  175. package/dist/registry-SHMGHEK4.js +9 -0
  176. package/dist/registry-SKSOUXNF.js +9 -0
  177. package/dist/{request-withdrawal-7IKUIAEB.js → request-withdrawal-6HJT4ODF.js} +12 -12
  178. package/dist/{reveal-PI6ADRQU.js → reveal-DDQBDWPM.js} +4 -4
  179. package/dist/{revoke-PUJKRYJF.js → revoke-U7U3FMXU.js} +9 -9
  180. package/dist/satellites/index.js +1 -1
  181. package/dist/schema-update/index.js +2 -2
  182. package/dist/sealed-record/index.js +10 -10
  183. package/dist/search/index.js +4 -4
  184. package/dist/{seed-MCCGVPRI.js → seed-3RXT4VGN.js} +10 -10
  185. package/dist/sequence/index.js +7 -7
  186. package/dist/session/index.js +7 -7
  187. package/dist/shadow/index.js +2 -2
  188. package/dist/{signer-5TA7FUC3.js → signer-7NK7TMWU.js} +8 -8
  189. package/dist/snapshots/index.js +8 -8
  190. package/dist/{stale-HZR7745Y.js → stale-KSPG6LFX.js} +8 -8
  191. package/dist/{storage-J2QHNJCB.js → storage-WP4M7IFO.js} +8 -8
  192. package/dist/{store-coordination-provider-MYIHSZXT.js → store-coordination-provider-O2VUEMJH.js} +7 -7
  193. package/dist/sync/index.js +8 -8
  194. package/dist/team/index.js +12 -12
  195. package/dist/tiers/index.js +9 -9
  196. package/dist/to/index.js +1 -1
  197. package/dist/transactions/index.js +3 -3
  198. package/dist/util/index.js +1 -1
  199. package/dist/vault-head/index.js +6 -6
  200. package/dist/{verify-R6CCBUA3.js → verify-JBXCAGDL.js} +5 -5
  201. package/dist/walk-P3E6QSNC.js +22 -0
  202. package/dist/with-formula/derivations/dispatch.d.ts +16 -1
  203. package/dist/with-formula/derivations/registry.d.ts +15 -0
  204. package/dist/with-formula/derivations/trigger-match.d.ts +52 -0
  205. package/dist/with-formula/derivations/types.d.ts +23 -0
  206. package/dist/with-shape/introspection/behaviors.d.ts +7 -0
  207. package/dist/with-shape/introspection/describe.d.ts +40 -0
  208. package/dist/{withdraw-accessible-62VI4W7D.js → withdraw-accessible-6Q7NE4EY.js} +11 -11
  209. package/package.json +3 -3
  210. package/dist/api-GJQF7OAJ.js +0 -20
  211. package/dist/chunk-65ZYRK7O.js.map +0 -1
  212. package/dist/chunk-J6FXVDKC.js +0 -81
  213. package/dist/chunk-J6FXVDKC.js.map +0 -1
  214. package/dist/chunk-KHKKD62N.js.map +0 -1
  215. package/dist/chunk-KKZPQLDH.js.map +0 -1
  216. package/dist/chunk-OQDHIAR2.js.map +0 -1
  217. package/dist/chunk-SW4TOSJL.js.map +0 -1
  218. package/dist/chunk-XJP66QEN.js.map +0 -1
  219. package/dist/dispatch-DR3XITEC.js +0 -194
  220. package/dist/dispatch-DR3XITEC.js.map +0 -1
  221. package/dist/executor-67NA4KPO.js +0 -29
  222. package/dist/executor-7JDP7UBK.js +0 -9
  223. package/dist/executor-CRH5OB4V.js +0 -9
  224. package/dist/export-accessible-K4GJAU7U.js +0 -23
  225. package/dist/extract-partition-YJFL5OKK.js +0 -38
  226. package/dist/find-SVZHMEQI.js +0 -11
  227. package/dist/issue-64N6OG7U.js +0 -19
  228. package/dist/liberate-QAUKHU6W.js +0 -25
  229. package/dist/noydb-ZUS5XAFT.js +0 -86
  230. package/dist/registry-CQWWOBO4.js +0 -9
  231. package/dist/registry-JCZ4BNLV.js +0 -18
  232. package/dist/registry-JFFENZ44.js +0 -9
  233. package/dist/registry-ZA4HACYR.js +0 -19
  234. package/dist/walk-3PA4ZOKS.js +0 -21
  235. /package/dist/{api-GJQF7OAJ.js.map → api-UE2XQKDN.js.map} +0 -0
  236. /package/dist/{backup-QZQEP5RO.js.map → backup-R6A4VZRX.js.map} +0 -0
  237. /package/dist/{chunk-AHIIBDNH.js.map → chunk-2Z47NMFK.js.map} +0 -0
  238. /package/dist/{chunk-2DGBRE4K.js.map → chunk-4OZNXTO4.js.map} +0 -0
  239. /package/dist/{chunk-FZWAGG5T.js.map → chunk-5FUULQ6F.js.map} +0 -0
  240. /package/dist/{chunk-P7KJME6C.js.map → chunk-6YXCPL4T.js.map} +0 -0
  241. /package/dist/{chunk-LAI7ENPW.js.map → chunk-7MG2LHO5.js.map} +0 -0
  242. /package/dist/{chunk-NUXTUGAD.js.map → chunk-7NTBVFGD.js.map} +0 -0
  243. /package/dist/{chunk-MU74BYOD.js.map → chunk-ANSIZYEG.js.map} +0 -0
  244. /package/dist/{chunk-2MQ2D5OZ.js.map → chunk-B2ZSGYSF.js.map} +0 -0
  245. /package/dist/{chunk-5W5CEHLA.js.map → chunk-BBWVXF57.js.map} +0 -0
  246. /package/dist/{chunk-SWFIXQF5.js.map → chunk-BERJ4AWW.js.map} +0 -0
  247. /package/dist/{chunk-Q2OAAREU.js.map → chunk-BMSOTHIA.js.map} +0 -0
  248. /package/dist/{chunk-XGXVPCYW.js.map → chunk-BOWNCWZT.js.map} +0 -0
  249. /package/dist/{chunk-UTFY6W6X.js.map → chunk-BZ3534YM.js.map} +0 -0
  250. /package/dist/{chunk-DOPZWTMJ.js.map → chunk-CIGAQBJR.js.map} +0 -0
  251. /package/dist/{chunk-3GIA3HJ2.js.map → chunk-DGOZ4UZD.js.map} +0 -0
  252. /package/dist/{chunk-7XT7KZTN.js.map → chunk-DJ3LNNZQ.js.map} +0 -0
  253. /package/dist/{chunk-IS5LFHV2.js.map → chunk-DMJZBQ7F.js.map} +0 -0
  254. /package/dist/{chunk-MENI33ZV.js.map → chunk-E3EBMC4G.js.map} +0 -0
  255. /package/dist/{chunk-T66OY2U5.js.map → chunk-E5OHKSBD.js.map} +0 -0
  256. /package/dist/{chunk-LUVGSKXE.js.map → chunk-EVKR67PQ.js.map} +0 -0
  257. /package/dist/{chunk-Q2ZN5DWZ.js.map → chunk-FAHMLERK.js.map} +0 -0
  258. /package/dist/{chunk-FN26SFGH.js.map → chunk-FYEZC4PX.js.map} +0 -0
  259. /package/dist/{chunk-OLUTCM23.js.map → chunk-GHHUF2KL.js.map} +0 -0
  260. /package/dist/{chunk-DNMTN46H.js.map → chunk-GY4WYNNG.js.map} +0 -0
  261. /package/dist/{chunk-IAHDSFFA.js.map → chunk-HN4FNA4X.js.map} +0 -0
  262. /package/dist/{chunk-JRWLUWDM.js.map → chunk-IPFE6MVM.js.map} +0 -0
  263. /package/dist/{chunk-PV7XXAXK.js.map → chunk-JBDFMYKQ.js.map} +0 -0
  264. /package/dist/{chunk-3SWP2FYA.js.map → chunk-JJR2JIN4.js.map} +0 -0
  265. /package/dist/{chunk-IZTU6RKH.js.map → chunk-JMGDHKQF.js.map} +0 -0
  266. /package/dist/{chunk-P2RJAVMR.js.map → chunk-KCUIMITG.js.map} +0 -0
  267. /package/dist/{chunk-MOQ6OGKS.js.map → chunk-KLPASWYY.js.map} +0 -0
  268. /package/dist/{chunk-JILOSL4O.js.map → chunk-KTDGZPOZ.js.map} +0 -0
  269. /package/dist/{chunk-ZB2K3FV7.js.map → chunk-KTFRCC5C.js.map} +0 -0
  270. /package/dist/{chunk-7PC3DRG7.js.map → chunk-LHH6H43C.js.map} +0 -0
  271. /package/dist/{chunk-QOHGWFAW.js.map → chunk-LWBCUYZW.js.map} +0 -0
  272. /package/dist/{chunk-NMDMSHBF.js.map → chunk-MLO75SFJ.js.map} +0 -0
  273. /package/dist/{chunk-H5GVPOB4.js.map → chunk-MMOZQTXV.js.map} +0 -0
  274. /package/dist/{chunk-JFSUYGNE.js.map → chunk-MVMXZYXT.js.map} +0 -0
  275. /package/dist/{chunk-FKQCC4C5.js.map → chunk-NQKIUNW5.js.map} +0 -0
  276. /package/dist/{chunk-IRHIA3AL.js.map → chunk-PFBL4M7E.js.map} +0 -0
  277. /package/dist/{chunk-RCONOOVF.js.map → chunk-PKJ43CMD.js.map} +0 -0
  278. /package/dist/{chunk-UL7TLJ54.js.map → chunk-PQKG5AHH.js.map} +0 -0
  279. /package/dist/{chunk-MTTPHBIE.js.map → chunk-Q2PU57HC.js.map} +0 -0
  280. /package/dist/{chunk-FPN5D4JX.js.map → chunk-Q4RWFV3G.js.map} +0 -0
  281. /package/dist/{chunk-FLRLZ4XZ.js.map → chunk-Q7HZX3IF.js.map} +0 -0
  282. /package/dist/{chunk-5EC7X5QA.js.map → chunk-QHW35ZON.js.map} +0 -0
  283. /package/dist/{chunk-75WNTBZL.js.map → chunk-QIBVIOXO.js.map} +0 -0
  284. /package/dist/{chunk-KQIDBIZL.js.map → chunk-QIZPZMUI.js.map} +0 -0
  285. /package/dist/{chunk-TQGT5BZE.js.map → chunk-RDZZHYMV.js.map} +0 -0
  286. /package/dist/{chunk-HOIWW2LV.js.map → chunk-RGSTMLVO.js.map} +0 -0
  287. /package/dist/{chunk-KZTPL7NL.js.map → chunk-RMF67KCG.js.map} +0 -0
  288. /package/dist/{chunk-OEJ4R52I.js.map → chunk-RMS3NEA3.js.map} +0 -0
  289. /package/dist/{chunk-5NKHCJU5.js.map → chunk-RTYJRFQO.js.map} +0 -0
  290. /package/dist/{chunk-XKA6UH5V.js.map → chunk-SFAWCTEM.js.map} +0 -0
  291. /package/dist/{chunk-FYT3DXPN.js.map → chunk-SKGMN35F.js.map} +0 -0
  292. /package/dist/{chunk-USKHHOIV.js.map → chunk-SL3JAAKN.js.map} +0 -0
  293. /package/dist/{chunk-FRIVOR5N.js.map → chunk-SWVNZQVR.js.map} +0 -0
  294. /package/dist/{chunk-O3SNM66K.js.map → chunk-TFR7DSOV.js.map} +0 -0
  295. /package/dist/{chunk-X6YRP5EC.js.map → chunk-THX6FEEC.js.map} +0 -0
  296. /package/dist/{chunk-RPX2H2OL.js.map → chunk-TO3EQ7HF.js.map} +0 -0
  297. /package/dist/{chunk-DIVY2CJZ.js.map → chunk-TRGTKX5E.js.map} +0 -0
  298. /package/dist/{chunk-JY4U6CYV.js.map → chunk-TUFM4UZP.js.map} +0 -0
  299. /package/dist/{chunk-OKCQNMO6.js.map → chunk-U7VPHXXO.js.map} +0 -0
  300. /package/dist/{chunk-DZPMKY3J.js.map → chunk-UGTBXF5U.js.map} +0 -0
  301. /package/dist/{chunk-VT4DTCK5.js.map → chunk-URHRIAV6.js.map} +0 -0
  302. /package/dist/{chunk-YHIAWECL.js.map → chunk-UXVWEX5L.js.map} +0 -0
  303. /package/dist/{chunk-XJTGBHK6.js.map → chunk-VNR2SNVJ.js.map} +0 -0
  304. /package/dist/{chunk-GHADG5QZ.js.map → chunk-VTFVLCUH.js.map} +0 -0
  305. /package/dist/{chunk-U3RMWOXY.js.map → chunk-VXANTWBJ.js.map} +0 -0
  306. /package/dist/{chunk-QJLOWGOU.js.map → chunk-WQF3QABE.js.map} +0 -0
  307. /package/dist/{chunk-GKOJR53Y.js.map → chunk-WSJG5L5C.js.map} +0 -0
  308. /package/dist/{chunk-I5LSKXT6.js.map → chunk-WWNYSV7S.js.map} +0 -0
  309. /package/dist/{chunk-357ECVLE.js.map → chunk-XGDYGUEH.js.map} +0 -0
  310. /package/dist/{chunk-2E2LT37H.js.map → chunk-XLMEZIAJ.js.map} +0 -0
  311. /package/dist/{chunk-TAJZ7GXO.js.map → chunk-XNIQ7DP2.js.map} +0 -0
  312. /package/dist/{chunk-Z277MC2O.js.map → chunk-Y4MJQ2UG.js.map} +0 -0
  313. /package/dist/{chunk-OXZSMX2H.js.map → chunk-YCXICMOY.js.map} +0 -0
  314. /package/dist/{chunk-MV2OEK3K.js.map → chunk-YQWBEJCS.js.map} +0 -0
  315. /package/dist/{chunk-CWFH36SI.js.map → chunk-YSRUYAVU.js.map} +0 -0
  316. /package/dist/{chunk-ZQGRZN5L.js.map → chunk-YYP7WSEB.js.map} +0 -0
  317. /package/dist/{chunk-HS3LEVT4.js.map → chunk-ZG4XLOKB.js.map} +0 -0
  318. /package/dist/{chunk-4U52PMEL.js.map → chunk-ZN4FD4PE.js.map} +0 -0
  319. /package/dist/{chunk-AW4KTQA4.js.map → chunk-ZORTV6NH.js.map} +0 -0
  320. /package/dist/{chunk-P22XPNFW.js.map → chunk-ZR2YMODS.js.map} +0 -0
  321. /package/dist/{classified-marker-R37XW5PC.js.map → classified-marker-67HBIJMZ.js.map} +0 -0
  322. /package/dist/{collection-facade-OPJ3EC4L.js.map → collection-facade-MGGHQ3HU.js.map} +0 -0
  323. /package/dist/{computed-HW6IG5UH.js.map → computed-LSEZYRJS.js.map} +0 -0
  324. /package/dist/{dead-filter-GRT6RAML.js.map → dead-filter-M3NZUWBZ.js.map} +0 -0
  325. /package/dist/{delegation-6QRAYSK6.js.map → delegation-OLJUWTVA.js.map} +0 -0
  326. /package/dist/{derive-AAIXSQIE.js.map → derive-LY47HG7Q.js.map} +0 -0
  327. /package/dist/{dispatch-QCF7KPIP.js.map → dispatch-44J4TL72.js.map} +0 -0
  328. /package/dist/{enclave-OXZY3NOP.js.map → enclave-4YBQK77G.js.map} +0 -0
  329. /package/dist/{executor-67NA4KPO.js.map → executor-KSPGNVDO.js.map} +0 -0
  330. /package/dist/{executor-7JDP7UBK.js.map → executor-MZJXBWNM.js.map} +0 -0
  331. /package/dist/{executor-CRH5OB4V.js.map → executor-TOLPBHOC.js.map} +0 -0
  332. /package/dist/{export-accessible-K4GJAU7U.js.map → export-accessible-LGV6IAFX.js.map} +0 -0
  333. /package/dist/{extract-partition-YJFL5OKK.js.map → extract-partition-RYJZIKQZ.js.map} +0 -0
  334. /package/dist/{fanout-sidecar-KGQCUJ7P.js.map → fanout-sidecar-TSFPXY5C.js.map} +0 -0
  335. /package/dist/{find-SVZHMEQI.js.map → find-LC7P63MX.js.map} +0 -0
  336. /package/dist/{issue-64N6OG7U.js.map → issue-IOXM3RSJ.js.map} +0 -0
  337. /package/dist/{ledger-ZAFULLAF.js.map → ledger-HXHIOD36.js.map} +0 -0
  338. /package/dist/{liberate-QAUKHU6W.js.map → liberate-4APIV7FR.js.map} +0 -0
  339. /package/dist/{link-set-LQI2IJX6.js.map → link-set-6RAHEKZN.js.map} +0 -0
  340. /package/dist/{managed-secret-7OH7HKXV.js.map → managed-secret-P3JQ7ZG4.js.map} +0 -0
  341. /package/dist/{migrate-cek-QHZ75E6E.js.map → migrate-cek-25KNTS5U.js.map} +0 -0
  342. /package/dist/{noydb-ZUS5XAFT.js.map → noydb-JJXPICIC.js.map} +0 -0
  343. /package/dist/{pod-handle-BLOI4IFY.js.map → pod-handle-6II7KFBR.js.map} +0 -0
  344. /package/dist/{post-register-R33EKJQR.js.map → post-register-BPJ36A6D.js.map} +0 -0
  345. /package/dist/{register-AYBQNTM3.js.map → register-AEOOGKNO.js.map} +0 -0
  346. /package/dist/{registry-CQWWOBO4.js.map → registry-BZQIVNNO.js.map} +0 -0
  347. /package/dist/{registry-JCZ4BNLV.js.map → registry-I6FP4677.js.map} +0 -0
  348. /package/dist/{registry-JFFENZ44.js.map → registry-SHMGHEK4.js.map} +0 -0
  349. /package/dist/{registry-ZA4HACYR.js.map → registry-SKSOUXNF.js.map} +0 -0
  350. /package/dist/{request-withdrawal-7IKUIAEB.js.map → request-withdrawal-6HJT4ODF.js.map} +0 -0
  351. /package/dist/{reveal-PI6ADRQU.js.map → reveal-DDQBDWPM.js.map} +0 -0
  352. /package/dist/{revoke-PUJKRYJF.js.map → revoke-U7U3FMXU.js.map} +0 -0
  353. /package/dist/{seed-MCCGVPRI.js.map → seed-3RXT4VGN.js.map} +0 -0
  354. /package/dist/{signer-5TA7FUC3.js.map → signer-7NK7TMWU.js.map} +0 -0
  355. /package/dist/{stale-HZR7745Y.js.map → stale-KSPG6LFX.js.map} +0 -0
  356. /package/dist/{storage-J2QHNJCB.js.map → storage-WP4M7IFO.js.map} +0 -0
  357. /package/dist/{store-coordination-provider-MYIHSZXT.js.map → store-coordination-provider-O2VUEMJH.js.map} +0 -0
  358. /package/dist/{verify-R6CCBUA3.js.map → verify-JBXCAGDL.js.map} +0 -0
  359. /package/dist/{walk-3PA4ZOKS.js.map → walk-P3E6QSNC.js.map} +0 -0
  360. /package/dist/{withdraw-accessible-62VI4W7D.js.map → withdraw-accessible-6Q7NE4EY.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/with-shape/introspection/field-meta.ts","../src/with-shape/introspection/describe.ts","../src/kernel/via/graph.ts"],"sourcesContent":["/**\n * Consumer-neutral, data-relatable field descriptors — the canonical,\n * validator-agnostic authoring channel. Merged by `collection.describe()`.\n *\n * Descriptive, never prescriptive: label/semanticType/unit/sensitivity/\n * aggregate/aliases/displayFor only. Layout, styling, and active-locale\n * selection stay app-side.\n *\n * @module\n */\n\n/** Known semantic types; the union is open — unknown strings pass through. */\nexport type SemanticType =\n | 'date' | 'datetime' | 'email' | 'url' | 'currency' | 'percent'\n | 'country' | 'vat' | 'iban' | 'entity'\n | (string & {})\n\nexport interface FieldMeta {\n /** Human label for any displayable field. Required. */\n label: string\n description?: string\n semanticType?: SemanticType\n /** Display unit, e.g. '€', '%', 'kg'. */\n unit?: string\n /** Data classification driving redaction/inspector masking. */\n sensitivity?: 'public' | 'pii' | 'secret'\n /** Default aggregation for this field. */\n aggregate?: 'sum' | 'count' | 'distinct' | 'none'\n /** Canonical search synonyms (data vocabulary, not UI). */\n aliases?: readonly string[]\n /** Entity pairing: the field holding the human label for this id (buyerId → buyerName). */\n displayFor?: string\n /**\n * Override the widget hint derived from semanticType/type.\n * e.g. 'textarea', 'date', 'money', 'select', 'checkbox', 'number', 'text'.\n * When absent, the widget is derived automatically by buildDescription.\n */\n widget?: string\n /**\n * Card/section grouping hint for detail & form layouts (e.g. 'Identity',\n * 'Amounts'). Purely descriptive metadata — consumers group; describe()\n * keeps emitting fields alphabetically.\n */\n group?: string\n /** Relative ordering hint within (and across) groups. Lower renders first. */\n order?: number\n}\n\nexport class FieldMetaUnknownFieldError extends Error {\n constructor(public readonly collection: string, public readonly key: string) {\n super(`fieldMeta for collection \"${collection}\" references unknown field \"${key}\". `\n + `Declare it in the schema/config or remove the fieldMeta entry.`)\n this.name = 'FieldMetaUnknownFieldError'\n }\n}\n\n/** Reject fieldMeta keys that are not known fields (typo guard), fail-loud. */\nexport function validateFieldMetaKeys(\n collection: string,\n fieldMeta: Record<string, FieldMeta>,\n knownFields: ReadonlySet<string>,\n): void {\n for (const key of Object.keys(fieldMeta)) {\n if (!knownFields.has(key)) throw new FieldMetaUnknownFieldError(collection, key)\n }\n}\n\nexport interface MergeInputs {\n channel?: FieldMeta\n zodMeta?: Partial<FieldMeta>\n inferred?: Partial<FieldMeta>\n}\nexport interface ResolvedMeta extends Partial<FieldMeta> { label: string }\n\n/** camelCase / snake_case → Title Case words. */\nexport function humanizeFieldKey(key: string): string {\n return key\n .replace(/[_-]+/g, ' ')\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .trim()\n .split(/\\s+/)\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(' ')\n}\n\n/** Merge one field's metadata: channel > zodMeta > inferred; label always present. */\nexport function resolveFieldMeta(key: string, inputs: MergeInputs): ResolvedMeta {\n const { channel, zodMeta, inferred } = inputs\n const pick = <K extends keyof FieldMeta>(k: K): FieldMeta[K] | undefined =>\n channel?.[k] ?? zodMeta?.[k] ?? inferred?.[k]\n const description = pick('description')\n const semanticType = pick('semanticType')\n const unit = pick('unit')\n const sensitivity = pick('sensitivity')\n const aggregate = pick('aggregate')\n const aliases = pick('aliases')\n const displayFor = pick('displayFor')\n const widget = pick('widget')\n const group = pick('group')\n const order = pick('order')\n return {\n label: pick('label') ?? humanizeFieldKey(key),\n ...(description !== undefined ? { description } : {}),\n ...(semanticType !== undefined ? { semanticType } : {}),\n ...(unit !== undefined ? { unit } : {}),\n ...(sensitivity !== undefined ? { sensitivity } : {}),\n ...(aggregate !== undefined ? { aggregate } : {}),\n ...(aliases !== undefined ? { aliases } : {}),\n ...(displayFor !== undefined ? { displayFor } : {}),\n ...(widget !== undefined ? { widget } : {}),\n ...(group !== undefined ? { group } : {}),\n ...(order !== undefined ? { order } : {}),\n }\n}\n","/**\n * `buildDescription` — pure assembler that merges collection config\n * (moneyFields / dictKeyFields / refs / computed / fieldMeta) with an\n * optional validator-derived `zodFields` map into a normalised\n * {@link CollectionDescription}.\n *\n * The sync path (`collection.describe()`) passes `zodFields: undefined`.\n * The async path supplies a populated map and validator-derived type\n * strings.\n *\n * @module\n */\n\nimport type { FieldMeta } from './field-meta.js'\nimport { resolveFieldMeta, validateFieldMetaKeys, FieldMetaUnknownFieldError, humanizeFieldKey } from './field-meta.js'\nimport type { CollectionMeta } from './meta.js'\nimport type { MoneyDescriptor } from '../../via/money/descriptor.js'\nimport type { ViaDescriptor, ViaPosture } from '../../kernel/via/index.js'\nimport type { DictKeyDescriptor, StaticDictDescriptor } from '../../via/i18n/dictionary.js'\nimport { isStaticDictDescriptor } from '../../via/i18n/dictionary.js'\n// #650 Task 2 — native lookup()/enumOf()/dict() fields (separate from\n// dictKeyFields above, which stays the dictKey()/staticDict() alias's own\n// input). Emits the SAME `dict` block shape for byte-parity (the tiers this\n// covers — 'static' with a table, 'reserved' — are the alias-equivalent\n// ones; a first-class 'collection' backing degrades to the \"no resolved\n// labels\" fallback, same as an unresolved dynamic dictKey).\nimport type { LookupDescriptor } from '../../via/lookup/descriptor.js'\n// #650 Task 7 — the 'lookup' binding's describeFragment payload shape (the\n// first-ever NoydbVia.describeFragment consumer, via/index.ts:136). describe.ts\n// is NOT under kernel/**, so importing this via/ type directly is fine\n// (Check 14 via-layering only restricts the kernel spine).\nimport type { LookupDescribeFragment, LookupDescribeFragmentEntry } from '../../via/lookup/binding.js'\n// #657 — the 'blob' binding's describeFragment payload shape (the second-ever\n// NoydbVia.describeFragment consumer, after lookup above). Same rationale:\n// describe.ts is not under kernel/**, so importing this via/ type is fine.\nimport type { BlobDescribeFragment, BlobDescribeFragmentEntry } from '../../via/blob/binding.js'\nimport type { I18nTextDescriptor } from '../../via/i18n/core.js'\nimport type { ComputedFields } from '../../with-formula/computed/index.js'\nimport type { RefDescriptor } from '../../kernel/refs.js'\nimport type { ClassifiedFieldSpec } from '../../via/classified/descriptor.js'\nimport { derivePersistedSchema, isZod4Schema } from '../persisted-schemas/derive.js'\nimport { loadPersistedSchema } from '../persisted-schemas/storage.js'\nimport { jsonSchemaToFields } from './fields.js'\nimport type { NoydbStore } from '../../kernel/types.js'\nimport type { EnclaveKey } from '../../kernel/enclave/index.js'\n\n// ─── Public types ──────────────────────────────────────────────────────────\n\nexport interface DescribedField {\n readonly key: string\n /**\n * Stable, opaque per-field identity (#946) — survives a rename (the field\n * keeps its id when its name/`key` changes). Sourced from the persisted\n * schema's `PersistedSchemaEnvelope.fieldIds` map, so it is only present on\n * the async `describeAsync()` path for a collection that has persisted a\n * schema (`persistJsonSchema: true`) at least once; absent on the sync\n * `describe()` path (no store I/O) and on any field with no persisted id\n * yet.\n */\n readonly id?: string\n /** Sync: inferred from config ('number'|'enum'|'string'|'array'|'unknown'). Async (Task 4): validator-derived. */\n readonly type: string\n readonly optional: boolean\n readonly constraints?: Record<string, unknown>\n readonly label: string\n readonly description?: string\n /** Card/section grouping hint for detail & form layouts. From fieldMeta/zod .meta(). */\n readonly group?: string\n /** Relative ordering hint within and across groups. Lower renders first. */\n readonly order?: number\n readonly semanticType?: string\n readonly unit?: string\n readonly sensitivity?: 'public' | 'pii' | 'secret'\n readonly aggregate?: 'sum' | 'count' | 'distinct' | 'none'\n readonly aliases?: readonly string[]\n readonly ref?: { target: string; mode: string; isArray?: true }\n readonly displayFor?: string\n readonly money?: { mode: 'fixed' | 'multi'; currency?: string; scale?: number; rounding?: string }\n readonly dict?: { name: string; static: boolean; values?: readonly { value: string; label?: string }[] }\n /**\n * Normalized lookup metadata (#650 Task 7 — the first-ever\n * `NoydbVia.describeFragment` consumer; sourced from the `'lookup'`\n * binding's fragment, NOT from config directly — see `buildDescription`).\n * Present for every `lookup()`/`enumOf()`/`dict()` field, ALONGSIDE the\n * pre-existing `dict` block above (kept byte-stable for the\n * `dictKey()`/`staticDict()` alias — this is additive, not a replacement).\n * `dimension` is omitted for a bare `enumOf()` (no backing store, no\n * dimension name — the #650 Task 2 `dimension:''` sentinel resolved).\n * `keys` is the statically-known closed-vocabulary key set (declared\n * `keys`, or a static table's own keys) — omitted when membership lives\n * only in the backing collection/dictionary.\n */\n readonly lookup?: {\n readonly dimension?: string\n readonly backing: 'static' | 'reserved' | 'collection'\n readonly vocabulary: 'open' | 'closed'\n readonly key: string\n readonly altKeys?: readonly string[]\n readonly present?: { readonly label: string; readonly by?: string }\n readonly sortBy?: string\n readonly onDelete: 'restrict' | 'cascade' | 'nullify'\n readonly keys?: readonly string[]\n }\n readonly computed?: true\n /** i18n metadata for fields declared with i18nText(). Present only when the field is i18n-enabled. */\n readonly i18n?: { readonly locales?: readonly string[]; readonly densify?: boolean }\n /** Widget hint derived from semanticType+type, overridable via fieldMeta.widget. */\n readonly widget: string\n /** Whether the field is user-editable. False for computed, id, and provenance-stamped fields. */\n readonly editable: boolean\n /** Present when the field is classified. Serialized read-projection contract. */\n readonly classified?: {\n readonly preset: string\n readonly storage: 'recoverable' | 'never' | 'digest-only'\n readonly list: 'omit' | { readonly mask: string } | { readonly rider: string }\n /**\n * Present (and `true`) only when the field opted into the equatable blind\n * index. Additive metadata — emitted UNGATED (no `withClassified()` needed;\n * `toJSONSchema()` carries it too), so it advertises *that* the field is\n * equatable beyond the DEK-consent boundary. Intended: it's a structural\n * property a schema consumer legitimately needs and discloses no value. A\n * deployment wanting it gated can gate this behind its value-bearing door.\n */\n readonly equatable?: true\n }\n /**\n * Present only for a field declared via `blobFields` (#657) — out-of-band\n * attachment storage (`collection.blob(id)`), never a sealed or plaintext\n * record field. `queryable` mirrors the binding's fixed `ViaPosture`\n * (blob content is never indexed — always `'none'`); the rest mirrors the\n * declared `blobFields[field]` policy verbatim (scalars) or as a presence\n * flag (predicate knobs — a predicate has no serializable form). Sourced\n * from the `'blob'` binding's `describeFragment()`, the same\n * `viaFragments` door the `lookup` block above is sourced from.\n */\n readonly blob?: {\n readonly retainDays?: number\n readonly evictWhen?: true\n readonly legalHold?: true\n readonly retainUntil?: true\n readonly external?: true\n readonly public?: true\n readonly backlink?: string\n readonly queryable: 'none'\n }\n /**\n * Present only for a graph-tainted derived field (#638 Task 3 — computed/\n * derivation output whose effective posture was forced away from the\n * plain baseline by a source's posture, e.g. a computed field reading a\n * classified field). `forcedBy` names the immediate declared source\n * field(s) responsible.\n */\n readonly taint?: {\n readonly posture: ViaPosture\n readonly forcedBy: readonly string[]\n }\n}\n\nexport interface CollectionDescription {\n readonly collection: string\n readonly fields: readonly DescribedField[]\n /** Collection-level descriptive metadata; label falls back to the humanized collection name. */\n readonly meta: CollectionMeta\n}\n\n/** Options for the async describe(opts) overload. */\nexport interface DescribeOptions {\n /**\n * When true, resolve dynamic-dict labels from vault.dictionary(name).list()\n * and populate dict.values[].label for dynamic dictKey fields.\n */\n readonly resolveDictLabels?: boolean\n}\n\n// ─── ZodField slot (async path wires this; sync path passes undefined) ───\n\nexport interface ZodFieldSlot {\n readonly type?: string\n readonly optional?: boolean\n readonly constraints?: Record<string, unknown>\n readonly meta?: Partial<FieldMeta>\n}\n\n// ─── RECOGNIZED zod-4 .meta() keys ────────────────────────────────────────\n//\n// Empirically verified 2026-06-25 via:\n// node -e \"const {z,toJSONSchema}=require('zod'); console.log(JSON.stringify(toJSONSchema(z.object({n:z.number().meta({label:'L',unit:'kg',sensitivity:'public',semanticType:'percent',description:'d',aggregate:'sum',aliases:['a'],displayFor:'x'})}))), null, 2)\"\n// Result: .meta() keys are emitted INLINE on each JSON Schema property object\n// at the same level as `type`/`format` — NOT nested under a `metadata` key.\n// Example: z.number().meta({ unit: 'kg' }) → { \"type\": \"number\", \"unit\": \"kg\" }\n// Unknown .meta() keys (not in this set) are ignored.\nconst ZOD_META_KEYS = new Set<string>([\n 'label', 'description', 'unit', 'semanticType', 'sensitivity', 'aggregate', 'aliases', 'displayFor',\n 'group', 'order',\n])\n\n// ─── deriveZodFields ──────────────────────────────────────────────────────\n\n/**\n * Derive per-field slots from a Standard Schema validator.\n * - Calls `derivePersistedSchema` to get the JSON Schema.\n * - Falls back to `{}` for non-Zod or unknown validators.\n * - For zod-4 schemas: reads recognized `.meta()` keys from inline property annotations.\n * - Returns: `Record<fieldKey, { type, optional, constraints?, meta? }>`.\n *\n * No static zod import — all zod access is lazy via derivePersistedSchema.\n */\n/**\n * Field KEYS from a configured validator, synchronously — the complement to\n * {@link deriveZodFields}, which derives field TYPES and must be async.\n *\n * The distinction is the whole point (#1253). `describe()`'s sync path passed\n * `zodFields: undefined`, so `fieldMeta` key-validation could never run there\n * and a typo'd key became a PHANTOM FIELD carrying its declared `sensitivity`\n * while the real field went undescribed — an inventory wrong in both\n * directions, silently, on the surface `sensitivity` exists to serve.\n *\n * That was read as unavoidable (\"the sync path cannot know the schema's\n * fields\"), which is true of types and false of keys: a Zod object exposes\n * `.shape` directly, on both v3 and v4, with no JSON-Schema derivation and no\n * `zod-to-json-schema` peer. The latter matters — on Zod 3 that peer is\n * required for the async path, so the sync path is the only one some\n * consumers can reach.\n *\n * A duck-typed probe, not a Zod dependency: an unrecognised validator returns\n * `undefined` and the caller stays silent rather than guessing, so a validator\n * hub cannot read never produces a false \"unknown field\" error.\n *\n * ZodEffects (reported by the pilot on #1249's guard, and it equally affected\n * #1253's): on Zod 3 an OBJECT-LEVEL `.refine()` wraps the object in a\n * ZodEffects whose `.shape` is undefined — the object sits at `_def.schema` —\n * so \"has a schema\" and \"hub can enumerate its fields\" silently diverged for\n * exactly the schemas most worth guarding (validated ones). Unwrapped here,\n * but ONLY through refinement effects: a `.transform()`/`.preprocess()`\n * changes the OUTPUT shape, so its inner keys would be a lie — those stay\n * `undefined` (silent), deliberately. Zod 4 keeps `.shape` through `.refine()`\n * and never enters the loop. Bounded depth, so a cyclic duck cannot hang us.\n */\nexport function schemaFieldKeys(schema: unknown): readonly string[] | undefined {\n let s: unknown = schema\n for (let depth = 0; depth < 10; depth++) {\n if (s === null || typeof s !== 'object') return undefined\n const shape: unknown = (s as { shape?: unknown }).shape\n if (shape !== null && typeof shape === 'object') {\n const keys = Object.keys(shape as Record<string, unknown>)\n return keys.length > 0 ? keys : undefined\n }\n // Zod 3 ZodEffects: follow `_def.schema` for refinements only.\n const def = (s as { _def?: { effect?: { type?: unknown }; schema?: unknown } })._def\n if (def?.schema !== undefined && def.effect?.type === 'refinement') {\n s = def.schema\n continue\n }\n return undefined\n }\n return undefined\n}\n\nexport async function deriveZodFields(\n schema: unknown,\n): Promise<Record<string, ZodFieldSlot>> {\n const envelope = await derivePersistedSchema(schema)\n if (!envelope.jsonSchema) return {}\n\n const isZod4 = isZod4Schema(schema)\n const jsonSchema = envelope.jsonSchema as Record<string, unknown>\n\n // Use the existing JSON-Schema→field mapper for type/optional/constraints.\n const fieldDescriptors = jsonSchemaToFields(jsonSchema, 'live-validator')\n\n // For zod-4: the JSON Schema properties contain inline .meta() annotations.\n // We need to walk the raw properties to extract recognized meta keys.\n const propertiesRaw = jsonSchema['properties'] as Record<string, Record<string, unknown>> | undefined\n\n const result: Record<string, ZodFieldSlot> = {}\n\n for (const [key, descriptor] of Object.entries(fieldDescriptors)) {\n let meta: Partial<FieldMeta> | undefined\n\n if (isZod4 && propertiesRaw) {\n const prop = propertiesRaw[key]\n if (prop) {\n const extracted: Partial<FieldMeta> = {}\n let hasAny = false\n for (const mk of ZOD_META_KEYS) {\n if (mk in prop) {\n (extracted as Record<string, unknown>)[mk] = prop[mk]\n hasAny = true\n }\n }\n if (hasAny) meta = extracted\n }\n }\n\n result[key] = {\n type: descriptor.type,\n optional: descriptor.optional === true,\n ...(descriptor.constraints !== undefined ? { constraints: descriptor.constraints } : {}),\n ...(meta !== undefined ? { meta } : {}),\n }\n }\n\n return result\n}\n\n// ─── resolveDescribeFieldIds (#946) ───────────────────────────────────────\n\n/**\n * Resolve the persisted-schema `fieldIds` map for `describeAsync()`'s\n * `BuildDescriptionInput` (#946). Returns a spreadable partial so the call\n * site can inline it with `...(await resolveDescribeFieldIds(...))` without\n * an intermediate local — `collection.ts`'s `describe()` bodies are under a\n * near-zero line-ceiling headroom.\n *\n * Silent-degrades to `{}` (no ids — every `DescribedField.id` stays\n * `undefined`, never a describe() crash) on any failure: `getDEK` throwing,\n * no persisted envelope yet, or an envelope with no `fieldIds` (legacy /\n * never-persisted). Mirrors the leak/degrade posture of\n * `satellites/dead-filter.ts`'s `liveBaseIdSetsForBundle`, but degrading to\n * \"no ids\" is lossless here (unlike that filter's data-exposure tradeoff) —\n * describe() simply omits `id` for every field.\n */\nexport async function resolveDescribeFieldIds(\n store: NoydbStore,\n vaultName: string,\n collectionName: string,\n getDEK: (collectionName: string) => Promise<EnclaveKey>,\n): Promise<{ fieldIds?: Record<string, string> }> {\n let dek: EnclaveKey\n try {\n dek = await getDEK(collectionName)\n } catch {\n return {}\n }\n const persisted = await loadPersistedSchema(store, vaultName, collectionName, dek)\n return persisted?.fieldIds !== undefined ? { fieldIds: persisted.fieldIds } : {}\n}\n\n// ─── buildDescription ─────────────────────────────────────────────────────\n\nexport interface BuildDescriptionInput {\n readonly collection: string\n readonly fieldMeta: Record<string, FieldMeta> | undefined\n /**\n * Kernel-visible collections only carry the opaque {@link ViaDescriptor}\n * marker (the kernel never inspects a Via feature's concrete descriptor\n * shape). Every entry here is actually a {@link MoneyDescriptor} — only\n * `money()` constructs them — narrowed locally below where its\n * mode/currency/scale are read for the describe() output.\n */\n readonly moneyFields: Record<string, ViaDescriptor> | undefined\n readonly dictKeyFields: Record<string, DictKeyDescriptor | StaticDictDescriptor> | undefined\n /** Native lookup()/enumOf()/dict() fields (#650 Task 2) — declared only via `viaFields`/`via()`, no sugar key. */\n readonly lookupFields?: Record<string, LookupDescriptor> | undefined\n readonly computed: ComputedFields | undefined\n readonly refs: Record<string, RefDescriptor>\n /** Async path fills this; sync path passes `undefined`. */\n readonly zodFields: Record<string, ZodFieldSlot> | undefined\n /**\n * The collection's configured validator, if any. The sync path passes it so\n * `fieldMeta` keys can still be validated (#1253): field KEYS are readable\n * synchronously via {@link schemaFieldKeys} even though field TYPES are not.\n * `undefined` means no validator is configured, which is itself informative\n * — the config keys are then the complete field set.\n */\n readonly schema?: unknown\n /**\n * Async path: when `resolveDictLabels` was true, this map holds\n * `{ dictName -> { value -> label } }` for dynamic dictKey fields.\n * Used to populate `dict.values[].label`.\n */\n readonly dictLabels?: Record<string, Record<string, string>> | undefined\n /** Collection-level descriptive metadata. Label falls back to humanized collection name. */\n readonly meta?: CollectionMeta | undefined\n /**\n * Map of field name → I18nTextDescriptor for fields declared with i18nText().\n * When present, describe() surfaces an `i18n` block on matching DescribedField entries.\n */\n readonly i18nFields?: Record<string, I18nTextDescriptor> | undefined\n /** Per-field classified specs (already resolved/flattened). */\n readonly classified?: Record<string, ClassifiedFieldSpec> | undefined\n /** Graph-computed taint overlay (#638 Task 3) — `Collection.via?.taint`. */\n readonly taint?: { readonly postures: ReadonlyMap<string, ViaPosture>; readonly provenance?: ReadonlyMap<string, readonly string[]> } | undefined\n /**\n * Per-binding `describeFragment()` output, keyed by binding brand (#650\n * Task 7 — first-ever consumer of `NoydbVia.describeFragment`,\n * `via/index.ts:136`). `Collection.describe()`/`describeAsync()` build this\n * from `this.via?.describeFragments()`. The `'lookup'` brand's fragment\n * feeds the `lookup` block below; `'blob'`'s feeds the `blob` block\n * (#657, the second consumer). Other brands' fragments ride along unread\n * until they gain a consumer too.\n */\n readonly viaFragments?: Record<string, Record<string, unknown>> | undefined\n /**\n * Persisted-schema `fieldName -> id` map (#946), resolved by the async\n * describe path via {@link resolveDescribeFieldIds}. The sync path passes\n * no `fieldIds` (no store I/O), so every field's `id` is `undefined` there.\n */\n readonly fieldIds?: Record<string, string> | undefined\n}\n\n// Re-export so that callers that want to catch the error don't need another import path.\nexport { FieldMetaUnknownFieldError }\n\n// ─── Widget derivation ────────────────────────────────────────────────────────\n\n/**\n * Derive a widget hint from resolved field metadata.\n * Priority: explicit override (resolvedWidget) > semanticType > dict > type > 'text'.\n */\nfunction deriveWidget(opts: {\n semanticType?: string\n type: string\n dict?: unknown\n /** #650 Task 7 — same 'select' outcome as `dict` (today always co-present for a lookup field via the existing `dict` block; kept as its own check so a future lookup-only field, with no `dict` block, still derives 'select'). */\n lookup?: unknown\n /** #657 — a blobFields-declared field derives the 'file' widget, never the 'text' default (binary content, not a text input). */\n blob?: unknown\n resolvedWidget?: string\n}): string {\n if (opts.resolvedWidget !== undefined) return opts.resolvedWidget\n switch (opts.semanticType) {\n case 'date':\n case 'datetime':\n return 'date'\n case 'currency':\n return 'money'\n case 'entity':\n return 'ref-select'\n case 'url':\n return 'url'\n case 'email':\n return 'email'\n case 'percent':\n return 'number'\n }\n if (opts.dict !== undefined || opts.lookup !== undefined) return 'select'\n if (opts.blob !== undefined) return 'file'\n if (opts.type === 'boolean') return 'checkbox'\n if (opts.type === 'number') return 'number'\n return 'text'\n}\n\n/**\n * Pure assembler: no I/O, no side effects.\n * Builds a {@link CollectionDescription} from the collection's in-memory config.\n *\n * When `zodFields` is supplied (async path), validates that every `fieldMeta` key\n * refers to a known field (config ∪ zodFields). Throws `FieldMetaUnknownFieldError`\n * on the first unknown key — this is the real validation that the vault.ts no-op\n * couldn't do (schema fields weren't knowable synchronously).\n */\nexport function buildDescription(input: BuildDescriptionInput): CollectionDescription {\n const { collection, fieldMeta, moneyFields, dictKeyFields, lookupFields, computed, refs, zodFields, schema, dictLabels, meta, i18nFields, classified, taint, fieldIds } = input\n\n // #650 Task 7 — the 'lookup' binding's describeFragment, keyed per field.\n // Deliberately routed through `viaFragments` rather than reused directly\n // from `lookupFields` above (which only feeds the pre-existing `dict`\n // block, byte-stable for the alias) — this IS the first-ever\n // `describeFragment` consumption the task wires up.\n const lookupFragments = (input.viaFragments?.['lookup'] as LookupDescribeFragment | undefined)?.lookupFields\n\n // #657 — the 'blob' binding's describeFragment, keyed per field (same\n // routing pattern as lookupFragments above). A blobFields-declared field\n // has no other config-map source (unlike money/dict/lookup/i18n/classified,\n // each of which is fed a dedicated map below) — `blobFragments` is BOTH\n // this field's block source AND (via its keys) how it joins `allKeys` at\n // all, since otherwise a blobFields-only field with no fieldMeta entry is\n // invisible in describe() (#657 finding 1).\n const blobFragments = (input.viaFragments?.['blob'] as BlobDescribeFragment | undefined)?.blobFields\n\n // Validate fieldMeta keys against the real known-field set = config keys ∪ the\n // validator's fields. Sound whenever that set can be enumerated COMPLETELY:\n //\n // async path zodFields is non-empty — derived types carry the keys\n // sync path `.shape` was readable — no derivation, no peer dep (#1253)\n //\n // Silent in EVERY other case, and the third one is the instructive one. It is\n // tempting to reason \"no validator configured, therefore the config keys are the\n // whole field set\" — that is FALSE. A collection may be typed by a TypeScript\n // generic alone (`v.collection<Sale>('sales', { moneyFields: … })`), whose fields\n // are real, are present in the data, and are legitimately named by `fieldMeta`,\n // yet appear in NO runtime config. Guarding there rejects correct code.\n //\n // So these are deliberate false NEGATIVES on both counts: an unreadable validator\n // and an absent one. A rule that over-fires teaches people to stop declaring\n // fieldMeta at all, which costs more than the typos it would catch.\n //\n // Before #1253 this ran on the async path alone, so a typo'd key on the sync path\n // became a phantom field carrying its `sensitivity` while the real field went\n // undescribed — see schemaFieldKeys() for why that was thought unavoidable.\n const validatorKeys = zodFields !== undefined && Object.keys(zodFields).length > 0\n ? Object.keys(zodFields)\n : schemaFieldKeys(schema)\n const canEnumerateFields = validatorKeys !== undefined\n if (canEnumerateFields && fieldMeta !== undefined) {\n const knownFields = new Set<string>([\n ...Object.keys(moneyFields ?? {}),\n ...Object.keys(dictKeyFields ?? {}),\n ...Object.keys(refs),\n ...Object.keys(computed ?? {}),\n ...(validatorKeys ?? []),\n ...Object.keys(i18nFields ?? {}),\n ...Object.keys(lookupFields ?? {}),\n ...Object.keys(blobFragments ?? {}),\n ...Object.keys(classified ?? {}),\n ])\n validateFieldMetaKeys(collection, fieldMeta, knownFields)\n }\n\n // Union of all config key sources — stable alphabetical order.\n const allKeys = new Set<string>([\n ...Object.keys(moneyFields ?? {}),\n ...Object.keys(dictKeyFields ?? {}),\n ...Object.keys(lookupFields ?? {}),\n ...Object.keys(refs),\n ...Object.keys(computed ?? {}),\n ...Object.keys(fieldMeta ?? {}),\n ...Object.keys(zodFields ?? {}),\n ...Object.keys(i18nFields ?? {}),\n ...Object.keys(classified ?? {}),\n ...Object.keys(blobFragments ?? {}),\n ])\n\n const fields: DescribedField[] = []\n\n for (const key of [...allKeys].sort()) {\n const zod = zodFields?.[key]\n // Narrow the opaque marker back to the concrete descriptor — see the\n // {@link BuildDescriptionInput.moneyFields} doc comment.\n const money = moneyFields?.[key] as MoneyDescriptor | undefined\n const dict = dictKeyFields?.[key]\n const lookupDesc = lookupFields?.[key]\n const refDesc = refs[key]\n const isComputed = computed !== undefined && key in computed\n const i18nDesc = i18nFields?.[key]\n const cls = classified?.[key]\n const blobFragmentEntry: BlobDescribeFragmentEntry | undefined = blobFragments?.[key]\n const taintPosture = taint?.postures.get(key)\n\n // ── Infer type + structural extras ────────────────────────────────────\n let type = zod?.type ?? 'unknown'\n const inferred: Partial<FieldMeta> = {}\n\n let moneyBlock: DescribedField['money'] | undefined\n let dictBlock: DescribedField['dict'] | undefined\n let refBlock: DescribedField['ref'] | undefined\n let lookupBlock: DescribedField['lookup'] | undefined\n let blobBlock: DescribedField['blob'] | undefined\n\n if (money) {\n type = 'number'\n inferred.semanticType = 'currency'\n inferred.aggregate = 'sum'\n const currency = money.soleCurrency()\n const scale = currency !== undefined ? money.scaleFor(currency) : undefined\n moneyBlock = {\n mode: money.mode,\n ...(currency !== undefined ? { currency } : {}),\n ...(scale !== undefined ? { scale } : {}),\n ...(money.rounding !== undefined ? { rounding: money.rounding } : {}),\n }\n } else if (refDesc) {\n type = refDesc.isArray ? 'array' : 'string'\n inferred.semanticType = 'entity'\n refBlock = {\n target: refDesc.target,\n mode: refDesc.mode,\n ...(refDesc.isArray ? { isArray: true as const } : {}),\n }\n } else if (dict) {\n type = 'enum'\n if (isStaticDictDescriptor(dict)) {\n // Static dict: labels available synchronously from the in-code table.\n const displayLocale = dict.displayLocale\n const values = dict.keys.map((k) => {\n const localeMap = dict.table[k]\n const label = displayLocale !== undefined\n ? (localeMap?.[displayLocale] ?? undefined)\n : undefined\n return label !== undefined\n ? { value: k, label }\n : { value: k }\n })\n dictBlock = { name: dict.name, static: true, values }\n } else {\n // Dynamic dictKey: keys declared in config; labels optionally resolved\n // from vault.dictionary(name).list() when resolveDictLabels was requested.\n const labelMap = dictLabels?.[dict.name]\n const labelMapHasEntries = labelMap !== undefined && Object.keys(labelMap).length > 0\n if (labelMapHasEntries) {\n // We have resolved labels — build values from the label map.\n const values = Object.entries(labelMap).map(([value, label]) => ({ value, label }))\n dictBlock = { name: dict.name, static: false, values }\n } else if (dict.keys !== undefined) {\n const values = dict.keys.map((k) => {\n const label = dict.labels?.[k]\n return label !== undefined ? { value: k, label } : { value: k }\n })\n dictBlock = { name: dict.name, static: false, values }\n } else {\n dictBlock = { name: dict.name, static: false }\n }\n }\n } else if (lookupDesc) {\n // Native lookup()/enumOf()/dict() field (#650 Task 2) — the SAME `dict`\n // block shape as above, for byte-parity with the dictKey()/staticDict()\n // alias. A table-bearing descriptor ('static' backing, the lookup(static)\n // form staticDict() compiles onto) resolves synchronously like a static\n // dict; a reserved-tier dict() resolves via `dictLabels` exactly like a\n // dynamic dictKey (review fix — was previously falling to the\n // declared-keys-only fallback below, breaking async describe parity);\n // everything else (collection/bare enum) falls to that fallback.\n type = 'enum'\n const lookupLabelMap = dictLabels?.[lookupDesc.dimension]\n const lookupLabelMapHasEntries = lookupLabelMap !== undefined && Object.keys(lookupLabelMap).length > 0\n if (lookupDesc.table !== undefined) {\n const displayLocale = lookupDesc.displayLocale\n const table = lookupDesc.table\n const values = (lookupDesc.keys ?? Object.keys(table)).map((k) => {\n const localeMap = table[k]\n const label = displayLocale !== undefined\n ? (localeMap?.[displayLocale] ?? undefined)\n : undefined\n return label !== undefined ? { value: k, label } : { value: k }\n })\n dictBlock = { name: lookupDesc.dimension, static: true, values }\n } else if (lookupLabelMapHasEntries) {\n const values = Object.entries(lookupLabelMap).map(([value, label]) => ({ value, label }))\n dictBlock = { name: lookupDesc.dimension, static: false, values }\n } else if (lookupDesc.keys !== undefined) {\n const values = lookupDesc.keys.map((k) => {\n const label = lookupDesc.labels?.[k]\n return label !== undefined ? { value: k, label } : { value: k }\n })\n dictBlock = { name: lookupDesc.dimension, static: false, values }\n } else {\n dictBlock = { name: lookupDesc.dimension, static: false }\n }\n } else if (i18nDesc) {\n // i18nText field: the stored value is a locale-map object, but the resolved\n // type exposed to consumers is 'string' (locale resolution collapses to a string).\n type = 'string'\n } else if (isComputed) {\n // type already initialized to zod?.type ?? 'unknown' above; no re-set needed\n } else if (blobFragmentEntry !== undefined) {\n // #657 finding 1 — a blobFields-only field (no schema/money/dict/\n // lookup/i18n config) was previously invisible; with a fieldMeta\n // entry it fell through to the 'unknown'/'text'/editable:true default,\n // actively wrong for binary content. `type` is a plain `string` on\n // DescribedField (not a closed union), so 'blob' is not a breaking\n // union extension.\n type = 'blob'\n blobBlock = { ...blobFragmentEntry, queryable: 'none' }\n }\n\n // ── lookup block (#650 Task 7 — first-ever NoydbVia.describeFragment\n // consumer) ── Sourced from `lookupFragments` (the binding's fragment),\n // NOT from `lookupDesc` above (which only feeds the pre-existing `dict`\n // block, byte-stable for the alias) — routing through the fragment is\n // the point: `backing`/`vocabulary`/`key`/`onDelete` have no other\n // source in this function, so their presence here is itself proof the\n // describeFragment seam (declared via/index.ts:136, zero consumers before\n // this task) carries data end to end from binding to describe() output.\n const lookupFragmentEntry: LookupDescribeFragmentEntry | undefined = lookupFragments?.[key]\n if (lookupFragmentEntry !== undefined) {\n lookupBlock = {\n ...(lookupFragmentEntry.dimension !== undefined ? { dimension: lookupFragmentEntry.dimension } : {}),\n backing: lookupFragmentEntry.backing,\n vocabulary: lookupFragmentEntry.vocabulary,\n key: lookupFragmentEntry.key,\n onDelete: lookupFragmentEntry.onDelete,\n ...(lookupFragmentEntry.altKeys !== undefined ? { altKeys: lookupFragmentEntry.altKeys } : {}),\n ...(lookupFragmentEntry.present !== undefined ? { present: lookupFragmentEntry.present } : {}),\n ...(lookupFragmentEntry.sortBy !== undefined ? { sortBy: lookupFragmentEntry.sortBy } : {}),\n ...(lookupFragmentEntry.keys !== undefined ? { keys: lookupFragmentEntry.keys } : {}),\n }\n }\n\n // Classified sensitivity feeds inferred meta at lowest precedence — channel\n // fieldMeta and zod .meta() still win via resolveFieldMeta's merge order.\n if (cls !== undefined) inferred.sensitivity = cls.sensitivity\n\n // ── Merge fieldMeta channel ────────────────────────────────────────────\n const channelEntry = fieldMeta?.[key]\n const zodMeta = zod?.meta\n const resolved = resolveFieldMeta(key, {\n ...(channelEntry !== undefined ? { channel: channelEntry } : {}),\n ...(zodMeta !== undefined ? { zodMeta } : {}),\n inferred,\n })\n\n // ── i18n block (only for i18nText fields) ─────────────────────────────\n let i18nBlock: DescribedField['i18n'] | undefined\n if (i18nDesc !== undefined) {\n const locales = i18nDesc.options.languages\n const densify = i18nDesc.options.densifyOnWrite\n i18nBlock = {\n ...(locales !== undefined ? { locales } : {}),\n ...(densify !== undefined ? { densify } : {}),\n }\n }\n\n // ── Widget (derived, overridable via resolvedWidget from fieldMeta/zodMeta) ──\n const widget = deriveWidget({\n type,\n ...(resolved.semanticType !== undefined ? { semanticType: resolved.semanticType } : {}),\n ...(dictBlock !== undefined ? { dict: dictBlock } : {}),\n ...(lookupBlock !== undefined ? { lookup: lookupBlock } : {}),\n ...(blobBlock !== undefined ? { blob: blobBlock } : {}),\n ...(resolved.widget !== undefined ? { resolvedWidget: resolved.widget } : {}),\n })\n\n // ── Editable: false for computed, id, provenance-stamped, blob fields ──\n // Provenance fields (_source, _sourceTs) are envelope-level metadata, not\n // user schema fields — they won't appear as keys in fieldMeta so this check\n // is implicitly handled (they'd never appear in allKeys). Explicitly guard\n // computed + 'id' as the two structural non-editable cases. A blobFields\n // field (#657) is never written through the record codec — it's mutated\n // exclusively via `collection.blob(id)` — so it is never editable either.\n const editable = !isComputed && key !== 'id' && blobBlock === undefined\n\n // ── Assemble the field (exactOptionalPropertyTypes-safe spreads) ───────\n const field: DescribedField = {\n key,\n ...(fieldIds?.[key] !== undefined ? { id: fieldIds[key] } : {}),\n type,\n optional: zod?.optional ?? false,\n ...(zod?.constraints !== undefined ? { constraints: zod.constraints } : {}),\n label: resolved.label,\n ...(resolved.description !== undefined ? { description: resolved.description } : {}),\n ...(resolved.group !== undefined ? { group: resolved.group } : {}),\n ...(resolved.order !== undefined ? { order: resolved.order } : {}),\n ...(resolved.semanticType !== undefined ? { semanticType: resolved.semanticType } : {}),\n ...(resolved.unit !== undefined ? { unit: resolved.unit } : {}),\n ...(resolved.sensitivity !== undefined ? { sensitivity: resolved.sensitivity } : {}),\n ...(resolved.aggregate !== undefined ? { aggregate: resolved.aggregate } : {}),\n ...(resolved.aliases !== undefined ? { aliases: resolved.aliases } : {}),\n ...(resolved.displayFor !== undefined ? { displayFor: resolved.displayFor } : {}),\n ...(refBlock !== undefined ? { ref: refBlock } : {}),\n ...(moneyBlock !== undefined ? { money: moneyBlock } : {}),\n ...(dictBlock !== undefined ? { dict: dictBlock } : {}),\n ...(lookupBlock !== undefined ? { lookup: lookupBlock } : {}),\n ...(blobBlock !== undefined ? { blob: blobBlock } : {}),\n ...(isComputed ? { computed: true as const } : {}),\n ...(i18nBlock !== undefined ? { i18n: i18nBlock } : {}),\n widget,\n editable,\n ...(cls !== undefined ? {\n classified: {\n preset: cls.preset,\n storage: cls.storage,\n list: cls.list.kind === 'omit' ? 'omit' as const\n : cls.list.kind === 'mask' ? { mask: cls.list.pattern }\n : { rider: cls.list.rider },\n ...(cls.equatable === true ? { equatable: true as const } : {}),\n },\n } : {}),\n ...(taintPosture !== undefined ? { taint: { posture: taintPosture, forcedBy: taint?.provenance?.get(key) ?? [] } } : {}),\n }\n\n fields.push(field)\n }\n\n // Build collection-level meta with label fallback to humanized collection name.\n const collectionMeta: CollectionMeta = {\n ...meta,\n label: meta?.label ?? humanizeFieldKey(collection),\n }\n\n return {\n collection,\n fields,\n meta: collectionMeta,\n }\n}\n","// kernel/via/graph.ts — the per-vault ViaGraph dependency model (Via port phase C, #638).\n//\n// Metadata-only dependency graph over (collection, field) nodes: source-field\n// postures, derived-field edges, and the taint (effective-posture) algebra.\n// NEVER stores record values or key material — see\n// design-history/2026-07-11-via-phase-c-design.md §1/§2.\n\nimport { DerivationCycleError, MaterializedViewCycleError } from '../errors.js'\nimport type { ViaPosture } from './index.js'\n\n/** A (collection, field) node. Artifact-grain targets (rollup field, MV row-class,\n * overlay output) are modelled as a field node whose `field` is the artifact key. */\nexport interface FieldRef { readonly collection: string; readonly field: string }\n\nexport type EdgeKind = 'computed' | 'derivation' | 'rollup' | 'mv' | 'overlay' | 'ref'\n/** `'virtual'` (#638 Task 7) marks a `computed(fn, { mode: 'virtual' })` field's edge —\n * never stored (rides the `present` phase), so it can never be sealed at rest\n * ({@link ViaGraph.taintSealedFields} excludes it) and is always non-queryable\n * regardless of source posture ({@link ViaGraph.effectivePosture} clamps it). */\nexport type Grain = 'record' | 'aggregate' | 'virtual'\n\n/** Delete/forget-time referential policy for a `'ref'` edge (#650 Task 5, spec §4) — duplicated\n * (not imported) from `via/lookup/descriptor.ts`'s `OnDelete`: the kernel spine may not\n * statically import `via/**` (Check 14, `via-layering`). Keep the two in sync by hand. */\nexport type OnDelete = 'restrict' | 'cascade' | 'nullify'\n\n/** Plain (non-via) field baseline — max-permissive; taint only ever tightens. */\nexport const DEFAULT_POSTURE: ViaPosture =\n { encryptedAtRest: 'envelope', queryable: 'full', exportable: true, forgettable: false }\n\nconst QUERYABLE_RANK: Record<ViaPosture['queryable'], number> = {\n none: 0,\n 'det-exact': 1,\n ordered: 2,\n full: 3,\n}\n\n/** The per-axis \"most restrictive\" fold — pure, exported for direct unit testing. */\nexport function foldPosture(a: ViaPosture, b: ViaPosture): ViaPosture {\n return {\n encryptedAtRest: a.encryptedAtRest === 'sealed' || b.encryptedAtRest === 'sealed' ? 'sealed' : 'envelope',\n queryable: QUERYABLE_RANK[a.queryable] <= QUERYABLE_RANK[b.queryable] ? a.queryable : b.queryable,\n exportable: a.exportable && b.exportable,\n forgettable: a.forgettable || b.forgettable,\n }\n}\n\n/** Security-axes-only fold for a wildcard collection node (#642): sealed-wins encryptedAtRest,\n * AND exportable, OR forgettable — queryable is NOT folded (stays base.queryable; the sealed\n * clamp to 'none' is buildTaintOverlay's job, so inheriting `sealed` never over-restricts a\n * blob-adjacent output to unqueryable). Pure; exported for unit testing. Distinct from\n * {@link foldPosture} (which folds all four axes) — do NOT reuse foldPosture here. */\nexport function foldWildcardSecurity(base: ViaPosture, contributor: ViaPosture): ViaPosture {\n return {\n encryptedAtRest: base.encryptedAtRest === 'sealed' || contributor.encryptedAtRest === 'sealed' ? 'sealed' : 'envelope',\n queryable: base.queryable,\n exportable: base.exportable && contributor.exportable,\n forgettable: base.forgettable || contributor.forgettable,\n }\n}\n\n// the folded formula kinds a '*' source contributes its collection-fold to (ref keeps identity):\ntype FoldedKind = 'derivation' | 'rollup' | 'mv' | 'overlay'\nconst FOLDED_KINDS: ReadonlySet<EdgeKind> = new Set<FoldedKind>(['derivation', 'rollup', 'mv', 'overlay'])\n\n/** Whether `p` is exactly the plain, non-taint baseline (Task 3 — `taintProvenance`). */\nfunction isDefaultPosture(p: ViaPosture): boolean {\n return p.encryptedAtRest === DEFAULT_POSTURE.encryptedAtRest && p.queryable === DEFAULT_POSTURE.queryable &&\n p.exportable === DEFAULT_POSTURE.exportable && p.forgettable === DEFAULT_POSTURE.forgettable\n}\n\n/** One `_out` entry — a `source -> target` derived edge, carrying its OWN registration's\n * `kind` (#678). `kind` must be edge-local, not re-derived from `_in`: `_in` is single-slot\n * per target and can be overwritten by a LATER `registerDerived` call on the SAME target\n * (a dual-role target, e.g. #631's exempt {computed, lookup} field composition) — asking\n * `_in` for \"this target's current kind\" answers the wrong question for a specific edge. */\ninterface OutEdge { readonly target: FieldRef; readonly kind: EdgeKind }\n\n/** One registered `registerDerived` call — a target's whole in-edge set. */\ninterface DerivedEdge {\n readonly target: FieldRef\n readonly sources: readonly FieldRef[]\n readonly kind: EdgeKind\n readonly grain: Grain\n /** `'ref'` edges only — the referencing field's delete/forget policy (#650 Task 5). */\n readonly onDelete?: OnDelete\n /** `'ref'` edges only — the backing dimension's canonical-key FIELD NAME on its own row (matrix\n * tier's `lookup(dim, {key})`; always `'id'` for reserved/static tiers). Defaults to `'id'`\n * when absent — a referencing field always stores this field's VALUE, never the backing row's\n * PUT-id when the two differ (#650 Task 5, mirrors Task 3's membership review fix). */\n readonly keyField?: string\n}\n\nconst SEP = '\\0'\nconst EMPTY_SET: ReadonlySet<string> = new Set()\n\nfunction nodeId(ref: FieldRef): string {\n return `${ref.collection}${SEP}${ref.field}`\n}\n\n/** Inverse of `nodeId`, for building a human-readable cycle path. */\nfunction displayNodeId(id: string): string {\n const sep = id.indexOf(SEP)\n return `${id.slice(0, sep)}.${id.slice(sep + 1)}`\n}\n\n/** Metadata-only dependency graph, ONE per vault. Never stores values or key material. */\nexport class ViaGraph {\n /** Declared source-field postures (registerField), keyed by node id. */\n private readonly _posture = new Map<string, ViaPosture>()\n /** Every derived target's registration, keyed by the target's node id. */\n private readonly _in = new Map<string, DerivedEdge>()\n /** source node id -> derived edges that depend on it (dispatch/erasure), each carrying\n * its own registration's `kind` (#678 — see {@link OutEdge}). */\n private readonly _out = new Map<string, OutEdge[]>()\n /** Memoized effective posture per derived target node id. */\n private readonly _effectiveCache = new Map<string, ViaPosture>()\n /** Memoized whole-collection security-axes fold for `'*'` wildcard LEAF nodes (#642),\n * keyed by collection name — see {@link _wildcardContribution}. Cleared alongside\n * `_effectiveCache` on every `registerField`/`registerDerived` (a later-registered\n * field must re-fold on the next read — registration ordering is free). */\n private readonly _wildcardCache = new Map<string, ViaPosture>()\n /** Collections with at least one classified field (#638 Task 2 fix wave 2,\n * Finding I1 — the reconcile path's combined-state leak guard memory). */\n private readonly _classifiedCollections = new Set<string>()\n /** Computed field names declared with no `deps` entry, per collection\n * (Finding I1 — such a field registers no edge when no classified field is\n * present yet, so a LATER, separate reconcile call attaching classifiedFields\n * still needs to see it regardless of declaration order). */\n private readonly _depslessComputed = new Map<string, Set<string>>()\n\n /** Declare a source field's posture (money/i18n/classified/plain). Plain fields\n * default to `DEFAULT_POSTURE`; a later declaration for the same node wins-first (idempotent). */\n registerField(collection: string, field: string, posture: ViaPosture): void {\n const id = nodeId({ collection, field })\n if (this._posture.has(id)) return\n this._posture.set(id, posture)\n this._effectiveCache.clear()\n this._wildcardCache.clear()\n }\n\n /** A derived target depends on `sources` (may be cross-collection). `kind`/`grain`\n * drive dispatch + erasure semantics; sources drive taint. Re-registering the same\n * target replaces `_in` but does not prune stale `_out` edges — callers must\n * register each target at most once per graph lifetime. `onDelete`/`keyField` (#650 Task 5)\n * are meaningful only for `kind === 'ref'` edges — {@link referencingEdgesOf} reads them back. */\n registerDerived(target: FieldRef, sources: readonly FieldRef[], kind: EdgeKind, grain: Grain, onDelete?: OnDelete, keyField?: string): void {\n const id = nodeId(target)\n this._in.set(id, {\n target, sources, kind, grain,\n ...(onDelete !== undefined ? { onDelete } : {}),\n ...(keyField !== undefined ? { keyField } : {}),\n })\n for (const source of sources) {\n const sourceId = nodeId(source)\n const outEdge: OutEdge = { target, kind }\n const dependents = this._out.get(sourceId)\n if (dependents) dependents.push(outEdge)\n else this._out.set(sourceId, [outEdge])\n }\n this._effectiveCache.clear()\n this._wildcardCache.clear()\n }\n\n /** Whether `target` already has a registered in-edge — lets a caller skip\n * re-registering the same target (#638 Task 2 fix wave 2, Finding I2i:\n * `registerDerived`'s at-most-once contract must hold across repeated\n * identical `vault.collection()` calls, not just within a single one). */\n hasDerived(target: FieldRef): boolean {\n return this._in.has(nodeId(target))\n }\n\n /** Mark/query a collection as having declared at least one classified field. */\n markClassified(collection: string): void {\n this._classifiedCollections.add(collection)\n }\n\n isClassified(collection: string): boolean {\n return this._classifiedCollections.has(collection)\n }\n\n /** Mark/query a collection's depsless (no declared `deps`) computed\n * field names — see `_depslessComputed`'s doc comment above. */\n markDepslessComputed(collection: string, field: string): void {\n let set = this._depslessComputed.get(collection)\n if (!set) { set = new Set(); this._depslessComputed.set(collection, set) }\n set.add(field)\n }\n\n depslessComputedFields(collection: string): ReadonlySet<string> {\n return this._depslessComputed.get(collection) ?? EMPTY_SET\n }\n\n /** Every field name the graph already has memory of for `collection` — from an\n * EARLIER, separate `vault.collection()` call (registered postures, derived\n * targets, depsless-computed names) — regardless of which via feature declared\n * it. #645 — `via/graph-wiring.ts`'s reconcile-path `knownFields` universe\n * (`collectKnownFieldNames`) is scoped to THIS call's own options only, so a\n * computed field attached in a LATER call whose `deps` correctly names a field\n * declared in an EARLIER call was spuriously refused as \"unknown\"; this method\n * lets that call site union in the graph's cross-call memory. Excludes the `'*'`\n * wildcard target (an overlay/derivation whole-record fold node, never a real\n * record field — see {@link registerDerived}'s doc comment). */\n knownFieldNames(collection: string): ReadonlySet<string> {\n const out = new Set<string>()\n const prefix = `${collection}${SEP}`\n for (const id of this._posture.keys()) {\n if (id.startsWith(prefix)) out.add(id.slice(prefix.length))\n }\n for (const edge of this._in.values()) {\n if (edge.target.collection === collection && edge.target.field !== '*') out.add(edge.target.field)\n }\n const depsless = this._depslessComputed.get(collection)\n if (depsless) for (const field of depsless) out.add(field)\n return out\n }\n\n /** Reject cycles at declare time (vault open). Throws `DerivationCycleError` for a\n * derivation/rollup/computed cycle, `MaterializedViewCycleError` for an MV cycle —\n * same classes + message shape the registries throw today (behavior lock). */\n assertAcyclic(): void {\n const visited = new Set<string>()\n const stack: string[] = []\n\n /** #639 — containment expansion: writing a real field `f` on collection `C` is\n * a write to `C`, so it must ALSO reach every whole-record (`'*'`) dependent of\n * `C` — the missing reachability step that made mutual/rotating rollup cycles\n * invisible (a rollup target is always a real field node and never itself a\n * graph SOURCE, so the old `_out.get(id)`-only walk dead-ended on it).\n *\n * TRAVERSAL-LOCAL ONLY (law, #642): this is a virtual adjacency computed\n * during the DFS walk, reading `_out` only. It must NEVER be materialized via\n * `registerDerived` (no new `(C,f)→(C,'*')` edge) and must NEVER touch `_in` —\n * putting `(C,'*')` into `_in` would flip `_contribution('C\\0*')` from the\n * `_wildcardContribution` fold (`#642`) onto the `_computeEffective` path,\n * bleeding cycle-reachability taint into `foldWildcardSecurity`'s posture\n * fold. Posture folding (`_contribution`/`_computeEffective`/\n * `_wildcardContribution`) never reads `_out`, so an expansion that reads\n * `_out` only is provably unable to perturb it. */\n // #671 item 5 — exclude `kind:'ref'` consuming edges: mutual FK lookups (two\n // collections each referencing the other) are legal and must not be treated as a\n // derivation cycle. Ref edges exist for cascade/rename machinery\n // (`referencingEdgesOf`/delete-time restrict/cascade/nullify), never derivation\n // ordering, so they carry no ordering constraint here. #678 — `kind` is read off\n // THIS `_out` entry (edge-local), NOT re-derefed from `_in`: a dual-role target\n // (e.g. #631's exempt {computed, lookup} composition) can have its `_in` entry's\n // `kind` overwritten by a LATER `registerDerived` call for the SAME target, so\n // asking `_in` \"what kind is `t` registered as NOW\" wrongly excluded a real\n // computed edge from the DFS as if it were a ref edge, hiding a genuine\n // derivation cycle. Asking \"what kind is THIS specific edge\" is correct\n // regardless of what else was later registered for the target.\n const notRefEdge = (entry: OutEdge): boolean => entry.kind !== 'ref'\n const neighboursOf = (id: string): readonly FieldRef[] => {\n const own = (this._out.get(id) ?? []).filter(notRefEdge).map((entry) => entry.target)\n const sep = id.indexOf(SEP)\n if (id.slice(sep + 1) === '*') return own\n const wildcard = (this._out.get(`${id.slice(0, sep)}${SEP}*`) ?? []).filter(notRefEdge).map((entry) => entry.target)\n if (wildcard.length === 0) return own\n return [...own, ...wildcard]\n }\n\n const visit = (id: string): void => {\n const idx = stack.indexOf(id)\n if (idx !== -1) {\n const cycle = stack.slice(idx).concat(id)\n const isMv = cycle.some(cycleId => this._in.get(cycleId)?.kind === 'mv')\n const path = cycle.map(displayNodeId)\n if (isMv) throw new MaterializedViewCycleError(path)\n throw new DerivationCycleError(path)\n }\n if (visited.has(id)) return\n stack.push(id)\n for (const dependent of neighboursOf(id)) visit(nodeId(dependent))\n stack.pop()\n visited.add(id)\n }\n\n for (const id of this._out.keys()) visit(id)\n }\n\n /** A leaf (non-derived) node's own posture contribution: its declared posture,\n * or `DEFAULT_POSTURE` if never declared via `registerField`. */\n private _declaredPosture(id: string): ViaPosture {\n return this._posture.get(id) ?? DEFAULT_POSTURE\n }\n\n /** A node's posture contribution when folded into a dependent: recurse if it is itself\n * derived; else its declared/default posture — UNLESS it is a `'*'` LEAF node consumed\n * by a folded formula kind (#642, `derivation|rollup|mv|overlay`), in which case it\n * contributes its collection's whole-record security fold ({@link _wildcardContribution}).\n * `kind` is the CONSUMING edge's kind, threaded from {@link _computeEffective}. `'ref'`\n * edges (and the provenance-only untyped call, `kind` left `undefined`) keep `'*'` =\n * identity — the phase-D lookup reliance (`via/lookup/registry.ts:392-397`) that a\n * referencing field must not seal just because its dimension collection has a classified\n * column. */\n private _contribution(id: string, kind?: EdgeKind): ViaPosture {\n const edge = this._in.get(id)\n if (edge) return this._computeEffective(id, edge)\n if (kind !== undefined && FOLDED_KINDS.has(kind) && id.endsWith(`${SEP}*`)) {\n return this._wildcardContribution(id.slice(0, -2))\n }\n return this._declaredPosture(id)\n }\n\n /** Lazy fold (#642) of a collection's REGISTERED field postures on the security axes only\n * ({@link foldWildcardSecurity} — sealed-wins encryptedAtRest, AND exportable, OR\n * forgettable; queryable stays at DEFAULT_POSTURE's 'full', never folded), seeded at\n * DEFAULT_POSTURE. This is the collection-level posture a `'*'` LEAF node contributes to a\n * folded-kind formula edge (derivation/rollup/mv/overlay) — see {@link _contribution}. A\n * plain (unregistered) field contributes nothing (the identity), so the fold is strictly\n * more conservative than deps-based taint and never hits the KNOWN-LIMIT wall (it names no\n * fields — seam map §1d). Memoized per collection in `_wildcardCache`. */\n private _wildcardContribution(collection: string): ViaPosture {\n const cached = this._wildcardCache.get(collection)\n if (cached) return cached\n let result = DEFAULT_POSTURE\n const prefix = `${collection}${SEP}`\n for (const [id, posture] of this._posture) {\n if (!id.startsWith(prefix) || id === `${prefix}*`) continue\n result = foldWildcardSecurity(result, posture)\n }\n this._wildcardCache.set(collection, result)\n return result\n }\n\n private _computeEffective(id: string, edge: DerivedEdge): ViaPosture {\n const cached = this._effectiveCache.get(id)\n if (cached) return cached\n let result = DEFAULT_POSTURE\n for (const source of edge.sources) {\n result = foldPosture(result, this._contribution(nodeId(source), edge.kind))\n }\n // #638 Task 7 — a virtual field is computed fresh on every read and never\n // stored, so it is structurally unqueryable regardless of what its\n // sources' fold would otherwise permit (e.g. a money-sourced virtual\n // field must NOT inherit money's 'ordered' queryability — there is no\n // stored/indexed form to query against). Every OTHER axis (exportable/\n // forgettable/encryptedAtRest) still folds normally — the taint rule is\n // identical to a materialized field; only queryability is a fixed,\n // grain-level property, not a source-derived one.\n if (edge.grain === 'virtual' && result.queryable !== 'none') {\n result = { ...result, queryable: 'none' }\n }\n this._effectiveCache.set(id, result)\n return result\n }\n\n /** Strictest source posture on every axis, per §2. `undefined` when `target` has no\n * in-edges (not a derived field). Transitive: folds through chained derivations. */\n effectivePosture(target: FieldRef): ViaPosture | undefined {\n const id = nodeId(target)\n const edge = this._in.get(id)\n if (!edge) return undefined\n return this._computeEffective(id, edge)\n }\n\n /** Per-collection { field → effectivePosture } overlay the pipeline consumes (Task 3). */\n taintedPostures(collection: string): ReadonlyMap<string, ViaPosture> {\n const out = new Map<string, ViaPosture>()\n for (const edge of this._in.values()) {\n if (edge.target.collection !== collection) continue\n out.set(edge.target.field, this._computeEffective(nodeId(edge.target), edge))\n }\n return out\n }\n\n /** Materialized (`grain !== 'virtual'`) derived fields on `collection` whose effective\n * encryptedAtRest resolves to 'sealed' — the taint-seal set (Task 3). #638 Task 7\n * makes the `grain !== 'virtual'` filter meaningful: a `computed(fn, { mode: 'virtual' })`\n * field is never stored (rides the `present` phase, seam map Part 4's money-Formatted/\n * i18n-Label precedent), so it is EXCLUDED here even when its effective `encryptedAtRest`\n * folds to `'sealed'` — there is no envelope slot to seal. It still surfaces in\n * {@link taintedPostures} (query refusal via `postureFor`'s `queryable` clamp above, and\n * export refusal via `exportable`) — only the AT-REST SEALING ACTION is skipped. */\n taintSealedFields(collection: string): ReadonlySet<string> {\n const out = new Set<string>()\n for (const edge of this._in.values()) {\n if (edge.target.collection !== collection || edge.grain === 'virtual') continue\n const posture = this._computeEffective(nodeId(edge.target), edge)\n if (posture.encryptedAtRest === 'sealed') out.add(edge.target.field)\n }\n return out\n }\n\n /** Fields on `collection` whose registered edge is `grain === 'virtual'` (#638 Task 7) —\n * `via/graph-wiring.ts#applyTaintOverlay` intersects this with `exportable === false`\n * postures to know which virtual fields need PRESENT-TIME (not just export-time)\n * redaction, since a virtual field's value is only ever materialized inside `present()`. */\n virtualFields(collection: string): ReadonlySet<string> {\n const out = new Set<string>()\n for (const edge of this._in.values()) {\n if (edge.target.collection === collection && edge.grain === 'virtual') out.add(edge.target.field)\n }\n return out\n }\n\n /** Per-collection { field → immediate source field names that forced its\n * effective posture away from `DEFAULT_POSTURE` } — `describe()`'s\n * provenance (Task 3). Only the DIRECT declared sources are named (not the\n * ultimate origin several hops up a transitive chain); a source absent\n * from the result contributed nothing restrictive. */\n taintProvenance(collection: string): ReadonlyMap<string, readonly string[]> {\n const out = new Map<string, readonly string[]>()\n for (const edge of this._in.values()) {\n if (edge.target.collection !== collection) continue\n const forcedBy = edge.sources\n .filter((source) => !isDefaultPosture(this._contribution(nodeId(source))))\n .map((source) => source.field)\n if (forcedBy.length > 0) out.set(edge.target.field, forcedBy)\n }\n return out\n }\n\n private _targetsDependingOn(collection: string): ReadonlyArray<{ readonly target: FieldRef; readonly kind: EdgeKind; readonly grain: Grain }> {\n const out: Array<{ target: FieldRef; kind: EdgeKind; grain: Grain }> = []\n for (const edge of this._in.values()) {\n if (edge.sources.some(source => source.collection === collection)) {\n out.push({ target: edge.target, kind: edge.kind, grain: edge.grain })\n }\n }\n return out\n }\n\n /** Dispatch (Task 4): every derived target triggered by a write to `collection`. Excludes\n * `'ref'` edges (#650 Task 5 review, folded Minor) — a `'ref'` edge is consulted only by the\n * delete/forget-time restrict/cascade/nullify path ({@link referencingEdgesOf}), never by the\n * sync/cutover/restore dispatch wave (`runGraphDispatchWave`); counting it here defeated that\n * wave's zero-cost early-continue, costing every write to a referenced backing collection an\n * unconditional decrypt + two no-op dispatch passes. {@link derivedArtifactsOf} (erasure\n * fanout) still includes `'ref'` edges — the forget path genuinely needs them. */\n dependentsOf(collection: string): ReadonlyArray<{ readonly target: FieldRef; readonly kind: EdgeKind; readonly grain: Grain }> {\n return this._targetsDependingOn(collection).filter((edge) => edge.kind !== 'ref')\n }\n\n /** Erasure (Task 6): derived artifacts of a forgotten record whose source is `collection`. */\n derivedArtifactsOf(collection: string): ReadonlyArray<{ readonly target: FieldRef; readonly kind: EdgeKind; readonly grain: Grain }> {\n return this._targetsDependingOn(collection)\n }\n\n /** Referencing edges pointing AT a backing dimension (delete/forget-time restrict/cascade/\n * nullify, #650 Task 5) — an O(1) reverse lookup via the existing `_out` map (keyed at the\n * dimension's wildcard `field:'*'` node, the same convention every whole-collection source\n * already uses), NEVER a scan across collections or records. `backing` is the collection name\n * a lookup field's edge was registered against (a reserved dimension's `_dict_<name>`/\n * `_lookup_<name>` collection name, or a matrix dimension's own collection name). */\n referencingEdgesOf(backing: string): ReadonlyArray<{ readonly referencing: FieldRef; readonly onDelete: OnDelete; readonly keyField: string }> {\n const targets = this._out.get(nodeId({ collection: backing, field: '*' }))\n if (!targets) return []\n const out: Array<{ referencing: FieldRef; onDelete: OnDelete; keyField: string }> = []\n for (const entry of targets) {\n // #678 — `kind` is read directly off THIS `_out` entry (edge-local) instead of\n // re-derefing `_in`. This also fixes the symmetric ref-vanishes hazard: under a\n // registration order where a LATER `registerDerived` call for the same target\n // overwrites `_in`'s kind away from `'ref'`, the old `_in`-derefing check would\n // silently drop a genuine referencing edge from cascade/nullify delete machinery\n // even though this specific edge was truly registered as `'ref'`.\n if (entry.kind !== 'ref') continue\n const edge = this._in.get(nodeId(entry.target))\n if (edge?.onDelete !== undefined) {\n out.push({ referencing: entry.target, onDelete: edge.onDelete, keyField: edge.keyField ?? 'id' })\n }\n }\n return out\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  applyJoins,
3
3
  splitAroundJoins
4
- } from "./chunk-AW4KTQA4.js";
4
+ } from "./chunk-ZORTV6NH.js";
5
5
  import {
6
6
  NO_REDUCE
7
7
  } from "./chunk-YMUFFJCO.js";
@@ -19,7 +19,7 @@ import {
19
19
  DanglingReferenceError,
20
20
  FieldNotQueryableError,
21
21
  RefNotDeclaredError
22
- } from "./chunk-SW4TOSJL.js";
22
+ } from "./chunk-7O3Y4PPD.js";
23
23
 
24
24
  // src/kernel/query/live.ts
25
25
  function buildLiveQuery(recompute, upstreams) {
@@ -1613,4 +1613,4 @@ export {
1613
1613
  executePlan,
1614
1614
  ScanBuilder
1615
1615
  };
1616
- //# sourceMappingURL=chunk-LAI7ENPW.js.map
1616
+ //# sourceMappingURL=chunk-7MG2LHO5.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  walkClosure
3
- } from "./chunk-7XT7KZTN.js";
3
+ } from "./chunk-DJ3LNNZQ.js";
4
4
  import {
5
5
  resolveManagedSecret
6
6
  } from "./chunk-JUBWUJY5.js";
@@ -8,40 +8,40 @@ import {
8
8
  parseExtractedPartitionBody,
9
9
  readPod,
10
10
  readPodHeader
11
- } from "./chunk-RCONOOVF.js";
11
+ } from "./chunk-PKJ43CMD.js";
12
12
  import {
13
13
  createOwnerKeyring,
14
14
  mintRosterTag,
15
15
  nextRosterEpoch,
16
16
  requireRosterKey
17
- } from "./chunk-XJTGBHK6.js";
17
+ } from "./chunk-VNR2SNVJ.js";
18
18
  import {
19
19
  LedgerStore
20
- } from "./chunk-OKCQNMO6.js";
20
+ } from "./chunk-U7VPHXXO.js";
21
21
  import {
22
22
  LEDGER_COLLECTION
23
23
  } from "./chunk-I7FD46FF.js";
24
24
  import {
25
25
  openEnvelopeJson
26
- } from "./chunk-DOPZWTMJ.js";
26
+ } from "./chunk-CIGAQBJR.js";
27
27
  import {
28
28
  buildRecordEnvelope
29
29
  } from "./chunk-4RUFYGWG.js";
30
30
  import {
31
31
  base64ToBuffer,
32
32
  wrapKey
33
- } from "./chunk-USKHHOIV.js";
33
+ } from "./chunk-SL3JAAKN.js";
34
34
  import {
35
35
  AdoptionStateError,
36
36
  TransferSealError,
37
37
  ValidationError
38
- } from "./chunk-SW4TOSJL.js";
38
+ } from "./chunk-7O3Y4PPD.js";
39
39
 
40
40
  // src/with-cargo/active.ts
41
41
  function withCargo() {
42
42
  return {
43
43
  async extractPartition(vault, opts) {
44
- const { extractPartitionCore } = await import("./extract-partition-YJFL5OKK.js");
44
+ const { extractPartitionCore } = await import("./extract-partition-RYJZIKQZ.js");
45
45
  return extractPartitionCore(vault, opts);
46
46
  }
47
47
  };
@@ -252,7 +252,7 @@ async function createOwnerOnAdoptedPartition(store, vaultName, opts) {
252
252
  }
253
253
  }
254
254
  if (isManaged(opts)) {
255
- const { createNoydb } = await import("./noydb-ZUS5XAFT.js");
255
+ const { createNoydb } = await import("./noydb-JJXPICIC.js");
256
256
  const db = await createNoydb({
257
257
  store,
258
258
  user: userId,
@@ -307,4 +307,4 @@ export {
307
307
  withCargo,
308
308
  describeExtraction
309
309
  };
310
- //# sourceMappingURL=chunk-NUXTUGAD.js.map
310
+ //# sourceMappingURL=chunk-7NTBVFGD.js.map
@@ -1761,4 +1761,4 @@ export {
1761
1761
  ClassifiedRotationError,
1762
1762
  SatelliteConfigError
1763
1763
  };
1764
- //# sourceMappingURL=chunk-SW4TOSJL.js.map
1764
+ //# sourceMappingURL=chunk-7O3Y4PPD.js.map