graview 0.1.61 → 0.1.62

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 (215) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +5 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/preview/{chunk.SAYAFOF6.js → chunk.22BZU7ME.js} +1 -1
  5. package/dist/preview/chunk.2AT3GRXM.js +1 -0
  6. package/dist/preview/chunk.2B6P4GPS.js +1 -0
  7. package/dist/preview/{chunk.XZUHFXME.js → chunk.2GEJNG2U.js} +1 -1
  8. package/dist/preview/{chunk.R3N73BJO.js → chunk.2N4Z5K5S.js} +1 -1
  9. package/dist/preview/{chunk.3HFUO3DC.js → chunk.3FON2Y72.js} +1 -1
  10. package/dist/preview/chunk.3L37FY3G.js +4 -0
  11. package/dist/preview/{chunk.CRCJ3TAG.js → chunk.4HEFUOLV.js} +1 -1
  12. package/dist/preview/chunk.4HRYB7HF.js +1 -0
  13. package/dist/preview/{chunk.GQNSNJTJ.js → chunk.4TX6VCBT.js} +1 -1
  14. package/dist/preview/{chunk.4LG34OC2.js → chunk.5HGD6OWL.js} +2 -2
  15. package/dist/preview/{chunk.6VLCMBRE.js → chunk.5J3O2FVG.js} +1 -1
  16. package/dist/preview/{chunk.DP5DUV6F.js → chunk.5MZYCELA.js} +1 -1
  17. package/dist/preview/{chunk.F4VHCQNP.js → chunk.5ODHHH35.js} +1 -1
  18. package/dist/preview/{chunk.D5Q64GA4.js → chunk.5STU3KYG.js} +1 -1
  19. package/dist/preview/{chunk.PYVWGTQS.js → chunk.5YAOKOGV.js} +1 -1
  20. package/dist/preview/{chunk.E6RNMWFN.js → chunk.66P5IDTH.js} +1 -1
  21. package/dist/preview/{chunk.EN2ABVIP.js → chunk.6AKW7TXM.js} +1 -1
  22. package/dist/preview/{chunk.GI6XQF5X.js → chunk.6JO5HQDR.js} +1 -1
  23. package/dist/preview/{chunk.SIYBHZDD.js → chunk.75GVFX7L.js} +1 -1
  24. package/dist/preview/{chunk.E7UDVC4V.js → chunk.7KVUUEZA.js} +1 -1
  25. package/dist/preview/{chunk.W5TVQYAI.js → chunk.7M4HNKDR.js} +1 -1
  26. package/dist/preview/chunk.7OBIBPYH.js +1 -0
  27. package/dist/preview/chunk.7V56P2A7.js +1 -0
  28. package/dist/preview/{chunk.A2ZQASQV.js → chunk.7XLS6XTY.js} +1 -1
  29. package/dist/preview/chunk.7YOAW7ED.js +1 -0
  30. package/dist/preview/{chunk.3SMNWZ3M.js → chunk.A3OL2BI2.js} +1 -1
  31. package/dist/preview/{chunk.WS7LAT4Z.js → chunk.A3ZC2JBO.js} +1 -1
  32. package/dist/preview/{chunk.HZHNM2KI.js → chunk.ACTXR2MI.js} +1 -1
  33. package/dist/preview/chunk.AFNSAQEQ.js +1 -0
  34. package/dist/preview/{chunk.AVFOTYZR.js → chunk.AI34V6WV.js} +4 -4
  35. package/dist/preview/{chunk.VN7I7XIO.js → chunk.AJSUHPBE.js} +1 -1
  36. package/dist/preview/chunk.AQRB7LDA.js +1 -0
  37. package/dist/preview/{chunk.3FUUYYR5.js → chunk.B23WZQXQ.js} +1 -1
  38. package/dist/preview/chunk.BIDL7GQD.js +0 -0
  39. package/dist/preview/chunk.BLUKSGI4.js +1 -0
  40. package/dist/preview/chunk.BZMQDEIY.js +1 -0
  41. package/dist/preview/chunk.CAKFNKN5.js +1 -0
  42. package/dist/preview/chunk.CGALLZ54.js +1 -0
  43. package/dist/preview/{chunk.65KFZV3A.js → chunk.CHHYIMB7.js} +1 -1
  44. package/dist/preview/chunk.CXDGE5ZS.js +1 -0
  45. package/dist/preview/{chunk.KRFRREEW.js → chunk.CY3ELWCM.js} +1 -1
  46. package/dist/preview/chunk.DC35FJAB.js +1 -0
  47. package/dist/preview/{chunk.ZJCM62GH.js → chunk.DD2NKFDX.js} +1 -1
  48. package/dist/preview/{chunk.DHY7KOBV.js → chunk.DDO3GLEJ.js} +1 -1
  49. package/dist/preview/{chunk.6HZY5NRX.js → chunk.DDUCIUVW.js} +1 -1
  50. package/dist/preview/chunk.DEAP3H2L.js +1 -0
  51. package/dist/preview/chunk.DHJ3FQTR.js +1 -0
  52. package/dist/preview/{chunk.R5547CJ7.js → chunk.DNVWSWL2.js} +1 -1
  53. package/dist/preview/chunk.DPEIT3TW.js +1 -0
  54. package/dist/preview/chunk.DVSTLVIH.js +15 -0
  55. package/dist/preview/chunk.DZZL5IDD.js +5 -0
  56. package/dist/preview/{chunk.U2ISOUM2.js → chunk.ELOFPE25.js} +1 -1
  57. package/dist/preview/{chunk.7LZ6JDJA.js → chunk.ELTV44HU.js} +2 -2
  58. package/dist/preview/chunk.EVBCEEQ4.js +1 -0
  59. package/dist/preview/{chunk.HQNE4I4M.js → chunk.F7YXLYLX.js} +1 -1
  60. package/dist/preview/{chunk.MK72IRIY.js → chunk.FULEUL34.js} +1 -1
  61. package/dist/preview/{chunk.HOQMD6WQ.js → chunk.G4ULQK64.js} +14 -14
  62. package/dist/preview/{chunk.UXOBUK3C.js → chunk.GX4G4BX3.js} +1 -1
  63. package/dist/preview/chunk.H24OC6OE.js +1 -0
  64. package/dist/preview/chunk.H5S7OL2U.js +1 -0
  65. package/dist/preview/chunk.H73ZPYUX.js +1 -0
  66. package/dist/preview/{chunk.FJIXSGYU.js → chunk.H7N7WN4U.js} +1 -1
  67. package/dist/preview/chunk.HANJZ6FA.js +1 -0
  68. package/dist/preview/chunk.HIMQ65QT.js +1 -0
  69. package/dist/preview/chunk.I77ZGIFE.js +1 -0
  70. package/dist/preview/{chunk.ZC3FRCJQ.js → chunk.ILIIBSGA.js} +1 -1
  71. package/dist/preview/{chunk.66IKLMYX.js → chunk.IQ3PRWGO.js} +1 -1
  72. package/dist/preview/{chunk.DLDP6OWD.js → chunk.IQMD7DG3.js} +1 -1
  73. package/dist/preview/chunk.IQPILSV3.js +18 -0
  74. package/dist/preview/chunk.IYBEXENQ.js +1 -0
  75. package/dist/preview/{chunk.5S7IGASX.js → chunk.J7Q2WAF4.js} +1 -1
  76. package/dist/preview/{chunk.PJ5AO7CK.js → chunk.JT3MFPRD.js} +1 -1
  77. package/dist/preview/chunk.JYFZCJ4N.js +2 -0
  78. package/dist/preview/chunk.K2HDEL7I.js +1 -0
  79. package/dist/preview/chunk.KDXU5DT3.js +1 -0
  80. package/dist/preview/chunk.KL7E4YHJ.js +1 -0
  81. package/dist/preview/{chunk.SBLYBRDU.js → chunk.KMV6PJFL.js} +1 -1
  82. package/dist/preview/{chunk.DHJI7LIW.js → chunk.L3WTKQQL.js} +1 -1
  83. package/dist/preview/{chunk.REH6RXNH.js → chunk.LAYQ5PFS.js} +1 -1
  84. package/dist/preview/{chunk.UACSX64H.js → chunk.LGRLVJGS.js} +3 -3
  85. package/dist/preview/chunk.LTZUF5VG.js +1 -0
  86. package/dist/preview/{chunk.WD4VPMEE.js → chunk.M4AYA2PL.js} +1 -1
  87. package/dist/preview/chunk.M7RESZB6.js +25 -0
  88. package/dist/preview/{chunk.CUTLO6DA.js → chunk.MAKODQO3.js} +1 -1
  89. package/dist/preview/{chunk.SKQO467Y.js → chunk.MDEX6ZVE.js} +1 -1
  90. package/dist/preview/chunk.MGALQLRW.js +1 -0
  91. package/dist/preview/{chunk.PZXTSWDH.js → chunk.MYNMBOLD.js} +1 -1
  92. package/dist/preview/{chunk.YGIJDHAV.js → chunk.N6EJXXQK.js} +2 -2
  93. package/dist/preview/chunk.NAD7ZXYP.js +1 -0
  94. package/dist/preview/chunk.NHTGAP3G.js +3 -0
  95. package/dist/preview/{chunk.5IEFTFKQ.js → chunk.NJSK3UO2.js} +1 -1
  96. package/dist/preview/{chunk.ISRQQVS4.js → chunk.NOGGSLVG.js} +1 -1
  97. package/dist/preview/chunk.NUWDMH47.js +1 -0
  98. package/dist/preview/chunk.NUYA4BWI.js +1 -0
  99. package/dist/preview/{chunk.BDTT4ENI.js → chunk.O2BHPYA4.js} +2 -2
  100. package/dist/preview/chunk.O75HWF3F.js +1 -0
  101. package/dist/preview/chunk.OFWNMTGB.js +21 -0
  102. package/dist/preview/chunk.OKZT2QBM.js +2 -0
  103. package/dist/preview/{chunk.MBPOYZ3J.js → chunk.OUDATENL.js} +1 -1
  104. package/dist/preview/chunk.OUPURRDE.js +1 -0
  105. package/dist/preview/{chunk.GIW657OR.js → chunk.OWOOKLIU.js} +2 -1
  106. package/dist/preview/{chunk.7R727IKU.js → chunk.OWT3VVOT.js} +1 -1
  107. package/dist/preview/{chunk.VYFMUCBT.js → chunk.PCDUV3WP.js} +1 -1
  108. package/dist/preview/chunk.PD2DECOP.js +1 -0
  109. package/dist/preview/{chunk.2WZAFKJ2.js → chunk.PKWQKFPE.js} +1 -1
  110. package/dist/preview/{chunk.747OH3EE.js → chunk.PLTH2LW5.js} +1 -1
  111. package/dist/preview/{chunk.5POG3G2C.js → chunk.PZQNR4KZ.js} +1 -1
  112. package/dist/preview/chunk.Q5WEOX3Q.js +1 -0
  113. package/dist/preview/chunk.QDWSU47A.js +1 -0
  114. package/dist/preview/{chunk.U3JK2DNC.js → chunk.QGU5QTR6.js} +1 -1
  115. package/dist/preview/{chunk.6DOOLVT4.js → chunk.QHY5NVYH.js} +1 -1
  116. package/dist/preview/{chunk.BI6DS3PZ.js → chunk.QIPASE42.js} +1 -1
  117. package/dist/preview/{chunk.EVEHSENK.js → chunk.RD2X25XB.js} +1 -1
  118. package/dist/preview/{chunk.D4TA5XDC.js → chunk.RMR24LFJ.js} +3 -3
  119. package/dist/preview/chunk.ROZTJ6IY.js +6 -0
  120. package/dist/preview/{chunk.6SO64TUI.js → chunk.RPDH32XV.js} +1 -1
  121. package/dist/preview/chunk.RRKI24WY.js +1 -0
  122. package/dist/preview/{chunk.FWUG7Y6C.js → chunk.RYRQ66JN.js} +1 -1
  123. package/dist/preview/chunk.SEHRPTNA.js +7 -0
  124. package/dist/preview/{chunk.MBU7UH6J.js → chunk.SGCW2XRC.js} +1 -1
  125. package/dist/preview/{chunk.4G32374Q.js → chunk.SS7234R6.js} +1 -1
  126. package/dist/preview/{chunk.WICFQROI.js → chunk.SVPKUWZU.js} +1 -1
  127. package/dist/preview/{chunk.2LNSENPV.js → chunk.SWMDFXUX.js} +1 -1
  128. package/dist/preview/{chunk.XFSGB6EU.js → chunk.T3UQ7ZQK.js} +1 -1
  129. package/dist/preview/chunk.T6PU3NKP.js +1 -0
  130. package/dist/preview/{chunk.ZVG3DR5G.js → chunk.T6WHGKWR.js} +1 -1
  131. package/dist/preview/{chunk.JEQO24GS.js → chunk.THVC2BEC.js} +1 -1
  132. package/dist/preview/{chunk.SJALH7IX.js → chunk.TIALD6SC.js} +1 -1
  133. package/dist/preview/{chunk.ULHB3RYK.js → chunk.TM4EPUNO.js} +1 -1
  134. package/dist/preview/chunk.U6ZRJKVM.js +1 -0
  135. package/dist/preview/chunk.UFDJXQQQ.js +32 -0
  136. package/dist/preview/{chunk.Y7H5O2SL.js → chunk.UKQUUPKE.js} +1 -1
  137. package/dist/preview/{chunk.IA5ZBMRD.js → chunk.UQQKDBIH.js} +1 -1
  138. package/dist/preview/{chunk.NUEPFPRA.js → chunk.UVA7AALY.js} +1 -1
  139. package/dist/preview/chunk.UXMPFPFH.js +20 -0
  140. package/dist/preview/chunk.VACKSKGJ.js +1 -0
  141. package/dist/preview/{chunk.ZQHCNFJK.js → chunk.VC3V7HLL.js} +1 -1
  142. package/dist/preview/{chunk.N5WDQAIM.js → chunk.VIH5AX7S.js} +2 -2
  143. package/dist/preview/{chunk.ZKAZA6UJ.js → chunk.VJBBVLGZ.js} +1 -1
  144. package/dist/preview/chunk.VN23AGIY.js +1 -0
  145. package/dist/preview/{chunk.2XSIJH5J.js → chunk.W4BKYSZX.js} +1 -1
  146. package/dist/preview/{chunk.XZWXDQ3N.js → chunk.WEOVK2T4.js} +1 -1
  147. package/dist/preview/chunk.WKI5INH7.js +1 -0
  148. package/dist/preview/chunk.WPXPVD33.js +88 -0
  149. package/dist/preview/chunk.X6KYRBL6.js +1 -0
  150. package/dist/preview/{chunk.LA2DMHZC.js → chunk.Y2YYH3JN.js} +1 -1
  151. package/dist/preview/{chunk.MU3XII7I.js → chunk.Y4FZKUOK.js} +1 -1
  152. package/dist/preview/chunk.Y4S7CDRB.js +1 -0
  153. package/dist/preview/{chunk.C634A6ZC.js → chunk.YP2QSPXU.js} +1 -1
  154. package/dist/preview/{chunk.JHAFQNGC.js → chunk.Z2TDZSMN.js} +1 -1
  155. package/dist/preview/{chunk.2QFKNTAZ.js → chunk.ZN3PUM2I.js} +1 -1
  156. package/dist/preview/index.html +53 -51
  157. package/dist/preview/page.js +2 -2
  158. package/dist/preview/splash.js +57 -0
  159. package/package.json +6 -6
  160. package/dist/preview/chunk.2AWVQ5SW.js +0 -1
  161. package/dist/preview/chunk.3ICWPRRJ.js +0 -1
  162. package/dist/preview/chunk.3RW677X6.js +0 -1
  163. package/dist/preview/chunk.4OEWFPH3.js +0 -1
  164. package/dist/preview/chunk.4STDIZVI.js +0 -2
  165. package/dist/preview/chunk.5T53SF2K.js +0 -1
  166. package/dist/preview/chunk.5X22RKB3.js +0 -1
  167. package/dist/preview/chunk.644FUGSX.js +0 -1
  168. package/dist/preview/chunk.7CETF4A6.js +0 -1
  169. package/dist/preview/chunk.BFDJTWGX.js +0 -88
  170. package/dist/preview/chunk.BJI2C3IZ.js +0 -1
  171. package/dist/preview/chunk.DKXVEVDG.js +0 -1
  172. package/dist/preview/chunk.DXWTM4SH.js +0 -1
  173. package/dist/preview/chunk.F7IQ4B6A.js +0 -1
  174. package/dist/preview/chunk.F7PIW2EM.js +0 -5
  175. package/dist/preview/chunk.G4VMRYS4.js +0 -1
  176. package/dist/preview/chunk.GPWYWALF.js +0 -1
  177. package/dist/preview/chunk.HGVBGSRS.js +0 -6
  178. package/dist/preview/chunk.ISXNAFRC.js +0 -20
  179. package/dist/preview/chunk.JU3BCCQM.js +0 -1
  180. package/dist/preview/chunk.K2AC536Q.js +0 -21
  181. package/dist/preview/chunk.K3UOXAZS.js +0 -1
  182. package/dist/preview/chunk.KNYLY7MH.js +0 -1
  183. package/dist/preview/chunk.LQAT7FA6.js +0 -3
  184. package/dist/preview/chunk.LTI5PKTS.js +0 -1
  185. package/dist/preview/chunk.MBP7VDYM.js +0 -1
  186. package/dist/preview/chunk.MH6CCHEX.js +0 -1
  187. package/dist/preview/chunk.MNRTA2CB.js +0 -1
  188. package/dist/preview/chunk.MYVED5LU.js +0 -1
  189. package/dist/preview/chunk.N7T7VB77.js +0 -25
  190. package/dist/preview/chunk.ODVRO2BJ.js +0 -1
  191. package/dist/preview/chunk.OVPFROL3.js +0 -1
  192. package/dist/preview/chunk.PGA5TUSN.js +0 -1
  193. package/dist/preview/chunk.PHC2MI4C.js +0 -1
  194. package/dist/preview/chunk.PXQVXBNG.js +0 -1
  195. package/dist/preview/chunk.Q5I5M3FR.js +0 -1
  196. package/dist/preview/chunk.QATUGE34.js +0 -1
  197. package/dist/preview/chunk.QL77K3D4.js +0 -1
  198. package/dist/preview/chunk.QUJS63OJ.js +0 -13
  199. package/dist/preview/chunk.RZ5PPQBV.js +0 -1
  200. package/dist/preview/chunk.SCGF4ZPP.js +0 -1
  201. package/dist/preview/chunk.SLAZFFCQ.js +0 -1
  202. package/dist/preview/chunk.SLPJWOKC.js +0 -1
  203. package/dist/preview/chunk.TKLYUVMR.js +0 -32
  204. package/dist/preview/chunk.TMAZNDA6.js +0 -1
  205. package/dist/preview/chunk.UDCDK7XJ.js +0 -4
  206. package/dist/preview/chunk.UO544PZH.js +0 -1
  207. package/dist/preview/chunk.VKHAAH32.js +0 -1
  208. package/dist/preview/chunk.VOOOIECX.js +0 -1
  209. package/dist/preview/chunk.VS6NT5C4.js +0 -1
  210. package/dist/preview/chunk.VUAOCYG2.js +0 -1
  211. package/dist/preview/chunk.VX65S2FA.js +0 -1
  212. package/dist/preview/chunk.X2I3XH2E.js +0 -2
  213. package/dist/preview/chunk.XWWSW3ZV.js +0 -7
  214. package/dist/preview/chunk.YOT7ESDG.js +0 -18
  215. package/dist/preview/chunk.ZYNUMVEC.js +0 -1
