graview 0.1.30 → 0.1.33

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 (174) hide show
  1. package/dist/preview/chunk.26LLZN3C.js +1 -0
  2. package/dist/preview/chunk.2NIOHEMX.js +1 -0
  3. package/dist/preview/chunk.2WPZXIRP.js +2 -0
  4. package/dist/preview/{chunk.XRJBLH4N.js → chunk.3AGY4QVS.js} +1 -1
  5. package/dist/preview/chunk.3HXN4BOY.js +1 -0
  6. package/dist/preview/{chunk.2CIBWZJG.js → chunk.3K6YSVHC.js} +1 -1
  7. package/dist/preview/chunk.3NDH3EDN.js +47 -0
  8. package/dist/preview/{chunk.FWCOJDOD.js → chunk.3TVXGJTU.js} +1 -1
  9. package/dist/preview/{chunk.NDADLJE6.js → chunk.3TY5NFLY.js} +1 -1
  10. package/dist/preview/{chunk.UWGWXFWZ.js → chunk.47STJVRV.js} +1 -1
  11. package/dist/preview/{chunk.X37L5TN5.js → chunk.4HNG4UXT.js} +1 -1
  12. package/dist/preview/{chunk.34ZMMURV.js → chunk.4HRAQNJO.js} +6 -6
  13. package/dist/preview/{chunk.QTMWHE5O.js → chunk.4HZ7QTXZ.js} +1 -1
  14. package/dist/preview/{chunk.3JGGBLRB.js → chunk.4MERAWS2.js} +1 -1
  15. package/dist/preview/chunk.52W7WYME.js +1 -0
  16. package/dist/preview/chunk.5A4AOFOA.js +1 -0
  17. package/dist/preview/chunk.5H4VXLZF.js +88 -0
  18. package/dist/preview/{chunk.XS7YFNDU.js → chunk.5T5XGILP.js} +1 -1
  19. package/dist/preview/chunk.5UL7YDUD.js +1 -0
  20. package/dist/preview/chunk.63GXY2ME.js +1 -0
  21. package/dist/preview/chunk.67TPUXAY.js +1 -0
  22. package/dist/preview/chunk.6QWV5MVH.js +25 -0
  23. package/dist/preview/{chunk.PAVR5TK5.js → chunk.6UGEYZAC.js} +1 -1
  24. package/dist/preview/chunk.6YCBYL2Y.js +2 -0
  25. package/dist/preview/{chunk.ZYKAS4BT.js → chunk.7GKUVQVF.js} +1 -1
  26. package/dist/preview/{chunk.T3VPD7JQ.js → chunk.7T7NZZTC.js} +1 -1
  27. package/dist/preview/chunk.AKFKM4SW.js +3 -0
  28. package/dist/preview/chunk.AOSMJKLH.js +1 -0
  29. package/dist/preview/{chunk.DT7LHWU2.js → chunk.AR3DCDHU.js} +1 -1
  30. package/dist/preview/{chunk.D3IECJ2S.js → chunk.ASCLIM2P.js} +1 -1
  31. package/dist/preview/chunk.B2GLDIAS.js +1 -0
  32. package/dist/preview/chunk.BHXGM3PV.js +1 -0
  33. package/dist/preview/chunk.BNV77BQZ.js +4 -0
  34. package/dist/preview/chunk.BQ3JHEHV.js +1 -0
  35. package/dist/preview/chunk.CAVBSL27.js +1 -0
  36. package/dist/preview/{chunk.YLQB3KBA.js → chunk.CDP2XL66.js} +1 -1
  37. package/dist/preview/chunk.CIPS2OGR.js +1 -0
  38. package/dist/preview/chunk.CN3UEF5N.js +90 -0
  39. package/dist/preview/{chunk.6XMEU2Q2.js → chunk.COQKECUH.js} +1 -1
  40. package/dist/preview/{chunk.QTA4ROAK.js → chunk.CWHRDBOF.js} +1 -1
  41. package/dist/preview/chunk.CX3KL2C5.js +1 -0
  42. package/dist/preview/{chunk.AK3IHFCF.js → chunk.D75KC3LL.js} +1 -1
  43. package/dist/preview/chunk.DAZ2VSRD.js +1 -0
  44. package/dist/preview/{chunk.3ADPAGPY.js → chunk.DYSPCGXX.js} +1 -1
  45. package/dist/preview/chunk.E2YEOMPH.js +1 -0
  46. package/dist/preview/chunk.EBGAYL32.js +1 -0
  47. package/dist/preview/chunk.EF3XNU4O.js +1 -0
  48. package/dist/preview/chunk.EJPI3ST6.js +1 -0
  49. package/dist/preview/chunk.EKPRNDUV.js +1 -0
  50. package/dist/preview/chunk.ERIT3R6N.js +1 -0
  51. package/dist/preview/chunk.EYTBDMTW.js +1 -0
  52. package/dist/preview/{chunk.HHPGWJDO.js → chunk.FWTIUYXH.js} +1 -1
  53. package/dist/preview/{chunk.6T2Q6NLO.js → chunk.G5NZVPJU.js} +1 -1
  54. package/dist/preview/chunk.GBRRGTIH.js +1 -0
  55. package/dist/preview/{chunk.VG56IUIQ.js → chunk.GO4XBWJO.js} +1 -1
  56. package/dist/preview/chunk.GV2CQVKV.js +1 -0
  57. package/dist/preview/chunk.GYICGZMG.js +3 -0
  58. package/dist/preview/chunk.H7BST3XO.js +1 -0
  59. package/dist/preview/chunk.H7EPE74C.js +1 -0
  60. package/dist/preview/{chunk.26CZTUY4.js → chunk.HAIG6NVX.js} +1 -1
  61. package/dist/preview/{chunk.V7BDAGDE.js → chunk.HLTRQU4Y.js} +1 -1
  62. package/dist/preview/{chunk.VS7K3SCD.js → chunk.I6FPNX43.js} +1 -1
  63. package/dist/preview/chunk.IDVAR5HM.js +1 -0
  64. package/dist/preview/{chunk.3URFMWXZ.js → chunk.IWQCOGHW.js} +2 -2
  65. package/dist/preview/chunk.J25KOSNW.js +1 -0
  66. package/dist/preview/chunk.JDUJDAGA.js +1 -0
  67. package/dist/preview/chunk.JOOQUWLT.js +341 -0
  68. package/dist/preview/{chunk.4SJUTBDV.js → chunk.JQU5GEU3.js} +1 -1
  69. package/dist/preview/chunk.K5ME5GCG.js +1 -0
  70. package/dist/preview/chunk.KSES5U5B.js +1 -0
  71. package/dist/preview/chunk.KSXB4LDF.js +1 -0
  72. package/dist/preview/chunk.LR3VDXPI.js +1 -0
  73. package/dist/preview/{chunk.WYTIOLPP.js → chunk.LXBOVRFI.js} +1 -1
  74. package/dist/preview/{chunk.42YX6NOY.js → chunk.MAF7C3VM.js} +1 -1
  75. package/dist/preview/chunk.MNP4JI33.js +5 -0
  76. package/dist/preview/{chunk.O2LK2AO7.js → chunk.MWGGV7DE.js} +1 -1
  77. package/dist/preview/chunk.N6OX4NEQ.js +1 -0
  78. package/dist/preview/chunk.NRAYZY3X.js +1 -0
  79. package/dist/preview/chunk.NTF7FVB2.js +1 -0
  80. package/dist/preview/{chunk.DZRTOURR.js → chunk.OC6IWRQ3.js} +1 -1
  81. package/dist/preview/chunk.OJGHDWI6.js +1 -0
  82. package/dist/preview/chunk.OKRNJXTV.js +1 -0
  83. package/dist/preview/chunk.PBSMLINK.js +1 -0
  84. package/dist/preview/chunk.PHKSMUIA.js +1 -0
  85. package/dist/preview/{chunk.JN7DIFR3.js → chunk.PIP6Z563.js} +1 -1
  86. package/dist/preview/chunk.QVVJRSRM.js +1 -0
  87. package/dist/preview/{chunk.L6OMEYL6.js → chunk.QYZNAUIR.js} +1 -1
  88. package/dist/preview/chunk.R6K6GF5R.js +1 -0
  89. package/dist/preview/{chunk.JTNWD2CN.js → chunk.RCKTBOY2.js} +1 -1
  90. package/dist/preview/{chunk.QNGWEV47.js → chunk.RIJUCHP4.js} +1 -1
  91. package/dist/preview/chunk.SHTJZ6UX.js +1 -0
  92. package/dist/preview/{chunk.PKK6FRZR.js → chunk.SYAEBGDC.js} +1 -1
  93. package/dist/preview/chunk.T5VG5A6V.js +1 -0
  94. package/dist/preview/{chunk.ERXSYPYL.js → chunk.TAQ764IQ.js} +1 -1
  95. package/dist/preview/{chunk.RIEHYQLK.js → chunk.TMVCTBAD.js} +50 -24
  96. package/dist/preview/{chunk.HHI65WFZ.js → chunk.UATVTXZY.js} +1 -1
  97. package/dist/preview/{chunk.XSTXV6FP.js → chunk.UBFNZMUX.js} +2 -2
  98. package/dist/preview/{chunk.WAFDCOOG.js → chunk.UGFJKSHU.js} +1 -1
  99. package/dist/preview/chunk.UHUGOTUU.js +19 -0
  100. package/dist/preview/chunk.ULRW47RP.js +1 -0
  101. package/dist/preview/chunk.UNL2HIF2.js +1 -0
  102. package/dist/preview/chunk.UVR2Z5ZC.js +1 -0
  103. package/dist/preview/chunk.UZGRRDHD.js +1 -0
  104. package/dist/preview/{chunk.BPWNWE7N.js → chunk.VG3O4LWB.js} +1 -1
  105. package/dist/preview/chunk.WAZ7OGBD.js +1 -0
  106. package/dist/preview/{chunk.3JNMSOFG.js → chunk.XANVHJQ4.js} +1 -1
  107. package/dist/preview/chunk.XBJYQNVE.js +1 -0
  108. package/dist/preview/chunk.XKABS745.js +1 -0
  109. package/dist/preview/chunk.XMC7YDWT.js +1 -0
  110. package/dist/preview/chunk.XNJEFUF7.js +3 -0
  111. package/dist/preview/chunk.Y2SFUALD.js +117 -0
  112. package/dist/preview/chunk.Y6ZNFQK3.js +6 -0
  113. package/dist/preview/{chunk.J2ITFGN3.js → chunk.YIR7PPF3.js} +1 -1
  114. package/dist/preview/index.html +51 -0
  115. package/dist/preview/page.js +6 -6
  116. package/package.json +6 -6
  117. package/dist/preview/chunk.2EXGG6BB.js +0 -1
  118. package/dist/preview/chunk.2NBYNZRD.js +0 -1
  119. package/dist/preview/chunk.2XAONC66.js +0 -1
  120. package/dist/preview/chunk.3R4W2P5X.js +0 -1
  121. package/dist/preview/chunk.3SKKIHU3.js +0 -4
  122. package/dist/preview/chunk.3VL5WECB.js +0 -1
  123. package/dist/preview/chunk.4ALKPNXM.js +0 -1
  124. package/dist/preview/chunk.4HP7UWA2.js +0 -1
  125. package/dist/preview/chunk.5U5J3ISK.js +0 -1
  126. package/dist/preview/chunk.6V2RG5JG.js +0 -5
  127. package/dist/preview/chunk.7BWT5L2L.js +0 -1
  128. package/dist/preview/chunk.C5CYZNSJ.js +0 -1
  129. package/dist/preview/chunk.CM6LOIQE.js +0 -88
  130. package/dist/preview/chunk.FDELO7NY.js +0 -116
  131. package/dist/preview/chunk.FGVKJWNS.js +0 -6
  132. package/dist/preview/chunk.GFF2FB2J.js +0 -25
  133. package/dist/preview/chunk.GLBHQFJ2.js +0 -1
  134. package/dist/preview/chunk.HSCTWAUV.js +0 -1
  135. package/dist/preview/chunk.INZUEWC5.js +0 -1
  136. package/dist/preview/chunk.JH6MU6TX.js +0 -2
  137. package/dist/preview/chunk.JISMMIMX.js +0 -1
  138. package/dist/preview/chunk.JPHNKWTY.js +0 -1
  139. package/dist/preview/chunk.K75FUIZI.js +0 -1
  140. package/dist/preview/chunk.K776HO42.js +0 -2
  141. package/dist/preview/chunk.KN3ULTGF.js +0 -1
  142. package/dist/preview/chunk.KOB6N3SL.js +0 -1
  143. package/dist/preview/chunk.KQT7WAQE.js +0 -1
  144. package/dist/preview/chunk.L4DECHXR.js +0 -327
  145. package/dist/preview/chunk.LQ7V6KEE.js +0 -1
  146. package/dist/preview/chunk.MD74YVRN.js +0 -3
  147. package/dist/preview/chunk.MGNP4LAM.js +0 -1
  148. package/dist/preview/chunk.NCTOBUCT.js +0 -1
  149. package/dist/preview/chunk.NO52VON3.js +0 -1
  150. package/dist/preview/chunk.OAF7TUMI.js +0 -1
  151. package/dist/preview/chunk.OQ4KFN6W.js +0 -1
  152. package/dist/preview/chunk.OQDETV4X.js +0 -1
  153. package/dist/preview/chunk.OXQMNIRO.js +0 -1
  154. package/dist/preview/chunk.OZNW5W4Z.js +0 -1
  155. package/dist/preview/chunk.QIAKO27D.js +0 -1
  156. package/dist/preview/chunk.R26DREVU.js +0 -1
  157. package/dist/preview/chunk.RI3PYG5T.js +0 -19
  158. package/dist/preview/chunk.RRVIXV7W.js +0 -1
  159. package/dist/preview/chunk.RYT5U3QM.js +0 -1
  160. package/dist/preview/chunk.SE5SKFQH.js +0 -1
  161. package/dist/preview/chunk.SOBC3CTN.js +0 -47
  162. package/dist/preview/chunk.SOD3PBJM.js +0 -1
  163. package/dist/preview/chunk.UDSEJKCY.js +0 -1
  164. package/dist/preview/chunk.UZWWDAGM.js +0 -14
  165. package/dist/preview/chunk.V5ZYUVMH.js +0 -1
  166. package/dist/preview/chunk.VOAZBHCG.js +0 -1
  167. package/dist/preview/chunk.VSZQXB4Q.js +0 -3
  168. package/dist/preview/chunk.W3S6UXNA.js +0 -1
  169. package/dist/preview/chunk.Y4UXEL6Y.js +0 -1
  170. package/dist/preview/chunk.YJUB4OD7.js +0 -1
  171. package/dist/preview/chunk.YNQDVGZM.js +0 -1
  172. package/dist/preview/chunk.YV2LJFGS.js +0 -1
  173. package/dist/preview/chunk.Z2YUYZT4.js +0 -1
  174. /package/dist/preview/{chunk.EYZ7MHBZ.js → chunk.GZHZLJBF.js} +0 -0