@@ -0,0 +1,5 @@
1
+ import{a as $r,b as he,c as Ve,d as Gn,f as Me,g as Ar,h as Be,i as Kn,j as Mi}from"./chunk.FQLNBIQ5.js";var St="en-US",Un=/^\d{4}-\d{2}-\d{2}$/,_r=/^\d{4}(?:-(?:0[1-9]|1[0-2]))?$/,Pr=/^\d{4}(?:-(?:0[1-9]|1[0-2])(?:-\d{2})?)?$/;function Uc(n){if(Un.test(n))return{from:n,to:n};if(!_r.test(n))return;if(n.length===4)return{from:`${n}-01-01`,to:`${n}-12-31`};let e=new Date(Date.UTC(+n.slice(0,4),+n.slice(5,7),0)).getUTCDate();return{from:`${n}-01`,to:`${n}-${String(e).padStart(2,"0")}`}}var Rt=/^\d{4}(-\d\d){2}[T ]\d\d:\d\d(:[\d.]+)?(Z|[+-][\d:]+)?$/,jh=n=>!Number.isNaN(Date.parse(n)),te=(n,e=Date.now())=>{let t=$t(n);return t?Er(e,t).day:new Date(e).toISOString().slice(0,10)},$t=n=>gn(n)??hn,Vn,pn,Bn,hn;function Wc(n){Vn=mn(n.reader),pn=mn(n.app),Bn=gn(n.readerTimeZone),hn=gn(n.appTimeZone)}function qc(n,e){let t=[Vn,pn,Bn,hn];n.reader!==void 0&&(Vn=mn(n.reader)),n.app!==void 0&&(pn=mn(n.app)),n.readerTimeZone!==void 0&&(Bn=gn(n.readerTimeZone)),n.appTimeZone!==void 0&&(hn=gn(n.appTimeZone));try{return e()}finally{[Vn,pn,Bn,hn]=t}}var zi=n=>Vn??mn(n)??pn??St,Dh=n=>mn(n)??pn??St,At=n=>Bn??gn(n)??hn,Hc=n=>At(n)??Intl.DateTimeFormat().resolvedOptions().timeZone??"UTC",Yc=/^\s*([+\-−]|\d)/;var Or=new Map;function gn(n){if(n&&!Or.has(n)){let e=!1;try{new Intl.DateTimeFormat(St,{timeZone:n}),e=!Yc.test(n)}catch{}Or.set(n,e)}return n&&Or.get(n)?n:void 0}var Ue=new Map;function mn(n){if(n&&!Ue.has(n)){let e=!1;try{e=Intl.DateTimeFormat.supportedLocalesOf(n).length>0}catch{}Ue.set(n,e)}return n&&Ue.get(n)?n:void 0}function ze(n,e,t,r){let o=`${t=zi(t)}${r?"#":"@"}${JSON.stringify(e)}`,i=Ue.get(o);return i||Ue.set(o,i=r?new Intl.NumberFormat(t,e):new Intl.DateTimeFormat(t,e)),i.format(n).replace(/ /g," ")}var We="UTC",Ot=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10));function Ne(n,e){return _r.test(n)?n.length===4?n:ji(n,{},e):Un.test(n)?ze(Ot(n),{year:"numeric",month:"short",day:"numeric",timeZone:We},e):n}function Er(n,e){let t=`wall@${e??""}`,r=Ue.get(t);r||Ue.set(t,r=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23",...e?{timeZone:e}:{}}));let o=Object.fromEntries(r.formatToParts(n).map(i=>[i.type,i.value]));return{day:`${o.year}-${o.month}-${o.day}`,minutes:Number(o.hour)%24*60+Number(o.minute)}}function Ni(n,e,t){let r=Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),o=i=>{let s=Er(i,t);return Jc(s.day,s.minutes)-Math.floor(i/6e4)*6e4};return r-o(r-o(r))}var Jc=(n,e)=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),Ii=n=>/[Z+-][\d:]*$/.test(n.slice(16));function Ti(n,e,t,r,o=!1){if(!Rt.test(n))return n;let i=Ii(n),s=Date.parse(n.replace(" ","T")+(i?"":"Z"));if(Number.isNaN(s))return n;let a=i?At(r):We;return ze(s,{...e,hour:"numeric",minute:"2-digit",...i&&o?{timeZoneName:"short"}:{},...a?{timeZone:a}:{}},t)}var Mr=(n,e,t)=>Ti(n,{year:"numeric",month:"short",day:"numeric"},e,t,!0),Xc=(n,e,t)=>Ti(n,{},e,t);function Qc(n,e){if(Un.test(n))return n;if(!Rt.test(n))return;if(!Ii(n))return n.slice(0,10);let t=Date.parse(n.replace(" ","T"));return Number.isNaN(t)?void 0:Er(t,At(e)).day}function ke(n,e,t={maximumFractionDigits:2}){return Number.isFinite(n)?ze(n,t,e,!0):String(n)}function el(n,e={},t){return Un.test(n)?ze(Ot(n),{weekday:e.weekday??"long",month:"short",day:"numeric",...e.year?{year:"numeric"}:{},timeZone:We},t):n}function nl(n,e){return Un.test(n)?ze(Ot(n),{month:"short",day:"numeric",timeZone:We},e):n}function ji(n,e={},t){if(!/^\d{4}-\d{2}/.test(n))return n;let r=e.year??!e.short;return ze(Ot(`${n.slice(0,7)}-01`),{month:e.short?"short":"long",...r?{year:e.short?"2-digit":"numeric"}:{},timeZone:We},t)}var tl=(n,e="short",t)=>ze(Date.UTC(1970,0,4+n),{weekday:e,timeZone:We},t),rl=(n,e)=>ze(Date.UTC(1970,0,1,0,Math.round(n)),{hour:"numeric",minute:"2-digit",timeZone:We},e),ol=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function zr(n,e){return n.includes("-")?n.replace(ol,t=>Ne(t,e)):n}var yn=n=>n.charAt(0).toUpperCase()+n.slice(1),Di=n=>/^.\p{Lu}/u.test(n)?n:n.charAt(0).toLowerCase()+n.slice(1),Fi=(n,e="and")=>n.length>1?`${n.slice(0,-1).join(", ")} ${e} ${n.at(-1)}`:n[0]??"";function K(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return yn(e.replace(/\b[a-z]+\b/g,t=>Li.has(t)?t.toUpperCase():t.endsWith("s")&&Li.has(t.slice(0,-1))?`${t.slice(0,-1).toUpperCase()}s`:t))}var Li=new Set("id url uri api ip ioc cve cvss cwe cpe sku vat iban isbn pdf csv json html css sla kpi roi faq ssn ein vin gps sms crm erp seo utm ui ux ai dns ssl tls http https sql uuid mfa sso cto ceo cfo coo rsvp eta".split(" "));function il(n,e){return{...e,kind:n,edges:e.edges??{}}}function Nr(n,e,t){let r=n?.lifecycle;if(!r)return!0;let o=e[r.field];return r.retired==="date"?typeof o!="string"||o.length===0?!0:o>=(t??te()):!r.retired.includes(o)}function V(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function sl(n){return n.title??K(n.name)}function al(n,e,t){let r=n.tryDefinition(e);return`${ke(t)} ${t===1?Y(r,e):ce(n,e).toLowerCase()}`}function ce(n,e){return n.tryDefinition(e)?.plural??`${K(e).toLowerCase()}s`}function dl(n,e){return yn(ce(n,e))}function cl(n,e){let t=ce(n,e);return`All ${/^[A-Z][a-z]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t}`}function _t(n,e){let t=n?.computed&&Object.hasOwn(n.computed,e)?n.computed[e]:void 0;return n?.display?.labels?.[e]??(typeof t=="object"?t.label:void 0)??(e==="label"?"Name":K(e))}var ll=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,ul=/^(hour|honest|hono[ur]r?|heir)/;function Zi(n){let e=K(n).toLowerCase();return ul.test(e)?"an":ll.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function bn(n){return`${Zi(n)} ${K(n).toLowerCase()}`}function Y(n,e){return n?.noun??K(e).toLowerCase()}function jr(n){let e=Object.values(n).filter(r=>typeof r=="number");return Object.entries(n).filter(([r,o])=>e.indexOf(+r)===-1).map(([r,o])=>o)}function Dr(n,e="|"){return n.map(t=>Gr(t)).join(e)}function Gi(n,e){return typeof e=="bigint"?e.toString():e}var Tr=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function Ki(n){return new Tr(n)}function Vi(n){return n==null}function Fr(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function Bi(n,e){let t=n/e,r=Math.round(t),o=4*Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-r)<o?0:t-r}var Ci=Symbol("evaluating");function Ui(n,e,t){let r;Object.defineProperty(n,e,{get(){if(r!==Ci)return r===void 0&&(r=Ci,r=t()),r},set(o){Object.defineProperty(n,e,{value:o})},configurable:!0})}function Et(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function Wi(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function Lr(n){return Wi(n._zod.def)??n._zod.def.shape}function qi(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return Et(this,e,r),r},enumerable:!0,configurable:!0})}function Hi(n,e,t){e in n?Et(n,e,t):n[e]=t}function fl(n,e,t,r){let o=Lr(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?qi(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):Hi(n,i,r?r(s.value,i):s.value))}}function pl(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?qi(n,t,()=>e[t]):Hi(n,t,r.value))}}function Yi(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var Zr="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function Pt(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Cr(n){if(Pt(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(Pt(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var Ji=new Set(["string","number","symbol"]);function qn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function vn(n,e,t){let r=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(r._zod.parent=n),r}function T(n){let e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function Gr(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function Xi(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var Qi={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function es(n,e){if(!Cr(e))throw new Error("Invalid input to extend: expected a plain object");let t=n._zod.def.checks;if(t&&t.length>0){let o=Lr(n);for(let i of Reflect.ownKeys(e))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return vn(n,Yi(n._zod.def,{shape:hl(n,e)}))}function hl(n,e){let t={};return fl(t,n,Reflect.ownKeys(Lr(n))),pl(t,e),t}function Se(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue!==!0)return!0;return!1}function ns(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue===!1)return!0;return!1}function Te(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function Wn(n){return typeof n=="string"?n:n?.message}function Kr(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function Re(n,e,t){var r;let o=n.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=n).schema??(r.schema=n.inst):n.schema=n.inst);let i=n.schema!==n.inst?n.schema?._zod.def?.error:void 0,s=n.message?n.message:Wn(n.inst?._zod.def?.error?.(n))??Wn(i?.(n))??Wn(e?.error?.(n))??Wn(t.customError?.(n))??Wn(t.localeError?.(n))??"Invalid input",a={};for(let d of Object.keys(n))d==="inst"||d==="schema"||d==="continue"||d==="input"||d==="__proto__"||(a[d]=n[d]);return a.path??(a.path=[]),a.message=s,e?.reportInput&&(a.input=n.input),a}var gl=/[\uD800-\uDBFF]/;function Vr(n){let e=n.length;if(!gl.test(n))return e;let t=e;for(let r=0;r<e-1;r++)(n.charCodeAt(r)&64512)===55296&&(n.charCodeAt(r+1)&64512)===56320&&(t--,r++);return t}function Br(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function ts(n){let e=typeof n;switch(e){case"number":return Number.isNaN(n)?"nan":"number";case"object":{if(n===null)return"null";if(Array.isArray(n))return"array";let t=n;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&"constructor"in t&&t.constructor)return t.constructor.name}}return e}function Hn(...n){let[e,t,r]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:r}:{...e}}function rs(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):ml(n,t,r.value)}}function qe(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function Ur(n,e,t){return qe(n,e,t,!1)}function ml(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:qe(this,e,t.bind(this))},set(r){qe(this,e,r)}})}function yl(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var Ir,Ie=!1,bl={configurable:!0,get(){Ie=!0}};function J(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&Ir!==n._zod){Ir=void 0;return}Ir=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,bl);let o=Ie;Ie=!1;try{let i=t(this);return Ie?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),Ie=Ie||o,i}catch(i){throw delete this[e],Ie=Ie||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function os(n,e,t,r){let o=yl(n,e);o&&Object.defineProperty(o,e,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,e,i),i.value=t(this),Object.defineProperty(this,e,i),i.value},set(i){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var is;var Wr={value:void 0,enumerable:!1},ss="captureStackTrace"in Error?Error:null;function vl(n){let e=ss;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return ss=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function P(n,e,t,r){let o={};function i(c){this.def=c,this.constr=f,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(c,p){if(c._zod){if(c._zod.traits.has(n))return}else{Wr.value=new i(p);try{Object.defineProperty(c,"_zod",Wr)}finally{Wr.value=void 0}}if(c._zod.traits.add(n),e(c,p),a){let h=Object.getPrototypeOf(c),b=c._zod.constr.prototype,v=h;for(;v&&v!==b;)v=Object.getPrototypeOf(v);let x=v??h;a.has(x)||(a.add(x),rs(x,s))}let g=f.prototype;for(let h in g)Object.prototype.hasOwnProperty.call(g,h)&&(h in c||(c[h]=g[h].bind(c)))}let u=r?.Parent??Object;class l extends u{}Object.defineProperty(l,"name",{value:n});function f(c){let p=r?.Parent?vl(l):this;d(p,c);let g=p._zod.deferred;if(g){for(let b of g)b();p._zod.deferred=void 0}let h=globalThis.__zod_globalConfig?.postProcessor;return h&&h(p),p}return Object.defineProperty(f,"init",{value:d}),Object.defineProperty(f,Symbol.hasInstance,{value:c=>r?.Parent&&c instanceof r.Parent?!0:c?._zod?.traits?.has(n)}),Object.defineProperty(f,"name",{value:n}),f}var Ae=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(is=globalThis).__zod_globalConfig??(is.__zod_globalConfig={});var wn=globalThis.__zod_globalConfig;function re(n){return n&&Object.assign(wn,n),wn}function wl(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,Gi,2)),n.message}function xl(n){this._zod.message=n}var kl={get:wl,set:xl,enumerable:!0,configurable:!0},Hr={value:void 0,enumerable:!1},as=new WeakSet([Object.prototype,Error.prototype]),ds=(n,e)=>{n.name="$ZodError",Hr.value=e,Object.defineProperty(n,"issues",Hr),Hr.value=void 0,Object.defineProperty(n,"message",kl);let t=Object.getPrototypeOf(n);as.has(t)||(as.add(t),Object.defineProperty(t,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},qh=P("$ZodError",ds),Yn=P("$ZodError",ds,void 0,{Parent:Error});var Rl=n=>{let e=(t,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new Ae;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>Re(u,s,re())));throw Zr(d,i?.callee??e),d}return a.value};return e},Yr=Rl(Yn),$l=n=>{let e=async(t,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>Re(u,s,re())));throw Zr(d,i?.callee??e),d}return a.value};return e},Jr=$l(Yn),Al=n=>(e,t,r)=>{let o=r?{...r,async:!1}:{async:!1},i=e._zod.run({value:t,issues:[]},o);if(i instanceof Promise)throw new Ae;return i.issues.length?cs(n,i.issues,o):{success:!0,data:i.value}},Xr=Al(Yn);function cs(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>Re(o,t,re()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var Ol=n=>async(e,t,r)=>{let o=r?{...r,async:!0}:{async:!0},i=e._zod.run({value:t,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?cs(n,i.issues,o):{success:!0,data:i.value}},Qr=Ol(Yn);var ls=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var us=/^https?$/;var fs=/^[\s\S]{0,}$/;var eo=/^-?\d+(?:\.\d+)?$/,ps=/^(?:true|false)$/i,hs=/^null$/i;var oe=P("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var gs=n=>{let e=n.value;return!Vi(e)&&e.length!==void 0},Mt={number:"number",bigint:"bigint",object:"date"},ms=P("$ZodCheckLessThan",(n,e)=>{oe.init(n,e);let t=Mt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:Mt[typeof r.value]??t,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),ys=P("$ZodCheckGreaterThan",(n,e)=>{oe.init(n,e);let t=Mt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:Mt[typeof r.value]??t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),bs=P("$ZodCheckMultipleOf",(n,e)=>{oe.init(n,e),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?e.value!==BigInt(0)&&t.value%e.value===BigInt(0):Bi(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),vs=P("$ZodCheckNumberFormat",(n,e)=>{oe.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=Qi[e.format];n._zod.check=s=>{let a=s.value;if(t){if(!Number.isInteger(a)){s.issues.push({expected:r,format:e.format,code:"invalid_type",continue:!1,input:a,inst:n});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:n,continue:!e.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:n,continue:!e.abort})}});var ws=P("$ZodCheckMaxLength",(n,e)=>{var t;oe.init(n,e),(t=n._zod.def).when??(t.when=gs),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?Vr(o):i)<=e.maximum)return;let a=Br(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),xs=P("$ZodCheckMinLength",(n,e)=>{var t;oe.init(n,e),(t=n._zod.def).when??(t.when=gs),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?Vr(o):i)>=e.minimum)return;let a=Br(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var to=P("$ZodCheckStringFormat",(n,e)=>{var t,r;oe.init(n,e),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(r=n._zod).check??(r.check=()=>{})}),ks=P("$ZodCheckRegex",(n,e)=>{to.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}});var Rs={major:4,minor:6,patch:5};var U=P("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=Rs;let r=n._zod.def.checks,o=n._zod.traits.has("$ZodCheck")?[n,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(n);if(o.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{let i=(a,d,u)=>{if(a.memo)return a;let l=Se(a),f;for(let c of d){if(c._zod.def.when){if(ns(a)||!c._zod.def.when(a))continue}else if(l)continue;let p=a.issues.length,g=c._zod.check(a);if(g instanceof Promise&&u?.async===!1)throw new Ae;if(f||g instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await g,a.issues.length!==p&&(Kr(a.issues,p,n),l||(l=Se(a,p)))});else{if(a.issues.length===p)continue;Kr(a.issues,p,n),l||(l=Se(a,p))}}return f?f.then(()=>a):a},s=(a,d,u)=>{if(Se(a))return a.aborted=!0,a;let l=i(d,o,u);if(l instanceof Promise){if(u.async===!1)throw new Ae;return l.then(f=>n._zod.parse(f,u))}return n._zod.parse(l,u)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let l=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return l instanceof Promise?l.then(f=>s(f,a,d)):s(l,a,d)}let u=n._zod.parse(a,d);if(u instanceof Promise){if(d.async===!1)throw new Ae;return u.then(l=>i(l,o,d))}return i(u,o,d)}}},{get"~standard"(){return Ur(this,"~standard",Pl(this))},set"~standard"(n){qe(this,"~standard",n)}}),Es=(n,e)=>n.issues.length?{issues:n.issues.map(t=>Re(t,e,re()))}:{value:n.value};async function _l(n,e){let t={async:!0};return Es(await n._zod.run({value:e,issues:[]},t),t)}function Pl(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return Es(r,t)}catch{}return _l(n,e)},vendor:"zod",version:1}}var ro=P("$ZodString",(n,e)=>{U.init(n,e),n._zod.pattern=e.pattern??fs,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),It=P("$ZodStringFormat",(n,e)=>{to.init(n,e),ro.init(n,e)});var Ms=P("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=ls),It.init(n,e)}),zs=1,zt=2;function El(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function Ml(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?El(n)||zt:zl(n,e)}function zl(n,e){if(!e.normalize&&e.protocol?.source===us.source&&!/^https?:\/\//i.test(n))return zs;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??zt}return new URL(n)}catch{return zt}}var Nl=/[\t\n\r]/g;function $s(n){return n.replace(Nl,"")}function Il(n,e){return e.lastIndex=0,e.test(n.hostname)}function Tl(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var Ns=P("$ZodURL",(n,e)=>{It.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=Ml(r,e);if(o===zs){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===zt){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=$s(r);return}e.hostname&&!Il(o,e.hostname)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort}),e.protocol&&!Tl(o,e.protocol)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort}),t.value=e.normalize?o.href:$s(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var oo=P("$ZodNumber",(n,e)=>{U.init(n,e),n._zod.pattern=eo,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}let o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;let i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...i?{received:i}:{}}),t}}),Is=P("$ZodNumberFormat",(n,e)=>{vs.init(n,e),oo.init(n,e)}),Ts=P("$ZodBoolean",(n,e)=>{U.init(n,e),n._zod.pattern=ps,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=!!t.value}catch{}let o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}});var js=P("$ZodNull",(n,e)=>{U.init(n,e),n._zod.pattern=hs,n._zod.values=new Set([null]),n._zod.parse=(t,r)=>{let o=t.value;return o===null||t.issues.push({expected:"null",code:"invalid_type",input:o,inst:n}),t}});var Ds=P("$ZodUnknown",(n,e)=>{U.init(n,e),n._zod.parse=t=>t}),Fs=P("$ZodNever",(n,e)=>{U.init(n,e),n._zod.parse=(t,r)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function As(n,e,t){n.issues.length&&e.issues.push(...Te(t,n.issues)),e.value[t]=n.value}var Ls=P("$ZodArray",(n,e)=>{U.init(n,e);let t=wn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:n}),r;r.value=t?t.alloc(n,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let d=0;d<i.length;d++){let u=i[d],l=e.element._zod.run({value:u,issues:[]},o);if(l instanceof Promise)s.push(l.then(f=>As(f,r,d)));else if(As(l,r,d),a&&l.issues.length!==0&&Se(l))break}return s.length?Promise.all(s).then(()=>r):r}});function Nt(n,e,t,r,o,i){let s=t in r,a=i==="optional";if(!(!s&&a&&o==="optional")){if(n.issues.length){if(o!==void 0&&a&&!s)return;e.issues.push(...Te(t,n.issues))}if(!s&&o===void 0){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?(s||o==="defaulted"&&!a)&&(e.value[t]=void 0):e.value[t]=n.value}}var jl=[];function Dl(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:jl,o=r.length?[...e,...r]:e;for(let s of o)if(!n.shape?.[s]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=Xi(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function Fl(n,e,t,r,o,i,s){let a=[],d=o.keySet,u=o.catchall._zod,l=u.def.type,f=u.optin,c=u.optout,p=0;for(let g in e){if(s&&t.issues.length!==p){if(Se(t,p))break;p=t.issues.length}if(d.has(g))continue;if(g==="__proto__"){l==="never"&&a.push(g);continue}if(l==="never"){a.push(g);continue}let h=u.run({value:e[g],issues:[]},r);h instanceof Promise?n.push(h.then(b=>Nt(b,t,g,e,f,c))):Nt(h,t,g,e,f,c)}return a.length&&t.issues.push({code:"unrecognized_keys",keys:a,input:e,inst:i,continue:!0}),n.length?Promise.all(n).then(()=>t):t}var Zs=P("$ZodObject",(n,e)=>{U.init(n,e);let t=Object.getOwnPropertyDescriptor(e,"shape"),r=t?.get?t.get.raw:e.shape??{};if(r){let u=()=>{let l={...r};return Object.defineProperty(e,"shape",{value:l}),u.raw=l,l};u.raw=r,Object.defineProperty(e,"shape",{get:u})}let o=Ki(()=>Dl(e));J(n,"propValues",u=>{let l=u.def.shape,f={};for(let c in l){let p=l[c]._zod;if(p.values){Object.prototype.hasOwnProperty.call(f,c)||Et(f,c,new Set);for(let g of p.values)f[c].add(g);p.optin!==void 0&&f[c].add(void 0)}}return f});let i=Pt,s=e.catchall,a,d=wn.memoizer;d?.attach(n),n._zod.parse=(u,l)=>{a??(a=o.value);let f=u.value;if(!i(f))return u.issues.push({expected:"object",code:"invalid_type",input:f,inst:n}),u;u.value=d?d.alloc(n,u,{},l):{};let c=[],p=a.shape,g=l?.abortEarly,h=u.issues.length;for(let b of a.allKeys){if(g&&u.issues.length!==h){if(Se(u,h))break;h=u.issues.length}if(b==="__proto__")continue;let v=p[b],x=v._zod.optin,$=v._zod.optout,k=v._zod.run({value:f[b],issues:[]},l);k instanceof Promise?c.push(k.then(O=>Nt(O,u,b,f,x,$))):Nt(k,u,b,f,x,$)}return s?Fl(c,f,u,l,o.value,n,g===!0):c.length?Promise.all(c).then(()=>u):u}});function Os(n,e,t,r){for(let i of n)if(i.issues.length===0)return e.value=i.value,e;let o=n.filter(i=>!Se(i));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(i=>i.issues.map(s=>Re(s,r,re())))}),e)}var Cs=P("$ZodUnion",(n,e)=>{U.init(n,e),J(n,"optin",r=>r.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),J(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),J(n,"values",r=>{if(r.def.options.every(o=>o._zod.values))return new Set(r.def.options.flatMap(o=>Array.from(o._zod.values)))}),J(n,"pattern",r=>{if(r.def.options.every(o=>o._zod.pattern)){let o=r.def.options.map(i=>i._zod.pattern);return new RegExp(`^(${o.map(i=>Fr(i.source)).join("|")})$`)}});let t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(r,o)=>{if(t)return t(r,o);let i=!1,s=[];for(let a of e.options){let d=a._zod.run({value:r.value,issues:[]},o);if(d instanceof Promise)s.push(d),i=!0;else{if(d.issues.length===0)return d;s.push(d)}}return i?Promise.all(s).then(a=>Os(a,r,n,o)):Os(s,r,n,o)}});var Gs=P("$ZodRecord",(n,e)=>{U.init(n,e);let t=wn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Cr(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:n}),r;let s=[],a=e.keyType._zod.values;if(a&&!e.partial){r.value=t?t.alloc(n,r,{},o):{};let d=new Set;for(let l of a)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){if(d.add(typeof l=="number"?l.toString():l),l==="__proto__")continue;let f=e.keyType._zod.run({value:l,issues:[]},o);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(f.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:f.issues.map(g=>Re(g,o,re())),input:l,path:[l],inst:n});continue}let c=f.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[l],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...Te(l,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...Te(l,p.issues)),r.value[c]=p.value)}let u;for(let l in i)if(!d.has(l))if(e.mode==="loose"){if(l==="__proto__")continue;r.value[l]=i[l]}else u=u??[],u.push(l);u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:u,continue:!0})}else{r.value=t?t.alloc(n,r,{},o):{};let d;for(let u of Reflect.ownKeys(i)){if(u==="__proto__"||!Object.prototype.propertyIsEnumerable.call(i,u))continue;let l=e.keyType._zod.run({value:u,issues:[]},o);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof u=="string"&&eo.test(u)&&l.issues.length){let g=e.keyType._zod.run({value:Number(u),issues:[]},o);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");g.issues.length===0&&(l=g)}if(l.issues.length){e.mode==="loose"?r.value[u]=i[u]:a?(d=d??[],d.push(u)):r.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(g=>Re(g,o,re())),input:u,path:[u],inst:n});continue}let c=l.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[u],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...Te(u,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...Te(u,p.issues)),r.value[c]=p.value)}d&&d.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:d,continue:!0})}return s.length?Promise.all(s).then(()=>r):r}});var Ks=P("$ZodEnum",(n,e)=>{U.init(n,e);let t=jr(e.entries),r=new Set(t);n._zod.values=r,J(n,"pattern",o=>{let i=jr(o.def.entries).filter(s=>Ji.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>qn(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(o,i)=>{let s=o.value;return r.has(s)||o.issues.push({code:"invalid_value",values:t,input:s,inst:n}),o}}),Vs=P("$ZodLiteral",(n,e)=>{U.init(n,e);let t=new Set(e.values);n._zod.values=t,J(n,"pattern",r=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map(i=>typeof i=="string"?qn(i):i?qn(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(r,o)=>{let i=r.value;return t.has(i)||r.issues.push({code:"invalid_value",values:e.values,input:i,inst:n}),r}});function _s(n,e){return n.value=e.issues.length?void 0:e.value,n}var Bs=P("$ZodOptional",(n,e)=>{U.init(n,e),J(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",J(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),J(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${Fr(r.source)})?$`):void 0}),n._zod.parse=(t,r)=>{if(t.value===void 0){if(e.innerType._zod.optin!=="defaulted")return t;let o=e.innerType._zod.run({value:t.value,issues:[]},r);return o instanceof Promise?o.then(i=>_s(t,i)):_s(t,o)}return e.innerType._zod.run(t,r)}});var Us=P("$ZodLazy",(n,e)=>{U.init(n,e),Ui(n._zod,"innerType",()=>{let t=e;return t._cachedInner||(t._cachedInner=e.getter()),t._cachedInner}),J(n,"pattern",t=>t.innerType?._zod?.pattern),J(n,"propValues",t=>t.innerType?._zod?.propValues),J(n,"optin",t=>t.innerType?._zod?.optin??void 0),J(n,"optout",t=>t.innerType?._zod?.optout??void 0),n._zod.parse=(t,r)=>n._zod.innerType._zod.run(t,r)}),Ws=P("$ZodCustom",(n,e)=>{oe.init(n,e),U.init(n,e),n._zod.parse=(t,r)=>t,n._zod.check=t=>{let r=t.value,o=e.fn(r);if(o instanceof Promise)return o.then(i=>Ps(i,t,r,n));Ps(o,t,r,n)}});function Ps(n,e,t,r){if(!n){let o={code:"custom",input:t,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(o.params=r._zod.def.params),e.issues.push(Hn(o))}}var Ll=()=>{let n={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function e(i){return n[i]??null}let t={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){return i==="number"&&typeof s=="number"&&!Number.isFinite(s)?String(s):r[i]??i}return i=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=ts(i.input),d=o(a,i.input);return`Invalid input: expected ${s}, received ${d}`}case"invalid_value":return i.values.length===1?`Invalid input: expected ${Gr(i.values[0])}`:`Invalid option: expected one of ${Dr(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=e(i.origin);return a?`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`:`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=e(i.origin);return a?`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`:`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;return s.format==="starts_with"?`Invalid string: must start with "${s.prefix}"`:s.format==="ends_with"?`Invalid string: must end with "${s.suffix}"`:s.format==="includes"?`Invalid string: must include "${s.includes}"`:s.format==="regex"?`Invalid string: must match pattern ${s.pattern}`:`Invalid ${t[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${Dr(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":return i.options&&Array.isArray(i.options)&&i.options.length>0?`Invalid discriminator value. Expected ${i.options.map(a=>`'${a}'`).join(" | ")}`:i.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function qs(){return{localeError:Ll()}}var Hs;var io=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let r=t[0];return this._map.set(e,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let r={...this.get(t)??{}};delete r.id;let o={...r,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Ys(){return new io}(Hs=globalThis).__zod_globalRegistry??(Hs.__zod_globalRegistry=Ys());var xn=globalThis.__zod_globalRegistry;function Js(n){return n.checks&&(n.checks=[...n.checks]),n}function Xs(n,e){return new n(Js({type:"string",...T(e)}))}function Qs(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...T(e)})}function ea(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...T(e)})}function na(n,e){return new n(Js({type:"number",checks:[],...T(e)}))}function ta(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...T(e)})}function ra(n,e){return new n({type:"boolean",...T(e)})}function oa(n,e){return new n({type:"null",...T(e)})}function ia(n){return new n({type:"unknown"})}function sa(n,e){return new n({type:"never",...T(e)})}function aa(n,e){return new ms({check:"less_than",...T(e),value:n,inclusive:!0})}function da(n,e){return new ys({check:"greater_than",...T(e),value:n,inclusive:!0})}function Kl(n,e){return new bs({check:"multiple_of",...T(e),value:n})}function so(n,e){return new ws({check:"max_length",...T(e),maximum:n})}function Jn(n,e){return new xs({check:"min_length",...T(e),minimum:n})}function Xn(n,e){return new ks({check:"string_format",format:"regex",...T(e),pattern:n})}function ca(n,e,t){return new n({type:"custom",check:"custom",fn:e,...T(t)})}function la(n,e){let t=Vl(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(Hn(o,r.value,t._zod.def));else{let i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),"input"in i||(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),r.issues.push(Hn(i))}},n(r.value,r)),e);return t}function Vl(n,e){let t=new oe({check:"custom",...T(e)});return t._zod.check=n,t}function ua(n){let e=new oe({check:"describe"});return e._zod.onattach=[t=>{let r=xn.get(t)??{};xn.add(t,{...r,description:n})}],e._zod.check=()=>{},e}var X=P("ZodMiniType",(n,e)=>{if(!n._zod)throw new Error("Uninitialized schema in ZodMiniType.");U.init(n,e),n.def=e,n.type=e.type},{get with(){return this.check},set with(n){qe(this,"with",n)},parse(n,e){return Yr(this,n,e,{callee:this.parse})},parseAsync(n,e){return Jr(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return Xr(this,n,e)},safeParseAsync(n,e){return Qr(this,n,e)},check(...n){let e=this.def;return this.clone({...e,checks:[...e.checks??[],...n.map(t=>typeof t=="function"?{_zod:{check:t,def:{check:"custom"},onattach:[]}}:t)]},{parent:!0})},clone(n,e){return vn(this,n,e)},brand(){return this},register(n,e){return n.add(this,e),this},apply(n,...e){return e.length===0?n(this):n(this,...e)}}),pa=P("ZodMiniString",(n,e)=>{ro.init(n,e),X.init(n,e)});function L(n){return Xs(pa,n)}var ha=P("ZodMiniStringFormat",(n,e)=>{It.init(n,e),pa.init(n,e)}),Wl=P("ZodMiniEmail",(n,e)=>{Ms.init(n,e),ha.init(n,e)});function Yy(n){return Qs(Wl,n)}var ql=P("ZodMiniURL",(n,e)=>{Ns.init(n,e),ha.init(n,e)});function Jy(n){return ea(ql,n)}var ga=P("ZodMiniNumber",(n,e)=>{oo.init(n,e),X.init(n,e)});function He(n){return na(ga,n)}var Hl=P("ZodMiniNumberFormat",(n,e)=>{Is.init(n,e),ga.init(n,e)});function Xy(n){return ta(Hl,n)}var Yl=P("ZodMiniBoolean",(n,e)=>{Ts.init(n,e),X.init(n,e)});function Qy(n){return ra(Yl,n)}var Jl=P("ZodMiniNull",(n,e)=>{js.init(n,e),X.init(n,e)});function ma(n){return oa(Jl,n)}var Xl=P("ZodMiniUnknown",(n,e)=>{Ds.init(n,e),X.init(n,e)});function ao(){return ia(Xl)}var Ql=P("ZodMiniNever",(n,e)=>{Fs.init(n,e),X.init(n,e)});function eu(n){return sa(Ql,n)}var nu=P("ZodMiniArray",(n,e)=>{Ls.init(n,e),X.init(n,e)});function eb(n,e){return new nu({type:"array",element:n,...T(e)})}var co=P("ZodMiniObject",(n,e)=>{Zs.init(n,e),X.init(n,e),os(n,"shape",t=>t._zod.def.shape,!1)});function ge(n,e){let t={type:"object",shape:n??{},...T(e)};return new co(t)}function kn(n,e){return new co({type:"object",shape:n,catchall:eu(),...T(e)})}function nb(n,e){return new co({type:"object",shape:n,catchall:ao(),...T(e)})}function ya(n,e){return es(n,e)}var tu=P("ZodMiniUnion",(n,e)=>{Cs.init(n,e),X.init(n,e)});function ba(n,e){return new tu({type:"union",options:n,...T(e)})}var fa=P("ZodMiniRecord",(n,e)=>{Gs.init(n,e),X.init(n,e)});function tb(n,e,t){return!e||!e._zod?new fa({type:"record",keyType:L(),valueType:n,...T(e)}):new fa({type:"record",keyType:n,valueType:e,...T(t)})}var ru=P("ZodMiniEnum",(n,e)=>{Ks.init(n,e),X.init(n,e),n.options=[...n._zod.values]});function va(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new ru({type:"enum",entries:t,...T(e)})}var ou=P("ZodMiniLiteral",(n,e)=>{Vs.init(n,e),X.init(n,e)});function Qn(n,e){return new ou({type:"literal",values:Array.isArray(n)?n:[n],...T(e)})}var iu=P("ZodMiniOptional",(n,e)=>{Bs.init(n,e),X.init(n,e)});function Q(n){return new iu({type:"optional",innerType:n})}var su=P("ZodMiniLazy",(n,e)=>{Us.init(n,e),X.init(n,e)});function rb(n){return new su({type:"lazy",getter:n})}var au=P("ZodMiniCustom",(n,e)=>{Ws.init(n,e),X.init(n,e)});function Tt(n,e={}){return ca(au,n,e)}function ob(n,e){return la(n,e)}var ib=ua;re().localeError||re(qs());var F=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,du=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=xn.get(n)?.description;return typeof e=="string"?e:void 0};var cu=(n,e)=>n?.src?.(e)??e,jt=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),lo=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function uo(n){let e=n??{};return jt(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&lo(e.bytes,0)&&lo(e.width)&&lo(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)&&(e.poster===void 0||jt(e.poster))&&(e.captions===void 0||jt(e.captions))&&(e.duration===void 0||typeof e.duration=="number"&&Number.isFinite(e.duration)&&e.duration>0)&&(e.at===void 0||wa(e.at)!==void 0)}function wa(n){return typeof n=="string"&&n.length<41&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:?\d{2})$/.test(n)&&Number.isFinite(Date.parse(n))?n:void 0}var xa=n=>n.type.startsWith("image/"),ka=n=>n.type.startsWith("video/");function lu(n){let e=n.duration===void 0?0:Math.round(n.duration);if(e<1)return"a video";if(e<60)return`a ${e}-second video`;let t=Math.round(e/60);return t<60?`a ${t}-minute video`:`a ${Math.floor(t/60)}-hour${t%60>0?` ${t%60}-minute`:""} video`}var uu=(n,e)=>e==="image"?xa(n):e==="video"?ka(n):!0,fu=n=>`${n==="image"?"an image":n==="video"?"a video":"a file"} the host stored, at a path on this host`,et=n=>(Array.isArray(n)?n:[n]).filter(uo),Sa=Symbol.for("@graview/core:file"),pu=(n,e)=>(Object.defineProperty(F(n),Sa,{value:e,enumerable:!0}),n);function Ra(n){let e=F(n);return e?.[Sa]??(e?.innerType?Ra(e.innerType):void 0)}var hu=()=>({href:L(),name:L(),type:L(),bytes:He(),width:Q(He()),height:Q(He()),caption:Q(L()),poster:Q(L()),duration:Q(He()),captions:Q(L()),at:Q(L())});function sv(n){return pu(ge(hu()).check(Tt(e=>uo(e)&&uu(e,n),fu(n))),n)}var Dt=/^(?:https?:\/\/[^\s<>"'`\\]+|@?[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)$/,Ft=n=>typeof n=="string"&&n.length<501&&Dt.test(n);var $a=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,gu=/^@(?:https?:\/\/[^\s<>"'`\\#?]+|[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function Aa(n){if(typeof n!="string"||!n.startsWith("@")||!gu.test(n))return;let e=n.lastIndexOf("/"),t=n.slice(0,e),r=n.slice(e+1),o=/^@https?:\/\//.test(t)||!t.includes("/")?t.slice(1):t;return Ft(o)?{address:o,kind:r}:void 0}var mu=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*:\S[^\n]{0,199}$/,yu=n=>`${n.kind}:${n.id}`;function Oa(n,e){if(typeof n!="string"||!mu.test(n))return;let t=n.indexOf(":"),r=n.slice(0,t);return e.kinds.includes(r)?{address:e.address,kind:r,id:n.slice(t+1)}:void 0}function bu(n,e){return(Array.isArray(n)?n:n==null?[]:[n]).flatMap(r=>{let o=Oa(r,e);return o?[o]:[]})}var _a=Symbol.for("@graview/core:linked"),lv=(n,e)=>(Object.defineProperty($a(n),_a,{value:e,enumerable:!0}),n);function nt(n){let e=$a(n);return e?e[_a]??nt(e.innerType):void 0}function vu(n){let e=n?.fields?.shape??{},t=new Map;for(let[r,o]of Object.entries(e)){let i=nt(o);i&&t.set(r,i)}return t}function wu(n){if(n.to==="*"||n.to.length===0)return;let e=n.to.map(Aa);if(e.some(r=>!r))return;let t=e[0].address;if(!e.some(r=>r.address!==t))return{address:t,kinds:[...new Set(e.map(r=>r.kind))],cardinality:n.cardinality??"many",...n.description?{description:n.description}:{}}}var xu=n=>n.to!=="*"&&n.to.some(e=>typeof e=="string"&&e.startsWith("@"));function uv(n){return Object.fromEntries(Object.entries(n??{}).filter(([,e])=>!xu(e)))}function fv(n){let e=new Map;for(let[t,r]of Object.entries(n??{})){let o=wu(r);o&&e.set(t,o)}return e}var fo=new WeakMap;function ku(n,e){e?fo.set(n,e):fo.delete(n)}var Pa=n=>fo.get(n);var Lt=["sun","mon","tue","wed","thu","fri","sat"],Su=["day","week","month","year"],Rn=n=>`${n}Repeat`,rt=n=>n.endsWith("Repeat")&&n.length>6?n.slice(0,-6):void 0,za=/^\d{4}-\d{2}-\d{2}$/,Na=Symbol.for("@graview/core:repeat");function Zt(n){let e=F(n);return!!e&&(e[Na]===1||Zt(e.innerType))}var Ru=n=>(Object.defineProperty(F(n),Na,{value:1,enumerable:!0}),n),po=(n,e,t)=>n===void 0||Number.isInteger(n)&&n>=e&&n<=t,Ea=(n,e)=>n===void 0||Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&za.test(t)),$u=["every","interval","on","until","count","except","continues"],Ia=n=>$n(n)&&Object.keys(n).every(e=>$u.includes(e))&&po(n.interval,1,99)&&po(n.count,1,1e3)&&Ea(n.until===void 0?void 0:[n.until],1)&&Ea(n.except,500)&&(n.continues===void 0||typeof n.continues=="string"&&n.continues.length<=200)&&(n.on===void 0||Array.isArray(n.on)&&n.on.length>0&&n.on.length<=31&&n.on.every(e=>n.every==="week"?Lt.includes(e):n.every==="month"&&e!==0&&po(e,-1,31))),gv=()=>Ru(ao().check(Tt(n=>n===null||Ia(n),"how a date repeats, or null"))),tt=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10)),Ta=n=>new Date(n).toISOString().slice(0,10),ho=(n,e)=>Ta(tt(n)+e*864e5),Ma=(n,e,t)=>{let r=new Date(Date.UTC(n,e+1,0)).getUTCDate();return Ta(Date.UTC(n,e,t<0||t>r?r:t))},$n=n=>typeof n=="object"&&n!==null&&Su.includes(n.every);function Sn(n,e,t={}){let r=n.slice(0,10),o=n.slice(10),i=[];if(!za.test(r))return i;let s=Math.max(1,e.interval??1),a=e.every,d=t.from&&t.from>r?t.from.slice(0,10):r,u=[e.until,t.to?.slice(0,10)].filter(Boolean).sort()[0],l=t.limit??1e3,f=new Set(e.except??[]),c=+r.slice(0,4),p=+r.slice(5,7)-1,g=+r.slice(8,10),h=ho(r,-new Date(tt(r)).getUTCDay()),b=(e.on?.length?e.on:[a==="week"?Lt[new Date(tt(r)).getUTCDay()]:g]).map(O=>typeof O=="string"?Lt.indexOf(O):O),v=a==="day"?1:a==="week"?7:0,x=(+d.slice(0,4)-c)*12+(+d.slice(5,7)-1-p),$=e.count?0:Math.max(0,Math.floor((v?(tt(d)-tt(v===7?h:r))/864e5/v:a==="month"?x:x/12)/s)-1),k=0;for(let O=0;O<5e4&&i.length<l;O++,$++){let A=$*s,m=a==="day"?[ho(r,A)]:a==="week"?b.map(y=>ho(h,A*7+y)):a==="month"?b.map(y=>Ma(c,p+A,y)):[Ma(c+A,p,g)];for(let y of[...new Set(m)].sort())if(!(y<r)&&(u&&y>u||e.count&&k>=e.count||(k++,y>=d&&!f.has(y)&&i.push(y+o),i.length>=l)))return i}return i}function ja(n,e,t){if(!$n(e)||typeof n!="string")return n;let r=Sn(n,e,{from:t,limit:1})[0];if(r)return r;let o=e.until||e.count?Sn(n,e):[];return o[o.length-1]??n}function Au(n,e,t){let r=n[e],o=n[Rn(e)];return typeof r=="string"&&$n(o)?ja(r,o,t):r}var Ct=["human","visitor","agent","rule","system"],Ou=new Set(Ct);function go(n){return Ou.has(n?.kind)?n.kind:"system"}function ot(n,e){if(n.onBehalfOf){let{onBehalfOf:s,...a}=n;return`${ot(a,e)}, for ${ot(s,e)}`}let t=go(n);if(n.id===void 0)return n.name??(t==="agent"?"an agent":t==="visitor"?"a visitor":t);let r=e.graph.getNode(n.id);if(r)return V(e.schema.tryDefinition(r.kind),r);let o=e.seats?.find(s=>s.principal.id===n.id);if(o)return o.label;let i=e.people?.find(s=>s.id===n.id&&(s.kind===void 0||s.kind===n.kind));return i?i.name:n.name?n.name:/(^|:)migration$/.test(n.id)?"the upgrade":n.id.startsWith("form:")?"a visitor via a form":/[:_/]/.test(n.id)?{human:"somebody",visitor:"a visitor",agent:"an agent",rule:"a rule",system:"the system"}[t]:n.id}var An="$archived",Ye=n=>n?.[An]===!0,xv=(n,e=!1)=>e==="all"||Ye(n)===e,mo=n=>n===!0||n==="true"?!0:n==="all"?"all":!1,it="$leftAlone",Gt=new Set([An,it]);var On="0.1.62";var fe=class extends Error{constructor(t,r){super(r?`${t}
2
+ \u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function _u(n,e){let t=n,r=new Map;for(let a of t){if(r.has(a.kind))throw new fe(`Duplicate node kind "${a.kind}"`,"Each kind may be declared once; merge the two defineNode calls.");r.set(a.kind,a)}let o=new Map;for(let a of t)for(let[d,u]of Object.entries(a.edges)){if(u.to!=="*"){for(let f of u.to)if(!r.has(f))throw new fe(`Edge "${d}" on "${a.kind}" points at undeclared kind "${f}"`,`Declared kinds: ${[...r.keys()].join(", ")}`)}let l=o.get(d);l?l.from.push(a.kind):o.set(d,{from:[a.kind],decl:u})}let i=new Map;for(let[a,{from:d,decl:u}]of o){let l=d.map(f=>r.get(f).edges[a].to);i.set(a,{kind:a,from:d,to:l.includes("*")?"*":[...new Set(l.flat())],cardinality:u.cardinality??"many",...u.description===void 0?{}:{description:u.description}})}let s=new Map;for(let a of t)s.set(a.kind,ya(a.fields,{id:L().check(Jn(1)),kind:Qn(a.kind)}));return{definitions:t,computed:e,kinds:t.map(a=>a.kind),edgeKinds:[...i.keys()],definition(a){let d=r.get(a);if(!d)throw new fe(`Unknown node kind "${String(a)}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);return d},tryDefinition(a){return r.get(a)},edge(a){return i.get(a)},edgeAllowed(a,d,u){let l=r.get(d)?.edges[a];return l?l.to==="*"||l.to.includes(u):!1},parseNode(a){let d=a?.kind;if(typeof d!="string")throw new fe("Node is missing a `kind`");let u=s.get(d);if(!u)throw new fe(`Unknown node kind "${d}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);let l={},f={};for(let[p,g]of Object.entries(a))Gt.has(p)?g===!0&&(f[p]=!0):l[p]=g;let c=u.parse(l);return Object.keys(f).length>0?{...c,...f}:c},__node:void 0}}var le={snapshot:2,op:3},Je=class extends Error{constructor(t,r,o,i,s){super(s!==void 0?`This ${t} holds a ${s} that @graview ${On} does not know: upgrade the framework to read it.`:`This ${t} is in a newer format (${r}${i?`, written by @graview ${i}`:""}) than @graview ${On} reads (${o}). `+(t==="snapshot"?"Refold it from the log, or upgrade the framework.":"Upgrade the framework to read it."));this.what=t;this.found=r;this.supported=o;this.writtenBy=i;this.unknown=s;this.name="NewerFormatError"}},yo=["add-node","remove-node","patch-node","add-edge","remove-edge","splice-text"],Pu=new Set(yo);function bo(n){throw new Je("op",le.op+1,le.op,void 0,`primitive "${n?.op}"`)}var vo=new Set;function wo(n){for(let e in n){let t=n[e]?.$type;if(t!==void 0&&!vo.has(t))throw new Je("op",le.op+1,le.op,void 0,`value type "${t}" in "${e}"`)}}function xo(n){for(let e of n.primitives)Pu.has(e?.op)||bo(e)}function N(n){return`${n.kind}\0${n.from}\0${n.to}`}var st={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function Da(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function Eu(n,e){let t=new Set([...Object.keys(n),...Object.keys(e)]),r=[];for(let o of t){let i=n[o],s=e[o];JSON.stringify(i)!==JSON.stringify(s)&&r.push(o)}return r.sort()}function je(n,e){let t=new Map(n.nodes.map(c=>[c.id,c])),r=new Map(e.nodes.map(c=>[c.id,c])),o=e.nodes.filter(c=>!t.has(c.id)),i=n.nodes.filter(c=>!r.has(c.id)),s=[];for(let c of n.nodes){let p=r.get(c.id);if(!p||p===c)continue;let g=Eu(c,p);g.length>0&&s.push({before:c,after:p,fields:g})}let a=new Map(n.edges.map(c=>[N(c),c])),d=new Map(e.edges.map(c=>[N(c),c])),u=e.edges.filter(c=>!a.has(N(c))),l=n.edges.filter(c=>!d.has(N(c))),f=new Set;for(let c of o)f.add(c.id);for(let c of i)f.add(c.id);for(let c of s)f.add(c.after.id);for(let c of[...u,...l])f.add(c.from),f.add(c.to);return{addedNodes:o,removedNodes:i,changedNodes:s,addedEdges:u,removedEdges:l,touched:[...f].sort()}}function De(n,e,t){let r=new Set(t.flatMap(i=>i.op==="patch-node"||i.op==="splice-text"?[i.id]:"node"in i?[i.node.id]:[i.edge.from,i.edge.to]));if(r.size===0)return st;let o=i=>({nodes:i.nodes.filter(s=>r.has(s.id)),edges:i.edges.filter(s=>r.has(s.from)||r.has(s.to))});return je(o(n),o(e))}var Kt={idLength:200,dataLength:4096,sameKindPerPair:1};function Fa({id:n,data:e}){if(n!==void 0&&!(typeof n=="string"&&n.length<=Kt.idLength&&/^[^\s\p{Cc}]+$/u.test(n)))return`A link's id is 1\u2013${Kt.idLength} characters with no space`;if(e!==void 0&&!(e&&typeof e=="object"&&!Array.isArray(e)&&JSON.stringify(e).length<=Kt.dataLength))return`A link's data is a JSON object of at most ${Kt.dataLength} characters`}function Mu(n){let e=n?.issues;return!Array.isArray(e)||e.length===0?n instanceof Error?n.message:String(n):e.map(t=>{let r=t.path?.length?K(String(t.path.at(-1))):null,o=t.message??"is not what the declaration allows";return r?`${r}: ${o}`:o}).join("; ")}var z=class extends Error{constructor(t,r){super(r?`${t}
3
+ ${r}`:t);this.hint=r;this.name="GraphError"}},W=class extends z{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}};function Vt(n,e){try{n.parseNode(e);return}catch(t){if(t instanceof fe)throw t;let r=t.issues??[];return{fields:new Set(r.flatMap(i=>i.code==="unrecognized_keys"&&i.keys?[...i.keys]:typeof i.path?.[0]=="string"?[i.path[0]]:[""])),error:t}}}var ko="n\0",So="e\0",ee=class n{constructor(e,t={}){this.schema=e;this.validate=t.validate??!0}nodes=new Map;edges=new Map;linkIds=new Map;outIndex=new Map;inIndex=new Map;rank=0;ranks=new Map;lapsed=new Map;reordered=!1;counts=new Map;archived=new Set;listeners=new Set;validate;static from(e,t,r={}){let o=new n(e,r);return o.load(t),o}load(e){let t=this.snapshot();this.restore(e);let r=je(t,this.snapshot());return this.emit(r),r}getNode(e){return this.nodes.get(e)}has(e){return this.nodes.has(e)}allNodes(e){return this.reach([...this.nodes.values()],e,this.held)}count(e,t){return t||this.archived.size?this.nodesOfKind(e,t).length:this.counts.get(e)??0}allEdges(e){return this.reach([...this.edges.values()],e,t=>this.archived.has(t.from)||this.archived.has(t.to))}nodesOfKind(e,t){return this.allNodes(t).filter(r=>r.kind===e)}edgesOfKind(e,t){return this.allEdges(t).filter(r=>r.kind===e)}out(e,t,r){return this.reach(this.resolve(this.outIndex.get(e),t,"to"),r,this.held)}in(e,t,r){return this.reach(this.resolve(this.inIndex.get(e),t,"from"),r,this.held)}neighbors(e,t){let r=new Map;for(let o of[...this.out(e,void 0,t),...this.in(e,void 0,t)])r.set(o.id,o);return[...r.values()]}isArchived(e){return this.archived.has(e)}outEdges(e,t){return this.edgesFrom(this.outIndex.get(e),t)}inEdges(e,t){return this.edgesFrom(this.inIndex.get(e),t)}linkById(e){return this.edges.get(this.linkIds.get(e))}snapshot(){return{nodes:[...this.nodes.values()],edges:[...this.edges.values()]}}get size(){return{nodes:this.nodes.size,edges:this.edges.size}}applyPrimitives(e,t={}){let r=this.snapshot();try{for(let i of e)this.applyOne(i,t.restoring===!0,t.inPlace===!0);this.settleOrder()}catch(i){throw this.restore(r),i}let o=De(r,this.snapshot(),e);return this.emit(o),o}preview(e,t={}){return n.from(this.schema,this.snapshot(),{validate:this.validate}).applyPrimitives(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}restore(e){let t=new Map([...this.lapsed,...this.ranks]);for(let o of[this.nodes,this.edges,this.linkIds,this.outIndex,this.inIndex,this.ranks,this.lapsed,this.counts,this.archived])o.clear();this.reordered=!1;for(let o of e.nodes)this.insertNode(o,!0);for(let o of e.edges)this.insertEdge(o,!0);let r=[...this.ranks.keys()];if(r.every((o,i)=>t.get(o)>(o[0]===r[i-1]?.[0]?t.get(r[i-1]):0))){for(let[o,i]of t)(this.ranks.has(o)?this.ranks:this.lapsed).set(o,i);for(;this.lapsed.size>4096;)this.lapsed.delete(this.lapsed.keys().next().value)}}tally(e,t){this.counts.set(e,(this.counts.get(e)??0)+t)}place(e,t){let r=t?this.lapsed.get(e):void 0;if(r===void 0){this.ranks.set(e,++this.rank);return}this.ranks.set(e,r),this.lapsed.delete(e),this.reordered=!0}lapse(e){let t=this.ranks.get(e);t!==void 0&&(this.ranks.delete(e),this.lapsed.set(e,t),this.lapsed.size>4096&&this.lapsed.delete(this.lapsed.keys().next().value))}settleOrder(){if(!this.reordered)return;this.reordered=!1;let e=o=>(i,s)=>this.ranks.get(o+i[0])-this.ranks.get(o+s[0]),t=[...this.nodes.entries()].sort(e(ko));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(So));this.edges.clear();for(let[o,i]of r)this.edges.set(o,i)}emit(e){if(!(e.addedNodes.length===0&&e.removedNodes.length===0&&e.changedNodes.length===0&&e.addedEdges.length===0&&e.removedEdges.length===0))for(let t of this.listeners)t(e)}applyOne(e,t,r){switch(e.op){case"add-node":wo(e.node),this.insertNode(e.node,t,r);return;case"remove-node":{let o=e.node.id,i=this.nodes.get(o);if(!i)throw new W(o,`Cannot remove missing node "${o}"`);for(let s of[...this.outEdges(o),...this.inEdges(o)])this.deleteEdge(s);this.tally(i.kind,-1),this.archived.delete(o),this.nodes.delete(o),this.lapse(ko+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new W(e.id,`Cannot patch missing node "${e.id}"`);wo(e.after);let i={...o};for(let[a,d]of Object.entries(e.after))Ve(d)?delete i[a]:i[a]=d;let s=t?i:this.checkPatch(o,i,Object.keys(e.after));this.nodes.set(e.id,s),this.archived[Ye(s)?"add":"delete"](e.id),s.kind!==o.kind&&(this.tally(o.kind,-1),this.tally(s.kind,1));return}case"splice-text":{let o=this.nodes.get(e.id);if(!o)throw new W(e.id,`Cannot splice the text of missing node "${e.id}"`);let i=o[e.field],s;try{typeof i=="string"&&e.field!=="id"&&e.field!=="kind"&&(s=$r(i,e))}catch{}if(s===void 0)throw new z(`Cannot splice ${e.id}.${e.field}: it does not hold ${JSON.stringify(e.removed)} at ${e.at}`,"A corrupt op: the text it was made against is not the text the log folds to.");let a={...o,[e.field]:s};this.nodes.set(e.id,t?a:this.checkPatch(o,a,[e.field]));return}case"add-edge":this.insertEdge(e.edge,t,r);return;case"remove-edge":{let o=e.edge.id===void 0?e.edge:this.linkById(e.edge.id);if(!o||!this.edges.has(N(o)))throw new W(e.edge.id??N(e.edge),`Cannot remove missing edge ${e.edge.id??N(e.edge)}`);this.deleteEdge(o);return}default:bo(e)}}check(e){if(!this.validate)return e;try{return this.schema.parseNode(e)}catch(t){throw this.refusal(e,t)}}checkPatch(e,t,r){if(!this.validate)return t;let o=this.schema.tryDefinition(String(t.kind))?.fields?.shape;if(!o)return this.check(t);for(let a of r){if(a==="id"||a==="kind"||Gt.has(a))continue;let d=o[a];if(!d){delete t[a];continue}let u=d.safeParse(t[a]);u.success&&(u.data===void 0?delete t[a]:t[a]=u.data)}let i=Vt(this.schema,t);if(i===void 0)return t;let s=Vt(this.schema,e)?.fields??new Set;if([...i.fields].some(a=>r.includes(a)||!s.has(a)))throw this.refusal(t,i.error);return t}refusal(e,t){if(t instanceof fe)return t;{let r=e?.id??"?",o=e?.kind??"?",i=this.schema.tryDefinition(o),s=i&&e&&typeof e=="object"?V(i,e):r;return new z(`${s} does not match what ${o} declares`,Mu(t))}}insertNode(e,t,r=!1){if(this.nodes.has(e.id))throw new z(`Duplicate node id "${e.id}"`);this.nodes.set(e.id,t?e:this.check(e)),Ye(e)&&this.archived.add(e.id),this.tally(e.kind,1),this.place(ko+e.id,r)}insertEdge(e,t,r=!1){let o=this.nodes.get(e.from),i=this.nodes.get(e.to);if(!o||!i){let a=o?e.to:e.from;throw new W(a,`Edge "${e.kind}" references missing node "${a}"`)}if(this.validate&&!t&&!this.schema.edgeAllowed(e.kind,o.kind,i.kind)){let a=this.schema.edge(e.kind);throw new z(`Edge "${e.kind}" is not declared from ${o.kind} to ${i.kind}`,a?`Declared: ${a.from.join("|")} -> ${a.to==="*"?"*":a.to.join("|")}`:`No edge kind "${e.kind}" is declared in this schema`)}let s=N(e);if(!t&&(e.id!==void 0||e.data!==void 0)){let a=this.edges.get(s),d=Fa(e)??(a&&e.id!==void 0&&a.id!==e.id?`A second "${e.kind}" link between two records is not allowed yet`:(this.linkIds.get(e.id)??s)!==s?`Link id "${e.id}" is already taken`:void 0);if(d)throw new z(d)}this.edges.has(s)||(this.edges.set(s,e),e.id!==void 0&&this.linkIds.set(e.id,s),this.place(So+s,r),this.index(this.outIndex,e.from,s),this.index(this.inIndex,e.to,s))}deleteEdge(e){let t=N(e),r=this.edges.get(t)?.id;r!==void 0&&this.linkIds.delete(r),this.edges.delete(t),this.lapse(So+t),this.outIndex.get(e.from)?.delete(t),this.inIndex.get(e.to)?.delete(t)}index(e,t,r){(e.get(t)??e.set(t,new Set).get(t)).add(r)}edgesFrom(e,t){if(!e)return[];let r=[];for(let o of e){let i=this.edges.get(o);i&&(t===void 0||i.kind===t)&&r.push(i)}return r}resolve(e,t,r){let o=[];for(let i of this.edgesFrom(e,t)){let s=this.nodes.get(i[r]);s&&o.push(s)}return o}held=e=>this.archived.has(e.id);reach(e,t,r){let o=t?.archived??!1;return o==="all"||!o&&!this.archived.size?e:e.filter(i=>r(i)===o)}};var Bt=class extends Error{constructor(t,r){super(`No invariant registered under "${t}" (required by node "${r}")`);this.invariant=t;this.nodeId=r;this.name="UnregisteredInvariantError"}};function zu(n,e){return{...e,name:n}}var Ut=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function La(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof Ut,i=r instanceof Error?r.message:String(r),s=n.label??n.name.replace(/-/g," ");return[{invariant:n.name,status:o?"over-budget":"could-not-judge",...t!==void 0?{subjectId:t}:{},label:s,message:`${s} could not be judged: ${i}`,nodeIds:t!==void 0?[t]:[],repairs:[]}]}}function _n(n,e,t={}){let r=t.context??{},o=t.today===void 0?{}:{today:t.today},i=t.onUnregistered??"skip",s=new Set(e.map(c=>c.name)),a=[];for(let c of e)c.scope==="graph"&&a.push(...La(c,()=>c.evaluate({graph:n,subject:void 0,context:r,...o}),void 0));let d=e.filter(c=>c.scope!=="graph"),u=new Map;for(let c of d){let p=c.scope.kind,g=u.get(p);g?g.push(c):u.set(p,[c])}for(let c of n.allNodes()){let p=n.schema.tryDefinition(c.kind),g=p?.requiresInvariant?.(c)??null;if(t.subjectFilter&&!t.subjectFilter(c,r))continue;if(g!==null&&!s.has(g)){if(i==="throw")throw new Bt(g,c.id);continue}let h=!Nr(p,c,t.today);for(let b of u.get(c.kind)??[]){if(h&&b.judgesPast!==!0)continue;let v=b.scope.match;v&&!v(c)||a.push(...La(b,()=>b.evaluate({graph:n,subject:c,context:r,...o}),c.id))}}let l=new Set,f=a.filter(c=>{let p=`${c.message}|${[...c.nodeIds].sort().join(",")}`;return l.has(p)?!1:(l.add(p),!0)}).map(c=>{let p=zr(c.message);return p===c.message?c:{...c,message:p}});return Ro?Ro(n,e,f,t.today):f}var Ro;function Vv(n){Ro=n}function Nu(n,e){let t=new Set(e);return n.filter(r=>r.nodeIds.some(o=>t.has(o))||r.subjectId!==void 0&&t.has(r.subjectId))}function Iu(n){let e=new Set(n.map(r=>r.invariant)).size;if(e===0)return"All rules hold";let t=`${e} ${e===1?"rule":"rules"} broken`;return n.length>e?`${t} in ${n.length} places`:t}var Wt=(n,e)=>n==="*"||n.includes(e);function I(n){let e=n.onBehalfOf;if(!e)return n;let t=e.roles??[],r=n.roles===void 0?t:n.roles.filter(o=>t.includes(o));return{...n,...e.id!==void 0?{id:e.id}:{},roles:r}}var Z=n=>n.kind==="system"&&n.onBehalfOf===void 0,Oe=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));function Za(n){return Fi(n.map(e=>bn(K(e).toLowerCase())),"or")}function me(n,e,t,r,o,i,s={},a,d,u){if(!n)return{ok:!0};if(Z(e))return{ok:!0};if(e=I(e),o!==void 0){if(me(n,e,t,r,void 0,i).ok)return{ok:!0};let p=!1;if(o.some(v=>me(n,e,v,r,void 0,i).ok)){if(!d||i===void 0||e.id!==void 0&&d()===e.id||!u&&n.grants.some(v=>v.roles!=="*"&&Oe(v,e)&&o.some(x=>Wt(v.mutations,x))))return{ok:!0};p=!0}let g=p?[t]:[t,...o],h=[...new Set(g.flatMap(v=>$o(n,v,r)))].sort(),b=(p?"only on what you made; ":"")+(h.length===0?o.length===0?"no declared act creates or changes it, so no role can":"no role can":`${Za(h)} can`);return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:h,message:Ca(n,g,r,b,s)}}}let l=!1;for(let p of n.grants){if(!Oe(p,e)||!Wt(p.mutations,t)||p.kinds!==void 0&&p.kinds!=="*"&&(r===void 0||!p.kinds.includes(r))||p.self&&(i===void 0||e.id===void 0||i!==e.id))continue;let g=p.ownEnd?a?.()??[]:[e.id];if(!g.length||g.some(h=>h!==e.id)){l=!0;continue}return{ok:!0}}let f=$o(n,t,r),c=l?"only on your own end of the link":f.length===0?"no role can":`${Za(f)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:f,message:Ca(n,[t],r,c,s)}}}function Ca(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>Ga(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${bn(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function Ga(n,e,t){return[...new Set(Ka(n,e,t).flatMap(r=>r.describe||[]))]}var Ka=(n,e,t)=>n.grants.filter(r=>Wt(r.mutations,e)&&(t===void 0||Wt(r.kinds??"*",t)));function $o(n,e,t){let r=Ka(n,e,t);return r.some(o=>o.roles==="*")?[]:[...new Set(r.flatMap(o=>o.roles))].sort()}function Ao(n,e,t){return n?t.filter(r=>{let o=I(e).id;return Oo(r).some(i=>me(n,e,r.name,i,void 0,o,void 0,()=>[o??[]].flat()).ok)}):t}var Oo=n=>n.subject&&n.subject.kinds!=="*"?n.subject.kinds:[void 0];var qt="type-text",ie={};var se=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};var Ht="publish",_o=n=>n?.mode==="on-publish",Po=(n,e,t)=>_o(n)&&!Z(e)&&(t==="published"||!(I(e).roles??[]).some(r=>n.working.includes(r))),q=globalThis[Symbol.for("@graview/core:publishing")]??={};q.input=()=>ge({through:Q(He())});var at=class{constructor(e,t,r){this.present=e;this.timeline=t;this.unversioned=r}nodes=new Map;edges=new Map;touching=new Map;seq=Number.MAX_SAFE_INTEGER;wrote=new Map;begin(e){this.seq=e,this.wrote.clear()}writerOf(e){return t=>{let r=`${e}\0${t}`;return this.wrote.has(r)?this.wrote.get(r):this.timeline?.writers?.writerAt(e,t,this.seq)}}note(e,t){let r=e.op==="add-node"?e.node.id:e.op==="patch-node"||e.op==="splice-text"?e.id:"";if(r===""||this.unversioned?.has(r))return;let o=e.op==="add-node"?Object.keys(e.node):e.op==="splice-text"?[e.field]:Object.keys(e.after);for(let i of o)i!=="id"&&i!=="kind"&&this.wrote.set(`${r}\0${i}`,t(r,i))}node(e){return this.nodes.has(e)?this.nodes.get(e)??void 0:this.present.getNode(e)}setNode(e,t){this.nodes.set(e,t)}setEdge(e,t){let r=N(e);this.edges.set(r,t?e:null);for(let o of[e.from,e.to]){let i=this.touching.get(o);i||this.touching.set(o,i=new Set),i.add(r)}}incident(e){let t=new Map;for(let r of[...this.present.outEdges(e),...this.present.inEdges(e)]){let o=N(r);this.edges.has(o)||t.set(o,r)}for(let r of this.touching.get(e)??[]){let o=this.edges.get(r);o&&t.set(r,o)}return[...t.values()]}undo(e){switch(e.op){case"add-node":this.setNode(e.node.id,null);return;case"remove-node":this.setNode(e.node.id,e.node);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,Va(t,e.before));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,Ar(t,e,!0));return}case"add-edge":this.setEdge(e.edge,!1);return;case"remove-edge":this.setEdge(e.edge,!0);return}}apply(e){switch(e.op){case"add-node":this.setNode(e.node.id,e.node);return;case"remove-node":for(let t of this.incident(e.node.id))this.setEdge(t,!1);this.setNode(e.node.id,null);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,Va(t,e.after));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,Ar(t,e));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function Va(n,e){let t={...n};for(let[r,o]of Object.entries(e))Ve(o)?delete t[r]:t[r]=o;return t}var Tu=n=>n.op==="add-node"||n.op==="remove-node"?n.node.id:n.op==="patch-node"||n.op==="splice-text"?n.id:void 0;function Eo(n,e,t,r){let o=l=>{let f=e.node(l);return f?t.served(f,e.writerOf(l))!==void 0:t.sees?.(l)??!1},i=Tu(n);if(i===void 0){let l=n.edge,f=t.edgeClean(l)&&o(l.from)&&o(l.to);return e.apply(n),{primitives:f?[n]:[],faithful:!0}}let s=e.node(i),a=s?t.served(s,e.writerOf(i)):void 0;e.apply(n),e.note(n,r);let d=e.node(i),u=d?t.served(d,e.writerOf(i)):void 0;if(!a&&!u)return{primitives:[],faithful:!1};if(!a&&u){let l=e.incident(i).filter(c=>t.edgeClean(c)&&o(c.from===i?c.to:c.from)).map(c=>({op:"add-edge",edge:c})),f=n.op==="add-node"&&u===n.node&&l.length===0;return{primitives:f?[n]:[{op:"add-node",node:u},...l],faithful:f}}if(a&&!u){let l=n.op==="remove-node"&&a===s;return{primitives:l?[n]:[{op:"remove-node",node:a}],faithful:l}}if(n.op==="patch-node"){let l=(c,p)=>g=>g in c==(p!==void 0&&g in p);if(Object.keys(n.after).every(c=>l(a,s)(c)&&l(u,d)(c)))return{primitives:[n],faithful:!0};let f=c=>Object.fromEntries(Object.keys(n.after).map(p=>[p,p in c?c[p]:he]));return{primitives:[{op:"patch-node",id:i,before:f(a),after:f(u)}],faithful:!1}}if(n.op==="splice-text"){let l=n.field;if(a[l]===s[l]&&u[l]===d[l])return{primitives:[n],faithful:!0};let f=c=>({[l]:l in c?c[l]:he});return{primitives:[{op:"patch-node",id:i,before:f(a),after:f(u)}],faithful:!1}}return{primitives:[{op:"remove-node",node:a},{op:"add-node",node:u}],faithful:!1}}function Ba(n,e,t){if(n.length===0)return[];let r=e.log.all(),o=r[0]?.seq??0,i=n.every(c=>r[c.seq-o]?.id===c.id),s=new at(e.present,e);if(!i)return s.begin(e.log.length??o+r.length),n.map(c=>{let p=I(c.author).id,g=c.primitives.map(h=>Eo(h,s,t,()=>p));return{op:c,primitives:g.flatMap(h=>h.primitives),faithful:g.every(h=>h.faithful)}});let a=new Set(n.map(c=>c.seq)),d=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let c of a)c<d&&(d=c),c>u&&(u=c);d-=o,u-=o;let l=ju(r,d,e.present,t),f=l?new at(e.present,e,l.unversioned):s;for(let c=r.length-1;c>=d;c--){let p=r[c].primitives;for(let g=p.length-1;g>=0;g--)f.undo(p[g])}return Du(n,r,d,u,a,f,l?.judge??t,e)}function ju(n,e,t,r){let{sees:o,names:i}=r;if(!o||!i)return;let s=new Set,a=new Set,d=new Set,u=(f,c)=>{s.has(f)||a.has(f)||(o(f)?i(c)?(a.add(f),d.delete(f)):d.add(f):(s.add(f),d.delete(f)))};for(let f=e;f<n.length;f++)for(let c of n[f].primitives)c.op==="add-node"||c.op==="remove-node"?u(c.node.id,c.node):c.op==="patch-node"?(u(c.id,c.before),u(c.id,c.after)):c.op==="splice-text"&&(u(c.id,{}),s.has(c.id)||(a.add(c.id),d.delete(c.id)));for(let f of d){let c=t.getNode(f);c&&i(c)&&(d.delete(f),a.add(f))}return{unversioned:new Set([...d,...s]),judge:{...r,served:(f,c)=>d.has(f.id)?f:s.has(f.id)?void 0:r.served(f,c)}}}function Du(n,e,t,r,o,i,s,a){let d=new Map;for(let u=t;u<=r;u++){let l=e[u];if(i.begin(l.seq),!o.has(l.seq)){for(let p of l.primitives)i.apply(p);continue}let f=(p,g)=>a.writers?.writerAt(p,g,l.seq+1),c=l.primitives.map(p=>Eo(p,i,s,f));d.set(l.seq,{op:l,primitives:c.flatMap(p=>p.primitives),faithful:c.every(p=>p.faithful)})}return n.map(u=>d.get(u.seq))}function rw(n,e,t,r){let o=new at(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>Eo(i,o,t,()=>r).primitives)}var Wa="A change you cannot see",qa={kind:"system",id:"withheld",name:"Someone"};function Pn(n){return n.withheld===!0}var dt=Me,Ha=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&D(r,e));function Ya(n){if(typeof n!="function")return n;let e=n,t=r=>e(r.id)&&!Ha(r,e)?r:void 0;return{sees:e,shows:e,served:t,servedWith:t,optional:()=>!1,kindOf:()=>{}}}function D(n,e){if(typeof n=="string")return!e(n);if(n===null||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0;t<n.length;t++)if(D(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||D(n[t],e)))return!0;return!1}function Ja(n,e){let t=r=>!e(r);return n.primitives.some(r=>dt(r).some(t))||[...n.writes,...n.reads].some(t)||n.mutation!==null&&D(n.mutation.args,e)}function Fu(n,e){if(dt(n).every(e.shows))switch(n.op){case"add-node":{let t=e.served(n.node);return t?t===n.node?n:{op:"add-node",node:t}:void 0}case"remove-node":{let t=n.node;return Ha(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!D(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!D(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=he;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!D(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return D(n.edge,e.sees)?void 0:n;case"splice-text":return D(n.removed,e.sees)||D(n.inserted,e.sees)?void 0:n}}function Mo(n,e,t){let r=Ya(e),o=i=>r.shows(i)&&Xa(r,i);return{id:n.id,seq:n.seq,batch:n.batch,author:qa,intent:Wa,mutation:null,primitives:t??n.primitives.flatMap(i=>{let s=Fu(i,r);return s?[s]:[]}),reads:n.reads.filter(o),writes:n.writes.filter(o),at:n.at,...n.undoes!==void 0?{undoes:n.undoes}:{},withheld:!0}}function En(n,e){let t=Ya(e);if(t.hides?.()===!1)return[...n];let r=t.pin?.()??t;if(r.redact)return r.redact(n);if(r.timeline){let o={served:(i,s)=>r.servedWith(i,s),edgeClean:i=>!D(i,r.sees),sees:r.sees,names:i=>D(i,r.sees)};return Ba(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?Ua(i,r,s):void 0)??Mo(i,r,s))}return n.map(o=>(!o.withheld&&!Ja(o,r.shows)?Ua(o,r):void 0)??Mo(o,r))}function Ua(n,e,t){let r=n.inverse??n.primitives;if(t&&t.length<n.primitives.length){if(!t.length)return;r=r.filter(h=>dt(h).every(e.shows));let{inverse:p,...g}=n;n={...g,primitives:t}}let o=p=>e.sees(p)&&Xa(e,p),i=n.reads.filter(o),s=new Set(n.primitives.flatMap(dt)),a=n.writes.filter(p=>o(p)||e.sees(p)&&s.has(p)),d=i.length===n.reads.length&&a.length===n.writes.length?n:{...n,reads:i,writes:a},u=e.actor!==void 0&&I(n.author).id===e.actor;if(!u&&n.described?.some(p=>!e.sees(p)))return;if(!D(n,e.sees))return d;let l=new Set,f=p=>{if(typeof p=="string")l.add(p);else if(Array.isArray(p))for(let g of p)f(g);else if(p!==null&&typeof p=="object")for(let[g,h]of Object.entries(p))l.add(g),f(h)};t&&f(t);let c=p=>e.sees(p)||l.has(p);if(!D(r,c))return u&&n.mutation&&f(n.mutation.args),D({...d,primitives:[],inverse:[]},u?c:e.sees)?void 0:d}function Xa(n,e){return n.timeline===void 0||n.kindOf(e)!==void 0}var Xe=class extends z{constructor(t){super(t.message);this.check=t;this.name="UndoBlockedError"}get blockedBy(){return this.check.blockedBy}};function ct(n,e){let t=new Set(e),r=n.undoneIds(),o=n.all().filter(h=>t.has(h.batch)&&!r.has(h.id)),i=[...n.epochs()].reverse().find(h=>h.horizon);if(i){let h=new Set(n.all().map(v=>v.batch)),b=e.filter(v=>!h.has(v));if(b.length>0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:`Cannot undo ${b.map(v=>`batch ${v}`).join(", ")}: it is not after the undo horizon at op ${i.seq}${i.at?` (${i.at})`:""}. What was done before the horizon is archived, and undo does not reach behind it.`}}if(o.length===0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:e.length===0?"No batch given to undo":`Nothing live to undo in ${e.join(", ")} \u2014 already undone, or never applied`};if(o.some(Pn))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(Pn)?"Cannot undo a change you cannot see: only somebody who can see it can take it back.":"Cannot undo this here: part of it is a change you cannot see, and only somebody who can see it can take it back."};if(o.some(h=>h.enabledModules!==void 0))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:"Cannot undo turning a module off or on: it is changed by turning the module the other way."};let s=i&&o.some(h=>h.publishedThrough!==void 0)?q.undo?.(n,o,i):void 0;if(s)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:s};let a=new Set;for(let h of o)for(let b of h.writes)a.add(b);let d=Math.min(...o.map(h=>h.seq)),u=n.epochs().find(h=>h.change!==void 0&&h.seq>d);if(u){let h=o.find(b=>b.seq<u.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${h.intent}": ${h.intent===u.change?"it changed the declaration":`it was done before the declaration changed (${u.change})`}, and undo does not reach back across that change.`}}let l=new Map(n.all().map(h=>[h.id,h.seq])),f=o.flatMap(h=>h.primitives),c=[];for(let h of n.all()){if(h.seq<=d||t.has(h.batch)||r.has(h.id)||h.undoes!==void 0&&(l.get(h.undoes)??-1)>d)continue;let b=ie.aside?.(f,h);if(b===!0)continue;let v=[...new Set([...h.reads.filter(x=>a.has(x)),...b??[]])];v.length>0&&c.push({op:h,overlap:v})}if(c.length===0)return{ok:!0,ops:o};let p=c.filter(h=>!Pn(h.op)).map(h=>`"${h.op.intent}" (op ${h.op.id}, read ${h.overlap.join(", ")})`).join("; ");if(c.some(h=>Pn(h.op)))return{ok:!1,ops:o,blockedBy:c,includeBatches:[],message:`Cannot undo on its own \u2014 ${p?`a later operation depends on it: ${p}; and `:""}a later change you cannot see depends on it, which only somebody who can see it can take back.`};let g=[...new Set(c.map(h=>h.op.batch))];return{ok:!1,ops:o,blockedBy:c,includeBatches:g,message:`Cannot undo on its own \u2014 a later operation depends on it: ${p}. Include ${g.map(h=>`batch ${h}`).join(", ")} to undo them together.`}}function Qa(n,e){return e?zo(e,n).flatMap(t=>[...t.primitives]):[...n].sort((t,r)=>r.seq-t.seq).flatMap(t=>Be(t))}function zo(n,e){return ie.undone?ie.undone(n,e):[...e].sort((t,r)=>r.seq-t.seq).map(t=>({op:t,primitives:Be(t)}))}var Qe=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};function Lu(n){let e=n instanceof Error?n.message:String(n);if(n instanceof Qe){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof W?{reason:"missing",sentence:e}:n instanceof se?{reason:n.reason,sentence:n.sentence}:n instanceof Xe?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}var ye=class extends z{constructor(t,r){super(`Invalid arguments for mutation "${t}"`,r.map(o=>`${o.path.map(String).join(".")||"(root)"}: ${o.message}`).join("; "));this.mutation=t;this.issues=r;this.name="InvalidArguments"}};var Zu=["edit","remove","archive","unarchive","merge","leave-alone","allow-tidying"];var Sw=n=>Zu.map(e=>`${e}-${n}`);function nd(n){let e=/^(edit|remove|archive|unarchive|merge|leave-alone|allow-tidying|skip|detach|split)-(.+)$/.exec(n);return e?{act:e[1],kind:e[2]}:void 0}var No=["connect","disconnect"],td=n=>n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),Io=(n,e,t)=>`${n}-${e}-${td(t)}`;function Rw(n,e){let t=/^(connect|disconnect)-(.+)$/.exec(n);if(t){for(let[r,o]of e)if(t[2].startsWith(`${r}-`)){for(let i of o)if(t[2]===`${r}-${td(i)}`)return{act:t[1],kind:r,relation:i}}}}var $w=n=>[...n].flatMap(([e,t])=>[...t].flatMap(r=>No.map(o=>Io(o,e,r)))),ed=n=>`${/^[aeiou]/i.test(n)?"an":"a"} ${n}`;function rd(n,e){let t=e.also?` (${e.also})`:"";return{title:`${e.one?`${n==="connect"?"Set":"Clear"} the ${e.to}`:`${n==="connect"?"Link":"Unlink"} ${ed(e.to)}`}${t}`,fromTheOtherEnd:`${n==="connect"?"Link":"Unlink"} ${ed(e.from)}${t}`}}function od(n,e,t,r){if(t.cardinality!=="one"||t.to==="*"||t.to.length!==1||t.to[0]!==n)return;let o=t.description?.trim().replace(/\.$/,"");return o&&/^the\s+\S/i.test(o)&&!/[.;:!?,()]/.test(o)&&o.split(/\s+/).length<=8?{to:o.replace(/^the\s+/i,"")}:{also:r(e)}}var en=n=>n.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").replace(/-+/g,"-").toLowerCase();function Yt(n,e){let t=en(n),r=[...e];if(r.includes(n))return n;let o=r.filter(i=>en(i)===t);return o.length===1?o[0]:void 0}function Cu(n,e){let t=Array.from({length:e.length+1},(r,o)=>o);for(let r=1;r<=n.length;r+=1){let o=[r];for(let i=1;i<=e.length;i+=1)o[i]=Math.min(t[i]+1,o[i-1]+1,t[i-1]+(n[r-1]===e[i-1]?0:1));t=o}return t[e.length]}function To(n,e){let t=[...e],r=Yt(n,t);if(r)return r;let o=en(n);if(o==="")return;let i,s=!1;for(let a of t){let d=Cu(o,en(a));d>Math.max(2,Math.floor(Math.max(o.length,a.length)/3))||(!i||d<i.far?(i={act:a,far:d},s=!1):d===i.far&&(s=!0))}return i&&!s?i.act:void 0}var Gu=n=>`Op "${n.id}" has seq ${n.seq}, so the log begins at seq ${n.seq}: a log that begins past 0 begins at its undo horizon, and none was given (a checkpoint epoch, or { horizon })`,Mn=class n{ops=[];marks=[];start=0;get length(){return this.start+this.ops.length}get horizon(){return this.start}all(){return this.ops}opsFrom(e){return this.ops.slice(Math.max(0,e-this.start))}append(e){if(e.seq!==this.length)throw new Error(this.length===0&&e.seq>0?Gu(e):`Op "${e.id}" has seq ${e.seq} but the log is ${this.length} long`);xo(e),this.ops.push(Kn(e))}static from(e,t=[],r={}){let o=new n,i=[...t].reverse().find(d=>d.horizon),s=r.horizon??i?.seq??0;if(!Number.isInteger(s)||s<0)throw new Error(`A log cannot begin at seq ${s}`);if(i&&r.horizon!==void 0&&i.seq!==r.horizon)throw new Error(`A log said to begin at seq ${r.horizon} has its checkpoint at seq ${i.seq}`);let a=e[0];if(a&&s>0&&a.seq!==s)throw new Error(`A log compacted at seq ${s} begins with op "${a.id}" at seq ${a.seq}`);o.start=s;for(let d of e)o.append(d);for(let d of t)o.markEpoch(d);return o}replace(e,t=[],r={}){let o=n.from(e,t,r);this.ops=o.ops,this.marks=o.marks,this.start=o.start}epochs(){return this.marks}horizonEpoch(){for(let e=this.marks.length-1;e>=0;e--)if(this.marks[e].horizon)return this.marks[e]}lastEpoch(){return this.marks.at(-1)}markEpoch(e){if(!Number.isInteger(e.seq)||e.seq<0||e.seq>this.length)throw new Error(`An epoch at seq ${e.seq} starts past the end of a log ${this.length} long`);if(e.seq<this.start)throw new Error(`An epoch at seq ${e.seq} is behind the horizon at seq ${this.start}: it went to the archive with the ops before it`);let t=this.lastEpoch();if(t&&e.seq<t.seq)throw new Error(`An epoch at seq ${e.seq} comes before the last one, at seq ${t.seq}`);this.marks.push(e)}truncate(e){if(!Number.isInteger(e)||e<this.start||e>this.length)throw new Error(`Cannot cut a log ${this.length} long back to ${e}`);let t=this.lastEpoch();if(t&&t.seq>e)throw new Error(`Cannot cut the log back to ${e}: an epoch begins at seq ${t.seq}`);return this.ops.splice(e-this.start)}checkpointAt(e,t,r={}){if(!Number.isInteger(t)||t<this.start||t>this.length)throw new Error(`No checkpoint at seq ${t}: this log holds seqs ${this.start} to ${this.length}`);let o=[...this.marks].reverse().find(a=>a.seq<=t);if(o?.seq===t)return{...o,horizon:!0};let i=this.fold(e,{...r,...o?{from:o}:{},to:t}).snapshot(),s=this.ops[t-1-this.start]?.at??o?.at;return{seq:t,base:i,...o?.version!==void 0?{version:o.version}:{},...s!==void 0?{at:s}:{},horizon:!0}}compact(e){if(!Number.isInteger(e.seq)||e.seq<this.start||e.seq>this.length)throw new Error(`Cannot compact at seq ${e.seq}: this log holds seqs ${this.start} to ${this.length}`);let t=this.ops.slice(0,e.seq-this.start),r=this.marks.filter(o=>o.seq<e.seq);return this.ops=this.ops.slice(e.seq-this.start),this.marks=[{...e,horizon:!0},...this.marks.filter(o=>o.seq>e.seq)],this.start=e.seq,{ops:t,epochs:r}}get(e){return this.ops.find(t=>t.id===e)}live(){let e=this.undoneIds();return this.ops.filter(t=>!e.has(t.id))}undoneIds(){return nn(this.ops)}opsInBatch(e){return this.ops.filter(t=>t.batch===e)}batches(){return jo(this.ops,this.undoneIds())}fold(e,t={}){let r=t.from?.seq??0;if(r<this.start)throw new Error(t.from?`An epoch at seq ${r} is behind the horizon at seq ${this.start}: fold from the checkpoint`:`A log compacted at seq ${this.start} does not fold from empty: fold from its checkpoint`);let o=t.from?.base??{nodes:[],edges:[]},i=ee.from(e,o,t.validate!==void 0?{validate:t.validate}:{}),s=t.to??this.length;for(let a of this.ops.slice(r-this.start,Math.max(0,s-this.start)))Ku(i,a);return i}toJSON(){return[...this.ops]}};function Ku(n,e){if(e.undoes!==void 0){n.applyPrimitives(e.primitives,{restoring:!0});return}try{n.applyPrimitives(e.primitives)}catch{n.applyPrimitives(e.primitives,{restoring:!0})}}function nn(n){let e=new Map;for(let r of n){if(!r.undoes)continue;let o=e.get(r.undoes);o?o.push(r.id):e.set(r.undoes,[r.id])}let t=new Map;for(let r=n.length-1;r>=0;r--){let o=n[r],i=e.get(o.id)??[];t.set(o.id,!i.some(s=>t.get(s)===!0))}return new Set(n.filter(r=>t.get(r.id)===!1).map(r=>r.id))}function jo(n,e){let t=[],r=new Map;for(let o of n){let i=r.get(o.batch);i?i.push(o):(r.set(o.batch,[o]),t.push(o.batch))}return t.map(o=>{let i=r.get(o)??[],s=i[0];return{id:o,author:s.author,intent:s.batchIntent??s.intent,at:s.at,...s.lineage?{lineage:s.lineage}:{},ops:i,undone:i.every(a=>e.has(a.id))}})}function Jt(n){return n?.automated===!0&&n.kind!=="human"&&n.kind!=="rule"}var sd=n=>n?.[it]===!0,Vu=(n,e)=>sd(("graph"in n?n.graph:n).getNode(e));function id(n,e,t){let r=n.tryDefinition(e);return t===void 0?r?.tidying:r?.edges?.[t]?.tidying}var Bu=n=>JSON.stringify(n,(e,t)=>t&&typeof t=="object"&&!Array.isArray(t)?Object.fromEntries(Object.entries(t).sort()):t);var Uu=/^(archive|unarchive|remove|leave-alone|allow-tidying)$/;function Wu(n,e){let t=en(n.name),r=e?.act(n.name),o=n.args??{},i=r?r.derived:nd(t),{id:s}=o;if(i&&typeof s=="string"){if(Uu.test(i.act))return[i.act,s];if(i.act==="merge")return["merge",...[s,o.into].sort()];if(i.relation)return[i.act,i.relation,s,o.to]}let a=r?.subject?.arg??"id",[d,u]=Object.keys(o).filter(l=>l!==a);return r?.connects?.length===1&&d&&!u&&e.has(o[a])&&e.has(o[d])?["connect",r.connects[0],o[a],o[d]]:[t,r?.creates?.length&&typeof s=="string"&&!e.has(s)?{...o,id:0}:o]}var ad=(n,e)=>`\u2248${Bu(n.map(t=>Wu(t,e)))}`;function dd(n,e,t){let r=qu(n,t);return[e,...e.map(o=>[o])].map(o=>r.get(ad(o,t))).find(Boolean)}function qu(n,e){let t=nn(n),r=new Map(n.map(i=>[i.id,i])),o=new Map;for(let i of n){let s=i.undoes!==void 0&&!t.has(i.id)&&!i.withheld?r.get(i.undoes):void 0;if(s?.suggests&&s.author.kind===i.author.kind&&s.author.id===i.author.id)continue;let a=s?.suggests??(s?.mutation&&(s.lineage||i.undoneLineage)?[s.mutation]:[]);if(a.length>0)for(let d of[a,...a.map(u=>[u])])o.set(ad(d,e),i)}return o}function cd(n,e,t,r,o={}){let i=o.declaration!==!1,s=(a,d)=>`${r} may not ${a}: ${d}.`;for(let a of t){let d="edge"in a?a.edge:void 0,u=(d?[d.from,d.to]:["id"in a?a.id:a.node.id]).map(l=>e.getNode(l)??("node"in a?a.node:void 0));for(let l of u){if(!l)continue;if(sd(l))return s(`change \u201C${V(n.tryDefinition(l.kind),l)}\u201D`,"a person said to leave it alone");if(!i)continue;let f=id(n,l.kind);if(f==="never")return s(`change ${ce(n,l.kind)} on its own`,"the app says they are never tidied");if(d&&f==="no-links")return s(`link or unlink ${ce(n,l.kind)} on its own`,"the app says they are never linked automatically")}if(d&&i&&u[0]&&id(n,u[0].kind,d.kind)==="never")return s(`${a.op==="add-edge"?"make":"break"} a \u201C${d.kind}\u201D link on its own`,"the app says that relation is never tidied")}}function Hu(n,e){if(!e||n.length===0)return null;let t=e.roles,r=o=>t?o.wouldNeed.some(i=>t.includes(i)):o.wouldNeed.length>0;return n.every(({refusal:o})=>r(o))?e:null}var Xt={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},Yu={plots:0,stage:1,tag:2,ties:2,lines:3,tieLabels:4,occupants:6,seatMarks:7,zoom:8,card:10,opened:11},Ju={under:0,raised:1,over:2},Do=n=>`--graview-layer-${n}`,Xu=n=>`var(${Do(n)}, ${Xt[n]})`;function Qu(){return Object.keys(Xt).map(n=>` ${Do(n)}: ${Xt[n]};`).join(`
4
+ `)}function ef(n){let e=n.onBehalfOf??n;return{kind:e.kind,...e.id!==void 0?{id:e.id}:{},...e.name!==void 0?{name:e.name}:{},...e.roles!==void 0?{roles:e.roles}:{}}}function ld(){return`sub_${(globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`).replace(/-/g,"").slice(0,20)}`}function ud(n){return{...n,id:n.id??ld(),at:n.at??new Date().toISOString()}}function nf(n=[]){let e=[...n],t=new Set,r=()=>{for(let o of t)o()};return{list:o=>o===void 0?e:e.filter(i=>i.who.id===o),add(o){let i=ud(o);return e=[...e.filter(s=>s.id!==i.id),i],r(),i},remove(o){let i=e.length;e=e.filter(a=>a.id!==o);let s=e.length<i;return s&&r(),s},onChange(o){return t.add(o),()=>t.delete(o)}}}var Fo=(n,e)=>`${n}\0${e}`,fd=new WeakMap;function tf(n,e){let t=new Map;for(let[o,i]of Object.entries(e??{}))for(let[s,a]of Object.entries(i))t.set(Fo(o,s),[{seq:n-1,by:a}]);return{base:n,end:n,read:[],fields:t,written:[],seqOf:new Map,writers:{writerAt:(o,i,s)=>{let a=t.get(Fo(o,i));if(!a)return;let d=0,u=a.length;for(;d<u;){let l=d+u>>1;a[l].seq<s?d=l+1:u=l}return d===0?void 0:a[d-1].by}}}}function rf(n){if(n.op==="add-node")return[n.node.id,Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind")];if(n.op==="patch-node")return[n.id,Object.keys(n.after).filter(e=>!Ve(n.after[e]))];if(n.op==="splice-text")return[n.id,[n.field]]}function of(n,e){let t=n.end,r=I(e.author).id,o=e.undoes!==void 0?n.seqOf.get(e.undoes):void 0,i=[];for(let s of e.primitives){let a=rf(s);if(!a)continue;let[d,u]=a;for(let l of u){let f=e.undoes===void 0?r:o!==void 0?n.writers.writerAt(d,l,o):void 0,c=Fo(d,l),p=n.fields.get(c);p||n.fields.set(c,p=[]),p.push({seq:t,by:f}),i.push(c)}}n.written.push({seq:t,keys:i}),n.seqOf.set(e.id,t),n.read.push(e),n.end++}function sf(n,e){for(;n.written.length>0&&n.written.at(-1).seq>=e;){let{keys:t}=n.written.pop();for(let r of t)n.fields.get(r)?.pop()}for(let t of n.read.slice(e-n.base))n.seqOf.delete(t.id);n.read.length=e-n.base,n.end=e}function lt(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=fd.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&sf(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||fd.set(n,o=tf(r,r>0?[...n.epochs?.()??[]].reverse().find(i=>i.horizon)?.writers:void 0));for(let i=o.end;i<t;i++)of(o,e[i-r]);return o.writers}function pd(n,e,t,r){let o=lt(n),i={};for(let s of t)for(let a in s){if(!Object.hasOwn(s,a)||a==="id"||a==="kind"||!r(s[a]))continue;let d=o.writerAt(s.id,a,e);d!==void 0&&((i[s.id]??={})[a]=d)}return i}var tn={served:new WeakSet},ut=n=>n.fields!==void 0||(n.hide?.length??0)>0,hd=(n,e,t)=>(n??[]).some(r=>r.kinds.includes(e)&&(r.hide?.includes(t)===!0||r.fields!==void 0&&!r.fields.includes(t))),gd=(n,e,t,r)=>Object.entries(t).some(([o,i])=>typeof i=="string"&&i.trim()!==""&&n.includes(i.trim())&&r(e,o)),Fe=n=>tn.on===!0||tn.served.has(n);var Lo=new WeakMap;function af(n,e){let t=new Map(Object.entries(e?.removed??{})),r=new Map(Object.entries(e?.creators??{})),o=n===0||e?.removed!==void 0;return{base:n,end:n,read:[],kinds:t,creators:r,entries:[],records:{kindOf:i=>t.get(i),creatorOf:i=>r.get(i),knowsAll:o}}}function df(n,e){let t=n.end;for(let r of e.primitives){if(r.op!=="add-node"&&r.op!=="remove-node")continue;let{id:o,kind:i}=r.node;if(n.kinds.has(o)||(n.kinds.set(o,i),n.entries.push({seq:t,id:o,creator:!1})),r.op!=="add-node"||n.creators.has(o)||e.undoes!==void 0)continue;let s=I(e.author).id;s!==void 0&&(n.creators.set(o,s),n.entries.push({seq:t,id:o,creator:!0}))}n.read.push(e),n.end++}function cf(n,e){for(;n.entries.length>0&&n.entries.at(-1).seq>=e;){let t=n.entries.pop();(t.creator?n.creators:n.kinds).delete(t.id)}n.read.length=e-n.base,n.end=e}function pe(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=Lo.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&cf(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||Lo.set(n,o=af(r,r>0?lf(n,r):void 0));for(let i=o.end;i<t;i++)df(o,e[i-r]);return o.records}function lf(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function md(n,e,t){pe(n);let r=Lo.get(n),o=[new Set,new Set];for(let a=r.entries.length-1;a>=0&&r.entries[a].seq>=e;a--)o[+r.entries[a].creator].add(r.entries[a].id);let i={},s={};for(let[a,d]of r.creators)o[1].has(a)||(i[a]=d);for(let[a,d]of r.kinds)!o[0].has(a)&&!t(a)&&(s[a]=d);return r.records.knowsAll?{creators:i,removed:s}:{creators:i}}function zn(n,e,t,r,o,i=tn.on===!0){if(!n?.sees?.length||Z(e))return!0;let s=n.sees.filter(a=>a.kinds.includes(t.kind)&&(i||!ut(a)));return s.length===0?!1:(e=I(e),s.some(a=>{if(!Oe(a,e))return!1;if(!a.own&&!a.via)return!0;let d=e.id;if(d===void 0)return!1;let u=l=>l.id===d;return a.via?r.out(t.id,a.via).some(u)||r.in(t.id,a.via).some(u):t.id===d||r.out(t.id).some(u)||r.in(t.id).some(u)||o?.creatorOf(t.id)===d}))}var bd=Symbol.for("@graview/core:node-ref"),yd=n=>typeof n=="object"&&n!==null?n[bd]:void 0;function Le(n="*"){return uf(L().check(Jn(1)),n)}function uf(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,bd,{value:t,enumerable:!0,configurable:!0})};return r(n),r(F(n)),n}function ft(n){if(typeof n!="object"||n===null)return;let e=yd(n);if(e)return e;let t=F(n),r=yd(t);if(r)return r;let o=t?.innerType;return o?ft(o):void 0}function pt(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=ft(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}var Co=new Set;function Qt(n,e){return Z(e)?Co:n.modules?.disabledKinds??Co}function rn(n,e){return Z(e)?!1:(n.policy?.sees?.length??0)>0||Qt(n,e).size>0}function kd(n,e){if(!rn(n,e))return()=>!0;let t=n.modules?.disabledKinds??Co,r=n.policy?.sees??[],o=I(e),i=Fe(n),s=l=>!t.has(l)&&(r.length===0||r.some(f=>f.kinds.includes(l)&&Oe(f,o)&&!f.own&&!f.via&&(i||!ut(f)))),a=n.schema.kinds.every(s),d=l=>s(l)&&ff(n.schema,l).every(f=>f.every(c=>c==="*"?a:s(c))),u=a&&n.schema.kinds.every(d);return l=>u||l!==void 0&&d(l)}function ht(n,e){return t=>{let r=Qt(n,e);if(!n.policy?.sees?.length&&r.size===0)return!0;let o=pe(n.log),i=n.graph.getNode(t);if(i)return!r.has(i.kind)&&zn(n.policy,e,i,n.graph,o,Fe(n));let s=o.kindOf(t)??Sd(n,o,t);return s===void 0?!0:!r.has(s)&&zn(n.policy,e,{id:t,kind:s},{out:()=>[],in:()=>[]},o,Fe(n))}}function ff(n,e){let t=n?.tryDefinition?.(e)?.fields?.shape??{};return Object.values(t).flatMap(r=>{let o=ft(r);return o&&r.safeParse?.(void 0).success===!1?[o]:[]})}var pf={out:()=>[],in:()=>[]};function Sd(n,e,t){if(e.knowsAll||tn.served.has(n))return;let r=t.indexOf(":");if(r<=0)return;let o=t.slice(0,r);return n.schema?.tryDefinition(o)?o:void 0}function hf(n,e,t=new Map,r){let o=Qt(n,e);if(!n.policy?.sees?.length&&o.size===0)return()=>!0;let i=pe(n.log);return s=>{let a=t.get(s);if(a!==void 0)return a;let d,u=n.graph.getNode(s);if(u)d=!o.has(u.kind)&&zn(n.policy,e,u,n.graph,i,Fe(n));else{let l=i.kindOf(s)??Sd(n,i,s);if(l===void 0)return r?.add(s),!0;d=!o.has(l)&&zn(n.policy,e,{id:s,kind:l},pf,i,Fe(n))}return t.set(s,d),d}}function gf(n){let e=new Map;return(t,r)=>{let o=`${t}\0${r}`,i=e.get(o);if(i===void 0){let s=n?.tryDefinition(t)?.fields?.shape,a=s?.[r];i=s!==void 0&&(a===void 0||a.safeParse?.(void 0).success===!0),e.set(o,i)}return i}}function er(n,e){return Rd(n,e).lens}var Go=()=>({judged:new Map,shown:new Map});function Rd(n,e){let t=gf(n.schema),r=Z(e)?void 0:I(e).id,o=()=>n.log.length??n.log.all().length,i=new WeakMap,s=n.graph,a=(l,f,c,p,g)=>{let h=(y,S)=>{if(!l(y.id))return;let R;for(let M in y)if(!(!Object.hasOwn(y,M)||M==="id"||M==="kind"||!D(y[M],l))&&!(r!==void 0&&S(M)===r)){if(!t(y.kind,M))return;(R??=[]).push(M)}if(!R)return y;let w=R.join("\0"),_=i.get(y);if(_?.without===w)return _.node;let E=Object.fromEntries(Object.entries(y).filter(([M])=>!R.includes(M)));return i.set(y,{without:w,node:E}),E},b=y=>{let S=c();return h(y,R=>f().writerAt(y.id,R,S))},v=new WeakMap,x=g?y=>{let S=v.get(y);return S||v.set(y,S={node:b(y)}),S.node}:b,$=y=>{if(!l(y))return!1;let S=s.getNode(y);return S===void 0||x(S)!==void 0},k=g?.shown??new Map,O=g?y=>{let S=k.get(y);return S===void 0&&k.set(y,S=$(y)),S}:$,A=s.outEdges&&s.inEdges?{present:{getNode:y=>s.getNode(y),outEdges:y=>s.outEdges(y),inEdges:y=>s.inEdges(y)},log:n.log,get writers(){return f()}}:void 0,m={sees:l,shows:O,served:x,servedWith:h,optional:t,kindOf:p,...r!==void 0?{actor:r}:{},...A?{timeline:A}:{},hides:()=>rn(n,e),pin:g?()=>m:()=>d(Go())};return tn.lens?.(m,n,e)??m};function d(l){let f,c=o(),p=pe(n.log);return a(hf(n,e,l.judged,l.unnamed),()=>f??=lt(n.log),()=>c,g=>s.getNode(g)?.kind??p.kindOf(g),l)}return{lens:a(ht(n,e),()=>lt(n.log),o,l=>s.getNode(l)?.kind??pe(n.log).kindOf(l)),pinWith:d}}var vd=new WeakMap,wd=new WeakMap,mf=n=>{let e=new Set;for(let t of n)for(let r of t.primitives)r.op==="add-node"||r.op==="remove-node"?e.add(r.node.id):r.op==="patch-node"||r.op==="splice-text"?e.add(r.id):(e.add(r.edge.from),e.add(r.edge.to));return e};function $d(n,e){if(!rn(n,e))return n.log.all();let t=n.log.all(),r=n.log.length??t.length,o=r-t.length,i=[...Qt(n,e)].sort().join("\0"),s=Ad(e),a=vd.get(n.log);a||vd.set(n.log,a=new Map);let d=a.get(s),{pinWith:u}=Rd(n,e),l=wd.get(n.log);l||wd.set(n.log,l=new Set);let f=d!==void 0&&d.horizon===o&&d.off===i&&d.length<=r&&(d.length===o||t[d.length-1-o]===d.last);if(d&&f){if(d.length===r)return d.ops;let g=t.slice(d.length-o),h=u(Go()),b=!0,v=mf(g);for(let x of v){let $=d.judgments.judged.get(x),k=d.judgments.shown.get(x);if($!==void 0&&h.sees(x)!==$||k!==void 0&&h.shows(x)!==k){b=!1;break}}if(b){for(let x of v)if(l.has(x)){b=!1;break}}if(b){let x=[...d.ops,...En(g,u(d.judgments))],$={horizon:o,off:i,length:r,last:t.at(-1),ops:x,judgments:d.judgments};return a.set(s,$),x}}let c={...Go(),unnamed:l},p=En(t,u(c));return a.set(s,{horizon:o,off:i,length:r,last:t.at(-1),ops:p,judgments:c}),p}function yf(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!D(t,n.sees)}function Ko(n,e){return{all:()=>n,undoneIds:()=>nn(n),epochs:e}}var xd=new WeakMap;function Ad(n){let e=Z(n)?n:I(n);return`${n.kind}|${e.id??""}|${(e.roles??[]).join(",")}|${n.onBehalfOf?`for:${n.id??""}`:""}`}var Od=(n,e)=>`${Ad(n)}@${e}`,Zo=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t},bf=Symbol.for("@graview/core:seat");function be(n,e,t={}){if(Po(n.publishing,e,t.as)){if(q.served)return q.served(n,e);throw new Error("Load @graview/core/publishing to serve a reader of an app that publishes.")}return Pd(n,e)}var vf=()=>q.served!==void 0;function _d(n){let e=xd.get(n);return e||xd.set(n,e=new Map),e}function Pd(n,e){if(!rn(n,e))return n;let t=Od(e,"head"),r=_d(n),o=r.get(t);if(o)return o;let i=n.graph,s=er(n,e),a=k=>{let O=R=>R===void 0?void 0:k.served(R),A=R=>O(R)!==void 0,m=R=>A(i.getNode(R));return{served:O,seenNode:A,seenId:m,seenEdge:R=>m(R.from)&&m(R.to)&&!D(R,k.sees),servedAll:R=>R.flatMap(w=>O(w)??[])}},{served:d,seenId:u}=a(s),l=()=>a(s.pin?.()??s),f=(k,O)=>{let A=lt(n.log),m=s.pin?.()??s,y=k.nodes.flatMap(R=>m.servedWith(R,w=>A.writerAt(R.id,w,O))??[]),S=new Set(y.map(R=>R.id));return{nodes:y,edges:k.edges.filter(R=>S.has(R.from)&&S.has(R.to)&&!D(R,m.sees))}},c=k=>{let{removed:O,writers:A,published:m,...y}=k,S=f(k.base,k.seq);if(!k.creators)return{...y,base:S};let R=new Set(S.nodes.map(_=>_.id)),w=Object.fromEntries(Object.entries(k.creators).filter(([_,E])=>R.has(_)&&!D(E,s.sees)));return{...y,base:S,creators:w}},p=k=>k&&c(k),g=()=>$d(n,e),h=()=>Ko(g(),()=>n.log.epochs()),b=new Proxy(i,{get(k,O){switch(O){case"getNode":return A=>d(k.getNode(A));case"has":return u;case"allNodes":case"nodesOfKind":return(...A)=>l().servedAll(k[O](...A));case"count":return(...A)=>l().servedAll(k.nodesOfKind(...A)).length;case"allEdges":case"edgesOfKind":case"outEdges":case"inEdges":return(...A)=>k[O](...A).filter(l().seenEdge);case"out":case"in":case"neighbors":return(A,...m)=>{let y=l();return y.seenId(A)?y.servedAll(k[O](A,...m)):[]};case"snapshot":return()=>{let A=k.snapshot(),m=l();return{...A,nodes:m.servedAll(A.nodes),edges:A.edges.filter(m.seenEdge)}};case"size":{let A=l();return{nodes:A.servedAll(k.allNodes({archived:"all"})).length,edges:k.allEdges({archived:"all"}).filter(A.seenEdge).length}}default:return Zo(k,O)}}}),v=()=>{let k=g();return jo(k,nn(k))},x=new Proxy(n.log,{get(k,O){switch(O){case"all":case"toJSON":return()=>[...g()];case"epochs":return()=>k.epochs().map(c);case"lastEpoch":return()=>p(k.lastEpoch());case"horizonEpoch":return()=>p(k.horizonEpoch());case"live":return()=>{let A=g(),m=nn(A);return A.filter(y=>!m.has(y.id))};case"get":return A=>g().find(m=>m.id===A);case"opsInBatch":return A=>g().filter(m=>m.batch===A);case"batches":return v;default:return Zo(k,O)}}}),$=new Proxy(n,{get(k,O){switch(O){case bf:return{store:k,principal:e};case"graph":return b;case"log":return x;case"snapshot":return b.snapshot;case"batches":return v;case"canUndo":return A=>ct(h(),typeof A=="string"?[A]:A);case"violations":return A=>k.violations(A,b).filter(m=>yf(s,y=>i.has(y),m));case"findings":return()=>k.findings().filter(A=>(A.id.includes("->")?A.id.split("->").map((y,S)=>S===0?y.slice(y.indexOf(":")+1):y):[A.id]).every(y=>!i.has(y)||u(y))&&!D(A,s.sees));case"wouldChange":return A=>k.wouldChange(A,e);case"preview":return(A,m,y)=>k.preview(A,m,{author:e,...y});case"seenBy":return(A,m)=>be(k,A,m);case"seenFor":return e;case"servedSeq":return k.servedSeq;case"checkpoint":return A=>p(k.checkpoint(A));default:return Zo(k,O)}}});return r.set(t,$),$}q.kit={seatView:Pd,viewsOf:_d,viewKey:Od,diff:je,reads:Po};var Vo=new Set;function Bo(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:Vo,disabledMutations:Vo,disabledInvariants:Vo,administered:Ed(n,new Set(Object.keys(n??{})))};let t=new Set,r=a=>{if(!(t.has(a)||!(a in n))){t.add(a);for(let d of n[a]?.requires??[])r(d)}};for(let a of e)r(a);for(let[a,d]of Object.entries(n))d.required&&r(a);let o=new Set,i=new Set,s=new Set;for(let[a,d]of Object.entries(n))if(!t.has(a)){for(let u of d.kinds??[])o.add(u);for(let u of d.mutations??[])i.add(u);for(let u of d.invariants??[])s.add(u)}for(let a of t){let d=n[a];for(let u of d?.kinds??[])o.delete(u);for(let u of d?.mutations??[])i.delete(u);for(let u of d?.invariants??[])s.delete(u)}return{enabled:t,disabledKinds:o,disabledMutations:i,disabledInvariants:s,administered:Ed(n,t)}}function Ed(n,e){let t=new Map;for(let[r,o]of Object.entries(n??{}))e.has(r)&&o.visibility==="admin"&&t.set(r,o);return t}function Md(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var gt=class{constructor(e){this.graph=e;for(let t of e.allNodes({archived:"all"}))this.file(t);e.subscribe(t=>this.follow(t))}kinds=new Map;filed=new Map;labelOf(e){return this.filed.get(e)?.label}lookup(e,t){let r=Md(t);if(r.length===0)return{exact:[],prefix:[]};let o=e.includes("*")?[...this.kinds.values()]:e.flatMap(a=>this.kinds.get(a)??[]),i=[],s=[];for(let a of o)for(let d=Uo(a.sorted,r);d<a.sorted.length&&a.sorted[d].startsWith(r);d+=1){let u=[...a.ids.get(a.sorted[d])??[]];s.push(...u),a.sorted[d]===r&&i.push(...u)}return{exact:i,prefix:s}}follow(e){for(let t of e.removedNodes)this.unfile(t.id);for(let t of e.changedNodes)this.unfile(t.after.id),this.file(t.after);for(let t of e.addedNodes)this.file(t)}file(e){let t=V(this.graph.schema.tryDefinition(e.kind),e),r=Md(t);this.filed.set(e.id,{kind:e.kind,key:r,label:t});let o=this.kinds.get(e.kind);o||this.kinds.set(e.kind,o={ids:new Map,sorted:[]});let i=o.ids.get(r);i?i.add(e.id):(o.ids.set(r,new Set([e.id])),o.sorted.splice(Uo(o.sorted,r),0,r))}unfile(e){let t=this.filed.get(e);if(!t)return;this.filed.delete(e);let r=this.kinds.get(t.kind),o=r?.ids.get(t.key);if(!r||!o||(o.delete(e),o.size>0))return;r.ids.delete(t.key);let i=Uo(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function Uo(n,e){let t=0,r=n.length;for(;t<r;){let o=t+r>>>1;n[o]<e?t=o+1:r=o}return t}function wf(n,e){return e.includes("*")?"record":e.map(t=>Y(n.tryDefinition(t),t)).join(" or ")}function zd(n,e,t,r){let o=wf(n,e.kinds);if(r.length===0)return{ok:!1,reason:"none",candidates:r,message:`There is no ${o} called "${t}".`};let i=r.slice(0,10).map(a=>`${a.label} (${a.id})`),s=r.length>i.length?`, and ${r.length-i.length} more`:"";return{ok:!1,reason:"ambiguous",candidates:r,message:`"${t}" names more than one ${o}: ${i.join(", ")}${s}. Pass the id of the one you mean as ${e.name}.`}}function Wo(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":Wo(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${Wo(e[r])}`).join(",")}}`}var Nd=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function xf(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(Nd),t=n.edges.map(r=>({key:N(r),value:{kind:r.kind,from:r.from,to:r.to,id:r.id,data:r.data}})).sort(Nd);return Wo({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function Nn(n){return`sha256:${Td(xf(n))}`}function Id(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=Nn(t),a=ee.from(n,i,{validate:o});for(let[h,b]of e.entries())try{a.applyPrimitives(b.primitives)}catch(v){let x=e[h-1];return{ok:!1,expected:Nn(a.snapshot()),actual:s,...x?{divergedAfter:x.id}:{},reason:`The log does not fold: op "${b.id}" (${b.intent}) could not be applied. ${v instanceof Error?v.message:String(v)}`}}let d=Nn(a.snapshot());if(d===s)return{ok:!0,hash:s};let u=h=>{let b=ee.from(n,i,{validate:o});for(let v=0;v<=h;v++)b.applyPrimitives(e[v].primitives);return Nn(b.snapshot())},l=h=>{try{let b=ee.from(n,t,{validate:o});for(let v=e.length-1;v>h;v--)b.applyPrimitives(Be(e[v]));return Nn(b.snapshot())}catch{return}},f=h=>{let b=l(h);return b!==void 0&&b!==u(h)},c=-1,p=e.length-1;for(;c<p;){let h=Math.floor((c+p)/2);f(h)?p=h:c=h+1}let g=p>=0?e[p]:void 0;return{ok:!1,expected:d,actual:s,...g?{divergedAfter:g.id}:{},reason:g?`The graph and the fold of its log part after op "${g.id}" (${g.intent}).`:"The graph and the fold of its log disagree before any op: the base it folds from does not match."}}var kf=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Sf=new TextEncoder,Rf=new Uint32Array(64),$f=new Uint32Array(8),nr=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function Td(n){let e=Sf.encode(n),t=e.length*8,r=new Uint8Array(e.length+9+63>>6<<6);r.set(e),r[e.length]=128;let o=new DataView(r.buffer);o.setUint32(r.length-8,Math.floor(t/2**32)),o.setUint32(r.length-4,t>>>0);let i=$f;i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225;let s=Rf;for(let d=0;d<r.length;d+=64){for(let v=0;v<16;v++)s[v]=o.getUint32(d+v*4);for(let v=16;v<64;v++){let x=s[v-15],$=s[v-2],k=(x>>>7|x<<25)^(x>>>18|x<<14)^x>>>3,O=($>>>17|$<<15)^($>>>19|$<<13)^$>>>10;s[v]=s[v-16]+k+s[v-7]+O>>>0}let u=i[0],l=i[1],f=i[2],c=i[3],p=i[4],g=i[5],h=i[6],b=i[7];for(let v=0;v<64;v++){let x=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),$=p&g^~p&h,k=b+x+$+kf[v]+s[v]>>>0,O=(u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),A=u&l^u&f^l&f,m=O+A>>>0;b=h,h=g,g=p,p=c+k>>>0,c=f,f=l,l=u,u=k+m>>>0}i[0]=i[0]+u>>>0,i[1]=i[1]+l>>>0,i[2]=i[2]+f>>>0,i[3]=i[3]+c>>>0,i[4]=i[4]+p>>>0,i[5]=i[5]+g>>>0,i[6]=i[6]+h>>>0,i[7]=i[7]+b>>>0}let a="";for(let d=0;d<8;d++){let u=i[d];a+=nr[u>>>24]+nr[u>>>16&255]+nr[u>>>8&255]+nr[u&255]}return a}var mt=class{constructor(e){this.inner=e}seen=new Set;reads(){return[...this.seen]}markAll(e){for(let t of e)this.seen.add(t.id);return e}markEdges(e){for(let t of e)this.seen.add(t.from),this.seen.add(t.to);return e}getNode(e){return this.seen.add(e),this.inner.getNode(e)}has(e){return this.seen.add(e),this.inner.has(e)}allNodes(e){return this.markAll(this.inner.allNodes(e))}allEdges(e){return this.markEdges(this.inner.allEdges(e))}nodesOfKind(e,t){return this.markAll(this.inner.nodesOfKind(e,t))}edgesOfKind(e,t){return this.markEdges(this.inner.edgesOfKind(e,t))}out(e,t,r){return this.seen.add(e),this.markAll(this.inner.out(e,t,r))}in(e,t,r){return this.seen.add(e),this.markAll(this.inner.in(e,t,r))}neighbors(e,t){return this.seen.add(e),this.markAll(this.inner.neighbors(e,t))}};function Af(n,e){return{...e,name:n}}function qo(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function Ld(n){let e=n.input,t=e._zod?.def;if(t?.type!=="object"||t.catchall!==void 0||!e.shape)return;let r=Object.keys(e.shape);return qo(n)?[...r,"id"]:r}var jd=(n,e,t={})=>{let r=n.filter(s=>t[s]?.length),o=n.filter(s=>!t[s]?.length);return`${[...o.length>0?[`does not take ${o.map(s=>`"${s}"`).join(", ")}`]:[],...r.map(s=>`${s} is set by ${t[s].join(" or ")}`)].join("; ")}; it takes ${e.length>0?e.map(s=>`"${s}"`).join(", "):"nothing"}`};function Of(n){let e=n?._zod?.def;for(let t=0;e?.innerType&&t<8;t++)e=e.innerType._zod?.def;return e}var _f=/^-?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/;function Zd(n,e){let t=n?.shape;if(!t||typeof e!="object"||e===null||Array.isArray(e))return e;let r;for(let[o,i]of Object.entries(e)){if(typeof i!="string"||!_f.test(i)||Of(t[o])?.type!=="number")continue;let s=Number(i);Number.isFinite(s)&&(r??={...e},r[o]=s)}return r??e}var Cd=n=>typeof n=="string"&&n.length<=200&&/^[^\s\p{Cc}]+$/u.test(n);function Pf(n){if(typeof n!="object"||n===null)return;let e=n.id;if(e!==void 0){if(!Cd(e))throw new z("An id is 1\u2013200 characters with no space",`Got ${JSON.stringify(e)}.`);return e}}function Ef(n){let{id:e,...t}=n;return t}function Dd(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}function Ho(n){let e=2166136261;for(let t=0;t<n.length;t++)e=Math.imul(e^n.charCodeAt(t),16777619);return(e>>>0).toString(36).padStart(7,"0")}function Mf(n,e){if(e.limited&&e.me===void 0)return Fd(n,e.held);let t=e.limited?`${n}.${Ho(e.me)}`:n,r=t;for(let o=2;e.seen(r);o++)r=`${t}-${o}`;return e.held(r)?Fd(t,e.held):r}function Fd(n,e){let t;do t=`${n}-${Math.floor(Math.random()*36**6).toString(36).padStart(6,"0")}`;while(e(t));return t}function In(n,e,t,r={}){let o=qo(e)?Pf(t):void 0,i=Zd(e.input,o===void 0?t:Ef(t)),s=Ld(e);if(s&&typeof i=="object"&&i!==null&&!Array.isArray(i)){let m=Object.keys(i).filter(y=>!s.includes(y)&&i[y]!==void 0);if(m.length>0)throw new ye(e.name,[{path:[],message:jd(m,s,e.writtenBy)}])}let a=e.clearable&&typeof i=="object"&&i!==null&&!Array.isArray(i)?e.clearable.filter(m=>i[m]===null):[],d=e.input.safeParse(a.length>0?Object.fromEntries(Object.entries(i).filter(([m])=>!a.includes(m))):i);if(d.success)for(let m of a)d.data[m]=null;if(!d.success){let m=Object.keys(e.input.shape??{});throw new ye(e.name,d.error.issues.map(y=>y.code==="unrecognized_keys"&&m.length>0?{...y,message:jd(y.keys,m,e.writtenBy)}:y))}let u=d.data,l=new mt(r.seen??n),f=[],c=new Set,p=r.me===void 0?void 0:`.${Ho(r.me)}`,g=m=>!r.seesInFull||r.seesInFull()||p!==void 0&&new RegExp(`\\${p}(-[0-9a-z]+)?$`).test(m),h=m=>l.has(m)||n.has(m)||c.has(m)||r.everHeld?.(m)===!0,b,v=m=>{let y=new Set([...n.outEdges(m),...n.inEdges(m)]);for(let S of y)l.getNode(S.from),l.getNode(S.to),f.push({op:"remove-edge",edge:S});return y},x={graph:l,schema:n.schema,me:r.me,emit(m){f.push(m)},addNode(m){f.push({op:"add-node",node:m})},removeNode(m){let y=l.getNode(m)&&n.getNode(m);if(!y)throw new W(m,`Cannot remove missing node "${m}"`);v(m),f.push({op:"remove-node",node:y})},patchNode(m,y){let S=l.getNode(m)&&n.getNode(m);if(!S)throw new W(m,`Cannot patch missing node "${m}"`);let R={},w={};for(let[_,E]of Object.entries(y)){let M=S[_];JSON.stringify(M)===JSON.stringify(E)&&!r.keepUnchanged?.(E,_,S)||(R[_]=M,w[_]=E)}Object.keys(w).length!==0&&f.push({op:"patch-node",id:m,before:R,after:w})},archiveNode:m=>x.patchNode(m,{[An]:!0}),unarchiveNode:m=>x.patchNode(m,{[An]:void 0}),mergeNode(m,y){let S=l.getNode(y)&&n.getNode(y);if(!S)throw new W(y,`Cannot merge into missing node "${y}"`);if(m===y||Ye(S))throw new z(m===y?"Cannot merge a record into itself":"Cannot merge into an archived record");let R=new Set([...n.outEdges(y),...n.inEdges(y)].map(N));for(let w of v(m)){let _={...w,from:w.from===m?y:w.from,to:w.to===m?y:w.to};_.from!==_.to&&!R.has(N(_))&&(R.add(N(_)),f.push({op:"add-edge",edge:_}))}x.archiveNode(m),b=y},addEdge(m){f.push({op:"add-edge",edge:m})},removeEdge(m){f.push({op:"remove-edge",edge:m.id!==void 0&&n.linkById(m.id)||m})},setSingleSource(m,y,S){n.inEdges(y,m).some(R=>R.from===S)||f.push({op:"add-edge",edge:{kind:m,from:S,to:y}});for(let R of n.inEdges(y,m))l.getNode(R.from),R.from!==S&&f.push({op:"remove-edge",edge:R})},freshId(m,y,S){if(o!==void 0&&!c.has(o)){if(y&&!o.startsWith(`${y}:`)){let ne=o.includes(":")?o.slice(o.indexOf(":")+1):o;throw new z(`Id "${o}" does not say its kind: ask for "${y}:${ne||o}"`,`Every ${y} id starts "${y}:", the ones "${e.name}" mints and the ones a caller asks for alike, so a later call names it as it names the rest.`)}if(!g(o))throw new z(`"${e.name}" makes its own id here`,`Leave id out${p?`, or end it "${p}"`:""}.`);if(h(o))throw new z(`Id "${o}" is already taken`,`"${e.name}" was asked to make a node with that id, and the graph has or had one. Pick another, or leave id out and let the act mint one.`);return c.add(o),o}let R=r.hint;if(o===void 0&&!c.size&&Cd(R)&&(!y||R.startsWith(`${y}:`))&&g(R)&&!h(R))return c.add(R),R;y&&r.keeps&&[u,S??{}].some(ne=>gd(m,y,ne,r.keeps))&&(m=y);let w=y?`${y}:${Dd(m)}`:Dd(m),_=r.seesInFull!==void 0&&!r.seesInFull(y),M=Mf(w,{seen:ne=>(r.seen?r.seen.has(ne):n.has(ne))||c.has(ne)||!_&&r.everHeld?.(ne)===!0,held:h,limited:_,me:r.me});return c.add(M),M}};if(e.apply(x,u),o!==void 0&&!c.has(o))throw new z(`"${e.name}" did not make a record with id "${o}": it names what it makes itself`);let $=r.check?.(f,e),k=new Set(f.flatMap(Me)),O=new mt(r.seen??n),A=e.describe?.(u,O)??`${e.name}(${Object.entries(u).map(([m,y])=>`${m}=${JSON.stringify(y)}`).join(", ")})`;return{primitives:f,reads:[...new Set([...l.reads(),...O.reads()])],...e.describe?{described:[...O.reads(),...$??[]]}:{},writes:[...k],intent:A,...b!==void 0?{mergedInto:b}:{},...c.size>0?{firstMinted:c.values().next().value}:{}}}function Yo(n,e,t,r,o,i){if(typeof r!="string"||typeof o!="string")return n.allowedOn===void 0;if(n.allowedOn)return n.allowedOn(t,r);let s=n.subject?.arg??"id",a=n.input.shape??{},d=t.getNode(r)?.[o],u={[s]:r,...o!==s&&o in a&&d!==void 0&&d!==null?{[o]:d}:{}},l=n.input.safeParse?.(u),f=l?.success?l.data:u,c=()=>{},p={graph:t,schema:e,me:i,addNode:c,removeNode:c,patchNode:c,archiveNode:c,unarchiveNode:c,mergeNode:c,addEdge:c,removeEdge:c,setSingleSource:c,freshId:(g,h)=>`${h?`${h}:`:""}${g}`,emit:c};try{n.apply(p,f)}catch(g){let h=g;return!(h?.name==="ActRefusal"&&h.reason!=="invalid")}return!0}var Gd=Symbol.for("@graview/core:amount"),kx=(n,e)=>(Object.defineProperty(F(n),Gd,{value:e,enumerable:!0}),n);function Jo(n,e=!0){let t=F(n);return t?.[Gd]??(e&&t?.innerType?Jo(t.innerType):void 0)}function Kd(n,e={}){let t=Number.isInteger(n),r={maximumFractionDigits:t?0:2,minimumFractionDigits:t?0:2};try{return ke(n,e.locale,e.currency?{style:"currency",currency:e.currency,...r}:r)}catch{return ke(n,e.locale,r)}}function Vd(n,{format:e,unit:t,currency:r,locale:o}){let i=/^[A-Z]{3}$/.test(t??"");return e==="money"||!e&&i?Kd(n,{...o?{locale:o}:{},...(i?t:r)?{currency:i?t:r}:{}}):e==="percent"?ke(n,o,{style:"percent",maximumFractionDigits:0}):ke(n,o)+(t?` ${t}`:"")}var zf=Symbol.for("@graview/core:typed-field");function Xo(n){let e=F(n);return e?e[zf]??Xo(e.innerType):void 0}var Nf=/^[("'“‘]*(?:(?:[a-z]{1,3}\.){2,}|(?:dr|mr|mrs|ms|mx|st|mt|vs|jr|sr|prof|no|fig|approx)\.)$/i;function If(n){for(let e of n.matchAll(/[.!?](?=\s|$)/g)){let t=n.slice(0,e.index+1),r=/\S+$/.exec(t)?.[0]??"";if(!(e[0]==="."&&Nf.test(r))&&!(t.split(" ").length<3&&e.index+1<n.length))return t}}function Bd(n,e=140){let t=n.replace(/^[#>\s]+|\*\*|`|\](\([^)\s]*\))?|\[/gm,"").replace(/\s+/g," ").trim(),r=If(t);return r&&r.length<=e?r:t.length<=e?t:`${(t.slice(0,e+1).replace(/\s+\S*$/,"")||t.slice(0,e)).replace(/[\s,;:.—-]+$/,"")}\u2026`}function Qo(n){let e=n.fields.shape;return Object.keys(e).flatMap(t=>{let r=Zt(e[t])?rt(t):void 0;return r&&e[r]?[r]:[]})}var Tf=[["skip","Skip this one","Leave one day out of the series; the rest stay as they are.","Skip {} on "],["detach","Change just this one","Make one day of the series a record of its own, to change apart from the rest.","Change {} only on "],["split","Change from here","End the series the day before, and start it again from that day with what changes.","Change {} from "]];function Ud(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=Qo(o);if(i.length===0)continue;let s=o.kind,a=o.fields.shape,d=yt(n,e).get(s),u=new Set(o.keptInStep??[]),l=g=>(d?.get(g)?.length??0)>0&&!u.has(g),f=Ze(o).filter(g=>!l(g)),c=Object.fromEntries(Ze(o).filter(l).map(g=>[g,d.get(g)])),p=g=>V(o,g);for(let[g,h,b,v]of Tf){let x=`${g}-${s}`;t.has(x)||r.push({name:x,derived:{kind:s,act:g},title:h,description:b,subject:{kinds:[s],arg:"id"},writes:i.map(Rn),...g==="skip"?{}:{creates:[s],...Object.keys(c).length>0?{writtenBy:c}:{}},input:kn({id:Le([s]),on:L().check(Xn(/^\d{4}-\d{2}-\d{2}$/,"a day, like 2026-10-21")),...i.length>1?{field:Q(va(i))}:{},...g==="skip"?{}:Object.fromEntries(f.map($=>[$,Q(a[$])]))}),describe:($,k)=>v.replace("{}",p(k.getNode(String($.id))??{id:$.id}))+Ne(String($.on)),apply($,k){let O=$.graph.getNode(String(k.id)),A=String(k.field??i[0]),m=O?.[A],y=O?.[Rn(A)],S=String(k.on);if(typeof m!="string"||!$n(y))throw new se(`${p(O??{id:k.id})} does not repeat`,"refused");let R=Sn(m,y,{from:S,to:S})[0];if(!R)throw new se(`${p(O)} does not fall on ${Ne(S)}`,"refused");let w=String(O.id),_=Object.fromEntries(f.filter(B=>k[B]!==void 0).map(B=>[B,k[B]])),E=Rn(A),M=B=>{let fn=Object.fromEntries(Object.entries({...O,...B,..._}).filter(([de,j])=>j!=null&&de!=="id")),G=$.freshId(p(fn),s,fn);$.addNode({...fn,id:G,kind:s});for(let de of Object.keys(o.edges??{}))for(let j of $.graph.out(w,de))$.addEdge({kind:de,from:G,to:j.id})};if(g!=="split"){$.patchNode(w,{[E]:{...y,except:[...new Set([...y.except??[],S])].sort()}}),g==="detach"&&M({[A]:R,[E]:null});return}if(Object.keys(_).length===0)throw new se(`Nothing to change: give ${p(O)} from ${Ne(S)} something new`,"invalid");if(S<=m.slice(0,10))return $.patchNode(w,_);let ne=new Date(Date.parse(`${S}T00:00:00Z`)-864e5).toISOString().slice(0,10),Zn=y.count?Sn(m,{...y,except:[]},{to:ne}).length:0,{count:Ee,except:un,...Cn}=y,ae=B=>un?.some(B)?{except:un.filter(B)}:{};$.patchNode(w,{[E]:{...Cn,until:ne,...ae(B=>B<S),...Ee?{count:Zn}:{}}}),M({[A]:R,[E]:{...Cn,...ae(B=>B>=S),...Ee?{count:Ee-Zn}:{},continues:w}})}})}}return r}function Wd(n,e,t,r){if(n==="detach")return!0;if(n!=="split"||typeof e.on!="string")return!1;let o=t?.[String(e.field??r[0])];return typeof o!="string"||e.on>o.slice(0,10)}function qd(n,e){let t=new Set(e.map(a=>a.name)),r=e.filter(a=>!a.derived&&!a.creates?.length),o=(a,d,u,l)=>r.some(f=>{if(!(f[a]??[]).includes(u))return!1;let c=f.subject?.kinds;return c===void 0||c==="*"||c.includes(d)||l.to==="*"||c.some(p=>l.to.includes(p))}),i=[],s=(a,d)=>{let u=a.getNode(String(d));return u?V(n.tryDefinition(u.kind),u):String(d)};for(let a of n.definitions){let d=a.kind,u=Object.entries(a.edges??{}),l=f=>f.to==="*"?"record":f.to.map(c=>Y(n.tryDefinition(c),c)).join(" or ");for(let[f,c]of u){let p=l(c),g=c.cardinality==="one",h=u.some(([k,O])=>k!==f&&l(O)===p),b=k=>K(k).toLowerCase(),v=od(d,f,c,b),x={to:v&&"to"in v?v.to:p,from:Y(a,d),one:g,also:v&&"also"in v?v.also:h&&!v?b(f):void 0},$=x.from;for(let k of No){let O=Io(k,d,f);if(t.has(O)||c.acts==="none"||(k==="connect"?o("connects",d,f,c):o("severs",d,f,c)||c.appendOnly))continue;let{title:A,fromTheOtherEnd:m}=rd(k,x),y=c.description?`: ${c.description.replace(/\.$/,"")}`:"";i.push({name:O,derived:{kind:d,act:k,relation:f},title:A,fromTheOtherEnd:m,description:k==="connect"?`Link this ${$} to ${/^[aeiou]/i.test(p)?"an":"a"} ${p}${y}.${g?" It has one, so this replaces the one it has.":""}`:`Take away the link between this ${$} and ${/^[aeiou]/i.test(p)?"an":"a"} ${p}${y}. Undo puts it back.`,subject:{kinds:[d],arg:"id"},...k==="connect"?{connects:[f]}:{severs:[f],destructive:!0},idempotent:!0,input:kn({id:Le([d]),to:Le(c.to==="*"?"*":c.to)}),describe:(S,R)=>k==="disconnect"?`Unlink ${s(R,S.id)} from ${s(R,S.to)}`:g?`Set the ${p} of ${s(R,S.id)} to ${s(R,S.to)}`:`Link ${s(R,S.id)} to ${s(R,S.to)}`,apply(S,R){let w=String(R.id),_=String(R.to);for(let M of[w,_])if(!S.graph.getNode(M))throw new se(`there is no record "${M}"`,"invalid");let E=S.graph.out(w,f).some(M=>M.id===_);if(k==="disconnect"){if(!E)throw new se(`${s(S.graph,w)} is not linked to ${s(S.graph,_)}`,"invalid");S.removeEdge({kind:f,from:w,to:_});return}if(g)for(let M of S.graph.out(w,f))M.id!==_&&S.removeEdge({kind:f,from:w,to:M.id});E||S.addEdge({kind:f,from:w,to:_})}})}}}return i}function jf(n){let e=new Set(n.declared),t=[...new Set([...(n.paged??[]).filter(o=>e.has(o)),...n.declared])],r=(n.naming??[]).filter(o=>e.has(o));return[...new Set([...r,...t.filter(n.must),...t])]}var ei=n=>`\xA7${n}\xA7`;function Df(n,e){if(n.label)try{let r={id:ei(e.length),kind:n.kind};e.forEach((s,a)=>r[s]=ei(a));let o=String(n.label(r)),i=e.map((s,a)=>[s,o.indexOf(ei(a))]).filter(([,s])=>s>=0);if(i.length>0)return i.sort((s,a)=>s[1]-a[1]).map(([s])=>s)}catch{}let t=["name","title","label"].find(r=>e.includes(r));return t?[t]:[]}var Hd=new WeakMap;function tr(n){let e=Hd.get(n);if(e)return e;let t=n.fields.shape??{},r=Object.keys(t),o=n.display?.page,i=jf({declared:r,paged:[...o?.fields??[],...(o?.groups??[]).flatMap(s=>s.fields)],must:s=>t[s]?.safeParse?.(void 0).success===!1&&!Object.hasOwn(n.defaults??{},s),naming:Df(n,r)});return Hd.set(n,i),i}function Ff(n,e){let t=e.subject?.kinds,r=e.creates?.[0]??e.derived?.kind??(t!==void 0&&t!=="*"&&t.length===1?t[0]:void 0);return r===void 0?void 0:n.tryDefinition(r)}function Lf(n,e){let t=Object.keys(e.input?.shape??{}),r=n?Ff(n,e):void 0;if(!r)return t;let o=tr(r),i=d=>d!==e.subject?.arg&&o.includes(d),s=t.filter(i).sort((d,u)=>o.indexOf(d)-o.indexOf(u)),a=0;return t.map(d=>i(d)?s[a++]:d)}function ni(n,e,t=r=>r.name){let r=o=>{let i=e.indexOf(t(o));return i<0?e.length:i};return[...n].sort((o,i)=>r(o)-r(i))}function Ze(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function ti(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function ri(n,e){let t=n.subject;if(!t||!n.writes&&n.creates?.length)return[];let r=new Set(Object.keys(e.fields.shape));if(n.writes)return n.writes.filter(s=>r.has(s));let o=n.input.shape??{},i=new Set(pt(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function yt(n,e){let t=new Map,r=(o,i,s)=>{let a=t.get(o)??new Map;a.get(i)?.includes(s)||(a.set(i,[...a.get(i)??[],s]),t.set(o,a))};for(let o of e){for(let i of ti(n,o)){let s=n.tryDefinition(i);if(s)for(let a of ri(o,s))r(i,a,o.name)}for(let[i,s]of Object.entries(o.writesOther??{})){let a=n.tryDefinition(i)?.fields.shape;if(a)for(let d of s)d in a&&r(i,d,o.name)}}return t}function Jd(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=yt(n,e).get(t);return Ze(r).filter(i=>!o?.has(i))}var rr=n=>`edit-${n}`;function or(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=new Set;for(let i of e)i.derived||((i.creates??[]).includes(t)&&o.add(i.name),ti(n,i).includes(t)&&ri(i,r).length>0&&o.add(i.name));return[...o]}function Xd(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=rr(i);if(t.has(s))continue;let a=new Set((o.keptInStep??[]).filter(h=>Ze(o).includes(h))),d=Jd(n,e,i),u=ni(Ze(o).filter(h=>d.includes(h)||a.has(h)),tr(o),h=>h);if(u.length===0)continue;let l=yt(n,e).get(i),f=Object.fromEntries(Ze(o).flatMap(h=>!u.includes(h)&&l?.get(h)?.length?[[h,l.get(h)]]:[])),c=o.fields.shape,p=Y(o,i),g=u.map(h=>_t(o,h).toLowerCase());r.push({name:s,derived:{kind:i,act:"edit"},idempotent:!0,title:`Change the ${p}`,description:`Change what was set when this ${p} was made: ${g.join(", ")}.`,subject:{kinds:[i],arg:"id"},writes:u,...Object.keys(f).length>0?{writtenBy:f}:{},...u.some(h=>Yd(c[h]))?{clearable:u.filter(h=>Yd(c[h]))}:{},input:kn({id:Le([i]),...Object.fromEntries(u.map(h=>[h,Q(Gf(c[h]))]))}),describe:(h,b)=>Zf(o,c,u,h,b),apply(h,b){let v={};for(let x of u){let $=b[x];$===null?v[x]=void 0:$!==void 0&&(v[x]=$)}if(Object.keys(v).length===0)throw new se(`Nothing to change \u2014 give at least one of ${g.join(", ")} a value.`,"invalid");h.patchNode(b.id,v)}})}return r}function Zf(n,e,t,r,o){let i=o.getNode(r.id),s=i?V(n,i):"a record",a=t.filter(d=>r[d]!==void 0).map((d,u)=>{let l=r[d],f=rt(d),c=f!==void 0&&f in e,p=_t(n,c?f:d);return`the ${p===p.toUpperCase()?p:Di(p)}${u===0?` of ${s}`:""} to ${c?l?`repeat ${Cf(l)}`:"stop repeating":Qd(n,e[d],d,l)}`});return a.length===0?`Changed nothing on ${s}`:`Changed ${a.length>1?`${a.slice(0,-1).join(", ")} and ${a.at(-1)}`:a[0]}`}var Cf=n=>`every ${(n.interval??1)>1?`${n.interval} ${n.every}s`:n.every}`;function Qd(n,e,t,r){if(r===null||r===""||Array.isArray(r)&&r.length===0)return"nothing";let o=n.display?.format?.[t];try{if(o)return String(o(r))}catch{}if(et(r).length>0)return et(r).map(i=>i.name).join(", ");if(nt(e))return Array.isArray(r)&&r.length>1?`${r.length} linked records`:"a linked record";if(Array.isArray(r))return r.map(i=>Qd(n,e,t,i)).join(", ");if(typeof r=="boolean")return r?"yes":"no";if(typeof r=="number"){let i=Jo(e);return i?Vd(r,i):Xo(e)==="duration"?`${r>=60?`${Math.floor(r/60)} h `:""}${r%60||r<60?`${r%60} min`:""}`.trim():String(r)}if(typeof r!="string")return"a new value";if(Pr.test(r))return Ne(r);if(Rt.test(r))return Mr(r);for(let i=F(e);i;i=F(i.innerType))if(i.type==="enum")return K(r);return`\u201C${Bd(r,60)}\u201D`}function Yd(n){return n._zod?.def?.type==="optional"}function Gf(n){let e=n;for(let t=0;t<4;t++){let r=e._zod?.def;if((r?.type==="default"||r?.type==="prefault")&&r.innerType)e=r.innerType;else break}return e}function ir(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function sr(n,e,t){if(!t.derived)return;let r=t.derived.act;return r==="edit"||r==="skip"||r==="detach"||r==="split"||r==="connect"||r==="disconnect"?or(n,e,t.derived.kind):ir(e,t.derived.kind)}function Kf(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=Y(o,i),a=(u,l)=>{let f=u.getNode(String(l));return f?V(o,f):String(l)},d=Le([i]);for(let[u,l,f,c]of[["remove","Remove",`Remove the ${s}`,`Take this ${s} out of the graph, with every tie it has. Undo puts it back.`],["archive","Archive",`Archive the ${s}`,`Set this ${s} aside, with its ties and history kept.`],["unarchive","Bring back","Bring it back",`Bring this archived ${s} back.`],["merge","Merge",`Merge into another ${s}`,`The other takes this ${s}'s ties, and this one is archived.`],["leave-alone","Leave alone","Leave this one alone",`Nothing automated changes this ${s}: tidying passes it by until you allow it again.`],["allow-tidying","Allow tidying of","Allow tidying again",`Let tidying change this ${s} again.`]]){let p=`${u}-${i}`,g=u==="leave-alone"||u==="allow-tidying";t.has(p)||!g&&u!=="remove"&&o.archives===!1||g&&o.tidying==="never"||r.push({name:p,derived:{kind:i,act:u},title:f,description:c,subject:{kinds:[i],arg:"id"},...u==="remove"?{destructive:!0}:{},idempotent:!0,input:ge(u==="merge"?{id:d,into:d}:{id:d}),describe:(h,b)=>{let v=u==="remove"&&b.getNode(String(h.id)),x=v?new Set(Object.values(v).flatMap(O=>et(O).map(A=>A.href))).size:0,$=u==="merge"&&a(b,h.id)===a(b,h.into),k=O=>$?`${a(b,O)} (${String(O)})`:a(b,O);return`${l} ${k(h.id)}${u==="merge"?` into ${k(h.into)}`:""}${x?` and its ${x} file${x>1?"s":""}`:""}`},apply:g?(h,b)=>h.patchNode(String(b.id),{[it]:u==="leave-alone"?!0:void 0}):(h,b)=>h[`${u}Node`](b.id,b.into)})}}return r}function oi(n,e){return[...Xd(n,e),...Kf(n,e),...Ud(n,e),...qd(n,e)]}var Vf=n=>({$made:n}),ar=n=>typeof n=="object"&&n!==null&&Object.keys(n).join()==="$made"&&Number.isInteger(n.$made)&&n.$made>=0,Bf=(n,e)=>Object.fromEntries(Object.entries(n.args??{}).map(([t,r])=>[t,Array.isArray(r)?r.map(e):e(r)])),ii=n=>Object.values(n.args??{}).some(e=>ar(e)||Array.isArray(e)&&e.some(ar)),ec=(n,e,t)=>({...n,args:Bf(n,r=>{if(!ar(r))return r;let o=r.$made<t?e[r.$made]:void 0;if(o===void 0)throw new Error(`\u201C${n.name}\u201D names the record call ${r.$made+1} makes, and no call before it made that record.`);return o})});var Uf=500,Wf=120,qf=50,Hf=200,Yf=200,nc=4e3,Jf=["model","suggestion","interaction","actor","run"],si=n=>typeof n=="string"&&n.length>0&&n.length<=Wf,Xf=n=>typeof n=="string"&&n.length<=240&&n.lastIndexOf("#")>0&&n.lastIndexOf("#")<n.length-1,Qf=n=>{let e=JSON.stringify(n);return e===void 0?void 0:JSON.parse(e)};function Tn(n){if(n===void 0)return;let e=n&&typeof n=="object"&&!Array.isArray(n)?n:{},t=typeof e.basis=="string"?e.basis.trim():"",r={basis:t},o=t!==""&&t.length<=Uf;for(let i of Object.keys(e)){let s=e[i];i==="basis"||s===void 0||(i==="model"&&typeof s=="string"&&(s=s.trim()),i==="confidence"?o&&=typeof s=="number"&&s>=0&&s<=1:Jf.includes(i)?o&&=si(s):i==="evidence"?o&&=Array.isArray(s)&&s.length<=qf&&s.every(si):i==="read"?o&&=Array.isArray(s)&&s.length<=Hf&&s.every(Xf):i==="voters"?o&&=Array.isArray(s)&&s.length<=Yf&&s.every(si):o&&=i!=="__proto__"&&i!=="constructor"&&i!=="prototype"&&(s=Qf(s))!==void 0,o&&(r[i]=s))}if(!o)throw new z("A lineage is { basis: 1 to 500 characters, confidence?: 0 to 1, model?, suggestion?, interaction?, actor?, run?: 1 to 120 characters, evidence?: up to 50 ids, read?: up to 200 <id>#<field>, voters?: up to 200 ids }");if(JSON.stringify(r).length>nc)throw new z(`A lineage is at most ${nc} characters written out.`);return r}var jn="keep-link";function tc(n){let e=(t,r)=>{let o=t.getNode(r);return o?V(n.tryDefinition(o.kind),o):r};return{name:jn,title:"Keep this link",input:ge({kind:L(),from:L(),to:L()}),describe:(t,r)=>`Keep the link from ${e(r,t.from)} to ${e(r,t.to)}`,apply(t,r){let{kind:o,from:i,to:s}=r;if(!t.graph.getNode(i)||!t.graph.getNode(s)){let d=N({kind:o,from:i,to:s});throw new W(d,`Cannot remove missing edge ${d}`)}let a=t.graph.edgesOfKind(o,{archived:"all"}).find(d=>d.from===i&&d.to===s)??{kind:o,from:i,to:s};t.removeEdge(a),t.addEdge(a)}}}var ai=(n,e)=>[...n].filter(t=>!t.derived&&t.name!==jn&&typeof e=="string"&&(t.connects?.includes(e)||t.severs?.includes(e))).map(t=>t.name);var dr="vote-suggestion";function rc(){return{name:dr,title:"Vote on a suggestion",input:ge({suggestion:L(),vote:ba([Qn("for"),Qn("against"),ma()])}),apply(){}}}var cr=globalThis[Symbol.for("@graview/core:voting")]??={};var oc=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget"];function ic(n,e){let t=Vt(n,e);return t&&[...t.fields].filter(Boolean)}function ep(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function lr(n,e){try{return V(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var np=n=>`${n.kind}:${n.from}->${n.to}`,ur=(n,e)=>n<e?-1:n>e?1:0;function sc(n,e,t={}){let{schema:r}=n,o=[],i=new Map;for(let c of e.nodes)i.has(c.id)||i.set(c.id,c);let s=c=>e.edges.filter(p=>p.from===c||p.to===c),a=c=>({action:"drop",primitives:[...s(c.id).filter(p=>i.has(p.from)&&i.has(p.to)).map(p=>({op:"remove-edge",edge:p})),{op:"remove-node",node:c}]}),d=new Set;for(let c of[...i.values()].sort((p,g)=>ur(p.id,g.id))){if(!r.tryDefinition(c.kind)){d.add(c.id),o.push({code:"kind-unknown",id:c.id,message:`${lr(r,c)} is a kind of record this app no longer has`,repair:a(c)});continue}let p=ic(r,c);if(p===void 0)continue;let g=lr(r,c),h=new Map,b=p.length>0;for(let v of p){if(v==="id"||v==="kind"){b=!1;continue}let x=ep(r,c.kind,v),$=x?x.safeParse(void 0):{success:!0,data:void 0},k=r.tryDefinition(c.kind)?.defaults;!$.success&&x&&k&&Object.hasOwn(k,v)&&($=x.safeParse(k[v])),$.success?$.data===void 0?h.set(v,{action:"clear",value:he}):h.set(v,{action:"coerce",value:$.data}):b=!1}if(b){let v={...c};for(let[x,$]of h)$.value===he?delete v[x]:v[x]=$.value;ic(r,v)!==void 0&&(b=!1)}if(p.length===0){o.push({code:"node-shape",id:c.id,message:`${g} does not fit what ${c.kind} declares`,repair:a(c)});continue}for(let v of p){let x=h.get(v),$=b&&x?{action:x.action,primitives:[{op:"patch-node",id:c.id,before:{[v]:c[v]===void 0?he:c[v]},after:{[v]:x.value}}]}:a(c);o.push({code:"node-shape",id:c.id,detail:v,message:`${g}: ${K(v)} does not fit what ${c.kind} declares`,repair:$})}}let u=new Set,l=[];for(let c of[...e.edges].sort((p,g)=>ur(N(p),N(g)))){if(u.has(N(c)))continue;u.add(N(c));let p=np(c),g=i.get(c.from),h=i.get(c.to);if(!g||!h){o.push({code:"edge-dangling",id:p,message:"A link points at a record that is not there",repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}});continue}l.push(c),!(d.has(g.id)||d.has(h.id))&&(r.edgeAllowed(c.kind,g.kind,h.kind)||o.push({code:"edge-disallowed",id:p,message:`${lr(r,g)} \u2192 ${lr(r,h)}: this app does not allow that link between them`,repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}}))}let f=n.invariants??[];if(f.length>0){let c=ee.from(r,{nodes:[...i.values()],edges:l},{validate:!1}),p=new Set,g;try{g=_n(c,f,t.invariantOptions??{})}catch{g=[{invariant:"rules",status:"could-not-judge",label:"The rules",message:"The rules could not be judged",nodeIds:[],repairs:[]}]}for(let h of g){let b=h.status==="could-not-judge"?"rule-error":h.status==="over-budget"?"rule-budget":void 0;if(!b)continue;let v=h.subjectId??h.invariant,x=`${b}|${v}|${h.invariant}`;p.has(x)||(p.add(x),o.push({code:b,id:v,detail:h.invariant,message:h.message}))}}return o.sort((c,p)=>oc.indexOf(c.code)-oc.indexOf(p.code)||ur(c.id,p.id)||ur(c.detail??"",p.detail??""))}var bt=()=>globalThis.__graviewWatch;function ac(n){bt()?.store?.(n)}function fr(n){n!==void 0&&bt()?.learn?.({ids:[n],words:[]})}function dc(n,e){bt()?.refused?.({...n,...e===void 0?{}:{author:e}})}function di(n,e){let t=bt();if(!t?.refusedInput)return;let r=n.issues.map(o=>`${o.path.map(String).join(".")}: ${o.message}`).join("; ");t.refusedInput({mutation:n.mutation,message:r,...e===void 0?{}:{author:e}})}function tp(n,e){n instanceof ye&&di(n,e)}function rp(n,e,t){bt()?.seat?.(n,e,t)}function li(n,e){if(typeof n=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(n))return n;let t=new Date(n).getTime();if(Number.isNaN(t))throw new Error(`Not a day: ${String(n)}`);return te(e,t)}var ci=15*6e4;function cc(n=Date.now(),e){let t=new Date(n).getTime(),r=$t(e),o=te(r,t),i=new Date(Date.parse(`${o}T00:00:00Z`));if(i.setUTCDate(i.getUTCDate()+1),!r)return i.getTime()-t;let s=Ni(i.toISOString().slice(0,10),0,r);for(;te(r,s)===o;)s+=ci;for(;te(r,s-ci)!==o;)s-=ci;return s-t}function op(n,e){let t,r=()=>{t=setTimeout(()=>{let o=n.tick(new Date);r(),e?.(o)},cc(Date.now(),n.timeZone)+1e3),t.unref?.()};return r(),()=>clearTimeout(t)}function ui(n){let e=(n?.published?.length??0)>0;return{framework:On,formats:{...le,snapshot:e?2:1}}}var pr=class extends z{constructor(e){super(`This is the app as it stood${e.at?` at ${e.at}`:" at the start"}: the past is read, never changed`),this.name="PastError"}},fi="preview",C=(n,e)=>e===void 0?{}:{[n]:e},on={kind:"human"},lc={kind:"system"},pc={kind:"system",id:"modules",name:"Modules"},uc=n=>n.mutation===null&&n.undoes===void 0;function pi(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var ip=new Set(["remove","archive","unarchive","merge"]),sp={has:()=>!0},hc=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function gc(n,e,t){let r=hc(n),o=f=>pi(f,r),i=new Set(e.map(o)),s=new Set(t.map(o)),a=t.filter(f=>!i.has(o(f))),d=e.filter(f=>!s.has(o(f)));if(a.length===0||d.length===0)return{introduces:a,resolves:d};let u=f=>f.subjectId&&pi(f,sp),l=d.map(u);return{introduces:a.filter(f=>{let c=u(f)?l.indexOf(u(f)):-1;return c<0||(l[c]=null,!1)}),resolves:d.filter((f,c)=>l[c]!==null)}}var Dn=class extends Error{constructor(t,r){super(`Op "${t.id}" (${t.intent}) could not be applied: ${r instanceof Error?r.message:String(r)}`,{cause:r});this.op=t;this.name="ReceiveError"}},hr=class extends z{constructor(t,r){let o=To(t,r);super(`Unknown mutation "${t}"${o?` \u2014 did you mean "${o}"?`:""}`,`Registered: ${r.join(", ")||"(none)"}`);this.mutation=t;this.name="UnknownMutationError",this.nearest=o}nearest},fc=n=>new Map(n.map(e=>[e.id,e.batch]));function ap(){let n=globalThis.crypto,e=new Uint8Array(6);if(n?.getRandomValues)n.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256);return[...e].map(t=>t.toString(36).padStart(2,"0")).join("")}var hi=class n{schema;graph;log;mutations=new Map;keeper;typer;voter;invariants;invariantOptions;policy;publishing;tidying;intelligence;may=new Map;by;declaredModules;startingModules;projected;nextId;now;validate;mintBatch;batchTag;counter=0;opCount=0;quiet=0;rehearsing=!1;suggesting=!1;ticked;timeZone;past;pastEvery;listeners=new Set;constructor(e){this.pastEvery=Math.max(1,e.pastEvery??64),this.past=e.past,this.schema=e.schema,this.invariants=e.invariants??[],this.invariantOptions=e.invariantOptions??{},this.timeZone=e.timeZone,this.timeZone&&(this.ticked={day:te(this.timeZone),on:te(this.timeZone)}),this.policy=e.policy,this.publishing=e.publishing,this.tidying=e.tidying,this.by=e.principal??on,this.intelligence=e.intelligence??[];for(let i of e.intelligence??[])i.may&&this.may.set(i.name,new Set(i.may));this.declaredModules=e.modules,this.startingModules=e.enabledModules,this.nextId=e.ids??(()=>`op${++this.opCount}`),this.now=e.now??(()=>new Date().toISOString()),this.validate=e.validate??!0;let t=ap();this.batchTag=e.batchIds?void 0:t,this.mintBatch=e.batchIds??(i=>`${i}:${t}:${++this.counter}`);for(let i of e.past?[]:e.mutations??[]){if(this.mutations.has(i.name))throw new z(`Duplicate mutation "${i.name}"`);this.mutations.set(i.name,i)}for(let i of e.past?[]:oi(e.schema,e.mutations??[]))this.mutations.set(i.name,i);!e.past&&!this.mutations.has(jn)&&(this.keeper=tc(e.schema),this.mutations.set(jn,this.keeper)),!e.past&&!this.mutations.has(dr)&&(this.voter=rc(),this.mutations.set(dr,this.voter));let r=C("horizon",e.horizon),o={validate:this.validate};if(e.log){this.log=Mn.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?ee.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=Mn.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=ee.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);e.past||(this.countPastTheLog(),ac(this))}stillNow(){if(this.past)throw new pr(this.past)}countPastTheLog(){this.countPast(this.log.all())}countPast(e){let t=r=>{let o=/(\d+)$/.exec(r);return o?Number(o[1]):0};for(let r of e)this.counter=Math.max(this.counter,t(r.batch)),this.opCount=Math.max(this.opCount,t(r.id));this.log.horizon>0&&(this.opCount=Math.max(this.opCount,this.log.length))}get servedSeq(){return this.log.length}get publishedSeq(){return q.seq?.(this)}get publisher(){return q.act?.(this,this.mutations)}get modules(){let e=this.log.all(),t=e.at(-1)?.id,r=this.projected;if(r&&r.length===e.length&&r.last===t)return r.projection;let o,i=0;r&&r.length<=e.length&&(r.length===0||e[r.length-1]?.id===r.last)&&(o=r.said,i=r.length);for(let a=e.length-1;a>=i;a--){let d=e[a].enabledModules;if(d!==void 0){o=d;break}}o??=this.log.horizonEpoch()?.enabledModules;let s=r&&o===r.said?r.projection:Bo(this.declaredModules,o??this.startingModules);return this.projected={projection:s,length:e.length,last:t,said:o},s}setEnabledModules(e,t={}){this.stillNow();let r=this.modules.enabled,o=Bo(this.declaredModules,e).enabled,i=[...r].filter(l=>!o.has(l)),s=[...o].filter(l=>!r.has(l));if(i.length===0&&s.length===0)return;let a=l=>l.map(f=>{let c=this.declaredModules?.[f]?.kinds??[];return c.length>0?c.map(p=>ce(this.schema,p)).join(", "):f}).join(", "),d=[i.length>0?`Turn off ${a(i)}`:"",s.length>0?`turn on ${a(s)}`:""].filter(Boolean).join("; "),u={id:this.nextId(),seq:this.log.length,batch:t.batch??this.mintBatch("batch"),author:pc,intent:yn(d),mutation:null,primitives:[],reads:[],writes:[],at:this.now(),...C("via",t.via),enabledModules:[...o].sort()};return this.log.append(u),this.notify(st,[u]),u}mutation(e){let t=this.mutations.get(this.spelled(e))??(e===Ht?this.publisher:void 0);if(!t)throw new hr(e,[...this.mutations.keys()]);if(this.mutationDisabled(t))throw new z(`Mutation "${e}" belongs to a module this workspace has turned off`,`Enabled modules: ${[...this.modules.enabled].join(", ")||"(none)"}`);return t}spelled(e){return e===qt&&!this.typer&&ie.typeText&&!this.past&&!this.mutations.has(e)&&this.mutations.set(e,this.typer=ie.typeText(this)),this.mutations.has(e)?e:Yt(e,this.mutations.keys())??e}spelledCall(e){let t=this.spelled(e.name);return t===e.name?e:{...e,name:t}}mutationDisabled(e){return this.modules.disabledMutations.has(e.name)?!0:e.derived!==void 0&&this.modules.disabledKinds.has(e.derived.kind)}allMutations(){return[...this.mutations.values(),...this.publisher?[this.publisher]:[]].filter(e=>e!==this.keeper&&e!==this.typer&&e!==this.voter&&!this.mutationDisabled(e))}viaOf(e,t,r){if(e!==void 0&&e===this.keeper){let o=ai(this.mutations.values(),t?.args.kind);if(o.length>0)return o;let i=[...this.mutations.values()];return[...new Set(i.filter(s=>s.derived?.relation===t?.args.kind).flatMap(s=>sr(this.schema,i,s)??[]))]}if(e!==void 0&&e===this.typer){let o=r===void 0||Z(r)?this.graph:be(this,r).graph,i=s=>!this.mutationDisabled(s)&&Yo(s,this.schema,o,t?.args.node,t?.args.field,r&&I(r).id);return ie.via(this.schema,[...this.mutations.values()],this.subjectKindOf(t,r),t?.args.field,i)}if(e?.derived)return sr(this.schema,[...this.mutations.values()],e)}moved(e,t){return gc(this.allInvariants(),e,t)}allInvariants(){return this.invariants.filter(e=>this.invariantEnabled(e))}invariantEnabled(e){if(this.modules.disabledInvariants.has(e.name))return!1;if(e.scope!=="graph"){let t=e.scope.kind;if(this.modules.disabledKinds.has(t))return!1}return!0}permits(e,t=on){if(e=this.spelledCall(e),this.past)return{ok:!1,refusal:{mutation:e.name,wouldNeed:[],message:"Nothing changes while you look back."}};let r=this.refusesAgent(e,t)??this.namesTurnedOff(e,t);if(r)return{ok:!1,refusal:r};let o=this.mutations.get(e.name)??(e.name===Ht?this.publisher:void 0);if(o&&o===this.publisher)return q.verdict(this,t);if(o&&o===this.voter)return{ok:!0};let i=o!==void 0&&o===this.keeper&&ai(this.mutations.values(),e.args.kind).length===0,s=i?e.args.from:o?.subject&&e.args[o.subject.arg],a=this.subjectKindOf(e,t),d=me(this.policy,t,e.name,a,this.viaOf(o,e,t),typeof s=="string"?s:void 0,this.words,()=>{let u=I(t).id,l=this.namedIn(e,!1);try{for(let f of In(this.graph,o,e.args,this.sighted(t)).primitives)"edge"in f&&f.edge.from!==u&&f.edge.to!==u&&l.push(f.edge.to)}catch{}return l},o!==void 0&&(o.derived!==void 0||o===this.typer||i)?()=>this.madeBy(o,e,s):void 0,o?.derived!==void 0&&ip.has(o.derived.act));if(d.ok&&o?.writesLinked&&typeof s=="string"){let u=this.refusesLinked(o,s,t);if(u)return u}return!d.ok||!o?.derived||!this.repeatMakes(o,e,s,t)?d:me(this.policy,t,e.name,a,ir([...this.mutations.values()],o.derived.kind),typeof s=="string"?s:void 0,this.words)}refusesLinked(e,t,r){let o=Z(r)?this.graph:be(this,r).graph,i=o.getNode(t);if(!i)return;let s=[...this.mutations.values()];for(let a of Object.keys(e.writesLinked??{})){let u=this.schema.tryDefinition(i.kind)?.edges?.[a]!==void 0?o.out(i.id,a):o.in(i.id,a);for(let l of u){let f=rr(l.kind),c=this.mutations.get(f),p=c?this.permits({name:f,args:{[c.subject?.arg??"id"]:l.id}},r):me(this.policy,r,f,l.kind,or(this.schema,s,l.kind),l.id,this.words);if(p.ok)continue;let g=this.words.act?.(e.name)??e.name,h=(this.labels??=new gt(this.graph)).labelOf(l.id)??l.id,b=this.words.noun?.(l.kind)??l.kind;return{ok:!1,refusal:{mutation:e.name,kind:i.kind,wouldNeed:p.refusal.wouldNeed,message:`Not permitted: \u201C${g}\u201D would change \u201C${h}\u201D, ${/^[aeiou]/i.test(b)?"an":"a"} ${b} that is not yours to change. ${p.refusal.message}`}}}}}repeatMakes(e,t,r,o){let i=e.derived.act;if(i!=="detach"&&i!=="split")return!1;let s=this.schema.tryDefinition(e.derived.kind);if(!s)return!1;let a=typeof r=="string"?(Z(o)?this.graph:be(this,o).graph).getNode(r):void 0;return Wd(i,t.args,a,Qo(s))}madeBy(e,t,r){let o=pe(this.log),i=o.creatorOf(r),s=t.args.into;if(!(e.derived?.act==="merge"&&typeof s=="string"&&o.creatorOf(s)!==i))return i}namedIn(e,t=!0){let r=this.mutations.get(e.name);if(!r)return[];let o=r.subject?.arg;return[...t&&o?[e.args[o]]:[],...pt(r.input).flatMap(s=>s.name===o?[]:[e.args[s.name]])].flat().filter(s=>typeof s=="string")}refuse(e,t,r=!this.rehearsing){throw r&&dc(e,t),new Qe(e)}get words(){return{act:e=>this.mutations.get(e)?.title,noun:e=>Y(this.schema.tryDefinition(e),e)}}refusesAgent(e,t){if(t.kind!=="agent"||t.id===void 0)return;let r=this.may.get(t.id);if(!r||r.has(e.name))return;let o=s=>`\u201C${this.mutations.get(s)?.title??s}\u201D`,i=[...r].map(o);return{mutation:e.name,message:`${t.id} may not ${o(e.name)} here: it was declared able to ${i.length===0?"do nothing else":i.join(", ")}.`,wouldNeed:[]}}namesTurnedOff(e,t=lc){let r=this.modules.disabledKinds;if(r.size===0||!Z(t))return;let o=this.mutations.get(e.name);if(!(!o||!this.namedIn(e).some(i=>r.has(this.graph.getNode(i)?.kind))))return{mutation:e.name,message:`\u201C${o.title??e.name}\u201D names a record of a module this workspace has turned off.`,wouldNeed:[]}}sighted(e){let t={me:e&&I(e).id,everHeld:o=>pe(this.log).kindOf(o)!==void 0,keeps:(o,i)=>hd(this.policy?.sees,o,i)};if(e===void 0||!rn(this,e))return t;let r=ht(this,e);return{...t,seen:be(this,e).graph,keepUnchanged:o=>D(o,r),seesInFull:kd(this,e)}}collaborative(e,t){return ie.collaborative?.(this.schema,this.graph.getNode(e)?.kind,t)??!1}asSplices(e,t){return ie.asSplices?ie.asSplices(this,e,t):e}missingFor(e,t=on){e=this.spelledCall(e);let r=this.mutations.get(e.name),o=new Set(this.namedIn(e));if(!r||o.size===0)return;let i=be(this,t).graph;for(let s of o)if(!i.has(s))return new W(s,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=on){let r=this.modules.administered.get(e);return r?(r.mutations??[]).some(o=>{let i=this.mutations.get(o);return!!i&&Oo(i).some(s=>me(this.policy,t,o,s,this.viaOf(i)).ok)}):!1}seenBy(e,t){return be(this,e,t)}sees(e,t){return this.graph.has(t)&&ht(this,e)(t)}labels;resolveRef(e,t,r=on){let o=(this.policy?.sees?.length??0)>0,i=c=>!o||this.sees(r,c),s=this.graph.getNode(t);if(this.labels??=new gt(this.graph),s&&i(t))return{ok:!0,id:t,label:this.labels.labelOf(t)??t,by:"id"};let a=this.labels.lookup(e.kinds,t),d=c=>{let p=c.filter(g=>!this.graph.isArchived(g));return p.length?p:c},u=d(a.exact.filter(i)),l=u.length>0,f=(l?u:d(a.prefix.filter(i))).map(c=>({id:c,kind:this.graph.getNode(c).kind,label:this.labels.labelOf(c)??c})).sort((c,p)=>c.label<p.label?-1:c.label>p.label?1:c.id<p.id?-1:1);return f.length===1?{ok:!0,id:f[0].id,label:f[0].label,by:l?"label":"prefix"}:zd(this.schema,e,t,f)}kindsKeptFrom(e=on){let t=new Set;for(let[o,i]of this.modules.administered)if(!this.mayAdminister(o,e))for(let s of i.kinds??[])t.add(s);let r=this.policy?.sees??[];if(r.length>0&&!Z(e)){let o=new Set(this.permittedMutations(e).flatMap(s=>s.creates??[])),i=Fe(this);for(let s of this.schema.kinds)!r.some(d=>d.kinds.includes(s)&&Oe(d,e)&&(!d.own&&!d.via||e.id!==void 0)&&(i||!ut(d)))&&!o.has(s)&&t.add(s)}return t}permittedMutations(e=on){let t=this.allMutations(),r=Ao(this.policy,e,t.filter(s=>!s.derived&&s!==this.publisher)),o=this.publisher&&q.verdict(this,e).ok?[this.publisher]:[],i=t.filter(s=>s.derived!==void 0&&me(this.policy,e,s.name,s.derived.kind,this.viaOf(s),I(e).id).ok);return[...r,...o,...i]}subjectKindOf(e,t=lc){let o=this.mutations.get(e.name)?.subject;if(!o)return;let i=e.args[o.arg];if(typeof i!="string")return o.kinds!=="*"&&o.kinds.length===1?o.kinds[0]:void 0;if(!(!Z(t)&&!be(this,t).graph.has(i)))return this.graph.getNode(i)?.kind}today(){return this.pinned()??(this.ticked&&this.ticked.on===te(this.timeZone)?this.ticked.day:void 0)??(this.timeZone?te(this.timeZone):void 0)}pinned(){let e=this.invariantOptions.context,t=this.invariantOptions.today??e?.today;return typeof t=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(t)?t:void 0}judging(e){let t=this.today(),r=Pa(this.graph),o=e??this.invariantOptions.context,i=r&&!(o&&"linked"in o)?{...o,linked:r}:e,s=i??o,a=this.timeZone&&t!==void 0&&e===void 0&&!(s&&"today"in s)?{...s,today:t}:i;return{...this.invariantOptions,...a===void 0?{}:{context:a},...t===void 0?{}:{today:t}}}tick(e=new Date){let t=this.pinned();if(t!==void 0)return{day:t,was:t,appeared:[],cleared:[]};let r=li(e,this.timeZone),o=te(this.timeZone);this.ticked&&(this.ticked={day:this.ticked.day,on:o});let i=this.today(),s=this.violations();this.ticked={day:r,on:o};let a=this.moved(s,this.violations());if(r!==i&&!this.rehearsing&&this.quiet===0)for(let d of this.listeners)d(st,[]);return{day:r,...i===void 0?{}:{was:i},appeared:a.introduces,cleared:a.resolves}}reread(){if(!(this.rehearsing||this.quiet>0))for(let e of this.listeners)e(st,[])}violations(e,t=this.graph){return _n(t,this.allInvariants(),this.judging(e)).map(r=>this.asking(r))}required=new Map;asking(e){if(!e.repairs.some(o=>o.missing===void 0))return e;let t=!1,r=e.repairs.map(o=>{if(o.missing!==void 0)return o;let i=this.requiredOf(o.mutation).filter(s=>o.args?.[s]===void 0);return i.length===0?o:(t=!0,{...o,missing:i})});return t?{...e,repairs:r}:e}requiredOf(e){let t=this.required.get(e);if(t)return t;let r=this.mutations.get(e)?.input?.shape??{},o=Object.entries(r).filter(([,i])=>typeof i?.safeParse=="function"&&!i.safeParse(void 0).success).map(([i])=>i);return this.required.set(e,o),o}wouldChange(e,t){try{return In(this.graph,this.mutation(e.name),e.args,this.sighted(t)).primitives.length>0}catch{return!0}}preview(e,t,r={}){e=this.spelledCall(e);let o=this.mutation(e.name),i=In(this.graph,o,e.args,this.sighted(r.author));return this.previewPrimitives(this.asSplices(i.primitives),{reads:i.reads,writes:i.writes,intent:i.intent,context:t})}previewAll(e,t={}){let{context:r,...o}=t;return{...this.rehearsal().applying(e,o,r),kept:!1}}rehearsal(){let e=Object.assign(Object.create(n.prototype),this),t=0;Object.assign(e,{graph:ee.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:Mn.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${fi}:${++t}`,mintBatch:()=>fi,rehearsing:!0});let r=this.typer&&ie.typeText(e);return Object.assign(e,{typer:r,mutations:r?new Map(this.mutations).set(qt,r):new Map(this.mutations)}),e}wouldKeep(e,t,r){try{return this.rehearsal().applying(e,{author:t,lineage:r}),!0}catch{return!1}}previewPrimitives(e,t){let r=this.violations(t.context),o=ee.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=_n(o,this.allInvariants(),this.judging(t.context));return{diff:i,primitives:e,reads:t.reads,writes:t.writes,intent:t.intent,...this.moved(r,s),violationsAfter:s}}apply(e,t={}){return this.applyAll([e],t)}applyAll(e,t={}){return this.applying(e,t)}applying(e,t,r){let o=e.map(w=>this.spelledCall(w));this.stillNow();let i=t.batch??this.mintBatch("batch"),s=t.author??this.by,a=Tn(t.lineage),d=[],u=[],l=new Set,f=new Set,c=[],p=this.violations(r),g=this.graph.snapshot(),h=this.log.length,b=(w,_=s)=>{let E=this.policy||this.publisher&&w.name===Ht?this.permits(w,_):void 0;E&&!E.ok&&this.refuse(E.refusal,_.id)},v=(w,_=s)=>{let E=this.refusesAgent(w,_)??this.namesTurnedOff(w,_);E&&this.refuse(E,_.id)},x=o.map(ii);o.forEach((w,_)=>x[_]||b(w)),o.forEach((w,_)=>x[_]||v(w));let $=o.map(w=>({sent:w,as:s,lineage:a,decided:!1}));Jt(s)&&this.refuseDeclined(o,s),this.rehearsing||fr(s.id);let O=[],A=[],m=new Map,y=w=>typeof w=="string"?m.get(w)??w:Array.isArray(w)?w.map(y):w;try{for(let w=0;w<$.length;w++){let{sent:_,as:E,lineage:M,decided:ne}=$[w],Zn=w<x.length?x[w]:ii(_),{mintedHint:Ee,...un}=_,Cn=m.size?{...un,args:Object.fromEntries(Object.entries(un.args).map(([j,xe])=>[j,y(xe)]))}:un,ae=Zn?ec(Cn,O,w):Cn;(Zn||ne)&&(b(ae,E),v(ae,E));let B=this.mutation(ae.name);if(B===this.publisher){let j=q.op(this,{id:this.nextId(),at:this.now()},ae,i,E,t);d.push(j),c.push(j.intent);continue}if(B===this.voter){if(!cr.op)throw new z("Load @graview/core/tidying to vote on a suggestion.");let j=cr.op(this,{id:this.nextId(),at:this.now()},ae,i,E,t);this.log.append(j),d.push(j),c.push(j.intent);let xe=cr.accepting?.(this,j);if(xe&&this.wouldKeep(xe.calls,xe.author,xe.lineage))for(let Bc of xe.calls)$.push({sent:Bc,as:xe.author,lineage:Tn(xe.lineage),decided:!0});continue}let fn=this.missingFor(ae,E);if(fn)throw fn;let G;try{G=In(this.graph,B,ae.args,{...this.sighted(E),hint:Ee})}catch(j){throw j instanceof ye&&!this.rehearsing&&di(j,E.id),j}if(Ee!==void 0&&G.firstMinted!==void 0&&G.firstMinted!==Ee&&m.set(Ee,G.firstMinted),Jt(E)){let j=cd(this.schema,this.graph,G.primitives,this.authorName(E),{declaration:!this.suggesting&&!ne});j&&this.refuse({mutation:ae.name,message:j,wouldNeed:[]},E.id)}if(G.primitives.length===0)continue;A[w]=G.firstMinted,O[w]=G.primitives.find(j=>j.op==="add-node")?.node.id;let de={id:this.nextId(),seq:this.log.length,batch:i,author:E,intent:B.describe!==void 0?G.intent:t.intent??G.intent,...C("batchIntent",t.intent),mutation:ae,primitives:this.asSplices(G.primitives,t.base).map(Gn),reads:G.reads,writes:G.writes,...B.describe!==void 0&&G.described&&G.described.length>0?{described:G.described}:{},...C("mergedInto",G.mergedInto),at:this.now(),...C("via",t.via),...C("lineage",M)};this.graph.applyPrimitives(de.primitives),this.log.append(de),d.push(de),u.push(...de.primitives);for(let j of de.reads)l.add(j);for(let j of de.writes)f.add(j);c.push(de.intent)}}catch(w){throw this.putBack(g,h),w}let S=De(g,this.graph.snapshot(),u);this.admitted(t,d,u,S,g,h);let R=this.violations(r);return this.notify(S,d),{batch:i,ops:d,...A.length>0?{minted:A}:{},diff:S,primitives:u,reads:[...l],writes:[...f],intent:t.intent??c.join("; "),...this.moved(p,R),violationsAfter:R}}receive(e,t={}){this.stillNow();let r=new Set(this.log.all().map(d=>d.id)),o=e.filter(d=>!r.has(d.id));if(o.length===0)return[];let i=this.graph.snapshot(),s=[];if(!t.applied)for(let d of o)try{this.graph.applyPrimitives(d.primitives,{restoring:d.undoes!==void 0})}catch(u){throw this.graph.load(i),new Dn(d,u)}let a=this.log.length;for(let[d,u]of o.entries()){let l=Kn({...u,seq:a+d});this.log.append(l),s.push(l)}return this.countPast(s),this.notify(De(i,this.graph.snapshot(),o.flatMap(d=>d.primitives)),s),s}append(e,t={}){if(this.stillNow(),e.length===0)return[];let r=new Set(this.log.all().map(a=>a.id)),o,i=e.map((a,d)=>{let u=a.primitives.map(Gn),l={id:a.id??this.nextId(),seq:this.log.length+d,batch:a.batch??t.batch??(o??=this.mintBatch("batch")),author:a.author,intent:a.intent,...C("batchIntent",a.batchIntent),mutation:a.mutation??null,primitives:u,reads:a.reads??[],writes:a.writes??[...new Set(u.flatMap(Me))],at:a.at??this.now(),...C("undoes",a.undoes),...C("via",a.via),...C("lineage",Tn(a.lineage))};if(r.has(l.id))throw new z(`Op "${l.id}" (${l.intent}) is already in the log`,"A host-made op needs an id of its own; leave `id` out and the store mints one.");return r.add(l.id),l}),s=this.graph.snapshot();for(let a of i)try{this.graph.applyPrimitives(a.primitives,{restoring:a.undoes!==void 0})}catch(d){throw this.graph.load(s),new Dn(a,d)}for(let a of i)this.log.append(a);this.countPast(i);for(let a of i)fr(a.author.id);return this.notify(De(s,this.graph.snapshot(),i.flatMap(a=>a.primitives)),i),i}applyPrimitives(e,t={}){this.stillNow();let r=t.batch??this.mintBatch("batch"),o=t.author??this.by,i=this.violations(),s=this.graph.snapshot(),a=t.intent??"Apply a change",d=Tn(t.lineage),u=this.asSplices(e,t.base).map(Gn),l=[];if(u.length>0){let p={id:this.nextId(),seq:this.log.length,batch:r,author:o,intent:a,mutation:null,primitives:u,reads:[],writes:[...new Set(u.flatMap(Me))],at:this.now(),...C("via",t.via),...C("lineage",d)};this.graph.applyPrimitives(p.primitives),this.log.append(p),l.push(p),fr(o.id)}let f=this.violations(),c=De(s,this.graph.snapshot(),u);return this.notify(c,l),{batch:r,ops:l,diff:c,primitives:u,reads:[],writes:l[0]?.writes??[],intent:a,...this.moved(i,f),violationsAfter:f}}findings(){return sc({schema:this.schema,invariants:this.allInvariants()},this.graph.snapshot(),{invariantOptions:this.invariantOptions})}batches(){return this.log.batches()}canUndo(e){return ct(this.log,typeof e=="string"?[e]:e)}previewUndo(e,t){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=Qa(r.ops,this.log.all()),i=new Set;for(let s of r.ops)for(let a of s.writes)i.add(a);return{ok:!0,check:r,...this.previewPrimitives(o,{reads:[...new Set(r.ops.flatMap(s=>[...s.reads]))],writes:[...i],intent:`Undo: ${r.ops.map(s=>s.intent).join("; ")}`,restoring:r.ops.every(uc),...t===void 0?{}:{context:t}})}}undo(e,t={}){return this.undoing(e,t)}undoing(e,t){this.stillNow();let r=typeof e=="string"?[e]:e,o=t.author??this.by,i=(this.policy?.sees?.length??0)>0&&!Z(o);if(i){let b=ct(Ko(En(this.log.all(),er(this,o)),()=>this.log.epochs()),r);if(!b.ok)throw new Xe(b)}let s=this.canUndo(r);if(!s.ok)throw new Xe(i?{ok:!1,ops:[],blockedBy:[],includeBatches:[],message:"Cannot undo on its own \u2014 a later change you cannot see depends on it, which only somebody who can see it can take back."}:s);let a=t.batch??this.mintBatch("undo"),d=Tn(t.lineage),u=this.undoRefusal(s.ops,o);u&&this.refuse(u,o.id,!0);let l=this.graph.snapshot(),f=this.violations(),c=[],p=this.log.length;for(let{op:b,primitives:v}of zo(this.log.all(),s.ops)){let x={id:this.nextId(),seq:this.log.length,batch:a,author:o,intent:`Undo: ${b.intent}`,...C("batchIntent",t.intent),mutation:null,primitives:v,reads:b.reads,writes:b.writes,at:this.now(),undoes:b.id,...C("via",t.via),...C("lineage",d),...C("undoneLineage",b.lineage)};this.graph.applyPrimitives(x.primitives,{restoring:uc(b)}),this.log.append(x),c.push(x)}let g=De(l,this.graph.snapshot(),c.flatMap(b=>[...b.primitives]));this.admitted(t,c,c.flatMap(b=>[...b.primitives]),g,l,p);let h=this.violations();return this.notify(g,c),{batch:a,ops:c,diff:g,primitives:c.flatMap(b=>[...b.primitives]),reads:[...new Set(c.flatMap(b=>[...b.reads]))],writes:[...new Set(c.flatMap(b=>[...b.writes]))],intent:t.intent??c.map(b=>b.intent).join("; "),...this.moved(f,h),violationsAfter:h}}mayUndo(e,t=this.by){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=this.undoRefusal(r.ops,t);return o?{ok:!1,refusal:o}:{ok:!0}}undoRefusal(e,t){if(this.policy||this.publisher)for(let r of e){let o=this.rootOf(r),i=I(o.author).id;if(o.vote!==void 0){if(this.policy&&!Z(t)&&i!==I(t).id&&!this.grantsEveryAct(t))return{mutation:"undo",wouldNeed:[],message:`Not permitted to undo "${r.intent}": only whoever voted takes their vote back.`};continue}if(!o.mutation){if(o.primitives.length===0)continue;if(this.policy&&!Z(t)&&i!==I(t).id&&!this.grantsEveryAct(t))return{mutation:"undo",wouldNeed:[],message:`Not permitted to undo "${r.intent}": no act made it, so only whoever did may take it back.`};continue}let s=d=>JSON.stringify(d).includes(JSON.stringify(i)),a=i!==void 0&&i!==I(t).id&&!Z(t)&&!s(o.mutation.args)&&s(o.primitives)?{ok:!1,refusal:{mutation:o.mutation.name,wouldNeed:[],message:"it was done as somebody else."}}:this.permits(o.mutation,t);if(!a.ok)return{...a.refusal,message:`Not permitted to undo "${r.intent}": ${a.refusal.message}`}}}rootOf(e){let t=e;for(let r=t.undoes===void 0?void 0:this.log.get(t.undoes);r!==void 0;r=t.undoes===void 0?void 0:this.log.get(t.undoes))t=r;return t}grantsEveryAct(e){let t=I(e);return(this.policy?.grants??[]).some(r=>Oe(r,t)&&r.mutations==="*"&&(r.kinds===void 0||r.kinds==="*")&&!r.self&&!r.ownEnd)}authorName(e){return ot(e,{graph:this.graph,schema:this.schema})}actMeanings(){return{act:e=>this.mutations.get(this.spelled(e)),has:e=>this.graph.has(e)}}refuseDeclined(e,t){let r=dd(this.log.all(),e,this.actMeanings());r&&this.refuse({mutation:e[0].name,message:`${this.authorName(t)} may not make this again: a person declined it on ${r.at.slice(0,10)}.`,wouldNeed:[]},t.id)}putBack(e,t){this.graph.load(e),this.log.length>t&&this.log.truncate(t)}admitted(e,t,r,o,i,s){if(!e.admit||t.length===0)return;let a=this.graph.size;try{e.admit({ops:t,primitives:r,added:{nodes:o.addedNodes.length,edges:o.addedEdges.length},removed:{nodes:o.removedNodes.length,edges:o.removedEdges.length},changed:{nodes:o.changedNodes.length},nodesAfter:a.nodes,edgesAfter:a.edges})}catch(d){throw this.putBack(i,s),d}}redo(e,t={}){return this.undo(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(e,t){if(!(this.quiet>0)&&!(t.length===0&&Da(e)))for(let r of this.listeners)r(e,t)}rebase(e){this.stillNow();let t=new Set([...e.pending,...e.drop??[]]),r=this.log.all(),o=r.findIndex(h=>t.has(h.batch)),i=r.slice(o<0?r.length:o),s=this.log.horizon+(o<0?r.length:o),a=i.find(h=>!t.has(h.batch));if(a)throw new z(`Cannot rebase: op "${a.id}" (${a.intent}) comes after a pending batch and is neither pending nor dropped`,"While anything is pending, land the server's ops through rebase, so the log stays confirmed ops then pending ones.");let d=this.log.lastEpoch();if(d&&d.seq>s)throw new z(`Cannot rebase across an epoch: one begins at seq ${d.seq}, after pending op "${i[0].id}"`);let u=this.graph.snapshot(),l=[],f=[],c=[];this.quiet++;try{for(let x of[...i].reverse())this.graph.applyPrimitives(Be(x),{restoring:!0,inPlace:!0});this.log.truncate(s);let h=new Set(this.log.all().map(x=>x.id));for(let x of e.confirmed){if(h.has(x.id))continue;try{this.graph.applyPrimitives(x.primitives,{restoring:x.undoes!==void 0})}catch(k){throw new Dn(x,k)}let $=Kn({...x,seq:this.log.length});this.log.append($),h.add(x.id),l.push($)}this.countPast(l);let b=ie.carried?.(i,l,e.pending),v=fc(i);for(let x of e.pending){let $=i.filter(k=>k.batch===x);if($.length!==0)try{f.push(...this.replay(x,$,b?.get(x),v))}catch(k){c.push({batch:x,error:k})}}}catch(h){this.log.truncate(s);for(let b of i)this.log.append(b);throw this.graph.load(u),h}finally{this.quiet--}let p=je(u,this.graph.snapshot()),g=[...l,...f];return this.notify(p,g),{diff:p,confirmed:l,pending:f,refused:c}}adopt(e){this.stillNow();let t=new Set(e.drop??[]),r=(e.pending??[]).filter(p=>!t.has(p)),o=this.log.all(),i=this.graph.snapshot(),s={ops:[...o],epochs:[...this.log.epochs()],horizon:this.log.horizon},a=new Set(o.map(p=>p.id)),d=new Map(r.map(p=>[p,o.filter(g=>g.batch===p)]));if(e.log.length>0)this.log.replace(e.log,e.epochs,C("horizon",e.horizon));else{let p=e.horizon??0;this.log.replace([],e.epochs??[{seq:p,base:e.snapshot}],{horizon:p})}let u=[],l=[];this.quiet++;try{this.graph.load(e.snapshot),this.projected=void 0,this.countPastTheLog();for(let p of r){let g=d.get(p)??[];if(g.length!==0)try{u.push(...this.replay(p,g,void 0,fc(o)))}catch(h){l.push({batch:p,error:h})}}}catch(p){throw this.log.replace(s.ops,s.epochs,{horizon:s.horizon}),this.graph.load(i),this.projected=void 0,p}finally{this.quiet--}let f=this.log.all().filter(p=>!a.has(p.id)&&!u.includes(p)),c=je(i,this.graph.snapshot());return this.notify(c,[...f,...u]),{diff:c,adopted:f,pending:u,refused:l}}replay(e,t,r,o=new Map){let i=t[0],s={author:i.author,batch:e,...C("intent",i.batchIntent),...C("via",i.via),...C("lineage",i.lineage)};if(i.undoes!==void 0){let a=t.map(u=>this.log.get(u.undoes??"")?.batch??o.get(u.undoes??"")),d=t.find((u,l)=>a[l]===void 0||!this.log.all().some(f=>f.batch===a[l]));if(d)throw new z(`What "${d.intent}" took back is no longer in the log`);return this.undoing([...new Set(a)],s).ops}return r?this.applying(r,s).ops:t.every(a=>a.mutation!==null)?this.applying(t.map(a=>a.mutation),s).ops:this.append(t.map(({seq:a,...d})=>d))}snapshot(){return this.graph.snapshot()}verify(){let e=this.log.lastEpoch();return Id(this.schema,this.log.opsFrom(e?.seq??0),this.graph.snapshot(),{validate:this.validate,...e?{base:e.base}:{}})}checkpoint(e={}){let t=this.log.all(),r;if(e.seq!==void 0)r=e.seq;else{let l=this.log.length-(e.keepOps??1e3),c=Date.parse(e.now??this.now())-(e.keepDays??90)*864e5,p=t.find(h=>Date.parse(h.at)>c),g=p?p.seq:this.log.length;r=Math.min(l,g)}let o=_o(this.publishing)&&this.publishedSeq===void 0?[0]:[],i=[...e.pins??[],...o].filter(l=>Number.isInteger(l));i.length>0&&(r=Math.min(r,...i));let s=e.format??le.snapshot;if(!Number.isInteger(s)||s<1||s>le.snapshot)throw new RangeError(`Cannot write a checkpoint in snapshot format ${String(s)}: this build writes formats 1 to ${le.snapshot}.`);let a=l=>{let f=Math.min(Math.max(l,this.log.horizon),this.log.length);for(;f>this.log.horizon&&f<this.log.length&&t[f-this.log.horizon].batch===t[f-1-this.log.horizon].batch;)f--;return f};if(r=a(r),r<=this.log.horizon)return;let d=this.verify();if(!d.ok)throw new z(`Cannot compact a store that does not verify: ${d.reason}`);let u=this.checkpointWithPublished(r);for(;ui(u).formats.snapshot>s;){if(r=a(Math.min(...u.published.map(l=>l.seq))),r<=this.log.horizon)return;u=this.checkpointWithPublished(r)}return u}checkpointWithPublished(e){let t=this.log.horizonEpoch()?.published??[],r=(q.behind?.(this,e)??[]).flatMap(o=>o>=this.log.horizon?[this.epochAt(o)]:t.filter(i=>i.seq===o));return{...this.epochAt(e),...r.length>0&&{published:r}}}epochAt(e){let t=this.log.all(),{creators:r,removed:o,writers:i,published:s,...a}=this.log.checkpointAt(this.schema,e,{validate:this.validate}),d=new Set(a.base.nodes.map(g=>g.id)),{creators:u,removed:l}=md(this.log,e,g=>d.has(g)),f=pe(this.log),c=pd(this.log,e,a.base.nodes,g=>D(g,h=>!d.has(h)&&f.kindOf(h)===void 0)),p=g=>g&&Object.keys(g).length>0;return{...a,...p(u)&&{creators:u},...l&&{removed:l},...p(c)&&{writers:c},...C("enabledModules",t.slice(0,e-this.log.horizon).reverse().find(g=>g.enabledModules)?.enabledModules??this.log.horizonEpoch()?.enabledModules),...C("publishedThrough",q.seq?.(this,e))}}compact(e){return this.stillNow(),this.log.compact(e)}};var dp=n=>`lens:${n}`,cp={hidden:[],removed:[],may:{views:!1,lenses:!1}};function lp(n,e,t){return n.name!==void 0&&e.may.views?"view":n.declared&&e.may.lenses&&t.lens?"lens":null}var mc=["full","summary","glyph"],vt="view:",mi=(n,e)=>n.as===e.as&&(n.over??[n.kind]).includes(e.kind),up=n=>n.filter((e,t)=>!n.slice(0,t).some(r=>mi(r,e))),fp=n=>n.filter(e=>!e.hidden);function _e(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function wt(n,e){return`/${_e(n.tryDefinition(e)?.plural??`${e}s`)}`}function pp(n,e,t){return`${wt(n,e)}/${encodeURIComponent(t)}`}function hp(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function yc(n,e){return e.some(t=>t.as===n.as&&!mi(n,t))}function gp(n,e,t){return yc(n,e)?`${n.title} \xB7 ${(t.tryDefinition(n.kind)?.plural??`${n.kind}s`).toLowerCase()}`:n.title}var sn=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function gi(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function mp(n){let e=new Map,t=[],r=[],o,i=[],s={arrange(a){return a!==void 0&&(o=a),s},arrangement:()=>o,home(a,d){return a!==void 0&&i.push({view:a,...d?.name!==void 0?{name:d.name}:{}}),s},homeView:()=>i.at(-1)?.view,homes:()=>i,register(a,d,u,l){let f={...l?.over?.[1]?{over:l.over}:{},...l?.hidden?{hidden:!0}:{},...l?.name?{name:l.name}:{},...l?.declared?{declared:!0}:{}},c={kind:a,cardinality:d.cardinality,fidelity:d.fidelity,view:u,...l?.title?{title:l.title}:{},...l?.across?{across:l.across}:{},...l?.beside?{beside:!0}:{},...f};if(r.push(c),!l?.beside&&!f.hidden&&e.set(sn(a,d),c),l?.title){let p=_e(l.title);e.set(sn(a,d,p),c),d.cardinality==="many"&&!t.some(g=>g.kind===a&&g.as===p)&&t.push({kind:a,title:l.title,as:p,...l.across?{across:l.across}:{},...f,...l.lens?{lens:l.lens}:{},...l.reads?.length?{reads:l.reads}:{}})}return s},places:()=>t,forget(a,d){for(let l of mc)e.delete(sn(a,{cardinality:"many",fidelity:l},d));let u=t.findIndex(l=>l.kind===a&&l.as===d);return u>=0&&t.splice(u,1),s},lookup(a,d){return e.get(sn(a,d))?.view},resolve(a,d,u){if(u)for(let l of gi(d.fidelity)){let f=e.get(sn(a,{cardinality:d.cardinality,fidelity:l},u));if(f)return f}for(let l of gi(d.fidelity)){let f=e.get(sn(a,{cardinality:d.cardinality,fidelity:l}));if(f)return f}if(d.cardinality==="one")for(let l of gi(d.fidelity)){let f=e.get(sn(a,{cardinality:"many",fidelity:l}));if(f)return f}},registrations:()=>r,all(){return[...e.values()]},kindsWithViews(){return[...new Set([...e.values()].map(a=>a.kind))]}};return s}var yp=["day","week","month","year","decade"];function bc(n){let e={};n.q&&n.q.trim().length>0&&(e.query=n.q);let t=mo(n.archived);if(t&&(e.archived=t),n.sort){let[r,o]=n.sort.split(":");r&&(e.sort={by:r,direction:o==="desc"?"desc":"asc"})}if(n.filter){let r=[];for(let o of n.filter.split(",")){let i=o.indexOf(":");i<=0||r.push({key:o.slice(0,i),value:o.slice(i+1)})}r.length>0&&(e.filter=r)}if(n.group){let[r,o]=n.group.split(":");r&&(e.group={by:r,...yp.includes(o)?{bucket:o}:{}})}return e}function yi(n){if(typeof n=="string"&&n.length>0)return{by:n,direction:"asc"};if(typeof n!="object"||n===null)return;let{by:e,direction:t}=n;if(!(typeof e!="string"||e.length===0))return{by:e,direction:t==="desc"?"desc":"asc"}}function gr(n,e,t){let r=yi(n);if(!r)return'an order is a field, like "released", or { "by": "released", "direction": "asc" | "desc" }';let o=typeof n=="object"&&n!==null?n.direction:void 0;if(o!==void 0&&o!=="asc"&&o!=="desc")return`an order runs "asc" or "desc", not "${String(o)}"`;if(r.by!=="label"&&!e.includes(r.by))return`${t} has no field "${r.by}" to order by (it has ${e.length>0?e.map(i=>`"${i}"`).join(", "):"none"}, and "label", its name)`}function bp(n,e,t){let r=yi(e);if(!r)return n;let o=r.direction==="desc"?-1:1;return n.map((i,s)=>({item:i,at:s,value:t(i,r.by)})).sort((i,s)=>{let a=(i.value===void 0||i.value===null||i.value===""?1:0)-(s.value===void 0||s.value===null||s.value===""?1:0);if(a!==0)return a;if(i.value===s.value||i.value===void 0||i.value===null)return i.at-s.at;let d=typeof i.value=="number"&&typeof s.value=="number"?i.value-s.value:String(i.value).localeCompare(String(s.value),void 0,{numeric:!0});return d===0?i.at-s.at:d*o}).map(i=>i.item)}var xt={timeline:{binds:"fields",requiredRoles:["start","end"],options:["columns","extent","tick","minWindow","arranging"]},calendar:{binds:"fields",requiredRoles:["start"],options:["today","range","weekStartsOn","perCell","horizon","arranging","search","filters"]},coverage:{binds:"entities",requiredRoles:["rows","columns","link"],options:["rowRef","rowGroup","groupOrder","requiredGroups","requiredVia","badge","columnGroup","sort","columnSort","search","filters"]},board:{binds:"entities",requiredRoles:["slots","x","y","fill"],options:["fillFrom","slotCode","zones","aspect","emptyLabel","pickTarget","arranging","arrange"]},plan:{binds:"entities",requiredRoles:["regions","outline"],options:["hues","aspect","undrawnLabel","strayLabel","draw","place","help"]},reach:{binds:"nothing",requiredRoles:[],options:[]},blocks:{binds:"nothing",requiredRoles:[],options:["blocks"]},columns:{binds:"fields",requiredRoles:["column"],options:["sort","search","filters","move","collapsed","cap","hidden"]}},vp=20,wc=Object.keys(xt),wp=(n,e,t,r=xt[n].options)=>({message:`The ${n} lens takes no option "${e}", so "${t}" ignores it.`,fix:r.length?`Use one of: ${r.join(", ")}.`:`The ${n} lens takes no options; drop it.`}),xc=n=>Object.hasOwn(xt,n);function bi(n,e,t){let r=n[e],o=Array.isArray(r)?r.filter(i=>typeof i=="string"&&t(i)):[];o.length>0?n[e]=o:delete n[e]}var Fn=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function vc(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=F(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=F(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function xp(n){let e=[],t=[],r=[],o=new Set(n.schema.kinds),i=new Set;for(let d of o)for(let u of Object.keys(n.schema.tryDefinition(d)?.edges??{}))i.add(u);let s=d=>Object.keys(n.schema.tryDefinition(d)?.fields.shape??{}),a=new Map;return(n.lenses??[]).forEach((d,u)=>{let l=`lenses.${u}`,f=typeof d.title=="string"&&d.title.trim().length>0?d.title.trim():void 0,c=(m,y)=>{t.push({index:u,name:d.name,...f?{title:f}:{},why:m}),y&&r.push({severity:"warning",...y})};if(!xc(d.name)){f?c(`"${d.name}" is not a lens this framework draws`,{code:"lens-not-shipped",path:`${l}.name`,message:`"${f}" names the lens "${d.name}", which the framework does not ship, so nothing draws it.`,fix:`Name one of ${wc.join(", ")} \u2014 or register the view yourself and drop the title.`}):c("it is a lens this app wrote, drawn by the app's own views");return}if(!f)return c("it has no title, so it is bindings the checker holds and no place");let p=xt[d.name],g=Fn(d.options)?d.options:{};if(d.options!==void 0&&!Fn(d.options))return c("its options are not an object",{code:"lens-options-not-an-object",path:`${l}.options`,message:`"${f}" has options that are not an object.`,fix:'Write them as { "<option>": <value> }, or drop them.'});for(let m of Object.keys(g))p.options.includes(m)||r.push({severity:"warning",code:"lens-option-unknown",path:`${l}.options.${m}`,...wp(d.name,m,f,p.options)});let h={};for(let m of p.options)g[m]!==void 0&&(h[m]=g[m]);d.arrangedBy&&(h.arrangedBy=bc(d.arrangedBy));let b=Fn(d.bindings)?d.bindings:{},v=[],x,$=(m,y,S)=>c(y,{code:"lens-cannot-draw",path:m,message:`"${f}" cannot draw: ${y}.`,fix:S});if(p.binds==="fields"){let m=Object.keys(b).filter(S=>Fn(b[S])),y=m.filter(S=>!o.has(S));if(m.length===0)return $(`${l}.bindings`,"it binds no kind",`Bind a kind's fields: "bindings": { "<kind>": { ${p.requiredRoles.map(S=>`"${S}": "<field>"`).join(", ")} } }.`);if(y.length>0)return;if(h.bindings=b,v=m,d.name==="timeline"){let S=g.columns;if(Array.isArray(S))h.columns=S.map(R=>typeof R=="string"?{id:R,label:R}:R);else{let R=m.flatMap(_=>{let E=b[_],M=typeof E.column=="string"?E.column:typeof E.columns=="string"?E.columns:void 0;return M?vc(n.schema,_,M):[]}),w=[...new Set(R)];if(w.length===0)return $(`${l}.options.columns`,"it has no columns \u2014 no option names them and no `column` role is bound to a field of set values",'Bind "column" to a field whose values are the columns, or say "columns": ["mon", "tue", \u2026].');h.columns=w.map(_=>({id:_,label:_.toUpperCase()}))}h.extent===void 0&&(h.extent=1440)}if(d.name==="columns"){if(h.sort!==void 0){let R=m.map(w=>gr(h.sort,s(w),w)).find(Boolean);R&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.sort`,message:`"${f}" cannot order its cards: ${R}.`,fix:'Write { "by": "<a field>", "direction": "asc" }, or drop it.'}),delete h.sort)}let S=new Set;for(let R of m){let w=b[R].column;if(typeof w!="string"||!s(R).includes(w))return;let _=vc(n.schema,R,w);if(_.length===0)return $(`${l}.bindings.${R}.column`,`its column field "${w}" is not a choice`,`Bind "column" to a choice field of ${R}, like a status.`);for(let E of _)S.add(E)}typeof h.move!="boolean"&&delete h.move,Number.isInteger(h.cap)&&h.cap>=1&&h.cap<=500||delete h.cap;for(let R of["collapsed","hidden"])bi(h,R,w=>S.has(w))}if(d.name==="calendar"&&h.today!==void 0&&!(typeof h.today=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(h.today)))return $(`${l}.options.today`,"its today is not a date",'Write it as "YYYY-MM-DD", or leave it out and the calendar opens on the day it is drawn.');if(d.name==="calendar"&&h.horizon!==void 0){let S=h.horizon,R=E=>E===void 0||Number.isInteger(E)&&E>=1&&E<=9999,w=typeof S=="number"?{years:S,title:"Years"}:S;Fn(w)&&Number.isInteger(w.years)&&w.years>=1&&w.years<=200&&typeof w.title=="string"&&w.title.trim().length>0&&R(w.from)&&R(w.to)&&Object.keys(w).every(E=>["years","title","from","to"].includes(E))&&!(typeof w.from=="number"&&typeof w.to=="number"&&w.to<w.from)?h.horizon=w:(delete h.horizon,r.push({severity:"warning",code:"lens-horizon",path:`${l}.options.horizon`,message:`"${f}" has a horizon that is not a span of years, so it offers no span of years.`,fix:'Write { "years": 30, "title": "The career" } \u2014 "from" and "to" (years, like 1962 and 2023) only to pin its ends, which otherwise reach the first and last of its records.'}))}if(d.name==="calendar"&&h.range!==void 0&&!["day","week","month","quarter","year","years","agenda"].includes(h.range))return $(`${l}.options.range`,`its range "${String(h.range)}" is not one a calendar opens at`,"Use one of: day, week, month, quarter, year, agenda.")}else if(p.binds==="entities"){let m=R=>{let w=b[R];if(Fn(w)){if(typeof w.kind=="string")return w.kind;if(typeof w.edge=="string")return w.edge;if(Array.isArray(w.path))return{path:w.path};if(typeof w.field=="string")return w.field}};for(let R of p.requiredRoles)if(m(R)===void 0)return;let y=d.name==="coverage"?"rows":d.name==="board"?"slots":"regions",S=m(y);if(!o.has(S))return;if(d.name==="coverage"){let R=m("columns");if(!o.has(R))return;let w=m("link");if(typeof w=="string"&&!i.has(w))return;Object.assign(h,{rows:S,columns:R,link:w}),R!==S&&(x=R);for(let[_,E]of[["sort",S],["columnSort",R]]){if(h[_]===void 0)continue;let M=gr(h[_],s(E),E);M&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.${_}`,message:`"${f}" cannot order its ${_==="sort"?"rows":"columns"}: ${M}.`,fix:`Write { "by": "<a field of ${E}>", "direction": "asc" }, or drop it.`}),delete h[_])}}else if(d.name==="board"){Object.assign(h,{slots:S,x:m("x"),y:m("y"),fill:m("fill")});for(let R of["x","y"])if(!s(S).includes(h[R]))return}else{Object.assign(h,{regions:S,outline:m("outline")});for(let R of["markers","at","within","nests","regionKind","markerKind"]){let w=m(R);typeof w=="string"&&(h[R]=w)}}v=[S]}else if(d.name==="blocks"){if(!d.on)return $(`${l}.on`,"it does not say which kind it stands on",'Say "on": "<the kind it is a place of>".');if(!Array.isArray(h.blocks)||h.blocks.length===0)return $(`${l}.options.blocks`,"it has no blocks to draw",`Say "options": { "blocks": [{ "headline": "\u2026" }, { "list": "all('<kind>')", "as": "card" }] }.`)}else{let m=["user","person","member"].find(y=>o.has(y));if(!d.on&&!m)return $(`${l}.on`,"it does not say which kind it stands on",'Say "on": "<the kind whose records are the people>".');v=m?[m]:[]}if(d.on!==void 0){if(typeof d.on!="string"||!o.has(d.on))return $(`${l}.on`,`it stands on "${String(d.on)}", which is not a kind`,`Use one of: ${[...o].join(", ")}.`);if(v=[d.on],d.name==="coverage"){let m=[h.rows,h.columns].find(y=>y!==d.on);x=typeof m=="string"?m:void 0}}let k=typeof h.rows=="string"?h.rows:v[0];if(k!==void 0){let m=["label",...s(k)],y=new Set(["is",...m,...Object.keys(n.schema.tryDefinition(k)?.edges??{})]);bi(h,"search",S=>m.includes(S)),bi(h,"filters",S=>y.has(S.split(".")[0]))}let O=_e(f);if(O.length===0)return $(`${l}.title`,"its title has no letters or digits to make an address of","Give it a title a person would say.");for(let m of v){let y=`${m}|${O}`;if(a.has(y))return c(`another lens on ${m} is already called "${f}"`,{code:"lens-title-taken",path:`${l}.title`,message:`"${f}" is the title of lenses.${a.get(y)} too, on the same kind, so one address would name two pictures.`,fix:"Give each its own title."})}for(let m of v)a.set(`${m}|${O}`,u);let A=d.create;A!==void 0&&typeof A!="boolean"&&r.push({severity:"warning",code:"lens-create",path:`${l}.create`,message:`"${f}" says create ${JSON.stringify(A)}, which is neither true nor false, so its page keeps the forms that begin its kind.`,fix:'Say "create": false to leave them off, or drop it.'}),e.push({index:u,lens:d.name,title:f,as:O,kinds:v,...x?{across:x}:{},options:h,...d.hidden===!0?{hidden:!0}:{},...A===!1?{create:!1}:{}})}),{drawn:e,undrawn:t,findings:r}}var kp=6;function Sp(n,e,t=[]){let r=n.kinds,o=s=>Object.values(n.tryDefinition(s)?.edges??{}).map(a=>(a.to==="*"?r:a.to).filter(d=>d!==s)),i=new Set(r.flatMap(s=>o(s).flat()));return new Set([...e?.hide??[],...t,...r.filter(s=>!i.has(s)&&o(s).length>0&&o(s).every(a=>a.length>=2))])}function Rp(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map(_e));return{kinds:new Set(e.kinds.filter(o=>r.has(_e(o))||r.has(wt(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has(_e(o.title))||o.name!==void 0&&n.primary.includes(vt+o.name)).map(o=>`${o.kind}|${o.as}`))}}var $p="home",kc="overview",Ap=`/places/${kc}`;function Op(n){let e=n?.scene?.trim();return e||"Scene"}function _p(n){let e=n?.pages?.trim();return e||"Pages"}function Pp(n,e){if(!e||e.length===0)return n;let t=e.filter(r=>n.includes(r));return[...new Set(t),...n.filter(r=>!t.includes(r))]}function Sc(n){return n.startsWith(vt)&&n.slice(vt.length).trim()||void 0}function Ep(n,e,t){let r=[],o=new Set;for(let i of e??[]){let s=Sc(i),a=s===void 0?void 0:t.find(d=>d.name===s&&n.includes(d.kind));a?r.some(d=>d.view===a)||r.push({kind:a.kind,view:a}):s===void 0&&n.includes(i)&&!o.has(i)&&(o.add(i),r.push({kind:i}))}for(let i of n)o.has(i)||r.push({kind:i});return r}function Mp(n,e,t){if(n===void 0)return;let r=n.trim();if(r==="")return;if(r.toLowerCase()==="home"||r==="/")return{to:"home"};let o=_e(r),i=t.find(d=>d.title===r||vt+d.name===r)??t.find(d=>d.as===o);if(i)return{to:"place",place:i};let s=e.kinds,a=s.find(d=>d===r)??s.find(d=>wt(e,d).slice(1)===o);return a?{to:"kind",kind:a}:void 0}function vi(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function zp(n,e={}){let t=typeof n=="string"?n:n.address,r=vi(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function Np(n,e){let t=vi(e);if(t==="")return n.startsWith("/")?n:`/${n}`;if(!n.toLowerCase().startsWith(t.toLowerCase()))return null;let r=n.slice(t.length);return r===""||r==="/"?"/":r.startsWith("/")?r:null}var mr=2500,Ip=mr*4;function Tp(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function wi(n,e,t=mr){return n.held==="socket"?!0:n.until!==void 0?e<Date.parse(n.until):e-Date.parse(n.at)<t}var zS=new Set(Ct);function jp(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function Dp(n,e,t,r=mr,o){let i=new Map;for(let[s,a]of n)wi(a,t,r)&&i.set(s,a);for(let s of e){if(!wi(s,t,r)){i.delete(s.participant);continue}let a=i.get(s.participant);(!a||Date.parse(a.at)<=Date.parse(s.at))&&i.set(s.participant,s)}return o!==void 0&&i.delete(o),i}function Fp(n,e){return!n||!e?n===e:n.participant===e.participant&&n.kind===e.kind&&n.name===e.name&&n.onBehalfOf===e.onBehalfOf&&n.onBehalfOfName===e.onBehalfOfName&&n.until===e.until&&n.held===e.held&&n.hue===e.hue&&n.stop===e.stop&&(n.over??null)===(e.over??null)&&(n.robot?.at??null)===(e.robot?.at??null)&&(n.robot?.mode??null)===(e.robot?.mode??null)&&JSON.stringify(n.caret)===JSON.stringify(e.caret)}var Rc=Symbol.for("@graview/core:app-link"),Lp=n=>(Object.defineProperty(F(n),Rc,{value:1,enumerable:!0}),n);function $c(n){let e=F(n);return!!e&&(e[Rc]===1||$c(e.innerType))}var jS=()=>Lp(L().check(so(500),Xn(Dt,"another app's address")));var yr=(n,e)=>`${e.kind}\0${e.id??""}\0${n.address}\0${n.kind}\0${n.id}`;function Zp(n,e,t=()=>{}){let r=new Map,o=new Map,i=s=>{let a=yr(s,e),d=r.get(a);return d||(d=Promise.resolve().then(()=>n.resolve(s,e)).then(u=>Cp(u)?u:null,()=>null).then(u=>(r.get(a)===d&&(o.set(a,u),t(s)),u)),r.set(a,d)),d};return{read(s){let a=yr(s,e);if(o.has(a)){let d=o.get(a);return d===null?{unread:!0}:"denied"in d?{denied:!0}:{record:d}}return i(s),{unread:!0}},ask:i,answered:s=>o.get(yr(s,e)),forget(s){if(!s){r.clear(),o.clear();return}let a=yr(s,e);r.delete(a),o.delete(a)}}}function Cp(n){if(n===null)return!0;if(typeof n!="object"||n===void 0)return!1;if(n.denied===!0)return!0;let e=n;return typeof e.label=="string"&&typeof e.id=="string"&&typeof e.kind=="string"&&typeof e.fields=="object"&&e.fields!==null}var Gp=1;var br=(n,e)=>`${n}\0${e}`;function ki(n){return n.op==="add-node"?Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind").map(e=>[n.node.id,e]):n.op==="patch-node"?Object.keys(n.after).map(e=>[n.id,e]):n.op==="splice-text"?[[n.id,n.field]]:[]}var xi=class n{revs=new Map;floor;constructor(e=0){this.floor=Math.max(0,Math.floor(e))-1}static of(e,t={}){let r=new n(t.horizon);return r.note(e),r}note(e){for(let t of e)for(let r of t.primitives)for(let[o,i]of ki(r)){let s=br(o,i);(this.revs.get(s)??this.floor)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(br(e,t))??this.floor}baseFor(e,t=new Set,r){let o=new Set,i=new Map;for(let s of e)for(let a of s.primitives)if(a.op==="add-node"&&o.add(a.node.id),!(a.op!=="patch-node"||o.has(a.id)||t.has(a.id)))for(let d of Object.keys(a.after)){let u=br(a.id,d);t.has(u)||i.has(u)||r?.(a.id,d)||i.set(u,{node:a.id,field:d,rev:this.of(a.id,d)})}return[...i.values()]}stale(e){return e.filter(t=>this.of(t.node,t.field)>t.rev)}};function Kp(n){let e=new Set;for(let t of n)for(let r of t.primitives){r.op==="add-node"&&e.add(r.node.id);for(let[o,i]of ki(r))e.add(br(o,i))}return e}var GS=Symbol.for("@graview/core:collaborative"),KS=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0;var Vp=/^#([0-9a-f]{3,8})$/i,Bp=/(rgba?|hsla?)\(([^)]+)\)/gi;function Up(n){let e=Vp.exec(n.trim());if(!e)return null;let t=e[1];if((t.length===3||t.length===4)&&(t=[...t].map(i=>i+i).join("")),t.length!==6&&t.length!==8)return null;let r=Number.parseInt(t.slice(0,6),16),o=t.length===8?Number.parseInt(t.slice(6,8),16)/255:1;return{r:r>>16&255,g:r>>8&255,b:r&255,a:o}}function Wp(n){let e=n.slice(0,n.indexOf("(")).toLowerCase(),r=n.slice(n.indexOf("(")+1,n.lastIndexOf(")")).split(/[,\s/]+/).filter(Boolean).map(d=>d.endsWith("%")?Number.parseFloat(d)/100:Number.parseFloat(d));if(r.some(Number.isNaN))return null;if(e.startsWith("rgb")){let[d,u,l,f]=r;return d===void 0||u===void 0||l===void 0?null:{r:d,g:u,b:l,a:f??1}}let[o,i,s,a]=r;return o===void 0||i===void 0||s===void 0?null:{...Oc(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function an(n){let e=n.r/255,t=n.g/255,r=n.b/255,o=Math.max(e,t,r),i=Math.min(e,t,r),s=(o+i)/2;if(o===i)return{h:0,s:0,l:s};let a=o-i,d=a/(1-Math.abs(2*s-1));return{h:((o===e?60*((t-r)/a%6):o===t?60*((r-e)/a+2):60*((e-t)/a+4))+360)%360,s:d,l:s}}function Pe(n,e,t){return{...Oc(n,e,t),a:1}}function Oc(n,e,t){let r=(1-Math.abs(2*t-1))*e,o=(n%360+360)%360/60,i=r*(1-Math.abs(o%2-1)),[s,a,d]=o<1?[r,i,0]:o<2?[i,r,0]:o<3?[0,r,i]:o<4?[0,i,r]:o<5?[i,0,r]:[r,0,i],u=t-r/2;return{r:Math.round((s+u)*255),g:Math.round((a+u)*255),b:Math.round((d+u)*255)}}function H(n){let e=[];for(let t of n.matchAll(Bp)){let r=Wp(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=Up(t[0]);r&&e.push(r)}return e}function dn(n,e){let t=n.a+e.a*(1-n.a);if(t===0)return{r:0,g:0,b:0,a:0};let r=(o,i)=>(o*n.a+i*e.a*(1-n.a))/t;return{r:r(n.r,e.r),g:r(n.g,e.g),b:r(n.b,e.b),a:t}}function Si(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function Ac(n){return .2126*Si(n.r)+.7152*Si(n.g)+.0722*Si(n.b)}function ve(n,e){let[t,r]=[Ac(n),Ac(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}function vr(n){return ve({r:255,g:255,b:255,a:1},n)>ve({r:0,g:0,b:0,a:1},n)}var wr=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,_c={r:0,g:0,b:0,a:1},xr={r:255,g:255,b:255,a:1};function kr(n){let e=H(n.accent)[0];if(!e)return{ok:!1,missing:["accent"],why:`"${n.accent}" is not a color this can read. Use a hex, rgb() or hsl() value.`};let t={},r=new Set,o=[],i=an(e);for(let s of["dark","light"]){let a=n.base[s],d=H(a.ground)[0]??(s==="dark"?_c:xr),u=dn(H(a.panel)[0]??xr,d),l=Yp(i,[u,d],s,4.5);l?Math.abs(l.l-i.l)>Hp&&(r.add(`accent (${s})`),o.push(`reaching 4.5:1 on the ${s} panel would move the accent's lightness by ${Math.round(Math.abs(l.l-i.l)*100)} points, which is far enough that it stops being the same color \u2014 supply one for ${s}`)):(r.add(`accent (${s})`),o.push(`no lightness of this hue clears 4.5:1 as text on the ${s} panel, so ${s} needs an accent of its own`));let f=l??i,c=Pe(f.h,f.s,f.l),p=n.accentInk?.[s]??(ve(xr,c)>=ve(_c,c)?"#ffffff":"#000000"),g=ve(H(p)[0]??xr,c);g+.005<4.5&&(r.add(`accentInk (${s})`),o.push(`neither black nor white clears 4.5:1 on the accent (best ${g.toFixed(2)}:1), so text on a filled button has to be given`)),t[s]={...a,accent:wr(c,1),accentDim:wr(c,s==="dark"?.35:.22),accentInk:p,glow:wr(c,s==="dark"?.28:.1),edgeBright:wr(c,Ri(c,u,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let h=H(t[s].warn)[0];h&&qp(an(h).h,f.h)<25&&(r.add(`warn (${s})`),o.push(`the warning color shares the accent's hue in ${s}, so "something is broken" looks like "this is selected"`))}return r.size>0?{ok:!1,missing:[...r].sort(),why:o.join("; ")}:{ok:!0,schemes:t}}function Ri(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(ve(dn({...n,a:i},e),e)>=r)return i}return 1}function qp(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var Hp=.3;function Yp(n,e,t,r){let o=t==="dark";for(let i=0;i<=100;i++){let s=o?n.l+i/100:n.l-i/100,a=o?n.l-i/100:n.l+i/100;for(let d of[s,a])if(!(d<0||d>1)&&e.every(u=>ve(Pe(n.h,n.s,d),u)>=r))return{...n,l:d}}return null}function Jp(n,e){let t=e?.[n];if(t!==void 0)return(t%360+360)%360;let r=2166136261;for(let o=0;o<n.length;o++)r^=n.charCodeAt(o),r=Math.imul(r,16777619);return(r>>>0)%360}var cn=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),$i="Montserrat",Ai=Object.freeze({display:550,body:450,label:600}),Oi=Object.freeze({display:600,body:400,label:600}),Xp="-0.025em",Qp=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var Pc={ground:"#0a0f1f",groundDeep:"#060914",wash:"none",panel:"rgba(19, 27, 52, 0.96)",panelMuted:"rgba(14, 21, 42, 0.94)",panelWarning:"rgba(48, 33, 18, 0.95)",edge:"rgba(164, 178, 222, 0.18)",edgeBright:"rgba(154, 171, 255, 0.6)",ink:"#eef0f6",inkMuted:"#aab2c6",inkFaint:"#97a0b6",accent:"#9aabff",accentDim:"rgba(154, 171, 255, 0.32)",accentInk:cn.navy,warn:"#f0a868",good:"#8fdcaa",bad:"#ffa3a3",glow:"rgba(154, 171, 255, 0.18)",bar:"rgba(10, 15, 31, 0.96)",float:"rgba(16, 23, 45, 0.98)",liftLow:"0 14px 36px -22px #000",liftHigh:"0 28px 64px -30px #000",tintAlpha:.2,tintLightness:52,gridAlpha:.35},Ec={ground:cn.paper,groundDeep:"#efefe8",wash:"none",panel:"#ffffff",panelMuted:"#fafaf6",panelWarning:"#fdf4ea",edge:"rgba(24, 33, 58, 0.12)",edgeBright:"rgba(0, 23, 105, 0.6)",ink:cn.ink,inkMuted:cn.muted,inkFaint:"#626b7d",accent:cn.navy,accentDim:"rgba(0, 23, 105, 0.16)",accentInk:"#ffffff",warn:"#9a5312",good:"#1b6436",bad:"#a1232d",glow:"rgba(0, 23, 105, 0.08)",bar:"rgba(255, 255, 255, 0.96)",float:"#ffffff",liftLow:"0 1px 2px rgba(24,33,58,0.06), 0 8px 24px -12px rgba(24,33,58,0.16)",liftHigh:"0 2px 6px rgba(24,33,58,0.08), 0 24px 56px -24px rgba(24,33,58,0.26)",tintAlpha:.16,tintLightness:46,gridAlpha:.5},Ce={dark:Pc,light:Ec};var Ge=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),ln=Object.freeze({body:`"${$i}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function eh(n){let e=n?.shape?.radius??Ge.radius,t=n?.shape?.density??Ge.density;return Object.freeze({radius:e,radiusSmall:Math.max(Ge.radiusSmallFloor,Math.round(e*Ge.radiusSmall)),pad:Math.round(Ge.pad*t),padSmall:Math.round(Ge.padSmall*t),gap:Math.round(Ge.gap*t)})}function nh(n){let e=n?.typography?.body??ln.body,t=n?.typography?.display??e,o=e===ln.body&&t===ln.body?Ai:Oi,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??ln.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var QS=Object.freeze({light:Object.freeze({roof:Object.freeze({saturation:48,lightness:82}),right:Object.freeze({saturation:40,lightness:66}),left:Object.freeze({saturation:34,lightness:55}),roofEdge:"rgba(255,255,255,0.75)",plot:Object.freeze({saturation:45,lightness:58,alpha:.12}),plotEdge:Object.freeze({saturation:40,lightness:48,alpha:.55})}),dark:Object.freeze({roof:Object.freeze({saturation:42,lightness:32}),right:Object.freeze({saturation:40,lightness:21}),left:Object.freeze({saturation:38,lightness:13}),roofEdge:"rgba(255,255,255,0.14)",plot:Object.freeze({saturation:45,lightness:48,alpha:.2}),plotEdge:Object.freeze({saturation:40,lightness:62,alpha:.55})})});var th=64*1024;function zc(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var Nc="http://www.w3.org/2000/svg",rh=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",Nc],oh=new Set("svg g defs symbol use title desc path rect circle ellipse line polyline polygon text tspan textPath linearGradient radialGradient stop pattern clipPath mask marker image filter feBlend feColorMatrix feComponentTransfer feComposite feDropShadow feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feMerge feMergeNode feMorphology feOffset feTile feTurbulence".split(" ")),ih=new Set(["title","desc"]),kt="it embeds a page or media",sh={script:"it has a script in it",foreignobject:"it embeds HTML (foreignObject)",iframe:kt,embed:kt,object:kt,audio:kt,video:kt,style:"it has a style sheet in it; a mark is styled by its attributes",a:"it links to something (an <a> element)"},ah={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function dh(n){let e=!1,t=n.replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]*);?/gi,(r,o)=>{if(o[0]==="#"){let s=o[1]==="x"||o[1]==="X"?parseInt(o.slice(2),16):parseInt(o.slice(1),10);return s>0&&s<=1114111?String.fromCodePoint(s):"\uFFFD"}let i=ah[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function ch(n){if(/\\|@|expression\s*\(|(?:image-set|cross-fade|image|element|src)\s*\(/i.test(n))return!1;for(let[,e]of n.matchAll(/url\s*\(\s*["']?\s*([^)]*)/gi))if(!e.startsWith("#"))return!1;return!0}function lh(n,e,t){let r=dh(t);if(r===null)return"it declares XML entities";let o=(e.includes(":")?e.slice(e.indexOf(":")+1):e).toLowerCase();if(o.startsWith("on"))return"it has an event handler (an on\u2026 attribute)";if(e==="xml:base")return"it loads or links to something outside itself";if(e==="xmlns")return r===Nc?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return rh.includes(r)?"it changes what its elements are (another xmlns)":null;if(o==="href"||o==="src"){let i=r.replace(/[\u0000- ]+/g,"");return i.startsWith("#")||n==="image"&&/^data:image\/(png|jpe?g|gif|webp|avif);/i.test(i)?null:"it loads or links to something outside itself"}return ch(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var Mc=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function Ic(n){if(/<!ENTITY/i.test(n))return"it declares XML entities";if(/<!\[CDATA\[/i.test(n))return"it has a CDATA section, which the page and the picture read differently";let e=[],t=!1,r=/^\s*(<\?xml\s[^?<>]*\?>)?/.exec(n)[0].length;for(;r<n.length;){let o=n.slice(r),i=/^[^<]+/.exec(o);if(i){if(e.length===0&&i[0].trim()!=="")return"it is not one SVG: there is text outside it";r+=i[0].length;continue}if(o.startsWith("<!--")){let p=o.indexOf("-->",4);if(p<0)return"it has a comment that never ends";let g=o.slice(4,p);if(/^-?>/.test(g)||g.includes("--")||g.includes("<!")||g.endsWith("-"))return"it has a comment the page and the picture read differently";r+=p+3;continue}if(/^<!DOCTYPE/i.test(o)){let p=/^<!DOCTYPE\s+svg\b[^<>[\]]*>/i.exec(o);if(!p||e.length>0||t)return"it declares XML entities";r+=p[0].length;continue}let s=/^<\/([A-Za-z][A-Za-z0-9_.:-]*)\s*>/.exec(o);if(s){if(e.pop()!==s[1])return`it is not one SVG: </${s[1]}> closes what is not open`;e.length===0&&(t=!0),r+=s[0].length;continue}let a=/^<([A-Za-z][A-Za-z0-9_.:-]*)/.exec(o);if(!a)return"it is not one SVG: it has markup a picture cannot hold";let d=a[1],u=sh[d.toLowerCase()];if(u)return u;if(t)return`it is not one SVG: <${d}> comes after it ends`;if(e.length===0&&d!=="svg")return"it is not one SVG";if(d.includes(":"))return`it has an element of another kind (<${d}>)`;if(!oh.has(d))return`it has a <${d}> element, which a picture does not need`;let l=e[e.length-1];if(l&&ih.has(l))return`it has an element inside a <${l}>, which the page reads as HTML`;let f=a[0].length;for(let p=Mc.exec(o.slice(f));p;p=Mc.exec(o.slice(f))){let g=lh(d,p[1],p[2]??p[3]??"");if(g)return g;f+=p[0].length}let c=/^\s*(\/?)>/.exec(o.slice(f));if(!c)return/(?:^|[\s/"'])on[a-z]+\s*=/i.test(o.slice(f,f+400))?"it has an event handler (an on\u2026 attribute)":`it is not one SVG: <${d}>'s attributes are not each quoted and apart`;c[1]!=="/"?e.push(d):e.length===0&&(t=!0),r+=f+c[0].length}return e.length>0?`it is not one SVG: <${e[e.length-1]}> is never closed`:t?null:"it is not one SVG"}function Tc(n){if(n){if(!zc(n)){if(/^\s*</.test(n))return;let e=/^\s*([a-z][a-z0-9+.-]*):/i.exec(n)?.[1]?.toLowerCase();return e===void 0||e==="http"||e==="https"||e==="data"&&/^\s*data:image\//i.test(n)?n:void 0}return Ic(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}var Sr;function uh(){if(Sr===void 0)try{Sr=new RegExp("^\\p{RGI_Emoji}$","v")}catch{Sr=null}return Sr}function fh(n){return/\p{Extended_Pictographic}|\p{Regional_Indicator}|⃣/u.test(n)}function _i(n){if(typeof n!="string"||n.trim()==="")return"it is empty; give one emoji, like \u{1F3E1}";let e=[...new Intl.Segmenter("en",{granularity:"grapheme"}).segment(n)].map(o=>o.segment),t=e.filter(fh).length;if(t===0)return"it is not an emoji; give one emoji, like \u{1F3E1}";if(e.length>1)return t===e.length?`it is ${e.length} emoji, and a mark is one`:"it has other characters beside the emoji; give the emoji alone";let r=uh();return r&&!r.test(n)?"it is not one of the standard emoji every emoji set draws":null}function Pi(n){return typeof n=="object"&&n!==null&&typeof n.emoji=="string"?n.emoji:void 0}function jc(n){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text x="50" y="50" dy=".35em" font-size="88" text-anchor="middle">${n}</text></svg>`}function ph(n){let e=n?.favicon;if(typeof e=="object"&&e!==null){let t=Pi(e);return t!==void 0&&_i(t)===null?`data:image/svg+xml,${encodeURIComponent(jc(t))}`:void 0}return Tc(e)}function hh(n){let e=n?.logo;return typeof e=="string"?e===""?void 0:{light:e}:e&&typeof e.light=="string"&&e.light!==""?e:void 0}function gh(n,e){if(e==="dark")return"dark";let t=n?.schemes?.light?.ground,r=t?H(t)[0]:void 0;return r&&vr(r)?"dark":"light"}function mh(n){if(n?.logo)return;let e=Pi(n?.favicon);return e!==void 0&&_i(e)===null?e:void 0}var Dc={"system-sans":'ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',"system-serif":'ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, Cambria, "Times New Roman", serif',"system-mono":ln.mono},yh=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],Fc=["Georgia","Times New Roman","Times","Iowan Old Style","Palatino","Palatino Linotype","Charter","Cambria","Baskerville","Optima","Helvetica","Helvetica Neue","Arial","Verdana","Segoe UI","Roboto","Avenir","Avenir Next","Gill Sans","Menlo","Monaco","Consolas","SF Mono","SFMono-Regular","Courier New"];var bh=n=>new Set(n.map(e=>e.toLowerCase()));function vh(n){return bh([...yh,...Fc]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function wh(n){return Dc[n]??n}function o0(n){if(/url\(|@import|[;{}<>\\]|\/\*|[\u0000-\u001f\u007f]/i.test(n))return"it is not a list of font names; a document names a face, never where one comes from";for(let e of n.split(",")){let t=e.trim();if(!(/^"[^"']*"$/.test(t)||/^'[^"']*'$/.test(t))&&/["']/.test(t))return`${t} is not quoted in one pair; write a face as Georgia or "Times New Roman"`}return null}var Lc={r:255,g:255,b:255,a:1},xh={r:0,g:0,b:0,a:1},Ln=n=>`#${[n.r,n.g,n.b].map(e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0")).join("")}`,Ke=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,Ei=(n,e,t)=>({r:n.r+(e.r-n.r)*t,g:n.g+(e.g-n.g)*t,b:n.b+(e.b-n.b)*t,a:1});function kh(n){return typeof n=="string"?{light:n}:{...n.light?{light:n.light}:{},...n.dark?{dark:n.dark}:{}}}function Sh(n){let e=H(n)[0];if(!e)return;let{h:t,s:r}=an(e);return Ln(Pe(t,Math.min(r,.45),.08))}function Cc(n,e){let t=H(n.edgeBright)[0];return Ke(t,Ri({...t,a:1},e,t.a,3))}function Rh(n,e,t){let{h:r,s:o}=an(t),i=Ei(t,Lc,.8);return{...n,ground:e,groundDeep:Ln(Ei(t,xh,.04)),panel:Ln(i),panelMuted:Ln(Ei(t,Lc,.55)),edge:Ke(Pe(r,Math.min(o,.5),.14),.14),edgeBright:Cc(n,i),bar:Ke(i,.96),float:Ln(i)}}function Zc(n,e,t){let{h:r,s:o,l:i}=an(t),s=a=>Pe(r,o,Math.min(1,i+a));return{...n,ground:e,groundDeep:Ln(Pe(r,o,i*.6)),panel:Ke(s(.07),.96),panelMuted:Ke(s(.035),.94),edge:Ke(Pe(r,Math.min(o,.45),.75),.18),edgeBright:Cc(n,dn({...s(.07),a:.96},t)),bar:Ke(t,.96),float:Ke(s(.05),.98)}}function Gc(n){if(n===void 0)return Ce;let e=kh(n),t=e.dark??(e.light?Sh(e.light):void 0),r=e.light?H(e.light)[0]:void 0,o=t?H(t)[0]:void 0;return{light:r?vr(r)?Zc(Ce.dark,e.light,r):Rh(Ce.light,e.light,r):Ce.light,dark:o?Zc(Ce.dark,t,o):Ce.dark}}var $h=[["ink","ink",["ground","panel","panelMuted","panelWarning","float","bar"],4.5],["inkMuted","muted ink",["ground","panel","panelMuted","float","bar"],4.5],["inkFaint","faint ink",["panel","panelMuted","float"],4.5],["accent","the accent",["ground","panel","float"],4.5],["warn","the warning color",["panel","panelWarning","float"],4.5],["good","the good status",["ground","panel"],4.5],["bad","the bad status",["ground","panel"],4.5],["edgeBright","the lit edge",["panel"],3]],Ah={panel:"a card",panelMuted:"a receded card",panelWarning:"a flagged card",float:"a floating sheet",bar:"the bar"};function c0(n,e){for(let t of["light","dark"]){let r={...n[t],...t==="light"&&e?{accent:e}:{}},o=H(r.ground)[0];for(let[i,s,a,d]of $h)for(let u of a){let l=u==="ground"?[o]:H(String(r[u])).map(f=>dn(f,o));for(let f of l){let c=dn(H(String(r[i]))[0],f),p=ve(c,f);if(p<d)return{scheme:t,what:s,text:c,ground:o,...u==="ground"?{}:{card:f,surface:Ah[u]},ratio:p,requires:d}}}}return null}function p0(n,e){let t=Gc(e),r=kr({accent:n,base:t});return r.ok||!r.missing.every(o=>o.startsWith("warn"))?r:kr({accent:n,base:t,warn:{light:t.light.bad,dark:t.dark.bad}})}function Oh(n,e,t){if(t.rows===0)return;let r=ce(n,e.rows).toLowerCase(),o=ce(n,e.columns).toLowerCase(),i=e.rows===e.columns,s=i?`link ${r} to each other`:`link ${r} to ${o}`;if(t.columns===0)return`No ${o} yet: ${s}.`;if(t.cells>0||typeof e.link=="object"&&e.link!==null)return;let a=Y(n.tryDefinition(e.rows),e.rows);return i?`No ${a} is linked to another yet: ${s}.`:`No ${a} is linked to ${bn(Y(n.tryDefinition(e.columns),e.columns))} yet: ${s}.`}function _h(n,e){let t=o=>o?._zod?.def,r={};for(let o of new Set(e)){let i=n.tryDefinition(o),s=i?.fields?.shape??{};for(let[a,d]of Object.entries(s)){let u=t(d);for(let f=0;f<6&&u?.innerType!==void 0&&u.type!=="enum";f++)u=t(u.innerType);if(u?.type==="array"&&(u=t(u.element)),u?.type!=="enum"||!u.entries)continue;let l=i?.display?.format?.[a];(r[o]??={})[a]=Object.fromEntries(Object.values(u.entries).map(f=>[String(f),l?l(f):K(String(f))]))}}return r}var we={connectors:{all:{route:"curve",visible:!0},byEdge:{}},captions:{visible:!0},grid:{visible:!0,size:64},lattice:{visible:!0,size:46},tags:{visible:!0},emphasis:{rest:.34,dim:.12},marks:{flag:"\u26A0"}};function Ph(n){return n?{connectors:{all:{...we.connectors.all,...n.connectors?.all??{}},byEdge:{...we.connectors.byEdge,...n.connectors?.byEdge??{}}},captions:{...we.captions,...n.captions??{}},grid:{...we.grid,...n.grid??{}},lattice:{...we.lattice,...n.lattice??{}},tags:{...we.tags,...n.tags??{}},emphasis:{...we.emphasis,...n.emphasis??{}},marks:{...we.marks,...n.marks??{}}}:we}function Eh(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function Mh(n){return[` --graview-kit-grid: ${n.grid.visible?1:0};`,` --graview-kit-grid-size: ${n.grid.size}px;`,` --graview-kit-lattice: ${n.lattice.visible?1:0};`,` --graview-kit-lattice-size: ${n.lattice.size}px;`,` --graview-kit-tags: ${n.tags.visible?"inline-flex":"none"};`,` --graview-kit-captions: ${n.captions.visible?"block":"none"};`,` --graview-kit-rest: ${n.emphasis.rest};`,` --graview-kit-dim: ${n.emphasis.dim};`,` --graview-kit-flag: "${n.marks.flag.replace(/"/g,"'")}";`].join(`
5
+ `)}var Kc=n=>n?.kind==="visitor"||n?.onBehalfOf?.kind==="visitor",Rr=new WeakMap;function zh(n,e){e?Rr.set(n,e):Rr.delete(n)}function Nh(n,e,t){if(!n||Kc(t))return;let r=Rr.get(n)??Rr.get(Mi(n)?.store??{});if(r)try{r(e,t)}catch{}}function Ih(n,e,t){let r=new Set([e]);for(let[o,i]of t.entries()){let s=n.edge(i);if(!s)return{ok:!1,at:o};let a=s.from,d=s.to==="*"?n.kinds:s.to,u=new Set;for(let l of r){if(a.includes(l))for(let f of d)u.add(f);if(s.to==="*"||d.includes(l))for(let f of a)u.add(f)}if(u.size===0)return{ok:!1,at:o};r=u}return{ok:!0,reached:r}}var Vc="graview:fresh";function Th(n,e){let t=new URL(n),r="1";try{let o=Array.from(crypto.getRandomValues(new Uint8Array(16)),i=>i.toString(16).padStart(2,"0")).join("");(e??globalThis.sessionStorage).setItem(Vc,o),r=o}catch{}return t.searchParams.set("fresh",r),t.toString()}export{xn as a,aa as b,da as c,Kl as d,so as e,Jn as f,Xn as g,L as h,Yy as i,Jy as j,He as k,Xy as l,Qy as m,ma as n,ao as o,eb as p,ge as q,kn as r,nb as s,ba as t,tb as u,va as v,Qn as w,Q as x,rb as y,Tt as z,ob as A,ib as B,F as C,du as D,St as E,Un as F,_r as G,Pr as H,Uc as I,Rt as J,jh as K,te as L,$t as M,Wc as N,qc as O,zi as P,Dh as Q,At as R,Hc as S,Ne as T,Er as U,Ni as V,Mr as W,Xc as X,Qc as Y,ke as Z,el as _,nl as $,ji as aa,tl as ba,rl as ca,yn as da,Di as ea,Fi as fa,K as ga,il as ha,Nr as ia,V as ja,sl as ka,al as la,ce as ma,dl as na,cl as oa,_t as pa,bn as qa,Y as ra,cu as sa,jt as ta,uo as ua,wa as va,xa as wa,ka as xa,lu as ya,et as za,Ra as Aa,sv as Ba,Ft as Ca,$c as Da,jS as Ea,gu as Fa,yu as Ga,Oa as Ha,bu as Ia,lv as Ja,nt as Ka,vu as La,xu as Ma,uv as Na,fv as Oa,ku as Pa,Pa as Qa,Zp as Ra,Lt as Sa,Su as Ta,Rn as Ua,rt as Va,Zt as Wa,gv as Xa,$n as Ya,Sn as Za,ja as _a,Au as $a,go as ab,ot as bb,An as cb,Ye as db,xv as eb,mo as fb,Gt as gb,_u as hb,On as ib,le as jb,N as kb,st as lb,z as mb,W as nb,ee as ob,zu as pb,Ut as qb,Vv as rb,Nu as sb,Iu as tb,Gp as ub,I as vb,Z as wb,Oe as xb,me as yb,qt as zb,ie as Ab,rw as Bb,Wa as Cb,Pn as Db,D as Eb,En as Fb,Qe as Gb,se as Hb,Lu as Ib,ye as Jb,tn as Kb,ut as Lb,hd as Mb,gd as Nb,pe as Ob,Af as Pb,qo as Qb,Ld as Rb,In as Sb,Yo as Tb,kx as Ub,Jo as Vb,Kd as Wb,Vd as Xb,Xo as Yb,Le as Zb,ft as _b,pt as $b,If as ac,Bd as bc,Sw as cc,nd as dc,Rw as ec,$w as fc,jf as gc,Lf as hc,ni as ic,ti as jc,ri as kc,yt as lc,Xd as mc,sr as nc,Vf as oc,ar as pc,nn as qc,xi as rc,Kp as sc,Yf as tc,Tn as uc,jn as vc,dr as wc,cr as xc,GS as yc,KS as zc,Yt as Ac,To as Bc,Jt as Cc,sd as Dc,Vu as Ec,ad as Fc,Hu as Gc,Jp as Hc,$i as Ic,Xp as Jc,Ce as Kc,ln as Lc,eh as Mc,nh as Nc,zc as Oc,Ic as Pc,Tc as Qc,ph as Rc,hh as Sc,gh as Tc,mh as Uc,vh as Vc,wh as Wc,o0 as Xc,Gc as Yc,c0 as Zc,p0 as _c,yi as $c,bp as ad,Oh as bd,_h as cd,Ph as dd,Eh as ed,Mh as fd,Yu as gd,Ju as hd,Xu as id,Qu as jd,lt as kd,rn as ld,ht as md,er as nd,be as od,vf as pd,ef as qd,nf as rd,Kc as sd,zh as td,Nh as ud,Ih as vd,tp as wd,rp as xd,Td as yd,op as zd,gc as Ad,Dn as Bd,hi as Cd,dp as Dd,cp as Ed,lp as Fd,mc as Gd,mi as Hd,up as Id,fp as Jd,_e as Kd,wt as Ld,pp as Md,hp as Nd,yc as Od,gp as Pd,mp as Qd,bc as Rd,xt as Sd,vp as Td,wc as Ud,xc as Vd,xp as Wd,kp as Xd,Sp as Yd,Rp as Zd,$p as _d,kc as $d,Ap as ae,Op as be,_p as ce,Pp as de,Ep as ee,Mp as fe,vi as ge,zp as he,Np as ie,Ip as je,Tp as ke,jp as le,Dp as me,Fp as ne,Th as oe};
@@ -1 +1 @@
1
- import{e as $}from"./chunk.X2I3XH2E.js";import{a as C}from"./chunk.5POG3G2C.js";import{l as M}from"./chunk.4STDIZVI.js";import{Eb as x,ga as k,ha as v,ia as j}from"./chunk.F7PIW2EM.js";function N(a,s){let c=a.tryDefinition(s),r=Object.keys(c?.fields?.shape??{}),m=[c?.lifecycle?.field,...r.filter(l=>/^(status|stage|state|phase)$/i.test(l))].filter(l=>l!==void 0&&r.includes(l));return[...new Set(m)].slice(0,1)}function P(a,s){return a.tryDefinition(s)?.fieldRoles?.title??"label"}function V(a,s,c={}){let r=s.map(e=>a.graph.getNode(e)).filter(e=>e!==void 0);if(r.length===0)return{acts:[],withheld:[]};let u=c.principal??{kind:"human"},m=C(a,r.map(e=>e.id),{...c.derive,principal:u,...c.context?{context:c.context}:{}}),l=new Map(a.allMutations().map(e=>[e.name,e])),g=[...new Set(r.map(e=>e.kind))],p=new Set(g.map(e=>P(a.schema,e))),h=new Set(m.affordances.filter(e=>e.provider==="schema").map(e=>e.mutation)),o=e=>{let n=l.get(e.mutation);if(!n?.subject)return;let t=r.length===1&&e.provider==="invariant"&&!h.has(e.mutation)&&e.args[n.subject.arg]===r[0].id;if(!(e.provider!=="schema"&&!t)&&!(r.length>1&&e.batch?.length!==r.length)&&n.derived?.act!=="edit"&&!e.open.some(i=>p.has(i.name)))return n},y=[],b=new Set;for(let e of m.affordances){let n=o(e);if(!n||b.has(n.name))continue;b.add(n.name);let{[n.subject.arg]:t,...i}=e.args;y.push({id:e.id,label:v(n),mutation:n.name,subject:n.subject.arg,args:i,open:e.open,...e.destructive||e.setsAside?{more:!0}:{},...e.destructive?{destructive:!0}:{},affordance:{...e,label:v(n)}})}if(g.length===1){let e=g[0];for(let n of N(a.schema,e))for(let t of $(a.schema,[...l.values()],e,n)){if(t.by==="none"||r.every(d=>d[n]===t.value))continue;let i=r.find(d=>d[n]!==t.value),f=t.acts.find(d=>{let D=t.by==="step"?{[d.subject.arg]:i.id}:{[d.subject.arg]:i.id,[n]:t.value};return a.permits({name:d.name,args:D},u).ok});if(!f)continue;let w=t.by==="step"?{}:{[n]:t.value};if(t.by==="step"&&y.some(d=>d.mutation===f.name))continue;let R=t.by==="step"?v(f):`Move to ${t.label}`,O=`set:${n}:${t.value}`;y.push({id:O,label:R,mutation:f.name,subject:f.subject.arg,args:w,open:[],affordance:{id:O,label:R,provider:"schema",mutation:f.name,args:{[f.subject.arg]:i.id,...w},open:[],score:0,why:`every one is ${e}`,nodeIds:r.map(d=>d.id)}})}}let S=[...y.filter(e=>!e.more),...y.filter(e=>e.more)],A=m.withheld.filter(e=>{let n=l.get(e.mutation);return n?.subject!==void 0&&n.derived?.act!=="edit"&&(r.length===1||e.batch?.length===r.length)}).map(e=>({label:v(l.get(e.mutation)),message:e.refusal.message}));return{acts:S,withheld:A}}function _(a,s,c,r={}){let u=r.author,m=a.allMutations().find(e=>e.name===s.mutation),l=e=>M(a.schema,a.allMutations(),e),g=e=>{let n=a.graph.getNode(e);return n?k(a.schema.tryDefinition(n.kind),n):e},p=[],h=[],o=[];for(let e of[...new Set(c)]){let n={name:s.mutation,args:{...s.args,[s.subject]:e}};if(!m){p.push({id:e,label:g(e),message:`There is no act \u201C${s.mutation}\u201D.`,reason:"invalid"});continue}let t=a.permits(n,u);if(!t.ok){p.push({id:e,label:g(e),message:t.refusal.message,reason:"forbidden"});continue}if(!a.wouldChange(n,u)){h.push(e);continue}o.push({id:e,call:n})}let y=e=>a.previewAll(e,{...u?{author:u}:{},...r.context?{context:r.context}:{}});for(let e=0;o.length>0;e+=1)try{y(o.map(n=>n.call));break}catch(n){let t=[];for(let i of o)try{y([i.call]),t.push(i)}catch(f){p.push({id:i.id,label:g(i.id),message:l(f),reason:x(f).reason})}if(t.length===o.length||e>o.length){for(let i of t)p.push({id:i.id,label:g(i.id),message:l(n),reason:x(n).reason});o=[];break}o=t}if(o.length===0)return{applied:[],unchanged:h,refused:p};let b=s.label??(m?v(m):s.mutation),S=[...new Set(o.map(e=>a.graph.getNode(e.id)?.kind))],A=`${b} \u2014 ${S.length===1&&S[0]?j(a.schema,S[0],o.length):`${o.length} records`}`;try{let e=a.applyAll(o.map(n=>n.call),{intent:A,...u?{author:u}:{},...r.via?{via:r.via}:{}});return{batch:e.batch,intent:A,applied:o.map(n=>n.id),unchanged:h,refused:p,result:e}}catch(e){let n=l(e),t=x(e).reason;return{applied:[],unchanged:h,refused:[...p,...o.map(i=>({id:i.id,label:g(i.id),message:n,reason:t}))],allOrNothing:!0}}}export{V as a,_ as b};
1
+ import{e as $}from"./chunk.JYFZCJ4N.js";import{a as C}from"./chunk.PZQNR4KZ.js";import{l as M}from"./chunk.OKZT2QBM.js";import{Ib as x,ja as k,ka as v,la as j}from"./chunk.DZZL5IDD.js";function N(a,s){let c=a.tryDefinition(s),r=Object.keys(c?.fields?.shape??{}),m=[c?.lifecycle?.field,...r.filter(l=>/^(status|stage|state|phase)$/i.test(l))].filter(l=>l!==void 0&&r.includes(l));return[...new Set(m)].slice(0,1)}function P(a,s){return a.tryDefinition(s)?.fieldRoles?.title??"label"}function V(a,s,c={}){let r=s.map(e=>a.graph.getNode(e)).filter(e=>e!==void 0);if(r.length===0)return{acts:[],withheld:[]};let u=c.principal??{kind:"human"},m=C(a,r.map(e=>e.id),{...c.derive,principal:u,...c.context?{context:c.context}:{}}),l=new Map(a.allMutations().map(e=>[e.name,e])),g=[...new Set(r.map(e=>e.kind))],p=new Set(g.map(e=>P(a.schema,e))),h=new Set(m.affordances.filter(e=>e.provider==="schema").map(e=>e.mutation)),o=e=>{let n=l.get(e.mutation);if(!n?.subject)return;let t=r.length===1&&e.provider==="invariant"&&!h.has(e.mutation)&&e.args[n.subject.arg]===r[0].id;if(!(e.provider!=="schema"&&!t)&&!(r.length>1&&e.batch?.length!==r.length)&&n.derived?.act!=="edit"&&!e.open.some(i=>p.has(i.name)))return n},y=[],b=new Set;for(let e of m.affordances){let n=o(e);if(!n||b.has(n.name))continue;b.add(n.name);let{[n.subject.arg]:t,...i}=e.args;y.push({id:e.id,label:v(n),mutation:n.name,subject:n.subject.arg,args:i,open:e.open,...e.destructive||e.setsAside?{more:!0}:{},...e.destructive?{destructive:!0}:{},affordance:{...e,label:v(n)}})}if(g.length===1){let e=g[0];for(let n of N(a.schema,e))for(let t of $(a.schema,[...l.values()],e,n)){if(t.by==="none"||r.every(d=>d[n]===t.value))continue;let i=r.find(d=>d[n]!==t.value),f=t.acts.find(d=>{let D=t.by==="step"?{[d.subject.arg]:i.id}:{[d.subject.arg]:i.id,[n]:t.value};return a.permits({name:d.name,args:D},u).ok});if(!f)continue;let w=t.by==="step"?{}:{[n]:t.value};if(t.by==="step"&&y.some(d=>d.mutation===f.name))continue;let R=t.by==="step"?v(f):`Move to ${t.label}`,O=`set:${n}:${t.value}`;y.push({id:O,label:R,mutation:f.name,subject:f.subject.arg,args:w,open:[],affordance:{id:O,label:R,provider:"schema",mutation:f.name,args:{[f.subject.arg]:i.id,...w},open:[],score:0,why:`every one is ${e}`,nodeIds:r.map(d=>d.id)}})}}let S=[...y.filter(e=>!e.more),...y.filter(e=>e.more)],A=m.withheld.filter(e=>{let n=l.get(e.mutation);return n?.subject!==void 0&&n.derived?.act!=="edit"&&(r.length===1||e.batch?.length===r.length)}).map(e=>({label:v(l.get(e.mutation)),message:e.refusal.message}));return{acts:S,withheld:A}}function _(a,s,c,r={}){let u=r.author,m=a.allMutations().find(e=>e.name===s.mutation),l=e=>M(a.schema,a.allMutations(),e),g=e=>{let n=a.graph.getNode(e);return n?k(a.schema.tryDefinition(n.kind),n):e},p=[],h=[],o=[];for(let e of[...new Set(c)]){let n={name:s.mutation,args:{...s.args,[s.subject]:e}};if(!m){p.push({id:e,label:g(e),message:`There is no act \u201C${s.mutation}\u201D.`,reason:"invalid"});continue}let t=a.permits(n,u);if(!t.ok){p.push({id:e,label:g(e),message:t.refusal.message,reason:"forbidden"});continue}if(!a.wouldChange(n,u)){h.push(e);continue}o.push({id:e,call:n})}let y=e=>a.previewAll(e,{...u?{author:u}:{},...r.context?{context:r.context}:{}});for(let e=0;o.length>0;e+=1)try{y(o.map(n=>n.call));break}catch(n){let t=[];for(let i of o)try{y([i.call]),t.push(i)}catch(f){p.push({id:i.id,label:g(i.id),message:l(f),reason:x(f).reason})}if(t.length===o.length||e>o.length){for(let i of t)p.push({id:i.id,label:g(i.id),message:l(n),reason:x(n).reason});o=[];break}o=t}if(o.length===0)return{applied:[],unchanged:h,refused:p};let b=s.label??(m?v(m):s.mutation),S=[...new Set(o.map(e=>a.graph.getNode(e.id)?.kind))],A=`${b} \u2014 ${S.length===1&&S[0]?j(a.schema,S[0],o.length):`${o.length} records`}`;try{let e=a.applyAll(o.map(n=>n.call),{intent:A,...u?{author:u}:{},...r.via?{via:r.via}:{}});return{batch:e.batch,intent:A,applied:o.map(n=>n.id),unchanged:h,refused:p,result:e}}catch(e){let n=l(e),t=x(e).reason;return{applied:[],unchanged:h,refused:[...p,...o.map(i=>({id:i.id,label:g(i.id),message:n,reason:t}))],allOrNothing:!0}}}export{V as a,_ as b};