@@ -1,5 +0,0 @@
1
- var uo="en-US",an=/^\d{4}-\d{2}-\d{2}$/,_t=/^\d{4}(-\d\d){2}[T ]\d\d:\d\d(:[\d.]+)?(Z|[+-][\d:]+)?$/,Ml=n=>!Number.isNaN(Date.parse(n)),dn=()=>new Date().toISOString().slice(0,10),lo,fo;function Va(n){lo=$t(n.reader),fo=$t(n.app)}var po=n=>lo??$t(n)??fo??uo,sn=new Map;function $t(n){if(n&&!sn.has(n)){let e=!1;try{e=Intl.DateTimeFormat.supportedLocalesOf(n).length>0}catch{}sn.set(n,e)}return n&&sn.get(n)?n:void 0}function le(n,e,t,r){let o=`${t=po(t)}${r?"#":"@"}${JSON.stringify(e)}`,i=sn.get(o);return i||sn.set(o,i=r?new Intl.NumberFormat(t,e):new Intl.DateTimeFormat(t,e)),i.format(n).replace(/ /g," ")}var we="UTC",Fn=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10));function fe(n,e){return an.test(n)?le(Fn(n),{year:"numeric",month:"short",day:"numeric",timeZone:we},e):n}function ho(n,e,t){if(!_t.test(n))return n;let r=/[Z+-][\d:]*$/.test(n.slice(16)),o=Date.parse(n.replace(" ","T")+(r?"":"Z"));return Number.isNaN(o)?n:le(o,{...e,hour:"numeric",minute:"2-digit",...r?{}:{timeZone:we}},t)}var Rt=(n,e)=>ho(n,{year:"numeric",month:"short",day:"numeric"},e),Wa=(n,e)=>ho(n,{},e);function re(n,e,t={maximumFractionDigits:2}){return Number.isFinite(n)?le(n,t,e,!0):String(n)}function qa(n,e={},t){return an.test(n)?le(Fn(n),{weekday:e.weekday??"long",month:"short",day:"numeric",...e.year?{year:"numeric"}:{},timeZone:we},t):n}function Ha(n,e){return an.test(n)?le(Fn(n),{month:"short",day:"numeric",timeZone:we},e):n}function Ja(n,e={},t){if(!/^\d{4}-\d{2}/.test(n))return n;let r=e.year??!e.short;return le(Fn(`${n.slice(0,7)}-01`),{month:e.short?"short":"long",...r?{year:e.short?"2-digit":"numeric"}:{},timeZone:we},t)}var Ya=(n,e="short",t)=>le(Date.UTC(1970,0,4+n),{weekday:e,timeZone:we},t),Xa=(n,e)=>le(Date.UTC(1970,0,1,0,Math.round(n)),{hour:"numeric",minute:"2-digit",timeZone:we},e),Qa=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function At(n,e){return n.includes("-")?n.replace(Qa,t=>fe(t,e)):n}var cn=n=>n.charAt(0).toUpperCase()+n.slice(1),go=(n,e="and")=>n.length>1?`${n.slice(0,-1).join(", ")} ${e} ${n.at(-1)}`:n[0]??"";function ed(n,e){return{...e,kind:n,edges:e.edges??{}}}function Ot(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??dn()):!r.retired.includes(o)}function D(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function nd(n){return n.title??C(n.name)}function C(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return cn(e)}function td(n,e,t){let r=n.tryDefinition(e);return`${re(t)} ${t===1?Y(r,e):J(n,e).toLowerCase()}`}function J(n,e){return n.tryDefinition(e)?.plural??`${C(e).toLowerCase()}s`}function rd(n,e){return cn(J(n,e))}function od(n,e){let t=J(n,e);return`All ${/^[A-Z][a-z]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t}`}function Zn(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":C(e))}var id=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,sd=/^(hour|honest|hono[ur]r?|heir)/;function mo(n){let e=C(n).toLowerCase();return sd.test(e)?"an":id.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function ze(n){return`${mo(n)} ${C(n).toLowerCase()}`}function Y(n,e){return n?.noun??C(e).toLowerCase()}function zt(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 Mt(n,e="|"){return n.map(t=>Dt(t)).join(e)}function yo(n,e){return typeof e=="bigint"?e.toString():e}var Et=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 bo(n){return new Et(n)}function xo(n){return n==null}function Nt(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function vo(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}function Cn(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function wo(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function It(n){return wo(n._zod.def)??n._zod.def.shape}function ko(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return Cn(this,e,r),r},enumerable:!0,configurable:!0})}function So(n,e,t){e in n?Cn(n,e,t):n[e]=t}function ad(n,e,t,r){let o=It(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?ko(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):So(n,i,r?r(s.value,i):s.value))}}function dd(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?ko(n,t,()=>e[t]):So(n,t,r.value))}}function $o(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var jt="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function Ln(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Tt(n){if(Ln(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(Ln(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var _o=new Set(["string","number","symbol"]);function ln(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Me(n,e,t){let r=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(r._zod.parent=n),r}function P(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 Dt(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function Ro(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var Ao={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 Oo(n,e){if(!Tt(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=It(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 Me(n,$o(n._zod.def,{shape:cd(n,e)}))}function cd(n,e){let t={};return ad(t,n,Reflect.ownKeys(It(n))),dd(t,e),t}function oe(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 Po(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 he(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function un(n){return typeof n=="string"?n:n?.message}function Ft(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function ie(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:un(n.inst?._zod.def?.error?.(n))??un(i?.(n))??un(e?.error?.(n))??un(t.customError?.(n))??un(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 ud=/[\uD800-\uDBFF]/;function Zt(n){let e=n.length;if(!ud.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 Lt(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function Eo(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 fn(...n){let[e,t,r]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:r}:{...e}}function zo(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):ld(n,t,r.value)}}function ke(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function Ct(n,e,t){return ke(n,e,t,!1)}function ld(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:ke(this,e,t.bind(this))},set(r){ke(this,e,r)}})}function fd(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var Pt,pe=!1,pd={configurable:!0,get(){pe=!0}};function X(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&Pt!==n._zod){Pt=void 0;return}Pt=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,pd);let o=pe;pe=!1;try{let i=t(this);return pe?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),pe=pe||o,i}catch(i){throw delete this[e],pe=pe||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function Mo(n,e,t,r){let o=fd(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 No;var Gt={value:void 0,enumerable:!1},Io="captureStackTrace"in Error?Error:null;function hd(n){let e=Io;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return Io=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function A(n,e,t,r){let o={};function i(c){this.def=c,this.constr=p,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(c,f){if(c._zod){if(c._zod.traits.has(n))return}else{Gt.value=new i(f);try{Object.defineProperty(c,"_zod",Gt)}finally{Gt.value=void 0}}if(c._zod.traits.add(n),e(c,f),a){let h=Object.getPrototypeOf(c),x=c._zod.constr.prototype,b=h;for(;b&&b!==x;)b=Object.getPrototypeOf(b);let k=b??h;a.has(k)||(a.add(k),zo(k,s))}let g=p.prototype;for(let h in g)Object.prototype.hasOwnProperty.call(g,h)&&(h in c||(c[h]=g[h].bind(c)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:n});function p(c){let f=r?.Parent?hd(u):this;d(f,c);let g=f._zod.deferred;if(g){for(let x of g)x();f._zod.deferred=void 0}let h=globalThis.__zod_globalConfig?.postProcessor;return h&&h(f),f}return Object.defineProperty(p,"init",{value:d}),Object.defineProperty(p,Symbol.hasInstance,{value:c=>r?.Parent&&c instanceof r.Parent?!0:c?._zod?.traits?.has(n)}),Object.defineProperty(p,"name",{value:n}),p}var ae=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(No=globalThis).__zod_globalConfig??(No.__zod_globalConfig={});var Ne=globalThis.__zod_globalConfig;function V(n){return n&&Object.assign(Ne,n),Ne}function gd(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,yo,2)),n.message}function md(n){this._zod.message=n}var yd={get:gd,set:md,enumerable:!0,configurable:!0},Ut={value:void 0,enumerable:!1},jo=new WeakSet([Object.prototype,Error.prototype]),To=(n,e)=>{n.name="$ZodError",Ut.value=e,Object.defineProperty(n,"issues",Ut),Ut.value=void 0,Object.defineProperty(n,"message",yd);let t=Object.getPrototypeOf(n);jo.has(t)||(jo.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})}}))},Ll=A("$ZodError",To),pn=A("$ZodError",To,void 0,{Parent:Error});var xd=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(l=>ie(l,s,V())));throw jt(d,i?.callee??e),d}return a.value};return e},Kt=xd(pn),vd=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(l=>ie(l,s,V())));throw jt(d,i?.callee??e),d}return a.value};return e},Vt=vd(pn),wd=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?Do(n,i.issues,o):{success:!0,data:i.value}},Wt=wd(pn);function Do(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>ie(o,t,V()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var kd=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?Do(n,i.issues,o):{success:!0,data:i.value}},qt=kd(pn);var Fo=/^(?:[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 Zo=/^https?$/;var Lo=/^[\s\S]{0,}$/;var Ht=/^-?\d+(?:\.\d+)?$/,Co=/^(?:true|false)$/i,Go=/^null$/i;var W=A("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var Bo=n=>{let e=n.value;return!xo(e)&&e.length!==void 0},Gn={number:"number",bigint:"bigint",object:"date"},Uo=A("$ZodCheckLessThan",(n,e)=>{W.init(n,e);let t=Gn[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:Gn[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})}}),Ko=A("$ZodCheckGreaterThan",(n,e)=>{W.init(n,e);let t=Gn[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:Gn[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})}}),Vo=A("$ZodCheckMultipleOf",(n,e)=>{W.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):vo(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})}}),Wo=A("$ZodCheckNumberFormat",(n,e)=>{W.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=Ao[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 qo=A("$ZodCheckMaxLength",(n,e)=>{var t;W.init(n,e),(t=n._zod.def).when??(t.when=Bo),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?Zt(o):i)<=e.maximum)return;let a=Lt(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),Ho=A("$ZodCheckMinLength",(n,e)=>{var t;W.init(n,e),(t=n._zod.def).when??(t.when=Bo),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?Zt(o):i)>=e.minimum)return;let a=Lt(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var Yt=A("$ZodCheckStringFormat",(n,e)=>{var t,r;W.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=()=>{})}),Jo=A("$ZodCheckRegex",(n,e)=>{Yt.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 Xo={major:4,minor:6,patch:5};var Z=A("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=Xo;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,l)=>{if(a.memo)return a;let u=oe(a),p;for(let c of d){if(c._zod.def.when){if(Po(a)||!c._zod.def.when(a))continue}else if(u)continue;let f=a.issues.length,g=c._zod.check(a);if(g instanceof Promise&&l?.async===!1)throw new ae;if(p||g instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await g,a.issues.length!==f&&(Ft(a.issues,f,n),u||(u=oe(a,f)))});else{if(a.issues.length===f)continue;Ft(a.issues,f,n),u||(u=oe(a,f))}}return p?p.then(()=>a):a},s=(a,d,l)=>{if(oe(a))return a.aborted=!0,a;let u=i(d,o,l);if(u instanceof Promise){if(l.async===!1)throw new ae;return u.then(p=>n._zod.parse(p,l))}return n._zod.parse(u,l)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let u=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return u instanceof Promise?u.then(p=>s(p,a,d)):s(u,a,d)}let l=n._zod.parse(a,d);if(l instanceof Promise){if(d.async===!1)throw new ae;return l.then(u=>i(u,o,d))}return i(l,o,d)}}},{get"~standard"(){return Ct(this,"~standard",$d(this))},set"~standard"(n){ke(this,"~standard",n)}}),oi=(n,e)=>n.issues.length?{issues:n.issues.map(t=>ie(t,e,V()))}:{value:n.value};async function Sd(n,e){let t={async:!0};return oi(await n._zod.run({value:e,issues:[]},t),t)}function $d(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return oi(r,t)}catch{}return Sd(n,e)},vendor:"zod",version:1}}var Xt=A("$ZodString",(n,e)=>{Z.init(n,e),n._zod.pattern=e.pattern??Lo,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}}),Kn=A("$ZodStringFormat",(n,e)=>{Yt.init(n,e),Xt.init(n,e)});var ii=A("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=Fo),Kn.init(n,e)}),si=1,Bn=2;function _d(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function Rd(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?_d(n)||Bn:Ad(n,e)}function Ad(n,e){if(!e.normalize&&e.protocol?.source===Zo.source&&!/^https?:\/\//i.test(n))return si;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??Bn}return new URL(n)}catch{return Bn}}var Od=/[\t\n\r]/g;function Qo(n){return n.replace(Od,"")}function Pd(n,e){return e.lastIndex=0,e.test(n.hostname)}function Ed(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var ai=A("$ZodURL",(n,e)=>{Kn.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=Rd(r,e);if(o===si){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===Bn){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=Qo(r);return}e.hostname&&!Pd(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&&!Ed(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:Qo(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var Qt=A("$ZodNumber",(n,e)=>{Z.init(n,e),n._zod.pattern=Ht,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}}),di=A("$ZodNumberFormat",(n,e)=>{Wo.init(n,e),Qt.init(n,e)}),ci=A("$ZodBoolean",(n,e)=>{Z.init(n,e),n._zod.pattern=Co,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 ui=A("$ZodNull",(n,e)=>{Z.init(n,e),n._zod.pattern=Go,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 li=A("$ZodUnknown",(n,e)=>{Z.init(n,e),n._zod.parse=t=>t}),fi=A("$ZodNever",(n,e)=>{Z.init(n,e),n._zod.parse=(t,r)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function ei(n,e,t){n.issues.length&&e.issues.push(...he(t,n.issues)),e.value[t]=n.value}var pi=A("$ZodArray",(n,e)=>{Z.init(n,e);let t=Ne.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 l=i[d],u=e.element._zod.run({value:l,issues:[]},o);if(u instanceof Promise)s.push(u.then(p=>ei(p,r,d)));else if(ei(u,r,d),a&&u.issues.length!==0&&oe(u))break}return s.length?Promise.all(s).then(()=>r):r}});function Un(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(...he(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 zd=[];function Md(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:zd,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=Ro(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function Nd(n,e,t,r,o,i,s){let a=[],d=o.keySet,l=o.catchall._zod,u=l.def.type,p=l.optin,c=l.optout,f=0;for(let g in e){if(s&&t.issues.length!==f){if(oe(t,f))break;f=t.issues.length}if(d.has(g))continue;if(g==="__proto__"){u==="never"&&a.push(g);continue}if(u==="never"){a.push(g);continue}let h=l.run({value:e[g],issues:[]},r);h instanceof Promise?n.push(h.then(x=>Un(x,t,g,e,p,c))):Un(h,t,g,e,p,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 hi=A("$ZodObject",(n,e)=>{Z.init(n,e);let t=Object.getOwnPropertyDescriptor(e,"shape"),r=t?.get?t.get.raw:e.shape??{};if(r){let l=()=>{let u={...r};return Object.defineProperty(e,"shape",{value:u}),l.raw=u,u};l.raw=r,Object.defineProperty(e,"shape",{get:l})}let o=bo(()=>Md(e));X(n,"propValues",l=>{let u=l.def.shape,p={};for(let c in u){let f=u[c]._zod;if(f.values){Object.prototype.hasOwnProperty.call(p,c)||Cn(p,c,new Set);for(let g of f.values)p[c].add(g);f.optin!==void 0&&p[c].add(void 0)}}return p});let i=Ln,s=e.catchall,a,d=Ne.memoizer;d?.attach(n),n._zod.parse=(l,u)=>{a??(a=o.value);let p=l.value;if(!i(p))return l.issues.push({expected:"object",code:"invalid_type",input:p,inst:n}),l;l.value=d?d.alloc(n,l,{},u):{};let c=[],f=a.shape,g=u?.abortEarly,h=l.issues.length;for(let x of a.allKeys){if(g&&l.issues.length!==h){if(oe(l,h))break;h=l.issues.length}if(x==="__proto__")continue;let b=f[x],k=b._zod.optin,R=b._zod.optout,m=b._zod.run({value:p[x],issues:[]},u);m instanceof Promise?c.push(m.then(w=>Un(w,l,x,p,k,R))):Un(m,l,x,p,k,R)}return s?Nd(c,p,l,u,o.value,n,g===!0):c.length?Promise.all(c).then(()=>l):l}});function ni(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=>!oe(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=>ie(s,r,V())))}),e)}var gi=A("$ZodUnion",(n,e)=>{Z.init(n,e),X(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),X(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),X(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)))}),X(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=>Nt(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=>ni(a,r,n,o)):ni(s,r,n,o)}});var mi=A("$ZodRecord",(n,e)=>{Z.init(n,e);let t=Ne.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Tt(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 u of a)if(typeof u=="string"||typeof u=="number"||typeof u=="symbol"){if(d.add(typeof u=="number"?u.toString():u),u==="__proto__")continue;let p=e.keyType._zod.run({value:u,issues:[]},o);if(p instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(p.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:p.issues.map(g=>ie(g,o,V())),input:u,path:[u],inst:n});continue}let c=p.value;if(c==="__proto__")continue;let f=e.valueType._zod.run({value:i[u],issues:[]},o);f instanceof Promise?s.push(f.then(g=>{g.issues.length&&r.issues.push(...he(u,g.issues)),r.value[c]=g.value})):(f.issues.length&&r.issues.push(...he(u,f.issues)),r.value[c]=f.value)}let l;for(let u in i)if(!d.has(u))if(e.mode==="loose"){if(u==="__proto__")continue;r.value[u]=i[u]}else l=l??[],l.push(u);l&&l.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:l,continue:!0})}else{r.value=t?t.alloc(n,r,{},o):{};let d;for(let l of Reflect.ownKeys(i)){if(l==="__proto__"||!Object.prototype.propertyIsEnumerable.call(i,l))continue;let u=e.keyType._zod.run({value:l,issues:[]},o);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof l=="string"&&Ht.test(l)&&u.issues.length){let g=e.keyType._zod.run({value:Number(l),issues:[]},o);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");g.issues.length===0&&(u=g)}if(u.issues.length){e.mode==="loose"?r.value[l]=i[l]:a?(d=d??[],d.push(l)):r.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(g=>ie(g,o,V())),input:l,path:[l],inst:n});continue}let c=u.value;if(c==="__proto__")continue;let f=e.valueType._zod.run({value:i[l],issues:[]},o);f instanceof Promise?s.push(f.then(g=>{g.issues.length&&r.issues.push(...he(l,g.issues)),r.value[c]=g.value})):(f.issues.length&&r.issues.push(...he(l,f.issues)),r.value[c]=f.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 yi=A("$ZodEnum",(n,e)=>{Z.init(n,e);let t=zt(e.entries),r=new Set(t);n._zod.values=r,X(n,"pattern",o=>{let i=zt(o.def.entries).filter(s=>_o.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>ln(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}}),bi=A("$ZodLiteral",(n,e)=>{Z.init(n,e);let t=new Set(e.values);n._zod.values=t,X(n,"pattern",r=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map(i=>typeof i=="string"?ln(i):i?ln(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 ti(n,e){return n.value=e.issues.length?void 0:e.value,n}var xi=A("$ZodOptional",(n,e)=>{Z.init(n,e),X(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",X(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),X(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${Nt(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=>ti(t,i)):ti(t,o)}return e.innerType._zod.run(t,r)}});var vi=A("$ZodCustom",(n,e)=>{W.init(n,e),Z.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=>ri(i,t,r,n));ri(o,t,r,n)}});function ri(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(fn(o))}}var Id=()=>{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=Eo(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 ${Dt(i.values[0])}`:`Invalid option: expected one of ${Mt(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":""}: ${Mt(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 wi(){return{localeError:Id()}}var ki;var er=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 Si(){return new er}(ki=globalThis).__zod_globalRegistry??(ki.__zod_globalRegistry=Si());var Ie=globalThis.__zod_globalRegistry;function $i(n){return n.checks&&(n.checks=[...n.checks]),n}function _i(n,e){return new n($i({type:"string",...P(e)}))}function Ri(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...P(e)})}function Ai(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...P(e)})}function Oi(n,e){return new n($i({type:"number",checks:[],...P(e)}))}function Pi(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...P(e)})}function Ei(n,e){return new n({type:"boolean",...P(e)})}function zi(n,e){return new n({type:"null",...P(e)})}function Mi(n){return new n({type:"unknown"})}function Ni(n,e){return new n({type:"never",...P(e)})}function Ii(n,e){return new Uo({check:"less_than",...P(e),value:n,inclusive:!0})}function ji(n,e){return new Ko({check:"greater_than",...P(e),value:n,inclusive:!0})}function Fd(n,e){return new Vo({check:"multiple_of",...P(e),value:n})}function nr(n,e){return new qo({check:"max_length",...P(e),maximum:n})}function hn(n,e){return new Ho({check:"min_length",...P(e),minimum:n})}function gn(n,e){return new Jo({check:"string_format",format:"regex",...P(e),pattern:n})}function Ti(n,e,t){return new n({type:"custom",check:"custom",fn:e,...P(t)})}function Di(n,e){let t=Zd(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(fn(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(fn(i))}},n(r.value,r)),e);return t}function Zd(n,e){let t=new W({check:"custom",...P(e)});return t._zod.check=n,t}function Fi(n){let e=new W({check:"describe"});return e._zod.onattach=[t=>{let r=Ie.get(t)??{};Ie.add(t,{...r,description:n})}],e._zod.check=()=>{},e}var U=A("ZodMiniType",(n,e)=>{if(!n._zod)throw new Error("Uninitialized schema in ZodMiniType.");Z.init(n,e),n.def=e,n.type=e.type},{get with(){return this.check},set with(n){ke(this,"with",n)},parse(n,e){return Kt(this,n,e,{callee:this.parse})},parseAsync(n,e){return Vt(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return Wt(this,n,e)},safeParseAsync(n,e){return qt(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 Me(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)}}),Li=A("ZodMiniString",(n,e)=>{Xt.init(n,e),U.init(n,e)});function F(n){return _i(Li,n)}var Ci=A("ZodMiniStringFormat",(n,e)=>{Kn.init(n,e),Li.init(n,e)}),Gd=A("ZodMiniEmail",(n,e)=>{ii.init(n,e),Ci.init(n,e)});function Kh(n){return Ri(Gd,n)}var Bd=A("ZodMiniURL",(n,e)=>{ai.init(n,e),Ci.init(n,e)});function Vh(n){return Ai(Bd,n)}var Gi=A("ZodMiniNumber",(n,e)=>{Qt.init(n,e),U.init(n,e)});function Vn(n){return Oi(Gi,n)}var Ud=A("ZodMiniNumberFormat",(n,e)=>{di.init(n,e),Gi.init(n,e)});function Wh(n){return Pi(Ud,n)}var Kd=A("ZodMiniBoolean",(n,e)=>{ci.init(n,e),U.init(n,e)});function qh(n){return Ei(Kd,n)}var Vd=A("ZodMiniNull",(n,e)=>{ui.init(n,e),U.init(n,e)});function Hh(n){return zi(Vd,n)}var Wd=A("ZodMiniUnknown",(n,e)=>{li.init(n,e),U.init(n,e)});function tr(){return Mi(Wd)}var qd=A("ZodMiniNever",(n,e)=>{fi.init(n,e),U.init(n,e)});function Hd(n){return Ni(qd,n)}var Jd=A("ZodMiniArray",(n,e)=>{pi.init(n,e),U.init(n,e)});function Jh(n,e){return new Jd({type:"array",element:n,...P(e)})}var rr=A("ZodMiniObject",(n,e)=>{hi.init(n,e),U.init(n,e),Mo(n,"shape",t=>t._zod.def.shape,!1)});function je(n,e){let t={type:"object",shape:n??{},...P(e)};return new rr(t)}function Wn(n,e){return new rr({type:"object",shape:n,catchall:Hd(),...P(e)})}function Yh(n,e){return new rr({type:"object",shape:n,catchall:tr(),...P(e)})}function Bi(n,e){return Oo(n,e)}var Yd=A("ZodMiniUnion",(n,e)=>{gi.init(n,e),U.init(n,e)});function Xh(n,e){return new Yd({type:"union",options:n,...P(e)})}var Zi=A("ZodMiniRecord",(n,e)=>{mi.init(n,e),U.init(n,e)});function Qh(n,e,t){return!e||!e._zod?new Zi({type:"record",keyType:F(),valueType:n,...P(e)}):new Zi({type:"record",keyType:n,valueType:e,...P(t)})}var Xd=A("ZodMiniEnum",(n,e)=>{yi.init(n,e),U.init(n,e),n.options=[...n._zod.values]});function Ui(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new Xd({type:"enum",entries:t,...P(e)})}var Qd=A("ZodMiniLiteral",(n,e)=>{bi.init(n,e),U.init(n,e)});function Ki(n,e){return new Qd({type:"literal",values:Array.isArray(n)?n:[n],...P(e)})}var ec=A("ZodMiniOptional",(n,e)=>{xi.init(n,e),U.init(n,e)});function de(n){return new ec({type:"optional",innerType:n})}var nc=A("ZodMiniCustom",(n,e)=>{vi.init(n,e),U.init(n,e)});function qn(n,e={}){return Ti(nc,n,e)}function eg(n,e){return Di(n,e)}var ng=Fi;V().localeError||V(wi());var M=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,tc=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=Ie.get(n)?.description;return typeof e=="string"?e:void 0};var Vi=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),or=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function ir(n){let e=n??{};return Vi(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&or(e.bytes,0)&&or(e.width)&&or(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)}var Wi=n=>n.type.startsWith("image/"),mn=n=>(Array.isArray(n)?n:[n]).filter(ir),qi=Symbol.for("@graview/core:file"),rc=(n,e)=>(Object.defineProperty(M(n),qi,{value:e,enumerable:!0}),n);function Hi(n){let e=M(n);return e?.[qi]??(e?.innerType?Hi(e.innerType):void 0)}var oc=()=>({href:F(),name:F(),type:F(),bytes:Vn(),width:de(Vn()),height:de(Vn()),caption:de(F())});function tm(n){return rc(je(oc()).check(qn(e=>ir(e)&&(n==="file"||Wi(e)),`${n==="image"?"an image":"a file"} the host stored, at a path on this host`)),n)}var Hn=/^(?:https?:\/\/[^\s<>"'`\\]+|@?[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)$/,Jn=n=>typeof n=="string"&&n.length<501&&Hn.test(n);var Ji=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,ic=/^@(?:https?:\/\/[^\s<>"'`\\#?]+|[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function Yi(n){if(typeof n!="string"||!n.startsWith("@")||!ic.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 Jn(o)?{address:o,kind:r}:void 0}var sc=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*:\S[^\n]{0,199}$/,ac=n=>`${n.kind}:${n.id}`;function Xi(n,e){if(typeof n!="string"||!sc.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 dc(n,e){return(Array.isArray(n)?n:n==null?[]:[n]).flatMap(r=>{let o=Xi(r,e);return o?[o]:[]})}var Qi=Symbol.for("@graview/core:linked"),sm=(n,e)=>(Object.defineProperty(Ji(n),Qi,{value:e,enumerable:!0}),n);function yn(n){let e=Ji(n);return e?e[Qi]??yn(e.innerType):void 0}function cc(n){let e=n?.fields?.shape??{},t=new Map;for(let[r,o]of Object.entries(e)){let i=yn(o);i&&t.set(r,i)}return t}function uc(n){if(n.to==="*"||n.to.length===0)return;let e=n.to.map(Yi);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 lc=n=>n.to!=="*"&&n.to.some(e=>typeof e=="string"&&e.startsWith("@"));function am(n){return Object.fromEntries(Object.entries(n??{}).filter(([,e])=>!lc(e)))}function dm(n){let e=new Map;for(let[t,r]of Object.entries(n??{})){let o=uc(r);o&&e.set(t,o)}return e}var sr=new WeakMap;function fc(n,e){e?sr.set(n,e):sr.delete(n)}var es=n=>sr.get(n);var Yn=["sun","mon","tue","wed","thu","fri","sat"],pc=["day","week","month","year"],De=n=>`${n}Repeat`,xn=n=>n.endsWith("Repeat")&&n.length>6?n.slice(0,-6):void 0,rs=/^\d{4}-\d{2}-\d{2}$/,os=Symbol.for("@graview/core:repeat");function Xn(n){let e=M(n);return!!e&&(e[os]===1||Xn(e.innerType))}var hc=n=>(Object.defineProperty(M(n),os,{value:1,enumerable:!0}),n),ar=(n,e,t)=>n===void 0||Number.isInteger(n)&&n>=e&&n<=t,ns=(n,e)=>n===void 0||Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&rs.test(t)),gc=["every","interval","on","until","count","except","continues"],is=n=>Fe(n)&&Object.keys(n).every(e=>gc.includes(e))&&ar(n.interval,1,99)&&ar(n.count,1,1e3)&&ns(n.until===void 0?void 0:[n.until],1)&&ns(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"?Yn.includes(e):n.every==="month"&&e!==0&&ar(e,-1,31))),lm=()=>hc(tr().check(qn(n=>n===null||is(n),"how a date repeats, or null"))),bn=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10)),ss=n=>new Date(n).toISOString().slice(0,10),dr=(n,e)=>ss(bn(n)+e*864e5),ts=(n,e,t)=>{let r=new Date(Date.UTC(n,e+1,0)).getUTCDate();return ss(Date.UTC(n,e,t<0||t>r?r:t))},Fe=n=>typeof n=="object"&&n!==null&&pc.includes(n.every);function Te(n,e,t={}){let r=n.slice(0,10),o=n.slice(10),i=[];if(!rs.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,l=[e.until,t.to?.slice(0,10)].filter(Boolean).sort()[0],u=t.limit??1e3,p=new Set(e.except??[]),c=+r.slice(0,4),f=+r.slice(5,7)-1,g=+r.slice(8,10),h=dr(r,-new Date(bn(r)).getUTCDay()),x=(e.on?.length?e.on:[a==="week"?Yn[new Date(bn(r)).getUTCDay()]:g]).map(w=>typeof w=="string"?Yn.indexOf(w):w),b=a==="day"?1:a==="week"?7:0,k=(+d.slice(0,4)-c)*12+(+d.slice(5,7)-1-f),R=e.count?0:Math.max(0,Math.floor((b?(bn(d)-bn(b===7?h:r))/864e5/b:a==="month"?k:k/12)/s)-1),m=0;for(let w=0;w<5e4&&i.length<u;w++,R++){let y=R*s,S=a==="day"?[dr(r,y)]:a==="week"?x.map(v=>dr(h,y*7+v)):a==="month"?x.map(v=>ts(c,f+y,v)):[ts(c+y,f,g)];for(let v of[...new Set(S)].sort())if(!(v<r)&&(l&&v>l||e.count&&m>=e.count||(m++,v>=d&&!p.has(v)&&i.push(v+o),i.length>=u)))return i}return i}function as(n,e,t){if(!Fe(e)||typeof n!="string")return n;let r=Te(n,e,{from:t,limit:1})[0];if(r)return r;let o=e.until||e.count?Te(n,e):[];return o[o.length-1]??n}function mc(n,e,t){let r=n[e],o=n[De(e)];return typeof r=="string"&&Fe(o)?as(r,o,t):r}function vn(n,e){if(n.onBehalfOf){let{onBehalfOf:i,...s}=n;return`${vn(s,e)}, for ${vn(i,e)}`}if(n.id===void 0)return n.name??(n.kind==="agent"?"an agent":n.kind);let t=e.graph.getNode(n.id);if(t)return D(e.schema.tryDefinition(t.kind),t);let r=e.seats?.find(i=>i.principal.id===n.id);if(r)return r.label;let o=e.people?.find(i=>i.id===n.id&&(i.kind===void 0||i.kind===n.kind));return o?o.name:n.name?n.name:/(^|:)migration$/.test(n.id)?"the upgrade":/[:_/]/.test(n.id)?{human:"somebody",agent:"an agent",rule:"a rule",system:"the system"}[n.kind]:n.id}var Ze="$archived",Se=n=>n?.[Ze]===!0,gm=(n,e=!1)=>e==="all"||Se(n)===e,cr=n=>n===!0||n==="true"?!0:n==="all"?"all":!1,wn="$leftAlone",Qn=new Set([Ze,wn]);var ee="\0graview:unset",Le=n=>n===void 0||n===ee;function kn(n){if(n.op!=="patch-node")return n;let e=t=>Object.fromEntries(Object.entries(t).map(([r,o])=>[r,o===void 0?ee:o]));return{...n,before:e(n.before),after:e(n.after)}}function Sn(n){switch(n.op){case"add-node":return{op:"remove-node",node:n.node};case"remove-node":return{op:"add-node",node:n.node};case"patch-node":return{op:"patch-node",id:n.id,before:n.after,after:n.before};case"add-edge":return{op:"remove-edge",edge:n.edge};case"remove-edge":return{op:"add-edge",edge:n.edge}}}function $e(n){switch(n.op){case"add-node":case"remove-node":return[n.node.id];case"patch-node":return[n.id];case"add-edge":case"remove-edge":return[n.edge.from,n.edge.to]}}var Q=class extends Error{constructor(t,r){super(r?`${t}
2
- \u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function yc(n,e){let t=n,r=new Map;for(let a of t){if(r.has(a.kind))throw new Q(`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,l]of Object.entries(a.edges)){if(l.to!=="*"){for(let p of l.to)if(!r.has(p))throw new Q(`Edge "${d}" on "${a.kind}" points at undeclared kind "${p}"`,`Declared kinds: ${[...r.keys()].join(", ")}`)}let u=o.get(d);u?u.from.push(a.kind):o.set(d,{from:[a.kind],decl:l})}let i=new Map;for(let[a,{from:d,decl:l}]of o){let u=d.map(p=>r.get(p).edges[a].to);i.set(a,{kind:a,from:d,to:u.includes("*")?"*":[...new Set(u.flat())],cardinality:l.cardinality??"many",...l.description===void 0?{}:{description:l.description}})}let s=new Map;for(let a of t)s.set(a.kind,Bi(a.fields,{id:F().check(hn(1)),kind:Ki(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 Q(`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,l){let u=r.get(d)?.edges[a];return u?u.to==="*"||u.to.includes(l):!1},parseNode(a){let d=a?.kind;if(typeof d!="string")throw new Q("Node is missing a `kind`");let l=s.get(d);if(!l)throw new Q(`Unknown node kind "${d}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);let u={},p={};for(let[f,g]of Object.entries(a))Qn.has(f)?g===!0&&(p[f]=!0):u[f]=g;let c=l.parse(u);return Object.keys(p).length>0?{...c,...p}:c},__node:void 0}}function O(n){return`${n.kind}\0${n.from}\0${n.to}`}var $n={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function ds(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function bc(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 Ce(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 f=r.get(c.id);if(!f||f===c)continue;let g=bc(c,f);g.length>0&&s.push({before:c,after:f,fields:g})}let a=new Map(n.edges.map(c=>[O(c),c])),d=new Map(e.edges.map(c=>[O(c),c])),l=e.edges.filter(c=>!a.has(O(c))),u=n.edges.filter(c=>!d.has(O(c))),p=new Set;for(let c of o)p.add(c.id);for(let c of i)p.add(c.id);for(let c of s)p.add(c.after.id);for(let c of[...l,...u])p.add(c.from),p.add(c.to);return{addedNodes:o,removedNodes:i,changedNodes:s,addedEdges:l,removedEdges:u,touched:[...p].sort()}}function me(n,e,t){let r=new Set(t.flatMap(i=>i.op==="patch-node"?[i.id]:"node"in i?[i.node.id]:[i.edge.from,i.edge.to]));if(r.size===0)return $n;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 Ce(o(n),o(e))}function xc(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?C(String(t.path.at(-1))):null,o=t.message??"is not what the declaration allows";return r?`${r}: ${o}`:o}).join("; ")}var E=class extends Error{constructor(t,r){super(r?`${t}
3
- ${r}`:t);this.hint=r;this.name="GraphError"}},L=class extends E{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}};function et(n,e){try{n.parseNode(e);return}catch(t){if(t instanceof Q)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 ur="n\0",lr="e\0",G=class n{constructor(e,t={}){this.schema=e;this.validate=t.validate??!0}nodes=new Map;edges=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=Ce(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)}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=me(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){for(let t of[this.nodes,this.edges,this.outIndex,this.inIndex,this.ranks,this.lapsed,this.counts,this.archived])t.clear();this.reordered=!1;for(let t of e.nodes)this.insertNode(t,!0);for(let t of e.edges)this.insertEdge(t,!0)}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(ur));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(lr));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":this.insertNode(e.node,t,r);return;case"remove-node":{let o=e.node.id,i=this.nodes.get(o);if(!i)throw new L(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(ur+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new L(e.id,`Cannot patch missing node "${e.id}"`);let i={...o};for(let[a,d]of Object.entries(e.after))Le(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[Se(s)?"add":"delete"](e.id),s.kind!==o.kind&&(this.tally(o.kind,-1),this.tally(s.kind,1));return}case"add-edge":this.insertEdge(e.edge,t,r);return;case"remove-edge":{if(!this.edges.has(O(e.edge)))throw new L(O(e.edge),`Cannot remove missing edge ${O(e.edge)}`);this.deleteEdge(e.edge);return}}}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"||Qn.has(a))continue;let d=o[a];if(!d){delete t[a];continue}let l=d.safeParse(t[a]);l.success&&(l.data===void 0?delete t[a]:t[a]=l.data)}let i=et(this.schema,t);if(i===void 0)return t;let s=et(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 Q)return t;{let r=e?.id??"?",o=e?.kind??"?",i=this.schema.tryDefinition(o),s=i&&e&&typeof e=="object"?D(i,e):r;return new E(`${s} does not match what ${o} declares`,xc(t))}}insertNode(e,t,r=!1){if(this.nodes.has(e.id))throw new E(`Duplicate node id "${e.id}"`);this.nodes.set(e.id,t?e:this.check(e)),Se(e)&&this.archived.add(e.id),this.tally(e.kind,1),this.place(ur+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 L(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 E(`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=O(e);this.edges.has(s)||(this.edges.set(s,e),this.place(lr+s,r),this.index(this.outIndex,e.from,s),this.index(this.inIndex,e.to,s))}deleteEdge(e){let t=O(e);this.edges.delete(t),this.lapse(lr+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 nt=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 vc(n,e){return{...e,name:n}}var tt=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function cs(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof tt,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 Ge(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(...cs(c,()=>c.evaluate({graph:n,subject:void 0,context:r,...o}),void 0));let d=e.filter(c=>c.scope!=="graph"),l=new Map;for(let c of d){let f=c.scope.kind,g=l.get(f);g?g.push(c):l.set(f,[c])}for(let c of n.allNodes()){let f=n.schema.tryDefinition(c.kind),g=f?.requiresInvariant?.(c)??null;if(t.subjectFilter&&!t.subjectFilter(c,r))continue;if(g!==null&&!s.has(g)){if(i==="throw")throw new nt(g,c.id);continue}let h=!Ot(f,c,t.today);for(let x of l.get(c.kind)??[]){if(h&&x.judgesPast!==!0)continue;let b=x.scope.match;b&&!b(c)||a.push(...cs(x,()=>x.evaluate({graph:n,subject:c,context:r,...o}),c.id))}}let u=new Set,p=a.filter(c=>{let f=`${c.message}|${[...c.nodeIds].sort().join(",")}`;return u.has(f)?!1:(u.add(f),!0)}).map(c=>{let f=At(c.message);return f===c.message?c:{...c,message:f}});return fr?fr(n,e,p,t.today):p}var fr;function Mm(n){fr=n}function wc(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 kc(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 rt=(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 B=n=>n.kind==="system"&&n.onBehalfOf===void 0,ye=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));function us(n){return go(n.map(e=>ze(C(e).toLowerCase())),"or")}function be(n,e,t,r,o,i,s={},a,d,l){if(!n)return{ok:!0};if(B(e))return{ok:!0};if(e=I(e),o!==void 0){if(be(n,e,t,r,void 0,i).ok)return{ok:!0};let f=!1;if(o.some(b=>be(n,e,b,r,void 0,i).ok)){if(!d||i===void 0||e.id!==void 0&&d()===e.id||!l&&n.grants.some(b=>b.roles!=="*"&&ye(b,e)&&o.some(k=>rt(b.mutations,k))))return{ok:!0};f=!0}let g=f?[t]:[t,...o],h=[...new Set(g.flatMap(b=>pr(n,b,r)))].sort(),x=(f?"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":`${us(h)} can`);return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:h,message:ls(n,g,r,x,s)}}}let u=!1;for(let f of n.grants){if(!ye(f,e)||!rt(f.mutations,t)||f.kinds!==void 0&&f.kinds!=="*"&&(r===void 0||!f.kinds.includes(r))||f.self&&(i===void 0||e.id===void 0||i!==e.id))continue;let g=f.ownEnd?a?.()??[]:[e.id];if(!g.length||g.some(h=>h!==e.id)){u=!0;continue}return{ok:!0}}let p=pr(n,t,r),c=u?"only on your own end of the link":p.length===0?"no role can":`${us(p)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:p,message:ls(n,[t],r,c,s)}}}function ls(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>fs(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${ze(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function fs(n,e,t){return[...new Set(ps(n,e,t).flatMap(r=>r.describe||[]))]}var ps=(n,e,t)=>n.grants.filter(r=>rt(r.mutations,e)&&(t===void 0||rt(r.kinds??"*",t)));function pr(n,e,t){let r=ps(n,e,t);return r.some(o=>o.roles==="*")?[]:[...new Set(r.flatMap(o=>o.roles))].sort()}function hr(n,e,t){return n?t.filter(r=>{let o=I(e).id;return gr(r).some(i=>be(n,e,r.name,i,void 0,o,void 0,()=>[o??[]].flat()).ok)}):t}var gr=n=>n.subject&&n.subject.kinds!=="*"?n.subject.kinds:[void 0];var ne=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};var _n=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.id:"";if(r===""||this.unversioned?.has(r))return;let o=e.op==="add-node"?Object.keys(e.node):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=O(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=O(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,hs(t,e.before));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,hs(t,e.after));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function hs(n,e){let t={...n};for(let[r,o]of Object.entries(e))Le(o)?delete t[r]:t[r]=o;return t}var Sc=n=>n.op==="add-node"||n.op==="remove-node"?n.node.id:n.op==="patch-node"?n.id:void 0;function mr(n,e,t,r){let o=u=>{let p=e.node(u);return p?t.served(p,e.writerOf(u))!==void 0:t.sees?.(u)??!1},i=Sc(n);if(i===void 0){let u=n.edge,p=t.edgeClean(u)&&o(u.from)&&o(u.to);return e.apply(n),{primitives:p?[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),l=d?t.served(d,e.writerOf(i)):void 0;if(!a&&!l)return{primitives:[],faithful:!1};if(!a&&l){let u=e.incident(i).filter(c=>t.edgeClean(c)&&o(c.from===i?c.to:c.from)).map(c=>({op:"add-edge",edge:c})),p=n.op==="add-node"&&l===n.node&&u.length===0;return{primitives:p?[n]:[{op:"add-node",node:l},...u],faithful:p}}if(a&&!l){let u=n.op==="remove-node"&&a===s;return{primitives:u?[n]:[{op:"remove-node",node:a}],faithful:u}}if(n.op==="patch-node"){let u=(c,f)=>g=>g in c==(f!==void 0&&g in f);if(Object.keys(n.after).every(c=>u(a,s)(c)&&u(l,d)(c)))return{primitives:[n],faithful:!0};let p=c=>Object.fromEntries(Object.keys(n.after).map(f=>[f,f in c?c[f]:ee]));return{primitives:[{op:"patch-node",id:i,before:p(a),after:p(l)}],faithful:!1}}return{primitives:[{op:"remove-node",node:a},{op:"add-node",node:l}],faithful:!1}}function gs(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 _n(e.present,e);if(!i)return s.begin(e.log.length??o+r.length),n.map(c=>{let f=I(c.author).id,g=c.primitives.map(h=>mr(h,s,t,()=>f));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,l=Number.NEGATIVE_INFINITY;for(let c of a)c<d&&(d=c),c>l&&(l=c);d-=o,l-=o;let u=$c(r,d,e.present,t),p=u?new _n(e.present,e,u.unversioned):s;for(let c=r.length-1;c>=d;c--){let f=r[c].primitives;for(let g=f.length-1;g>=0;g--)p.undo(f[g])}return _c(n,r,d,l,a,p,u?.judge??t,e)}function $c(n,e,t,r){let{sees:o,names:i}=r;if(!o||!i)return;let s=new Set,a=new Set,d=new Set,l=(p,c)=>{s.has(p)||a.has(p)||(o(p)?i(c)?(a.add(p),d.delete(p)):d.add(p):(s.add(p),d.delete(p)))};for(let p=e;p<n.length;p++)for(let c of n[p].primitives)c.op==="add-node"||c.op==="remove-node"?l(c.node.id,c.node):c.op==="patch-node"&&(l(c.id,c.before),l(c.id,c.after));for(let p of d){let c=t.getNode(p);c&&i(c)&&(d.delete(p),a.add(p))}return{unversioned:new Set([...d,...s]),judge:{...r,served:(p,c)=>d.has(p.id)?p:s.has(p.id)?void 0:r.served(p,c)}}}function _c(n,e,t,r,o,i,s,a){let d=new Map;for(let l=t;l<=r;l++){let u=e[l];if(i.begin(u.seq),!o.has(u.seq)){for(let f of u.primitives)i.apply(f);continue}let p=(f,g)=>a.writers?.writerAt(f,g,u.seq+1),c=u.primitives.map(f=>mr(f,i,s,p));d.set(u.seq,{op:u,primitives:c.flatMap(f=>f.primitives),faithful:c.every(f=>f.faithful)})}return n.map(l=>d.get(l.seq))}function Gm(n,e,t,r){let o=new _n(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>mr(i,o,t,()=>r).primitives)}var ys="A change you cannot see",bs={kind:"system",id:"withheld",name:"Someone"};function Be(n){return n.withheld===!0}var Rn=$e,xs=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&N(r,e));function vs(n){if(typeof n!="function")return n;let e=n,t=r=>e(r.id)&&!xs(r,e)?r:void 0;return{sees:e,shows:e,served:t,servedWith:t,optional:()=>!1,kindOf:()=>{}}}function N(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(N(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||N(n[t],e)))return!0;return!1}function ws(n,e){let t=r=>!e(r);return n.primitives.some(r=>Rn(r).some(t))||[...n.writes,...n.reads].some(t)||n.mutation!==null&&N(n.mutation.args,e)}function Rc(n,e){if(Rn(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 xs(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!N(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!N(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=ee;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!N(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return N(n.edge,e.sees)?void 0:n}}function yr(n,e,t){let r=vs(e),o=i=>r.shows(i)&&ks(r,i);return{id:n.id,seq:n.seq,batch:n.batch,author:bs,intent:ys,mutation:null,primitives:t??n.primitives.flatMap(i=>{let s=Rc(i,r);return s?[s]:[]}),inverse:[],reads:n.reads.filter(o),writes:n.writes.filter(o),at:n.at,...n.undoes!==void 0?{undoes:n.undoes}:{},withheld:!0}}function Ue(n,e){let t=vs(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=>!N(i,r.sees),sees:r.sees,names:i=>N(i,r.sees)};return gs(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?ms(i,r,s):void 0)??yr(i,r,s))}return n.map(o=>(!o.withheld&&!ws(o,r.shows)?ms(o,r):void 0)??yr(o,r))}function ms(n,e,t){if(t&&t.length<n.primitives.length){if(!t.length)return;n={...n,primitives:t,inverse:n.inverse.filter(c=>Rn(c).every(e.shows))}}let r=c=>e.sees(c)&&ks(e,c),o=n.reads.filter(r),i=new Set(n.primitives.flatMap(Rn)),s=n.writes.filter(c=>r(c)||e.sees(c)&&i.has(c)),a=o.length===n.reads.length&&s.length===n.writes.length?n:{...n,reads:o,writes:s},d=e.actor!==void 0&&I(n.author).id===e.actor;if(!d&&n.described?.some(c=>!e.sees(c)))return;if(!N(n,e.sees))return a;let l=new Set,u=c=>{if(typeof c=="string")l.add(c);else if(Array.isArray(c))for(let f of c)u(f);else if(c!==null&&typeof c=="object")for(let[f,g]of Object.entries(c))l.add(f),u(g)};t&&u(t);let p=c=>e.sees(c)||l.has(c);if(!N(a.inverse,p))return d&&n.mutation&&u(n.mutation.args),N({...a,primitives:[],inverse:[]},d?p:e.sees)?void 0:a}function ks(n,e){return n.timeline===void 0||n.kindOf(e)!==void 0}var _e=class extends E{constructor(t){super(t.message);this.check=t;this.name="UndoBlockedError"}get blockedBy(){return this.check.blockedBy}};function An(n,e){let t=new Set(e),r=n.undoneIds(),o=n.all().filter(f=>t.has(f.batch)&&!r.has(f.id)),i=[...n.epochs()].reverse().find(f=>f.horizon);if(i){let f=new Set(n.all().map(h=>h.batch)),g=e.filter(h=>!f.has(h));if(g.length>0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:`Cannot undo ${g.map(h=>`batch ${h}`).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(Be))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(Be)?"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(f=>f.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=new Set;for(let f of o)for(let g of f.writes)s.add(g);let a=Math.min(...o.map(f=>f.seq)),d=n.epochs().find(f=>f.change!==void 0&&f.seq>a);if(d){let f=o.find(g=>g.seq<d.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${f.intent}": ${f.intent===d.change?"it changed the declaration":`it was done before the declaration changed (${d.change})`}, and undo does not reach back across that change.`}}let l=new Map(n.all().map(f=>[f.id,f.seq])),u=[];for(let f of n.all()){if(f.seq<=a||t.has(f.batch)||r.has(f.id)||f.undoes!==void 0&&(l.get(f.undoes)??-1)>a)continue;let g=f.reads.filter(h=>s.has(h));g.length>0&&u.push({op:f,overlap:g})}if(u.length===0)return{ok:!0,ops:o};let p=u.filter(f=>!Be(f.op)).map(f=>`"${f.op.intent}" (op ${f.op.id}, read ${f.overlap.join(", ")})`).join("; ");if(u.some(f=>Be(f.op)))return{ok:!1,ops:o,blockedBy:u,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 c=[...new Set(u.map(f=>f.op.batch))];return{ok:!1,ops:o,blockedBy:u,includeBatches:c,message:`Cannot undo on its own \u2014 a later operation depends on it: ${p}. Include ${c.map(f=>`batch ${f}`).join(", ")} to undo them together.`}}function Ss(n){return[...n].sort((e,t)=>t.seq-e.seq).flatMap(e=>e.inverse)}var Ke=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};function Ac(n){let e=n instanceof Error?n.message:String(n);if(n instanceof Ke){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof L?{reason:"missing",sentence:e}:n instanceof ne?{reason:n.reason,sentence:n.sentence}:n instanceof _e?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}var Ve=class extends E{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 Oc=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 })`,We=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?Oc(e):`Op "${e.id}" has seq ${e.seq} but the log is ${this.length} long`);this.ops.push(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}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 Re(this.ops)}opsInBatch(e){return this.ops.filter(t=>t.batch===e)}batches(){return br(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=G.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)))Pc(i,a);return i}toJSON(){return[...this.ops]}};function Pc(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 Re(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 br(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 xr(n){return n?.automated===!0&&n.kind!=="human"&&n.kind!=="rule"}var _s=n=>n?.[wn]===!0,Ec=(n,e)=>_s(("graph"in n?n.graph:n).getNode(e));function $s(n,e,t){let r=n.tryDefinition(e);return t===void 0?r?.tidying:r?.edges?.[t]?.tidying}var Rs=n=>JSON.stringify(n.map(e=>[e.name,e.args]),(e,t)=>t&&typeof t=="object"&&!Array.isArray(t)?Object.fromEntries(Object.entries(t).sort()):t);function As(n,e){let t=zc(n);return[e,...e.map(r=>[r])].map(r=>t.get(Rs(r))).find(Boolean)}function zc(n){let e=Re(n),t=new Map(n.map(o=>[o.id,o])),r=new Map;for(let o of n){let i=o.undoes!==void 0&&!e.has(o.id)&&!o.withheld?t.get(o.undoes):void 0,s=i?.suggests??(i?.mutation&&(i.lineage||o.undoneLineage)?[i.mutation]:[]);if(s.length>0)for(let a of[s,...s.map(d=>[d])])r.set(Rs(a),o)}return r}function Os(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,l=(d?[d.from,d.to]:["id"in a?a.id:a.node.id]).map(u=>e.getNode(u)??("node"in a?a.node:void 0));for(let u of l){if(!u)continue;if(_s(u))return s(`change \u201C${D(n.tryDefinition(u.kind),u)}\u201D`,"a person said to leave it alone");if(!i)continue;let p=$s(n,u.kind);if(p==="never")return s(`change ${J(n,u.kind)} on its own`,"the app says they are never tidied");if(d&&p==="no-links")return s(`link or unlink ${J(n,u.kind)} on its own`,"the app says they are never linked automatically")}if(d&&i&&l[0]&&$s(n,l[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")}}var ot={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},Mc={plots:0,stage:1,tag:2,ties:2,lines:3,tieLabels:4,occupants:6,seatMarks:7,zoom:8,card:10,opened:11},Nc={under:0,raised:1,over:2},vr=n=>`--graview-layer-${n}`,Ic=n=>`var(${vr(n)}, ${ot[n]})`;function jc(){return Object.keys(ot).map(n=>` ${vr(n)}: ${ot[n]};`).join(`
4
- `)}var Es=(n,e)=>`${n}\0${e}`,Ps=new WeakMap;function Tc(n){let e=new Map;return{base:n,end:n,read:[],fields:e,written:[],seqOf:new Map,writers:{writerAt:(r,o,i)=>{let s=e.get(Es(r,o));if(!s)return;let a=0,d=s.length;for(;a<d;){let l=a+d>>1;s[l].seq<i?a=l+1:d=l}return a===0?void 0:s[a-1].by}}}}function Dc(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=>!Le(n.after[e]))]}function Fc(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=Dc(s);if(!a)continue;let[d,l]=a;for(let u of l){let p=e.undoes===void 0?r:o!==void 0?n.writers.writerAt(d,u,o):void 0,c=Es(d,u),f=n.fields.get(c);f||n.fields.set(c,f=[]),f.push({seq:t,by:p}),i.push(c)}}n.written.push({seq:t,keys:i}),n.seqOf.set(e.id,t),n.read.push(e),n.end++}function Zc(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 it(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=Ps.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&&Zc(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||Ps.set(n,o=Tc(r));for(let i=o.end;i<t;i++)Fc(o,e[i-r]);return o.writers}var qe={served:new WeakSet},On=n=>n.fields!==void 0||(n.hide?.length??0)>0,xe=n=>qe.on===!0||qe.served.has(n);var wr=new WeakMap;function Lc(n,e){let t=new Map,r=new Map(Object.entries(e??{}));return{base:n,end:n,read:[],kinds:t,creators:r,entries:[],records:{kindOf:o=>t.get(o),creatorOf:o=>r.get(o)}}}function Cc(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 Gc(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 ce(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=wr.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&&Gc(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||wr.set(n,o=Lc(r,r>0?Bc(n,r)?.creators:void 0));for(let i=o.end;i<t;i++)Cc(o,e[i-r]);return o.records}function Bc(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function zs(n,e){ce(n);let t=wr.get(n),r=new Set;for(let i=t.entries.length-1;i>=0&&t.entries[i].seq>=e;i--)t.entries[i].creator&&r.add(t.entries[i].id);let o={};for(let[i,s]of t.creators)r.has(i)||(o[i]=s);return o}function He(n,e,t,r,o,i=qe.on===!0){if(!n?.sees?.length||B(e))return!0;let s=n.sees.filter(a=>a.kinds.includes(t.kind)&&(i||!On(a)));return s.length===0?!1:(e=I(e),s.some(a=>{if(!ye(a,e))return!1;if(!a.own&&!a.via)return!0;let d=e.id;if(d===void 0)return!1;let l=u=>u.id===d;return a.via?r.out(t.id,a.via).some(l)||r.in(t.id,a.via).some(l):t.id===d||r.out(t.id).some(l)||r.in(t.id).some(l)||o?.creatorOf(t.id)===d}))}var Sr=new Set;function st(n,e){return B(e)?Sr:n.modules?.disabledKinds??Sr}function Je(n,e){return B(e)?!1:(n.policy?.sees?.length??0)>0||st(n,e).size>0}function js(n,e){if(!Je(n,e))return()=>!0;let t=n.modules?.disabledKinds??Sr,r=n.policy?.sees??[],o=I(e),i=xe(n),s=d=>!t.has(d)&&(r.length===0||r.some(l=>l.kinds.includes(d)&&ye(l,o)&&!l.own&&!l.via&&(i||!On(l)))),a=n.schema.kinds.every(s);return d=>a||d!==void 0&&s(d)}function Pn(n,e){return t=>{let r=st(n,e);if(!n.policy?.sees?.length&&r.size===0)return!0;let o=ce(n.log),i=n.graph.getNode(t);if(i)return!r.has(i.kind)&&He(n.policy,e,i,n.graph,o,xe(n));let s=o.kindOf(t);return s===void 0?!0:!r.has(s)&&He(n.policy,e,{id:t,kind:s},{out:()=>[],in:()=>[]},o,xe(n))}}var Uc={out:()=>[],in:()=>[]};function Kc(n,e,t=new Map,r){let o=st(n,e);if(!n.policy?.sees?.length&&o.size===0)return()=>!0;let i=ce(n.log);return s=>{let a=t.get(s);if(a!==void 0)return a;let d,l=n.graph.getNode(s);if(l)d=!o.has(l.kind)&&He(n.policy,e,l,n.graph,i,xe(n));else{let u=i.kindOf(s);if(u===void 0)return r?.add(s),!0;d=!o.has(u)&&He(n.policy,e,{id:s,kind:u},Uc,i,xe(n))}return t.set(s,d),d}}function Vc(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 _r(n,e){return Ts(n,e).lens}var $r=()=>({judged:new Map,shown:new Map});function Ts(n,e){let t=Vc(n.schema),r=B(e)?void 0:I(e).id,o=()=>n.log.length??n.log.all().length,i=new WeakMap,s=n.graph,a=(u,p,c,f,g)=>{let h=(v,$)=>{if(!u(v.id))return;let _;for(let H in v)if(!(!Object.hasOwn(v,H)||H==="id"||H==="kind"||!N(v[H],u))&&!(r!==void 0&&$(H)===r)){if(!t(v.kind,H))return;(_??=[]).push(H)}if(!_)return v;let z=_.join("\0"),j=i.get(v);if(j?.without===z)return j.node;let q=Object.fromEntries(Object.entries(v).filter(([H])=>!_.includes(H)));return i.set(v,{without:z,node:q}),q},x=v=>{let $=c();return h(v,_=>p().writerAt(v.id,_,$))},b=new WeakMap,k=g?v=>{let $=b.get(v);return $||b.set(v,$={node:x(v)}),$.node}:x,R=v=>{if(!u(v))return!1;let $=s.getNode(v);return $===void 0||k($)!==void 0},m=g?.shown??new Map,w=g?v=>{let $=m.get(v);return $===void 0&&m.set(v,$=R(v)),$}:R,y=s.outEdges&&s.inEdges?{present:{getNode:v=>s.getNode(v),outEdges:v=>s.outEdges(v),inEdges:v=>s.inEdges(v)},log:n.log,get writers(){return p()}}:void 0,S={sees:u,shows:w,served:k,servedWith:h,optional:t,kindOf:f,...r!==void 0?{actor:r}:{},...y?{timeline:y}:{},hides:()=>Je(n,e),pin:g?()=>S:()=>d($r())};return qe.lens?.(S,n,e)??S};function d(u){let p,c=o(),f=ce(n.log);return a(Kc(n,e,u.judged,u.unnamed),()=>p??=it(n.log),()=>c,g=>s.getNode(g)?.kind??f.kindOf(g),u)}return{lens:a(Pn(n,e),()=>it(n.log),o,u=>s.getNode(u)?.kind??ce(n.log).kindOf(u)),pinWith:d}}var Ms=new WeakMap,Ns=new WeakMap,Wc=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"?e.add(r.id):(e.add(r.edge.from),e.add(r.edge.to));return e};function qc(n,e){if(!Je(n,e))return n.log.all();let t=n.log.all(),r=n.log.length??t.length,o=r-t.length,i=[...st(n,e)].sort().join("\0"),s=Ds(e),a=Ms.get(n.log);a||Ms.set(n.log,a=new Map);let d=a.get(s),{pinWith:l}=Ts(n,e),u=Ns.get(n.log);u||Ns.set(n.log,u=new Set);let p=d!==void 0&&d.horizon===o&&d.off===i&&d.length<=r&&(d.length===o||t[d.length-1-o]===d.last);if(d&&p){if(d.length===r)return d.ops;let g=t.slice(d.length-o),h=l($r()),x=!0,b=Wc(g);for(let k of b){let R=d.judgments.judged.get(k),m=d.judgments.shown.get(k);if(R!==void 0&&h.sees(k)!==R||m!==void 0&&h.shows(k)!==m){x=!1;break}}if(x){for(let k of b)if(u.has(k)){x=!1;break}}if(x){let k=[...d.ops,...Ue(g,l(d.judgments))],R={horizon:o,off:i,length:r,last:t.at(-1),ops:k,judgments:d.judgments};return a.set(s,R),k}}let c={...$r(),unnamed:u},f=Ue(t,l(c));return a.set(s,{horizon:o,off:i,length:r,last:t.at(-1),ops:f,judgments:c}),f}function Hc(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!N(t,n.sees)}function Rr(n,e){return{all:()=>n,undoneIds:()=>Re(n),epochs:e}}var Is=new WeakMap;function Ds(n){let e=B(n)?n:I(n);return`${n.kind}|${e.id??""}|${(e.roles??[]).join(",")}|${n.onBehalfOf?"for":""}`}var kr=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t},Jc=Symbol.for("@graview/core:seat");function En(n,e){if(!Je(n,e))return n;let t=Ds(e),r=Is.get(n);r||Is.set(n,r=new Map);let o=r.get(t);if(o)return o;let i=n.graph,s=_r(n,e),a=m=>{let w=_=>_===void 0?void 0:m.served(_),y=_=>w(_)!==void 0,S=_=>y(i.getNode(_));return{served:w,seenNode:y,seenId:S,seenEdge:_=>S(_.from)&&S(_.to)&&!N(_,m.sees),servedAll:_=>_.flatMap(z=>w(z)??[])}},{served:d,seenId:l}=a(s),u=()=>a(s.pin?.()??s),p=(m,w)=>{let y=it(n.log),S=s.pin?.()??s,v=m.nodes.flatMap(_=>S.servedWith(_,z=>y.writerAt(_.id,z,w))??[]),$=new Set(v.map(_=>_.id));return{nodes:v,edges:m.edges.filter(_=>$.has(_.from)&&$.has(_.to)&&!N(_,S.sees))}},c=m=>{let w=p(m.base,m.seq);if(!m.creators)return{...m,base:w};let y=new Set(w.nodes.map(v=>v.id)),S=Object.fromEntries(Object.entries(m.creators).filter(([v,$])=>y.has(v)&&!N($,s.sees)));return{...m,base:w,creators:S}},f=m=>m&&c(m),g=()=>qc(n,e),h=()=>Rr(g(),()=>n.log.epochs()),x=new Proxy(i,{get(m,w){switch(w){case"getNode":return y=>d(m.getNode(y));case"has":return l;case"allNodes":case"nodesOfKind":return(...y)=>u().servedAll(m[w](...y));case"count":return(...y)=>u().servedAll(m.nodesOfKind(...y)).length;case"allEdges":case"edgesOfKind":case"outEdges":case"inEdges":return(...y)=>m[w](...y).filter(u().seenEdge);case"out":case"in":case"neighbors":return(y,...S)=>{let v=u();return v.seenId(y)?v.servedAll(m[w](y,...S)):[]};case"snapshot":return()=>{let y=m.snapshot(),S=u();return{...y,nodes:S.servedAll(y.nodes),edges:y.edges.filter(S.seenEdge)}};case"size":{let y=u();return{nodes:y.servedAll(m.allNodes({archived:"all"})).length,edges:m.allEdges({archived:"all"}).filter(y.seenEdge).length}}default:return kr(m,w)}}}),b=()=>{let m=g();return br(m,Re(m))},k=new Proxy(n.log,{get(m,w){switch(w){case"all":case"toJSON":return()=>[...g()];case"epochs":return()=>m.epochs().map(c);case"lastEpoch":return()=>f(m.lastEpoch());case"live":return()=>{let y=g(),S=Re(y);return y.filter(v=>!S.has(v.id))};case"get":return y=>g().find(S=>S.id===y);case"opsInBatch":return y=>g().filter(S=>S.batch===y);case"batches":return b;default:return kr(m,w)}}}),R=new Proxy(n,{get(m,w){switch(w){case Jc:return{store:m,principal:e};case"graph":return x;case"log":return k;case"snapshot":return x.snapshot;case"batches":return b;case"canUndo":return y=>An(h(),typeof y=="string"?[y]:y);case"violations":return y=>m.violations(y,x).filter(S=>Hc(s,v=>i.has(v),S));case"findings":return()=>m.findings().filter(y=>(y.id.includes("->")?y.id.split("->").map((v,$)=>$===0?v.slice(v.indexOf(":")+1):v):[y.id]).every(v=>!i.has(v)||l(v))&&!N(y,s.sees));case"wouldChange":return y=>m.wouldChange(y,e);case"preview":return(y,S,v)=>m.preview(y,S,{author:e,...v});case"seenBy":return y=>En(m,y);case"seenFor":return e;case"checkpoint":return(...y)=>f(m.checkpoint(...y));default:return kr(m,w)}}});return r.set(t,R),R}var Ar=new Set;function Or(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:Ar,disabledMutations:Ar,disabledInvariants:Ar,administered:Fs(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 l of d.kinds??[])o.add(l);for(let l of d.mutations??[])i.add(l);for(let l of d.invariants??[])s.add(l)}for(let a of t){let d=n[a];for(let l of d?.kinds??[])o.delete(l);for(let l of d?.mutations??[])i.delete(l);for(let l of d?.invariants??[])s.delete(l)}return{enabled:t,disabledKinds:o,disabledMutations:i,disabledInvariants:s,administered:Fs(n,t)}}function Fs(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 Zs(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var at=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=Zs(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=Pr(a.sorted,r);d<a.sorted.length&&a.sorted[d].startsWith(r);d+=1){let l=[...a.ids.get(a.sorted[d])??[]];s.push(...l),a.sorted[d]===r&&i.push(...l)}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=D(this.graph.schema.tryDefinition(e.kind),e),r=Zs(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(Pr(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=Pr(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function Pr(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 Yc(n,e){return e.includes("*")?"record":e.map(t=>Y(n.tryDefinition(t),t)).join(" or ")}function Ls(n,e,t,r){let o=Yc(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}.`}}var Gs=Symbol.for("@graview/core:node-ref"),Cs=n=>typeof n=="object"&&n!==null?n[Gs]:void 0;function zn(n="*"){return Xc(F().check(hn(1)),n)}function Xc(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,Gs,{value:t,enumerable:!0,configurable:!0})};return r(n),r(M(n)),n}function Er(n){if(typeof n!="object"||n===null)return;let e=Cs(n);if(e)return e;let t=M(n),r=Cs(t);if(r)return r;let o=t?.innerType;return o?Er(o):void 0}function Mn(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=Er(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}function zr(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":zr(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${zr(e[r])}`).join(",")}}`}var Bs=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function Qc(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(Bs),t=n.edges.map(r=>({key:O(r),value:{kind:r.kind,from:r.from,to:r.to}})).sort(Bs);return zr({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function Ye(n){return`sha256:${Ks(Qc(n))}`}function Us(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=Ye(t),a=G.from(n,i,{validate:o});for(let[h,x]of e.entries())try{a.applyPrimitives(x.primitives)}catch(b){let k=e[h-1];return{ok:!1,expected:Ye(a.snapshot()),actual:s,...k?{divergedAfter:k.id}:{},reason:`The log does not fold: op "${x.id}" (${x.intent}) could not be applied. ${b instanceof Error?b.message:String(b)}`}}let d=Ye(a.snapshot());if(d===s)return{ok:!0,hash:s};let l=h=>{let x=G.from(n,i,{validate:o});for(let b=0;b<=h;b++)x.applyPrimitives(e[b].primitives);return Ye(x.snapshot())},u=h=>{try{let x=G.from(n,t,{validate:o});for(let b=e.length-1;b>h;b--)x.applyPrimitives(e[b].inverse);return Ye(x.snapshot())}catch{return}},p=h=>{let x=u(h);return x!==void 0&&x!==l(h)},c=-1,f=e.length-1;for(;c<f;){let h=Math.floor((c+f)/2);p(h)?f=h:c=h+1}let g=f>=0?e[f]: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 eu=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]),nu=new TextEncoder,tu=new Uint32Array(64),ru=new Uint32Array(8),dt=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function Ks(n){let e=nu.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=ru;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=tu;for(let d=0;d<r.length;d+=64){for(let b=0;b<16;b++)s[b]=o.getUint32(d+b*4);for(let b=16;b<64;b++){let k=s[b-15],R=s[b-2],m=(k>>>7|k<<25)^(k>>>18|k<<14)^k>>>3,w=(R>>>17|R<<15)^(R>>>19|R<<13)^R>>>10;s[b]=s[b-16]+m+s[b-7]+w>>>0}let l=i[0],u=i[1],p=i[2],c=i[3],f=i[4],g=i[5],h=i[6],x=i[7];for(let b=0;b<64;b++){let k=(f>>>6|f<<26)^(f>>>11|f<<21)^(f>>>25|f<<7),R=f&g^~f&h,m=x+k+R+eu[b]+s[b]>>>0,w=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),y=l&u^l&p^u&p,S=w+y>>>0;x=h,h=g,g=f,f=c+m>>>0,c=p,p=u,u=l,l=m+S>>>0}i[0]=i[0]+l>>>0,i[1]=i[1]+u>>>0,i[2]=i[2]+p>>>0,i[3]=i[3]+c>>>0,i[4]=i[4]+f>>>0,i[5]=i[5]+g>>>0,i[6]=i[6]+h>>>0,i[7]=i[7]+x>>>0}let a="";for(let d=0;d<8;d++){let l=i[d];a+=dt[l>>>24]+dt[l>>>16&255]+dt[l>>>8&255]+dt[l&255]}return a}var Nn=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 ou(n,e){return{...e,name:n}}function Mr(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function Hs(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 Mr(n)?[...r,"id"]:r}var Vs=(n,e)=>`does not take ${n.map(t=>`"${t}"`).join(", ")}; it takes ${e.length>0?e.map(t=>`"${t}"`).join(", "):"nothing"}`;function iu(n){if(typeof n!="object"||n===null)return;let e=n.id;if(e!==void 0){if(typeof e!="string"||e.trim().length===0)throw new E("An id must be a non-empty string",`Got ${JSON.stringify(e)}.`);return e}}function su(n){let{id:e,...t}=n;return t}function Ws(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}function Js(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 au(n,e){if(e.limited&&e.me===void 0)return qs(n,e.held);let t=e.limited?`${n}.${Js(e.me)}`:n,r=t;for(let o=2;e.seen(r);o++)r=`${t}-${o}`;return e.held(r)?qs(t,e.held):r}function qs(n,e){let t;do t=`${n}-${Math.floor(Math.random()*36**6).toString(36).padStart(6,"0")}`;while(e(t));return t}function Xe(n,e,t,r={}){let o=Mr(e)?iu(t):void 0,i=o===void 0?t:su(t),s=Hs(e);if(s&&typeof i=="object"&&i!==null&&!Array.isArray(i)){let m=Object.keys(i).filter(w=>!s.includes(w)&&i[w]!==void 0);if(m.length>0)throw new Ve(e.name,[{path:[],message:Vs(m,s)}])}let a=e.input.safeParse(i);if(!a.success){let m=Object.keys(e.input.shape??{});throw new Ve(e.name,a.error.issues.map(w=>w.code==="unrecognized_keys"&&m.length>0?{...w,message:Vs(w.keys,m)}:w))}let d=a.data,l=new Nn(r.seen??n),u=[],p=new Set,c=m=>l.has(m)||n.has(m)||p.has(m),f,g=m=>{let w=new Set([...n.outEdges(m),...n.inEdges(m)]);for(let y of w)l.getNode(y.from),l.getNode(y.to),u.push({op:"remove-edge",edge:y});return w},h={graph:l,schema:n.schema,me:r.me,emit(m){u.push(m)},addNode(m){u.push({op:"add-node",node:m})},removeNode(m){let w=l.getNode(m)&&n.getNode(m);if(!w)throw new L(m,`Cannot remove missing node "${m}"`);g(m),u.push({op:"remove-node",node:w})},patchNode(m,w){let y=l.getNode(m)&&n.getNode(m);if(!y)throw new L(m,`Cannot patch missing node "${m}"`);let S={},v={};for(let[$,_]of Object.entries(w)){let z=y[$];JSON.stringify(z)===JSON.stringify(_)&&!r.keepUnchanged?.(_,$,y)||(S[$]=z,v[$]=_)}Object.keys(v).length!==0&&u.push({op:"patch-node",id:m,before:S,after:v})},archiveNode:m=>h.patchNode(m,{[Ze]:!0}),unarchiveNode:m=>h.patchNode(m,{[Ze]:void 0}),mergeNode(m,w){let y=l.getNode(w)&&n.getNode(w);if(!y)throw new L(w,`Cannot merge into missing node "${w}"`);if(m===w||Se(y))throw new E(m===w?"Cannot merge a record into itself":"Cannot merge into an archived record");let S=new Set([...n.outEdges(w),...n.inEdges(w)].map(O));for(let v of g(m)){let $={kind:v.kind,from:v.from===m?w:v.from,to:v.to===m?w:v.to};$.from!==$.to&&!S.has(O($))&&(S.add(O($)),u.push({op:"add-edge",edge:$}))}h.archiveNode(m),f=w},addEdge(m){u.push({op:"add-edge",edge:m})},removeEdge(m){u.push({op:"remove-edge",edge:m})},setSingleSource(m,w,y){n.inEdges(w,m).some(S=>S.from===y)||u.push({op:"add-edge",edge:{kind:m,from:y,to:w}});for(let S of n.inEdges(w,m))l.getNode(S.from),S.from!==y&&u.push({op:"remove-edge",edge:S})},freshId(m,w){if(o!==void 0&&!p.has(o)){if(r.seesInFull&&!r.seesInFull())throw new E(`"${e.name}" makes its own id here`,"Leave id out: the answer says the id it made.");if(c(o))throw new E(`Id "${o}" is already taken`,`"${e.name}" was asked to make a node with that id, and the graph has one. Pick another, or leave id out and let the act mint one.`);return p.add(o),o}let y=w?`${w}:${Ws(m)}`:Ws(m),v=au(y,{seen:$=>(r.seen?r.seen.has($):n.has($))||p.has($),held:c,limited:r.seesInFull!==void 0&&!r.seesInFull(w),me:r.me});return p.add(v),v}};e.apply(h,d);let x=r.check?.(u,e),b=new Set(u.flatMap($e)),k=new Nn(r.seen??n),R=e.describe?.(d,k)??`${e.name}(${Object.entries(d).map(([m,w])=>`${m}=${JSON.stringify(w)}`).join(", ")})`;return{primitives:u,reads:[...new Set([...l.reads(),...k.reads()])],...e.describe?{described:[...k.reads(),...x??[]]}:{},writes:[...b],intent:R,...f!==void 0?{mergedInto:f}:{}}}var Ys=Symbol.for("@graview/core:amount"),Cy=(n,e)=>(Object.defineProperty(M(n),Ys,{value:e,enumerable:!0}),n);function Nr(n,e=!0){let t=M(n);return t?.[Ys]??(e&&t?.innerType?Nr(t.innerType):void 0)}function Xs(n,e={}){let t=Number.isInteger(n),r={maximumFractionDigits:t?0:2,minimumFractionDigits:t?0:2};try{return re(n,e.locale,e.currency?{style:"currency",currency:e.currency,...r}:r)}catch{return re(n,e.locale,r)}}function Qs(n,{format:e,unit:t,currency:r,locale:o}){let i=/^[A-Z]{3}$/.test(t??"");return e==="money"||!e&&i?Xs(n,{...o?{locale:o}:{},...(i?t:r)?{currency:i?t:r}:{}}):e==="percent"?re(n,o,{style:"percent",maximumFractionDigits:0}):re(n,o)+(t?` ${t}`:"")}var du=Symbol.for("@graview/core:typed-field");function Ir(n){let e=M(n);return e?e[du]??Ir(e.innerType):void 0}var cu=/^[("'“‘]*(?:(?:[a-z]{1,3}\.){2,}|(?:dr|mr|mrs|ms|mx|st|mt|vs|jr|sr|prof|no|fig|approx)\.)$/i;function uu(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]==="."&&cu.test(r))&&!(t.split(" ").length<3&&e.index+1<n.length))return t}}function ea(n,e=140){let t=n.replace(/^[#>\s]+|\*\*|`|\](\([^)\s]*\))?|\[/gm,"").replace(/\s+/g," ").trim(),r=uu(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 lu(n){let e=n.fields.shape;return Object.keys(e).flatMap(t=>{let r=Xn(e[t])?xn(t):void 0;return r&&e[r]?[r]:[]})}var fu=[["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 na(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=lu(o);if(i.length===0)continue;let s=o.kind,a=o.fields.shape,d=Object.keys(a).filter(u=>!(u in(o.fixed??{}))),l=u=>D(o,u);for(let[u,p,c,f]of fu){let g=`${u}-${s}`;t.has(g)||r.push({name:g,derived:{kind:s,act:u},title:p,description:c,subject:{kinds:[s],arg:"id"},writes:i.map(De),...u==="skip"?{}:{creates:[s]},input:Wn({id:zn([s]),on:F().check(gn(/^\d{4}-\d{2}-\d{2}$/,"a day, like 2026-10-21")),...i.length>1?{field:de(Ui(i))}:{},...u==="skip"?{}:Object.fromEntries(d.map(h=>[h,de(a[h])]))}),describe:(h,x)=>f.replace("{}",l(x.getNode(String(h.id))??{id:h.id}))+fe(String(h.on)),apply(h,x){let b=h.graph.getNode(String(x.id)),k=String(x.field??i[0]),R=b?.[k],m=b?.[De(k)],w=String(x.on);if(typeof R!="string"||!Fe(m))throw new ne(`${l(b??{id:x.id})} does not repeat`,"refused");let y=Te(R,m,{from:w,to:w})[0];if(!y)throw new ne(`${l(b)} does not fall on ${fe(w)}`,"refused");let S=String(b.id),v=Object.fromEntries(d.filter(K=>x[K]!==void 0).map(K=>[K,x[K]])),$=De(k),_=K=>{let ao=Object.fromEntries(Object.entries({...b,...K,...v}).filter(([Dn,St])=>St!=null&&Dn!=="id")),co=h.freshId(l(ao));h.addNode({...ao,id:co,kind:s});for(let Dn of Object.keys(o.edges??{}))for(let St of h.graph.out(S,Dn))h.addEdge({kind:Dn,from:co,to:St.id})};if(u!=="split"){h.patchNode(S,{[$]:{...m,except:[...new Set([...m.except??[],w])].sort()}}),u==="detach"&&_({[k]:y,[$]:null});return}if(Object.keys(v).length===0)throw new ne(`Nothing to change: give ${l(b)} from ${fe(w)} something new`,"invalid");if(w<=R.slice(0,10))return h.patchNode(S,v);let z=new Date(Date.parse(`${w}T00:00:00Z`)-864e5).toISOString().slice(0,10),j=m.count?Te(R,{...m,except:[]},{to:z}).length:0,{count:q,except:H,...io}=m,so=K=>H?.some(K)?{except:H.filter(K)}:{};h.patchNode(S,{[$]:{...io,until:z,...so(K=>K<w),...q?{count:j}:{}}}),_({[k]:y,[$]:{...io,...so(K=>K>=w),...q?{count:q-j}:{},continues:S}})}})}}return r}function ta(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function jr(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function Tr(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(Mn(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function ra(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 jr(n,o)){let s=n.tryDefinition(i);if(s)for(let a of Tr(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 oa(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=ra(n,e).get(t);return ta(r).filter(i=>!o?.has(i))}var ia=n=>`edit-${n}`;function sa(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),jr(n,i).includes(t)&&Tr(i,r).length>0&&o.add(i.name));return[...o]}function aa(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=ia(i);if(t.has(s))continue;let a=oa(n,e,i);if(a.length===0)continue;let d=o.fields.shape,l=Y(o,i),u=a.map(p=>Zn(o,p).toLowerCase());r.push({name:s,derived:{kind:i,act:"edit"},idempotent:!0,title:`Change the ${l}`,description:`Change what was set when this ${l} was made: ${u.join(", ")}.`,subject:{kinds:[i],arg:"id"},writes:a,input:Wn({id:zn([i]),...Object.fromEntries(a.map(p=>[p,de(gu(d[p]))]))}),describe:(p,c)=>pu(o,d,a,p,c),apply(p,c){let f={};for(let g of a){let h=c[g];h!==void 0&&(f[g]=h)}if(Object.keys(f).length===0)throw new ne(`Nothing to change \u2014 give at least one of ${u.join(", ")} a value.`,"invalid");p.patchNode(c.id,f)}})}return r}function pu(n,e,t,r,o){let i=o.getNode(r.id),s=i?D(n,i):"a record",a=t.filter(d=>r[d]!==void 0).map((d,l)=>{let u=r[d],p=xn(d),c=p!==void 0&&p in e,f=Zn(n,c?p:d);return`the ${f===f.toUpperCase()?f:f.charAt(0).toLowerCase()+f.slice(1)}${l===0?` of ${s}`:""} to ${c?u?`repeat ${hu(u)}`:"stop repeating":da(n,e[d],d,u)}`});return a.length===0?`Changed nothing on ${s}`:`Changed ${a.length>1?`${a.slice(0,-1).join(", ")} and ${a.at(-1)}`:a[0]}`}var hu=n=>`every ${(n.interval??1)>1?`${n.interval} ${n.every}s`:n.every}`;function da(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(mn(r).length>0)return mn(r).map(i=>i.name).join(", ");if(yn(e))return Array.isArray(r)&&r.length>1?`${r.length} linked records`:"a linked record";if(Array.isArray(r))return r.map(i=>da(n,e,t,i)).join(", ");if(typeof r=="boolean")return r?"yes":"no";if(typeof r=="number"){let i=Nr(e);return i?Qs(r,i):Ir(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(an.test(r))return fe(r);if(_t.test(r))return Rt(r);for(let i=M(e);i;i=M(i.innerType))if(i.type==="enum")return C(r);return`\u201C${ea(r,60)}\u201D`}function gu(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 ca(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function Dr(n,e,t){if(t.derived)return t.derived.act==="edit"||t.derived.act==="skip"||t.derived.act==="detach"||t.derived.act==="split"?sa(n,e,t.derived.kind):ca(e,t.derived.kind)}function mu(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=(l,u)=>{let p=l.getNode(String(u));return p?D(o,p):String(u)},d=zn([i]);for(let[l,u,p,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 f=`${l}-${i}`,g=l==="leave-alone"||l==="allow-tidying";t.has(f)||!g&&l!=="remove"&&o.archives===!1||g&&o.tidying==="never"||r.push({name:f,derived:{kind:i,act:l},title:p,description:c,subject:{kinds:[i],arg:"id"},...l==="remove"?{destructive:!0}:{},idempotent:!0,input:je(l==="merge"?{id:d,into:d}:{id:d}),describe:(h,x)=>{let b=l==="remove"&&x.getNode(String(h.id)),k=b?new Set(Object.values(b).flatMap(R=>mn(R).map(m=>m.href))).size:0;return`${u} ${a(x,h.id)}${l==="merge"?` into ${a(x,h.into)}`:""}${k?` and its ${k} file${k>1?"s":""}`:""}`},apply:g?(h,x)=>h.patchNode(String(x.id),{[wn]:l==="leave-alone"?!0:void 0}):(h,x)=>h[`${l}Node`](x.id,x.into)})}}return r}function Fr(n,e){return[...aa(n,e),...mu(n,e),...na(n,e)]}var yu=500,ua=120;function In(n){if(n===void 0)return;let{basis:e,confidence:t,model:r,suggestion:o}=n??{},i=typeof e=="string"?e.trim():"",s=typeof r=="string"?r.trim():"";if(!i||i.length>yu||t!==void 0&&!(typeof t=="number"&&t>=0&&t<=1)||r!==void 0&&!(s&&s.length<=ua)||o!==void 0&&!(typeof o=="string"&&o.length>0&&o.length<=ua))throw new E("A lineage is { basis: 1\u2013500 characters, confidence?: 0\u20131, model?: 1\u2013120 characters, suggestion?: an op id }");return{basis:i,...t!==void 0?{confidence:t}:{},...s?{model:s}:{},...typeof o=="string"?{suggestion:o}:{}}}var Qe="keep-link";function la(n){let e=(t,r)=>{let o=t.getNode(r);return o?D(n.tryDefinition(o.kind),o):r};return{name:Qe,title:"Keep this link",input:je({kind:F(),from:F(),to:F()}),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 a=O({kind:o,from:i,to:s});throw new L(a,`Cannot remove missing edge ${a}`)}t.removeEdge({kind:o,from:i,to:s}),t.addEdge({kind:o,from:i,to:s})}}}var fa=(n,e)=>[...n].filter(t=>!t.derived&&t.name!==Qe&&typeof e=="string"&&(t.connects?.includes(e)||t.severs?.includes(e))).map(t=>t.name);var pa=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget"];function ha(n,e){let t=et(n,e);return t&&[...t.fields].filter(Boolean)}function bu(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function ct(n,e){try{return D(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var xu=n=>`${n.kind}:${n.from}->${n.to}`,ut=(n,e)=>n<e?-1:n>e?1:0;function ga(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(f=>f.from===c||f.to===c),a=c=>({action:"drop",primitives:[...s(c.id).filter(f=>i.has(f.from)&&i.has(f.to)).map(f=>({op:"remove-edge",edge:f})),{op:"remove-node",node:c}]}),d=new Set;for(let c of[...i.values()].sort((f,g)=>ut(f.id,g.id))){if(!r.tryDefinition(c.kind)){d.add(c.id),o.push({code:"kind-unknown",id:c.id,message:`${ct(r,c)} is a kind of record this app no longer has`,repair:a(c)});continue}let f=ha(r,c);if(f===void 0)continue;let g=ct(r,c),h=new Map,x=f.length>0;for(let b of f){if(b==="id"||b==="kind"){x=!1;continue}let k=bu(r,c.kind,b),R=k?k.safeParse(void 0):{success:!0,data:void 0},m=r.tryDefinition(c.kind)?.defaults;!R.success&&k&&m&&Object.hasOwn(m,b)&&(R=k.safeParse(m[b])),R.success?R.data===void 0?h.set(b,{action:"clear",value:ee}):h.set(b,{action:"coerce",value:R.data}):x=!1}if(x){let b={...c};for(let[k,R]of h)R.value===ee?delete b[k]:b[k]=R.value;ha(r,b)!==void 0&&(x=!1)}if(f.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 b of f){let k=h.get(b),R=x&&k?{action:k.action,primitives:[{op:"patch-node",id:c.id,before:{[b]:c[b]===void 0?ee:c[b]},after:{[b]:k.value}}]}:a(c);o.push({code:"node-shape",id:c.id,detail:b,message:`${g}: ${C(b)} does not fit what ${c.kind} declares`,repair:R})}}let l=new Set,u=[];for(let c of[...e.edges].sort((f,g)=>ut(O(f),O(g)))){if(l.has(O(c)))continue;l.add(O(c));let f=xu(c),g=i.get(c.from),h=i.get(c.to);if(!g||!h){o.push({code:"edge-dangling",id:f,message:"A link points at a record that is not there",repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}});continue}u.push(c),!(d.has(g.id)||d.has(h.id))&&(r.edgeAllowed(c.kind,g.kind,h.kind)||o.push({code:"edge-disallowed",id:f,message:`${ct(r,g)} \u2192 ${ct(r,h)}: this app does not allow that link between them`,repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}}))}let p=n.invariants??[];if(p.length>0){let c=G.from(r,{nodes:[...i.values()],edges:u},{validate:!1}),f=new Set,g;try{g=Ge(c,p,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 x=h.status==="could-not-judge"?"rule-error":h.status==="over-budget"?"rule-budget":void 0;if(!x)continue;let b=h.subjectId??h.invariant,k=`${x}|${b}|${h.invariant}`;f.has(k)||(f.add(k),o.push({code:x,id:b,detail:h.invariant,message:h.message}))}}return o.sort((c,f)=>pa.indexOf(c.code)-pa.indexOf(f.code)||ut(c.id,f.id)||ut(c.detail??"",f.detail??""))}var lt=()=>globalThis.__graviewWatch;function ma(n){lt()?.store?.(n)}function ft(n){n!==void 0&&lt()?.learn?.({ids:[n],words:[]})}function ya(n,e){lt()?.refused?.({...n,...e===void 0?{}:{author:e}})}function vu(n,e,t){lt()?.seat?.(n,e,t)}function Zr(n){if(typeof n=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(n))return n;let e=new Date(n);if(Number.isNaN(e.getTime()))throw new Error(`Not a day: ${String(n)}`);return e.toISOString().slice(0,10)}function ba(n=Date.now()){let e=new Date(n).getTime(),t=new Date(e);return t.setUTCHours(24,0,0,0),t.getTime()-e}function wu(n,e){let t,r=()=>{t=setTimeout(()=>{let o=n.tick(new Date);r(),e?.(o)},ba()+1e3),t.unref?.()};return r(),()=>clearTimeout(t)}var pt=class extends E{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"}},Lr="preview",T=(n,e)=>e===void 0?{}:{[n]:e},Ae={kind:"human"},xa={kind:"system"},wa={kind:"system",id:"modules",name:"Modules"},va=n=>n.mutation===null&&n.undoes===void 0;function Cr(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var ku=new Set(["remove","archive","unarchive","merge"]),Su={has:()=>!0},ka=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function Sa(n,e,t){let r=ka(n),o=p=>Cr(p,r),i=new Set(e.map(o)),s=new Set(t.map(o)),a=t.filter(p=>!i.has(o(p))),d=e.filter(p=>!s.has(o(p)));if(a.length===0||d.length===0)return{introduces:a,resolves:d};let l=p=>p.subjectId&&Cr(p,Su),u=d.map(l);return{introduces:a.filter(p=>{let c=l(p)?u.indexOf(l(p)):-1;return c<0||(u[c]=null,!1)}),resolves:d.filter((p,c)=>u[c]!==null)}}var en=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"}},ht=class extends E{constructor(t,r){super(`Unknown mutation "${t}"`,`Registered: ${r.join(", ")||"(none)"}`);this.mutation=t;this.name="UnknownMutationError"}};function $u(){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 Gr=class n{schema;graph;log;mutations=new Map;keeper;invariants;invariantOptions;policy;intelligence;may=new Map;by;declaredModules;startingModules;projected;nextId;now;validate;mintBatch;batchTag;counter=0;opCount=0;quiet=0;rehearsing=!1;suggesting=!1;ticked;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.policy=e.policy,this.by=e.principal??Ae,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=$u();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 E(`Duplicate mutation "${i.name}"`);this.mutations.set(i.name,i)}for(let i of e.past?[]:Fr(e.schema,e.mutations??[]))this.mutations.set(i.name,i);!e.past&&!this.mutations.has(Qe)&&(this.keeper=la(e.schema),this.mutations.set(Qe,this.keeper));let r=T("horizon",e.horizon),o={validate:this.validate};if(e.log){this.log=We.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?G.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=We.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=G.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);e.past||(this.countPastTheLog(),ma(this))}stillNow(){if(this.past)throw new pt(this.past)}countPastTheLog(){let e=t=>{let r=/(\d+)$/.exec(t);return r?Number(r[1]):0};for(let t of this.log.all())this.counter=Math.max(this.counter,e(t.batch)),this.opCount=Math.max(this.opCount,e(t.id));this.log.horizon>0&&(this.opCount=Math.max(this.opCount,this.log.length))}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}}let s=r&&o===r.said?r.projection:Or(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=Or(this.declaredModules,e).enabled,i=[...r].filter(u=>!o.has(u)),s=[...o].filter(u=>!r.has(u));if(i.length===0&&s.length===0)return;let a=u=>u.map(p=>{let c=this.declaredModules?.[p]?.kinds??[];return c.length>0?c.map(f=>J(this.schema,f)).join(", "):p}).join(", "),d=[i.length>0?`Turn off ${a(i)}`:"",s.length>0?`turn on ${a(s)}`:""].filter(Boolean).join("; "),l={id:this.nextId(),seq:this.log.length,batch:t.batch??this.mintBatch("batch"),author:wa,intent:cn(d),mutation:null,primitives:[],inverse:[],reads:[],writes:[],at:this.now(),...T("via",t.via),enabledModules:[...o].sort()};return this.log.append(l),this.notify($n,[l]),l}mutation(e){let t=this.mutations.get(e);if(!t)throw new ht(e,[...this.mutations.keys()]);if(this.mutationDisabled(t))throw new E(`Mutation "${e}" belongs to a module this workspace has turned off`,`Enabled modules: ${[...this.modules.enabled].join(", ")||"(none)"}`);return 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()].filter(e=>e!==this.keeper&&!this.mutationDisabled(e))}viaOf(e,t){if(e!==void 0&&e===this.keeper)return fa(this.mutations.values(),t?.args.kind);if(e?.derived)return Dr(this.schema,[...this.mutations.values()],e)}moved(e,t){return Sa(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=Ae){if(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),i=o?.subject&&e.args[o.subject.arg];return be(this.policy,t,e.name,this.subjectKindOf(e,t),this.viaOf(o,e),typeof i=="string"?i:void 0,this.words,()=>{let s=I(t).id,a=this.namedIn(e,!1);try{for(let d of Xe(this.graph,o,e.args,this.sighted(t)).primitives)"edge"in d&&d.edge.from!==s&&d.edge.to!==s&&a.push(d.edge.to)}catch{}return a},o?.derived&&(()=>ce(this.log).creatorOf(i)),o?.derived!==void 0&&ku.has(o.derived.act))}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]]:[],...Mn(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&&ya(e,t),new Ke(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=xa){let r=this.modules.disabledKinds;if(r.size===0||!B(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};if(e===void 0||!Je(this,e))return t;let r=Pn(this,e);return{...t,seen:En(this,e).graph,keepUnchanged:o=>N(o,r),seesInFull:js(this,e)}}missingFor(e,t=Ae){let r=this.mutations.get(e.name),o=new Set(this.namedIn(e));if(!r||o.size===0)return;let i=En(this,t).graph;for(let s of o)if(!i.has(s))return new L(s,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=Ae){let r=this.modules.administered.get(e);return r?(r.mutations??[]).some(o=>{let i=this.mutations.get(o);return!!i&&gr(i).some(s=>be(this.policy,t,o,s,this.viaOf(i)).ok)}):!1}seenBy(e){return En(this,e)}sees(e,t){return this.graph.has(t)&&Pn(this,e)(t)}labels;resolveRef(e,t,r=Ae){let o=(this.policy?.sees?.length??0)>0,i=c=>!o||this.sees(r,c),s=this.graph.getNode(t);if(this.labels??=new at(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 f=c.filter(g=>!this.graph.isArchived(g));return f.length?f:c},l=d(a.exact.filter(i)),u=l.length>0,p=(u?l:d(a.prefix.filter(i))).map(c=>({id:c,kind:this.graph.getNode(c).kind,label:this.labels.labelOf(c)??c})).sort((c,f)=>c.label<f.label?-1:c.label>f.label?1:c.id<f.id?-1:1);return p.length===1?{ok:!0,id:p[0].id,label:p[0].label,by:u?"label":"prefix"}:Ls(this.schema,e,t,p)}kindsKeptFrom(e=Ae){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&&!B(e)){let o=new Set(this.permittedMutations(e).flatMap(s=>s.creates??[])),i=xe(this);for(let s of this.schema.kinds)!r.some(d=>d.kinds.includes(s)&&ye(d,e)&&(!d.own&&!d.via||e.id!==void 0)&&(i||!On(d)))&&!o.has(s)&&t.add(s)}return t}permittedMutations(e=Ae){let t=this.allMutations(),r=hr(this.policy,e,t.filter(i=>!i.derived)),o=t.filter(i=>i.derived!==void 0&&be(this.policy,e,i.name,i.derived.kind,this.viaOf(i),I(e).id).ok);return[...r,...o]}subjectKindOf(e,t=xa){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(!(!B(t)&&!Pn(this,t)(i)))return this.graph.getNode(i)?.kind}today(){return this.pinned()??(this.ticked&&this.ticked.on===dn()?this.ticked.day: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=es(this.graph),o=e??this.invariantOptions.context,i=r&&!(o&&"linked"in o)?{...o,linked:r}:e;return{...this.invariantOptions,...i===void 0?{}:{context:i},...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=Zr(e),o=this.today(),i=this.violations();this.ticked={day:r,on:dn()};let s=this.moved(i,this.violations());if(r!==o&&!this.rehearsing&&this.quiet===0)for(let a of this.listeners)a($n,[]);return{day:r,...o===void 0?{}:{was:o},appeared:s.introduces,cleared:s.resolves}}reread(){if(!(this.rehearsing||this.quiet>0))for(let e of this.listeners)e($n,[])}violations(e,t=this.graph){return Ge(t,this.allInvariants(),this.judging(e))}wouldChange(e,t){try{return Xe(this.graph,this.mutation(e.name),e.args,this.sighted(t)).primitives.length>0}catch{return!0}}preview(e,t,r={}){let o=this.mutation(e.name),i=Xe(this.graph,o,e.args,this.sighted(r.author));return this.previewPrimitives(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;return Object.assign(e,{graph:G.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:We.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${Lr}:${++t}`,mintBatch:()=>Lr,rehearsing:!0}),e}previewPrimitives(e,t){let r=this.violations(t.context),o=G.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=Ge(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){this.stillNow();let o=t.batch??this.mintBatch("batch"),i=t.author??this.by,s=In(t.lineage),a=[],d=[],l=new Set,u=new Set,p=[],c=this.violations(r),f=this.graph.snapshot(),g=this.log.length;if(this.policy)for(let k of e){let R=this.permits(k,i);R.ok||this.refuse(R.refusal,i.id)}for(let k of e){let R=this.refusesAgent(k,i)??this.namesTurnedOff(k,i);R&&this.refuse(R,i.id)}let h=xr(i);h&&this.refuseDeclined(e,i),this.rehearsing||ft(i.id);try{for(let k of e){let R=this.mutation(k.name),m=this.missingFor(k,i);if(m)throw m;let w=Xe(this.graph,R,k.args,this.sighted(i));if(h){let S=Os(this.schema,this.graph,w.primitives,this.authorName(i),{declaration:!this.suggesting});S&&this.refuse({mutation:k.name,message:S,wouldNeed:[]},i.id)}if(w.primitives.length===0)continue;let y={id:this.nextId(),seq:this.log.length,batch:o,author:i,intent:R.describe!==void 0?w.intent:t.intent??w.intent,...T("batchIntent",t.intent),mutation:k,primitives:w.primitives.map(kn),inverse:[...w.primitives].reverse().map(kn).map(Sn),reads:w.reads,writes:w.writes,...R.describe!==void 0&&w.described&&w.described.length>0?{described:w.described}:{},...T("mergedInto",w.mergedInto),at:this.now(),...T("via",t.via),...T("lineage",s)};this.graph.applyPrimitives(y.primitives),this.log.append(y),a.push(y),d.push(...y.primitives);for(let S of y.reads)l.add(S);for(let S of y.writes)u.add(S);p.push(y.intent)}}catch(k){throw this.putBack(f,g),k}let x=me(f,this.graph.snapshot(),d);this.admitted(t,a,d,x,f,g);let b=this.violations(r);return this.notify(x,a),{batch:o,ops:a,diff:x,primitives:d,reads:[...l],writes:[...u],intent:t.intent??p.join("; "),...this.moved(c,b),violationsAfter:b}}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(l){throw this.graph.load(i),new en(d,l)}let a=this.log.length;for(let[d,l]of o.entries()){let u={...l,seq:a+d};this.log.append(u),s.push(u)}return this.notify(me(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 l=a.primitives.map(kn),u={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,...T("batchIntent",a.batchIntent),mutation:a.mutation??null,primitives:l,inverse:a.inverse??[...l].reverse().map(Sn),reads:a.reads??[],writes:a.writes??[...new Set(l.flatMap($e))],at:a.at??this.now(),...T("undoes",a.undoes),...T("via",a.via),...T("lineage",In(a.lineage))};if(r.has(u.id))throw new E(`Op "${u.id}" (${u.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(u.id),u}),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 en(a,d)}for(let a of i)this.log.append(a);for(let a of i)ft(a.author.id);return this.notify(me(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=In(t.lineage),l=e.map(kn),u=[];if(l.length>0){let f={id:this.nextId(),seq:this.log.length,batch:r,author:o,intent:a,mutation:null,primitives:l,inverse:[...l].reverse().map(Sn),reads:[],writes:[...new Set(l.flatMap($e))],at:this.now(),...T("via",t.via),...T("lineage",d)};this.graph.applyPrimitives(f.primitives),this.log.append(f),u.push(f),ft(o.id)}let p=this.violations(),c=me(s,this.graph.snapshot(),l);return this.notify(c,u),{batch:r,ops:u,diff:c,primitives:l,reads:[],writes:u[0]?.writes??[],intent:a,...this.moved(i,p),violationsAfter:p}}findings(){return ga({schema:this.schema,invariants:this.allInvariants()},this.graph.snapshot(),{invariantOptions:this.invariantOptions})}batches(){return this.log.batches()}canUndo(e){return An(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=Ss(r.ops),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(va),...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&&!B(o);if(i){let h=An(Rr(Ue(this.log.all(),_r(this,o)),()=>this.log.epochs()),r);if(!h.ok)throw new _e(h)}let s=this.canUndo(r);if(!s.ok)throw new _e(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=In(t.lineage);if(this.policy)for(let h of s.ops){if(!h.mutation)continue;let x=I(h.author).id,b=R=>JSON.stringify(R).includes(JSON.stringify(x)),k=x!==void 0&&x!==I(o).id&&!B(o)&&!b(h.mutation.args)&&b(h.primitives)?{ok:!1,refusal:{mutation:h.mutation.name,wouldNeed:[],message:"it was done as somebody else."}}:this.permits(h.mutation,o);k.ok||this.refuse({...k.refusal,message:`Not permitted to undo "${h.intent}": ${k.refusal.message}`},o.id,!0)}let l=this.graph.snapshot(),u=this.violations(),p=[],c=this.log.length;for(let h of[...s.ops].sort((x,b)=>b.seq-x.seq)){let x={id:this.nextId(),seq:this.log.length,batch:a,author:o,intent:`Undo: ${h.intent}`,...T("batchIntent",t.intent),mutation:null,primitives:h.inverse,inverse:[...h.inverse].reverse().map(Sn),reads:h.reads,writes:h.writes,at:this.now(),undoes:h.id,...T("via",t.via),...T("lineage",d),...T("undoneLineage",h.lineage)};this.graph.applyPrimitives(x.primitives,{restoring:va(h)}),this.log.append(x),p.push(x)}let f=me(l,this.graph.snapshot(),p.flatMap(h=>[...h.primitives]));this.admitted(t,p,p.flatMap(h=>[...h.primitives]),f,l,c);let g=this.violations();return this.notify(f,p),{batch:a,ops:p,diff:f,primitives:p.flatMap(h=>[...h.primitives]),reads:[...new Set(p.flatMap(h=>[...h.reads]))],writes:[...new Set(p.flatMap(h=>[...h.writes]))],intent:t.intent??p.map(h=>h.intent).join("; "),...this.moved(u,g),violationsAfter:g}}authorName(e){return vn(e,{graph:this.graph,schema:this.schema})}refuseDeclined(e,t){let r=As(this.log.all(),e);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&&ds(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 E(`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 E(`Cannot rebase across an epoch: one begins at seq ${d.seq}, after pending op "${i[0].id}"`);let l=this.graph.snapshot(),u=[],p=[],c=[];this.quiet++;try{for(let x of[...i].reverse())this.graph.applyPrimitives(x.inverse,{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 en(x,k)}let b={...x,seq:this.log.length};this.log.append(b),h.add(x.id),u.push(b)}for(let x of e.pending){let b=i.filter(k=>k.batch===x);if(b.length!==0)try{p.push(...this.replay(x,b))}catch(k){c.push({batch:x,error:k})}}}catch(h){this.log.truncate(s);for(let x of i)this.log.append(x);throw this.graph.load(l),h}finally{this.quiet--}let f=Ce(l,this.graph.snapshot()),g=[...u,...p];return this.notify(f,g),{diff:f,confirmed:u,pending:p,refused:c}}adopt(e){this.stillNow();let t=new Set(e.drop??[]),r=(e.pending??[]).filter(f=>!t.has(f)),o=this.log.all(),i=this.graph.snapshot(),s={ops:[...o],epochs:[...this.log.epochs()],horizon:this.log.horizon},a=new Set(o.map(f=>f.id)),d=new Map(r.map(f=>[f,o.filter(g=>g.batch===f)]));if(e.log.length>0)this.log.replace(e.log,e.epochs,T("horizon",e.horizon));else{let f=e.horizon??0;this.log.replace([],e.epochs??[{seq:f,base:e.snapshot}],{horizon:f})}let l=[],u=[];this.quiet++;try{this.graph.load(e.snapshot),this.projected=void 0,this.countPastTheLog();for(let f of r){let g=d.get(f)??[];if(g.length!==0)try{l.push(...this.replay(f,g))}catch(h){u.push({batch:f,error:h})}}}catch(f){throw this.log.replace(s.ops,s.epochs,{horizon:s.horizon}),this.graph.load(i),this.projected=void 0,f}finally{this.quiet--}let p=this.log.all().filter(f=>!a.has(f.id)&&!l.includes(f)),c=Ce(i,this.graph.snapshot());return this.notify(c,[...p,...l]),{diff:c,adopted:p,pending:l,refused:u}}replay(e,t){let r=t[0],o={author:r.author,batch:e,...T("intent",r.batchIntent),...T("via",r.via),...T("lineage",r.lineage)};if(r.undoes!==void 0){let i=t.map(a=>this.log.get(a.undoes??"")),s=t.find((a,d)=>i[d]===void 0);if(s)throw new E(`What "${s.intent}" took back is no longer in the log`);return this.undoing([...new Set(i.map(a=>a.batch))],o).ops}return t.every(i=>i.mutation!==null)?this.applying(t.map(i=>i.mutation),o).ops:this.append(t.map(({seq:i,...s})=>s))}snapshot(){return this.graph.snapshot()}verify(){let e=this.log.lastEpoch();return Us(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 a=this.log.length-(e.keepOps??1e3),l=Date.parse(e.now??this.now())-(e.keepDays??90)*864e5,u=t.find(c=>Date.parse(c.at)>l),p=u?u.seq:this.log.length;r=Math.min(a,p)}for(r=Math.min(Math.max(r,this.log.horizon),this.log.length);r>this.log.horizon&&r<this.log.length&&t[r-this.log.horizon].batch===t[r-1-this.log.horizon].batch;)r--;if(r<=this.log.horizon)return;let o=this.verify();if(!o.ok)throw new E(`Cannot compact a store that does not verify: ${o.reason}`);let i=this.log.checkpointAt(this.schema,r,{validate:this.validate}),s=zs(this.log,r);return Object.keys(s).length>0?{...i,creators:s}:i}compact(e){return this.stillNow(),this.log.compact(e)}};var $a=["full","summary","glyph"],Ur=(n,e)=>n.as===e.as&&(n.over??[n.kind]).includes(e.kind),_u=n=>n.filter((e,t)=>!n.slice(0,t).some(r=>Ur(r,e)));function ue(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function jn(n,e){return`/${ue(n.tryDefinition(e)?.plural??`${e}s`)}`}function Ru(n,e,t){return`${jn(n,e)}/${encodeURIComponent(t)}`}function Au(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function _a(n,e){return e.some(t=>t.as===n.as&&!Ur(n,t))}function Ou(n,e,t){return _a(n,e)?`${n.title} \xB7 ${(t.tryDefinition(n.kind)?.plural??`${n.kind}s`).toLowerCase()}`:n.title}var Oe=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function Br(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function Pu(n){let e=new Map,t=[],r=[],o,i,s={arrange(a){return a!==void 0&&(o=a),s},arrangement:()=>o,home(a){return a!==void 0&&(i=a),s},homeView:()=>i,register(a,d,l,u){let p={...u?.over?.[1]?{over:u.over}:{},...u?.hidden?{hidden:!0}:{}},c={kind:a,cardinality:d.cardinality,fidelity:d.fidelity,view:l,...u?.title?{title:u.title}:{},...u?.across?{across:u.across}:{},...u?.beside?{beside:!0}:{},...p};if(r.push(c),!u?.beside&&!p.hidden&&e.set(Oe(a,d),c),u?.title){let f=ue(u.title);e.set(Oe(a,d,f),c),d.cardinality==="many"&&!t.some(g=>g.kind===a&&g.as===f)&&t.push({kind:a,title:u.title,as:f,...u.across?{across:u.across}:{},...p})}return s},places:()=>t,forget(a,d){for(let u of $a)e.delete(Oe(a,{cardinality:"many",fidelity:u},d));let l=t.findIndex(u=>u.kind===a&&u.as===d);return l>=0&&t.splice(l,1),s},lookup(a,d){return e.get(Oe(a,d))?.view},resolve(a,d,l){if(l)for(let u of Br(d.fidelity)){let p=e.get(Oe(a,{cardinality:d.cardinality,fidelity:u},l));if(p)return p}for(let u of Br(d.fidelity)){let p=e.get(Oe(a,{cardinality:d.cardinality,fidelity:u}));if(p)return p}if(d.cardinality==="one")for(let u of Br(d.fidelity)){let p=e.get(Oe(a,{cardinality:"many",fidelity:u}));if(p)return p}},registrations:()=>r,all(){return[...e.values()]},kindsWithViews(){return[...new Set([...e.values()].map(a=>a.kind))]}};return s}var Eu=["day","week","month","year","decade"];function Ra(n){let e={};n.q&&n.q.trim().length>0&&(e.query=n.q);let t=cr(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,...Eu.includes(o)?{bucket:o}:{}})}return e}function Kr(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 gt(n,e,t){let r=Kr(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 zu(n,e,t){let r=Kr(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 mt={timeline:{binds:"fields",requiredRoles:["start","end"],options:["columns","extent","tick","minWindow","arranging"]},calendar:{binds:"fields",requiredRoles:["start"],options:["today","range","weekStartsOn","perCell","horizon","arranging"]},coverage:{binds:"entities",requiredRoles:["rows","columns","link"],options:["rowRef","rowGroup","groupOrder","requiredGroups","requiredVia","badge","columnGroup","sort","columnSort"]},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"]}},Oa=Object.keys(mt),Pa=n=>Object.hasOwn(mt,n);var nn=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function Aa(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=M(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=M(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function Mu(n){let e=[],t=[],r=[],o=new Set(n.schema.kinds),i=new Set;for(let d of o)for(let l of Object.keys(n.schema.tryDefinition(d)?.edges??{}))i.add(l);let s=d=>Object.keys(n.schema.tryDefinition(d)?.fields.shape??{}),a=new Map;return(n.lenses??[]).forEach((d,l)=>{let u=`lenses.${l}`,p=typeof d.title=="string"&&d.title.trim().length>0?d.title.trim():void 0,c=(y,S)=>{t.push({index:l,name:d.name,...p?{title:p}:{},why:y}),S&&r.push({severity:"warning",...S})};if(!Pa(d.name)){p?c(`"${d.name}" is not a lens this framework draws`,{code:"lens-not-shipped",path:`${u}.name`,message:`"${p}" names the lens "${d.name}", which the framework does not ship, so nothing draws it.`,fix:`Name one of ${Oa.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(!p)return c("it has no title, so it is bindings the checker holds and no place");let f=mt[d.name],g=nn(d.options)?d.options:{};if(d.options!==void 0&&!nn(d.options))return c("its options are not an object",{code:"lens-options-not-an-object",path:`${u}.options`,message:`"${p}" has options that are not an object.`,fix:'Write them as { "<option>": <value> }, or drop them.'});for(let y of Object.keys(g))f.options.includes(y)||r.push({severity:"warning",code:"lens-option-unknown",path:`${u}.options.${y}`,message:`The ${d.name} lens takes no option "${y}", so "${p}" ignores it.`,fix:f.options.length===0?`The ${d.name} lens takes no options; drop it.`:`Use one of: ${f.options.join(", ")}.`});let h={};for(let y of f.options)g[y]!==void 0&&(h[y]=g[y]);d.arrangedBy&&(h.arrangedBy=Ra(d.arrangedBy));let x=nn(d.bindings)?d.bindings:{},b=[],k,R=(y,S,v)=>c(S,{code:"lens-cannot-draw",path:y,message:`"${p}" cannot draw: ${S}.`,fix:v});if(f.binds==="fields"){let y=Object.keys(x).filter(v=>nn(x[v])),S=y.filter(v=>!o.has(v));if(y.length===0)return R(`${u}.bindings`,"it binds no kind",`Bind a kind's fields: "bindings": { "<kind>": { ${f.requiredRoles.map(v=>`"${v}": "<field>"`).join(", ")} } }.`);if(S.length>0)return;if(h.bindings=x,b=y,d.name==="timeline"){let v=g.columns;if(Array.isArray(v))h.columns=v.map($=>typeof $=="string"?{id:$,label:$}:$);else{let $=y.flatMap(z=>{let j=x[z],q=typeof j.column=="string"?j.column:typeof j.columns=="string"?j.columns:void 0;return q?Aa(n.schema,z,q):[]}),_=[...new Set($)];if(_.length===0)return R(`${u}.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=_.map(z=>({id:z,label:z.toUpperCase()}))}h.extent===void 0&&(h.extent=1440)}if(d.name==="columns"){if(h.sort!==void 0){let v=y.map($=>gt(h.sort,s($),$)).find(Boolean);v&&(r.push({severity:"warning",code:"lens-sort",path:`${u}.options.sort`,message:`"${p}" cannot order its cards: ${v}.`,fix:'Write { "by": "<a field>", "direction": "asc" }, or drop it.'}),delete h.sort)}for(let v of y){let $=x[v].column;if(typeof $!="string"||!s(v).includes($))return;if(Aa(n.schema,v,$).length===0)return R(`${u}.bindings.${v}.column`,`its column field "${$}" is not a choice`,`Bind "column" to a choice field of ${v}, like a status.`)}}if(d.name==="calendar"&&h.today!==void 0&&!(typeof h.today=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(h.today)))return R(`${u}.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 v=h.horizon,$=j=>j===void 0||Number.isInteger(j)&&j>=1&&j<=9999,_=typeof v=="number"?{years:v,title:"Years"}:v;nn(_)&&Number.isInteger(_.years)&&_.years>=1&&_.years<=200&&typeof _.title=="string"&&_.title.trim().length>0&&$(_.from)&&$(_.to)&&Object.keys(_).every(j=>["years","title","from","to"].includes(j))&&!(typeof _.from=="number"&&typeof _.to=="number"&&_.to<_.from)?h.horizon=_:(delete h.horizon,r.push({severity:"warning",code:"lens-horizon",path:`${u}.options.horizon`,message:`"${p}" 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 R(`${u}.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(f.binds==="entities"){let y=$=>{let _=x[$];if(nn(_)){if(typeof _.kind=="string")return _.kind;if(typeof _.edge=="string")return _.edge;if(Array.isArray(_.path))return{path:_.path};if(typeof _.field=="string")return _.field}};for(let $ of f.requiredRoles)if(y($)===void 0)return;let S=d.name==="coverage"?"rows":d.name==="board"?"slots":"regions",v=y(S);if(!o.has(v))return;if(d.name==="coverage"){let $=y("columns");if(!o.has($))return;let _=y("link");if(typeof _=="string"&&!i.has(_))return;Object.assign(h,{rows:v,columns:$,link:_}),$!==v&&(k=$);for(let[z,j]of[["sort",v],["columnSort",$]]){if(h[z]===void 0)continue;let q=gt(h[z],s(j),j);q&&(r.push({severity:"warning",code:"lens-sort",path:`${u}.options.${z}`,message:`"${p}" cannot order its ${z==="sort"?"rows":"columns"}: ${q}.`,fix:`Write { "by": "<a field of ${j}>", "direction": "asc" }, or drop it.`}),delete h[z])}}else if(d.name==="board"){Object.assign(h,{slots:v,x:y("x"),y:y("y"),fill:y("fill")});for(let $ of["x","y"])if(!s(v).includes(h[$]))return}else{Object.assign(h,{regions:v,outline:y("outline")});for(let $ of["markers","at","within","nests","regionKind","markerKind"]){let _=y($);typeof _=="string"&&(h[$]=_)}}b=[v]}else if(d.name==="blocks"){if(!d.on)return R(`${u}.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 R(`${u}.options.blocks`,"it has no blocks to draw",`Say "options": { "blocks": [{ "headline": "\u2026" }, { "list": "all('<kind>')", "as": "card" }] }.`)}else{let y=["user","person","member"].find(S=>o.has(S));if(!d.on&&!y)return R(`${u}.on`,"it does not say which kind it stands on",'Say "on": "<the kind whose records are the people>".');b=y?[y]:[]}if(d.on!==void 0){if(typeof d.on!="string"||!o.has(d.on))return R(`${u}.on`,`it stands on "${String(d.on)}", which is not a kind`,`Use one of: ${[...o].join(", ")}.`);if(b=[d.on],d.name==="coverage"){let y=[h.rows,h.columns].find(S=>S!==d.on);k=typeof y=="string"?y:void 0}}let m=ue(p);if(m.length===0)return R(`${u}.title`,"its title has no letters or digits to make an address of","Give it a title a person would say.");for(let y of b){let S=`${y}|${m}`;if(a.has(S))return c(`another lens on ${y} is already called "${p}"`,{code:"lens-title-taken",path:`${u}.title`,message:`"${p}" is the title of lenses.${a.get(S)} too, on the same kind, so one address would name two pictures.`,fix:"Give each its own title."})}for(let y of b)a.set(`${y}|${m}`,l);let w=d.create;w!==void 0&&typeof w!="boolean"&&r.push({severity:"warning",code:"lens-create",path:`${u}.create`,message:`"${p}" says create ${JSON.stringify(w)}, 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:l,lens:d.name,title:p,as:m,kinds:b,...k?{across:k}:{},options:h,...d.hidden===!0?{hidden:!0}:{},...w===!1?{create:!1}:{}})}),{drawn:e,undrawn:t,findings:r}}var Nu=6;function Iu(n,e,t=[]){let r=n.kinds,o=s=>Object.values(n.tryDefinition(s)?.edges??{}).map(a=>(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 ju(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map(ue));return{kinds:new Set(e.kinds.filter(o=>r.has(ue(o))||r.has(jn(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has(ue(o.title))).map(o=>`${o.kind}|${o.as}`))}}var Ea="overview",Tu=`/places/${Ea}`;function Du(n){let e=n?.scene?.trim();return e||"Scene"}function Fu(n){let e=n?.pages?.trim();return e||"Pages"}function Zu(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 Lu(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=ue(r),i=t.find(d=>d.title===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=>jn(e,d).slice(1)===o);return a?{to:"kind",kind:a}:void 0}function Vr(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function Cu(n,e={}){let t=typeof n=="string"?n:n.address,r=Vr(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function Gu(n,e){let t=Vr(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 za=Symbol.for("@graview/core:app-link"),Bu=n=>(Object.defineProperty(M(n),za,{value:1,enumerable:!0}),n);function Ma(n){let e=M(n);return!!e&&(e[za]===1||Ma(e.innerType))}var vx=()=>Bu(F().check(nr(500),gn(Hn,"another app's address")));var yt=(n,e)=>`${e.kind}\0${e.id??""}\0${n.address}\0${n.kind}\0${n.id}`;function Uu(n,e,t=()=>{}){let r=new Map,o=new Map,i=s=>{let a=yt(s,e),d=r.get(a);return d||(d=Promise.resolve().then(()=>n.resolve(s,e)).then(l=>Ku(l)?l:null,()=>null).then(l=>(r.get(a)===d&&(o.set(a,l),t(s)),l)),r.set(a,d)),d};return{read(s){let a=yt(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(yt(s,e)),forget(s){if(!s){r.clear(),o.clear();return}let a=yt(s,e);r.delete(a),o.delete(a)}}}function Ku(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 Vu=1;var bt=(n,e)=>`${n}\0${e}`;function qr(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]):[]}var Wr=class n{revs=new Map;static of(e){let t=new n;return t.note(e),t}note(e){for(let t of e)for(let r of t.primitives)for(let[o,i]of qr(r)){let s=bt(o,i);(this.revs.get(s)??-1)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(bt(e,t))??-1}baseFor(e,t=new Set){let r=new Set,o=new Map;for(let i of e)for(let s of i.primitives)if(s.op==="add-node"&&r.add(s.node.id),!(s.op!=="patch-node"||r.has(s.id)||t.has(s.id)))for(let a of Object.keys(s.after)){let d=bt(s.id,a);t.has(d)||o.has(d)||o.set(d,{node:s.id,field:a,rev:this.of(s.id,a)})}return[...o.values()]}stale(e){return e.filter(t=>this.of(t.node,t.field)!==t.rev)}};function Wu(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 qr(r))e.add(bt(o,i))}return e}var qu=/^#([0-9a-f]{3,8})$/i,Hu=/(rgba?|hsla?)\(([^)]+)\)/gi;function Ju(n){let e=qu.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 Yu(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,l,u,p]=r;return d===void 0||l===void 0||u===void 0?null:{r:d,g:l,b:u,a:p??1}}let[o,i,s,a]=r;return o===void 0||i===void 0||s===void 0?null:{...Ia(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function Jr(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 Yr(n,e,t){return{...Ia(n,e,t),a:1}}function Ia(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],l=t-r/2;return{r:Math.round((s+l)*255),g:Math.round((a+l)*255),b:Math.round((d+l)*255)}}function tn(n){let e=[];for(let t of n.matchAll(Hu)){let r=Yu(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=Ju(t[0]);r&&e.push(r)}return e}function Xr(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 Hr(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function Na(n){return .2126*Hr(n.r)+.7152*Hr(n.g)+.0722*Hr(n.b)}function rn(n,e){let[t,r]=[Na(n),Na(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}var xt=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,ja={r:0,g:0,b:0,a:1},vt={r:255,g:255,b:255,a:1};function wt(n){let e=tn(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=Jr(e);for(let s of["dark","light"]){let a=n.base[s],d=tn(a.ground)[0]??(s==="dark"?ja:vt),l=Xr(tn(a.panel)[0]??vt,d),u=nl(i,[l,d],s,4.5);u?Math.abs(u.l-i.l)>el&&(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(u.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 p=u??i,c=Yr(p.h,p.s,p.l),f=n.accentInk?.[s]??(rn(vt,c)>=rn(ja,c)?"#ffffff":"#000000"),g=rn(tn(f)[0]??vt,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:xt(c,1),accentDim:xt(c,s==="dark"?.35:.22),accentInk:f,glow:xt(c,s==="dark"?.28:.1),edgeBright:xt(c,Xu(c,l,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let h=tn(t[s].warn)[0];h&&Qu(Jr(h).h,p.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 Xu(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(rn(Xr({...n,a:i},e),e)>=r)return i}return 1}function Qu(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var el=.3;function nl(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(l=>rn(Yr(n.h,n.s,d),l)>=r))return{...n,l:d}}return null}function tl(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 Pe=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),Qr="Montserrat",eo=Object.freeze({display:550,body:450,label:600}),no=Object.freeze({display:600,body:400,label:600}),rl="-0.025em",ol=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var Ta={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:Pe.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},Da={ground:Pe.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:Pe.ink,inkMuted:Pe.muted,inkFaint:"#626b7d",accent:Pe.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},on={dark:Ta,light:Da};var ve=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),Ee=Object.freeze({body:`"${Qr}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function il(n){let e=n?.shape?.radius??ve.radius,t=n?.shape?.density??ve.density;return Object.freeze({radius:e,radiusSmall:Math.max(ve.radiusSmallFloor,Math.round(e*ve.radiusSmall)),pad:Math.round(ve.pad*t),padSmall:Math.round(ve.padSmall*t),gap:Math.round(ve.gap*t)})}function sl(n){let e=n?.typography?.body??Ee.body,t=n?.typography?.display??e,o=e===Ee.body&&t===Ee.body?eo:no,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??Ee.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var Ix=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})})});function Za(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var La="http://www.w3.org/2000/svg",al=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",La],dl=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(" ")),cl=new Set(["title","desc"]),Tn="it embeds a page or media",ul={script:"it has a script in it",foreignobject:"it embeds HTML (foreignObject)",iframe:Tn,embed:Tn,object:Tn,audio:Tn,video:Tn,style:"it has a style sheet in it; a mark is styled by its attributes",a:"it links to something (an <a> element)"},ll={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function fl(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=ll[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function pl(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 hl(n,e,t){let r=fl(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===La?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return al.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 pl(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var Fa=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function Ca(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 f=o.indexOf("-->",4);if(f<0)return"it has a comment that never ends";let g=o.slice(4,f);if(/^-?>/.test(g)||g.includes("--")||g.includes("<!")||g.endsWith("-"))return"it has a comment the page and the picture read differently";r+=f+3;continue}if(/^<!DOCTYPE/i.test(o)){let f=/^<!DOCTYPE\s+svg\b[^<>[\]]*>/i.exec(o);if(!f||e.length>0||t)return"it declares XML entities";r+=f[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],l=ul[d.toLowerCase()];if(l)return l;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(!dl.has(d))return`it has a <${d}> element, which a picture does not need`;let u=e[e.length-1];if(u&&cl.has(u))return`it has an element inside a <${u}>, which the page reads as HTML`;let p=a[0].length;for(let f=Fa.exec(o.slice(p));f;f=Fa.exec(o.slice(p))){let g=hl(d,f[1],f[2]??f[3]??"");if(g)return g;p+=f[0].length}let c=/^\s*(\/?)>/.exec(o.slice(p));if(!c)return/(?:^|[\s/"'])on[a-z]+\s*=/i.test(o.slice(p,p+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+=p+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 Ga(n){if(n){if(!Za(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 Ca(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}var kt;function gl(){if(kt===void 0)try{kt=new RegExp("^\\p{RGI_Emoji}$","v")}catch{kt=null}return kt}function ml(n){return/\p{Extended_Pictographic}|\p{Regional_Indicator}|⃣/u.test(n)}function to(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(ml).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=gl();return r&&!r.test(n)?"it is not one of the standard emoji every emoji set draws":null}function ro(n){return typeof n=="object"&&n!==null&&typeof n.emoji=="string"?n.emoji:void 0}function Ba(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 yl(n){let e=n?.favicon;if(typeof e=="object"&&e!==null){let t=ro(e);return t!==void 0&&to(t)===null?`data:image/svg+xml,${encodeURIComponent(Ba(t))}`:void 0}return Ga(e)}function bl(n){if(n?.logo)return;let e=ro(n?.favicon);return e!==void 0&&to(e)===null?e:void 0}var Ua={"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":Ee.mono},xl=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],Ka=["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 vl=n=>new Set(n.map(e=>e.toLowerCase()));function wl(n){return vl([...xl,...Ka]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function kl(n){return Ua[n]??n}function Cx(n){let e=wt({accent:n,base:on});return e.ok||!e.missing.every(t=>t.startsWith("warn"))?e:wt({accent:n,base:on,warn:{light:on.light.bad,dark:on.dark.bad}})}function Sl(n,e,t){if(t.rows===0)return;let r=J(n,e.rows).toLowerCase(),o=J(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 ${ze(Y(n.tryDefinition(e.columns),e.columns))} yet: ${s}.`}var te={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 $l(n){return n?{connectors:{all:{...te.connectors.all,...n.connectors?.all??{}},byEdge:{...te.connectors.byEdge,...n.connectors?.byEdge??{}}},captions:{...te.captions,...n.captions??{}},grid:{...te.grid,...n.grid??{}},lattice:{...te.lattice,...n.lattice??{}},tags:{...te.tags,...n.tags??{}},emphasis:{...te.emphasis,...n.emphasis??{}},marks:{...te.marks,...n.marks??{}}}:te}function _l(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function Rl(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
- `)}function Al(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,l=new Set;for(let u of r){if(a.includes(u))for(let p of d)l.add(p);if(s.to==="*"||d.includes(u))for(let p of a)l.add(p)}if(l.size===0)return{ok:!1,at:o};r=l}return{ok:!0,reached:r}}function Ol(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function oo(n,e,t=2500){return n.held==="socket"?!0:n.until!==void 0?e<Date.parse(n.until):e-Date.parse(n.at)<t}function Pl(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function El(n,e,t,r=2500,o){let i=new Map;for(let[s,a]of n)oo(a,t,r)&&i.set(s,a);for(let s of e){if(!oo(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 zl(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)}export{Ie as a,Ii as b,ji as c,Fd as d,nr as e,hn as f,gn as g,F as h,Kh as i,Vh as j,Vn as k,Wh as l,qh as m,Hh as n,tr as o,Jh as p,je as q,Wn as r,Yh as s,Xh as t,Qh as u,Ui as v,Ki as w,de as x,qn as y,eg as z,ng as A,M as B,tc as C,an as D,_t as E,Ml as F,dn as G,Va as H,po as I,fe as J,Rt as K,Wa as L,re as M,qa as N,Ha as O,Ja as P,Ya as Q,Xa as R,cn as S,go as T,ed as U,Ot as V,D as W,nd as X,C as Y,td as Z,J as _,rd as $,od as aa,Zn as ba,ze as ca,Y as da,Vi as ea,ir as fa,Wi as ga,mn as ha,Hi as ia,tm as ja,Jn as ka,Ma as la,vx as ma,ic as na,ac as oa,Xi as pa,dc as qa,sm as ra,yn as sa,cc as ta,lc as ua,am as va,dm as wa,fc as xa,es as ya,Uu as za,Yn as Aa,pc as Ba,De as Ca,xn as Da,Xn as Ea,lm as Fa,Fe as Ga,Te as Ha,as as Ia,mc as Ja,vn as Ka,Se as La,gm as Ma,cr as Na,Qn as Oa,yc as Pa,O as Qa,Sn as Ra,E as Sa,G as Ta,vc as Ua,tt as Va,Mm as Wa,wc as Xa,kc as Ya,Vu as Za,I as _a,B as $a,ye as ab,be as bb,Gm as cb,ys as db,Be as eb,N as fb,Ue as gb,ne as hb,Ac as ib,Ve as jb,ou as kb,Mr as lb,Hs as mb,Xe as nb,Cy as ob,Nr as pb,Xs as qb,Qs as rb,Ir as sb,zn as tb,Er as ub,Mn as vb,uu as wb,ea as xb,jr as yb,Tr as zb,ra as Ab,aa as Bb,Re as Cb,Wr as Db,Wu as Eb,Qe as Fb,xr as Gb,_s as Hb,Ec as Ib,tl as Jb,Qr as Kb,rl as Lb,on as Mb,Ee as Nb,il as Ob,sl as Pb,Za as Qb,Ca as Rb,Ga as Sb,yl as Tb,bl as Ub,wl as Vb,kl as Wb,Cx as Xb,zu as Yb,Sl as Zb,$l as _b,_l as $b,Rl as ac,Mc as bc,Nc as cc,Ic as dc,jc as ec,qe as fc,On as gc,ce as hc,it as ic,Je as jc,Pn as kc,_r as lc,En as mc,Al as nc,vu as oc,Ks as pc,wu as qc,Sa as rc,en as sc,Gr as tc,Ur as uc,_u as vc,ue as wc,jn as xc,Ru as yc,Au as zc,_a as Ac,Ou as Bc,Pu as Cc,Ra as Dc,mt as Ec,Oa as Fc,Pa as Gc,Mu as Hc,Nu as Ic,Iu as Jc,ju as Kc,Ea as Lc,Tu as Mc,Du as Nc,Fu as Oc,Zu as Pc,Lu as Qc,Vr as Rc,Cu as Sc,Gu as Tc,Ol as Uc,Pl as Vc,El as Wc,zl as Xc};
@@ -1 +0,0 @@
1
- import{R as s,a as t,ya as o}from"./chunk.GFF2FB2J.js";import{b as i}from"./chunk.AJZBJBMO.js";var m=o(t(()=>import("./chunk.2EXGG6BB.js"))),n=m.part((e,r)=>e.drawFiles(r),{quiet:!0});var d=o(t(()=>import("./chunk.WYTIOLPP.js"))),y=d.part((e,r)=>e.drawLinkedRecord(r),{quiet:!0}),j=d.part((e,r)=>e.drawLinkedPicker(r),{what:"Picking a linked record"});var p=i(s(),1),c=o(t(()=>import("./chunk.3JGGBLRB.js"))),w=c.part((e,r)=>(0,p.jsx)(e.RepeatPicker,{...r}),{quiet:!0}),x=c.part((e,r)=>(0,p.jsx)(e.RepeatEditor,{...r}),{quiet:!0});export{n as a,y as b,j as c,w as d,x as e};
@@ -1 +0,0 @@
1
- import{a as y}from"./chunk.JPHNKWTY.js";import{e as p}from"./chunk.3VL5WECB.js";import{B as f,W as d,vb as m}from"./chunk.6V2RG5JG.js";function x(n){let e=n.indexOf("{"),t=n.indexOf("["),a=t!==-1&&(e===-1||t<e)?t:e;if(a===-1)return;let r=n[a],i=r==="["?"]":"}",o=0,l=!1,s=!1;for(let u=a;u<n.length;u++){let c=n[u];if(l){s?s=!1:c==="\\"?s=!0:c==='"'&&(l=!1);continue}if(c==='"')l=!0;else if(c===r)o+=1;else if(c===i&&(o-=1,o===0))try{return JSON.parse(n.slice(a,u+1))}catch{return}}}function g(n,e){let t;try{t=n.mutation(e.mutation)}catch{return e}let a={...e.args},r=!1;for(let i of y(t.input)){if(i.control!=="node")continue;let o=a[i.name];if(typeof o!="string"||o.length===0||n.graph.getNode(o))continue;let l=o.trim().toLowerCase(),s=[...n.graph.allNodes()].filter(u=>(i.kinds.includes("*")||i.kinds.includes(u.kind))&&d(n.schema.tryDefinition(u.kind),u).trim().toLowerCase()===l);s.length===1&&(a[i.name]=s[0].id,r=!0)}return r?{...e,args:a}:e}function C(n,e,t){let a=t===void 0?null:new Set(t),r=[];for(let i of e){if(typeof i.mutation!="string")continue;let o=!0;try{n.mutation(i.mutation)}catch{o=!1}o?a&&!a.has(i.mutation)&&r.push({proposal:i,why:"not-allowed"}):r.push({proposal:i,why:"unknown"})}return r}function b(n,e,t){let a=t===void 0?null:new Set(t);return e.filter(r=>{if(typeof r.mutation!="string"||a&&!a.has(r.mutation))return!1;try{n.mutation(r.mutation)}catch{return!1}return r.args!==null&&typeof r.args=="object"})}function A(n,e){let t=n.allMutations().find(l=>l.name===e.mutation);if(t?.describe){let l=g(n,e),s=t.input.safeParse?.(l.args);if(s?.success)try{return t.describe(s.data,n.graph)}catch{}}let a=t?.subject?.arg,r=a?e.args[a]:void 0,i=typeof r=="string"?n.graph.getNode(r):void 0,o=t?.title??e.mutation;return i?`${o} \u2014 ${d(n.schema.tryDefinition(i.kind),i)}`:o}function O(n,e){let t=n.allMutations().find(o=>o.name===e.mutation);if(!t)return[];e=g(n,e);let a=t.input.shape??{},r=m(t.input),i=[];for(let o of Object.keys(a)){if(k(a[o]))continue;let l=e.args[o],s=r.find(c=>c.name===o);l!=null&&l!==""&&(!s||typeof l!="string"||n.graph.getNode(l)!==void 0)||i.push({name:o,...s?{kinds:s.kinds}:{},...s?{candidates:s.kinds.includes("*")?n.graph.allNodes().map(c=>c.id):s.kinds.flatMap(c=>n.graph.nodesOfKind(c).map(h=>h.id))}:{},shape:p(t.input,o)})}return i}function k(n){let e=f(n)?.type;return e==="optional"||e==="default"||e==="nullable"}export{x as a,g as b,C as c,b as d,A as e,O as f};