@rizom/brain 0.2.0-alpha.500 → 0.2.0-alpha.501

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 (30) hide show
  1. package/dist/brain.js +43 -43
  2. package/dist/chunks/{app-p2qm2ybg.js → app-jdz6qhv3.js} +2 -2
  3. package/dist/chunks/{blog-post-adapter-qk5qv9ec.js → blog-post-adapter-85kjd47f.js} +2 -2
  4. package/dist/chunks/{index-xdr45fwm.js → index-16ppm6af.js} +2 -2
  5. package/dist/chunks/{index-by6p25dz.js → index-2trrvsbk.js} +2 -2
  6. package/dist/chunks/{index-j7aew0jd.js → index-fx4n58v2.js} +3 -3
  7. package/dist/chunks/{index-ed6wd5za.js → index-sq30a46t.js} +3 -3
  8. package/dist/chunks/{index-ed6wd5za.js.map → index-sq30a46t.js.map} +1 -1
  9. package/dist/chunks/{index-ywx41zwe.js → index-srat3fv0.js} +2 -2
  10. package/dist/chunks/{index-r714prkq.js → index-zthgv4br.js} +11 -11
  11. package/dist/chunks/{index-r714prkq.js.map → index-zthgv4br.js.map} +3 -3
  12. package/dist/chunks/linkedin-template-dd1v2pha.js +5 -0
  13. package/dist/chunks/{rss-datasource-903dasza.js → rss-datasource-j8prc9ay.js} +2 -2
  14. package/dist/entities.js +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/interfaces.js +1 -1
  17. package/dist/model.js +43 -43
  18. package/dist/model.js.map +3 -3
  19. package/dist/plugins.js +1 -1
  20. package/dist/services.js +1 -1
  21. package/package.json +1 -1
  22. package/dist/chunks/linkedin-template-w4g8m4k0.js +0 -5
  23. /package/dist/chunks/{app-p2qm2ybg.js.map → app-jdz6qhv3.js.map} +0 -0
  24. /package/dist/chunks/{blog-post-adapter-qk5qv9ec.js.map → blog-post-adapter-85kjd47f.js.map} +0 -0
  25. /package/dist/chunks/{index-xdr45fwm.js.map → index-16ppm6af.js.map} +0 -0
  26. /package/dist/chunks/{index-by6p25dz.js.map → index-2trrvsbk.js.map} +0 -0
  27. /package/dist/chunks/{index-j7aew0jd.js.map → index-fx4n58v2.js.map} +0 -0
  28. /package/dist/chunks/{index-ywx41zwe.js.map → index-srat3fv0.js.map} +0 -0
  29. /package/dist/chunks/{linkedin-template-w4g8m4k0.js.map → linkedin-template-dd1v2pha.js.map} +0 -0
  30. /package/dist/chunks/{rss-datasource-903dasza.js.map → rss-datasource-j8prc9ay.js.map} +0 -0
@@ -25,7 +25,7 @@ ${PR(e.cause," ")}
25
25
  `),r=`${t}[cause]: ${n[0]}`;for(let i=1,o=n.length;i<o;i++)r+=`
26
26
  ${t}${n[i]}`;if(e.cause)r+=` {
27
27
  ${PR(e.cause,`${t} `)}
28
- ${t}}`;return r},Xd="~effect/Fiber",Z$={_A:Fe,_E:Fe},$$={id:0},uR=(()=>{try{return globalThis.process?.getBuiltinModule?.("node:async_hooks")?.AsyncResource}catch{return}})(),AR=()=>uR===void 0?void 0:new uR("effect/Fiber"),Xa=()=>globalThis[ja];class Gy{constructor(e,t=!0){this.setContext(e),this.id=++$$.id,this.currentOpCount=0,this.interruptible=t,this._stack=[],this._observers=void 0,this._exit=void 0,this._children=void 0,this._interruptedCause=void 0,this._yielded=void 0,this._running=!1,this._deferredInterrupt=!1,this._parent=void 0,this._asyncContext=void 0,this.cache.runtimeMetrics?.recordFiberStart(this.context)}get[Xd](){return Z$}get currentDispatcher(){return this._dispatcher??=this.cache.scheduler.makeDispatcher()}getRef(e){return At(this.context,e)}addObserver(e){if(this._exit)return e(this._exit),Br;if(this._observers===void 0)this._observers=[e];else this._observers.push(e);return()=>this.removeObserver(e)}removeObserver(e){if(this._exit||this._observers===void 0)return;let t=this._observers.indexOf(e);if(t>=0)this._observers.splice(t,1)}interruptUnsafe(e,t){if(this._exit)return;let n=js(e);if(this.cache.stackFrame)n=Fa(n,fi(ud,this.cache.stackFrame));if(t)n=Fa(n,t);if(this._interruptedCause=this._interruptedCause?ws(this._interruptedCause,n):n,this.interruptible)if(this._running)this._deferredInterrupt=!0;else this.evaluate(Ve(this._interruptedCause))}pollUnsafe(){return this._exit}evaluate(e){if(this._exit)return;else if(this._asyncContext!==void 0){let r=this._asyncContext;return this._asyncContext=void 0,r.runInAsyncScope(this.evaluate,this,e)}else if(this._yielded!==void 0){let r=this._yielded;this._yielded=void 0,r()}let t=this.runLoop(e);if(t===vs){this._asyncContext=AR();return}let n=Fy.interruptChildren&&Fy.interruptChildren(this);if(n!==void 0)return this.evaluate(ge(n,()=>t));if(this._exit=t,this.cache.runtimeMetrics?.recordFiberEnd(this.context,this._exit),this._parent)this._parent._children?.delete(this),this._parent=void 0;if(this._observers!==void 0){let r=this._observers;this._observers=void 0;for(let i=0;i<r.length;i++)r[i](t)}this._stack.length=0,this._children=void 0,this.context=fn()}runLoop(e){let t=globalThis[ja];globalThis[ja]=this;let n=this._running;this._running=!0;let r=!1,i=e;this.currentOpCount=0;try{while(!0){if(this._deferredInterrupt)this._deferredInterrupt=!1,i=Ve(this._interruptedCause);this.currentOpCount++;let o=this.cache;if(!r&&!o.preventYield&&o.scheduler.shouldYield(this)){r=!0;let s=i;i=ge(tc,()=>s)}if(i=o.tracerContext?o.tracerContext(i,this):i[xt](this),i===vs){let s=this._yielded;if(bs in s)return this._deferredInterrupt=!1,this._yielded=void 0,s;else if(this._deferredInterrupt){this._yielded=void 0,s();continue}return vs}}}catch(o){if(!be(i,xt))return Tn(`Fiber.runLoop: Not a valid effect: ${String(i)}`);return this.runLoop(Tn(o))}finally{this._running=n,globalThis[ja]=t}}getCont(e){if(this._deferredInterrupt)return this._deferredInterrupt=!1,W$;while(!0){let t=this._stack.pop();if(!t)return;let n=t[Ss];if(n!==void 0){let r=n.call(t,this);if(r)return r[e]=r,r}if(t[e])return t}}succeedWith(e){if((++this.currentOpCount&J$-1)===0)return yt(e);let t=this.getCont(Ft);return t?t[Ft](e,this):this.yieldWith(yt(e))}yieldWith(e){return this._yielded=e,vs}children(){return this._children??=new Set}pipe(){return et(this,arguments)}setContext(e){let t=this.context;if(this.context=e,t!==void 0&&wy(t,e))return;let n=e.cacheRoot,r=n._fiberCache??=U$(e);if(this.cache?.scheduler!==r.scheduler)this._dispatcher=void 0;this.cache=r}get currentSpanLocal(){let e=this.cache.span;return e?._tag==="Span"?e:void 0}}var U$=(e)=>{let t=Ha(e,Oy);return{scheduler:At(e,Ll),tracer:t,tracerContext:t?t.context:void 0,tracerEnabled:At(e,Ud),span:Ha(e,Ay),logLevel:At(e,My),minimumLogLevel:At(e,jy),stackFrame:At(e,Ka),runtimeMetrics:Ha(e,aR),maxOpsBeforeYield:At(e,KI),preventYield:At(e,YI)}},W$={[Ft](e,t){return Ve(t._interruptedCause)},[Vn](e,t){return Ve(t._interruptedCause)}},J$=32,Fy={interruptChildren:void 0},Ql=(e)=>{if(!e.cache.stackFrame)return;let t=new Map;return t.set(Kh.key,e.cache.stackFrame),Zi(t)},H$=(e)=>{if(e._children===void 0||e._children.size===0)return;return zs(e._children)},Vy=(e)=>{let t=e;if(t._exit)return oe(t._exit);return hn((n)=>{if(t._exit)return n(oe(t._exit));return Oe(e.addObserver((r)=>n(oe(r))))})},ec=(e)=>hn((t)=>{let n=e[Symbol.iterator](),r=[],i=void 0;function o(){let s=n.next();while(!s.done){if(s.value._exit){r.push(s.value._exit),s=n.next();continue}i=s.value.addObserver((c)=>{r.push(c),o()});return}t(oe(r))}return o(),Oe(()=>i?.())}),Qy=(e)=>{let t=e;if(t._exit)return t._exit;return hn((n)=>{if(t._exit)return n(t._exit);return Oe(e.addObserver(n))})},OR=(e)=>hn((t)=>{let n=Array.from(e);if(n.length===0)return t(oe(jl()));let r=Array(n.length),i=jl(),o=()=>{for(let l=0;l<i.length;l++)n[l].removeObserver(i[l])},s=0,c=!1;for(let l=0;l<n.length;l++){if(c)break;let u=(p)=>{if(s++,p._tag==="Failure")return c=!0,o(),t(p);if(r[l]=p.value,s===n.length)t(oe(r))};i.push(u),n[l].addObserver(u)}return Oe(()=>{c=!0,o()})}),Kl=(e)=>ze((t)=>Ky(e,t.id)),Ky=x((e)=>be(e[0],Xd),(e,t,n)=>ze((r)=>{let i=Ql(r);return i=i&&n?Ga(i,n):i??n,e.interruptUnsafe(t,i),nc(Vy(e))})),zs=(e)=>ze((t)=>{let n=Ql(t),r=jl();for(let i of e)i.interruptUnsafe(t.id,n),r.push(i);return nc(ec(r))}),DR=x(2,(e,t)=>ze((n)=>{let r=Ql(n),i=jl();for(let o of e)o.interruptUnsafe(t,r),i.push(o);return nc(ec(i))})),oe=yt,Ve=mn,lt=qr,Oe=li({op:"Sync",[xt](e){let t=this[tt](),n=e.getCont(Ft);return n?n[Ft](t,e):e.yieldWith(yt(t))}}),De=li({op:"Suspend",[xt](e){return this[tt]()}}),Yy=x((e)=>e.length>=2||xd(e[0]),(e,t)=>Je(e)?lt(t?t():new ui("Effect.fromOption: Option.none")):oe(e.value)),Ns=vd({onFailure:lt,onSuccess:oe}),zR=(e)=>e==null?lt(new ui):oe(e),Xy=li({op:"Yield",[xt](e){let t=!1;return e.currentDispatcher.scheduleTask(()=>{if(t)return;e.evaluate(Yn)},this[tt]??0),e.yieldWith(()=>{t=!0})}}),tc=Xy(0),eb=(e)=>oe(Pe(e)),Yl=oe(Se()),MR=(e)=>Je(e)?Yl:Ne(e.value,Pe),jR=(e)=>De(()=>Ve(e())),Wi=(e)=>Tn(e),em=(e)=>De(()=>lt(e())),Le=oe(void 0);var NR=(e)=>{let t=typeof e==="function"?e:e.try,n=typeof e==="function"?(r)=>new su(r,"An error occurred in Effect.try"):e.catch;return De(()=>{try{return oe(t())}catch(r){return lt(n(r))}})};var tb=(e)=>nb(function(t,n){e(n).then((r)=>t(oe(r)),(r)=>t(Wi(r)))},e.length!==0),BR=(e)=>{let t=typeof e==="function"?e:e.try,n=typeof e==="function"?(r)=>new su(r,"An error occurred in Effect.tryPromise"):e.catch;return nb(function(r,i){let o=(s)=>De(()=>{try{return lt(wo(()=>n(s)))}catch(c){return Wi(c)}});try{t(i).then((s)=>r(oe(s)),(s)=>r(o(s)))}catch(s){r(o(s))}},t.length!==0)},_R=(e)=>ze((t)=>e(t.id)),FR=ze(oe),LR=_R(oe),nb=function(){let e=Qn({op:"Async",[xt](n){let r=!1,i=!1,o=this.withSignal?new AbortController:void 0,s=this.register.call(n.cache.scheduler,(c)=>{if(r)return;if(r=!0,i)n.evaluate(c);else i=c},o?.signal);if(i!==!1)return i;if(i=!0,n._yielded=()=>{r=!0},o===void 0&&s===void 0)return vs;return n._stack.push(G$(()=>(r=!0,o?.abort(),s??Yn))),vs}}),t=function(n,r){this.register=n,this.withSignal=r};return t.prototype=e,function(n,r){return new t(n,r)}}(),G$=li({op:"AsyncFinalizer",[Ss](e){if(e.interruptible)e.interruptible=!1,e._stack.push(ou)},[Vn](e,t){return Vd(e)?ge(Uk(mn(e),this[tt]()),()=>Ve(e)):Ve(e)}}),hn=(e)=>nb(e,e.length>=2),Xl=hn(Br),qR=(...e)=>{if(e.length===1){let r=e[0];return De(()=>Ms(r()))}let[t,n]=e;return De(()=>Ms(n.call(t.self)))},rb=(e,...t)=>{let n=t.length===0?function(){return De(()=>Ms(e.apply(this,arguments)))}:function(){let r=De(()=>Ms(e.apply(this,arguments)));for(let i=0;i<t.length;i++)r=t[i](r,...arguments);return r};return ib(e.length,n)},ib=(e,t)=>Object.defineProperty(t,"length",{value:e,configurable:!0}),pR=Ny(2),ZR=function(){let e=typeof arguments[0]==="string",t=e?arguments[0]:"Effect.fn",n=e?arguments[1]:void 0,r=ai(),i;if(r!==0)Gn(2),i=new globalThis.Error,Gn(r);if(e)return(o,...s)=>dR(t,o,i,s,e,n);return dR(t,arguments[0],i,Array.prototype.slice.call(arguments,1),e,n)},dR=(e,t,n,r,i,o)=>{let s=typeof t==="function"?t:r.shift().bind(t.self),c=`${e} (definition)`,l=n?pR(()=>n.stack):Fn;return ib(s.length,function(...u){let p=De(()=>{let f=s.apply(this,arguments);return ke(f)?f:Ms(f)});for(let f=0;f<r.length;f++)p=r[f](p,...u);if(!ke(p))return p;let m=ai(),g;if(m!==0)Gn(2),g=new globalThis.Error,Gn(m);return Hi(i?$l(e,o,(f)=>$y(p,f)):p,Ka,(f)=>({name:e,stack:g?pR(()=>g.stack):Fn,parent:{name:c,stack:l,parent:f}}))})},$R=(e,...t)=>ib(e.length,t.length===0?function(){return mR(()=>e.apply(this,arguments))}:function(){let n=mR(()=>e.apply(this,arguments));for(let r of t)n=r(n,...arguments);return n}),mR=(e)=>{try{let t=e(),n=void 0;while(!0){let r=t.next(n);if(r.done)return oe(r.value);let i=r.value;if(i&&i._tag==="Success"){n=i.value;continue}else if(i&&i._tag==="Failure")return r.value;else{let o=!0;return De(()=>{if(o)return o=!1,ge(r.value,(s)=>Ms(t,s));else return De(()=>Ms(e()))})}}}catch(t){return Wi(t)}},Ms=function(){let e=Qn({op:"Iterator",[Ft](n,r){let i=this.iterator;while(!0){let o=i.next(n);if(o.done)return oe(o.value);if(!$n(o.value))return r._stack.push(this),o.value;else if(o.value._tag==="Failure")return o.value;n=o.value.value}},[xt](n){return this[Ft](this.initial,n)}}),t=function(n,r){this.iterator=n,this.initial=r};return t.prototype=e,function(n,r){return new t(n,r)}}(),yn=x(2,(e,t)=>new Ji(e,ob,oe(t))),tm=function(e){return e._stack.push(this),this[tt]},V$=Qn({op:"OnSuccess",[xt]:tm}),Ji=function(e,t,n){this[tt]=e,this[Ft]=t,this.payload=n};Ji.prototype=V$;var ob=function(){return this.payload},UR=function(e,t){return t.succeedWith(this.payload)},nm=(()=>({["~effect/Effect/stackProbe"]:function(){return Error().stack}})["~effect/Effect/stackProbe"]()?.includes("[as ~effect/Effect/stackProbe]")===!0)(),Q$=function(e,t){let n=this.payload;return t.succeedWith(nm?n(e):wo(()=>n(e)))},WR=function(e){let t=this.payload;return t(e)},K$=function(e){let t=this.payload;return new Ji(t(e),UR,e)},Y$=function(e){return new Ji(this.payload,UR,e)},rm=(e)=>Ne(e,Pe),JR=(e)=>oc(e,{onFailure:oe,onSuccess:lt}),hi=x(2,(e,t)=>new Ji(e,ke(t)?ob:WR,t)),Ur=x(2,(e,t)=>new Ji(e,ke(t)?Y$:K$,t)),nc=(e)=>new Ji(e,ob,Yn),HR=(e)=>Rn(e,lt),sb=(e,t)=>ze((n)=>{let r=new Set;return uc(n,()=>r.size===0?void 0:zs(r)),hn((i)=>{let o=Et(e),s=o.length,c=0,l=!1,u=[],p=(m,g,f)=>{if(c++,m._tag==="Failure"){if(u.push(...m.cause.reasons),c>=s)i(Ve(_i(u)));return}let v=!l;if(l=!0,i(m),v&&t?.onWinner)t.onWinner({fiber:g,index:f,parentFiber:n})};for(let m=0;m<s;m++){let g=Sr(n,o[m],!0,!0,!1);if(r.add(g),g.addObserver((f)=>{r.delete(g),p(f,g,m)}),l)break}})}),ab=(e,t)=>ze((n)=>{let r=new Set;return uc(n,()=>r.size===0?void 0:zs(r)),hn((i)=>{let o=!1,s=0;for(let c of e){if(o)break;let l=s++,u=Sr(n,c,!0,!0,!1);r.add(u),u.addObserver((p)=>{r.delete(u);let m=!o;if(o=!0,i(p),m&&t?.onWinner)t.onWinner({fiber:u,index:l,parentFiber:n})})}})}),GR=x((e)=>ke(e[1]),(e,t,n)=>sb([e,t],n)),cb=x((e)=>ke(e[1]),(e,t,n)=>ab([e,t],n)),ge=x(2,(e,t)=>new Ji(e,WR,t)),VR=x(2,(e,t)=>{if($n(e))return e._tag==="Success"?t.onSuccess(e.value):t.onFailure(e.cause);return Ui(e,t)}),$n=(e)=>e[bs]!==void 0,QR=x(2,(e,t)=>{if($n(e))return e._tag==="Success"?t(e.value):e;return ge(e,t)}),KR=(e)=>ge(e,Fe),Ne=x(2,(e,t)=>new Ji(e,Q$,t)),YR=x(2,(e,t)=>$n(e)?db(e,t):Ne(e,t)),XR=x(2,(e,t)=>$n(e)?mb(e,t):vb(e,t)),ek=x(2,(e,t)=>$n(e)?fb(e,t):wb(e,t)),tk=x(2,(e,t)=>{if($n(e)){if(e._tag==="Success")return e;let n=br(e.cause);if(Ze(n))return e;return t(n.success)}return kn(e,t)}),im=(e)=>mn(js(e)),Ao=(e)=>e._tag==="Success",nk=(e)=>e._tag==="Success"?je(e):Me(e),rk=(e)=>e._tag==="Success"?je(e.value):Me(e),lb=(e)=>e._tag==="Failure",ik=(e)=>e._tag==="Failure"?je(e):Me(e),eu=(e)=>e._tag==="Failure"?je(e.cause):Me(e),ub=ky(eu,br),ok=ky(eu,Vl),pb=(e)=>e._tag==="Failure"&&Vd(e.cause),sk=(e)=>e._tag==="Failure"&&Gd(e.cause),ak=(e)=>e._tag==="Failure"&&Wy(e.cause),Yn=yt(void 0),db=x(2,(e,t)=>e._tag==="Success"?yt(t(e.value)):e),mb=x(2,(e,t)=>{if(e._tag==="Success")return e;let n=br(e.cause);if(Ze(n))return e;return qr(t(n.success))}),fb=x(2,(e,t)=>{if(e._tag==="Success")return yt(t.onSuccess(e.value));let n=br(e.cause);if(Ze(n))return e;return qr(t.onFailure(n.success))}),X$=x(2,(e,t)=>Ao(e)?yt(t):e),iie=x(2,(e,t)=>Ao(e)?t:e),ck=x(2,(e,t)=>Ao(e)?t.onSuccess(e.value):t.onFailure(e.cause)),lk=X$(void 0),gb=(e)=>{let t=[];for(let n of e)if(n._tag==="Failure")t.push(...n.cause.reasons);return t.length===0?Yn:mn(_i(t))},uk=(e)=>Ao(e)?Pe(e.value):Se(),pk=(e)=>lb(e)?Pe(e.cause):Se(),dk=(e)=>{let t=ub(e);return Ze(t)?Se():Pe(t.success)},mk=(e)=>e,fk=(e)=>ze((t)=>oe(_l(t.context,e))),eU=(e)=>ze((t)=>Yy(_l(t.context,e))),rc=x(2,(e,t)=>ze((n)=>{let r=n.context,i=t(r);if(r===i)return e;return n.setContext(i),uc(n,()=>{n.setContext(r);return}),e})),Hi=x(3,(e,t,n)=>rc(e,(r)=>{let i=gi(r,t),o=n(i);if(i===o)return r;return Cn(r,t,o)})),gk=(e,t,n)=>Bs(ze((r)=>{let i=gi(r.context,e),o=t(i);return r.setContext(Cn(r.context,e,o)),zo(gi(r.context,Do),(s)=>{let c=_l(r.context,e);if(Je(c))return Le;let l=c.value,u;if(n?.reset===void 0){if(l!==o)return Le;u=i}else u=n.reset(i,o,l);return r.setContext(Cn(r.context,e,u)),Le})})),hb=()=>tU,tU=ze((e)=>oe(e.context)),Oo=(e)=>ze((t)=>e(t.context)),hk=x(2,(e,t)=>rc(e,Pt(t))),Wr=x(2,(e,t)=>{if($n(e))return e;return rc(e,Ga(t))}),In=function(){if(arguments.length===1)return x(2,(e,t)=>fR(e,arguments[0],t));return x(3,(e,t,n)=>fR(e,t,n)).apply(this,arguments)},fR=(e,t,n)=>rc(e,Cn(t,n)),om=x(3,(e,t,n)=>ge(n,(r)=>In(e,t,r))),yk=x((e)=>ke(e[1]),(e,t,n)=>yb(e,t,(r,i)=>[r,i],n)),yb=x((e)=>ke(e[1]),(e,t,n,r)=>r?.concurrent?Ne(_s([e,t],{concurrency:2}),([i,o])=>n(i,o)):ge(e,(i)=>Ne(t,(o)=>n(i,o)))),bk=x((e)=>ke(e[0]),(e,t,n)=>Bb(e,t,n?(r)=>lt(n(r)):()=>lt(new ui))),Sk=x(2,(e,t)=>ge(t,(n)=>n?rm(e):Yl)),bb=x(2,(e,t)=>Array.from({length:t},()=>e)),xk=x((e)=>ke(e[0]),(e,t,n)=>_s(bb(e,t),n)),sm=x((e)=>ke(e[0]),(e,t)=>Gi({while:ji,body:Pt(t?.disableYield?e:ge(e,(n)=>tc)),step:Br})),Rn=x(2,(e,t)=>new vk(e,t.length!==1?(n)=>t(n):t)),nU=Qn({op:"OnFailure",[xt]:tm}),vk=function(e,t){this[tt]=e,this[Vn]=t};vk.prototype=nU;var Sb=x(3,(e,t,n)=>Rn(e,(r)=>{if(!t(r))return Ve(r);return n(r)})),ic=x(3,(e,t,n)=>Rn(e,(r)=>{let i=t(r);return Ze(i)?Ve(i.failure):n(i.success,r)})),kn=x(2,(e,t)=>ic(e,br,(n)=>t(n))),wk=(e)=>oc(e,{onFailure:(t)=>pd(t)?Yl:lt(t),onSuccess:eb}),Tk=x(2,(e,t)=>ic(e,Vl,t)),Ck=x(2,(e,t)=>Rn(e,(n)=>hi(t(n),Ve(n)))),Ek=x(3,(e,t,n)=>Sb(e,t,(r)=>hi(n(r),Ve(r)))),am=x(3,(e,t,n)=>Rn(e,(r)=>{let i=t(r);if(Ze(i))return Ve(r);return hi(n(i.success,r),Ve(r))})),xb=x(2,(e,t)=>am(e,br,(n)=>t(n))),Ik=x(3,(e,t,n)=>{let r=Array.isArray(t)?(i)=>be(i,"_tag")&&t.includes(i._tag):So(t);return xb(e,(i)=>r(i)?n(i):Le)}),Rk=x(2,(e,t)=>am(e,Vl,(n)=>t(n))),tu=x((e)=>ke(e[0]),(e,t,n,r)=>Rn(e,(i)=>{let o=br(i);if(Ze(o))return Ve(o.failure);if(!t(o.success))return r?r(o.success):Ve(i);return n(o.success)})),cm=x((e)=>ke(e[0]),(e,t,n,r)=>Rn(e,(i)=>{let o=br(i);if(Ze(o))return Ve(o.failure);let s=t(o.success);if(Ze(s))return r?r(s.failure):Ve(i);return n(s.success)})),lm=x((e)=>ke(e[0]),(e,t,n,r)=>{let i=Array.isArray(t)?(o)=>be(o,"_tag")&&t.includes(o._tag):So(t);return tu(e,i,n,r)}),kk=x((e)=>ke(e[0]),(e,t,n)=>{let r;return cm(e,(i)=>(r??=Object.keys(t),be(i,"_tag")&&fs(i._tag)&&r.includes(i._tag)?je(i):Me(i)),(i)=>t[i._tag](i),n)}),Pk=x((e)=>ke(e[0]),(e,t,n,r,i)=>tu(e,(o)=>So(o,t)&&be(o,"reason")&&(i!==void 0||So(o.reason,n)),(o)=>{let s=o.reason;if(So(s,n))return r(s,o);return i?i(s,o):lt(o)})),Ak=x((e)=>ke(e[0]),(e,t,n,r)=>{let i;return tu(e,(o)=>So(o,t)&&be(o,"reason")&&be(o.reason,"_tag")&&fs(o.reason._tag)&&(r!==void 0||(i??=Object.keys(n)).includes(o.reason._tag)),(o)=>{let s=o.reason;if(i??=Object.keys(n),i.includes(s._tag))return n[s._tag](s,o);return r?r(s,o):lt(o)})}),Ok=x(2,(e,t)=>cm(e,(n)=>{if(So(n,t)&&be(n,"reason"))return je(n.reason);return Me(n)},lt)),vb=x(2,(e,t)=>kn(e,(n)=>em(()=>t(n)))),wb=x(2,(e,t)=>oc(e,{onFailure:(n)=>em(()=>t.onFailure(n)),onSuccess:(n)=>Oe(()=>t.onSuccess(n))})),um=(e)=>kn(e,Wi),Dk=x(2,(e,t)=>kn(e,(n)=>Oe(()=>t(n)))),zk=(e)=>De(()=>{let t=e[Symbol.iterator](),n=t.next();if(n.done)return Wi(Error("Received an empty collection of effects"));function r(i){let o=t.next();if(o.done)return i.value;return kn(i.value,(s)=>r(o))}return r(n)}),Tb=(e)=>kn(e,(t)=>ge(tc,()=>Tb(e))),Mk=x((e)=>ke(e[0]),(e,t)=>{if(!t?.log)return oc(e,{onFailure:(r)=>Le,onSuccess:(r)=>Le});let n=Jr(t.log===!0?void 0:t.log);return Ui(e,{onFailure(r){let i=Jy(r);return Ze(i)?Ve(i.failure):t.message===void 0?n(r):n(t.message,r)},onSuccess:(r)=>Le})}),pm=x((e)=>ke(e[0]),(e,t)=>{if(!t?.log)return Ui(e,{onFailure:(r)=>Le,onSuccess:(r)=>Le});let n=Jr(t.log===!0?void 0:t.log);return Ui(e,{onFailure:(r)=>t.message===void 0?n(r):n(t.message,r),onSuccess:(r)=>Le})}),jk=(e)=>dm(e,{onFailure:Se,onSuccess:Pe}),Po=(e)=>nu(e,{onFailure:Me,onSuccess:je}),Ui=x(2,(e,t)=>new Nk(e,t.onSuccess.length!==1?(n)=>t.onSuccess(n):t.onSuccess,t.onFailure.length!==1?(n)=>t.onFailure(n):t.onFailure)),rU=Qn({op:"OnSuccessAndFailure",[xt]:tm}),Nk=function(e,t,n){this[tt]=e,this[Ft]=t,this[Vn]=n};Nk.prototype=rU;var iU=function(e,t){let n=this.payload;return t.succeedWith(nm?n.onSuccess(e):wo(()=>n.onSuccess(e)))},Bk=(e,t)=>{let n=Qn({op:e,[xt]:tm,[Ft]:iU,[Vn]:t}),r=function(i,o){this[tt]=i,this.payload=o};return r.prototype=n,r},oU=Bk("Match",function(e,t){let n=e.reasons.find(Fi);if(n===void 0)return Ve(e);let r=this.payload;return t.succeedWith(nm?r.onFailure(n.error):wo(()=>r.onFailure(n.error)))}),sU=Bk("MatchCause",function(e,t){let n=this.payload;return t.succeedWith(nm?n.onFailure(e):wo(()=>n.onFailure(e)))}),Cb=x(2,(e,t)=>new sU(e,t)),oc=x(2,(e,t)=>Ui(e,{onFailure:(n)=>{let r=n.reasons.find(Fi);return r?t.onFailure(r.error):Ve(n)},onSuccess:t.onSuccess})),dm=x(2,(e,t)=>new oU(e,t)),nu=x(2,(e,t)=>{if($n(e)){if(e._tag==="Success")return yt(t.onSuccess(e.value));let n=br(e.cause);if(Ze(n))return e;return yt(t.onFailure(n.success))}return dm(e,t)}),_k=x(2,(e,t)=>{if($n(e)){if(e._tag==="Success")return yt(t.onSuccess(e.value));return yt(t.onFailure(e.cause))}return Cb(e,t)}),sc=(e)=>$n(e)?yt(e):aU(e),aU=li({op:"Exit",[xt](e){return e._stack.push(this),this[tt]},[Ft](e,t,n){return t.succeedWith(n??yt(e))},[Vn](e,t,n){return t.succeedWith(n??mn(e))}}),Fk=nu({onFailure:()=>!0,onSuccess:()=>!1}),Lk=nu({onFailure:()=>!1,onSuccess:()=>!0}),qk=x(2,(e,t)=>hi(pc(t),e)),Eb=x(2,(e,t)=>ge(Ib(e,t.duration),(n)=>Je(n)?t.orElse():oe(n.value))),cU=(e)=>new xm(`Operation timed out after '${Ry(e)}'`),Zk=x(2,(e,t)=>{let n=Ot(t);return Eb(e,{duration:n,orElse:()=>lt(cU(n))})}),Ib=x(2,(e,t)=>cb(rm(e),yn(pc(t),Se()))),$k=(e)=>Wn((t)=>{let n=t.monotonicTimeNanosUnsafe();return Ne(e,(r)=>[ks(t.monotonicTimeNanosUnsafe()-n),r])}),Ly="~effect/Scope",qy="~effect/Scope/Closeable",Do=Zn("effect/Scope"),Rb=(e,t)=>ze((n)=>{let r=ac(e,t);if(r===void 0)return Le;return dU(n),r}),ac=(e,t)=>{let n=e.state;if(n._tag==="Closed")return;if(e.state={_tag:"Closed",exit:t},e.parent!==void 0)Pb(e.parent,e);if(n._tag==="Empty")return;if(n.finalizer!==void 0)return Jd(n.finalizer,t);let r=n.finalizers;if(r.size===1)return Jd(r.values().next().value,t);return lU(e,r,t)},Jd=(e,t)=>{try{return e(t)}catch(n){return Tn(n)}},Uk=(e,t)=>Ao(e)?t:Rn(t,(n)=>Ve(ws(e.cause,n))),lU=rb(function*(e,t,n){let r=[],i=[],o=Array.from(t.values()),s=Xa();for(let c=o.length-1;c>=0;c--){let l=o[c];if(e.strategy==="sequential")r.push(yield*sc(Jd(l,n)));else i.push(Sr(s,Jd(l,n),!0,!0,"inherit"))}if(i.length>0)r=yield*ec(i);return yield*gb(r)}),Wk=(e,t)=>Oe(()=>kb(e,t)),kb=(e,t)=>{let n=Hk(t,e);if(e.state._tag==="Closed")return n.state=e.state,n;return cc(e,n,(r)=>Rb(n,r)),n},zo=(e,t)=>De(()=>{if(e.state._tag==="Closed")return t(e.state.exit);return cc(e,{},t),Le}),Jk=(e,t)=>zo(e,Pt(t)),cc=(e,t,n)=>{if(e.state._tag==="Empty")e.state={_tag:"Open",finalizerKey:t,finalizer:n,finalizers:void 0};else if(e.state._tag==="Open"){let r=e.state;if(r.finalizer!==void 0)r.finalizers=new Map([[r.finalizerKey,r.finalizer]]),r.finalizerKey=void 0,r.finalizer=void 0,r.finalizers.set(t,n);else r.finalizers.set(t,n)}},Pb=(e,t)=>{if(e.state._tag!=="Open")return;let n=e.state;if(n.finalizerKey===t)e.state=Zy;else if(n.finalizers!==void 0){if(n.finalizers.delete(t),n.finalizers.size===0)e.state=Zy}},ru=(e)=>Hk(e,void 0),Hk=(e="sequential",t)=>({[qy]:qy,[Ly]:Ly,strategy:e,parent:t,state:Zy}),Zy={_tag:"Empty"},Gk=(e)=>Oe(()=>ru(e)),iu=Do,Ab=In(Do),mm=(e)=>ze((t)=>{let n=t.context,r=ru();return t.setContext(Cn(t.context,Do,r)),uc(t,(i)=>(t.setContext(n),ac(r,i))),e}),Vk=x(2,(e,t)=>Un(Ab(e,t),(n)=>De(()=>ac(t,n)??Le))),fm=(e)=>De(()=>{let t=ru();return Un(e(t),(n)=>De(()=>ac(t,n)??Le))}),gm=(e,t,n)=>Oo((r)=>jo((i)=>ge(iu,(o)=>Ur(n?.interruptible?i(e):e,(s)=>zo(o,(c)=>Wr(t(s,c),r)))))),lc=(e)=>ge(iu,(t)=>Oo((n)=>zo(t,(r)=>Wr(e(r),n)))),Qk=function(){let e=Qn({op:"OnExit",[xt](n){return n._stack.push(this),this.effect},[Ss](n){if(n.interruptible&&this.interruptible!==!0)n._stack.push(ou),n.interruptible=!1},[Ft](n,r,i){i??=yt(n);let o;try{o=this.onExit(i)}catch(s){o=Tn(s)}return o?ge(o,(s)=>i):i},[Vn](n,r,i){i??=mn(n);let o;try{o=this.onExit(i)}catch(s){o=Tn(s)}return o?ge(Uk(i,o),(s)=>i):i}}),t=function(n,r,i){this.effect=n,this.onExit=r,this.interruptible=i};return t.prototype=e,t}(),Mo=(e,t,n)=>new Qk(e,t,n),uc=(e,t)=>{e._stack.push(new Qk(void 0,t,void 0))},Un=x(2,Mo),Kk=x(2,(e,t)=>Un(e,(n)=>t)),Ob=x(3,(e,t,n)=>Un(e,(r)=>{if(!t(r))return Le;return n(r)})),Db=x(3,(e,t,n)=>Un(e,(r)=>{let i=t(r);return Ze(i)?Le:n(i.success,r)})),zb=x(2,(e,t)=>Db(e,eu,t)),Yk=x(3,(e,t,n)=>Ob(e,(r)=>{if(r._tag!=="Failure")return!1;return t(r.cause)},(r)=>n(r.cause))),Mb=x(3,(e,t,n)=>Un(e,(r)=>{if(r._tag!=="Failure")return Le;let i=t(r.cause);return Ze(i)?Le:n(i.success,r.cause)})),Xk=x(2,(e,t)=>Mb(Qd,t)(e)),eP=(e,t,n)=>jo((r)=>ge(e,(i)=>Mo(De(()=>r(t(i))),(o)=>n(i,o),!0))),tP=(e)=>gm(e,(t)=>be(t,Symbol.asyncDispose)?tb(()=>t[Symbol.asyncDispose]()):Oe(()=>t[Symbol.dispose]())),jb=x(2,(e,t)=>Oe(()=>nP(e,typeof t==="function"?(n)=>Zr(Ot(t(n))):Pt(Zr(Ot(t)))))),uU=Pt(1/0),nP=(e,t)=>{let n=0,r,i,o=(s,c)=>(c.awaiters++,uc(s,()=>{if(--c.awaiters>0||i!==c)return;return i=void 0,Kl(c.fiber)}),Qy(c.fiber));return[ze((s)=>{if(i!==void 0)return o(s,i);if(r!==void 0&&(n===1/0||s.getRef(yr).currentTimeMillisUnsafe()<n))return r;r=void 0;let c=s.getRef(yr),l={fiber:void 0,awaiters:0};return i=l,l.fiber=Sr(s,Mo(e,(u)=>{if(i!==l)return;if(i=void 0,pb(u))return;let p=t(u);n=p===1/0?1/0:c.currentTimeMillisUnsafe()+p,r=u}),!0,!0),l.fiber._exit??o(s,l)}),Oe(()=>{r=void 0})]},rP=x(2,(e,t)=>Ne(jb(e,t),(n)=>n[0])),iP=(e)=>Oe(()=>nP(e,uU)[0]),oP=ze((e)=>Ve(js(e.id))),Bs=(e)=>ze((t)=>{if(!t.interruptible)return e;return t.interruptible=!1,t._stack.push(ou),e}),sP=li({op:"SetInterruptible",[Ss](e){if(e.interruptible=this[tt],e._interruptedCause&&e.interruptible)return()=>Ve(e._interruptedCause)}}),ou=sP(!0),pU=sP(!1),aP=(e)=>{if(e.interruptible=!0,e._stack.push(pU),e._interruptedCause)return Ve(e._interruptedCause)},dU=(e)=>{let t=e;if(!t.interruptible)return;t.interruptible=!1,t._stack.push(ou)};var hm=(e)=>ze((t)=>{if(t.interruptible)return e;return aP(t)??e}),jo=(e)=>ze((t)=>{if(!t.interruptible)return e(Fe);return t.interruptible=!1,t._stack.push(ou),e(hm)}),cP=(e)=>ze((t)=>{if(t.interruptible)return e(Fe);let n=aP(t),r=e(Bs);return n??r}),lP=Ne(gm(Oe(()=>new AbortController),(e)=>Oe(()=>e.abort())),(e)=>e.signal),_s=(e,t)=>{if(Ni(e))return t?.mode==="result"?En(e,Po,t):En(e,Fe,t);else if(t?.discard)return t.mode==="result"?En(Object.values(e),Po,t):En(Object.values(e),Fe,t);return De(()=>{let n={};return yn(En(Object.entries(e),([r,i])=>Ne(t?.mode==="result"?Po(i):i,(o)=>{sn(n,r,o)}),{discard:!0,concurrency:t?.concurrency}),n)})},Nb=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t,n)=>Ne(En(e,(r,i)=>Po(t(r,i)),n),(r)=>TI(r,Fe))),uP=x(3,(e,t,n)=>{let r=Et(e);if(r.length===0)return Oe(t);return De(()=>{let i=0,o=t();return Ne(Gi({while:()=>i<r.length,body:()=>n(o,r[i],i),step(s){o=s,i++}}),()=>o)})}),pP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t,n)=>ge(Nb(e,t,{concurrency:n?.concurrency}),([r,i])=>{if(vI(i))return lt(i);return n?.discard?Le:oe(r)})),dP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t)=>De(()=>{let n=e[Symbol.iterator](),r=n.next();if(!r.done)return mP(n,0,t,r.value);return oe(Se())})),mP=(e,t,n,r)=>ge(n(r,t),(i)=>{if(i)return oe(Pe(r));let o=e.next();if(!o.done)return mP(e,t+1,n,o.value);return oe(Se())}),fP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t)=>De(()=>{let n=e[Symbol.iterator](),r=n.next();if(!r.done)return gP(n,0,t,r.value);return oe(Se())})),gP=(e,t,n,r)=>ge(n(r,t),(i)=>{if(gr(i))return oe(Pe(i.success));let o=e.next();if(!o.done)return gP(e,t+1,n,o.value);return oe(Se())}),Gi=li({op:"While",[Ft](e,t){if(this[tt].step(e),this[tt].while())return t._stack.push(this),this[tt].body();return Yn},[xt](e){if(this[tt].while())return e._stack.push(this),this[tt].body();return Yn}}),En=x((e)=>typeof e[1]==="function",(e,t,n)=>De(()=>{let r=fU(n?.concurrency);if(r===1)return mU(e,t,n);let i=Et(e),o=i.length;if(o===0)return n?.discard?Le:oe([]);let s=n?.discard?void 0:Array(o),c=gU({f:t,out:s},i,{concurrency:r});return c?yn(c,s):oe(s)})),hP=(e)=>ge(e,(t)=>{let n=t[Symbol.iterator]().next();return n.done?lt(new ui):oe(n.value)}),mU=(e,t,n)=>De(()=>{let r=n?.discard?void 0:[],i=e[Symbol.iterator](),o=i.next(),s=0;return yn(Gi({while:()=>!o.done,body:()=>t(o.value,s++),step:(c)=>{if(r)r.push(c);o=i.next()}}),r)}),fU=(e)=>e==="unbounded"?Number.POSITIVE_INFINITY:Math.max(1,e??1),oie=()=>(e)=>{let{onItem:t,step:n}=e,r=(o,s,c,l,u)=>ge(sc(u),(p)=>n(o,s[c],p,c)??i(o,s,c+1,l)??Le),i=(o,s,c=0,l=s.length)=>{for(;c<l;c++){let u=s[c],p=t(o,u,c);if(!$n(p))return r(o,s,c,l,p);let m=n(o,u,p,c);if(m)return m._tag==="Failure"?m:void 0}};return i},yP=(e)=>{let{onItem:t,step:n}=e;return(r,i,o)=>{let s=0,c=o.end??i.length,l=o.concurrency,u=!1,p,m,g,f,v,w=(P)=>{let B=Tn(P);return f=B,u=!0,m&&m.size>0?ge(Bs(zs(Array.from(m))),()=>f??B):B},k=()=>{let P=!1;for(;!f&&s<c;s++){let B=i[s],j=v??t(r,B,s);if($n(j)){if(f=n(r,B,j,s),f)break}else if(!p)return hn((Y)=>{p=Xa(),m=new Set,v=j,g=Y;let G;try{G=k()}catch(I){return Y(w(I))}if(G)return Y(G);return De(()=>(f??=Yn,ge(m?zs(m):Le,()=>f?._tag==="Failure"?f:Le)))});else{v=void 0;let Y=Sr(p,j,!0,!0,"inherit");if(Y._exit){if(f=n(r,B,Y._exit,s),f)break;continue}m.add(Y);let G=s;if(Y.addObserver((I)=>{m.delete(Y);try{if(f){if(I._tag==="Failure"){let ee=I.cause.reasons.filter((he)=>he._tag!=="Interrupt");if(ee.length>0){let he=_i(ee);f=mn(f._tag==="Failure"?ws(f.cause,he):he)}}}else{let ee=n(r,B,I,G);if(ee)f=ee,k()}if(P){let ee=k();if(ee)g(ee)}else if(u&&m.size===0)g(f??Le)}catch(ee){g(w(ee))}}),m.size<l)continue;P=!0,s++;return}}if(u=!0,f){if(m&&m.size>0){let B=Ql(p);m.forEach((j)=>j.interruptUnsafe(p.id,B));return}if(g||f._tag==="Failure")return f}else if(g){if(!m)return Yn;else if(m.size===0)g(Le)}};return k()}},sie=()=>(e)=>yP(e),gU=yP({onItem(e,t,n){return e.f(t,n)},step(e,t,n,r){if(n._tag==="Failure")return n;else if(e.out)e.out[r]=n.value}}),Bb=x(3,(e,t,n)=>ge(e,(r)=>t(r)?oe(r):n(r))),_b=x(3,(e,t,n)=>ge(e,(r)=>{let i=t(r);return Ze(i)?n(i.failure):oe(i.success)})),bP=x((e)=>ke(e[0]),(e,t,n)=>_b(e,t,n?(r)=>lt(n(r)):()=>lt(new ui))),SP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t,n)=>De(()=>{let r=[];return yn(En(e,(i,o)=>{let s=t(i,o);if(typeof s==="boolean"){if(s)r.push(i);return Le}return Ne(s,(c)=>{if(c)r.push(i)})},{discard:!0,concurrency:n?.concurrency}),r)})),xP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t)=>De(()=>{let n=[];for(let r of e){let i=t(r);if(gr(i))n.push(i.success)}return oe(n)})),vP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t,n)=>De(()=>{let r=[];return yn(En(e,(i)=>Ne(t(i),(o)=>{if(gr(o))r.push(o.success)}),{discard:!0,concurrency:n?.concurrency}),r)})),wP=oe({}),TP=Za(Ne),CP=$a(Ne,ge),EP=qa(Ne);var IP=x((e)=>ke(e[0]),(e,t)=>ze((n)=>(DU(),oe(Sr(n,e,t?.startImmediately,!1,t?.uninterruptible??!1))))),Sr=(e,t,n=!1,r=!1,i=!1)=>{let o=e,s=i==="inherit"?o.interruptible:!i,c=new Gy(o.context,s);if(n)c.evaluate(t);else c._asyncContext=AR(),o.currentDispatcher.scheduleTask(()=>c.evaluate(t),0);if(!r&&!c._exit)o.children().add(c),c._parent=o;return c},RP=x((e)=>ke(e[0]),(e,t)=>ze((n)=>oe(Sr(n,e,t?.startImmediately,!0,t?.uninterruptible)))),kP=(e)=>ze((t)=>{let n=t._children&&new Set(t._children),r=t.interruptible;return Mo(e,(i)=>{let o=t._children;if(o===void 0||o.size===0)return Le;else if(n)o=SI(o,(c)=>!n.has(c));let s=nc(ec(o));return r?hm(s):s})}),Fb=x((e)=>ke(e[0]),(e,t,n)=>ze((r)=>{let i=Sr(r,e,n?.startImmediately,!0,n?.uninterruptible);if(!i._exit)if(t.state._tag!=="Closed"){let o={};cc(t,o,()=>_R((c)=>c===i.id?Le:Kl(i))),i.addObserver(()=>Pb(t,o))}else i.interruptUnsafe(r.id,Ql(r));return oe(i)})),PP=x((e)=>ke(e[0]),(e,t)=>ge(iu,(n)=>Fb(e,n,t))),Vi=(e)=>(t,n)=>{let r=new Gy(n?.scheduler?Cn(e,Ll,n.scheduler):e,n?.uninterruptible!==!0);if(r.evaluate(t),r._exit)return r;if(n?.signal)if(n.signal.aborted)r.interruptUnsafe();else{let i=()=>r.interruptUnsafe();n.signal.addEventListener("abort",i,{once:!0}),r.addObserver(()=>n.signal.removeEventListener("abort",i))}if(n?.onFiberStart)n.onFiberStart(r);return r},AP=x(2,(e,t)=>{if(e._exit)return e;else if(t.state._tag==="Closed")return e.interruptUnsafe(e.id),e;let n={};return cc(t,n,()=>Kl(e)),e.addObserver(()=>Pb(t,n)),e}),OP=Vi(fn()),Lb=(e)=>{let t=Vi(e);return(n,r)=>{let i=t(n,r);if(r?.onExit)i.addObserver(r.onExit);return(o)=>i.interruptUnsafe(o)}},DP=Lb(fn()),ym=(e)=>{let t=Vi(e);return(n,r)=>{let i=t(n,r);return new Promise((o)=>{i.addObserver((s)=>o(s))})}},zP=ym(fn()),qb=(e)=>{let t=ym(e);return(n,r)=>t(n,r).then((i)=>{if(i._tag==="Failure")throw Kd(i.cause);return i.value})},MP=qb(fn()),bm=(e)=>{let t=Vi(e);return(n)=>{if($n(n))return n;let r=new Ld("sync"),i=t(n,{scheduler:r});return i._dispatcher?.flush(),i._exit??Tn(new vm(i))}},jP=bm(fn()),Zb=(e)=>{let t=bm(e);return(n)=>{let r=t(n);if(r._tag==="Failure")throw Kd(r.cause);return r.value}},NP=Zb(fn()),gR=oe(!0),hR=oe(!1);class BP{waiters=[];scheduled=void 0;_isOpen;constructor(e){this._isOpen=e}scheduleUnsafe(e){if(this.waiters.length===0)return gR;if(this.scheduled===void 0)this.scheduled=this.waiters,e.currentDispatcher.scheduleTask(this.flushScheduled,0);else for(let t=0;t<this.waiters.length;t++)this.scheduled.push(this.waiters[t]);return this.waiters=[],gR}flushScheduled=()=>{if(this.scheduled===void 0)return;let e=this.scheduled;this.scheduled=void 0;for(let t=0;t<e.length;t++)e[t](Yn)};flushWaiters(){let e=this.waiters;this.waiters=[],this.flushScheduled();for(let t=0;t<e.length;t++)e[t](Yn)}open=ze((e)=>{if(this._isOpen)return hR;return this._isOpen=!0,this.scheduleUnsafe(e)});release=ze((e)=>this._isOpen?hR:this.scheduleUnsafe(e));openUnsafe(){if(this._isOpen)return!1;return this._isOpen=!0,this.flushWaiters(),!0}await=hn((e)=>{if(this._isOpen)return e(Le);return this.waiters.push(e),Oe(()=>{let t=this.waiters.indexOf(e);if(t!==-1)this.waiters.splice(t,1);else if(this.scheduled!==void 0){if(t=this.scheduled.indexOf(e),t!==-1)this.scheduled.splice(t,1)}})});closeUnsafe(){if(!this._isOpen)return!1;return this._isOpen=!1,!0}close=Oe(()=>this.closeUnsafe());whenOpen=(e)=>ge(this.await,()=>e);isOpen(){return this._isOpen}}var hU=(e)=>new BP(e??!1),aie=(e)=>Oe(()=>hU(e)),_P=ze((e)=>oe(e.getRef(Dy))),FP=x(2,(e,t)=>In(e,Dy,t)),LP=In(Ud),qP=In(Os),Hd=BigInt(0),yU={_tag:"Span",spanId:"noop",traceId:"noop",sampled:!1,status:{_tag:"Ended",startTime:Hd,endTime:Hd,exit:Yn},attributes:new Map,links:[],kind:"internal",attribute(){},event(){},end(){},addLinks(){}},bU=(e)=>Object.assign(Object.create(yU),e),ZP=(e)=>{if(!e)return Se();return At(e.annotations,$d)?e._tag==="Span"?ZP(Is(e.parent)):Se():Pe(e)},$b=(e,t,n)=>{let r=!e.cache.tracerEnabled||n?.annotations&&At(n.annotations,$d),i=n?.parent!==void 0?Pe(n.parent):n?.root?Se():ZP(e.cache.span),o;if(r)o=bU({name:t,parent:i,annotations:Cn(n?.annotations??fn(),$d,!0)});else{let s=e.cache.tracer??zy,c=e.getRef(yr),l=e.getRef(Os),u=e.getRef(ql),p=e.getRef(Zl),m=n?.level??e.getRef(rR),g=n?.links!==void 0?[...p,...n.links]:p.length===0?[]:p.slice();o=s.span({name:t,parent:i,annotations:n?.annotations??fn(),links:g,startTime:l?c.currentTimeNanosUnsafe():Hd,kind:n?.kind??"internal",root:n?.root??Je(i),sampled:n?.sampled??(an(i)&&i.value.sampled===!1?!1:!uA(e.getRef(iR),m))});for(let f in u)o.attribute(f,u[f]);if(n?.attributes!==void 0)for(let f in n.attributes)o.attribute(f,n.attributes[f])}return o},$P=(e,t)=>ze((n)=>oe($b(n,e,t))),$r=(e,t)=>Bs(ze((n)=>{let r=gi(n.context,Do),i=$b(n,e,t??{}),o=n.getRef(yr),s=n.getRef(Os);return yn(zo(r,(c)=>GP(i,c,o,s)),i)})),UP=function(){let e=typeof arguments[0]!=="string",t=e?arguments[1]:arguments[0],n=ko(e?arguments[2]:arguments[1]);if(e){let r=arguments[0];return ge($r(t,n),(i)=>Ya(r,i,n))}return(r)=>ge($r(t,n),(i)=>Ya(r,i,n))},SU=(e,t)=>(t=typeof t==="function"?t:Fn,Hi(Ka,(n)=>({name:e,stack:t,parent:n}))),WP=ql,JP=Zl,HP=x((e)=>ke(e[0]),(e,t,n={})=>{let i=(Array.isArray(t)?t:[t]).map((o)=>({span:o,attributes:n}));return Hi(e,Zl,(o)=>[...o,...i])}),GP=(e,t,n,r)=>Oe(()=>{if(e.status._tag==="Ended")return;e.end(r?n.currentTimeNanosUnsafe():Hd,t)}),$l=(e,...t)=>{let n=t.length===1?void 0:t[0],r=t[t.length-1];return ze((i)=>{let o=$b(i,e,n),s=i.getRef(yr),c=i.getRef(Os);return uc(i,(l)=>GP(o,l,s,c)),r(o)})},$y=In(As),Ya=function(){let e=ke(arguments[0]),t=e?arguments[1]:arguments[0],n=e?arguments[2]:arguments[1],r=Fe;if(t._tag==="Span")n=ko(n),r=SU(t.name,n?.captureStackTrace);if(e)return $y(r(arguments[0]),t);return(i)=>$y(r(i),t)},VP=function(){let e=typeof arguments[0]!=="string",t=e?arguments[1]:arguments[0],n=ko(arguments[2]);if(e){let o=arguments[0];return $l(t,arguments[2],(s)=>Ya(o,s,n))}let r=typeof arguments[1]==="function"?arguments[1]:void 0,i=r?void 0:arguments[1];return(o,...s)=>$l(t,r?r(...s):i,(c)=>Ya(o,c,n))},QP=x((e)=>ke(e[0]),(e,...t)=>Hi(e,ql,(n)=>{let r=t.length===1?{...n,...t[0]}:{...n};if(t.length===1)return r;else sn(r,t[0],t[1]);return r})),KP=(...e)=>ze((t)=>{let n=t.currentSpanLocal;if(n)if(e.length===1)for(let[r,i]of Object.entries(e[0]))n.attribute(r,i);else n.attribute(e[0],e[1]);return Le}),YP=ze((e)=>{let t=e.currentSpanLocal;return t?oe(t):lt(new ui)}),XP=eU(As),yr=He("effect/Clock",{defaultValue:()=>new eA}),By=2147483647;class eA{currentTimeMillisUnsafe(){return Date.now()}currentTimeMillis=Oe(()=>this.currentTimeMillisUnsafe());currentTimeNanosUnsafe(){return xU()}currentTimeNanos=Oe(()=>this.currentTimeNanosUnsafe());monotonicTimeNanosUnsafe(){return nA()}monotonicTimeNanos=Oe(()=>this.monotonicTimeNanosUnsafe());sleep(e){return this.sleepMillis(Zr(e))}sleepMillis(e){if(e<=0)return tc;else if(!Number.isFinite(e))return Xl;return hn((t)=>{let n=e>By?this.sleepMillis(e-By):Le,r=setTimeout(()=>t(n),Math.min(e,By));return Oe(()=>clearTimeout(r))})}}var tA=BigInt(1e6),nA=function(){let e=globalThis.process?.hrtime;if(typeof e?.bigint==="function")return()=>e.bigint();if(typeof performance<"u"&&typeof performance.now==="function")return()=>BigInt(Math.round(performance.now()*1e6));let t=BigInt(0);return()=>{let n=BigInt(Date.now())*tA;if(n>t)t=n;return t}}(),xU=function(){let e=BigInt(1e9),t;return()=>{let n=nA(),r=BigInt(Date.now())*tA;if(t===void 0)t=r-n;else{let i=t+n;if((r>i?r-i:i-r)>e)t=r-n}return t+n}}(),Wn=(e)=>ze((t)=>e(t.getRef(yr))),pc=(e)=>Wn((t)=>t.sleep(Ot(e))),Sm=Wn((e)=>e.currentTimeMillis),rA=Wn((e)=>e.currentTimeNanos),iA=Wn((e)=>e.monotonicTimeNanos),Ul="~effect/Cause/TimeoutError",oA=(e)=>be(e,Ul);class xm extends Li("TimeoutError"){[Ul]=Ul;constructor(e){super({message:e})}}var Wl="~effect/Cause/IllegalArgumentError",sA=(e)=>be(e,Wl);class Ub extends Li("IllegalArgumentError"){[Wl]=Wl;constructor(e){super({message:e})}}var Jl="~effect/Cause/ExceededCapacityError",aA=(e)=>be(e,Jl);class Wb extends Li("ExceededCapacityError"){[Jl]=Jl;constructor(e){super({message:e})}}var Hl="~effect/Cause/AsyncFiberError",cA=(e)=>be(e,Hl);class vm extends Li("AsyncFiberError"){[Hl]=Hl;constructor(e){super({message:"An asynchronous Effect was executed with Effect.runSync",fiber:e})}}var Gl="~effect/Cause/UnknownError",lA=(e)=>be(e,Gl);class su extends Li("UnknownError"){[Gl]=Gl;constructor(e,t){super({message:t,cause:e})}}var vU=He("effect/Console",{defaultValue:()=>globalThis.console}),wU=(e)=>{switch(e){case"All":return Number.MIN_SAFE_INTEGER;case"Fatal":return 50000;case"Error":return 40000;case"Warn":return 30000;case"Info":return 20000;case"Debug":return 1e4;case"Trace":return 0;case"None":return Number.MAX_SAFE_INTEGER}},TU=sy(Ml,wU),uA=bd(TU),Jb=He("effect/Logger/CurrentLoggers",{defaultValue:()=>new Set([AU,OU])}),CU=He("effect/Logger/LogToStderr",{defaultValue:nd}),pA=function(){let e=typeof arguments[0]==="string"?[[arguments[0],arguments[1]]]:Object.entries(arguments[0]);return Bs(ze((t)=>{let n=t.getRef($i),r={...n};for(let i=0;i<e.length;i++){let[o,s]=e[i];sn(r,o,s)}return t.setContext(Cn(t.context,$i,r)),zo(gi(t.context,Do),(i)=>{let o=t.getRef($i),s={...o};for(let c=0;c<e.length;c++){let[l,u]=e[c];if(o[l]!==u&&!Object.is(o[l],u))continue;if(Object.hasOwn(n,l))sn(s,l,n[l]);else delete s[l]}return t.setContext(Cn(t.context,$i,s)),Le})}))},EU="~effect/Logger",IU={[EU]:{_Message:Fe,_Output:Fe},pipe(){return et(this,arguments)}},dA=(e)=>{let t=Object.create(IU);return t.log=e,t},RU=(e)=>e.replace(/[\s="]/g,"_"),kU=(e,t)=>`${RU(e[0])}=${t-e[1]}ms`;var Jr=(e)=>(...t)=>{let n=void 0;for(let r=0,i=t.length;r<i;r++){let o=t[r];if(Ba(o)){if(n)t.splice(r,1);else t=t.slice(0,r).concat(t.slice(r+1));n=n?_i(n.reasons.concat(o.reasons)):o,r--}}if(n===void 0)n=cd;return ze((r)=>{let i=e??r.cache.logLevel;if(uA(r.cache.minimumLogLevel,i))return Le;let o=r.getRef(yr),s=r.getRef(Jb);if(s.size>0){let c=new Date(o.currentTimeMillisUnsafe());for(let l of s)l.log({cause:n,fiber:r,date:c,logLevel:i,message:t})}return Le})};var Ds={bold:"1",red:"31",green:"32",yellow:"33",blue:"34",cyan:"36",white:"37",gray:"90",black:"30",bgBrightRed:"101"},cie={None:[],All:[],Trace:[Ds.gray],Debug:[Ds.blue],Info:[Ds.green],Warn:[Ds.yellow],Error:[Ds.red],Fatal:[Ds.bgBrightRed,Ds.black]};var PU=(e)=>`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`;var AU=dA(({cause:e,date:t,fiber:n,logLevel:r,message:i})=>{let o=Array.isArray(i)?i.slice():[i];if(e.reasons.length>0)o.push(Yd(e));let s=t.getTime(),c=n.getRef(Wd),l="";for(let g of c)l+=` ${kU(g,s)}`;let u=n.getRef($i);if(Object.keys(u).length>0)o.push(u);let p=n.getRef(vU);(n.getRef(CU)?p.error:p.log)(`[${PU(t)}] ${r.toUpperCase()} (#${n.id})${l}:`,...o)}),OU=dA(({cause:e,fiber:t,logLevel:n,message:r})=>{let i=t.getRef(yr),o=t.getRef($i),s=t.cache.span;if(s===void 0||s._tag==="ExternalSpan")return;let c={};for(let[l,u]of Object.entries(o))sn(c,l,u);if(c["effect.fiberId"]=t.id,c["effect.logLevel"]=n.toUpperCase(),e.reasons.length>0)c["effect.cause"]=Yd(e);s.event(_E(Array.isArray(r)&&r.length===1?r[0]:r),i.currentTimeNanosUnsafe(),c)});function DU(){Fy.interruptChildren??=H$}var au=oe(void 0);var mA=x((e)=>ke(e[0]),(e,t)=>zb(e,(n)=>ze((r)=>(zU(r,n,t?.defectsOnly),Le)))),zU=(e,t,n)=>{let r=e.getRef(cR);if(r.size===0)return;if(n&&!Gd(t))return;let i={cause:t,fiber:e,timestamp:e.getRef(yr).currentTimeNanosUnsafe()};r.forEach((o)=>o.report(i))};var MU=Gh,Hb=yt,Gb=mn,jU=qr,NU=Tn,BU=im,_U=Yn;var Fs=Ao,cu=lb,FU=ak,LU=sk,qU=pb,ZU=nk,$U=rk,UU=ik,WU=eu,JU=ub,HU=ok,GU=ck,VU=db,QU=mb,KU=fb,YU=lk,XU=gb,eW=uk,tW=pk,nW=dk;var vt={};Ln(vt,{Scope:()=>Vb,addFinalizer:()=>oW,addFinalizerExit:()=>iW,close:()=>wm,closeUnsafe:()=>aW,fork:()=>sW,forkUnsafe:()=>lu,make:()=>rW,makeUnsafe:()=>Qb,provide:()=>dc,use:()=>cW});var Vb=Do,rW=Gk,Qb=ru,dc=Ab,iW=zo,oW=Jk,sW=Wk,lu=kb,wm=Rb,aW=ac,cW=Vk;var te={};Ln(te,{Do:()=>AG,Transaction:()=>Tu,TypeId:()=>gG,abortSignal:()=>M2,acquireDisposable:()=>y2,acquireRelease:()=>Eu,acquireUseRelease:()=>b2,addFinalizer:()=>S2,all:()=>hG,andThen:()=>HG,annotateCurrentSpan:()=>J2,annotateLogs:()=>MQ,annotateLogsScoped:()=>jQ,annotateSpans:()=>W2,as:()=>QG,asSome:()=>KG,asVoid:()=>YG,awaitAllChildren:()=>uQ,bind:()=>zG,bindTo:()=>OG,cached:()=>R2,cachedInvalidateWithTTL:()=>P2,cachedWithTTL:()=>k2,callback:()=>ES,catch:()=>nV,catchCause:()=>cV,catchCauseFilter:()=>fV,catchCauseIf:()=>mV,catchDefect:()=>lV,catchEager:()=>eK,catchFilter:()=>pV,catchIf:()=>uV,catchNoSuchElement:()=>dV,catchReason:()=>oV,catchReasons:()=>sV,catchTag:()=>rV,catchTags:()=>iV,clockWith:()=>jO,context:()=>Cu,contextWith:()=>i2,currentParentSpan:()=>G2,currentSpan:()=>H2,delay:()=>MV,die:()=>IO,effectify:()=>JQ,ensuring:()=>x2,eventually:()=>vV,exit:()=>kO,fail:()=>CS,failCause:()=>NG,failCauseSync:()=>BG,failSync:()=>jG,fiber:()=>pQ,fiberId:()=>dQ,filter:()=>qV,filterMap:()=>ZV,filterMapEffect:()=>$V,filterMapOrElse:()=>WV,filterMapOrFail:()=>HV,filterOrElse:()=>UV,filterOrFail:()=>JV,findFirst:()=>xG,findFirstFilter:()=>vG,firstSuccessOf:()=>AV,flatMap:()=>Ki,flatMapEager:()=>XQ,flatten:()=>JG,flip:()=>XG,fn:()=>CQ,fnUntraced:()=>TQ,fnUntracedEager:()=>tK,forEach:()=>wG,forever:()=>j2,forkChild:()=>sQ,forkDetach:()=>lQ,forkIn:()=>aQ,forkScoped:()=>cQ,fromNullishOr:()=>WG,fromOption:()=>$G,fromResult:()=>ZG,gen:()=>MG,head:()=>TG,ignore:()=>EV,ignoreCause:()=>IV,interrupt:()=>Ks,interruptible:()=>A2,interruptibleMask:()=>z2,isEffect:()=>Vr,isFailure:()=>n2,isSuccess:()=>r2,let:()=>DG,linkSpans:()=>K2,log:()=>IQ,logDebug:()=>OQ,logError:()=>PQ,logFatal:()=>RQ,logInfo:()=>AQ,logTrace:()=>DQ,logWarning:()=>kQ,logWithLevel:()=>EQ,makeSpan:()=>Y2,makeSpanScoped:()=>X2,map:()=>Qs,mapBoth:()=>hV,mapBothEager:()=>YQ,mapEager:()=>QQ,mapError:()=>gV,mapErrorEager:()=>KQ,match:()=>VV,matchCause:()=>KV,matchCauseEager:()=>YV,matchCauseEffect:()=>e2,matchCauseEffectEager:()=>XV,matchEager:()=>QV,matchEffect:()=>t2,never:()=>PG,onError:()=>v2,onErrorFilter:()=>T2,onErrorIf:()=>w2,onExit:()=>IS,onExitFilter:()=>I2,onExitIf:()=>E2,onExitPrimitive:()=>C2,onInterrupt:()=>O2,option:()=>VG,orDie:()=>yV,orElseSucceed:()=>PV,partition:()=>yG,promise:()=>CG,provide:()=>o2,provideContext:()=>s2,provideService:()=>DO,provideServiceEffect:()=>m2,race:()=>FV,raceAll:()=>BV,raceAllFirst:()=>_V,raceFirst:()=>LV,reduce:()=>bG,repeat:()=>N2,repeatOrElse:()=>B2,replicate:()=>_2,replicateEffect:()=>F2,request:()=>iQ,requestUnsafe:()=>oQ,result:()=>GG,retry:()=>wV,retryOrElse:()=>TV,runCallback:()=>fQ,runCallbackWith:()=>mQ,runFork:()=>Iu,runForkWith:()=>Ru,runPromise:()=>gQ,runPromiseExit:()=>yQ,runPromiseExitWith:()=>bQ,runPromiseWith:()=>hQ,runSync:()=>SQ,runSyncExit:()=>vQ,runSyncExitWith:()=>wQ,runSyncWith:()=>xQ,sandbox:()=>CV,satisfiesErrorType:()=>GQ,satisfiesServicesType:()=>VQ,satisfiesSuccessType:()=>HQ,schedule:()=>L2,scheduleFrom:()=>MO,scope:()=>f2,scoped:()=>g2,scopedWith:()=>h2,service:()=>c2,serviceOption:()=>l2,setContext:()=>a2,sleep:()=>jV,spanAnnotations:()=>V2,spanLinks:()=>Q2,succeed:()=>Vs,succeedNone:()=>IG,succeedSome:()=>RG,suspend:()=>Qi,sync:()=>tr,tap:()=>RO,tapCause:()=>AO,tapCauseFilter:()=>xV,tapCauseIf:()=>SV,tapDefect:()=>OO,tapError:()=>PO,tapErrorTag:()=>bV,timed:()=>NV,timeout:()=>OV,timeoutOption:()=>DV,timeoutOrElse:()=>zV,tracer:()=>q2,track:()=>BQ,trackDefects:()=>LQ,trackDuration:()=>qQ,trackErrors:()=>FQ,trackSuccesses:()=>_Q,transposeOption:()=>UG,try:()=>_G,tryPromise:()=>EG,tx:()=>ZQ,txRetry:()=>WQ,undefined:()=>kG,uninterruptible:()=>D2,uninterruptibleMask:()=>zO,unwrapReason:()=>aV,updateContext:()=>u2,updateService:()=>p2,updateServiceScoped:()=>d2,useSpan:()=>eQ,validate:()=>SG,void:()=>Tr,when:()=>GV,whileLoop:()=>Ec,withErrorReporting:()=>kV,withExecutionPlan:()=>RV,withFiber:()=>Ic,withFiberSucceed:()=>qG,withLogSpan:()=>NQ,withLogger:()=>zQ,withParentSpan:()=>rQ,withSpan:()=>tQ,withSpanScoped:()=>nQ,withTracer:()=>Z2,withTracerEnabled:()=>$2,withTracerTiming:()=>U2,yieldNow:()=>FG,yieldNowWith:()=>LG,zip:()=>eV,zipWith:()=>tV});var Ws={};Ln(Ws,{CurrentMemoMap:()=>Zs,build:()=>IA,buildWithMemoMap:()=>uu,buildWithScope:()=>iS,catch:()=>IW,catchCause:()=>kW,catchTag:()=>RW,effect:()=>Rm,effectContext:()=>oS,effectDiscard:()=>bW,empty:()=>hW,flatMap:()=>AA,forkMemoMap:()=>gW,forkMemoMapUnsafe:()=>rS,fresh:()=>PW,fromBuild:()=>No,fromBuildMemo:()=>Im,isLayer:()=>Em,launch:()=>AW,makeMemoMap:()=>fW,makeMemoMapUnsafe:()=>gc,merge:()=>xW,mergeAll:()=>km,mock:()=>OW,orDie:()=>EW,parentSpan:()=>DA,provide:()=>fc,provideMerge:()=>vW,satisfiesErrorType:()=>MW,satisfiesServicesType:()=>jW,satisfiesSuccessType:()=>zW,span:()=>NW,succeed:()=>RA,succeedContext:()=>$s,suspend:()=>SW,sync:()=>yW,syncContext:()=>Xb,tap:()=>wW,tapCause:()=>CW,tapError:()=>TW,unwrap:()=>eS,updateService:()=>OA,withParentSpan:()=>tS,withSpan:()=>BW});var fA="~effect/Deferred",die=(e)=>be(e,fA),lW={[fA]:{_A:Fe,_E:Fe},pipe(){return et(this,arguments)}},gA=function(){this.resumes=void 0,this.effect=void 0};gA.prototype=lW;var Ls=()=>new gA,mie=()=>Oe(()=>Ls()),mc=(e)=>hn((t)=>{if(e.effect)return t(e.effect);return e.resumes??=[],e.resumes.push(t),Oe(()=>{let n=e.resumes;if(n===void 0)return;let r=n.indexOf(t);if(r>=0)n.splice(r,1)})});var uW=x(2,(e,t)=>Oe(()=>qs(e,t))),Kb=uW;var pW=x(2,(e,t)=>Kb(e,mn(t)));var fie=x(2,(e,t)=>pW(e,js(t)));var gie=x(2,(e,t)=>Kb(e,yt(t)));var qs=(e,t)=>{if(e.effect)return!1;if(e.effect=t,e.resumes){let n=e.resumes;e.resumes=void 0;for(let r=0;r<n.length;r++)n[r](t)}return!0},Tm=x(2,(e,t)=>jo((n)=>ge(sc(n(e)),(r)=>Kb(t,r))));var hA=$i;var yA=Wd,bA=Ka;var hie=Os,yie=lR;var EA="~effect/Layer",SA="~effect/Layer/MemoMap",dW=(e,t)=>{let n={observers:0,deferred:Ls(),scope:Qb(),finalizer:(r)=>De(()=>{if(--n.observers>0)return Le;return e.map.delete(t),wm(n.scope,r)})};return n},xA=(e,t)=>{if(t.state._tag==="Closed")return!1;return e.observers++,cc(t,{},e.finalizer),!0},Em=(e)=>be(e,EA),mW={[EA]:{_ROut:Fe,_E:Fe,_RIn:Fe},pipe(){return et(this,arguments)}},Us=(e)=>{let t=Object.create(mW);return t.build=e,t},No=(e)=>Us((t,n)=>{let r=lu(n);return Un(e(t,r),(i)=>i._tag==="Failure"?wm(r,i):Le)}),Im=(e)=>{let t=No((n,r)=>n.getOrElseMemoize(t,r,e));return t};class nS{get[SA](){return SA}parent;constructor(e){this.parent=e}map=new Map;get(e,t){let n=this.map.get(e);if(n)return xA(n,t),n.deferred.effect??mc(n.deferred);return this.parent?.get(e,t)}getOrElseMemoize(e,t,n){return De(()=>{let r;return Mo(De(()=>{let i=this.get(e,t);if(i)return i;let o=dW(this,e);if(!xA(o,t))return n(this,t);return r=o.deferred,this.map.set(e,o),n(this,o.scope)}),(i)=>{if(r)qs(r,i)})})}}var gc=()=>new nS,rS=(e)=>new nS(e),fW=Oe(gc),gW=(e)=>Oe(()=>rS(e));class Zs extends Zn()("effect/Layer/CurrentMemoMap"){static forkOrCreate(e){let t=Bl(e,Zs);return t?rS(t):gc()}}var uu=x(3,(e,t,n)=>In(Ne(e.build(t,n),Cn(Zs,t)),Zs,t)),IA=(e)=>ze((t)=>uu(e,Zs.forkOrCreate(t.context),gi(t.context,Vb))),iS=x(2,(e,t)=>ze((n)=>uu(e,Zs.forkOrCreate(n.context),t))),RA=function(){if(arguments.length===1)return(e)=>$s(fi(arguments[0],e));return $s(fi(arguments[0],arguments[1]))},$s=(e)=>Us(Pt(oe(e))),hW=$s(fn()),yW=function(){if(arguments.length===1)return(e)=>Xb(()=>fi(arguments[0],e()));return Xb(()=>fi(arguments[0],arguments[1]()))},Xb=(e)=>Im(Pt(Oe(e))),Rm=function(){if(arguments.length===1)return(e)=>vA(arguments[0],e);return vA(arguments[0],arguments[1])},vA=(e,t)=>oS(Ne(t,(n)=>fi(e,n))),oS=(e)=>Im((t,n)=>dc(e,n)),bW=(e)=>oS(yn(e,fn())),SW=(e)=>Im((t,n)=>De(()=>e().build(t,n))),wA=Zn("effect/Layer/unwrap"),eS=(e)=>AA(Rm(wA)(e),At(wA)),kA=(e,t,n)=>{let r=lu(n,"parallel");return En(e,(i)=>i.build(t,lu(r,"sequential")),{concurrency:e.length}).pipe(Ne((i)=>Cy(...i)))},km=(...e)=>No((t,n)=>kA(e,t,n)),xW=x(2,(e,t)=>km(e,...Array.isArray(t)?t:[t])),PA=(e,t,n)=>No((r,i)=>ge(Array.isArray(t)?kA(t,r,i):t.build(r,i),(o)=>e.build(r,i).pipe(Wr(o),Ne((s)=>n(s,o))))),fc=x(2,(e,t)=>PA(e,t,Fe)),vW=x(2,(e,t)=>PA(e,t,(n,r)=>Ga(r,n))),AA=x(2,(e,t)=>No((n,r)=>ge(e.build(n,r),(i)=>t(i).build(n,r)))),wW=x(2,(e,t)=>No((n,r)=>ge(e.build(n,r),(i)=>dc(yn(t(i),i),r)))),TW=x(2,(e,t)=>No((n,r)=>kn(e.build(n,r),(i)=>dc(hi(t(i),lt(i)),r)))),CW=x(2,(e,t)=>No((n,r)=>Rn(e.build(n,r),(i)=>dc(hi(t(i),Ve(i)),r)))),EW=(e)=>Us((t,n)=>um(e.build(t,n))),IW=x(2,(e,t)=>Us((n,r)=>kn(e.build(n,r),(i)=>t(i).build(n,r))));var RW=x(3,(e,t,n)=>Us((r,i)=>lm(e.build(r,i),t,(o)=>n(o).build(r,i)))),kW=x(2,(e,t)=>Us((n,r)=>Rn(e.build(n,r),(i)=>t(i).build(n,r)))),OA=x(3,(e,t,n)=>fc(e,Rm(t,Ne(t,n)))),PW=(e)=>Us((t,n)=>e.build(gc(),n)),AW=(e)=>mm(hi(IA(e),Xl)),OW=function(){if(arguments.length===1)return(e)=>TA(arguments[0],e);return TA(arguments[0],arguments[1])},TA=(e,t)=>RA(e)(new Proxy({...t},{get(n,r,i){if(r in n)return n[r];let o=ai();Gn(2);let s=Error(`${e.key}: Unimplemented method "${r.toString()}"`);return Gn(o),s.name="UnimplementedError",DW(s)},has:ji})),DW=(e)=>{let t=Object.assign(Wi(e),{[CA]:CA,channel:{[Cm]:Cm,transform:()=>oe(t),pipe(){return et(this,arguments)}},[Cm]:Cm,transform:()=>oe(t)});function n(){return t}return Object.assign(n,t),Object.setPrototypeOf(n,Object.getPrototypeOf(t)),n},CA="~effect/Stream",Cm="~effect/Channel",zW=()=>(e)=>e,MW=()=>(e)=>e,jW=()=>(e)=>e,NW=(e,t)=>(t=ko(t),Rm(As,t?.onEnd?Ur($r(e,t),(n)=>lc((r)=>t.onEnd(n,r))):$r(e,t))),DA=(e)=>$s(As.context(e)),BW=function(){let e=typeof arguments[0]!=="string",t=e?arguments[1]:arguments[0],n=ko(e?arguments[2]:arguments[1]);if(e){let r=arguments[0];return eS(Ne(n?.onEnd!==void 0?Ur($r(t,n),(i)=>lc((o)=>n.onEnd(i,o))):$r(t,n),(i)=>tS(r,i,n)))}return(r)=>eS(Ne(n?.onEnd!==void 0?Ur($r(t,n),(i)=>lc((o)=>n.onEnd(i,o))):$r(t,n),(i)=>tS(r,i,n)))},tS=function(){let e=Em(arguments[0]),t=e?arguments[1]:arguments[0],n=e?arguments[2]:arguments[1],r=Fe;if(t._tag==="Span")n=ko(n),r=_W(t.name,n?.captureStackTrace);let i=DA(t);if(e)return fc(r(arguments[0]),i);return(o)=>fc(r(o),i)},_W=(e,t)=>(t=typeof t==="function"?t:Fn,OA(bA,(n)=>({name:e,stack:t,parent:n})));var zA="~effect/ExecutionPlan";var FW={[zA]:zA,get captureRequirements(){let e=this;return Oo((t)=>oe(LW(e.steps.map((n)=>({...n,while:n.while?(r)=>Wr(n.while(r),t):void 0,provide:Em(n.provide)?fc(n.provide,$s(t)):n.provide})))))},pipe(){return et(this,arguments)}},LW=(e)=>{let t=Object.create(FW);return t.steps=e,t};var MA=He("effect/ExecutionPlan/CurrentMetadata",{defaultValue:Pt({attempt:0,stepIndex:0})});var wr={};Ln(wr,{CurrentMetadata:()=>Bo,addDelay:()=>zH,concat:()=>MH,concatResult:()=>cO,cron:()=>BH,duration:()=>_H,during:()=>FH,exponential:()=>ZH,fibonacci:()=>$H,fixed:()=>UH,forever:()=>Bm,fromStep:()=>er,fromStepWithMetadata:()=>Hs,identity:()=>KH,isSchedule:()=>Mm,jittered:()=>WH,map:()=>xu,max:()=>jH,min:()=>LH,modifyDelay:()=>xS,once:()=>VH,passthrough:()=>jm,recurs:()=>Nm,setInputType:()=>YH,spaced:()=>lO,tap:()=>JH,toStep:()=>bi,toStepWithMetadata:()=>Tc,toStepWithSleep:()=>DH,upTo:()=>HH,while:()=>Gs,windowed:()=>GH});var Xn={};Ln(Xn,{AsyncFiberError:()=>OJ,AsyncFiberErrorTypeId:()=>PJ,Done:()=>xJ,DoneTypeId:()=>SJ,ExceededCapacityError:()=>kJ,ExceededCapacityErrorTypeId:()=>RJ,IllegalArgumentError:()=>fu,IllegalArgumentErrorTypeId:()=>CJ,InterruptorStackTrace:()=>NA,NoSuchElementError:()=>bJ,NoSuchElementErrorTypeId:()=>yJ,ReasonTypeId:()=>$W,StackTrace:()=>jA,TimeoutError:()=>TJ,TimeoutErrorTypeId:()=>vJ,TypeId:()=>ZW,UnknownError:()=>MJ,UnknownErrorTypeId:()=>DJ,annotate:()=>jJ,annotations:()=>BJ,combine:()=>rJ,die:()=>KW,done:()=>Hr,empty:()=>VW,fail:()=>QW,filterInterruptors:()=>mu,findDefect:()=>uJ,findDie:()=>lJ,findError:()=>sJ,findErrorOption:()=>aJ,findFail:()=>oJ,findInterrupt:()=>dJ,fromReasons:()=>sS,hasDies:()=>cJ,hasFails:()=>iJ,hasInterrupts:()=>pJ,hasInterruptsOnly:()=>pu,interrupt:()=>YW,interruptors:()=>mJ,isAsyncFiberError:()=>AJ,isCause:()=>UW,isDieReason:()=>HW,isDone:()=>aS,isExceededCapacityError:()=>IJ,isFailReason:()=>JW,isIllegalArgumentError:()=>EJ,isInterruptReason:()=>GW,isNoSuchElementError:()=>hJ,isReason:()=>WW,isTimeoutError:()=>wJ,isUnknownError:()=>zJ,makeDieReason:()=>eJ,makeFailReason:()=>XW,makeInterruptReason:()=>tJ,map:()=>nJ,pretty:()=>gJ,prettyErrors:()=>fJ,reasonAnnotations:()=>NJ,squash:()=>du});var ZW=Rl,$W=Na,UW=Ba,WW=qE,JW=Fi,HW=Ts,GW=Cs,sS=_i,VW=cd,QW=Vh,KW=Qh,YW=js,XW=(e)=>new _a(e),eJ=(e)=>new ld(e),tJ=yR,pu=wR,nJ=ER,rJ=ws,du=Kd,iJ=Wy,oJ=Jy,sJ=br,aJ=bR,cJ=Gd,lJ=SR,uJ=Vl,pJ=Vd,dJ=xR,mJ=vR,mu=Qd,fJ=Hy,gJ=Yd,hJ=pd,yJ=kl,bJ=ui,aS=Ol,SJ=xs,xJ=Xh,Hr=WE,vJ=Ul,wJ=oA,TJ=xm,CJ=Wl,EJ=sA,fu=Ub,IJ=aA,RJ=Jl,kJ=Wb,PJ=Hl,AJ=cA,OJ=vm,DJ=Gl,zJ=lA,MJ=su,jJ=Fa,NJ=TR,BJ=CR;class jA extends Zn()("effect/Cause/StackTrace"){}class NA extends Zn()("effect/Cause/InterruptorStackTrace"){}var gu={};Ln(gu,{Clock:()=>_J,clockWith:()=>FJ,currentTimeMillis:()=>LJ,currentTimeNanos:()=>qJ,monotonicTimeNanos:()=>ZJ});var _J=yr,FJ=Wn,LJ=Sm,qJ=rA,ZJ=iA;var cS="~effect/DateTime",lS="~effect/DateTime/TimeZone",LA={[cS]:cS,pipe(){return et(this,arguments)},[wn](){return this.toString()},toJSON(){return hc(this).toJSON()}},$J={...LA,_tag:"Utc",[pt](){return vo(this.epochMilliseconds)},[dt](e){return bu(e)&&e._tag==="Utc"&&this.epochMilliseconds===e.epochMilliseconds},toString(){return`DateTime.Utc(${hc(this).toJSON()})`}},UJ={...LA,_tag:"Zoned",[pt](){return at(vo(this.epochMilliseconds))($e(this.zone))},[dt](e){return bu(e)&&e._tag==="Zoned"&&this.epochMilliseconds===e.epochMilliseconds&&ct(this.zone,e.zone)},toString(){return`DateTime.Zoned(${cH(this)})`}},qA={[lS]:lS,[wn](){return this.toString()}},WJ={...qA,_tag:"Named",[pt](){return Qt(`Named:${this.id}`)},[dt](e){return Js(e)&&e._tag==="Named"&&this.id===e.id},toString(){return`TimeZone.Named(${this.id})`},toJSON(){return{_id:"TimeZone",_tag:"Named",id:this.id}}},JJ={...qA,_tag:"Offset",[pt](){return Qt(`Offset:${this.offset}`)},[dt](e){return Js(e)&&e._tag==="Offset"&&this.offset===e.offset},toString(){return`TimeZone.Offset(${mS(this.offset)})`},toJSON(){return{_id:"TimeZone",_tag:"Offset",offset:this.offset}}},yi=(e,t,n)=>{let r=Object.create(UJ);return r.epochMilliseconds=e,r.zone=t,Object.defineProperty(r,"partsUtc",{value:n,enumerable:!1,writable:!0}),Object.defineProperty(r,"adjustedEpochMillis",{value:void 0,enumerable:!1,writable:!0}),Object.defineProperty(r,"partsAdjusted",{value:void 0,enumerable:!1,writable:!0}),r},bu=(e)=>be(e,cS),HJ=(e)=>bu(e[0]),Js=(e)=>be(e,lS),Pie=(e)=>Js(e)&&e._tag==="Offset",ZA=(e)=>Js(e)&&e._tag==="Named",Aie=(e)=>e._tag==="Utc",GJ=(e)=>e._tag==="Zoned",Oie=pi((e,t)=>e.epochMilliseconds===t.epochMilliseconds);var pS=(e)=>{let t=Object.create($J);return t.epochMilliseconds=e,Object.defineProperty(t,"partsUtc",{value:void 0,enumerable:!1,writable:!0}),t},hu=(e)=>{let t=e.getTime();if(Number.isNaN(t))throw new fu("Invalid date");return pS(t)},$A=(e)=>{if(bu(e))return e;else if(e instanceof Date)return hu(e);else if(typeof e==="object"){if("epochMilliseconds"in e)return hu(new Date(e.epochMilliseconds));let t=new Date(0);return sH(t,e),hu(t)}else if(typeof e==="string"&&!VJ(e))return hu(new Date(e+"Z"));return hu(new Date(e))},VJ=(e)=>/Z|GMT|[+-]\d{2}$|[+-]\d{2}:?\d{2}$|\]$/.test(e),QJ=-8639999956800000,KJ=8639999949600000,Am=(e,t)=>{let n=t?.timeZone;if(n===void 0&&bu(e)&&GJ(e))return e;let r=$A(e);if(r.epochMilliseconds<QJ||r.epochMilliseconds>KJ)throw RangeError(`Epoch millis out of range: ${r.epochMilliseconds}`);if(n===void 0&&typeof e==="object"&&"timeZoneId"in e)n=e.timeZoneId;let i;if(n===void 0){let o=new Date(r.epochMilliseconds).getTimezoneOffset()*-60*1000;i=uS(o)}else if(Js(n))i=n;else if(typeof n==="number")i=uS(n);else{let o=dS(n);if(Je(o))throw new fu(`Invalid time zone: ${n}`);i=o.value}if(t?.adjustForTimeZone!==!0)return yi(r.epochMilliseconds,i,r.partsUtc);return WA(r.epochMilliseconds,i,t?.disambiguation??"compatible")},BA=Ro(Am),Die=Ro($A),YJ=/^(.{17,35})\[(.+)\]$/,zie=(e)=>{let t=YJ.exec(e);if(t===null){let i=fS(e);return i!==null?BA(e,{timeZone:i}):Se()}let[,n,r]=t;return BA(n,{timeZone:r})};var Mie=(e)=>pS(e.epochMilliseconds);var Pm=new Map,XJ={day:"numeric",month:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"longOffset",fractionalSecondDigits:3,hourCycle:"h23"},eH=(e)=>{let t=e.resolvedOptions().timeZone,n=Pm.get(t);if(n!==void 0)return n;let r=Object.create(WJ);return r.id=t,r.format=e,Pm.set(t,r),r},tH=(e)=>{let t=Pm.get(e);if(t!==void 0)return t;try{let n=eH(new Intl.DateTimeFormat("en-US",{...XJ,timeZone:e}));return Pm.set(e,n),n}catch{throw new fu(`Invalid time zone: ${e}`)}},uS=(e)=>{let t=Object.create(JJ);return t.offset=e,t},nH=Ro(tH);var rH=/^(?:GMT|[+-])/,dS=(e)=>{if(rH.test(e)){let t=fS(e);return t===null?Se():Pe(uS(t))}return nH(e)},jie=(e)=>{if(e._tag==="Offset")return mS(e.offset);return e.id};var hc=(e)=>new Date(e.epochMilliseconds),yc=(e)=>{if(e._tag==="Utc")return new Date(e.epochMilliseconds);else if(e.zone._tag==="Offset")return new Date(e.epochMilliseconds+e.zone.offset);else if(e.adjustedEpochMilliseconds!==void 0)return new Date(e.adjustedEpochMilliseconds);let t=e.zone.format.formatToParts(e.epochMilliseconds).filter((r)=>r.type!=="literal"),n=new Date(0);return n.setUTCFullYear(Number(t[2].value),Number(t[0].value)-1,Number(t[1].value)),n.setUTCHours(Number(t[3].value),Number(t[4].value),Number(t[5].value),t[6]?.type==="fractionalSecond"?Number(t[6].value):(e.epochMilliseconds%1000+1000)%1000),e.adjustedEpochMilliseconds=n.getTime(),n},UA=(e)=>yc(e).getTime()-oH(e),mS=(e)=>{let t=Math.abs(e),n=Math.floor(t/3600000),r=Math.round(t%3600000/60000);if(r===60)n+=1,r=0;return`${e<0?"-":"+"}${String(n).padStart(2,"0")}:${String(r).padStart(2,"0")}`},iH=(e)=>mS(UA(e)),oH=(e)=>e.epochMilliseconds;var sH=(e,t)=>{if(t.year!==void 0||t.month!==void 0||t.day!==void 0)e.setUTCFullYear(t.year??e.getUTCFullYear(),t.month!==void 0?t.month-1:e.getUTCMonth(),t.day??e.getUTCDate());if(t.weekDay!==void 0){let n=t.weekDay-e.getUTCDay();e.setUTCDate(e.getUTCDate()+n)}if(t.hour!==void 0)e.setUTCHours(t.hour);if(t.minute!==void 0)e.setUTCMinutes(t.minute);if(t.second!==void 0)e.setUTCSeconds(t.second);if(t.millisecond!==void 0)e.setUTCMilliseconds(t.millisecond)};var _A=86400000,WA=(e,t,n)=>{if(t._tag==="Offset")return yi(e-t.offset,t);let r=yu(e-_A,e,t),i=yu(e+_A,e,t);if(r===i)return yi(e-r,t);let o=r<i,s=r-i;if(o){if(yu(e-i,e,t)===i)return yi(e-i,t);let u=yi(e-r,t),p=yc(u).getTime();if(e!==p)switch(n){case"reject":{let m=new Date(e).toISOString();throw RangeError(`Gap time: ${m} does not exist in time zone ${t.id}`)}case"earlier":return yi(e-i,t);case"compatible":case"later":return u}return u}if(yu(e-r,e,t)===r){if(n==="earlier"||n==="compatible")return yi(e-r,t);if(yu(e-r+s,e+s,t)===r)return yi(e-r,t);if(n==="reject"){let u=new Date(e).toISOString();throw RangeError(`Ambiguous time: ${u} occurs twice in time zone ${t.id}`)}}return yi(e-i,t)},aH=/([+-])(\d{2}):(\d{2})$/,fS=(e)=>{let t=aH.exec(e);if(t===null)return null;let[,n,r,i]=t;return(n==="+"?1:-1)*(Number(r)*60+Number(i))*60*1000},yu=(e,t,n)=>{let r=n.format.formatToParts(e).find((o)=>o.type==="timeZoneName")?.value??"";if(r==="GMT")return 0;let i=fS(r);if(i===null)return UA(yi(t,n));return i},JA=x(HJ,(e,t,n)=>{if(e._tag==="Utc"){let o=hc(e);return t(o),pS(o.getTime())}let r=yc(e),i=new Date(r.getTime());return t(i),WA(i.getTime(),e.zone,n?.disambiguation??"compatible")});var Nie=(e)=>hc(e).toISOString();var FA=(e)=>{let t=yc(e);return e._tag==="Utc"?t.toISOString():`${t.toISOString().slice(0,-1)}${iH(e)}`},cH=(e)=>e.zone._tag==="Offset"?FA(e):`${FA(e)}[${e.zone.id}]`;var _ie=globalThis.Number;var GA=Ml;var Fie=x(2,(e,t)=>{if(!globalThis.Number.isFinite(e)||!globalThis.Number.isFinite(t)||t===0)return NaN;if(globalThis.Number.isInteger(e)&&globalThis.Number.isInteger(t))return e%t;let[n,r]=HA(e),[i,o]=HA(t),s=Math.min(r,o),c=n*BigInt(10)**BigInt(r-s),l=i*BigInt(10)**BigInt(o-s),u=c%l;if(u===BigInt(0))return e<0||Object.is(e,-0)?-0:0;let p=globalThis.Number(`${u}e${s}`);return p===0?Math.sign(e)*globalThis.Number.MIN_VALUE:p});function HA(e){if(globalThis.Number.isInteger(e))return[BigInt(e),0];let t=Math.abs(e).toExponential(),n=t.indexOf("e"),r=t.slice(0,n).replace(".","");return[BigInt(r)*(e<0?-BigInt(1):BigInt(1)),globalThis.Number(t.slice(n+1))-r.length+1]}var Lie=(e)=>{let t=Math.ceil(Math.log(e)/Math.log(2));return Math.max(Math.pow(2,t),2)};var Zie=globalThis.String,$ie=fs;var VA=(e)=>e.toLowerCase();var Uie=(e)=>e.trim();var QA=(e)=>e.length>0;var KA=13,YA=10;class XA{index;length;s;stripped;constructor(e,t=!1){this.s=e,this.stripped=t,this.index=0,this.length=e.length}next(){if(this.done)return{done:!0,value:void 0};let e=this.index;while(!this.done&&!pH(this.s[this.index]))this.index=this.index+1;let t=this.index;if(!this.done){let n=this.s[this.index];if(this.index=this.index+1,!this.done&&dH(n,this.s[this.index]))this.index=this.index+1;if(!this.stripped)t=this.index}return{done:!1,value:this.s.substring(e,t)}}[Symbol.iterator](){return new XA(this.s,this.stripped)}get done(){return this.index>=this.length}}var pH=(e)=>{let t=e.charCodeAt(0);return t===KA||t===YA},dH=(e,t)=>e.charCodeAt(0)===KA&&t.charCodeAt(0)===YA;var yS="~effect/Cron";function gS(e){return{tz:e.tz,and:e.and,seconds:Et(e.seconds),minutes:Et(e.minutes),hours:Et(e.hours),days:Et(e.days),months:Et(e.months),weekdays:Et(e.weekdays)}}var fH={[yS]:yS,[dt](e){return bS(e)&&SH(this,e)},[pt](){return wE($e(this.tz),at($e(this.and)),at(_r(Et(this.seconds))),at(_r(Et(this.minutes))),at(_r(Et(this.hours))),at(_r(Et(this.days))),at(_r(Et(this.months))),at(_r(Et(this.weekdays))))},toObject(){return gS(this)},toString(){return`Cron(${Nt(gS(this))})`},toJSON(){let e=gS(this);return e._id="Cron",e},[wn](){return this.toJSON()},pipe(){return et(this,arguments)}},bS=(e)=>be(e,yS),gH=(e)=>{let t=Object.create(fH);t.seconds=Sc.seconds(e.seconds??[0]),t.minutes=Sc.minutes(e.minutes),t.hours=Sc.hours(e.hours),t.days=Sc.days(e.days),t.months=Sc.months(e.months),t.weekdays=Sc.weekdays(e.weekdays),t.and=e.and===!0,t.tz=dy(e.tz);let n=Array.from(t.seconds),r=Array.from(t.minutes),i=Array.from(t.hours),o=Array.from(t.days),s=Array.from(t.months),c=Array.from(t.weekdays);return t.first={second:n[0]??0,minute:r[0]??0,hour:i[0]??0,day:o[0]??1,month:(s[0]??1)-1,weekday:c[0]??0},t.last={second:n[n.length-1]??59,minute:r[r.length-1]??59,hour:i[i.length-1]??23,day:o[o.length-1]??31,month:(s[s.length-1]??12)-1,weekday:c[c.length-1]??6},t.next={second:vr.next.second(n),minute:vr.next.minute(r),hour:vr.next.hour(i),day:vr.next.day(o),month:vr.next.month(s),weekday:vr.next.weekday(c)},t.prev={second:vr.prev.second(n),minute:vr.prev.minute(r),hour:vr.prev.hour(i),day:vr.prev.day(o),month:vr.prev.month(s),weekday:vr.prev.weekday(c)},t},bc=(e,t,n,r=(i)=>i)=>(i)=>{let o=[];for(let s of i){if(!Number.isInteger(s)||s<t||s>n)throw RangeError(`${e} must contain only integers between ${t} and ${n}`);o.push(r(s))}return new Set(wI(o,GA))},Sc={seconds:bc("seconds",0,59),minutes:bc("minutes",0,59),hours:bc("hours",0,23),days:bc("days",1,31),months:bc("months",1,12),weekdays:bc("weekdays",0,7,(e)=>e===7?0:e)},xr=(e,t)=>(n)=>{let r=Array(e).fill(void 0);if(n.length===0)return r;let i=void 0;if(t==="next"){let o=n.length-1;for(let s=e-1;s>=0;s--){while(o>=0&&n[o]>=s)i=n[o--];r[s]=i}}else{let o=0;for(let s=0;s<e;s++){while(o<n.length&&n[o]<=s)i=n[o++];r[s]=i}}return r},vr={prev:{second:xr(60,"prev"),minute:xr(60,"prev"),hour:xr(24,"prev"),day:xr(32,"prev"),month:xr(13,"prev"),weekday:xr(7,"prev")},next:{second:xr(60,"next"),minute:xr(60,"next"),hour:xr(24,"next"),day:xr(32,"next"),month:xr(13,"next"),weekday:xr(7,"next")}},eO="~effect/Cron/CronParseError";class Gr extends qd("CronParseError"){[eO]=eO}var nO=(e,t)=>{let n=e.trim().split(/\s+/).filter(QA);if(n.length!==5&&n.length!==6)return Me(new Gr({message:"Invalid number of segments in cron expression",input:e}));if(n.length===5)n.unshift("0");let[r,i,o,s,c,l]=n,u=t===void 0||Js(t)?je(t):my(dS(t),()=>new Gr({message:"Invalid time zone in cron expression",input:t}));return hy({tz:u,seconds:vc(r,xH),minutes:vc(i,vH),hours:vc(o,wH),days:vc(s,TH),months:vc(c,CH),weekdays:vc(l,EH)}).pipe(mi(({tz:p,seconds:m,minutes:g,hours:f,days:v,months:w,weekdays:k})=>gH({tz:p,seconds:m.values,minutes:g.values,hours:f.values,days:v.values,months:w.values,weekdays:k.values,and:(v.wildcard||k.wildcard)&&v.values.size!==0&&k.values.size!==0})))};var Om=(e)=>new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+1,0)).getUTCDate(),rO=(e,t)=>hH(e,t,"next");var hH=(e,t,n)=>{let r=Is(e.tz),i=Am(t??new Date,{timeZone:r}),o=n==="prev",s=o?-1:1,c=e[n],l=o?e.last:e.first,u=o?(f,v)=>f<v:(f,v)=>f>v,m=r!==void 0&&ZA(r)&&r.id==="UTC"?Br:(f)=>{let v=Am(f,{timeZone:i.zone,adjustForTimeZone:!0,disambiguation:o?"later":void 0}).pipe(yc),w=f.getTime()-v.getTime();if(o?w!==0:w>0)f.setTime(o?v.getTime():f.getTime()+w)},g=JA(i,(f)=>{f.setUTCSeconds(f.getUTCSeconds()+s,0);for(let v=0;v<1e4;v++){if(e.seconds.size!==0){let w=f.getUTCSeconds(),k=c.second[w];if(k===void 0){f.setUTCMinutes(f.getUTCMinutes()+s,l.second),m(f);continue}if(u(k,w)){f.setUTCSeconds(k),m(f);continue}}if(e.minutes.size!==0){let w=f.getUTCMinutes(),k=c.minute[w];if(k===void 0){f.setUTCHours(f.getUTCHours()+s,l.minute,l.second),m(f);continue}if(u(k,w)){f.setUTCMinutes(k,l.second),m(f);continue}}if(e.hours.size!==0){let w=f.getUTCHours(),k=c.hour[w];if(k===void 0){f.setUTCDate(f.getUTCDate()+s),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}if(u(k,w)){f.setUTCHours(k,l.minute,l.second),m(f);continue}}if(e.weekdays.size!==0||e.days.size!==0)if(e.and){let w=e.days.size===0||e.days.has(f.getUTCDate()),k=e.weekdays.size===0||e.weekdays.has(f.getUTCDay());if(!w||!k){f.setUTCDate(f.getUTCDate()+s),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}}else{let w=o?-1/0:1/0,k=o?-1/0:1/0;if(e.weekdays.size!==0){let B=f.getUTCDay(),j=c.weekday[B];if(j===void 0)w=o?l.weekday-7-B:7-B+l.weekday;else w=j-B}if(e.days.size!==0&&w!==0){let B=f.getUTCDate(),j=c.day[B];if(j===void 0)if(o){let Y=new Date(f);Y.setUTCDate(0);let G=c.day[Y.getUTCDate()];if(G===void 0)Y.setUTCDate(0),G=c.day[Y.getUTCDate()];if(G===void 0)throw Error("Unable to find cron date");Y.setUTCDate(G),k=(Y.getTime()-f.getTime())/86400000}else k=Om(f)-B+l.day;else if(!o&&j>Om(f))k=Om(f)-B+l.day;else k=j-B}let P=o?Math.max(w,k):Math.min(w,k);if(P!==0){f.setUTCDate(f.getUTCDate()+P),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}}if(e.months.size!==0){let w=f.getUTCMonth()+1,k=c.month[w],P=(B)=>{let j=Om(new Date(Date.UTC(f.getUTCFullYear(),B+1,0)));if(e.days.size!==0&&e.weekdays.size===0)return o?c.day[j]??j:l.day;return o?j:1};if(k===void 0){f.setUTCFullYear(f.getUTCFullYear()+s),f.setUTCMonth(l.month,P(l.month)),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}if(u(k,w)){let B=k-1;f.setUTCMonth(B,P(B)),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}}return}throw Error("Unable to find cron date")});return hc(g)};var yH=pi((e,t)=>ct(e.tz,t.tz)&&e.and===t.and&&xc(e.seconds,t.seconds)&&xc(e.minutes,t.minutes)&&xc(e.hours,t.hours)&&xc(e.days,t.days)&&xc(e.months,t.months)&&xc(e.weekdays,t.weekdays)),bH=dd(JE()),xc=(e,t)=>bH(Et(e),Et(t)),SH=x(2,(e,t)=>yH(e,t)),xH={min:0,max:59},vH={min:0,max:59},wH={min:0,max:23},TH={min:1,max:31},CH={min:1,max:12,aliases:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12}},EH={min:0,max:7,normalize:(e)=>e===7?0:e,aliases:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}},vc=(e,t)=>{let n=new Set,r=e.split(","),i=tO(r[0]),o=i[0]==="*",s=t.normalize??((l)=>l),c=o&&(i[1]===void 0||i[1]===1)?Br:(l)=>{n.add(s(l))};for(let l=0;l<r.length;l++){let u=r[l],[p,m]=l===0?i:tO(u);if(m!==void 0){if(!Number.isInteger(m))return Me(new Gr({message:"Expected step value to be a positive integer",input:e}));if(m<1)return Me(new Gr({message:"Expected step value to be greater than 0",input:e}));if(m>t.max)return Me(new Gr({message:`Expected step value to be less than or equal to ${t.max}`,input:e}))}if(p==="*"){if(l===0&&(m===void 0||m===1))continue;for(let g=t.min;g<=t.max;g+=m??1)c(g)}else{let[g,f]=IH(p,t.aliases);if(!Number.isInteger(g))return Me(new Gr({message:"Expected a positive integer",input:e}));if(g<t.min||g>t.max)return Me(new Gr({message:`Expected a value between ${t.min} and ${t.max}`,input:e}));if(f===void 0)for(let v=g;v<=(m===void 0?g:t.max);v+=m??1)c(v);else{if(!Number.isInteger(f))return Me(new Gr({message:"Expected a positive integer",input:e}));if(f<t.min||f>t.max)return Me(new Gr({message:`Expected a value between ${t.min} and ${t.max}`,input:e}));if(g>f)return Me(new Gr({message:"Invalid value range",input:e}));for(let v=g;v<=f;v+=m??1)c(v)}}}return je({values:n,wildcard:o})},tO=(e)=>{let t=e.indexOf("/");if(t!==-1){let n=e.slice(t+1);return[e.slice(0,t),iO.test(n)?Number(n):NaN]}return[e,void 0]},IH=(e,t)=>{let n=e.indexOf("-");if(n!==-1)return[hS(e.slice(0,n),t),hS(e.slice(n+1),t)];return[hS(e,t),void 0]};function hS(e,t){return t?.[VA(e)]??(iO.test(e)?Number(e):NaN)}var iO=/^\d+$/;var oO=He("effect/Random",{defaultValue:()=>({nextIntUnsafe(){return Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER-Number.MIN_SAFE_INTEGER+1))+Number.MIN_SAFE_INTEGER},nextDoubleUnsafe(){return Math.random()}})});var zm=x(2,(e,t)=>ic(e,PH,(n)=>t(n))),Yie=(e)=>e.reasons.some(Dm),Dm=(e)=>e._tag==="Fail"&&aS(e.error),SS=(e)=>{let t,n=!1;for(let r of e.reasons)if(Dm(r))t??=r.error;else if(r._tag!=="Interrupt")n=!0;if(t===void 0)return Me(e);return n?Me(sS(e.reasons.filter((r)=>!Dm(r)))):je(t)};var Xie=WI((e)=>e.reasons.every((t)=>!Dm(t))),PH=(e)=>{let t=SS(e);return Ze(t)?t:je(t.success.value)},eoe=(e)=>{let t=SS(e);return!Ze(t)?Hb(t.success.value):Gb(t.failure)},Su=x(2,(e,t)=>Ui(e,{onSuccess:t.onSuccess,onFailure:(n)=>{let r=SS(n);return!Ze(r)?t.onDone(r.success.value):t.onFailure(r.failure)}}));var aO="~effect/Schedule",AH=oO.useSync((e)=>e.nextDoubleUnsafe()),Bo=He("effect/Schedule/CurrentMetadata",{defaultValue:Pt({input:void 0,output:void 0,duration:Kt,attempt:0,start:0,now:0,elapsed:0,elapsedSincePrevious:0})}),OH={[aO]:{_Out:Fe,_In:Fe,_Env:Fe},pipe(){return et(this,arguments)}},Mm=(e)=>be(e,aO),er=(e)=>{let t=Object.create(OH);return t.step=e,t},wc=()=>{let e=0,t,n;return(r,i)=>{if(n===void 0)n=r;let o=r-n,s=t===void 0?0:r-t;return t=r,{input:i,attempt:++e,start:n,now:r,elapsed:o,elapsedSincePrevious:s}}},Hs=(e)=>er(Ne(e,(t)=>{let n=wc();return(r,i)=>t(n(r,i))})),bi=(e)=>Rn(e.step,(t)=>oe(()=>Ve(t))),Tc=(e)=>Wn((t)=>Ne(bi(e),(n)=>{let r=wc();return(i)=>De(()=>{let o=t.currentTimeMillisUnsafe();return ge(n(o,i),([s,c])=>{let l=r(o,i);return l.output=s,l.duration=c,yn(pc(c),l)})})})),DH=(e)=>Ne(Tc(e),(t)=>(n)=>Ne(t(n),(r)=>r.output)),zH=x(2,(e,t)=>xS(e,(n)=>Ne(t(n),(r)=>$I(Ot(r),n.duration)))),MH=x(2,(e,t)=>xu(cO(e,t),({output:n})=>oe(fy(n)))),cO=x(2,(e,t)=>er(Oe(()=>{let n=0,r,i=xu(e,({output:s})=>Me(s)),o=xu(t,({output:s})=>je(s));return function s(c,l){if(r)return r(c,l);return bi(n===0?i:o).pipe(ge((u)=>{if(n++,n===1)return r=(p,m)=>zm(u(p,m),(g)=>(r=void 0,s(p,m))),r(c,l);return r=u,r(c,l)}))}}))),jH=(e)=>er(Ne(_s(e.map(bi)),(t)=>(n,r)=>ge(En(t,(i)=>Su(i(n,r),{onSuccess:(o)=>oe(o[1]),onDone:()=>au,onFailure:Ve})),(i)=>{let o=NH(i);if(o===void 0)return Hr(Kt);return oe([o,o])}))),NH=(e)=>{let t=e[0];for(let n=1;n<e.length;n++)if(t=e[n]&&t&&qI(t,e[n]),t===void 0)break;return t},BH=(e,t)=>{let n=bS(e)?je(e):nO(e,t);return er(Ne(Ns(n),(r)=>(i,o)=>{if(i===Number.POSITIVE_INFINITY)return Hr(Kt);return Oe(()=>{let s=rO(r,i).getTime(),c=hr(s-i);return[c,c]})}))},_H=(e)=>{let t=Ot(e);return Hs(oe((n)=>n.attempt===1?oe([t,t]):Hr(Kt)))},FH=(e)=>{let t=Zr(e);return Hs(oe((n)=>{let r=hr(n.elapsed);return n.elapsed>t?Hr(r):oe([r,Kt])}))},LH=(e)=>er(Ne(_s(e.map(bi)),(t)=>(n,r)=>ge(En(t,(i)=>Su(i(n,r),{onSuccess:(o)=>oe(o[1]),onDone:()=>au,onFailure:Ve})),(i)=>{let o=qH(i);if(o===void 0)return Hr(Kt);return oe([o,o])}))),qH=(e)=>{let t=void 0;for(let n=0;n<e.length;n++){let r=e[n];if(r!==void 0)t=t===void 0?r:LI(t,r)}return t},ZH=(e,t=2)=>{let n=Zr(Ot(e));return Hs(oe((r)=>{let i=hr(n*Math.pow(t,r.attempt-1));return oe([i,i])}))},$H=(e)=>{let t=Zr(Ot(e));return er(Oe(()=>{let n=0,r=t;return Pt(Oe(()=>{let i=n+r;n=r,r=i;let o=hr(i);return[o,o]}))}))},UH=(e)=>{let t=Zr(Ot(e));return Hs(Oe(()=>{let n=0,r=0;return(i)=>Oe(()=>{if(t===0)return[i.attempt-1,Kt];if(i.attempt===1)return n=i.now,r=i.now+t,[0,hr(t)];let o=i.now>r+t,s=t-(i.now-n)%t,c=o?0:s===0?t:s;return r=o?i.now:i.now+c,[i.attempt-1,hr(c)]})}))},xu=x(2,(e,t)=>er(Ne(bi(e),(n)=>{let r=wc();return(i,o)=>Su(n(i,o),{onSuccess:([s,c])=>{let l=t({...r(i,o),output:s,duration:c});if(!ke(l))return oe([l,c]);return Ne(l,(u)=>[u,c])},onFailure:Ve,onDone:(s)=>{let c=t({...r(i,o),output:s,duration:Kt});if(!ke(c))return Hr(c);return ge(c,Hr)}})}))),xS=x(2,(e,t)=>er(Ne(bi(e),(n)=>{let r=wc();return(i,o)=>ge(n(i,o),([s,c])=>Ne(t({...r(i,o),output:s,duration:c}),(l)=>[s,Ot(l)]))}))),WH=(e)=>xS(e,({duration:t})=>Ne(AH,(n)=>{let r=Zr(t);return hr(r*0.8*(1-n)+r*1.2*n)})),jm=(e)=>er(Ne(bi(e),(t)=>(n,r)=>Su(t(n,r),{onSuccess:(i)=>oe([r,i[1]]),onFailure:Ve,onDone:()=>Hr(r)}))),Nm=(e)=>Gs(Bm,({attempt:t})=>oe(t<=e)),lO=(e)=>{let t=Ot(e);return Hs(oe((n)=>oe([n.attempt-1,t])))},JH=x(2,(e,t)=>er(Ne(bi(e),(n)=>{let r=wc();return(i,o)=>Ur(n(i,o),([s,c])=>t({...r(i,o),output:s,duration:c}))}))),HH=x(2,(e,t)=>{let n=t.duration===void 0?void 0:Ot(t.duration);return Gs(e,({attempt:r,elapsed:i})=>oe((t.times===void 0||r<=t.times)&&(n===void 0||UI(hr(i),n))))}),Gs=x(2,(e,t)=>er(Ne(bi(e),(n)=>{let r=wc();return(i,o)=>ge(n(i,o),(s)=>{let[c,l]=s,u=t({...r(i,o),output:c,duration:l});return ge(ke(u)?u:oe(u),(p)=>p?oe(s):Hr(c))})})));var GH=(e)=>{let t=Zr(Ot(e));return Hs(oe((n)=>Oe(()=>[n.attempt-1,t===0?Kt:hr(t-n.elapsed%t)])))},Bm=lO(Kt),VH=xu(Nm(1),()=>{return}),QH=er(oe((e,t)=>oe([t,Kt]))),KH=()=>QH;var YH=()=>(e)=>e;var XH=(e,t,n)=>fm((r)=>ge(n?.local?uu(t,gc(),r):iS(t,r),(i)=>Wr(e,i))),_m=x((e)=>ke(e[0]),(e,t,n)=>kd(t)?Wr(e,t):XH(e,Array.isArray(t)?km(...t):t,n));var vS=x(3,(e,t,n)=>ge(Tc(t),(r)=>{let i=Bo.defaultValue();return kn(sm(Ur(ge(De(()=>In(e,Bo,i)),r),(o)=>Oe(()=>{i=o})),{disableYield:!0}),(o)=>Ol(o)?oe(o.value):n(o,i.attempt===0?Se():Pe(i)))})),wS=x(3,(e,t,n)=>ge(Tc(t),(r)=>{let i=Bo.defaultValue(),o,s=kn(De(()=>In(e,Bo,i)),(c)=>(o=c,ge(r(c),(l)=>(i=l,s))));return zm(s,(c)=>wo(()=>n(o,c)))})),pO=x(2,(e,t)=>{let n=typeof t==="function"?t(Fe):Mm(t)?t:wu(t);return vS(e,n,lt)}),vu=x(2,(e,t)=>{let n=typeof t==="function"?t(Fe):Mm(t)?t:wu(t);return wS(e,n,lt)}),dO=x(3,(e,t,n)=>ge(Tc(n),(r)=>{let i=Bo.defaultValue(),o=De(()=>In(e,Bo,i));return kn(ge(r(t),(s)=>{i=s;let c=Pt(ge(o,r));return Gi({while:ji,body:c,step(l){i=l}})}),(s)=>Ol(s)?oe(s.value):lt(s))})),eG=jm(Bm),wu=(e)=>{let t=e.schedule?jm(e.schedule):eG;if(e.while)t=Gs(t,({input:n})=>{let r=e.while(n);return ke(r)?r:oe(r)});if(e.until)t=Gs(t,({input:n})=>{let r=e.until(n);return ke(r)?Ne(r,(i)=>!i):oe(!r)});if(e.times!==void 0)t=Gs(t,({attempt:n})=>oe(n<=e.times));return t};var tG=(e,t)=>{let n=-1,r=0,i=(o)=>pm(e(o));return{begin:Wn((o)=>De(()=>{let s=t();if(s.stepIndex!==n)n=s.stepIndex,r=0;r++;let c={attempt:s.attempt,stepAttempt:r,stepIndex:s.stepIndex,startNanos:o.monotonicTimeNanosUnsafe()};return yn(i({_tag:"AttemptStart",attempt:c.attempt,stepAttempt:c.stepAttempt,stepIndex:c.stepIndex}),c)})),end:(o,s)=>Wn((c)=>{let l=ks(c.monotonicTimeNanosUnsafe()-o.startNanos);return i(s._tag==="Success"?{_tag:"AttemptSuccess",attempt:o.attempt,stepAttempt:o.stepAttempt,stepIndex:o.stepIndex,duration:l}:{_tag:"AttemptFailure",attempt:o.attempt,stepAttempt:o.stepAttempt,stepIndex:o.stepIndex,duration:l,cause:s.cause})})}},gO=x((e)=>ke(e[0]),(e,t,n)=>De(()=>{let r=0,i={attempt:0,stepIndex:0},o=om(MA,Oe(()=>(i={attempt:i.attempt+1,stepIndex:r},i))),s=n?.onEvent===void 0?void 0:tG(n.onEvent,()=>i),c=s===void 0?Fe:(u)=>jo((p)=>ge(s.begin,(m)=>Un(p(u),(g)=>s.end(m,g)))),l;return ge(Gi({while:()=>r<t.steps.length&&(l===void 0||Ze(l)),body(){let u=t.steps[r],p=o(c(_m(e,u.provide)));if(l){let m=!1,g=p;p=De(()=>{if(m)return g;return m=!0,Ns(l)}),p=vu(p,fO(u,!1))}else{let m=fO(u,!0);p=m?vu(p,m):p}return Po(p)},step(u){l=u,r++}}),()=>Ns(l))})),fO=(e,t)=>{if(!t)return wu({schedule:e.schedule?e.schedule:e.attempts?void 0:nG,times:e.attempts,while:e.while});else if(e.attempts===1||!(e.schedule||e.attempts))return;return wu({schedule:e.schedule,while:e.while,times:e.attempts?e.attempts-1:void 0})},nG=Nm(1);var iG="~effect/Request",oG=jE({_E:(e)=>e,_A:(e)=>e,_R:(e)=>e}),poe={...LE,[iG]:oG};var hO=(e)=>e;var bO=x(2,(e,t)=>{let n=(r)=>hn((i)=>{let o=xO(r,e,i,Xa());return sG(r,o)});return ke(t)?ge(t,n):n(t)}),SO=(e,t)=>{let n=xO(t.resolver,e,t.onExit,{context:t.context,cache:{scheduler:At(t.context,Ll)}});return()=>vO(t.resolver,n)},Fm=[],TS=new WeakMap,xO=(e,t,n,r)=>{let i=TS.get(e);if(!i)i=new Map,TS.set(e,i);let o,s=!1,c=hO({request:t,context:r.context,uninterruptible:!1,completeUnsafe(u){if(s)return;if(s=!0,o&&!o.entrySet.delete(c))return;n(u)}});if(e.preCheck!==void 0&&!e.preCheck(c))return c;let l=e.batchKey(c);if(o=i.get(l),!o){if(Fm.length>0)o=Fm.pop(),o.key=l,o.resolver=e,o.map=i;else{let u={key:l,resolver:e,map:i,entrySet:new Set,entries:new Set,delayEffect:ge(De(()=>u.resolver.delay),(p)=>yO(u)),run:Un(De(()=>u.resolver.runAll(Array.from(u.entries),u.key)),(p)=>{for(let m of u.entrySet)m.completeUnsafe(p._tag==="Success"?Tn(Error("Effect.request: RequestResolver did not complete request",{cause:m.request})):p);if(u.entries.clear(),Fm.length<128)u.entrySet.clear(),u.key=void 0,u.fiber=void 0,u.resolver=void 0,u.map=void 0,Fm.push(u);return Le})};o=u}i.set(l,o),o.fiber=Vi(r.context)(o.delayEffect,{scheduler:r.cache.scheduler})}if(o.entrySet.add(c),o.entries.add(c),o.resolver.collectWhile(o.entries))return c;return o.fiber.interruptUnsafe(r.id),o.fiber=Vi(r.context)(yO(o),{scheduler:r.cache.scheduler}),c},vO=(e,t)=>{if(t.uninterruptible)return;let n=TS.get(e);if(!n)return;let r=e.batchKey(t),i=n.get(r);if(!i)return;if(!i.entries.delete(t))return;i.entrySet.delete(t);let o;if(i.entries.size===0)n.delete(r),o=i.fiber;t.completeUnsafe(im()),o?.interruptUnsafe()},sG=(e,t)=>Oe(()=>vO(e,t));function yO(e){if(!e.map.has(e.key))return Le;return e.map.delete(e.key),e.run}var cG="effect/Metric/CurrentMetricAttributes",lG=He(cG,{defaultValue:()=>({})}),uG="effect/Metric/MetricRegistry",pG=He(uG,{defaultValue:()=>new Map}),wO="~effect/Metric";class dG{[wO]=wO;#t;#e="";id;description;attributes;constructor(e,t,n){this.id=e,this.description=t,this.attributes=n}valueUnsafe(e){return this.hook(e).get(e)}modifyUnsafe(e,t){return this.hook(t).modify(e,t)}updateUnsafe(e,t){return this.hook(t).update(e,t)}hook(e){let t=At(e,lG);if(t!==this.#t)this.#t=t,this.#e=mG(this,TO(this.attributes,t));let n=At(e,pG),r=n.get(this.#e);if(EE(r))r={id:this.id,type:this.type,description:this.description,attributes:Object.keys(t).length>0?TO(this.attributes,t):this.attributes,hooks:this.createHooks()},n.set(this.#e,r);return r.hooks}pipe(){return et(this,arguments)}}var Cc=x(2,(e,t)=>Oo((n)=>Oe(()=>e.updateUnsafe(t,n))));function mG(e,t){let n=Object.entries(t).sort((r,i)=>r[0]<i[0]?-1:r[0]>i[0]?1:0);return JSON.stringify([e.type,e.id,e.description,n])}function TO(e,t){return{...CO(e),...CO(t)}}function CO(e){if(IE(e)&&Array.isArray(e))return e.reduce((t,[n,r])=>(sn(t,n,r),t),{});return e}var gG=ci,Vr=ke,hG=_s,yG=Nb,bG=uP,SG=pP,xG=dP,vG=fP,wG=En,TG=hP,Ec=Gi,CG=tb,EG=BR,Vs=oe,IG=Yl,RG=eb,Qi=De,tr=Oe,Tr=Le;var kG=au;var ES=hn,PG=Xl,AG=wP,OG=TP,DG=EP;var zG=CP,MG=qR,CS=lt,jG=em,NG=Ve,BG=jR,IO=Wi,_G=NR;var FG=tc,LG=Xy,Ic=ze,qG=$E,ZG=Ns,$G=Yy,UG=MR,WG=zR,Ki=ge,JG=KR,HG=hi,RO=Ur,GG=Po,VG=jk,kO=sc,Qs=Ne,QG=yn,KG=rm,YG=nc,XG=JR,eV=yk,tV=yb,nV=kn;var rV=lm,iV=kk,oV=Pk,sV=Ak,aV=Ok,cV=Rn,lV=Tk,uV=tu,pV=cm,dV=wk,mV=Sb,fV=ic,gV=vb,hV=wb,yV=um,PO=xb,bV=Ik,AO=Ck,SV=Ek,xV=am,OO=Rk,vV=Tb,wV=vu,TV=wS,CV=HR,EV=Mk,IV=pm,RV=gO,kV=mA,PV=Dk,AV=zk,OV=Zk,DV=Ib,zV=Eb,MV=qk,jV=pc,NV=$k,BV=sb,_V=ab,FV=GR,LV=cb,qV=SP,ZV=xP,$V=vP,UV=Bb,WV=_b,JV=bk,HV=bP,GV=Sk,VV=dm,QV=nu,KV=Cb,YV=_k,XV=VR,e2=Ui,t2=oc,n2=Fk,r2=Lk,Cu=hb,i2=Oo,o2=_m,s2=Wr,a2=hk,c2=mk,l2=fk,u2=rc,p2=Hi,d2=gk,DO=In,m2=om,f2=iu,g2=mm,h2=fm,Eu=gm,y2=tP,b2=eP,S2=lc,x2=Kk,v2=zb,w2=Yk,T2=Mb,C2=Mo,IS=Un,E2=Ob,I2=Db,R2=iP,k2=rP,P2=jb,Ks=oP,A2=hm,O2=Xk,D2=Bs,zO=jo,z2=cP,M2=lP,j2=sm,N2=pO,B2=vS,_2=bb,F2=xk,L2=x(2,(e,t)=>MO(e,void 0,t)),MO=dO,q2=_P,Z2=FP,$2=LP,U2=qP,W2=QP,J2=KP,H2=YP,G2=XP,V2=WP,Q2=JP,K2=HP,Y2=$P,X2=$r,eQ=$l,tQ=VP,nQ=UP,rQ=Ya,iQ=bO,oQ=SO,sQ=IP,aQ=Fb,cQ=PP,lQ=RP,uQ=kP,pQ=FR,dQ=LR,Iu=OP,Ru=Vi,mQ=Lb,fQ=DP,gQ=MP,hQ=qb,yQ=zP,bQ=ym,SQ=NP,xQ=Zb,vQ=jP,wQ=bm,TQ=rb,CQ=ZR,jO=Wn,EQ=Jr,IQ=Jr(),RQ=Jr("Fatal"),kQ=Jr("Warn"),PQ=Jr("Error"),AQ=Jr("Info"),OQ=Jr("Debug"),DQ=Jr("Trace"),zQ=x(2,(e,t)=>Hi(e,Jb,(n)=>new Set([...n,t]))),MQ=x((e)=>Vr(e[0]),(e,...t)=>Hi(e,hA,(n)=>{let r=t.length===1?{...n,...t[0]}:{...n};if(t.length===1)return r;else sn(r,t[0],t[1]);return r})),jQ=pA,NQ=x(2,(e,t)=>ge(Sm,(n)=>Hi(e,yA,(r)=>[[t,n],...r]))),BQ=x((e)=>Vr(e[0]),(e,t,n)=>IS(e,(r)=>{let i=n===void 0?r:n(r);return Cc(t,i)})),_Q=x((e)=>Vr(e[0]),(e,t,n)=>RO(e,(r)=>{let i=n===void 0?r:n(r);return Cc(t,i)})),FQ=x((e)=>Vr(e[0]),(e,t,n)=>PO(e,(r)=>{let i=n===void 0?r:n(r);return Cc(t,i)})),LQ=x((e)=>Vr(e[0]),(e,t,n)=>OO(e,(r)=>{let i=n===void 0?r:n(r);return Cc(t,i)})),qQ=x((e)=>Vr(e[0]),(e,t,n)=>jO((r)=>{let i=r.monotonicTimeNanosUnsafe();return IS(e,()=>{let o=r.monotonicTimeNanosUnsafe(),s=ZI(Ot(o),Ot(i)),c=n===void 0?s:n(s);return Cc(t,c)})}));class Tu extends Zn()("effect/Effect/Transaction"){}var ZQ=(e)=>Ic((t)=>{let n=Bl(t.context,Tu);if(n)return e;n={journal:new Map,retry:!1};let r;return zO((i)=>Ki(Ec({while:()=>!r,body:Pt(i(e).pipe(DO(Tu,n),AO(()=>{if(!n.retry)return Tr;return i($Q(n))}),kO)),step(o){if(n.retry||!NO(n))return EO(n);if(Fs(o))UQ(t,n);else EO(n);r=o}}),()=>r))}),NO=(e)=>{for(let[t,{version:n}]of e.journal)if(t.version!==n)return!1;return!0},$Q=(e)=>ES((t)=>{if(!NO(e))return t(Tr);let n={},r=Array.from(e.journal.keys()),i=()=>{for(let s of r)s.pending.delete(n)},o=()=>{i(),t(Tr)};for(let s of r)s.pending.set(n,o);return tr(i)});function UQ(e,t){for(let[n,{value:r,written:i}]of t.journal){if(!i)continue;if(!Object.is(r,n.value))n.version=n.version+1,n.value=r;for(let o of n.pending.values())e.currentDispatcher.scheduleTask(o,0);n.pending.clear()}}function EO(e){e.retry=!1,e.journal.clear()}var WQ=Ki(Tu,(e)=>(e.retry=!0,Ks)),JQ=(e,t,n)=>(...r)=>ES((i)=>{try{e(...r,(o,s)=>{if(o)i(CS(t?t(o,r):o));else i(Vs(s))})}catch(o){i(n?CS(n(o,r)):IO(o))}}),HQ=()=>(e)=>e,GQ=()=>(e)=>e,VQ=()=>(e)=>e,QQ=YR,KQ=XR,YQ=ek,XQ=QR,eK=tk,tK=$R;var Qr={};Ln(Qr,{await:()=>ku,awaitAll:()=>nK,getCurrent:()=>aK,interrupt:()=>oK,interruptAll:()=>Pu,interruptAllAs:()=>Au,interruptAs:()=>RS,isFiber:()=>sK,join:()=>rK,joinAll:()=>iK,runIn:()=>cK});var ku=Vy;var nK=ec,rK=Qy,iK=OR,oK=Kl,RS=Ky,Pu=zs,Au=DR,sK=(e)=>be(e,Xd),aK=Xa,cK=AP;var Pn={};Ln(Pn,{awaitEmpty:()=>IK,clear:()=>wK,get:()=>SK,getUnsafe:()=>$O,has:()=>xK,hasUnsafe:()=>qm,isFiberMap:()=>zS,join:()=>EK,make:()=>MS,makeRuntime:()=>gK,makeRuntimePromise:()=>hK,remove:()=>vK,run:()=>TK,runtime:()=>jS,runtimePromise:()=>UO,set:()=>bK,setUnsafe:()=>Lm,size:()=>CK});var BO="~effect/MutableHashMap";var lK={[BO]:BO,[Symbol.iterator](){return this.backing[Symbol.iterator]()},toString(){return`MutableHashMap(${Nt(Array.from(this))})`},toJSON(){return{_id:"MutableHashMap",values:si(Array.from(this))}},[wn](){return this.toJSON()},pipe(){return et(this,arguments)}},_O=()=>{let e=Object.create(lK);return e.backing=new Map,e.buckets=new Map,e};var Rc=x(2,(e,t)=>{if(e.backing.has(t))return Pe(e.backing.get(t));else if(kS(t))return Se();let n=$e(t),r=e.buckets.get(n);if(r===void 0)return Se();return uK(e,r,t)}),kS=(e)=>typeof e!=="object"&&typeof e!=="function";var PS=(e)=>e.backing.values(),uK=(e,t,n)=>{for(let r=0,i=t.length;r<i;r++)if(ct(n,t[r])){let o=t[r];return Pe(e.backing.get(o))}return Se()},FO=x(2,(e,t)=>an(Rc(e,t))),LO=x(3,(e,t,n)=>{if(e.backing.has(t)||kS(t))return e.backing.set(t,n),e;let r=$e(t),i=e.buckets.get(r);if(i===void 0)return e.buckets.set(r,[t]),e.backing.set(t,n),e;let o=pK(i,t);if(o===void 0)i.push(t),o=t;return e.backing.set(o,n),e}),pK=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(ct(t,e[n]))return e[n]};var qO=x(2,(e,t)=>{if(kS(t))return e.backing.delete(t),e;let n=$e(t),r=e.buckets.get(n);if(r===void 0)return e;for(let i=0,o=r.length;i<o;i++){let s=r[i];if(s===t||ct(t,s)){e.backing.delete(s),r.splice(i,1);break}}if(r.length===0)e.buckets.delete(n);return e}),Ioe=(e)=>(e.backing.clear(),e.buckets.clear(),e),AS=(e)=>e.backing.size;var OS="~effect/FiberMap",zS=(e)=>be(e,OS),mK={[OS]:OS,[Symbol.iterator](){if(this.state._tag==="Closed")return Cd();return this.state.backing[Symbol.iterator]()},...Lr,toJSON(){return{_id:"FiberMap",state:this.state}}},fK=(e,t)=>{let n=Object.create(mK);return n.state={_tag:"Open",backing:e},n.deferred=t,n},MS=()=>Eu(tr(()=>fK(_O(),Ls())),(e)=>Qi(()=>{let t=e.state;if(t._tag==="Closed")return Tr;return e.state={_tag:"Closed"},Pu(PS(t.backing)).pipe(Tm(e.deferred))})),gK=()=>Ki(MS(),(e)=>jS(e)()),hK=()=>Ki(MS(),(e)=>UO(e)()),kc=-1,yK=Nd(_d(mu,Bd(kc))),Lm=x((e)=>zS(e[0]),(e,t,n,r)=>{if(e.state._tag==="Closed"){n.interruptUnsafe(kc);return}let i=Rc(e.state.backing,t);if(i._tag==="Some"){if(i.value===n)return;else if(r?.onlyIfMissing===!0){n.interruptUnsafe(kc);return}}if(LO(e.state.backing,t,n),i._tag==="Some")i.value.interruptUnsafe(kc);n.addObserver((o)=>{if(e.state._tag==="Closed")return;let s=Rc(e.state.backing,t);if(an(s)&&n===s.value)qO(e.state.backing,t);if(cu(o)&&(r?.propagateInterruption===!0?!yK(o.cause):!pu(o.cause)))qs(e.deferred,o)})}),bK=x((e)=>zS(e[0]),(e,t,n,r)=>tr(()=>Lm(e,t,n,r))),$O=x(2,(e,t)=>e.state._tag==="Closed"?Se():Rc(e.state.backing,t)),SK=x(2,(e,t)=>Qi(()=>Vs($O(e,t)))),qm=x(2,(e,t)=>e.state._tag==="Closed"?!1:FO(e.state.backing,t)),xK=x(2,(e,t)=>tr(()=>qm(e,t))),vK=x(2,(e,t)=>Qi(()=>{if(e.state._tag==="Closed")return Tr;let n=Rc(e.state.backing,t);if(n._tag==="None")return Tr;return RS(n.value,kc)})),wK=(e)=>Qi(()=>{if(e.state._tag==="Closed")return Tr;return Au(PS(e.state.backing),kc)}),DS=function(){let e=void 0;return()=>{if(e===void 0)e=Iu(Ks);return e}}(),TK=function(){let e=arguments[0];if(Vr(arguments[2]))return ZO(e,arguments[1],arguments[2],arguments[3]);let t=arguments[1],n=arguments[2];return(r)=>ZO(e,t,r,n)},ZO=(e,t,n,r)=>Ic((i)=>{if(e.state._tag==="Closed")return Ks;else if(r?.onlyIfMissing===!0&&qm(e,t))return tr(DS);let o=Sr(i,n,r?.startImmediately??!0,!0);return Lm(e,t,o,r),Vs(o)}),jS=(e)=>()=>Qs(Cu(),(t)=>{let n=Ru(t);return(r,i,o)=>{if(e.state._tag==="Closed")return DS();else if(o?.onlyIfMissing===!0&&qm(e,r))return DS();let s=n(i,o);return Lm(e,r,s,o),s}}),UO=(e)=>()=>Qs(jS(e)(),(t)=>(n,r,i)=>new Promise((o,s)=>t(n,r,i).addObserver((c)=>{if(Fs(c))o(c.value);else s(du(c.cause))}))),CK=(e)=>tr(()=>e.state._tag==="Closed"?0:AS(e.state.backing)),EK=(e)=>mc(e.deferred),IK=(e)=>Ec({while:()=>e.state._tag==="Open"&&AS(e.state.backing)>0,body:()=>ku(Td(e)[1]),step:Br});var Ys={};Ln(Ys,{add:()=>DK,addUnsafe:()=>Zm,awaitEmpty:()=>BK,clear:()=>zK,isFiberSet:()=>BS,join:()=>NK,make:()=>_S,makeRuntime:()=>PK,makeRuntimePromise:()=>AK,run:()=>MK,runtime:()=>LS,runtimePromise:()=>HO,size:()=>jK});var NS="~effect/FiberSet",BS=(e)=>be(e,NS),RK={[NS]:NS,[Symbol.iterator](){if(this.state._tag==="Closed")return Cd();return this.state.backing[Symbol.iterator]()},...Lr,toJSON(){return{_id:"FiberSet",state:this.state}}},kK=(e,t)=>{let n=Object.create(RK);return n.state={_tag:"Open",backing:e},n.deferred=t,n},_S=()=>Eu(tr(()=>kK(new Set,Ls())),(e)=>Qi(()=>{let t=e.state;if(t._tag==="Closed")return Tr;e.state={_tag:"Closed"};let n=t.backing;return Pu(n).pipe(Tm(e.deferred))})),PK=()=>Ki(_S(),(e)=>LS(e)()),AK=()=>Ki(_S(),(e)=>HO(e)()),FS=-1,OK=Nd(_d(mu,Bd(FS))),Zm=x((e)=>BS(e[0]),(e,t,n)=>{if(e.state._tag==="Closed"){t.interruptUnsafe(FS);return}else if(e.state.backing.has(t))return;e.state.backing.add(t),t.addObserver((r)=>{if(e.state._tag==="Closed")return;if(e.state.backing.delete(t),cu(r)&&(n?.propagateInterruption===!0?!OK(r.cause):!pu(r.cause)))qs(e.deferred,r)})}),DK=x((e)=>BS(e[0]),(e,t,n)=>tr(()=>Zm(e,t,n))),zK=(e)=>Qi(()=>{if(e.state._tag==="Closed")return Tr;return Au(e.state.backing,FS)}),JO=function(){let e=void 0;return()=>{if(e===void 0)e=Iu(Ks);return e}}(),MK=function(){let e=arguments[0];if(!Vr(arguments[1])){let t=arguments[1];return(n)=>WO(e,n,t)}return WO(e,arguments[1],arguments[2])},WO=(e,t,n)=>Ic((r)=>{if(e.state._tag==="Closed")return tr(JO);let i=Sr(r,t,n?.startImmediately??!0,!0);return Zm(e,i,n),Vs(i)}),LS=(e)=>()=>Qs(Cu(),(t)=>{let n=Ru(t);return(r,i)=>{if(e.state._tag==="Closed")return JO();let o=n(r,i);return Zm(e,o,i),o}}),HO=(e)=>()=>Qs(LS(e)(),(t)=>(n,r)=>new Promise((i,o)=>t(n,r).addObserver((s)=>{if(Fs(s))i(s.value);else o(du(s.cause))}))),jK=(e)=>tr(()=>e.state._tag==="Closed"?0:e.state.backing.size),NK=(e)=>mc(e.deferred),BK=(e)=>Ec({while:()=>e.state._tag==="Open"&&e.state.backing.size>0,body:()=>ku(Td(e)),step:Br});function rce(e,t){return Ws.effect(e,te.acquireRelease(te.sync(t),(n)=>te.sync(()=>{n.close()})).pipe(te.map((n)=>n.service)))}function _o(e,t){return t?te.provideService(e,gu.Clock,t):e}var _K=a.looseObject({issues:a.array(a.looseObject({message:a.string()}))}),GO=a.object({name:a.literal("EntityValidationError"),entityType:a.string(),originalError:a.unknown()});class nr extends Error{entityType;originalError;phase;constructor(e,t,n="schema"){super(`Invalid entity data for ${e}: ${Be(t)}`);this.name="EntityValidationError",this.entityType=e,this.originalError=t,this.phase=n}}var FK=a.object({name:a.literal("EntityValidationError"),phase:a.literal("schema")});function VO(e){return FK.safeParse(e).success}function $m(e){return _K.safeParse(e).success}function QO(e){return e instanceof nr||GO.safeParse(e).success||$m(e)}function Pc(e,t,n="schema"){if(t instanceof nr)return t.phase===n?t:new nr(e,t.originalError,n);let r=GO.safeParse(t);if(r.success)return new nr(e,r.data.originalError,n);return $m(t)?new nr(e,t,n):void 0}var LK={generateBodyTemplate:()=>""},qS=a.record(a.string(),a.unknown());function KO(e){return{parse:(t)=>e.parse(SE(t))}}class Fo{entityType;purpose;schema;frontmatterSchema;isSingleton;hasBody;supportsCoverImage;publishedStatuses;fmSchema;bodyFormatter;constructor(e){if(this.entityType=e.entityType,this.purpose=e.purpose,this.schema=e.schema,this.frontmatterSchema=e.frontmatterSchema,this.fmSchema=e.frontmatterSchema,this.bodyFormatter=e.bodyFormatter??LK,e.isSingleton!==void 0)this.isSingleton=e.isSingleton;if(e.hasBody!==void 0)this.hasBody=e.hasBody;if(e.supportsCoverImage!==void 0)this.supportsCoverImage=e.supportsCoverImage;if(e.publishedStatuses!==void 0)this.publishedStatuses=e.publishedStatuses}toMarkdown(e){let t=this.renderBody(e),r={...this.readExistingFrontmatter(e.content)},i=Object.keys(this.frontmatterSchema.shape);for(let[o,s]of Object.entries(e.metadata))if(i.includes(o))r[o]=s;return this.buildMarkdown(t,r)}renderBody(e){return this.extractBody(e.content)}readExistingFrontmatter(e){try{return Ut(e,qS).metadata}catch{return{}}}extractMetadata(e){return e.metadata}parseFrontMatter(e,t){try{return Ut(e,KO(t)).metadata}catch(n){throw new nr(this.entityType,n)}}getBodyTemplate(){return this.bodyFormatter.generateBodyTemplate()}generateFrontMatter(e){return wl(qS.parse(e.metadata))}extractBody(e){try{return Ut(e,qS).content}catch{return e}}parseFrontmatter(e){try{return Ut(e,KO(this.fmSchema)).metadata}catch(t){throw new nr(this.entityType,t)}}buildMarkdown(e,t){return Mi(e,t)}}var Si=a.enum(["public","shared","restricted"]),xi=a.union([Si,a.literal("private")]).optional().transform((e)=>{if(e===void 0)return"public";if(e==="private")return"restricted";return e});function Um(e){return xi.parse(e)}var qK={public:["public"],shared:["public","shared"],restricted:["public","shared","restricted"]};function vi(e){return qK[e]}function Wm(e,t){return vi(t).includes(e??"public")}function wi(e){if(e==="admin")return"restricted";if(e==="trusted")return"shared";return"public"}function Ac(e,t){return Wm(t,wi(e))}var Cr=a.object({id:a.string(),entityType:a.string(),content:a.string(),created:a.string().datetime(),updated:a.string().datetime(),visibility:xi,metadata:a.record(a.string(),a.unknown()),contentHash:a.string()}),ZK=a.enum(["public","shared","restricted"]),YO=a.object({id:a.string(),entityType:a.string(),content:a.string(),created:a.string().datetime(),updated:a.string().datetime(),visibility:a.union([ZK,a.literal("private")]).optional().transform((e)=>{if(e===void 0)return"public";if(e==="private")return"restricted";return e}),metadata:a.record(a.string(),a.unknown()),contentHash:a.string()}),Jm=a.object({}),$K=a.object({mediaType:a.string(),url:a.string(),downloadUrl:a.string().optional(),previewUrl:a.string().optional(),filename:a.string().optional(),sizeBytes:a.number().optional(),source:a.object({entityType:a.string().optional(),entityId:a.string().optional(),attachmentType:a.string().optional()}).optional()});class ZS extends Fo{constructor(){super({entityType:"note",purpose:"A generic entity with no specialized adapter.",schema:Cr,frontmatterSchema:Jm})}toMarkdown(e){return e.content}fromMarkdown(e){return{content:e}}}var UK={\u{e4}:"ae",\u{f6}:"oe",\u{fc}:"ue",\u{df}:"ss"};function Ou(e){return e.toLowerCase().trim().replace(/[\u00E4\u00F6\u00FC\u00DF]/g,(t)=>UK[t]??t).normalize("NFKD").replace(/\p{M}/gu,"").replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function Ece(e){try{return new URL(e).hostname.replace(/\./g,"-")}catch{return(e.split("/")[0]??e).replace(/\./g,"-")}}function Ice(e,t){let n=Ou(e);if(!n){let r=Date.now().toString(36);return t?`id-${r}-${t}`:`id-${r}`}return t?`${n}-${t}`:n}var WK=new Set(["series","species","sheep","deer","fish"]);function $S(e){if(WK.has(e.toLowerCase()))return e;if(e.endsWith("y")&&e.length>1){let t=e[e.length-2];if(!"aeiou".includes(t?.toLowerCase()??""))return e.slice(0,-1)+"ies"}if(e.endsWith("s")||e.endsWith("x")||e.endsWith("ch"))return e+"es";return e+"s"}function Rce(e){return e.replace(/[-_]/g," ").replace(/([A-Z])/g," $1").replace(/\b\w/g,(t)=>t.toUpperCase()).replace(/\s+/g," ").trim()}function kce(e){let n=e.split("-").map((i)=>i.charAt(0).toUpperCase()+i.slice(1)),r=n.pop();if(r)n.push($S(r));return n.join(" ")}var JK={github:"GitHub",instagram:"Instagram",linkedin:"LinkedIn",email:"Email",website:"Website"};function Pce(e){let t=e.toLowerCase(),n=JK[t];if(n!==void 0)return n;return e.replace(/\b\w/g,(r)=>r.toUpperCase())}function Ace(e,t){if(!t)return e;try{return new URL(e,t).toString()}catch{return e}}function Oce(e){let n=e.split(/\s+/).filter((r)=>r.length>0).length;return Math.max(1,Math.ceil(n/200))}function Dce(e){let t=e.replace(/\s+/g," ").trim();if(!t)return;let n=t.match(/^(.*?[.!?])(?:\s|$)/);if(n?.[1])return n[1];return t.length<=200?t:`${t.slice(0,197)}\u2026`}function zce(e,t){if(e.length<=t)return e;let n=e.slice(0,t),r=n.lastIndexOf(" ");return r>0?n.slice(0,r)+"...":n+"..."}function Mce(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}var Oc=a.enum(["content","system"]).default("content");function Hm(e,t){return!!e?.frontmatterSchema&&!e.isSingleton&&t.classification!=="system"&&t.binaryStorage!=="asset"}import{createHash as HK}from"crypto";var XO=/^[a-f0-9]{64}$/,eD=/^asset:\/\/sha256\/([a-f0-9]{64})$/,tD="asset://sha256/",US=104857600,Du=a.custom((e)=>typeof e==="string"&&eD.test(e),{message:"Invalid SHA-256 asset reference"}),nD=a.object({ref:Du,digest:a.string().regex(XO),sizeBytes:a.number().int().nonnegative()}).refine((e)=>ea(e.ref)===e.digest,{message:"Asset reference and digest must match",path:["digest"]});function Xs(e){return Du.parse(e)}function ea(e){return Xs(e).slice(tD.length)}function zu(e){return HK("sha256").update(e).digest("hex")}function WS(e){if(nD.parse(e),!(e.bytes instanceof Uint8Array))throw Error("Prepared asset bytes must be a Uint8Array");if(e.bytes.byteLength!==e.sizeBytes)throw Error(`Prepared asset size mismatch: declared ${e.sizeBytes} bytes, received ${e.bytes.byteLength}`);let t=zu(e.bytes);if(t!==e.digest)throw Error(`Prepared asset digest mismatch: expected ${e.digest}, received ${t}`)}var D=Symbol.for("drizzle:entityKind");function W(e,t){if(!e||typeof e!=="object")return!1;if(e instanceof t)return!0;if(!Object.prototype.hasOwnProperty.call(t,D))throw Error(`Class "${t.name??"<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`);let n=Object.getPrototypeOf(e).constructor;if(n)while(n){if(D in n&&n[D]===t[D])return!0;n=Object.getPrototypeOf(n)}return!1}class nt{constructor(e,t){this.table=e,this.config=t,this.name=t.name,this.keyAsName=t.keyAsName,this.notNull=t.notNull,this.default=t.default,this.defaultFn=t.defaultFn,this.onUpdateFn=t.onUpdateFn,this.hasDefault=t.hasDefault,this.primary=t.primaryKey,this.isUnique=t.isUnique,this.uniqueName=t.uniqueName,this.uniqueType=t.uniqueType,this.dataType=t.dataType,this.columnType=t.columnType,this.generated=t.generated,this.generatedIdentity=t.generatedIdentity}static[D]="Column";name;keyAsName;primary;notNull;default;defaultFn;onUpdateFn;hasDefault;isUnique;uniqueName;uniqueType;dataType;columnType;enumValues=void 0;generated=void 0;generatedIdentity=void 0;config;mapFromDriverValue(e){return e}mapToDriverValue(e){return e}shouldDisableInsert(){return this.config.generated!==void 0&&this.config.generated.type!=="byDefault"}}class Mu{static[D]="ColumnBuilder";config;constructor(e,t,n){this.config={name:e,keyAsName:e==="",notNull:!1,default:void 0,hasDefault:!1,primaryKey:!1,isUnique:!1,uniqueName:void 0,uniqueType:void 0,dataType:t,columnType:n,generated:void 0}}$type(){return this}notNull(){return this.config.notNull=!0,this}default(e){return this.config.default=e,this.config.hasDefault=!0,this}$defaultFn(e){return this.config.defaultFn=e,this.config.hasDefault=!0,this}$default=this.$defaultFn;$onUpdateFn(e){return this.config.onUpdateFn=e,this.config.hasDefault=!0,this}$onUpdate=this.$onUpdateFn;primaryKey(){return this.config.primaryKey=!0,this.config.notNull=!0,this}setName(e){if(this.config.name!=="")return;this.config.name=e}}var bn=Symbol.for("drizzle:Name");class JS{static[D]="PgForeignKeyBuilder";reference;_onUpdate="no action";_onDelete="no action";constructor(e,t){if(this.reference=()=>{let{name:n,columns:r,foreignColumns:i}=e();return{name:n,columns:r,foreignTable:i[0].table,foreignColumns:i}},t)this._onUpdate=t.onUpdate,this._onDelete=t.onDelete}onUpdate(e){return this._onUpdate=e===void 0?"no action":e,this}onDelete(e){return this._onDelete=e===void 0?"no action":e,this}build(e){return new rD(e,this)}}class rD{constructor(e,t){this.table=e,this.reference=t.reference,this.onUpdate=t._onUpdate,this.onDelete=t._onDelete}static[D]="PgForeignKey";reference;onUpdate;onDelete;getName(){let{name:e,columns:t,foreignColumns:n}=this.reference(),r=t.map((s)=>s.name),i=n.map((s)=>s.name),o=[this.table[bn],...r,n[0].table[bn],...i];return e??`${o.join("_")}_fk`}}function Gm(e,...t){return e(...t)}function HS(e,t){return`${e[bn]}_${t.join("_")}_unique`}class iD{constructor(e,t){this.name=t,this.columns=e}static[D]="PgUniqueConstraintBuilder";columns;nullsNotDistinctConfig=!1;nullsNotDistinct(){return this.nullsNotDistinctConfig=!0,this}build(e){return new oD(e,this.columns,this.nullsNotDistinctConfig,this.name)}}class GK{static[D]="PgUniqueOnConstraintBuilder";name;constructor(e){this.name=e}on(...e){return new iD(e,this.name)}}class oD{constructor(e,t,n,r){this.table=e,this.columns=t,this.name=r??HS(this.table,this.columns.map((i)=>i.name)),this.nullsNotDistinct=n}static[D]="PgUniqueConstraint";columns;name;nullsNotDistinct=!1;getName(){return this.name}}function sD(e,t,n){for(let r=t;r<e.length;r++){let i=e[r];if(i==="\\"){r++;continue}if(i==='"')return[e.slice(t,r).replace(/\\/g,""),r+1];if(n)continue;if(i===","||i==="}")return[e.slice(t,r).replace(/\\/g,""),r]}return[e.slice(t).replace(/\\/g,""),e.length]}function aD(e,t=0){let n=[],r=t,i=!1;while(r<e.length){let o=e[r];if(o===","){if(i||r===t)n.push("");i=!0,r++;continue}if(i=!1,o==="\\"){r+=2;continue}if(o==='"'){let[l,u]=sD(e,r+1,!0);n.push(l),r=u;continue}if(o==="}")return[n,r+1];if(o==="{"){let[l,u]=aD(e,r+1);n.push(l),r=u;continue}let[s,c]=sD(e,r,!1);n.push(s),r=c}return[n,r]}function cD(e){let[t]=aD(e,1);return t}function GS(e){return`{${e.map((t)=>{if(Array.isArray(t))return GS(t);if(typeof t==="string")return`"${t.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`;return`${t}`}).join(",")}}`}class ju extends Mu{foreignKeyConfigs=[];static[D]="PgColumnBuilder";array(e){return new uD(this.config.name,this,e)}references(e,t={}){return this.foreignKeyConfigs.push({ref:e,actions:t}),this}unique(e,t){return this.config.isUnique=!0,this.config.uniqueName=e,this.config.uniqueType=t?.nulls,this}generatedAlwaysAs(e){return this.config.generated={as:e,type:"always",mode:"stored"},this}buildForeignKeys(e,t){return this.foreignKeyConfigs.map(({ref:n,actions:r})=>Gm((i,o)=>{let s=new JS(()=>{let c=i();return{columns:[e],foreignColumns:[c]}});if(o.onUpdate)s.onUpdate(o.onUpdate);if(o.onDelete)s.onDelete(o.onDelete);return s.build(t)},n,r))}buildExtraConfigColumn(e){return new lD(e,this.config)}}class Dc extends nt{constructor(e,t){if(!t.uniqueName)t.uniqueName=HS(e,[t.name]);super(e,t);this.table=e}static[D]="PgColumn"}class lD extends Dc{static[D]="ExtraConfigColumn";getSQLType(){return this.getSQLType()}indexConfig={order:this.config.order??"asc",nulls:this.config.nulls??"last",opClass:this.config.opClass};defaultConfig={order:"asc",nulls:"last",opClass:void 0};asc(){return this.indexConfig.order="asc",this}desc(){return this.indexConfig.order="desc",this}nullsFirst(){return this.indexConfig.nulls="first",this}nullsLast(){return this.indexConfig.nulls="last",this}op(e){return this.indexConfig.opClass=e,this}}class VK{static[D]="IndexedColumn";constructor(e,t,n,r){this.name=e,this.keyAsName=t,this.type=n,this.indexConfig=r}name;keyAsName;type;indexConfig}class uD extends ju{static[D]="PgArrayBuilder";constructor(e,t,n){super(e,"array","PgArray");this.config.baseBuilder=t,this.config.size=n}build(e){let t=this.config.baseBuilder.build(e);return new VS(e,this.config,t)}}class VS extends Dc{constructor(e,t,n,r){super(e,t);this.baseColumn=n,this.range=r,this.size=t.size}size;static[D]="PgArray";getSQLType(){return`${this.baseColumn.getSQLType()}[${typeof this.size==="number"?this.size:""}]`}mapFromDriverValue(e){if(typeof e==="string")e=cD(e);return e.map((t)=>this.baseColumn.mapFromDriverValue(t))}mapToDriverValue(e,t=!1){let n=e.map((r)=>r===null?null:W(this.baseColumn,VS)?this.baseColumn.mapToDriverValue(r,!0):this.baseColumn.mapToDriverValue(r));if(t)return n;return GS(n)}}class QK extends ju{static[D]="PgEnumObjectColumnBuilder";constructor(e,t){super(e,"string","PgEnumObjectColumn");this.config.enum=t}build(e){return new dD(e,this.config)}}class dD extends Dc{static[D]="PgEnumObjectColumn";enum;enumValues=this.config.enum.enumValues;constructor(e,t){super(e,t);this.enum=t.enum}getSQLType(){return this.enum.enumName}}var pD=Symbol.for("drizzle:isPgEnum");function mD(e){return!!e&&typeof e==="function"&&pD in e&&e[pD]===!0}class KK extends ju{static[D]="PgEnumColumnBuilder";constructor(e,t){super(e,"string","PgEnumColumn");this.config.enum=t}build(e){return new fD(e,this.config)}}class fD extends Dc{static[D]="PgEnumColumn";enum=this.config.enum;enumValues=this.config.enum.enumValues;constructor(e,t){super(e,t);this.enum=t.enum}getSQLType(){return this.enum.enumName}}class It{static[D]="Subquery";constructor(e,t,n,r=!1,i=[]){this._={brand:"Subquery",sql:e,selectedFields:t,alias:n,isWith:r,usedTables:i}}}class Nu extends It{static[D]="WithSubquery"}var gD="0.45.2";var QS,KS,hD={startActiveSpan(e,t){if(!QS)return t();if(!KS)KS=QS.trace.getTracer("drizzle-orm",gD);return Gm((n,r)=>r.startActiveSpan(e,(i)=>{try{return t(i)}catch(o){throw i.setStatus({code:n.SpanStatusCode.ERROR,message:o instanceof Error?o.message:"Unknown error"}),o}finally{i.end()}}),QS,KS)}};var Rt=Symbol.for("drizzle:ViewBaseConfig");var Vm=Symbol.for("drizzle:Schema"),Qm=Symbol.for("drizzle:Columns"),yD=Symbol.for("drizzle:ExtraConfigColumns"),YS=Symbol.for("drizzle:OriginalName"),XS=Symbol.for("drizzle:BaseName"),Bu=Symbol.for("drizzle:IsAlias"),bD=Symbol.for("drizzle:ExtraConfigBuilder"),YK=Symbol.for("drizzle:IsDrizzleTable");class ae{static[D]="Table";static Symbol={Name:bn,Schema:Vm,OriginalName:YS,Columns:Qm,ExtraConfigColumns:yD,BaseName:XS,IsAlias:Bu,ExtraConfigBuilder:bD};[bn];[YS];[Vm];[Qm];[yD];[XS];[Bu]=!1;[YK]=!0;[bD]=void 0;constructor(e,t,n){this[bn]=this[YS]=e,this[Vm]=t,this[XS]=n}}function Lo(e){return e[bn]}function ta(e){return`${e[Vm]??"public"}.${e[bn]}`}class XK{static[D]="FakePrimitiveParam"}function ex(e){return e!==null&&e!==void 0&&typeof e.getSQL==="function"}function e3(e){let t={sql:"",params:[]};for(let n of e)if(t.sql+=n.sql,t.params.push(...n.params),n.typings?.length){if(!t.typings)t.typings=[];t.typings.push(...n.typings)}return t}class Jt{static[D]="StringChunk";value;constructor(e){this.value=Array.isArray(e)?e:[e]}getSQL(){return new fe([this])}}class fe{constructor(e){this.queryChunks=e;for(let t of e)if(W(t,ae)){let n=t[ae.Symbol.Schema];this.usedTables.push(n===void 0?t[ae.Symbol.Name]:n+"."+t[ae.Symbol.Name])}}static[D]="SQL";decoder=xD;shouldInlineParams=!1;usedTables=[];append(e){return this.queryChunks.push(...e.queryChunks),this}toQuery(e){return hD.startActiveSpan("drizzle.buildSQL",(t)=>{let n=this.buildQueryFromSourceParams(this.queryChunks,e);return t?.setAttributes({"drizzle.query.text":n.sql,"drizzle.query.params":JSON.stringify(n.params)}),n})}buildQueryFromSourceParams(e,t){let n=Object.assign({},t,{inlineParams:t.inlineParams||this.shouldInlineParams,paramStartIndex:t.paramStartIndex||{value:0}}),{casing:r,escapeName:i,escapeParam:o,prepareTyping:s,inlineParams:c,paramStartIndex:l}=n;return e3(e.map((u)=>{if(W(u,Jt))return{sql:u.value.join(""),params:[]};if(W(u,Km))return{sql:i(u.value),params:[]};if(u===void 0)return{sql:"",params:[]};if(Array.isArray(u)){let p=[new Jt("(")];for(let[m,g]of u.entries())if(p.push(g),m<u.length-1)p.push(new Jt(", "));return p.push(new Jt(")")),this.buildQueryFromSourceParams(p,n)}if(W(u,fe))return this.buildQueryFromSourceParams(u.queryChunks,{...n,inlineParams:c||u.shouldInlineParams});if(W(u,ae)){let p=u[ae.Symbol.Schema],m=u[ae.Symbol.Name];return{sql:p===void 0||u[Bu]?i(m):i(p)+"."+i(m),params:[]}}if(W(u,nt)){let p=r.getColumnCasing(u);if(t.invokeSource==="indexes")return{sql:i(p),params:[]};let m=u.table[ae.Symbol.Schema];return{sql:u.table[Bu]||m===void 0?i(u.table[ae.Symbol.Name])+"."+i(p):i(m)+"."+i(u.table[ae.Symbol.Name])+"."+i(p),params:[]}}if(W(u,Er)){let p=u[Rt].schema,m=u[Rt].name;return{sql:p===void 0||u[Rt].isAlias?i(m):i(p)+"."+i(m),params:[]}}if(W(u,rr)){if(W(u.value,qo))return{sql:o(l.value++,u),params:[u],typings:["none"]};let p=u.value===null?null:u.encoder.mapToDriverValue(u.value);if(W(p,fe))return this.buildQueryFromSourceParams([p],n);if(c)return{sql:this.mapInlineParam(p,n),params:[]};let m=["none"];if(s)m=[s(u.encoder)];return{sql:o(l.value++,p),params:[p],typings:m}}if(W(u,qo))return{sql:o(l.value++,u),params:[u],typings:["none"]};if(W(u,fe.Aliased)&&u.fieldAlias!==void 0)return{sql:i(u.fieldAlias),params:[]};if(W(u,It)){if(u._.isWith)return{sql:i(u._.alias),params:[]};return this.buildQueryFromSourceParams([new Jt("("),u._.sql,new Jt(") "),new Km(u._.alias)],n)}if(mD(u)){if(u.schema)return{sql:i(u.schema)+"."+i(u.enumName),params:[]};return{sql:i(u.enumName),params:[]}}if(ex(u)){if(u.shouldOmitSQLParens?.())return this.buildQueryFromSourceParams([u.getSQL()],n);return this.buildQueryFromSourceParams([new Jt("("),u.getSQL(),new Jt(")")],n)}if(c)return{sql:this.mapInlineParam(u,n),params:[]};return{sql:o(l.value++,u),params:[u],typings:["none"]}}))}mapInlineParam(e,{escapeString:t}){if(e===null)return"null";if(typeof e==="number"||typeof e==="boolean")return e.toString();if(typeof e==="string")return t(e);if(typeof e==="object"){let n=e.toString();if(n==="[object Object]")return t(JSON.stringify(e));return t(n)}throw Error("Unexpected param value: "+e)}getSQL(){return this}as(e){if(e===void 0)return this;return new fe.Aliased(this,e)}mapWith(e){return this.decoder=typeof e==="function"?{mapFromDriverValue:e}:e,this}inlineParams(){return this.shouldInlineParams=!0,this}if(e){return e?this:void 0}}class Km{constructor(e){this.value=e}static[D]="Name";brand;getSQL(){return new fe([this])}}function SD(e){return typeof e==="object"&&e!==null&&"mapToDriverValue"in e&&typeof e.mapToDriverValue==="function"}var xD={mapFromDriverValue:(e)=>e},vD={mapToDriverValue:(e)=>e},Ale={...xD,...vD};class rr{constructor(e,t=vD){this.value=e,this.encoder=t}static[D]="Param";brand;getSQL(){return new fe([this])}}function b(e,...t){let n=[];if(t.length>0||e.length>0&&e[0]!=="")n.push(new Jt(e[0]));for(let[r,i]of t.entries())n.push(i,new Jt(e[r+1]));return new fe(n)}((e)=>{function t(){return new fe([])}e.empty=t;function n(l){return new fe(l)}e.fromList=n;function r(l){return new fe([new Jt(l)])}e.raw=r;function i(l,u){let p=[];for(let[m,g]of l.entries()){if(m>0&&u!==void 0)p.push(u);p.push(g)}return new fe(p)}e.join=i;function o(l){return new Km(l)}e.identifier=o;function s(l){return new qo(l)}e.placeholder=s;function c(l,u){return new rr(l,u)}e.param=c})(b||(b={}));((e)=>{class t{constructor(n,r){this.sql=n,this.fieldAlias=r}static[D]="SQL.Aliased";isSelectionField=!1;getSQL(){return this.sql}clone(){return new t(this.sql,this.fieldAlias)}}e.Aliased=t})(fe||(fe={}));class qo{constructor(e){this.name=e}static[D]="Placeholder";getSQL(){return new fe([this])}}function _u(e,t){return e.map((n)=>{if(W(n,qo)){if(!(n.name in t))throw Error(`No value for placeholder "${n.name}" was provided`);return t[n.name]}if(W(n,rr)&&W(n.value,qo)){if(!(n.value.name in t))throw Error(`No value for placeholder "${n.value.name}" was provided`);return n.encoder.mapToDriverValue(t[n.value.name])}return n})}var t3=Symbol.for("drizzle:IsDrizzleView");class Er{static[D]="View";[Rt];[t3]=!0;constructor({name:e,schema:t,selectedFields:n,query:r}){this[Rt]={name:e,originalName:e,schema:t,selectedFields:n,query:r,isExisting:!r,isAlias:!1}}getSQL(){return new fe([this])}}nt.prototype.getSQL=function(){return new fe([this])};ae.prototype.getSQL=function(){return new fe([this])};It.prototype.getSQL=function(){return new fe([this])};class zc{constructor(e){this.table=e}static[D]="ColumnAliasProxyHandler";get(e,t){if(t==="table")return this.table;return e[t]}}class Fu{constructor(e,t){this.alias=e,this.replaceOriginalName=t}static[D]="TableAliasProxyHandler";get(e,t){if(t===ae.Symbol.IsAlias)return!0;if(t===ae.Symbol.Name)return this.alias;if(this.replaceOriginalName&&t===ae.Symbol.OriginalName)return this.alias;if(t===Rt)return{...e[Rt],name:this.alias,isAlias:!0};if(t===ae.Symbol.Columns){let r=e[ae.Symbol.Columns];if(!r)return r;let i={};return Object.keys(r).map((o)=>{i[o]=new Proxy(r[o],new zc(new Proxy(e,this)))}),i}let n=e[t];if(W(n,nt))return new Proxy(n,new zc(new Proxy(e,this)));return n}}class n3{constructor(e){this.alias=e}static[D]="RelationTableAliasProxyHandler";get(e,t){if(t==="sourceTable")return Lu(e.sourceTable,this.alias);return e[t]}}function Lu(e,t){return new Proxy(e,new Fu(t,!1))}function Ti(e,t){return new Proxy(e,new zc(new Proxy(e.table,new Fu(t,!1))))}function tx(e,t){return new fe.Aliased(qu(e.sql,t),e.fieldAlias)}function qu(e,t){return b.join(e.queryChunks.map((n)=>{if(W(n,nt))return Ti(n,t);if(W(n,fe))return qu(n,t);if(W(n,fe.Aliased))return tx(n,t);return n}))}class Mc extends Error{static[D]="DrizzleError";constructor({message:e,cause:t}){super(e);this.name="DrizzleError",this.cause=t}}class Yi extends Error{constructor(e,t,n){super(`Failed query: ${e}
28
+ ${t}}`;return r},Xd="~effect/Fiber",Z$={_A:Fe,_E:Fe},$$={id:0},uR=(()=>{try{return globalThis.process?.getBuiltinModule?.("node:async_hooks")?.AsyncResource}catch{return}})(),AR=()=>uR===void 0?void 0:new uR("effect/Fiber"),Xa=()=>globalThis[ja];class Gy{constructor(e,t=!0){this.setContext(e),this.id=++$$.id,this.currentOpCount=0,this.interruptible=t,this._stack=[],this._observers=void 0,this._exit=void 0,this._children=void 0,this._interruptedCause=void 0,this._yielded=void 0,this._running=!1,this._deferredInterrupt=!1,this._parent=void 0,this._asyncContext=void 0,this.cache.runtimeMetrics?.recordFiberStart(this.context)}get[Xd](){return Z$}get currentDispatcher(){return this._dispatcher??=this.cache.scheduler.makeDispatcher()}getRef(e){return At(this.context,e)}addObserver(e){if(this._exit)return e(this._exit),Br;if(this._observers===void 0)this._observers=[e];else this._observers.push(e);return()=>this.removeObserver(e)}removeObserver(e){if(this._exit||this._observers===void 0)return;let t=this._observers.indexOf(e);if(t>=0)this._observers.splice(t,1)}interruptUnsafe(e,t){if(this._exit)return;let n=js(e);if(this.cache.stackFrame)n=Fa(n,fi(ud,this.cache.stackFrame));if(t)n=Fa(n,t);if(this._interruptedCause=this._interruptedCause?ws(this._interruptedCause,n):n,this.interruptible)if(this._running)this._deferredInterrupt=!0;else this.evaluate(Ve(this._interruptedCause))}pollUnsafe(){return this._exit}evaluate(e){if(this._exit)return;else if(this._asyncContext!==void 0){let r=this._asyncContext;return this._asyncContext=void 0,r.runInAsyncScope(this.evaluate,this,e)}else if(this._yielded!==void 0){let r=this._yielded;this._yielded=void 0,r()}let t=this.runLoop(e);if(t===vs){this._asyncContext=AR();return}let n=Fy.interruptChildren&&Fy.interruptChildren(this);if(n!==void 0)return this.evaluate(ge(n,()=>t));if(this._exit=t,this.cache.runtimeMetrics?.recordFiberEnd(this.context,this._exit),this._parent)this._parent._children?.delete(this),this._parent=void 0;if(this._observers!==void 0){let r=this._observers;this._observers=void 0;for(let i=0;i<r.length;i++)r[i](t)}this._stack.length=0,this._children=void 0,this.context=fn()}runLoop(e){let t=globalThis[ja];globalThis[ja]=this;let n=this._running;this._running=!0;let r=!1,i=e;this.currentOpCount=0;try{while(!0){if(this._deferredInterrupt)this._deferredInterrupt=!1,i=Ve(this._interruptedCause);this.currentOpCount++;let o=this.cache;if(!r&&!o.preventYield&&o.scheduler.shouldYield(this)){r=!0;let s=i;i=ge(tc,()=>s)}if(i=o.tracerContext?o.tracerContext(i,this):i[xt](this),i===vs){let s=this._yielded;if(bs in s)return this._deferredInterrupt=!1,this._yielded=void 0,s;else if(this._deferredInterrupt){this._yielded=void 0,s();continue}return vs}}}catch(o){if(!be(i,xt))return Tn(`Fiber.runLoop: Not a valid effect: ${String(i)}`);return this.runLoop(Tn(o))}finally{this._running=n,globalThis[ja]=t}}getCont(e){if(this._deferredInterrupt)return this._deferredInterrupt=!1,W$;while(!0){let t=this._stack.pop();if(!t)return;let n=t[Ss];if(n!==void 0){let r=n.call(t,this);if(r)return r[e]=r,r}if(t[e])return t}}succeedWith(e){if((++this.currentOpCount&J$-1)===0)return yt(e);let t=this.getCont(Ft);return t?t[Ft](e,this):this.yieldWith(yt(e))}yieldWith(e){return this._yielded=e,vs}children(){return this._children??=new Set}pipe(){return et(this,arguments)}setContext(e){let t=this.context;if(this.context=e,t!==void 0&&wy(t,e))return;let n=e.cacheRoot,r=n._fiberCache??=U$(e);if(this.cache?.scheduler!==r.scheduler)this._dispatcher=void 0;this.cache=r}get currentSpanLocal(){let e=this.cache.span;return e?._tag==="Span"?e:void 0}}var U$=(e)=>{let t=Ha(e,Oy);return{scheduler:At(e,Ll),tracer:t,tracerContext:t?t.context:void 0,tracerEnabled:At(e,Ud),span:Ha(e,Ay),logLevel:At(e,My),minimumLogLevel:At(e,jy),stackFrame:At(e,Ka),runtimeMetrics:Ha(e,aR),maxOpsBeforeYield:At(e,KI),preventYield:At(e,YI)}},W$={[Ft](e,t){return Ve(t._interruptedCause)},[Vn](e,t){return Ve(t._interruptedCause)}},J$=32,Fy={interruptChildren:void 0},Ql=(e)=>{if(!e.cache.stackFrame)return;let t=new Map;return t.set(Kh.key,e.cache.stackFrame),Zi(t)},H$=(e)=>{if(e._children===void 0||e._children.size===0)return;return zs(e._children)},Vy=(e)=>{let t=e;if(t._exit)return oe(t._exit);return hn((n)=>{if(t._exit)return n(oe(t._exit));return Oe(e.addObserver((r)=>n(oe(r))))})},ec=(e)=>hn((t)=>{let n=e[Symbol.iterator](),r=[],i=void 0;function o(){let s=n.next();while(!s.done){if(s.value._exit){r.push(s.value._exit),s=n.next();continue}i=s.value.addObserver((c)=>{r.push(c),o()});return}t(oe(r))}return o(),Oe(()=>i?.())}),Qy=(e)=>{let t=e;if(t._exit)return t._exit;return hn((n)=>{if(t._exit)return n(t._exit);return Oe(e.addObserver(n))})},OR=(e)=>hn((t)=>{let n=Array.from(e);if(n.length===0)return t(oe(jl()));let r=Array(n.length),i=jl(),o=()=>{for(let l=0;l<i.length;l++)n[l].removeObserver(i[l])},s=0,c=!1;for(let l=0;l<n.length;l++){if(c)break;let u=(p)=>{if(s++,p._tag==="Failure")return c=!0,o(),t(p);if(r[l]=p.value,s===n.length)t(oe(r))};i.push(u),n[l].addObserver(u)}return Oe(()=>{c=!0,o()})}),Kl=(e)=>ze((t)=>Ky(e,t.id)),Ky=x((e)=>be(e[0],Xd),(e,t,n)=>ze((r)=>{let i=Ql(r);return i=i&&n?Ga(i,n):i??n,e.interruptUnsafe(t,i),nc(Vy(e))})),zs=(e)=>ze((t)=>{let n=Ql(t),r=jl();for(let i of e)i.interruptUnsafe(t.id,n),r.push(i);return nc(ec(r))}),DR=x(2,(e,t)=>ze((n)=>{let r=Ql(n),i=jl();for(let o of e)o.interruptUnsafe(t,r),i.push(o);return nc(ec(i))})),oe=yt,Ve=mn,lt=qr,Oe=li({op:"Sync",[xt](e){let t=this[tt](),n=e.getCont(Ft);return n?n[Ft](t,e):e.yieldWith(yt(t))}}),De=li({op:"Suspend",[xt](e){return this[tt]()}}),Yy=x((e)=>e.length>=2||xd(e[0]),(e,t)=>Je(e)?lt(t?t():new ui("Effect.fromOption: Option.none")):oe(e.value)),Ns=vd({onFailure:lt,onSuccess:oe}),zR=(e)=>e==null?lt(new ui):oe(e),Xy=li({op:"Yield",[xt](e){let t=!1;return e.currentDispatcher.scheduleTask(()=>{if(t)return;e.evaluate(Yn)},this[tt]??0),e.yieldWith(()=>{t=!0})}}),tc=Xy(0),eb=(e)=>oe(Pe(e)),Yl=oe(Se()),MR=(e)=>Je(e)?Yl:Ne(e.value,Pe),jR=(e)=>De(()=>Ve(e())),Wi=(e)=>Tn(e),em=(e)=>De(()=>lt(e())),Le=oe(void 0);var NR=(e)=>{let t=typeof e==="function"?e:e.try,n=typeof e==="function"?(r)=>new su(r,"An error occurred in Effect.try"):e.catch;return De(()=>{try{return oe(t())}catch(r){return lt(n(r))}})};var tb=(e)=>nb(function(t,n){e(n).then((r)=>t(oe(r)),(r)=>t(Wi(r)))},e.length!==0),BR=(e)=>{let t=typeof e==="function"?e:e.try,n=typeof e==="function"?(r)=>new su(r,"An error occurred in Effect.tryPromise"):e.catch;return nb(function(r,i){let o=(s)=>De(()=>{try{return lt(wo(()=>n(s)))}catch(c){return Wi(c)}});try{t(i).then((s)=>r(oe(s)),(s)=>r(o(s)))}catch(s){r(o(s))}},t.length!==0)},_R=(e)=>ze((t)=>e(t.id)),FR=ze(oe),LR=_R(oe),nb=function(){let e=Qn({op:"Async",[xt](n){let r=!1,i=!1,o=this.withSignal?new AbortController:void 0,s=this.register.call(n.cache.scheduler,(c)=>{if(r)return;if(r=!0,i)n.evaluate(c);else i=c},o?.signal);if(i!==!1)return i;if(i=!0,n._yielded=()=>{r=!0},o===void 0&&s===void 0)return vs;return n._stack.push(G$(()=>(r=!0,o?.abort(),s??Yn))),vs}}),t=function(n,r){this.register=n,this.withSignal=r};return t.prototype=e,function(n,r){return new t(n,r)}}(),G$=li({op:"AsyncFinalizer",[Ss](e){if(e.interruptible)e.interruptible=!1,e._stack.push(ou)},[Vn](e,t){return Vd(e)?ge(Uk(mn(e),this[tt]()),()=>Ve(e)):Ve(e)}}),hn=(e)=>nb(e,e.length>=2),Xl=hn(Br),qR=(...e)=>{if(e.length===1){let r=e[0];return De(()=>Ms(r()))}let[t,n]=e;return De(()=>Ms(n.call(t.self)))},rb=(e,...t)=>{let n=t.length===0?function(){return De(()=>Ms(e.apply(this,arguments)))}:function(){let r=De(()=>Ms(e.apply(this,arguments)));for(let i=0;i<t.length;i++)r=t[i](r,...arguments);return r};return ib(e.length,n)},ib=(e,t)=>Object.defineProperty(t,"length",{value:e,configurable:!0}),pR=Ny(2),ZR=function(){let e=typeof arguments[0]==="string",t=e?arguments[0]:"Effect.fn",n=e?arguments[1]:void 0,r=ai(),i;if(r!==0)Gn(2),i=new globalThis.Error,Gn(r);if(e)return(o,...s)=>dR(t,o,i,s,e,n);return dR(t,arguments[0],i,Array.prototype.slice.call(arguments,1),e,n)},dR=(e,t,n,r,i,o)=>{let s=typeof t==="function"?t:r.shift().bind(t.self),c=`${e} (definition)`,l=n?pR(()=>n.stack):Fn;return ib(s.length,function(...u){let p=De(()=>{let f=s.apply(this,arguments);return ke(f)?f:Ms(f)});for(let f=0;f<r.length;f++)p=r[f](p,...u);if(!ke(p))return p;let m=ai(),g;if(m!==0)Gn(2),g=new globalThis.Error,Gn(m);return Hi(i?$l(e,o,(f)=>$y(p,f)):p,Ka,(f)=>({name:e,stack:g?pR(()=>g.stack):Fn,parent:{name:c,stack:l,parent:f}}))})},$R=(e,...t)=>ib(e.length,t.length===0?function(){return mR(()=>e.apply(this,arguments))}:function(){let n=mR(()=>e.apply(this,arguments));for(let r of t)n=r(n,...arguments);return n}),mR=(e)=>{try{let t=e(),n=void 0;while(!0){let r=t.next(n);if(r.done)return oe(r.value);let i=r.value;if(i&&i._tag==="Success"){n=i.value;continue}else if(i&&i._tag==="Failure")return r.value;else{let o=!0;return De(()=>{if(o)return o=!1,ge(r.value,(s)=>Ms(t,s));else return De(()=>Ms(e()))})}}}catch(t){return Wi(t)}},Ms=function(){let e=Qn({op:"Iterator",[Ft](n,r){let i=this.iterator;while(!0){let o=i.next(n);if(o.done)return oe(o.value);if(!$n(o.value))return r._stack.push(this),o.value;else if(o.value._tag==="Failure")return o.value;n=o.value.value}},[xt](n){return this[Ft](this.initial,n)}}),t=function(n,r){this.iterator=n,this.initial=r};return t.prototype=e,function(n,r){return new t(n,r)}}(),yn=x(2,(e,t)=>new Ji(e,ob,oe(t))),tm=function(e){return e._stack.push(this),this[tt]},V$=Qn({op:"OnSuccess",[xt]:tm}),Ji=function(e,t,n){this[tt]=e,this[Ft]=t,this.payload=n};Ji.prototype=V$;var ob=function(){return this.payload},UR=function(e,t){return t.succeedWith(this.payload)},nm=(()=>({["~effect/Effect/stackProbe"]:function(){return Error().stack}})["~effect/Effect/stackProbe"]()?.includes("[as ~effect/Effect/stackProbe]")===!0)(),Q$=function(e,t){let n=this.payload;return t.succeedWith(nm?n(e):wo(()=>n(e)))},WR=function(e){let t=this.payload;return t(e)},K$=function(e){let t=this.payload;return new Ji(t(e),UR,e)},Y$=function(e){return new Ji(this.payload,UR,e)},rm=(e)=>Ne(e,Pe),JR=(e)=>oc(e,{onFailure:oe,onSuccess:lt}),hi=x(2,(e,t)=>new Ji(e,ke(t)?ob:WR,t)),Ur=x(2,(e,t)=>new Ji(e,ke(t)?Y$:K$,t)),nc=(e)=>new Ji(e,ob,Yn),HR=(e)=>Rn(e,lt),sb=(e,t)=>ze((n)=>{let r=new Set;return uc(n,()=>r.size===0?void 0:zs(r)),hn((i)=>{let o=Et(e),s=o.length,c=0,l=!1,u=[],p=(m,g,f)=>{if(c++,m._tag==="Failure"){if(u.push(...m.cause.reasons),c>=s)i(Ve(_i(u)));return}let v=!l;if(l=!0,i(m),v&&t?.onWinner)t.onWinner({fiber:g,index:f,parentFiber:n})};for(let m=0;m<s;m++){let g=Sr(n,o[m],!0,!0,!1);if(r.add(g),g.addObserver((f)=>{r.delete(g),p(f,g,m)}),l)break}})}),ab=(e,t)=>ze((n)=>{let r=new Set;return uc(n,()=>r.size===0?void 0:zs(r)),hn((i)=>{let o=!1,s=0;for(let c of e){if(o)break;let l=s++,u=Sr(n,c,!0,!0,!1);r.add(u),u.addObserver((p)=>{r.delete(u);let m=!o;if(o=!0,i(p),m&&t?.onWinner)t.onWinner({fiber:u,index:l,parentFiber:n})})}})}),GR=x((e)=>ke(e[1]),(e,t,n)=>sb([e,t],n)),cb=x((e)=>ke(e[1]),(e,t,n)=>ab([e,t],n)),ge=x(2,(e,t)=>new Ji(e,WR,t)),VR=x(2,(e,t)=>{if($n(e))return e._tag==="Success"?t.onSuccess(e.value):t.onFailure(e.cause);return Ui(e,t)}),$n=(e)=>e[bs]!==void 0,QR=x(2,(e,t)=>{if($n(e))return e._tag==="Success"?t(e.value):e;return ge(e,t)}),KR=(e)=>ge(e,Fe),Ne=x(2,(e,t)=>new Ji(e,Q$,t)),YR=x(2,(e,t)=>$n(e)?db(e,t):Ne(e,t)),XR=x(2,(e,t)=>$n(e)?mb(e,t):vb(e,t)),ek=x(2,(e,t)=>$n(e)?fb(e,t):wb(e,t)),tk=x(2,(e,t)=>{if($n(e)){if(e._tag==="Success")return e;let n=br(e.cause);if(Ze(n))return e;return t(n.success)}return kn(e,t)}),im=(e)=>mn(js(e)),Ao=(e)=>e._tag==="Success",nk=(e)=>e._tag==="Success"?je(e):Me(e),rk=(e)=>e._tag==="Success"?je(e.value):Me(e),lb=(e)=>e._tag==="Failure",ik=(e)=>e._tag==="Failure"?je(e):Me(e),eu=(e)=>e._tag==="Failure"?je(e.cause):Me(e),ub=ky(eu,br),ok=ky(eu,Vl),pb=(e)=>e._tag==="Failure"&&Vd(e.cause),sk=(e)=>e._tag==="Failure"&&Gd(e.cause),ak=(e)=>e._tag==="Failure"&&Wy(e.cause),Yn=yt(void 0),db=x(2,(e,t)=>e._tag==="Success"?yt(t(e.value)):e),mb=x(2,(e,t)=>{if(e._tag==="Success")return e;let n=br(e.cause);if(Ze(n))return e;return qr(t(n.success))}),fb=x(2,(e,t)=>{if(e._tag==="Success")return yt(t.onSuccess(e.value));let n=br(e.cause);if(Ze(n))return e;return qr(t.onFailure(n.success))}),X$=x(2,(e,t)=>Ao(e)?yt(t):e),iie=x(2,(e,t)=>Ao(e)?t:e),ck=x(2,(e,t)=>Ao(e)?t.onSuccess(e.value):t.onFailure(e.cause)),lk=X$(void 0),gb=(e)=>{let t=[];for(let n of e)if(n._tag==="Failure")t.push(...n.cause.reasons);return t.length===0?Yn:mn(_i(t))},uk=(e)=>Ao(e)?Pe(e.value):Se(),pk=(e)=>lb(e)?Pe(e.cause):Se(),dk=(e)=>{let t=ub(e);return Ze(t)?Se():Pe(t.success)},mk=(e)=>e,fk=(e)=>ze((t)=>oe(_l(t.context,e))),eU=(e)=>ze((t)=>Yy(_l(t.context,e))),rc=x(2,(e,t)=>ze((n)=>{let r=n.context,i=t(r);if(r===i)return e;return n.setContext(i),uc(n,()=>{n.setContext(r);return}),e})),Hi=x(3,(e,t,n)=>rc(e,(r)=>{let i=gi(r,t),o=n(i);if(i===o)return r;return Cn(r,t,o)})),gk=(e,t,n)=>Bs(ze((r)=>{let i=gi(r.context,e),o=t(i);return r.setContext(Cn(r.context,e,o)),zo(gi(r.context,Do),(s)=>{let c=_l(r.context,e);if(Je(c))return Le;let l=c.value,u;if(n?.reset===void 0){if(l!==o)return Le;u=i}else u=n.reset(i,o,l);return r.setContext(Cn(r.context,e,u)),Le})})),hb=()=>tU,tU=ze((e)=>oe(e.context)),Oo=(e)=>ze((t)=>e(t.context)),hk=x(2,(e,t)=>rc(e,Pt(t))),Wr=x(2,(e,t)=>{if($n(e))return e;return rc(e,Ga(t))}),In=function(){if(arguments.length===1)return x(2,(e,t)=>fR(e,arguments[0],t));return x(3,(e,t,n)=>fR(e,t,n)).apply(this,arguments)},fR=(e,t,n)=>rc(e,Cn(t,n)),om=x(3,(e,t,n)=>ge(n,(r)=>In(e,t,r))),yk=x((e)=>ke(e[1]),(e,t,n)=>yb(e,t,(r,i)=>[r,i],n)),yb=x((e)=>ke(e[1]),(e,t,n,r)=>r?.concurrent?Ne(_s([e,t],{concurrency:2}),([i,o])=>n(i,o)):ge(e,(i)=>Ne(t,(o)=>n(i,o)))),bk=x((e)=>ke(e[0]),(e,t,n)=>Bb(e,t,n?(r)=>lt(n(r)):()=>lt(new ui))),Sk=x(2,(e,t)=>ge(t,(n)=>n?rm(e):Yl)),bb=x(2,(e,t)=>Array.from({length:t},()=>e)),xk=x((e)=>ke(e[0]),(e,t,n)=>_s(bb(e,t),n)),sm=x((e)=>ke(e[0]),(e,t)=>Gi({while:ji,body:Pt(t?.disableYield?e:ge(e,(n)=>tc)),step:Br})),Rn=x(2,(e,t)=>new vk(e,t.length!==1?(n)=>t(n):t)),nU=Qn({op:"OnFailure",[xt]:tm}),vk=function(e,t){this[tt]=e,this[Vn]=t};vk.prototype=nU;var Sb=x(3,(e,t,n)=>Rn(e,(r)=>{if(!t(r))return Ve(r);return n(r)})),ic=x(3,(e,t,n)=>Rn(e,(r)=>{let i=t(r);return Ze(i)?Ve(i.failure):n(i.success,r)})),kn=x(2,(e,t)=>ic(e,br,(n)=>t(n))),wk=(e)=>oc(e,{onFailure:(t)=>pd(t)?Yl:lt(t),onSuccess:eb}),Tk=x(2,(e,t)=>ic(e,Vl,t)),Ck=x(2,(e,t)=>Rn(e,(n)=>hi(t(n),Ve(n)))),Ek=x(3,(e,t,n)=>Sb(e,t,(r)=>hi(n(r),Ve(r)))),am=x(3,(e,t,n)=>Rn(e,(r)=>{let i=t(r);if(Ze(i))return Ve(r);return hi(n(i.success,r),Ve(r))})),xb=x(2,(e,t)=>am(e,br,(n)=>t(n))),Ik=x(3,(e,t,n)=>{let r=Array.isArray(t)?(i)=>be(i,"_tag")&&t.includes(i._tag):So(t);return xb(e,(i)=>r(i)?n(i):Le)}),Rk=x(2,(e,t)=>am(e,Vl,(n)=>t(n))),tu=x((e)=>ke(e[0]),(e,t,n,r)=>Rn(e,(i)=>{let o=br(i);if(Ze(o))return Ve(o.failure);if(!t(o.success))return r?r(o.success):Ve(i);return n(o.success)})),cm=x((e)=>ke(e[0]),(e,t,n,r)=>Rn(e,(i)=>{let o=br(i);if(Ze(o))return Ve(o.failure);let s=t(o.success);if(Ze(s))return r?r(s.failure):Ve(i);return n(s.success)})),lm=x((e)=>ke(e[0]),(e,t,n,r)=>{let i=Array.isArray(t)?(o)=>be(o,"_tag")&&t.includes(o._tag):So(t);return tu(e,i,n,r)}),kk=x((e)=>ke(e[0]),(e,t,n)=>{let r;return cm(e,(i)=>(r??=Object.keys(t),be(i,"_tag")&&fs(i._tag)&&r.includes(i._tag)?je(i):Me(i)),(i)=>t[i._tag](i),n)}),Pk=x((e)=>ke(e[0]),(e,t,n,r,i)=>tu(e,(o)=>So(o,t)&&be(o,"reason")&&(i!==void 0||So(o.reason,n)),(o)=>{let s=o.reason;if(So(s,n))return r(s,o);return i?i(s,o):lt(o)})),Ak=x((e)=>ke(e[0]),(e,t,n,r)=>{let i;return tu(e,(o)=>So(o,t)&&be(o,"reason")&&be(o.reason,"_tag")&&fs(o.reason._tag)&&(r!==void 0||(i??=Object.keys(n)).includes(o.reason._tag)),(o)=>{let s=o.reason;if(i??=Object.keys(n),i.includes(s._tag))return n[s._tag](s,o);return r?r(s,o):lt(o)})}),Ok=x(2,(e,t)=>cm(e,(n)=>{if(So(n,t)&&be(n,"reason"))return je(n.reason);return Me(n)},lt)),vb=x(2,(e,t)=>kn(e,(n)=>em(()=>t(n)))),wb=x(2,(e,t)=>oc(e,{onFailure:(n)=>em(()=>t.onFailure(n)),onSuccess:(n)=>Oe(()=>t.onSuccess(n))})),um=(e)=>kn(e,Wi),Dk=x(2,(e,t)=>kn(e,(n)=>Oe(()=>t(n)))),zk=(e)=>De(()=>{let t=e[Symbol.iterator](),n=t.next();if(n.done)return Wi(Error("Received an empty collection of effects"));function r(i){let o=t.next();if(o.done)return i.value;return kn(i.value,(s)=>r(o))}return r(n)}),Tb=(e)=>kn(e,(t)=>ge(tc,()=>Tb(e))),Mk=x((e)=>ke(e[0]),(e,t)=>{if(!t?.log)return oc(e,{onFailure:(r)=>Le,onSuccess:(r)=>Le});let n=Jr(t.log===!0?void 0:t.log);return Ui(e,{onFailure(r){let i=Jy(r);return Ze(i)?Ve(i.failure):t.message===void 0?n(r):n(t.message,r)},onSuccess:(r)=>Le})}),pm=x((e)=>ke(e[0]),(e,t)=>{if(!t?.log)return Ui(e,{onFailure:(r)=>Le,onSuccess:(r)=>Le});let n=Jr(t.log===!0?void 0:t.log);return Ui(e,{onFailure:(r)=>t.message===void 0?n(r):n(t.message,r),onSuccess:(r)=>Le})}),jk=(e)=>dm(e,{onFailure:Se,onSuccess:Pe}),Po=(e)=>nu(e,{onFailure:Me,onSuccess:je}),Ui=x(2,(e,t)=>new Nk(e,t.onSuccess.length!==1?(n)=>t.onSuccess(n):t.onSuccess,t.onFailure.length!==1?(n)=>t.onFailure(n):t.onFailure)),rU=Qn({op:"OnSuccessAndFailure",[xt]:tm}),Nk=function(e,t,n){this[tt]=e,this[Ft]=t,this[Vn]=n};Nk.prototype=rU;var iU=function(e,t){let n=this.payload;return t.succeedWith(nm?n.onSuccess(e):wo(()=>n.onSuccess(e)))},Bk=(e,t)=>{let n=Qn({op:e,[xt]:tm,[Ft]:iU,[Vn]:t}),r=function(i,o){this[tt]=i,this.payload=o};return r.prototype=n,r},oU=Bk("Match",function(e,t){let n=e.reasons.find(Fi);if(n===void 0)return Ve(e);let r=this.payload;return t.succeedWith(nm?r.onFailure(n.error):wo(()=>r.onFailure(n.error)))}),sU=Bk("MatchCause",function(e,t){let n=this.payload;return t.succeedWith(nm?n.onFailure(e):wo(()=>n.onFailure(e)))}),Cb=x(2,(e,t)=>new sU(e,t)),oc=x(2,(e,t)=>Ui(e,{onFailure:(n)=>{let r=n.reasons.find(Fi);return r?t.onFailure(r.error):Ve(n)},onSuccess:t.onSuccess})),dm=x(2,(e,t)=>new oU(e,t)),nu=x(2,(e,t)=>{if($n(e)){if(e._tag==="Success")return yt(t.onSuccess(e.value));let n=br(e.cause);if(Ze(n))return e;return yt(t.onFailure(n.success))}return dm(e,t)}),_k=x(2,(e,t)=>{if($n(e)){if(e._tag==="Success")return yt(t.onSuccess(e.value));return yt(t.onFailure(e.cause))}return Cb(e,t)}),sc=(e)=>$n(e)?yt(e):aU(e),aU=li({op:"Exit",[xt](e){return e._stack.push(this),this[tt]},[Ft](e,t,n){return t.succeedWith(n??yt(e))},[Vn](e,t,n){return t.succeedWith(n??mn(e))}}),Fk=nu({onFailure:()=>!0,onSuccess:()=>!1}),Lk=nu({onFailure:()=>!1,onSuccess:()=>!0}),qk=x(2,(e,t)=>hi(pc(t),e)),Eb=x(2,(e,t)=>ge(Ib(e,t.duration),(n)=>Je(n)?t.orElse():oe(n.value))),cU=(e)=>new xm(`Operation timed out after '${Ry(e)}'`),Zk=x(2,(e,t)=>{let n=Ot(t);return Eb(e,{duration:n,orElse:()=>lt(cU(n))})}),Ib=x(2,(e,t)=>cb(rm(e),yn(pc(t),Se()))),$k=(e)=>Wn((t)=>{let n=t.monotonicTimeNanosUnsafe();return Ne(e,(r)=>[ks(t.monotonicTimeNanosUnsafe()-n),r])}),Ly="~effect/Scope",qy="~effect/Scope/Closeable",Do=Zn("effect/Scope"),Rb=(e,t)=>ze((n)=>{let r=ac(e,t);if(r===void 0)return Le;return dU(n),r}),ac=(e,t)=>{let n=e.state;if(n._tag==="Closed")return;if(e.state={_tag:"Closed",exit:t},e.parent!==void 0)Pb(e.parent,e);if(n._tag==="Empty")return;if(n.finalizer!==void 0)return Jd(n.finalizer,t);let r=n.finalizers;if(r.size===1)return Jd(r.values().next().value,t);return lU(e,r,t)},Jd=(e,t)=>{try{return e(t)}catch(n){return Tn(n)}},Uk=(e,t)=>Ao(e)?t:Rn(t,(n)=>Ve(ws(e.cause,n))),lU=rb(function*(e,t,n){let r=[],i=[],o=Array.from(t.values()),s=Xa();for(let c=o.length-1;c>=0;c--){let l=o[c];if(e.strategy==="sequential")r.push(yield*sc(Jd(l,n)));else i.push(Sr(s,Jd(l,n),!0,!0,"inherit"))}if(i.length>0)r=yield*ec(i);return yield*gb(r)}),Wk=(e,t)=>Oe(()=>kb(e,t)),kb=(e,t)=>{let n=Hk(t,e);if(e.state._tag==="Closed")return n.state=e.state,n;return cc(e,n,(r)=>Rb(n,r)),n},zo=(e,t)=>De(()=>{if(e.state._tag==="Closed")return t(e.state.exit);return cc(e,{},t),Le}),Jk=(e,t)=>zo(e,Pt(t)),cc=(e,t,n)=>{if(e.state._tag==="Empty")e.state={_tag:"Open",finalizerKey:t,finalizer:n,finalizers:void 0};else if(e.state._tag==="Open"){let r=e.state;if(r.finalizer!==void 0)r.finalizers=new Map([[r.finalizerKey,r.finalizer]]),r.finalizerKey=void 0,r.finalizer=void 0,r.finalizers.set(t,n);else r.finalizers.set(t,n)}},Pb=(e,t)=>{if(e.state._tag!=="Open")return;let n=e.state;if(n.finalizerKey===t)e.state=Zy;else if(n.finalizers!==void 0){if(n.finalizers.delete(t),n.finalizers.size===0)e.state=Zy}},ru=(e)=>Hk(e,void 0),Hk=(e="sequential",t)=>({[qy]:qy,[Ly]:Ly,strategy:e,parent:t,state:Zy}),Zy={_tag:"Empty"},Gk=(e)=>Oe(()=>ru(e)),iu=Do,Ab=In(Do),mm=(e)=>ze((t)=>{let n=t.context,r=ru();return t.setContext(Cn(t.context,Do,r)),uc(t,(i)=>(t.setContext(n),ac(r,i))),e}),Vk=x(2,(e,t)=>Un(Ab(e,t),(n)=>De(()=>ac(t,n)??Le))),fm=(e)=>De(()=>{let t=ru();return Un(e(t),(n)=>De(()=>ac(t,n)??Le))}),gm=(e,t,n)=>Oo((r)=>jo((i)=>ge(iu,(o)=>Ur(n?.interruptible?i(e):e,(s)=>zo(o,(c)=>Wr(t(s,c),r)))))),lc=(e)=>ge(iu,(t)=>Oo((n)=>zo(t,(r)=>Wr(e(r),n)))),Qk=function(){let e=Qn({op:"OnExit",[xt](n){return n._stack.push(this),this.effect},[Ss](n){if(n.interruptible&&this.interruptible!==!0)n._stack.push(ou),n.interruptible=!1},[Ft](n,r,i){i??=yt(n);let o;try{o=this.onExit(i)}catch(s){o=Tn(s)}return o?ge(o,(s)=>i):i},[Vn](n,r,i){i??=mn(n);let o;try{o=this.onExit(i)}catch(s){o=Tn(s)}return o?ge(Uk(i,o),(s)=>i):i}}),t=function(n,r,i){this.effect=n,this.onExit=r,this.interruptible=i};return t.prototype=e,t}(),Mo=(e,t,n)=>new Qk(e,t,n),uc=(e,t)=>{e._stack.push(new Qk(void 0,t,void 0))},Un=x(2,Mo),Kk=x(2,(e,t)=>Un(e,(n)=>t)),Ob=x(3,(e,t,n)=>Un(e,(r)=>{if(!t(r))return Le;return n(r)})),Db=x(3,(e,t,n)=>Un(e,(r)=>{let i=t(r);return Ze(i)?Le:n(i.success,r)})),zb=x(2,(e,t)=>Db(e,eu,t)),Yk=x(3,(e,t,n)=>Ob(e,(r)=>{if(r._tag!=="Failure")return!1;return t(r.cause)},(r)=>n(r.cause))),Mb=x(3,(e,t,n)=>Un(e,(r)=>{if(r._tag!=="Failure")return Le;let i=t(r.cause);return Ze(i)?Le:n(i.success,r.cause)})),Xk=x(2,(e,t)=>Mb(Qd,t)(e)),eP=(e,t,n)=>jo((r)=>ge(e,(i)=>Mo(De(()=>r(t(i))),(o)=>n(i,o),!0))),tP=(e)=>gm(e,(t)=>be(t,Symbol.asyncDispose)?tb(()=>t[Symbol.asyncDispose]()):Oe(()=>t[Symbol.dispose]())),jb=x(2,(e,t)=>Oe(()=>nP(e,typeof t==="function"?(n)=>Zr(Ot(t(n))):Pt(Zr(Ot(t)))))),uU=Pt(1/0),nP=(e,t)=>{let n=0,r,i,o=(s,c)=>(c.awaiters++,uc(s,()=>{if(--c.awaiters>0||i!==c)return;return i=void 0,Kl(c.fiber)}),Qy(c.fiber));return[ze((s)=>{if(i!==void 0)return o(s,i);if(r!==void 0&&(n===1/0||s.getRef(yr).currentTimeMillisUnsafe()<n))return r;r=void 0;let c=s.getRef(yr),l={fiber:void 0,awaiters:0};return i=l,l.fiber=Sr(s,Mo(e,(u)=>{if(i!==l)return;if(i=void 0,pb(u))return;let p=t(u);n=p===1/0?1/0:c.currentTimeMillisUnsafe()+p,r=u}),!0,!0),l.fiber._exit??o(s,l)}),Oe(()=>{r=void 0})]},rP=x(2,(e,t)=>Ne(jb(e,t),(n)=>n[0])),iP=(e)=>Oe(()=>nP(e,uU)[0]),oP=ze((e)=>Ve(js(e.id))),Bs=(e)=>ze((t)=>{if(!t.interruptible)return e;return t.interruptible=!1,t._stack.push(ou),e}),sP=li({op:"SetInterruptible",[Ss](e){if(e.interruptible=this[tt],e._interruptedCause&&e.interruptible)return()=>Ve(e._interruptedCause)}}),ou=sP(!0),pU=sP(!1),aP=(e)=>{if(e.interruptible=!0,e._stack.push(pU),e._interruptedCause)return Ve(e._interruptedCause)},dU=(e)=>{let t=e;if(!t.interruptible)return;t.interruptible=!1,t._stack.push(ou)};var hm=(e)=>ze((t)=>{if(t.interruptible)return e;return aP(t)??e}),jo=(e)=>ze((t)=>{if(!t.interruptible)return e(Fe);return t.interruptible=!1,t._stack.push(ou),e(hm)}),cP=(e)=>ze((t)=>{if(t.interruptible)return e(Fe);let n=aP(t),r=e(Bs);return n??r}),lP=Ne(gm(Oe(()=>new AbortController),(e)=>Oe(()=>e.abort())),(e)=>e.signal),_s=(e,t)=>{if(Ni(e))return t?.mode==="result"?En(e,Po,t):En(e,Fe,t);else if(t?.discard)return t.mode==="result"?En(Object.values(e),Po,t):En(Object.values(e),Fe,t);return De(()=>{let n={};return yn(En(Object.entries(e),([r,i])=>Ne(t?.mode==="result"?Po(i):i,(o)=>{sn(n,r,o)}),{discard:!0,concurrency:t?.concurrency}),n)})},Nb=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t,n)=>Ne(En(e,(r,i)=>Po(t(r,i)),n),(r)=>TI(r,Fe))),uP=x(3,(e,t,n)=>{let r=Et(e);if(r.length===0)return Oe(t);return De(()=>{let i=0,o=t();return Ne(Gi({while:()=>i<r.length,body:()=>n(o,r[i],i),step(s){o=s,i++}}),()=>o)})}),pP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t,n)=>ge(Nb(e,t,{concurrency:n?.concurrency}),([r,i])=>{if(vI(i))return lt(i);return n?.discard?Le:oe(r)})),dP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t)=>De(()=>{let n=e[Symbol.iterator](),r=n.next();if(!r.done)return mP(n,0,t,r.value);return oe(Se())})),mP=(e,t,n,r)=>ge(n(r,t),(i)=>{if(i)return oe(Pe(r));let o=e.next();if(!o.done)return mP(e,t+1,n,o.value);return oe(Se())}),fP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t)=>De(()=>{let n=e[Symbol.iterator](),r=n.next();if(!r.done)return gP(n,0,t,r.value);return oe(Se())})),gP=(e,t,n,r)=>ge(n(r,t),(i)=>{if(gr(i))return oe(Pe(i.success));let o=e.next();if(!o.done)return gP(e,t+1,n,o.value);return oe(Se())}),Gi=li({op:"While",[Ft](e,t){if(this[tt].step(e),this[tt].while())return t._stack.push(this),this[tt].body();return Yn},[xt](e){if(this[tt].while())return e._stack.push(this),this[tt].body();return Yn}}),En=x((e)=>typeof e[1]==="function",(e,t,n)=>De(()=>{let r=fU(n?.concurrency);if(r===1)return mU(e,t,n);let i=Et(e),o=i.length;if(o===0)return n?.discard?Le:oe([]);let s=n?.discard?void 0:Array(o),c=gU({f:t,out:s},i,{concurrency:r});return c?yn(c,s):oe(s)})),hP=(e)=>ge(e,(t)=>{let n=t[Symbol.iterator]().next();return n.done?lt(new ui):oe(n.value)}),mU=(e,t,n)=>De(()=>{let r=n?.discard?void 0:[],i=e[Symbol.iterator](),o=i.next(),s=0;return yn(Gi({while:()=>!o.done,body:()=>t(o.value,s++),step:(c)=>{if(r)r.push(c);o=i.next()}}),r)}),fU=(e)=>e==="unbounded"?Number.POSITIVE_INFINITY:Math.max(1,e??1),oie=()=>(e)=>{let{onItem:t,step:n}=e,r=(o,s,c,l,u)=>ge(sc(u),(p)=>n(o,s[c],p,c)??i(o,s,c+1,l)??Le),i=(o,s,c=0,l=s.length)=>{for(;c<l;c++){let u=s[c],p=t(o,u,c);if(!$n(p))return r(o,s,c,l,p);let m=n(o,u,p,c);if(m)return m._tag==="Failure"?m:void 0}};return i},yP=(e)=>{let{onItem:t,step:n}=e;return(r,i,o)=>{let s=0,c=o.end??i.length,l=o.concurrency,u=!1,p,m,g,f,v,w=(P)=>{let B=Tn(P);return f=B,u=!0,m&&m.size>0?ge(Bs(zs(Array.from(m))),()=>f??B):B},k=()=>{let P=!1;for(;!f&&s<c;s++){let B=i[s],j=v??t(r,B,s);if($n(j)){if(f=n(r,B,j,s),f)break}else if(!p)return hn((Y)=>{p=Xa(),m=new Set,v=j,g=Y;let G;try{G=k()}catch(I){return Y(w(I))}if(G)return Y(G);return De(()=>(f??=Yn,ge(m?zs(m):Le,()=>f?._tag==="Failure"?f:Le)))});else{v=void 0;let Y=Sr(p,j,!0,!0,"inherit");if(Y._exit){if(f=n(r,B,Y._exit,s),f)break;continue}m.add(Y);let G=s;if(Y.addObserver((I)=>{m.delete(Y);try{if(f){if(I._tag==="Failure"){let ee=I.cause.reasons.filter((he)=>he._tag!=="Interrupt");if(ee.length>0){let he=_i(ee);f=mn(f._tag==="Failure"?ws(f.cause,he):he)}}}else{let ee=n(r,B,I,G);if(ee)f=ee,k()}if(P){let ee=k();if(ee)g(ee)}else if(u&&m.size===0)g(f??Le)}catch(ee){g(w(ee))}}),m.size<l)continue;P=!0,s++;return}}if(u=!0,f){if(m&&m.size>0){let B=Ql(p);m.forEach((j)=>j.interruptUnsafe(p.id,B));return}if(g||f._tag==="Failure")return f}else if(g){if(!m)return Yn;else if(m.size===0)g(Le)}};return k()}},sie=()=>(e)=>yP(e),gU=yP({onItem(e,t,n){return e.f(t,n)},step(e,t,n,r){if(n._tag==="Failure")return n;else if(e.out)e.out[r]=n.value}}),Bb=x(3,(e,t,n)=>ge(e,(r)=>t(r)?oe(r):n(r))),_b=x(3,(e,t,n)=>ge(e,(r)=>{let i=t(r);return Ze(i)?n(i.failure):oe(i.success)})),bP=x((e)=>ke(e[0]),(e,t,n)=>_b(e,t,n?(r)=>lt(n(r)):()=>lt(new ui))),SP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t,n)=>De(()=>{let r=[];return yn(En(e,(i,o)=>{let s=t(i,o);if(typeof s==="boolean"){if(s)r.push(i);return Le}return Ne(s,(c)=>{if(c)r.push(i)})},{discard:!0,concurrency:n?.concurrency}),r)})),xP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t)=>De(()=>{let n=[];for(let r of e){let i=t(r);if(gr(i))n.push(i.success)}return oe(n)})),vP=x((e)=>Ni(e[0])&&!ke(e[0]),(e,t,n)=>De(()=>{let r=[];return yn(En(e,(i)=>Ne(t(i),(o)=>{if(gr(o))r.push(o.success)}),{discard:!0,concurrency:n?.concurrency}),r)})),wP=oe({}),TP=Za(Ne),CP=$a(Ne,ge),EP=qa(Ne);var IP=x((e)=>ke(e[0]),(e,t)=>ze((n)=>(DU(),oe(Sr(n,e,t?.startImmediately,!1,t?.uninterruptible??!1))))),Sr=(e,t,n=!1,r=!1,i=!1)=>{let o=e,s=i==="inherit"?o.interruptible:!i,c=new Gy(o.context,s);if(n)c.evaluate(t);else c._asyncContext=AR(),o.currentDispatcher.scheduleTask(()=>c.evaluate(t),0);if(!r&&!c._exit)o.children().add(c),c._parent=o;return c},RP=x((e)=>ke(e[0]),(e,t)=>ze((n)=>oe(Sr(n,e,t?.startImmediately,!0,t?.uninterruptible)))),kP=(e)=>ze((t)=>{let n=t._children&&new Set(t._children),r=t.interruptible;return Mo(e,(i)=>{let o=t._children;if(o===void 0||o.size===0)return Le;else if(n)o=SI(o,(c)=>!n.has(c));let s=nc(ec(o));return r?hm(s):s})}),Fb=x((e)=>ke(e[0]),(e,t,n)=>ze((r)=>{let i=Sr(r,e,n?.startImmediately,!0,n?.uninterruptible);if(!i._exit)if(t.state._tag!=="Closed"){let o={};cc(t,o,()=>_R((c)=>c===i.id?Le:Kl(i))),i.addObserver(()=>Pb(t,o))}else i.interruptUnsafe(r.id,Ql(r));return oe(i)})),PP=x((e)=>ke(e[0]),(e,t)=>ge(iu,(n)=>Fb(e,n,t))),Vi=(e)=>(t,n)=>{let r=new Gy(n?.scheduler?Cn(e,Ll,n.scheduler):e,n?.uninterruptible!==!0);if(r.evaluate(t),r._exit)return r;if(n?.signal)if(n.signal.aborted)r.interruptUnsafe();else{let i=()=>r.interruptUnsafe();n.signal.addEventListener("abort",i,{once:!0}),r.addObserver(()=>n.signal.removeEventListener("abort",i))}if(n?.onFiberStart)n.onFiberStart(r);return r},AP=x(2,(e,t)=>{if(e._exit)return e;else if(t.state._tag==="Closed")return e.interruptUnsafe(e.id),e;let n={};return cc(t,n,()=>Kl(e)),e.addObserver(()=>Pb(t,n)),e}),OP=Vi(fn()),Lb=(e)=>{let t=Vi(e);return(n,r)=>{let i=t(n,r);if(r?.onExit)i.addObserver(r.onExit);return(o)=>i.interruptUnsafe(o)}},DP=Lb(fn()),ym=(e)=>{let t=Vi(e);return(n,r)=>{let i=t(n,r);return new Promise((o)=>{i.addObserver((s)=>o(s))})}},zP=ym(fn()),qb=(e)=>{let t=ym(e);return(n,r)=>t(n,r).then((i)=>{if(i._tag==="Failure")throw Kd(i.cause);return i.value})},MP=qb(fn()),bm=(e)=>{let t=Vi(e);return(n)=>{if($n(n))return n;let r=new Ld("sync"),i=t(n,{scheduler:r});return i._dispatcher?.flush(),i._exit??Tn(new vm(i))}},jP=bm(fn()),Zb=(e)=>{let t=bm(e);return(n)=>{let r=t(n);if(r._tag==="Failure")throw Kd(r.cause);return r.value}},NP=Zb(fn()),gR=oe(!0),hR=oe(!1);class BP{waiters=[];scheduled=void 0;_isOpen;constructor(e){this._isOpen=e}scheduleUnsafe(e){if(this.waiters.length===0)return gR;if(this.scheduled===void 0)this.scheduled=this.waiters,e.currentDispatcher.scheduleTask(this.flushScheduled,0);else for(let t=0;t<this.waiters.length;t++)this.scheduled.push(this.waiters[t]);return this.waiters=[],gR}flushScheduled=()=>{if(this.scheduled===void 0)return;let e=this.scheduled;this.scheduled=void 0;for(let t=0;t<e.length;t++)e[t](Yn)};flushWaiters(){let e=this.waiters;this.waiters=[],this.flushScheduled();for(let t=0;t<e.length;t++)e[t](Yn)}open=ze((e)=>{if(this._isOpen)return hR;return this._isOpen=!0,this.scheduleUnsafe(e)});release=ze((e)=>this._isOpen?hR:this.scheduleUnsafe(e));openUnsafe(){if(this._isOpen)return!1;return this._isOpen=!0,this.flushWaiters(),!0}await=hn((e)=>{if(this._isOpen)return e(Le);return this.waiters.push(e),Oe(()=>{let t=this.waiters.indexOf(e);if(t!==-1)this.waiters.splice(t,1);else if(this.scheduled!==void 0){if(t=this.scheduled.indexOf(e),t!==-1)this.scheduled.splice(t,1)}})});closeUnsafe(){if(!this._isOpen)return!1;return this._isOpen=!1,!0}close=Oe(()=>this.closeUnsafe());whenOpen=(e)=>ge(this.await,()=>e);isOpen(){return this._isOpen}}var hU=(e)=>new BP(e??!1),aie=(e)=>Oe(()=>hU(e)),_P=ze((e)=>oe(e.getRef(Dy))),FP=x(2,(e,t)=>In(e,Dy,t)),LP=In(Ud),qP=In(Os),Hd=BigInt(0),yU={_tag:"Span",spanId:"noop",traceId:"noop",sampled:!1,status:{_tag:"Ended",startTime:Hd,endTime:Hd,exit:Yn},attributes:new Map,links:[],kind:"internal",attribute(){},event(){},end(){},addLinks(){}},bU=(e)=>Object.assign(Object.create(yU),e),ZP=(e)=>{if(!e)return Se();return At(e.annotations,$d)?e._tag==="Span"?ZP(Is(e.parent)):Se():Pe(e)},$b=(e,t,n)=>{let r=!e.cache.tracerEnabled||n?.annotations&&At(n.annotations,$d),i=n?.parent!==void 0?Pe(n.parent):n?.root?Se():ZP(e.cache.span),o;if(r)o=bU({name:t,parent:i,annotations:Cn(n?.annotations??fn(),$d,!0)});else{let s=e.cache.tracer??zy,c=e.getRef(yr),l=e.getRef(Os),u=e.getRef(ql),p=e.getRef(Zl),m=n?.level??e.getRef(rR),g=n?.links!==void 0?[...p,...n.links]:p.length===0?[]:p.slice();o=s.span({name:t,parent:i,annotations:n?.annotations??fn(),links:g,startTime:l?c.currentTimeNanosUnsafe():Hd,kind:n?.kind??"internal",root:n?.root??Je(i),sampled:n?.sampled??(an(i)&&i.value.sampled===!1?!1:!uA(e.getRef(iR),m))});for(let f in u)o.attribute(f,u[f]);if(n?.attributes!==void 0)for(let f in n.attributes)o.attribute(f,n.attributes[f])}return o},$P=(e,t)=>ze((n)=>oe($b(n,e,t))),$r=(e,t)=>Bs(ze((n)=>{let r=gi(n.context,Do),i=$b(n,e,t??{}),o=n.getRef(yr),s=n.getRef(Os);return yn(zo(r,(c)=>GP(i,c,o,s)),i)})),UP=function(){let e=typeof arguments[0]!=="string",t=e?arguments[1]:arguments[0],n=ko(e?arguments[2]:arguments[1]);if(e){let r=arguments[0];return ge($r(t,n),(i)=>Ya(r,i,n))}return(r)=>ge($r(t,n),(i)=>Ya(r,i,n))},SU=(e,t)=>(t=typeof t==="function"?t:Fn,Hi(Ka,(n)=>({name:e,stack:t,parent:n}))),WP=ql,JP=Zl,HP=x((e)=>ke(e[0]),(e,t,n={})=>{let i=(Array.isArray(t)?t:[t]).map((o)=>({span:o,attributes:n}));return Hi(e,Zl,(o)=>[...o,...i])}),GP=(e,t,n,r)=>Oe(()=>{if(e.status._tag==="Ended")return;e.end(r?n.currentTimeNanosUnsafe():Hd,t)}),$l=(e,...t)=>{let n=t.length===1?void 0:t[0],r=t[t.length-1];return ze((i)=>{let o=$b(i,e,n),s=i.getRef(yr),c=i.getRef(Os);return uc(i,(l)=>GP(o,l,s,c)),r(o)})},$y=In(As),Ya=function(){let e=ke(arguments[0]),t=e?arguments[1]:arguments[0],n=e?arguments[2]:arguments[1],r=Fe;if(t._tag==="Span")n=ko(n),r=SU(t.name,n?.captureStackTrace);if(e)return $y(r(arguments[0]),t);return(i)=>$y(r(i),t)},VP=function(){let e=typeof arguments[0]!=="string",t=e?arguments[1]:arguments[0],n=ko(arguments[2]);if(e){let o=arguments[0];return $l(t,arguments[2],(s)=>Ya(o,s,n))}let r=typeof arguments[1]==="function"?arguments[1]:void 0,i=r?void 0:arguments[1];return(o,...s)=>$l(t,r?r(...s):i,(c)=>Ya(o,c,n))},QP=x((e)=>ke(e[0]),(e,...t)=>Hi(e,ql,(n)=>{let r=t.length===1?{...n,...t[0]}:{...n};if(t.length===1)return r;else sn(r,t[0],t[1]);return r})),KP=(...e)=>ze((t)=>{let n=t.currentSpanLocal;if(n)if(e.length===1)for(let[r,i]of Object.entries(e[0]))n.attribute(r,i);else n.attribute(e[0],e[1]);return Le}),YP=ze((e)=>{let t=e.currentSpanLocal;return t?oe(t):lt(new ui)}),XP=eU(As),yr=He("effect/Clock",{defaultValue:()=>new eA}),By=2147483647;class eA{currentTimeMillisUnsafe(){return Date.now()}currentTimeMillis=Oe(()=>this.currentTimeMillisUnsafe());currentTimeNanosUnsafe(){return xU()}currentTimeNanos=Oe(()=>this.currentTimeNanosUnsafe());monotonicTimeNanosUnsafe(){return nA()}monotonicTimeNanos=Oe(()=>this.monotonicTimeNanosUnsafe());sleep(e){return this.sleepMillis(Zr(e))}sleepMillis(e){if(e<=0)return tc;else if(!Number.isFinite(e))return Xl;return hn((t)=>{let n=e>By?this.sleepMillis(e-By):Le,r=setTimeout(()=>t(n),Math.min(e,By));return Oe(()=>clearTimeout(r))})}}var tA=BigInt(1e6),nA=function(){let e=globalThis.process?.hrtime;if(typeof e?.bigint==="function")return()=>e.bigint();if(typeof performance<"u"&&typeof performance.now==="function")return()=>BigInt(Math.round(performance.now()*1e6));let t=BigInt(0);return()=>{let n=BigInt(Date.now())*tA;if(n>t)t=n;return t}}(),xU=function(){let e=BigInt(1e9),t;return()=>{let n=nA(),r=BigInt(Date.now())*tA;if(t===void 0)t=r-n;else{let i=t+n;if((r>i?r-i:i-r)>e)t=r-n}return t+n}}(),Wn=(e)=>ze((t)=>e(t.getRef(yr))),pc=(e)=>Wn((t)=>t.sleep(Ot(e))),Sm=Wn((e)=>e.currentTimeMillis),rA=Wn((e)=>e.currentTimeNanos),iA=Wn((e)=>e.monotonicTimeNanos),Ul="~effect/Cause/TimeoutError",oA=(e)=>be(e,Ul);class xm extends Li("TimeoutError"){[Ul]=Ul;constructor(e){super({message:e})}}var Wl="~effect/Cause/IllegalArgumentError",sA=(e)=>be(e,Wl);class Ub extends Li("IllegalArgumentError"){[Wl]=Wl;constructor(e){super({message:e})}}var Jl="~effect/Cause/ExceededCapacityError",aA=(e)=>be(e,Jl);class Wb extends Li("ExceededCapacityError"){[Jl]=Jl;constructor(e){super({message:e})}}var Hl="~effect/Cause/AsyncFiberError",cA=(e)=>be(e,Hl);class vm extends Li("AsyncFiberError"){[Hl]=Hl;constructor(e){super({message:"An asynchronous Effect was executed with Effect.runSync",fiber:e})}}var Gl="~effect/Cause/UnknownError",lA=(e)=>be(e,Gl);class su extends Li("UnknownError"){[Gl]=Gl;constructor(e,t){super({message:t,cause:e})}}var vU=He("effect/Console",{defaultValue:()=>globalThis.console}),wU=(e)=>{switch(e){case"All":return Number.MIN_SAFE_INTEGER;case"Fatal":return 50000;case"Error":return 40000;case"Warn":return 30000;case"Info":return 20000;case"Debug":return 1e4;case"Trace":return 0;case"None":return Number.MAX_SAFE_INTEGER}},TU=sy(Ml,wU),uA=bd(TU),Jb=He("effect/Logger/CurrentLoggers",{defaultValue:()=>new Set([AU,OU])}),CU=He("effect/Logger/LogToStderr",{defaultValue:nd}),pA=function(){let e=typeof arguments[0]==="string"?[[arguments[0],arguments[1]]]:Object.entries(arguments[0]);return Bs(ze((t)=>{let n=t.getRef($i),r={...n};for(let i=0;i<e.length;i++){let[o,s]=e[i];sn(r,o,s)}return t.setContext(Cn(t.context,$i,r)),zo(gi(t.context,Do),(i)=>{let o=t.getRef($i),s={...o};for(let c=0;c<e.length;c++){let[l,u]=e[c];if(o[l]!==u&&!Object.is(o[l],u))continue;if(Object.hasOwn(n,l))sn(s,l,n[l]);else delete s[l]}return t.setContext(Cn(t.context,$i,s)),Le})}))},EU="~effect/Logger",IU={[EU]:{_Message:Fe,_Output:Fe},pipe(){return et(this,arguments)}},dA=(e)=>{let t=Object.create(IU);return t.log=e,t},RU=(e)=>e.replace(/[\s="]/g,"_"),kU=(e,t)=>`${RU(e[0])}=${t-e[1]}ms`;var Jr=(e)=>(...t)=>{let n=void 0;for(let r=0,i=t.length;r<i;r++){let o=t[r];if(Ba(o)){if(n)t.splice(r,1);else t=t.slice(0,r).concat(t.slice(r+1));n=n?_i(n.reasons.concat(o.reasons)):o,r--}}if(n===void 0)n=cd;return ze((r)=>{let i=e??r.cache.logLevel;if(uA(r.cache.minimumLogLevel,i))return Le;let o=r.getRef(yr),s=r.getRef(Jb);if(s.size>0){let c=new Date(o.currentTimeMillisUnsafe());for(let l of s)l.log({cause:n,fiber:r,date:c,logLevel:i,message:t})}return Le})};var Ds={bold:"1",red:"31",green:"32",yellow:"33",blue:"34",cyan:"36",white:"37",gray:"90",black:"30",bgBrightRed:"101"},cie={None:[],All:[],Trace:[Ds.gray],Debug:[Ds.blue],Info:[Ds.green],Warn:[Ds.yellow],Error:[Ds.red],Fatal:[Ds.bgBrightRed,Ds.black]};var PU=(e)=>`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`;var AU=dA(({cause:e,date:t,fiber:n,logLevel:r,message:i})=>{let o=Array.isArray(i)?i.slice():[i];if(e.reasons.length>0)o.push(Yd(e));let s=t.getTime(),c=n.getRef(Wd),l="";for(let g of c)l+=` ${kU(g,s)}`;let u=n.getRef($i);if(Object.keys(u).length>0)o.push(u);let p=n.getRef(vU);(n.getRef(CU)?p.error:p.log)(`[${PU(t)}] ${r.toUpperCase()} (#${n.id})${l}:`,...o)}),OU=dA(({cause:e,fiber:t,logLevel:n,message:r})=>{let i=t.getRef(yr),o=t.getRef($i),s=t.cache.span;if(s===void 0||s._tag==="ExternalSpan")return;let c={};for(let[l,u]of Object.entries(o))sn(c,l,u);if(c["effect.fiberId"]=t.id,c["effect.logLevel"]=n.toUpperCase(),e.reasons.length>0)c["effect.cause"]=Yd(e);s.event(_E(Array.isArray(r)&&r.length===1?r[0]:r),i.currentTimeNanosUnsafe(),c)});function DU(){Fy.interruptChildren??=H$}var au=oe(void 0);var mA=x((e)=>ke(e[0]),(e,t)=>zb(e,(n)=>ze((r)=>(zU(r,n,t?.defectsOnly),Le)))),zU=(e,t,n)=>{let r=e.getRef(cR);if(r.size===0)return;if(n&&!Gd(t))return;let i={cause:t,fiber:e,timestamp:e.getRef(yr).currentTimeNanosUnsafe()};r.forEach((o)=>o.report(i))};var MU=Gh,Hb=yt,Gb=mn,jU=qr,NU=Tn,BU=im,_U=Yn;var Fs=Ao,cu=lb,FU=ak,LU=sk,qU=pb,ZU=nk,$U=rk,UU=ik,WU=eu,JU=ub,HU=ok,GU=ck,VU=db,QU=mb,KU=fb,YU=lk,XU=gb,eW=uk,tW=pk,nW=dk;var vt={};Ln(vt,{Scope:()=>Vb,addFinalizer:()=>oW,addFinalizerExit:()=>iW,close:()=>wm,closeUnsafe:()=>aW,fork:()=>sW,forkUnsafe:()=>lu,make:()=>rW,makeUnsafe:()=>Qb,provide:()=>dc,use:()=>cW});var Vb=Do,rW=Gk,Qb=ru,dc=Ab,iW=zo,oW=Jk,sW=Wk,lu=kb,wm=Rb,aW=ac,cW=Vk;var ne={};Ln(ne,{Do:()=>AG,Transaction:()=>Tu,TypeId:()=>gG,abortSignal:()=>M2,acquireDisposable:()=>y2,acquireRelease:()=>Eu,acquireUseRelease:()=>b2,addFinalizer:()=>S2,all:()=>hG,andThen:()=>HG,annotateCurrentSpan:()=>J2,annotateLogs:()=>MQ,annotateLogsScoped:()=>jQ,annotateSpans:()=>W2,as:()=>QG,asSome:()=>KG,asVoid:()=>YG,awaitAllChildren:()=>uQ,bind:()=>zG,bindTo:()=>OG,cached:()=>R2,cachedInvalidateWithTTL:()=>P2,cachedWithTTL:()=>k2,callback:()=>ES,catch:()=>nV,catchCause:()=>cV,catchCauseFilter:()=>fV,catchCauseIf:()=>mV,catchDefect:()=>lV,catchEager:()=>eK,catchFilter:()=>pV,catchIf:()=>uV,catchNoSuchElement:()=>dV,catchReason:()=>oV,catchReasons:()=>sV,catchTag:()=>rV,catchTags:()=>iV,clockWith:()=>jO,context:()=>Cu,contextWith:()=>i2,currentParentSpan:()=>G2,currentSpan:()=>H2,delay:()=>MV,die:()=>IO,effectify:()=>JQ,ensuring:()=>x2,eventually:()=>vV,exit:()=>kO,fail:()=>CS,failCause:()=>NG,failCauseSync:()=>BG,failSync:()=>jG,fiber:()=>pQ,fiberId:()=>dQ,filter:()=>qV,filterMap:()=>ZV,filterMapEffect:()=>$V,filterMapOrElse:()=>WV,filterMapOrFail:()=>HV,filterOrElse:()=>UV,filterOrFail:()=>JV,findFirst:()=>xG,findFirstFilter:()=>vG,firstSuccessOf:()=>AV,flatMap:()=>Ki,flatMapEager:()=>XQ,flatten:()=>JG,flip:()=>XG,fn:()=>CQ,fnUntraced:()=>TQ,fnUntracedEager:()=>tK,forEach:()=>wG,forever:()=>j2,forkChild:()=>sQ,forkDetach:()=>lQ,forkIn:()=>aQ,forkScoped:()=>cQ,fromNullishOr:()=>WG,fromOption:()=>$G,fromResult:()=>ZG,gen:()=>MG,head:()=>TG,ignore:()=>EV,ignoreCause:()=>IV,interrupt:()=>Ks,interruptible:()=>A2,interruptibleMask:()=>z2,isEffect:()=>Vr,isFailure:()=>n2,isSuccess:()=>r2,let:()=>DG,linkSpans:()=>K2,log:()=>IQ,logDebug:()=>OQ,logError:()=>PQ,logFatal:()=>RQ,logInfo:()=>AQ,logTrace:()=>DQ,logWarning:()=>kQ,logWithLevel:()=>EQ,makeSpan:()=>Y2,makeSpanScoped:()=>X2,map:()=>Qs,mapBoth:()=>hV,mapBothEager:()=>YQ,mapEager:()=>QQ,mapError:()=>gV,mapErrorEager:()=>KQ,match:()=>VV,matchCause:()=>KV,matchCauseEager:()=>YV,matchCauseEffect:()=>e2,matchCauseEffectEager:()=>XV,matchEager:()=>QV,matchEffect:()=>t2,never:()=>PG,onError:()=>v2,onErrorFilter:()=>T2,onErrorIf:()=>w2,onExit:()=>IS,onExitFilter:()=>I2,onExitIf:()=>E2,onExitPrimitive:()=>C2,onInterrupt:()=>O2,option:()=>VG,orDie:()=>yV,orElseSucceed:()=>PV,partition:()=>yG,promise:()=>CG,provide:()=>o2,provideContext:()=>s2,provideService:()=>DO,provideServiceEffect:()=>m2,race:()=>FV,raceAll:()=>BV,raceAllFirst:()=>_V,raceFirst:()=>LV,reduce:()=>bG,repeat:()=>N2,repeatOrElse:()=>B2,replicate:()=>_2,replicateEffect:()=>F2,request:()=>iQ,requestUnsafe:()=>oQ,result:()=>GG,retry:()=>wV,retryOrElse:()=>TV,runCallback:()=>fQ,runCallbackWith:()=>mQ,runFork:()=>Iu,runForkWith:()=>Ru,runPromise:()=>gQ,runPromiseExit:()=>yQ,runPromiseExitWith:()=>bQ,runPromiseWith:()=>hQ,runSync:()=>SQ,runSyncExit:()=>vQ,runSyncExitWith:()=>wQ,runSyncWith:()=>xQ,sandbox:()=>CV,satisfiesErrorType:()=>GQ,satisfiesServicesType:()=>VQ,satisfiesSuccessType:()=>HQ,schedule:()=>L2,scheduleFrom:()=>MO,scope:()=>f2,scoped:()=>g2,scopedWith:()=>h2,service:()=>c2,serviceOption:()=>l2,setContext:()=>a2,sleep:()=>jV,spanAnnotations:()=>V2,spanLinks:()=>Q2,succeed:()=>Vs,succeedNone:()=>IG,succeedSome:()=>RG,suspend:()=>Qi,sync:()=>tr,tap:()=>RO,tapCause:()=>AO,tapCauseFilter:()=>xV,tapCauseIf:()=>SV,tapDefect:()=>OO,tapError:()=>PO,tapErrorTag:()=>bV,timed:()=>NV,timeout:()=>OV,timeoutOption:()=>DV,timeoutOrElse:()=>zV,tracer:()=>q2,track:()=>BQ,trackDefects:()=>LQ,trackDuration:()=>qQ,trackErrors:()=>FQ,trackSuccesses:()=>_Q,transposeOption:()=>UG,try:()=>_G,tryPromise:()=>EG,tx:()=>ZQ,txRetry:()=>WQ,undefined:()=>kG,uninterruptible:()=>D2,uninterruptibleMask:()=>zO,unwrapReason:()=>aV,updateContext:()=>u2,updateService:()=>p2,updateServiceScoped:()=>d2,useSpan:()=>eQ,validate:()=>SG,void:()=>Tr,when:()=>GV,whileLoop:()=>Ec,withErrorReporting:()=>kV,withExecutionPlan:()=>RV,withFiber:()=>Ic,withFiberSucceed:()=>qG,withLogSpan:()=>NQ,withLogger:()=>zQ,withParentSpan:()=>rQ,withSpan:()=>tQ,withSpanScoped:()=>nQ,withTracer:()=>Z2,withTracerEnabled:()=>$2,withTracerTiming:()=>U2,yieldNow:()=>FG,yieldNowWith:()=>LG,zip:()=>eV,zipWith:()=>tV});var Ws={};Ln(Ws,{CurrentMemoMap:()=>Zs,build:()=>IA,buildWithMemoMap:()=>uu,buildWithScope:()=>iS,catch:()=>IW,catchCause:()=>kW,catchTag:()=>RW,effect:()=>Rm,effectContext:()=>oS,effectDiscard:()=>bW,empty:()=>hW,flatMap:()=>AA,forkMemoMap:()=>gW,forkMemoMapUnsafe:()=>rS,fresh:()=>PW,fromBuild:()=>No,fromBuildMemo:()=>Im,isLayer:()=>Em,launch:()=>AW,makeMemoMap:()=>fW,makeMemoMapUnsafe:()=>gc,merge:()=>xW,mergeAll:()=>km,mock:()=>OW,orDie:()=>EW,parentSpan:()=>DA,provide:()=>fc,provideMerge:()=>vW,satisfiesErrorType:()=>MW,satisfiesServicesType:()=>jW,satisfiesSuccessType:()=>zW,span:()=>NW,succeed:()=>RA,succeedContext:()=>$s,suspend:()=>SW,sync:()=>yW,syncContext:()=>Xb,tap:()=>wW,tapCause:()=>CW,tapError:()=>TW,unwrap:()=>eS,updateService:()=>OA,withParentSpan:()=>tS,withSpan:()=>BW});var fA="~effect/Deferred",die=(e)=>be(e,fA),lW={[fA]:{_A:Fe,_E:Fe},pipe(){return et(this,arguments)}},gA=function(){this.resumes=void 0,this.effect=void 0};gA.prototype=lW;var Ls=()=>new gA,mie=()=>Oe(()=>Ls()),mc=(e)=>hn((t)=>{if(e.effect)return t(e.effect);return e.resumes??=[],e.resumes.push(t),Oe(()=>{let n=e.resumes;if(n===void 0)return;let r=n.indexOf(t);if(r>=0)n.splice(r,1)})});var uW=x(2,(e,t)=>Oe(()=>qs(e,t))),Kb=uW;var pW=x(2,(e,t)=>Kb(e,mn(t)));var fie=x(2,(e,t)=>pW(e,js(t)));var gie=x(2,(e,t)=>Kb(e,yt(t)));var qs=(e,t)=>{if(e.effect)return!1;if(e.effect=t,e.resumes){let n=e.resumes;e.resumes=void 0;for(let r=0;r<n.length;r++)n[r](t)}return!0},Tm=x(2,(e,t)=>jo((n)=>ge(sc(n(e)),(r)=>Kb(t,r))));var hA=$i;var yA=Wd,bA=Ka;var hie=Os,yie=lR;var EA="~effect/Layer",SA="~effect/Layer/MemoMap",dW=(e,t)=>{let n={observers:0,deferred:Ls(),scope:Qb(),finalizer:(r)=>De(()=>{if(--n.observers>0)return Le;return e.map.delete(t),wm(n.scope,r)})};return n},xA=(e,t)=>{if(t.state._tag==="Closed")return!1;return e.observers++,cc(t,{},e.finalizer),!0},Em=(e)=>be(e,EA),mW={[EA]:{_ROut:Fe,_E:Fe,_RIn:Fe},pipe(){return et(this,arguments)}},Us=(e)=>{let t=Object.create(mW);return t.build=e,t},No=(e)=>Us((t,n)=>{let r=lu(n);return Un(e(t,r),(i)=>i._tag==="Failure"?wm(r,i):Le)}),Im=(e)=>{let t=No((n,r)=>n.getOrElseMemoize(t,r,e));return t};class nS{get[SA](){return SA}parent;constructor(e){this.parent=e}map=new Map;get(e,t){let n=this.map.get(e);if(n)return xA(n,t),n.deferred.effect??mc(n.deferred);return this.parent?.get(e,t)}getOrElseMemoize(e,t,n){return De(()=>{let r;return Mo(De(()=>{let i=this.get(e,t);if(i)return i;let o=dW(this,e);if(!xA(o,t))return n(this,t);return r=o.deferred,this.map.set(e,o),n(this,o.scope)}),(i)=>{if(r)qs(r,i)})})}}var gc=()=>new nS,rS=(e)=>new nS(e),fW=Oe(gc),gW=(e)=>Oe(()=>rS(e));class Zs extends Zn()("effect/Layer/CurrentMemoMap"){static forkOrCreate(e){let t=Bl(e,Zs);return t?rS(t):gc()}}var uu=x(3,(e,t,n)=>In(Ne(e.build(t,n),Cn(Zs,t)),Zs,t)),IA=(e)=>ze((t)=>uu(e,Zs.forkOrCreate(t.context),gi(t.context,Vb))),iS=x(2,(e,t)=>ze((n)=>uu(e,Zs.forkOrCreate(n.context),t))),RA=function(){if(arguments.length===1)return(e)=>$s(fi(arguments[0],e));return $s(fi(arguments[0],arguments[1]))},$s=(e)=>Us(Pt(oe(e))),hW=$s(fn()),yW=function(){if(arguments.length===1)return(e)=>Xb(()=>fi(arguments[0],e()));return Xb(()=>fi(arguments[0],arguments[1]()))},Xb=(e)=>Im(Pt(Oe(e))),Rm=function(){if(arguments.length===1)return(e)=>vA(arguments[0],e);return vA(arguments[0],arguments[1])},vA=(e,t)=>oS(Ne(t,(n)=>fi(e,n))),oS=(e)=>Im((t,n)=>dc(e,n)),bW=(e)=>oS(yn(e,fn())),SW=(e)=>Im((t,n)=>De(()=>e().build(t,n))),wA=Zn("effect/Layer/unwrap"),eS=(e)=>AA(Rm(wA)(e),At(wA)),kA=(e,t,n)=>{let r=lu(n,"parallel");return En(e,(i)=>i.build(t,lu(r,"sequential")),{concurrency:e.length}).pipe(Ne((i)=>Cy(...i)))},km=(...e)=>No((t,n)=>kA(e,t,n)),xW=x(2,(e,t)=>km(e,...Array.isArray(t)?t:[t])),PA=(e,t,n)=>No((r,i)=>ge(Array.isArray(t)?kA(t,r,i):t.build(r,i),(o)=>e.build(r,i).pipe(Wr(o),Ne((s)=>n(s,o))))),fc=x(2,(e,t)=>PA(e,t,Fe)),vW=x(2,(e,t)=>PA(e,t,(n,r)=>Ga(r,n))),AA=x(2,(e,t)=>No((n,r)=>ge(e.build(n,r),(i)=>t(i).build(n,r)))),wW=x(2,(e,t)=>No((n,r)=>ge(e.build(n,r),(i)=>dc(yn(t(i),i),r)))),TW=x(2,(e,t)=>No((n,r)=>kn(e.build(n,r),(i)=>dc(hi(t(i),lt(i)),r)))),CW=x(2,(e,t)=>No((n,r)=>Rn(e.build(n,r),(i)=>dc(hi(t(i),Ve(i)),r)))),EW=(e)=>Us((t,n)=>um(e.build(t,n))),IW=x(2,(e,t)=>Us((n,r)=>kn(e.build(n,r),(i)=>t(i).build(n,r))));var RW=x(3,(e,t,n)=>Us((r,i)=>lm(e.build(r,i),t,(o)=>n(o).build(r,i)))),kW=x(2,(e,t)=>Us((n,r)=>Rn(e.build(n,r),(i)=>t(i).build(n,r)))),OA=x(3,(e,t,n)=>fc(e,Rm(t,Ne(t,n)))),PW=(e)=>Us((t,n)=>e.build(gc(),n)),AW=(e)=>mm(hi(IA(e),Xl)),OW=function(){if(arguments.length===1)return(e)=>TA(arguments[0],e);return TA(arguments[0],arguments[1])},TA=(e,t)=>RA(e)(new Proxy({...t},{get(n,r,i){if(r in n)return n[r];let o=ai();Gn(2);let s=Error(`${e.key}: Unimplemented method "${r.toString()}"`);return Gn(o),s.name="UnimplementedError",DW(s)},has:ji})),DW=(e)=>{let t=Object.assign(Wi(e),{[CA]:CA,channel:{[Cm]:Cm,transform:()=>oe(t),pipe(){return et(this,arguments)}},[Cm]:Cm,transform:()=>oe(t)});function n(){return t}return Object.assign(n,t),Object.setPrototypeOf(n,Object.getPrototypeOf(t)),n},CA="~effect/Stream",Cm="~effect/Channel",zW=()=>(e)=>e,MW=()=>(e)=>e,jW=()=>(e)=>e,NW=(e,t)=>(t=ko(t),Rm(As,t?.onEnd?Ur($r(e,t),(n)=>lc((r)=>t.onEnd(n,r))):$r(e,t))),DA=(e)=>$s(As.context(e)),BW=function(){let e=typeof arguments[0]!=="string",t=e?arguments[1]:arguments[0],n=ko(e?arguments[2]:arguments[1]);if(e){let r=arguments[0];return eS(Ne(n?.onEnd!==void 0?Ur($r(t,n),(i)=>lc((o)=>n.onEnd(i,o))):$r(t,n),(i)=>tS(r,i,n)))}return(r)=>eS(Ne(n?.onEnd!==void 0?Ur($r(t,n),(i)=>lc((o)=>n.onEnd(i,o))):$r(t,n),(i)=>tS(r,i,n)))},tS=function(){let e=Em(arguments[0]),t=e?arguments[1]:arguments[0],n=e?arguments[2]:arguments[1],r=Fe;if(t._tag==="Span")n=ko(n),r=_W(t.name,n?.captureStackTrace);let i=DA(t);if(e)return fc(r(arguments[0]),i);return(o)=>fc(r(o),i)},_W=(e,t)=>(t=typeof t==="function"?t:Fn,OA(bA,(n)=>({name:e,stack:t,parent:n})));var zA="~effect/ExecutionPlan";var FW={[zA]:zA,get captureRequirements(){let e=this;return Oo((t)=>oe(LW(e.steps.map((n)=>({...n,while:n.while?(r)=>Wr(n.while(r),t):void 0,provide:Em(n.provide)?fc(n.provide,$s(t)):n.provide})))))},pipe(){return et(this,arguments)}},LW=(e)=>{let t=Object.create(FW);return t.steps=e,t};var MA=He("effect/ExecutionPlan/CurrentMetadata",{defaultValue:Pt({attempt:0,stepIndex:0})});var wr={};Ln(wr,{CurrentMetadata:()=>Bo,addDelay:()=>zH,concat:()=>MH,concatResult:()=>cO,cron:()=>BH,duration:()=>_H,during:()=>FH,exponential:()=>ZH,fibonacci:()=>$H,fixed:()=>UH,forever:()=>Bm,fromStep:()=>er,fromStepWithMetadata:()=>Hs,identity:()=>KH,isSchedule:()=>Mm,jittered:()=>WH,map:()=>xu,max:()=>jH,min:()=>LH,modifyDelay:()=>xS,once:()=>VH,passthrough:()=>jm,recurs:()=>Nm,setInputType:()=>YH,spaced:()=>lO,tap:()=>JH,toStep:()=>bi,toStepWithMetadata:()=>Tc,toStepWithSleep:()=>DH,upTo:()=>HH,while:()=>Gs,windowed:()=>GH});var Xn={};Ln(Xn,{AsyncFiberError:()=>OJ,AsyncFiberErrorTypeId:()=>PJ,Done:()=>xJ,DoneTypeId:()=>SJ,ExceededCapacityError:()=>kJ,ExceededCapacityErrorTypeId:()=>RJ,IllegalArgumentError:()=>fu,IllegalArgumentErrorTypeId:()=>CJ,InterruptorStackTrace:()=>NA,NoSuchElementError:()=>bJ,NoSuchElementErrorTypeId:()=>yJ,ReasonTypeId:()=>$W,StackTrace:()=>jA,TimeoutError:()=>TJ,TimeoutErrorTypeId:()=>vJ,TypeId:()=>ZW,UnknownError:()=>MJ,UnknownErrorTypeId:()=>DJ,annotate:()=>jJ,annotations:()=>BJ,combine:()=>rJ,die:()=>KW,done:()=>Hr,empty:()=>VW,fail:()=>QW,filterInterruptors:()=>mu,findDefect:()=>uJ,findDie:()=>lJ,findError:()=>sJ,findErrorOption:()=>aJ,findFail:()=>oJ,findInterrupt:()=>dJ,fromReasons:()=>sS,hasDies:()=>cJ,hasFails:()=>iJ,hasInterrupts:()=>pJ,hasInterruptsOnly:()=>pu,interrupt:()=>YW,interruptors:()=>mJ,isAsyncFiberError:()=>AJ,isCause:()=>UW,isDieReason:()=>HW,isDone:()=>aS,isExceededCapacityError:()=>IJ,isFailReason:()=>JW,isIllegalArgumentError:()=>EJ,isInterruptReason:()=>GW,isNoSuchElementError:()=>hJ,isReason:()=>WW,isTimeoutError:()=>wJ,isUnknownError:()=>zJ,makeDieReason:()=>eJ,makeFailReason:()=>XW,makeInterruptReason:()=>tJ,map:()=>nJ,pretty:()=>gJ,prettyErrors:()=>fJ,reasonAnnotations:()=>NJ,squash:()=>du});var ZW=Rl,$W=Na,UW=Ba,WW=qE,JW=Fi,HW=Ts,GW=Cs,sS=_i,VW=cd,QW=Vh,KW=Qh,YW=js,XW=(e)=>new _a(e),eJ=(e)=>new ld(e),tJ=yR,pu=wR,nJ=ER,rJ=ws,du=Kd,iJ=Wy,oJ=Jy,sJ=br,aJ=bR,cJ=Gd,lJ=SR,uJ=Vl,pJ=Vd,dJ=xR,mJ=vR,mu=Qd,fJ=Hy,gJ=Yd,hJ=pd,yJ=kl,bJ=ui,aS=Ol,SJ=xs,xJ=Xh,Hr=WE,vJ=Ul,wJ=oA,TJ=xm,CJ=Wl,EJ=sA,fu=Ub,IJ=aA,RJ=Jl,kJ=Wb,PJ=Hl,AJ=cA,OJ=vm,DJ=Gl,zJ=lA,MJ=su,jJ=Fa,NJ=TR,BJ=CR;class jA extends Zn()("effect/Cause/StackTrace"){}class NA extends Zn()("effect/Cause/InterruptorStackTrace"){}var gu={};Ln(gu,{Clock:()=>_J,clockWith:()=>FJ,currentTimeMillis:()=>LJ,currentTimeNanos:()=>qJ,monotonicTimeNanos:()=>ZJ});var _J=yr,FJ=Wn,LJ=Sm,qJ=rA,ZJ=iA;var cS="~effect/DateTime",lS="~effect/DateTime/TimeZone",LA={[cS]:cS,pipe(){return et(this,arguments)},[wn](){return this.toString()},toJSON(){return hc(this).toJSON()}},$J={...LA,_tag:"Utc",[pt](){return vo(this.epochMilliseconds)},[dt](e){return bu(e)&&e._tag==="Utc"&&this.epochMilliseconds===e.epochMilliseconds},toString(){return`DateTime.Utc(${hc(this).toJSON()})`}},UJ={...LA,_tag:"Zoned",[pt](){return at(vo(this.epochMilliseconds))($e(this.zone))},[dt](e){return bu(e)&&e._tag==="Zoned"&&this.epochMilliseconds===e.epochMilliseconds&&ct(this.zone,e.zone)},toString(){return`DateTime.Zoned(${cH(this)})`}},qA={[lS]:lS,[wn](){return this.toString()}},WJ={...qA,_tag:"Named",[pt](){return Qt(`Named:${this.id}`)},[dt](e){return Js(e)&&e._tag==="Named"&&this.id===e.id},toString(){return`TimeZone.Named(${this.id})`},toJSON(){return{_id:"TimeZone",_tag:"Named",id:this.id}}},JJ={...qA,_tag:"Offset",[pt](){return Qt(`Offset:${this.offset}`)},[dt](e){return Js(e)&&e._tag==="Offset"&&this.offset===e.offset},toString(){return`TimeZone.Offset(${mS(this.offset)})`},toJSON(){return{_id:"TimeZone",_tag:"Offset",offset:this.offset}}},yi=(e,t,n)=>{let r=Object.create(UJ);return r.epochMilliseconds=e,r.zone=t,Object.defineProperty(r,"partsUtc",{value:n,enumerable:!1,writable:!0}),Object.defineProperty(r,"adjustedEpochMillis",{value:void 0,enumerable:!1,writable:!0}),Object.defineProperty(r,"partsAdjusted",{value:void 0,enumerable:!1,writable:!0}),r},bu=(e)=>be(e,cS),HJ=(e)=>bu(e[0]),Js=(e)=>be(e,lS),Pie=(e)=>Js(e)&&e._tag==="Offset",ZA=(e)=>Js(e)&&e._tag==="Named",Aie=(e)=>e._tag==="Utc",GJ=(e)=>e._tag==="Zoned",Oie=pi((e,t)=>e.epochMilliseconds===t.epochMilliseconds);var pS=(e)=>{let t=Object.create($J);return t.epochMilliseconds=e,Object.defineProperty(t,"partsUtc",{value:void 0,enumerable:!1,writable:!0}),t},hu=(e)=>{let t=e.getTime();if(Number.isNaN(t))throw new fu("Invalid date");return pS(t)},$A=(e)=>{if(bu(e))return e;else if(e instanceof Date)return hu(e);else if(typeof e==="object"){if("epochMilliseconds"in e)return hu(new Date(e.epochMilliseconds));let t=new Date(0);return sH(t,e),hu(t)}else if(typeof e==="string"&&!VJ(e))return hu(new Date(e+"Z"));return hu(new Date(e))},VJ=(e)=>/Z|GMT|[+-]\d{2}$|[+-]\d{2}:?\d{2}$|\]$/.test(e),QJ=-8639999956800000,KJ=8639999949600000,Am=(e,t)=>{let n=t?.timeZone;if(n===void 0&&bu(e)&&GJ(e))return e;let r=$A(e);if(r.epochMilliseconds<QJ||r.epochMilliseconds>KJ)throw RangeError(`Epoch millis out of range: ${r.epochMilliseconds}`);if(n===void 0&&typeof e==="object"&&"timeZoneId"in e)n=e.timeZoneId;let i;if(n===void 0){let o=new Date(r.epochMilliseconds).getTimezoneOffset()*-60*1000;i=uS(o)}else if(Js(n))i=n;else if(typeof n==="number")i=uS(n);else{let o=dS(n);if(Je(o))throw new fu(`Invalid time zone: ${n}`);i=o.value}if(t?.adjustForTimeZone!==!0)return yi(r.epochMilliseconds,i,r.partsUtc);return WA(r.epochMilliseconds,i,t?.disambiguation??"compatible")},BA=Ro(Am),Die=Ro($A),YJ=/^(.{17,35})\[(.+)\]$/,zie=(e)=>{let t=YJ.exec(e);if(t===null){let i=fS(e);return i!==null?BA(e,{timeZone:i}):Se()}let[,n,r]=t;return BA(n,{timeZone:r})};var Mie=(e)=>pS(e.epochMilliseconds);var Pm=new Map,XJ={day:"numeric",month:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"longOffset",fractionalSecondDigits:3,hourCycle:"h23"},eH=(e)=>{let t=e.resolvedOptions().timeZone,n=Pm.get(t);if(n!==void 0)return n;let r=Object.create(WJ);return r.id=t,r.format=e,Pm.set(t,r),r},tH=(e)=>{let t=Pm.get(e);if(t!==void 0)return t;try{let n=eH(new Intl.DateTimeFormat("en-US",{...XJ,timeZone:e}));return Pm.set(e,n),n}catch{throw new fu(`Invalid time zone: ${e}`)}},uS=(e)=>{let t=Object.create(JJ);return t.offset=e,t},nH=Ro(tH);var rH=/^(?:GMT|[+-])/,dS=(e)=>{if(rH.test(e)){let t=fS(e);return t===null?Se():Pe(uS(t))}return nH(e)},jie=(e)=>{if(e._tag==="Offset")return mS(e.offset);return e.id};var hc=(e)=>new Date(e.epochMilliseconds),yc=(e)=>{if(e._tag==="Utc")return new Date(e.epochMilliseconds);else if(e.zone._tag==="Offset")return new Date(e.epochMilliseconds+e.zone.offset);else if(e.adjustedEpochMilliseconds!==void 0)return new Date(e.adjustedEpochMilliseconds);let t=e.zone.format.formatToParts(e.epochMilliseconds).filter((r)=>r.type!=="literal"),n=new Date(0);return n.setUTCFullYear(Number(t[2].value),Number(t[0].value)-1,Number(t[1].value)),n.setUTCHours(Number(t[3].value),Number(t[4].value),Number(t[5].value),t[6]?.type==="fractionalSecond"?Number(t[6].value):(e.epochMilliseconds%1000+1000)%1000),e.adjustedEpochMilliseconds=n.getTime(),n},UA=(e)=>yc(e).getTime()-oH(e),mS=(e)=>{let t=Math.abs(e),n=Math.floor(t/3600000),r=Math.round(t%3600000/60000);if(r===60)n+=1,r=0;return`${e<0?"-":"+"}${String(n).padStart(2,"0")}:${String(r).padStart(2,"0")}`},iH=(e)=>mS(UA(e)),oH=(e)=>e.epochMilliseconds;var sH=(e,t)=>{if(t.year!==void 0||t.month!==void 0||t.day!==void 0)e.setUTCFullYear(t.year??e.getUTCFullYear(),t.month!==void 0?t.month-1:e.getUTCMonth(),t.day??e.getUTCDate());if(t.weekDay!==void 0){let n=t.weekDay-e.getUTCDay();e.setUTCDate(e.getUTCDate()+n)}if(t.hour!==void 0)e.setUTCHours(t.hour);if(t.minute!==void 0)e.setUTCMinutes(t.minute);if(t.second!==void 0)e.setUTCSeconds(t.second);if(t.millisecond!==void 0)e.setUTCMilliseconds(t.millisecond)};var _A=86400000,WA=(e,t,n)=>{if(t._tag==="Offset")return yi(e-t.offset,t);let r=yu(e-_A,e,t),i=yu(e+_A,e,t);if(r===i)return yi(e-r,t);let o=r<i,s=r-i;if(o){if(yu(e-i,e,t)===i)return yi(e-i,t);let u=yi(e-r,t),p=yc(u).getTime();if(e!==p)switch(n){case"reject":{let m=new Date(e).toISOString();throw RangeError(`Gap time: ${m} does not exist in time zone ${t.id}`)}case"earlier":return yi(e-i,t);case"compatible":case"later":return u}return u}if(yu(e-r,e,t)===r){if(n==="earlier"||n==="compatible")return yi(e-r,t);if(yu(e-r+s,e+s,t)===r)return yi(e-r,t);if(n==="reject"){let u=new Date(e).toISOString();throw RangeError(`Ambiguous time: ${u} occurs twice in time zone ${t.id}`)}}return yi(e-i,t)},aH=/([+-])(\d{2}):(\d{2})$/,fS=(e)=>{let t=aH.exec(e);if(t===null)return null;let[,n,r,i]=t;return(n==="+"?1:-1)*(Number(r)*60+Number(i))*60*1000},yu=(e,t,n)=>{let r=n.format.formatToParts(e).find((o)=>o.type==="timeZoneName")?.value??"";if(r==="GMT")return 0;let i=fS(r);if(i===null)return UA(yi(t,n));return i},JA=x(HJ,(e,t,n)=>{if(e._tag==="Utc"){let o=hc(e);return t(o),pS(o.getTime())}let r=yc(e),i=new Date(r.getTime());return t(i),WA(i.getTime(),e.zone,n?.disambiguation??"compatible")});var Nie=(e)=>hc(e).toISOString();var FA=(e)=>{let t=yc(e);return e._tag==="Utc"?t.toISOString():`${t.toISOString().slice(0,-1)}${iH(e)}`},cH=(e)=>e.zone._tag==="Offset"?FA(e):`${FA(e)}[${e.zone.id}]`;var _ie=globalThis.Number;var GA=Ml;var Fie=x(2,(e,t)=>{if(!globalThis.Number.isFinite(e)||!globalThis.Number.isFinite(t)||t===0)return NaN;if(globalThis.Number.isInteger(e)&&globalThis.Number.isInteger(t))return e%t;let[n,r]=HA(e),[i,o]=HA(t),s=Math.min(r,o),c=n*BigInt(10)**BigInt(r-s),l=i*BigInt(10)**BigInt(o-s),u=c%l;if(u===BigInt(0))return e<0||Object.is(e,-0)?-0:0;let p=globalThis.Number(`${u}e${s}`);return p===0?Math.sign(e)*globalThis.Number.MIN_VALUE:p});function HA(e){if(globalThis.Number.isInteger(e))return[BigInt(e),0];let t=Math.abs(e).toExponential(),n=t.indexOf("e"),r=t.slice(0,n).replace(".","");return[BigInt(r)*(e<0?-BigInt(1):BigInt(1)),globalThis.Number(t.slice(n+1))-r.length+1]}var Lie=(e)=>{let t=Math.ceil(Math.log(e)/Math.log(2));return Math.max(Math.pow(2,t),2)};var Zie=globalThis.String,$ie=fs;var VA=(e)=>e.toLowerCase();var Uie=(e)=>e.trim();var QA=(e)=>e.length>0;var KA=13,YA=10;class XA{index;length;s;stripped;constructor(e,t=!1){this.s=e,this.stripped=t,this.index=0,this.length=e.length}next(){if(this.done)return{done:!0,value:void 0};let e=this.index;while(!this.done&&!pH(this.s[this.index]))this.index=this.index+1;let t=this.index;if(!this.done){let n=this.s[this.index];if(this.index=this.index+1,!this.done&&dH(n,this.s[this.index]))this.index=this.index+1;if(!this.stripped)t=this.index}return{done:!1,value:this.s.substring(e,t)}}[Symbol.iterator](){return new XA(this.s,this.stripped)}get done(){return this.index>=this.length}}var pH=(e)=>{let t=e.charCodeAt(0);return t===KA||t===YA},dH=(e,t)=>e.charCodeAt(0)===KA&&t.charCodeAt(0)===YA;var yS="~effect/Cron";function gS(e){return{tz:e.tz,and:e.and,seconds:Et(e.seconds),minutes:Et(e.minutes),hours:Et(e.hours),days:Et(e.days),months:Et(e.months),weekdays:Et(e.weekdays)}}var fH={[yS]:yS,[dt](e){return bS(e)&&SH(this,e)},[pt](){return wE($e(this.tz),at($e(this.and)),at(_r(Et(this.seconds))),at(_r(Et(this.minutes))),at(_r(Et(this.hours))),at(_r(Et(this.days))),at(_r(Et(this.months))),at(_r(Et(this.weekdays))))},toObject(){return gS(this)},toString(){return`Cron(${Nt(gS(this))})`},toJSON(){let e=gS(this);return e._id="Cron",e},[wn](){return this.toJSON()},pipe(){return et(this,arguments)}},bS=(e)=>be(e,yS),gH=(e)=>{let t=Object.create(fH);t.seconds=Sc.seconds(e.seconds??[0]),t.minutes=Sc.minutes(e.minutes),t.hours=Sc.hours(e.hours),t.days=Sc.days(e.days),t.months=Sc.months(e.months),t.weekdays=Sc.weekdays(e.weekdays),t.and=e.and===!0,t.tz=dy(e.tz);let n=Array.from(t.seconds),r=Array.from(t.minutes),i=Array.from(t.hours),o=Array.from(t.days),s=Array.from(t.months),c=Array.from(t.weekdays);return t.first={second:n[0]??0,minute:r[0]??0,hour:i[0]??0,day:o[0]??1,month:(s[0]??1)-1,weekday:c[0]??0},t.last={second:n[n.length-1]??59,minute:r[r.length-1]??59,hour:i[i.length-1]??23,day:o[o.length-1]??31,month:(s[s.length-1]??12)-1,weekday:c[c.length-1]??6},t.next={second:vr.next.second(n),minute:vr.next.minute(r),hour:vr.next.hour(i),day:vr.next.day(o),month:vr.next.month(s),weekday:vr.next.weekday(c)},t.prev={second:vr.prev.second(n),minute:vr.prev.minute(r),hour:vr.prev.hour(i),day:vr.prev.day(o),month:vr.prev.month(s),weekday:vr.prev.weekday(c)},t},bc=(e,t,n,r=(i)=>i)=>(i)=>{let o=[];for(let s of i){if(!Number.isInteger(s)||s<t||s>n)throw RangeError(`${e} must contain only integers between ${t} and ${n}`);o.push(r(s))}return new Set(wI(o,GA))},Sc={seconds:bc("seconds",0,59),minutes:bc("minutes",0,59),hours:bc("hours",0,23),days:bc("days",1,31),months:bc("months",1,12),weekdays:bc("weekdays",0,7,(e)=>e===7?0:e)},xr=(e,t)=>(n)=>{let r=Array(e).fill(void 0);if(n.length===0)return r;let i=void 0;if(t==="next"){let o=n.length-1;for(let s=e-1;s>=0;s--){while(o>=0&&n[o]>=s)i=n[o--];r[s]=i}}else{let o=0;for(let s=0;s<e;s++){while(o<n.length&&n[o]<=s)i=n[o++];r[s]=i}}return r},vr={prev:{second:xr(60,"prev"),minute:xr(60,"prev"),hour:xr(24,"prev"),day:xr(32,"prev"),month:xr(13,"prev"),weekday:xr(7,"prev")},next:{second:xr(60,"next"),minute:xr(60,"next"),hour:xr(24,"next"),day:xr(32,"next"),month:xr(13,"next"),weekday:xr(7,"next")}},eO="~effect/Cron/CronParseError";class Gr extends qd("CronParseError"){[eO]=eO}var nO=(e,t)=>{let n=e.trim().split(/\s+/).filter(QA);if(n.length!==5&&n.length!==6)return Me(new Gr({message:"Invalid number of segments in cron expression",input:e}));if(n.length===5)n.unshift("0");let[r,i,o,s,c,l]=n,u=t===void 0||Js(t)?je(t):my(dS(t),()=>new Gr({message:"Invalid time zone in cron expression",input:t}));return hy({tz:u,seconds:vc(r,xH),minutes:vc(i,vH),hours:vc(o,wH),days:vc(s,TH),months:vc(c,CH),weekdays:vc(l,EH)}).pipe(mi(({tz:p,seconds:m,minutes:g,hours:f,days:v,months:w,weekdays:k})=>gH({tz:p,seconds:m.values,minutes:g.values,hours:f.values,days:v.values,months:w.values,weekdays:k.values,and:(v.wildcard||k.wildcard)&&v.values.size!==0&&k.values.size!==0})))};var Om=(e)=>new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+1,0)).getUTCDate(),rO=(e,t)=>hH(e,t,"next");var hH=(e,t,n)=>{let r=Is(e.tz),i=Am(t??new Date,{timeZone:r}),o=n==="prev",s=o?-1:1,c=e[n],l=o?e.last:e.first,u=o?(f,v)=>f<v:(f,v)=>f>v,m=r!==void 0&&ZA(r)&&r.id==="UTC"?Br:(f)=>{let v=Am(f,{timeZone:i.zone,adjustForTimeZone:!0,disambiguation:o?"later":void 0}).pipe(yc),w=f.getTime()-v.getTime();if(o?w!==0:w>0)f.setTime(o?v.getTime():f.getTime()+w)},g=JA(i,(f)=>{f.setUTCSeconds(f.getUTCSeconds()+s,0);for(let v=0;v<1e4;v++){if(e.seconds.size!==0){let w=f.getUTCSeconds(),k=c.second[w];if(k===void 0){f.setUTCMinutes(f.getUTCMinutes()+s,l.second),m(f);continue}if(u(k,w)){f.setUTCSeconds(k),m(f);continue}}if(e.minutes.size!==0){let w=f.getUTCMinutes(),k=c.minute[w];if(k===void 0){f.setUTCHours(f.getUTCHours()+s,l.minute,l.second),m(f);continue}if(u(k,w)){f.setUTCMinutes(k,l.second),m(f);continue}}if(e.hours.size!==0){let w=f.getUTCHours(),k=c.hour[w];if(k===void 0){f.setUTCDate(f.getUTCDate()+s),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}if(u(k,w)){f.setUTCHours(k,l.minute,l.second),m(f);continue}}if(e.weekdays.size!==0||e.days.size!==0)if(e.and){let w=e.days.size===0||e.days.has(f.getUTCDate()),k=e.weekdays.size===0||e.weekdays.has(f.getUTCDay());if(!w||!k){f.setUTCDate(f.getUTCDate()+s),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}}else{let w=o?-1/0:1/0,k=o?-1/0:1/0;if(e.weekdays.size!==0){let B=f.getUTCDay(),j=c.weekday[B];if(j===void 0)w=o?l.weekday-7-B:7-B+l.weekday;else w=j-B}if(e.days.size!==0&&w!==0){let B=f.getUTCDate(),j=c.day[B];if(j===void 0)if(o){let Y=new Date(f);Y.setUTCDate(0);let G=c.day[Y.getUTCDate()];if(G===void 0)Y.setUTCDate(0),G=c.day[Y.getUTCDate()];if(G===void 0)throw Error("Unable to find cron date");Y.setUTCDate(G),k=(Y.getTime()-f.getTime())/86400000}else k=Om(f)-B+l.day;else if(!o&&j>Om(f))k=Om(f)-B+l.day;else k=j-B}let P=o?Math.max(w,k):Math.min(w,k);if(P!==0){f.setUTCDate(f.getUTCDate()+P),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}}if(e.months.size!==0){let w=f.getUTCMonth()+1,k=c.month[w],P=(B)=>{let j=Om(new Date(Date.UTC(f.getUTCFullYear(),B+1,0)));if(e.days.size!==0&&e.weekdays.size===0)return o?c.day[j]??j:l.day;return o?j:1};if(k===void 0){f.setUTCFullYear(f.getUTCFullYear()+s),f.setUTCMonth(l.month,P(l.month)),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}if(u(k,w)){let B=k-1;f.setUTCMonth(B,P(B)),f.setUTCHours(l.hour,l.minute,l.second),m(f);continue}}return}throw Error("Unable to find cron date")});return hc(g)};var yH=pi((e,t)=>ct(e.tz,t.tz)&&e.and===t.and&&xc(e.seconds,t.seconds)&&xc(e.minutes,t.minutes)&&xc(e.hours,t.hours)&&xc(e.days,t.days)&&xc(e.months,t.months)&&xc(e.weekdays,t.weekdays)),bH=dd(JE()),xc=(e,t)=>bH(Et(e),Et(t)),SH=x(2,(e,t)=>yH(e,t)),xH={min:0,max:59},vH={min:0,max:59},wH={min:0,max:23},TH={min:1,max:31},CH={min:1,max:12,aliases:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12}},EH={min:0,max:7,normalize:(e)=>e===7?0:e,aliases:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}},vc=(e,t)=>{let n=new Set,r=e.split(","),i=tO(r[0]),o=i[0]==="*",s=t.normalize??((l)=>l),c=o&&(i[1]===void 0||i[1]===1)?Br:(l)=>{n.add(s(l))};for(let l=0;l<r.length;l++){let u=r[l],[p,m]=l===0?i:tO(u);if(m!==void 0){if(!Number.isInteger(m))return Me(new Gr({message:"Expected step value to be a positive integer",input:e}));if(m<1)return Me(new Gr({message:"Expected step value to be greater than 0",input:e}));if(m>t.max)return Me(new Gr({message:`Expected step value to be less than or equal to ${t.max}`,input:e}))}if(p==="*"){if(l===0&&(m===void 0||m===1))continue;for(let g=t.min;g<=t.max;g+=m??1)c(g)}else{let[g,f]=IH(p,t.aliases);if(!Number.isInteger(g))return Me(new Gr({message:"Expected a positive integer",input:e}));if(g<t.min||g>t.max)return Me(new Gr({message:`Expected a value between ${t.min} and ${t.max}`,input:e}));if(f===void 0)for(let v=g;v<=(m===void 0?g:t.max);v+=m??1)c(v);else{if(!Number.isInteger(f))return Me(new Gr({message:"Expected a positive integer",input:e}));if(f<t.min||f>t.max)return Me(new Gr({message:`Expected a value between ${t.min} and ${t.max}`,input:e}));if(g>f)return Me(new Gr({message:"Invalid value range",input:e}));for(let v=g;v<=f;v+=m??1)c(v)}}}return je({values:n,wildcard:o})},tO=(e)=>{let t=e.indexOf("/");if(t!==-1){let n=e.slice(t+1);return[e.slice(0,t),iO.test(n)?Number(n):NaN]}return[e,void 0]},IH=(e,t)=>{let n=e.indexOf("-");if(n!==-1)return[hS(e.slice(0,n),t),hS(e.slice(n+1),t)];return[hS(e,t),void 0]};function hS(e,t){return t?.[VA(e)]??(iO.test(e)?Number(e):NaN)}var iO=/^\d+$/;var oO=He("effect/Random",{defaultValue:()=>({nextIntUnsafe(){return Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER-Number.MIN_SAFE_INTEGER+1))+Number.MIN_SAFE_INTEGER},nextDoubleUnsafe(){return Math.random()}})});var zm=x(2,(e,t)=>ic(e,PH,(n)=>t(n))),Yie=(e)=>e.reasons.some(Dm),Dm=(e)=>e._tag==="Fail"&&aS(e.error),SS=(e)=>{let t,n=!1;for(let r of e.reasons)if(Dm(r))t??=r.error;else if(r._tag!=="Interrupt")n=!0;if(t===void 0)return Me(e);return n?Me(sS(e.reasons.filter((r)=>!Dm(r)))):je(t)};var Xie=WI((e)=>e.reasons.every((t)=>!Dm(t))),PH=(e)=>{let t=SS(e);return Ze(t)?t:je(t.success.value)},eoe=(e)=>{let t=SS(e);return!Ze(t)?Hb(t.success.value):Gb(t.failure)},Su=x(2,(e,t)=>Ui(e,{onSuccess:t.onSuccess,onFailure:(n)=>{let r=SS(n);return!Ze(r)?t.onDone(r.success.value):t.onFailure(r.failure)}}));var aO="~effect/Schedule",AH=oO.useSync((e)=>e.nextDoubleUnsafe()),Bo=He("effect/Schedule/CurrentMetadata",{defaultValue:Pt({input:void 0,output:void 0,duration:Kt,attempt:0,start:0,now:0,elapsed:0,elapsedSincePrevious:0})}),OH={[aO]:{_Out:Fe,_In:Fe,_Env:Fe},pipe(){return et(this,arguments)}},Mm=(e)=>be(e,aO),er=(e)=>{let t=Object.create(OH);return t.step=e,t},wc=()=>{let e=0,t,n;return(r,i)=>{if(n===void 0)n=r;let o=r-n,s=t===void 0?0:r-t;return t=r,{input:i,attempt:++e,start:n,now:r,elapsed:o,elapsedSincePrevious:s}}},Hs=(e)=>er(Ne(e,(t)=>{let n=wc();return(r,i)=>t(n(r,i))})),bi=(e)=>Rn(e.step,(t)=>oe(()=>Ve(t))),Tc=(e)=>Wn((t)=>Ne(bi(e),(n)=>{let r=wc();return(i)=>De(()=>{let o=t.currentTimeMillisUnsafe();return ge(n(o,i),([s,c])=>{let l=r(o,i);return l.output=s,l.duration=c,yn(pc(c),l)})})})),DH=(e)=>Ne(Tc(e),(t)=>(n)=>Ne(t(n),(r)=>r.output)),zH=x(2,(e,t)=>xS(e,(n)=>Ne(t(n),(r)=>$I(Ot(r),n.duration)))),MH=x(2,(e,t)=>xu(cO(e,t),({output:n})=>oe(fy(n)))),cO=x(2,(e,t)=>er(Oe(()=>{let n=0,r,i=xu(e,({output:s})=>Me(s)),o=xu(t,({output:s})=>je(s));return function s(c,l){if(r)return r(c,l);return bi(n===0?i:o).pipe(ge((u)=>{if(n++,n===1)return r=(p,m)=>zm(u(p,m),(g)=>(r=void 0,s(p,m))),r(c,l);return r=u,r(c,l)}))}}))),jH=(e)=>er(Ne(_s(e.map(bi)),(t)=>(n,r)=>ge(En(t,(i)=>Su(i(n,r),{onSuccess:(o)=>oe(o[1]),onDone:()=>au,onFailure:Ve})),(i)=>{let o=NH(i);if(o===void 0)return Hr(Kt);return oe([o,o])}))),NH=(e)=>{let t=e[0];for(let n=1;n<e.length;n++)if(t=e[n]&&t&&qI(t,e[n]),t===void 0)break;return t},BH=(e,t)=>{let n=bS(e)?je(e):nO(e,t);return er(Ne(Ns(n),(r)=>(i,o)=>{if(i===Number.POSITIVE_INFINITY)return Hr(Kt);return Oe(()=>{let s=rO(r,i).getTime(),c=hr(s-i);return[c,c]})}))},_H=(e)=>{let t=Ot(e);return Hs(oe((n)=>n.attempt===1?oe([t,t]):Hr(Kt)))},FH=(e)=>{let t=Zr(e);return Hs(oe((n)=>{let r=hr(n.elapsed);return n.elapsed>t?Hr(r):oe([r,Kt])}))},LH=(e)=>er(Ne(_s(e.map(bi)),(t)=>(n,r)=>ge(En(t,(i)=>Su(i(n,r),{onSuccess:(o)=>oe(o[1]),onDone:()=>au,onFailure:Ve})),(i)=>{let o=qH(i);if(o===void 0)return Hr(Kt);return oe([o,o])}))),qH=(e)=>{let t=void 0;for(let n=0;n<e.length;n++){let r=e[n];if(r!==void 0)t=t===void 0?r:LI(t,r)}return t},ZH=(e,t=2)=>{let n=Zr(Ot(e));return Hs(oe((r)=>{let i=hr(n*Math.pow(t,r.attempt-1));return oe([i,i])}))},$H=(e)=>{let t=Zr(Ot(e));return er(Oe(()=>{let n=0,r=t;return Pt(Oe(()=>{let i=n+r;n=r,r=i;let o=hr(i);return[o,o]}))}))},UH=(e)=>{let t=Zr(Ot(e));return Hs(Oe(()=>{let n=0,r=0;return(i)=>Oe(()=>{if(t===0)return[i.attempt-1,Kt];if(i.attempt===1)return n=i.now,r=i.now+t,[0,hr(t)];let o=i.now>r+t,s=t-(i.now-n)%t,c=o?0:s===0?t:s;return r=o?i.now:i.now+c,[i.attempt-1,hr(c)]})}))},xu=x(2,(e,t)=>er(Ne(bi(e),(n)=>{let r=wc();return(i,o)=>Su(n(i,o),{onSuccess:([s,c])=>{let l=t({...r(i,o),output:s,duration:c});if(!ke(l))return oe([l,c]);return Ne(l,(u)=>[u,c])},onFailure:Ve,onDone:(s)=>{let c=t({...r(i,o),output:s,duration:Kt});if(!ke(c))return Hr(c);return ge(c,Hr)}})}))),xS=x(2,(e,t)=>er(Ne(bi(e),(n)=>{let r=wc();return(i,o)=>ge(n(i,o),([s,c])=>Ne(t({...r(i,o),output:s,duration:c}),(l)=>[s,Ot(l)]))}))),WH=(e)=>xS(e,({duration:t})=>Ne(AH,(n)=>{let r=Zr(t);return hr(r*0.8*(1-n)+r*1.2*n)})),jm=(e)=>er(Ne(bi(e),(t)=>(n,r)=>Su(t(n,r),{onSuccess:(i)=>oe([r,i[1]]),onFailure:Ve,onDone:()=>Hr(r)}))),Nm=(e)=>Gs(Bm,({attempt:t})=>oe(t<=e)),lO=(e)=>{let t=Ot(e);return Hs(oe((n)=>oe([n.attempt-1,t])))},JH=x(2,(e,t)=>er(Ne(bi(e),(n)=>{let r=wc();return(i,o)=>Ur(n(i,o),([s,c])=>t({...r(i,o),output:s,duration:c}))}))),HH=x(2,(e,t)=>{let n=t.duration===void 0?void 0:Ot(t.duration);return Gs(e,({attempt:r,elapsed:i})=>oe((t.times===void 0||r<=t.times)&&(n===void 0||UI(hr(i),n))))}),Gs=x(2,(e,t)=>er(Ne(bi(e),(n)=>{let r=wc();return(i,o)=>ge(n(i,o),(s)=>{let[c,l]=s,u=t({...r(i,o),output:c,duration:l});return ge(ke(u)?u:oe(u),(p)=>p?oe(s):Hr(c))})})));var GH=(e)=>{let t=Zr(Ot(e));return Hs(oe((n)=>Oe(()=>[n.attempt-1,t===0?Kt:hr(t-n.elapsed%t)])))},Bm=lO(Kt),VH=xu(Nm(1),()=>{return}),QH=er(oe((e,t)=>oe([t,Kt]))),KH=()=>QH;var YH=()=>(e)=>e;var XH=(e,t,n)=>fm((r)=>ge(n?.local?uu(t,gc(),r):iS(t,r),(i)=>Wr(e,i))),_m=x((e)=>ke(e[0]),(e,t,n)=>kd(t)?Wr(e,t):XH(e,Array.isArray(t)?km(...t):t,n));var vS=x(3,(e,t,n)=>ge(Tc(t),(r)=>{let i=Bo.defaultValue();return kn(sm(Ur(ge(De(()=>In(e,Bo,i)),r),(o)=>Oe(()=>{i=o})),{disableYield:!0}),(o)=>Ol(o)?oe(o.value):n(o,i.attempt===0?Se():Pe(i)))})),wS=x(3,(e,t,n)=>ge(Tc(t),(r)=>{let i=Bo.defaultValue(),o,s=kn(De(()=>In(e,Bo,i)),(c)=>(o=c,ge(r(c),(l)=>(i=l,s))));return zm(s,(c)=>wo(()=>n(o,c)))})),pO=x(2,(e,t)=>{let n=typeof t==="function"?t(Fe):Mm(t)?t:wu(t);return vS(e,n,lt)}),vu=x(2,(e,t)=>{let n=typeof t==="function"?t(Fe):Mm(t)?t:wu(t);return wS(e,n,lt)}),dO=x(3,(e,t,n)=>ge(Tc(n),(r)=>{let i=Bo.defaultValue(),o=De(()=>In(e,Bo,i));return kn(ge(r(t),(s)=>{i=s;let c=Pt(ge(o,r));return Gi({while:ji,body:c,step(l){i=l}})}),(s)=>Ol(s)?oe(s.value):lt(s))})),eG=jm(Bm),wu=(e)=>{let t=e.schedule?jm(e.schedule):eG;if(e.while)t=Gs(t,({input:n})=>{let r=e.while(n);return ke(r)?r:oe(r)});if(e.until)t=Gs(t,({input:n})=>{let r=e.until(n);return ke(r)?Ne(r,(i)=>!i):oe(!r)});if(e.times!==void 0)t=Gs(t,({attempt:n})=>oe(n<=e.times));return t};var tG=(e,t)=>{let n=-1,r=0,i=(o)=>pm(e(o));return{begin:Wn((o)=>De(()=>{let s=t();if(s.stepIndex!==n)n=s.stepIndex,r=0;r++;let c={attempt:s.attempt,stepAttempt:r,stepIndex:s.stepIndex,startNanos:o.monotonicTimeNanosUnsafe()};return yn(i({_tag:"AttemptStart",attempt:c.attempt,stepAttempt:c.stepAttempt,stepIndex:c.stepIndex}),c)})),end:(o,s)=>Wn((c)=>{let l=ks(c.monotonicTimeNanosUnsafe()-o.startNanos);return i(s._tag==="Success"?{_tag:"AttemptSuccess",attempt:o.attempt,stepAttempt:o.stepAttempt,stepIndex:o.stepIndex,duration:l}:{_tag:"AttemptFailure",attempt:o.attempt,stepAttempt:o.stepAttempt,stepIndex:o.stepIndex,duration:l,cause:s.cause})})}},gO=x((e)=>ke(e[0]),(e,t,n)=>De(()=>{let r=0,i={attempt:0,stepIndex:0},o=om(MA,Oe(()=>(i={attempt:i.attempt+1,stepIndex:r},i))),s=n?.onEvent===void 0?void 0:tG(n.onEvent,()=>i),c=s===void 0?Fe:(u)=>jo((p)=>ge(s.begin,(m)=>Un(p(u),(g)=>s.end(m,g)))),l;return ge(Gi({while:()=>r<t.steps.length&&(l===void 0||Ze(l)),body(){let u=t.steps[r],p=o(c(_m(e,u.provide)));if(l){let m=!1,g=p;p=De(()=>{if(m)return g;return m=!0,Ns(l)}),p=vu(p,fO(u,!1))}else{let m=fO(u,!0);p=m?vu(p,m):p}return Po(p)},step(u){l=u,r++}}),()=>Ns(l))})),fO=(e,t)=>{if(!t)return wu({schedule:e.schedule?e.schedule:e.attempts?void 0:nG,times:e.attempts,while:e.while});else if(e.attempts===1||!(e.schedule||e.attempts))return;return wu({schedule:e.schedule,while:e.while,times:e.attempts?e.attempts-1:void 0})},nG=Nm(1);var iG="~effect/Request",oG=jE({_E:(e)=>e,_A:(e)=>e,_R:(e)=>e}),poe={...LE,[iG]:oG};var hO=(e)=>e;var bO=x(2,(e,t)=>{let n=(r)=>hn((i)=>{let o=xO(r,e,i,Xa());return sG(r,o)});return ke(t)?ge(t,n):n(t)}),SO=(e,t)=>{let n=xO(t.resolver,e,t.onExit,{context:t.context,cache:{scheduler:At(t.context,Ll)}});return()=>vO(t.resolver,n)},Fm=[],TS=new WeakMap,xO=(e,t,n,r)=>{let i=TS.get(e);if(!i)i=new Map,TS.set(e,i);let o,s=!1,c=hO({request:t,context:r.context,uninterruptible:!1,completeUnsafe(u){if(s)return;if(s=!0,o&&!o.entrySet.delete(c))return;n(u)}});if(e.preCheck!==void 0&&!e.preCheck(c))return c;let l=e.batchKey(c);if(o=i.get(l),!o){if(Fm.length>0)o=Fm.pop(),o.key=l,o.resolver=e,o.map=i;else{let u={key:l,resolver:e,map:i,entrySet:new Set,entries:new Set,delayEffect:ge(De(()=>u.resolver.delay),(p)=>yO(u)),run:Un(De(()=>u.resolver.runAll(Array.from(u.entries),u.key)),(p)=>{for(let m of u.entrySet)m.completeUnsafe(p._tag==="Success"?Tn(Error("Effect.request: RequestResolver did not complete request",{cause:m.request})):p);if(u.entries.clear(),Fm.length<128)u.entrySet.clear(),u.key=void 0,u.fiber=void 0,u.resolver=void 0,u.map=void 0,Fm.push(u);return Le})};o=u}i.set(l,o),o.fiber=Vi(r.context)(o.delayEffect,{scheduler:r.cache.scheduler})}if(o.entrySet.add(c),o.entries.add(c),o.resolver.collectWhile(o.entries))return c;return o.fiber.interruptUnsafe(r.id),o.fiber=Vi(r.context)(yO(o),{scheduler:r.cache.scheduler}),c},vO=(e,t)=>{if(t.uninterruptible)return;let n=TS.get(e);if(!n)return;let r=e.batchKey(t),i=n.get(r);if(!i)return;if(!i.entries.delete(t))return;i.entrySet.delete(t);let o;if(i.entries.size===0)n.delete(r),o=i.fiber;t.completeUnsafe(im()),o?.interruptUnsafe()},sG=(e,t)=>Oe(()=>vO(e,t));function yO(e){if(!e.map.has(e.key))return Le;return e.map.delete(e.key),e.run}var cG="effect/Metric/CurrentMetricAttributes",lG=He(cG,{defaultValue:()=>({})}),uG="effect/Metric/MetricRegistry",pG=He(uG,{defaultValue:()=>new Map}),wO="~effect/Metric";class dG{[wO]=wO;#t;#e="";id;description;attributes;constructor(e,t,n){this.id=e,this.description=t,this.attributes=n}valueUnsafe(e){return this.hook(e).get(e)}modifyUnsafe(e,t){return this.hook(t).modify(e,t)}updateUnsafe(e,t){return this.hook(t).update(e,t)}hook(e){let t=At(e,lG);if(t!==this.#t)this.#t=t,this.#e=mG(this,TO(this.attributes,t));let n=At(e,pG),r=n.get(this.#e);if(EE(r))r={id:this.id,type:this.type,description:this.description,attributes:Object.keys(t).length>0?TO(this.attributes,t):this.attributes,hooks:this.createHooks()},n.set(this.#e,r);return r.hooks}pipe(){return et(this,arguments)}}var Cc=x(2,(e,t)=>Oo((n)=>Oe(()=>e.updateUnsafe(t,n))));function mG(e,t){let n=Object.entries(t).sort((r,i)=>r[0]<i[0]?-1:r[0]>i[0]?1:0);return JSON.stringify([e.type,e.id,e.description,n])}function TO(e,t){return{...CO(e),...CO(t)}}function CO(e){if(IE(e)&&Array.isArray(e))return e.reduce((t,[n,r])=>(sn(t,n,r),t),{});return e}var gG=ci,Vr=ke,hG=_s,yG=Nb,bG=uP,SG=pP,xG=dP,vG=fP,wG=En,TG=hP,Ec=Gi,CG=tb,EG=BR,Vs=oe,IG=Yl,RG=eb,Qi=De,tr=Oe,Tr=Le;var kG=au;var ES=hn,PG=Xl,AG=wP,OG=TP,DG=EP;var zG=CP,MG=qR,CS=lt,jG=em,NG=Ve,BG=jR,IO=Wi,_G=NR;var FG=tc,LG=Xy,Ic=ze,qG=$E,ZG=Ns,$G=Yy,UG=MR,WG=zR,Ki=ge,JG=KR,HG=hi,RO=Ur,GG=Po,VG=jk,kO=sc,Qs=Ne,QG=yn,KG=rm,YG=nc,XG=JR,eV=yk,tV=yb,nV=kn;var rV=lm,iV=kk,oV=Pk,sV=Ak,aV=Ok,cV=Rn,lV=Tk,uV=tu,pV=cm,dV=wk,mV=Sb,fV=ic,gV=vb,hV=wb,yV=um,PO=xb,bV=Ik,AO=Ck,SV=Ek,xV=am,OO=Rk,vV=Tb,wV=vu,TV=wS,CV=HR,EV=Mk,IV=pm,RV=gO,kV=mA,PV=Dk,AV=zk,OV=Zk,DV=Ib,zV=Eb,MV=qk,jV=pc,NV=$k,BV=sb,_V=ab,FV=GR,LV=cb,qV=SP,ZV=xP,$V=vP,UV=Bb,WV=_b,JV=bk,HV=bP,GV=Sk,VV=dm,QV=nu,KV=Cb,YV=_k,XV=VR,e2=Ui,t2=oc,n2=Fk,r2=Lk,Cu=hb,i2=Oo,o2=_m,s2=Wr,a2=hk,c2=mk,l2=fk,u2=rc,p2=Hi,d2=gk,DO=In,m2=om,f2=iu,g2=mm,h2=fm,Eu=gm,y2=tP,b2=eP,S2=lc,x2=Kk,v2=zb,w2=Yk,T2=Mb,C2=Mo,IS=Un,E2=Ob,I2=Db,R2=iP,k2=rP,P2=jb,Ks=oP,A2=hm,O2=Xk,D2=Bs,zO=jo,z2=cP,M2=lP,j2=sm,N2=pO,B2=vS,_2=bb,F2=xk,L2=x(2,(e,t)=>MO(e,void 0,t)),MO=dO,q2=_P,Z2=FP,$2=LP,U2=qP,W2=QP,J2=KP,H2=YP,G2=XP,V2=WP,Q2=JP,K2=HP,Y2=$P,X2=$r,eQ=$l,tQ=VP,nQ=UP,rQ=Ya,iQ=bO,oQ=SO,sQ=IP,aQ=Fb,cQ=PP,lQ=RP,uQ=kP,pQ=FR,dQ=LR,Iu=OP,Ru=Vi,mQ=Lb,fQ=DP,gQ=MP,hQ=qb,yQ=zP,bQ=ym,SQ=NP,xQ=Zb,vQ=jP,wQ=bm,TQ=rb,CQ=ZR,jO=Wn,EQ=Jr,IQ=Jr(),RQ=Jr("Fatal"),kQ=Jr("Warn"),PQ=Jr("Error"),AQ=Jr("Info"),OQ=Jr("Debug"),DQ=Jr("Trace"),zQ=x(2,(e,t)=>Hi(e,Jb,(n)=>new Set([...n,t]))),MQ=x((e)=>Vr(e[0]),(e,...t)=>Hi(e,hA,(n)=>{let r=t.length===1?{...n,...t[0]}:{...n};if(t.length===1)return r;else sn(r,t[0],t[1]);return r})),jQ=pA,NQ=x(2,(e,t)=>ge(Sm,(n)=>Hi(e,yA,(r)=>[[t,n],...r]))),BQ=x((e)=>Vr(e[0]),(e,t,n)=>IS(e,(r)=>{let i=n===void 0?r:n(r);return Cc(t,i)})),_Q=x((e)=>Vr(e[0]),(e,t,n)=>RO(e,(r)=>{let i=n===void 0?r:n(r);return Cc(t,i)})),FQ=x((e)=>Vr(e[0]),(e,t,n)=>PO(e,(r)=>{let i=n===void 0?r:n(r);return Cc(t,i)})),LQ=x((e)=>Vr(e[0]),(e,t,n)=>OO(e,(r)=>{let i=n===void 0?r:n(r);return Cc(t,i)})),qQ=x((e)=>Vr(e[0]),(e,t,n)=>jO((r)=>{let i=r.monotonicTimeNanosUnsafe();return IS(e,()=>{let o=r.monotonicTimeNanosUnsafe(),s=ZI(Ot(o),Ot(i)),c=n===void 0?s:n(s);return Cc(t,c)})}));class Tu extends Zn()("effect/Effect/Transaction"){}var ZQ=(e)=>Ic((t)=>{let n=Bl(t.context,Tu);if(n)return e;n={journal:new Map,retry:!1};let r;return zO((i)=>Ki(Ec({while:()=>!r,body:Pt(i(e).pipe(DO(Tu,n),AO(()=>{if(!n.retry)return Tr;return i($Q(n))}),kO)),step(o){if(n.retry||!NO(n))return EO(n);if(Fs(o))UQ(t,n);else EO(n);r=o}}),()=>r))}),NO=(e)=>{for(let[t,{version:n}]of e.journal)if(t.version!==n)return!1;return!0},$Q=(e)=>ES((t)=>{if(!NO(e))return t(Tr);let n={},r=Array.from(e.journal.keys()),i=()=>{for(let s of r)s.pending.delete(n)},o=()=>{i(),t(Tr)};for(let s of r)s.pending.set(n,o);return tr(i)});function UQ(e,t){for(let[n,{value:r,written:i}]of t.journal){if(!i)continue;if(!Object.is(r,n.value))n.version=n.version+1,n.value=r;for(let o of n.pending.values())e.currentDispatcher.scheduleTask(o,0);n.pending.clear()}}function EO(e){e.retry=!1,e.journal.clear()}var WQ=Ki(Tu,(e)=>(e.retry=!0,Ks)),JQ=(e,t,n)=>(...r)=>ES((i)=>{try{e(...r,(o,s)=>{if(o)i(CS(t?t(o,r):o));else i(Vs(s))})}catch(o){i(n?CS(n(o,r)):IO(o))}}),HQ=()=>(e)=>e,GQ=()=>(e)=>e,VQ=()=>(e)=>e,QQ=YR,KQ=XR,YQ=ek,XQ=QR,eK=tk,tK=$R;var Qr={};Ln(Qr,{await:()=>ku,awaitAll:()=>nK,getCurrent:()=>aK,interrupt:()=>oK,interruptAll:()=>Pu,interruptAllAs:()=>Au,interruptAs:()=>RS,isFiber:()=>sK,join:()=>rK,joinAll:()=>iK,runIn:()=>cK});var ku=Vy;var nK=ec,rK=Qy,iK=OR,oK=Kl,RS=Ky,Pu=zs,Au=DR,sK=(e)=>be(e,Xd),aK=Xa,cK=AP;var Pn={};Ln(Pn,{awaitEmpty:()=>IK,clear:()=>wK,get:()=>SK,getUnsafe:()=>$O,has:()=>xK,hasUnsafe:()=>qm,isFiberMap:()=>zS,join:()=>EK,make:()=>MS,makeRuntime:()=>gK,makeRuntimePromise:()=>hK,remove:()=>vK,run:()=>TK,runtime:()=>jS,runtimePromise:()=>UO,set:()=>bK,setUnsafe:()=>Lm,size:()=>CK});var BO="~effect/MutableHashMap";var lK={[BO]:BO,[Symbol.iterator](){return this.backing[Symbol.iterator]()},toString(){return`MutableHashMap(${Nt(Array.from(this))})`},toJSON(){return{_id:"MutableHashMap",values:si(Array.from(this))}},[wn](){return this.toJSON()},pipe(){return et(this,arguments)}},_O=()=>{let e=Object.create(lK);return e.backing=new Map,e.buckets=new Map,e};var Rc=x(2,(e,t)=>{if(e.backing.has(t))return Pe(e.backing.get(t));else if(kS(t))return Se();let n=$e(t),r=e.buckets.get(n);if(r===void 0)return Se();return uK(e,r,t)}),kS=(e)=>typeof e!=="object"&&typeof e!=="function";var PS=(e)=>e.backing.values(),uK=(e,t,n)=>{for(let r=0,i=t.length;r<i;r++)if(ct(n,t[r])){let o=t[r];return Pe(e.backing.get(o))}return Se()},FO=x(2,(e,t)=>an(Rc(e,t))),LO=x(3,(e,t,n)=>{if(e.backing.has(t)||kS(t))return e.backing.set(t,n),e;let r=$e(t),i=e.buckets.get(r);if(i===void 0)return e.buckets.set(r,[t]),e.backing.set(t,n),e;let o=pK(i,t);if(o===void 0)i.push(t),o=t;return e.backing.set(o,n),e}),pK=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(ct(t,e[n]))return e[n]};var qO=x(2,(e,t)=>{if(kS(t))return e.backing.delete(t),e;let n=$e(t),r=e.buckets.get(n);if(r===void 0)return e;for(let i=0,o=r.length;i<o;i++){let s=r[i];if(s===t||ct(t,s)){e.backing.delete(s),r.splice(i,1);break}}if(r.length===0)e.buckets.delete(n);return e}),Ioe=(e)=>(e.backing.clear(),e.buckets.clear(),e),AS=(e)=>e.backing.size;var OS="~effect/FiberMap",zS=(e)=>be(e,OS),mK={[OS]:OS,[Symbol.iterator](){if(this.state._tag==="Closed")return Cd();return this.state.backing[Symbol.iterator]()},...Lr,toJSON(){return{_id:"FiberMap",state:this.state}}},fK=(e,t)=>{let n=Object.create(mK);return n.state={_tag:"Open",backing:e},n.deferred=t,n},MS=()=>Eu(tr(()=>fK(_O(),Ls())),(e)=>Qi(()=>{let t=e.state;if(t._tag==="Closed")return Tr;return e.state={_tag:"Closed"},Pu(PS(t.backing)).pipe(Tm(e.deferred))})),gK=()=>Ki(MS(),(e)=>jS(e)()),hK=()=>Ki(MS(),(e)=>UO(e)()),kc=-1,yK=Nd(_d(mu,Bd(kc))),Lm=x((e)=>zS(e[0]),(e,t,n,r)=>{if(e.state._tag==="Closed"){n.interruptUnsafe(kc);return}let i=Rc(e.state.backing,t);if(i._tag==="Some"){if(i.value===n)return;else if(r?.onlyIfMissing===!0){n.interruptUnsafe(kc);return}}if(LO(e.state.backing,t,n),i._tag==="Some")i.value.interruptUnsafe(kc);n.addObserver((o)=>{if(e.state._tag==="Closed")return;let s=Rc(e.state.backing,t);if(an(s)&&n===s.value)qO(e.state.backing,t);if(cu(o)&&(r?.propagateInterruption===!0?!yK(o.cause):!pu(o.cause)))qs(e.deferred,o)})}),bK=x((e)=>zS(e[0]),(e,t,n,r)=>tr(()=>Lm(e,t,n,r))),$O=x(2,(e,t)=>e.state._tag==="Closed"?Se():Rc(e.state.backing,t)),SK=x(2,(e,t)=>Qi(()=>Vs($O(e,t)))),qm=x(2,(e,t)=>e.state._tag==="Closed"?!1:FO(e.state.backing,t)),xK=x(2,(e,t)=>tr(()=>qm(e,t))),vK=x(2,(e,t)=>Qi(()=>{if(e.state._tag==="Closed")return Tr;let n=Rc(e.state.backing,t);if(n._tag==="None")return Tr;return RS(n.value,kc)})),wK=(e)=>Qi(()=>{if(e.state._tag==="Closed")return Tr;return Au(PS(e.state.backing),kc)}),DS=function(){let e=void 0;return()=>{if(e===void 0)e=Iu(Ks);return e}}(),TK=function(){let e=arguments[0];if(Vr(arguments[2]))return ZO(e,arguments[1],arguments[2],arguments[3]);let t=arguments[1],n=arguments[2];return(r)=>ZO(e,t,r,n)},ZO=(e,t,n,r)=>Ic((i)=>{if(e.state._tag==="Closed")return Ks;else if(r?.onlyIfMissing===!0&&qm(e,t))return tr(DS);let o=Sr(i,n,r?.startImmediately??!0,!0);return Lm(e,t,o,r),Vs(o)}),jS=(e)=>()=>Qs(Cu(),(t)=>{let n=Ru(t);return(r,i,o)=>{if(e.state._tag==="Closed")return DS();else if(o?.onlyIfMissing===!0&&qm(e,r))return DS();let s=n(i,o);return Lm(e,r,s,o),s}}),UO=(e)=>()=>Qs(jS(e)(),(t)=>(n,r,i)=>new Promise((o,s)=>t(n,r,i).addObserver((c)=>{if(Fs(c))o(c.value);else s(du(c.cause))}))),CK=(e)=>tr(()=>e.state._tag==="Closed"?0:AS(e.state.backing)),EK=(e)=>mc(e.deferred),IK=(e)=>Ec({while:()=>e.state._tag==="Open"&&AS(e.state.backing)>0,body:()=>ku(Td(e)[1]),step:Br});var Ys={};Ln(Ys,{add:()=>DK,addUnsafe:()=>Zm,awaitEmpty:()=>BK,clear:()=>zK,isFiberSet:()=>BS,join:()=>NK,make:()=>_S,makeRuntime:()=>PK,makeRuntimePromise:()=>AK,run:()=>MK,runtime:()=>LS,runtimePromise:()=>HO,size:()=>jK});var NS="~effect/FiberSet",BS=(e)=>be(e,NS),RK={[NS]:NS,[Symbol.iterator](){if(this.state._tag==="Closed")return Cd();return this.state.backing[Symbol.iterator]()},...Lr,toJSON(){return{_id:"FiberSet",state:this.state}}},kK=(e,t)=>{let n=Object.create(RK);return n.state={_tag:"Open",backing:e},n.deferred=t,n},_S=()=>Eu(tr(()=>kK(new Set,Ls())),(e)=>Qi(()=>{let t=e.state;if(t._tag==="Closed")return Tr;e.state={_tag:"Closed"};let n=t.backing;return Pu(n).pipe(Tm(e.deferred))})),PK=()=>Ki(_S(),(e)=>LS(e)()),AK=()=>Ki(_S(),(e)=>HO(e)()),FS=-1,OK=Nd(_d(mu,Bd(FS))),Zm=x((e)=>BS(e[0]),(e,t,n)=>{if(e.state._tag==="Closed"){t.interruptUnsafe(FS);return}else if(e.state.backing.has(t))return;e.state.backing.add(t),t.addObserver((r)=>{if(e.state._tag==="Closed")return;if(e.state.backing.delete(t),cu(r)&&(n?.propagateInterruption===!0?!OK(r.cause):!pu(r.cause)))qs(e.deferred,r)})}),DK=x((e)=>BS(e[0]),(e,t,n)=>tr(()=>Zm(e,t,n))),zK=(e)=>Qi(()=>{if(e.state._tag==="Closed")return Tr;return Au(e.state.backing,FS)}),JO=function(){let e=void 0;return()=>{if(e===void 0)e=Iu(Ks);return e}}(),MK=function(){let e=arguments[0];if(!Vr(arguments[1])){let t=arguments[1];return(n)=>WO(e,n,t)}return WO(e,arguments[1],arguments[2])},WO=(e,t,n)=>Ic((r)=>{if(e.state._tag==="Closed")return tr(JO);let i=Sr(r,t,n?.startImmediately??!0,!0);return Zm(e,i,n),Vs(i)}),LS=(e)=>()=>Qs(Cu(),(t)=>{let n=Ru(t);return(r,i)=>{if(e.state._tag==="Closed")return JO();let o=n(r,i);return Zm(e,o,i),o}}),HO=(e)=>()=>Qs(LS(e)(),(t)=>(n,r)=>new Promise((i,o)=>t(n,r).addObserver((s)=>{if(Fs(s))i(s.value);else o(du(s.cause))}))),jK=(e)=>tr(()=>e.state._tag==="Closed"?0:e.state.backing.size),NK=(e)=>mc(e.deferred),BK=(e)=>Ec({while:()=>e.state._tag==="Open"&&e.state.backing.size>0,body:()=>ku(Td(e)),step:Br});function rce(e,t){return Ws.effect(e,ne.acquireRelease(ne.sync(t),(n)=>ne.sync(()=>{n.close()})).pipe(ne.map((n)=>n.service)))}function _o(e,t){return t?ne.provideService(e,gu.Clock,t):e}var _K=a.looseObject({issues:a.array(a.looseObject({message:a.string()}))}),GO=a.object({name:a.literal("EntityValidationError"),entityType:a.string(),originalError:a.unknown()});class nr extends Error{entityType;originalError;phase;constructor(e,t,n="schema"){super(`Invalid entity data for ${e}: ${Be(t)}`);this.name="EntityValidationError",this.entityType=e,this.originalError=t,this.phase=n}}var FK=a.object({name:a.literal("EntityValidationError"),phase:a.literal("schema")});function VO(e){return FK.safeParse(e).success}function $m(e){return _K.safeParse(e).success}function QO(e){return e instanceof nr||GO.safeParse(e).success||$m(e)}function Pc(e,t,n="schema"){if(t instanceof nr)return t.phase===n?t:new nr(e,t.originalError,n);let r=GO.safeParse(t);if(r.success)return new nr(e,r.data.originalError,n);return $m(t)?new nr(e,t,n):void 0}var LK={generateBodyTemplate:()=>""},qS=a.record(a.string(),a.unknown());function KO(e){return{parse:(t)=>e.parse(SE(t))}}class Fo{entityType;purpose;schema;frontmatterSchema;isSingleton;hasBody;supportsCoverImage;publishedStatuses;fmSchema;bodyFormatter;constructor(e){if(this.entityType=e.entityType,this.purpose=e.purpose,this.schema=e.schema,this.frontmatterSchema=e.frontmatterSchema,this.fmSchema=e.frontmatterSchema,this.bodyFormatter=e.bodyFormatter??LK,e.isSingleton!==void 0)this.isSingleton=e.isSingleton;if(e.hasBody!==void 0)this.hasBody=e.hasBody;if(e.supportsCoverImage!==void 0)this.supportsCoverImage=e.supportsCoverImage;if(e.publishedStatuses!==void 0)this.publishedStatuses=e.publishedStatuses}toMarkdown(e){let t=this.renderBody(e),r={...this.readExistingFrontmatter(e.content)},i=Object.keys(this.frontmatterSchema.shape);for(let[o,s]of Object.entries(e.metadata))if(i.includes(o))r[o]=s;return this.buildMarkdown(t,r)}renderBody(e){return this.extractBody(e.content)}readExistingFrontmatter(e){try{return Ut(e,qS).metadata}catch{return{}}}extractMetadata(e){return e.metadata}parseFrontMatter(e,t){try{return Ut(e,KO(t)).metadata}catch(n){throw new nr(this.entityType,n)}}getBodyTemplate(){return this.bodyFormatter.generateBodyTemplate()}generateFrontMatter(e){return wl(qS.parse(e.metadata))}extractBody(e){try{return Ut(e,qS).content}catch{return e}}parseFrontmatter(e){try{return Ut(e,KO(this.fmSchema)).metadata}catch(t){throw new nr(this.entityType,t)}}buildMarkdown(e,t){return Mi(e,t)}}var Si=a.enum(["public","shared","restricted"]),xi=a.union([Si,a.literal("private")]).optional().transform((e)=>{if(e===void 0)return"public";if(e==="private")return"restricted";return e});function Um(e){return xi.parse(e)}var qK={public:["public"],shared:["public","shared"],restricted:["public","shared","restricted"]};function vi(e){return qK[e]}function Wm(e,t){return vi(t).includes(e??"public")}function wi(e){if(e==="admin")return"restricted";if(e==="trusted")return"shared";return"public"}function Ac(e,t){return Wm(t,wi(e))}var Cr=a.object({id:a.string(),entityType:a.string(),content:a.string(),created:a.string().datetime(),updated:a.string().datetime(),visibility:xi,metadata:a.record(a.string(),a.unknown()),contentHash:a.string()}),ZK=a.enum(["public","shared","restricted"]),YO=a.object({id:a.string(),entityType:a.string(),content:a.string(),created:a.string().datetime(),updated:a.string().datetime(),visibility:a.union([ZK,a.literal("private")]).optional().transform((e)=>{if(e===void 0)return"public";if(e==="private")return"restricted";return e}),metadata:a.record(a.string(),a.unknown()),contentHash:a.string()}),Jm=a.object({}),$K=a.object({mediaType:a.string(),url:a.string(),downloadUrl:a.string().optional(),previewUrl:a.string().optional(),filename:a.string().optional(),sizeBytes:a.number().optional(),source:a.object({entityType:a.string().optional(),entityId:a.string().optional(),attachmentType:a.string().optional()}).optional()});class ZS extends Fo{constructor(){super({entityType:"note",purpose:"A generic entity with no specialized adapter.",schema:Cr,frontmatterSchema:Jm})}toMarkdown(e){return e.content}fromMarkdown(e){return{content:e}}}var UK={\u{e4}:"ae",\u{f6}:"oe",\u{fc}:"ue",\u{df}:"ss"};function Ou(e){return e.toLowerCase().trim().replace(/[\u00E4\u00F6\u00FC\u00DF]/g,(t)=>UK[t]??t).normalize("NFKD").replace(/\p{M}/gu,"").replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function Ece(e){try{return new URL(e).hostname.replace(/\./g,"-")}catch{return(e.split("/")[0]??e).replace(/\./g,"-")}}function Ice(e,t){let n=Ou(e);if(!n){let r=Date.now().toString(36);return t?`id-${r}-${t}`:`id-${r}`}return t?`${n}-${t}`:n}var WK=new Set(["series","species","sheep","deer","fish"]);function $S(e){if(WK.has(e.toLowerCase()))return e;if(e.endsWith("y")&&e.length>1){let t=e[e.length-2];if(!"aeiou".includes(t?.toLowerCase()??""))return e.slice(0,-1)+"ies"}if(e.endsWith("s")||e.endsWith("x")||e.endsWith("ch"))return e+"es";return e+"s"}function Rce(e){return e.replace(/[-_]/g," ").replace(/([A-Z])/g," $1").replace(/\b\w/g,(t)=>t.toUpperCase()).replace(/\s+/g," ").trim()}function kce(e){let n=e.split("-").map((i)=>i.charAt(0).toUpperCase()+i.slice(1)),r=n.pop();if(r)n.push($S(r));return n.join(" ")}var JK={github:"GitHub",instagram:"Instagram",linkedin:"LinkedIn",email:"Email",website:"Website"};function Pce(e){let t=e.toLowerCase(),n=JK[t];if(n!==void 0)return n;return e.replace(/\b\w/g,(r)=>r.toUpperCase())}function Ace(e,t){if(!t)return e;try{return new URL(e,t).toString()}catch{return e}}function Oce(e){let n=e.split(/\s+/).filter((r)=>r.length>0).length;return Math.max(1,Math.ceil(n/200))}function Dce(e){let t=e.replace(/\s+/g," ").trim();if(!t)return;let n=t.match(/^(.*?[.!?])(?:\s|$)/);if(n?.[1])return n[1];return t.length<=200?t:`${t.slice(0,197)}\u2026`}function zce(e,t){if(e.length<=t)return e;let n=e.slice(0,t),r=n.lastIndexOf(" ");return r>0?n.slice(0,r)+"...":n+"..."}function Mce(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}var Oc=a.enum(["content","system"]).default("content");function Hm(e,t){return!!e?.frontmatterSchema&&!e.isSingleton&&t.classification!=="system"&&t.binaryStorage!=="asset"}import{createHash as HK}from"crypto";var XO=/^[a-f0-9]{64}$/,eD=/^asset:\/\/sha256\/([a-f0-9]{64})$/,tD="asset://sha256/",US=104857600,Du=a.custom((e)=>typeof e==="string"&&eD.test(e),{message:"Invalid SHA-256 asset reference"}),nD=a.object({ref:Du,digest:a.string().regex(XO),sizeBytes:a.number().int().nonnegative()}).refine((e)=>ea(e.ref)===e.digest,{message:"Asset reference and digest must match",path:["digest"]});function Xs(e){return Du.parse(e)}function ea(e){return Xs(e).slice(tD.length)}function zu(e){return HK("sha256").update(e).digest("hex")}function WS(e){if(nD.parse(e),!(e.bytes instanceof Uint8Array))throw Error("Prepared asset bytes must be a Uint8Array");if(e.bytes.byteLength!==e.sizeBytes)throw Error(`Prepared asset size mismatch: declared ${e.sizeBytes} bytes, received ${e.bytes.byteLength}`);let t=zu(e.bytes);if(t!==e.digest)throw Error(`Prepared asset digest mismatch: expected ${e.digest}, received ${t}`)}var D=Symbol.for("drizzle:entityKind");function W(e,t){if(!e||typeof e!=="object")return!1;if(e instanceof t)return!0;if(!Object.prototype.hasOwnProperty.call(t,D))throw Error(`Class "${t.name??"<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`);let n=Object.getPrototypeOf(e).constructor;if(n)while(n){if(D in n&&n[D]===t[D])return!0;n=Object.getPrototypeOf(n)}return!1}class nt{constructor(e,t){this.table=e,this.config=t,this.name=t.name,this.keyAsName=t.keyAsName,this.notNull=t.notNull,this.default=t.default,this.defaultFn=t.defaultFn,this.onUpdateFn=t.onUpdateFn,this.hasDefault=t.hasDefault,this.primary=t.primaryKey,this.isUnique=t.isUnique,this.uniqueName=t.uniqueName,this.uniqueType=t.uniqueType,this.dataType=t.dataType,this.columnType=t.columnType,this.generated=t.generated,this.generatedIdentity=t.generatedIdentity}static[D]="Column";name;keyAsName;primary;notNull;default;defaultFn;onUpdateFn;hasDefault;isUnique;uniqueName;uniqueType;dataType;columnType;enumValues=void 0;generated=void 0;generatedIdentity=void 0;config;mapFromDriverValue(e){return e}mapToDriverValue(e){return e}shouldDisableInsert(){return this.config.generated!==void 0&&this.config.generated.type!=="byDefault"}}class Mu{static[D]="ColumnBuilder";config;constructor(e,t,n){this.config={name:e,keyAsName:e==="",notNull:!1,default:void 0,hasDefault:!1,primaryKey:!1,isUnique:!1,uniqueName:void 0,uniqueType:void 0,dataType:t,columnType:n,generated:void 0}}$type(){return this}notNull(){return this.config.notNull=!0,this}default(e){return this.config.default=e,this.config.hasDefault=!0,this}$defaultFn(e){return this.config.defaultFn=e,this.config.hasDefault=!0,this}$default=this.$defaultFn;$onUpdateFn(e){return this.config.onUpdateFn=e,this.config.hasDefault=!0,this}$onUpdate=this.$onUpdateFn;primaryKey(){return this.config.primaryKey=!0,this.config.notNull=!0,this}setName(e){if(this.config.name!=="")return;this.config.name=e}}var bn=Symbol.for("drizzle:Name");class JS{static[D]="PgForeignKeyBuilder";reference;_onUpdate="no action";_onDelete="no action";constructor(e,t){if(this.reference=()=>{let{name:n,columns:r,foreignColumns:i}=e();return{name:n,columns:r,foreignTable:i[0].table,foreignColumns:i}},t)this._onUpdate=t.onUpdate,this._onDelete=t.onDelete}onUpdate(e){return this._onUpdate=e===void 0?"no action":e,this}onDelete(e){return this._onDelete=e===void 0?"no action":e,this}build(e){return new rD(e,this)}}class rD{constructor(e,t){this.table=e,this.reference=t.reference,this.onUpdate=t._onUpdate,this.onDelete=t._onDelete}static[D]="PgForeignKey";reference;onUpdate;onDelete;getName(){let{name:e,columns:t,foreignColumns:n}=this.reference(),r=t.map((s)=>s.name),i=n.map((s)=>s.name),o=[this.table[bn],...r,n[0].table[bn],...i];return e??`${o.join("_")}_fk`}}function Gm(e,...t){return e(...t)}function HS(e,t){return`${e[bn]}_${t.join("_")}_unique`}class iD{constructor(e,t){this.name=t,this.columns=e}static[D]="PgUniqueConstraintBuilder";columns;nullsNotDistinctConfig=!1;nullsNotDistinct(){return this.nullsNotDistinctConfig=!0,this}build(e){return new oD(e,this.columns,this.nullsNotDistinctConfig,this.name)}}class GK{static[D]="PgUniqueOnConstraintBuilder";name;constructor(e){this.name=e}on(...e){return new iD(e,this.name)}}class oD{constructor(e,t,n,r){this.table=e,this.columns=t,this.name=r??HS(this.table,this.columns.map((i)=>i.name)),this.nullsNotDistinct=n}static[D]="PgUniqueConstraint";columns;name;nullsNotDistinct=!1;getName(){return this.name}}function sD(e,t,n){for(let r=t;r<e.length;r++){let i=e[r];if(i==="\\"){r++;continue}if(i==='"')return[e.slice(t,r).replace(/\\/g,""),r+1];if(n)continue;if(i===","||i==="}")return[e.slice(t,r).replace(/\\/g,""),r]}return[e.slice(t).replace(/\\/g,""),e.length]}function aD(e,t=0){let n=[],r=t,i=!1;while(r<e.length){let o=e[r];if(o===","){if(i||r===t)n.push("");i=!0,r++;continue}if(i=!1,o==="\\"){r+=2;continue}if(o==='"'){let[l,u]=sD(e,r+1,!0);n.push(l),r=u;continue}if(o==="}")return[n,r+1];if(o==="{"){let[l,u]=aD(e,r+1);n.push(l),r=u;continue}let[s,c]=sD(e,r,!1);n.push(s),r=c}return[n,r]}function cD(e){let[t]=aD(e,1);return t}function GS(e){return`{${e.map((t)=>{if(Array.isArray(t))return GS(t);if(typeof t==="string")return`"${t.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`;return`${t}`}).join(",")}}`}class ju extends Mu{foreignKeyConfigs=[];static[D]="PgColumnBuilder";array(e){return new uD(this.config.name,this,e)}references(e,t={}){return this.foreignKeyConfigs.push({ref:e,actions:t}),this}unique(e,t){return this.config.isUnique=!0,this.config.uniqueName=e,this.config.uniqueType=t?.nulls,this}generatedAlwaysAs(e){return this.config.generated={as:e,type:"always",mode:"stored"},this}buildForeignKeys(e,t){return this.foreignKeyConfigs.map(({ref:n,actions:r})=>Gm((i,o)=>{let s=new JS(()=>{let c=i();return{columns:[e],foreignColumns:[c]}});if(o.onUpdate)s.onUpdate(o.onUpdate);if(o.onDelete)s.onDelete(o.onDelete);return s.build(t)},n,r))}buildExtraConfigColumn(e){return new lD(e,this.config)}}class Dc extends nt{constructor(e,t){if(!t.uniqueName)t.uniqueName=HS(e,[t.name]);super(e,t);this.table=e}static[D]="PgColumn"}class lD extends Dc{static[D]="ExtraConfigColumn";getSQLType(){return this.getSQLType()}indexConfig={order:this.config.order??"asc",nulls:this.config.nulls??"last",opClass:this.config.opClass};defaultConfig={order:"asc",nulls:"last",opClass:void 0};asc(){return this.indexConfig.order="asc",this}desc(){return this.indexConfig.order="desc",this}nullsFirst(){return this.indexConfig.nulls="first",this}nullsLast(){return this.indexConfig.nulls="last",this}op(e){return this.indexConfig.opClass=e,this}}class VK{static[D]="IndexedColumn";constructor(e,t,n,r){this.name=e,this.keyAsName=t,this.type=n,this.indexConfig=r}name;keyAsName;type;indexConfig}class uD extends ju{static[D]="PgArrayBuilder";constructor(e,t,n){super(e,"array","PgArray");this.config.baseBuilder=t,this.config.size=n}build(e){let t=this.config.baseBuilder.build(e);return new VS(e,this.config,t)}}class VS extends Dc{constructor(e,t,n,r){super(e,t);this.baseColumn=n,this.range=r,this.size=t.size}size;static[D]="PgArray";getSQLType(){return`${this.baseColumn.getSQLType()}[${typeof this.size==="number"?this.size:""}]`}mapFromDriverValue(e){if(typeof e==="string")e=cD(e);return e.map((t)=>this.baseColumn.mapFromDriverValue(t))}mapToDriverValue(e,t=!1){let n=e.map((r)=>r===null?null:W(this.baseColumn,VS)?this.baseColumn.mapToDriverValue(r,!0):this.baseColumn.mapToDriverValue(r));if(t)return n;return GS(n)}}class QK extends ju{static[D]="PgEnumObjectColumnBuilder";constructor(e,t){super(e,"string","PgEnumObjectColumn");this.config.enum=t}build(e){return new dD(e,this.config)}}class dD extends Dc{static[D]="PgEnumObjectColumn";enum;enumValues=this.config.enum.enumValues;constructor(e,t){super(e,t);this.enum=t.enum}getSQLType(){return this.enum.enumName}}var pD=Symbol.for("drizzle:isPgEnum");function mD(e){return!!e&&typeof e==="function"&&pD in e&&e[pD]===!0}class KK extends ju{static[D]="PgEnumColumnBuilder";constructor(e,t){super(e,"string","PgEnumColumn");this.config.enum=t}build(e){return new fD(e,this.config)}}class fD extends Dc{static[D]="PgEnumColumn";enum=this.config.enum;enumValues=this.config.enum.enumValues;constructor(e,t){super(e,t);this.enum=t.enum}getSQLType(){return this.enum.enumName}}class It{static[D]="Subquery";constructor(e,t,n,r=!1,i=[]){this._={brand:"Subquery",sql:e,selectedFields:t,alias:n,isWith:r,usedTables:i}}}class Nu extends It{static[D]="WithSubquery"}var gD="0.45.2";var QS,KS,hD={startActiveSpan(e,t){if(!QS)return t();if(!KS)KS=QS.trace.getTracer("drizzle-orm",gD);return Gm((n,r)=>r.startActiveSpan(e,(i)=>{try{return t(i)}catch(o){throw i.setStatus({code:n.SpanStatusCode.ERROR,message:o instanceof Error?o.message:"Unknown error"}),o}finally{i.end()}}),QS,KS)}};var Rt=Symbol.for("drizzle:ViewBaseConfig");var Vm=Symbol.for("drizzle:Schema"),Qm=Symbol.for("drizzle:Columns"),yD=Symbol.for("drizzle:ExtraConfigColumns"),YS=Symbol.for("drizzle:OriginalName"),XS=Symbol.for("drizzle:BaseName"),Bu=Symbol.for("drizzle:IsAlias"),bD=Symbol.for("drizzle:ExtraConfigBuilder"),YK=Symbol.for("drizzle:IsDrizzleTable");class ae{static[D]="Table";static Symbol={Name:bn,Schema:Vm,OriginalName:YS,Columns:Qm,ExtraConfigColumns:yD,BaseName:XS,IsAlias:Bu,ExtraConfigBuilder:bD};[bn];[YS];[Vm];[Qm];[yD];[XS];[Bu]=!1;[YK]=!0;[bD]=void 0;constructor(e,t,n){this[bn]=this[YS]=e,this[Vm]=t,this[XS]=n}}function Lo(e){return e[bn]}function ta(e){return`${e[Vm]??"public"}.${e[bn]}`}class XK{static[D]="FakePrimitiveParam"}function ex(e){return e!==null&&e!==void 0&&typeof e.getSQL==="function"}function e3(e){let t={sql:"",params:[]};for(let n of e)if(t.sql+=n.sql,t.params.push(...n.params),n.typings?.length){if(!t.typings)t.typings=[];t.typings.push(...n.typings)}return t}class Jt{static[D]="StringChunk";value;constructor(e){this.value=Array.isArray(e)?e:[e]}getSQL(){return new fe([this])}}class fe{constructor(e){this.queryChunks=e;for(let t of e)if(W(t,ae)){let n=t[ae.Symbol.Schema];this.usedTables.push(n===void 0?t[ae.Symbol.Name]:n+"."+t[ae.Symbol.Name])}}static[D]="SQL";decoder=xD;shouldInlineParams=!1;usedTables=[];append(e){return this.queryChunks.push(...e.queryChunks),this}toQuery(e){return hD.startActiveSpan("drizzle.buildSQL",(t)=>{let n=this.buildQueryFromSourceParams(this.queryChunks,e);return t?.setAttributes({"drizzle.query.text":n.sql,"drizzle.query.params":JSON.stringify(n.params)}),n})}buildQueryFromSourceParams(e,t){let n=Object.assign({},t,{inlineParams:t.inlineParams||this.shouldInlineParams,paramStartIndex:t.paramStartIndex||{value:0}}),{casing:r,escapeName:i,escapeParam:o,prepareTyping:s,inlineParams:c,paramStartIndex:l}=n;return e3(e.map((u)=>{if(W(u,Jt))return{sql:u.value.join(""),params:[]};if(W(u,Km))return{sql:i(u.value),params:[]};if(u===void 0)return{sql:"",params:[]};if(Array.isArray(u)){let p=[new Jt("(")];for(let[m,g]of u.entries())if(p.push(g),m<u.length-1)p.push(new Jt(", "));return p.push(new Jt(")")),this.buildQueryFromSourceParams(p,n)}if(W(u,fe))return this.buildQueryFromSourceParams(u.queryChunks,{...n,inlineParams:c||u.shouldInlineParams});if(W(u,ae)){let p=u[ae.Symbol.Schema],m=u[ae.Symbol.Name];return{sql:p===void 0||u[Bu]?i(m):i(p)+"."+i(m),params:[]}}if(W(u,nt)){let p=r.getColumnCasing(u);if(t.invokeSource==="indexes")return{sql:i(p),params:[]};let m=u.table[ae.Symbol.Schema];return{sql:u.table[Bu]||m===void 0?i(u.table[ae.Symbol.Name])+"."+i(p):i(m)+"."+i(u.table[ae.Symbol.Name])+"."+i(p),params:[]}}if(W(u,Er)){let p=u[Rt].schema,m=u[Rt].name;return{sql:p===void 0||u[Rt].isAlias?i(m):i(p)+"."+i(m),params:[]}}if(W(u,rr)){if(W(u.value,qo))return{sql:o(l.value++,u),params:[u],typings:["none"]};let p=u.value===null?null:u.encoder.mapToDriverValue(u.value);if(W(p,fe))return this.buildQueryFromSourceParams([p],n);if(c)return{sql:this.mapInlineParam(p,n),params:[]};let m=["none"];if(s)m=[s(u.encoder)];return{sql:o(l.value++,p),params:[p],typings:m}}if(W(u,qo))return{sql:o(l.value++,u),params:[u],typings:["none"]};if(W(u,fe.Aliased)&&u.fieldAlias!==void 0)return{sql:i(u.fieldAlias),params:[]};if(W(u,It)){if(u._.isWith)return{sql:i(u._.alias),params:[]};return this.buildQueryFromSourceParams([new Jt("("),u._.sql,new Jt(") "),new Km(u._.alias)],n)}if(mD(u)){if(u.schema)return{sql:i(u.schema)+"."+i(u.enumName),params:[]};return{sql:i(u.enumName),params:[]}}if(ex(u)){if(u.shouldOmitSQLParens?.())return this.buildQueryFromSourceParams([u.getSQL()],n);return this.buildQueryFromSourceParams([new Jt("("),u.getSQL(),new Jt(")")],n)}if(c)return{sql:this.mapInlineParam(u,n),params:[]};return{sql:o(l.value++,u),params:[u],typings:["none"]}}))}mapInlineParam(e,{escapeString:t}){if(e===null)return"null";if(typeof e==="number"||typeof e==="boolean")return e.toString();if(typeof e==="string")return t(e);if(typeof e==="object"){let n=e.toString();if(n==="[object Object]")return t(JSON.stringify(e));return t(n)}throw Error("Unexpected param value: "+e)}getSQL(){return this}as(e){if(e===void 0)return this;return new fe.Aliased(this,e)}mapWith(e){return this.decoder=typeof e==="function"?{mapFromDriverValue:e}:e,this}inlineParams(){return this.shouldInlineParams=!0,this}if(e){return e?this:void 0}}class Km{constructor(e){this.value=e}static[D]="Name";brand;getSQL(){return new fe([this])}}function SD(e){return typeof e==="object"&&e!==null&&"mapToDriverValue"in e&&typeof e.mapToDriverValue==="function"}var xD={mapFromDriverValue:(e)=>e},vD={mapToDriverValue:(e)=>e},Ale={...xD,...vD};class rr{constructor(e,t=vD){this.value=e,this.encoder=t}static[D]="Param";brand;getSQL(){return new fe([this])}}function b(e,...t){let n=[];if(t.length>0||e.length>0&&e[0]!=="")n.push(new Jt(e[0]));for(let[r,i]of t.entries())n.push(i,new Jt(e[r+1]));return new fe(n)}((e)=>{function t(){return new fe([])}e.empty=t;function n(l){return new fe(l)}e.fromList=n;function r(l){return new fe([new Jt(l)])}e.raw=r;function i(l,u){let p=[];for(let[m,g]of l.entries()){if(m>0&&u!==void 0)p.push(u);p.push(g)}return new fe(p)}e.join=i;function o(l){return new Km(l)}e.identifier=o;function s(l){return new qo(l)}e.placeholder=s;function c(l,u){return new rr(l,u)}e.param=c})(b||(b={}));((e)=>{class t{constructor(n,r){this.sql=n,this.fieldAlias=r}static[D]="SQL.Aliased";isSelectionField=!1;getSQL(){return this.sql}clone(){return new t(this.sql,this.fieldAlias)}}e.Aliased=t})(fe||(fe={}));class qo{constructor(e){this.name=e}static[D]="Placeholder";getSQL(){return new fe([this])}}function _u(e,t){return e.map((n)=>{if(W(n,qo)){if(!(n.name in t))throw Error(`No value for placeholder "${n.name}" was provided`);return t[n.name]}if(W(n,rr)&&W(n.value,qo)){if(!(n.value.name in t))throw Error(`No value for placeholder "${n.value.name}" was provided`);return n.encoder.mapToDriverValue(t[n.value.name])}return n})}var t3=Symbol.for("drizzle:IsDrizzleView");class Er{static[D]="View";[Rt];[t3]=!0;constructor({name:e,schema:t,selectedFields:n,query:r}){this[Rt]={name:e,originalName:e,schema:t,selectedFields:n,query:r,isExisting:!r,isAlias:!1}}getSQL(){return new fe([this])}}nt.prototype.getSQL=function(){return new fe([this])};ae.prototype.getSQL=function(){return new fe([this])};It.prototype.getSQL=function(){return new fe([this])};class zc{constructor(e){this.table=e}static[D]="ColumnAliasProxyHandler";get(e,t){if(t==="table")return this.table;return e[t]}}class Fu{constructor(e,t){this.alias=e,this.replaceOriginalName=t}static[D]="TableAliasProxyHandler";get(e,t){if(t===ae.Symbol.IsAlias)return!0;if(t===ae.Symbol.Name)return this.alias;if(this.replaceOriginalName&&t===ae.Symbol.OriginalName)return this.alias;if(t===Rt)return{...e[Rt],name:this.alias,isAlias:!0};if(t===ae.Symbol.Columns){let r=e[ae.Symbol.Columns];if(!r)return r;let i={};return Object.keys(r).map((o)=>{i[o]=new Proxy(r[o],new zc(new Proxy(e,this)))}),i}let n=e[t];if(W(n,nt))return new Proxy(n,new zc(new Proxy(e,this)));return n}}class n3{constructor(e){this.alias=e}static[D]="RelationTableAliasProxyHandler";get(e,t){if(t==="sourceTable")return Lu(e.sourceTable,this.alias);return e[t]}}function Lu(e,t){return new Proxy(e,new Fu(t,!1))}function Ti(e,t){return new Proxy(e,new zc(new Proxy(e.table,new Fu(t,!1))))}function tx(e,t){return new fe.Aliased(qu(e.sql,t),e.fieldAlias)}function qu(e,t){return b.join(e.queryChunks.map((n)=>{if(W(n,nt))return Ti(n,t);if(W(n,fe))return qu(n,t);if(W(n,fe.Aliased))return tx(n,t);return n}))}class Mc extends Error{static[D]="DrizzleError";constructor({message:e,cause:t}){super(e);this.name="DrizzleError",this.cause=t}}class Yi extends Error{constructor(e,t,n){super(`Failed query: ${e}
29
29
  params: ${t}`);if(this.query=e,this.params=t,this.cause=n,Error.captureStackTrace(this,Yi),n)this.cause=n}}class nx extends Mc{static[D]="TransactionRollbackError";constructor(){super({message:"Rollback"})}}class wD{static[D]="ConsoleLogWriter";write(e){console.log(e)}}class rx{static[D]="DefaultLogger";writer;constructor(e){this.writer=e?.writer??new wD}logQuery(e,t){let n=t.map((i)=>{try{return JSON.stringify(i)}catch{return String(i)}}),r=n.length?` -- params: [${n.join(", ")}]`:"";this.writer.write(`Query: ${e}${r}`)}}class ix{static[D]="NoopLogger";logQuery(){}}class An{static[D]="QueryPromise";[Symbol.toStringTag]="QueryPromise";catch(e){return this.then(void 0,e)}finally(e){return this.then((t)=>(e?.(),t),(t)=>{throw e?.(),t})}then(e,t){return this.execute().then(e,t)}}function ox(e,t,n){let r={},i=e.reduce((o,{path:s,field:c},l)=>{let u;if(W(c,nt))u=c;else if(W(c,fe))u=c.decoder;else if(W(c,It))u=c._.sql.decoder;else u=c.sql.decoder;let p=o;for(let[m,g]of s.entries())if(m<s.length-1){if(!(g in p))p[g]={};p=p[g]}else{let f=t[l],v=p[g]=f===null?null:u.mapFromDriverValue(f);if(n&&W(c,nt)&&s.length===2){let w=s[0];if(!(w in r))r[w]=v===null?Lo(c.table):!1;else if(typeof r[w]==="string"&&r[w]!==Lo(c.table))r[w]=!1}}return o},{});if(n&&Object.keys(r).length>0){for(let[o,s]of Object.entries(r))if(typeof s==="string"&&!n[s])i[o]=null}return i}function Ir(e,t){return Object.entries(e).reduce((n,[r,i])=>{if(typeof r!=="string")return n;let o=t?[...t,r]:[r];if(W(i,nt)||W(i,fe)||W(i,fe.Aliased)||W(i,It))n.push({path:o,field:i});else if(W(i,ae))n.push(...Ir(i[ae.Symbol.Columns],o));else n.push(...Ir(i,o));return n},[])}function Zu(e,t){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let[i,o]of n.entries())if(o!==r[i])return!1;return!0}function Ym(e,t){let n=Object.entries(t).filter(([,r])=>r!==void 0).map(([r,i])=>{if(W(i,fe)||W(i,nt))return[r,i];else return[r,new rr(i,e[ae.Symbol.Columns][r])]});if(n.length===0)throw Error("No values to set");return Object.fromEntries(n)}function TD(e,t){for(let n of t)for(let r of Object.getOwnPropertyNames(n.prototype)){if(r==="constructor")continue;Object.defineProperty(e.prototype,r,Object.getOwnPropertyDescriptor(n.prototype,r)||Object.create(null))}}function jc(e){return e[ae.Symbol.Columns]}function $u(e){return W(e,It)?e._.alias:W(e,Er)?e[Rt].name:W(e,fe)?void 0:e[ae.Symbol.IsAlias]?e[ae.Symbol.Name]:e[ae.Symbol.BaseName]}function Ci(e,t){return{name:typeof e==="string"&&e.length>0?e:"",config:typeof e==="object"?e:t}}function CD(e){if(typeof e!=="object"||e===null)return!1;if(e.constructor.name!=="Object")return!1;if("logger"in e){let t=typeof e.logger;if(t!=="boolean"&&(t!=="object"||typeof e.logger.logQuery!=="function")&&t!=="undefined")return!1;return!0}if("schema"in e){let t=typeof e.schema;if(t!=="object"&&t!=="undefined")return!1;return!0}if("casing"in e){let t=typeof e.casing;if(t!=="string"&&t!=="undefined")return!1;return!0}if("mode"in e){if(e.mode!=="default"||e.mode!=="planetscale"||e.mode!==void 0)return!1;return!0}if("connection"in e){let t=typeof e.connection;if(t!=="string"&&t!=="object"&&t!=="undefined")return!1;return!0}if("client"in e){let t=typeof e.client;if(t!=="object"&&t!=="function"&&t!=="undefined")return!1;return!0}if(Object.keys(e).length===0)return!0;return!1}var sx=typeof TextDecoder>"u"?null:new TextDecoder;var ED=Symbol.for("drizzle:PgInlineForeignKeys"),ID=Symbol.for("drizzle:EnableRLS");class ax extends ae{static[D]="PgTable";static Symbol=Object.assign({},ae.Symbol,{InlineForeignKeys:ED,EnableRLS:ID});[ED]=[];[ID]=!1;[ae.Symbol.ExtraConfigBuilder]=void 0;[ae.Symbol.ExtraConfigColumns]={}}class cx{static[D]="PgPrimaryKeyBuilder";columns;name;constructor(e,t){this.columns=e,this.name=t}build(e){return new RD(e,this.columns,this.name)}}class RD{constructor(e,t,n){this.table=e,this.columns=t,this.name=n}static[D]="PgPrimaryKey";columns;name;getName(){return this.name??`${this.table[ax.Symbol.Name]}_${this.columns.map((e)=>e.name).join("_")}_pk`}}function Jn(e,t){if(SD(t)&&!ex(e)&&!W(e,rr)&&!W(e,qo)&&!W(e,nt)&&!W(e,ae)&&!W(e,Er))return new rr(e,t);return e}var A=(e,t)=>b`${e} = ${Jn(t,e)}`,Zo=(e,t)=>b`${e} <> ${Jn(t,e)}`;function H(...e){let t=e.filter((n)=>n!==void 0);if(t.length===0)return;if(t.length===1)return new fe(t);return new fe([new Jt("("),b.join(t,new Jt(" and ")),new Jt(")")])}function cn(...e){let t=e.filter((n)=>n!==void 0);if(t.length===0)return;if(t.length===1)return new fe(t);return new fe([new Jt("("),b.join(t,new Jt(" or ")),new Jt(")")])}function Xm(e){return b`not ${e}`}var Xi=(e,t)=>b`${e} > ${Jn(t,e)}`,kD=(e,t)=>b`${e} >= ${Jn(t,e)}`,PD=(e,t)=>b`${e} < ${Jn(t,e)}`,On=(e,t)=>b`${e} <= ${Jn(t,e)}`;function Ke(e,t){if(Array.isArray(t)){if(t.length===0)return b`false`;return b`${e} in ${t.map((n)=>Jn(n,e))}`}return b`${e} in ${Jn(t,e)}`}function AD(e,t){if(Array.isArray(t)){if(t.length===0)return b`true`;return b`${e} not in ${t.map((n)=>Jn(n,e))}`}return b`${e} not in ${Jn(t,e)}`}function Xt(e){return b`${e} is null`}function eo(e){return b`${e} is not null`}function na(e){return b`exists ${e}`}function ef(e){return b`not exists ${e}`}function OD(e,t,n){return b`${e} between ${Jn(t,e)} and ${Jn(n,e)}`}function DD(e,t,n){return b`${e} not between ${Jn(t,e)} and ${Jn(n,e)}`}function zD(e,t){return b`${e} like ${t}`}function MD(e,t){return b`${e} not like ${t}`}function jD(e,t){return b`${e} ilike ${t}`}function ND(e,t){return b`${e} not ilike ${t}`}function Ue(e){return b`${e} asc`}function wt(e){return b`${e} desc`}class lx{constructor(e,t,n){this.sourceTable=e,this.referencedTable=t,this.relationName=n,this.referencedTableName=t[ae.Symbol.Name]}static[D]="Relation";referencedTableName;fieldName}class BD{constructor(e,t){this.table=e,this.config=t}static[D]="Relations"}class $o extends lx{constructor(e,t,n,r){super(e,t,n?.relationName);this.config=n,this.isNullable=r}static[D]="One";withFieldName(e){let t=new $o(this.sourceTable,this.referencedTable,this.config,this.isNullable);return t.fieldName=e,t}}class Uu extends lx{constructor(e,t,n){super(e,t,n?.relationName);this.config=n}static[D]="Many";withFieldName(e){let t=new Uu(this.sourceTable,this.referencedTable,this.config);return t.fieldName=e,t}}function _D(){return{and:H,between:OD,eq:A,exists:na,gt:Xi,gte:kD,ilike:jD,inArray:Ke,isNull:Xt,isNotNull:eo,like:zD,lt:PD,lte:On,ne:Zo,not:Xm,notBetween:DD,notExists:ef,notLike:MD,notIlike:ND,notInArray:AD,or:cn,sql:b}}function FD(){return{sql:b,asc:Ue,desc:wt}}function LD(e,t){if(Object.keys(e).length===1&&"default"in e&&!W(e.default,ae))e=e.default;let n={},r={},i={};for(let[o,s]of Object.entries(e))if(W(s,ae)){let c=ta(s),l=r[c];n[c]=o,i[o]={tsName:o,dbName:s[ae.Symbol.Name],schema:s[ae.Symbol.Schema],columns:s[ae.Symbol.Columns],relations:l?.relations??{},primaryKey:l?.primaryKey??[]};for(let p of Object.values(s[ae.Symbol.Columns]))if(p.primary)i[o].primaryKey.push(p);let u=s[ae.Symbol.ExtraConfigBuilder]?.(s[ae.Symbol.ExtraConfigColumns]);if(u){for(let p of Object.values(u))if(W(p,cx))i[o].primaryKey.push(...p.columns)}}else if(W(s,BD)){let c=ta(s.table),l=n[c],u=s.config(t(s.table)),p;for(let[m,g]of Object.entries(u))if(l){let f=i[l];if(f.relations[m]=g,p)f.primaryKey.push(...p)}else{if(!(c in r))r[c]={relations:{},primaryKey:p};r[c].relations[m]=g}}return{tables:i,tableNamesMap:n}}function r3(e){return function(n,r){return new $o(e,n,r,r?.fields.reduce((i,o)=>i&&o.notNull,!0)??!1)}}function i3(e){return function(n,r){return new Uu(e,n,r)}}function qD(e,t,n){if(W(n,$o)&&n.config)return{fields:n.config.fields,references:n.config.references};let r=t[ta(n.referencedTable)];if(!r)throw Error(`Table "${n.referencedTable[ae.Symbol.Name]}" not found in schema`);let i=e[r];if(!i)throw Error(`Table "${r}" not found in schema`);let o=n.sourceTable,s=t[ta(o)];if(!s)throw Error(`Table "${o[ae.Symbol.Name]}" not found in schema`);let c=[];for(let l of Object.values(i.relations))if(n.relationName&&n!==l&&l.relationName===n.relationName||!n.relationName&&l.referencedTable===n.sourceTable)c.push(l);if(c.length>1)throw n.relationName?Error(`There are multiple relations with name "${n.relationName}" in table "${r}"`):Error(`There are multiple relations between "${r}" and "${n.sourceTable[ae.Symbol.Name]}". Please specify relation name`);if(c[0]&&W(c[0],$o)&&c[0].config)return{fields:c[0].config.references,references:c[0].config.fields};throw Error(`There is not enough information to infer relation "${s}.${n.fieldName}"`)}function ZD(e){return{one:r3(e),many:i3(e)}}function tf(e,t,n,r,i=(o)=>o){let o={};for(let[s,c]of r.entries())if(c.isJson){let l=t.relations[c.tsKey],u=n[s],p=typeof u==="string"?JSON.parse(u):u;o[c.tsKey]=W(l,$o)?p&&tf(e,e[c.relationTableTsKey],p,c.selection,i):p.map((m)=>tf(e,e[c.relationTableTsKey],m,c.selection,i))}else{let l=i(n[s]),u=c.field,p;if(W(u,nt))p=u;else if(W(u,fe))p=u.decoder;else p=u.sql.decoder;o[c.tsKey]=l===null?null:p.mapFromDriverValue(l)}return o}function $D(e){return b`count(${e||b.raw("*")})`.mapWith(Number)}class UD{constructor(e,t){this.name=e,this.value=t}static[D]="SQLiteCheckBuilder";brand;build(e){return new WD(e,this)}}class WD{constructor(e,t){this.table=e,this.name=t.name,this.value=t.value}static[D]="SQLiteCheck";name;value}function Uo(e,t){return new UD(e,t)}class ux{static[D]="SQLiteForeignKeyBuilder";reference;_onUpdate;_onDelete;constructor(e,t){if(this.reference=()=>{let{name:n,columns:r,foreignColumns:i}=e();return{name:n,columns:r,foreignTable:i[0].table,foreignColumns:i}},t)this._onUpdate=t.onUpdate,this._onDelete=t.onDelete}onUpdate(e){return this._onUpdate=e,this}onDelete(e){return this._onDelete=e,this}build(e){return new JD(e,this)}}class JD{constructor(e,t){this.table=e,this.reference=t.reference,this.onUpdate=t._onUpdate,this.onDelete=t._onDelete}static[D]="SQLiteForeignKey";reference;onUpdate;onDelete;getName(){let{name:e,columns:t,foreignColumns:n}=this.reference(),r=t.map((s)=>s.name),i=n.map((s)=>s.name),o=[this.table[bn],...r,n[0].table[bn],...i];return e??`${o.join("_")}_fk`}}function px(e,t){return`${e[bn]}_${t.join("_")}_unique`}class HD{constructor(e,t){this.name=t,this.columns=e}static[D]="SQLiteUniqueConstraintBuilder";columns;build(e){return new GD(e,this.columns,this.name)}}class o3{static[D]="SQLiteUniqueOnConstraintBuilder";name;constructor(e){this.name=e}on(...e){return new HD(e,this.name)}}class GD{constructor(e,t,n){this.table=e,this.columns=t,this.name=n??px(this.table,this.columns.map((r)=>r.name))}static[D]="SQLiteUniqueConstraint";columns;name;getName(){return this.name}}class en extends Mu{static[D]="SQLiteColumnBuilder";foreignKeyConfigs=[];references(e,t={}){return this.foreignKeyConfigs.push({ref:e,actions:t}),this}unique(e){return this.config.isUnique=!0,this.config.uniqueName=e,this}generatedAlwaysAs(e,t){return this.config.generated={as:e,type:"always",mode:t?.mode??"virtual"},this}buildForeignKeys(e,t){return this.foreignKeyConfigs.map(({ref:n,actions:r})=>((i,o)=>{let s=new ux(()=>{let c=i();return{columns:[e],foreignColumns:[c]}});if(o.onUpdate)s.onUpdate(o.onUpdate);if(o.onDelete)s.onDelete(o.onDelete);return s.build(t)})(n,r))}}class Dt extends nt{constructor(e,t){if(!t.uniqueName)t.uniqueName=px(e,[t.name]);super(e,t);this.table=e}static[D]="SQLiteColumn"}class VD extends en{static[D]="SQLiteBigIntBuilder";constructor(e){super(e,"bigint","SQLiteBigInt")}build(e){return new QD(e,this.config)}}class QD extends Dt{static[D]="SQLiteBigInt";getSQLType(){return"blob"}mapFromDriverValue(e){if(typeof Buffer<"u"&&Buffer.from){let t=Buffer.isBuffer(e)?e:e instanceof ArrayBuffer?Buffer.from(e):e.buffer?Buffer.from(e.buffer,e.byteOffset,e.byteLength):Buffer.from(e);return BigInt(t.toString("utf8"))}return BigInt(sx.decode(e))}mapToDriverValue(e){return Buffer.from(e.toString())}}class KD extends en{static[D]="SQLiteBlobJsonBuilder";constructor(e){super(e,"json","SQLiteBlobJson")}build(e){return new YD(e,this.config)}}class YD extends Dt{static[D]="SQLiteBlobJson";getSQLType(){return"blob"}mapFromDriverValue(e){if(typeof Buffer<"u"&&Buffer.from){let t=Buffer.isBuffer(e)?e:e instanceof ArrayBuffer?Buffer.from(e):e.buffer?Buffer.from(e.buffer,e.byteOffset,e.byteLength):Buffer.from(e);return JSON.parse(t.toString("utf8"))}return JSON.parse(sx.decode(e))}mapToDriverValue(e){return Buffer.from(JSON.stringify(e))}}class XD extends en{static[D]="SQLiteBlobBufferBuilder";constructor(e){super(e,"buffer","SQLiteBlobBuffer")}build(e){return new ez(e,this.config)}}class ez extends Dt{static[D]="SQLiteBlobBuffer";mapFromDriverValue(e){if(Buffer.isBuffer(e))return e;return Buffer.from(e)}getSQLType(){return"blob"}}function nf(e,t){let{name:n,config:r}=Ci(e,t);if(r?.mode==="json")return new KD(n);if(r?.mode==="bigint")return new VD(n);return new XD(n)}class tz extends en{static[D]="SQLiteCustomColumnBuilder";constructor(e,t,n){super(e,"custom","SQLiteCustomColumn");this.config.fieldConfig=t,this.config.customTypeParams=n}build(e){return new nz(e,this.config)}}class nz extends Dt{static[D]="SQLiteCustomColumn";sqlName;mapTo;mapFrom;constructor(e,t){super(e,t);this.sqlName=t.customTypeParams.dataType(t.fieldConfig),this.mapTo=t.customTypeParams.toDriver,this.mapFrom=t.customTypeParams.fromDriver}getSQLType(){return this.sqlName}mapFromDriverValue(e){return typeof this.mapFrom==="function"?this.mapFrom(e):e}mapToDriverValue(e){return typeof this.mapTo==="function"?this.mapTo(e):e}}function rf(e){return(t,n)=>{let{name:r,config:i}=Ci(t,n);return new tz(r,i,e)}}class of extends en{static[D]="SQLiteBaseIntegerBuilder";constructor(e,t,n){super(e,t,n);this.config.autoIncrement=!1}primaryKey(e){if(e?.autoIncrement)this.config.autoIncrement=!0;return this.config.hasDefault=!0,super.primaryKey()}}class sf extends Dt{static[D]="SQLiteBaseInteger";autoIncrement=this.config.autoIncrement;getSQLType(){return"integer"}}class rz extends of{static[D]="SQLiteIntegerBuilder";constructor(e){super(e,"number","SQLiteInteger")}build(e){return new iz(e,this.config)}}class iz extends sf{static[D]="SQLiteInteger"}class oz extends of{static[D]="SQLiteTimestampBuilder";constructor(e,t){super(e,"date","SQLiteTimestamp");this.config.mode=t}defaultNow(){return this.default(b`(cast((julianday('now') - 2440587.5)*86400000 as integer))`)}build(e){return new sz(e,this.config)}}class sz extends sf{static[D]="SQLiteTimestamp";mode=this.config.mode;mapFromDriverValue(e){if(this.config.mode==="timestamp")return new Date(e*1000);return new Date(e)}mapToDriverValue(e){let t=e.getTime();if(this.config.mode==="timestamp")return Math.floor(t/1000);return t}}class az extends of{static[D]="SQLiteBooleanBuilder";constructor(e,t){super(e,"boolean","SQLiteBoolean");this.config.mode=t}build(e){return new cz(e,this.config)}}class cz extends sf{static[D]="SQLiteBoolean";mode=this.config.mode;mapFromDriverValue(e){return Number(e)===1}mapToDriverValue(e){return e?1:0}}function xe(e,t){let{name:n,config:r}=Ci(e,t);if(r?.mode==="timestamp"||r?.mode==="timestamp_ms")return new oz(n,r.mode);if(r?.mode==="boolean")return new az(n,r.mode);return new rz(n)}class lz extends en{static[D]="SQLiteNumericBuilder";constructor(e){super(e,"string","SQLiteNumeric")}build(e){return new uz(e,this.config)}}class uz extends Dt{static[D]="SQLiteNumeric";mapFromDriverValue(e){if(typeof e==="string")return e;return String(e)}getSQLType(){return"numeric"}}class pz extends en{static[D]="SQLiteNumericNumberBuilder";constructor(e){super(e,"number","SQLiteNumericNumber")}build(e){return new dz(e,this.config)}}class dz extends Dt{static[D]="SQLiteNumericNumber";mapFromDriverValue(e){if(typeof e==="number")return e;return Number(e)}mapToDriverValue=String;getSQLType(){return"numeric"}}class mz extends en{static[D]="SQLiteNumericBigIntBuilder";constructor(e){super(e,"bigint","SQLiteNumericBigInt")}build(e){return new fz(e,this.config)}}class fz extends Dt{static[D]="SQLiteNumericBigInt";mapFromDriverValue=BigInt;mapToDriverValue=String;getSQLType(){return"numeric"}}function gz(e,t){let{name:n,config:r}=Ci(e,t),i=r?.mode;return i==="number"?new pz(n):i==="bigint"?new mz(n):new lz(n)}class hz extends en{static[D]="SQLiteRealBuilder";constructor(e){super(e,"number","SQLiteReal")}build(e){return new yz(e,this.config)}}class yz extends Dt{static[D]="SQLiteReal";getSQLType(){return"real"}}function bz(e){return new hz(e??"")}class Sz extends en{static[D]="SQLiteTextBuilder";constructor(e,t){super(e,"string","SQLiteText");this.config.enumValues=t.enum,this.config.length=t.length}build(e){return new xz(e,this.config)}}class xz extends Dt{static[D]="SQLiteText";enumValues=this.config.enumValues;length=this.config.length;constructor(e,t){super(e,t)}getSQLType(){return`text${this.config.length?`(${this.config.length})`:""}`}}class vz extends en{static[D]="SQLiteTextJsonBuilder";constructor(e){super(e,"json","SQLiteTextJson")}build(e){return new wz(e,this.config)}}class wz extends Dt{static[D]="SQLiteTextJson";getSQLType(){return"text"}mapFromDriverValue(e){return JSON.parse(e)}mapToDriverValue(e){return JSON.stringify(e)}}function V(e,t={}){let{name:n,config:r}=Ci(e,t);if(r.mode==="json")return new vz(n);return new Sz(n,r)}class Lt{static[D]="SelectionProxyHandler";config;constructor(e){this.config={...e}}get(e,t){if(t==="_")return{...e._,selectedFields:new Proxy(e._.selectedFields,this)};if(t===Rt)return{...e[Rt],selectedFields:new Proxy(e[Rt].selectedFields,this)};if(typeof t==="symbol")return e[t];let r=(W(e,It)?e._.selectedFields:W(e,Er)?e[Rt].selectedFields:e)[t];if(W(r,fe.Aliased)){if(this.config.sqlAliasedBehavior==="sql"&&!r.isSelectionField)return r.sql;let i=r.clone();return i.isSelectionField=!0,i}if(W(r,fe)){if(this.config.sqlBehavior==="sql")return r;throw Error(`You tried to reference "${t}" field from a subquery, which is a raw SQL field, but it doesn't have an alias declared. Please add an alias to the field using ".as('alias')" method.`)}if(W(r,nt)){if(this.config.alias)return new Proxy(r,new zc(new Proxy(r.table,new Fu(this.config.alias,this.config.replaceOriginalName??!1))));return r}if(typeof r!=="object"||r===null)return r;return new Proxy(r,new Lt(this.config))}}function Tz(){return{blob:nf,customType:rf,integer:xe,numeric:gz,real:bz,text:V}}var dx=Symbol.for("drizzle:SQLiteInlineForeignKeys");class qt extends ae{static[D]="SQLiteTable";static Symbol=Object.assign({},ae.Symbol,{InlineForeignKeys:dx});[ae.Symbol.Columns];[dx]=[];[ae.Symbol.ExtraConfigBuilder]=void 0}function s3(e,t,n,r,i=e){let o=new qt(e,r,i),s=typeof t==="function"?t(Tz()):t,c=Object.fromEntries(Object.entries(s).map(([u,p])=>{let m=p;m.setName(u);let g=m.build(o);return o[dx].push(...m.buildForeignKeys(g,o)),[u,g]})),l=Object.assign(o,c);if(l[ae.Symbol.Columns]=c,l[ae.Symbol.ExtraConfigColumns]=c,n)l[qt.Symbol.ExtraConfigBuilder]=n;return l}var ot=(e,t,n)=>s3(e,t,n);class mx{constructor(e,t){this.name=e,this.unique=t}static[D]="SQLiteIndexBuilderOn";on(...e){return new Cz(this.name,e,this.unique)}}class Cz{static[D]="SQLiteIndexBuilder";config;constructor(e,t,n){this.config={name:e,columns:t,unique:n,where:void 0}}where(e){return this.config.where=e,this}build(e){return new Ez(this.config,e)}}class Ez{static[D]="SQLiteIndex";config;constructor(e,t){this.config={...e,table:t}}}function ut(e){return new mx(e,!1)}function fx(e){return new mx(e,!0)}function Dn(...e){if(e[0].columns)return new gx(e[0].columns,e[0].name);return new gx(e)}class gx{static[D]="SQLitePrimaryKeyBuilder";columns;name;constructor(e,t){this.columns=e,this.name=t}build(e){return new Iz(e,this.columns,this.name)}}class Iz{constructor(e,t,n){this.table=e,this.columns=t,this.name=n}static[D]="SQLitePrimaryKey";columns;name;getName(){return this.name??`${this.table[qt.Symbol.Name]}_${this.columns.map((e)=>e.name).join("_")}_pk`}}function Kr(e){if(W(e,qt))return[`${e[ae.Symbol.BaseName]}`];if(W(e,It))return e._.usedTables??[];if(W(e,fe))return e.usedTables??[];return[]}class af extends An{constructor(e,t,n,r){super();this.table=e,this.session=t,this.dialect=n,this.config={table:e,withList:r}}static[D]="SQLiteDelete";config;where(e){return this.config.where=e,this}orderBy(...e){if(typeof e[0]==="function"){let t=e[0](new Proxy(this.config.table[ae.Symbol.Columns],new Lt({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),n=Array.isArray(t)?t:[t];this.config.orderBy=n}else{let t=e;this.config.orderBy=t}return this}limit(e){return this.config.limit=e,this}returning(e=this.table[qt.Symbol.Columns]){return this.config.returning=Ir(e),this}getSQL(){return this.dialect.buildDeleteQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"delete",tables:Kr(this.config.table)})}prepare(){return this._prepare(!1)}run=(e)=>this._prepare().run(e);all=(e)=>this._prepare().all(e);get=(e)=>this._prepare().get(e);values=(e)=>this._prepare().values(e);async execute(e){return this._prepare().execute(e)}$dynamic(){return this}}function a3(e){return(e.replace(/['\u2019]/g,"").match(/[\da-z]+|[A-Z]+(?![a-z])|[A-Z][\da-z]+/g)??[]).map((n)=>n.toLowerCase()).join("_")}function c3(e){return(e.replace(/['\u2019]/g,"").match(/[\da-z]+|[A-Z]+(?![a-z])|[A-Z][\da-z]+/g)??[]).reduce((n,r,i)=>{let o=i===0?r.toLowerCase():`${r[0].toUpperCase()}${r.slice(1)}`;return n+o},"")}function l3(e){return e}class hx{static[D]="CasingCache";cache={};cachedTables={};convert;constructor(e){this.convert=e==="snake_case"?a3:e==="camelCase"?c3:l3}getColumnCasing(e){if(!e.keyAsName)return e.name;let t=e.table[ae.Symbol.Schema]??"public",n=e.table[ae.Symbol.OriginalName],r=`${t}.${n}.${e.name}`;if(!this.cache[r])this.cacheTable(e.table);return this.cache[r]}cacheTable(e){let t=e[ae.Symbol.Schema]??"public",n=e[ae.Symbol.OriginalName],r=`${t}.${n}`;if(!this.cachedTables[r]){for(let i of Object.values(e[ae.Symbol.Columns])){let o=`${r}.${i.name}`;this.cache[o]=this.convert(i.name)}this.cachedTables[r]=!0}}clearCache(){this.cache={},this.cachedTables={}}}class ra extends Er{static[D]="SQLiteViewBase"}class Nc{static[D]="SQLiteDialect";casing;constructor(e){this.casing=new hx(e?.casing)}escapeName(e){return`"${e.replace(/"/g,'""')}"`}escapeParam(e){return"?"}escapeString(e){return`'${e.replace(/'/g,"''")}'`}buildWithCTE(e){if(!e?.length)return;let t=[b`with `];for(let[n,r]of e.entries())if(t.push(b`${b.identifier(r._.alias)} as (${r._.sql})`),n<e.length-1)t.push(b`, `);return t.push(b` `),b.join(t)}buildDeleteQuery({table:e,where:t,returning:n,withList:r,limit:i,orderBy:o}){let s=this.buildWithCTE(r),c=n?b` returning ${this.buildSelection(n,{isSingleTable:!0})}`:void 0,l=t?b` where ${t}`:void 0,u=this.buildOrderBy(o),p=this.buildLimit(i);return b`${s}delete from ${e}${l}${c}${u}${p}`}buildUpdateSet(e,t){let n=e[ae.Symbol.Columns],r=Object.keys(n).filter((o)=>t[o]!==void 0||n[o]?.onUpdateFn!==void 0),i=r.length;return b.join(r.flatMap((o,s)=>{let c=n[o],l=c.onUpdateFn?.(),u=t[o]??(W(l,fe)?l:b.param(l,c)),p=b`${b.identifier(this.casing.getColumnCasing(c))} = ${u}`;if(s<i-1)return[p,b.raw(", ")];return[p]}))}buildUpdateQuery({table:e,set:t,where:n,returning:r,withList:i,joins:o,from:s,limit:c,orderBy:l}){let u=this.buildWithCTE(i),p=this.buildUpdateSet(e,t),m=s&&b.join([b.raw(" from "),this.buildFromTable(s)]),g=this.buildJoins(o),f=r?b` returning ${this.buildSelection(r,{isSingleTable:!0})}`:void 0,v=n?b` where ${n}`:void 0,w=this.buildOrderBy(l),k=this.buildLimit(c);return b`${u}update ${e} set ${p}${m}${g}${v}${f}${w}${k}`}buildSelection(e,{isSingleTable:t=!1}={}){let n=e.length,r=e.flatMap(({field:i},o)=>{let s=[];if(W(i,fe.Aliased)&&i.isSelectionField)s.push(b.identifier(i.fieldAlias));else if(W(i,fe.Aliased)||W(i,fe)){let c=W(i,fe.Aliased)?i.sql:i;if(t)s.push(new fe(c.queryChunks.map((l)=>{if(W(l,nt))return b.identifier(this.casing.getColumnCasing(l));return l})));else s.push(c);if(W(i,fe.Aliased))s.push(b` as ${b.identifier(i.fieldAlias)}`)}else if(W(i,nt)){let c=i.table[ae.Symbol.Name];if(i.columnType==="SQLiteNumericBigInt")if(t)s.push(b`cast(${b.identifier(this.casing.getColumnCasing(i))} as text)`);else s.push(b`cast(${b.identifier(c)}.${b.identifier(this.casing.getColumnCasing(i))} as text)`);else if(t)s.push(b.identifier(this.casing.getColumnCasing(i)));else s.push(b`${b.identifier(c)}.${b.identifier(this.casing.getColumnCasing(i))}`)}else if(W(i,It)){let c=Object.entries(i._.selectedFields);if(c.length===1){let l=c[0][1],u=W(l,fe)?l.decoder:W(l,nt)?{mapFromDriverValue:(p)=>l.mapFromDriverValue(p)}:l.sql.decoder;if(u)i._.sql.decoder=u}s.push(i)}if(o<n-1)s.push(b`, `);return s});return b.join(r)}buildJoins(e){if(!e||e.length===0)return;let t=[];if(e)for(let[n,r]of e.entries()){if(n===0)t.push(b` `);let i=r.table,o=r.on?b` on ${r.on}`:void 0;if(W(i,qt)){let s=i[qt.Symbol.Name],c=i[qt.Symbol.Schema],l=i[qt.Symbol.OriginalName],u=s===l?void 0:r.alias;t.push(b`${b.raw(r.joinType)} join ${c?b`${b.identifier(c)}.`:void 0}${b.identifier(l)}${u&&b` ${b.identifier(u)}`}${o}`)}else t.push(b`${b.raw(r.joinType)} join ${i}${o}`);if(n<e.length-1)t.push(b` `)}return b.join(t)}buildLimit(e){return typeof e==="object"||typeof e==="number"&&e>=0?b` limit ${e}`:void 0}buildOrderBy(e){let t=[];if(e){for(let[n,r]of e.entries())if(t.push(r),n<e.length-1)t.push(b`, `)}return t.length>0?b` order by ${b.join(t)}`:void 0}buildFromTable(e){if(W(e,ae)&&e[ae.Symbol.IsAlias])return b`${b`${b.identifier(e[ae.Symbol.Schema]??"")}.`.if(e[ae.Symbol.Schema])}${b.identifier(e[ae.Symbol.OriginalName])} ${b.identifier(e[ae.Symbol.Name])}`;return e}buildSelectQuery({withList:e,fields:t,fieldsFlat:n,where:r,having:i,table:o,joins:s,orderBy:c,groupBy:l,limit:u,offset:p,distinct:m,setOperators:g}){let f=n??Ir(t);for(let Ie of f)if(W(Ie.field,nt)&&Lo(Ie.field.table)!==(W(o,It)?o._.alias:W(o,ra)?o[Rt].name:W(o,fe)?void 0:Lo(o))&&!((se)=>s?.some(({alias:ue})=>ue===(se[ae.Symbol.IsAlias]?Lo(se):se[ae.Symbol.BaseName])))(Ie.field.table)){let se=Lo(Ie.field.table);throw Error(`Your "${Ie.path.join("->")}" field references a column "${se}"."${Ie.field.name}", but the table "${se}" is not part of the query! Did you forget to join it?`)}let v=!s||s.length===0,w=this.buildWithCTE(e),k=m?b` distinct`:void 0,P=this.buildSelection(f,{isSingleTable:v}),B=this.buildFromTable(o),j=this.buildJoins(s),Y=r?b` where ${r}`:void 0,G=i?b` having ${i}`:void 0,I=[];if(l){for(let[Ie,se]of l.entries())if(I.push(se),Ie<l.length-1)I.push(b`, `)}let ee=I.length>0?b` group by ${b.join(I)}`:void 0,he=this.buildOrderBy(c),Ee=this.buildLimit(u),We=p?b` offset ${p}`:void 0,Ye=b`${w}select${k} ${P} from ${B}${j}${Y}${ee}${G}${he}${Ee}${We}`;if(g.length>0)return this.buildSetOperations(Ye,g);return Ye}buildSetOperations(e,t){let[n,...r]=t;if(!n)throw Error("Cannot pass undefined values to any set operator");if(r.length===0)return this.buildSetOperationQuery({leftSelect:e,setOperator:n});return this.buildSetOperations(this.buildSetOperationQuery({leftSelect:e,setOperator:n}),r)}buildSetOperationQuery({leftSelect:e,setOperator:{type:t,isAll:n,rightSelect:r,limit:i,orderBy:o,offset:s}}){let c=b`${e.getSQL()} `,l=b`${r.getSQL()}`,u;if(o&&o.length>0){let f=[];for(let v of o)if(W(v,Dt))f.push(b.identifier(v.name));else if(W(v,fe)){for(let w=0;w<v.queryChunks.length;w++){let k=v.queryChunks[w];if(W(k,Dt))v.queryChunks[w]=b.identifier(this.casing.getColumnCasing(k))}f.push(b`${v}`)}else f.push(b`${v}`);u=b` order by ${b.join(f,b`, `)}`}let p=typeof i==="object"||typeof i==="number"&&i>=0?b` limit ${i}`:void 0,m=b.raw(`${t} ${n?"all ":""}`),g=s?b` offset ${s}`:void 0;return b`${c}${m}${l}${u}${p}${g}`}buildInsertQuery({table:e,values:t,onConflict:n,returning:r,withList:i,select:o}){let s=[],c=e[ae.Symbol.Columns],l=Object.entries(c).filter(([v,w])=>!w.shouldDisableInsert()),u=l.map(([,v])=>b.identifier(this.casing.getColumnCasing(v)));if(o){let v=t;if(W(v,fe))s.push(v);else s.push(v.getSQL())}else{let v=t;s.push(b.raw("values "));for(let[w,k]of v.entries()){let P=[];for(let[B,j]of l){let Y=k[B];if(Y===void 0||W(Y,rr)&&Y.value===void 0){let G;if(j.default!==null&&j.default!==void 0)G=W(j.default,fe)?j.default:b.param(j.default,j);else if(j.defaultFn!==void 0){let I=j.defaultFn();G=W(I,fe)?I:b.param(I,j)}else if(!j.default&&j.onUpdateFn!==void 0){let I=j.onUpdateFn();G=W(I,fe)?I:b.param(I,j)}else G=b`null`;P.push(G)}else P.push(Y)}if(s.push(P),w<v.length-1)s.push(b`, `)}}let p=this.buildWithCTE(i),m=b.join(s),g=r?b` returning ${this.buildSelection(r,{isSingleTable:!0})}`:void 0,f=n?.length?b.join(n):void 0;return b`${p}insert into ${e} ${u} ${m}${f}${g}`}sqlToQuery(e,t){return e.toQuery({casing:this.casing,escapeName:this.escapeName,escapeParam:this.escapeParam,escapeString:this.escapeString,invokeSource:t})}buildRelationalQuery({fullSchema:e,schema:t,tableNamesMap:n,table:r,tableConfig:i,queryConfig:o,tableAlias:s,nestedQueryRelation:c,joinOn:l}){let u=[],p,m,g=[],f,v=[];if(o===!0)u=Object.entries(i.columns).map(([P,B])=>({dbKey:B.name,tsKey:P,field:Ti(B,s),relationTableTsKey:void 0,isJson:!1,selection:[]}));else{let k=Object.fromEntries(Object.entries(i.columns).map(([I,ee])=>[I,Ti(ee,s)]));if(o.where){let I=typeof o.where==="function"?o.where(k,_D()):o.where;f=I&&qu(I,s)}let P=[],B=[];if(o.columns){let I=!1;for(let[ee,he]of Object.entries(o.columns)){if(he===void 0)continue;if(ee in i.columns){if(!I&&he===!0)I=!0;B.push(ee)}}if(B.length>0)B=I?B.filter((ee)=>o.columns?.[ee]===!0):Object.keys(i.columns).filter((ee)=>!B.includes(ee))}else B=Object.keys(i.columns);for(let I of B){let ee=i.columns[I];P.push({tsKey:I,value:ee})}let j=[];if(o.with)j=Object.entries(o.with).filter((I)=>!!I[1]).map(([I,ee])=>({tsKey:I,queryConfig:ee,relation:i.relations[I]}));let Y;if(o.extras){Y=typeof o.extras==="function"?o.extras(k,{sql:b}):o.extras;for(let[I,ee]of Object.entries(Y))P.push({tsKey:I,value:tx(ee,s)})}for(let{tsKey:I,value:ee}of P)u.push({dbKey:W(ee,fe.Aliased)?ee.fieldAlias:i.columns[I].name,tsKey:I,field:W(ee,nt)?Ti(ee,s):ee,relationTableTsKey:void 0,isJson:!1,selection:[]});let G=typeof o.orderBy==="function"?o.orderBy(k,FD()):o.orderBy??[];if(!Array.isArray(G))G=[G];g=G.map((I)=>{if(W(I,nt))return Ti(I,s);return qu(I,s)}),p=o.limit,m=o.offset;for(let{tsKey:I,queryConfig:ee,relation:he}of j){let Ee=qD(t,n,he),We=ta(he.referencedTable),Ye=n[We],Ie=`${s}_${I}`,se=H(...Ee.fields.map((ie,Xe)=>A(Ti(Ee.references[Xe],Ie),Ti(ie,s)))),ue=this.buildRelationalQuery({fullSchema:e,schema:t,tableNamesMap:n,table:e[Ye],tableConfig:t[Ye],queryConfig:W(he,$o)?ee===!0?{limit:1}:{...ee,limit:1}:ee,tableAlias:Ie,joinOn:se,nestedQueryRelation:he}),Ae=b`(${ue.sql})`.as(I);u.push({dbKey:I,tsKey:I,field:Ae,relationTableTsKey:Ye,isJson:!0,selection:ue.selection})}}if(u.length===0)throw new Mc({message:`No fields selected for table "${i.tsName}" ("${s}"). You need to have at least one item in "columns", "with" or "extras". If you need to select all columns, omit the "columns" key or set it to undefined.`});let w;if(f=H(l,f),c){let k=b`json_array(${b.join(u.map(({field:j})=>W(j,Dt)?b.identifier(this.casing.getColumnCasing(j)):W(j,fe.Aliased)?j.sql:j),b`, `)})`;if(W(c,Uu))k=b`coalesce(json_group_array(${k}), json_array())`;let P=[{dbKey:"data",tsKey:"data",field:k.as("data"),isJson:!0,relationTableTsKey:i.tsName,selection:u}];if(p!==void 0||m!==void 0||g.length>0)w=this.buildSelectQuery({table:Lu(r,s),fields:{},fieldsFlat:[{path:[],field:b.raw("*")}],where:f,limit:p,offset:m,orderBy:g,setOperators:[]}),f=void 0,p=void 0,m=void 0,g=void 0;else w=Lu(r,s);w=this.buildSelectQuery({table:W(w,qt)?w:new It(w,{},s),fields:{},fieldsFlat:P.map(({field:j})=>({path:[],field:W(j,nt)?Ti(j,s):j})),joins:v,where:f,limit:p,offset:m,orderBy:g,setOperators:[]})}else w=this.buildSelectQuery({table:Lu(r,s),fields:{},fieldsFlat:u.map(({field:k})=>({path:[],field:W(k,nt)?Ti(k,s):k})),joins:v,where:f,limit:p,offset:m,orderBy:g,setOperators:[]});return{tableTsKey:i.tsName,sql:w,selection:u}}}class yx extends Nc{static[D]="SQLiteSyncDialect";migrate(e,t,n){let r=n===void 0?"__drizzle_migrations":typeof n==="string"?"__drizzle_migrations":n.migrationsTable??"__drizzle_migrations",i=b`
30
30
  CREATE TABLE IF NOT EXISTS ${b.identifier(r)} (
31
31
  id SERIAL PRIMARY KEY,
@@ -65,9 +65,9 @@ params: ${t}`);if(this.query=e,this.params=t,this.cause=n,Error.captureStackTrac
65
65
  FROM ${O}, json_each(${r}) AS j
66
66
  WHERE ${H(...n)} AND j.type = 'text') AS grouping_values`,o=await this.db.select({total:b`COUNT(DISTINCT grouping_values.value)`}).from(i);t.signal?.throwIfAborted();let s=await this.db.select({value:b`CAST(grouping_values.value AS BLOB)`,count:b`COUNT(*)`}).from(i).groupBy(b`grouping_values.value`).orderBy(b`grouping_values.value COLLATE NOCASE ASC`,b`grouping_values.value COLLATE BINARY ASC`).limit(t.limit).offset(t.offset);t.signal?.throwIfAborted();let c=new TextDecoder("utf-8",{ignoreBOM:!0});return{values:s.map((l)=>({value:c.decode(l.value),count:Number(l.count)})),total:Number(o[0]?.total??0)}}async queryGroupingMembers(e){let t=n0.parse(e);t.signal?.throwIfAborted();let{conditions:n,array:r}=this.groupingConditions(t);if(n.push(b`EXISTS (SELECT 1 FROM json_each(${r}) AS j WHERE j.type = 'text' AND j.value = ${t.value})`),t.q?.trim())n.push(a0(t.q));let i=H(...n),o=await this.db.select({total:b`COUNT(*)`}).from(O).where(i);t.signal?.throwIfAborted();let s=t.sort.startsWith("created-")?O.created:O.updated,c=t.sort.endsWith("-asc")?Ue(s):wt(s),l=await this.db.select({...jc(O),id:b`CAST(${O.id} AS BLOB)`}).from(O).where(i).orderBy(c,Ue(O.entityType),Ue(O.id)).limit(t.limit).offset(t.offset);t.signal?.throwIfAborted();let u=new TextDecoder("utf-8",{ignoreBOM:!0}),p=[];for(let m of l){t.signal?.throwIfAborted();let g=await this.serializer.convertToEntity(sa({...m,id:u.decode(m.id)}));if(g)p.push(g)}return t.signal?.throwIfAborted(),{entities:p,total:Number(o[0]?.total??0)}}async queryGroupingUsage(e){let t=Cf.parse(e);t.signal?.throwIfAborted();let{conditions:n,array:r}=this.groupingConditions(t);n.push(b`EXISTS (SELECT 1 FROM json_each(${r}) AS j WHERE j.type = 'text')`);let i={entries:b`COUNT(*)`};for(let[s,c]of t.values.entries())i[`value_${s}`]=b`COALESCE(SUM(CASE WHEN EXISTS (
67
67
  SELECT 1 FROM json_each(${r}) AS j WHERE j.type = 'text' AND j.value = ${c}
68
- ) THEN 1 ELSE 0 END), 0)`;let[o]=await this.db.select(i).from(O).where(H(...n));return t.signal?.throwIfAborted(),{entries:Number(o?.entries??0),values:t.values.map((s,c)=>({value:s,count:Number(o?.[`value_${c}`]??0)}))}}groupingConditions(e){let t=this.entityRegistry.getGrouping(e.grouping),n=new Set(e.entityTypes),r=t.types.filter((c)=>n.has(c)),i=[Ke(O.entityType,r),Ke(O.visibility,vi(e.visibilityScope??"public"))],o=`$.${t.field}`,s=b`CASE WHEN json_type(${O.metadata}, ${o}) = 'array' THEN json_extract(${O.metadata}, ${o}) ELSE '[]' END`;return{conditions:i,array:s}}async queryEntityHierarchy(e){let t=_3.parse(e),{entityType:n,filter:r,limit:i,offset:o,signal:s,sortFields:c}=t,l=t.prefix??null;s?.throwIfAborted();let u=s0(O.id,l),p=this.buildWhereConditions(n,void 0,r?.metadata,t.visibilityScope,void 0,r?.contentContains,r?.visibility);p.push(u.withinPrefix);let m=t.includeDescendants?[]:await this.db.select({name:u.childName,count:b`COUNT(*)`}).from(O).where(H(...p,Xm(u.directChild))).groupBy(u.childName).orderBy(Ue(u.childName)).limit(Hx+1);if(s?.throwIfAborted(),m.length>Hx)throw Error(`Entity hierarchy exceeds ${Hx} immediate folders`);let g=H(...p,...t.includeDescendants?[]:[u.directChild]),f=await this.db.select({count:b`COUNT(*)`}).from(O).where(g);s?.throwIfAborted();let v=await this.db.select({...jc(O),id:b`CAST(${O.id} AS BLOB)`}).from(O).where(g).orderBy(...this.buildOrderByClauses(c??[{field:"id",direction:"asc"}]),Ue(O.id)).limit(i).offset(o);s?.throwIfAborted();let w=new TextDecoder("utf-8",{ignoreBOM:!0}),k=await this.serializer.convertToEntities(v.map((P)=>sa({...P,id:w.decode(P.id)})),n);return s?.throwIfAborted(),{prefix:l,folders:m.map((P)=>{let B=w.decode(P.name);return{path:l?[l[0],...l.slice(1),B]:[B],name:B,descendantCount:Number(P.count)}}),entities:k.map((P)=>({entity:P,path:Jx(P.id)})),offset:o,totalEntities:Number(f[0]?.count??0)}}buildWhereConditions(e,t,n,r,i,o,s){let c=[A(O.entityType,e)];if(t)c.push(Lc(i));let l=r??"public";if(l!=="restricted")c.push(Ke(O.visibility,vi(l)));if(s)c.push(A(O.visibility,s));if(o?.trim())c.push(a0(o));if(n){for(let[u,p]of Object.entries(n))if(p!==void 0){let m=`$.${u}`;c.push(b`json_extract(${O.metadata}, ${m}) = ${p}`)}}return c}buildOrderByClauses(e){if(!e||e.length===0)return[wt(O.updated)];return e.flatMap(({field:t,direction:n,nullsFirst:r,nullsLast:i})=>{let o=n==="desc"?wt:Ue;if(t==="id")return[o(O.id)];if(t==="created"){let c=O.created;if(r)return[Ue(eo(c)),o(c)];return[o(c)]}if(t==="updated"){let c=O.updated;if(r)return[Ue(eo(c)),o(c)];return[o(c)]}let s=b`json_extract(${O.metadata}, '$.' || ${t})`;if(r)return[Ue(eo(s)),o(s)];if(i)return[wt(eo(s)),o(s)];return[o(s)]})}async countEntities(e,t={},n){let r=Ef.parse(t),i=this.buildWhereConditions(e,r.publishedOnly,r.filter?.metadata,r.filter?.visibilityScope,n,r.filter?.contentContains,r.filter?.visibility),o=await this.db.select({count:b`COUNT(*)`}).from(O).where(H(...i));return Number(o[0]?.count??0)}async getEntityCounts(e){this.logger.debug("Getting entity counts by type");let t=e??"public",n=[];if(t!=="restricted")n.push(Ke(O.visibility,vi(t)));let r=this.db.select({entityType:O.entityType,count:b`COUNT(*)`.as("count")}).from(O),i=await(n.length>0?r.where(H(...n)).groupBy(O.entityType):r.groupBy(O.entityType));return this.logger.debug(`Found ${i.length} entity types`),i.map((o)=>({entityType:o.entityType,count:Number(o.count)}))}async entityExists(e,t){return(await this.db.select({id:O.id}).from(O).where(H(A(O.entityType,e),A(O.id,t))).limit(1)).length>0}async deleteEntity(e,t){if(this.logger.debug(`Deleting entity of type ${e} with ID ${t}`),!await this.entityExists(e,t))return this.logger.debug(`Entity of type ${e} with ID ${t} not found for deletion`),!1;return await this.embeddingDb.delete(Gt).where(H(A(Gt.entityType,e),A(Gt.entityId,t))),await this.db.run(b`DELETE FROM entity_fts WHERE entity_id = ${t} AND entity_type = ${e}`),await this.db.delete(O).where(H(A(O.entityType,e),A(O.id,t))),this.logger.debug(`Deleted entity of type ${e} with ID ${t}`),!0}}var ro=a.strictObject({namespace:a.string().min(1).max(200),key:a.string().min(1).max(500)}),If=a.union([a.strictObject({operation:a.literal("none")}),a.strictObject({operation:a.enum(["create","update"]),entityType:a.string().min(1),entityId:a.string().min(1)})]);class Yu extends Error{receipt;constructor(e){super("Entity mutation already applied");this.receipt=e,this.name="EntityMutationAlreadyAppliedError"}}class Vx{db;constructor(e){this.db=e}async get(e,t=this.db){let n=ro.parse(e),r=await t.select().from(Wo).where(H(A(Wo.namespace,n.namespace),A(Wo.key,n.key))).limit(1);return r[0]?If.parse(r[0].result):null}async assertVacant(e,t){let n=await this.get(t,e);if(n)throw new Yu(n)}async record(e,t,n){let r=ro.parse(t);await e.insert(Wo).values({...r,result:If.parse(n),recordedAt:Date.now()})}async completeWithoutWrite(e){let t=ro.parse(e);await this.db.insert(Wo).values({...t,result:{operation:"none"},recordedAt:Date.now()}).onConflictDoNothing();let n=await this.get(t);if(!n)throw Error("Missing committed entity mutation receipt");return n}}function c0(e){return{...e,entity:structuredClone(e.entity),...e.options&&{options:{...e.options,...e.options.conditionalWrite&&{conditionalWrite:{...e.options.conditionalWrite}},...e.options.eventContext&&{eventContext:structuredClone(e.options.eventContext)}}}}}function Rf(e){let t=ro.parse(e.receipt);switch(e.operation){case"none":return{operation:"none",receipt:t};case"create":return{operation:"create",receipt:t,request:c0(e.request)};case"update":return{operation:"update",receipt:t,request:c0(e.request)};default:throw Error("Invalid once-only entity operation")}}import{webcrypto as u0}from"crypto";var l0="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var F3=128,Jo,Zc;function L3(e){if(e<0)throw RangeError("Wrong ID size");try{if(!Jo||Jo.length<e)Jo=Buffer.allocUnsafe(e*F3),u0.getRandomValues(Jo),Zc=0;else if(Zc+e>Jo.length)u0.getRandomValues(Jo),Zc=0}catch(t){throw Jo=void 0,t}Zc+=e}function Qx(e=21){L3(e|=0);let t="";for(let n=Zc-e;n<Zc;n++)t+=l0[Jo[n]&63];return t}function it(e=12){return Qx(e)}function Zge(e){return`${e}_${Qx(12)}`}var q3=a.object({id:a.string().min(1),entityType:a.string().min(1),contentHash:a.string().min(1)});function Z3(e){try{let t=q3.parse(JSON.parse(e.data));return{entityId:t.id,entityType:t.entityType,contentHash:t.contentHash}}catch{return null}}function p0(e){return`${e.entityType}:${e.entityId}:${e.contentHash}`}class Kx{entityDb;embeddingDb;entityRegistry;jobQueueService;logger;embeddingsEnabled;constructor(e){this.entityDb=e.entityDb,this.embeddingDb=e.embeddingDb,this.entityRegistry=e.entityRegistry,this.jobQueueService=e.jobQueueService,this.logger=e.logger,this.embeddingsEnabled=e.embeddingsEnabled}async deleteEmbedding(e,t){await this.embeddingDb.delete(Gt).where(H(A(Gt.entityType,e),A(Gt.entityId,t)))}async store(e){await this.embeddingDb.insert(Gt).values({entityId:e.entityId,entityType:e.entityType,embedding:e.embedding,contentHash:e.contentHash}).onConflictDoUpdate({target:[Gt.entityId,Gt.entityType],set:{embedding:e.embedding,contentHash:e.contentHash}})}async backfillMissing(){if(!this.embeddingsEnabled)return this.logger.debug("Skipping embedding backfill; semantic indexing is disabled"),{queued:0,skipped:0};let e=await this.getBackfillCandidates();if(e.tableMissing)return this.logger.debug("Skipping embedding backfill; entities table missing"),{queued:0,skipped:0};let t=0,n=e.skipped;for(let r of e.rowsToBackfill)if((await this.enqueue({entityId:r.id,entityType:r.entityType,contentHash:r.contentHash,operation:"update"})).jobId)t++;else n++;return{queued:t,skipped:n}}async getIndexStats(){let e=await this.getBackfillCandidates();return{missingEmbeddings:e.missingEmbeddings,staleEmbeddings:e.staleEmbeddings,failedEmbeddings:e.failedEmbeddings,embeddableEntities:e.embeddableEntities,embeddedEntities:e.embeddedEntities}}async enqueue(e){let{entityId:t,entityType:n,contentHash:r,operation:i,priority:o,maxRetries:s,eventContext:c}=e,l=this.entityRegistry.getEntityTypeConfig(n);if(!this.embeddingsEnabled||l.embeddable===!1)return this.logger.debug(`Skipping embedding for ${this.embeddingsEnabled?"non-embeddable entity type":"disabled indexing"}: ${n}:${t}`),{entityId:t,jobId:"",skipped:!1};let u={id:t,entityType:n,contentHash:r,operation:i},p=await this.jobQueueService.enqueue({type:sr.embedding,data:u,options:{...o!==void 0&&{priority:o},...s!==void 0&&{maxRetries:s},source:"entity-service",deduplication:"coalesce",deduplicationKey:`embedding:${n}:${t}:${r}`,metadata:{operationType:"data_processing",operationTarget:t,...c?.interfaceType?{interfaceType:c.interfaceType,requestedByInterface:c.interfaceType}:{},...c?.actor?{requestedByActor:c.actor,...c.actor.kind==="user"?{requestedByUserId:c.actor.userId}:{}}:{},silent:!0}}});return this.logger.debug(`Queued embedding job for ${n}:${t} (job: ${p})`),{entityId:t,jobId:p,skipped:!1}}async getBackfillCandidates(){if(!await this.hasEntityTable())return{tableMissing:!0,skipped:0,rowsToBackfill:[],missingEmbeddings:0,staleEmbeddings:0,failedEmbeddings:0,embeddableEntities:0,embeddedEntities:0};let e=await this.getFailedEmbeddingKeys(),t=await this.entityDb.select({id:O.id,entityType:O.entityType,contentHash:O.contentHash}).from(O),n=await this.embeddingDb.select({entityId:Gt.entityId,entityType:Gt.entityType,contentHash:Gt.contentHash}).from(Gt),r=new Map;for(let m of n)r.set(`${m.entityType}:${m.entityId}`,m.contentHash);let i=[],o=0,s=0,c=0,l=0,u=0,p=0;for(let m of t){if(this.entityRegistry.getEntityTypeConfig(m.entityType).embeddable===!1){o++;continue}u++;let f=p0({entityId:m.id,entityType:m.entityType,contentHash:m.contentHash}),v=e.has(f),w=r.get(`${m.entityType}:${m.id}`);if(w===void 0){if(v)l++,o++;else s++,i.push(m);continue}if(w!==m.contentHash){if(v)l++,o++;else c++,i.push(m);continue}p++,o++}return{tableMissing:!1,skipped:o,rowsToBackfill:i,missingEmbeddings:s,staleEmbeddings:c,failedEmbeddings:l,embeddableEntities:u,embeddedEntities:p}}async getFailedEmbeddingKeys(){let e=await this.jobQueueService.getFailedJobs([sr.embedding]),t=new Set;for(let n of e){let r=Z3(n);if(r)t.add(p0(r))}return t}async hasEntityTable(){return(await this.entityDb.all(b`SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'entities'`)).length>0}}var kf=a.object({expectedRevision:a.string().min(1).nullable()});class ar extends Error{constructor(e,t){super(`Entity write conflict: ${e}/${t}`);this.name="EntityWriteConflictError"}}async function Pf(e,t,n){if(n.entityType!==t.entityType||n.id!==t.entityId)throw Error("Entity validation changed the conditional write destination");let i=(await e.select().from(O).where(H(A(O.entityType,t.entityType),A(O.id,t.entityId))).limit(1))[0];if((i?ir(sa(i)):null)!==t.expectedRevision)throw new ar(t.entityType,t.entityId)}async function Af(e,t,n){try{await e.getPersistValidator(t.entityType)?.(t,{operation:n})}catch(r){if(VO(r))throw r;throw Pc(t.entityType,r,"persist")??r}}function $3(e){for(let t=e;t instanceof Error;t=t.cause)if(t.message.includes("UNIQUE constraint failed")||t.message.includes("SQLITE_CONSTRAINT"))return!0;return!1}class Xu extends Error{}var U3=a.strictObject({entityType:a.string().min(1),id:a.string().min(1),expectedRevision:a.string().min(1)});class Yx{db;mutationReceipts;entityRegistry;entitySerializer;entityQueries;messageBus;mutationAdmission;projectionStore;assetRepository;entityExportStore;projectionNow;embeddingIndex;projectionWakeup;logger;constructor(e){if(this.db=e.db,this.mutationReceipts=new Vx(e.db),this.entityRegistry=e.entityRegistry,this.entitySerializer=e.entitySerializer,this.entityQueries=e.entityQueries,this.projectionStore=e.projectionStore,this.assetRepository=e.assetRepository,this.entityExportStore=e.entityExportStore,this.projectionNow=e.projectionNow,this.logger=e.logger.child("EntityMutations"),this.embeddingIndex=new Kx({entityDb:e.db,embeddingDb:e.embeddingDb,entityRegistry:e.entityRegistry,jobQueueService:e.jobQueueService,logger:this.logger,embeddingsEnabled:e.embeddingsEnabled}),e.messageBus)this.messageBus=e.messageBus;if(e.mutationAdmission)this.mutationAdmission=e.mutationAdmission}setProjectionWakeup(e){this.projectionWakeup=e;let t=!0;return()=>{if(!t)return;if(t=!1,this.projectionWakeup===e)this.projectionWakeup=void 0}}getEntityMutationReceipt(e){return this.mutationReceipts.get(e)}async applyEntityMutationOnce(e){let t=Rf(e),n=t.receipt,r=await this.mutationReceipts.get(n);if(r)return{receipt:r,applied:!1};if(t.operation==="none")return{receipt:await this.mutationReceipts.completeWithoutWrite(n),applied:!1};try{let i=t.operation==="create"?await this.writeCreatedEntity(t.request,n):await this.writeUpdatedEntity(t.request,void 0,n);if(i.skipReason==="content-conflict")throw new ar(t.request.entity.entityType,i.entityId);let o=await this.mutationReceipts.get(n);if(!o)throw Error("Missing committed entity mutation receipt");return{receipt:o,applied:!0}}catch(i){if(i instanceof Yu)return{receipt:i.receipt,applied:!1};throw i}}createEntity(e){return this.writeCreatedEntity(e)}async writeCreatedEntity(e,t){let{entity:n,options:r,preparedAsset:i}=e;r?.signal?.throwIfAborted();let o=r?.conditionalWrite&&kf.parse(r.conditionalWrite);if(o&&(o.expectedRevision!==null||r.deduplicateId||!n.id))throw Error("Conditional creation requires an explicit ID, an absent precondition, and no deduplication");let s=o?{...o,entityType:n.entityType,entityId:n.id??""}:void 0;this.logger.debug(`Creating entity asynchronously of type: ${n.entityType}`);let c=this.entityRegistry.captureGroupingWriteGuard(n.entityType),l=new Date().toISOString(),u={...n,id:n.id??it(),created:n.created??l,updated:n.updated??l,contentHash:Ei(n.content)},p=this.entityRegistry.validateEntity(n.entityType,u);await Af(this.entityRegistry,p,"create"),r?.signal?.throwIfAborted();let{markdown:m,metadata:g}=this.entitySerializer.prepareEntityForStorage(p,p.entityType),f=Ei(m),v=this.stageAsset(p.entityType,p.content,m,i),w=p.id;if(r?.deduplicateId)w=await this.resolveUniqueId(p.id,p.entityType);return await this.mutationAdmission?.assertMutationAdmission({operation:"create",entityType:p.entityType,entityId:w}),await this.projectionStore.withDirtyInput({sourceType:p.entityType,sourceId:w,revision:ir({contentHash:f,metadata:g,visibility:p.visibility}),operation:"upsert",markedAt:this.projectionNow()},async(k)=>{if(t)await this.mutationReceipts.assertVacant(k,t);if(s)await Pf(k,s,p);if(await this.bindAssetContent(k,p.entityType,m,v),await r?.beforeWrite?.({...p,id:w,content:m,contentHash:f,metadata:g}),r?.signal?.throwIfAborted(),await c(),r?.signal?.throwIfAborted(),await k.insert(O).values({id:w,entityType:p.entityType,content:m,contentHash:f,visibility:p.visibility,metadata:g,created:new Date(p.created).getTime(),updated:new Date(p.updated).getTime()}),await this.syncFtsIndex(k,w,p.entityType,m),await this.persistEntityExport(k,{entityType:p.entityType,entityId:w,operation:"upsert"},r?.persistenceOrigin),t)await this.mutationReceipts.record(k,t,{operation:"create",entityType:p.entityType,entityId:w})}),await this.notifyProjectionScheduler(),this.logger.debug(`Persisted entity ${p.entityType}:${w} immediately`),await this.emitEntityEvent(Ri.created,p.entityType,w,{...p,id:w},void 0,r?.eventContext),this.embeddingIndex.enqueue({entityId:w,entityType:p.entityType,contentHash:f,operation:"create",...r?.priority!==void 0&&{priority:r.priority},...r?.maxRetries!==void 0&&{maxRetries:r.maxRetries},...r?.eventContext&&{eventContext:r.eventContext}})}updateEntity(e){return this.writeUpdatedEntity(e)}async foldEntity(e){let t=U3.parse(e.source),n=a.string().min(1).parse(e.targetRevision),r=structuredClone(e.entity),i={...e.options};if(t.entityType!==r.entityType||t.id===r.id)throw Error("A fold requires two distinct entities of the same type");i.signal?.throwIfAborted();let o=await this.entityQueries.getEntityData(t.entityType,t.id,"restricted");if(!o||ir(o)!==t.expectedRevision)throw new ar(t.entityType,t.id);let s=await this.entitySerializer.convertToEntity(o);if(s?.visibility!==r.visibility)throw Error("A fold cannot cross visibility scopes");return await this.mutationAdmission?.assertMutationAdmission({operation:"delete",entityType:t.entityType,entityId:t.id}),this.writeUpdatedEntity({entity:r,options:{...i,conditionalWrite:{expectedRevision:n}}},{condition:{entityType:t.entityType,entityId:t.id,expectedRevision:t.expectedRevision},prior:s})}async writeUpdatedEntity(e,t,n){let{entity:r,options:i,preparedAsset:o}=e;i?.signal?.throwIfAborted();let s=i?.conditionalWrite&&kf.parse(i.conditionalWrite);if(s&&(s.expectedRevision===null||i.expectedContentHash!==void 0))throw Error("Conditional replacement requires a revision and cannot combine preconditions");let c=s?{...s,entityType:r.entityType,entityId:r.id}:void 0;this.logger.debug(`Updating entity asynchronously: ${r.entityType} with ID ${r.id}`);let l=this.entityRegistry.captureGroupingWriteGuard(r.entityType),u={...r,updated:new Date().toISOString(),contentHash:Ei(r.content)},p=this.entityRegistry.validateEntity(r.entityType,u);await Af(this.entityRegistry,p,"update"),i?.signal?.throwIfAborted();let{markdown:m,metadata:g}=this.entitySerializer.prepareEntityForStorage(p,p.entityType),f=Ei(m),w=(await this.db.select({contentHash:O.contentHash,visibility:O.visibility,metadata:O.metadata}).from(O).where(H(A(O.id,p.id),A(O.entityType,p.entityType))).limit(1)).at(0);if(!w){if(c)throw new ar(c.entityType,c.entityId);throw Error(`Entity not found: ${p.entityType}:${p.id}`)}if(i?.expectedContentHash!==void 0&&w.contentHash!==i.expectedContentHash)return this.logger.debug(`Skipping stale update for ${p.entityType}:${p.id}`),{entityId:p.id,jobId:"",skipped:!0,skipReason:"content-conflict"};if(t&&(p.visibility!==t.prior.visibility||w.visibility!==t.prior.visibility))throw new ar(p.entityType,p.id);let k=this.stageAsset(p.entityType,p.content,m,o);if(!c&&!n&&w.contentHash===f&&w.visibility===p.visibility&&ia(w.metadata)===ia(g)){if(await this.projectionStore.transferEntityAuthority({entityType:p.entityType,id:p.id},async(P)=>(i?.signal?.throwIfAborted(),await l(),await this.bindAssetContent(P,p.entityType,m,k),i?.signal?.throwIfAborted(),await this.pruneFtsIndexIfExcluded(P,p.id,p.entityType),this.persistEntityExport(P,{entityType:p.entityType,entityId:p.id,operation:"upsert"},i?.persistenceOrigin))),this.logger.debug(`Skipping no-op update for ${p.entityType}:${p.id}`),i?.eventContext)await this.emitEntityEvent(Ri.updated,p.entityType,p.id,p,w.metadata,i.eventContext);return{entityId:p.id,jobId:"",skipped:!0}}await this.mutationAdmission?.assertMutationAdmission({operation:"update",entityType:p.entityType,entityId:p.id});try{await this.projectionStore.withDirtyInputs([{sourceType:p.entityType,sourceId:p.id,revision:ir({contentHash:f,metadata:g,visibility:p.visibility}),operation:"upsert",markedAt:this.projectionNow()},...t?[{sourceType:t.condition.entityType,sourceId:t.condition.entityId,revision:`deleted:${t.condition.expectedRevision}`,operation:"delete",markedAt:this.projectionNow()}]:[]],async(P)=>{if(n)await this.mutationReceipts.assertVacant(P,n);if(t)await Pf(P,t.condition,t.prior);if(c)await Pf(P,c,p);await this.bindAssetContent(P,p.entityType,m,k),await i?.beforeWrite?.({...p,content:m,contentHash:f,metadata:g}),i?.signal?.throwIfAborted(),await l(),i?.signal?.throwIfAborted();let B=await P.update(O).set({content:m,contentHash:f,visibility:p.visibility,metadata:g,updated:new Date(p.updated).getTime()}).where(H(A(O.id,p.id),A(O.entityType,p.entityType),i?.expectedContentHash!==void 0?A(O.contentHash,i.expectedContentHash):void 0));if((s||i?.expectedContentHash!==void 0)&&Number(B.rowsAffected)===0){if(c)throw new ar(c.entityType,c.entityId);throw new Xu}if(t)await P.delete(O).where(H(A(O.entityType,t.prior.entityType),A(O.id,t.prior.id))),await this.deleteFtsIndex(P,t.prior.id,t.prior.entityType),await this.persistEntityExport(P,{entityType:t.prior.entityType,entityId:t.prior.id,operation:"delete"},i?.persistenceOrigin);if(await this.syncFtsIndex(P,p.id,p.entityType,m),await this.persistEntityExport(P,{entityType:p.entityType,entityId:p.id,operation:"upsert"},i?.persistenceOrigin),n)await this.mutationReceipts.record(P,n,{operation:"update",entityType:p.entityType,entityId:p.id})})}catch(P){if(!(P instanceof Xu))throw P;return this.logger.debug(`Skipping concurrently stale update for ${p.entityType}:${p.id}`),{entityId:p.id,jobId:"",skipped:!0,skipReason:"content-conflict"}}if(t)await this.embeddingIndex.deleteEmbedding(t.prior.entityType,t.prior.id);if(await this.notifyProjectionScheduler(),t)await this.emitEntityEvent(Ri.deleted,t.prior.entityType,t.prior.id,t.prior,void 0,i?.eventContext);return this.logger.debug(`Updated entity ${p.entityType}:${p.id} immediately`),await this.emitEntityEvent(Ri.updated,p.entityType,p.id,p,w.metadata,i?.eventContext),this.embeddingIndex.enqueue({entityId:p.id,entityType:p.entityType,contentHash:f,operation:"update",...i?.priority!==void 0&&{priority:i.priority},...i?.maxRetries!==void 0&&{maxRetries:i.maxRetries},...i?.eventContext&&{eventContext:i.eventContext}})}async deleteEntity(e){let{entityType:t,id:n,options:r}=e,i=await this.entityQueries.getEntityData(t,n,"restricted"),o=i?await this.entitySerializer.convertToEntity(i)??void 0:void 0;if(i)await this.mutationAdmission?.assertMutationAdmission({operation:"delete",entityType:t,entityId:n});if(!i)return!1;let s=r?.expectedContentHash;if(s!==void 0&&i.contentHash!==s)return!1;await this.embeddingIndex.deleteEmbedding(t,n);try{await this.projectionStore.withDirtyInput({sourceType:t,sourceId:n,revision:`deleted:${ir({contentHash:i.contentHash,metadata:i.metadata,visibility:i.visibility})}`,operation:"delete",markedAt:this.projectionNow()},async(c)=>{let l=await c.delete(O).where(H(A(O.entityType,t),A(O.id,n),s!==void 0?A(O.contentHash,s):void 0));if(s!==void 0&&Number(l.rowsAffected)===0)throw new Xu;await c.run(b`DELETE FROM entity_fts WHERE entity_id = ${n} AND entity_type = ${t}`),await this.persistEntityExport(c,{entityType:t,entityId:n,operation:"delete"},r?.persistenceOrigin)})}catch(c){if(!(c instanceof Xu))throw c;return this.logger.debug(`Skipping concurrently stale delete for ${t}:${n}`),!1}return await this.notifyProjectionScheduler(),await this.emitEntityEvent(Ri.deleted,t,n,o,void 0,r?.eventContext),!0}async upsertEntity(e){let{entity:t,options:n,preparedAsset:r}=e;if(this.logger.debug(`Upserting entity of type ${t.entityType} with ID ${t.id}`),n?.conditionalWrite){let o=n.conditionalWrite.expectedRevision===null;return{...o?await this.createEntity({entity:t,options:n,preparedAsset:r}):await this.updateEntity({entity:t,options:n,preparedAsset:r}),created:o}}if(await this.entityQueries.entityExists(t.entityType,t.id))return{...await this.updateEntity({entity:t,...r!==void 0&&{preparedAsset:r},...n!==void 0&&{options:n}}),created:!1};try{return{...await this.createEntity({entity:t,...r!==void 0&&{preparedAsset:r},...n!==void 0&&{options:n}}),created:!0}}catch(o){if(!$3(o))throw o;return this.logger.debug(`Entity ${t.entityType}:${t.id} was created concurrently, updating instead`),{...await this.updateEntity({entity:t,...r!==void 0&&{preparedAsset:r},...n!==void 0&&{options:n}}),created:!1}}}async reconcileProjectionTargets(e){await Promise.all(e.map(async(t)=>{if(t.operation==="delete"){await this.emitEntityEvent(Ri.deleted,t.entityType,t.entityId),await this.embeddingIndex.deleteEmbedding(t.entityType,t.entityId);return}if(!t.contentHash)throw Error(`Projection target ${t.entityType}:${t.entityId} has no content hash`);await this.emitEntityEvent(Ri.updated,t.entityType,t.entityId),await this.embeddingIndex.enqueue({entityId:t.entityId,entityType:t.entityType,contentHash:t.contentHash,operation:"update"})}))}async storeEmbedding(e){await this.embeddingIndex.store(e)}async backfillMissingEmbeddings(){return this.embeddingIndex.backfillMissing()}async getEmbeddingIndexStats(){return this.embeddingIndex.getIndexStats()}stageAsset(e,t,n,r){let i=this.entityRegistry.getEntityTypeConfig(e).binaryStorage==="asset";if(!r)return;if(!i)throw Error(`Entity type ${e} is not registered for asset-backed storage`);if(t!==r.ref||n!==r.ref)throw Error(`Prepared asset ${r.ref} does not match canonical ${e} content`);return this.assetRepository.stage(r)}async bindAssetContent(e,t,n,r){if(this.entityRegistry.getEntityTypeConfig(t).binaryStorage!=="asset")return;await this.assetRepository.bindEntityContent(e,n,r)}async syncFtsIndex(e,t,n,r){if(await this.deleteFtsIndex(e,t,n),!this.isFullTextSearchable(n))return;await e.run(b`INSERT INTO entity_fts (entity_id, entity_type, content) VALUES (${t}, ${n}, ${r})`)}async pruneFtsIndexIfExcluded(e,t,n){if(this.isFullTextSearchable(n))return;await this.deleteFtsIndex(e,t,n)}async deleteFtsIndex(e,t,n){await e.run(b`DELETE FROM entity_fts WHERE entity_id = ${t} AND entity_type = ${n}`)}isFullTextSearchable(e){return this.entityRegistry.getEntityTypeConfig(e).fullTextSearchable!==!1}async resolveUniqueId(e,t){if(!await this.entityQueries.entityExists(t,e))return e;for(let i=2;i<=100;i++){let o=`${e}-${i}`;if(!await this.entityQueries.entityExists(t,o))return this.logger.debug(`Deduplicated entity ID: ${e} \u2192 ${o}`),o}let r=`${e}-${it().slice(0,8)}`;return this.logger.warn(`Could not deduplicate entity ID after 100 attempts, using random suffix: ${r}`),r}async wakeProjectionScheduler(){await this.notifyProjectionScheduler()}async notifyProjectionScheduler(){try{await this.projectionWakeup?.()}catch(e){this.logger.error("Failed to wake projection scheduler",e)}}async emitEntityEvent(e,t,n,r,i,o){if(!this.messageBus)return;this.logger.debug(`Emitting ${e} for ${t}:${n}`);let s={entityType:t,entityId:n,...o?.conversationId?{conversationId:o.conversationId}:{},...o?.channelId?{channelId:o.channelId}:{},...o?.runId?{runId:o.runId}:{},...o?.toolCallId?{toolCallId:o.toolCallId}:{},...o?.actor?{actor:o.actor}:{},...o?.interfaceType?{interfaceType:o.interfaceType}:{}};if(r)s.entity=r;if(i)s.previousMetadata=i;try{await this.messageBus.send({type:e,payload:s,sender:"entity-service",broadcast:!0})}catch(c){this.logger.error(`Failed to publish ${e} for ${t}:${n}`,c)}}async persistEntityExport(e,t,n){if(n==="directory-sync"){await this.entityExportStore.clear(e,t);return}await this.entityExportStore.record(e,{...t,markedAt:this.projectionNow()})}}class ep{db;now;constructor(e,t=Date.now){this.db=e,this.now=t}async record(e,t){await this.upsert(e,t)}async clear(e,t){await e.delete(Ht).where(H(A(Ht.entityType,t.entityType),A(Ht.entityId,t.entityId)))}list(){return this.db.select().from(Ht).orderBy(Ue(Ht.markedAt),Ue(Ht.entityType),Ue(Ht.entityId))}async hasPending(){return(await this.db.select({entityId:Ht.entityId}).from(Ht).limit(1)).length>0}async acknowledge(e){if(e.length===0)return 0;let t=e.map((r)=>H(A(Ht.entityType,r.entityType),A(Ht.entityId,r.entityId),A(Ht.revision,r.revision))),n=await this.db.transaction(async(r)=>r.delete(Ht).where(cn(...t)));return Number(n.rowsAffected)}async upsert(e,t){let n={entityType:t.entityType,entityId:t.entityId,operation:t.operation,revision:it(),markedAt:t.markedAt??this.now()};await e.insert(Ht).values(n).onConflictDoUpdate({target:[Ht.entityType,Ht.entityId],set:{operation:n.operation,revision:n.revision,markedAt:n.markedAt}})}}import{AsyncLocalStorage as V3}from"async_hooks";var W3=a.strictObject({source:a.string().trim().min(1).max(100),operationId:a.string().trim().min(1).max(200)}),J3=a.strictObject({source:a.string().trim().min(1).max(100),operationId:a.string().trim().min(1).max(200),rootJobId:a.string().trim().min(1).max(200),expectedChildren:a.number().int().positive().max(1e4)}),H3=a.strictObject({source:a.string().trim().min(1).max(100),operationId:a.string().trim().min(1).max(200),rootJobId:a.string().trim().min(1).max(200),expectedChildren:a.number().int().positive().max(1e4),childKey:a.string().trim().min(1).max(200),jobId:a.string().trim().min(1).max(200)}),G3=a.strictObject({operationId:a.string().trim().min(1).max(200),childKey:a.string().trim().min(1).max(200),jobId:a.string().trim().min(1).max(200),outcome:a.enum(["completed","failed"])});function d0(e){return W3.parse(e)}function m0(e){return J3.parse(e)}function f0(e){return H3.parse(e)}function g0(e){return G3.parse(e)}var Bt=ot("projection_admission_state",{id:xe("id").primaryKey(),epoch:xe("epoch").notNull().default(0)}),re=ot("projection_batches",{id:V("id").primaryKey(),source:V("source").notNull(),operationId:V("operation_id").notNull(),status:V("status",{enum:["preparing","open","closed","abandoned"]}).notNull(),ownerKind:V("owner_kind",{enum:["callback","job-root"]}).notNull(),ownerToken:V("owner_token").notNull(),rootJobId:V("root_job_id"),expectedChildren:xe("expected_children").notNull().default(0),enqueueComplete:xe("enqueue_complete").notNull().default(0),enqueueFailed:xe("enqueue_failed").notNull().default(0),openedAt:xe("opened_at").notNull(),lastProgressAt:xe("last_progress_at").notNull(),leaseExpiresAt:xe("lease_expires_at"),terminalAt:xe("terminal_at"),recoveredAt:xe("recovered_at"),firstGeneration:xe("first_generation"),highestGeneration:xe("highest_generation"),mutationCount:xe("mutation_count").notNull().default(0),recoveryGeneration:xe("recovery_generation")},(e)=>({operationIdx:fx("projection_batches_operation_idx").on(e.source,e.operationId),admissionIdx:ut("projection_batches_admission_idx").on(e.status,e.openedAt),rootJobIdx:ut("projection_batches_root_job_idx").on(e.rootJobId),recoveryIdx:ut("projection_batches_recovery_idx").on(e.recoveredAt,e.recoveryGeneration)})),Mt=ot("projection_batch_children",{batchId:V("batch_id").notNull().references(()=>re.id,{onDelete:"cascade"}),childKey:V("child_key").notNull(),jobId:V("job_id"),status:V("status",{enum:["expected","active","completed","failed","missing"]}).notNull().default("expected"),terminalAt:xe("terminal_at")},(e)=>({pk:Dn({columns:[e.batchId,e.childKey]}),jobIdx:fx("projection_batch_children_job_idx").on(e.jobId),statusIdx:ut("projection_batch_children_status_idx").on(e.batchId,e.status)}));var Q3=5000,h0=30000,Of=30000,K3=1e4;class io extends Error{}class Xx{db;transactions;now;readRecoveryGeneration;batchScope=new V3;constructor(e){this.db=e.db,this.transactions=e.transactions,this.now=e.now,this.readRecoveryGeneration=e.getRecoveryGeneration}runFreshBatchScope(e){return this.batchScope.run(void 0,e)}assertBatchIdentity(e,t){if(e.source!==t.source||e.operationId!==t.operationId)throw new io(`Projection batch "${t.operationId}" cannot join active batch "${e.operationId}"`)}async runBulkMutation(e,t){let n=d0(e),r=this.batchScope.getStore();if(r)return this.assertBatchIdentity(r,n),t();let i=await this.openCallbackBatch(n),o=setInterval(()=>{this.renewCallbackBatch(i).catch(()=>{})},K3);o.unref();try{return await this.batchScope.run(i,t)}finally{clearInterval(o),await this.closeCallbackBatch(i)}}async prepareDurableBulkMutation(e){let t=m0(e),n=this.now();await this.runTransaction(async(r)=>{let o=(await r.select().from(re).where(H(A(re.source,t.source),A(re.operationId,t.operationId))).limit(1))[0];if(o){if((o.status==="preparing"||o.status==="open")&&o.rootJobId===t.rootJobId&&o.expectedChildren===t.expectedChildren)return;throw new io(`Durable projection batch "${t.operationId}" cannot be prepared`)}await r.insert(Bt).values({id:1,epoch:0}).onConflictDoNothing({target:Bt.id}),await r.update(Bt).set({epoch:b`${Bt.epoch} + 1`}).where(A(Bt.id,1)),await r.insert(re).values({id:it(),source:t.source,operationId:t.operationId,status:"preparing",ownerKind:"job-root",ownerToken:it(),rootJobId:t.rootJobId,expectedChildren:t.expectedChildren,enqueueComplete:0,enqueueFailed:0,openedAt:n,lastProgressAt:n,leaseExpiresAt:n+Of})})}async finalizeDurableBulkMutationEnqueue(e){let t=a.string().trim().min(1).max(200).parse(e),n=this.now();await this.runBatchStateWrite(()=>this.db.update(re).set({status:"open",enqueueComplete:1,lastProgressAt:n,leaseExpiresAt:null}).where(H(A(re.operationId,t),Ke(re.status,["preparing","open"]))))}async failDurableBulkMutationEnqueue(e){let t=a.string().trim().min(1).max(200).parse(e),n=this.now();await this.runBatchStateWrite(()=>this.db.update(re).set({enqueueComplete:1,enqueueFailed:1,lastProgressAt:n,leaseExpiresAt:null}).where(H(A(re.operationId,t),Ke(re.status,["preparing","open"]))))}async runDurableBulkMutationChild(e,t){let n=f0(e),r=this.batchScope.getStore();if(r)return this.assertBatchIdentity(r,n),t();let i=await this.openDurableBatchChild(n);return this.batchScope.run(i,t)}async settleDurableBulkMutationChild(e){let t=g0(e),n=this.now();return this.runTransaction(async(r)=>{let o=(await r.select().from(re).where(H(A(re.operationId,t.operationId),A(re.ownerKind,"job-root"))).limit(1))[0];if(!o||o.status==="closed"||o.status==="abandoned")return!1;if((await r.update(Mt).set({status:t.outcome,terminalAt:n}).where(H(A(Mt.batchId,o.id),A(Mt.childKey,t.childKey),A(Mt.jobId,t.jobId))).returning({childKey:Mt.childKey})).length===0)return!1;let c=await r.select({total:b`count(*)`}).from(Mt).where(H(A(Mt.batchId,o.id),Ke(Mt.status,["completed","failed"])));if(Number(c[0]?.total??0)<o.expectedChildren)return!1;let l=await r.select({total:b`count(*)`}).from(Mt).where(H(A(Mt.batchId,o.id),A(Mt.status,"failed"))),u=Number(l[0]?.total??0)>0;return await this.transitionProjectionBatchToTerminal(r,o,{abandoned:u,terminalAt:n,fenceOwner:!1,clearLease:!0}),!0})}async recoverProjectionBatches(e){let t=this.now(),r=(await this.db.select({id:re.id}).from(re).where(H(A(re.ownerKind,"callback"),A(re.status,"open"),On(re.leaseExpiresAt,t)))).length===0?0:await this.runTransaction(async(s)=>{let c=await s.select().from(re).where(H(A(re.ownerKind,"callback"),A(re.status,"open"),On(re.leaseExpiresAt,t)));for(let l of c){let u=await this.getRecoveryGeneration(s,l.highestGeneration??0);await s.update(re).set({status:"abandoned",ownerToken:it(),terminalAt:t,lastProgressAt:t,leaseExpiresAt:null,recoveryGeneration:u,recoveredAt:l.highestGeneration===null?t:null}).where(H(A(re.id,l.id),A(re.ownerToken,l.ownerToken),A(re.status,"open")))}return c.length}),i=await this.db.select().from(re).where(H(A(re.ownerKind,"job-root"),Ke(re.status,["preparing","open"]))),o=0;for(let s of i){if(!s.rootJobId)continue;let c=await e(s.rootJobId,s.operationId),l=c.some((f)=>f.status==="pending"||f.status==="processing"),u=c.every((f)=>f.terminalAt!==null&&f.terminalAt<=t-Q3),p=c.length>=s.expectedChildren,m=t-s.openedAt>=h0;if(l||!u||!p&&!m)continue;if(await this.reconcileDurableRoot(s.id,c,t))o++}return await this.cleanupProjectionBatches(),{fencedCallbacks:r,releasedDurableRoots:o}}async cleanupProjectionBatches(e=604800000,t=100){let n=a.number().int().nonnegative().parse(e),r=a.number().int().nonnegative().max(1e4).parse(t),i=cn(A(re.status,"closed"),H(A(re.status,"abandoned"),eo(re.recoveredAt))),o=await this.db.select({id:re.id}).from(re).where(H(i,On(re.terminalAt,this.now()-n))),s=await this.db.select({id:re.id}).from(re).where(i).orderBy(wt(re.terminalAt)).limit(1e4).offset(r),c=[...new Set([...o,...s].map(({id:u})=>u))];if(c.length===0)return 0;return(await this.db.delete(re).where(Ke(re.id,c)).returning({id:re.id})).length}async reconcileDurableRoot(e,t,n){return this.runTransaction(async(r)=>{let o=(await r.select().from(re).where(A(re.id,e)).limit(1))[0];if(!o||o.status!=="open"&&o.status!=="preparing")return!1;for(let p of t){let m=p.status==="completed"?"completed":p.status==="failed"?"failed":"active";await r.insert(Mt).values({batchId:e,childKey:p.childKey,jobId:p.jobId,status:m,...m==="completed"||m==="failed"?{terminalAt:n}:{}}).onConflictDoUpdate({target:[Mt.batchId,Mt.childKey],set:{jobId:p.jobId,status:m,terminalAt:m==="completed"||m==="failed"?n:null}})}let s=t.some((p)=>p.status==="pending"||p.status==="processing"),c=t.length>=o.expectedChildren&&!s,l=!s&&t.length<o.expectedChildren&&n-o.openedAt>=h0;if(!c&&!l)return!1;let u=l||t.some((p)=>p.status==="failed");return await this.transitionProjectionBatchToTerminal(r,o,{abandoned:u,terminalAt:n,fenceOwner:!0,clearLease:!1}),!0})}async transitionProjectionBatchToTerminal(e,t,n){let r=n.abandoned?await this.getRecoveryGeneration(e,t.highestGeneration??0):null;await e.update(re).set({status:n.abandoned?"abandoned":"closed",ownerToken:n.abandoned&&n.fenceOwner?it():t.ownerToken,terminalAt:n.terminalAt,lastProgressAt:n.terminalAt,leaseExpiresAt:n.clearLease?null:t.leaseExpiresAt,recoveryGeneration:r,recoveredAt:n.abandoned&&t.highestGeneration===null?n.terminalAt:null}).where(A(re.id,t.id))}async getProjectionBatchDiagnostics(){let e=this.now(),t=await this.db.select({status:re.status,ownerKind:re.ownerKind,openedAt:re.openedAt,lastProgressAt:re.lastProgressAt,leaseExpiresAt:re.leaseExpiresAt,recoveredAt:re.recoveredAt}).from(re).where(Ke(re.status,["preparing","open","abandoned"])),n=t.filter((r)=>r.status==="preparing"||r.status==="open");return{preparing:t.filter((r)=>r.status==="preparing").length,open:t.filter((r)=>r.status==="open").length,abandoned:t.filter((r)=>r.status==="abandoned"&&r.recoveredAt===null).length,expiredCallbackLeases:n.filter((r)=>r.ownerKind==="callback"&&r.leaseExpiresAt!==null&&r.leaseExpiresAt<=e).length,oldestActiveAgeMs:n.length===0?null:Math.max(0,e-Math.min(...n.map((r)=>r.openedAt))),oldestProgressAgeMs:n.length===0?null:Math.max(0,e-Math.min(...n.map((r)=>r.lastProgressAt)))}}async openDurableBatchChild(e){let t=this.now();return this.runTransaction(async(n)=>{let r=(await n.select().from(re).where(H(A(re.source,e.source),A(re.operationId,e.operationId))).limit(1))[0];if(!r)await n.insert(Bt).values({id:1,epoch:0}).onConflictDoNothing({target:Bt.id}),await n.update(Bt).set({epoch:b`${Bt.epoch} + 1`}).where(A(Bt.id,1)),r=(await n.insert(re).values({id:it(),source:e.source,operationId:e.operationId,status:"open",ownerKind:"job-root",ownerToken:it(),rootJobId:e.rootJobId,expectedChildren:e.expectedChildren,enqueueComplete:1,enqueueFailed:0,openedAt:t,lastProgressAt:t}).returning())[0];if(r?.status!=="preparing"&&r?.status!=="open"||r.ownerKind!=="job-root"||r.rootJobId!==e.rootJobId||r.expectedChildren!==e.expectedChildren)throw new io(`Durable projection batch "${e.operationId}" is not open for this owner`);let o=(await n.select().from(Mt).where(H(A(Mt.batchId,r.id),A(Mt.childKey,e.childKey))).limit(1))[0];if(o&&(o.status==="completed"||o.status==="failed"||o.status==="missing"))throw new io(`Durable projection batch child "${e.childKey}" is terminal`);return await n.insert(Mt).values({batchId:r.id,childKey:e.childKey,jobId:e.jobId,status:"active"}).onConflictDoUpdate({target:[Mt.batchId,Mt.childKey],set:{jobId:e.jobId,status:"active",terminalAt:null}}),await n.update(re).set({status:"open",lastProgressAt:t,leaseExpiresAt:null}).where(A(re.id,r.id)),{batchId:r.id,source:r.source,operationId:r.operationId,ownerToken:r.ownerToken}})}async openCallbackBatch(e){let t={batchId:it(),source:e.source,operationId:e.operationId,ownerToken:it()},n=this.now();return await this.runTransaction(async(r)=>{await r.insert(Bt).values({id:1,epoch:0}).onConflictDoNothing({target:Bt.id}),await r.update(Bt).set({epoch:b`${Bt.epoch} + 1`}).where(A(Bt.id,1)),await r.insert(re).values({id:t.batchId,source:t.source,operationId:t.operationId,status:"open",ownerKind:"callback",ownerToken:t.ownerToken,expectedChildren:0,enqueueComplete:1,enqueueFailed:0,openedAt:n,lastProgressAt:n,leaseExpiresAt:n+Of})}),t}async renewCallbackBatch(e){let t=this.now();if((await this.db.update(re).set({lastProgressAt:t,leaseExpiresAt:t+Of}).where(H(A(re.id,e.batchId),A(re.ownerToken,e.ownerToken),A(re.status,"open"))).returning({id:re.id})).length===0)throw new io(`Projection batch "${e.batchId}" no longer owns its fence`)}async closeCallbackBatch(e){let t=this.now();await this.db.update(re).set({status:"closed",terminalAt:t,lastProgressAt:t,leaseExpiresAt:null}).where(H(A(re.id,e.batchId),A(re.ownerToken,e.ownerToken),A(re.status,"open")))}async assertBatchScope(e,t){if((await e.select({status:re.status}).from(re).where(H(A(re.id,t.batchId),A(re.ownerToken,t.ownerToken))).limit(1))[0]?.status!=="open")throw new io(`Projection batch "${t.batchId}" no longer owns its fence`)}async recordBatchGeneration(e,t,n){let r=this.now();await e.update(re).set({firstGeneration:b`coalesce(${re.firstGeneration}, ${n})`,highestGeneration:n,mutationCount:b`${re.mutationCount} + 1`,lastProgressAt:r,leaseExpiresAt:r+Of}).where(H(A(re.id,t.batchId),A(re.ownerToken,t.ownerToken),A(re.status,"open")))}runMutationTransaction(e){let t=this.batchScope.getStore();return this.runTransaction(async(n)=>{if(t)await this.assertBatchScope(n,t);return e(n,async(r)=>{if(t)await this.recordBatchGeneration(n,t,r)})})}async hasActiveBatch(){return(await this.db.select({id:re.id}).from(re).where(Ke(re.status,["preparing","open"])).limit(1)).length>0}async hasActiveBatchInTransaction(e){return(await e.select({id:re.id}).from(re).where(Ke(re.status,["preparing","open"])).limit(1)).length>0}async getAdmissionEpoch(e){return await e.insert(Bt).values({id:1,epoch:0}).onConflictDoNothing({target:Bt.id}),(await e.select({epoch:Bt.epoch}).from(Bt).where(A(Bt.id,1)).limit(1))[0]?.epoch??0}async markRecoveredThrough(e,t,n){await e.update(re).set({recoveredAt:n}).where(H(A(re.status,"abandoned"),Xt(re.recoveredAt),On(re.recoveryGeneration,t)))}getRecoveryGeneration(e,t){return this.readRecoveryGeneration(e,t)}runTransaction(e){return this.transactions.run(e)}runBatchStateWrite(e){return this.transactions.runSqliteWrite(e)}}var ti=Ho,Y3=a.strictObject({id:a.string().trim().min(1),entityType:a.string().trim().min(1),content:a.string(),metadata:ti,visibility:xi}),Go=a.discriminatedUnion("operation",[a.strictObject({operation:a.literal("upsert"),entity:Y3}),a.strictObject({operation:a.literal("delete"),entityType:a.string().trim().min(1),id:a.string().trim().min(1)})]);var X3=a.strictObject({ruleId:a.string().trim().min(1),ruleVersion:a.string().trim().min(1),inputFingerprint:a.string().trim().min(1)}),e5=a.strictObject({ruleId:a.string().trim().min(1),targetType:a.string().trim().min(1),level:a.number().int().nonnegative()}),t5=a.strictObject({entityType:a.string().trim().min(1),entityId:a.string().trim().min(1),operation:a.enum(["upsert","delete"]),contentHash:a.string().min(1).optional()});function ev(e){return X3.parse(e)}function y0(e){return a.array(e5).min(1).parse(e)}function $c(e){let t=a.array(t5).parse(e.changedTargets);return{...e,changedTargets:t}}var n5=a.strictObject({waveId:a.string().trim().min(1),ruleId:a.string().trim().min(1),jobId:a.string().trim().min(1).nullable(),failureReason:a.string().trim().min(1).max(500),failedAt:a.number().int().nonnegative()});function b0(e){return n5.parse(e)}function Df(e){return`${e.sourceType}\x00${e.sourceId}`}function zf(e){let t=new Map;for(let n of e)t.set(Df(n),n);return[...t.values()].sort((n,r)=>n.generation-r.generation)}var Mf=a.string().trim().min(1),r5=a.number().int().nonnegative();function ki(e){return Mf.parse(e)}function S0(e){return Mf.parse(e)}function x0(e){return Mf.parse(e)}function v0(e){return Mf.parse(e)}function aa(e){return r5.parse(e)}function w0(e){if(e==="completed")return{kind:"settled"};if(e==="failed")return{kind:"refuse",reason:"already failed"};if(e==="superseded")return{kind:"refuse",reason:"was superseded"};return{kind:"apply"}}function T0(e){if(e==="completed")return{kind:"refuse",reason:"already completed"};if(e==="failed"||e==="superseded")return{kind:"settled"};return{kind:"apply"}}function C0(e){if(e==="superseded")return{kind:"settled"};if(e!=="running")return{kind:"decline"};return{kind:"apply"}}function E0(e){if(e==="superseded")return{kind:"decline"};if(e!=="running")return{kind:"refuse",reason:"is not running"};return{kind:"apply"}}function ca(e){if(Array.isArray(e))return`[${e.map((t)=>ca(t)).join(",")}]`;if(e!==null&&typeof e==="object")return`{${Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>`${JSON.stringify(t)}:${ca(n)}`).join(",")}}`;return JSON.stringify(e)}class tv{entityExportStore;mutationAdmission;storagePolicy;constructor(e){this.entityExportStore=e.entityExportStore,this.mutationAdmission=e.mutationAdmission,this.storagePolicy=e.storagePolicy}async apply(e,t,n,r){let i=t.operation==="upsert"?t.entity.entityType:t.entityType,o=t.operation==="upsert"?t.entity.id:t.id,c=(await e.select({content:O.content,contentHash:O.contentHash,created:O.created,metadata:O.metadata,visibility:O.visibility}).from(O).where(H(A(O.entityType,i),A(O.id,o))).limit(1))[0];if(t.operation==="delete"){if(await e.delete(St).where(H(A(St.entityType,i),A(St.entityId,o))),!c)return null;return await this.mutationAdmission?.assertMutationAdmission({operation:"delete",entityType:i,entityId:o}),await e.delete(O).where(H(A(O.entityType,i),A(O.id,o))),await e.run(b`DELETE FROM entity_fts WHERE entity_id = ${o} AND entity_type = ${i}`),await this.entityExportStore.record(e,{entityType:i,entityId:o,operation:"delete",markedAt:n}),{entityType:i,entityId:o,operation:"delete"}}let l={...t.entity,contentHash:Ei(t.entity.content),created:new Date(c?.created??n).toISOString(),updated:new Date(n).toISOString()},u=await this.storagePolicy?.prepareEntity?.(l,c?"update":"create")??l;if(u.id!==o||u.entityType!==i)throw Error("Projection validation cannot change entity identity");let p=Ei(u.content);if(await e.insert(St).values({entityType:i,entityId:o,ruleId:r.ruleId,ruleVersion:r.ruleVersion,inputFingerprint:r.inputFingerprint,claimedAt:n}).onConflictDoUpdate({target:[St.entityType,St.entityId],set:{ruleId:r.ruleId,ruleVersion:r.ruleVersion,inputFingerprint:r.inputFingerprint,claimedAt:n}}),this.storagePolicy?.isAssetBacked(i))await this.storagePolicy.assetRepository.bindEntityContent(e,u.content);if(c?.contentHash===p&&c.content===u.content&&c.visibility===u.visibility&&ca(c.metadata)===ca(u.metadata)){if(this.storagePolicy?.isFullTextSearchable(i)===!1)await e.run(b`DELETE FROM entity_fts WHERE entity_id = ${o} AND entity_type = ${i}`);return null}if(await this.mutationAdmission?.assertMutationAdmission({operation:c?"update":"create",entityType:i,entityId:o}),c)await e.update(O).set({content:u.content,contentHash:p,metadata:u.metadata,visibility:u.visibility,updated:n}).where(H(A(O.entityType,i),A(O.id,o)));else await e.insert(O).values({id:o,entityType:i,content:u.content,contentHash:p,metadata:u.metadata,visibility:u.visibility,created:n,updated:n});if(await e.run(b`DELETE FROM entity_fts WHERE entity_id = ${o} AND entity_type = ${i}`),this.storagePolicy?.isFullTextSearchable(i)!==!1)await e.run(b`INSERT INTO entity_fts (entity_id, entity_type, content) VALUES (${o}, ${i}, ${u.content})`);return await this.entityExportStore.record(e,{entityType:i,entityId:o,operation:"upsert",markedAt:n}),{entityType:i,entityId:o,operation:"upsert",contentHash:p}}}class nv{db;transactions;batches;waves;writeIntentApplier;constructor(e){this.db=e.db,this.transactions=e.transactions,this.batches=e.batches,this.waves=e.waves,this.writeIntentApplier=e.writeIntentApplier}async putWaveRules(e,t){let n=ki(e),i=y0(t).map((o)=>({waveId:n,ruleId:o.ruleId,targetType:o.targetType,level:o.level,status:"pending",changedTargets:[]}));await this.transactions.run(async(o)=>{await o.insert(Qe).values(i)})}async listWaveRules(e){return(await this.db.select().from(Qe).where(A(Qe.waveId,e)).orderBy(Ue(Qe.level),Ue(Qe.ruleId))).map($c)}async queueWaveRule(e,t,n){let r=ki(e),i=S0(t),o=x0(n),c=(await this.transactions.run(async(u)=>u.update(Qe).set({status:"queued",jobId:o}).where(H(A(Qe.waveId,r),A(Qe.ruleId,i),A(Qe.status,"pending"))).returning()))[0];if(c)return $c(c);let l=await this.getWaveRule(r,i);if(l?.status==="completed"||l?.status==="queued"&&l.jobId===o)return l;throw Error(`Projection rule "${i}" is not pending for wave "${r}"`)}async getWaveRule(e,t){let r=(await this.db.select().from(Qe).where(H(A(Qe.waveId,e),A(Qe.ruleId,t))).limit(1))[0];return r?$c(r):null}async applyRuleResult(e){let t=ki(e.waveId),n=ev({ruleId:e.ruleId,ruleVersion:e.ruleVersion,inputFingerprint:e.inputFingerprint}),r=a.array(Go).parse(e.writeIntents),i=aa(e.completedAt);return this.transactions.run(async(o)=>{let c=(await o.select().from(Qe).where(H(A(Qe.waveId,t),A(Qe.ruleId,n.ruleId))).limit(1))[0];if(!c)throw Error(`Projection rule "${n.ruleId}" is not scheduled for wave "${t}"`);let l=await this.waves.requireWave(o,t),u=E0(l.status);if(u.kind==="decline")return null;if(u.kind==="refuse")throw Error(`Projection wave "${t}" ${u.reason}`);let p=await this.batches.getAdmissionEpoch(o);if(l.admissionEpoch!==p)return await this.waves.supersedeWaveInTransaction(o,l,i),null;for(let k of r){let P=k.operation==="upsert"?k.entity.entityType:k.entityType;if(P!==c.targetType)throw Error(`Projection rule "${n.ruleId}" cannot write entity type "${P}"`)}if(c.status==="completed"){if(c.inputFingerprint!==n.inputFingerprint)throw Error(`Projection rule "${n.ruleId}" already completed with another input`);return $c(c)}if(c.status==="failed")throw Error(`Projection rule "${n.ruleId}" already failed for wave "${t}"`);let g=(await o.select().from(Pr).where(H(A(Pr.ruleId,n.ruleId),A(Pr.ruleVersion,n.ruleVersion),A(Pr.inputFingerprint,n.inputFingerprint))).limit(1))[0];if(g&&ca(g.writeIntents)!==ca(r))throw Error(`Projection memo conflict for rule "${n.ruleId}" and fingerprint "${n.inputFingerprint}"`);if(!g)await o.insert(Pr).values({...n,writeIntents:r,createdAt:i});let f=[];for(let k of r){let P=await this.writeIntentApplier.apply(o,k,i,n);if(P)f.push(P)}let w=(await o.update(Qe).set({status:"completed",inputFingerprint:n.inputFingerprint,changedTargets:f}).where(H(A(Qe.waveId,t),A(Qe.ruleId,n.ruleId))).returning())[0];if(!w)throw Error(`Failed to complete projection rule "${n.ruleId}" for wave "${t}"`);return $c(w)})}async getRuleMemo(e){let t=ev(e),r=(await this.db.select().from(Pr).where(H(A(Pr.ruleId,t.ruleId),A(Pr.ruleVersion,t.ruleVersion),A(Pr.inputFingerprint,t.inputFingerprint))).limit(1))[0];if(!r)return null;return{...r,writeIntents:a.array(Go).parse(r.writeIntents)}}}class rv{db;transactions;batches;constructor(e){this.db=e.db,this.transactions=e.transactions,this.batches=e.batches}async claimPendingWave(e){let t=ki(e.waveId),n=v0(e.graphFingerprint),r=aa(e.startedAt);if(await this.batches.hasActiveBatch())return null;return this.transactions.run(async(i)=>{let o=await i.select({id:kt.id}).from(kt).where(A(kt.status,"running")).limit(1);if(o.length>0)throw Error(`Cannot claim projection wave while "${o[0]?.id}" is running`);if(await this.batches.hasActiveBatchInTransaction(i))return null;let s=await this.batches.getAdmissionEpoch(i),l=(await i.select({generation:zt.generation}).from(zt).orderBy(wt(zt.generation)).limit(1))[0]?.generation;if(l===void 0)return null;let u={id:t,cutoffGeneration:l,graphFingerprint:n,admissionEpoch:s,status:"running",startedAt:r,completedAt:null};await i.insert(kt).values(u);let p=await i.select().from(zt).where(On(zt.generation,l)).orderBy(Ue(zt.generation)),m=zf(p);return await i.insert(to).values(m.map((g)=>({waveId:t,sourceType:g.sourceType,sourceId:g.sourceId,revision:g.revision,operation:g.operation,generation:g.generation}))),await i.delete(zt).where(On(zt.generation,l)),u})}listWaveInputs(e){return this.db.select().from(to).where(A(to.waveId,e)).orderBy(Ue(to.generation))}async getWave(e){let t=ki(e);return(await this.db.select().from(kt).where(A(kt.id,t)).limit(1))[0]??null}async getActiveWave(){return(await this.db.select().from(kt).where(A(kt.status,"running")).limit(1))[0]??null}async requireWave(e,t){let r=(await e.select().from(kt).where(A(kt.id,t)).limit(1))[0];if(!r)throw Error(`Projection wave "${t}" does not exist`);return r}async completeWave(e,t){let n=ki(e),r=aa(t);return this.transactions.run(async(i)=>{let o=await this.requireWave(i,n),s=w0(o.status);if(s.kind==="settled")return o;if(s.kind==="refuse")throw Error(`Projection wave "${n}" ${s.reason}`);if((await i.select({ruleId:Qe.ruleId}).from(Qe).where(H(A(Qe.waveId,n),Zo(Qe.status,"completed"))).limit(1)).length>0)throw Error(`Projection wave "${n}" has incomplete projection rules`);let u=(await i.update(kt).set({status:"completed",completedAt:r}).where(A(kt.id,n)).returning())[0];if(!u)throw Error(`Failed to mark projection wave "${n}" completed`);return await i.update(or).set({resolvedAt:r}).where(H(Xt(or.resolvedAt),On(or.recoveryGeneration,o.cutoffGeneration))),await this.batches.markRecoveredThrough(i,o.cutoffGeneration,r),u})}async supersedeWaveIfStale(e,t){let n=ki(e),r=aa(t);return this.transactions.run(async(i)=>{let o=await this.requireWave(i,n),s=C0(o.status);if(s.kind==="settled")return!0;if(s.kind!=="apply")return!1;let c=await this.batches.getAdmissionEpoch(i);if(o.admissionEpoch===c)return!1;return await this.supersedeWaveInTransaction(i,o,r),!0})}async failWave(e,t){let n=ki(e),r=aa(t);return this.transactions.run(async(i)=>(await this.failWaveInTransaction(i,n,r)).wave)}async failWaveWithIncident(e){let t=b0(e);return this.transactions.run(async(n)=>{let r=await this.failWaveInTransaction(n,t.waveId,t.failedAt);if((await n.update(Qe).set({status:"failed"}).where(H(A(Qe.waveId,t.waveId),A(Qe.ruleId,t.ruleId))).returning({ruleId:Qe.ruleId})).length===0)throw Error(`Projection rule "${t.ruleId}" is not scheduled for wave "${t.waveId}"`);return await n.insert(or).values({waveId:t.waveId,ruleId:t.ruleId,jobId:t.jobId,failureReason:t.failureReason,recoveryGeneration:r.recoveryGeneration,createdAt:t.failedAt,resolvedAt:null}).onConflictDoNothing({target:or.waveId}),r.wave})}async getUnresolvedProjectionIncidentDiagnostics(e=10){let t=a.number().int().positive().max(100).parse(e),[n,r]=await Promise.all([this.db.select({total:b`count(*)`}).from(or).where(Xt(or.resolvedAt)),this.db.select().from(or).where(Xt(or.resolvedAt)).orderBy(wt(or.createdAt)).limit(t)]);return{total:Number(n[0]?.total??0),incidents:r}}async failWaveInTransaction(e,t,n){let r=await this.requireWave(e,t),i=T0(r.status);if(i.kind==="refuse")throw Error(`Projection wave "${t}" ${i.reason}`);if(i.kind==="settled")return{wave:r,recoveryGeneration:await this.getRecoveryGeneration(e,r.cutoffGeneration)};await this.requeueWaveInputs(e,t,n);let o=await this.getRecoveryGeneration(e,r.cutoffGeneration),c=(await e.update(kt).set({status:"failed",completedAt:n}).where(A(kt.id,t)).returning())[0];if(!c)throw Error(`Failed to mark projection wave "${t}" failed`);return{wave:c,recoveryGeneration:o}}async supersedeWaveInTransaction(e,t,n){return await this.requeueWaveInputs(e,t.id,n),(await e.update(kt).set({status:"superseded",completedAt:n}).where(H(A(kt.id,t.id),A(kt.status,"running"))).returning())[0]??{...t,status:"superseded",completedAt:n}}async requeueWaveInputs(e,t,n){let r=await e.select().from(to).where(A(to.waveId,t)),i=await e.select().from(zt),o=new Set(i.map(Df)),s=r.filter((c)=>!o.has(Df(c)));if(s.length===0)return;await e.insert(zt).values(s.map((c)=>({sourceType:c.sourceType,sourceId:c.sourceId,revision:c.revision,operation:c.operation,markedAt:n})))}async getRecoveryGeneration(e,t){let n=await e.select({generation:b`max(${zt.generation})`}).from(zt);return Number(n[0]?.generation??t)}}class iv{tail=Promise.resolve();run(e,t){if(t?.aborted)return Promise.reject(t.reason);let n=this.tail,r=()=>{};this.tail=new Promise((s)=>{r=s});let i=!1,o=n.then(async()=>{try{return i=!0,t?.throwIfAborted(),await e()}finally{r()}});return i5(o,()=>i,t)}async idle(){await this.tail}}class ov{tails=new Map;async run(e,t){let n=this.tails.get(e),r=()=>{},i=new Promise((o)=>{r=o});this.tails.set(e,i),await n;try{return await t()}finally{if(r(),this.tails.get(e)===i)this.tails.delete(e)}}}function i5(e,t,n){if(!n)return e;return new Promise((r,i)=>{let o=()=>{if(!t())i(n.reason)};n.addEventListener("abort",o,{once:!0}),e.then(r,i).finally(()=>{n.removeEventListener("abort",o)})})}class o5{active;run(e){if(this.active)return this.active;let t=e().finally(()=>{if(this.active===t)this.active=void 0});return this.active=t,t}}class s5{active=new Map;run(e,t){let n=this.active.get(e);if(n)return n;let r=t().finally(()=>{if(this.active.get(e)===r)this.active.delete(e)});return this.active.set(e,r),r}}class sv{db;queue=new iv;constructor(e){this.db=e}run(e){return this.queue.run(()=>this.db.transaction(e))}runSqliteWrite(e){return this.queue.run(e)}}var I0=a.strictObject({sourceType:a.string().trim().min(1),sourceId:a.string().trim().min(1),revision:a.string().trim().min(1),operation:a.enum(["upsert","delete"]),markedAt:a.number().int().nonnegative()}),av=a.strictObject({entityType:a.string().trim().min(1),id:a.string().trim().min(1)});class jf{db;writeIntentApplier;transactions;batches;waves;rules;constructor(e,t,n=Date.now,r){this.db=e,this.transactions=new sv(e),this.batches=new Xx({db:e,transactions:this.transactions,now:n,getRecoveryGeneration:(i,o)=>this.waves.getRecoveryGeneration(i,o)}),this.waves=new rv({db:e,transactions:this.transactions,batches:this.batches}),this.writeIntentApplier=new tv({entityExportStore:new ep(e,n),...t&&{mutationAdmission:t},...r&&{storagePolicy:r}}),this.rules=new nv({db:e,transactions:this.transactions,batches:this.batches,waves:this.waves,writeIntentApplier:this.writeIntentApplier})}runBulkMutation(e,t){return this.batches.runBulkMutation(e,t)}runFreshBatchScope(e){return this.batches.runFreshBatchScope(e)}prepareDurableBulkMutation(e){return this.batches.prepareDurableBulkMutation(e)}finalizeDurableBulkMutationEnqueue(e){return this.batches.finalizeDurableBulkMutationEnqueue(e)}failDurableBulkMutationEnqueue(e){return this.batches.failDurableBulkMutationEnqueue(e)}runDurableBulkMutationChild(e,t){return this.batches.runDurableBulkMutationChild(e,t)}settleDurableBulkMutationChild(e){return this.batches.settleDurableBulkMutationChild(e)}recoverProjectionBatches(e){return this.batches.recoverProjectionBatches(e)}cleanupProjectionBatches(e,t){return this.batches.cleanupProjectionBatches(e,t)}getProjectionBatchDiagnostics(){return this.batches.getProjectionBatchDiagnostics()}async isProjectionOwnedEntity(e){let t=av.parse(e);return(await this.db.select({entityId:St.entityId}).from(St).where(H(A(St.entityType,t.entityType),A(St.entityId,t.id))).limit(1)).length>0}async releaseProjectionOwnership(e){let t=av.parse(e);await this.db.delete(St).where(H(A(St.entityType,t.entityType),A(St.entityId,t.id)))}transferEntityAuthority(e,t){let n=av.parse(e);return this.transactions.run(async(r)=>{let i=await t(r);return await r.delete(St).where(H(A(St.entityType,n.entityType),A(St.entityId,n.id))),i})}async markDirty(e){let t=I0.parse(e),r=(await this.db.insert(zt).values(t).returning({generation:zt.generation}))[0]?.generation;if(r===void 0)throw Error("Failed to persist projection dirty input");return r}withDirtyInput(e,t){return this.withDirtyInputs([e],t)}withDirtyInputs(e,t){let n=a.array(I0).min(1).parse(e);return this.batches.runMutationTransaction(async(r,i)=>{let o=await t(r);for(let s of n){await r.delete(St).where(H(A(St.entityType,s.sourceType),A(St.entityId,s.sourceId)));let l=(await r.insert(zt).values(s).returning({generation:zt.generation}))[0]?.generation;if(l===void 0)throw Error("Failed to persist projection dirty input");await i(l)}return o})}async listPendingInputs(){let e=await this.db.select().from(zt).orderBy(Ue(zt.generation));return zf(e)}hasActiveProjectionBatch(){return this.batches.hasActiveBatch()}claimPendingWave(e){return this.waves.claimPendingWave(e)}listWaveInputs(e){return this.waves.listWaveInputs(e)}getWave(e){return this.waves.getWave(e)}getActiveWave(){return this.waves.getActiveWave()}completeWave(e,t){return this.waves.completeWave(e,t)}supersedeWaveIfStale(e,t){return this.waves.supersedeWaveIfStale(e,t)}failWave(e,t){return this.waves.failWave(e,t)}failWaveWithIncident(e){return this.waves.failWaveWithIncident(e)}getUnresolvedProjectionIncidentDiagnostics(e){return this.waves.getUnresolvedProjectionIncidentDiagnostics(e)}putWaveRules(e,t){return this.rules.putWaveRules(e,t)}listWaveRules(e){return this.rules.listWaveRules(e)}queueWaveRule(e,t,n){return this.rules.queueWaveRule(e,t,n)}getWaveRule(e,t){return this.rules.getWaveRule(e,t)}applyRuleResult(e){return this.rules.applyRuleResult(e)}getRuleMemo(e){return this.rules.getRuleMemo(e)}}class Nf extends Error{ref;constructor(e){super(`Asset not found: ${e}`);this.name="AssetNotFoundError",this.ref=e}}class la extends Error{ref;constructor(e,t){super(`Asset integrity check failed for ${e}: ${t}`);this.name="AssetIntegrityError",this.ref=e}}class cv{db;maxBytes;now;constructor(e,t={}){this.db=e,this.maxBytes=t.maxBytes??US,this.now=t.now??Date.now}stage(e){if(WS(e),e.sizeBytes>this.maxBytes)throw Error(`Asset exceeds ${this.maxBytes}-byte repository limit: received ${e.sizeBytes} bytes`);return{ref:e.ref,digest:e.digest,sizeBytes:e.sizeBytes,bytes:Buffer.from(e.bytes)}}async bindEntityContent(e,t,n){if(n){if(t!==n.ref)throw Error(`Prepared asset ${n.ref} does not match entity content`);await this.insertOrVerify(e,n);return}let r=Du.safeParse(t);if(r.success){await this.assertExists(e,r.data);return}if(t.startsWith("asset://"))Xs(t)}async read(e){let t=Xs(e),r=(await this.db.select({bytes:Zt.bytes,sizeBytes:Zt.sizeBytes}).from(Zt).where(A(Zt.digest,ea(t))).limit(1))[0];if(!r)throw new Nf(t);return this.assertSize(t,r.bytes,r.sizeBytes),Uint8Array.from(r.bytes)}async stat(e){let t=Xs(e),r=(await this.db.select({sizeBytes:Zt.sizeBytes}).from(Zt).where(A(Zt.digest,ea(t))).limit(1))[0];return r?{ref:t,sizeBytes:r.sizeBytes}:null}async verify(e){let t=Xs(e),n=await this.read(t),r=ea(t),i=zu(n);return{ref:t,sizeBytes:n.byteLength,expectedDigest:r,actualDigest:i,valid:i===r}}async insertOrVerify(e,t){if((await e.insert(Zt).values({digest:t.digest,bytes:t.bytes,sizeBytes:t.sizeBytes,created:this.now()}).onConflictDoNothing({target:Zt.digest}).returning({digest:Zt.digest})).length>0)return;let i=(await e.select({bytes:Zt.bytes,sizeBytes:Zt.sizeBytes}).from(Zt).where(A(Zt.digest,t.digest)).limit(1))[0];if(!i)throw new la(t.ref,"conflicting row disappeared during insertion");if(this.assertSize(t.ref,i.bytes,i.sizeBytes),i.sizeBytes!==t.sizeBytes)throw new la(t.ref,`stored size ${i.sizeBytes} does not match prepared size ${t.sizeBytes}`);let o=zu(i.bytes);if(o!==t.digest)throw new la(t.ref,`stored digest is ${o}`)}async assertExists(e,t){if((await e.select({digest:Zt.digest}).from(Zt).where(A(Zt.digest,ea(t))).limit(1)).length===0)throw new Nf(t)}assertSize(e,t,n){if(t.byteLength!==n)throw new la(e,`stored byte count ${t.byteLength} does not match declared size ${n}`);if(n<0||n>this.maxBytes)throw new la(e,`stored size ${n} is outside the accepted 0-${this.maxBytes} range`)}}var a5=/!\[([^\]]*)\]\(entity:\/\/image\/([^)]+)\)/g;function c5(e){return e.includes("entity://image/")}var l5=new Set(["image"]);function R0(e){return!l5.has(e)}class lv{logger;constructor(e){this.logger=e.child("ContentResolver")}detectReferences(e){let t=[],n=new RegExp(a5.source,"g"),r;while((r=n.exec(e))!==null)t.push({alt:r[1]??"",imageId:r[2]??"",originalMarkdown:r[0]});return t}async resolve(e,t,n){if(!c5(e))return{content:e,resolvedCount:0,failedCount:0};let r=this.detectReferences(e);if(r.length===0)return{content:e,resolvedCount:0,failedCount:0};let i=[...new Set(r.map((u)=>u.imageId))],o=new Map;for(let u of i)try{let p=await t.getEntityRaw({entityType:"image",id:u,visibilityScope:n});if(p?.content)o.set(u,p.content);else this.logger.warn("Image entity not found",{imageId:u})}catch(p){this.logger.warn("Failed to fetch image entity",{imageId:u,error:Be(p)})}let s=e,c=0,l=0;for(let u of r){let p=o.get(u.imageId);if(p){let m=`![${u.alt}](${p})`;s=s.replace(u.originalMarkdown,m),c++}else l++}if(c>0)this.logger.debug("Resolved image references",{resolvedCount:c,failedCount:l});return{content:s,resolvedCount:c,failedCount:l}}}function k0(e,t){return te.suspend(()=>{let n,r=e.pipe(te.match({onFailure:(s)=>(n={kind:"failure",error:s},n),onSuccess:(s)=>(n={kind:"status",status:s},n)})),i=wr.spaced(t.intervalMs),o=t.timeoutMs===void 0?i:i.pipe(wr.upTo({duration:t.timeoutMs}));return r.pipe(te.repeat({schedule:o,until:(s)=>s.kind==="status"&&s.status.ready}),te.flatMap(()=>{if(n?.kind==="status")return te.succeed(n.status);if(n?.kind==="failure")return te.fail(n.error);return te.die(Error("Index readiness polling completed without an attempt"))}))})}class uv{db;dbClient;dbUrl;searchDbClient;embeddingDb;embeddingDbClient;dbInitPromise=null;groupingReprojection;groupingAbort=new AbortController;entityRegistry;logger;jobQueueService;entitySearch;entitySerializer;entityQueries;entityMutations;projectionStore;assetRepository;entityExportStore;contentResolver;embeddingHandlerRegistered=!1;indexReady=!1;close(){this.groupingAbort.abort(Error("Entity service is closed"));let e,t=!1;try{if(this.embeddingHandlerRegistered)this.jobQueueService.unregisterHandler(sr.embedding),this.embeddingHandlerRegistered=!1}catch(n){e=n,t=!0}try{this.embeddingDbClient.close()}catch(n){if(!t)e=n;t=!0}try{this.searchDbClient.close()}catch(n){if(!t)e=n;t=!0}try{this.dbClient.close()}catch(n){if(!t)e=n;t=!0}if(t)throw e}static createFresh(e){return new uv(e)}constructor(e){let{db:t,client:n,url:r}=Mx(e.dbConfig);this.db=t,this.dbClient=n,this.dbUrl=r,this.assetRepository=new cv(this.db),this.entityExportStore=new ep(this.db,e.projectionNow??Date.now),this.projectionStore=new jf(this.db,e.mutationAdmission,e.projectionNow??Date.now,{assetRepository:this.assetRepository,prepareEntity:async(s,c)=>{await e.entityRegistry.ensureGroupingsCurrent(s.entityType);let l=this.entitySerializer.deserializeEntity(s.content,s.entityType),u=e.entityRegistry.validateEntity(s.entityType,{...l,...s.metadata,...s});return await Af(e.entityRegistry,u,c),u},isAssetBacked:(s)=>e.entityRegistry.getEntityTypeConfig(s).binaryStorage==="asset",isFullTextSearchable:(s)=>e.entityRegistry.getEntityTypeConfig(s).fullTextSearchable!==!1});let i,o;try{let s=Mx(e.dbConfig);i=s.client,this.searchDbClient=s.client;let c=jx(e.embeddingDbConfig);if(o=c.client,this.embeddingDb=c.db,this.embeddingDbClient=c.client,this.entityRegistry=e.entityRegistry,this.groupingReprojection=new Px({pending:()=>this.entityRegistry.getPendingGroupingProjections(),complete:(u)=>this.entityRegistry.completeGroupingProjections(u),refresh:async()=>{this.groupingAbort.signal.throwIfAborted(),await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent()},project:(u)=>Dz(this.db,this.entityRegistry,u,this.groupingAbort.signal)}),this.logger=(e.logger??kr.getInstance()).child("EntityService"),!e.jobQueueService)throw Error("JobQueueService is required for EntityService initialization");this.jobQueueService=e.jobQueueService,this.entitySerializer=new Lx(this.entityRegistry,this.logger),this.entityQueries=new Gx({db:this.db,entityRegistry:this.entityRegistry,serializer:this.entitySerializer,logger:this.logger,embeddingDb:this.embeddingDb});let l=e.embeddingsEnabled??!0;if(this.entitySearch=new yf(s.db,e.embeddingService,this.entitySerializer,this.logger,l,()=>this.declaredPublishGates()),this.entityMutations=new Yx({db:this.db,entityRegistry:this.entityRegistry,entitySerializer:this.entitySerializer,entityQueries:this.entityQueries,jobQueueService:this.jobQueueService,logger:this.logger,...e.messageBus&&{messageBus:e.messageBus},...e.mutationAdmission&&{mutationAdmission:e.mutationAdmission},projectionStore:this.projectionStore,assetRepository:this.assetRepository,entityExportStore:this.entityExportStore,projectionNow:e.projectionNow??Date.now,embeddingDb:this.embeddingDb,embeddingsEnabled:l}),this.contentResolver=new lv(this.logger),e.embeddingsEnabled??!0){let u=Qu.createFresh(this,e.embeddingService,e.messageBus);this.jobQueueService.registerHandler(sr.embedding,u),this.embeddingHandlerRegistered=!0}this.dbInitPromise=this.initializeDatabase(e.embeddingDbConfig,e.embeddingService.dimensions),this.dbInitPromise.catch(()=>{})}catch(s){try{if(this.embeddingHandlerRegistered)e.jobQueueService?.unregisterHandler(sr.embedding),this.embeddingHandlerRegistered=!1}catch{}try{o?.close()}catch{}try{i?.close()}catch{}try{n.close()}catch{}throw s}}async initialize(){if(!this.dbInitPromise)throw Error("Entity service database initialization never started; construction failed");await this.dbInitPromise}async initializeDatabase(e,t){try{await ei(this.dbClient,this.dbUrl)}catch(n){this.logger.warn("Failed to enable WAL mode for entity database (non-fatal)",n)}try{await ei(this.searchDbClient,this.dbUrl)}catch(n){this.logger.warn("Failed to configure entity search database (non-fatal)",n)}try{await ei(this.embeddingDbClient,e.url)}catch(n){this.logger.warn("Failed to enable WAL mode for embedding database (non-fatal)",n)}await Uz(this.dbClient),await Nx(this.embeddingDbClient,t),await Bx(this.searchDbClient,_x(e.url))}getProjectionStore(){return this.projectionStore}async isProjectionOwnedEntity(e){return await this.initialize(),this.projectionStore.isProjectionOwnedEntity(e)}async releaseProjectionOwnership(e){await this.initialize(),await this.projectionStore.releaseProjectionOwnership(e)}setProjectionWakeup(e){return this.entityMutations.setProjectionWakeup(e)}async listPendingEntityExports(){return await this.initialize(),this.entityExportStore.list()}async hasPendingEntityExports(){return await this.initialize(),this.entityExportStore.hasPending()}async acknowledgeEntityExports(e){return await this.initialize(),this.entityExportStore.acknowledge(e.intents)}async runBulkMutation(e,t){await this.initialize();try{return await this.projectionStore.runBulkMutation(e,t)}finally{await this.entityMutations.wakeProjectionScheduler()}}async prepareDurableBulkMutation(e){await this.initialize(),await this.projectionStore.prepareDurableBulkMutation(e)}async finalizeDurableBulkMutationEnqueue(e){await this.initialize(),await this.projectionStore.finalizeDurableBulkMutationEnqueue(e)}async failDurableBulkMutationEnqueue(e){await this.initialize(),await this.projectionStore.failDurableBulkMutationEnqueue(e)}async runDurableBulkMutationChild(e,t){return await this.initialize(),this.projectionStore.runDurableBulkMutationChild(e,t)}async settleDurableBulkMutationChild(e){await this.initialize();let t=await this.projectionStore.settleDurableBulkMutationChild(e);if(t)await this.entityMutations.wakeProjectionScheduler();return t}async recoverProjectionBatches(e){await this.initialize();let t=await this.projectionStore.recoverProjectionBatches(e);if(t.fencedCallbacks+t.releasedDurableRoots>0)await this.entityMutations.wakeProjectionScheduler();return t}async createEntity(e){await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.createEntity(e);return await this.afterGroupingSourceMutation(e.entity.entityType),t}async createEntityFromMarkdown(e){await this.initialize();let{input:t,options:n}=e;await this.entityRegistry.ensureGroupingsCurrent();let r=this.entitySerializer.deserializeEntity(t.markdown,t.entityType),i=await this.entityMutations.createEntity({entity:{...r,id:t.id,entityType:t.entityType,content:t.markdown,metadata:r.metadata??{},...t.visibility!==void 0?{visibility:t.visibility}:{}},...n!==void 0&&{options:n}});return await this.afterGroupingSourceMutation(t.entityType),i}async updateEntity(e){await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.updateEntity(e);return await this.afterGroupingSourceMutation(e.entity.entityType),t}async getEntityMutationReceipt(e){let t=ro.parse(e);return await this.initialize(),this.entityMutations.getEntityMutationReceipt(t)}async applyEntityMutationOnce(e){let t=Rf(e);await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let n=await this.entityMutations.applyEntityMutationOnce(t);if(n.applied&&n.receipt.operation!=="none")await this.afterGroupingSourceMutation(n.receipt.entityType);return n.receipt}async foldEntity(e){await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.foldEntity(e);return await this.afterGroupingSourceMutation(e.entity.entityType),t}async deleteEntity(e){if(await this.initialize(),e.entityType===this.entityRegistry.getGroupingSourceType())await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.deleteEntity(e);if(t)await this.afterGroupingSourceMutation(e.entityType);return t}async upsertEntity(e){await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.upsertEntity(e);return await this.afterGroupingSourceMutation(e.entity.entityType),t}async storeEmbedding(e){return await this.initialize(),this.entityMutations.storeEmbedding(e)}async reconcileProjectionTargets(e){await this.initialize(),await this.entityMutations.reconcileProjectionTargets(e);let t=this.entityRegistry.getGroupingSourceType();if(t&&e.some((n)=>n.entityType===t))await this.afterGroupingSourceMutation(t,!1)}async backfillMissingEmbeddings(){return await this.initialize(),this.indexReady=!1,this.entityMutations.backfillMissingEmbeddings()}isIndexReady(){return this.indexReady}async awaitIndexReady(e){await this.initialize();let t=!1,n=te.tryPromise({try:()=>this.getIndexReadinessStatus(),catch:(o)=>o}).pipe(te.tapError((o)=>te.sync(()=>{if(!t)this.logger.warn("Semantic index readiness check failed; retrying",{error:o}),t=!0})),te.tap(()=>te.sync(()=>{t=!1}))),r=k0(n,{intervalMs:e.intervalMs??250,...e.timeoutMs!==void 0&&{timeoutMs:e.timeoutMs}}),i=await te.runPromiseExit(r,{...e.signal&&{signal:e.signal}});if(bt.isFailure(i)){if(e.signal?.aborted)throw e.signal.reason;throw Xn.squash(i.cause)}if(i.value.ready)this.indexReady=!0;return i.value}async getIndexReadinessStatus(){let[e,t]=await Promise.all([this.jobQueueService.getActiveJobs([sr.embedding]),this.entityMutations.getEmbeddingIndexStats()]),n=e.length,r=n===0&&t.missingEmbeddings===0&&t.staleEmbeddings===0,i=r&&t.failedEmbeddings>0;return{ready:r,degraded:i,activeEmbeddingJobs:n,missingEmbeddings:t.missingEmbeddings,staleEmbeddings:t.staleEmbeddings,failedEmbeddings:t.failedEmbeddings,embeddableEntities:t.embeddableEntities,embeddedEntities:t.embeddedEntities}}async getEntityWriteSnapshot(e){return await this.initialize(),this.entityQueries.getEntityWriteSnapshot(e)}async readAsset(e){return await this.initialize(),this.assetRepository.read(e)}async statAsset(e){return await this.initialize(),this.assetRepository.stat(e)}async verifyAsset(e){return await this.initialize(),this.assetRepository.verify(e)}async getEntity(e,t){e.signal?.throwIfAborted(),await this.initialize();let{entityType:n,visibilityScope:r}=e,i=await this.getEntityRaw(e);if(!i)return null;let o=await this.resolveEntityContent(n,i,r);return e.signal?.throwIfAborted(),t?t.parse(o):o}async resolveEntityContent(e,t,n){if(R0(e)&&t.content){let r=await this.contentResolver.resolve(t.content,this,n);if(r.resolvedCount>0)return{...t,content:r.content}}return t}async getEntityRaw(e,t){e.signal?.throwIfAborted(),await this.initialize();let{entityType:n,id:r,visibilityScope:i}=e;await this.entityRegistry.ensureGroupingsCurrent(n);let o=await this.entityQueries.getEntityData(n,r,i,e,e.publishedOnly?{publishedStatuses:this.publishedStatusesFor(n)}:void 0);if(!o)return null;let s=await this.entitySerializer.convertToEntity(o);return e.signal?.throwIfAborted(),s&&t?t.parse(s):s}async listEntities(e,t){e.options?.signal?.throwIfAborted(),await this.initialize();let{entityType:n,options:r}=e,i=await this.entityQueries.listEntities(n,r,this.publishedStatusesFor(n));return t?i.map((o)=>t.parse(o)):i}async queryEntityHierarchy(e){return e.signal?.throwIfAborted(),await this.initialize(),this.entityQueries.queryEntityHierarchy(e)}areGroupingsReady(){return!this.groupingAbort.signal.aborted&&this.groupingReprojection.isReady()}reprojectRegisteredGroupings(){return this.groupingReprojection.run(!0)}async ensureGroupingsReady(){if(await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent(),!this.areGroupingsReady()&&this.entityRegistry.getGroupingSourceType())this.groupingReprojection.run().catch((e)=>this.reportGroupingScanFailure(e));return this.areGroupingsReady()}async afterGroupingSourceMutation(e,t=!0){if(e!==this.entityRegistry.getGroupingSourceType())return;try{await this.entityRegistry.ensureGroupingsCurrent(void 0,{afterWrite:t}),await this.groupingReprojection.run()}catch(n){this.groupingReprojection.invalidate(),this.reportGroupingScanFailure(n)}}reportGroupingScanFailure(e){if(!this.groupingAbort.signal.aborted)this.logger.error("Grouping scan failed; grouping reads remain unready until retry",{error:Be(e)})}async queryGroupingCatalog(e){if(e.signal?.throwIfAborted(),await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent(),this.entityRegistry.getGroupingSourceType())await this.groupingReprojection.run();return this.entityQueries.queryGroupingCatalog(e)}async queryGroupingMembers(e){if(e.signal?.throwIfAborted(),await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent(),this.entityRegistry.getGroupingSourceType())await this.groupingReprojection.run();return this.entityQueries.queryGroupingMembers(e)}async queryGroupingUsage(e){if(e.signal?.throwIfAborted(),await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent(),this.entityRegistry.getGroupingSourceType())await this.groupingReprojection.run();return this.entityQueries.queryGroupingUsage(e)}async countEntities(e){await this.initialize();let{entityType:t,options:n}=e;return this.entityQueries.countEntities(t,n,this.publishedStatusesFor(t))}declaredPublishGates(){return Object.fromEntries(this.entityRegistry.getAllEntityTypes().flatMap((e)=>{let t=this.publishedStatusesFor(e);return t?[[e,t]]:[]}))}publishedStatusesFor(e){if(!this.entityRegistry.hasEntityType(e))return;return this.entityRegistry.getAdapter(e).publishedStatuses}async getEntityCounts(e){return await this.initialize(),this.entityQueries.getEntityCounts(e)}async search(e,t){e.options?.signal?.throwIfAborted(),await this.initialize();let n=await this.entitySearch.search(e.query,this.withBroadSearchExclusions(e.options));return e.options?.signal?.throwIfAborted(),t?n.map((r)=>({...r,entity:t.parse(r.entity)})):n}withBroadSearchExclusions(e){if(e?.types&&e.types.length>0)return e;let t=this.entityRegistry.getAllEntityTypes().filter((n)=>this.entityRegistry.getEntityTypeConfig(n).includeInBroadSearch===!1);if(t.length===0)return e;return{...e,excludeTypes:[...e?.excludeTypes??[],...t]}}async searchEntities(e,t,n){return await this.initialize(),this.entitySearch.searchEntities(e,t,n)}async searchWithDistances(e){return await this.initialize(),this.entitySearch.searchWithDistances(e.query,{types:e.types,maxDistance:e.maxDistance})}async nearestToEntity(e){return await this.initialize(),this.entitySearch.nearestToEntity(e)}async projectSemanticSpace(e){return await this.initialize(),this.entitySearch.projectSemanticSpace(e)}async countEmbeddings(){return await this.initialize(),(await this.embeddingDb.select({count:b`count(*)`}).from(Gt))[0]?.count??0}serializeEntity(e){return this.entitySerializer.serializeEntity(e)}deserializeEntity(e,t){return this.entitySerializer.deserializeEntity(e,t)}getEntityTypes(){return this.entityRegistry.getAllEntityTypes()}hasEntityType(e){return this.entityRegistry.hasEntityType(e)}getEntityTypeConfig(e){return this.entityRegistry.getEntityTypeConfig(e)}getWeightMap(){return this.entityRegistry.getWeightMap()}async getAsyncJobStatus(e){let t=await this.jobQueueService.getStatus(e);if(!t)return null;return{status:t.status,...t.lastError&&{error:t.lastError}}}}class pv{active=new Set;queued=new Map;generation=0;replace(e,t=!1){let n=new Set;for(let r of e)for(let i of r.types){let o=JSON.stringify([i,r.field]);if(n.has(o))continue;if(n.add(o),t||!this.active.has(o)&&!this.queued.has(o))this.queued.set(o,{entityType:i,field:r.field,generation:++this.generation})}for(let r of this.queued.keys())if(!n.has(r))this.queued.delete(r);this.active=n}pending(){return[...this.queued.values()].map((e)=>({...e}))}complete(e){for(let t of e){let n=JSON.stringify([t.entityType,t.field]);if(this.queued.get(n)?.generation===t.generation)this.queued.delete(n)}}}function tp(e,t){if(!(e instanceof a.ZodType)||!(t instanceof a.ZodType))return!1;if(e===t)return!0;let n=e.def.checks??[],r=t.def.checks??[];if(n.length!==r.length||n.some((i,o)=>i!==r[o]))return!1;if(e instanceof a.ZodOptional&&t instanceof a.ZodOptional)return tp(e.unwrap(),t.unwrap());if(e instanceof a.ZodNullable&&t instanceof a.ZodNullable)return tp(e.unwrap(),t.unwrap());if(e instanceof a.ZodArray&&t instanceof a.ZodArray)return tp(e.element,t.element);if(e instanceof a.ZodStringFormat||t instanceof a.ZodStringFormat)return!1;if(e instanceof a.ZodString&&t instanceof a.ZodString)return e.def.coerce===t.def.coerce;if(e instanceof a.ZodEnum&&t instanceof a.ZodEnum)return JSON.stringify(e.def.entries)===JSON.stringify(t.def.entries);if(e instanceof a.ZodLiteral&&t instanceof a.ZodLiteral)return e.def.values.length===t.def.values.length&&e.def.values.every((i,o)=>Object.is(i,t.def.values[o]));return!1}function dv(e){return e instanceof a.ZodType?e.def.type:void 0}function u5(e){return typeof e==="function"?e():e}function oo(e){let t=Bf(e,!0,void 0,!1),n={inner:t.inner,required:t.required};if(t.hasDefault&&t.defaultValue!==void 0)n.defaultValue=t.defaultValue;return n}function Bf(e,t,n,r){if(e instanceof a.ZodOptional||e instanceof a.ZodNullable)return Bf(e.unwrap(),!1,n,r);if(e instanceof a.ZodDefault)return Bf(e.def.innerType,!1,u5(e.def.defaultValue),!0);if(e instanceof a.ZodPipe)return Bf(e.def.out,t,n,r);return{inner:e,required:t,defaultValue:n,hasDefault:r}}function _f(e){if(!(e instanceof a.ZodEnum))return;let t=Object.values(e.def.entries);if(t.every((n)=>typeof n==="string"))return t;return}function P0(e){return e instanceof a.ZodLiteral?e.def.values[0]:void 0}function Vo(e){return e instanceof a.ZodObject?e.shape:void 0}function A0(e){return e instanceof a.ZodArray?e.def.element:void 0}function nbe(e,t){if(e instanceof a.ZodStringFormat)return e.def.format===t;if(!(e instanceof a.ZodString))return!1;return(e.def.checks??[]).some((r)=>r instanceof a.ZodStringFormat&&r.def.format===t)}function rbe(e){return e instanceof a.ZodType?e.meta():void 0}class Ff{entitySchemas=new Map;entityAdapters=new Map;entityConfigs=new Map;createInterceptors=new Map;uploadSaveHandlers=[];persistValidators=new Map;frontmatterExtensions=new Map;groupingExtensions=new Map;logger;groupings=new Map;groupingSource;groupingProjections=new pv;groupingRevision=0;static createFresh(e){return new Ff(e)}constructor(e){this.logger=e}registerEntityType(e,t,n,r){if(this.logger.debug(`Registering entity type: ${e}`),this.entitySchemas.has(e))throw Error(`Entity type registration failed for ${e}: Entity type is already registered`);let i=Oc.parse(r?.classification);this.entitySchemas.set(e,t),this.entityAdapters.set(e,n),this.entityConfigs.set(e,{...r,classification:i}),this.logger.debug(`Registered entity type: ${e}`)}unregisterEntityType(e){if(this.groupingSource?.entityType===e)this.groupingSource=void 0,this.replaceGroupings([]);this.entitySchemas.delete(e),this.entityAdapters.delete(e),this.entityConfigs.delete(e),this.createInterceptors.delete(e),this.persistValidators.delete(e),this.frontmatterExtensions.delete(e),this.groupingExtensions.delete(e),this.uploadSaveHandlers=this.uploadSaveHandlers.filter((t)=>t.entityType!==e),this.logger.debug(`Unregistered entity type: ${e}`)}getSchema(e){let t=this.entitySchemas.get(e);if(!t)throw Error(`Entity type registration failed for ${e}: No schema registered for entity type`);return t}getAdapter(e){let t=this.entityAdapters.get(e);if(!t)throw Error(`Entity type registration failed for ${e}: No adapter registered for entity type`);let n=this.mergeExtensions(e,t.frontmatterSchema);if(!n||n===t.frontmatterSchema)return t;let r=Object.create(t);return Object.defineProperty(r,"frontmatterSchema",{value:n,enumerable:!0}),r}hasEntityType(e){return this.entitySchemas.has(e)&&this.entityAdapters.has(e)}validateEntity(e,t){let r=this.getSchema(e).parse(this.normalizePolicyFields(t,e)),i=Cr.parse(r);return{...r!==null&&typeof r==="object"&&!Array.isArray(r)?Object.fromEntries(Object.entries(r)):{},id:i.id,entityType:i.entityType,content:i.content,created:i.created,updated:i.updated,visibility:i.visibility,metadata:this.projectMetadata(e,i.content,i.metadata),contentHash:i.contentHash}}normalizePolicyFields(e,t){if(e===null||typeof e!=="object"||Array.isArray(e))return e;let n=Object.fromEntries(Object.entries(e));n.visibility=xi.parse(n.visibility);let r=n.metadata,i=Vo(oo(Vo(this.getSchema(t))?.metadata).inner);if(i&&r&&typeof r==="object"&&!Array.isArray(r)){let o=Object.fromEntries(Object.entries(r));for(let s of this.getFrontmatterExtensions(t))for(let c of Object.keys(s.shape))if(!Object.hasOwn(i,c))delete o[c];n.metadata=o}return n}getAllEntityTypes(){return Array.from(this.entitySchemas.keys())}getEntityTypeConfig(e){return{...this.entityConfigs.get(e)}}getWeightMap(){let e={};for(let[t,n]of this.entityConfigs)if(n.weight!==void 0)e[t]=n.weight;return e}registerCreateInterceptor(e,t){this.createInterceptors.set(e,t)}getCreateInterceptor(e){return this.createInterceptors.get(e)}registerUploadSaveHandler(e){this.uploadSaveHandlers=[...this.uploadSaveHandlers.filter((t)=>t.entityType!==e.entityType),e]}getUploadSaveHandler(e){return this.uploadSaveHandlers.find((t)=>t.mediaTypes.some((n)=>n.endsWith("/*")?e.startsWith(`${n.slice(0,-1)}`):e===n))}registerPersistValidator(e,t){let n=this.persistValidators.get(e);this.persistValidators.set(e,n?async(r,i)=>{await n(r,i),await t(r,i)}:t)}getPersistValidator(e){return this.persistValidators.get(e)}extendFrontmatterSchema(e,t){let n=this.entityAdapters.get(e);if(!n)throw Error(`Cannot extend frontmatter schema for ${e}: entity type is not registered`);if(!n.frontmatterSchema)throw Error(`Cannot extend frontmatter schema for ${e}: adapter has no frontmatterSchema`);for(let i of this.groupings.values())if(i.types.includes(e)&&Object.hasOwn(t.shape,i.field)&&t.shape[i.field]!==this.getEffectiveFrontmatterSchema(e)?.shape[i.field])throw Error(`Cannot replace registered grouping field ${e}.${i.field}`);let r=this.frontmatterExtensions.get(e)??[];r.push(t),this.frontmatterExtensions.set(e,r),this.logger.debug(`Extended frontmatter schema for entity type: ${e}`)}registerGroupingSource(e){if(this.groupingSource)throw Error("A grouping source is already registered");if(!this.hasEntityType(e.entityType))throw Error("Grouping source entity type is not registered");this.groupingSource=e}captureGroupingWriteGuard(e){let t=this.groupingRevision;return async()=>{if(await this.ensureGroupingsCurrent(),t!==this.groupingRevision)throw new nr(e,new a.ZodError([{code:"custom",path:[],message:"Grouping definitions changed while saving. Review the current rules and try again."}]),"persist")}}getGroupingSourceType(){return this.groupingSource?.entityType}getPendingGroupingProjections(){return this.groupingProjections.pending()}completeGroupingProjections(e){this.groupingProjections.complete(e)}async ensureGroupingsCurrent(e,t){let n=this.groupingSource;if(n&&n.entityType!==e)await n.ensureCurrent(t)}validateGroupings(e){this.stageGroupings(e)}replaceGroupings(e,t){let n=this.stageGroupings(e);this.groupings=n.groupings,this.groupingExtensions=n.groupingExtensions,this.groupingRevision++,this.groupingProjections.replace(this.groupings.values(),t?.reprojectExisting)}stageGroupings(e){let t=new Ff(this.logger.child("GroupingValidation"));t.entitySchemas=this.entitySchemas,t.entityAdapters=this.entityAdapters,t.entityConfigs=this.entityConfigs,t.frontmatterExtensions=new Map([...this.frontmatterExtensions].map(([n,r])=>[n,[...r]]));for(let n of e)t.registerGrouping(n);return t}registerGrouping(e){if(this.groupingSource)throw Error("Groupings are owned by a registered source; static declarations are not allowed");let t=xf.parse(e);if(this.groupings.has(t.key))throw Error(`Duplicate entity grouping: ${t.key}`);if(r0.has(t.field))throw Error("Grouping field is reserved");let n=[];for(let r of t.types){let i=this.getEffectiveFrontmatterSchema(r);if(!this.hasEntityType(r)||!i||!Hm(this.entityAdapters.get(r),this.getEntityTypeConfig(r)))throw Error(`Grouping requires an eligible content entity type: ${r}`);let o=i.shape[t.field],s=this.entityAdapters.get(r)?.frontmatterSchema?.shape[t.field];if(s&&s!==o)throw Error(`Grouping field overrides an owner contract: ${r}.${t.field}`);let c=Vo(oo(Vo(this.getSchema(r))?.metadata).inner)?.[t.field];if(!o){if(c)throw Error(`Grouping conflicts with metadata field ${r}.${t.field}`);n.push(r);continue}let l=A0(oo(o).inner),u=oo(l).inner;if(l!==u||!(u instanceof a.ZodString)&&!_f(u)&&typeof P0(u)!=="string")throw Error(`Grouping field must be a string list: ${r}.${t.field}`);if(c&&!tp(c,o))throw Error(`Cannot establish a shared frontmatter/metadata contract for ${r}.${t.field}`)}for(let r of n){let i=this.groupingExtensions.get(r)??[];i.push(a.object({[t.field]:a.array(a.string()).optional()})),this.groupingExtensions.set(r,i)}this.groupings.set(t.key,t),this.groupingRevision++,this.groupingProjections.replace(this.groupings.values())}getGrouping(e){let t=this.groupings.get(e);if(!t)throw Error("Unknown entity grouping");return{...t,types:[...t.types]}}getGroupings(){return[...this.groupings.keys()].map((e)=>this.getGrouping(e))}projectMetadata(e,t,n){return this.projectRegisteredFields(e,t,n,"reject")}projectStoredMetadata(e,t,n){return this.projectRegisteredFields(e,t,n,"omit")}groupingFields(e){return[...new Set([...this.groupings.values()].filter((t)=>t.types.includes(e)).map((t)=>t.field))]}isGroupingContributor(e){for(let t of this.groupings.values())if(t.types.includes(e))return!0;return!1}projectRegisteredFields(e,t,n,r){let i=Ut(t,a.record(a.string(),a.unknown()),{cache:r==="omit"?!1:!0}).metadata,o=t0(i,n,this.getFrontmatterExtensions(e),r),s=this.groupingFields(e);if(s.length===0)return o;let c=this.getEffectiveFrontmatterSchema(e);if(!c)throw Error("Grouping contributor lost its frontmatter schema");let l={...o};for(let u of s){delete l[u];let p=c.shape[u];if(!p||!Object.hasOwn(i,u))continue;let m=a.safeParse(p,i[u]);if(!m.success){if(r==="reject")throw m.error;continue}if(m.data!==void 0)l[u]=m.data}return l}getFrontmatterExtensions(e){return[...this.frontmatterExtensions.get(e)??[],...this.groupingExtensions.get(e)??[]]}getEffectiveFrontmatterSchema(e){let t=this.entityAdapters.get(e);return this.mergeExtensions(e,t?.frontmatterSchema)}mergeExtensions(e,t){if(!t)return;let n=this.getFrontmatterExtensions(e);if(!n.length)return t;let r=t;for(let i of n)r=r.safeExtend(i.shape);return r.superRefine((i,o)=>{for(let s of n){let c=Object.fromEntries(Object.keys(s.shape).flatMap((u)=>Object.hasOwn(i,u)?[[u,i[u]]]:[])),l=s.safeParse(c);if(!l.success)for(let u of l.error.issues)o.addIssue({code:"custom",path:[...u.path],message:u.message})}})}}class O0 extends Error{name="Assertion";code="ERR_ASSERTION";constructor(e,t,n,r,i){super(e);if(Error.captureStackTrace)Error.captureStackTrace(this,this.constructor);this.actual=t,this.expected=n,this.generated=i,this.operator=r}}function T(e,t){p5(Boolean(e),!1,!0,"ok","Expected value to be truthy",t)}function p5(e,t,n,r,i,o){if(!e)throw o instanceof Error?o:new O0(o||i,t,n,r,!o)}var d5={};function so(e,t){let n=t||d5,r=typeof n.includeImageAlt==="boolean"?n.includeImageAlt:!0,i=typeof n.includeHtml==="boolean"?n.includeHtml:!0;return z0(e,r,i)}function z0(e,t,n){if(m5(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return D0(e.children,t,n)}if(Array.isArray(e))return D0(e,t,n);return""}function D0(e,t,n){let r=[],i=-1;while(++i<e.length)r[i]=z0(e[i],t,n);return r.join("")}function m5(e){return Boolean(e&&typeof e==="object")}var mv={AElig:"\xC6",AMP:"&",Aacute:"\xC1",Abreve:"\u0102",Acirc:"\xC2",Acy:"\u0410",Afr:"\uD835\uDD04",Agrave:"\xC0",Alpha:"\u0391",Amacr:"\u0100",And:"\u2A53",Aogon:"\u0104",Aopf:"\uD835\uDD38",ApplyFunction:"\u2061",Aring:"\xC5",Ascr:"\uD835\uDC9C",Assign:"\u2254",Atilde:"\xC3",Auml:"\xC4",Backslash:"\u2216",Barv:"\u2AE7",Barwed:"\u2306",Bcy:"\u0411",Because:"\u2235",Bernoullis:"\u212C",Beta:"\u0392",Bfr:"\uD835\uDD05",Bopf:"\uD835\uDD39",Breve:"\u02D8",Bscr:"\u212C",Bumpeq:"\u224E",CHcy:"\u0427",COPY:"\xA9",Cacute:"\u0106",Cap:"\u22D2",CapitalDifferentialD:"\u2145",Cayleys:"\u212D",Ccaron:"\u010C",Ccedil:"\xC7",Ccirc:"\u0108",Cconint:"\u2230",Cdot:"\u010A",Cedilla:"\xB8",CenterDot:"\xB7",Cfr:"\u212D",Chi:"\u03A7",CircleDot:"\u2299",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",Colon:"\u2237",Colone:"\u2A74",Congruent:"\u2261",Conint:"\u222F",ContourIntegral:"\u222E",Copf:"\u2102",Coproduct:"\u2210",CounterClockwiseContourIntegral:"\u2233",Cross:"\u2A2F",Cscr:"\uD835\uDC9E",Cup:"\u22D3",CupCap:"\u224D",DD:"\u2145",DDotrahd:"\u2911",DJcy:"\u0402",DScy:"\u0405",DZcy:"\u040F",Dagger:"\u2021",Darr:"\u21A1",Dashv:"\u2AE4",Dcaron:"\u010E",Dcy:"\u0414",Del:"\u2207",Delta:"\u0394",Dfr:"\uD835\uDD07",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",Diamond:"\u22C4",DifferentialD:"\u2146",Dopf:"\uD835\uDD3B",Dot:"\xA8",DotDot:"\u20DC",DotEqual:"\u2250",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",DownArrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",DownTeeArrow:"\u21A7",Downarrow:"\u21D3",Dscr:"\uD835\uDC9F",Dstrok:"\u0110",ENG:"\u014A",ETH:"\xD0",Eacute:"\xC9",Ecaron:"\u011A",Ecirc:"\xCA",Ecy:"\u042D",Edot:"\u0116",Efr:"\uD835\uDD08",Egrave:"\xC8",Element:"\u2208",Emacr:"\u0112",EmptySmallSquare:"\u25FB",EmptyVerySmallSquare:"\u25AB",Eogon:"\u0118",Eopf:"\uD835\uDD3C",Epsilon:"\u0395",Equal:"\u2A75",EqualTilde:"\u2242",Equilibrium:"\u21CC",Escr:"\u2130",Esim:"\u2A73",Eta:"\u0397",Euml:"\xCB",Exists:"\u2203",ExponentialE:"\u2147",Fcy:"\u0424",Ffr:"\uD835\uDD09",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",Fopf:"\uD835\uDD3D",ForAll:"\u2200",Fouriertrf:"\u2131",Fscr:"\u2131",GJcy:"\u0403",GT:">",Gamma:"\u0393",Gammad:"\u03DC",Gbreve:"\u011E",Gcedil:"\u0122",Gcirc:"\u011C",Gcy:"\u0413",Gdot:"\u0120",Gfr:"\uD835\uDD0A",Gg:"\u22D9",Gopf:"\uD835\uDD3E",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\uD835\uDCA2",Gt:"\u226B",HARDcy:"\u042A",Hacek:"\u02C7",Hat:"^",Hcirc:"\u0124",Hfr:"\u210C",HilbertSpace:"\u210B",Hopf:"\u210D",HorizontalLine:"\u2500",Hscr:"\u210B",Hstrok:"\u0126",HumpDownHump:"\u224E",HumpEqual:"\u224F",IEcy:"\u0415",IJlig:"\u0132",IOcy:"\u0401",Iacute:"\xCD",Icirc:"\xCE",Icy:"\u0418",Idot:"\u0130",Ifr:"\u2111",Igrave:"\xCC",Im:"\u2111",Imacr:"\u012A",ImaginaryI:"\u2148",Implies:"\u21D2",Int:"\u222C",Integral:"\u222B",Intersection:"\u22C2",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",Iogon:"\u012E",Iopf:"\uD835\uDD40",Iota:"\u0399",Iscr:"\u2110",Itilde:"\u0128",Iukcy:"\u0406",Iuml:"\xCF",Jcirc:"\u0134",Jcy:"\u0419",Jfr:"\uD835\uDD0D",Jopf:"\uD835\uDD41",Jscr:"\uD835\uDCA5",Jsercy:"\u0408",Jukcy:"\u0404",KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",Kfr:"\uD835\uDD0E",Kopf:"\uD835\uDD42",Kscr:"\uD835\uDCA6",LJcy:"\u0409",LT:"<",Lacute:"\u0139",Lambda:"\u039B",Lang:"\u27EA",Laplacetrf:"\u2112",Larr:"\u219E",Lcaron:"\u013D",Lcedil:"\u013B",Lcy:"\u041B",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",LeftRightArrow:"\u2194",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",Leftarrow:"\u21D0",Leftrightarrow:"\u21D4",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",LessLess:"\u2AA1",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",Lfr:"\uD835\uDD0F",Ll:"\u22D8",Lleftarrow:"\u21DA",Lmidot:"\u013F",LongLeftArrow:"\u27F5",LongLeftRightArrow:"\u27F7",LongRightArrow:"\u27F6",Longleftarrow:"\u27F8",Longleftrightarrow:"\u27FA",Longrightarrow:"\u27F9",Lopf:"\uD835\uDD43",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",Lscr:"\u2112",Lsh:"\u21B0",Lstrok:"\u0141",Lt:"\u226A",Map:"\u2905",Mcy:"\u041C",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\uD835\uDD10",MinusPlus:"\u2213",Mopf:"\uD835\uDD44",Mscr:"\u2133",Mu:"\u039C",NJcy:"\u040A",Nacute:"\u0143",Ncaron:"\u0147",Ncedil:"\u0145",Ncy:"\u041D",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:`
69
- `,Nfr:"\uD835\uDD11",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",Nscr:"\uD835\uDCA9",Ntilde:"\xD1",Nu:"\u039D",OElig:"\u0152",Oacute:"\xD3",Ocirc:"\xD4",Ocy:"\u041E",Odblac:"\u0150",Ofr:"\uD835\uDD12",Ograve:"\xD2",Omacr:"\u014C",Omega:"\u03A9",Omicron:"\u039F",Oopf:"\uD835\uDD46",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",Or:"\u2A54",Oscr:"\uD835\uDCAA",Oslash:"\xD8",Otilde:"\xD5",Otimes:"\u2A37",Ouml:"\xD6",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",PartialD:"\u2202",Pcy:"\u041F",Pfr:"\uD835\uDD13",Phi:"\u03A6",Pi:"\u03A0",PlusMinus:"\xB1",Poincareplane:"\u210C",Popf:"\u2119",Pr:"\u2ABB",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",Prime:"\u2033",Product:"\u220F",Proportion:"\u2237",Proportional:"\u221D",Pscr:"\uD835\uDCAB",Psi:"\u03A8",QUOT:'"',Qfr:"\uD835\uDD14",Qopf:"\u211A",Qscr:"\uD835\uDCAC",RBarr:"\u2910",REG:"\xAE",Racute:"\u0154",Rang:"\u27EB",Rarr:"\u21A0",Rarrtl:"\u2916",Rcaron:"\u0158",Rcedil:"\u0156",Rcy:"\u0420",Re:"\u211C",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",Rfr:"\u211C",Rho:"\u03A1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",Rightarrow:"\u21D2",Ropf:"\u211D",RoundImplies:"\u2970",Rrightarrow:"\u21DB",Rscr:"\u211B",Rsh:"\u21B1",RuleDelayed:"\u29F4",SHCHcy:"\u0429",SHcy:"\u0428",SOFTcy:"\u042C",Sacute:"\u015A",Sc:"\u2ABC",Scaron:"\u0160",Scedil:"\u015E",Scirc:"\u015C",Scy:"\u0421",Sfr:"\uD835\uDD16",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",Sigma:"\u03A3",SmallCircle:"\u2218",Sopf:"\uD835\uDD4A",Sqrt:"\u221A",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",Sscr:"\uD835\uDCAE",Star:"\u22C6",Sub:"\u22D0",Subset:"\u22D0",SubsetEqual:"\u2286",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",SuchThat:"\u220B",Sum:"\u2211",Sup:"\u22D1",Superset:"\u2283",SupersetEqual:"\u2287",Supset:"\u22D1",THORN:"\xDE",TRADE:"\u2122",TSHcy:"\u040B",TScy:"\u0426",Tab:"\t",Tau:"\u03A4",Tcaron:"\u0164",Tcedil:"\u0162",Tcy:"\u0422",Tfr:"\uD835\uDD17",Therefore:"\u2234",Theta:"\u0398",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",Topf:"\uD835\uDD4B",TripleDot:"\u20DB",Tscr:"\uD835\uDCAF",Tstrok:"\u0166",Uacute:"\xDA",Uarr:"\u219F",Uarrocir:"\u2949",Ubrcy:"\u040E",Ubreve:"\u016C",Ucirc:"\xDB",Ucy:"\u0423",Udblac:"\u0170",Ufr:"\uD835\uDD18",Ugrave:"\xD9",Umacr:"\u016A",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",Uopf:"\uD835\uDD4C",UpArrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",UpEquilibrium:"\u296E",UpTee:"\u22A5",UpTeeArrow:"\u21A5",Uparrow:"\u21D1",Updownarrow:"\u21D5",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",Upsilon:"\u03A5",Uring:"\u016E",Uscr:"\uD835\uDCB0",Utilde:"\u0168",Uuml:"\xDC",VDash:"\u22AB",Vbar:"\u2AEB",Vcy:"\u0412",Vdash:"\u22A9",Vdashl:"\u2AE6",Vee:"\u22C1",Verbar:"\u2016",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\uD835\uDD19",Vopf:"\uD835\uDD4D",Vscr:"\uD835\uDCB1",Vvdash:"\u22AA",Wcirc:"\u0174",Wedge:"\u22C0",Wfr:"\uD835\uDD1A",Wopf:"\uD835\uDD4E",Wscr:"\uD835\uDCB2",Xfr:"\uD835\uDD1B",Xi:"\u039E",Xopf:"\uD835\uDD4F",Xscr:"\uD835\uDCB3",YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\xDD",Ycirc:"\u0176",Ycy:"\u042B",Yfr:"\uD835\uDD1C",Yopf:"\uD835\uDD50",Yscr:"\uD835\uDCB4",Yuml:"\u0178",ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",ZeroWidthSpace:"\u200B",Zeta:"\u0396",Zfr:"\u2128",Zopf:"\u2124",Zscr:"\uD835\uDCB5",aacute:"\xE1",abreve:"\u0103",ac:"\u223E",acE:"\u223E\u0333",acd:"\u223F",acirc:"\xE2",acute:"\xB4",acy:"\u0430",aelig:"\xE6",af:"\u2061",afr:"\uD835\uDD1E",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",amacr:"\u0101",amalg:"\u2A3F",amp:"&",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",aogon:"\u0105",aopf:"\uD835\uDD52",ap:"\u2248",apE:"\u2A70",apacir:"\u2A6F",ape:"\u224A",apid:"\u224B",apos:"'",approx:"\u2248",approxeq:"\u224A",aring:"\xE5",ascr:"\uD835\uDCB6",ast:"*",asymp:"\u2248",asympeq:"\u224D",atilde:"\xE3",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",bNot:"\u2AED",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",barvee:"\u22BD",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",beta:"\u03B2",beth:"\u2136",between:"\u226C",bfr:"\uD835\uDD1F",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bopf:"\uD835\uDD53",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxDL:"\u2557",boxDR:"\u2554",boxDl:"\u2556",boxDr:"\u2553",boxH:"\u2550",boxHD:"\u2566",boxHU:"\u2569",boxHd:"\u2564",boxHu:"\u2567",boxUL:"\u255D",boxUR:"\u255A",boxUl:"\u255C",boxUr:"\u2559",boxV:"\u2551",boxVH:"\u256C",boxVL:"\u2563",boxVR:"\u2560",boxVh:"\u256B",boxVl:"\u2562",boxVr:"\u255F",boxbox:"\u29C9",boxdL:"\u2555",boxdR:"\u2552",boxdl:"\u2510",boxdr:"\u250C",boxh:"\u2500",boxhD:"\u2565",boxhU:"\u2568",boxhd:"\u252C",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxuL:"\u255B",boxuR:"\u2558",boxul:"\u2518",boxur:"\u2514",boxv:"\u2502",boxvH:"\u256A",boxvL:"\u2561",boxvR:"\u255E",boxvh:"\u253C",boxvl:"\u2524",boxvr:"\u251C",bprime:"\u2035",breve:"\u02D8",brvbar:"\xA6",bscr:"\uD835\uDCB7",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",bumpeq:"\u224F",cacute:"\u0107",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",ccaps:"\u2A4D",ccaron:"\u010D",ccedil:"\xE7",ccirc:"\u0109",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",cedil:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",cfr:"\uD835\uDD20",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",cir:"\u25CB",cirE:"\u29C3",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledR:"\xAE",circledS:"\u24C8",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",clubs:"\u2663",clubsuit:"\u2663",colon:":",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",conint:"\u222E",copf:"\uD835\uDD54",coprod:"\u2210",copy:"\xA9",copysr:"\u2117",crarr:"\u21B5",cross:"\u2717",cscr:"\uD835\uDCB8",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cup:"\u222A",cupbrcap:"\u2A48",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dArr:"\u21D3",dHar:"\u2965",dagger:"\u2020",daleth:"\u2138",darr:"\u2193",dash:"\u2010",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",dcaron:"\u010F",dcy:"\u0434",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",ddotseq:"\u2A77",deg:"\xB0",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\uD835\uDD21",dharl:"\u21C3",dharr:"\u21C2",diam:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\uD835\uDD55",dot:"\u02D9",doteq:"\u2250",doteqdot:"\u2251",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",downarrow:"\u2193",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscr:"\uD835\uDCB9",dscy:"\u0455",dsol:"\u29F6",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",dzigrarr:"\u27FF",eDDot:"\u2A77",eDot:"\u2251",eacute:"\xE9",easter:"\u2A6E",ecaron:"\u011B",ecir:"\u2256",ecirc:"\xEA",ecolon:"\u2255",ecy:"\u044D",edot:"\u0117",ee:"\u2147",efDot:"\u2252",efr:"\uD835\uDD22",eg:"\u2A9A",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",emptyv:"\u2205",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",eng:"\u014B",ensp:"\u2002",eogon:"\u0119",eopf:"\uD835\uDD56",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",equals:"=",equest:"\u225F",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erDot:"\u2253",erarr:"\u2971",escr:"\u212F",esdot:"\u2250",esim:"\u2242",eta:"\u03B7",eth:"\xF0",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",expectation:"\u2130",exponentiale:"\u2147",fallingdotseq:"\u2252",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\uD835\uDD23",filig:"\uFB01",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\uD835\uDD57",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\uD835\uDCBB",gE:"\u2267",gEl:"\u2A8C",gacute:"\u01F5",gamma:"\u03B3",gammad:"\u03DD",gap:"\u2A86",gbreve:"\u011F",gcirc:"\u011D",gcy:"\u0433",gdot:"\u0121",ge:"\u2265",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\uD835\uDD24",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",gjcy:"\u0453",gl:"\u2277",glE:"\u2A92",gla:"\u2AA5",glj:"\u2AA4",gnE:"\u2269",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",gopf:"\uD835\uDD58",grave:"`",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",hArr:"\u21D4",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",hardcy:"\u044A",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",hbar:"\u210F",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\uD835\uDD25",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\uD835\uDD59",horbar:"\u2015",hscr:"\uD835\uDCBD",hslash:"\u210F",hstrok:"\u0127",hybull:"\u2043",hyphen:"\u2010",iacute:"\xED",ic:"\u2063",icirc:"\xEE",icy:"\u0438",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",ifr:"\uD835\uDD26",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",imacr:"\u012B",image:"\u2111",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",int:"\u222B",intcal:"\u22BA",integers:"\u2124",intercal:"\u22BA",intlarhk:"\u2A17",intprod:"\u2A3C",iocy:"\u0451",iogon:"\u012F",iopf:"\uD835\uDD5A",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",iscr:"\uD835\uDCBE",isin:"\u2208",isinE:"\u22F9",isindot:"\u22F5",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",iukcy:"\u0456",iuml:"\xEF",jcirc:"\u0135",jcy:"\u0439",jfr:"\uD835\uDD27",jmath:"\u0237",jopf:"\uD835\uDD5B",jscr:"\uD835\uDCBF",jsercy:"\u0458",jukcy:"\u0454",kappa:"\u03BA",kappav:"\u03F0",kcedil:"\u0137",kcy:"\u043A",kfr:"\uD835\uDD28",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C",kopf:"\uD835\uDD5C",kscr:"\uD835\uDCC0",lAarr:"\u21DA",lArr:"\u21D0",lAtail:"\u291B",lBarr:"\u290E",lE:"\u2266",lEg:"\u2A8B",lHar:"\u2962",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",lambda:"\u03BB",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",laquo:"\xAB",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",lcedil:"\u013C",lceil:"\u2308",lcub:"{",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",leftarrow:"\u2190",leftarrowtail:"\u21A2",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",leftthreetimes:"\u22CB",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",lessgtr:"\u2276",lesssim:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lfr:"\uD835\uDD29",lg:"\u2276",lgE:"\u2A91",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnE:"\u2268",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",lopf:"\uD835\uDD5D",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\uD835\uDCC1",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltrPar:"\u2996",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",mDDot:"\u223A",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",mdash:"\u2014",measuredangle:"\u2221",mfr:"\uD835\uDD2A",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mopf:"\uD835\uDD5E",mp:"\u2213",mscr:"\uD835\uDCC2",mstpos:"\u223E",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nGg:"\u22D9\u0338",nGt:"\u226B\u20D2",nGtv:"\u226B\u0338",nLeftarrow:"\u21CD",nLeftrightarrow:"\u21CE",nLl:"\u22D8\u0338",nLt:"\u226A\u20D2",nLtv:"\u226A\u0338",nRightarrow:"\u21CF",nVDash:"\u22AF",nVdash:"\u22AE",nabla:"\u2207",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",neArr:"\u21D7",nearhk:"\u2924",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",nexist:"\u2204",nexists:"\u2204",nfr:"\uD835\uDD2B",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",ngsim:"\u2275",ngt:"\u226F",ngtr:"\u226F",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",nlArr:"\u21CD",nlE:"\u2266\u0338",nlarr:"\u219A",nldr:"\u2025",nle:"\u2270",nleftarrow:"\u219A",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nlsim:"\u2274",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nmid:"\u2224",nopf:"\uD835\uDD5F",not:"\xAC",notin:"\u2209",notinE:"\u22F9\u0338",notindot:"\u22F5\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nscr:"\uD835\uDCC3",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvDash:"\u22AD",nvHarr:"\u2904",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwArr:"\u21D6",nwarhk:"\u2923",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",oS:"\u24C8",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",ocirc:"\xF4",ocy:"\u043E",odash:"\u229D",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",ofcir:"\u29BF",ofr:"\uD835\uDD2C",ogon:"\u02DB",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",omega:"\u03C9",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",oopf:"\uD835\uDD60",opar:"\u29B7",operp:"\u29B9",oplus:"\u2295",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oscr:"\u2134",oslash:"\xF8",osol:"\u2298",otilde:"\xF5",otimes:"\u2297",otimesas:"\u2A36",ouml:"\xF6",ovbar:"\u233D",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",pfr:"\uD835\uDD2D",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",pointint:"\u2A15",popf:"\uD835\uDD61",pound:"\xA3",pr:"\u227A",prE:"\u2AB3",prap:"\u2AB7",prcue:"\u227C",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",prime:"\u2032",primes:"\u2119",prnE:"\u2AB5",prnap:"\u2AB9",prnsim:"\u22E8",prod:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",pscr:"\uD835\uDCC5",psi:"\u03C8",puncsp:"\u2008",qfr:"\uD835\uDD2E",qint:"\u2A0C",qopf:"\uD835\uDD62",qprime:"\u2057",qscr:"\uD835\uDCC6",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',rAarr:"\u21DB",rArr:"\u21D2",rAtail:"\u291C",rBarr:"\u290F",rHar:"\u2964",race:"\u223D\u0331",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",rarrw:"\u219D",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",rcedil:"\u0157",rceil:"\u2309",rcub:"}",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\xAE",rfisht:"\u297D",rfloor:"\u230B",rfr:"\uD835\uDD2F",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rho:"\u03C1",rhov:"\u03F1",rightarrow:"\u2192",rightarrowtail:"\u21A3",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",rightthreetimes:"\u22CC",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\uD835\uDD63",roplus:"\u2A2E",rotimes:"\u2A35",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",rsaquo:"\u203A",rscr:"\uD835\uDCC7",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",sbquo:"\u201A",sc:"\u227B",scE:"\u2AB4",scap:"\u2AB8",scaron:"\u0161",sccue:"\u227D",sce:"\u2AB0",scedil:"\u015F",scirc:"\u015D",scnE:"\u2AB6",scnap:"\u2ABA",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",seArr:"\u21D8",searhk:"\u2925",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfr:"\uD835\uDD30",sfrown:"\u2322",sharp:"\u266F",shchcy:"\u0449",shcy:"\u0448",shortmid:"\u2223",shortparallel:"\u2225",shy:"\xAD",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\uD835\uDD64",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",sscr:"\uD835\uDCC8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",subE:"\u2AC5",subdot:"\u2ABD",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",sum:"\u2211",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",sup:"\u2283",supE:"\u2AC6",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supedot:"\u2AC4",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swArr:"\u21D9",swarhk:"\u2926",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",target:"\u2316",tau:"\u03C4",tbrk:"\u23B4",tcaron:"\u0165",tcedil:"\u0163",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",tfr:"\uD835\uDD31",there4:"\u2234",therefore:"\u2234",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\xFE",tilde:"\u02DC",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topf:"\uD835\uDD65",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\uD835\uDCC9",tscy:"\u0446",tshcy:"\u045B",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",uArr:"\u21D1",uHar:"\u2963",uacute:"\xFA",uarr:"\u2191",ubrcy:"\u045E",ubreve:"\u016D",ucirc:"\xFB",ucy:"\u0443",udarr:"\u21C5",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",ufr:"\uD835\uDD32",ugrave:"\xF9",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",uml:"\xA8",uogon:"\u0173",uopf:"\uD835\uDD66",uparrow:"\u2191",updownarrow:"\u2195",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",upsi:"\u03C5",upsih:"\u03D2",upsilon:"\u03C5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",urtri:"\u25F9",uscr:"\uD835\uDCCA",utdot:"\u22F0",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\xFC",uwangle:"\u29A7",vArr:"\u21D5",vBar:"\u2AE8",vBarv:"\u2AE9",vDash:"\u22A8",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vcy:"\u0432",vdash:"\u22A2",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",vert:"|",vfr:"\uD835\uDD33",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vopf:"\uD835\uDD67",vprop:"\u221D",vrtri:"\u22B3",vscr:"\uD835\uDCCB",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",vzigzag:"\u299A",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",wfr:"\uD835\uDD34",wopf:"\uD835\uDD68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",wscr:"\uD835\uDCCC",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xfr:"\uD835\uDD35",xhArr:"\u27FA",xharr:"\u27F7",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xopf:"\uD835\uDD69",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",xscr:"\uD835\uDCCD",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",yacute:"\xFD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yen:"\xA5",yfr:"\uD835\uDD36",yicy:"\u0457",yopf:"\uD835\uDD6A",yscr:"\uD835\uDCCE",yucy:"\u044E",yuml:"\xFF",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeetrf:"\u2128",zeta:"\u03B6",zfr:"\uD835\uDD37",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\uD835\uDD6B",zscr:"\uD835\uDCCF",zwj:"\u200D",zwnj:"\u200C"};var f5={}.hasOwnProperty;function Uc(e){return f5.call(mv,e)?mv[e]:!1}var y={carriageReturn:-5,lineFeed:-4,carriageReturnLineFeed:-3,horizontalTab:-2,virtualSpace:-1,eof:null,nul:0,soh:1,stx:2,etx:3,eot:4,enq:5,ack:6,bel:7,bs:8,ht:9,lf:10,vt:11,ff:12,cr:13,so:14,si:15,dle:16,dc1:17,dc2:18,dc3:19,dc4:20,nak:21,syn:22,etb:23,can:24,em:25,sub:26,esc:27,fs:28,gs:29,rs:30,us:31,space:32,exclamationMark:33,quotationMark:34,numberSign:35,dollarSign:36,percentSign:37,ampersand:38,apostrophe:39,leftParenthesis:40,rightParenthesis:41,asterisk:42,plusSign:43,comma:44,dash:45,dot:46,slash:47,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,colon:58,semicolon:59,lessThan:60,equalsTo:61,greaterThan:62,questionMark:63,atSign:64,uppercaseA:65,uppercaseB:66,uppercaseC:67,uppercaseD:68,uppercaseE:69,uppercaseF:70,uppercaseG:71,uppercaseH:72,uppercaseI:73,uppercaseJ:74,uppercaseK:75,uppercaseL:76,uppercaseM:77,uppercaseN:78,uppercaseO:79,uppercaseP:80,uppercaseQ:81,uppercaseR:82,uppercaseS:83,uppercaseT:84,uppercaseU:85,uppercaseV:86,uppercaseW:87,uppercaseX:88,uppercaseY:89,uppercaseZ:90,leftSquareBracket:91,backslash:92,rightSquareBracket:93,caret:94,underscore:95,graveAccent:96,lowercaseA:97,lowercaseB:98,lowercaseC:99,lowercaseD:100,lowercaseE:101,lowercaseF:102,lowercaseG:103,lowercaseH:104,lowercaseI:105,lowercaseJ:106,lowercaseK:107,lowercaseL:108,lowercaseM:109,lowercaseN:110,lowercaseO:111,lowercaseP:112,lowercaseQ:113,lowercaseR:114,lowercaseS:115,lowercaseT:116,lowercaseU:117,lowercaseV:118,lowercaseW:119,lowercaseX:120,lowercaseY:121,lowercaseZ:122,leftCurlyBrace:123,verticalBar:124,rightCurlyBrace:125,tilde:126,del:127,byteOrderMarker:65279,replacementCharacter:65533};var ne={attentionSideAfter:2,attentionSideBefore:1,atxHeadingOpeningFenceSizeMax:6,autolinkDomainSizeMax:63,autolinkSchemeSizeMax:32,cdataOpeningString:"CDATA[",characterGroupPunctuation:2,characterGroupWhitespace:1,characterReferenceDecimalSizeMax:7,characterReferenceHexadecimalSizeMax:6,characterReferenceNamedSizeMax:31,codeFencedSequenceSizeMin:3,contentTypeContent:"content",contentTypeDocument:"document",contentTypeFlow:"flow",contentTypeString:"string",contentTypeText:"text",hardBreakPrefixSizeMin:2,htmlBasic:6,htmlCdata:5,htmlComment:2,htmlComplete:7,htmlDeclaration:4,htmlInstruction:3,htmlRawSizeMax:8,htmlRaw:1,linkResourceDestinationBalanceMax:32,linkReferenceSizeMax:999,listItemValueSizeMax:10,numericBaseDecimal:10,numericBaseHexadecimal:16,tabSize:4,thematicBreakMarkerCountMin:3,v8MaxSafeChunkSize:1e4};var h={data:"data",whitespace:"whitespace",lineEnding:"lineEnding",lineEndingBlank:"lineEndingBlank",linePrefix:"linePrefix",lineSuffix:"lineSuffix",atxHeading:"atxHeading",atxHeadingSequence:"atxHeadingSequence",atxHeadingText:"atxHeadingText",autolink:"autolink",autolinkEmail:"autolinkEmail",autolinkMarker:"autolinkMarker",autolinkProtocol:"autolinkProtocol",characterEscape:"characterEscape",characterEscapeValue:"characterEscapeValue",characterReference:"characterReference",characterReferenceMarker:"characterReferenceMarker",characterReferenceMarkerNumeric:"characterReferenceMarkerNumeric",characterReferenceMarkerHexadecimal:"characterReferenceMarkerHexadecimal",characterReferenceValue:"characterReferenceValue",codeFenced:"codeFenced",codeFencedFence:"codeFencedFence",codeFencedFenceSequence:"codeFencedFenceSequence",codeFencedFenceInfo:"codeFencedFenceInfo",codeFencedFenceMeta:"codeFencedFenceMeta",codeFlowValue:"codeFlowValue",codeIndented:"codeIndented",codeText:"codeText",codeTextData:"codeTextData",codeTextPadding:"codeTextPadding",codeTextSequence:"codeTextSequence",content:"content",definition:"definition",definitionDestination:"definitionDestination",definitionDestinationLiteral:"definitionDestinationLiteral",definitionDestinationLiteralMarker:"definitionDestinationLiteralMarker",definitionDestinationRaw:"definitionDestinationRaw",definitionDestinationString:"definitionDestinationString",definitionLabel:"definitionLabel",definitionLabelMarker:"definitionLabelMarker",definitionLabelString:"definitionLabelString",definitionMarker:"definitionMarker",definitionTitle:"definitionTitle",definitionTitleMarker:"definitionTitleMarker",definitionTitleString:"definitionTitleString",emphasis:"emphasis",emphasisSequence:"emphasisSequence",emphasisText:"emphasisText",escapeMarker:"escapeMarker",hardBreakEscape:"hardBreakEscape",hardBreakTrailing:"hardBreakTrailing",htmlFlow:"htmlFlow",htmlFlowData:"htmlFlowData",htmlText:"htmlText",htmlTextData:"htmlTextData",image:"image",label:"label",labelText:"labelText",labelLink:"labelLink",labelImage:"labelImage",labelMarker:"labelMarker",labelImageMarker:"labelImageMarker",labelEnd:"labelEnd",link:"link",paragraph:"paragraph",reference:"reference",referenceMarker:"referenceMarker",referenceString:"referenceString",resource:"resource",resourceDestination:"resourceDestination",resourceDestinationLiteral:"resourceDestinationLiteral",resourceDestinationLiteralMarker:"resourceDestinationLiteralMarker",resourceDestinationRaw:"resourceDestinationRaw",resourceDestinationString:"resourceDestinationString",resourceMarker:"resourceMarker",resourceTitle:"resourceTitle",resourceTitleMarker:"resourceTitleMarker",resourceTitleString:"resourceTitleString",setextHeading:"setextHeading",setextHeadingText:"setextHeadingText",setextHeadingLine:"setextHeadingLine",setextHeadingLineSequence:"setextHeadingLineSequence",strong:"strong",strongSequence:"strongSequence",strongText:"strongText",thematicBreak:"thematicBreak",thematicBreakSequence:"thematicBreakSequence",blockQuote:"blockQuote",blockQuotePrefix:"blockQuotePrefix",blockQuoteMarker:"blockQuoteMarker",blockQuotePrefixWhitespace:"blockQuotePrefixWhitespace",listOrdered:"listOrdered",listUnordered:"listUnordered",listItemIndent:"listItemIndent",listItemMarker:"listItemMarker",listItemPrefix:"listItemPrefix",listItemPrefixWhitespace:"listItemPrefixWhitespace",listItemValue:"listItemValue",chunkDocument:"chunkDocument",chunkContent:"chunkContent",chunkFlow:"chunkFlow",chunkText:"chunkText",chunkString:"chunkString"};var cr={ht:"\t",lf:`
70
- `,cr:"\r",space:" ",exclamationMark:"!",quotationMark:'"',numberSign:"#",dollarSign:"$",percentSign:"%",ampersand:"&",apostrophe:"'",leftParenthesis:"(",rightParenthesis:")",asterisk:"*",plusSign:"+",comma:",",dash:"-",dot:".",slash:"/",digit0:"0",digit1:"1",digit2:"2",digit3:"3",digit4:"4",digit5:"5",digit6:"6",digit7:"7",digit8:"8",digit9:"9",colon:":",semicolon:";",lessThan:"<",equalsTo:"=",greaterThan:">",questionMark:"?",atSign:"@",uppercaseA:"A",uppercaseB:"B",uppercaseC:"C",uppercaseD:"D",uppercaseE:"E",uppercaseF:"F",uppercaseG:"G",uppercaseH:"H",uppercaseI:"I",uppercaseJ:"J",uppercaseK:"K",uppercaseL:"L",uppercaseM:"M",uppercaseN:"N",uppercaseO:"O",uppercaseP:"P",uppercaseQ:"Q",uppercaseR:"R",uppercaseS:"S",uppercaseT:"T",uppercaseU:"U",uppercaseV:"V",uppercaseW:"W",uppercaseX:"X",uppercaseY:"Y",uppercaseZ:"Z",leftSquareBracket:"[",backslash:"\\",rightSquareBracket:"]",caret:"^",underscore:"_",graveAccent:"`",lowercaseA:"a",lowercaseB:"b",lowercaseC:"c",lowercaseD:"d",lowercaseE:"e",lowercaseF:"f",lowercaseG:"g",lowercaseH:"h",lowercaseI:"i",lowercaseJ:"j",lowercaseK:"k",lowercaseL:"l",lowercaseM:"m",lowercaseN:"n",lowercaseO:"o",lowercaseP:"p",lowercaseQ:"q",lowercaseR:"r",lowercaseS:"s",lowercaseT:"t",lowercaseU:"u",lowercaseV:"v",lowercaseW:"w",lowercaseX:"x",lowercaseY:"y",lowercaseZ:"z",leftCurlyBrace:"{",verticalBar:"|",rightCurlyBrace:"}",tilde:"~",replacementCharacter:"\uFFFD"};function ln(e,t,n,r){let i=e.length,o=0,s;if(t<0)t=-t>i?0:i+t;else t=t>i?i:t;if(n=n>0?n:0,r.length<ne.v8MaxSafeChunkSize)s=Array.from(r),s.unshift(t,n),e.splice(...s);else{if(n)e.splice(t,n);while(o<r.length)s=r.slice(o,o+ne.v8MaxSafeChunkSize),s.unshift(t,0),e.splice(...s),o+=ne.v8MaxSafeChunkSize,t+=ne.v8MaxSafeChunkSize}}function zn(e,t){if(e.length>0)return ln(e,e.length,0,t),e;return t}var M0={}.hasOwnProperty;function j0(e){let t={},n=-1;while(++n<e.length)g5(t,e[n]);return t}function g5(e,t){let n;for(n in t){let i=(M0.call(e,n)?e[n]:void 0)||(e[n]={}),o=t[n],s;if(o)for(s in o){if(!M0.call(i,s))i[s]=[];let c=o[s];h5(i[s],Array.isArray(c)?c:c?[c]:[])}}}function h5(e,t){let n=-1,r=[];while(++n<t.length)(t[n].add==="after"?e:r).push(t[n]);ln(e,0,0,r)}function Lf(e,t){let n=Number.parseInt(e,t);if(n<y.ht||n===y.vt||n>y.cr&&n<y.space||n>y.tilde&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111)return cr.replacementCharacter;return String.fromCodePoint(n)}function ao(e){return e.replace(/[\t\n\r ]+/g,cr.space).replace(/^ | $/g,"").toLowerCase().toUpperCase()}var lr=Qo(/[A-Za-z]/),Mn=Qo(/[\dA-Za-z]/),N0=Qo(/[#-'*+\--9=?A-Z^-~]/);function np(e){return e!==null&&(e<y.space||e===y.del)}var rp=Qo(/\d/),B0=Qo(/[\dA-Fa-f]/),_0=Qo(/[!-/:-@[-`{-~]/);function ce(e){return e!==null&&e<y.horizontalTab}function _t(e){return e!==null&&(e<y.nul||e===y.space)}function _e(e){return e===y.horizontalTab||e===y.virtualSpace||e===y.space}var F0=Qo(/\p{P}|\p{S}/u),L0=Qo(/\s/);function Qo(e){return t;function t(n){return n!==null&&n>-1&&e.test(String.fromCharCode(n))}}function qe(e,t,n,r){let i=r?r-1:Number.POSITIVE_INFINITY,o=0;return s;function s(l){if(_e(l))return e.enter(n),c(l);return t(l)}function c(l){if(_e(l)&&o++<i)return e.consume(l),c;return e.exit(n),t(l)}}var q0={tokenize:y5};function y5(e){let t=e.attempt(this.parser.constructs.contentInitial,r,i),n;return t;function r(c){if(T(c===y.eof||ce(c),"expected eol or eof"),c===y.eof){e.consume(c);return}return e.enter(h.lineEnding),e.consume(c),e.exit(h.lineEnding),qe(e,t,h.linePrefix)}function i(c){return T(c!==y.eof&&!ce(c),"expected anything other than a line ending or EOF"),e.enter(h.paragraph),o(c)}function o(c){let l=e.enter(h.chunkText,{contentType:ne.contentTypeText,previous:n});if(n)n.next=l;return n=l,s(c)}function s(c){if(c===y.eof){e.exit(h.chunkText),e.exit(h.paragraph),e.consume(c);return}if(ce(c))return e.consume(c),e.exit(h.chunkText),o;return e.consume(c),s}}var $0={tokenize:b5},Z0={tokenize:S5};function b5(e){let t=this,n=[],r=0,i,o,s;return c;function c(j){if(r<n.length){let Y=n[r];return t.containerState=Y[1],T(Y[0].continuation,"expected `continuation` to be defined on container construct"),e.attempt(Y[0].continuation,l,u)(j)}return u(j)}function l(j){if(T(t.containerState,"expected `containerState` to be defined after continuation"),r++,t.containerState._closeFlow){if(t.containerState._closeFlow=void 0,i)B();let Y=t.events.length,G=Y,I;while(G--)if(t.events[G][0]==="exit"&&t.events[G][1].type===h.chunkFlow){I=t.events[G][1].end;break}T(I,"could not find previous flow chunk"),P(r);let ee=Y;while(ee<t.events.length)t.events[ee][1].end={...I},ee++;return ln(t.events,G+1,0,t.events.slice(Y)),t.events.length=ee,u(j)}return c(j)}function u(j){if(r===n.length){if(!i)return g(j);if(i.currentConstruct&&i.currentConstruct.concrete)return v(j);t.interrupt=Boolean(i.currentConstruct&&!i._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(Z0,p,m)(j)}function p(j){if(i)B();return P(r),g(j)}function m(j){return t.parser.lazy[t.now().line]=r!==n.length,s=t.now().offset,v(j)}function g(j){return t.containerState={},e.attempt(Z0,f,v)(j)}function f(j){return T(t.currentConstruct,"expected `currentConstruct` to be defined on tokenizer"),T(t.containerState,"expected `containerState` to be defined on tokenizer"),r++,n.push([t.currentConstruct,t.containerState]),g(j)}function v(j){if(j===y.eof){if(i)B();P(0),e.consume(j);return}return i=i||t.parser.flow(t.now()),e.enter(h.chunkFlow,{_tokenizer:i,contentType:ne.contentTypeFlow,previous:o}),w(j)}function w(j){if(j===y.eof){k(e.exit(h.chunkFlow),!0),P(0),e.consume(j);return}if(ce(j))return e.consume(j),k(e.exit(h.chunkFlow)),r=0,t.interrupt=void 0,c;return e.consume(j),w}function k(j,Y){T(i,"expected `childFlow` to be defined when continuing");let G=t.sliceStream(j);if(Y)G.push(null);if(j.previous=o,o)o.next=j;if(o=j,i.defineSkip(j.start),i.write(G),t.parser.lazy[j.start.line]){let I=i.events.length;while(I--)if(i.events[I][1].start.offset<s&&(!i.events[I][1].end||i.events[I][1].end.offset>s))return;let ee=t.events.length,he=ee,Ee,We;while(he--)if(t.events[he][0]==="exit"&&t.events[he][1].type===h.chunkFlow){if(Ee){We=t.events[he][1].end;break}Ee=!0}T(We,"could not find previous flow chunk"),P(r),I=ee;while(I<t.events.length)t.events[I][1].end={...We},I++;ln(t.events,he+1,0,t.events.slice(ee)),t.events.length=I}}function P(j){let Y=n.length;while(Y-- >j){let G=n[Y];t.containerState=G[1],T(G[0].exit,"expected `exit` to be defined on container construct"),G[0].exit.call(t,e)}n.length=j}function B(){T(t.containerState,"expected `containerState` to be defined when closing flow"),T(i,"expected `childFlow` to be defined when closing it"),i.write([y.eof]),o=void 0,i=void 0,t.containerState._closeFlow=void 0}}function S5(e,t,n){return T(this.parser.constructs.disable.null,"expected `disable.null` to be populated"),qe(e,e.attempt(this.parser.constructs.document,t,n),h.linePrefix,this.parser.constructs.disable.null.includes("codeIndented")?void 0:ne.tabSize)}function Wc(e){if(e===y.eof||_t(e)||L0(e))return ne.characterGroupWhitespace;if(F0(e))return ne.characterGroupPunctuation}function Jc(e,t,n){let r=[],i=-1;while(++i<e.length){let o=e[i].resolveAll;if(o&&!r.includes(o))t=o(t,n),r.push(o)}return t}var ip={name:"attention",resolveAll:x5,tokenize:v5};function x5(e,t){let n=-1,r,i,o,s,c,l,u,p;while(++n<e.length)if(e[n][0]==="enter"&&e[n][1].type==="attentionSequence"&&e[n][1]._close){r=n;while(r--)if(e[r][0]==="exit"&&e[r][1].type==="attentionSequence"&&e[r][1]._open&&t.sliceSerialize(e[r][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[r][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;l=e[r][1].end.offset-e[r][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let m={...e[r][1].end},g={...e[n][1].start};if(U0(m,-l),U0(g,l),s={type:l>1?h.strongSequence:h.emphasisSequence,start:m,end:{...e[r][1].end}},c={type:l>1?h.strongSequence:h.emphasisSequence,start:{...e[n][1].start},end:g},o={type:l>1?h.strongText:h.emphasisText,start:{...e[r][1].end},end:{...e[n][1].start}},i={type:l>1?h.strong:h.emphasis,start:{...s.start},end:{...c.end}},e[r][1].end={...s.start},e[n][1].start={...c.end},u=[],e[r][1].end.offset-e[r][1].start.offset)u=zn(u,[["enter",e[r][1],t],["exit",e[r][1],t]]);if(u=zn(u,[["enter",i,t],["enter",s,t],["exit",s,t],["enter",o,t]]),T(t.parser.constructs.insideSpan.null,"expected `insideSpan` to be populated"),u=zn(u,Jc(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),u=zn(u,[["exit",o,t],["enter",c,t],["exit",c,t],["exit",i,t]]),e[n][1].end.offset-e[n][1].start.offset)p=2,u=zn(u,[["enter",e[n][1],t],["exit",e[n][1],t]]);else p=0;ln(e,r-1,n-r+3,u),n=r+u.length-p-2;break}}n=-1;while(++n<e.length)if(e[n][1].type==="attentionSequence")e[n][1].type="data";return e}function v5(e,t){let n=this.parser.constructs.attentionMarkers.null,r=this.previous,i=Wc(r),o;return s;function s(l){return T(l===y.asterisk||l===y.underscore,"expected asterisk or underscore"),o=l,e.enter("attentionSequence"),c(l)}function c(l){if(l===o)return e.consume(l),c;let u=e.exit("attentionSequence"),p=Wc(l);T(n,"expected `attentionMarkers` to be populated");let m=!p||p===ne.characterGroupPunctuation&&i||n.includes(l),g=!i||i===ne.characterGroupPunctuation&&p||n.includes(r);return u._open=Boolean(o===y.asterisk?m:m&&(i||!g)),u._close=Boolean(o===y.asterisk?g:g&&(p||!m)),t(l)}}function U0(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}var fv={name:"autolink",tokenize:w5};function w5(e,t,n){let r=0;return i;function i(f){return T(f===y.lessThan,"expected `<`"),e.enter(h.autolink),e.enter(h.autolinkMarker),e.consume(f),e.exit(h.autolinkMarker),e.enter(h.autolinkProtocol),o}function o(f){if(lr(f))return e.consume(f),s;if(f===y.atSign)return n(f);return u(f)}function s(f){if(f===y.plusSign||f===y.dash||f===y.dot||Mn(f))return r=1,c(f);return u(f)}function c(f){if(f===y.colon)return e.consume(f),r=0,l;if((f===y.plusSign||f===y.dash||f===y.dot||Mn(f))&&r++<ne.autolinkSchemeSizeMax)return e.consume(f),c;return r=0,u(f)}function l(f){if(f===y.greaterThan)return e.exit(h.autolinkProtocol),e.enter(h.autolinkMarker),e.consume(f),e.exit(h.autolinkMarker),e.exit(h.autolink),t;if(f===y.eof||f===y.space||f===y.lessThan||np(f))return n(f);return e.consume(f),l}function u(f){if(f===y.atSign)return e.consume(f),p;if(N0(f))return e.consume(f),u;return n(f)}function p(f){return Mn(f)?m(f):n(f)}function m(f){if(f===y.dot)return e.consume(f),r=0,p;if(f===y.greaterThan)return e.exit(h.autolinkProtocol).type=h.autolinkEmail,e.enter(h.autolinkMarker),e.consume(f),e.exit(h.autolinkMarker),e.exit(h.autolink),t;return g(f)}function g(f){if((f===y.dash||Mn(f))&&r++<ne.autolinkDomainSizeMax){let v=f===y.dash?g:m;return e.consume(f),v}return n(f)}}var Ko={partial:!0,tokenize:T5};function T5(e,t,n){return r;function r(o){return _e(o)?qe(e,i,h.linePrefix)(o):i(o)}function i(o){return o===y.eof||ce(o)?t(o):n(o)}}var qf={continuation:{tokenize:E5},exit:I5,name:"blockQuote",tokenize:C5};function C5(e,t,n){let r=this;return i;function i(s){if(s===y.greaterThan){let c=r.containerState;if(T(c,"expected `containerState` to be defined in container"),!c.open)e.enter(h.blockQuote,{_container:!0}),c.open=!0;return e.enter(h.blockQuotePrefix),e.enter(h.blockQuoteMarker),e.consume(s),e.exit(h.blockQuoteMarker),o}return n(s)}function o(s){if(_e(s))return e.enter(h.blockQuotePrefixWhitespace),e.consume(s),e.exit(h.blockQuotePrefixWhitespace),e.exit(h.blockQuotePrefix),t;return e.exit(h.blockQuotePrefix),t(s)}}function E5(e,t,n){let r=this;return i;function i(s){if(_e(s))return T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),qe(e,o,h.linePrefix,r.parser.constructs.disable.null.includes("codeIndented")?void 0:ne.tabSize)(s);return o(s)}function o(s){return e.attempt(qf,t,n)(s)}}function I5(e){e.exit(h.blockQuote)}var Zf={name:"characterEscape",tokenize:R5};function R5(e,t,n){return r;function r(o){return T(o===y.backslash,"expected `\\`"),e.enter(h.characterEscape),e.enter(h.escapeMarker),e.consume(o),e.exit(h.escapeMarker),i}function i(o){if(_0(o))return e.enter(h.characterEscapeValue),e.consume(o),e.exit(h.characterEscapeValue),e.exit(h.characterEscape),t;return n(o)}}var $f={name:"characterReference",tokenize:k5};function k5(e,t,n){let r=this,i=0,o,s;return c;function c(m){return T(m===y.ampersand,"expected `&`"),e.enter(h.characterReference),e.enter(h.characterReferenceMarker),e.consume(m),e.exit(h.characterReferenceMarker),l}function l(m){if(m===y.numberSign)return e.enter(h.characterReferenceMarkerNumeric),e.consume(m),e.exit(h.characterReferenceMarkerNumeric),u;return e.enter(h.characterReferenceValue),o=ne.characterReferenceNamedSizeMax,s=Mn,p(m)}function u(m){if(m===y.uppercaseX||m===y.lowercaseX)return e.enter(h.characterReferenceMarkerHexadecimal),e.consume(m),e.exit(h.characterReferenceMarkerHexadecimal),e.enter(h.characterReferenceValue),o=ne.characterReferenceHexadecimalSizeMax,s=B0,p;return e.enter(h.characterReferenceValue),o=ne.characterReferenceDecimalSizeMax,s=rp,p(m)}function p(m){if(m===y.semicolon&&i){let g=e.exit(h.characterReferenceValue);if(s===Mn&&!Uc(r.sliceSerialize(g)))return n(m);return e.enter(h.characterReferenceMarker),e.consume(m),e.exit(h.characterReferenceMarker),e.exit(h.characterReference),t}if(s(m)&&i++<o)return e.consume(m),p;return n(m)}}var W0={partial:!0,tokenize:A5},Uf={concrete:!0,name:"codeFenced",tokenize:P5};function P5(e,t,n){let r=this,i={partial:!0,tokenize:G},o=0,s=0,c;return l;function l(I){return u(I)}function u(I){T(I===y.graveAccent||I===y.tilde,"expected `` ` `` or `~`");let ee=r.events[r.events.length-1];return o=ee&&ee[1].type===h.linePrefix?ee[2].sliceSerialize(ee[1],!0).length:0,c=I,e.enter(h.codeFenced),e.enter(h.codeFencedFence),e.enter(h.codeFencedFenceSequence),p(I)}function p(I){if(I===c)return s++,e.consume(I),p;if(s<ne.codeFencedSequenceSizeMin)return n(I);return e.exit(h.codeFencedFenceSequence),_e(I)?qe(e,m,h.whitespace)(I):m(I)}function m(I){if(I===y.eof||ce(I))return e.exit(h.codeFencedFence),r.interrupt?t(I):e.check(W0,w,Y)(I);return e.enter(h.codeFencedFenceInfo),e.enter(h.chunkString,{contentType:ne.contentTypeString}),g(I)}function g(I){if(I===y.eof||ce(I))return e.exit(h.chunkString),e.exit(h.codeFencedFenceInfo),m(I);if(_e(I))return e.exit(h.chunkString),e.exit(h.codeFencedFenceInfo),qe(e,f,h.whitespace)(I);if(I===y.graveAccent&&I===c)return n(I);return e.consume(I),g}function f(I){if(I===y.eof||ce(I))return m(I);return e.enter(h.codeFencedFenceMeta),e.enter(h.chunkString,{contentType:ne.contentTypeString}),v(I)}function v(I){if(I===y.eof||ce(I))return e.exit(h.chunkString),e.exit(h.codeFencedFenceMeta),m(I);if(I===y.graveAccent&&I===c)return n(I);return e.consume(I),v}function w(I){return T(ce(I),"expected eol"),e.attempt(i,Y,k)(I)}function k(I){return T(ce(I),"expected eol"),e.enter(h.lineEnding),e.consume(I),e.exit(h.lineEnding),P}function P(I){return o>0&&_e(I)?qe(e,B,h.linePrefix,o+1)(I):B(I)}function B(I){if(I===y.eof||ce(I))return e.check(W0,w,Y)(I);return e.enter(h.codeFlowValue),j(I)}function j(I){if(I===y.eof||ce(I))return e.exit(h.codeFlowValue),B(I);return e.consume(I),j}function Y(I){return e.exit(h.codeFenced),t(I)}function G(I,ee,he){let Ee=0;return We;function We(Ae){return T(ce(Ae),"expected eol"),I.enter(h.lineEnding),I.consume(Ae),I.exit(h.lineEnding),Ye}function Ye(Ae){return T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),I.enter(h.codeFencedFence),_e(Ae)?qe(I,Ie,h.linePrefix,r.parser.constructs.disable.null.includes("codeIndented")?void 0:ne.tabSize)(Ae):Ie(Ae)}function Ie(Ae){if(Ae===c)return I.enter(h.codeFencedFenceSequence),se(Ae);return he(Ae)}function se(Ae){if(Ae===c)return Ee++,I.consume(Ae),se;if(Ee>=s)return I.exit(h.codeFencedFenceSequence),_e(Ae)?qe(I,ue,h.whitespace)(Ae):ue(Ae);return he(Ae)}function ue(Ae){if(Ae===y.eof||ce(Ae))return I.exit(h.codeFencedFence),ee(Ae);return he(Ae)}}}function A5(e,t,n){let r=this;return i;function i(s){if(s===y.eof)return n(s);return T(ce(s),"expected eol"),e.enter(h.lineEnding),e.consume(s),e.exit(h.lineEnding),o}function o(s){return r.parser.lazy[r.now().line]?n(s):t(s)}}var op={name:"codeIndented",tokenize:D5},O5={partial:!0,tokenize:z5};function D5(e,t,n){let r=this;return i;function i(u){return T(_e(u)),e.enter(h.codeIndented),qe(e,o,h.linePrefix,ne.tabSize+1)(u)}function o(u){let p=r.events[r.events.length-1];return p&&p[1].type===h.linePrefix&&p[2].sliceSerialize(p[1],!0).length>=ne.tabSize?s(u):n(u)}function s(u){if(u===y.eof)return l(u);if(ce(u))return e.attempt(O5,s,l)(u);return e.enter(h.codeFlowValue),c(u)}function c(u){if(u===y.eof||ce(u))return e.exit(h.codeFlowValue),s(u);return e.consume(u),c}function l(u){return e.exit(h.codeIndented),t(u)}}function z5(e,t,n){let r=this;return i;function i(s){if(r.parser.lazy[r.now().line])return n(s);if(ce(s))return e.enter(h.lineEnding),e.consume(s),e.exit(h.lineEnding),i;return qe(e,o,h.linePrefix,ne.tabSize+1)(s)}function o(s){let c=r.events[r.events.length-1];return c&&c[1].type===h.linePrefix&&c[2].sliceSerialize(c[1],!0).length>=ne.tabSize?t(s):ce(s)?i(s):n(s)}}var gv={name:"codeText",previous:J0,resolve:M5,tokenize:j5};function M5(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===h.lineEnding||e[n][1].type==="space")&&(e[t][1].type===h.lineEnding||e[t][1].type==="space")){r=n;while(++r<t)if(e[r][1].type===h.codeTextData){e[n][1].type=h.codeTextPadding,e[t][1].type=h.codeTextPadding,n+=2,t-=2;break}}r=n-1,t++;while(++r<=t)if(i===void 0){if(r!==t&&e[r][1].type!==h.lineEnding)i=r}else if(r===t||e[r][1].type===h.lineEnding){if(e[i][1].type=h.codeTextData,r!==i+2)e[i][1].end=e[r-1][1].end,e.splice(i+2,r-i-2),t-=r-i-2,r=i+2;i=void 0}return e}function J0(e){return e!==y.graveAccent||this.events[this.events.length-1][1].type===h.characterEscape}function j5(e,t,n){let r=this,i=0,o,s;return c;function c(g){return T(g===y.graveAccent,"expected `` ` ``"),T(J0.call(r,r.previous),"expected correct previous"),e.enter(h.codeText),e.enter(h.codeTextSequence),l(g)}function l(g){if(g===y.graveAccent)return e.consume(g),i++,l;return e.exit(h.codeTextSequence),u(g)}function u(g){if(g===y.eof)return n(g);if(g===y.space)return e.enter("space"),e.consume(g),e.exit("space"),u;if(g===y.graveAccent)return s=e.enter(h.codeTextSequence),o=0,m(g);if(ce(g))return e.enter(h.lineEnding),e.consume(g),e.exit(h.lineEnding),u;return e.enter(h.codeTextData),p(g)}function p(g){if(g===y.eof||g===y.space||g===y.graveAccent||ce(g))return e.exit(h.codeTextData),u(g);return e.consume(g),p}function m(g){if(g===y.graveAccent)return e.consume(g),o++,m;if(o===i)return e.exit(h.codeTextSequence),e.exit(h.codeText),t(g);return s.type=h.codeTextData,p(g)}}class hv{constructor(e){this.left=e?[...e]:[],this.right=[]}get(e){if(e<0||e>=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");if(e<this.left.length)return this.left[e];return this.right[this.right.length-e+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(e,t){let n=t===null||t===void 0?Number.POSITIVE_INFINITY:t;if(n<this.left.length)return this.left.slice(e,n);if(e>this.left.length)return this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse();return this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,Number.POSITIVE_INFINITY);if(n)sp(this.left,n);return i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),sp(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),sp(this.right,e.reverse())}setCursor(e){if(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0)return;if(e<this.left.length){let t=this.left.splice(e,Number.POSITIVE_INFINITY);sp(this.right,t.reverse())}else{let t=this.right.splice(this.left.length+this.right.length-e,Number.POSITIVE_INFINITY);sp(this.left,t.reverse())}}}function sp(e,t){let n=0;if(t.length<ne.v8MaxSafeChunkSize)e.push(...t);else while(n<t.length)e.push(...t.slice(n,n+ne.v8MaxSafeChunkSize)),n+=ne.v8MaxSafeChunkSize}function Wf(e){let t={},n=-1,r,i,o,s,c,l,u,p=new hv(e);while(++n<p.length){while(n in t)n=t[n];if(r=p.get(n),n&&r[1].type===h.chunkFlow&&p.get(n-1)[1].type===h.listItemPrefix){if(T(r[1]._tokenizer,"expected `_tokenizer` on subtokens"),l=r[1]._tokenizer.events,o=0,o<l.length&&l[o][1].type===h.lineEndingBlank)o+=2;if(o<l.length&&l[o][1].type===h.content)while(++o<l.length){if(l[o][1].type===h.content)break;if(l[o][1].type===h.chunkText)l[o][1]._isInFirstContentOfListItem=!0,o++}}if(r[0]==="enter"){if(r[1].contentType)Object.assign(t,N5(p,n)),n=t[n],u=!0}else if(r[1]._container){o=n,i=void 0;while(o--)if(s=p.get(o),s[1].type===h.lineEnding||s[1].type===h.lineEndingBlank){if(s[0]==="enter"){if(i)p.get(i)[1].type=h.lineEndingBlank;s[1].type=h.lineEnding,i=o}}else if(s[1].type===h.linePrefix||s[1].type===h.listItemIndent);else break;if(i)r[1].end={...p.get(i)[1].start},c=p.slice(i,n),c.unshift(r),p.splice(i,n-i+1,c)}}return ln(e,0,Number.POSITIVE_INFINITY,p.slice(0)),!u}function N5(e,t){let n=e.get(t)[1],r=e.get(t)[2],i=t-1,o=[];T(n.contentType,"expected `contentType` on subtokens");let s=n._tokenizer;if(!s){if(s=r.parser[n.contentType](n.start),n._contentTypeTextTrailing)s._contentTypeTextTrailing=!0}let c=s.events,l=[],u={},p,m,g=-1,f=n,v=0,w=0,k=[w];while(f){while(e.get(++i)[1]!==f);if(T(!m||f.previous===m,"expected previous to match"),T(!m||m.next===f,"expected next to match"),o.push(i),!f._tokenizer){if(p=r.sliceStream(f),!f.next)p.push(y.eof);if(m)s.defineSkip(f.start);if(f._isInFirstContentOfListItem)s._gfmTasklistFirstContentOfListItem=!0;if(s.write(p),f._isInFirstContentOfListItem)s._gfmTasklistFirstContentOfListItem=void 0}m=f,f=f.next}f=n;while(++g<c.length)if(c[g][0]==="exit"&&c[g-1][0]==="enter"&&c[g][1].type===c[g-1][1].type&&c[g][1].start.line!==c[g][1].end.line)T(f,"expected a current token"),w=g+1,k.push(w),f._tokenizer=void 0,f.previous=void 0,f=f.next;if(s.events=[],f)f._tokenizer=void 0,f.previous=void 0,T(!f.next,"expected no next token");else k.pop();g=k.length;while(g--){let P=c.slice(k[g],k[g+1]),B=o.pop();T(B!==void 0,"expected a start position when splicing"),l.push([B,B+P.length-1]),e.splice(B,2,P)}l.reverse(),g=-1;while(++g<l.length)u[v+l[g][0]]=v+l[g][1],v+=l[g][1]-l[g][0]-1;return u}var yv={resolve:_5,tokenize:F5},B5={partial:!0,tokenize:L5};function _5(e){return Wf(e),e}function F5(e,t){let n;return r;function r(c){return T(c!==y.eof&&!ce(c),"expected no eof or eol"),e.enter(h.content),n=e.enter(h.chunkContent,{contentType:ne.contentTypeContent}),i(c)}function i(c){if(c===y.eof)return o(c);if(ce(c))return e.check(B5,s,o)(c);return e.consume(c),i}function o(c){return e.exit(h.chunkContent),e.exit(h.content),t(c)}function s(c){return T(ce(c),"expected eol"),e.consume(c),e.exit(h.chunkContent),T(n,"expected previous token"),n.next=e.enter(h.chunkContent,{contentType:ne.contentTypeContent,previous:n}),n=n.next,i}}function L5(e,t,n){let r=this;return i;function i(s){return T(ce(s),"expected a line ending"),e.exit(h.chunkContent),e.enter(h.lineEnding),e.consume(s),e.exit(h.lineEnding),qe(e,o,h.linePrefix)}function o(s){if(s===y.eof||ce(s))return n(s);T(r.parser.constructs.disable.null,"expected `disable.null` to be populated");let c=r.events[r.events.length-1];if(!r.parser.constructs.disable.null.includes("codeIndented")&&c&&c[1].type===h.linePrefix&&c[2].sliceSerialize(c[1],!0).length>=ne.tabSize)return t(s);return e.interrupt(r.parser.constructs.flow,n,t)(s)}}function Jf(e,t,n,r,i,o,s,c,l){let u=l||Number.POSITIVE_INFINITY,p=0;return m;function m(P){if(P===y.lessThan)return e.enter(r),e.enter(i),e.enter(o),e.consume(P),e.exit(o),g;if(P===y.eof||P===y.space||P===y.rightParenthesis||np(P))return n(P);return e.enter(r),e.enter(s),e.enter(c),e.enter(h.chunkString,{contentType:ne.contentTypeString}),w(P)}function g(P){if(P===y.greaterThan)return e.enter(o),e.consume(P),e.exit(o),e.exit(i),e.exit(r),t;return e.enter(c),e.enter(h.chunkString,{contentType:ne.contentTypeString}),f(P)}function f(P){if(P===y.greaterThan)return e.exit(h.chunkString),e.exit(c),g(P);if(P===y.eof||P===y.lessThan||ce(P))return n(P);return e.consume(P),P===y.backslash?v:f}function v(P){if(P===y.lessThan||P===y.greaterThan||P===y.backslash)return e.consume(P),f;return f(P)}function w(P){if(!p&&(P===y.eof||P===y.rightParenthesis||_t(P)))return e.exit(h.chunkString),e.exit(c),e.exit(s),e.exit(r),t(P);if(p<u&&P===y.leftParenthesis)return e.consume(P),p++,w;if(P===y.rightParenthesis)return e.consume(P),p--,w;if(P===y.eof||P===y.space||P===y.leftParenthesis||np(P))return n(P);return e.consume(P),P===y.backslash?k:w}function k(P){if(P===y.leftParenthesis||P===y.rightParenthesis||P===y.backslash)return e.consume(P),w;return w(P)}}function Hf(e,t,n,r,i,o){let s=this,c=0,l;return u;function u(f){return T(f===y.leftSquareBracket,"expected `[`"),e.enter(r),e.enter(i),e.consume(f),e.exit(i),e.enter(o),p}function p(f){if(c>ne.linkReferenceSizeMax||f===y.eof||f===y.leftSquareBracket||f===y.rightSquareBracket&&!l||f===y.caret&&!c&&"_hiddenFootnoteSupport"in s.parser.constructs)return n(f);if(f===y.rightSquareBracket)return e.exit(o),e.enter(i),e.consume(f),e.exit(i),e.exit(r),t;if(ce(f))return e.enter(h.lineEnding),e.consume(f),e.exit(h.lineEnding),p;return e.enter(h.chunkString,{contentType:ne.contentTypeString}),m(f)}function m(f){if(f===y.eof||f===y.leftSquareBracket||f===y.rightSquareBracket||ce(f)||c++>ne.linkReferenceSizeMax)return e.exit(h.chunkString),p(f);if(e.consume(f),!l)l=!_e(f);return f===y.backslash?g:m}function g(f){if(f===y.leftSquareBracket||f===y.backslash||f===y.rightSquareBracket)return e.consume(f),c++,m;return m(f)}}function Gf(e,t,n,r,i,o){let s;return c;function c(g){if(g===y.quotationMark||g===y.apostrophe||g===y.leftParenthesis)return e.enter(r),e.enter(i),e.consume(g),e.exit(i),s=g===y.leftParenthesis?y.rightParenthesis:g,l;return n(g)}function l(g){if(g===s)return e.enter(i),e.consume(g),e.exit(i),e.exit(r),t;return e.enter(o),u(g)}function u(g){if(g===s)return e.exit(o),l(s);if(g===y.eof)return n(g);if(ce(g))return e.enter(h.lineEnding),e.consume(g),e.exit(h.lineEnding),qe(e,u,h.linePrefix);return e.enter(h.chunkString,{contentType:ne.contentTypeString}),p(g)}function p(g){if(g===s||g===y.eof||ce(g))return e.exit(h.chunkString),u(g);return e.consume(g),g===y.backslash?m:p}function m(g){if(g===s||g===y.backslash)return e.consume(g),p;return p(g)}}function ua(e,t){let n;return r;function r(i){if(ce(i))return e.enter(h.lineEnding),e.consume(i),e.exit(h.lineEnding),n=!0,r;if(_e(i))return qe(e,r,n?h.linePrefix:h.lineSuffix)(i);return t(i)}}var bv={name:"definition",tokenize:Z5},q5={partial:!0,tokenize:$5};function Z5(e,t,n){let r=this,i;return o;function o(f){return e.enter(h.definition),s(f)}function s(f){return T(f===y.leftSquareBracket,"expected `[`"),Hf.call(r,e,c,n,h.definitionLabel,h.definitionLabelMarker,h.definitionLabelString)(f)}function c(f){if(i=ao(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),f===y.colon)return e.enter(h.definitionMarker),e.consume(f),e.exit(h.definitionMarker),l;return n(f)}function l(f){return _t(f)?ua(e,u)(f):u(f)}function u(f){return Jf(e,p,n,h.definitionDestination,h.definitionDestinationLiteral,h.definitionDestinationLiteralMarker,h.definitionDestinationRaw,h.definitionDestinationString)(f)}function p(f){return e.attempt(q5,m,m)(f)}function m(f){return _e(f)?qe(e,g,h.whitespace)(f):g(f)}function g(f){if(f===y.eof||ce(f))return e.exit(h.definition),r.parser.defined.push(i),t(f);return n(f)}}function $5(e,t,n){return r;function r(c){return _t(c)?ua(e,i)(c):n(c)}function i(c){return Gf(e,o,n,h.definitionTitle,h.definitionTitleMarker,h.definitionTitleString)(c)}function o(c){return _e(c)?qe(e,s,h.whitespace)(c):s(c)}function s(c){return c===y.eof||ce(c)?t(c):n(c)}}var Sv={name:"hardBreakEscape",tokenize:U5};function U5(e,t,n){return r;function r(o){return T(o===y.backslash,"expected `\\`"),e.enter(h.hardBreakEscape),e.consume(o),i}function i(o){if(ce(o))return e.exit(h.hardBreakEscape),t(o);return n(o)}}var xv={name:"headingAtx",resolve:W5,tokenize:J5};function W5(e,t){let n=e.length-2,r=3,i,o;if(e[r][1].type===h.whitespace)r+=2;if(n-2>r&&e[n][1].type===h.whitespace)n-=2;if(e[n][1].type===h.atxHeadingSequence&&(r===n-1||n-4>r&&e[n-2][1].type===h.whitespace))n-=r+1===n?2:4;if(n>r)i={type:h.atxHeadingText,start:e[r][1].start,end:e[n][1].end},o={type:h.chunkText,start:e[r][1].start,end:e[n][1].end,contentType:ne.contentTypeText},ln(e,r,n-r+1,[["enter",i,t],["enter",o,t],["exit",o,t],["exit",i,t]]);return e}function J5(e,t,n){let r=0;return i;function i(p){return e.enter(h.atxHeading),o(p)}function o(p){return T(p===y.numberSign,"expected `#`"),e.enter(h.atxHeadingSequence),s(p)}function s(p){if(p===y.numberSign&&r++<ne.atxHeadingOpeningFenceSizeMax)return e.consume(p),s;if(p===y.eof||_t(p))return e.exit(h.atxHeadingSequence),c(p);return n(p)}function c(p){if(p===y.numberSign)return e.enter(h.atxHeadingSequence),l(p);if(p===y.eof||ce(p))return e.exit(h.atxHeading),t(p);if(_e(p))return qe(e,c,h.whitespace)(p);return e.enter(h.atxHeadingText),u(p)}function l(p){if(p===y.numberSign)return e.consume(p),l;return e.exit(h.atxHeadingSequence),c(p)}function u(p){if(p===y.eof||p===y.numberSign||_t(p))return e.exit(h.atxHeadingText),c(p);return e.consume(p),u}}var H0=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],vv=["pre","script","style","textarea"];var wv={concrete:!0,name:"htmlFlow",resolveTo:V5,tokenize:Q5},H5={partial:!0,tokenize:Y5},G5={partial:!0,tokenize:K5};function V5(e){let t=e.length;while(t--)if(e[t][0]==="enter"&&e[t][1].type===h.htmlFlow)break;if(t>1&&e[t-2][1].type===h.linePrefix)e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2);return e}function Q5(e,t,n){let r=this,i,o,s,c,l;return u;function u(E){return p(E)}function p(E){return T(E===y.lessThan,"expected `<`"),e.enter(h.htmlFlow),e.enter(h.htmlFlowData),e.consume(E),m}function m(E){if(E===y.exclamationMark)return e.consume(E),g;if(E===y.slash)return e.consume(E),o=!0,w;if(E===y.questionMark)return e.consume(E),i=ne.htmlInstruction,r.interrupt?t:C;if(lr(E))return T(E!==null),e.consume(E),s=String.fromCharCode(E),k;return n(E)}function g(E){if(E===y.dash)return e.consume(E),i=ne.htmlComment,f;if(E===y.leftSquareBracket)return e.consume(E),i=ne.htmlCdata,c=0,v;if(lr(E))return e.consume(E),i=ne.htmlDeclaration,r.interrupt?t:C;return n(E)}function f(E){if(E===y.dash)return e.consume(E),r.interrupt?t:C;return n(E)}function v(E){let Vt=ne.cdataOpeningString;if(E===Vt.charCodeAt(c++)){if(e.consume(E),c===Vt.length)return r.interrupt?t:Ie;return v}return n(E)}function w(E){if(lr(E))return T(E!==null),e.consume(E),s=String.fromCharCode(E),k;return n(E)}function k(E){if(E===y.eof||E===y.slash||E===y.greaterThan||_t(E)){let Vt=E===y.slash,jt=s.toLowerCase();if(!Vt&&!o&&vv.includes(jt))return i=ne.htmlRaw,r.interrupt?t(E):Ie(E);if(H0.includes(s.toLowerCase())){if(i=ne.htmlBasic,Vt)return e.consume(E),P;return r.interrupt?t(E):Ie(E)}return i=ne.htmlComplete,r.interrupt&&!r.parser.lazy[r.now().line]?n(E):o?B(E):j(E)}if(E===y.dash||Mn(E))return e.consume(E),s+=String.fromCharCode(E),k;return n(E)}function P(E){if(E===y.greaterThan)return e.consume(E),r.interrupt?t:Ie;return n(E)}function B(E){if(_e(E))return e.consume(E),B;return We(E)}function j(E){if(E===y.slash)return e.consume(E),We;if(E===y.colon||E===y.underscore||lr(E))return e.consume(E),Y;if(_e(E))return e.consume(E),j;return We(E)}function Y(E){if(E===y.dash||E===y.dot||E===y.colon||E===y.underscore||Mn(E))return e.consume(E),Y;return G(E)}function G(E){if(E===y.equalsTo)return e.consume(E),I;if(_e(E))return e.consume(E),G;return j(E)}function I(E){if(E===y.eof||E===y.lessThan||E===y.equalsTo||E===y.greaterThan||E===y.graveAccent)return n(E);if(E===y.quotationMark||E===y.apostrophe)return e.consume(E),l=E,ee;if(_e(E))return e.consume(E),I;return he(E)}function ee(E){if(E===l)return e.consume(E),l=null,Ee;if(E===y.eof||ce(E))return n(E);return e.consume(E),ee}function he(E){if(E===y.eof||E===y.quotationMark||E===y.apostrophe||E===y.slash||E===y.lessThan||E===y.equalsTo||E===y.greaterThan||E===y.graveAccent||_t(E))return G(E);return e.consume(E),he}function Ee(E){if(E===y.slash||E===y.greaterThan||_e(E))return j(E);return n(E)}function We(E){if(E===y.greaterThan)return e.consume(E),Ye;return n(E)}function Ye(E){if(E===y.eof||ce(E))return Ie(E);if(_e(E))return e.consume(E),Ye;return n(E)}function Ie(E){if(E===y.dash&&i===ne.htmlComment)return e.consume(E),ie;if(E===y.lessThan&&i===ne.htmlRaw)return e.consume(E),Xe;if(E===y.greaterThan&&i===ne.htmlDeclaration)return e.consume(E),pn;if(E===y.questionMark&&i===ne.htmlInstruction)return e.consume(E),C;if(E===y.rightSquareBracket&&i===ne.htmlCdata)return e.consume(E),Bn;if(ce(E)&&(i===ne.htmlBasic||i===ne.htmlComplete))return e.exit(h.htmlFlowData),e.check(H5,vn,se)(E);if(E===y.eof||ce(E))return e.exit(h.htmlFlowData),se(E);return e.consume(E),Ie}function se(E){return e.check(G5,ue,vn)(E)}function ue(E){return T(ce(E)),e.enter(h.lineEnding),e.consume(E),e.exit(h.lineEnding),Ae}function Ae(E){if(E===y.eof||ce(E))return se(E);return e.enter(h.htmlFlowData),Ie(E)}function ie(E){if(E===y.dash)return e.consume(E),C;return Ie(E)}function Xe(E){if(E===y.slash)return e.consume(E),s="",rt;return Ie(E)}function rt(E){if(E===y.greaterThan){let Vt=s.toLowerCase();if(vv.includes(Vt))return e.consume(E),pn;return Ie(E)}if(lr(E)&&s.length<ne.htmlRawSizeMax)return T(E!==null),e.consume(E),s+=String.fromCharCode(E),rt;return Ie(E)}function Bn(E){if(E===y.rightSquareBracket)return e.consume(E),C;return Ie(E)}function C(E){if(E===y.greaterThan)return e.consume(E),pn;if(E===y.dash&&i===ne.htmlComment)return e.consume(E),C;return Ie(E)}function pn(E){if(E===y.eof||ce(E))return e.exit(h.htmlFlowData),vn(E);return e.consume(E),pn}function vn(E){return e.exit(h.htmlFlow),t(E)}}function K5(e,t,n){let r=this;return i;function i(s){if(ce(s))return e.enter(h.lineEnding),e.consume(s),e.exit(h.lineEnding),o;return n(s)}function o(s){return r.parser.lazy[r.now().line]?n(s):t(s)}}function Y5(e,t,n){return r;function r(i){return T(ce(i),"expected a line ending"),e.enter(h.lineEnding),e.consume(i),e.exit(h.lineEnding),e.attempt(Ko,t,n)}}var Tv={name:"htmlText",tokenize:X5};function X5(e,t,n){let r=this,i,o,s;return c;function c(C){return T(C===y.lessThan,"expected `<`"),e.enter(h.htmlText),e.enter(h.htmlTextData),e.consume(C),l}function l(C){if(C===y.exclamationMark)return e.consume(C),u;if(C===y.slash)return e.consume(C),G;if(C===y.questionMark)return e.consume(C),j;if(lr(C))return e.consume(C),he;return n(C)}function u(C){if(C===y.dash)return e.consume(C),p;if(C===y.leftSquareBracket)return e.consume(C),o=0,v;if(lr(C))return e.consume(C),B;return n(C)}function p(C){if(C===y.dash)return e.consume(C),f;return n(C)}function m(C){if(C===y.eof)return n(C);if(C===y.dash)return e.consume(C),g;if(ce(C))return s=m,Xe(C);return e.consume(C),m}function g(C){if(C===y.dash)return e.consume(C),f;return m(C)}function f(C){return C===y.greaterThan?ie(C):C===y.dash?g(C):m(C)}function v(C){let pn=ne.cdataOpeningString;if(C===pn.charCodeAt(o++))return e.consume(C),o===pn.length?w:v;return n(C)}function w(C){if(C===y.eof)return n(C);if(C===y.rightSquareBracket)return e.consume(C),k;if(ce(C))return s=w,Xe(C);return e.consume(C),w}function k(C){if(C===y.rightSquareBracket)return e.consume(C),P;return w(C)}function P(C){if(C===y.greaterThan)return ie(C);if(C===y.rightSquareBracket)return e.consume(C),P;return w(C)}function B(C){if(C===y.eof||C===y.greaterThan)return ie(C);if(ce(C))return s=B,Xe(C);return e.consume(C),B}function j(C){if(C===y.eof)return n(C);if(C===y.questionMark)return e.consume(C),Y;if(ce(C))return s=j,Xe(C);return e.consume(C),j}function Y(C){return C===y.greaterThan?ie(C):j(C)}function G(C){if(lr(C))return e.consume(C),I;return n(C)}function I(C){if(C===y.dash||Mn(C))return e.consume(C),I;return ee(C)}function ee(C){if(ce(C))return s=ee,Xe(C);if(_e(C))return e.consume(C),ee;return ie(C)}function he(C){if(C===y.dash||Mn(C))return e.consume(C),he;if(C===y.slash||C===y.greaterThan||_t(C))return Ee(C);return n(C)}function Ee(C){if(C===y.slash)return e.consume(C),ie;if(C===y.colon||C===y.underscore||lr(C))return e.consume(C),We;if(ce(C))return s=Ee,Xe(C);if(_e(C))return e.consume(C),Ee;return ie(C)}function We(C){if(C===y.dash||C===y.dot||C===y.colon||C===y.underscore||Mn(C))return e.consume(C),We;return Ye(C)}function Ye(C){if(C===y.equalsTo)return e.consume(C),Ie;if(ce(C))return s=Ye,Xe(C);if(_e(C))return e.consume(C),Ye;return Ee(C)}function Ie(C){if(C===y.eof||C===y.lessThan||C===y.equalsTo||C===y.greaterThan||C===y.graveAccent)return n(C);if(C===y.quotationMark||C===y.apostrophe)return e.consume(C),i=C,se;if(ce(C))return s=Ie,Xe(C);if(_e(C))return e.consume(C),Ie;return e.consume(C),ue}function se(C){if(C===i)return e.consume(C),i=void 0,Ae;if(C===y.eof)return n(C);if(ce(C))return s=se,Xe(C);return e.consume(C),se}function ue(C){if(C===y.eof||C===y.quotationMark||C===y.apostrophe||C===y.lessThan||C===y.equalsTo||C===y.graveAccent)return n(C);if(C===y.slash||C===y.greaterThan||_t(C))return Ee(C);return e.consume(C),ue}function Ae(C){if(C===y.slash||C===y.greaterThan||_t(C))return Ee(C);return n(C)}function ie(C){if(C===y.greaterThan)return e.consume(C),e.exit(h.htmlTextData),e.exit(h.htmlText),t;return n(C)}function Xe(C){return T(s,"expected return state"),T(ce(C),"expected eol"),e.exit(h.htmlTextData),e.enter(h.lineEnding),e.consume(C),e.exit(h.lineEnding),rt}function rt(C){return T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),_e(C)?qe(e,Bn,h.linePrefix,r.parser.constructs.disable.null.includes("codeIndented")?void 0:ne.tabSize)(C):Bn(C)}function Bn(C){return e.enter(h.htmlTextData),s(C)}}var pa={name:"labelEnd",resolveAll:r6,resolveTo:i6,tokenize:o6},e6={tokenize:s6},t6={tokenize:a6},n6={tokenize:c6};function r6(e){let t=-1,n=[];while(++t<e.length){let r=e[t][1];if(n.push(e[t]),r.type===h.labelImage||r.type===h.labelLink||r.type===h.labelEnd){let i=r.type===h.labelImage?4:2;r.type=h.data,t+=i}}if(e.length!==n.length)ln(e,0,e.length,n);return e}function i6(e,t){let n=e.length,r=0,i,o,s,c;while(n--)if(i=e[n][1],o){if(i.type===h.link||i.type===h.labelLink&&i._inactive)break;if(e[n][0]==="enter"&&i.type===h.labelLink)i._inactive=!0}else if(s){if(e[n][0]==="enter"&&(i.type===h.labelImage||i.type===h.labelLink)&&!i._balanced){if(o=n,i.type!==h.labelLink){r=2;break}}}else if(i.type===h.labelEnd)s=n;T(o!==void 0,"`open` is supposed to be found"),T(s!==void 0,"`close` is supposed to be found");let l={type:e[o][1].type===h.labelLink?h.link:h.image,start:{...e[o][1].start},end:{...e[e.length-1][1].end}},u={type:h.label,start:{...e[o][1].start},end:{...e[s][1].end}},p={type:h.labelText,start:{...e[o+r+2][1].end},end:{...e[s-2][1].start}};return c=[["enter",l,t],["enter",u,t]],c=zn(c,e.slice(o+1,o+r+3)),c=zn(c,[["enter",p,t]]),T(t.parser.constructs.insideSpan.null,"expected `insideSpan.null` to be populated"),c=zn(c,Jc(t.parser.constructs.insideSpan.null,e.slice(o+r+4,s-3),t)),c=zn(c,[["exit",p,t],e[s-2],e[s-1],["exit",u,t]]),c=zn(c,e.slice(s+1)),c=zn(c,[["exit",l,t]]),ln(e,o,e.length,c),e}function o6(e,t,n){let r=this,i=r.events.length,o,s;while(i--)if((r.events[i][1].type===h.labelImage||r.events[i][1].type===h.labelLink)&&!r.events[i][1]._balanced){o=r.events[i][1];break}return c;function c(g){if(T(g===y.rightSquareBracket,"expected `]`"),!o)return n(g);if(o._inactive)return m(g);return s=r.parser.defined.includes(ao(r.sliceSerialize({start:o.end,end:r.now()}))),e.enter(h.labelEnd),e.enter(h.labelMarker),e.consume(g),e.exit(h.labelMarker),e.exit(h.labelEnd),l}function l(g){if(g===y.leftParenthesis)return e.attempt(e6,p,s?p:m)(g);if(g===y.leftSquareBracket)return e.attempt(t6,p,s?u:m)(g);return s?p(g):m(g)}function u(g){return e.attempt(n6,p,m)(g)}function p(g){return t(g)}function m(g){return o._balanced=!0,n(g)}}function s6(e,t,n){return r;function r(m){return T(m===y.leftParenthesis,"expected left paren"),e.enter(h.resource),e.enter(h.resourceMarker),e.consume(m),e.exit(h.resourceMarker),i}function i(m){return _t(m)?ua(e,o)(m):o(m)}function o(m){if(m===y.rightParenthesis)return p(m);return Jf(e,s,c,h.resourceDestination,h.resourceDestinationLiteral,h.resourceDestinationLiteralMarker,h.resourceDestinationRaw,h.resourceDestinationString,ne.linkResourceDestinationBalanceMax)(m)}function s(m){return _t(m)?ua(e,l)(m):p(m)}function c(m){return n(m)}function l(m){if(m===y.quotationMark||m===y.apostrophe||m===y.leftParenthesis)return Gf(e,u,n,h.resourceTitle,h.resourceTitleMarker,h.resourceTitleString)(m);return p(m)}function u(m){return _t(m)?ua(e,p)(m):p(m)}function p(m){if(m===y.rightParenthesis)return e.enter(h.resourceMarker),e.consume(m),e.exit(h.resourceMarker),e.exit(h.resource),t;return n(m)}}function a6(e,t,n){let r=this;return i;function i(c){return T(c===y.leftSquareBracket,"expected left bracket"),Hf.call(r,e,o,s,h.reference,h.referenceMarker,h.referenceString)(c)}function o(c){return r.parser.defined.includes(ao(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(c):n(c)}function s(c){return n(c)}}function c6(e,t,n){return r;function r(o){return T(o===y.leftSquareBracket,"expected left bracket"),e.enter(h.reference),e.enter(h.referenceMarker),e.consume(o),e.exit(h.referenceMarker),i}function i(o){if(o===y.rightSquareBracket)return e.enter(h.referenceMarker),e.consume(o),e.exit(h.referenceMarker),e.exit(h.reference),t;return n(o)}}var Cv={name:"labelStartImage",resolveAll:pa.resolveAll,tokenize:l6};function l6(e,t,n){let r=this;return i;function i(c){return T(c===y.exclamationMark,"expected `!`"),e.enter(h.labelImage),e.enter(h.labelImageMarker),e.consume(c),e.exit(h.labelImageMarker),o}function o(c){if(c===y.leftSquareBracket)return e.enter(h.labelMarker),e.consume(c),e.exit(h.labelMarker),e.exit(h.labelImage),s;return n(c)}function s(c){return c===y.caret&&"_hiddenFootnoteSupport"in r.parser.constructs?n(c):t(c)}}var Ev={name:"labelStartLink",resolveAll:pa.resolveAll,tokenize:u6};function u6(e,t,n){let r=this;return i;function i(s){return T(s===y.leftSquareBracket,"expected `[`"),e.enter(h.labelLink),e.enter(h.labelMarker),e.consume(s),e.exit(h.labelMarker),e.exit(h.labelLink),o}function o(s){return s===y.caret&&"_hiddenFootnoteSupport"in r.parser.constructs?n(s):t(s)}}var ap={name:"lineEnding",tokenize:p6};function p6(e,t){return n;function n(r){return T(ce(r),"expected eol"),e.enter(h.lineEnding),e.consume(r),e.exit(h.lineEnding),qe(e,t,h.linePrefix)}}var da={name:"thematicBreak",tokenize:d6};function d6(e,t,n){let r=0,i;return o;function o(u){return e.enter(h.thematicBreak),s(u)}function s(u){return T(u===y.asterisk||u===y.dash||u===y.underscore,"expected `*`, `-`, or `_`"),i=u,c(u)}function c(u){if(u===i)return e.enter(h.thematicBreakSequence),l(u);if(r>=ne.thematicBreakMarkerCountMin&&(u===y.eof||ce(u)))return e.exit(h.thematicBreak),t(u);return n(u)}function l(u){if(u===i)return e.consume(u),r++,l;return e.exit(h.thematicBreakSequence),_e(u)?qe(e,c,h.whitespace)(u):c(u)}}var Sn={continuation:{tokenize:h6},exit:b6,name:"list",tokenize:g6},m6={partial:!0,tokenize:S6},f6={partial:!0,tokenize:y6};function g6(e,t,n){let r=this,i=r.events[r.events.length-1],o=i&&i[1].type===h.linePrefix?i[2].sliceSerialize(i[1],!0).length:0,s=0;return c;function c(f){T(r.containerState,"expected state");let v=r.containerState.type||(f===y.asterisk||f===y.plusSign||f===y.dash?h.listUnordered:h.listOrdered);if(v===h.listUnordered?!r.containerState.marker||f===r.containerState.marker:rp(f)){if(!r.containerState.type)r.containerState.type=v,e.enter(v,{_container:!0});if(v===h.listUnordered)return e.enter(h.listItemPrefix),f===y.asterisk||f===y.dash?e.check(da,n,u)(f):u(f);if(!r.interrupt||f===y.digit1)return e.enter(h.listItemPrefix),e.enter(h.listItemValue),l(f)}return n(f)}function l(f){if(T(r.containerState,"expected state"),rp(f)&&++s<ne.listItemValueSizeMax)return e.consume(f),l;if((!r.interrupt||s<2)&&(r.containerState.marker?f===r.containerState.marker:f===y.rightParenthesis||f===y.dot))return e.exit(h.listItemValue),u(f);return n(f)}function u(f){return T(r.containerState,"expected state"),T(f!==y.eof,"eof (`null`) is not a marker"),e.enter(h.listItemMarker),e.consume(f),e.exit(h.listItemMarker),r.containerState.marker=r.containerState.marker||f,e.check(Ko,r.interrupt?n:p,e.attempt(m6,g,m))}function p(f){return T(r.containerState,"expected state"),r.containerState.initialBlankLine=!0,o++,g(f)}function m(f){if(_e(f))return e.enter(h.listItemPrefixWhitespace),e.consume(f),e.exit(h.listItemPrefixWhitespace),g;return n(f)}function g(f){return T(r.containerState,"expected state"),r.containerState.size=o+r.sliceSerialize(e.exit(h.listItemPrefix),!0).length,t(f)}}function h6(e,t,n){let r=this;return T(r.containerState,"expected state"),r.containerState._closeFlow=void 0,e.check(Ko,i,o);function i(c){return T(r.containerState,"expected state"),T(typeof r.containerState.size==="number","expected size"),r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,qe(e,t,h.listItemIndent,r.containerState.size+1)(c)}function o(c){if(T(r.containerState,"expected state"),r.containerState.furtherBlankLines||!_e(c))return r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,s(c);return r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(f6,t,s)(c)}function s(c){return T(r.containerState,"expected state"),r.containerState._closeFlow=!0,r.interrupt=void 0,T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),qe(e,e.attempt(Sn,t,n),h.linePrefix,r.parser.constructs.disable.null.includes("codeIndented")?void 0:ne.tabSize)(c)}}function y6(e,t,n){let r=this;return T(r.containerState,"expected state"),T(typeof r.containerState.size==="number","expected size"),qe(e,i,h.listItemIndent,r.containerState.size+1);function i(o){T(r.containerState,"expected state");let s=r.events[r.events.length-1];return s&&s[1].type===h.listItemIndent&&s[2].sliceSerialize(s[1],!0).length===r.containerState.size?t(o):n(o)}}function b6(e){T(this.containerState,"expected state"),T(typeof this.containerState.type==="string","expected type"),e.exit(this.containerState.type)}function S6(e,t,n){let r=this;return T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),qe(e,i,h.listItemPrefixWhitespace,r.parser.constructs.disable.null.includes("codeIndented")?void 0:ne.tabSize+1);function i(o){let s=r.events[r.events.length-1];return!_e(o)&&s&&s[1].type===h.listItemPrefixWhitespace?t(o):n(o)}}var Vf={name:"setextUnderline",resolveTo:x6,tokenize:v6};function x6(e,t){let n=e.length,r,i,o;while(n--)if(e[n][0]==="enter"){if(e[n][1].type===h.content){r=n;break}if(e[n][1].type===h.paragraph)i=n}else{if(e[n][1].type===h.content)e.splice(n,1);if(!o&&e[n][1].type===h.definition)o=n}T(i!==void 0,"expected a `text` index to be found"),T(r!==void 0,"expected a `text` index to be found"),T(e[r][2]===t,"enter context should be same"),T(e[e.length-1][2]===t,"enter context should be same");let s={type:h.setextHeading,start:{...e[r][1].start},end:{...e[e.length-1][1].end}};if(e[i][1].type=h.setextHeadingText,o)e.splice(i,0,["enter",s,t]),e.splice(o+1,0,["exit",e[r][1],t]),e[r][1].end={...e[o][1].end};else e[r][1]=s;return e.push(["exit",s,t]),e}function v6(e,t,n){let r=this,i;return o;function o(u){let p=r.events.length,m;T(u===y.dash||u===y.equalsTo,"expected `=` or `-`");while(p--)if(r.events[p][1].type!==h.lineEnding&&r.events[p][1].type!==h.linePrefix&&r.events[p][1].type!==h.content){m=r.events[p][1].type===h.paragraph;break}if(!r.parser.lazy[r.now().line]&&(r.interrupt||m))return e.enter(h.setextHeadingLine),i=u,s(u);return n(u)}function s(u){return e.enter(h.setextHeadingLineSequence),c(u)}function c(u){if(u===i)return e.consume(u),c;return e.exit(h.setextHeadingLineSequence),_e(u)?qe(e,l,h.lineSuffix)(u):l(u)}function l(u){if(u===y.eof||ce(u))return e.exit(h.setextHeadingLine),t(u);return n(u)}}var G0={tokenize:w6};function w6(e){let t=this,n=e.attempt(Ko,r,e.attempt(this.parser.constructs.flowInitial,i,qe(e,e.attempt(this.parser.constructs.flow,i,e.attempt(yv,i)),h.linePrefix)));return n;function r(o){if(T(o===y.eof||ce(o),"expected eol or eof"),o===y.eof){e.consume(o);return}return e.enter(h.lineEndingBlank),e.consume(o),e.exit(h.lineEndingBlank),t.currentConstruct=void 0,n}function i(o){if(T(o===y.eof||ce(o),"expected eol or eof"),o===y.eof){e.consume(o);return}return e.enter(h.lineEnding),e.consume(o),e.exit(h.lineEnding),t.currentConstruct=void 0,n}}var V0={resolveAll:X0()},Q0=Y0("string"),K0=Y0("text");function Y0(e){return{resolveAll:X0(e==="text"?T6:void 0),tokenize:t};function t(n){let r=this,i=this.parser.constructs[e],o=n.attempt(i,s,c);return s;function s(p){return u(p)?o(p):c(p)}function c(p){if(p===y.eof){n.consume(p);return}return n.enter(h.data),n.consume(p),l}function l(p){if(u(p))return n.exit(h.data),o(p);return n.consume(p),l}function u(p){if(p===y.eof)return!0;let m=i[p],g=-1;if(m){T(Array.isArray(m),"expected `disable.null` to be populated");while(++g<m.length){let f=m[g];if(!f.previous||f.previous.call(r,r.previous))return!0}}return!1}}}function X0(e){return t;function t(n,r){let i=-1,o;while(++i<=n.length)if(o===void 0){if(n[i]&&n[i][1].type===h.data)o=i,i++}else if(!n[i]||n[i][1].type!==h.data){if(i!==o+2)n[o][1].end=n[i-1][1].end,n.splice(o+2,i-o-2),i=o+2;o=void 0}return e?e(n,r):n}}function T6(e,t){let n=0;while(++n<=e.length)if((n===e.length||e[n][1].type===h.lineEnding)&&e[n-1][1].type===h.data){let r=e[n-1][1],i=t.sliceStream(r),o=i.length,s=-1,c=0,l;while(o--){let u=i[o];if(typeof u==="string"){s=u.length;while(u.charCodeAt(s-1)===y.space)c++,s--;if(s)break;s=-1}else if(u===y.horizontalTab)l=!0,c++;else if(u===y.virtualSpace);else{o++;break}}if(t._contentTypeTextTrailing&&n===e.length)c=0;if(c){let u={type:n===e.length||l||c<ne.hardBreakPrefixSizeMin?h.lineSuffix:h.hardBreakTrailing,start:{_bufferIndex:o?s:r.start._bufferIndex+s,_index:r.start._index+o,line:r.end.line,column:r.end.column-c,offset:r.end.offset-c},end:{...r.end}};if(r.end={...u.start},r.start.offset===r.end.offset)Object.assign(r,u);else e.splice(n,0,["enter",u,t],["exit",u,t]),n+=2}n++}return e}var Iv={};Ln(Iv,{attentionMarkers:()=>O6,contentInitial:()=>E6,disable:()=>D6,document:()=>C6,flow:()=>R6,flowInitial:()=>I6,insideSpan:()=>A6,string:()=>k6,text:()=>P6});var C6={[y.asterisk]:Sn,[y.plusSign]:Sn,[y.dash]:Sn,[y.digit0]:Sn,[y.digit1]:Sn,[y.digit2]:Sn,[y.digit3]:Sn,[y.digit4]:Sn,[y.digit5]:Sn,[y.digit6]:Sn,[y.digit7]:Sn,[y.digit8]:Sn,[y.digit9]:Sn,[y.greaterThan]:qf},E6={[y.leftSquareBracket]:bv},I6={[y.horizontalTab]:op,[y.virtualSpace]:op,[y.space]:op},R6={[y.numberSign]:xv,[y.asterisk]:da,[y.dash]:[Vf,da],[y.lessThan]:wv,[y.equalsTo]:Vf,[y.underscore]:da,[y.graveAccent]:Uf,[y.tilde]:Uf},k6={[y.ampersand]:$f,[y.backslash]:Zf},P6={[y.carriageReturn]:ap,[y.lineFeed]:ap,[y.carriageReturnLineFeed]:ap,[y.exclamationMark]:Cv,[y.ampersand]:$f,[y.asterisk]:ip,[y.lessThan]:[fv,Tv],[y.leftSquareBracket]:Ev,[y.backslash]:[Sv,Zf],[y.rightSquareBracket]:pa,[y.underscore]:ip,[y.graveAccent]:gv},A6={null:[ip,V0]},O6={null:[y.asterisk,y.underscore]},D6={null:[]};var gM=ed(fM(),1);var ga=gM.default("micromark");function hM(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},o=[],s=[],c=[],l=!0,u={attempt:Ee(ee),check:Ee(he),consume:Y,enter:G,exit:I,interrupt:Ee(he,{interrupt:!0})},p={code:y.eof,containerState:{},defineSkip:P,events:[],now:k,parser:e,previous:y.eof,sliceSerialize:v,sliceStream:w,write:f},m=t.tokenize.call(p,u),g;if(t.resolveAll)o.push(t);return p;function f(se){if(s=zn(s,se),B(),s[s.length-1]!==y.eof)return[];return We(t,0),p.events=Jc(o,p.events,p),p.events}function v(se,ue){return h9(w(se),ue)}function w(se){return g9(s,se)}function k(){let{_bufferIndex:se,_index:ue,line:Ae,column:ie,offset:Xe}=r;return{_bufferIndex:se,_index:ue,line:Ae,column:ie,offset:Xe}}function P(se){i[se.line]=se.column,Ie(),ga("position: define skip: `%j`",r)}function B(){let se;while(r._index<s.length){let ue=s[r._index];if(typeof ue==="string"){if(se=r._index,r._bufferIndex<0)r._bufferIndex=0;while(r._index===se&&r._bufferIndex<ue.length)j(ue.charCodeAt(r._bufferIndex))}else j(ue)}}function j(se){T(l===!0,"expected character to be consumed"),l=void 0,ga("main: passing `%s` to %s",se,m&&m.name),g=se,T(typeof m==="function","expected state"),m=m(se)}function Y(se){if(T(se===g,"expected given code to equal expected code"),ga("consume: `%s`",se),T(l===void 0,"expected code to not have been consumed: this might be because `return x(code)` instead of `return x` was used"),T(se===null?p.events.length===0||p.events[p.events.length-1][0]==="exit":p.events[p.events.length-1][0]==="enter","expected last token to be open"),ce(se))r.line++,r.column=1,r.offset+=se===y.carriageReturnLineFeed?2:1,Ie(),ga("position: after eol: `%j`",r);else if(se!==y.virtualSpace)r.column++,r.offset++;if(r._bufferIndex<0)r._index++;else if(r._bufferIndex++,r._bufferIndex===s[r._index].length)r._bufferIndex=-1,r._index++;p.previous=se,l=!0}function G(se,ue){let Ae=ue||{};return Ae.type=se,Ae.start=k(),T(typeof se==="string","expected string type"),T(se.length>0,"expected non-empty string"),ga("enter: `%s`",se),p.events.push(["enter",Ae,p]),c.push(Ae),Ae}function I(se){T(typeof se==="string","expected string type"),T(se.length>0,"expected non-empty string");let ue=c.pop();return T(ue,"cannot close w/o open tokens"),ue.end=k(),T(se===ue.type,"expected exit token to match current token"),T(!(ue.start._index===ue.end._index&&ue.start._bufferIndex===ue.end._bufferIndex),"expected non-empty token (`"+se+"`)"),ga("exit: `%s`",ue.type),p.events.push(["exit",ue,p]),ue}function ee(se,ue){We(se,ue.from)}function he(se,ue){ue.restore()}function Ee(se,ue){return Ae;function Ae(ie,Xe,rt){let Bn,C,pn,vn;return Array.isArray(ie)?Vt(ie):("tokenize"in ie)?Vt([ie]):E(ie);function E(mt){return st;function st(dn){let on=dn!==null&&mt[dn],jr=dn!==null&&mt.null,yo=[...Array.isArray(on)?on:on?[on]:[],...Array.isArray(jr)?jr:jr?[jr]:[]];return Vt(yo)(dn)}}function Vt(mt){if(Bn=mt,C=0,mt.length===0)return T(rt,"expected `bogusState` to be given"),rt;return jt(mt[C])}function jt(mt){return st;function st(dn){if(vn=Ye(),pn=mt,!mt.partial)p.currentConstruct=mt;if(T(p.parser.constructs.disable.null,"expected `disable.null` to be populated"),mt.name&&p.parser.constructs.disable.null.includes(mt.name))return _n(dn);return mt.tokenize.call(ue?Object.assign(Object.create(p),ue):p,u,dr,_n)(dn)}}function dr(mt){return T(mt===g,"expected code"),l=!0,se(pn,vn),Xe}function _n(mt){if(T(mt===g,"expected code"),l=!0,vn.restore(),++C<Bn.length)return jt(Bn[C]);return rt}}}function We(se,ue){if(se.resolveAll&&!o.includes(se))o.push(se);if(se.resolve)ln(p.events,ue,p.events.length-ue,se.resolve(p.events.slice(ue),p));if(se.resolveTo)p.events=se.resolveTo(p.events,p);T(se.partial||p.events.length===0||p.events[p.events.length-1][0]==="exit","expected last token to end")}function Ye(){let se=k(),ue=p.previous,Ae=p.currentConstruct,ie=p.events.length,Xe=Array.from(c);return{from:ie,restore:rt};function rt(){r=se,p.previous=ue,p.currentConstruct=Ae,p.events.length=ie,c=Xe,Ie(),ga("position: restore: `%j`",r)}}function Ie(){if(r.line in i&&r.column<2)r.column=i[r.line],r.offset+=i[r.line]-1}}function g9(e,t){let n=t.start._index,r=t.start._bufferIndex,i=t.end._index,o=t.end._bufferIndex,s;if(n===i)T(o>-1,"expected non-negative end buffer index"),T(r>-1,"expected non-negative start buffer index"),s=[e[n].slice(r,o)];else{if(s=e.slice(n,i),r>-1){let c=s[0];if(typeof c==="string")s[0]=c.slice(r);else T(r===0,"expected `startBufferIndex` to be `0`"),s.shift()}if(o>0)s.push(e[i].slice(0,o))}return s}function h9(e,t){let n=-1,r=[],i;while(++n<e.length){let o=e[n],s;if(typeof o==="string")s=o;else switch(o){case y.carriageReturn:{s=cr.cr;break}case y.lineFeed:{s=cr.lf;break}case y.carriageReturnLineFeed:{s=cr.cr+cr.lf;break}case y.horizontalTab:{s=t?cr.space:cr.ht;break}case y.virtualSpace:{if(!t&&i)continue;s=cr.space;break}default:T(typeof o==="number","expected number"),s=String.fromCharCode(o)}i=o===y.horizontalTab,r.push(s)}return r.join("")}function Ov(e){let r={constructs:j0([Iv,...(e||{}).extensions||[]]),content:i(q0),defined:[],document:i($0),flow:i(G0),lazy:{},string:i(Q0),text:i(K0)};return r;function i(o){return s;function s(c){return hM(r,o,c)}}}function Dv(e){while(!Wf(e));return e}var yM=/[\0\t\n\r]/g;function zv(){let e=1,t="",n=!0,r;return i;function i(o,s,c){let l=[],u,p,m,g,f;if(o=t+(typeof o==="string"?o.toString():new TextDecoder(s||void 0).decode(o)),m=0,t="",n){if(o.charCodeAt(0)===y.byteOrderMarker)m++;n=void 0}while(m<o.length){if(yM.lastIndex=m,u=yM.exec(o),g=u&&u.index!==void 0?u.index:o.length,f=o.charCodeAt(g),!u){t=o.slice(m);break}if(f===y.lf&&m===g&&r)l.push(y.carriageReturnLineFeed),r=void 0;else{if(r)l.push(y.carriageReturn),r=void 0;if(m<g)l.push(o.slice(m,g)),e+=g-m;switch(f){case y.nul:{l.push(y.replacementCharacter),e++;break}case y.ht:{p=Math.ceil(e/ne.tabSize)*ne.tabSize,l.push(y.horizontalTab);while(e++<p)l.push(y.virtualSpace);break}case y.lf:{l.push(y.lineFeed),e=1;break}default:r=!0,e=1}}m=g+1}if(c){if(r)l.push(y.carriageReturn);if(t)l.push(t);l.push(y.eof)}return l}}var y9=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function tg(e){return e.replace(y9,b9)}function b9(e,t,n){if(t)return t;if(n.charCodeAt(0)===y.numberSign){let i=n.charCodeAt(1),o=i===y.lowercaseX||i===y.uppercaseX;return Lf(n.slice(o?2:1),o?ne.numericBaseHexadecimal:ne.numericBaseDecimal)}return Uc(n)||e}function es(e){if(!e||typeof e!=="object")return"";if("position"in e||"type"in e)return bM(e.position);if("start"in e||"end"in e)return bM(e);if("line"in e||"column"in e)return Mv(e);return""}function Mv(e){return SM(e&&e.line)+":"+SM(e&&e.column)}function bM(e){return Mv(e&&e.start)+"-"+Mv(e&&e.end)}function SM(e){return e&&typeof e==="number"?e:1}var vM={}.hasOwnProperty;function jv(e,t,n){if(t&&typeof t==="object")n=t,t=void 0;return S9(n)(Dv(Ov(n).document().write(zv()(e,t,!0))))}function S9(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:o(ka),autolinkProtocol:Ee,autolinkEmail:Ee,atxHeading:o(ps),blockQuote:o(dn),characterEscape:Ee,characterReference:Ee,codeFenced:o(on),codeFencedFenceInfo:s,codeFencedFenceMeta:s,codeIndented:o(on,s),codeText:o(jr,s),codeTextData:Ee,data:Ee,codeFlowValue:Ee,definition:o(yo),definitionDestinationString:s,definitionLabelString:s,definitionTitleString:s,emphasis:o(us),hardBreakEscape:o(ds),hardBreakTrailing:o(ds),htmlFlow:o(mr,s),htmlFlowData:Ee,htmlText:o(mr,s),htmlTextData:Ee,image:o(Ra),label:s,link:o(ka),listItem:o(Pa),listItemValue:g,listOrdered:o(ms,m),listUnordered:o(ms),paragraph:o(bl),reference:E,referenceString:s,resourceDestinationString:s,resourceTitleString:s,setextHeading:o(ps),strong:o(Nr),thematicBreak:o(Aa)},exit:{atxHeading:l(),atxHeadingSequence:G,autolink:l(),autolinkEmail:st,autolinkProtocol:mt,blockQuote:l(),characterEscapeValue:We,characterReferenceMarkerHexadecimal:jt,characterReferenceMarkerNumeric:jt,characterReferenceValue:dr,characterReference:_n,codeFenced:l(k),codeFencedFence:w,codeFencedFenceInfo:f,codeFencedFenceMeta:v,codeFlowValue:We,codeIndented:l(P),codeText:l(Ae),codeTextData:We,data:We,definition:l(),definitionDestinationString:Y,definitionLabelString:B,definitionTitleString:j,emphasis:l(),hardBreakEscape:l(Ie),hardBreakTrailing:l(Ie),htmlFlow:l(se),htmlFlowData:We,htmlText:l(ue),htmlTextData:We,image:l(Xe),label:Bn,labelText:rt,lineEnding:Ye,link:l(ie),listItem:l(),listOrdered:l(),listUnordered:l(),paragraph:l(),referenceString:Vt,resourceDestinationString:C,resourceTitleString:pn,resource:vn,setextHeading:l(he),setextHeadingLineSequence:ee,setextHeadingText:I,strong:l(),thematicBreak:l()}};wM(t,(e||{}).mdastExtensions||[]);let n={};return r;function r(_){let F={type:"root",children:[]},d={stack:[F],tokenStack:[],config:t,enter:c,exit:u,buffer:s,resume:p,data:n},R=[],M=-1;while(++M<_.length)if(_[M][1].type===h.listOrdered||_[M][1].type===h.listUnordered)if(_[M][0]==="enter")R.push(M);else{let L=R.pop();T(typeof L==="number","expected list to be open"),M=i(_,L,M)}M=-1;while(++M<_.length){let L=t[_[M][0]];if(vM.call(L,_[M][1].type))L[_[M][1].type].call(Object.assign({sliceSerialize:_[M][2].sliceSerialize},d),_[M][1])}if(d.tokenStack.length>0){let L=d.tokenStack[d.tokenStack.length-1];(L[1]||xM).call(d,void 0,L[0])}F.position={start:ts(_.length>0?_[0][1].start:{line:1,column:1,offset:0}),end:ts(_.length>0?_[_.length-2][1].end:{line:1,column:1,offset:0})},M=-1;while(++M<t.transforms.length)F=t.transforms[M](F)||F;return F}function i(_,F,d){let R=F-1,M=-1,L=!1,N,Q,S,z;while(++R<=d){let J=_[R];switch(J[1].type){case h.listUnordered:case h.listOrdered:case h.blockQuote:{if(J[0]==="enter")M++;else M--;z=void 0;break}case h.lineEndingBlank:{if(J[0]==="enter"){if(N&&!z&&!M&&!S)S=R;z=void 0}break}case h.linePrefix:case h.listItemValue:case h.listItemMarker:case h.listItemPrefix:case h.listItemPrefixWhitespace:break;default:z=void 0}if(!M&&J[0]==="enter"&&J[1].type===h.listItemPrefix||M===-1&&J[0]==="exit"&&(J[1].type===h.listUnordered||J[1].type===h.listOrdered)){if(N){let Z=R;Q=void 0;while(Z--){let U=_[Z];if(U[1].type===h.lineEnding||U[1].type===h.lineEndingBlank){if(U[0]==="exit")continue;if(Q)_[Q][1].type=h.lineEndingBlank,L=!0;U[1].type=h.lineEnding,Q=Z}else if(U[1].type===h.linePrefix||U[1].type===h.blockQuotePrefix||U[1].type===h.blockQuotePrefixWhitespace||U[1].type===h.blockQuoteMarker||U[1].type===h.listItemIndent);else break}if(S&&(!Q||S<Q))N._spread=!0;N.end=Object.assign({},Q?_[Q][1].start:J[1].end),_.splice(Q||R,0,["exit",N,J[2]]),R++,d++}if(J[1].type===h.listItemPrefix){let Z={type:"listItem",_spread:!1,start:Object.assign({},J[1].start),end:void 0};N=Z,_.splice(R,0,["enter",Z,J[2]]),R++,d++,S=void 0,z=!0}}}return _[F][1]._spread=L,d}function o(_,F){return d;function d(R){if(c.call(this,_(R),R),F)F.call(this,R)}}function s(){this.stack.push({type:"fragment",children:[]})}function c(_,F,d){let R=this.stack[this.stack.length-1];T(R,"expected `parent`"),T("children"in R,"expected `parent`"),R.children.push(_),this.stack.push(_),this.tokenStack.push([F,d||void 0]),_.position={start:ts(F.start),end:void 0}}function l(_){return F;function F(d){if(_)_.call(this,d);u.call(this,d)}}function u(_,F){let d=this.stack.pop();T(d,"expected `node`");let R=this.tokenStack.pop();if(!R)throw Error("Cannot close `"+_.type+"` ("+es({start:_.start,end:_.end})+"): it\u2019s not open");else if(R[0].type!==_.type)if(F)F.call(this,_,R[0]);else(R[1]||xM).call(this,_,R[0]);T(d.type!=="fragment","unexpected fragment `exit`ed"),T(d.position,"expected `position` to be defined"),d.position.end=ts(_.end)}function p(){return so(this.stack.pop())}function m(){this.data.expectingFirstListItemValue=!0}function g(_){if(this.data.expectingFirstListItemValue){let F=this.stack[this.stack.length-2];T(F,"expected nodes on stack"),T(F.type==="list","expected list on stack"),F.start=Number.parseInt(this.sliceSerialize(_),ne.numericBaseDecimal),this.data.expectingFirstListItemValue=void 0}}function f(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="code","expected code on stack"),F.lang=_}function v(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="code","expected code on stack"),F.meta=_}function w(){if(this.data.flowCodeInside)return;this.buffer(),this.data.flowCodeInside=!0}function k(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="code","expected code on stack"),F.value=_.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function P(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="code","expected code on stack"),F.value=_.replace(/(\r?\n|\r)$/g,"")}function B(_){let F=this.resume(),d=this.stack[this.stack.length-1];T(d,"expected node on stack"),T(d.type==="definition","expected definition on stack"),d.label=F,d.identifier=ao(this.sliceSerialize(_)).toLowerCase()}function j(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="definition","expected definition on stack"),F.title=_}function Y(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="definition","expected definition on stack"),F.url=_}function G(_){let F=this.stack[this.stack.length-1];if(T(F,"expected node on stack"),T(F.type==="heading","expected heading on stack"),!F.depth){let d=this.sliceSerialize(_).length;T(d===1||d===2||d===3||d===4||d===5||d===6,"expected `depth` between `1` and `6`"),F.depth=d}}function I(){this.data.setextHeadingSlurpLineEnding=!0}function ee(_){let F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="heading","expected heading on stack"),F.depth=this.sliceSerialize(_).codePointAt(0)===y.equalsTo?1:2}function he(){this.data.setextHeadingSlurpLineEnding=void 0}function Ee(_){let F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T("children"in F,"expected parent on stack");let d=F.children,R=d[d.length-1];if(!R||R.type!=="text")R=Sl(),R.position={start:ts(_.start),end:void 0},d.push(R);this.stack.push(R)}function We(_){let F=this.stack.pop();T(F,"expected a `node` to be on the stack"),T("value"in F,"expected a `literal` to be on the stack"),T(F.position,"expected `node` to have an open position"),F.value+=this.sliceSerialize(_),F.position.end=ts(_.end)}function Ye(_){let F=this.stack[this.stack.length-1];if(T(F,"expected `node`"),this.data.atHardBreak){T("children"in F,"expected `parent`");let d=F.children[F.children.length-1];T(d.position,"expected tail to have a starting position"),d.position.end=ts(_.end),this.data.atHardBreak=void 0;return}if(!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(F.type))Ee.call(this,_),We.call(this,_)}function Ie(){this.data.atHardBreak=!0}function se(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="html","expected html on stack"),F.value=_}function ue(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="html","expected html on stack"),F.value=_}function Ae(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="inlineCode","expected inline code on stack"),F.value=_}function ie(){let _=this.stack[this.stack.length-1];if(T(_,"expected node on stack"),T(_.type==="link","expected link on stack"),this.data.inReference){let F=this.data.referenceType||"shortcut";_.type+="Reference",_.referenceType=F,delete _.url,delete _.title}else delete _.identifier,delete _.label;this.data.referenceType=void 0}function Xe(){let _=this.stack[this.stack.length-1];if(T(_,"expected node on stack"),T(_.type==="image","expected image on stack"),this.data.inReference){let F=this.data.referenceType||"shortcut";_.type+="Reference",_.referenceType=F,delete _.url,delete _.title}else delete _.identifier,delete _.label;this.data.referenceType=void 0}function rt(_){let F=this.sliceSerialize(_),d=this.stack[this.stack.length-2];T(d,"expected ancestor on stack"),T(d.type==="image"||d.type==="link","expected image or link on stack"),d.label=tg(F),d.identifier=ao(F).toLowerCase()}function Bn(){let _=this.stack[this.stack.length-1];T(_,"expected node on stack"),T(_.type==="fragment","expected fragment on stack");let F=this.resume(),d=this.stack[this.stack.length-1];if(T(d,"expected node on stack"),T(d.type==="image"||d.type==="link","expected image or link on stack"),this.data.inReference=!0,d.type==="link"){let R=_.children;d.children=R}else d.alt=F}function C(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="image"||F.type==="link","expected image or link on stack"),F.url=_}function pn(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="image"||F.type==="link","expected image or link on stack"),F.title=_}function vn(){this.data.inReference=void 0}function E(){this.data.referenceType="collapsed"}function Vt(_){let F=this.resume(),d=this.stack[this.stack.length-1];T(d,"expected node on stack"),T(d.type==="image"||d.type==="link","expected image reference or link reference on stack"),d.label=F,d.identifier=ao(this.sliceSerialize(_)).toLowerCase(),this.data.referenceType="full"}function jt(_){T(_.type==="characterReferenceMarkerNumeric"||_.type==="characterReferenceMarkerHexadecimal"),this.data.characterReferenceType=_.type}function dr(_){let F=this.sliceSerialize(_),d=this.data.characterReferenceType,R;if(d)R=Lf(F,d===h.characterReferenceMarkerNumeric?ne.numericBaseDecimal:ne.numericBaseHexadecimal),this.data.characterReferenceType=void 0;else{let L=Uc(F);T(L!==!1,"expected reference to decode"),R=L}let M=this.stack[this.stack.length-1];T(M,"expected `node`"),T("value"in M,"expected `node.value`"),M.value+=R}function _n(_){let F=this.stack.pop();T(F,"expected `node`"),T(F.position,"expected `node.position`"),F.position.end=ts(_.end)}function mt(_){We.call(this,_);let F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="link","expected link on stack"),F.url=this.sliceSerialize(_)}function st(_){We.call(this,_);let F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="link","expected link on stack"),F.url="mailto:"+this.sliceSerialize(_)}function dn(){return{type:"blockquote",children:[]}}function on(){return{type:"code",lang:null,meta:null,value:""}}function jr(){return{type:"inlineCode",value:""}}function yo(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function us(){return{type:"emphasis",children:[]}}function ps(){return{type:"heading",depth:0,children:[]}}function ds(){return{type:"break"}}function mr(){return{type:"html",value:""}}function Ra(){return{type:"image",title:null,url:"",alt:null}}function ka(){return{type:"link",title:null,url:"",children:[]}}function ms(_){return{type:"list",ordered:_.type==="listOrdered",start:null,spread:_._spread,children:[]}}function Pa(_){return{type:"listItem",spread:_._spread,checked:null,children:[]}}function bl(){return{type:"paragraph",children:[]}}function Nr(){return{type:"strong",children:[]}}function Sl(){return{type:"text",value:""}}function Aa(){return{type:"thematicBreak"}}}function ts(e){return{line:e.line,column:e.column,offset:e.offset}}function wM(e,t){let n=-1;while(++n<t.length){let r=t[n];if(Array.isArray(r))wM(e,r);else x9(e,r)}}function x9(e,t){let n;for(n in t)if(vM.call(t,n))switch(n){case"canContainEols":{let r=t[n];if(r)e[n].push(...r);break}case"transforms":{let r=t[n];if(r)e[n].push(...r);break}case"enter":case"exit":{let r=t[n];if(r)Object.assign(e[n],r);break}}}function xM(e,t){if(e)throw Error("Cannot close `"+e.type+"` ("+es({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+es({start:t.start,end:t.end})+") is open");else throw Error("Cannot close document, a token (`"+t.type+"`, "+es({start:t.start,end:t.end})+") is still open")}function ng(e){let t=this;t.parser=n;function n(r){return jv(r,{...t.data("settings"),...e,extensions:t.data("micromarkExtensions")||[],mdastExtensions:t.data("fromMarkdownExtensions")||[]})}}var TM={}.hasOwnProperty;function CM(e,t){let n=t||{};function r(i,...o){let{invalid:s,handlers:c}=r;if(i&&TM.call(i,e)){let l=String(i[e]);s=TM.call(c,l)?c[l]:r.unknown}if(s)return s.call(this,i,...o)}return r.handlers=n.handlers||{},r.invalid=n.invalid,r.unknown=n.unknown,r}var v9={}.hasOwnProperty;function Nv(e,t){let n=-1,r;if(t.extensions)while(++n<t.extensions.length)Nv(e,t.extensions[n]);for(r in t)if(v9.call(t,r))switch(r){case"extensions":break;case"unsafe":{EM(e[r],t[r]);break}case"join":{EM(e[r],t[r]);break}case"handlers":{w9(e[r],t[r]);break}default:e.options[r]=t[r]}return e}function EM(e,t){if(t)e.push(...t)}function w9(e,t){if(t)Object.assign(e,t)}function IM(e,t,n,r){let i=n.enter("blockquote"),o=n.createTracker(r);o.move("> "),o.shift(2);let s=n.indentLines(n.containerFlow(e,o.current()),T9);return i(),s}function T9(e,t,n){return">"+(n?"":" ")+e}function rg(e,t){return RM(e,t.inConstruct,!0)&&!RM(e,t.notInConstruct,!1)}function RM(e,t,n){if(typeof t==="string")t=[t];if(!t||t.length===0)return n;let r=-1;while(++r<t.length)if(e.includes(t[r]))return!0;return!1}function Bv(e,t,n,r){let i=-1;while(++i<n.unsafe.length)if(n.unsafe[i].character===`
68
+ ) THEN 1 ELSE 0 END), 0)`;let[o]=await this.db.select(i).from(O).where(H(...n));return t.signal?.throwIfAborted(),{entries:Number(o?.entries??0),values:t.values.map((s,c)=>({value:s,count:Number(o?.[`value_${c}`]??0)}))}}groupingConditions(e){let t=this.entityRegistry.getGrouping(e.grouping),n=new Set(e.entityTypes),r=t.types.filter((c)=>n.has(c)),i=[Ke(O.entityType,r),Ke(O.visibility,vi(e.visibilityScope??"public"))],o=`$.${t.field}`,s=b`CASE WHEN json_type(${O.metadata}, ${o}) = 'array' THEN json_extract(${O.metadata}, ${o}) ELSE '[]' END`;return{conditions:i,array:s}}async queryEntityHierarchy(e){let t=_3.parse(e),{entityType:n,filter:r,limit:i,offset:o,signal:s,sortFields:c}=t,l=t.prefix??null;s?.throwIfAborted();let u=s0(O.id,l),p=this.buildWhereConditions(n,void 0,r?.metadata,t.visibilityScope,void 0,r?.contentContains,r?.visibility);p.push(u.withinPrefix);let m=t.includeDescendants?[]:await this.db.select({name:u.childName,count:b`COUNT(*)`}).from(O).where(H(...p,Xm(u.directChild))).groupBy(u.childName).orderBy(Ue(u.childName)).limit(Hx+1);if(s?.throwIfAborted(),m.length>Hx)throw Error(`Entity hierarchy exceeds ${Hx} immediate folders`);let g=H(...p,...t.includeDescendants?[]:[u.directChild]),f=await this.db.select({count:b`COUNT(*)`}).from(O).where(g);s?.throwIfAborted();let v=await this.db.select({...jc(O),id:b`CAST(${O.id} AS BLOB)`}).from(O).where(g).orderBy(...this.buildOrderByClauses(c??[{field:"id",direction:"asc"}]),Ue(O.id)).limit(i).offset(o);s?.throwIfAborted();let w=new TextDecoder("utf-8",{ignoreBOM:!0}),k=await this.serializer.convertToEntities(v.map((P)=>sa({...P,id:w.decode(P.id)})),n);return s?.throwIfAborted(),{prefix:l,folders:m.map((P)=>{let B=w.decode(P.name);return{path:l?[l[0],...l.slice(1),B]:[B],name:B,descendantCount:Number(P.count)}}),entities:k.map((P)=>({entity:P,path:Jx(P.id)})),offset:o,totalEntities:Number(f[0]?.count??0)}}buildWhereConditions(e,t,n,r,i,o,s){let c=[A(O.entityType,e)];if(t)c.push(Lc(i));let l=r??"public";if(l!=="restricted")c.push(Ke(O.visibility,vi(l)));if(s)c.push(A(O.visibility,s));if(o?.trim())c.push(a0(o));if(n){for(let[u,p]of Object.entries(n))if(p!==void 0){let m=`$.${u}`;c.push(b`json_extract(${O.metadata}, ${m}) = ${p}`)}}return c}buildOrderByClauses(e){if(!e||e.length===0)return[wt(O.updated)];return e.flatMap(({field:t,direction:n,nullsFirst:r,nullsLast:i})=>{let o=n==="desc"?wt:Ue;if(t==="id")return[o(O.id)];if(t==="created"){let c=O.created;if(r)return[Ue(eo(c)),o(c)];return[o(c)]}if(t==="updated"){let c=O.updated;if(r)return[Ue(eo(c)),o(c)];return[o(c)]}let s=b`json_extract(${O.metadata}, '$.' || ${t})`;if(r)return[Ue(eo(s)),o(s)];if(i)return[wt(eo(s)),o(s)];return[o(s)]})}async countEntities(e,t={},n){let r=Ef.parse(t),i=this.buildWhereConditions(e,r.publishedOnly,r.filter?.metadata,r.filter?.visibilityScope,n,r.filter?.contentContains,r.filter?.visibility),o=await this.db.select({count:b`COUNT(*)`}).from(O).where(H(...i));return Number(o[0]?.count??0)}async getEntityCounts(e){this.logger.debug("Getting entity counts by type");let t=e??"public",n=[];if(t!=="restricted")n.push(Ke(O.visibility,vi(t)));let r=this.db.select({entityType:O.entityType,count:b`COUNT(*)`.as("count")}).from(O),i=await(n.length>0?r.where(H(...n)).groupBy(O.entityType):r.groupBy(O.entityType));return this.logger.debug(`Found ${i.length} entity types`),i.map((o)=>({entityType:o.entityType,count:Number(o.count)}))}async entityExists(e,t){return(await this.db.select({id:O.id}).from(O).where(H(A(O.entityType,e),A(O.id,t))).limit(1)).length>0}async deleteEntity(e,t){if(this.logger.debug(`Deleting entity of type ${e} with ID ${t}`),!await this.entityExists(e,t))return this.logger.debug(`Entity of type ${e} with ID ${t} not found for deletion`),!1;return await this.embeddingDb.delete(Gt).where(H(A(Gt.entityType,e),A(Gt.entityId,t))),await this.db.run(b`DELETE FROM entity_fts WHERE entity_id = ${t} AND entity_type = ${e}`),await this.db.delete(O).where(H(A(O.entityType,e),A(O.id,t))),this.logger.debug(`Deleted entity of type ${e} with ID ${t}`),!0}}var ro=a.strictObject({namespace:a.string().min(1).max(200),key:a.string().min(1).max(500)}),If=a.union([a.strictObject({operation:a.literal("none")}),a.strictObject({operation:a.enum(["create","update"]),entityType:a.string().min(1),entityId:a.string().min(1)})]);class Yu extends Error{receipt;constructor(e){super("Entity mutation already applied");this.receipt=e,this.name="EntityMutationAlreadyAppliedError"}}class Vx{db;constructor(e){this.db=e}async get(e,t=this.db){let n=ro.parse(e),r=await t.select().from(Wo).where(H(A(Wo.namespace,n.namespace),A(Wo.key,n.key))).limit(1);return r[0]?If.parse(r[0].result):null}async assertVacant(e,t){let n=await this.get(t,e);if(n)throw new Yu(n)}async record(e,t,n){let r=ro.parse(t);await e.insert(Wo).values({...r,result:If.parse(n),recordedAt:Date.now()})}async completeWithoutWrite(e){let t=ro.parse(e);await this.db.insert(Wo).values({...t,result:{operation:"none"},recordedAt:Date.now()}).onConflictDoNothing();let n=await this.get(t);if(!n)throw Error("Missing committed entity mutation receipt");return n}}function c0(e){return{...e,entity:structuredClone(e.entity),...e.options&&{options:{...e.options,...e.options.conditionalWrite&&{conditionalWrite:{...e.options.conditionalWrite}},...e.options.eventContext&&{eventContext:structuredClone(e.options.eventContext)}}}}}function Rf(e){let t=ro.parse(e.receipt);switch(e.operation){case"none":return{operation:"none",receipt:t};case"create":return{operation:"create",receipt:t,request:c0(e.request)};case"update":return{operation:"update",receipt:t,request:c0(e.request)};default:throw Error("Invalid once-only entity operation")}}import{webcrypto as u0}from"crypto";var l0="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var F3=128,Jo,Zc;function L3(e){if(e<0)throw RangeError("Wrong ID size");try{if(!Jo||Jo.length<e)Jo=Buffer.allocUnsafe(e*F3),u0.getRandomValues(Jo),Zc=0;else if(Zc+e>Jo.length)u0.getRandomValues(Jo),Zc=0}catch(t){throw Jo=void 0,t}Zc+=e}function Qx(e=21){L3(e|=0);let t="";for(let n=Zc-e;n<Zc;n++)t+=l0[Jo[n]&63];return t}function it(e=12){return Qx(e)}function Zge(e){return`${e}_${Qx(12)}`}var q3=a.object({id:a.string().min(1),entityType:a.string().min(1),contentHash:a.string().min(1)});function Z3(e){try{let t=q3.parse(JSON.parse(e.data));return{entityId:t.id,entityType:t.entityType,contentHash:t.contentHash}}catch{return null}}function p0(e){return`${e.entityType}:${e.entityId}:${e.contentHash}`}class Kx{entityDb;embeddingDb;entityRegistry;jobQueueService;logger;embeddingsEnabled;constructor(e){this.entityDb=e.entityDb,this.embeddingDb=e.embeddingDb,this.entityRegistry=e.entityRegistry,this.jobQueueService=e.jobQueueService,this.logger=e.logger,this.embeddingsEnabled=e.embeddingsEnabled}async deleteEmbedding(e,t){await this.embeddingDb.delete(Gt).where(H(A(Gt.entityType,e),A(Gt.entityId,t)))}async store(e){await this.embeddingDb.insert(Gt).values({entityId:e.entityId,entityType:e.entityType,embedding:e.embedding,contentHash:e.contentHash}).onConflictDoUpdate({target:[Gt.entityId,Gt.entityType],set:{embedding:e.embedding,contentHash:e.contentHash}})}async backfillMissing(){if(!this.embeddingsEnabled)return this.logger.debug("Skipping embedding backfill; semantic indexing is disabled"),{queued:0,skipped:0};let e=await this.getBackfillCandidates();if(e.tableMissing)return this.logger.debug("Skipping embedding backfill; entities table missing"),{queued:0,skipped:0};let t=0,n=e.skipped;for(let r of e.rowsToBackfill)if((await this.enqueue({entityId:r.id,entityType:r.entityType,contentHash:r.contentHash,operation:"update"})).jobId)t++;else n++;return{queued:t,skipped:n}}async getIndexStats(){let e=await this.getBackfillCandidates();return{missingEmbeddings:e.missingEmbeddings,staleEmbeddings:e.staleEmbeddings,failedEmbeddings:e.failedEmbeddings,embeddableEntities:e.embeddableEntities,embeddedEntities:e.embeddedEntities}}async enqueue(e){let{entityId:t,entityType:n,contentHash:r,operation:i,priority:o,maxRetries:s,eventContext:c}=e,l=this.entityRegistry.getEntityTypeConfig(n);if(!this.embeddingsEnabled||l.embeddable===!1)return this.logger.debug(`Skipping embedding for ${this.embeddingsEnabled?"non-embeddable entity type":"disabled indexing"}: ${n}:${t}`),{entityId:t,jobId:"",skipped:!1};let u={id:t,entityType:n,contentHash:r,operation:i},p=await this.jobQueueService.enqueue({type:sr.embedding,data:u,options:{...o!==void 0&&{priority:o},...s!==void 0&&{maxRetries:s},source:"entity-service",deduplication:"coalesce",deduplicationKey:`embedding:${n}:${t}:${r}`,metadata:{operationType:"data_processing",operationTarget:t,...c?.interfaceType?{interfaceType:c.interfaceType,requestedByInterface:c.interfaceType}:{},...c?.actor?{requestedByActor:c.actor,...c.actor.kind==="user"?{requestedByUserId:c.actor.userId}:{}}:{},silent:!0}}});return this.logger.debug(`Queued embedding job for ${n}:${t} (job: ${p})`),{entityId:t,jobId:p,skipped:!1}}async getBackfillCandidates(){if(!await this.hasEntityTable())return{tableMissing:!0,skipped:0,rowsToBackfill:[],missingEmbeddings:0,staleEmbeddings:0,failedEmbeddings:0,embeddableEntities:0,embeddedEntities:0};let e=await this.getFailedEmbeddingKeys(),t=await this.entityDb.select({id:O.id,entityType:O.entityType,contentHash:O.contentHash}).from(O),n=await this.embeddingDb.select({entityId:Gt.entityId,entityType:Gt.entityType,contentHash:Gt.contentHash}).from(Gt),r=new Map;for(let m of n)r.set(`${m.entityType}:${m.entityId}`,m.contentHash);let i=[],o=0,s=0,c=0,l=0,u=0,p=0;for(let m of t){if(this.entityRegistry.getEntityTypeConfig(m.entityType).embeddable===!1){o++;continue}u++;let f=p0({entityId:m.id,entityType:m.entityType,contentHash:m.contentHash}),v=e.has(f),w=r.get(`${m.entityType}:${m.id}`);if(w===void 0){if(v)l++,o++;else s++,i.push(m);continue}if(w!==m.contentHash){if(v)l++,o++;else c++,i.push(m);continue}p++,o++}return{tableMissing:!1,skipped:o,rowsToBackfill:i,missingEmbeddings:s,staleEmbeddings:c,failedEmbeddings:l,embeddableEntities:u,embeddedEntities:p}}async getFailedEmbeddingKeys(){let e=await this.jobQueueService.getFailedJobs([sr.embedding]),t=new Set;for(let n of e){let r=Z3(n);if(r)t.add(p0(r))}return t}async hasEntityTable(){return(await this.entityDb.all(b`SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'entities'`)).length>0}}var kf=a.object({expectedRevision:a.string().min(1).nullable()});class ar extends Error{constructor(e,t){super(`Entity write conflict: ${e}/${t}`);this.name="EntityWriteConflictError"}}async function Pf(e,t,n){if(n.entityType!==t.entityType||n.id!==t.entityId)throw Error("Entity validation changed the conditional write destination");let i=(await e.select().from(O).where(H(A(O.entityType,t.entityType),A(O.id,t.entityId))).limit(1))[0];if((i?ir(sa(i)):null)!==t.expectedRevision)throw new ar(t.entityType,t.entityId)}async function Af(e,t,n){try{await e.getPersistValidator(t.entityType)?.(t,{operation:n})}catch(r){if(VO(r))throw r;throw Pc(t.entityType,r,"persist")??r}}function $3(e){for(let t=e;t instanceof Error;t=t.cause)if(t.message.includes("UNIQUE constraint failed")||t.message.includes("SQLITE_CONSTRAINT"))return!0;return!1}class Xu extends Error{}var U3=a.strictObject({entityType:a.string().min(1),id:a.string().min(1),expectedRevision:a.string().min(1)});class Yx{db;mutationReceipts;entityRegistry;entitySerializer;entityQueries;messageBus;mutationAdmission;projectionStore;assetRepository;entityExportStore;projectionNow;embeddingIndex;projectionWakeup;logger;constructor(e){if(this.db=e.db,this.mutationReceipts=new Vx(e.db),this.entityRegistry=e.entityRegistry,this.entitySerializer=e.entitySerializer,this.entityQueries=e.entityQueries,this.projectionStore=e.projectionStore,this.assetRepository=e.assetRepository,this.entityExportStore=e.entityExportStore,this.projectionNow=e.projectionNow,this.logger=e.logger.child("EntityMutations"),this.embeddingIndex=new Kx({entityDb:e.db,embeddingDb:e.embeddingDb,entityRegistry:e.entityRegistry,jobQueueService:e.jobQueueService,logger:this.logger,embeddingsEnabled:e.embeddingsEnabled}),e.messageBus)this.messageBus=e.messageBus;if(e.mutationAdmission)this.mutationAdmission=e.mutationAdmission}setProjectionWakeup(e){this.projectionWakeup=e;let t=!0;return()=>{if(!t)return;if(t=!1,this.projectionWakeup===e)this.projectionWakeup=void 0}}getEntityMutationReceipt(e){return this.mutationReceipts.get(e)}async applyEntityMutationOnce(e){let t=Rf(e),n=t.receipt,r=await this.mutationReceipts.get(n);if(r)return{receipt:r,applied:!1};if(t.operation==="none")return{receipt:await this.mutationReceipts.completeWithoutWrite(n),applied:!1};try{let i=t.operation==="create"?await this.writeCreatedEntity(t.request,n):await this.writeUpdatedEntity(t.request,void 0,n);if(i.skipReason==="content-conflict")throw new ar(t.request.entity.entityType,i.entityId);let o=await this.mutationReceipts.get(n);if(!o)throw Error("Missing committed entity mutation receipt");return{receipt:o,applied:!0}}catch(i){if(i instanceof Yu)return{receipt:i.receipt,applied:!1};throw i}}createEntity(e){return this.writeCreatedEntity(e)}async writeCreatedEntity(e,t){let{entity:n,options:r,preparedAsset:i}=e;r?.signal?.throwIfAborted();let o=r?.conditionalWrite&&kf.parse(r.conditionalWrite);if(o&&(o.expectedRevision!==null||r.deduplicateId||!n.id))throw Error("Conditional creation requires an explicit ID, an absent precondition, and no deduplication");let s=o?{...o,entityType:n.entityType,entityId:n.id??""}:void 0;this.logger.debug(`Creating entity asynchronously of type: ${n.entityType}`);let c=this.entityRegistry.captureGroupingWriteGuard(n.entityType),l=new Date().toISOString(),u={...n,id:n.id??it(),created:n.created??l,updated:n.updated??l,contentHash:Ei(n.content)},p=this.entityRegistry.validateEntity(n.entityType,u);await Af(this.entityRegistry,p,"create"),r?.signal?.throwIfAborted();let{markdown:m,metadata:g}=this.entitySerializer.prepareEntityForStorage(p,p.entityType),f=Ei(m),v=this.stageAsset(p.entityType,p.content,m,i),w=p.id;if(r?.deduplicateId)w=await this.resolveUniqueId(p.id,p.entityType);return await this.mutationAdmission?.assertMutationAdmission({operation:"create",entityType:p.entityType,entityId:w}),await this.projectionStore.withDirtyInput({sourceType:p.entityType,sourceId:w,revision:ir({contentHash:f,metadata:g,visibility:p.visibility}),operation:"upsert",markedAt:this.projectionNow()},async(k)=>{if(t)await this.mutationReceipts.assertVacant(k,t);if(s)await Pf(k,s,p);if(await this.bindAssetContent(k,p.entityType,m,v),await r?.beforeWrite?.({...p,id:w,content:m,contentHash:f,metadata:g}),r?.signal?.throwIfAborted(),await c(),r?.signal?.throwIfAborted(),await k.insert(O).values({id:w,entityType:p.entityType,content:m,contentHash:f,visibility:p.visibility,metadata:g,created:new Date(p.created).getTime(),updated:new Date(p.updated).getTime()}),await this.syncFtsIndex(k,w,p.entityType,m),await this.persistEntityExport(k,{entityType:p.entityType,entityId:w,operation:"upsert"},r?.persistenceOrigin),t)await this.mutationReceipts.record(k,t,{operation:"create",entityType:p.entityType,entityId:w})}),await this.notifyProjectionScheduler(),this.logger.debug(`Persisted entity ${p.entityType}:${w} immediately`),await this.emitEntityEvent(Ri.created,p.entityType,w,{...p,id:w},void 0,r?.eventContext),this.embeddingIndex.enqueue({entityId:w,entityType:p.entityType,contentHash:f,operation:"create",...r?.priority!==void 0&&{priority:r.priority},...r?.maxRetries!==void 0&&{maxRetries:r.maxRetries},...r?.eventContext&&{eventContext:r.eventContext}})}updateEntity(e){return this.writeUpdatedEntity(e)}async foldEntity(e){let t=U3.parse(e.source),n=a.string().min(1).parse(e.targetRevision),r=structuredClone(e.entity),i={...e.options};if(t.entityType!==r.entityType||t.id===r.id)throw Error("A fold requires two distinct entities of the same type");i.signal?.throwIfAborted();let o=await this.entityQueries.getEntityData(t.entityType,t.id,"restricted");if(!o||ir(o)!==t.expectedRevision)throw new ar(t.entityType,t.id);let s=await this.entitySerializer.convertToEntity(o);if(s?.visibility!==r.visibility)throw Error("A fold cannot cross visibility scopes");return await this.mutationAdmission?.assertMutationAdmission({operation:"delete",entityType:t.entityType,entityId:t.id}),this.writeUpdatedEntity({entity:r,options:{...i,conditionalWrite:{expectedRevision:n}}},{condition:{entityType:t.entityType,entityId:t.id,expectedRevision:t.expectedRevision},prior:s})}async writeUpdatedEntity(e,t,n){let{entity:r,options:i,preparedAsset:o}=e;i?.signal?.throwIfAborted();let s=i?.conditionalWrite&&kf.parse(i.conditionalWrite);if(s&&(s.expectedRevision===null||i.expectedContentHash!==void 0))throw Error("Conditional replacement requires a revision and cannot combine preconditions");let c=s?{...s,entityType:r.entityType,entityId:r.id}:void 0;this.logger.debug(`Updating entity asynchronously: ${r.entityType} with ID ${r.id}`);let l=this.entityRegistry.captureGroupingWriteGuard(r.entityType),u={...r,updated:new Date().toISOString(),contentHash:Ei(r.content)},p=this.entityRegistry.validateEntity(r.entityType,u);await Af(this.entityRegistry,p,"update"),i?.signal?.throwIfAborted();let{markdown:m,metadata:g}=this.entitySerializer.prepareEntityForStorage(p,p.entityType),f=Ei(m),w=(await this.db.select({contentHash:O.contentHash,visibility:O.visibility,metadata:O.metadata}).from(O).where(H(A(O.id,p.id),A(O.entityType,p.entityType))).limit(1)).at(0);if(!w){if(c)throw new ar(c.entityType,c.entityId);throw Error(`Entity not found: ${p.entityType}:${p.id}`)}if(i?.expectedContentHash!==void 0&&w.contentHash!==i.expectedContentHash)return this.logger.debug(`Skipping stale update for ${p.entityType}:${p.id}`),{entityId:p.id,jobId:"",skipped:!0,skipReason:"content-conflict"};if(t&&(p.visibility!==t.prior.visibility||w.visibility!==t.prior.visibility))throw new ar(p.entityType,p.id);let k=this.stageAsset(p.entityType,p.content,m,o);if(!c&&!n&&w.contentHash===f&&w.visibility===p.visibility&&ia(w.metadata)===ia(g)){if(await this.projectionStore.transferEntityAuthority({entityType:p.entityType,id:p.id},async(P)=>(i?.signal?.throwIfAborted(),await l(),await this.bindAssetContent(P,p.entityType,m,k),i?.signal?.throwIfAborted(),await this.pruneFtsIndexIfExcluded(P,p.id,p.entityType),this.persistEntityExport(P,{entityType:p.entityType,entityId:p.id,operation:"upsert"},i?.persistenceOrigin))),this.logger.debug(`Skipping no-op update for ${p.entityType}:${p.id}`),i?.eventContext)await this.emitEntityEvent(Ri.updated,p.entityType,p.id,p,w.metadata,i.eventContext);return{entityId:p.id,jobId:"",skipped:!0}}await this.mutationAdmission?.assertMutationAdmission({operation:"update",entityType:p.entityType,entityId:p.id});try{await this.projectionStore.withDirtyInputs([{sourceType:p.entityType,sourceId:p.id,revision:ir({contentHash:f,metadata:g,visibility:p.visibility}),operation:"upsert",markedAt:this.projectionNow()},...t?[{sourceType:t.condition.entityType,sourceId:t.condition.entityId,revision:`deleted:${t.condition.expectedRevision}`,operation:"delete",markedAt:this.projectionNow()}]:[]],async(P)=>{if(n)await this.mutationReceipts.assertVacant(P,n);if(t)await Pf(P,t.condition,t.prior);if(c)await Pf(P,c,p);await this.bindAssetContent(P,p.entityType,m,k),await i?.beforeWrite?.({...p,content:m,contentHash:f,metadata:g}),i?.signal?.throwIfAborted(),await l(),i?.signal?.throwIfAborted();let B=await P.update(O).set({content:m,contentHash:f,visibility:p.visibility,metadata:g,updated:new Date(p.updated).getTime()}).where(H(A(O.id,p.id),A(O.entityType,p.entityType),i?.expectedContentHash!==void 0?A(O.contentHash,i.expectedContentHash):void 0));if((s||i?.expectedContentHash!==void 0)&&Number(B.rowsAffected)===0){if(c)throw new ar(c.entityType,c.entityId);throw new Xu}if(t)await P.delete(O).where(H(A(O.entityType,t.prior.entityType),A(O.id,t.prior.id))),await this.deleteFtsIndex(P,t.prior.id,t.prior.entityType),await this.persistEntityExport(P,{entityType:t.prior.entityType,entityId:t.prior.id,operation:"delete"},i?.persistenceOrigin);if(await this.syncFtsIndex(P,p.id,p.entityType,m),await this.persistEntityExport(P,{entityType:p.entityType,entityId:p.id,operation:"upsert"},i?.persistenceOrigin),n)await this.mutationReceipts.record(P,n,{operation:"update",entityType:p.entityType,entityId:p.id})})}catch(P){if(!(P instanceof Xu))throw P;return this.logger.debug(`Skipping concurrently stale update for ${p.entityType}:${p.id}`),{entityId:p.id,jobId:"",skipped:!0,skipReason:"content-conflict"}}if(t)await this.embeddingIndex.deleteEmbedding(t.prior.entityType,t.prior.id);if(await this.notifyProjectionScheduler(),t)await this.emitEntityEvent(Ri.deleted,t.prior.entityType,t.prior.id,t.prior,void 0,i?.eventContext);return this.logger.debug(`Updated entity ${p.entityType}:${p.id} immediately`),await this.emitEntityEvent(Ri.updated,p.entityType,p.id,p,w.metadata,i?.eventContext),this.embeddingIndex.enqueue({entityId:p.id,entityType:p.entityType,contentHash:f,operation:"update",...i?.priority!==void 0&&{priority:i.priority},...i?.maxRetries!==void 0&&{maxRetries:i.maxRetries},...i?.eventContext&&{eventContext:i.eventContext}})}async deleteEntity(e){let{entityType:t,id:n,options:r}=e,i=await this.entityQueries.getEntityData(t,n,"restricted"),o=i?await this.entitySerializer.convertToEntity(i)??void 0:void 0;if(i)await this.mutationAdmission?.assertMutationAdmission({operation:"delete",entityType:t,entityId:n});if(!i)return!1;let s=r?.expectedContentHash;if(s!==void 0&&i.contentHash!==s)return!1;await this.embeddingIndex.deleteEmbedding(t,n);try{await this.projectionStore.withDirtyInput({sourceType:t,sourceId:n,revision:`deleted:${ir({contentHash:i.contentHash,metadata:i.metadata,visibility:i.visibility})}`,operation:"delete",markedAt:this.projectionNow()},async(c)=>{let l=await c.delete(O).where(H(A(O.entityType,t),A(O.id,n),s!==void 0?A(O.contentHash,s):void 0));if(s!==void 0&&Number(l.rowsAffected)===0)throw new Xu;await c.run(b`DELETE FROM entity_fts WHERE entity_id = ${n} AND entity_type = ${t}`),await this.persistEntityExport(c,{entityType:t,entityId:n,operation:"delete"},r?.persistenceOrigin)})}catch(c){if(!(c instanceof Xu))throw c;return this.logger.debug(`Skipping concurrently stale delete for ${t}:${n}`),!1}return await this.notifyProjectionScheduler(),await this.emitEntityEvent(Ri.deleted,t,n,o,void 0,r?.eventContext),!0}async upsertEntity(e){let{entity:t,options:n,preparedAsset:r}=e;if(this.logger.debug(`Upserting entity of type ${t.entityType} with ID ${t.id}`),n?.conditionalWrite){let o=n.conditionalWrite.expectedRevision===null;return{...o?await this.createEntity({entity:t,options:n,preparedAsset:r}):await this.updateEntity({entity:t,options:n,preparedAsset:r}),created:o}}if(await this.entityQueries.entityExists(t.entityType,t.id))return{...await this.updateEntity({entity:t,...r!==void 0&&{preparedAsset:r},...n!==void 0&&{options:n}}),created:!1};try{return{...await this.createEntity({entity:t,...r!==void 0&&{preparedAsset:r},...n!==void 0&&{options:n}}),created:!0}}catch(o){if(!$3(o))throw o;return this.logger.debug(`Entity ${t.entityType}:${t.id} was created concurrently, updating instead`),{...await this.updateEntity({entity:t,...r!==void 0&&{preparedAsset:r},...n!==void 0&&{options:n}}),created:!1}}}async reconcileProjectionTargets(e){await Promise.all(e.map(async(t)=>{if(t.operation==="delete"){await this.emitEntityEvent(Ri.deleted,t.entityType,t.entityId),await this.embeddingIndex.deleteEmbedding(t.entityType,t.entityId);return}if(!t.contentHash)throw Error(`Projection target ${t.entityType}:${t.entityId} has no content hash`);await this.emitEntityEvent(Ri.updated,t.entityType,t.entityId),await this.embeddingIndex.enqueue({entityId:t.entityId,entityType:t.entityType,contentHash:t.contentHash,operation:"update"})}))}async storeEmbedding(e){await this.embeddingIndex.store(e)}async backfillMissingEmbeddings(){return this.embeddingIndex.backfillMissing()}async getEmbeddingIndexStats(){return this.embeddingIndex.getIndexStats()}stageAsset(e,t,n,r){let i=this.entityRegistry.getEntityTypeConfig(e).binaryStorage==="asset";if(!r)return;if(!i)throw Error(`Entity type ${e} is not registered for asset-backed storage`);if(t!==r.ref||n!==r.ref)throw Error(`Prepared asset ${r.ref} does not match canonical ${e} content`);return this.assetRepository.stage(r)}async bindAssetContent(e,t,n,r){if(this.entityRegistry.getEntityTypeConfig(t).binaryStorage!=="asset")return;await this.assetRepository.bindEntityContent(e,n,r)}async syncFtsIndex(e,t,n,r){if(await this.deleteFtsIndex(e,t,n),!this.isFullTextSearchable(n))return;await e.run(b`INSERT INTO entity_fts (entity_id, entity_type, content) VALUES (${t}, ${n}, ${r})`)}async pruneFtsIndexIfExcluded(e,t,n){if(this.isFullTextSearchable(n))return;await this.deleteFtsIndex(e,t,n)}async deleteFtsIndex(e,t,n){await e.run(b`DELETE FROM entity_fts WHERE entity_id = ${t} AND entity_type = ${n}`)}isFullTextSearchable(e){return this.entityRegistry.getEntityTypeConfig(e).fullTextSearchable!==!1}async resolveUniqueId(e,t){if(!await this.entityQueries.entityExists(t,e))return e;for(let i=2;i<=100;i++){let o=`${e}-${i}`;if(!await this.entityQueries.entityExists(t,o))return this.logger.debug(`Deduplicated entity ID: ${e} \u2192 ${o}`),o}let r=`${e}-${it().slice(0,8)}`;return this.logger.warn(`Could not deduplicate entity ID after 100 attempts, using random suffix: ${r}`),r}async wakeProjectionScheduler(){await this.notifyProjectionScheduler()}async notifyProjectionScheduler(){try{await this.projectionWakeup?.()}catch(e){this.logger.error("Failed to wake projection scheduler",e)}}async emitEntityEvent(e,t,n,r,i,o){if(!this.messageBus)return;this.logger.debug(`Emitting ${e} for ${t}:${n}`);let s={entityType:t,entityId:n,...o?.conversationId?{conversationId:o.conversationId}:{},...o?.channelId?{channelId:o.channelId}:{},...o?.runId?{runId:o.runId}:{},...o?.toolCallId?{toolCallId:o.toolCallId}:{},...o?.actor?{actor:o.actor}:{},...o?.interfaceType?{interfaceType:o.interfaceType}:{}};if(r)s.entity=r;if(i)s.previousMetadata=i;try{await this.messageBus.send({type:e,payload:s,sender:"entity-service",broadcast:!0})}catch(c){this.logger.error(`Failed to publish ${e} for ${t}:${n}`,c)}}async persistEntityExport(e,t,n){if(n==="directory-sync"){await this.entityExportStore.clear(e,t);return}await this.entityExportStore.record(e,{...t,markedAt:this.projectionNow()})}}class ep{db;now;constructor(e,t=Date.now){this.db=e,this.now=t}async record(e,t){await this.upsert(e,t)}async clear(e,t){await e.delete(Ht).where(H(A(Ht.entityType,t.entityType),A(Ht.entityId,t.entityId)))}list(){return this.db.select().from(Ht).orderBy(Ue(Ht.markedAt),Ue(Ht.entityType),Ue(Ht.entityId))}async hasPending(){return(await this.db.select({entityId:Ht.entityId}).from(Ht).limit(1)).length>0}async acknowledge(e){if(e.length===0)return 0;let t=e.map((r)=>H(A(Ht.entityType,r.entityType),A(Ht.entityId,r.entityId),A(Ht.revision,r.revision))),n=await this.db.transaction(async(r)=>r.delete(Ht).where(cn(...t)));return Number(n.rowsAffected)}async upsert(e,t){let n={entityType:t.entityType,entityId:t.entityId,operation:t.operation,revision:it(),markedAt:t.markedAt??this.now()};await e.insert(Ht).values(n).onConflictDoUpdate({target:[Ht.entityType,Ht.entityId],set:{operation:n.operation,revision:n.revision,markedAt:n.markedAt}})}}import{AsyncLocalStorage as V3}from"async_hooks";var W3=a.strictObject({source:a.string().trim().min(1).max(100),operationId:a.string().trim().min(1).max(200)}),J3=a.strictObject({source:a.string().trim().min(1).max(100),operationId:a.string().trim().min(1).max(200),rootJobId:a.string().trim().min(1).max(200),expectedChildren:a.number().int().positive().max(1e4)}),H3=a.strictObject({source:a.string().trim().min(1).max(100),operationId:a.string().trim().min(1).max(200),rootJobId:a.string().trim().min(1).max(200),expectedChildren:a.number().int().positive().max(1e4),childKey:a.string().trim().min(1).max(200),jobId:a.string().trim().min(1).max(200)}),G3=a.strictObject({operationId:a.string().trim().min(1).max(200),childKey:a.string().trim().min(1).max(200),jobId:a.string().trim().min(1).max(200),outcome:a.enum(["completed","failed"])});function d0(e){return W3.parse(e)}function m0(e){return J3.parse(e)}function f0(e){return H3.parse(e)}function g0(e){return G3.parse(e)}var Bt=ot("projection_admission_state",{id:xe("id").primaryKey(),epoch:xe("epoch").notNull().default(0)}),re=ot("projection_batches",{id:V("id").primaryKey(),source:V("source").notNull(),operationId:V("operation_id").notNull(),status:V("status",{enum:["preparing","open","closed","abandoned"]}).notNull(),ownerKind:V("owner_kind",{enum:["callback","job-root"]}).notNull(),ownerToken:V("owner_token").notNull(),rootJobId:V("root_job_id"),expectedChildren:xe("expected_children").notNull().default(0),enqueueComplete:xe("enqueue_complete").notNull().default(0),enqueueFailed:xe("enqueue_failed").notNull().default(0),openedAt:xe("opened_at").notNull(),lastProgressAt:xe("last_progress_at").notNull(),leaseExpiresAt:xe("lease_expires_at"),terminalAt:xe("terminal_at"),recoveredAt:xe("recovered_at"),firstGeneration:xe("first_generation"),highestGeneration:xe("highest_generation"),mutationCount:xe("mutation_count").notNull().default(0),recoveryGeneration:xe("recovery_generation")},(e)=>({operationIdx:fx("projection_batches_operation_idx").on(e.source,e.operationId),admissionIdx:ut("projection_batches_admission_idx").on(e.status,e.openedAt),rootJobIdx:ut("projection_batches_root_job_idx").on(e.rootJobId),recoveryIdx:ut("projection_batches_recovery_idx").on(e.recoveredAt,e.recoveryGeneration)})),Mt=ot("projection_batch_children",{batchId:V("batch_id").notNull().references(()=>re.id,{onDelete:"cascade"}),childKey:V("child_key").notNull(),jobId:V("job_id"),status:V("status",{enum:["expected","active","completed","failed","missing"]}).notNull().default("expected"),terminalAt:xe("terminal_at")},(e)=>({pk:Dn({columns:[e.batchId,e.childKey]}),jobIdx:fx("projection_batch_children_job_idx").on(e.jobId),statusIdx:ut("projection_batch_children_status_idx").on(e.batchId,e.status)}));var Q3=5000,h0=30000,Of=30000,K3=1e4;class io extends Error{}class Xx{db;transactions;now;readRecoveryGeneration;batchScope=new V3;constructor(e){this.db=e.db,this.transactions=e.transactions,this.now=e.now,this.readRecoveryGeneration=e.getRecoveryGeneration}runFreshBatchScope(e){return this.batchScope.run(void 0,e)}assertBatchIdentity(e,t){if(e.source!==t.source||e.operationId!==t.operationId)throw new io(`Projection batch "${t.operationId}" cannot join active batch "${e.operationId}"`)}async runBulkMutation(e,t){let n=d0(e),r=this.batchScope.getStore();if(r)return this.assertBatchIdentity(r,n),t();let i=await this.openCallbackBatch(n),o=setInterval(()=>{this.renewCallbackBatch(i).catch(()=>{})},K3);o.unref();try{return await this.batchScope.run(i,t)}finally{clearInterval(o),await this.closeCallbackBatch(i)}}async prepareDurableBulkMutation(e){let t=m0(e),n=this.now();await this.runTransaction(async(r)=>{let o=(await r.select().from(re).where(H(A(re.source,t.source),A(re.operationId,t.operationId))).limit(1))[0];if(o){if((o.status==="preparing"||o.status==="open")&&o.rootJobId===t.rootJobId&&o.expectedChildren===t.expectedChildren)return;throw new io(`Durable projection batch "${t.operationId}" cannot be prepared`)}await r.insert(Bt).values({id:1,epoch:0}).onConflictDoNothing({target:Bt.id}),await r.update(Bt).set({epoch:b`${Bt.epoch} + 1`}).where(A(Bt.id,1)),await r.insert(re).values({id:it(),source:t.source,operationId:t.operationId,status:"preparing",ownerKind:"job-root",ownerToken:it(),rootJobId:t.rootJobId,expectedChildren:t.expectedChildren,enqueueComplete:0,enqueueFailed:0,openedAt:n,lastProgressAt:n,leaseExpiresAt:n+Of})})}async finalizeDurableBulkMutationEnqueue(e){let t=a.string().trim().min(1).max(200).parse(e),n=this.now();await this.runBatchStateWrite(()=>this.db.update(re).set({status:"open",enqueueComplete:1,lastProgressAt:n,leaseExpiresAt:null}).where(H(A(re.operationId,t),Ke(re.status,["preparing","open"]))))}async failDurableBulkMutationEnqueue(e){let t=a.string().trim().min(1).max(200).parse(e),n=this.now();await this.runBatchStateWrite(()=>this.db.update(re).set({enqueueComplete:1,enqueueFailed:1,lastProgressAt:n,leaseExpiresAt:null}).where(H(A(re.operationId,t),Ke(re.status,["preparing","open"]))))}async runDurableBulkMutationChild(e,t){let n=f0(e),r=this.batchScope.getStore();if(r)return this.assertBatchIdentity(r,n),t();let i=await this.openDurableBatchChild(n);return this.batchScope.run(i,t)}async settleDurableBulkMutationChild(e){let t=g0(e),n=this.now();return this.runTransaction(async(r)=>{let o=(await r.select().from(re).where(H(A(re.operationId,t.operationId),A(re.ownerKind,"job-root"))).limit(1))[0];if(!o||o.status==="closed"||o.status==="abandoned")return!1;if((await r.update(Mt).set({status:t.outcome,terminalAt:n}).where(H(A(Mt.batchId,o.id),A(Mt.childKey,t.childKey),A(Mt.jobId,t.jobId))).returning({childKey:Mt.childKey})).length===0)return!1;let c=await r.select({total:b`count(*)`}).from(Mt).where(H(A(Mt.batchId,o.id),Ke(Mt.status,["completed","failed"])));if(Number(c[0]?.total??0)<o.expectedChildren)return!1;let l=await r.select({total:b`count(*)`}).from(Mt).where(H(A(Mt.batchId,o.id),A(Mt.status,"failed"))),u=Number(l[0]?.total??0)>0;return await this.transitionProjectionBatchToTerminal(r,o,{abandoned:u,terminalAt:n,fenceOwner:!1,clearLease:!0}),!0})}async recoverProjectionBatches(e){let t=this.now(),r=(await this.db.select({id:re.id}).from(re).where(H(A(re.ownerKind,"callback"),A(re.status,"open"),On(re.leaseExpiresAt,t)))).length===0?0:await this.runTransaction(async(s)=>{let c=await s.select().from(re).where(H(A(re.ownerKind,"callback"),A(re.status,"open"),On(re.leaseExpiresAt,t)));for(let l of c){let u=await this.getRecoveryGeneration(s,l.highestGeneration??0);await s.update(re).set({status:"abandoned",ownerToken:it(),terminalAt:t,lastProgressAt:t,leaseExpiresAt:null,recoveryGeneration:u,recoveredAt:l.highestGeneration===null?t:null}).where(H(A(re.id,l.id),A(re.ownerToken,l.ownerToken),A(re.status,"open")))}return c.length}),i=await this.db.select().from(re).where(H(A(re.ownerKind,"job-root"),Ke(re.status,["preparing","open"]))),o=0;for(let s of i){if(!s.rootJobId)continue;let c=await e(s.rootJobId,s.operationId),l=c.some((f)=>f.status==="pending"||f.status==="processing"),u=c.every((f)=>f.terminalAt!==null&&f.terminalAt<=t-Q3),p=c.length>=s.expectedChildren,m=t-s.openedAt>=h0;if(l||!u||!p&&!m)continue;if(await this.reconcileDurableRoot(s.id,c,t))o++}return await this.cleanupProjectionBatches(),{fencedCallbacks:r,releasedDurableRoots:o}}async cleanupProjectionBatches(e=604800000,t=100){let n=a.number().int().nonnegative().parse(e),r=a.number().int().nonnegative().max(1e4).parse(t),i=cn(A(re.status,"closed"),H(A(re.status,"abandoned"),eo(re.recoveredAt))),o=await this.db.select({id:re.id}).from(re).where(H(i,On(re.terminalAt,this.now()-n))),s=await this.db.select({id:re.id}).from(re).where(i).orderBy(wt(re.terminalAt)).limit(1e4).offset(r),c=[...new Set([...o,...s].map(({id:u})=>u))];if(c.length===0)return 0;return(await this.db.delete(re).where(Ke(re.id,c)).returning({id:re.id})).length}async reconcileDurableRoot(e,t,n){return this.runTransaction(async(r)=>{let o=(await r.select().from(re).where(A(re.id,e)).limit(1))[0];if(!o||o.status!=="open"&&o.status!=="preparing")return!1;for(let p of t){let m=p.status==="completed"?"completed":p.status==="failed"?"failed":"active";await r.insert(Mt).values({batchId:e,childKey:p.childKey,jobId:p.jobId,status:m,...m==="completed"||m==="failed"?{terminalAt:n}:{}}).onConflictDoUpdate({target:[Mt.batchId,Mt.childKey],set:{jobId:p.jobId,status:m,terminalAt:m==="completed"||m==="failed"?n:null}})}let s=t.some((p)=>p.status==="pending"||p.status==="processing"),c=t.length>=o.expectedChildren&&!s,l=!s&&t.length<o.expectedChildren&&n-o.openedAt>=h0;if(!c&&!l)return!1;let u=l||t.some((p)=>p.status==="failed");return await this.transitionProjectionBatchToTerminal(r,o,{abandoned:u,terminalAt:n,fenceOwner:!0,clearLease:!1}),!0})}async transitionProjectionBatchToTerminal(e,t,n){let r=n.abandoned?await this.getRecoveryGeneration(e,t.highestGeneration??0):null;await e.update(re).set({status:n.abandoned?"abandoned":"closed",ownerToken:n.abandoned&&n.fenceOwner?it():t.ownerToken,terminalAt:n.terminalAt,lastProgressAt:n.terminalAt,leaseExpiresAt:n.clearLease?null:t.leaseExpiresAt,recoveryGeneration:r,recoveredAt:n.abandoned&&t.highestGeneration===null?n.terminalAt:null}).where(A(re.id,t.id))}async getProjectionBatchDiagnostics(){let e=this.now(),t=await this.db.select({status:re.status,ownerKind:re.ownerKind,openedAt:re.openedAt,lastProgressAt:re.lastProgressAt,leaseExpiresAt:re.leaseExpiresAt,recoveredAt:re.recoveredAt}).from(re).where(Ke(re.status,["preparing","open","abandoned"])),n=t.filter((r)=>r.status==="preparing"||r.status==="open");return{preparing:t.filter((r)=>r.status==="preparing").length,open:t.filter((r)=>r.status==="open").length,abandoned:t.filter((r)=>r.status==="abandoned"&&r.recoveredAt===null).length,expiredCallbackLeases:n.filter((r)=>r.ownerKind==="callback"&&r.leaseExpiresAt!==null&&r.leaseExpiresAt<=e).length,oldestActiveAgeMs:n.length===0?null:Math.max(0,e-Math.min(...n.map((r)=>r.openedAt))),oldestProgressAgeMs:n.length===0?null:Math.max(0,e-Math.min(...n.map((r)=>r.lastProgressAt)))}}async openDurableBatchChild(e){let t=this.now();return this.runTransaction(async(n)=>{let r=(await n.select().from(re).where(H(A(re.source,e.source),A(re.operationId,e.operationId))).limit(1))[0];if(!r)await n.insert(Bt).values({id:1,epoch:0}).onConflictDoNothing({target:Bt.id}),await n.update(Bt).set({epoch:b`${Bt.epoch} + 1`}).where(A(Bt.id,1)),r=(await n.insert(re).values({id:it(),source:e.source,operationId:e.operationId,status:"open",ownerKind:"job-root",ownerToken:it(),rootJobId:e.rootJobId,expectedChildren:e.expectedChildren,enqueueComplete:1,enqueueFailed:0,openedAt:t,lastProgressAt:t}).returning())[0];if(r?.status!=="preparing"&&r?.status!=="open"||r.ownerKind!=="job-root"||r.rootJobId!==e.rootJobId||r.expectedChildren!==e.expectedChildren)throw new io(`Durable projection batch "${e.operationId}" is not open for this owner`);let o=(await n.select().from(Mt).where(H(A(Mt.batchId,r.id),A(Mt.childKey,e.childKey))).limit(1))[0];if(o&&(o.status==="completed"||o.status==="failed"||o.status==="missing"))throw new io(`Durable projection batch child "${e.childKey}" is terminal`);return await n.insert(Mt).values({batchId:r.id,childKey:e.childKey,jobId:e.jobId,status:"active"}).onConflictDoUpdate({target:[Mt.batchId,Mt.childKey],set:{jobId:e.jobId,status:"active",terminalAt:null}}),await n.update(re).set({status:"open",lastProgressAt:t,leaseExpiresAt:null}).where(A(re.id,r.id)),{batchId:r.id,source:r.source,operationId:r.operationId,ownerToken:r.ownerToken}})}async openCallbackBatch(e){let t={batchId:it(),source:e.source,operationId:e.operationId,ownerToken:it()},n=this.now();return await this.runTransaction(async(r)=>{await r.insert(Bt).values({id:1,epoch:0}).onConflictDoNothing({target:Bt.id}),await r.update(Bt).set({epoch:b`${Bt.epoch} + 1`}).where(A(Bt.id,1)),await r.insert(re).values({id:t.batchId,source:t.source,operationId:t.operationId,status:"open",ownerKind:"callback",ownerToken:t.ownerToken,expectedChildren:0,enqueueComplete:1,enqueueFailed:0,openedAt:n,lastProgressAt:n,leaseExpiresAt:n+Of})}),t}async renewCallbackBatch(e){let t=this.now();if((await this.db.update(re).set({lastProgressAt:t,leaseExpiresAt:t+Of}).where(H(A(re.id,e.batchId),A(re.ownerToken,e.ownerToken),A(re.status,"open"))).returning({id:re.id})).length===0)throw new io(`Projection batch "${e.batchId}" no longer owns its fence`)}async closeCallbackBatch(e){let t=this.now();await this.db.update(re).set({status:"closed",terminalAt:t,lastProgressAt:t,leaseExpiresAt:null}).where(H(A(re.id,e.batchId),A(re.ownerToken,e.ownerToken),A(re.status,"open")))}async assertBatchScope(e,t){if((await e.select({status:re.status}).from(re).where(H(A(re.id,t.batchId),A(re.ownerToken,t.ownerToken))).limit(1))[0]?.status!=="open")throw new io(`Projection batch "${t.batchId}" no longer owns its fence`)}async recordBatchGeneration(e,t,n){let r=this.now();await e.update(re).set({firstGeneration:b`coalesce(${re.firstGeneration}, ${n})`,highestGeneration:n,mutationCount:b`${re.mutationCount} + 1`,lastProgressAt:r,leaseExpiresAt:r+Of}).where(H(A(re.id,t.batchId),A(re.ownerToken,t.ownerToken),A(re.status,"open")))}runMutationTransaction(e){let t=this.batchScope.getStore();return this.runTransaction(async(n)=>{if(t)await this.assertBatchScope(n,t);return e(n,async(r)=>{if(t)await this.recordBatchGeneration(n,t,r)})})}async hasActiveBatch(){return(await this.db.select({id:re.id}).from(re).where(Ke(re.status,["preparing","open"])).limit(1)).length>0}async hasActiveBatchInTransaction(e){return(await e.select({id:re.id}).from(re).where(Ke(re.status,["preparing","open"])).limit(1)).length>0}async getAdmissionEpoch(e){return await e.insert(Bt).values({id:1,epoch:0}).onConflictDoNothing({target:Bt.id}),(await e.select({epoch:Bt.epoch}).from(Bt).where(A(Bt.id,1)).limit(1))[0]?.epoch??0}async markRecoveredThrough(e,t,n){await e.update(re).set({recoveredAt:n}).where(H(A(re.status,"abandoned"),Xt(re.recoveredAt),On(re.recoveryGeneration,t)))}getRecoveryGeneration(e,t){return this.readRecoveryGeneration(e,t)}runTransaction(e){return this.transactions.run(e)}runBatchStateWrite(e){return this.transactions.runSqliteWrite(e)}}var ti=Ho,Y3=a.strictObject({id:a.string().trim().min(1),entityType:a.string().trim().min(1),content:a.string(),metadata:ti,visibility:xi}),Go=a.discriminatedUnion("operation",[a.strictObject({operation:a.literal("upsert"),entity:Y3}),a.strictObject({operation:a.literal("delete"),entityType:a.string().trim().min(1),id:a.string().trim().min(1)})]);var X3=a.strictObject({ruleId:a.string().trim().min(1),ruleVersion:a.string().trim().min(1),inputFingerprint:a.string().trim().min(1)}),e5=a.strictObject({ruleId:a.string().trim().min(1),targetType:a.string().trim().min(1),level:a.number().int().nonnegative()}),t5=a.strictObject({entityType:a.string().trim().min(1),entityId:a.string().trim().min(1),operation:a.enum(["upsert","delete"]),contentHash:a.string().min(1).optional()});function ev(e){return X3.parse(e)}function y0(e){return a.array(e5).min(1).parse(e)}function $c(e){let t=a.array(t5).parse(e.changedTargets);return{...e,changedTargets:t}}var n5=a.strictObject({waveId:a.string().trim().min(1),ruleId:a.string().trim().min(1),jobId:a.string().trim().min(1).nullable(),failureReason:a.string().trim().min(1).max(500),failedAt:a.number().int().nonnegative()});function b0(e){return n5.parse(e)}function Df(e){return`${e.sourceType}\x00${e.sourceId}`}function zf(e){let t=new Map;for(let n of e)t.set(Df(n),n);return[...t.values()].sort((n,r)=>n.generation-r.generation)}var Mf=a.string().trim().min(1),r5=a.number().int().nonnegative();function ki(e){return Mf.parse(e)}function S0(e){return Mf.parse(e)}function x0(e){return Mf.parse(e)}function v0(e){return Mf.parse(e)}function aa(e){return r5.parse(e)}function w0(e){if(e==="completed")return{kind:"settled"};if(e==="failed")return{kind:"refuse",reason:"already failed"};if(e==="superseded")return{kind:"refuse",reason:"was superseded"};return{kind:"apply"}}function T0(e){if(e==="completed")return{kind:"refuse",reason:"already completed"};if(e==="failed"||e==="superseded")return{kind:"settled"};return{kind:"apply"}}function C0(e){if(e==="superseded")return{kind:"settled"};if(e!=="running")return{kind:"decline"};return{kind:"apply"}}function E0(e){if(e==="superseded")return{kind:"decline"};if(e!=="running")return{kind:"refuse",reason:"is not running"};return{kind:"apply"}}function ca(e){if(Array.isArray(e))return`[${e.map((t)=>ca(t)).join(",")}]`;if(e!==null&&typeof e==="object")return`{${Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>`${JSON.stringify(t)}:${ca(n)}`).join(",")}}`;return JSON.stringify(e)}class tv{entityExportStore;mutationAdmission;storagePolicy;constructor(e){this.entityExportStore=e.entityExportStore,this.mutationAdmission=e.mutationAdmission,this.storagePolicy=e.storagePolicy}async apply(e,t,n,r){let i=t.operation==="upsert"?t.entity.entityType:t.entityType,o=t.operation==="upsert"?t.entity.id:t.id,c=(await e.select({content:O.content,contentHash:O.contentHash,created:O.created,metadata:O.metadata,visibility:O.visibility}).from(O).where(H(A(O.entityType,i),A(O.id,o))).limit(1))[0];if(t.operation==="delete"){if(await e.delete(St).where(H(A(St.entityType,i),A(St.entityId,o))),!c)return null;return await this.mutationAdmission?.assertMutationAdmission({operation:"delete",entityType:i,entityId:o}),await e.delete(O).where(H(A(O.entityType,i),A(O.id,o))),await e.run(b`DELETE FROM entity_fts WHERE entity_id = ${o} AND entity_type = ${i}`),await this.entityExportStore.record(e,{entityType:i,entityId:o,operation:"delete",markedAt:n}),{entityType:i,entityId:o,operation:"delete"}}let l={...t.entity,contentHash:Ei(t.entity.content),created:new Date(c?.created??n).toISOString(),updated:new Date(n).toISOString()},u=await this.storagePolicy?.prepareEntity?.(l,c?"update":"create")??l;if(u.id!==o||u.entityType!==i)throw Error("Projection validation cannot change entity identity");let p=Ei(u.content);if(await e.insert(St).values({entityType:i,entityId:o,ruleId:r.ruleId,ruleVersion:r.ruleVersion,inputFingerprint:r.inputFingerprint,claimedAt:n}).onConflictDoUpdate({target:[St.entityType,St.entityId],set:{ruleId:r.ruleId,ruleVersion:r.ruleVersion,inputFingerprint:r.inputFingerprint,claimedAt:n}}),this.storagePolicy?.isAssetBacked(i))await this.storagePolicy.assetRepository.bindEntityContent(e,u.content);if(c?.contentHash===p&&c.content===u.content&&c.visibility===u.visibility&&ca(c.metadata)===ca(u.metadata)){if(this.storagePolicy?.isFullTextSearchable(i)===!1)await e.run(b`DELETE FROM entity_fts WHERE entity_id = ${o} AND entity_type = ${i}`);return null}if(await this.mutationAdmission?.assertMutationAdmission({operation:c?"update":"create",entityType:i,entityId:o}),c)await e.update(O).set({content:u.content,contentHash:p,metadata:u.metadata,visibility:u.visibility,updated:n}).where(H(A(O.entityType,i),A(O.id,o)));else await e.insert(O).values({id:o,entityType:i,content:u.content,contentHash:p,metadata:u.metadata,visibility:u.visibility,created:n,updated:n});if(await e.run(b`DELETE FROM entity_fts WHERE entity_id = ${o} AND entity_type = ${i}`),this.storagePolicy?.isFullTextSearchable(i)!==!1)await e.run(b`INSERT INTO entity_fts (entity_id, entity_type, content) VALUES (${o}, ${i}, ${u.content})`);return await this.entityExportStore.record(e,{entityType:i,entityId:o,operation:"upsert",markedAt:n}),{entityType:i,entityId:o,operation:"upsert",contentHash:p}}}class nv{db;transactions;batches;waves;writeIntentApplier;constructor(e){this.db=e.db,this.transactions=e.transactions,this.batches=e.batches,this.waves=e.waves,this.writeIntentApplier=e.writeIntentApplier}async putWaveRules(e,t){let n=ki(e),i=y0(t).map((o)=>({waveId:n,ruleId:o.ruleId,targetType:o.targetType,level:o.level,status:"pending",changedTargets:[]}));await this.transactions.run(async(o)=>{await o.insert(Qe).values(i)})}async listWaveRules(e){return(await this.db.select().from(Qe).where(A(Qe.waveId,e)).orderBy(Ue(Qe.level),Ue(Qe.ruleId))).map($c)}async queueWaveRule(e,t,n){let r=ki(e),i=S0(t),o=x0(n),c=(await this.transactions.run(async(u)=>u.update(Qe).set({status:"queued",jobId:o}).where(H(A(Qe.waveId,r),A(Qe.ruleId,i),A(Qe.status,"pending"))).returning()))[0];if(c)return $c(c);let l=await this.getWaveRule(r,i);if(l?.status==="completed"||l?.status==="queued"&&l.jobId===o)return l;throw Error(`Projection rule "${i}" is not pending for wave "${r}"`)}async getWaveRule(e,t){let r=(await this.db.select().from(Qe).where(H(A(Qe.waveId,e),A(Qe.ruleId,t))).limit(1))[0];return r?$c(r):null}async applyRuleResult(e){let t=ki(e.waveId),n=ev({ruleId:e.ruleId,ruleVersion:e.ruleVersion,inputFingerprint:e.inputFingerprint}),r=a.array(Go).parse(e.writeIntents),i=aa(e.completedAt);return this.transactions.run(async(o)=>{let c=(await o.select().from(Qe).where(H(A(Qe.waveId,t),A(Qe.ruleId,n.ruleId))).limit(1))[0];if(!c)throw Error(`Projection rule "${n.ruleId}" is not scheduled for wave "${t}"`);let l=await this.waves.requireWave(o,t),u=E0(l.status);if(u.kind==="decline")return null;if(u.kind==="refuse")throw Error(`Projection wave "${t}" ${u.reason}`);let p=await this.batches.getAdmissionEpoch(o);if(l.admissionEpoch!==p)return await this.waves.supersedeWaveInTransaction(o,l,i),null;for(let k of r){let P=k.operation==="upsert"?k.entity.entityType:k.entityType;if(P!==c.targetType)throw Error(`Projection rule "${n.ruleId}" cannot write entity type "${P}"`)}if(c.status==="completed"){if(c.inputFingerprint!==n.inputFingerprint)throw Error(`Projection rule "${n.ruleId}" already completed with another input`);return $c(c)}if(c.status==="failed")throw Error(`Projection rule "${n.ruleId}" already failed for wave "${t}"`);let g=(await o.select().from(Pr).where(H(A(Pr.ruleId,n.ruleId),A(Pr.ruleVersion,n.ruleVersion),A(Pr.inputFingerprint,n.inputFingerprint))).limit(1))[0];if(g&&ca(g.writeIntents)!==ca(r))throw Error(`Projection memo conflict for rule "${n.ruleId}" and fingerprint "${n.inputFingerprint}"`);if(!g)await o.insert(Pr).values({...n,writeIntents:r,createdAt:i});let f=[];for(let k of r){let P=await this.writeIntentApplier.apply(o,k,i,n);if(P)f.push(P)}let w=(await o.update(Qe).set({status:"completed",inputFingerprint:n.inputFingerprint,changedTargets:f}).where(H(A(Qe.waveId,t),A(Qe.ruleId,n.ruleId))).returning())[0];if(!w)throw Error(`Failed to complete projection rule "${n.ruleId}" for wave "${t}"`);return $c(w)})}async getRuleMemo(e){let t=ev(e),r=(await this.db.select().from(Pr).where(H(A(Pr.ruleId,t.ruleId),A(Pr.ruleVersion,t.ruleVersion),A(Pr.inputFingerprint,t.inputFingerprint))).limit(1))[0];if(!r)return null;return{...r,writeIntents:a.array(Go).parse(r.writeIntents)}}}class rv{db;transactions;batches;constructor(e){this.db=e.db,this.transactions=e.transactions,this.batches=e.batches}async claimPendingWave(e){let t=ki(e.waveId),n=v0(e.graphFingerprint),r=aa(e.startedAt);if(await this.batches.hasActiveBatch())return null;return this.transactions.run(async(i)=>{let o=await i.select({id:kt.id}).from(kt).where(A(kt.status,"running")).limit(1);if(o.length>0)throw Error(`Cannot claim projection wave while "${o[0]?.id}" is running`);if(await this.batches.hasActiveBatchInTransaction(i))return null;let s=await this.batches.getAdmissionEpoch(i),l=(await i.select({generation:zt.generation}).from(zt).orderBy(wt(zt.generation)).limit(1))[0]?.generation;if(l===void 0)return null;let u={id:t,cutoffGeneration:l,graphFingerprint:n,admissionEpoch:s,status:"running",startedAt:r,completedAt:null};await i.insert(kt).values(u);let p=await i.select().from(zt).where(On(zt.generation,l)).orderBy(Ue(zt.generation)),m=zf(p);return await i.insert(to).values(m.map((g)=>({waveId:t,sourceType:g.sourceType,sourceId:g.sourceId,revision:g.revision,operation:g.operation,generation:g.generation}))),await i.delete(zt).where(On(zt.generation,l)),u})}listWaveInputs(e){return this.db.select().from(to).where(A(to.waveId,e)).orderBy(Ue(to.generation))}async getWave(e){let t=ki(e);return(await this.db.select().from(kt).where(A(kt.id,t)).limit(1))[0]??null}async getActiveWave(){return(await this.db.select().from(kt).where(A(kt.status,"running")).limit(1))[0]??null}async requireWave(e,t){let r=(await e.select().from(kt).where(A(kt.id,t)).limit(1))[0];if(!r)throw Error(`Projection wave "${t}" does not exist`);return r}async completeWave(e,t){let n=ki(e),r=aa(t);return this.transactions.run(async(i)=>{let o=await this.requireWave(i,n),s=w0(o.status);if(s.kind==="settled")return o;if(s.kind==="refuse")throw Error(`Projection wave "${n}" ${s.reason}`);if((await i.select({ruleId:Qe.ruleId}).from(Qe).where(H(A(Qe.waveId,n),Zo(Qe.status,"completed"))).limit(1)).length>0)throw Error(`Projection wave "${n}" has incomplete projection rules`);let u=(await i.update(kt).set({status:"completed",completedAt:r}).where(A(kt.id,n)).returning())[0];if(!u)throw Error(`Failed to mark projection wave "${n}" completed`);return await i.update(or).set({resolvedAt:r}).where(H(Xt(or.resolvedAt),On(or.recoveryGeneration,o.cutoffGeneration))),await this.batches.markRecoveredThrough(i,o.cutoffGeneration,r),u})}async supersedeWaveIfStale(e,t){let n=ki(e),r=aa(t);return this.transactions.run(async(i)=>{let o=await this.requireWave(i,n),s=C0(o.status);if(s.kind==="settled")return!0;if(s.kind!=="apply")return!1;let c=await this.batches.getAdmissionEpoch(i);if(o.admissionEpoch===c)return!1;return await this.supersedeWaveInTransaction(i,o,r),!0})}async failWave(e,t){let n=ki(e),r=aa(t);return this.transactions.run(async(i)=>(await this.failWaveInTransaction(i,n,r)).wave)}async failWaveWithIncident(e){let t=b0(e);return this.transactions.run(async(n)=>{let r=await this.failWaveInTransaction(n,t.waveId,t.failedAt);if((await n.update(Qe).set({status:"failed"}).where(H(A(Qe.waveId,t.waveId),A(Qe.ruleId,t.ruleId))).returning({ruleId:Qe.ruleId})).length===0)throw Error(`Projection rule "${t.ruleId}" is not scheduled for wave "${t.waveId}"`);return await n.insert(or).values({waveId:t.waveId,ruleId:t.ruleId,jobId:t.jobId,failureReason:t.failureReason,recoveryGeneration:r.recoveryGeneration,createdAt:t.failedAt,resolvedAt:null}).onConflictDoNothing({target:or.waveId}),r.wave})}async getUnresolvedProjectionIncidentDiagnostics(e=10){let t=a.number().int().positive().max(100).parse(e),[n,r]=await Promise.all([this.db.select({total:b`count(*)`}).from(or).where(Xt(or.resolvedAt)),this.db.select().from(or).where(Xt(or.resolvedAt)).orderBy(wt(or.createdAt)).limit(t)]);return{total:Number(n[0]?.total??0),incidents:r}}async failWaveInTransaction(e,t,n){let r=await this.requireWave(e,t),i=T0(r.status);if(i.kind==="refuse")throw Error(`Projection wave "${t}" ${i.reason}`);if(i.kind==="settled")return{wave:r,recoveryGeneration:await this.getRecoveryGeneration(e,r.cutoffGeneration)};await this.requeueWaveInputs(e,t,n);let o=await this.getRecoveryGeneration(e,r.cutoffGeneration),c=(await e.update(kt).set({status:"failed",completedAt:n}).where(A(kt.id,t)).returning())[0];if(!c)throw Error(`Failed to mark projection wave "${t}" failed`);return{wave:c,recoveryGeneration:o}}async supersedeWaveInTransaction(e,t,n){return await this.requeueWaveInputs(e,t.id,n),(await e.update(kt).set({status:"superseded",completedAt:n}).where(H(A(kt.id,t.id),A(kt.status,"running"))).returning())[0]??{...t,status:"superseded",completedAt:n}}async requeueWaveInputs(e,t,n){let r=await e.select().from(to).where(A(to.waveId,t)),i=await e.select().from(zt),o=new Set(i.map(Df)),s=r.filter((c)=>!o.has(Df(c)));if(s.length===0)return;await e.insert(zt).values(s.map((c)=>({sourceType:c.sourceType,sourceId:c.sourceId,revision:c.revision,operation:c.operation,markedAt:n})))}async getRecoveryGeneration(e,t){let n=await e.select({generation:b`max(${zt.generation})`}).from(zt);return Number(n[0]?.generation??t)}}class iv{tail=Promise.resolve();run(e,t){if(t?.aborted)return Promise.reject(t.reason);let n=this.tail,r=()=>{};this.tail=new Promise((s)=>{r=s});let i=!1,o=n.then(async()=>{try{return i=!0,t?.throwIfAborted(),await e()}finally{r()}});return i5(o,()=>i,t)}async idle(){await this.tail}}class ov{tails=new Map;async run(e,t){let n=this.tails.get(e),r=()=>{},i=new Promise((o)=>{r=o});this.tails.set(e,i),await n;try{return await t()}finally{if(r(),this.tails.get(e)===i)this.tails.delete(e)}}}function i5(e,t,n){if(!n)return e;return new Promise((r,i)=>{let o=()=>{if(!t())i(n.reason)};n.addEventListener("abort",o,{once:!0}),e.then(r,i).finally(()=>{n.removeEventListener("abort",o)})})}class o5{active;run(e){if(this.active)return this.active;let t=e().finally(()=>{if(this.active===t)this.active=void 0});return this.active=t,t}}class s5{active=new Map;run(e,t){let n=this.active.get(e);if(n)return n;let r=t().finally(()=>{if(this.active.get(e)===r)this.active.delete(e)});return this.active.set(e,r),r}}class sv{db;queue=new iv;constructor(e){this.db=e}run(e){return this.queue.run(()=>this.db.transaction(e))}runSqliteWrite(e){return this.queue.run(e)}}var I0=a.strictObject({sourceType:a.string().trim().min(1),sourceId:a.string().trim().min(1),revision:a.string().trim().min(1),operation:a.enum(["upsert","delete"]),markedAt:a.number().int().nonnegative()}),av=a.strictObject({entityType:a.string().trim().min(1),id:a.string().trim().min(1)});class jf{db;writeIntentApplier;transactions;batches;waves;rules;constructor(e,t,n=Date.now,r){this.db=e,this.transactions=new sv(e),this.batches=new Xx({db:e,transactions:this.transactions,now:n,getRecoveryGeneration:(i,o)=>this.waves.getRecoveryGeneration(i,o)}),this.waves=new rv({db:e,transactions:this.transactions,batches:this.batches}),this.writeIntentApplier=new tv({entityExportStore:new ep(e,n),...t&&{mutationAdmission:t},...r&&{storagePolicy:r}}),this.rules=new nv({db:e,transactions:this.transactions,batches:this.batches,waves:this.waves,writeIntentApplier:this.writeIntentApplier})}runBulkMutation(e,t){return this.batches.runBulkMutation(e,t)}runFreshBatchScope(e){return this.batches.runFreshBatchScope(e)}prepareDurableBulkMutation(e){return this.batches.prepareDurableBulkMutation(e)}finalizeDurableBulkMutationEnqueue(e){return this.batches.finalizeDurableBulkMutationEnqueue(e)}failDurableBulkMutationEnqueue(e){return this.batches.failDurableBulkMutationEnqueue(e)}runDurableBulkMutationChild(e,t){return this.batches.runDurableBulkMutationChild(e,t)}settleDurableBulkMutationChild(e){return this.batches.settleDurableBulkMutationChild(e)}recoverProjectionBatches(e){return this.batches.recoverProjectionBatches(e)}cleanupProjectionBatches(e,t){return this.batches.cleanupProjectionBatches(e,t)}getProjectionBatchDiagnostics(){return this.batches.getProjectionBatchDiagnostics()}async isProjectionOwnedEntity(e){let t=av.parse(e);return(await this.db.select({entityId:St.entityId}).from(St).where(H(A(St.entityType,t.entityType),A(St.entityId,t.id))).limit(1)).length>0}async releaseProjectionOwnership(e){let t=av.parse(e);await this.db.delete(St).where(H(A(St.entityType,t.entityType),A(St.entityId,t.id)))}transferEntityAuthority(e,t){let n=av.parse(e);return this.transactions.run(async(r)=>{let i=await t(r);return await r.delete(St).where(H(A(St.entityType,n.entityType),A(St.entityId,n.id))),i})}async markDirty(e){let t=I0.parse(e),r=(await this.db.insert(zt).values(t).returning({generation:zt.generation}))[0]?.generation;if(r===void 0)throw Error("Failed to persist projection dirty input");return r}withDirtyInput(e,t){return this.withDirtyInputs([e],t)}withDirtyInputs(e,t){let n=a.array(I0).min(1).parse(e);return this.batches.runMutationTransaction(async(r,i)=>{let o=await t(r);for(let s of n){await r.delete(St).where(H(A(St.entityType,s.sourceType),A(St.entityId,s.sourceId)));let l=(await r.insert(zt).values(s).returning({generation:zt.generation}))[0]?.generation;if(l===void 0)throw Error("Failed to persist projection dirty input");await i(l)}return o})}async listPendingInputs(){let e=await this.db.select().from(zt).orderBy(Ue(zt.generation));return zf(e)}hasActiveProjectionBatch(){return this.batches.hasActiveBatch()}claimPendingWave(e){return this.waves.claimPendingWave(e)}listWaveInputs(e){return this.waves.listWaveInputs(e)}getWave(e){return this.waves.getWave(e)}getActiveWave(){return this.waves.getActiveWave()}completeWave(e,t){return this.waves.completeWave(e,t)}supersedeWaveIfStale(e,t){return this.waves.supersedeWaveIfStale(e,t)}failWave(e,t){return this.waves.failWave(e,t)}failWaveWithIncident(e){return this.waves.failWaveWithIncident(e)}getUnresolvedProjectionIncidentDiagnostics(e){return this.waves.getUnresolvedProjectionIncidentDiagnostics(e)}putWaveRules(e,t){return this.rules.putWaveRules(e,t)}listWaveRules(e){return this.rules.listWaveRules(e)}queueWaveRule(e,t,n){return this.rules.queueWaveRule(e,t,n)}getWaveRule(e,t){return this.rules.getWaveRule(e,t)}applyRuleResult(e){return this.rules.applyRuleResult(e)}getRuleMemo(e){return this.rules.getRuleMemo(e)}}class Nf extends Error{ref;constructor(e){super(`Asset not found: ${e}`);this.name="AssetNotFoundError",this.ref=e}}class la extends Error{ref;constructor(e,t){super(`Asset integrity check failed for ${e}: ${t}`);this.name="AssetIntegrityError",this.ref=e}}class cv{db;maxBytes;now;constructor(e,t={}){this.db=e,this.maxBytes=t.maxBytes??US,this.now=t.now??Date.now}stage(e){if(WS(e),e.sizeBytes>this.maxBytes)throw Error(`Asset exceeds ${this.maxBytes}-byte repository limit: received ${e.sizeBytes} bytes`);return{ref:e.ref,digest:e.digest,sizeBytes:e.sizeBytes,bytes:Buffer.from(e.bytes)}}async bindEntityContent(e,t,n){if(n){if(t!==n.ref)throw Error(`Prepared asset ${n.ref} does not match entity content`);await this.insertOrVerify(e,n);return}let r=Du.safeParse(t);if(r.success){await this.assertExists(e,r.data);return}if(t.startsWith("asset://"))Xs(t)}async read(e){let t=Xs(e),r=(await this.db.select({bytes:Zt.bytes,sizeBytes:Zt.sizeBytes}).from(Zt).where(A(Zt.digest,ea(t))).limit(1))[0];if(!r)throw new Nf(t);return this.assertSize(t,r.bytes,r.sizeBytes),Uint8Array.from(r.bytes)}async stat(e){let t=Xs(e),r=(await this.db.select({sizeBytes:Zt.sizeBytes}).from(Zt).where(A(Zt.digest,ea(t))).limit(1))[0];return r?{ref:t,sizeBytes:r.sizeBytes}:null}async verify(e){let t=Xs(e),n=await this.read(t),r=ea(t),i=zu(n);return{ref:t,sizeBytes:n.byteLength,expectedDigest:r,actualDigest:i,valid:i===r}}async insertOrVerify(e,t){if((await e.insert(Zt).values({digest:t.digest,bytes:t.bytes,sizeBytes:t.sizeBytes,created:this.now()}).onConflictDoNothing({target:Zt.digest}).returning({digest:Zt.digest})).length>0)return;let i=(await e.select({bytes:Zt.bytes,sizeBytes:Zt.sizeBytes}).from(Zt).where(A(Zt.digest,t.digest)).limit(1))[0];if(!i)throw new la(t.ref,"conflicting row disappeared during insertion");if(this.assertSize(t.ref,i.bytes,i.sizeBytes),i.sizeBytes!==t.sizeBytes)throw new la(t.ref,`stored size ${i.sizeBytes} does not match prepared size ${t.sizeBytes}`);let o=zu(i.bytes);if(o!==t.digest)throw new la(t.ref,`stored digest is ${o}`)}async assertExists(e,t){if((await e.select({digest:Zt.digest}).from(Zt).where(A(Zt.digest,ea(t))).limit(1)).length===0)throw new Nf(t)}assertSize(e,t,n){if(t.byteLength!==n)throw new la(e,`stored byte count ${t.byteLength} does not match declared size ${n}`);if(n<0||n>this.maxBytes)throw new la(e,`stored size ${n} is outside the accepted 0-${this.maxBytes} range`)}}var a5=/!\[([^\]]*)\]\(entity:\/\/image\/([^)]+)\)/g;function c5(e){return e.includes("entity://image/")}var l5=new Set(["image"]);function R0(e){return!l5.has(e)}class lv{logger;constructor(e){this.logger=e.child("ContentResolver")}detectReferences(e){let t=[],n=new RegExp(a5.source,"g"),r;while((r=n.exec(e))!==null)t.push({alt:r[1]??"",imageId:r[2]??"",originalMarkdown:r[0]});return t}async resolve(e,t,n){if(!c5(e))return{content:e,resolvedCount:0,failedCount:0};let r=this.detectReferences(e);if(r.length===0)return{content:e,resolvedCount:0,failedCount:0};let i=[...new Set(r.map((u)=>u.imageId))],o=new Map;for(let u of i)try{let p=await t.getEntityRaw({entityType:"image",id:u,visibilityScope:n});if(p?.content)o.set(u,p.content);else this.logger.warn("Image entity not found",{imageId:u})}catch(p){this.logger.warn("Failed to fetch image entity",{imageId:u,error:Be(p)})}let s=e,c=0,l=0;for(let u of r){let p=o.get(u.imageId);if(p){let m=`![${u.alt}](${p})`;s=s.replace(u.originalMarkdown,m),c++}else l++}if(c>0)this.logger.debug("Resolved image references",{resolvedCount:c,failedCount:l});return{content:s,resolvedCount:c,failedCount:l}}}function k0(e,t){return ne.suspend(()=>{let n,r=e.pipe(ne.match({onFailure:(s)=>(n={kind:"failure",error:s},n),onSuccess:(s)=>(n={kind:"status",status:s},n)})),i=wr.spaced(t.intervalMs),o=t.timeoutMs===void 0?i:i.pipe(wr.upTo({duration:t.timeoutMs}));return r.pipe(ne.repeat({schedule:o,until:(s)=>s.kind==="status"&&s.status.ready}),ne.flatMap(()=>{if(n?.kind==="status")return ne.succeed(n.status);if(n?.kind==="failure")return ne.fail(n.error);return ne.die(Error("Index readiness polling completed without an attempt"))}))})}class uv{db;dbClient;dbUrl;searchDbClient;embeddingDb;embeddingDbClient;dbInitPromise=null;groupingReprojection;groupingAbort=new AbortController;entityRegistry;logger;jobQueueService;entitySearch;entitySerializer;entityQueries;entityMutations;projectionStore;assetRepository;entityExportStore;contentResolver;embeddingHandlerRegistered=!1;indexReady=!1;close(){this.groupingAbort.abort(Error("Entity service is closed"));let e,t=!1;try{if(this.embeddingHandlerRegistered)this.jobQueueService.unregisterHandler(sr.embedding),this.embeddingHandlerRegistered=!1}catch(n){e=n,t=!0}try{this.embeddingDbClient.close()}catch(n){if(!t)e=n;t=!0}try{this.searchDbClient.close()}catch(n){if(!t)e=n;t=!0}try{this.dbClient.close()}catch(n){if(!t)e=n;t=!0}if(t)throw e}static createFresh(e){return new uv(e)}constructor(e){let{db:t,client:n,url:r}=Mx(e.dbConfig);this.db=t,this.dbClient=n,this.dbUrl=r,this.assetRepository=new cv(this.db),this.entityExportStore=new ep(this.db,e.projectionNow??Date.now),this.projectionStore=new jf(this.db,e.mutationAdmission,e.projectionNow??Date.now,{assetRepository:this.assetRepository,prepareEntity:async(s,c)=>{await e.entityRegistry.ensureGroupingsCurrent(s.entityType);let l=this.entitySerializer.deserializeEntity(s.content,s.entityType),u=e.entityRegistry.validateEntity(s.entityType,{...l,...s.metadata,...s});return await Af(e.entityRegistry,u,c),u},isAssetBacked:(s)=>e.entityRegistry.getEntityTypeConfig(s).binaryStorage==="asset",isFullTextSearchable:(s)=>e.entityRegistry.getEntityTypeConfig(s).fullTextSearchable!==!1});let i,o;try{let s=Mx(e.dbConfig);i=s.client,this.searchDbClient=s.client;let c=jx(e.embeddingDbConfig);if(o=c.client,this.embeddingDb=c.db,this.embeddingDbClient=c.client,this.entityRegistry=e.entityRegistry,this.groupingReprojection=new Px({pending:()=>this.entityRegistry.getPendingGroupingProjections(),complete:(u)=>this.entityRegistry.completeGroupingProjections(u),refresh:async()=>{this.groupingAbort.signal.throwIfAborted(),await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent()},project:(u)=>Dz(this.db,this.entityRegistry,u,this.groupingAbort.signal)}),this.logger=(e.logger??kr.getInstance()).child("EntityService"),!e.jobQueueService)throw Error("JobQueueService is required for EntityService initialization");this.jobQueueService=e.jobQueueService,this.entitySerializer=new Lx(this.entityRegistry,this.logger),this.entityQueries=new Gx({db:this.db,entityRegistry:this.entityRegistry,serializer:this.entitySerializer,logger:this.logger,embeddingDb:this.embeddingDb});let l=e.embeddingsEnabled??!0;if(this.entitySearch=new yf(s.db,e.embeddingService,this.entitySerializer,this.logger,l,()=>this.declaredPublishGates()),this.entityMutations=new Yx({db:this.db,entityRegistry:this.entityRegistry,entitySerializer:this.entitySerializer,entityQueries:this.entityQueries,jobQueueService:this.jobQueueService,logger:this.logger,...e.messageBus&&{messageBus:e.messageBus},...e.mutationAdmission&&{mutationAdmission:e.mutationAdmission},projectionStore:this.projectionStore,assetRepository:this.assetRepository,entityExportStore:this.entityExportStore,projectionNow:e.projectionNow??Date.now,embeddingDb:this.embeddingDb,embeddingsEnabled:l}),this.contentResolver=new lv(this.logger),e.embeddingsEnabled??!0){let u=Qu.createFresh(this,e.embeddingService,e.messageBus);this.jobQueueService.registerHandler(sr.embedding,u),this.embeddingHandlerRegistered=!0}this.dbInitPromise=this.initializeDatabase(e.embeddingDbConfig,e.embeddingService.dimensions),this.dbInitPromise.catch(()=>{})}catch(s){try{if(this.embeddingHandlerRegistered)e.jobQueueService?.unregisterHandler(sr.embedding),this.embeddingHandlerRegistered=!1}catch{}try{o?.close()}catch{}try{i?.close()}catch{}try{n.close()}catch{}throw s}}async initialize(){if(!this.dbInitPromise)throw Error("Entity service database initialization never started; construction failed");await this.dbInitPromise}async initializeDatabase(e,t){try{await ei(this.dbClient,this.dbUrl)}catch(n){this.logger.warn("Failed to enable WAL mode for entity database (non-fatal)",n)}try{await ei(this.searchDbClient,this.dbUrl)}catch(n){this.logger.warn("Failed to configure entity search database (non-fatal)",n)}try{await ei(this.embeddingDbClient,e.url)}catch(n){this.logger.warn("Failed to enable WAL mode for embedding database (non-fatal)",n)}await Uz(this.dbClient),await Nx(this.embeddingDbClient,t),await Bx(this.searchDbClient,_x(e.url))}getProjectionStore(){return this.projectionStore}async isProjectionOwnedEntity(e){return await this.initialize(),this.projectionStore.isProjectionOwnedEntity(e)}async releaseProjectionOwnership(e){await this.initialize(),await this.projectionStore.releaseProjectionOwnership(e)}setProjectionWakeup(e){return this.entityMutations.setProjectionWakeup(e)}async listPendingEntityExports(){return await this.initialize(),this.entityExportStore.list()}async hasPendingEntityExports(){return await this.initialize(),this.entityExportStore.hasPending()}async acknowledgeEntityExports(e){return await this.initialize(),this.entityExportStore.acknowledge(e.intents)}async runBulkMutation(e,t){await this.initialize();try{return await this.projectionStore.runBulkMutation(e,t)}finally{await this.entityMutations.wakeProjectionScheduler()}}async prepareDurableBulkMutation(e){await this.initialize(),await this.projectionStore.prepareDurableBulkMutation(e)}async finalizeDurableBulkMutationEnqueue(e){await this.initialize(),await this.projectionStore.finalizeDurableBulkMutationEnqueue(e)}async failDurableBulkMutationEnqueue(e){await this.initialize(),await this.projectionStore.failDurableBulkMutationEnqueue(e)}async runDurableBulkMutationChild(e,t){return await this.initialize(),this.projectionStore.runDurableBulkMutationChild(e,t)}async settleDurableBulkMutationChild(e){await this.initialize();let t=await this.projectionStore.settleDurableBulkMutationChild(e);if(t)await this.entityMutations.wakeProjectionScheduler();return t}async recoverProjectionBatches(e){await this.initialize();let t=await this.projectionStore.recoverProjectionBatches(e);if(t.fencedCallbacks+t.releasedDurableRoots>0)await this.entityMutations.wakeProjectionScheduler();return t}async createEntity(e){await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.createEntity(e);return await this.afterGroupingSourceMutation(e.entity.entityType),t}async createEntityFromMarkdown(e){await this.initialize();let{input:t,options:n}=e;await this.entityRegistry.ensureGroupingsCurrent();let r=this.entitySerializer.deserializeEntity(t.markdown,t.entityType),i=await this.entityMutations.createEntity({entity:{...r,id:t.id,entityType:t.entityType,content:t.markdown,metadata:r.metadata??{},...t.visibility!==void 0?{visibility:t.visibility}:{}},...n!==void 0&&{options:n}});return await this.afterGroupingSourceMutation(t.entityType),i}async updateEntity(e){await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.updateEntity(e);return await this.afterGroupingSourceMutation(e.entity.entityType),t}async getEntityMutationReceipt(e){let t=ro.parse(e);return await this.initialize(),this.entityMutations.getEntityMutationReceipt(t)}async applyEntityMutationOnce(e){let t=Rf(e);await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let n=await this.entityMutations.applyEntityMutationOnce(t);if(n.applied&&n.receipt.operation!=="none")await this.afterGroupingSourceMutation(n.receipt.entityType);return n.receipt}async foldEntity(e){await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.foldEntity(e);return await this.afterGroupingSourceMutation(e.entity.entityType),t}async deleteEntity(e){if(await this.initialize(),e.entityType===this.entityRegistry.getGroupingSourceType())await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.deleteEntity(e);if(t)await this.afterGroupingSourceMutation(e.entityType);return t}async upsertEntity(e){await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent();let t=await this.entityMutations.upsertEntity(e);return await this.afterGroupingSourceMutation(e.entity.entityType),t}async storeEmbedding(e){return await this.initialize(),this.entityMutations.storeEmbedding(e)}async reconcileProjectionTargets(e){await this.initialize(),await this.entityMutations.reconcileProjectionTargets(e);let t=this.entityRegistry.getGroupingSourceType();if(t&&e.some((n)=>n.entityType===t))await this.afterGroupingSourceMutation(t,!1)}async backfillMissingEmbeddings(){return await this.initialize(),this.indexReady=!1,this.entityMutations.backfillMissingEmbeddings()}isIndexReady(){return this.indexReady}async awaitIndexReady(e){await this.initialize();let t=!1,n=ne.tryPromise({try:()=>this.getIndexReadinessStatus(),catch:(o)=>o}).pipe(ne.tapError((o)=>ne.sync(()=>{if(!t)this.logger.warn("Semantic index readiness check failed; retrying",{error:o}),t=!0})),ne.tap(()=>ne.sync(()=>{t=!1}))),r=k0(n,{intervalMs:e.intervalMs??250,...e.timeoutMs!==void 0&&{timeoutMs:e.timeoutMs}}),i=await ne.runPromiseExit(r,{...e.signal&&{signal:e.signal}});if(bt.isFailure(i)){if(e.signal?.aborted)throw e.signal.reason;throw Xn.squash(i.cause)}if(i.value.ready)this.indexReady=!0;return i.value}async getIndexReadinessStatus(){let[e,t]=await Promise.all([this.jobQueueService.getActiveJobs([sr.embedding]),this.entityMutations.getEmbeddingIndexStats()]),n=e.length,r=n===0&&t.missingEmbeddings===0&&t.staleEmbeddings===0,i=r&&t.failedEmbeddings>0;return{ready:r,degraded:i,activeEmbeddingJobs:n,missingEmbeddings:t.missingEmbeddings,staleEmbeddings:t.staleEmbeddings,failedEmbeddings:t.failedEmbeddings,embeddableEntities:t.embeddableEntities,embeddedEntities:t.embeddedEntities}}async getEntityWriteSnapshot(e){return await this.initialize(),this.entityQueries.getEntityWriteSnapshot(e)}async readAsset(e){return await this.initialize(),this.assetRepository.read(e)}async statAsset(e){return await this.initialize(),this.assetRepository.stat(e)}async verifyAsset(e){return await this.initialize(),this.assetRepository.verify(e)}async getEntity(e,t){e.signal?.throwIfAborted(),await this.initialize();let{entityType:n,visibilityScope:r}=e,i=await this.getEntityRaw(e);if(!i)return null;let o=await this.resolveEntityContent(n,i,r);return e.signal?.throwIfAborted(),t?t.parse(o):o}async resolveEntityContent(e,t,n){if(R0(e)&&t.content){let r=await this.contentResolver.resolve(t.content,this,n);if(r.resolvedCount>0)return{...t,content:r.content}}return t}async getEntityRaw(e,t){e.signal?.throwIfAborted(),await this.initialize();let{entityType:n,id:r,visibilityScope:i}=e;await this.entityRegistry.ensureGroupingsCurrent(n);let o=await this.entityQueries.getEntityData(n,r,i,e,e.publishedOnly?{publishedStatuses:this.publishedStatusesFor(n)}:void 0);if(!o)return null;let s=await this.entitySerializer.convertToEntity(o);return e.signal?.throwIfAborted(),s&&t?t.parse(s):s}async listEntities(e,t){e.options?.signal?.throwIfAborted(),await this.initialize();let{entityType:n,options:r}=e,i=await this.entityQueries.listEntities(n,r,this.publishedStatusesFor(n));return t?i.map((o)=>t.parse(o)):i}async queryEntityHierarchy(e){return e.signal?.throwIfAborted(),await this.initialize(),this.entityQueries.queryEntityHierarchy(e)}areGroupingsReady(){return!this.groupingAbort.signal.aborted&&this.groupingReprojection.isReady()}reprojectRegisteredGroupings(){return this.groupingReprojection.run(!0)}async ensureGroupingsReady(){if(await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent(),!this.areGroupingsReady()&&this.entityRegistry.getGroupingSourceType())this.groupingReprojection.run().catch((e)=>this.reportGroupingScanFailure(e));return this.areGroupingsReady()}async afterGroupingSourceMutation(e,t=!0){if(e!==this.entityRegistry.getGroupingSourceType())return;try{await this.entityRegistry.ensureGroupingsCurrent(void 0,{afterWrite:t}),await this.groupingReprojection.run()}catch(n){this.groupingReprojection.invalidate(),this.reportGroupingScanFailure(n)}}reportGroupingScanFailure(e){if(!this.groupingAbort.signal.aborted)this.logger.error("Grouping scan failed; grouping reads remain unready until retry",{error:Be(e)})}async queryGroupingCatalog(e){if(e.signal?.throwIfAborted(),await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent(),this.entityRegistry.getGroupingSourceType())await this.groupingReprojection.run();return this.entityQueries.queryGroupingCatalog(e)}async queryGroupingMembers(e){if(e.signal?.throwIfAborted(),await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent(),this.entityRegistry.getGroupingSourceType())await this.groupingReprojection.run();return this.entityQueries.queryGroupingMembers(e)}async queryGroupingUsage(e){if(e.signal?.throwIfAborted(),await this.initialize(),await this.entityRegistry.ensureGroupingsCurrent(),this.entityRegistry.getGroupingSourceType())await this.groupingReprojection.run();return this.entityQueries.queryGroupingUsage(e)}async countEntities(e){await this.initialize();let{entityType:t,options:n}=e;return this.entityQueries.countEntities(t,n,this.publishedStatusesFor(t))}declaredPublishGates(){return Object.fromEntries(this.entityRegistry.getAllEntityTypes().flatMap((e)=>{let t=this.publishedStatusesFor(e);return t?[[e,t]]:[]}))}publishedStatusesFor(e){if(!this.entityRegistry.hasEntityType(e))return;return this.entityRegistry.getAdapter(e).publishedStatuses}async getEntityCounts(e){return await this.initialize(),this.entityQueries.getEntityCounts(e)}async search(e,t){e.options?.signal?.throwIfAborted(),await this.initialize();let n=await this.entitySearch.search(e.query,this.withBroadSearchExclusions(e.options));return e.options?.signal?.throwIfAborted(),t?n.map((r)=>({...r,entity:t.parse(r.entity)})):n}withBroadSearchExclusions(e){if(e?.types&&e.types.length>0)return e;let t=this.entityRegistry.getAllEntityTypes().filter((n)=>this.entityRegistry.getEntityTypeConfig(n).includeInBroadSearch===!1);if(t.length===0)return e;return{...e,excludeTypes:[...e?.excludeTypes??[],...t]}}async searchEntities(e,t,n){return await this.initialize(),this.entitySearch.searchEntities(e,t,n)}async searchWithDistances(e){return await this.initialize(),this.entitySearch.searchWithDistances(e.query,{types:e.types,maxDistance:e.maxDistance})}async nearestToEntity(e){return await this.initialize(),this.entitySearch.nearestToEntity(e)}async projectSemanticSpace(e){return await this.initialize(),this.entitySearch.projectSemanticSpace(e)}async countEmbeddings(){return await this.initialize(),(await this.embeddingDb.select({count:b`count(*)`}).from(Gt))[0]?.count??0}serializeEntity(e){return this.entitySerializer.serializeEntity(e)}deserializeEntity(e,t){return this.entitySerializer.deserializeEntity(e,t)}getEntityTypes(){return this.entityRegistry.getAllEntityTypes()}hasEntityType(e){return this.entityRegistry.hasEntityType(e)}getEntityTypeConfig(e){return this.entityRegistry.getEntityTypeConfig(e)}getWeightMap(){return this.entityRegistry.getWeightMap()}async getAsyncJobStatus(e){let t=await this.jobQueueService.getStatus(e);if(!t)return null;return{status:t.status,...t.lastError&&{error:t.lastError}}}}class pv{active=new Set;queued=new Map;generation=0;replace(e,t=!1){let n=new Set;for(let r of e)for(let i of r.types){let o=JSON.stringify([i,r.field]);if(n.has(o))continue;if(n.add(o),t||!this.active.has(o)&&!this.queued.has(o))this.queued.set(o,{entityType:i,field:r.field,generation:++this.generation})}for(let r of this.queued.keys())if(!n.has(r))this.queued.delete(r);this.active=n}pending(){return[...this.queued.values()].map((e)=>({...e}))}complete(e){for(let t of e){let n=JSON.stringify([t.entityType,t.field]);if(this.queued.get(n)?.generation===t.generation)this.queued.delete(n)}}}function tp(e,t){if(!(e instanceof a.ZodType)||!(t instanceof a.ZodType))return!1;if(e===t)return!0;let n=e.def.checks??[],r=t.def.checks??[];if(n.length!==r.length||n.some((i,o)=>i!==r[o]))return!1;if(e instanceof a.ZodOptional&&t instanceof a.ZodOptional)return tp(e.unwrap(),t.unwrap());if(e instanceof a.ZodNullable&&t instanceof a.ZodNullable)return tp(e.unwrap(),t.unwrap());if(e instanceof a.ZodArray&&t instanceof a.ZodArray)return tp(e.element,t.element);if(e instanceof a.ZodStringFormat||t instanceof a.ZodStringFormat)return!1;if(e instanceof a.ZodString&&t instanceof a.ZodString)return e.def.coerce===t.def.coerce;if(e instanceof a.ZodEnum&&t instanceof a.ZodEnum)return JSON.stringify(e.def.entries)===JSON.stringify(t.def.entries);if(e instanceof a.ZodLiteral&&t instanceof a.ZodLiteral)return e.def.values.length===t.def.values.length&&e.def.values.every((i,o)=>Object.is(i,t.def.values[o]));return!1}function dv(e){return e instanceof a.ZodType?e.def.type:void 0}function u5(e){return typeof e==="function"?e():e}function oo(e){let t=Bf(e,!0,void 0,!1),n={inner:t.inner,required:t.required};if(t.hasDefault&&t.defaultValue!==void 0)n.defaultValue=t.defaultValue;return n}function Bf(e,t,n,r){if(e instanceof a.ZodOptional||e instanceof a.ZodNullable)return Bf(e.unwrap(),!1,n,r);if(e instanceof a.ZodDefault)return Bf(e.def.innerType,!1,u5(e.def.defaultValue),!0);if(e instanceof a.ZodPipe)return Bf(e.def.out,t,n,r);return{inner:e,required:t,defaultValue:n,hasDefault:r}}function _f(e){if(!(e instanceof a.ZodEnum))return;let t=Object.values(e.def.entries);if(t.every((n)=>typeof n==="string"))return t;return}function P0(e){return e instanceof a.ZodLiteral?e.def.values[0]:void 0}function Vo(e){return e instanceof a.ZodObject?e.shape:void 0}function A0(e){return e instanceof a.ZodArray?e.def.element:void 0}function nbe(e,t){if(e instanceof a.ZodStringFormat)return e.def.format===t;if(!(e instanceof a.ZodString))return!1;return(e.def.checks??[]).some((r)=>r instanceof a.ZodStringFormat&&r.def.format===t)}function rbe(e){return e instanceof a.ZodType?e.meta():void 0}class Ff{entitySchemas=new Map;entityAdapters=new Map;entityConfigs=new Map;createInterceptors=new Map;uploadSaveHandlers=[];persistValidators=new Map;frontmatterExtensions=new Map;groupingExtensions=new Map;logger;groupings=new Map;groupingSource;groupingProjections=new pv;groupingRevision=0;static createFresh(e){return new Ff(e)}constructor(e){this.logger=e}registerEntityType(e,t,n,r){if(this.logger.debug(`Registering entity type: ${e}`),this.entitySchemas.has(e))throw Error(`Entity type registration failed for ${e}: Entity type is already registered`);let i=Oc.parse(r?.classification);this.entitySchemas.set(e,t),this.entityAdapters.set(e,n),this.entityConfigs.set(e,{...r,classification:i}),this.logger.debug(`Registered entity type: ${e}`)}unregisterEntityType(e){if(this.groupingSource?.entityType===e)this.groupingSource=void 0,this.replaceGroupings([]);this.entitySchemas.delete(e),this.entityAdapters.delete(e),this.entityConfigs.delete(e),this.createInterceptors.delete(e),this.persistValidators.delete(e),this.frontmatterExtensions.delete(e),this.groupingExtensions.delete(e),this.uploadSaveHandlers=this.uploadSaveHandlers.filter((t)=>t.entityType!==e),this.logger.debug(`Unregistered entity type: ${e}`)}getSchema(e){let t=this.entitySchemas.get(e);if(!t)throw Error(`Entity type registration failed for ${e}: No schema registered for entity type`);return t}getAdapter(e){let t=this.entityAdapters.get(e);if(!t)throw Error(`Entity type registration failed for ${e}: No adapter registered for entity type`);let n=this.mergeExtensions(e,t.frontmatterSchema);if(!n||n===t.frontmatterSchema)return t;let r=Object.create(t);return Object.defineProperty(r,"frontmatterSchema",{value:n,enumerable:!0}),r}hasEntityType(e){return this.entitySchemas.has(e)&&this.entityAdapters.has(e)}validateEntity(e,t){let r=this.getSchema(e).parse(this.normalizePolicyFields(t,e)),i=Cr.parse(r);return{...r!==null&&typeof r==="object"&&!Array.isArray(r)?Object.fromEntries(Object.entries(r)):{},id:i.id,entityType:i.entityType,content:i.content,created:i.created,updated:i.updated,visibility:i.visibility,metadata:this.projectMetadata(e,i.content,i.metadata),contentHash:i.contentHash}}normalizePolicyFields(e,t){if(e===null||typeof e!=="object"||Array.isArray(e))return e;let n=Object.fromEntries(Object.entries(e));n.visibility=xi.parse(n.visibility);let r=n.metadata,i=Vo(oo(Vo(this.getSchema(t))?.metadata).inner);if(i&&r&&typeof r==="object"&&!Array.isArray(r)){let o=Object.fromEntries(Object.entries(r));for(let s of this.getFrontmatterExtensions(t))for(let c of Object.keys(s.shape))if(!Object.hasOwn(i,c))delete o[c];n.metadata=o}return n}getAllEntityTypes(){return Array.from(this.entitySchemas.keys())}getEntityTypeConfig(e){return{...this.entityConfigs.get(e)}}getWeightMap(){let e={};for(let[t,n]of this.entityConfigs)if(n.weight!==void 0)e[t]=n.weight;return e}registerCreateInterceptor(e,t){this.createInterceptors.set(e,t)}getCreateInterceptor(e){return this.createInterceptors.get(e)}registerUploadSaveHandler(e){this.uploadSaveHandlers=[...this.uploadSaveHandlers.filter((t)=>t.entityType!==e.entityType),e]}getUploadSaveHandler(e){return this.uploadSaveHandlers.find((t)=>t.mediaTypes.some((n)=>n.endsWith("/*")?e.startsWith(`${n.slice(0,-1)}`):e===n))}registerPersistValidator(e,t){let n=this.persistValidators.get(e);this.persistValidators.set(e,n?async(r,i)=>{await n(r,i),await t(r,i)}:t)}getPersistValidator(e){return this.persistValidators.get(e)}extendFrontmatterSchema(e,t){let n=this.entityAdapters.get(e);if(!n)throw Error(`Cannot extend frontmatter schema for ${e}: entity type is not registered`);if(!n.frontmatterSchema)throw Error(`Cannot extend frontmatter schema for ${e}: adapter has no frontmatterSchema`);for(let i of this.groupings.values())if(i.types.includes(e)&&Object.hasOwn(t.shape,i.field)&&t.shape[i.field]!==this.getEffectiveFrontmatterSchema(e)?.shape[i.field])throw Error(`Cannot replace registered grouping field ${e}.${i.field}`);let r=this.frontmatterExtensions.get(e)??[];r.push(t),this.frontmatterExtensions.set(e,r),this.logger.debug(`Extended frontmatter schema for entity type: ${e}`)}registerGroupingSource(e){if(this.groupingSource)throw Error("A grouping source is already registered");if(!this.hasEntityType(e.entityType))throw Error("Grouping source entity type is not registered");this.groupingSource=e}captureGroupingWriteGuard(e){let t=this.groupingRevision;return async()=>{if(await this.ensureGroupingsCurrent(),t!==this.groupingRevision)throw new nr(e,new a.ZodError([{code:"custom",path:[],message:"Grouping definitions changed while saving. Review the current rules and try again."}]),"persist")}}getGroupingSourceType(){return this.groupingSource?.entityType}getPendingGroupingProjections(){return this.groupingProjections.pending()}completeGroupingProjections(e){this.groupingProjections.complete(e)}async ensureGroupingsCurrent(e,t){let n=this.groupingSource;if(n&&n.entityType!==e)await n.ensureCurrent(t)}validateGroupings(e){this.stageGroupings(e)}replaceGroupings(e,t){let n=this.stageGroupings(e);this.groupings=n.groupings,this.groupingExtensions=n.groupingExtensions,this.groupingRevision++,this.groupingProjections.replace(this.groupings.values(),t?.reprojectExisting)}stageGroupings(e){let t=new Ff(this.logger.child("GroupingValidation"));t.entitySchemas=this.entitySchemas,t.entityAdapters=this.entityAdapters,t.entityConfigs=this.entityConfigs,t.frontmatterExtensions=new Map([...this.frontmatterExtensions].map(([n,r])=>[n,[...r]]));for(let n of e)t.registerGrouping(n);return t}registerGrouping(e){if(this.groupingSource)throw Error("Groupings are owned by a registered source; static declarations are not allowed");let t=xf.parse(e);if(this.groupings.has(t.key))throw Error(`Duplicate entity grouping: ${t.key}`);if(r0.has(t.field))throw Error("Grouping field is reserved");let n=[];for(let r of t.types){let i=this.getEffectiveFrontmatterSchema(r);if(!this.hasEntityType(r)||!i||!Hm(this.entityAdapters.get(r),this.getEntityTypeConfig(r)))throw Error(`Grouping requires an eligible content entity type: ${r}`);let o=i.shape[t.field],s=this.entityAdapters.get(r)?.frontmatterSchema?.shape[t.field];if(s&&s!==o)throw Error(`Grouping field overrides an owner contract: ${r}.${t.field}`);let c=Vo(oo(Vo(this.getSchema(r))?.metadata).inner)?.[t.field];if(!o){if(c)throw Error(`Grouping conflicts with metadata field ${r}.${t.field}`);n.push(r);continue}let l=A0(oo(o).inner),u=oo(l).inner;if(l!==u||!(u instanceof a.ZodString)&&!_f(u)&&typeof P0(u)!=="string")throw Error(`Grouping field must be a string list: ${r}.${t.field}`);if(c&&!tp(c,o))throw Error(`Cannot establish a shared frontmatter/metadata contract for ${r}.${t.field}`)}for(let r of n){let i=this.groupingExtensions.get(r)??[];i.push(a.object({[t.field]:a.array(a.string()).optional()})),this.groupingExtensions.set(r,i)}this.groupings.set(t.key,t),this.groupingRevision++,this.groupingProjections.replace(this.groupings.values())}getGrouping(e){let t=this.groupings.get(e);if(!t)throw Error("Unknown entity grouping");return{...t,types:[...t.types]}}getGroupings(){return[...this.groupings.keys()].map((e)=>this.getGrouping(e))}projectMetadata(e,t,n){return this.projectRegisteredFields(e,t,n,"reject")}projectStoredMetadata(e,t,n){return this.projectRegisteredFields(e,t,n,"omit")}groupingFields(e){return[...new Set([...this.groupings.values()].filter((t)=>t.types.includes(e)).map((t)=>t.field))]}isGroupingContributor(e){for(let t of this.groupings.values())if(t.types.includes(e))return!0;return!1}projectRegisteredFields(e,t,n,r){let i=Ut(t,a.record(a.string(),a.unknown()),{cache:r==="omit"?!1:!0}).metadata,o=t0(i,n,this.getFrontmatterExtensions(e),r),s=this.groupingFields(e);if(s.length===0)return o;let c=this.getEffectiveFrontmatterSchema(e);if(!c)throw Error("Grouping contributor lost its frontmatter schema");let l={...o};for(let u of s){delete l[u];let p=c.shape[u];if(!p||!Object.hasOwn(i,u))continue;let m=a.safeParse(p,i[u]);if(!m.success){if(r==="reject")throw m.error;continue}if(m.data!==void 0)l[u]=m.data}return l}getFrontmatterExtensions(e){return[...this.frontmatterExtensions.get(e)??[],...this.groupingExtensions.get(e)??[]]}getEffectiveFrontmatterSchema(e){let t=this.entityAdapters.get(e);return this.mergeExtensions(e,t?.frontmatterSchema)}mergeExtensions(e,t){if(!t)return;let n=this.getFrontmatterExtensions(e);if(!n.length)return t;let r=t;for(let i of n)r=r.safeExtend(i.shape);return r.superRefine((i,o)=>{for(let s of n){let c=Object.fromEntries(Object.keys(s.shape).flatMap((u)=>Object.hasOwn(i,u)?[[u,i[u]]]:[])),l=s.safeParse(c);if(!l.success)for(let u of l.error.issues)o.addIssue({code:"custom",path:[...u.path],message:u.message})}})}}class O0 extends Error{name="Assertion";code="ERR_ASSERTION";constructor(e,t,n,r,i){super(e);if(Error.captureStackTrace)Error.captureStackTrace(this,this.constructor);this.actual=t,this.expected=n,this.generated=i,this.operator=r}}function T(e,t){p5(Boolean(e),!1,!0,"ok","Expected value to be truthy",t)}function p5(e,t,n,r,i,o){if(!e)throw o instanceof Error?o:new O0(o||i,t,n,r,!o)}var d5={};function so(e,t){let n=t||d5,r=typeof n.includeImageAlt==="boolean"?n.includeImageAlt:!0,i=typeof n.includeHtml==="boolean"?n.includeHtml:!0;return z0(e,r,i)}function z0(e,t,n){if(m5(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return D0(e.children,t,n)}if(Array.isArray(e))return D0(e,t,n);return""}function D0(e,t,n){let r=[],i=-1;while(++i<e.length)r[i]=z0(e[i],t,n);return r.join("")}function m5(e){return Boolean(e&&typeof e==="object")}var mv={AElig:"\xC6",AMP:"&",Aacute:"\xC1",Abreve:"\u0102",Acirc:"\xC2",Acy:"\u0410",Afr:"\uD835\uDD04",Agrave:"\xC0",Alpha:"\u0391",Amacr:"\u0100",And:"\u2A53",Aogon:"\u0104",Aopf:"\uD835\uDD38",ApplyFunction:"\u2061",Aring:"\xC5",Ascr:"\uD835\uDC9C",Assign:"\u2254",Atilde:"\xC3",Auml:"\xC4",Backslash:"\u2216",Barv:"\u2AE7",Barwed:"\u2306",Bcy:"\u0411",Because:"\u2235",Bernoullis:"\u212C",Beta:"\u0392",Bfr:"\uD835\uDD05",Bopf:"\uD835\uDD39",Breve:"\u02D8",Bscr:"\u212C",Bumpeq:"\u224E",CHcy:"\u0427",COPY:"\xA9",Cacute:"\u0106",Cap:"\u22D2",CapitalDifferentialD:"\u2145",Cayleys:"\u212D",Ccaron:"\u010C",Ccedil:"\xC7",Ccirc:"\u0108",Cconint:"\u2230",Cdot:"\u010A",Cedilla:"\xB8",CenterDot:"\xB7",Cfr:"\u212D",Chi:"\u03A7",CircleDot:"\u2299",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",Colon:"\u2237",Colone:"\u2A74",Congruent:"\u2261",Conint:"\u222F",ContourIntegral:"\u222E",Copf:"\u2102",Coproduct:"\u2210",CounterClockwiseContourIntegral:"\u2233",Cross:"\u2A2F",Cscr:"\uD835\uDC9E",Cup:"\u22D3",CupCap:"\u224D",DD:"\u2145",DDotrahd:"\u2911",DJcy:"\u0402",DScy:"\u0405",DZcy:"\u040F",Dagger:"\u2021",Darr:"\u21A1",Dashv:"\u2AE4",Dcaron:"\u010E",Dcy:"\u0414",Del:"\u2207",Delta:"\u0394",Dfr:"\uD835\uDD07",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",Diamond:"\u22C4",DifferentialD:"\u2146",Dopf:"\uD835\uDD3B",Dot:"\xA8",DotDot:"\u20DC",DotEqual:"\u2250",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",DownArrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",DownTeeArrow:"\u21A7",Downarrow:"\u21D3",Dscr:"\uD835\uDC9F",Dstrok:"\u0110",ENG:"\u014A",ETH:"\xD0",Eacute:"\xC9",Ecaron:"\u011A",Ecirc:"\xCA",Ecy:"\u042D",Edot:"\u0116",Efr:"\uD835\uDD08",Egrave:"\xC8",Element:"\u2208",Emacr:"\u0112",EmptySmallSquare:"\u25FB",EmptyVerySmallSquare:"\u25AB",Eogon:"\u0118",Eopf:"\uD835\uDD3C",Epsilon:"\u0395",Equal:"\u2A75",EqualTilde:"\u2242",Equilibrium:"\u21CC",Escr:"\u2130",Esim:"\u2A73",Eta:"\u0397",Euml:"\xCB",Exists:"\u2203",ExponentialE:"\u2147",Fcy:"\u0424",Ffr:"\uD835\uDD09",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",Fopf:"\uD835\uDD3D",ForAll:"\u2200",Fouriertrf:"\u2131",Fscr:"\u2131",GJcy:"\u0403",GT:">",Gamma:"\u0393",Gammad:"\u03DC",Gbreve:"\u011E",Gcedil:"\u0122",Gcirc:"\u011C",Gcy:"\u0413",Gdot:"\u0120",Gfr:"\uD835\uDD0A",Gg:"\u22D9",Gopf:"\uD835\uDD3E",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\uD835\uDCA2",Gt:"\u226B",HARDcy:"\u042A",Hacek:"\u02C7",Hat:"^",Hcirc:"\u0124",Hfr:"\u210C",HilbertSpace:"\u210B",Hopf:"\u210D",HorizontalLine:"\u2500",Hscr:"\u210B",Hstrok:"\u0126",HumpDownHump:"\u224E",HumpEqual:"\u224F",IEcy:"\u0415",IJlig:"\u0132",IOcy:"\u0401",Iacute:"\xCD",Icirc:"\xCE",Icy:"\u0418",Idot:"\u0130",Ifr:"\u2111",Igrave:"\xCC",Im:"\u2111",Imacr:"\u012A",ImaginaryI:"\u2148",Implies:"\u21D2",Int:"\u222C",Integral:"\u222B",Intersection:"\u22C2",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",Iogon:"\u012E",Iopf:"\uD835\uDD40",Iota:"\u0399",Iscr:"\u2110",Itilde:"\u0128",Iukcy:"\u0406",Iuml:"\xCF",Jcirc:"\u0134",Jcy:"\u0419",Jfr:"\uD835\uDD0D",Jopf:"\uD835\uDD41",Jscr:"\uD835\uDCA5",Jsercy:"\u0408",Jukcy:"\u0404",KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",Kfr:"\uD835\uDD0E",Kopf:"\uD835\uDD42",Kscr:"\uD835\uDCA6",LJcy:"\u0409",LT:"<",Lacute:"\u0139",Lambda:"\u039B",Lang:"\u27EA",Laplacetrf:"\u2112",Larr:"\u219E",Lcaron:"\u013D",Lcedil:"\u013B",Lcy:"\u041B",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",LeftRightArrow:"\u2194",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",Leftarrow:"\u21D0",Leftrightarrow:"\u21D4",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",LessLess:"\u2AA1",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",Lfr:"\uD835\uDD0F",Ll:"\u22D8",Lleftarrow:"\u21DA",Lmidot:"\u013F",LongLeftArrow:"\u27F5",LongLeftRightArrow:"\u27F7",LongRightArrow:"\u27F6",Longleftarrow:"\u27F8",Longleftrightarrow:"\u27FA",Longrightarrow:"\u27F9",Lopf:"\uD835\uDD43",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",Lscr:"\u2112",Lsh:"\u21B0",Lstrok:"\u0141",Lt:"\u226A",Map:"\u2905",Mcy:"\u041C",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\uD835\uDD10",MinusPlus:"\u2213",Mopf:"\uD835\uDD44",Mscr:"\u2133",Mu:"\u039C",NJcy:"\u040A",Nacute:"\u0143",Ncaron:"\u0147",Ncedil:"\u0145",Ncy:"\u041D",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:`
69
+ `,Nfr:"\uD835\uDD11",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",Nscr:"\uD835\uDCA9",Ntilde:"\xD1",Nu:"\u039D",OElig:"\u0152",Oacute:"\xD3",Ocirc:"\xD4",Ocy:"\u041E",Odblac:"\u0150",Ofr:"\uD835\uDD12",Ograve:"\xD2",Omacr:"\u014C",Omega:"\u03A9",Omicron:"\u039F",Oopf:"\uD835\uDD46",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",Or:"\u2A54",Oscr:"\uD835\uDCAA",Oslash:"\xD8",Otilde:"\xD5",Otimes:"\u2A37",Ouml:"\xD6",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",PartialD:"\u2202",Pcy:"\u041F",Pfr:"\uD835\uDD13",Phi:"\u03A6",Pi:"\u03A0",PlusMinus:"\xB1",Poincareplane:"\u210C",Popf:"\u2119",Pr:"\u2ABB",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",Prime:"\u2033",Product:"\u220F",Proportion:"\u2237",Proportional:"\u221D",Pscr:"\uD835\uDCAB",Psi:"\u03A8",QUOT:'"',Qfr:"\uD835\uDD14",Qopf:"\u211A",Qscr:"\uD835\uDCAC",RBarr:"\u2910",REG:"\xAE",Racute:"\u0154",Rang:"\u27EB",Rarr:"\u21A0",Rarrtl:"\u2916",Rcaron:"\u0158",Rcedil:"\u0156",Rcy:"\u0420",Re:"\u211C",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",Rfr:"\u211C",Rho:"\u03A1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",Rightarrow:"\u21D2",Ropf:"\u211D",RoundImplies:"\u2970",Rrightarrow:"\u21DB",Rscr:"\u211B",Rsh:"\u21B1",RuleDelayed:"\u29F4",SHCHcy:"\u0429",SHcy:"\u0428",SOFTcy:"\u042C",Sacute:"\u015A",Sc:"\u2ABC",Scaron:"\u0160",Scedil:"\u015E",Scirc:"\u015C",Scy:"\u0421",Sfr:"\uD835\uDD16",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",Sigma:"\u03A3",SmallCircle:"\u2218",Sopf:"\uD835\uDD4A",Sqrt:"\u221A",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",Sscr:"\uD835\uDCAE",Star:"\u22C6",Sub:"\u22D0",Subset:"\u22D0",SubsetEqual:"\u2286",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",SuchThat:"\u220B",Sum:"\u2211",Sup:"\u22D1",Superset:"\u2283",SupersetEqual:"\u2287",Supset:"\u22D1",THORN:"\xDE",TRADE:"\u2122",TSHcy:"\u040B",TScy:"\u0426",Tab:"\t",Tau:"\u03A4",Tcaron:"\u0164",Tcedil:"\u0162",Tcy:"\u0422",Tfr:"\uD835\uDD17",Therefore:"\u2234",Theta:"\u0398",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",Topf:"\uD835\uDD4B",TripleDot:"\u20DB",Tscr:"\uD835\uDCAF",Tstrok:"\u0166",Uacute:"\xDA",Uarr:"\u219F",Uarrocir:"\u2949",Ubrcy:"\u040E",Ubreve:"\u016C",Ucirc:"\xDB",Ucy:"\u0423",Udblac:"\u0170",Ufr:"\uD835\uDD18",Ugrave:"\xD9",Umacr:"\u016A",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",Uopf:"\uD835\uDD4C",UpArrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",UpEquilibrium:"\u296E",UpTee:"\u22A5",UpTeeArrow:"\u21A5",Uparrow:"\u21D1",Updownarrow:"\u21D5",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",Upsilon:"\u03A5",Uring:"\u016E",Uscr:"\uD835\uDCB0",Utilde:"\u0168",Uuml:"\xDC",VDash:"\u22AB",Vbar:"\u2AEB",Vcy:"\u0412",Vdash:"\u22A9",Vdashl:"\u2AE6",Vee:"\u22C1",Verbar:"\u2016",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\uD835\uDD19",Vopf:"\uD835\uDD4D",Vscr:"\uD835\uDCB1",Vvdash:"\u22AA",Wcirc:"\u0174",Wedge:"\u22C0",Wfr:"\uD835\uDD1A",Wopf:"\uD835\uDD4E",Wscr:"\uD835\uDCB2",Xfr:"\uD835\uDD1B",Xi:"\u039E",Xopf:"\uD835\uDD4F",Xscr:"\uD835\uDCB3",YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\xDD",Ycirc:"\u0176",Ycy:"\u042B",Yfr:"\uD835\uDD1C",Yopf:"\uD835\uDD50",Yscr:"\uD835\uDCB4",Yuml:"\u0178",ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",ZeroWidthSpace:"\u200B",Zeta:"\u0396",Zfr:"\u2128",Zopf:"\u2124",Zscr:"\uD835\uDCB5",aacute:"\xE1",abreve:"\u0103",ac:"\u223E",acE:"\u223E\u0333",acd:"\u223F",acirc:"\xE2",acute:"\xB4",acy:"\u0430",aelig:"\xE6",af:"\u2061",afr:"\uD835\uDD1E",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",amacr:"\u0101",amalg:"\u2A3F",amp:"&",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",aogon:"\u0105",aopf:"\uD835\uDD52",ap:"\u2248",apE:"\u2A70",apacir:"\u2A6F",ape:"\u224A",apid:"\u224B",apos:"'",approx:"\u2248",approxeq:"\u224A",aring:"\xE5",ascr:"\uD835\uDCB6",ast:"*",asymp:"\u2248",asympeq:"\u224D",atilde:"\xE3",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",bNot:"\u2AED",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",barvee:"\u22BD",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",beta:"\u03B2",beth:"\u2136",between:"\u226C",bfr:"\uD835\uDD1F",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bopf:"\uD835\uDD53",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxDL:"\u2557",boxDR:"\u2554",boxDl:"\u2556",boxDr:"\u2553",boxH:"\u2550",boxHD:"\u2566",boxHU:"\u2569",boxHd:"\u2564",boxHu:"\u2567",boxUL:"\u255D",boxUR:"\u255A",boxUl:"\u255C",boxUr:"\u2559",boxV:"\u2551",boxVH:"\u256C",boxVL:"\u2563",boxVR:"\u2560",boxVh:"\u256B",boxVl:"\u2562",boxVr:"\u255F",boxbox:"\u29C9",boxdL:"\u2555",boxdR:"\u2552",boxdl:"\u2510",boxdr:"\u250C",boxh:"\u2500",boxhD:"\u2565",boxhU:"\u2568",boxhd:"\u252C",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxuL:"\u255B",boxuR:"\u2558",boxul:"\u2518",boxur:"\u2514",boxv:"\u2502",boxvH:"\u256A",boxvL:"\u2561",boxvR:"\u255E",boxvh:"\u253C",boxvl:"\u2524",boxvr:"\u251C",bprime:"\u2035",breve:"\u02D8",brvbar:"\xA6",bscr:"\uD835\uDCB7",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",bumpeq:"\u224F",cacute:"\u0107",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",ccaps:"\u2A4D",ccaron:"\u010D",ccedil:"\xE7",ccirc:"\u0109",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",cedil:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",cfr:"\uD835\uDD20",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",cir:"\u25CB",cirE:"\u29C3",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledR:"\xAE",circledS:"\u24C8",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",clubs:"\u2663",clubsuit:"\u2663",colon:":",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",conint:"\u222E",copf:"\uD835\uDD54",coprod:"\u2210",copy:"\xA9",copysr:"\u2117",crarr:"\u21B5",cross:"\u2717",cscr:"\uD835\uDCB8",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cup:"\u222A",cupbrcap:"\u2A48",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dArr:"\u21D3",dHar:"\u2965",dagger:"\u2020",daleth:"\u2138",darr:"\u2193",dash:"\u2010",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",dcaron:"\u010F",dcy:"\u0434",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",ddotseq:"\u2A77",deg:"\xB0",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\uD835\uDD21",dharl:"\u21C3",dharr:"\u21C2",diam:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\uD835\uDD55",dot:"\u02D9",doteq:"\u2250",doteqdot:"\u2251",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",downarrow:"\u2193",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscr:"\uD835\uDCB9",dscy:"\u0455",dsol:"\u29F6",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",dzigrarr:"\u27FF",eDDot:"\u2A77",eDot:"\u2251",eacute:"\xE9",easter:"\u2A6E",ecaron:"\u011B",ecir:"\u2256",ecirc:"\xEA",ecolon:"\u2255",ecy:"\u044D",edot:"\u0117",ee:"\u2147",efDot:"\u2252",efr:"\uD835\uDD22",eg:"\u2A9A",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",emptyv:"\u2205",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",eng:"\u014B",ensp:"\u2002",eogon:"\u0119",eopf:"\uD835\uDD56",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",equals:"=",equest:"\u225F",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erDot:"\u2253",erarr:"\u2971",escr:"\u212F",esdot:"\u2250",esim:"\u2242",eta:"\u03B7",eth:"\xF0",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",expectation:"\u2130",exponentiale:"\u2147",fallingdotseq:"\u2252",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\uD835\uDD23",filig:"\uFB01",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\uD835\uDD57",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\uD835\uDCBB",gE:"\u2267",gEl:"\u2A8C",gacute:"\u01F5",gamma:"\u03B3",gammad:"\u03DD",gap:"\u2A86",gbreve:"\u011F",gcirc:"\u011D",gcy:"\u0433",gdot:"\u0121",ge:"\u2265",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\uD835\uDD24",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",gjcy:"\u0453",gl:"\u2277",glE:"\u2A92",gla:"\u2AA5",glj:"\u2AA4",gnE:"\u2269",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",gopf:"\uD835\uDD58",grave:"`",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",hArr:"\u21D4",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",hardcy:"\u044A",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",hbar:"\u210F",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\uD835\uDD25",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\uD835\uDD59",horbar:"\u2015",hscr:"\uD835\uDCBD",hslash:"\u210F",hstrok:"\u0127",hybull:"\u2043",hyphen:"\u2010",iacute:"\xED",ic:"\u2063",icirc:"\xEE",icy:"\u0438",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",ifr:"\uD835\uDD26",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",imacr:"\u012B",image:"\u2111",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",int:"\u222B",intcal:"\u22BA",integers:"\u2124",intercal:"\u22BA",intlarhk:"\u2A17",intprod:"\u2A3C",iocy:"\u0451",iogon:"\u012F",iopf:"\uD835\uDD5A",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",iscr:"\uD835\uDCBE",isin:"\u2208",isinE:"\u22F9",isindot:"\u22F5",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",iukcy:"\u0456",iuml:"\xEF",jcirc:"\u0135",jcy:"\u0439",jfr:"\uD835\uDD27",jmath:"\u0237",jopf:"\uD835\uDD5B",jscr:"\uD835\uDCBF",jsercy:"\u0458",jukcy:"\u0454",kappa:"\u03BA",kappav:"\u03F0",kcedil:"\u0137",kcy:"\u043A",kfr:"\uD835\uDD28",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C",kopf:"\uD835\uDD5C",kscr:"\uD835\uDCC0",lAarr:"\u21DA",lArr:"\u21D0",lAtail:"\u291B",lBarr:"\u290E",lE:"\u2266",lEg:"\u2A8B",lHar:"\u2962",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",lambda:"\u03BB",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",laquo:"\xAB",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",lcedil:"\u013C",lceil:"\u2308",lcub:"{",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",leftarrow:"\u2190",leftarrowtail:"\u21A2",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",leftthreetimes:"\u22CB",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",lessgtr:"\u2276",lesssim:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lfr:"\uD835\uDD29",lg:"\u2276",lgE:"\u2A91",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnE:"\u2268",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",lopf:"\uD835\uDD5D",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\uD835\uDCC1",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltrPar:"\u2996",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",mDDot:"\u223A",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",mdash:"\u2014",measuredangle:"\u2221",mfr:"\uD835\uDD2A",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mopf:"\uD835\uDD5E",mp:"\u2213",mscr:"\uD835\uDCC2",mstpos:"\u223E",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nGg:"\u22D9\u0338",nGt:"\u226B\u20D2",nGtv:"\u226B\u0338",nLeftarrow:"\u21CD",nLeftrightarrow:"\u21CE",nLl:"\u22D8\u0338",nLt:"\u226A\u20D2",nLtv:"\u226A\u0338",nRightarrow:"\u21CF",nVDash:"\u22AF",nVdash:"\u22AE",nabla:"\u2207",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",neArr:"\u21D7",nearhk:"\u2924",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",nexist:"\u2204",nexists:"\u2204",nfr:"\uD835\uDD2B",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",ngsim:"\u2275",ngt:"\u226F",ngtr:"\u226F",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",nlArr:"\u21CD",nlE:"\u2266\u0338",nlarr:"\u219A",nldr:"\u2025",nle:"\u2270",nleftarrow:"\u219A",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nlsim:"\u2274",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nmid:"\u2224",nopf:"\uD835\uDD5F",not:"\xAC",notin:"\u2209",notinE:"\u22F9\u0338",notindot:"\u22F5\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nscr:"\uD835\uDCC3",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvDash:"\u22AD",nvHarr:"\u2904",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwArr:"\u21D6",nwarhk:"\u2923",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",oS:"\u24C8",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",ocirc:"\xF4",ocy:"\u043E",odash:"\u229D",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",ofcir:"\u29BF",ofr:"\uD835\uDD2C",ogon:"\u02DB",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",omega:"\u03C9",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",oopf:"\uD835\uDD60",opar:"\u29B7",operp:"\u29B9",oplus:"\u2295",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oscr:"\u2134",oslash:"\xF8",osol:"\u2298",otilde:"\xF5",otimes:"\u2297",otimesas:"\u2A36",ouml:"\xF6",ovbar:"\u233D",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",pfr:"\uD835\uDD2D",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",pointint:"\u2A15",popf:"\uD835\uDD61",pound:"\xA3",pr:"\u227A",prE:"\u2AB3",prap:"\u2AB7",prcue:"\u227C",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",prime:"\u2032",primes:"\u2119",prnE:"\u2AB5",prnap:"\u2AB9",prnsim:"\u22E8",prod:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",pscr:"\uD835\uDCC5",psi:"\u03C8",puncsp:"\u2008",qfr:"\uD835\uDD2E",qint:"\u2A0C",qopf:"\uD835\uDD62",qprime:"\u2057",qscr:"\uD835\uDCC6",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',rAarr:"\u21DB",rArr:"\u21D2",rAtail:"\u291C",rBarr:"\u290F",rHar:"\u2964",race:"\u223D\u0331",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",rarrw:"\u219D",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",rcedil:"\u0157",rceil:"\u2309",rcub:"}",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\xAE",rfisht:"\u297D",rfloor:"\u230B",rfr:"\uD835\uDD2F",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rho:"\u03C1",rhov:"\u03F1",rightarrow:"\u2192",rightarrowtail:"\u21A3",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",rightthreetimes:"\u22CC",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\uD835\uDD63",roplus:"\u2A2E",rotimes:"\u2A35",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",rsaquo:"\u203A",rscr:"\uD835\uDCC7",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",sbquo:"\u201A",sc:"\u227B",scE:"\u2AB4",scap:"\u2AB8",scaron:"\u0161",sccue:"\u227D",sce:"\u2AB0",scedil:"\u015F",scirc:"\u015D",scnE:"\u2AB6",scnap:"\u2ABA",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",seArr:"\u21D8",searhk:"\u2925",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfr:"\uD835\uDD30",sfrown:"\u2322",sharp:"\u266F",shchcy:"\u0449",shcy:"\u0448",shortmid:"\u2223",shortparallel:"\u2225",shy:"\xAD",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\uD835\uDD64",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",sscr:"\uD835\uDCC8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",subE:"\u2AC5",subdot:"\u2ABD",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",sum:"\u2211",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",sup:"\u2283",supE:"\u2AC6",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supedot:"\u2AC4",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swArr:"\u21D9",swarhk:"\u2926",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",target:"\u2316",tau:"\u03C4",tbrk:"\u23B4",tcaron:"\u0165",tcedil:"\u0163",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",tfr:"\uD835\uDD31",there4:"\u2234",therefore:"\u2234",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\xFE",tilde:"\u02DC",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topf:"\uD835\uDD65",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\uD835\uDCC9",tscy:"\u0446",tshcy:"\u045B",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",uArr:"\u21D1",uHar:"\u2963",uacute:"\xFA",uarr:"\u2191",ubrcy:"\u045E",ubreve:"\u016D",ucirc:"\xFB",ucy:"\u0443",udarr:"\u21C5",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",ufr:"\uD835\uDD32",ugrave:"\xF9",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",uml:"\xA8",uogon:"\u0173",uopf:"\uD835\uDD66",uparrow:"\u2191",updownarrow:"\u2195",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",upsi:"\u03C5",upsih:"\u03D2",upsilon:"\u03C5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",urtri:"\u25F9",uscr:"\uD835\uDCCA",utdot:"\u22F0",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\xFC",uwangle:"\u29A7",vArr:"\u21D5",vBar:"\u2AE8",vBarv:"\u2AE9",vDash:"\u22A8",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vcy:"\u0432",vdash:"\u22A2",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",vert:"|",vfr:"\uD835\uDD33",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vopf:"\uD835\uDD67",vprop:"\u221D",vrtri:"\u22B3",vscr:"\uD835\uDCCB",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",vzigzag:"\u299A",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",wfr:"\uD835\uDD34",wopf:"\uD835\uDD68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",wscr:"\uD835\uDCCC",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xfr:"\uD835\uDD35",xhArr:"\u27FA",xharr:"\u27F7",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xopf:"\uD835\uDD69",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",xscr:"\uD835\uDCCD",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",yacute:"\xFD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yen:"\xA5",yfr:"\uD835\uDD36",yicy:"\u0457",yopf:"\uD835\uDD6A",yscr:"\uD835\uDCCE",yucy:"\u044E",yuml:"\xFF",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeetrf:"\u2128",zeta:"\u03B6",zfr:"\uD835\uDD37",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\uD835\uDD6B",zscr:"\uD835\uDCCF",zwj:"\u200D",zwnj:"\u200C"};var f5={}.hasOwnProperty;function Uc(e){return f5.call(mv,e)?mv[e]:!1}var y={carriageReturn:-5,lineFeed:-4,carriageReturnLineFeed:-3,horizontalTab:-2,virtualSpace:-1,eof:null,nul:0,soh:1,stx:2,etx:3,eot:4,enq:5,ack:6,bel:7,bs:8,ht:9,lf:10,vt:11,ff:12,cr:13,so:14,si:15,dle:16,dc1:17,dc2:18,dc3:19,dc4:20,nak:21,syn:22,etb:23,can:24,em:25,sub:26,esc:27,fs:28,gs:29,rs:30,us:31,space:32,exclamationMark:33,quotationMark:34,numberSign:35,dollarSign:36,percentSign:37,ampersand:38,apostrophe:39,leftParenthesis:40,rightParenthesis:41,asterisk:42,plusSign:43,comma:44,dash:45,dot:46,slash:47,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,colon:58,semicolon:59,lessThan:60,equalsTo:61,greaterThan:62,questionMark:63,atSign:64,uppercaseA:65,uppercaseB:66,uppercaseC:67,uppercaseD:68,uppercaseE:69,uppercaseF:70,uppercaseG:71,uppercaseH:72,uppercaseI:73,uppercaseJ:74,uppercaseK:75,uppercaseL:76,uppercaseM:77,uppercaseN:78,uppercaseO:79,uppercaseP:80,uppercaseQ:81,uppercaseR:82,uppercaseS:83,uppercaseT:84,uppercaseU:85,uppercaseV:86,uppercaseW:87,uppercaseX:88,uppercaseY:89,uppercaseZ:90,leftSquareBracket:91,backslash:92,rightSquareBracket:93,caret:94,underscore:95,graveAccent:96,lowercaseA:97,lowercaseB:98,lowercaseC:99,lowercaseD:100,lowercaseE:101,lowercaseF:102,lowercaseG:103,lowercaseH:104,lowercaseI:105,lowercaseJ:106,lowercaseK:107,lowercaseL:108,lowercaseM:109,lowercaseN:110,lowercaseO:111,lowercaseP:112,lowercaseQ:113,lowercaseR:114,lowercaseS:115,lowercaseT:116,lowercaseU:117,lowercaseV:118,lowercaseW:119,lowercaseX:120,lowercaseY:121,lowercaseZ:122,leftCurlyBrace:123,verticalBar:124,rightCurlyBrace:125,tilde:126,del:127,byteOrderMarker:65279,replacementCharacter:65533};var te={attentionSideAfter:2,attentionSideBefore:1,atxHeadingOpeningFenceSizeMax:6,autolinkDomainSizeMax:63,autolinkSchemeSizeMax:32,cdataOpeningString:"CDATA[",characterGroupPunctuation:2,characterGroupWhitespace:1,characterReferenceDecimalSizeMax:7,characterReferenceHexadecimalSizeMax:6,characterReferenceNamedSizeMax:31,codeFencedSequenceSizeMin:3,contentTypeContent:"content",contentTypeDocument:"document",contentTypeFlow:"flow",contentTypeString:"string",contentTypeText:"text",hardBreakPrefixSizeMin:2,htmlBasic:6,htmlCdata:5,htmlComment:2,htmlComplete:7,htmlDeclaration:4,htmlInstruction:3,htmlRawSizeMax:8,htmlRaw:1,linkResourceDestinationBalanceMax:32,linkReferenceSizeMax:999,listItemValueSizeMax:10,numericBaseDecimal:10,numericBaseHexadecimal:16,tabSize:4,thematicBreakMarkerCountMin:3,v8MaxSafeChunkSize:1e4};var h={data:"data",whitespace:"whitespace",lineEnding:"lineEnding",lineEndingBlank:"lineEndingBlank",linePrefix:"linePrefix",lineSuffix:"lineSuffix",atxHeading:"atxHeading",atxHeadingSequence:"atxHeadingSequence",atxHeadingText:"atxHeadingText",autolink:"autolink",autolinkEmail:"autolinkEmail",autolinkMarker:"autolinkMarker",autolinkProtocol:"autolinkProtocol",characterEscape:"characterEscape",characterEscapeValue:"characterEscapeValue",characterReference:"characterReference",characterReferenceMarker:"characterReferenceMarker",characterReferenceMarkerNumeric:"characterReferenceMarkerNumeric",characterReferenceMarkerHexadecimal:"characterReferenceMarkerHexadecimal",characterReferenceValue:"characterReferenceValue",codeFenced:"codeFenced",codeFencedFence:"codeFencedFence",codeFencedFenceSequence:"codeFencedFenceSequence",codeFencedFenceInfo:"codeFencedFenceInfo",codeFencedFenceMeta:"codeFencedFenceMeta",codeFlowValue:"codeFlowValue",codeIndented:"codeIndented",codeText:"codeText",codeTextData:"codeTextData",codeTextPadding:"codeTextPadding",codeTextSequence:"codeTextSequence",content:"content",definition:"definition",definitionDestination:"definitionDestination",definitionDestinationLiteral:"definitionDestinationLiteral",definitionDestinationLiteralMarker:"definitionDestinationLiteralMarker",definitionDestinationRaw:"definitionDestinationRaw",definitionDestinationString:"definitionDestinationString",definitionLabel:"definitionLabel",definitionLabelMarker:"definitionLabelMarker",definitionLabelString:"definitionLabelString",definitionMarker:"definitionMarker",definitionTitle:"definitionTitle",definitionTitleMarker:"definitionTitleMarker",definitionTitleString:"definitionTitleString",emphasis:"emphasis",emphasisSequence:"emphasisSequence",emphasisText:"emphasisText",escapeMarker:"escapeMarker",hardBreakEscape:"hardBreakEscape",hardBreakTrailing:"hardBreakTrailing",htmlFlow:"htmlFlow",htmlFlowData:"htmlFlowData",htmlText:"htmlText",htmlTextData:"htmlTextData",image:"image",label:"label",labelText:"labelText",labelLink:"labelLink",labelImage:"labelImage",labelMarker:"labelMarker",labelImageMarker:"labelImageMarker",labelEnd:"labelEnd",link:"link",paragraph:"paragraph",reference:"reference",referenceMarker:"referenceMarker",referenceString:"referenceString",resource:"resource",resourceDestination:"resourceDestination",resourceDestinationLiteral:"resourceDestinationLiteral",resourceDestinationLiteralMarker:"resourceDestinationLiteralMarker",resourceDestinationRaw:"resourceDestinationRaw",resourceDestinationString:"resourceDestinationString",resourceMarker:"resourceMarker",resourceTitle:"resourceTitle",resourceTitleMarker:"resourceTitleMarker",resourceTitleString:"resourceTitleString",setextHeading:"setextHeading",setextHeadingText:"setextHeadingText",setextHeadingLine:"setextHeadingLine",setextHeadingLineSequence:"setextHeadingLineSequence",strong:"strong",strongSequence:"strongSequence",strongText:"strongText",thematicBreak:"thematicBreak",thematicBreakSequence:"thematicBreakSequence",blockQuote:"blockQuote",blockQuotePrefix:"blockQuotePrefix",blockQuoteMarker:"blockQuoteMarker",blockQuotePrefixWhitespace:"blockQuotePrefixWhitespace",listOrdered:"listOrdered",listUnordered:"listUnordered",listItemIndent:"listItemIndent",listItemMarker:"listItemMarker",listItemPrefix:"listItemPrefix",listItemPrefixWhitespace:"listItemPrefixWhitespace",listItemValue:"listItemValue",chunkDocument:"chunkDocument",chunkContent:"chunkContent",chunkFlow:"chunkFlow",chunkText:"chunkText",chunkString:"chunkString"};var cr={ht:"\t",lf:`
70
+ `,cr:"\r",space:" ",exclamationMark:"!",quotationMark:'"',numberSign:"#",dollarSign:"$",percentSign:"%",ampersand:"&",apostrophe:"'",leftParenthesis:"(",rightParenthesis:")",asterisk:"*",plusSign:"+",comma:",",dash:"-",dot:".",slash:"/",digit0:"0",digit1:"1",digit2:"2",digit3:"3",digit4:"4",digit5:"5",digit6:"6",digit7:"7",digit8:"8",digit9:"9",colon:":",semicolon:";",lessThan:"<",equalsTo:"=",greaterThan:">",questionMark:"?",atSign:"@",uppercaseA:"A",uppercaseB:"B",uppercaseC:"C",uppercaseD:"D",uppercaseE:"E",uppercaseF:"F",uppercaseG:"G",uppercaseH:"H",uppercaseI:"I",uppercaseJ:"J",uppercaseK:"K",uppercaseL:"L",uppercaseM:"M",uppercaseN:"N",uppercaseO:"O",uppercaseP:"P",uppercaseQ:"Q",uppercaseR:"R",uppercaseS:"S",uppercaseT:"T",uppercaseU:"U",uppercaseV:"V",uppercaseW:"W",uppercaseX:"X",uppercaseY:"Y",uppercaseZ:"Z",leftSquareBracket:"[",backslash:"\\",rightSquareBracket:"]",caret:"^",underscore:"_",graveAccent:"`",lowercaseA:"a",lowercaseB:"b",lowercaseC:"c",lowercaseD:"d",lowercaseE:"e",lowercaseF:"f",lowercaseG:"g",lowercaseH:"h",lowercaseI:"i",lowercaseJ:"j",lowercaseK:"k",lowercaseL:"l",lowercaseM:"m",lowercaseN:"n",lowercaseO:"o",lowercaseP:"p",lowercaseQ:"q",lowercaseR:"r",lowercaseS:"s",lowercaseT:"t",lowercaseU:"u",lowercaseV:"v",lowercaseW:"w",lowercaseX:"x",lowercaseY:"y",lowercaseZ:"z",leftCurlyBrace:"{",verticalBar:"|",rightCurlyBrace:"}",tilde:"~",replacementCharacter:"\uFFFD"};function ln(e,t,n,r){let i=e.length,o=0,s;if(t<0)t=-t>i?0:i+t;else t=t>i?i:t;if(n=n>0?n:0,r.length<te.v8MaxSafeChunkSize)s=Array.from(r),s.unshift(t,n),e.splice(...s);else{if(n)e.splice(t,n);while(o<r.length)s=r.slice(o,o+te.v8MaxSafeChunkSize),s.unshift(t,0),e.splice(...s),o+=te.v8MaxSafeChunkSize,t+=te.v8MaxSafeChunkSize}}function zn(e,t){if(e.length>0)return ln(e,e.length,0,t),e;return t}var M0={}.hasOwnProperty;function j0(e){let t={},n=-1;while(++n<e.length)g5(t,e[n]);return t}function g5(e,t){let n;for(n in t){let i=(M0.call(e,n)?e[n]:void 0)||(e[n]={}),o=t[n],s;if(o)for(s in o){if(!M0.call(i,s))i[s]=[];let c=o[s];h5(i[s],Array.isArray(c)?c:c?[c]:[])}}}function h5(e,t){let n=-1,r=[];while(++n<t.length)(t[n].add==="after"?e:r).push(t[n]);ln(e,0,0,r)}function Lf(e,t){let n=Number.parseInt(e,t);if(n<y.ht||n===y.vt||n>y.cr&&n<y.space||n>y.tilde&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111)return cr.replacementCharacter;return String.fromCodePoint(n)}function ao(e){return e.replace(/[\t\n\r ]+/g,cr.space).replace(/^ | $/g,"").toLowerCase().toUpperCase()}var lr=Qo(/[A-Za-z]/),Mn=Qo(/[\dA-Za-z]/),N0=Qo(/[#-'*+\--9=?A-Z^-~]/);function np(e){return e!==null&&(e<y.space||e===y.del)}var rp=Qo(/\d/),B0=Qo(/[\dA-Fa-f]/),_0=Qo(/[!-/:-@[-`{-~]/);function ce(e){return e!==null&&e<y.horizontalTab}function _t(e){return e!==null&&(e<y.nul||e===y.space)}function _e(e){return e===y.horizontalTab||e===y.virtualSpace||e===y.space}var F0=Qo(/\p{P}|\p{S}/u),L0=Qo(/\s/);function Qo(e){return t;function t(n){return n!==null&&n>-1&&e.test(String.fromCharCode(n))}}function qe(e,t,n,r){let i=r?r-1:Number.POSITIVE_INFINITY,o=0;return s;function s(l){if(_e(l))return e.enter(n),c(l);return t(l)}function c(l){if(_e(l)&&o++<i)return e.consume(l),c;return e.exit(n),t(l)}}var q0={tokenize:y5};function y5(e){let t=e.attempt(this.parser.constructs.contentInitial,r,i),n;return t;function r(c){if(T(c===y.eof||ce(c),"expected eol or eof"),c===y.eof){e.consume(c);return}return e.enter(h.lineEnding),e.consume(c),e.exit(h.lineEnding),qe(e,t,h.linePrefix)}function i(c){return T(c!==y.eof&&!ce(c),"expected anything other than a line ending or EOF"),e.enter(h.paragraph),o(c)}function o(c){let l=e.enter(h.chunkText,{contentType:te.contentTypeText,previous:n});if(n)n.next=l;return n=l,s(c)}function s(c){if(c===y.eof){e.exit(h.chunkText),e.exit(h.paragraph),e.consume(c);return}if(ce(c))return e.consume(c),e.exit(h.chunkText),o;return e.consume(c),s}}var $0={tokenize:b5},Z0={tokenize:S5};function b5(e){let t=this,n=[],r=0,i,o,s;return c;function c(j){if(r<n.length){let Y=n[r];return t.containerState=Y[1],T(Y[0].continuation,"expected `continuation` to be defined on container construct"),e.attempt(Y[0].continuation,l,u)(j)}return u(j)}function l(j){if(T(t.containerState,"expected `containerState` to be defined after continuation"),r++,t.containerState._closeFlow){if(t.containerState._closeFlow=void 0,i)B();let Y=t.events.length,G=Y,I;while(G--)if(t.events[G][0]==="exit"&&t.events[G][1].type===h.chunkFlow){I=t.events[G][1].end;break}T(I,"could not find previous flow chunk"),P(r);let ee=Y;while(ee<t.events.length)t.events[ee][1].end={...I},ee++;return ln(t.events,G+1,0,t.events.slice(Y)),t.events.length=ee,u(j)}return c(j)}function u(j){if(r===n.length){if(!i)return g(j);if(i.currentConstruct&&i.currentConstruct.concrete)return v(j);t.interrupt=Boolean(i.currentConstruct&&!i._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(Z0,p,m)(j)}function p(j){if(i)B();return P(r),g(j)}function m(j){return t.parser.lazy[t.now().line]=r!==n.length,s=t.now().offset,v(j)}function g(j){return t.containerState={},e.attempt(Z0,f,v)(j)}function f(j){return T(t.currentConstruct,"expected `currentConstruct` to be defined on tokenizer"),T(t.containerState,"expected `containerState` to be defined on tokenizer"),r++,n.push([t.currentConstruct,t.containerState]),g(j)}function v(j){if(j===y.eof){if(i)B();P(0),e.consume(j);return}return i=i||t.parser.flow(t.now()),e.enter(h.chunkFlow,{_tokenizer:i,contentType:te.contentTypeFlow,previous:o}),w(j)}function w(j){if(j===y.eof){k(e.exit(h.chunkFlow),!0),P(0),e.consume(j);return}if(ce(j))return e.consume(j),k(e.exit(h.chunkFlow)),r=0,t.interrupt=void 0,c;return e.consume(j),w}function k(j,Y){T(i,"expected `childFlow` to be defined when continuing");let G=t.sliceStream(j);if(Y)G.push(null);if(j.previous=o,o)o.next=j;if(o=j,i.defineSkip(j.start),i.write(G),t.parser.lazy[j.start.line]){let I=i.events.length;while(I--)if(i.events[I][1].start.offset<s&&(!i.events[I][1].end||i.events[I][1].end.offset>s))return;let ee=t.events.length,he=ee,Ee,We;while(he--)if(t.events[he][0]==="exit"&&t.events[he][1].type===h.chunkFlow){if(Ee){We=t.events[he][1].end;break}Ee=!0}T(We,"could not find previous flow chunk"),P(r),I=ee;while(I<t.events.length)t.events[I][1].end={...We},I++;ln(t.events,he+1,0,t.events.slice(ee)),t.events.length=I}}function P(j){let Y=n.length;while(Y-- >j){let G=n[Y];t.containerState=G[1],T(G[0].exit,"expected `exit` to be defined on container construct"),G[0].exit.call(t,e)}n.length=j}function B(){T(t.containerState,"expected `containerState` to be defined when closing flow"),T(i,"expected `childFlow` to be defined when closing it"),i.write([y.eof]),o=void 0,i=void 0,t.containerState._closeFlow=void 0}}function S5(e,t,n){return T(this.parser.constructs.disable.null,"expected `disable.null` to be populated"),qe(e,e.attempt(this.parser.constructs.document,t,n),h.linePrefix,this.parser.constructs.disable.null.includes("codeIndented")?void 0:te.tabSize)}function Wc(e){if(e===y.eof||_t(e)||L0(e))return te.characterGroupWhitespace;if(F0(e))return te.characterGroupPunctuation}function Jc(e,t,n){let r=[],i=-1;while(++i<e.length){let o=e[i].resolveAll;if(o&&!r.includes(o))t=o(t,n),r.push(o)}return t}var ip={name:"attention",resolveAll:x5,tokenize:v5};function x5(e,t){let n=-1,r,i,o,s,c,l,u,p;while(++n<e.length)if(e[n][0]==="enter"&&e[n][1].type==="attentionSequence"&&e[n][1]._close){r=n;while(r--)if(e[r][0]==="exit"&&e[r][1].type==="attentionSequence"&&e[r][1]._open&&t.sliceSerialize(e[r][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[r][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;l=e[r][1].end.offset-e[r][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let m={...e[r][1].end},g={...e[n][1].start};if(U0(m,-l),U0(g,l),s={type:l>1?h.strongSequence:h.emphasisSequence,start:m,end:{...e[r][1].end}},c={type:l>1?h.strongSequence:h.emphasisSequence,start:{...e[n][1].start},end:g},o={type:l>1?h.strongText:h.emphasisText,start:{...e[r][1].end},end:{...e[n][1].start}},i={type:l>1?h.strong:h.emphasis,start:{...s.start},end:{...c.end}},e[r][1].end={...s.start},e[n][1].start={...c.end},u=[],e[r][1].end.offset-e[r][1].start.offset)u=zn(u,[["enter",e[r][1],t],["exit",e[r][1],t]]);if(u=zn(u,[["enter",i,t],["enter",s,t],["exit",s,t],["enter",o,t]]),T(t.parser.constructs.insideSpan.null,"expected `insideSpan` to be populated"),u=zn(u,Jc(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),u=zn(u,[["exit",o,t],["enter",c,t],["exit",c,t],["exit",i,t]]),e[n][1].end.offset-e[n][1].start.offset)p=2,u=zn(u,[["enter",e[n][1],t],["exit",e[n][1],t]]);else p=0;ln(e,r-1,n-r+3,u),n=r+u.length-p-2;break}}n=-1;while(++n<e.length)if(e[n][1].type==="attentionSequence")e[n][1].type="data";return e}function v5(e,t){let n=this.parser.constructs.attentionMarkers.null,r=this.previous,i=Wc(r),o;return s;function s(l){return T(l===y.asterisk||l===y.underscore,"expected asterisk or underscore"),o=l,e.enter("attentionSequence"),c(l)}function c(l){if(l===o)return e.consume(l),c;let u=e.exit("attentionSequence"),p=Wc(l);T(n,"expected `attentionMarkers` to be populated");let m=!p||p===te.characterGroupPunctuation&&i||n.includes(l),g=!i||i===te.characterGroupPunctuation&&p||n.includes(r);return u._open=Boolean(o===y.asterisk?m:m&&(i||!g)),u._close=Boolean(o===y.asterisk?g:g&&(p||!m)),t(l)}}function U0(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}var fv={name:"autolink",tokenize:w5};function w5(e,t,n){let r=0;return i;function i(f){return T(f===y.lessThan,"expected `<`"),e.enter(h.autolink),e.enter(h.autolinkMarker),e.consume(f),e.exit(h.autolinkMarker),e.enter(h.autolinkProtocol),o}function o(f){if(lr(f))return e.consume(f),s;if(f===y.atSign)return n(f);return u(f)}function s(f){if(f===y.plusSign||f===y.dash||f===y.dot||Mn(f))return r=1,c(f);return u(f)}function c(f){if(f===y.colon)return e.consume(f),r=0,l;if((f===y.plusSign||f===y.dash||f===y.dot||Mn(f))&&r++<te.autolinkSchemeSizeMax)return e.consume(f),c;return r=0,u(f)}function l(f){if(f===y.greaterThan)return e.exit(h.autolinkProtocol),e.enter(h.autolinkMarker),e.consume(f),e.exit(h.autolinkMarker),e.exit(h.autolink),t;if(f===y.eof||f===y.space||f===y.lessThan||np(f))return n(f);return e.consume(f),l}function u(f){if(f===y.atSign)return e.consume(f),p;if(N0(f))return e.consume(f),u;return n(f)}function p(f){return Mn(f)?m(f):n(f)}function m(f){if(f===y.dot)return e.consume(f),r=0,p;if(f===y.greaterThan)return e.exit(h.autolinkProtocol).type=h.autolinkEmail,e.enter(h.autolinkMarker),e.consume(f),e.exit(h.autolinkMarker),e.exit(h.autolink),t;return g(f)}function g(f){if((f===y.dash||Mn(f))&&r++<te.autolinkDomainSizeMax){let v=f===y.dash?g:m;return e.consume(f),v}return n(f)}}var Ko={partial:!0,tokenize:T5};function T5(e,t,n){return r;function r(o){return _e(o)?qe(e,i,h.linePrefix)(o):i(o)}function i(o){return o===y.eof||ce(o)?t(o):n(o)}}var qf={continuation:{tokenize:E5},exit:I5,name:"blockQuote",tokenize:C5};function C5(e,t,n){let r=this;return i;function i(s){if(s===y.greaterThan){let c=r.containerState;if(T(c,"expected `containerState` to be defined in container"),!c.open)e.enter(h.blockQuote,{_container:!0}),c.open=!0;return e.enter(h.blockQuotePrefix),e.enter(h.blockQuoteMarker),e.consume(s),e.exit(h.blockQuoteMarker),o}return n(s)}function o(s){if(_e(s))return e.enter(h.blockQuotePrefixWhitespace),e.consume(s),e.exit(h.blockQuotePrefixWhitespace),e.exit(h.blockQuotePrefix),t;return e.exit(h.blockQuotePrefix),t(s)}}function E5(e,t,n){let r=this;return i;function i(s){if(_e(s))return T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),qe(e,o,h.linePrefix,r.parser.constructs.disable.null.includes("codeIndented")?void 0:te.tabSize)(s);return o(s)}function o(s){return e.attempt(qf,t,n)(s)}}function I5(e){e.exit(h.blockQuote)}var Zf={name:"characterEscape",tokenize:R5};function R5(e,t,n){return r;function r(o){return T(o===y.backslash,"expected `\\`"),e.enter(h.characterEscape),e.enter(h.escapeMarker),e.consume(o),e.exit(h.escapeMarker),i}function i(o){if(_0(o))return e.enter(h.characterEscapeValue),e.consume(o),e.exit(h.characterEscapeValue),e.exit(h.characterEscape),t;return n(o)}}var $f={name:"characterReference",tokenize:k5};function k5(e,t,n){let r=this,i=0,o,s;return c;function c(m){return T(m===y.ampersand,"expected `&`"),e.enter(h.characterReference),e.enter(h.characterReferenceMarker),e.consume(m),e.exit(h.characterReferenceMarker),l}function l(m){if(m===y.numberSign)return e.enter(h.characterReferenceMarkerNumeric),e.consume(m),e.exit(h.characterReferenceMarkerNumeric),u;return e.enter(h.characterReferenceValue),o=te.characterReferenceNamedSizeMax,s=Mn,p(m)}function u(m){if(m===y.uppercaseX||m===y.lowercaseX)return e.enter(h.characterReferenceMarkerHexadecimal),e.consume(m),e.exit(h.characterReferenceMarkerHexadecimal),e.enter(h.characterReferenceValue),o=te.characterReferenceHexadecimalSizeMax,s=B0,p;return e.enter(h.characterReferenceValue),o=te.characterReferenceDecimalSizeMax,s=rp,p(m)}function p(m){if(m===y.semicolon&&i){let g=e.exit(h.characterReferenceValue);if(s===Mn&&!Uc(r.sliceSerialize(g)))return n(m);return e.enter(h.characterReferenceMarker),e.consume(m),e.exit(h.characterReferenceMarker),e.exit(h.characterReference),t}if(s(m)&&i++<o)return e.consume(m),p;return n(m)}}var W0={partial:!0,tokenize:A5},Uf={concrete:!0,name:"codeFenced",tokenize:P5};function P5(e,t,n){let r=this,i={partial:!0,tokenize:G},o=0,s=0,c;return l;function l(I){return u(I)}function u(I){T(I===y.graveAccent||I===y.tilde,"expected `` ` `` or `~`");let ee=r.events[r.events.length-1];return o=ee&&ee[1].type===h.linePrefix?ee[2].sliceSerialize(ee[1],!0).length:0,c=I,e.enter(h.codeFenced),e.enter(h.codeFencedFence),e.enter(h.codeFencedFenceSequence),p(I)}function p(I){if(I===c)return s++,e.consume(I),p;if(s<te.codeFencedSequenceSizeMin)return n(I);return e.exit(h.codeFencedFenceSequence),_e(I)?qe(e,m,h.whitespace)(I):m(I)}function m(I){if(I===y.eof||ce(I))return e.exit(h.codeFencedFence),r.interrupt?t(I):e.check(W0,w,Y)(I);return e.enter(h.codeFencedFenceInfo),e.enter(h.chunkString,{contentType:te.contentTypeString}),g(I)}function g(I){if(I===y.eof||ce(I))return e.exit(h.chunkString),e.exit(h.codeFencedFenceInfo),m(I);if(_e(I))return e.exit(h.chunkString),e.exit(h.codeFencedFenceInfo),qe(e,f,h.whitespace)(I);if(I===y.graveAccent&&I===c)return n(I);return e.consume(I),g}function f(I){if(I===y.eof||ce(I))return m(I);return e.enter(h.codeFencedFenceMeta),e.enter(h.chunkString,{contentType:te.contentTypeString}),v(I)}function v(I){if(I===y.eof||ce(I))return e.exit(h.chunkString),e.exit(h.codeFencedFenceMeta),m(I);if(I===y.graveAccent&&I===c)return n(I);return e.consume(I),v}function w(I){return T(ce(I),"expected eol"),e.attempt(i,Y,k)(I)}function k(I){return T(ce(I),"expected eol"),e.enter(h.lineEnding),e.consume(I),e.exit(h.lineEnding),P}function P(I){return o>0&&_e(I)?qe(e,B,h.linePrefix,o+1)(I):B(I)}function B(I){if(I===y.eof||ce(I))return e.check(W0,w,Y)(I);return e.enter(h.codeFlowValue),j(I)}function j(I){if(I===y.eof||ce(I))return e.exit(h.codeFlowValue),B(I);return e.consume(I),j}function Y(I){return e.exit(h.codeFenced),t(I)}function G(I,ee,he){let Ee=0;return We;function We(Ae){return T(ce(Ae),"expected eol"),I.enter(h.lineEnding),I.consume(Ae),I.exit(h.lineEnding),Ye}function Ye(Ae){return T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),I.enter(h.codeFencedFence),_e(Ae)?qe(I,Ie,h.linePrefix,r.parser.constructs.disable.null.includes("codeIndented")?void 0:te.tabSize)(Ae):Ie(Ae)}function Ie(Ae){if(Ae===c)return I.enter(h.codeFencedFenceSequence),se(Ae);return he(Ae)}function se(Ae){if(Ae===c)return Ee++,I.consume(Ae),se;if(Ee>=s)return I.exit(h.codeFencedFenceSequence),_e(Ae)?qe(I,ue,h.whitespace)(Ae):ue(Ae);return he(Ae)}function ue(Ae){if(Ae===y.eof||ce(Ae))return I.exit(h.codeFencedFence),ee(Ae);return he(Ae)}}}function A5(e,t,n){let r=this;return i;function i(s){if(s===y.eof)return n(s);return T(ce(s),"expected eol"),e.enter(h.lineEnding),e.consume(s),e.exit(h.lineEnding),o}function o(s){return r.parser.lazy[r.now().line]?n(s):t(s)}}var op={name:"codeIndented",tokenize:D5},O5={partial:!0,tokenize:z5};function D5(e,t,n){let r=this;return i;function i(u){return T(_e(u)),e.enter(h.codeIndented),qe(e,o,h.linePrefix,te.tabSize+1)(u)}function o(u){let p=r.events[r.events.length-1];return p&&p[1].type===h.linePrefix&&p[2].sliceSerialize(p[1],!0).length>=te.tabSize?s(u):n(u)}function s(u){if(u===y.eof)return l(u);if(ce(u))return e.attempt(O5,s,l)(u);return e.enter(h.codeFlowValue),c(u)}function c(u){if(u===y.eof||ce(u))return e.exit(h.codeFlowValue),s(u);return e.consume(u),c}function l(u){return e.exit(h.codeIndented),t(u)}}function z5(e,t,n){let r=this;return i;function i(s){if(r.parser.lazy[r.now().line])return n(s);if(ce(s))return e.enter(h.lineEnding),e.consume(s),e.exit(h.lineEnding),i;return qe(e,o,h.linePrefix,te.tabSize+1)(s)}function o(s){let c=r.events[r.events.length-1];return c&&c[1].type===h.linePrefix&&c[2].sliceSerialize(c[1],!0).length>=te.tabSize?t(s):ce(s)?i(s):n(s)}}var gv={name:"codeText",previous:J0,resolve:M5,tokenize:j5};function M5(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===h.lineEnding||e[n][1].type==="space")&&(e[t][1].type===h.lineEnding||e[t][1].type==="space")){r=n;while(++r<t)if(e[r][1].type===h.codeTextData){e[n][1].type=h.codeTextPadding,e[t][1].type=h.codeTextPadding,n+=2,t-=2;break}}r=n-1,t++;while(++r<=t)if(i===void 0){if(r!==t&&e[r][1].type!==h.lineEnding)i=r}else if(r===t||e[r][1].type===h.lineEnding){if(e[i][1].type=h.codeTextData,r!==i+2)e[i][1].end=e[r-1][1].end,e.splice(i+2,r-i-2),t-=r-i-2,r=i+2;i=void 0}return e}function J0(e){return e!==y.graveAccent||this.events[this.events.length-1][1].type===h.characterEscape}function j5(e,t,n){let r=this,i=0,o,s;return c;function c(g){return T(g===y.graveAccent,"expected `` ` ``"),T(J0.call(r,r.previous),"expected correct previous"),e.enter(h.codeText),e.enter(h.codeTextSequence),l(g)}function l(g){if(g===y.graveAccent)return e.consume(g),i++,l;return e.exit(h.codeTextSequence),u(g)}function u(g){if(g===y.eof)return n(g);if(g===y.space)return e.enter("space"),e.consume(g),e.exit("space"),u;if(g===y.graveAccent)return s=e.enter(h.codeTextSequence),o=0,m(g);if(ce(g))return e.enter(h.lineEnding),e.consume(g),e.exit(h.lineEnding),u;return e.enter(h.codeTextData),p(g)}function p(g){if(g===y.eof||g===y.space||g===y.graveAccent||ce(g))return e.exit(h.codeTextData),u(g);return e.consume(g),p}function m(g){if(g===y.graveAccent)return e.consume(g),o++,m;if(o===i)return e.exit(h.codeTextSequence),e.exit(h.codeText),t(g);return s.type=h.codeTextData,p(g)}}class hv{constructor(e){this.left=e?[...e]:[],this.right=[]}get(e){if(e<0||e>=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");if(e<this.left.length)return this.left[e];return this.right[this.right.length-e+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(e,t){let n=t===null||t===void 0?Number.POSITIVE_INFINITY:t;if(n<this.left.length)return this.left.slice(e,n);if(e>this.left.length)return this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse();return this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,Number.POSITIVE_INFINITY);if(n)sp(this.left,n);return i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),sp(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),sp(this.right,e.reverse())}setCursor(e){if(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0)return;if(e<this.left.length){let t=this.left.splice(e,Number.POSITIVE_INFINITY);sp(this.right,t.reverse())}else{let t=this.right.splice(this.left.length+this.right.length-e,Number.POSITIVE_INFINITY);sp(this.left,t.reverse())}}}function sp(e,t){let n=0;if(t.length<te.v8MaxSafeChunkSize)e.push(...t);else while(n<t.length)e.push(...t.slice(n,n+te.v8MaxSafeChunkSize)),n+=te.v8MaxSafeChunkSize}function Wf(e){let t={},n=-1,r,i,o,s,c,l,u,p=new hv(e);while(++n<p.length){while(n in t)n=t[n];if(r=p.get(n),n&&r[1].type===h.chunkFlow&&p.get(n-1)[1].type===h.listItemPrefix){if(T(r[1]._tokenizer,"expected `_tokenizer` on subtokens"),l=r[1]._tokenizer.events,o=0,o<l.length&&l[o][1].type===h.lineEndingBlank)o+=2;if(o<l.length&&l[o][1].type===h.content)while(++o<l.length){if(l[o][1].type===h.content)break;if(l[o][1].type===h.chunkText)l[o][1]._isInFirstContentOfListItem=!0,o++}}if(r[0]==="enter"){if(r[1].contentType)Object.assign(t,N5(p,n)),n=t[n],u=!0}else if(r[1]._container){o=n,i=void 0;while(o--)if(s=p.get(o),s[1].type===h.lineEnding||s[1].type===h.lineEndingBlank){if(s[0]==="enter"){if(i)p.get(i)[1].type=h.lineEndingBlank;s[1].type=h.lineEnding,i=o}}else if(s[1].type===h.linePrefix||s[1].type===h.listItemIndent);else break;if(i)r[1].end={...p.get(i)[1].start},c=p.slice(i,n),c.unshift(r),p.splice(i,n-i+1,c)}}return ln(e,0,Number.POSITIVE_INFINITY,p.slice(0)),!u}function N5(e,t){let n=e.get(t)[1],r=e.get(t)[2],i=t-1,o=[];T(n.contentType,"expected `contentType` on subtokens");let s=n._tokenizer;if(!s){if(s=r.parser[n.contentType](n.start),n._contentTypeTextTrailing)s._contentTypeTextTrailing=!0}let c=s.events,l=[],u={},p,m,g=-1,f=n,v=0,w=0,k=[w];while(f){while(e.get(++i)[1]!==f);if(T(!m||f.previous===m,"expected previous to match"),T(!m||m.next===f,"expected next to match"),o.push(i),!f._tokenizer){if(p=r.sliceStream(f),!f.next)p.push(y.eof);if(m)s.defineSkip(f.start);if(f._isInFirstContentOfListItem)s._gfmTasklistFirstContentOfListItem=!0;if(s.write(p),f._isInFirstContentOfListItem)s._gfmTasklistFirstContentOfListItem=void 0}m=f,f=f.next}f=n;while(++g<c.length)if(c[g][0]==="exit"&&c[g-1][0]==="enter"&&c[g][1].type===c[g-1][1].type&&c[g][1].start.line!==c[g][1].end.line)T(f,"expected a current token"),w=g+1,k.push(w),f._tokenizer=void 0,f.previous=void 0,f=f.next;if(s.events=[],f)f._tokenizer=void 0,f.previous=void 0,T(!f.next,"expected no next token");else k.pop();g=k.length;while(g--){let P=c.slice(k[g],k[g+1]),B=o.pop();T(B!==void 0,"expected a start position when splicing"),l.push([B,B+P.length-1]),e.splice(B,2,P)}l.reverse(),g=-1;while(++g<l.length)u[v+l[g][0]]=v+l[g][1],v+=l[g][1]-l[g][0]-1;return u}var yv={resolve:_5,tokenize:F5},B5={partial:!0,tokenize:L5};function _5(e){return Wf(e),e}function F5(e,t){let n;return r;function r(c){return T(c!==y.eof&&!ce(c),"expected no eof or eol"),e.enter(h.content),n=e.enter(h.chunkContent,{contentType:te.contentTypeContent}),i(c)}function i(c){if(c===y.eof)return o(c);if(ce(c))return e.check(B5,s,o)(c);return e.consume(c),i}function o(c){return e.exit(h.chunkContent),e.exit(h.content),t(c)}function s(c){return T(ce(c),"expected eol"),e.consume(c),e.exit(h.chunkContent),T(n,"expected previous token"),n.next=e.enter(h.chunkContent,{contentType:te.contentTypeContent,previous:n}),n=n.next,i}}function L5(e,t,n){let r=this;return i;function i(s){return T(ce(s),"expected a line ending"),e.exit(h.chunkContent),e.enter(h.lineEnding),e.consume(s),e.exit(h.lineEnding),qe(e,o,h.linePrefix)}function o(s){if(s===y.eof||ce(s))return n(s);T(r.parser.constructs.disable.null,"expected `disable.null` to be populated");let c=r.events[r.events.length-1];if(!r.parser.constructs.disable.null.includes("codeIndented")&&c&&c[1].type===h.linePrefix&&c[2].sliceSerialize(c[1],!0).length>=te.tabSize)return t(s);return e.interrupt(r.parser.constructs.flow,n,t)(s)}}function Jf(e,t,n,r,i,o,s,c,l){let u=l||Number.POSITIVE_INFINITY,p=0;return m;function m(P){if(P===y.lessThan)return e.enter(r),e.enter(i),e.enter(o),e.consume(P),e.exit(o),g;if(P===y.eof||P===y.space||P===y.rightParenthesis||np(P))return n(P);return e.enter(r),e.enter(s),e.enter(c),e.enter(h.chunkString,{contentType:te.contentTypeString}),w(P)}function g(P){if(P===y.greaterThan)return e.enter(o),e.consume(P),e.exit(o),e.exit(i),e.exit(r),t;return e.enter(c),e.enter(h.chunkString,{contentType:te.contentTypeString}),f(P)}function f(P){if(P===y.greaterThan)return e.exit(h.chunkString),e.exit(c),g(P);if(P===y.eof||P===y.lessThan||ce(P))return n(P);return e.consume(P),P===y.backslash?v:f}function v(P){if(P===y.lessThan||P===y.greaterThan||P===y.backslash)return e.consume(P),f;return f(P)}function w(P){if(!p&&(P===y.eof||P===y.rightParenthesis||_t(P)))return e.exit(h.chunkString),e.exit(c),e.exit(s),e.exit(r),t(P);if(p<u&&P===y.leftParenthesis)return e.consume(P),p++,w;if(P===y.rightParenthesis)return e.consume(P),p--,w;if(P===y.eof||P===y.space||P===y.leftParenthesis||np(P))return n(P);return e.consume(P),P===y.backslash?k:w}function k(P){if(P===y.leftParenthesis||P===y.rightParenthesis||P===y.backslash)return e.consume(P),w;return w(P)}}function Hf(e,t,n,r,i,o){let s=this,c=0,l;return u;function u(f){return T(f===y.leftSquareBracket,"expected `[`"),e.enter(r),e.enter(i),e.consume(f),e.exit(i),e.enter(o),p}function p(f){if(c>te.linkReferenceSizeMax||f===y.eof||f===y.leftSquareBracket||f===y.rightSquareBracket&&!l||f===y.caret&&!c&&"_hiddenFootnoteSupport"in s.parser.constructs)return n(f);if(f===y.rightSquareBracket)return e.exit(o),e.enter(i),e.consume(f),e.exit(i),e.exit(r),t;if(ce(f))return e.enter(h.lineEnding),e.consume(f),e.exit(h.lineEnding),p;return e.enter(h.chunkString,{contentType:te.contentTypeString}),m(f)}function m(f){if(f===y.eof||f===y.leftSquareBracket||f===y.rightSquareBracket||ce(f)||c++>te.linkReferenceSizeMax)return e.exit(h.chunkString),p(f);if(e.consume(f),!l)l=!_e(f);return f===y.backslash?g:m}function g(f){if(f===y.leftSquareBracket||f===y.backslash||f===y.rightSquareBracket)return e.consume(f),c++,m;return m(f)}}function Gf(e,t,n,r,i,o){let s;return c;function c(g){if(g===y.quotationMark||g===y.apostrophe||g===y.leftParenthesis)return e.enter(r),e.enter(i),e.consume(g),e.exit(i),s=g===y.leftParenthesis?y.rightParenthesis:g,l;return n(g)}function l(g){if(g===s)return e.enter(i),e.consume(g),e.exit(i),e.exit(r),t;return e.enter(o),u(g)}function u(g){if(g===s)return e.exit(o),l(s);if(g===y.eof)return n(g);if(ce(g))return e.enter(h.lineEnding),e.consume(g),e.exit(h.lineEnding),qe(e,u,h.linePrefix);return e.enter(h.chunkString,{contentType:te.contentTypeString}),p(g)}function p(g){if(g===s||g===y.eof||ce(g))return e.exit(h.chunkString),u(g);return e.consume(g),g===y.backslash?m:p}function m(g){if(g===s||g===y.backslash)return e.consume(g),p;return p(g)}}function ua(e,t){let n;return r;function r(i){if(ce(i))return e.enter(h.lineEnding),e.consume(i),e.exit(h.lineEnding),n=!0,r;if(_e(i))return qe(e,r,n?h.linePrefix:h.lineSuffix)(i);return t(i)}}var bv={name:"definition",tokenize:Z5},q5={partial:!0,tokenize:$5};function Z5(e,t,n){let r=this,i;return o;function o(f){return e.enter(h.definition),s(f)}function s(f){return T(f===y.leftSquareBracket,"expected `[`"),Hf.call(r,e,c,n,h.definitionLabel,h.definitionLabelMarker,h.definitionLabelString)(f)}function c(f){if(i=ao(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),f===y.colon)return e.enter(h.definitionMarker),e.consume(f),e.exit(h.definitionMarker),l;return n(f)}function l(f){return _t(f)?ua(e,u)(f):u(f)}function u(f){return Jf(e,p,n,h.definitionDestination,h.definitionDestinationLiteral,h.definitionDestinationLiteralMarker,h.definitionDestinationRaw,h.definitionDestinationString)(f)}function p(f){return e.attempt(q5,m,m)(f)}function m(f){return _e(f)?qe(e,g,h.whitespace)(f):g(f)}function g(f){if(f===y.eof||ce(f))return e.exit(h.definition),r.parser.defined.push(i),t(f);return n(f)}}function $5(e,t,n){return r;function r(c){return _t(c)?ua(e,i)(c):n(c)}function i(c){return Gf(e,o,n,h.definitionTitle,h.definitionTitleMarker,h.definitionTitleString)(c)}function o(c){return _e(c)?qe(e,s,h.whitespace)(c):s(c)}function s(c){return c===y.eof||ce(c)?t(c):n(c)}}var Sv={name:"hardBreakEscape",tokenize:U5};function U5(e,t,n){return r;function r(o){return T(o===y.backslash,"expected `\\`"),e.enter(h.hardBreakEscape),e.consume(o),i}function i(o){if(ce(o))return e.exit(h.hardBreakEscape),t(o);return n(o)}}var xv={name:"headingAtx",resolve:W5,tokenize:J5};function W5(e,t){let n=e.length-2,r=3,i,o;if(e[r][1].type===h.whitespace)r+=2;if(n-2>r&&e[n][1].type===h.whitespace)n-=2;if(e[n][1].type===h.atxHeadingSequence&&(r===n-1||n-4>r&&e[n-2][1].type===h.whitespace))n-=r+1===n?2:4;if(n>r)i={type:h.atxHeadingText,start:e[r][1].start,end:e[n][1].end},o={type:h.chunkText,start:e[r][1].start,end:e[n][1].end,contentType:te.contentTypeText},ln(e,r,n-r+1,[["enter",i,t],["enter",o,t],["exit",o,t],["exit",i,t]]);return e}function J5(e,t,n){let r=0;return i;function i(p){return e.enter(h.atxHeading),o(p)}function o(p){return T(p===y.numberSign,"expected `#`"),e.enter(h.atxHeadingSequence),s(p)}function s(p){if(p===y.numberSign&&r++<te.atxHeadingOpeningFenceSizeMax)return e.consume(p),s;if(p===y.eof||_t(p))return e.exit(h.atxHeadingSequence),c(p);return n(p)}function c(p){if(p===y.numberSign)return e.enter(h.atxHeadingSequence),l(p);if(p===y.eof||ce(p))return e.exit(h.atxHeading),t(p);if(_e(p))return qe(e,c,h.whitespace)(p);return e.enter(h.atxHeadingText),u(p)}function l(p){if(p===y.numberSign)return e.consume(p),l;return e.exit(h.atxHeadingSequence),c(p)}function u(p){if(p===y.eof||p===y.numberSign||_t(p))return e.exit(h.atxHeadingText),c(p);return e.consume(p),u}}var H0=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],vv=["pre","script","style","textarea"];var wv={concrete:!0,name:"htmlFlow",resolveTo:V5,tokenize:Q5},H5={partial:!0,tokenize:Y5},G5={partial:!0,tokenize:K5};function V5(e){let t=e.length;while(t--)if(e[t][0]==="enter"&&e[t][1].type===h.htmlFlow)break;if(t>1&&e[t-2][1].type===h.linePrefix)e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2);return e}function Q5(e,t,n){let r=this,i,o,s,c,l;return u;function u(E){return p(E)}function p(E){return T(E===y.lessThan,"expected `<`"),e.enter(h.htmlFlow),e.enter(h.htmlFlowData),e.consume(E),m}function m(E){if(E===y.exclamationMark)return e.consume(E),g;if(E===y.slash)return e.consume(E),o=!0,w;if(E===y.questionMark)return e.consume(E),i=te.htmlInstruction,r.interrupt?t:C;if(lr(E))return T(E!==null),e.consume(E),s=String.fromCharCode(E),k;return n(E)}function g(E){if(E===y.dash)return e.consume(E),i=te.htmlComment,f;if(E===y.leftSquareBracket)return e.consume(E),i=te.htmlCdata,c=0,v;if(lr(E))return e.consume(E),i=te.htmlDeclaration,r.interrupt?t:C;return n(E)}function f(E){if(E===y.dash)return e.consume(E),r.interrupt?t:C;return n(E)}function v(E){let Vt=te.cdataOpeningString;if(E===Vt.charCodeAt(c++)){if(e.consume(E),c===Vt.length)return r.interrupt?t:Ie;return v}return n(E)}function w(E){if(lr(E))return T(E!==null),e.consume(E),s=String.fromCharCode(E),k;return n(E)}function k(E){if(E===y.eof||E===y.slash||E===y.greaterThan||_t(E)){let Vt=E===y.slash,jt=s.toLowerCase();if(!Vt&&!o&&vv.includes(jt))return i=te.htmlRaw,r.interrupt?t(E):Ie(E);if(H0.includes(s.toLowerCase())){if(i=te.htmlBasic,Vt)return e.consume(E),P;return r.interrupt?t(E):Ie(E)}return i=te.htmlComplete,r.interrupt&&!r.parser.lazy[r.now().line]?n(E):o?B(E):j(E)}if(E===y.dash||Mn(E))return e.consume(E),s+=String.fromCharCode(E),k;return n(E)}function P(E){if(E===y.greaterThan)return e.consume(E),r.interrupt?t:Ie;return n(E)}function B(E){if(_e(E))return e.consume(E),B;return We(E)}function j(E){if(E===y.slash)return e.consume(E),We;if(E===y.colon||E===y.underscore||lr(E))return e.consume(E),Y;if(_e(E))return e.consume(E),j;return We(E)}function Y(E){if(E===y.dash||E===y.dot||E===y.colon||E===y.underscore||Mn(E))return e.consume(E),Y;return G(E)}function G(E){if(E===y.equalsTo)return e.consume(E),I;if(_e(E))return e.consume(E),G;return j(E)}function I(E){if(E===y.eof||E===y.lessThan||E===y.equalsTo||E===y.greaterThan||E===y.graveAccent)return n(E);if(E===y.quotationMark||E===y.apostrophe)return e.consume(E),l=E,ee;if(_e(E))return e.consume(E),I;return he(E)}function ee(E){if(E===l)return e.consume(E),l=null,Ee;if(E===y.eof||ce(E))return n(E);return e.consume(E),ee}function he(E){if(E===y.eof||E===y.quotationMark||E===y.apostrophe||E===y.slash||E===y.lessThan||E===y.equalsTo||E===y.greaterThan||E===y.graveAccent||_t(E))return G(E);return e.consume(E),he}function Ee(E){if(E===y.slash||E===y.greaterThan||_e(E))return j(E);return n(E)}function We(E){if(E===y.greaterThan)return e.consume(E),Ye;return n(E)}function Ye(E){if(E===y.eof||ce(E))return Ie(E);if(_e(E))return e.consume(E),Ye;return n(E)}function Ie(E){if(E===y.dash&&i===te.htmlComment)return e.consume(E),ie;if(E===y.lessThan&&i===te.htmlRaw)return e.consume(E),Xe;if(E===y.greaterThan&&i===te.htmlDeclaration)return e.consume(E),pn;if(E===y.questionMark&&i===te.htmlInstruction)return e.consume(E),C;if(E===y.rightSquareBracket&&i===te.htmlCdata)return e.consume(E),Bn;if(ce(E)&&(i===te.htmlBasic||i===te.htmlComplete))return e.exit(h.htmlFlowData),e.check(H5,vn,se)(E);if(E===y.eof||ce(E))return e.exit(h.htmlFlowData),se(E);return e.consume(E),Ie}function se(E){return e.check(G5,ue,vn)(E)}function ue(E){return T(ce(E)),e.enter(h.lineEnding),e.consume(E),e.exit(h.lineEnding),Ae}function Ae(E){if(E===y.eof||ce(E))return se(E);return e.enter(h.htmlFlowData),Ie(E)}function ie(E){if(E===y.dash)return e.consume(E),C;return Ie(E)}function Xe(E){if(E===y.slash)return e.consume(E),s="",rt;return Ie(E)}function rt(E){if(E===y.greaterThan){let Vt=s.toLowerCase();if(vv.includes(Vt))return e.consume(E),pn;return Ie(E)}if(lr(E)&&s.length<te.htmlRawSizeMax)return T(E!==null),e.consume(E),s+=String.fromCharCode(E),rt;return Ie(E)}function Bn(E){if(E===y.rightSquareBracket)return e.consume(E),C;return Ie(E)}function C(E){if(E===y.greaterThan)return e.consume(E),pn;if(E===y.dash&&i===te.htmlComment)return e.consume(E),C;return Ie(E)}function pn(E){if(E===y.eof||ce(E))return e.exit(h.htmlFlowData),vn(E);return e.consume(E),pn}function vn(E){return e.exit(h.htmlFlow),t(E)}}function K5(e,t,n){let r=this;return i;function i(s){if(ce(s))return e.enter(h.lineEnding),e.consume(s),e.exit(h.lineEnding),o;return n(s)}function o(s){return r.parser.lazy[r.now().line]?n(s):t(s)}}function Y5(e,t,n){return r;function r(i){return T(ce(i),"expected a line ending"),e.enter(h.lineEnding),e.consume(i),e.exit(h.lineEnding),e.attempt(Ko,t,n)}}var Tv={name:"htmlText",tokenize:X5};function X5(e,t,n){let r=this,i,o,s;return c;function c(C){return T(C===y.lessThan,"expected `<`"),e.enter(h.htmlText),e.enter(h.htmlTextData),e.consume(C),l}function l(C){if(C===y.exclamationMark)return e.consume(C),u;if(C===y.slash)return e.consume(C),G;if(C===y.questionMark)return e.consume(C),j;if(lr(C))return e.consume(C),he;return n(C)}function u(C){if(C===y.dash)return e.consume(C),p;if(C===y.leftSquareBracket)return e.consume(C),o=0,v;if(lr(C))return e.consume(C),B;return n(C)}function p(C){if(C===y.dash)return e.consume(C),f;return n(C)}function m(C){if(C===y.eof)return n(C);if(C===y.dash)return e.consume(C),g;if(ce(C))return s=m,Xe(C);return e.consume(C),m}function g(C){if(C===y.dash)return e.consume(C),f;return m(C)}function f(C){return C===y.greaterThan?ie(C):C===y.dash?g(C):m(C)}function v(C){let pn=te.cdataOpeningString;if(C===pn.charCodeAt(o++))return e.consume(C),o===pn.length?w:v;return n(C)}function w(C){if(C===y.eof)return n(C);if(C===y.rightSquareBracket)return e.consume(C),k;if(ce(C))return s=w,Xe(C);return e.consume(C),w}function k(C){if(C===y.rightSquareBracket)return e.consume(C),P;return w(C)}function P(C){if(C===y.greaterThan)return ie(C);if(C===y.rightSquareBracket)return e.consume(C),P;return w(C)}function B(C){if(C===y.eof||C===y.greaterThan)return ie(C);if(ce(C))return s=B,Xe(C);return e.consume(C),B}function j(C){if(C===y.eof)return n(C);if(C===y.questionMark)return e.consume(C),Y;if(ce(C))return s=j,Xe(C);return e.consume(C),j}function Y(C){return C===y.greaterThan?ie(C):j(C)}function G(C){if(lr(C))return e.consume(C),I;return n(C)}function I(C){if(C===y.dash||Mn(C))return e.consume(C),I;return ee(C)}function ee(C){if(ce(C))return s=ee,Xe(C);if(_e(C))return e.consume(C),ee;return ie(C)}function he(C){if(C===y.dash||Mn(C))return e.consume(C),he;if(C===y.slash||C===y.greaterThan||_t(C))return Ee(C);return n(C)}function Ee(C){if(C===y.slash)return e.consume(C),ie;if(C===y.colon||C===y.underscore||lr(C))return e.consume(C),We;if(ce(C))return s=Ee,Xe(C);if(_e(C))return e.consume(C),Ee;return ie(C)}function We(C){if(C===y.dash||C===y.dot||C===y.colon||C===y.underscore||Mn(C))return e.consume(C),We;return Ye(C)}function Ye(C){if(C===y.equalsTo)return e.consume(C),Ie;if(ce(C))return s=Ye,Xe(C);if(_e(C))return e.consume(C),Ye;return Ee(C)}function Ie(C){if(C===y.eof||C===y.lessThan||C===y.equalsTo||C===y.greaterThan||C===y.graveAccent)return n(C);if(C===y.quotationMark||C===y.apostrophe)return e.consume(C),i=C,se;if(ce(C))return s=Ie,Xe(C);if(_e(C))return e.consume(C),Ie;return e.consume(C),ue}function se(C){if(C===i)return e.consume(C),i=void 0,Ae;if(C===y.eof)return n(C);if(ce(C))return s=se,Xe(C);return e.consume(C),se}function ue(C){if(C===y.eof||C===y.quotationMark||C===y.apostrophe||C===y.lessThan||C===y.equalsTo||C===y.graveAccent)return n(C);if(C===y.slash||C===y.greaterThan||_t(C))return Ee(C);return e.consume(C),ue}function Ae(C){if(C===y.slash||C===y.greaterThan||_t(C))return Ee(C);return n(C)}function ie(C){if(C===y.greaterThan)return e.consume(C),e.exit(h.htmlTextData),e.exit(h.htmlText),t;return n(C)}function Xe(C){return T(s,"expected return state"),T(ce(C),"expected eol"),e.exit(h.htmlTextData),e.enter(h.lineEnding),e.consume(C),e.exit(h.lineEnding),rt}function rt(C){return T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),_e(C)?qe(e,Bn,h.linePrefix,r.parser.constructs.disable.null.includes("codeIndented")?void 0:te.tabSize)(C):Bn(C)}function Bn(C){return e.enter(h.htmlTextData),s(C)}}var pa={name:"labelEnd",resolveAll:r6,resolveTo:i6,tokenize:o6},e6={tokenize:s6},t6={tokenize:a6},n6={tokenize:c6};function r6(e){let t=-1,n=[];while(++t<e.length){let r=e[t][1];if(n.push(e[t]),r.type===h.labelImage||r.type===h.labelLink||r.type===h.labelEnd){let i=r.type===h.labelImage?4:2;r.type=h.data,t+=i}}if(e.length!==n.length)ln(e,0,e.length,n);return e}function i6(e,t){let n=e.length,r=0,i,o,s,c;while(n--)if(i=e[n][1],o){if(i.type===h.link||i.type===h.labelLink&&i._inactive)break;if(e[n][0]==="enter"&&i.type===h.labelLink)i._inactive=!0}else if(s){if(e[n][0]==="enter"&&(i.type===h.labelImage||i.type===h.labelLink)&&!i._balanced){if(o=n,i.type!==h.labelLink){r=2;break}}}else if(i.type===h.labelEnd)s=n;T(o!==void 0,"`open` is supposed to be found"),T(s!==void 0,"`close` is supposed to be found");let l={type:e[o][1].type===h.labelLink?h.link:h.image,start:{...e[o][1].start},end:{...e[e.length-1][1].end}},u={type:h.label,start:{...e[o][1].start},end:{...e[s][1].end}},p={type:h.labelText,start:{...e[o+r+2][1].end},end:{...e[s-2][1].start}};return c=[["enter",l,t],["enter",u,t]],c=zn(c,e.slice(o+1,o+r+3)),c=zn(c,[["enter",p,t]]),T(t.parser.constructs.insideSpan.null,"expected `insideSpan.null` to be populated"),c=zn(c,Jc(t.parser.constructs.insideSpan.null,e.slice(o+r+4,s-3),t)),c=zn(c,[["exit",p,t],e[s-2],e[s-1],["exit",u,t]]),c=zn(c,e.slice(s+1)),c=zn(c,[["exit",l,t]]),ln(e,o,e.length,c),e}function o6(e,t,n){let r=this,i=r.events.length,o,s;while(i--)if((r.events[i][1].type===h.labelImage||r.events[i][1].type===h.labelLink)&&!r.events[i][1]._balanced){o=r.events[i][1];break}return c;function c(g){if(T(g===y.rightSquareBracket,"expected `]`"),!o)return n(g);if(o._inactive)return m(g);return s=r.parser.defined.includes(ao(r.sliceSerialize({start:o.end,end:r.now()}))),e.enter(h.labelEnd),e.enter(h.labelMarker),e.consume(g),e.exit(h.labelMarker),e.exit(h.labelEnd),l}function l(g){if(g===y.leftParenthesis)return e.attempt(e6,p,s?p:m)(g);if(g===y.leftSquareBracket)return e.attempt(t6,p,s?u:m)(g);return s?p(g):m(g)}function u(g){return e.attempt(n6,p,m)(g)}function p(g){return t(g)}function m(g){return o._balanced=!0,n(g)}}function s6(e,t,n){return r;function r(m){return T(m===y.leftParenthesis,"expected left paren"),e.enter(h.resource),e.enter(h.resourceMarker),e.consume(m),e.exit(h.resourceMarker),i}function i(m){return _t(m)?ua(e,o)(m):o(m)}function o(m){if(m===y.rightParenthesis)return p(m);return Jf(e,s,c,h.resourceDestination,h.resourceDestinationLiteral,h.resourceDestinationLiteralMarker,h.resourceDestinationRaw,h.resourceDestinationString,te.linkResourceDestinationBalanceMax)(m)}function s(m){return _t(m)?ua(e,l)(m):p(m)}function c(m){return n(m)}function l(m){if(m===y.quotationMark||m===y.apostrophe||m===y.leftParenthesis)return Gf(e,u,n,h.resourceTitle,h.resourceTitleMarker,h.resourceTitleString)(m);return p(m)}function u(m){return _t(m)?ua(e,p)(m):p(m)}function p(m){if(m===y.rightParenthesis)return e.enter(h.resourceMarker),e.consume(m),e.exit(h.resourceMarker),e.exit(h.resource),t;return n(m)}}function a6(e,t,n){let r=this;return i;function i(c){return T(c===y.leftSquareBracket,"expected left bracket"),Hf.call(r,e,o,s,h.reference,h.referenceMarker,h.referenceString)(c)}function o(c){return r.parser.defined.includes(ao(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(c):n(c)}function s(c){return n(c)}}function c6(e,t,n){return r;function r(o){return T(o===y.leftSquareBracket,"expected left bracket"),e.enter(h.reference),e.enter(h.referenceMarker),e.consume(o),e.exit(h.referenceMarker),i}function i(o){if(o===y.rightSquareBracket)return e.enter(h.referenceMarker),e.consume(o),e.exit(h.referenceMarker),e.exit(h.reference),t;return n(o)}}var Cv={name:"labelStartImage",resolveAll:pa.resolveAll,tokenize:l6};function l6(e,t,n){let r=this;return i;function i(c){return T(c===y.exclamationMark,"expected `!`"),e.enter(h.labelImage),e.enter(h.labelImageMarker),e.consume(c),e.exit(h.labelImageMarker),o}function o(c){if(c===y.leftSquareBracket)return e.enter(h.labelMarker),e.consume(c),e.exit(h.labelMarker),e.exit(h.labelImage),s;return n(c)}function s(c){return c===y.caret&&"_hiddenFootnoteSupport"in r.parser.constructs?n(c):t(c)}}var Ev={name:"labelStartLink",resolveAll:pa.resolveAll,tokenize:u6};function u6(e,t,n){let r=this;return i;function i(s){return T(s===y.leftSquareBracket,"expected `[`"),e.enter(h.labelLink),e.enter(h.labelMarker),e.consume(s),e.exit(h.labelMarker),e.exit(h.labelLink),o}function o(s){return s===y.caret&&"_hiddenFootnoteSupport"in r.parser.constructs?n(s):t(s)}}var ap={name:"lineEnding",tokenize:p6};function p6(e,t){return n;function n(r){return T(ce(r),"expected eol"),e.enter(h.lineEnding),e.consume(r),e.exit(h.lineEnding),qe(e,t,h.linePrefix)}}var da={name:"thematicBreak",tokenize:d6};function d6(e,t,n){let r=0,i;return o;function o(u){return e.enter(h.thematicBreak),s(u)}function s(u){return T(u===y.asterisk||u===y.dash||u===y.underscore,"expected `*`, `-`, or `_`"),i=u,c(u)}function c(u){if(u===i)return e.enter(h.thematicBreakSequence),l(u);if(r>=te.thematicBreakMarkerCountMin&&(u===y.eof||ce(u)))return e.exit(h.thematicBreak),t(u);return n(u)}function l(u){if(u===i)return e.consume(u),r++,l;return e.exit(h.thematicBreakSequence),_e(u)?qe(e,c,h.whitespace)(u):c(u)}}var Sn={continuation:{tokenize:h6},exit:b6,name:"list",tokenize:g6},m6={partial:!0,tokenize:S6},f6={partial:!0,tokenize:y6};function g6(e,t,n){let r=this,i=r.events[r.events.length-1],o=i&&i[1].type===h.linePrefix?i[2].sliceSerialize(i[1],!0).length:0,s=0;return c;function c(f){T(r.containerState,"expected state");let v=r.containerState.type||(f===y.asterisk||f===y.plusSign||f===y.dash?h.listUnordered:h.listOrdered);if(v===h.listUnordered?!r.containerState.marker||f===r.containerState.marker:rp(f)){if(!r.containerState.type)r.containerState.type=v,e.enter(v,{_container:!0});if(v===h.listUnordered)return e.enter(h.listItemPrefix),f===y.asterisk||f===y.dash?e.check(da,n,u)(f):u(f);if(!r.interrupt||f===y.digit1)return e.enter(h.listItemPrefix),e.enter(h.listItemValue),l(f)}return n(f)}function l(f){if(T(r.containerState,"expected state"),rp(f)&&++s<te.listItemValueSizeMax)return e.consume(f),l;if((!r.interrupt||s<2)&&(r.containerState.marker?f===r.containerState.marker:f===y.rightParenthesis||f===y.dot))return e.exit(h.listItemValue),u(f);return n(f)}function u(f){return T(r.containerState,"expected state"),T(f!==y.eof,"eof (`null`) is not a marker"),e.enter(h.listItemMarker),e.consume(f),e.exit(h.listItemMarker),r.containerState.marker=r.containerState.marker||f,e.check(Ko,r.interrupt?n:p,e.attempt(m6,g,m))}function p(f){return T(r.containerState,"expected state"),r.containerState.initialBlankLine=!0,o++,g(f)}function m(f){if(_e(f))return e.enter(h.listItemPrefixWhitespace),e.consume(f),e.exit(h.listItemPrefixWhitespace),g;return n(f)}function g(f){return T(r.containerState,"expected state"),r.containerState.size=o+r.sliceSerialize(e.exit(h.listItemPrefix),!0).length,t(f)}}function h6(e,t,n){let r=this;return T(r.containerState,"expected state"),r.containerState._closeFlow=void 0,e.check(Ko,i,o);function i(c){return T(r.containerState,"expected state"),T(typeof r.containerState.size==="number","expected size"),r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,qe(e,t,h.listItemIndent,r.containerState.size+1)(c)}function o(c){if(T(r.containerState,"expected state"),r.containerState.furtherBlankLines||!_e(c))return r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,s(c);return r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(f6,t,s)(c)}function s(c){return T(r.containerState,"expected state"),r.containerState._closeFlow=!0,r.interrupt=void 0,T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),qe(e,e.attempt(Sn,t,n),h.linePrefix,r.parser.constructs.disable.null.includes("codeIndented")?void 0:te.tabSize)(c)}}function y6(e,t,n){let r=this;return T(r.containerState,"expected state"),T(typeof r.containerState.size==="number","expected size"),qe(e,i,h.listItemIndent,r.containerState.size+1);function i(o){T(r.containerState,"expected state");let s=r.events[r.events.length-1];return s&&s[1].type===h.listItemIndent&&s[2].sliceSerialize(s[1],!0).length===r.containerState.size?t(o):n(o)}}function b6(e){T(this.containerState,"expected state"),T(typeof this.containerState.type==="string","expected type"),e.exit(this.containerState.type)}function S6(e,t,n){let r=this;return T(r.parser.constructs.disable.null,"expected `disable.null` to be populated"),qe(e,i,h.listItemPrefixWhitespace,r.parser.constructs.disable.null.includes("codeIndented")?void 0:te.tabSize+1);function i(o){let s=r.events[r.events.length-1];return!_e(o)&&s&&s[1].type===h.listItemPrefixWhitespace?t(o):n(o)}}var Vf={name:"setextUnderline",resolveTo:x6,tokenize:v6};function x6(e,t){let n=e.length,r,i,o;while(n--)if(e[n][0]==="enter"){if(e[n][1].type===h.content){r=n;break}if(e[n][1].type===h.paragraph)i=n}else{if(e[n][1].type===h.content)e.splice(n,1);if(!o&&e[n][1].type===h.definition)o=n}T(i!==void 0,"expected a `text` index to be found"),T(r!==void 0,"expected a `text` index to be found"),T(e[r][2]===t,"enter context should be same"),T(e[e.length-1][2]===t,"enter context should be same");let s={type:h.setextHeading,start:{...e[r][1].start},end:{...e[e.length-1][1].end}};if(e[i][1].type=h.setextHeadingText,o)e.splice(i,0,["enter",s,t]),e.splice(o+1,0,["exit",e[r][1],t]),e[r][1].end={...e[o][1].end};else e[r][1]=s;return e.push(["exit",s,t]),e}function v6(e,t,n){let r=this,i;return o;function o(u){let p=r.events.length,m;T(u===y.dash||u===y.equalsTo,"expected `=` or `-`");while(p--)if(r.events[p][1].type!==h.lineEnding&&r.events[p][1].type!==h.linePrefix&&r.events[p][1].type!==h.content){m=r.events[p][1].type===h.paragraph;break}if(!r.parser.lazy[r.now().line]&&(r.interrupt||m))return e.enter(h.setextHeadingLine),i=u,s(u);return n(u)}function s(u){return e.enter(h.setextHeadingLineSequence),c(u)}function c(u){if(u===i)return e.consume(u),c;return e.exit(h.setextHeadingLineSequence),_e(u)?qe(e,l,h.lineSuffix)(u):l(u)}function l(u){if(u===y.eof||ce(u))return e.exit(h.setextHeadingLine),t(u);return n(u)}}var G0={tokenize:w6};function w6(e){let t=this,n=e.attempt(Ko,r,e.attempt(this.parser.constructs.flowInitial,i,qe(e,e.attempt(this.parser.constructs.flow,i,e.attempt(yv,i)),h.linePrefix)));return n;function r(o){if(T(o===y.eof||ce(o),"expected eol or eof"),o===y.eof){e.consume(o);return}return e.enter(h.lineEndingBlank),e.consume(o),e.exit(h.lineEndingBlank),t.currentConstruct=void 0,n}function i(o){if(T(o===y.eof||ce(o),"expected eol or eof"),o===y.eof){e.consume(o);return}return e.enter(h.lineEnding),e.consume(o),e.exit(h.lineEnding),t.currentConstruct=void 0,n}}var V0={resolveAll:X0()},Q0=Y0("string"),K0=Y0("text");function Y0(e){return{resolveAll:X0(e==="text"?T6:void 0),tokenize:t};function t(n){let r=this,i=this.parser.constructs[e],o=n.attempt(i,s,c);return s;function s(p){return u(p)?o(p):c(p)}function c(p){if(p===y.eof){n.consume(p);return}return n.enter(h.data),n.consume(p),l}function l(p){if(u(p))return n.exit(h.data),o(p);return n.consume(p),l}function u(p){if(p===y.eof)return!0;let m=i[p],g=-1;if(m){T(Array.isArray(m),"expected `disable.null` to be populated");while(++g<m.length){let f=m[g];if(!f.previous||f.previous.call(r,r.previous))return!0}}return!1}}}function X0(e){return t;function t(n,r){let i=-1,o;while(++i<=n.length)if(o===void 0){if(n[i]&&n[i][1].type===h.data)o=i,i++}else if(!n[i]||n[i][1].type!==h.data){if(i!==o+2)n[o][1].end=n[i-1][1].end,n.splice(o+2,i-o-2),i=o+2;o=void 0}return e?e(n,r):n}}function T6(e,t){let n=0;while(++n<=e.length)if((n===e.length||e[n][1].type===h.lineEnding)&&e[n-1][1].type===h.data){let r=e[n-1][1],i=t.sliceStream(r),o=i.length,s=-1,c=0,l;while(o--){let u=i[o];if(typeof u==="string"){s=u.length;while(u.charCodeAt(s-1)===y.space)c++,s--;if(s)break;s=-1}else if(u===y.horizontalTab)l=!0,c++;else if(u===y.virtualSpace);else{o++;break}}if(t._contentTypeTextTrailing&&n===e.length)c=0;if(c){let u={type:n===e.length||l||c<te.hardBreakPrefixSizeMin?h.lineSuffix:h.hardBreakTrailing,start:{_bufferIndex:o?s:r.start._bufferIndex+s,_index:r.start._index+o,line:r.end.line,column:r.end.column-c,offset:r.end.offset-c},end:{...r.end}};if(r.end={...u.start},r.start.offset===r.end.offset)Object.assign(r,u);else e.splice(n,0,["enter",u,t],["exit",u,t]),n+=2}n++}return e}var Iv={};Ln(Iv,{attentionMarkers:()=>O6,contentInitial:()=>E6,disable:()=>D6,document:()=>C6,flow:()=>R6,flowInitial:()=>I6,insideSpan:()=>A6,string:()=>k6,text:()=>P6});var C6={[y.asterisk]:Sn,[y.plusSign]:Sn,[y.dash]:Sn,[y.digit0]:Sn,[y.digit1]:Sn,[y.digit2]:Sn,[y.digit3]:Sn,[y.digit4]:Sn,[y.digit5]:Sn,[y.digit6]:Sn,[y.digit7]:Sn,[y.digit8]:Sn,[y.digit9]:Sn,[y.greaterThan]:qf},E6={[y.leftSquareBracket]:bv},I6={[y.horizontalTab]:op,[y.virtualSpace]:op,[y.space]:op},R6={[y.numberSign]:xv,[y.asterisk]:da,[y.dash]:[Vf,da],[y.lessThan]:wv,[y.equalsTo]:Vf,[y.underscore]:da,[y.graveAccent]:Uf,[y.tilde]:Uf},k6={[y.ampersand]:$f,[y.backslash]:Zf},P6={[y.carriageReturn]:ap,[y.lineFeed]:ap,[y.carriageReturnLineFeed]:ap,[y.exclamationMark]:Cv,[y.ampersand]:$f,[y.asterisk]:ip,[y.lessThan]:[fv,Tv],[y.leftSquareBracket]:Ev,[y.backslash]:[Sv,Zf],[y.rightSquareBracket]:pa,[y.underscore]:ip,[y.graveAccent]:gv},A6={null:[ip,V0]},O6={null:[y.asterisk,y.underscore]},D6={null:[]};var gM=ed(fM(),1);var ga=gM.default("micromark");function hM(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},o=[],s=[],c=[],l=!0,u={attempt:Ee(ee),check:Ee(he),consume:Y,enter:G,exit:I,interrupt:Ee(he,{interrupt:!0})},p={code:y.eof,containerState:{},defineSkip:P,events:[],now:k,parser:e,previous:y.eof,sliceSerialize:v,sliceStream:w,write:f},m=t.tokenize.call(p,u),g;if(t.resolveAll)o.push(t);return p;function f(se){if(s=zn(s,se),B(),s[s.length-1]!==y.eof)return[];return We(t,0),p.events=Jc(o,p.events,p),p.events}function v(se,ue){return h9(w(se),ue)}function w(se){return g9(s,se)}function k(){let{_bufferIndex:se,_index:ue,line:Ae,column:ie,offset:Xe}=r;return{_bufferIndex:se,_index:ue,line:Ae,column:ie,offset:Xe}}function P(se){i[se.line]=se.column,Ie(),ga("position: define skip: `%j`",r)}function B(){let se;while(r._index<s.length){let ue=s[r._index];if(typeof ue==="string"){if(se=r._index,r._bufferIndex<0)r._bufferIndex=0;while(r._index===se&&r._bufferIndex<ue.length)j(ue.charCodeAt(r._bufferIndex))}else j(ue)}}function j(se){T(l===!0,"expected character to be consumed"),l=void 0,ga("main: passing `%s` to %s",se,m&&m.name),g=se,T(typeof m==="function","expected state"),m=m(se)}function Y(se){if(T(se===g,"expected given code to equal expected code"),ga("consume: `%s`",se),T(l===void 0,"expected code to not have been consumed: this might be because `return x(code)` instead of `return x` was used"),T(se===null?p.events.length===0||p.events[p.events.length-1][0]==="exit":p.events[p.events.length-1][0]==="enter","expected last token to be open"),ce(se))r.line++,r.column=1,r.offset+=se===y.carriageReturnLineFeed?2:1,Ie(),ga("position: after eol: `%j`",r);else if(se!==y.virtualSpace)r.column++,r.offset++;if(r._bufferIndex<0)r._index++;else if(r._bufferIndex++,r._bufferIndex===s[r._index].length)r._bufferIndex=-1,r._index++;p.previous=se,l=!0}function G(se,ue){let Ae=ue||{};return Ae.type=se,Ae.start=k(),T(typeof se==="string","expected string type"),T(se.length>0,"expected non-empty string"),ga("enter: `%s`",se),p.events.push(["enter",Ae,p]),c.push(Ae),Ae}function I(se){T(typeof se==="string","expected string type"),T(se.length>0,"expected non-empty string");let ue=c.pop();return T(ue,"cannot close w/o open tokens"),ue.end=k(),T(se===ue.type,"expected exit token to match current token"),T(!(ue.start._index===ue.end._index&&ue.start._bufferIndex===ue.end._bufferIndex),"expected non-empty token (`"+se+"`)"),ga("exit: `%s`",ue.type),p.events.push(["exit",ue,p]),ue}function ee(se,ue){We(se,ue.from)}function he(se,ue){ue.restore()}function Ee(se,ue){return Ae;function Ae(ie,Xe,rt){let Bn,C,pn,vn;return Array.isArray(ie)?Vt(ie):("tokenize"in ie)?Vt([ie]):E(ie);function E(mt){return st;function st(dn){let on=dn!==null&&mt[dn],jr=dn!==null&&mt.null,yo=[...Array.isArray(on)?on:on?[on]:[],...Array.isArray(jr)?jr:jr?[jr]:[]];return Vt(yo)(dn)}}function Vt(mt){if(Bn=mt,C=0,mt.length===0)return T(rt,"expected `bogusState` to be given"),rt;return jt(mt[C])}function jt(mt){return st;function st(dn){if(vn=Ye(),pn=mt,!mt.partial)p.currentConstruct=mt;if(T(p.parser.constructs.disable.null,"expected `disable.null` to be populated"),mt.name&&p.parser.constructs.disable.null.includes(mt.name))return _n(dn);return mt.tokenize.call(ue?Object.assign(Object.create(p),ue):p,u,dr,_n)(dn)}}function dr(mt){return T(mt===g,"expected code"),l=!0,se(pn,vn),Xe}function _n(mt){if(T(mt===g,"expected code"),l=!0,vn.restore(),++C<Bn.length)return jt(Bn[C]);return rt}}}function We(se,ue){if(se.resolveAll&&!o.includes(se))o.push(se);if(se.resolve)ln(p.events,ue,p.events.length-ue,se.resolve(p.events.slice(ue),p));if(se.resolveTo)p.events=se.resolveTo(p.events,p);T(se.partial||p.events.length===0||p.events[p.events.length-1][0]==="exit","expected last token to end")}function Ye(){let se=k(),ue=p.previous,Ae=p.currentConstruct,ie=p.events.length,Xe=Array.from(c);return{from:ie,restore:rt};function rt(){r=se,p.previous=ue,p.currentConstruct=Ae,p.events.length=ie,c=Xe,Ie(),ga("position: restore: `%j`",r)}}function Ie(){if(r.line in i&&r.column<2)r.column=i[r.line],r.offset+=i[r.line]-1}}function g9(e,t){let n=t.start._index,r=t.start._bufferIndex,i=t.end._index,o=t.end._bufferIndex,s;if(n===i)T(o>-1,"expected non-negative end buffer index"),T(r>-1,"expected non-negative start buffer index"),s=[e[n].slice(r,o)];else{if(s=e.slice(n,i),r>-1){let c=s[0];if(typeof c==="string")s[0]=c.slice(r);else T(r===0,"expected `startBufferIndex` to be `0`"),s.shift()}if(o>0)s.push(e[i].slice(0,o))}return s}function h9(e,t){let n=-1,r=[],i;while(++n<e.length){let o=e[n],s;if(typeof o==="string")s=o;else switch(o){case y.carriageReturn:{s=cr.cr;break}case y.lineFeed:{s=cr.lf;break}case y.carriageReturnLineFeed:{s=cr.cr+cr.lf;break}case y.horizontalTab:{s=t?cr.space:cr.ht;break}case y.virtualSpace:{if(!t&&i)continue;s=cr.space;break}default:T(typeof o==="number","expected number"),s=String.fromCharCode(o)}i=o===y.horizontalTab,r.push(s)}return r.join("")}function Ov(e){let r={constructs:j0([Iv,...(e||{}).extensions||[]]),content:i(q0),defined:[],document:i($0),flow:i(G0),lazy:{},string:i(Q0),text:i(K0)};return r;function i(o){return s;function s(c){return hM(r,o,c)}}}function Dv(e){while(!Wf(e));return e}var yM=/[\0\t\n\r]/g;function zv(){let e=1,t="",n=!0,r;return i;function i(o,s,c){let l=[],u,p,m,g,f;if(o=t+(typeof o==="string"?o.toString():new TextDecoder(s||void 0).decode(o)),m=0,t="",n){if(o.charCodeAt(0)===y.byteOrderMarker)m++;n=void 0}while(m<o.length){if(yM.lastIndex=m,u=yM.exec(o),g=u&&u.index!==void 0?u.index:o.length,f=o.charCodeAt(g),!u){t=o.slice(m);break}if(f===y.lf&&m===g&&r)l.push(y.carriageReturnLineFeed),r=void 0;else{if(r)l.push(y.carriageReturn),r=void 0;if(m<g)l.push(o.slice(m,g)),e+=g-m;switch(f){case y.nul:{l.push(y.replacementCharacter),e++;break}case y.ht:{p=Math.ceil(e/te.tabSize)*te.tabSize,l.push(y.horizontalTab);while(e++<p)l.push(y.virtualSpace);break}case y.lf:{l.push(y.lineFeed),e=1;break}default:r=!0,e=1}}m=g+1}if(c){if(r)l.push(y.carriageReturn);if(t)l.push(t);l.push(y.eof)}return l}}var y9=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function tg(e){return e.replace(y9,b9)}function b9(e,t,n){if(t)return t;if(n.charCodeAt(0)===y.numberSign){let i=n.charCodeAt(1),o=i===y.lowercaseX||i===y.uppercaseX;return Lf(n.slice(o?2:1),o?te.numericBaseHexadecimal:te.numericBaseDecimal)}return Uc(n)||e}function es(e){if(!e||typeof e!=="object")return"";if("position"in e||"type"in e)return bM(e.position);if("start"in e||"end"in e)return bM(e);if("line"in e||"column"in e)return Mv(e);return""}function Mv(e){return SM(e&&e.line)+":"+SM(e&&e.column)}function bM(e){return Mv(e&&e.start)+"-"+Mv(e&&e.end)}function SM(e){return e&&typeof e==="number"?e:1}var vM={}.hasOwnProperty;function jv(e,t,n){if(t&&typeof t==="object")n=t,t=void 0;return S9(n)(Dv(Ov(n).document().write(zv()(e,t,!0))))}function S9(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:o(ka),autolinkProtocol:Ee,autolinkEmail:Ee,atxHeading:o(ps),blockQuote:o(dn),characterEscape:Ee,characterReference:Ee,codeFenced:o(on),codeFencedFenceInfo:s,codeFencedFenceMeta:s,codeIndented:o(on,s),codeText:o(jr,s),codeTextData:Ee,data:Ee,codeFlowValue:Ee,definition:o(yo),definitionDestinationString:s,definitionLabelString:s,definitionTitleString:s,emphasis:o(us),hardBreakEscape:o(ds),hardBreakTrailing:o(ds),htmlFlow:o(mr,s),htmlFlowData:Ee,htmlText:o(mr,s),htmlTextData:Ee,image:o(Ra),label:s,link:o(ka),listItem:o(Pa),listItemValue:g,listOrdered:o(ms,m),listUnordered:o(ms),paragraph:o(bl),reference:E,referenceString:s,resourceDestinationString:s,resourceTitleString:s,setextHeading:o(ps),strong:o(Nr),thematicBreak:o(Aa)},exit:{atxHeading:l(),atxHeadingSequence:G,autolink:l(),autolinkEmail:st,autolinkProtocol:mt,blockQuote:l(),characterEscapeValue:We,characterReferenceMarkerHexadecimal:jt,characterReferenceMarkerNumeric:jt,characterReferenceValue:dr,characterReference:_n,codeFenced:l(k),codeFencedFence:w,codeFencedFenceInfo:f,codeFencedFenceMeta:v,codeFlowValue:We,codeIndented:l(P),codeText:l(Ae),codeTextData:We,data:We,definition:l(),definitionDestinationString:Y,definitionLabelString:B,definitionTitleString:j,emphasis:l(),hardBreakEscape:l(Ie),hardBreakTrailing:l(Ie),htmlFlow:l(se),htmlFlowData:We,htmlText:l(ue),htmlTextData:We,image:l(Xe),label:Bn,labelText:rt,lineEnding:Ye,link:l(ie),listItem:l(),listOrdered:l(),listUnordered:l(),paragraph:l(),referenceString:Vt,resourceDestinationString:C,resourceTitleString:pn,resource:vn,setextHeading:l(he),setextHeadingLineSequence:ee,setextHeadingText:I,strong:l(),thematicBreak:l()}};wM(t,(e||{}).mdastExtensions||[]);let n={};return r;function r(_){let F={type:"root",children:[]},d={stack:[F],tokenStack:[],config:t,enter:c,exit:u,buffer:s,resume:p,data:n},R=[],M=-1;while(++M<_.length)if(_[M][1].type===h.listOrdered||_[M][1].type===h.listUnordered)if(_[M][0]==="enter")R.push(M);else{let L=R.pop();T(typeof L==="number","expected list to be open"),M=i(_,L,M)}M=-1;while(++M<_.length){let L=t[_[M][0]];if(vM.call(L,_[M][1].type))L[_[M][1].type].call(Object.assign({sliceSerialize:_[M][2].sliceSerialize},d),_[M][1])}if(d.tokenStack.length>0){let L=d.tokenStack[d.tokenStack.length-1];(L[1]||xM).call(d,void 0,L[0])}F.position={start:ts(_.length>0?_[0][1].start:{line:1,column:1,offset:0}),end:ts(_.length>0?_[_.length-2][1].end:{line:1,column:1,offset:0})},M=-1;while(++M<t.transforms.length)F=t.transforms[M](F)||F;return F}function i(_,F,d){let R=F-1,M=-1,L=!1,N,Q,S,z;while(++R<=d){let J=_[R];switch(J[1].type){case h.listUnordered:case h.listOrdered:case h.blockQuote:{if(J[0]==="enter")M++;else M--;z=void 0;break}case h.lineEndingBlank:{if(J[0]==="enter"){if(N&&!z&&!M&&!S)S=R;z=void 0}break}case h.linePrefix:case h.listItemValue:case h.listItemMarker:case h.listItemPrefix:case h.listItemPrefixWhitespace:break;default:z=void 0}if(!M&&J[0]==="enter"&&J[1].type===h.listItemPrefix||M===-1&&J[0]==="exit"&&(J[1].type===h.listUnordered||J[1].type===h.listOrdered)){if(N){let Z=R;Q=void 0;while(Z--){let U=_[Z];if(U[1].type===h.lineEnding||U[1].type===h.lineEndingBlank){if(U[0]==="exit")continue;if(Q)_[Q][1].type=h.lineEndingBlank,L=!0;U[1].type=h.lineEnding,Q=Z}else if(U[1].type===h.linePrefix||U[1].type===h.blockQuotePrefix||U[1].type===h.blockQuotePrefixWhitespace||U[1].type===h.blockQuoteMarker||U[1].type===h.listItemIndent);else break}if(S&&(!Q||S<Q))N._spread=!0;N.end=Object.assign({},Q?_[Q][1].start:J[1].end),_.splice(Q||R,0,["exit",N,J[2]]),R++,d++}if(J[1].type===h.listItemPrefix){let Z={type:"listItem",_spread:!1,start:Object.assign({},J[1].start),end:void 0};N=Z,_.splice(R,0,["enter",Z,J[2]]),R++,d++,S=void 0,z=!0}}}return _[F][1]._spread=L,d}function o(_,F){return d;function d(R){if(c.call(this,_(R),R),F)F.call(this,R)}}function s(){this.stack.push({type:"fragment",children:[]})}function c(_,F,d){let R=this.stack[this.stack.length-1];T(R,"expected `parent`"),T("children"in R,"expected `parent`"),R.children.push(_),this.stack.push(_),this.tokenStack.push([F,d||void 0]),_.position={start:ts(F.start),end:void 0}}function l(_){return F;function F(d){if(_)_.call(this,d);u.call(this,d)}}function u(_,F){let d=this.stack.pop();T(d,"expected `node`");let R=this.tokenStack.pop();if(!R)throw Error("Cannot close `"+_.type+"` ("+es({start:_.start,end:_.end})+"): it\u2019s not open");else if(R[0].type!==_.type)if(F)F.call(this,_,R[0]);else(R[1]||xM).call(this,_,R[0]);T(d.type!=="fragment","unexpected fragment `exit`ed"),T(d.position,"expected `position` to be defined"),d.position.end=ts(_.end)}function p(){return so(this.stack.pop())}function m(){this.data.expectingFirstListItemValue=!0}function g(_){if(this.data.expectingFirstListItemValue){let F=this.stack[this.stack.length-2];T(F,"expected nodes on stack"),T(F.type==="list","expected list on stack"),F.start=Number.parseInt(this.sliceSerialize(_),te.numericBaseDecimal),this.data.expectingFirstListItemValue=void 0}}function f(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="code","expected code on stack"),F.lang=_}function v(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="code","expected code on stack"),F.meta=_}function w(){if(this.data.flowCodeInside)return;this.buffer(),this.data.flowCodeInside=!0}function k(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="code","expected code on stack"),F.value=_.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function P(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="code","expected code on stack"),F.value=_.replace(/(\r?\n|\r)$/g,"")}function B(_){let F=this.resume(),d=this.stack[this.stack.length-1];T(d,"expected node on stack"),T(d.type==="definition","expected definition on stack"),d.label=F,d.identifier=ao(this.sliceSerialize(_)).toLowerCase()}function j(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="definition","expected definition on stack"),F.title=_}function Y(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="definition","expected definition on stack"),F.url=_}function G(_){let F=this.stack[this.stack.length-1];if(T(F,"expected node on stack"),T(F.type==="heading","expected heading on stack"),!F.depth){let d=this.sliceSerialize(_).length;T(d===1||d===2||d===3||d===4||d===5||d===6,"expected `depth` between `1` and `6`"),F.depth=d}}function I(){this.data.setextHeadingSlurpLineEnding=!0}function ee(_){let F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="heading","expected heading on stack"),F.depth=this.sliceSerialize(_).codePointAt(0)===y.equalsTo?1:2}function he(){this.data.setextHeadingSlurpLineEnding=void 0}function Ee(_){let F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T("children"in F,"expected parent on stack");let d=F.children,R=d[d.length-1];if(!R||R.type!=="text")R=Sl(),R.position={start:ts(_.start),end:void 0},d.push(R);this.stack.push(R)}function We(_){let F=this.stack.pop();T(F,"expected a `node` to be on the stack"),T("value"in F,"expected a `literal` to be on the stack"),T(F.position,"expected `node` to have an open position"),F.value+=this.sliceSerialize(_),F.position.end=ts(_.end)}function Ye(_){let F=this.stack[this.stack.length-1];if(T(F,"expected `node`"),this.data.atHardBreak){T("children"in F,"expected `parent`");let d=F.children[F.children.length-1];T(d.position,"expected tail to have a starting position"),d.position.end=ts(_.end),this.data.atHardBreak=void 0;return}if(!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(F.type))Ee.call(this,_),We.call(this,_)}function Ie(){this.data.atHardBreak=!0}function se(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="html","expected html on stack"),F.value=_}function ue(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="html","expected html on stack"),F.value=_}function Ae(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="inlineCode","expected inline code on stack"),F.value=_}function ie(){let _=this.stack[this.stack.length-1];if(T(_,"expected node on stack"),T(_.type==="link","expected link on stack"),this.data.inReference){let F=this.data.referenceType||"shortcut";_.type+="Reference",_.referenceType=F,delete _.url,delete _.title}else delete _.identifier,delete _.label;this.data.referenceType=void 0}function Xe(){let _=this.stack[this.stack.length-1];if(T(_,"expected node on stack"),T(_.type==="image","expected image on stack"),this.data.inReference){let F=this.data.referenceType||"shortcut";_.type+="Reference",_.referenceType=F,delete _.url,delete _.title}else delete _.identifier,delete _.label;this.data.referenceType=void 0}function rt(_){let F=this.sliceSerialize(_),d=this.stack[this.stack.length-2];T(d,"expected ancestor on stack"),T(d.type==="image"||d.type==="link","expected image or link on stack"),d.label=tg(F),d.identifier=ao(F).toLowerCase()}function Bn(){let _=this.stack[this.stack.length-1];T(_,"expected node on stack"),T(_.type==="fragment","expected fragment on stack");let F=this.resume(),d=this.stack[this.stack.length-1];if(T(d,"expected node on stack"),T(d.type==="image"||d.type==="link","expected image or link on stack"),this.data.inReference=!0,d.type==="link"){let R=_.children;d.children=R}else d.alt=F}function C(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="image"||F.type==="link","expected image or link on stack"),F.url=_}function pn(){let _=this.resume(),F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="image"||F.type==="link","expected image or link on stack"),F.title=_}function vn(){this.data.inReference=void 0}function E(){this.data.referenceType="collapsed"}function Vt(_){let F=this.resume(),d=this.stack[this.stack.length-1];T(d,"expected node on stack"),T(d.type==="image"||d.type==="link","expected image reference or link reference on stack"),d.label=F,d.identifier=ao(this.sliceSerialize(_)).toLowerCase(),this.data.referenceType="full"}function jt(_){T(_.type==="characterReferenceMarkerNumeric"||_.type==="characterReferenceMarkerHexadecimal"),this.data.characterReferenceType=_.type}function dr(_){let F=this.sliceSerialize(_),d=this.data.characterReferenceType,R;if(d)R=Lf(F,d===h.characterReferenceMarkerNumeric?te.numericBaseDecimal:te.numericBaseHexadecimal),this.data.characterReferenceType=void 0;else{let L=Uc(F);T(L!==!1,"expected reference to decode"),R=L}let M=this.stack[this.stack.length-1];T(M,"expected `node`"),T("value"in M,"expected `node.value`"),M.value+=R}function _n(_){let F=this.stack.pop();T(F,"expected `node`"),T(F.position,"expected `node.position`"),F.position.end=ts(_.end)}function mt(_){We.call(this,_);let F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="link","expected link on stack"),F.url=this.sliceSerialize(_)}function st(_){We.call(this,_);let F=this.stack[this.stack.length-1];T(F,"expected node on stack"),T(F.type==="link","expected link on stack"),F.url="mailto:"+this.sliceSerialize(_)}function dn(){return{type:"blockquote",children:[]}}function on(){return{type:"code",lang:null,meta:null,value:""}}function jr(){return{type:"inlineCode",value:""}}function yo(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function us(){return{type:"emphasis",children:[]}}function ps(){return{type:"heading",depth:0,children:[]}}function ds(){return{type:"break"}}function mr(){return{type:"html",value:""}}function Ra(){return{type:"image",title:null,url:"",alt:null}}function ka(){return{type:"link",title:null,url:"",children:[]}}function ms(_){return{type:"list",ordered:_.type==="listOrdered",start:null,spread:_._spread,children:[]}}function Pa(_){return{type:"listItem",spread:_._spread,checked:null,children:[]}}function bl(){return{type:"paragraph",children:[]}}function Nr(){return{type:"strong",children:[]}}function Sl(){return{type:"text",value:""}}function Aa(){return{type:"thematicBreak"}}}function ts(e){return{line:e.line,column:e.column,offset:e.offset}}function wM(e,t){let n=-1;while(++n<t.length){let r=t[n];if(Array.isArray(r))wM(e,r);else x9(e,r)}}function x9(e,t){let n;for(n in t)if(vM.call(t,n))switch(n){case"canContainEols":{let r=t[n];if(r)e[n].push(...r);break}case"transforms":{let r=t[n];if(r)e[n].push(...r);break}case"enter":case"exit":{let r=t[n];if(r)Object.assign(e[n],r);break}}}function xM(e,t){if(e)throw Error("Cannot close `"+e.type+"` ("+es({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+es({start:t.start,end:t.end})+") is open");else throw Error("Cannot close document, a token (`"+t.type+"`, "+es({start:t.start,end:t.end})+") is still open")}function ng(e){let t=this;t.parser=n;function n(r){return jv(r,{...t.data("settings"),...e,extensions:t.data("micromarkExtensions")||[],mdastExtensions:t.data("fromMarkdownExtensions")||[]})}}var TM={}.hasOwnProperty;function CM(e,t){let n=t||{};function r(i,...o){let{invalid:s,handlers:c}=r;if(i&&TM.call(i,e)){let l=String(i[e]);s=TM.call(c,l)?c[l]:r.unknown}if(s)return s.call(this,i,...o)}return r.handlers=n.handlers||{},r.invalid=n.invalid,r.unknown=n.unknown,r}var v9={}.hasOwnProperty;function Nv(e,t){let n=-1,r;if(t.extensions)while(++n<t.extensions.length)Nv(e,t.extensions[n]);for(r in t)if(v9.call(t,r))switch(r){case"extensions":break;case"unsafe":{EM(e[r],t[r]);break}case"join":{EM(e[r],t[r]);break}case"handlers":{w9(e[r],t[r]);break}default:e.options[r]=t[r]}return e}function EM(e,t){if(t)e.push(...t)}function w9(e,t){if(t)Object.assign(e,t)}function IM(e,t,n,r){let i=n.enter("blockquote"),o=n.createTracker(r);o.move("> "),o.shift(2);let s=n.indentLines(n.containerFlow(e,o.current()),T9);return i(),s}function T9(e,t,n){return">"+(n?"":" ")+e}function rg(e,t){return RM(e,t.inConstruct,!0)&&!RM(e,t.notInConstruct,!1)}function RM(e,t,n){if(typeof t==="string")t=[t];if(!t||t.length===0)return n;let r=-1;while(++r<t.length)if(e.includes(t[r]))return!0;return!1}function Bv(e,t,n,r){let i=-1;while(++i<n.unsafe.length)if(n.unsafe[i].character===`
71
71
  `&&rg(n.stack,n.unsafe[i]))return/[ \t]/.test(r.before)?"":" ";return"\\\n"}function kM(e,t){let n=String(e),r=n.indexOf(t),i=r,o=0,s=0;if(typeof t!=="string")throw TypeError("Expected substring");while(r!==-1){if(r===i){if(++o>s)s=o}else o=1;i=r+t.length,r=n.indexOf(t,i)}return s}function lp(e,t){return Boolean(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function PM(e){let t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function AM(e,t,n,r){let i=PM(n),o=e.value||"",s=i==="`"?"GraveAccent":"Tilde";if(lp(e,n)){let m=n.enter("codeIndented"),g=n.indentLines(o,C9);return m(),g}let c=n.createTracker(r),l=i.repeat(Math.max(kM(o,i)+1,3)),u=n.enter("codeFenced"),p=c.move(l);if(e.lang){let m=n.enter(`codeFencedLang${s}`);p+=c.move(n.safe(e.lang,{before:p,after:" ",encode:["`"],...c.current()})),m()}if(e.lang&&e.meta){let m=n.enter(`codeFencedMeta${s}`);p+=c.move(" "),p+=c.move(n.safe(e.meta,{before:p,after:`
72
72
  `,encode:["`"],...c.current()})),m()}if(p+=c.move(`
73
73
  `),o)p+=c.move(o+`
@@ -152,7 +152,7 @@ Instructions:
152
152
  2. Search through available entities for relevant information
153
153
  3. Provide accurate, contextual responses based on the data
154
154
  4. If information is missing, clearly state what additional data might be helpful
155
- 5. Structure your response clearly and concisely`,dataSourceId:"shell:ai-content",requiredPermission:"public",useKnowledgeContext:!0,schema:xg,formatter:new yp};var z4=a.object({type:a.string().describe("Type of source (e.g., note, article)"),title:a.string().describe("Title or identifier of the source"),relevance:a.number().min(0).max(1).describe("Relevance score")}),PN=a.object({answer:a.string().describe("The answer to the user's query"),sources:a.array(z4).optional().describe("Sources used to generate the answer"),confidence:a.enum(["high","medium","low"]).optional().describe("Confidence level of the answer"),suggestions:a.array(a.string()).optional().describe("Related topics or follow-up questions")});function co(e,t){return e.parse(t)}class lo{callback;heartbeatInterval;constructor(e){this.callback=e}static from(e){if(!e)return;return new lo(e)}static noop(){return new lo(async()=>{})}createSub(e){let{scale:t}=e??{};if(t){let{start:n,end:r}=t,i=r-n;return new lo(async(o)=>{let s=n+o.progress/(o.total??100)*i;await this.callback({...o,progress:s,total:100})})}return new lo(this.callback)}async report(e){await this.callback(e)}startHeartbeat(e,t=5000){this.stopHeartbeat(),this.heartbeatInterval=setInterval(()=>{this.report({message:e,progress:0}).catch(()=>{})},t)}stopHeartbeat(){if(this.heartbeatInterval)clearInterval(this.heartbeatInterval),this.heartbeatInterval=void 0}toCallback(){return this.callback}}var j4=a.object({enabled:a.boolean().describe("Whether the plugin is enabled"),debug:a.boolean().describe("Enable debug logging for this plugin")});function N4(e,t){return t.reduce((n,r)=>typeof n==="object"&&n!==null?Reflect.get(n,r):void 0,e)}function B4(e){return e.map((t)=>`${t.path||"<root>"}: ${t.message}`).join("; ")}class ol extends Error{pluginId;issues;constructor(e,t){super(`Invalid plugin config for ${e} at ${B4(t)}; correct the listed fields in brain.yaml or the package's use() configuration`);this.name="PluginConfigValidationError",this.pluginId=e,this.issues=t}static fromZod(e,t,n){return new ol(e,t.issues.map((r)=>({path:r.path.map(String).join("."),code:r.code,message:r.message,missing:r.code==="custom"&&r.params?.missing===!0||(r.code==="invalid_type"||r.code==="custom")&&N4(n,r.path)===void 0})))}}var _4=a.object({toolName:a.string(),args:a.unknown(),progressToken:a.union([a.string(),a.number()]).optional(),hasProgress:a.boolean().optional(),interfaceType:a.string(),actor:Ai,displayName:a.string().optional(),conversationId:a.string().optional(),channelId:a.string().optional(),channelName:a.string().optional(),runId:a.string().optional(),toolCallId:a.string().optional(),userPermissionLevel:a.enum(["admin","trusted","public"]).optional(),isAnchor:a.boolean().optional(),signal:a.custom((e)=>e instanceof AbortSignal).optional()}),F4=a.object({resourceUri:a.string()});class Sa{id;version;description;packageName;config;context;get logger(){return this.context?.logger??kr.createFresh({context:this.id})}constructor(e,t,n,r){this.id=e,this.packageName=t.name,this.version=t.version,this.description=t.description??`${t.name} plugin`;let i=r.safeParse(n);if(!i.success)throw ol.fromZod(e,i.error,n);this.config=i.data}setupMessageHandlers(e){e.messaging.subscribe(bp.toolExecute(this.id),async(t)=>{try{let n=_4.safeParse(t.payload);if(!n.success)return{success:!1,error:"Invalid tool execution request format"};let{toolName:r,args:i,progressToken:o,hasProgress:s,interfaceType:c,actor:l,displayName:u,conversationId:p,channelId:m,channelName:g,runId:f,toolCallId:v,userPermissionLevel:w,isAnchor:k,signal:P}=n.data,j=(await this.getTools()).find((I)=>I.name===r);if(!j)return{success:!1,error:`Tool not found: ${r}`};let Y={interfaceType:c,actor:l,...u&&{displayName:u},...p&&{conversationId:p},...m&&{channelId:m},...g&&{channelName:g},...f&&{runId:f},...v&&{toolCallId:v},...w&&{userPermissionLevel:w},...k!==void 0&&{isAnchor:k},...P&&{signal:P},...s&&o!==void 0&&{progressToken:o,sendProgress:async(I)=>{await e.messaging.send({type:bp.progress(this.id),payload:{progressToken:o,notification:I}})}}};return{success:!0,data:await j.handler(i,Y)}}catch(n){return this.logger.error("Tool execution error",n),{success:!1,error:Be(n)}}}),e.messaging.subscribe(bp.resourceGet(this.id),async(t)=>{try{let n=F4.safeParse(t.payload);if(!n.success)return{success:!1,error:"Invalid resource get request format"};let{resourceUri:r}=n.data,o=(await this.getResources()).find((c)=>c.uri===r);if(!o)return{success:!1,error:`Resource not found: ${r}`};return{success:!0,data:await o.handler()}}catch(n){return this.logger.error("Resource fetch error",n),{success:!1,error:Be(n)}}})}async onRegister(e){}async onRegistrationComplete(e){}async finalizeRegistration(){await this.onRegistrationComplete(this.getContext())}async onReady(e){}async ready(){await this.onReady(this.getContext())}async getCapabilities(){let e=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...e&&{instructions:e}}}async getTools(){return[]}async getResources(){return[]}async getInstructions(){return}async shutdown(){await this.onShutdown()}async onShutdown(){}getContext(){if(!this.context)throw Error(`Plugin ${this.id}: Plugin not registered yet`);return this.context}determineUserPermissionLevel(e){return"public"}createProgressBridge(e){if(!e)return;let t=this.context;if(!t)return;let n=this.id;return lo.from(async(r)=>{await t.messaging.send({type:bp.progress(n),payload:{progressToken:e,notification:{progress:r.progress,total:r.total,message:r.message}}})})}}var ON=["primary","secondary"];var L4=a.custom((e)=>typeof e==="function","Expected a React component"),q4=a.strictObject({show:a.boolean().optional(),label:a.string().min(1).optional(),slot:a.enum(ON).optional(),priority:a.number().optional()}),Z4=a.strictObject({id:a.string().min(1),template:a.string().min(1),content:a.unknown().optional(),dataQuery:a.looseObject({entityType:a.string().optional(),template:a.string().optional(),query:a.record(a.string(),a.unknown()).optional()}).optional(),order:a.number().optional()}),$4=a.strictObject({id:a.string().min(1),path:a.string().startsWith("/"),title:a.string().optional(),pageLabel:a.string().optional(),description:a.string().optional(),sections:a.array(Z4).optional(),layout:a.string().min(1).optional(),fullscreen:a.boolean().optional(),pluginId:a.string().optional(),sourceEntityType:a.string().optional(),external:a.boolean().optional(),navigation:q4.optional()}),nT=a.strictObject({label:a.string().min(1),pluralName:a.string().min(1).optional(),layout:a.string().min(1).optional(),detailTemplate:a.string().min(1).optional(),paginate:a.boolean().optional(),pageSize:a.number().int().positive().optional(),citable:a.boolean().optional(),navigation:a.strictObject({show:a.boolean().optional(),slot:a.enum(ON).optional(),priority:a.number().optional()}).optional()}),U4=a.strictObject({schema:a.custom((e)=>e instanceof a.ZodType,"Expected a Zod schema"),component:a.custom((e)=>typeof e==="function","Expected a React component"),title:a.string().min(1),description:a.string(),requiredPermission:a.enum(["admin","trusted","public"]).optional(),fullscreen:a.boolean().optional()}),AN=a.strictObject({namespace:a.string().min(1),sections:a.record(a.string(),U4)}),W4=a.record(a.string(),a.json()),J4=a.record(a.string(),a.record(a.string(),W4)),DN={layouts:a.record(a.string(),L4).refine((e)=>typeof e.default==="function",{message:'Site layouts must include a "default" component'}),routes:a.array($4),content:J4.optional(),sections:a.union([AN,a.array(AN)]).optional(),themeOverride:a.string().optional(),headScripts:a.array(a.string()).optional(),entityDisplay:a.record(a.string(),nT),staticAssets:a.record(a.string(),a.string()).optional()},_Ae=a.strictObject(DN).partial();var zN=a.strictObject(DN).superRefine((e,t)=>{let n=new Set;for(let[o,s]of e.routes.entries()){if(n.has(s.id))t.addIssue({code:"custom",path:["routes",o,"id"],message:`Duplicate route id "${s.id}"`});n.add(s.id);let c=s.layout??"default";if(!e.layouts[c])t.addIssue({code:"custom",path:["routes",o,"layout"],message:`Unknown layout "${c}"`})}let r=Array.isArray(e.sections)?e.sections:e.sections?[e.sections]:[],i=new Map(r.map((o)=>[o.namespace,o]));if(i.size!==r.length)t.addIssue({code:"custom",path:["sections"],message:"Section group namespaces must be unique"});for(let[o,s]of Object.entries(e.content??{})){let c=i.get(o);if(!c){t.addIssue({code:"custom",path:["content",o],message:`Content namespace "${o}" has no section group`});continue}for(let[l,u]of Object.entries(s)){let p=c.sections[l];if(!p){t.addIssue({code:"custom",path:["content",o,l],message:`Content section "${o}.${l}" is not defined`});continue}let m=p.schema.safeParse(u);if(!m.success)t.addIssue({code:"custom",path:["content",o,l],message:`Content does not satisfy the "${o}.${l}" schema: ${a.prettifyError(m.error)}`})}}});var MN=a.object({id:a.string(),template:a.string(),content:a.unknown().optional(),dataQuery:a.looseObject({entityType:a.string().optional(),template:a.string().optional(),query:a.looseObject({id:a.string().optional(),limit:a.number().optional(),offset:a.number().optional()}).optional()}).optional(),order:a.number().optional()}),rT=["primary","secondary"],jN=a.object({show:a.boolean().default(!1),label:a.string().optional(),slot:a.enum(rT).default("primary"),priority:a.number().min(0).max(100).default(50)}).optional(),iT=a.object({id:a.string(),path:a.string(),title:a.string().default(""),pageLabel:a.string().optional(),description:a.string().default(""),sections:a.array(MN).default([]),layout:a.string().default("default"),fullscreen:a.boolean().optional(),pluginId:a.string().optional(),sourceEntityType:a.string().optional(),external:a.boolean().optional(),navigation:jN}),NN=a.object({routes:a.array(iT),pluginId:a.string()}),BN=a.object({paths:a.array(a.string()).optional(),pluginId:a.string().optional()}),_N=a.object({pluginId:a.string().optional()}),FN=a.object({path:a.string()}),vg=a.object({label:a.string(),href:a.string(),priority:a.number()});var H4="site:metadata:get",G4="site:metadata:updated",oT=a.object({heading:a.string().describe("Main CTA heading text"),buttonText:a.string().describe("Call-to-action button text"),buttonLink:a.string().describe("URL or anchor for the CTA button")}),LN=a.object({blurb:a.string().optional().describe("Short italic subtitle under the section title")}),wg=a.object({represents:a.enum(["brain","anchor"]).default("anchor").describe("Identity represented by the site"),title:a.string().describe("The site's title"),description:a.string().describe("The site's description"),url:a.string().optional().describe("Canonical site URL"),copyright:a.string().optional().describe("Copyright notice text"),logo:a.boolean().optional().describe("Whether to display logo instead of title text in header"),themeMode:a.enum(["light","dark"]).optional().describe("Default theme mode"),analyticsScript:a.string().optional().describe("Analytics script HTML"),cta:oT.optional().describe("Call-to-action configuration"),sections:a.record(a.string(),LN).optional().describe("Optional per-section blurbs, keyed by section id (e.g. 'essays', 'presentations', 'about'). Used by homepage templates that render editorial section headers.")});var V4=a.object({platform:a.enum(["github","instagram","linkedin","email","website"]).describe("Social media platform"),url:a.string().describe("Profile or contact URL"),label:a.string().optional().describe("Optional display label")}),Q4=wg.extend({copyright:a.string(),navigation:a.object({primary:a.array(vg),secondary:a.array(vg)}),socialLinks:a.array(V4).optional().describe("Social media links from profile metadata")});function Sp(e,t){return t?e.nullable().default(null):e}function aT(e){switch(e.type){case"string":return Sp(a.string(),e.optional);case"number":return Sp(a.number(),e.optional);case"enum":return Sp(a.enum(e.options),e.optional);case"object":{let t={};for(let[n,r]of Object.entries(e.fields))t[n]=aT(r);return Sp(a.object(t),e.optional)}case"array":{let t=a.array(K4(e));if(e.minItems!==void 0)t=t.min(e.minItems);if(e.length!==void 0)t=t.length(e.length);return Sp(t,e.optional)}}}function K4(e){let{items:t}=e;switch(t.type){case"string":return a.string();case"number":return a.number();case"enum":return a.enum(t.options);case"object":{let n={};for(let[r,i]of Object.entries(t.fields))n[r]=aT(i);return a.object(n)}}}function sT(e,t){switch(t.type){case"string":case"enum":return{key:e,label:t.label,type:"string"};case"number":return{key:e,label:t.label,type:"number"};case"object":return{key:e,label:t.label,type:"object",children:Object.entries(t.fields).map(([n,r])=>sT(n,r))};case"array":{let n={key:e,label:t.label,type:"array"};switch(t.items.type){case"string":case"enum":return n.itemType="string",n;case"number":return n.itemType="number",n;case"object":return n.itemType="object",n.itemMappings=Object.entries(t.items.fields).map(([r,i])=>sT(r,i)),n}}}}function qN(e,t){let n={};for(let[o,s]of Object.entries(t.fields))n[o]=aT(s);let r=a.object(n),i=new ns(r,{title:t.title,mappings:Object.entries(t.fields).map(([o,s])=>sT(o,s))});return{name:e,description:t.description,schema:r,formatter:i,requiredPermission:t.requiredPermission??"public",layout:{component:t.layout,...t.fullscreen!==void 0?{fullscreen:t.fullscreen}:{}},...t.runtimeScripts?{runtimeScripts:t.runtimeScripts}:{}}}function Y4(e){let t={};for(let[n,r]of Object.entries(e.sections))t[n]=qN(n,r);return t}var X4=wg.omit({url:!0,analyticsScript:!0}),ZN=X4.extend({title:a.string().optional().describe("Optional site title override"),description:a.string().optional().describe("Optional site description override")});function $N(e){return ZN.parse(el(e).frontmatter)}async function e8(e){let n=(await e.listEntities({entityType:"site-info",options:{limit:1}}))[0];if(!n)throw Error("Site info not found \u2014 create a site-info entity");return $N(n.content)}function cT(e,t={}){let n=UN(e),r=UN(t.sharedDomain??"rizom.ai").replace(/^\./,""),i=`.${r}`;if(n.endsWith(i)){let o=n.slice(0,-i.length);if(o.length>0&&!o.includes("."))return`${o}-preview.${r}`}return`preview.${n}`}function UN(e){return e.trim().replace(/^https?:\/\//i,"").replace(/\/$/,"").toLowerCase()}class WN{entityDisplay;constructor(e){this.entityDisplay=e}hasRoute(e){return this.entityDisplay?.[e]!==void 0}isCitable(e){if(this.entityDisplay?.[e]?.citable===!1)return!1;if(!Object.values(this.entityDisplay??{}).some((n)=>n.citable===!0))return this.hasRoute(e);return this.entityDisplay?.[e]?.citable===!0}generateUrl(e,t){let n=this.entityDisplay?.[e];if(n)return`/${n.pluralName??n.label.toLowerCase()+"s"}/${t}`;return`/${$S(e)}/${t}`}}var t8=a.string(),n8=a.custom((e)=>{if(!Rr(e))return!1;let{plugin:t,...n}=e;if(t!==void 0&&typeof t!=="function")return!1;return zN.safeParse(n).success});var lT=a.enum(["file_operations","content_operations","data_processing","batch_processing"]),r8=a.looseObject({pluginId:a.string().optional(),progressToken:a.union([a.string(),a.number()]).optional(),operationType:lT,operationTarget:a.string().optional(),interfaceType:a.string().optional(),conversationId:a.string().optional(),channelId:a.string().optional(),requestedByActor:Ai.optional(),requestedByUserId:a.string().optional(),requestedByInterface:a.string().optional(),silent:a.boolean().optional(),provenance:Di.optional()}),xa=a.looseObject({pluginId:a.string().optional(),progressToken:a.union([a.string(),a.number()]).optional(),operationType:lT,operationTarget:a.string().optional(),interfaceType:a.string().optional(),conversationId:a.string().optional(),channelId:a.string().optional(),requestedByActor:Ai.optional(),requestedByUserId:a.string().optional(),requestedByInterface:a.string().optional(),silent:a.boolean().optional(),provenance:Di.optional(),rootJobId:a.string()}),COe=a.enum(["none","skip","replace","coalesce"]);var i8=a.object({id:a.string(),type:a.string(),data:a.string(),status:a.enum(["pending","processing","completed","failed"]),source:a.string().nullable(),priority:a.number(),retryCount:a.number(),maxRetries:a.number(),lastError:a.string().nullable(),createdAt:a.number(),scheduledFor:a.number(),startedAt:a.number().nullable(),completedAt:a.number().nullable(),attemptId:a.string().nullable(),workerSlotId:a.string().nullable(),workerSessionId:a.string().nullable(),leaseExpiresAt:a.number().nullable(),attemptHeartbeatAt:a.number().nullable(),runtimeUpdatedAt:a.number().nullable(),metadata:xa,progress:a.custom((e)=>typeof e==="object"&&e!==null&&("progress"in e)&&typeof e.progress==="number").nullable(),result:a.unknown().nullable().optional()}),uo=15000;var uT=a.enum(["pending","processing","completed","failed"]),JN=a.enum(["completed","failed"]),ve={PENDING:"pending",PROCESSING:"processing",COMPLETED:"completed",FAILED:"failed"},o8=a.object({id:a.string(),type:a.string(),status:uT,data:a.unknown(),result:a.unknown().optional(),lastError:a.string().optional().nullable(),attempts:a.number(),maxRetries:a.number(),priority:a.number(),createdAt:a.date(),updatedAt:a.date(),processedAt:a.date().optional().nullable(),completedAt:a.date().optional().nullable(),failedAt:a.date().optional().nullable()}),s8=a.object({jobId:a.string(),type:a.string(),status:JN,result:a.unknown().optional(),error:a.string().optional()}),pT=a.object({success:a.literal(!1),error:a.string().optional()}),Tg=a.object({id:a.string(),type:a.enum(["job","batch"]),status:uT,message:a.string().optional(),progress:a.object({current:a.number(),total:a.number(),percentage:a.number()}).optional(),aggregationKey:a.string().optional(),batchDetails:a.object({totalOperations:a.number(),completedOperations:a.number(),failedOperations:a.number(),currentOperation:a.string().optional(),errors:a.array(a.string()).optional()}).optional(),jobDetails:a.object({jobType:a.string(),priority:a.number(),retryCount:a.number()}).optional(),metadata:xa});var q=ot("job_queue",{id:V("id").primaryKey().$defaultFn(()=>it()),type:V("type").notNull(),data:V("data").notNull(),result:V("result",{mode:"json"}),progress:V("progress",{mode:"json"}).$type(),source:V("source"),metadata:V("metadata",{mode:"json"}).$type().notNull(),status:V("status",{enum:["pending","processing","completed","failed"]}).notNull().default("pending"),priority:xe("priority").notNull().default(0),retryCount:xe("retryCount").notNull().default(0),maxRetries:xe("maxRetries").notNull().default(3),lastError:V("lastError"),createdAt:xe("createdAt").notNull().$defaultFn(()=>Date.now()),scheduledFor:xe("scheduledFor").notNull().$defaultFn(()=>Date.now()),startedAt:xe("startedAt"),completedAt:xe("completedAt"),attemptId:V("attemptId"),workerSlotId:V("workerSlotId"),workerSessionId:V("workerSessionId"),leaseExpiresAt:xe("leaseExpiresAt"),attemptHeartbeatAt:xe("attemptHeartbeatAt"),runtimeUpdatedAt:xe("runtimeUpdatedAt")},(e)=>({queueReadyIdx:ut("idx_job_queue_ready").on(e.status,e.priority,e.scheduledFor),jobTypeIdx:ut("idx_job_queue_type").on(e.type,e.status),runtimeUpdatesIdx:ut("idx_job_queue_runtime_updates").on(e.runtimeUpdatedAt,e.id),jobSourceIdx:ut("idx_job_queue_source").on(e.source)})),ft=ot("job_worker_sessions",{slotId:V("slotId").primaryKey(),sessionId:V("sessionId").notNull().unique(),startedAt:xe("startedAt").notNull(),heartbeatAt:xe("heartbeatAt").notNull(),expiresAt:xe("expiresAt").notNull().default(0)},(e)=>({heartbeatIdx:ut("idx_job_worker_sessions_heartbeat").on(e.heartbeatAt),expiresIdx:ut("idx_job_worker_sessions_expires").on(e.expiresAt)}));function HN(e){return Xr({url:e.url,schema:{jobQueue:q,jobWorkerSessions:ft},authToken:e.authToken,authTokenEnv:"JOB_QUEUE_DATABASE_AUTH_TOKEN",contentionRetryBudgetMs:0})}class dT{declarations=new Map;handlers=new Map;validators=new Map;logger;mode;finalizedRegistrations;constructor(e,t){this.logger=e.child("HandlerRegistry"),this.mode=t}registerHandler(e,t,n){if(this.finalizedRegistrations)throw Error("Job handler registrations are finalized");if(this.declarations.has(e))throw Error(`Job handler is already registered for type: ${e}`);if(this.declarations.set(e,{handler:t,pluginId:n}),this.validators.set(e,t),this.mode!=="validation-only")this.handlers.set(e,t);this.logger.debug("Registered job execution declaration",{type:e,pluginId:n,mode:this.mode})}unregisterHandler(e){this.declarations.delete(e),this.handlers.delete(e),this.validators.delete(e),this.logger.debug("Unregistered job handler",{type:e})}unregisterPluginHandlers(e){let t=[...this.declarations.entries()].filter(([,n])=>n.pluginId===e).map(([n])=>n);for(let n of t)this.declarations.delete(n),this.handlers.delete(n),this.validators.delete(n);if(t.length>0)this.logger.debug("Unregistered plugin handlers",{pluginId:e,count:t.length,types:t})}finalizeRegistrations(){return this.finalizedRegistrations??=Object.freeze([...this.declarations.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>Object.freeze({type:e,pluginId:t.pluginId}))),this.finalizedRegistrations}getExecutionRegistrations(){if(!this.finalizedRegistrations)throw Error("Job handler registrations are not finalized");return this.finalizedRegistrations}getRegisteredTypes(){return[...this.handlers.keys()]}getHandler(e){return this.handlers.get(e)}getValidator(e){return this.validators.get(e)}}var a8=a.looseObject({deduplicationKey:a.string().optional()});class mT{findDuplicate(e,t,n){if(!t||t==="none")return null;let r=this.filterByDeduplicationKey(e,n).sort((o,s)=>s.createdAt-o.createdAt||s.id.localeCompare(o.id)),i=r.find((o)=>o.status===ve.PENDING)??null;if(t==="skip"||t==="replace")return i;return i??r[0]??null}filterByDeduplicationKey(e,t){if(!t)return e;return e.filter((n)=>{let r=a8.safeParse(n.metadata);return r.success&&r.data.deduplicationKey===t})}}var c8=2000,l8=5,u8=40,p8=a.number().int().min(0).max(1000),d8=new ov;class fT{db;transactionClient;databaseUrl;logger;deduplicator=new mT;writeRetryBudgetMs;constructor(e,t,n,r,i){this.db=e,this.transactionClient=t,this.databaseUrl=n,this.logger=r.child("JobQueueRepository"),this.writeRetryBudgetMs=i?.writeRetryBudgetMs??c8}async insert(e){await this.write("insert",async()=>this.db.insert(q).values(e))}async enqueueAtomic(e){return d8.run(this.databaseUrl,async()=>{let t=Date.now()+this.writeRetryBudgetMs;return this.attemptEnqueue(e,t,1)})}async attemptEnqueue(e,t,n){let r=await this.runEnqueueTransaction(e,t,n);if(r.retry)return this.attemptEnqueue(e,t,n+1);return r.decision}async runEnqueueTransaction(e,t,n){let r=await this.acquireWriteTransaction(e,t),i={prepared:!1},o=!1;try{let s=await this.decideEnqueue(r,e,()=>{i.prepared=!0});return o=!0,await r.commit(),{retry:!1,decision:s}}catch(s){let c=o&&this.isSerializationConflict(s)&&!r.closed,l=!0;if(!r.closed)try{await r.rollback()}catch(u){l=!1,this.logger.error("Failed to roll back atomic enqueue",{type:e.jobData.type,rollbackError:u})}if(i.prepared)e.onInsertRollback?.();if(!c||!l)throw s;return await this.waitForConflictRetry("commit",e,t,n,s),{retry:!0}}finally{r.close()}}async decideEnqueue(e,t,n){let{jobData:r,strategy:i,deduplicationKey:o,beforeInsert:s}=t,c=i??"none",l=async()=>{await s?.(),n()},u=async()=>{await l(),await this.insertJob(e,r)};if(c==="none")return await u(),{kind:"inserted",jobId:r.id};let p=await this.getActiveDeduplicationCandidates(e,r.type),m=this.deduplicator.findDuplicate(p,c,o);if(!m)return await u(),{kind:"inserted",jobId:r.id};if(c==="skip")return{kind:"skipped",jobId:m.id};if(c==="coalesce"){if((await e.execute({sql:"UPDATE `job_queue` SET `scheduledFor` = ? WHERE `id` = ? AND `status` = ?",args:[Date.now(),m.id,m.status]})).rowsAffected!==1)throw Error(`Atomic coalesce lost selected job ${m.id}`);return{kind:"coalesced",jobId:m.id}}await l();let g=Date.now();if((await e.execute({sql:"UPDATE `job_queue`\n SET `status` = ?,\n `lastError` = ?,\n `completedAt` = ?,\n `runtimeUpdatedAt` = max(?, coalesce((SELECT max(`runtimeUpdatedAt`) FROM `job_queue`), 0) + 1)\n WHERE `id` = ? AND `status` = ?",args:[ve.FAILED,"Replaced by newer job",g,g,m.id,ve.PENDING]})).rowsAffected!==1)throw Error(`Atomic replace lost selected job ${m.id}`);return await this.insertJob(e,r),{kind:"replaced",jobId:r.id,replacedJobId:m.id}}async getActiveDeduplicationCandidates(e,t){return(await e.execute({sql:"SELECT `id`, `status`, `createdAt`, `metadata`\n FROM `job_queue`\n WHERE `type` = ? AND `status` IN (?, ?)",args:[t,ve.PENDING,ve.PROCESSING]})).rows.map((r)=>this.parseDeduplicationCandidate(r))}parseDeduplicationCandidate(e){let{id:t,status:n,createdAt:r,metadata:i}=e;if(typeof t!=="string"||n!==ve.PENDING&&n!==ve.PROCESSING||typeof r!=="number"&&typeof r!=="bigint"||typeof i!=="string")throw Error("Invalid active job row returned during atomic enqueue");let o=JSON.parse(i);return{id:t,status:n,createdAt:Number(r),metadata:o}}async insertJob(e,t){if((await e.execute({sql:"INSERT INTO `job_queue` (\n `id`, `type`, `data`, `result`, `source`, `metadata`,\n `status`, `priority`, `retryCount`, `maxRetries`,\n `lastError`, `createdAt`, `scheduledFor`, `startedAt`,\n `completedAt`\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",args:[t.id,t.type,t.data,this.serializeJson(t.result),t.source,JSON.stringify(t.metadata),t.status,t.priority,t.retryCount,t.maxRetries,t.lastError,t.createdAt,t.scheduledFor,t.startedAt,t.completedAt]})).rowsAffected!==1)throw Error(`Atomic enqueue did not insert job ${t.id}`)}serializeJson(e){if(e===void 0||e===null)return null;return JSON.stringify(e)}acquireWriteTransaction(e,t){return this.retryOnConflict("acquire",e,()=>this.transactionClient.transaction("write"),(n)=>this.isSerializationConflict(n),t)}async waitForConflictRetry(e,t,n,r,i){let o=Math.min(l8*2**(r-1),u8),s=o/2+Math.random()*(o/2);if(Date.now()+s>=n)throw this.transactionConflictError(e,t,r,i);await new Promise((c)=>setTimeout(c,s))}async retryOnConflict(e,t,n,r,i=Date.now()+this.writeRetryBudgetMs,o=1){try{return await n()}catch(s){if(!r(s))throw s;return await this.waitForConflictRetry(e,t,i,o,s),this.retryOnConflict(e,t,n,r,i,o+1)}}transactionConflictError(e,t,n,r){if(typeof t==="string")return Error(`Failed job queue write "${t}" within ${this.writeRetryBudgetMs}ms after ${n} attempts`,{cause:r});let i=t.strategy??"none",o=t.deduplicationKey?"present":"absent";return Error(`Failed to ${e} atomic enqueue transaction for type "${t.jobData.type}" within ${this.writeRetryBudgetMs}ms after ${n} attempts (strategy: ${i}, key: ${o})`,{cause:r})}write(e,t){return this.retryOnConflict("write",e,t,(n)=>{let r=new Set;for(let i=n;i!==void 0&&!r.has(i);){if(r.add(i),typeof i==="object"&&i!==null&&"code"in i&&/^SQLITE_(?:BUSY|LOCKED)(?:_|$)/u.test(String(i.code)))return!0;i=i instanceof Error?i.cause:void 0}return!1})}isSerializationConflict(e){for(let t=e;t!==void 0;){let n=typeof t==="object"&&t!==null&&"code"in t?String(t.code):"",r=Be(t,"");if(/SQLITE_(?:BUSY|LOCKED)/u.test(n)||/SQLITE_(?:BUSY|LOCKED)|database is locked|transaction (?:busy|conflict)/iu.test(r))return!0;t=t instanceof Error?t.cause:void 0}return!1}async startWorkerSession(e,t,n=Date.now(),r=uo){let i=n+r;await this.write("start worker session",async()=>this.db.insert(ft).values({slotId:e,sessionId:t,startedAt:n,heartbeatAt:n,expiresAt:i}).onConflictDoUpdate({target:ft.slotId,set:{sessionId:t,startedAt:n,heartbeatAt:n,expiresAt:i}}))}async heartbeatWorkerSession(e,t,n=Date.now(),r=uo){return(await this.write("heartbeat worker session",async()=>this.db.update(ft).set({heartbeatAt:n,expiresAt:n+r}).where(H(A(ft.slotId,e),A(ft.sessionId,t))).returning({slotId:ft.slotId}))).length===1}async endWorkerSession(e,t){return(await this.write("end worker session",async()=>this.db.delete(ft).where(H(A(ft.slotId,e),A(ft.sessionId,t))).returning({slotId:ft.slotId}))).length===1}async complete(e,t,n){let r=Date.now(),o=(await this.write("complete",async()=>this.db.update(q).set({status:ve.COMPLETED,result:t,lastError:null,completedAt:r,runtimeUpdatedAt:this.nextRuntimeUpdatedAt(r)}).where(this.attemptWriteGuard(e,n)).returning({id:q.id}))).length===1;if(o)this.logger.debug("Job completed",{jobId:e,hasResult:t!==void 0});return o}async update(e,t,n){let i=(await this.write("update",async()=>this.db.update(q).set({data:JSON.stringify(t)}).where(this.attemptWriteGuard(e,n)).returning({id:q.id}))).length===1;if(i)this.logger.debug("Job data updated",{jobId:e});return i}async recordAttemptProgress(e,t,n,r=Date.now()){return(await this.write("record progress",async()=>this.db.update(q).set({attemptHeartbeatAt:r,runtimeUpdatedAt:this.nextRuntimeUpdatedAt(r),progress:n}).where(this.attemptWriteGuard(e,t)).returning({id:q.id}))).length===1}async renewAttemptLease(e,t,n,r){return(await this.write("renew attempt lease",async()=>this.db.update(q).set({attemptHeartbeatAt:n,leaseExpiresAt:n+r}).where(this.attemptWriteGuard(e,t)).returning({id:q.id}))).length===1}async fail(e,t,n,r=Date.now()){let o=(await this.db.select({retryCount:q.retryCount,maxRetries:q.maxRetries,type:q.type,scheduledFor:q.scheduledFor,startedAt:q.startedAt,runtimeUpdatedAt:q.runtimeUpdatedAt}).from(q).where(this.attemptWriteGuard(e,n)).limit(1))[0];if(!o)return!1;let s=o.retryCount<o.maxRetries,c=s?o.retryCount+1:o.retryCount,l=Math.min(1000*2**o.retryCount,60000),u=s?r+l:o.scheduledFor;if((await this.write("fail",async()=>this.db.update(q).set({status:s?ve.PENDING:ve.FAILED,retryCount:c,lastError:t.message,scheduledFor:u,completedAt:s?null:r,runtimeUpdatedAt:s?o.runtimeUpdatedAt:this.nextRuntimeUpdatedAt(r),startedAt:s?null:o.startedAt,attemptId:null,workerSlotId:null,workerSessionId:null,leaseExpiresAt:null,attemptHeartbeatAt:null}).where(H(this.attemptWriteGuard(e,n),A(q.retryCount,o.retryCount))).returning({id:q.id}))).length!==1)return!1;if(s)this.logger.debug("Job scheduled for retry",{jobId:e,retryCount:c,backoffMs:l,scheduledFor:new Date(u).toISOString()});else this.logger.error("Job failed after max retries",{jobId:e,type:o.type,retryCount:o.retryCount,error:t.message});return!0}async retireUnownedActiveJob(e){let t=e.reason.trim();if(t.length===0)throw Error("Retired job reason must not be empty");let r=(await this.write("retire unowned job",async()=>this.db.update(q).set({status:ve.FAILED,lastError:t,completedAt:e.now,runtimeUpdatedAt:this.nextRuntimeUpdatedAt(e.now)}).where(H(A(q.id,e.jobId),A(q.type,e.expectedType),cn(A(q.status,ve.PENDING),A(q.status,ve.PROCESSING)),Xt(q.attemptId),Xt(q.workerSlotId),Xt(q.workerSessionId),Xt(q.leaseExpiresAt),Xt(q.attemptHeartbeatAt),Xt(q.progress),Xt(q.result))).returning()))[0]??null;if(r)this.logger.warn("Retired unowned legacy job",{jobId:r.id,type:r.type,reason:t});return r}async getStatus(e){return(await this.db.select().from(q).where(A(q.id,e)).limit(1))[0]??null}async getJobsByRootJobId(e){return this.db.select().from(q).where(b`json_extract(${q.metadata}, '$.rootJobId') = ${e}`).orderBy(Ue(q.createdAt),Ue(q.id))}async getStatusByEntityId(e){return(await this.db.select().from(q).where(b`json_extract(${q.data}, '$.id') = ${e}`).orderBy(wt(q.createdAt)).limit(1))[0]??null}async getStats(){let e=await this.db.select({status:q.status,count:b`count(*)`}).from(q).groupBy(q.status),t={pending:0,processing:0,failed:0,completed:0,total:0};for(let n of e){let r=Number(n.count);t[n.status]=r,t.total+=r}return t}async getDiagnostics(e=Date.now()){let[t,n,r]=await Promise.all([this.db.select({type:q.type,status:q.status,count:b`count(*)`}).from(q).groupBy(q.type,q.status),this.db.select({oldestPendingAt:b`min(case when ${q.status} = ${ve.PENDING} then ${q.createdAt} end)`,duePending:b`coalesce(sum(case when ${q.status} = ${ve.PENDING} and ${q.scheduledFor} <= ${e} then 1 else 0 end), 0)`,oldestDuePendingAt:b`min(case when ${q.status} = ${ve.PENDING} and ${q.scheduledFor} <= ${e} then ${q.scheduledFor} end)`,latestClaimAt:b`max(${q.startedAt})`,oldestProcessingAt:b`min(case when ${q.status} = ${ve.PROCESSING} then ${q.startedAt} end)`,staleLeaseCount:b`coalesce(sum(case when ${q.status} = ${ve.PROCESSING} and ${q.leaseExpiresAt} is not null and ${q.leaseExpiresAt} <= ${e} then 1 else 0 end), 0)`}).from(q),this.db.select({total:b`count(*)`,active:b`coalesce(sum(case when ${ft.expiresAt} > ${e} then 1 else 0 end), 0)`,stale:b`coalesce(sum(case when ${ft.expiresAt} <= ${e} then 1 else 0 end), 0)`,latestHeartbeatAt:b`max(${ft.heartbeatAt})`}).from(ft)]),i={pending:0,processing:0,completed:0,failed:0},o=t.map((u)=>{let p=Number(u.count);return i[u.status]+=p,{type:u.type,status:u.status,count:p}}),s=n[0],c=r[0],l=(u)=>u===null||u===void 0?null:Math.max(0,e-Number(u));return{totals:i,byType:o,oldestPendingAgeMs:l(s?.oldestPendingAt),duePending:Number(s?.duePending??0),oldestDuePendingAgeMs:l(s?.oldestDuePendingAt),latestClaimAgeMs:l(s?.latestClaimAt),oldestProcessingAgeMs:l(s?.oldestProcessingAt),staleLeaseCount:Number(s?.staleLeaseCount??0),workerSessions:{total:Number(c?.total??0),active:Number(c?.active??0),stale:Number(c?.stale??0),latestHeartbeatAgeMs:l(c?.latestHeartbeatAt)}}}async getRuntimeUpdates(e,t){let n=p8.parse(t);if(n===0)return[];return(await this.db.select().from(q).where(b`(${q.runtimeUpdatedAt}, ${q.id}) > (${e.updatedAt}, ${e.jobId})`).orderBy(Ue(q.runtimeUpdatedAt),Ue(q.id)).limit(n)).map((i)=>({job:i,cursor:{updatedAt:i.runtimeUpdatedAt??0,jobId:i.id}}))}async cleanup(e){let t=Date.now()-e;return(await this.write("cleanup",async()=>this.db.delete(q).where(H(cn(A(q.status,ve.COMPLETED),A(q.status,ve.FAILED)),On(q.completedAt,t))))).rowsAffected}async getActiveJobs(e){let t=cn(A(q.status,ve.PENDING),A(q.status,ve.PROCESSING)),n=e&&e.length>0?H(t,Ke(q.type,e)):t;return this.db.select().from(q).where(n).orderBy(wt(q.createdAt))}async getRecentJobs(e,t=20){let n=e&&e.length>0?Ke(q.type,e):void 0;return this.db.select().from(q).where(n).orderBy(wt(q.createdAt)).limit(t)}async getFailedJobs(e){let t=A(q.status,ve.FAILED),n=e&&e.length>0?H(t,Ke(q.type,e)):t;return this.db.select().from(q).where(n).orderBy(wt(q.createdAt))}async claimNextReady(e){let{now:t,attemptId:n,workerSlotId:r,workerSessionId:i,leaseDurationMs:o,executableTypes:s}=e,c=this.db.select({slotId:ft.slotId}).from(ft).where(H(A(ft.slotId,r),A(ft.sessionId,i),Xi(ft.expiresAt,t))),l=this.db.select({slotId:ft.slotId}).from(ft).where(H(A(ft.slotId,q.workerSlotId),A(ft.sessionId,q.workerSessionId))),u=H(A(q.status,ve.PROCESSING),cn(Xt(q.attemptId),ef(l),On(q.leaseExpiresAt,t))),p=b`${q.status} = ${ve.PROCESSING} AND ${q.retryCount} + 1 > ${q.maxRetries}`,m=this.db.select({id:q.id}).from(q).where(H(Ke(q.type,s),cn(H(A(q.status,ve.PENDING),On(q.scheduledFor,t)),u))).orderBy(Ue(q.priority),Ue(q.createdAt)).limit(1),f=(await this.write("claim",async()=>this.db.update(q).set({status:b`CASE WHEN ${p} THEN ${ve.FAILED} ELSE ${ve.PROCESSING} END`,retryCount:b`CASE WHEN ${q.status} = ${ve.PROCESSING} THEN ${q.retryCount} + 1 ELSE ${q.retryCount} END`,lastError:b`CASE WHEN ${q.status} = ${ve.PROCESSING} THEN 'Attempt lease expired' ELSE ${q.lastError} END`,startedAt:b`CASE WHEN ${p} THEN ${q.startedAt} ELSE ${t} END`,completedAt:b`CASE WHEN ${p} THEN ${t} ELSE NULL END`,attemptId:b`CASE WHEN ${p} THEN ${q.attemptId} ELSE ${n} END`,workerSlotId:b`CASE WHEN ${p} THEN ${q.workerSlotId} ELSE ${r} END`,workerSessionId:b`CASE WHEN ${p} THEN ${q.workerSessionId} ELSE ${i} END`,leaseExpiresAt:b`CASE WHEN ${p} THEN ${q.leaseExpiresAt} ELSE ${t+o} END`,attemptHeartbeatAt:b`CASE WHEN ${p} THEN ${q.attemptHeartbeatAt} ELSE ${t} END`,runtimeUpdatedAt:b`CASE WHEN ${p} THEN ${this.nextRuntimeUpdatedAt(t)} ELSE ${q.runtimeUpdatedAt} END`}).where(H(Ke(q.id,m),na(c))).returning()))[0];if(f?.status!==ve.PROCESSING)return null;return this.logger.debug("Job claimed",{jobId:f.id,attemptId:f.attemptId,workerSlotId:r,workerSessionId:i}),f}nextRuntimeUpdatedAt(e){return b`max(${e}, coalesce((select max(${q.runtimeUpdatedAt}) from ${q}), 0) + 1)`}attemptWriteGuard(e,t){return t?H(A(q.id,e),A(q.status,ve.PROCESSING),A(q.attemptId,t)):H(A(q.id,e),Xt(q.attemptId),cn(A(q.status,ve.PENDING),A(q.status,ve.PROCESSING)))}}import{AsyncLocalStorage as m8}from"async_hooks";class is{storage=new m8;static createFresh(){return new is}constructor(){}current(){return this.storage.getStore()}run(e,t,n){if(t.length===0)throw Error("Operation ID must not be empty");let r=Di.parse(e),i=f8(r);return this.storage.run(Object.freeze({provenance:i,operationId:t}),n)}}function f8(e){if(Object.freeze(e.projectionLineage),e.sourceEntity)Object.freeze(e.sourceEntity);return Object.freeze(e)}class gT{client;logger;handlerRegistry;repository;walInitialization=null;walInitializationSettled=!1;closeRequested=!1;clientClosed=!1;inFlightEnqueues=0;databaseUrl;operationContext;projectionAdmission;directWorkerSlotId=`direct:${it()}`;directWorkerSessionId=it();directLeaseDurationMs;directSessionStart=null;close(){this.closeRequested=!0,this.closeClientWhenReady()}static createFresh(e,t,n){return new gT(e,t??kr.getInstance(),n)}constructor(e,t,n){let{db:r,client:i,url:o}=HN(e);this.client=i,this.databaseUrl=o,this.logger=t.child("JobQueueService"),this.operationContext=n?.operationContext??is.createFresh(),this.projectionAdmission=n?.projectionAdmission,this.handlerRegistry=new dT(this.logger,n?.handlerRegistrationMode??"combined"),this.repository=new fT(r,i,o,this.logger),this.directLeaseDurationMs=e.claimTimeoutMs??300000}initialize(){if(this.closeRequested)return Promise.resolve();return this.walInitialization??=this.initializeWALMode(),this.walInitialization}async initializeWALMode(){try{await ei(this.client,this.databaseUrl)}catch(e){this.logger.warn("Failed to enable WAL mode (non-fatal)",e)}finally{this.walInitializationSettled=!0,this.closeClientWhenReady()}}closeClientWhenReady(){if(!this.closeRequested||this.inFlightEnqueues>0||this.walInitialization!==null&&!this.walInitializationSettled)return;this.closeClient()}closeClient(){if(this.clientClosed)return;this.clientClosed=!0,this.client.close()}registerHandler(e,t,n){this.handlerRegistry.registerHandler(e,t,n)}unregisterHandler(e){this.handlerRegistry.unregisterHandler(e)}unregisterPluginHandlers(e){this.handlerRegistry.unregisterPluginHandlers(e)}getRegisteredTypes(){return this.handlerRegistry.getRegisteredTypes()}getHandler(e){return this.handlerRegistry.getHandler(e)}getValidator(e){return this.handlerRegistry.getValidator(e)}finalizeHandlerRegistrations(){return this.handlerRegistry.finalizeRegistrations()}getExecutionRegistrations(){return this.handlerRegistry.getExecutionRegistrations()}async enqueue(e){if(this.closeRequested)throw Error("Cannot enqueue a job after the queue service is closed");this.inFlightEnqueues++;try{return await this.enqueueValidated(e)}finally{this.inFlightEnqueues--,this.closeClientWhenReady()}}async enqueueValidated(e){let{type:t,data:n,options:r}=e,i=this.handlerRegistry.getValidator(t);if(!i)throw Error(`No job type declared: ${t}`);let o=i.validateAndParse(n);if(o===null)throw Error(`Invalid job data for type: ${t}`);let s=Date.now(),c=it(),l=r?.rootJobId??this.operationContext.current()?.provenance.rootJobId??c,u=this.createJobProvenance(c,l,r),p=r?.metadata??{operationType:"data_processing"},{provenance:m,...g}=p,f={id:c,type:t,data:JSON.stringify(o),status:ve.PENDING,priority:r?.priority??0,maxRetries:r?.maxRetries??3,retryCount:0,source:r?.source??null,metadata:{...g,...r?.deduplicationKey&&{deduplicationKey:r.deduplicationKey},rootJobId:l,provenance:u},createdAt:s,scheduledFor:r?.delayMs?s+r.delayMs:s,result:null,lastError:null,startedAt:null,completedAt:null},v,w=()=>{v?.rollback(),v=void 0};try{let k=await this.repository.enqueueAtomic({jobData:f,strategy:r?.deduplication,deduplicationKey:r?.deduplicationKey,beforeInsert:async()=>{v=await this.projectionAdmission?.reserveJobAdmission(u)},onInsertRollback:w});if(v?.commit(),v=void 0,k.kind==="skipped")this.logger.debug("Skipping duplicate job (already pending)",{type:t,existingJobId:k.jobId});else if(k.kind==="coalesced")this.logger.debug("Coalescing with existing job",{type:t,existingJobId:k.jobId});else{if(k.kind==="replaced")this.logger.debug("Replacing duplicate job",{type:t,oldJobId:k.replacedJobId});this.logger.debug("Job enqueued",{id:k.jobId,type:t,priority:f.priority,rootJobId:f.metadata.rootJobId})}return k.jobId}catch(k){throw w(),this.logger.error("Failed to enqueue job",{type:t,error:Be(k)}),k}}createJobProvenance(e,t,n){let r=this.operationContext.current(),i=n?.metadata.provenance??r?.provenance,o=i?.rootJobId===t?i:void 0,s=r?.provenance.rootJobId===t?r.operationId:void 0,c=n?.projection,l=c?[...o?.projectionLineage??[],c.id]:[...o?.projectionLineage??[]],u=c?.id??o?.projectionId;return Di.parse({rootJobId:t,causationId:s??o?.causationId??e,...u?{projectionId:u}:{},projectionLineage:l,...c?.sourceEntity?{sourceEntity:c.sourceEntity}:o?.sourceEntity?{sourceEntity:o.sourceEntity}:{},derivationDepth:l.length})}async dequeue(e){let t=this.handlerRegistry.getRegisteredTypes();if(t.length===0)return null;let n=e??await this.getDirectClaimOptions(),r=Date.now(),i=await this.repository.claimNextReady({...n,now:r,attemptId:it(),executableTypes:t});if(!i)return null;return this.logger.debug("Job dequeued",{id:i.id,type:i.type,priority:i.priority,retryCount:i.retryCount,attemptId:i.attemptId,workerSlotId:i.workerSlotId,workerSessionId:i.workerSessionId}),i}async startWorkerSession(e,t,n=uo){await this.repository.startWorkerSession(e,t,Date.now(),n)}heartbeatWorkerSession(e,t,n=uo){return this.repository.heartbeatWorkerSession(e,t,Date.now(),n)}endWorkerSession(e,t){return this.repository.endWorkerSession(e,t)}renewAttemptLease(e,t,n){return this.repository.renewAttemptLease(e,t,Date.now(),n)}recordAttemptProgress(e,t,n){return this.repository.recordAttemptProgress(e,t,n)}complete(e,t,n){return this.repository.complete(e,t,n)}update(e,t,n){return this.repository.update(e,t,n)}fail(e,t,n){return this.repository.fail(e,t,n)}retireUnownedActiveJob(e){return this.repository.retireUnownedActiveJob(e)}async getDirectClaimOptions(){return this.directSessionStart??=this.repository.startWorkerSession(this.directWorkerSlotId,this.directWorkerSessionId,Date.now(),this.directLeaseDurationMs),await this.directSessionStart,{workerSlotId:this.directWorkerSlotId,workerSessionId:this.directWorkerSessionId,leaseDurationMs:this.directLeaseDurationMs}}async getStatus(e){return this.repository.getStatus(e)}async getJobsByRootJobId(e){return this.repository.getJobsByRootJobId(e)}async getStatusByEntityId(e){return this.repository.getStatusByEntityId(e)}async getStats(){return this.repository.getStats()}getDiagnostics(e){return this.repository.getDiagnostics(e)}async waitForIdle(e={}){let t=e.quietMs??250,n=e.pollIntervalMs??25,r=Date.now()+(e.timeoutMs??30000),i=async(o)=>{e.signal?.throwIfAborted();let{totals:s}=await this.getDiagnostics(),l=s.pending===0&&s.processing===0?o??Date.now():null;if(l!==null&&Date.now()-l>=t)return;if(Date.now()>=r)throw Error(`Timed out waiting for the job queue to settle: ${s.pending} pending, ${s.processing} processing`);return await Bun.sleep(n),i(l)};return i(null)}getRuntimeUpdates(e,t=1000){return this.repository.getRuntimeUpdates(e,t)}async cleanup(e){let t=await this.repository.cleanup(e);if(t>0)this.logger.info("Cleaned up old jobs",{deletedCount:t,olderThanMs:e});return t}async getActiveJobs(e){return this.repository.getActiveJobs(e)}async getRecentJobs(e,t){return this.repository.getRecentJobs(e,t)}async getFailedJobs(e){return this.repository.getFailedJobs(e)}}function hT(e){let t,n=()=>{return},r=!1,i=new Promise((s)=>{n=()=>{r=!0,s({kind:"timeout"})}}),o=()=>{if(r)return;if(t)clearTimeout(t);t=setTimeout(n,Math.max(1,e))};return o(),{expired:i,renew:o,cancel:()=>{if(r=!0,t)clearTimeout(t)}}}function GN(e,t){let n,r=(o)=>{let s=JSON.stringify([o.progress,o.total,o.message]);if(s===n)return;n=s,t()},i=(o)=>({createSub:(s)=>i(o.createSub(s)),report:async(s)=>{r(s),await o.report(s)},startHeartbeat:(s,c)=>o.startHeartbeat(s,c),stopHeartbeat:()=>o.stopHeartbeat(),toCallback:()=>{let s=o.toCallback();return async(c)=>{r(c),await s(c)}}});return i(e)}class VN extends Error{constructor(e,t){super(`Job ${e} exceeded its ${t}ms execution deadline`);this.name="JobDeadlineExceededError"}}class yT{logger;jobQueueService;progressMonitor;config;isRunning=!1;shouldStop=!1;activeJobs=new Set;stats;startTime=0;pollFiber=null;currentPoll=null;workerScope=null;jobFibers=null;activeTransition=null;transitionQueue=[];clock;operationContext;projectionBatchScope;workerSessionId=null;workerHeartbeatStop=null;static createFresh(e,t,n,r,i){return new yT(e,t,n,r,i)}constructor(e,t,n,r,i){if(this.logger=n.child("JobQueueWorker"),this.jobQueueService=e,this.progressMonitor=t,this.clock=i?.clock,this.operationContext=i?.operationContext??is.createFresh(),this.projectionBatchScope=i?.projectionBatchScope,this.config={concurrency:r?.concurrency??1,pollInterval:r?.pollInterval??1000,maxJobs:r?.maxJobs??0,autoStart:r?.autoStart??!1,workerSlotId:r?.workerSlotId??process.env.BRAIN_JOB_WORKER_SLOT_ID??"default",defaultExecutionTimeoutMs:r?.defaultExecutionTimeoutMs??300000,cancellationGraceMs:r?.cancellationGraceMs??5000,errorCallbackTimeoutMs:r?.errorCallbackTimeoutMs??1e4,leaseDurationMs:r?.leaseDurationMs??30000,attemptHeartbeatIntervalMs:r?.attemptHeartbeatIntervalMs??1e4,workerHeartbeatIntervalMs:r?.workerHeartbeatIntervalMs??5000,workerSessionTimeoutMs:r?.workerSessionTimeoutMs??uo,onUnhealthy:r?.onUnhealthy??(()=>{return})},this.stats={processedJobs:0,failedJobs:0,activeJobs:0,uptime:0,isRunning:!1,isHealthy:!0},this.logger.debug("JobQueueWorker initialized",{concurrency:this.config.concurrency,pollInterval:this.config.pollInterval,maxJobs:this.config.maxJobs,autoStart:this.config.autoStart}),this.config.autoStart)this.start().catch((o)=>{this.logger.error("Failed to auto-start JobQueueWorker",{error:o})})}start(){return this.requestTransition("start",!0)}async startWorker(){if(this.isRunning){this.logger.warn("Worker is already running");return}this.logger.debug("Starting JobQueueWorker");let e=it();await this.jobQueueService.startWorkerSession(this.config.workerSlotId,e,this.config.workerSessionTimeoutMs),this.workerSessionId=e,this.isRunning=!0,this.shouldStop=!1,this.startTime=Date.now(),this.stats.isRunning=!0,this.stats.isHealthy=!0,delete this.stats.unhealthyReason,this.startWorkerHeartbeat(),this.workerScope=te.runSync(vt.make()),this.jobFibers=te.runSync(vt.provide(Pn.make(),this.workerScope)),this.pollFiber=te.runFork(this.runPollingLoop())}stop(){return this.requestTransition("stop",!0)}async stopWorker(e){if(!this.isRunning){this.logger.warn("Worker is not running");return}if(this.logger.debug("Stopping JobQueueWorker"),this.shouldStop=!0,e.awaitInFlightPoll&&this.pollFiber){let n=this.pollFiber;await te.runPromise(Qr.interrupt(n)),this.pollFiber=null}if(e.awaitInFlightPoll&&this.currentPoll)await this.currentPoll,this.currentPoll=null;if(this.jobFibers)this.logger.debug("Waiting for active jobs to complete",{activeJobs:this.activeJobs.size}),await te.runPromise(Pn.awaitEmpty(this.jobFibers));await this.closeWorkerScope(),await this.stopWorkerHeartbeat();let t=this.workerSessionId;if(this.workerSessionId=null,t)await this.jobQueueService.endWorkerSession(this.config.workerSlotId,t);this.isRunning=!1,this.stats.isRunning=!1,this.logger.debug("JobQueueWorker stopped")}getStats(){return{...this.stats,activeJobs:this.activeJobs.size,uptime:this.isRunning?Date.now()-this.startTime:0}}isWorkerRunning(){return this.isRunning}isStopRequested(){return this.shouldStop}async processAvailableJobs(){if(!this.isRunning||this.shouldStop)return;try{let e=this.config.concurrency-this.activeJobs.size;if(e<=0)return;if(this.config.maxJobs>0){let n=this.stats.processedJobs+this.stats.failedJobs,r=this.config.maxJobs-n-this.activeJobs.size;if(r<=0){this.logger.debug("Maximum job limit reached, stopping worker",{maxJobs:this.config.maxJobs,processedJobs:this.stats.processedJobs,failedJobs:this.stats.failedJobs}),await this.requestTransition("stop",!1);return}e=Math.min(e,r)}let t=this.jobFibers;if(!t)throw Error("Worker job fiber scope is not available");for(let n=0;n<e;n++){if(this.isStopRequested())break;let r=this.workerSessionId;if(!r)throw Error("Worker session is not available");let i=await this.jobQueueService.dequeue({workerSlotId:this.config.workerSlotId,workerSessionId:r,leaseDurationMs:this.config.leaseDurationMs});if(!i)break;this.activeJobs.add(i.id),await te.runPromise(Pn.run(t,i.id,te.promise(()=>this.processJobWrapper(i))))}}catch(e){this.logger.error("Error processing available jobs",{error:e}),this.stats.lastError=Be(e)}}async processJobWrapper(e){let t=e.id;try{this.logger.debug("Processing job",{jobId:t,type:e.type,priority:e.priority,retryCount:e.retryCount});let n=await this.processJob(e);if(n.status==="completed")this.stats.processedJobs++,this.logger.debug("Job completed successfully",{jobId:t,type:n.type});else this.stats.failedJobs++,this.logger.warn("Job failed",{jobId:t,type:n.type,error:n.error})}catch(n){this.stats.failedJobs++,this.logger.error("Error processing job",{jobId:t,type:e.type,error:n}),this.stats.lastError=Be(n)}finally{this.activeJobs.delete(t)}}runPollingLoop(){let t=te.suspend(()=>{if(!this.isWorkerRunning()||this.isStopRequested())return te.interrupt;return this.currentPoll=this.processAvailableJobs(),te.promise(()=>this.currentPoll??Promise.resolve()).pipe(te.andThen(te.suspend(()=>(this.currentPoll=null,!this.isWorkerRunning()||this.isStopRequested()?te.interrupt:te.void))))}).pipe(te.schedule(wr.spaced(this.config.pollInterval)),te.asVoid);return _o(t,this.clock).pipe(te.ensuring(te.sync(()=>{this.pollFiber=null})))}requestTransition(e,t){let n=this.transitionQueue.at(-1)??this.activeTransition;if(n?.kind===e)return n.promise;let r=()=>{return},i=()=>{return},o=new Promise((c,l)=>{r=c,i=l}),s={kind:e,awaitInFlightPoll:t,promise:o,resolve:r,reject:i};return this.transitionQueue.push(s),this.runNextTransition(),o}runNextTransition(){if(this.activeTransition)return;let e=this.transitionQueue.shift();if(!e)return;this.activeTransition=e,(e.kind==="start"?this.startWorker():this.stopWorker({awaitInFlightPoll:e.awaitInFlightPoll})).then(()=>this.completeTransition(e,!0),(n)=>this.completeTransition(e,!1,n))}completeTransition(e,t,n){if(this.activeTransition!==e)return;if(this.activeTransition=null,t)e.resolve();else e.reject(n);queueMicrotask(()=>this.runNextTransition())}async closeWorkerScope(){let e=this.workerScope;if(this.workerScope=null,this.jobFibers=null,e)await te.runPromise(vt.close(e,bt.void))}startHeartbeatLoop(e){let t=null,n=!1,r=setInterval(()=>{if(n||t)return;t=e.beat().then((i)=>{if(!i)e.onStale()}).catch(e.onError).finally(()=>{t=null})},Math.max(1,e.intervalMs));return async()=>{if(n)return;n=!0,clearInterval(r),await t}}startWorkerHeartbeat(){this.workerHeartbeatStop=this.startHeartbeatLoop({intervalMs:this.config.workerHeartbeatIntervalMs,beat:async()=>{let e=this.workerSessionId;if(!e)return!0;return this.jobQueueService.heartbeatWorkerSession(this.config.workerSlotId,e,this.config.workerSessionTimeoutMs)},onStale:()=>this.markUnhealthy("Worker session was superseded"),onError:(e)=>this.markUnhealthy(`Worker session heartbeat failed: ${Be(e)}`)})}async stopWorkerHeartbeat(){await this.workerHeartbeatStop?.(),this.workerHeartbeatStop=null}startAttemptHeartbeat(e,t){let n=e.attemptId;if(!n)return async()=>{return};return this.startHeartbeatLoop({intervalMs:this.config.attemptHeartbeatIntervalMs,beat:()=>this.jobQueueService.renewAttemptLease(e.id,n,this.config.leaseDurationMs),onStale:()=>{let r=Error("Job attempt was superseded");t.abort(r),this.markUnhealthy(r.message)},onError:(r)=>{let i=sl(r);t.abort(i),this.markUnhealthy(`Attempt lease heartbeat failed: ${i.message}`)}})}markUnhealthy(e){if(!this.stats.isHealthy)return;this.stats.isHealthy=!1,this.stats.unhealthyReason=e,this.stats.lastError=e,this.shouldStop=!0,this.logger.error("Job queue worker is unhealthy",{reason:e});try{this.config.onUnhealthy(e)}catch(t){this.logger.error("Job queue worker unhealthy callback failed",{reason:e,error:Be(t)})}}async raceOutcome(e,t){let n,r=new Promise((i)=>{n=setTimeout(()=>i({kind:"timeout"}),Math.max(1,t))});try{return await Promise.race([e,r])}finally{if(n)clearTimeout(n)}}async executeWithDeadline(e,t,n,r,i=hT(t)){let o=Promise.resolve().then(r).then((u)=>({kind:"success",value:u}),(u)=>({kind:"failure",error:u})),s=await Promise.race([o,i.expired]).finally(()=>i.cancel());if(s.kind!=="timeout"){if(s.kind==="failure")throw s.error;return s.value}let c=new VN(e,t);if(n.abort(c),(await this.raceOutcome(o,this.config.cancellationGraceMs)).kind!=="timeout")throw c;throw this.markUnhealthy(`${c.message}; handler ignored cancellation grace`),await o,c}processJob(e){let t=e.metadata.provenance??{rootJobId:e.metadata.rootJobId,causationId:e.id,projectionLineage:[],derivationDepth:0};return this.operationContext.run(t,e.id,()=>{let n=this.projectionBatchScope;return n?n.runFreshBatchScope(()=>this.processJobWithinContext(e)):this.processJobWithinContext(e)})}async processJobWithinContext(e){let t=e.attemptId;if(!t){let c=Error(`Claimed job ${e.id} has no attempt fencing token`);return this.markUnhealthy(c.message),{jobId:e.id,type:e.type,status:ve.FAILED,error:c.message}}let n=this.jobQueueService.getHandler(e.type);if(!n){let c=Error(`No handler registered for job type: ${e.type}`);return await this.jobQueueService.fail(e.id,c,t),{jobId:e.id,type:e.type,status:ve.FAILED,error:c.message}}let r=new AbortController,i=this.startAttemptHeartbeat(e,r),o=!1,s=async()=>{if(o)return;o=!0,await i()};try{this.logger.debug("Processing job",{jobId:e.id,type:e.type,attemptId:t});let c=JSON.parse(e.data),l=n.validateAndParse(c);if(l===null)throw Error(`Invalid job data for type: ${e.type}`);let u=this.progressMonitor.createProgressReporter(e.id,t),p=n.executionTimeoutMs??this.config.defaultExecutionTimeoutMs,m=hT(p),g=await this.executeWithDeadline(e.type,p,r,()=>n.process(l,e.id,GN(u,m.renew),r.signal),m);await s();let f=pT.safeParse(g);if(f.success){let w=f.data.error??"Handler returned failure",k=Error(w);if(await this.jobQueueService.fail(e.id,k,t))await this.emitTerminalFailure(e,k,n,t);return{jobId:e.id,type:e.type,status:ve.FAILED,error:w}}if(!await this.jobQueueService.complete(e.id,g,t))return{jobId:e.id,type:e.type,status:ve.FAILED,error:"Job attempt no longer owns the claim"};return await this.runHandlerSuccessCallback(n,e,t),await this.progressMonitor.handleJobStatusChange(e.id,"completed",e.metadata),{jobId:e.id,type:e.type,status:ve.COMPLETED,result:g}}catch(c){let l=sl(c);if(await s(),await this.runHandlerErrorCallback("onError",n,e,l,t),await this.jobQueueService.fail(e.id,l,t))await this.emitTerminalFailure(e,l,n,t);return{jobId:e.id,type:e.type,status:ve.FAILED,error:l.message}}}async runHandlerSuccessCallback(e,t,n){let r=e.onTerminalSuccess;if(!r)return;try{let i=e.validateAndParse(JSON.parse(t.data));if(i===null)return;let o=this.progressMonitor.createProgressReporter(t.id,n),s=new AbortController;await this.executeWithDeadline(`${t.type}:onTerminalSuccess`,this.config.errorCallbackTimeoutMs,s,()=>r.call(e,i,t.id,o,s.signal))}catch(i){this.logger.error("Terminal job success callback failed",{jobId:t.id,type:t.type,error:i})}}async emitTerminalFailure(e,t,n,r){if((await this.jobQueueService.getStatus(e.id))?.status!==ve.FAILED)return;await this.runHandlerErrorCallback("onTerminalError",n,e,t,r),await this.progressMonitor.handleJobStatusChange(e.id,"failed",e.metadata)}async runHandlerErrorCallback(e,t,n,r,i){let o=t[e];if(!o)return;try{let s=t.validateAndParse(JSON.parse(n.data));if(s===null)return;let c=this.progressMonitor.createProgressReporter(n.id,i),l=new AbortController;await this.executeWithDeadline(`${n.type}:${e}`,this.config.errorCallbackTimeoutMs,l,()=>o.call(t,r,s,n.id,c,l.signal))}catch(s){this.logger.error(e==="onError"?"Job handler error callback failed":"Job handler terminal error callback failed",{jobId:n.id,error:s})}}}var g8=86400000,QN=3600000;class bT{jobQueue;logger;batches=new Map;cleanupFiber=null;cleanupSupervisor=null;inFlightCleanups=new Set;activeTransition=null;transitionQueue=[];acceptingCleanup=!0;clock;static createFresh(e,t,n){return new bT(e,t,n)}constructor(e,t,n){this.jobQueue=e,this.logger=t,this.clock=n?.clock}start(e=QN){return this.requestTransition("start",e)}stop(){return this.requestTransition("stop",QN)}async startCleanup(e){if(this.acceptingCleanup=!0,this.cleanupFiber)return;this.cleanupFiber=te.runFork(this.runCleanupLoop(e))}runCleanupLoop(e){let t=this.cleanupTerminalBatchMetadata().pipe(te.schedule(wr.spaced(e)),te.asVoid);return _o(t,this.clock)}scheduleTerminalBatchCleanup(){if(!this.acceptingCleanup)return;this.cleanupSupervisor??=this.createCleanupSupervisor();let e=te.runFork(this.cleanupTerminalBatchMetadata());Ys.addUnsafe(this.cleanupSupervisor.fibers,e)}async stopCleanup(){this.acceptingCleanup=!1;let e=this.cleanupFiber;if(this.cleanupFiber=null,e)await te.runPromise(Qr.interrupt(e));let t=this.cleanupSupervisor;if(t)await te.runPromise(Ys.awaitEmpty(t.fibers));while(this.inFlightCleanups.size>0)await Promise.allSettled(this.inFlightCleanups);if(t)await te.runPromise(vt.close(t.scope,bt.void)),this.cleanupSupervisor=null}requestTransition(e,t){let n=this.transitionQueue.at(-1)??this.activeTransition;if(n?.kind===e)return n.promise;let r=()=>{return},i=()=>{return},o=new Promise((c,l)=>{r=c,i=l}),s={kind:e,intervalMs:t,promise:o,resolve:r,reject:i};return this.transitionQueue.push(s),this.runNextTransition(),o}runNextTransition(){if(this.activeTransition)return;let e=this.transitionQueue.shift();if(!e)return;this.activeTransition=e,(e.kind==="start"?this.startCleanup(e.intervalMs):this.stopCleanup()).then(()=>this.completeTransition(e,!0),(n)=>this.completeTransition(e,!1,n))}completeTransition(e,t,n){if(this.activeTransition!==e)return;if(this.activeTransition=null,t)e.resolve();else e.reject(n);queueMicrotask(()=>this.runNextTransition())}createCleanupSupervisor(){let e=te.runSync(vt.make()),t=te.runSync(vt.provide(Ys.make(),e));return{scope:e,fibers:t}}cleanupTerminalBatchMetadata(){return te.tryPromise({try:()=>{let e=this.cleanup(g8);return this.inFlightCleanups.add(e),e.then(()=>this.inFlightCleanups.delete(e),()=>this.inFlightCleanups.delete(e)),e},catch:(e)=>e}).pipe(te.asVoid,te.catch((e)=>te.sync(()=>{this.logger.warn("Failed to clean up terminal batch metadata",{error:e})})))}validateOperations(e){for(let t of e){let n=this.jobQueue.getValidator(t.type);if(!n)throw Error(`No job type declared: ${t.type}`);if(n.validateAndParse(t.data)===null)throw Error(`Invalid job data for type: ${t.type}`)}}async enqueueBatch(e,t,n,r){if(e.length===0)throw Error("Cannot enqueue empty batch");this.validateOperations(e);let i=[];this.batches.set(n,{jobIds:i,operations:e,source:t.source,startedAt:new Date().toISOString(),metadata:{...t.metadata,rootJobId:n}});try{for(let o of e){let s={...t,rootJobId:n,metadata:{...t.metadata,operationTarget:o.type}},c=await this.jobQueue.enqueue({type:o.type,data:o.data,options:s});i.push(c)}return this.logger.debug("Enqueued batch operations",{batchId:n,operationCount:e.length,jobIds:i,rootJobId:n}),this.scheduleTerminalBatchCleanup(),n}catch(o){throw this.batches.delete(n),this.logger.error("Failed to enqueue batch operations",{error:o,operationCount:e.length,enqueuedJobs:i.length}),o}}async getBatchStatus(e){let t=this.batches.get(e);if(!t)return null;try{let n=await Promise.all(t.jobIds.map((u)=>this.jobQueue.getStatus(u))),r=0,i=0,o=0,s=[];for(let[u,p]of n.entries()){if(!p){i++;let m=t.operations[u],g=t.jobIds[u]??"unknown";s.push(`Missing job ${g}${m?` for ${m.type}`:""}`);continue}switch(p.status){case"completed":r++;break;case"failed":if(i++,p.lastError)s.push(p.lastError);break;case"processing":case"pending":o++;break}}o+=t.operations.length-t.jobIds.length;let c;if(o>0)c=ve.PROCESSING;else if(i>0)c=ve.FAILED;else c=ve.COMPLETED;if(t.terminalAt===void 0&&(c===ve.COMPLETED||c===ve.FAILED))t.terminalAt=Date.now();let l;for(let u=0;u<t.jobIds.length;u++){let p=n[u];if(p&&p.status!=="completed"&&p.status!=="failed"){let m=t.operations[u];if(m)l=`Processing ${m.type}`;break}}return{batchId:e,totalOperations:t.operations.length,completedOperations:r,failedOperations:i,errors:s,status:c,currentOperation:l,metadata:t.metadata}}catch(n){throw this.logger.error("Failed to get batch status",{batchId:e,error:n}),n}}inspectRetention(e){let t=this.batches.get(e);return t?{terminalAt:t.terminalAt}:void 0}async cleanup(e){let t=Date.now()-e,n=0;for(let[r,i]of this.batches.entries()){if(i.terminalAt!==void 0){if(i.terminalAt<=t)this.batches.delete(r),n++;continue}if(new Date(i.startedAt).getTime()<=t){let s=await this.getBatchStatus(r);if(s&&(s.status===ve.COMPLETED||s.status===ve.FAILED))this.batches.delete(r),n++}}return this.logger.debug("Cleaned up batch metadata",{cleaned:n}),n}registerBatch(e,t,n,r,i){this.batches.set(e,{jobIds:t,operations:n,source:r,startedAt:new Date().toISOString(),metadata:i}),this.logger.debug("Registered batch metadata",{batchId:e,operationCount:n.length,jobIds:t})}async getActiveBatches(){let e=[];try{for(let[t,n]of this.batches){let r=await this.getBatchStatus(t);if(r&&(r.status==="pending"||r.status==="processing"))e.push({batchId:t,status:r,metadata:{operations:n.operations,source:n.source,startedAt:n.startedAt,metadata:n.metadata}})}return this.logger.debug("Retrieved active batches",{count:e.length}),e}catch(t){throw this.logger.error("Failed to get active batches",{error:t}),t}}}var h8=a.preprocess((e)=>{if(typeof e!=="string")return e;return JSON.parse(e)},a.record(a.string(),a.unknown()));class ST{jobQueueService;messageBus;batchJobManager;logger;mode;pollTimer;pollCursor={updatedAt:0,jobId:""};activePoll;stopPromise;stopped=!1;static createFresh(e,t,n,r,i="combined"){return new ST(e,t,n,r,i)}constructor(e,t,n,r,i){this.jobQueueService=e,this.messageBus=t,this.batchJobManager=n,this.logger=r,this.mode=i}start(){if(this.stopped)throw Error("Cannot start a stopped job progress monitor");if(this.mode==="durable-reader"&&!this.pollTimer){this.pollCursor={updatedAt:Date.now(),jobId:""},this.pollTimer=setInterval(()=>{this.pollDurableUpdates()},250),this.pollTimer.unref(),this.logger.debug("Job progress monitor ready (durable polling mode)");return}this.logger.debug("Job progress monitor ready (event-driven mode)")}stop(){return this.stopPromise??=this.stopMonitor(),this.stopPromise}async stopMonitor(){if(this.stopped=!0,this.pollTimer)clearInterval(this.pollTimer);this.pollTimer=void 0,await this.activePoll,this.logger.debug("Job progress monitor stopped")}pollDurableUpdates(){if(this.stopped)return Promise.resolve();if(this.activePoll)return this.activePoll;let e=Promise.resolve().then(()=>this.pollPage());this.activePoll=e;let t=()=>{this.activePoll=void 0};return e.then(t,t),e}async pollPage(){try{let e=await this.jobQueueService.getRuntimeUpdates(this.pollCursor,100);for(let t of e)if(this.pollCursor=t.cursor,t.job.status==="processing"&&t.job.progress)await this.publishJobProgress(t.job,t.job.progress);else if(t.job.status==="completed"||t.job.status==="failed")await this.handleJobStatusChange(t.job.id,t.job.status,t.job.metadata)}catch(e){this.logger.error("Failed to poll durable job progress",{error:e})}}createProgressReporter(e,t){let n=lo.from(async(r)=>{await this.emitJobProgress(e,r,t)});if(!n)throw Error("Failed to create ProgressReporter");return n}async emitBatchProgress(e,t,n){try{let r={totalOperations:t.totalOperations,completedOperations:t.completedOperations,failedOperations:t.failedOperations,currentOperation:t.currentOperation??"Processing batch...",errors:t.errors},i={id:e,type:"batch",status:t.status,metadata:n,batchDetails:r};if(t.totalOperations>0)i.progress={current:t.completedOperations,total:t.totalOperations,percentage:Math.round(t.completedOperations/t.totalOperations*100)};await this.messageBus.send({type:xp.progress,payload:i,sender:"job-progress-monitor",broadcast:!0}),this.logger.debug("Emitted batch progress update",{batchId:e,status:t.status,progress:`${t.completedOperations}/${t.totalOperations}`})}catch(r){this.logger.error("Error emitting batch progress update",{batchId:e,error:r})}}isBatchChild(e,t){return!!t&&t!==e}get publishesEvents(){return this.mode!=="durable-writer"}async broadcastEvent(e){await this.messageBus.send({type:xp.progress,payload:e,sender:"job-progress-monitor",broadcast:!0})}async emitJobProgress(e,t,n){try{if(n&&!await this.jobQueueService.recordAttemptProgress(e,n,t)){this.logger.debug("Discarding progress from obsolete job attempt",{jobId:e,attemptId:n});return}if(!this.publishesEvents)return;let r=await this.jobQueueService.getStatus(e);if(!r){this.logger.warn("Job not found for progress update",{jobId:e});return}await this.publishJobProgress(r,t)}catch(r){this.logger.error("Error emitting job progress",{jobId:e,error:r})}}async publishJobProgress(e,t){if(e.metadata.silent)return;if(this.isBatchChild(e.id,e.metadata.rootJobId))return;let n=t.total??0,r={id:e.id,type:"job",status:"processing",metadata:e.metadata,message:t.message};if(n>0)r.progress={current:t.progress,total:n,percentage:Math.round(t.progress/n*100)};await this.broadcastEvent(r)}async emitJobCompletion(e){await this.emitJobStatusEvent(e,"completed")}async emitJobFailure(e){await this.emitJobStatusEvent(e,"failed")}async emitJobStatusEvent(e,t){if(!this.publishesEvents)return;try{let n=await this.jobQueueService.getStatus(e);if(!n){this.logger.warn(`Cannot emit ${t} for unknown job`,{jobId:e});return}if(n.metadata.silent)return;if(this.isBatchChild(e,n.metadata.rootJobId)){this.logger.debug(`Skipping individual job ${t} for batch operation`,{jobId:e,rootJobId:n.metadata.rootJobId});return}let r={id:e,type:"job",status:t,message:this.extractStatusMessage(n,t),metadata:n.metadata,jobDetails:{jobType:n.type,priority:n.priority,retryCount:n.retryCount}};await this.broadcastEvent(r),this.logger.debug(`Emitted job ${t} event`,{jobId:e})}catch(n){this.logger.error(`Error emitting job ${t} event`,{jobId:e,error:n})}}extractStatusMessage(e,t){if(t==="failed")return e.lastError??void 0;if(!e.result)return;try{let n=h8.parse(e.result),r=n.message;if(r)return String(r);let i=n.routesBuilt;if(i!==void 0)return`${i} routes built`}catch{}return}getStats(){return{isRunning:!this.stopped&&(this.mode!=="durable-reader"||this.pollTimer!==void 0)}}async handleJobStatusChange(e,t,n){if(!this.publishesEvents)return;let r=n?xa.safeParse(n):void 0,i=r?.success?r.data:void 0;if(i?.silent)return;try{if(await this.emitJobStatusEvent(e,t),i&&this.isBatchChild(e,i.rootJobId))try{let o=i.rootJobId,s=await this.batchJobManager.getBatchStatus(o);if(s){let c=s.metadata??i;await this.emitBatchProgress(o,s,c)}}catch(o){this.logger.warn("Failed to emit batch progress",{jobId:e,rootJobId:i.rootJobId,error:o})}}catch(o){this.logger.error("Failed to handle job status change",{jobId:e,status:t,error:o})}}}var y8=a.record(a.string(),a.unknown());class vp{logger;schema;jobTypeName;executionTimeoutMs;constructor(e,t){this.logger=e,this.schema=t.schema,this.jobTypeName=t.jobTypeName,this.executionTimeoutMs=t.executionTimeoutMs}validateAndParse(e){if(!this.schema)throw Error(`${this.jobTypeName}: No schema provided. Override validateAndParse() or provide a schema.`);let t=this.schema.safeParse(e);if(!t.success)return this.logger.warn(`Invalid ${this.jobTypeName} job data`,{data:e,validationError:t.error.issues}),null;return this.logger.debug(`${this.jobTypeName} job data validation successful`,{data:this.summarizeDataForLog(t.data)}),t.data}async onError(e,t,n,r,i){this.logger.error(`${this.jobTypeName} job error handler triggered`,{jobId:n,errorMessage:e.message,errorStack:e.stack,data:this.summarizeDataForLog(t)})}async reportProgress(e,t){await e.report({progress:t.progress,total:t.total??100,message:t.message})}summarizeDataForLog(e){let t=y8.safeParse(e);return t.success?t.data:{}}}function wp(e,t,n){return async(r)=>{let{type:i,data:o,toolContext:s=null,options:c,projection:l}=r,u=s?KN(s):void 0,{metadata:p,...m}=c??{},g={operationType:"data_processing",pluginId:t,...p,...s&&{interfaceType:s.interfaceType,conversationId:s.conversationId,channelId:s.channelId,requestedByActor:s.actor,...u?{requestedByUserId:u}:{},requestedByInterface:s.interfaceType,...s.progressToken!==void 0&&{progressToken:s.progressToken}}};if(s&&!u)delete g.requestedByUserId;let f={...m,source:t,...c?.rootJobId&&{rootJobId:c.rootJobId},...l&&{projection:l},metadata:g},v=n&&!i.includes(":")?`${t}:${i}`:i;return e.enqueue({type:v,data:o,options:f})}}function xT(e,t){return async(n,r)=>{let i=r?.rootJobId??it(),o=n.map((c)=>({...c,type:c.type.includes(":")?c.type:`${t}:${c.type}`})),s={...r,source:t,rootJobId:i,metadata:{...r?.metadata,operationType:"batch_processing",pluginId:t}};return await e.enqueueBatch(o,s,i,t),i}}function vT(e,t){return(n,r)=>{let i=n.includes(":")?n:`${t}:${n}`;e.registerHandler(i,r,t)}}var b8=a.custom((e)=>typeof e==="object"&&e!==null&&("safeParse"in e)),S8=a.object({name:a.string(),schema:b8});function YN(e){return S8.safeParse(e).success}function x8(e){if(!e)return;return{status:e.status,message:e.message,lastCheck:e.lastCheck?.toISOString(),details:e.details}}function XN(e){return{model:e.model,version:e.version,uptime:e.uptime,entities:e.entities,entityCounts:e.entityCounts,embeddings:e.embeddings,ai:e.ai,daemons:e.daemons.map((t)=>({name:t.name,pluginId:t.pluginId,status:t.status,health:x8(t.health)})),endpoints:e.endpoints,interactions:e.interactions}}var eB={digest:"conversation:digest"};var v8="/api/chat",Hn="web-chat-guest",Cg=a.strictObject({idleSeconds:a.number().int().positive().max(Math.floor(Number.MAX_SAFE_INTEGER/1000)),maxAgeSeconds:a.number().int().positive().max(Math.floor(Number.MAX_SAFE_INTEGER/1000))}).refine((e)=>e.idleSeconds<=e.maxAgeSeconds,"Guest idle expiry must not exceed maximum age"),Eg=a.strictObject({visitorId:a.string().uuid(),retention:Cg}),Ce=a.string().trim().min(1).max(256),Aze="x-brain-conversation-id",Oze=a.strictObject({expiresAt:a.number().int().positive(),provider:a.string().min(1),notice:a.string().min(1),deletionLimitations:a.string().min(1),retention:Cg,messageCharacters:a.number().int().positive(),canSend:a.boolean(),presentation:rB.optional()}),w8=a.strictObject({conversationId:Ce,state:a.enum(["active","completed","failed","interrupted","uncertain"])}),sB=a.string().regex(/^upload-[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i),ET=a.string().trim().min(1).max(48),IT=a.string().datetime(),tB=a.string().regex(/^\/(?!\/)/).max(2048),al=a.string().regex(/^(?:\/(?!\/)|https?:\/\/)/).max(2048),T8=a.looseObject({kind:a.literal("tool-approval"),id:Ce,toolCallId:Ce.optional(),toolName:a.string().trim().min(1).max(256),input:a.record(a.string(),a.unknown()).optional(),summary:a.string().max(4096),completionSummary:a.string().max(4096).optional(),preview:a.string().max(1e5).optional(),state:a.enum(["approval-requested","approval-responded","output-available","output-denied","output-error"]),output:a.unknown().optional(),error:a.string().max(4096).optional()}),C8=a.looseObject({entityType:a.string().trim().min(1).max(128).optional(),entityId:Ce.optional(),attachmentType:a.string().trim().min(1).max(128).optional()}),E8=a.looseObject({mediaType:a.string().trim().min(1).max(255),url:al,downloadUrl:al.optional(),previewUrl:al.optional(),filename:a.string().trim().min(1).max(255).optional(),sizeBytes:a.number().int().nonnegative().optional(),source:C8.optional()}),aB=a.looseObject({kind:a.literal("attachment"),id:Ce,jobId:Ce.optional(),title:a.string().max(4096),description:a.string().max(20000).optional(),attachment:E8}),I8=a.looseObject({id:Ce,title:a.string().max(4096).optional(),source:a.string().trim().min(1).max(512),url:al.optional(),entityType:a.string().trim().min(1).max(128).optional(),entityId:Ce.optional(),excerpt:a.string().max(20000).optional(),provenance:a.record(a.string(),a.unknown()).optional(),brain:iB.optional()}),RT=a.looseObject({kind:a.literal("sources"),id:Ce,title:a.string().max(4096).optional(),sources:a.array(I8).min(1).max(100)}),R8=a.discriminatedUnion("type",[a.object({type:a.literal("prompt"),id:Ce,label:a.string().trim().min(1).max(256),prompt:a.string().min(1).max(1e5),description:a.string().max(4096).optional()}),a.object({type:a.literal("event"),id:Ce,label:a.string().trim().min(1).max(256),event:a.string().trim().min(1).max(256),fromState:a.string().trim().min(1).max(256).optional(),description:a.string().max(4096).optional()})]),cB=a.looseObject({kind:a.literal("actions"),id:Ce,title:a.string().max(4096).optional(),actions:a.array(R8).min(1).max(100)}),lB=a.discriminatedUnion("kind",[T8,aB,RT,cB]);function nB(e){if(!e||e.length>512)return;let t;try{t=new URL(e)}catch{return}return t.protocol==="https:"&&!t.username&&!t.password&&t.href.length<=512?t.href:void 0}function Dze(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e.slice(0,10)){let i=RT.safeParse(r);if(!i.success||i.data.id!=="sources:tool-results")continue;for(let o of i.data.sources){if(t.length>=15)break;if(!o.entityType||!o.entityId||o.entityId.length>256||o.source!==o.entityType||o.id!==`${o.entityType}:${o.entityId}`||n.has(o.id))continue;n.add(o.id);let s=nB(o.url),c=nB(o.brain?.url);t.push({id:o.id,source:o.entityType,entityType:o.entityType,entityId:o.entityId,title:(o.title??o.entityId).slice(0,160),...o.excerpt?{excerpt:o.excerpt.slice(0,280)}:{},...s?{url:s}:{},...o.brain?{brain:{name:o.brain.name.slice(0,120),...c?{url:c}:{}}}:{}})}}return t.length?[{kind:"sources",id:"sources:tool-results",title:"Retrieved sources",sources:t}]:[]}var k8=a.object({id:Ce,toolCallId:Ce.optional(),toolName:a.string().trim().min(1).max(256),summary:a.string().max(4096),completionSummary:a.string().max(4096).optional(),preview:a.string().max(1e5).optional(),args:a.unknown()}),uB=a.object({toolName:a.string().trim().min(1).max(256),args:a.record(a.string(),a.unknown()).optional(),jobId:Ce.optional(),data:a.unknown().optional(),error:a.object({message:a.string().max(4096),code:a.string().trim().min(1).max(256).optional()}).optional()}),zze=a.looseObject({text:a.string().max(1e6),toolResults:a.array(uB).max(100).optional(),cards:a.array(lB).max(100).optional(),pendingConfirmations:a.array(k8).max(100).optional(),usage:a.object({promptTokens:a.number().int().nonnegative(),completionTokens:a.number().int().nonnegative(),totalTokens:a.number().int().nonnegative()})});function Mze(e=v8){let t=P8(e);return{stream:t,actions:`${t}/actions`,sessions:`${t}/sessions`,sessionArchive:`${t}/sessions/archive`,messages:`${t}/messages`,uploads:`${t}/uploads`,contextSessions:`${t}/context-sessions`,documentAttachments:`${t}/attachments/document`,imageAttachments:`${t}/attachments/image`,jobStatus:`${t}/jobs/status`}}function P8(e){let t=e.trim();if(!t.startsWith("/")||t.startsWith("//")||t.length>512||/[\s"'<>\\]/u.test(t)||t.includes("?")||t.includes("#"))throw Error("Chat API path must be a same-origin absolute path without query or fragment");let n=t.replace(/\/+$/,"");if(n.length===0)throw Error("Chat API path must not be the site root");return n}var A8=a.strictObject({version:a.literal(1),sourceId:a.string().trim().regex(/^[a-z][a-z0-9-]*$/).max(64),itemId:a.string().trim().min(1).max(300),titleSeed:a.string().trim().min(1).max(160).refine((e)=>!/[\p{Cc}\p{Cf}]/u.test(e))}),jze=a.object({query:a.string().trim().max(200).default(""),archived:a.boolean().default(!1),offset:a.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).default(0),limit:a.number().int().min(1).max(100).default(25)}),O8=a.looseObject({id:Ce,title:ET,lastActiveAt:IT,archived:a.boolean().optional(),contextHandoff:A8.optional()}),Nze=a.looseObject({sessions:a.array(O8).max(100)}),D8=a.looseObject({kind:a.string().trim().min(1).max(64),id:Ce}),z8=a.looseObject({kind:a.literal("text"),filename:a.string().trim().min(1).max(255),mediaType:a.string().trim().min(1).max(255),sizeBytes:a.number().int().nonnegative(),createdAt:IT,source:D8.optional()}),pB=a.looseObject({id:Ce,role:a.enum(["user","assistant"]),content:a.string().max(1e6),attachments:a.array(z8).max(100).optional(),cards:a.array(lB).max(100).optional(),askedBefore:CT.optional()}),Bze=a.looseObject({messages:a.array(pB).max(100)}),_ze=a.string().min(1).max(256).refine((e)=>e.trim().length>0),Fze=a.strictObject({messages:a.array(pB).max(100),submission:w8.nullable()}),Lze=a.object({type:a.literal("text"),text:a.string().max(1e6)}),qze=a.object({type:a.literal("file"),mediaType:a.string().trim().min(1).max(255).optional(),filename:a.string().trim().min(1).max(255).optional(),url:a.string().min(1).max(2000000)}),dB=a.object({kind:a.literal("upload"),id:sB}),Zze=a.object({type:a.literal("data-upload"),data:a.looseObject({ref:dB})}),M8=a.object({id:Ce,approved:a.boolean(),toolCallId:Ce.optional(),toolName:a.string().trim().min(1).max(256).optional(),input:a.record(a.string(),a.unknown()).optional(),title:a.string().max(4096).optional()}),$ze=a.looseObject({state:a.literal("approval-responded"),toolCallId:Ce.optional(),toolName:a.string().trim().min(1).max(256).optional(),input:a.record(a.string(),a.unknown()).optional(),title:a.string().max(4096).optional(),approval:M8}),j8=a.object({id:Ce.optional(),role:a.enum(["user","assistant","system"]),parts:a.array(a.unknown()).max(1000).optional(),content:a.string().max(1e6).optional()}),Uze=a.object({id:Ce.optional(),messages:a.array(j8).min(1).max(200),trigger:a.string().trim().min(1).max(64).optional()}).strict(),Wze=a.strictObject({id:Ce.optional(),messages:a.array(a.strictObject({id:Ce,role:a.literal("user"),parts:a.array(a.strictObject({type:a.literal("text"),text:a.string()})).min(1).max(16)})).length(1)}),mB=a.enum(["pending","processing","completed","failed"]),N8=a.looseObject({type:a.enum(["job","batch"]),status:mB,operationType:a.enum(["file_operations","content_operations","data_processing","batch_processing"]),operationTarget:a.string().max(1024).optional(),message:a.string().max(4096).optional(),progress:a.object({current:a.number().nonnegative(),total:a.number().nonnegative(),percentage:a.number().min(0).max(100)}).optional()}),B8=a.looseObject({status:a.enum(["tool-running","tool-completed","tool-awaiting-approval","tool-failed"]),toolName:a.string().trim().min(1).max(256),error:a.string().max(4096).optional()}),Jze=a.discriminatedUnion("type",[a.looseObject({type:a.literal("start"),messageId:Ce.optional()}),a.looseObject({type:a.literal("start-step")}),a.looseObject({type:a.literal("finish-step")}),a.looseObject({type:a.literal("finish"),finishReason:a.enum(["length","error","stop","content-filter","tool-calls","other"]).optional()}),a.looseObject({type:a.literal("abort"),reason:a.string().max(4096).optional()}),a.looseObject({type:a.literal("error"),errorText:a.string().max(20000)}),a.looseObject({type:a.literal("text-start"),id:Ce}),a.looseObject({type:a.literal("text-delta"),id:Ce,delta:a.string().max(1e6)}),a.looseObject({type:a.literal("text-end"),id:Ce}),a.looseObject({type:a.literal("reasoning-start"),id:Ce}),a.looseObject({type:a.literal("reasoning-delta"),id:Ce,delta:a.string().max(1e6)}),a.looseObject({type:a.literal("reasoning-end"),id:Ce}),a.looseObject({type:a.literal("tool-input-start"),toolCallId:Ce,toolName:a.string().trim().min(1).max(256),title:a.string().max(4096).optional()}),a.looseObject({type:a.literal("tool-input-delta"),toolCallId:Ce,inputTextDelta:a.string().max(1e6)}),a.looseObject({type:a.literal("tool-input-available"),toolCallId:Ce,toolName:a.string().trim().min(1).max(256),input:a.unknown(),title:a.string().max(4096).optional()}),a.looseObject({type:a.literal("tool-input-error"),toolCallId:Ce,toolName:a.string().trim().min(1).max(256),input:a.unknown(),errorText:a.string().max(20000),title:a.string().max(4096).optional()}),a.looseObject({type:a.literal("tool-approval-request"),approvalId:Ce,toolCallId:Ce}),a.looseObject({type:a.literal("tool-output-available"),toolCallId:Ce,output:a.unknown(),preliminary:a.boolean().optional()}),a.looseObject({type:a.literal("tool-output-error"),toolCallId:Ce,errorText:a.string().max(20000)}),a.looseObject({type:a.literal("tool-output-denied"),toolCallId:Ce}),a.looseObject({type:a.literal("source-url"),sourceId:Ce,url:al,title:a.string().max(4096).optional()}),a.looseObject({type:a.literal("source-document"),sourceId:Ce,mediaType:a.string().trim().min(1).max(255),title:a.string().max(4096),filename:a.string().trim().min(1).max(255).optional()}),a.looseObject({type:a.literal("file"),url:al,mediaType:a.string().trim().min(1).max(255)}),a.looseObject({type:a.literal("data-progress"),id:Ce.optional(),data:N8,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-status"),id:Ce.optional(),data:B8,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-tool-result"),id:Ce.optional(),data:uB,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-actions"),id:Ce.optional(),data:cB,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-sources"),id:Ce.optional(),data:RT,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-asked-before"),id:Ce.optional(),data:CT,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-attachment"),id:Ce.optional(),data:aB,transient:a.boolean().optional()})]),Hze=a.strictObject({conversationId:Ce}),Gze=a.object({title:ET}).strict(),Vze=a.object({renamed:a.boolean(),title:ET}),Qze=a.object({archived:a.boolean()}),Kze=a.object({deleted:a.boolean()}),Yze=a.object({conversationId:Ce,action:oB}).strict(),Xze=a.looseObject({id:Ce,status:mB,message:a.string().max(4096).optional()}),e0e=a.looseObject({id:sB,ref:dB,filename:a.string().trim().min(1).max(255),mediaType:a.string().trim().min(1).max(255),sizeBytes:a.number().int().nonnegative(),createdAt:IT,url:tB,downloadUrl:tB}).refine((e)=>e.id===e.ref.id,{path:["ref","id"],message:"Upload response ids must match"});var le=ot("conversations",{id:V("id").primaryKey(),sessionId:V("session_id").notNull(),interfaceType:V("interface_type").notNull(),channelId:V("channel_id").notNull(),personId:V("person_id"),started:V("started").notNull(),lastActive:V("last_active").notNull(),metadata:V("metadata"),created:V("created").notNull(),updated:V("updated").notNull()},(e)=>({sessionIdx:ut("idx_conversations_session").on(e.sessionId),channelIdx:ut("idx_conversations_channel").on(e.channelId),personIdx:ut("idx_conversations_person").on(e.personId),interfaceSessionIdx:ut("idx_conversations_interface_session").on(e.interfaceType,e.sessionId),interfaceChannelIdx:ut("idx_conversations_interface_channel").on(e.interfaceType,e.channelId)})),$t=ot("messages",{id:V("id").primaryKey(),conversationId:V("conversation_id").notNull().references(()=>le.id,{onDelete:"cascade"}),role:V("role").notNull(),content:V("content").notNull(),timestamp:V("timestamp").notNull(),metadata:V("metadata")},(e)=>({conversationIdx:ut("idx_messages_conversation").on(e.conversationId),timestampIdx:ut("idx_messages_timestamp").on(e.timestamp)})),va=ot("summary_tracking",{conversationId:V("conversation_id").primaryKey().references(()=>le.id,{onDelete:"cascade"}),lastSummarizedAt:V("last_summarized_at"),lastMessageId:V("last_message_id"),messagesSinceSummary:xe("messages_since_summary").default(0),updated:V("updated").notNull()});function fB(e){return Xr({url:e.url,schema:{conversations:le,messages:$t,summaryTracking:va},authToken:e.authToken,authTokenEnv:"CONVERSATION_DATABASE_AUTH_TOKEN"})}var _8=a.preprocess((e)=>{if(typeof e!=="string")return e;try{return JSON.parse(e)}catch{return}},a.record(a.string(),a.unknown())).catch({});function po(e){return _8.parse(e)}var Ig="conversation:messageAdded",Rg="conversation:guestMessageAdded",kT="conversation:started",Tp=a.object({identity:Ai,interfaceType:a.string(),role:tl,displayName:a.string().optional(),username:a.string().optional(),isBot:a.boolean().optional()}),F8=a.preprocess(L8,Tp);function L8(e){if(!Rr(e)||"identity"in e)return e;let{actorId:t,interfaceType:n,role:r}=e;if(typeof t!=="string"||typeof n!=="string"||r!=="user"&&r!=="assistant")return e;let{userId:i,canonicalId:o}=e;return{identity:gB({actorId:t,interfaceType:n,role:r,...typeof i==="string"?{userId:i}:{},...typeof o==="string"?{canonicalId:o}:{}}),interfaceType:n,role:r,...typeof e.displayName==="string"?{displayName:e.displayName}:{},...typeof e.username==="string"?{username:e.username}:{},...typeof e.isBot==="boolean"?{isBot:e.isBot}:{}}}var Cp=a.object({messageId:a.string().optional(),channelId:a.string().optional(),channelName:a.string().optional(),threadId:a.string().optional(),metadata:a.record(a.string(),a.unknown()).optional()}),hB=a.looseObject({actor:F8.optional(),source:Cp.optional()});function yB(e){if(typeof e==="string")try{let t=JSON.parse(e);return Rr(t)?t:null}catch{return null}return Rr(e)?e:null}function q8(e){if(e.role!=="assistant")return!1;if(e.content.trim().length===0)return!1;let t=yB(e.metadata),n=t?.entityMemoryRefs;if(Array.isArray(n)&&n.length>0)return!1;let r=t?.cards;if(!Array.isArray(r))return!0;return!r.some((i)=>{if(!Rr(i))return!1;if(i.kind==="tool-approval")return!0;return i.kind==="actions"&&i.id==="actions:upload-intent"})}var Z8=a.object({id:a.string(),conversationId:a.string(),role:a.string(),content:a.string(),timestamp:a.string(),metadata:a.string().nullable()}),bB=a.object({conversationId:a.string(),messageCount:a.number(),messages:a.array(Z8),windowStart:a.number(),windowEnd:a.number(),windowSize:a.number(),timestamp:a.string()});var ri=b`strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;function PT(){return xB(!1)}function SB(){return xB(!0)}function xB(e){let t=Cg.shape.maxAgeSeconds.maxValue,n=b`(
155
+ 5. Structure your response clearly and concisely`,dataSourceId:"shell:ai-content",requiredPermission:"public",useKnowledgeContext:!0,schema:xg,formatter:new yp};var z4=a.object({type:a.string().describe("Type of source (e.g., note, article)"),title:a.string().describe("Title or identifier of the source"),relevance:a.number().min(0).max(1).describe("Relevance score")}),PN=a.object({answer:a.string().describe("The answer to the user's query"),sources:a.array(z4).optional().describe("Sources used to generate the answer"),confidence:a.enum(["high","medium","low"]).optional().describe("Confidence level of the answer"),suggestions:a.array(a.string()).optional().describe("Related topics or follow-up questions")});function co(e,t){return e.parse(t)}class lo{callback;heartbeatInterval;constructor(e){this.callback=e}static from(e){if(!e)return;return new lo(e)}static noop(){return new lo(async()=>{})}createSub(e){let{scale:t}=e??{};if(t){let{start:n,end:r}=t,i=r-n;return new lo(async(o)=>{let s=n+o.progress/(o.total??100)*i;await this.callback({...o,progress:s,total:100})})}return new lo(this.callback)}async report(e){await this.callback(e)}startHeartbeat(e,t=5000){this.stopHeartbeat(),this.heartbeatInterval=setInterval(()=>{this.report({message:e,progress:0}).catch(()=>{})},t)}stopHeartbeat(){if(this.heartbeatInterval)clearInterval(this.heartbeatInterval),this.heartbeatInterval=void 0}toCallback(){return this.callback}}var j4=a.object({enabled:a.boolean().describe("Whether the plugin is enabled"),debug:a.boolean().describe("Enable debug logging for this plugin")});function N4(e,t){return t.reduce((n,r)=>typeof n==="object"&&n!==null?Reflect.get(n,r):void 0,e)}function B4(e){return e.map((t)=>`${t.path||"<root>"}: ${t.message}`).join("; ")}class ol extends Error{pluginId;issues;constructor(e,t){super(`Invalid plugin config for ${e} at ${B4(t)}; correct the listed fields in brain.yaml or the package's use() configuration`);this.name="PluginConfigValidationError",this.pluginId=e,this.issues=t}static fromZod(e,t,n){return new ol(e,t.issues.map((r)=>({path:r.path.map(String).join("."),code:r.code,message:r.message,missing:r.code==="custom"&&r.params?.missing===!0||(r.code==="invalid_type"||r.code==="custom")&&N4(n,r.path)===void 0})))}}var _4=a.object({toolName:a.string(),args:a.unknown(),progressToken:a.union([a.string(),a.number()]).optional(),hasProgress:a.boolean().optional(),interfaceType:a.string(),actor:Ai,displayName:a.string().optional(),conversationId:a.string().optional(),channelId:a.string().optional(),channelName:a.string().optional(),runId:a.string().optional(),toolCallId:a.string().optional(),userPermissionLevel:a.enum(["admin","trusted","public"]).optional(),isAnchor:a.boolean().optional(),signal:a.custom((e)=>e instanceof AbortSignal).optional()}),F4=a.object({resourceUri:a.string()});class Sa{id;version;description;packageName;config;context;get logger(){return this.context?.logger??kr.createFresh({context:this.id})}constructor(e,t,n,r){this.id=e,this.packageName=t.name,this.version=t.version,this.description=t.description??`${t.name} plugin`;let i=r.safeParse(n);if(!i.success)throw ol.fromZod(e,i.error,n);this.config=i.data}setupMessageHandlers(e){e.messaging.subscribe(bp.toolExecute(this.id),async(t)=>{try{let n=_4.safeParse(t.payload);if(!n.success)return{success:!1,error:"Invalid tool execution request format"};let{toolName:r,args:i,progressToken:o,hasProgress:s,interfaceType:c,actor:l,displayName:u,conversationId:p,channelId:m,channelName:g,runId:f,toolCallId:v,userPermissionLevel:w,isAnchor:k,signal:P}=n.data,j=(await this.getTools()).find((I)=>I.name===r);if(!j)return{success:!1,error:`Tool not found: ${r}`};let Y={interfaceType:c,actor:l,...u&&{displayName:u},...p&&{conversationId:p},...m&&{channelId:m},...g&&{channelName:g},...f&&{runId:f},...v&&{toolCallId:v},...w&&{userPermissionLevel:w},...k!==void 0&&{isAnchor:k},...P&&{signal:P},...s&&o!==void 0&&{progressToken:o,sendProgress:async(I)=>{await e.messaging.send({type:bp.progress(this.id),payload:{progressToken:o,notification:I}})}}};return{success:!0,data:await j.handler(i,Y)}}catch(n){return this.logger.error("Tool execution error",n),{success:!1,error:Be(n)}}}),e.messaging.subscribe(bp.resourceGet(this.id),async(t)=>{try{let n=F4.safeParse(t.payload);if(!n.success)return{success:!1,error:"Invalid resource get request format"};let{resourceUri:r}=n.data,o=(await this.getResources()).find((c)=>c.uri===r);if(!o)return{success:!1,error:`Resource not found: ${r}`};return{success:!0,data:await o.handler()}}catch(n){return this.logger.error("Resource fetch error",n),{success:!1,error:Be(n)}}})}async onRegister(e){}async onRegistrationComplete(e){}async finalizeRegistration(){await this.onRegistrationComplete(this.getContext())}async onReady(e){}async ready(){await this.onReady(this.getContext())}async getCapabilities(){let e=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...e&&{instructions:e}}}async getTools(){return[]}async getResources(){return[]}async getInstructions(){return}async shutdown(){await this.onShutdown()}async onShutdown(){}getContext(){if(!this.context)throw Error(`Plugin ${this.id}: Plugin not registered yet`);return this.context}determineUserPermissionLevel(e){return"public"}createProgressBridge(e){if(!e)return;let t=this.context;if(!t)return;let n=this.id;return lo.from(async(r)=>{await t.messaging.send({type:bp.progress(n),payload:{progressToken:e,notification:{progress:r.progress,total:r.total,message:r.message}}})})}}var ON=["primary","secondary"];var L4=a.custom((e)=>typeof e==="function","Expected a React component"),q4=a.strictObject({show:a.boolean().optional(),label:a.string().min(1).optional(),slot:a.enum(ON).optional(),priority:a.number().optional()}),Z4=a.strictObject({id:a.string().min(1),template:a.string().min(1),content:a.unknown().optional(),dataQuery:a.looseObject({entityType:a.string().optional(),template:a.string().optional(),query:a.record(a.string(),a.unknown()).optional()}).optional(),order:a.number().optional()}),$4=a.strictObject({id:a.string().min(1),path:a.string().startsWith("/"),title:a.string().optional(),pageLabel:a.string().optional(),description:a.string().optional(),sections:a.array(Z4).optional(),layout:a.string().min(1).optional(),fullscreen:a.boolean().optional(),pluginId:a.string().optional(),sourceEntityType:a.string().optional(),external:a.boolean().optional(),navigation:q4.optional()}),nT=a.strictObject({label:a.string().min(1),pluralName:a.string().min(1).optional(),layout:a.string().min(1).optional(),detailTemplate:a.string().min(1).optional(),paginate:a.boolean().optional(),pageSize:a.number().int().positive().optional(),citable:a.boolean().optional(),navigation:a.strictObject({show:a.boolean().optional(),slot:a.enum(ON).optional(),priority:a.number().optional()}).optional()}),U4=a.strictObject({schema:a.custom((e)=>e instanceof a.ZodType,"Expected a Zod schema"),component:a.custom((e)=>typeof e==="function","Expected a React component"),title:a.string().min(1),description:a.string(),requiredPermission:a.enum(["admin","trusted","public"]).optional(),fullscreen:a.boolean().optional()}),AN=a.strictObject({namespace:a.string().min(1),sections:a.record(a.string(),U4)}),W4=a.record(a.string(),a.json()),J4=a.record(a.string(),a.record(a.string(),W4)),DN={layouts:a.record(a.string(),L4).refine((e)=>typeof e.default==="function",{message:'Site layouts must include a "default" component'}),routes:a.array($4),content:J4.optional(),sections:a.union([AN,a.array(AN)]).optional(),themeOverride:a.string().optional(),headScripts:a.array(a.string()).optional(),entityDisplay:a.record(a.string(),nT),staticAssets:a.record(a.string(),a.string()).optional()},_Ae=a.strictObject(DN).partial();var zN=a.strictObject(DN).superRefine((e,t)=>{let n=new Set;for(let[o,s]of e.routes.entries()){if(n.has(s.id))t.addIssue({code:"custom",path:["routes",o,"id"],message:`Duplicate route id "${s.id}"`});n.add(s.id);let c=s.layout??"default";if(!e.layouts[c])t.addIssue({code:"custom",path:["routes",o,"layout"],message:`Unknown layout "${c}"`})}let r=Array.isArray(e.sections)?e.sections:e.sections?[e.sections]:[],i=new Map(r.map((o)=>[o.namespace,o]));if(i.size!==r.length)t.addIssue({code:"custom",path:["sections"],message:"Section group namespaces must be unique"});for(let[o,s]of Object.entries(e.content??{})){let c=i.get(o);if(!c){t.addIssue({code:"custom",path:["content",o],message:`Content namespace "${o}" has no section group`});continue}for(let[l,u]of Object.entries(s)){let p=c.sections[l];if(!p){t.addIssue({code:"custom",path:["content",o,l],message:`Content section "${o}.${l}" is not defined`});continue}let m=p.schema.safeParse(u);if(!m.success)t.addIssue({code:"custom",path:["content",o,l],message:`Content does not satisfy the "${o}.${l}" schema: ${a.prettifyError(m.error)}`})}}});var MN=a.object({id:a.string(),template:a.string(),content:a.unknown().optional(),dataQuery:a.looseObject({entityType:a.string().optional(),template:a.string().optional(),query:a.looseObject({id:a.string().optional(),limit:a.number().optional(),offset:a.number().optional()}).optional()}).optional(),order:a.number().optional()}),rT=["primary","secondary"],jN=a.object({show:a.boolean().default(!1),label:a.string().optional(),slot:a.enum(rT).default("primary"),priority:a.number().min(0).max(100).default(50)}).optional(),iT=a.object({id:a.string(),path:a.string(),title:a.string().default(""),pageLabel:a.string().optional(),description:a.string().default(""),sections:a.array(MN).default([]),layout:a.string().default("default"),fullscreen:a.boolean().optional(),pluginId:a.string().optional(),sourceEntityType:a.string().optional(),external:a.boolean().optional(),navigation:jN}),NN=a.object({routes:a.array(iT),pluginId:a.string()}),BN=a.object({paths:a.array(a.string()).optional(),pluginId:a.string().optional()}),_N=a.object({pluginId:a.string().optional()}),FN=a.object({path:a.string()}),vg=a.object({label:a.string(),href:a.string(),priority:a.number()});var H4="site:metadata:get",G4="site:metadata:updated",oT=a.object({heading:a.string().describe("Main CTA heading text"),buttonText:a.string().describe("Call-to-action button text"),buttonLink:a.string().describe("URL or anchor for the CTA button")}),LN=a.object({blurb:a.string().optional().describe("Short italic subtitle under the section title")}),wg=a.object({represents:a.enum(["brain","anchor"]).default("anchor").describe("Identity represented by the site"),title:a.string().describe("The site's title"),description:a.string().describe("The site's description"),url:a.string().optional().describe("Canonical site URL"),copyright:a.string().optional().describe("Copyright notice text"),logo:a.boolean().optional().describe("Whether to display logo instead of title text in header"),themeMode:a.enum(["light","dark"]).optional().describe("Default theme mode"),analyticsScript:a.string().optional().describe("Analytics script HTML"),cta:oT.optional().describe("Call-to-action configuration"),sections:a.record(a.string(),LN).optional().describe("Optional per-section blurbs, keyed by section id (e.g. 'essays', 'presentations', 'about'). Used by homepage templates that render editorial section headers.")});var V4=a.object({platform:a.enum(["github","instagram","linkedin","email","website"]).describe("Social media platform"),url:a.string().describe("Profile or contact URL"),label:a.string().optional().describe("Optional display label")}),Q4=wg.extend({copyright:a.string(),navigation:a.object({primary:a.array(vg),secondary:a.array(vg)}),socialLinks:a.array(V4).optional().describe("Social media links from profile metadata")});function Sp(e,t){return t?e.nullable().default(null):e}function aT(e){switch(e.type){case"string":return Sp(a.string(),e.optional);case"number":return Sp(a.number(),e.optional);case"enum":return Sp(a.enum(e.options),e.optional);case"object":{let t={};for(let[n,r]of Object.entries(e.fields))t[n]=aT(r);return Sp(a.object(t),e.optional)}case"array":{let t=a.array(K4(e));if(e.minItems!==void 0)t=t.min(e.minItems);if(e.length!==void 0)t=t.length(e.length);return Sp(t,e.optional)}}}function K4(e){let{items:t}=e;switch(t.type){case"string":return a.string();case"number":return a.number();case"enum":return a.enum(t.options);case"object":{let n={};for(let[r,i]of Object.entries(t.fields))n[r]=aT(i);return a.object(n)}}}function sT(e,t){switch(t.type){case"string":case"enum":return{key:e,label:t.label,type:"string"};case"number":return{key:e,label:t.label,type:"number"};case"object":return{key:e,label:t.label,type:"object",children:Object.entries(t.fields).map(([n,r])=>sT(n,r))};case"array":{let n={key:e,label:t.label,type:"array"};switch(t.items.type){case"string":case"enum":return n.itemType="string",n;case"number":return n.itemType="number",n;case"object":return n.itemType="object",n.itemMappings=Object.entries(t.items.fields).map(([r,i])=>sT(r,i)),n}}}}function qN(e,t){let n={};for(let[o,s]of Object.entries(t.fields))n[o]=aT(s);let r=a.object(n),i=new ns(r,{title:t.title,mappings:Object.entries(t.fields).map(([o,s])=>sT(o,s))});return{name:e,description:t.description,schema:r,formatter:i,requiredPermission:t.requiredPermission??"public",layout:{component:t.layout,...t.fullscreen!==void 0?{fullscreen:t.fullscreen}:{}},...t.runtimeScripts?{runtimeScripts:t.runtimeScripts}:{}}}function Y4(e){let t={};for(let[n,r]of Object.entries(e.sections))t[n]=qN(n,r);return t}var X4=wg.omit({url:!0,analyticsScript:!0}),ZN=X4.extend({title:a.string().optional().describe("Optional site title override"),description:a.string().optional().describe("Optional site description override")});function $N(e){return ZN.parse(el(e).frontmatter)}async function e8(e){let n=(await e.listEntities({entityType:"site-info",options:{limit:1}}))[0];if(!n)throw Error("Site info not found \u2014 create a site-info entity");return $N(n.content)}function cT(e,t={}){let n=UN(e),r=UN(t.sharedDomain??"rizom.ai").replace(/^\./,""),i=`.${r}`;if(n.endsWith(i)){let o=n.slice(0,-i.length);if(o.length>0&&!o.includes("."))return`${o}-preview.${r}`}return`preview.${n}`}function UN(e){return e.trim().replace(/^https?:\/\//i,"").replace(/\/$/,"").toLowerCase()}class WN{entityDisplay;constructor(e){this.entityDisplay=e}hasRoute(e){return this.entityDisplay?.[e]!==void 0}isCitable(e){if(this.entityDisplay?.[e]?.citable===!1)return!1;if(!Object.values(this.entityDisplay??{}).some((n)=>n.citable===!0))return this.hasRoute(e);return this.entityDisplay?.[e]?.citable===!0}generateUrl(e,t){let n=this.entityDisplay?.[e];if(n)return`/${n.pluralName??n.label.toLowerCase()+"s"}/${t}`;return`/${$S(e)}/${t}`}}var t8=a.string(),n8=a.custom((e)=>{if(!Rr(e))return!1;let{plugin:t,...n}=e;if(t!==void 0&&typeof t!=="function")return!1;return zN.safeParse(n).success});var lT=a.enum(["file_operations","content_operations","data_processing","batch_processing"]),r8=a.looseObject({pluginId:a.string().optional(),progressToken:a.union([a.string(),a.number()]).optional(),operationType:lT,operationTarget:a.string().optional(),interfaceType:a.string().optional(),conversationId:a.string().optional(),channelId:a.string().optional(),requestedByActor:Ai.optional(),requestedByUserId:a.string().optional(),requestedByInterface:a.string().optional(),silent:a.boolean().optional(),provenance:Di.optional()}),xa=a.looseObject({pluginId:a.string().optional(),progressToken:a.union([a.string(),a.number()]).optional(),operationType:lT,operationTarget:a.string().optional(),interfaceType:a.string().optional(),conversationId:a.string().optional(),channelId:a.string().optional(),requestedByActor:Ai.optional(),requestedByUserId:a.string().optional(),requestedByInterface:a.string().optional(),silent:a.boolean().optional(),provenance:Di.optional(),rootJobId:a.string()}),COe=a.enum(["none","skip","replace","coalesce"]);var i8=a.object({id:a.string(),type:a.string(),data:a.string(),status:a.enum(["pending","processing","completed","failed"]),source:a.string().nullable(),priority:a.number(),retryCount:a.number(),maxRetries:a.number(),lastError:a.string().nullable(),createdAt:a.number(),scheduledFor:a.number(),startedAt:a.number().nullable(),completedAt:a.number().nullable(),attemptId:a.string().nullable(),workerSlotId:a.string().nullable(),workerSessionId:a.string().nullable(),leaseExpiresAt:a.number().nullable(),attemptHeartbeatAt:a.number().nullable(),runtimeUpdatedAt:a.number().nullable(),metadata:xa,progress:a.custom((e)=>typeof e==="object"&&e!==null&&("progress"in e)&&typeof e.progress==="number").nullable(),result:a.unknown().nullable().optional()}),uo=15000;var uT=a.enum(["pending","processing","completed","failed"]),JN=a.enum(["completed","failed"]),ve={PENDING:"pending",PROCESSING:"processing",COMPLETED:"completed",FAILED:"failed"},o8=a.object({id:a.string(),type:a.string(),status:uT,data:a.unknown(),result:a.unknown().optional(),lastError:a.string().optional().nullable(),attempts:a.number(),maxRetries:a.number(),priority:a.number(),createdAt:a.date(),updatedAt:a.date(),processedAt:a.date().optional().nullable(),completedAt:a.date().optional().nullable(),failedAt:a.date().optional().nullable()}),s8=a.object({jobId:a.string(),type:a.string(),status:JN,result:a.unknown().optional(),error:a.string().optional()}),pT=a.object({success:a.literal(!1),error:a.string().optional()}),Tg=a.object({id:a.string(),type:a.enum(["job","batch"]),status:uT,message:a.string().optional(),progress:a.object({current:a.number(),total:a.number(),percentage:a.number()}).optional(),aggregationKey:a.string().optional(),batchDetails:a.object({totalOperations:a.number(),completedOperations:a.number(),failedOperations:a.number(),currentOperation:a.string().optional(),errors:a.array(a.string()).optional()}).optional(),jobDetails:a.object({jobType:a.string(),priority:a.number(),retryCount:a.number()}).optional(),metadata:xa});var q=ot("job_queue",{id:V("id").primaryKey().$defaultFn(()=>it()),type:V("type").notNull(),data:V("data").notNull(),result:V("result",{mode:"json"}),progress:V("progress",{mode:"json"}).$type(),source:V("source"),metadata:V("metadata",{mode:"json"}).$type().notNull(),status:V("status",{enum:["pending","processing","completed","failed"]}).notNull().default("pending"),priority:xe("priority").notNull().default(0),retryCount:xe("retryCount").notNull().default(0),maxRetries:xe("maxRetries").notNull().default(3),lastError:V("lastError"),createdAt:xe("createdAt").notNull().$defaultFn(()=>Date.now()),scheduledFor:xe("scheduledFor").notNull().$defaultFn(()=>Date.now()),startedAt:xe("startedAt"),completedAt:xe("completedAt"),attemptId:V("attemptId"),workerSlotId:V("workerSlotId"),workerSessionId:V("workerSessionId"),leaseExpiresAt:xe("leaseExpiresAt"),attemptHeartbeatAt:xe("attemptHeartbeatAt"),runtimeUpdatedAt:xe("runtimeUpdatedAt")},(e)=>({queueReadyIdx:ut("idx_job_queue_ready").on(e.status,e.priority,e.scheduledFor),jobTypeIdx:ut("idx_job_queue_type").on(e.type,e.status),runtimeUpdatesIdx:ut("idx_job_queue_runtime_updates").on(e.runtimeUpdatedAt,e.id),jobSourceIdx:ut("idx_job_queue_source").on(e.source)})),ft=ot("job_worker_sessions",{slotId:V("slotId").primaryKey(),sessionId:V("sessionId").notNull().unique(),startedAt:xe("startedAt").notNull(),heartbeatAt:xe("heartbeatAt").notNull(),expiresAt:xe("expiresAt").notNull().default(0)},(e)=>({heartbeatIdx:ut("idx_job_worker_sessions_heartbeat").on(e.heartbeatAt),expiresIdx:ut("idx_job_worker_sessions_expires").on(e.expiresAt)}));function HN(e){return Xr({url:e.url,schema:{jobQueue:q,jobWorkerSessions:ft},authToken:e.authToken,authTokenEnv:"JOB_QUEUE_DATABASE_AUTH_TOKEN",contentionRetryBudgetMs:0})}class dT{declarations=new Map;handlers=new Map;validators=new Map;logger;mode;finalizedRegistrations;constructor(e,t){this.logger=e.child("HandlerRegistry"),this.mode=t}registerHandler(e,t,n){if(this.finalizedRegistrations)throw Error("Job handler registrations are finalized");if(this.declarations.has(e))throw Error(`Job handler is already registered for type: ${e}`);if(this.declarations.set(e,{handler:t,pluginId:n}),this.validators.set(e,t),this.mode!=="validation-only")this.handlers.set(e,t);this.logger.debug("Registered job execution declaration",{type:e,pluginId:n,mode:this.mode})}unregisterHandler(e){this.declarations.delete(e),this.handlers.delete(e),this.validators.delete(e),this.logger.debug("Unregistered job handler",{type:e})}unregisterPluginHandlers(e){let t=[...this.declarations.entries()].filter(([,n])=>n.pluginId===e).map(([n])=>n);for(let n of t)this.declarations.delete(n),this.handlers.delete(n),this.validators.delete(n);if(t.length>0)this.logger.debug("Unregistered plugin handlers",{pluginId:e,count:t.length,types:t})}finalizeRegistrations(){return this.finalizedRegistrations??=Object.freeze([...this.declarations.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>Object.freeze({type:e,pluginId:t.pluginId}))),this.finalizedRegistrations}getExecutionRegistrations(){if(!this.finalizedRegistrations)throw Error("Job handler registrations are not finalized");return this.finalizedRegistrations}getRegisteredTypes(){return[...this.handlers.keys()]}getHandler(e){return this.handlers.get(e)}getValidator(e){return this.validators.get(e)}}var a8=a.looseObject({deduplicationKey:a.string().optional()});class mT{findDuplicate(e,t,n){if(!t||t==="none")return null;let r=this.filterByDeduplicationKey(e,n).sort((o,s)=>s.createdAt-o.createdAt||s.id.localeCompare(o.id)),i=r.find((o)=>o.status===ve.PENDING)??null;if(t==="skip"||t==="replace")return i;return i??r[0]??null}filterByDeduplicationKey(e,t){if(!t)return e;return e.filter((n)=>{let r=a8.safeParse(n.metadata);return r.success&&r.data.deduplicationKey===t})}}var c8=2000,l8=5,u8=40,p8=a.number().int().min(0).max(1000),d8=new ov;class fT{db;transactionClient;databaseUrl;logger;deduplicator=new mT;writeRetryBudgetMs;constructor(e,t,n,r,i){this.db=e,this.transactionClient=t,this.databaseUrl=n,this.logger=r.child("JobQueueRepository"),this.writeRetryBudgetMs=i?.writeRetryBudgetMs??c8}async insert(e){await this.write("insert",async()=>this.db.insert(q).values(e))}async enqueueAtomic(e){return d8.run(this.databaseUrl,async()=>{let t=Date.now()+this.writeRetryBudgetMs;return this.attemptEnqueue(e,t,1)})}async attemptEnqueue(e,t,n){let r=await this.runEnqueueTransaction(e,t,n);if(r.retry)return this.attemptEnqueue(e,t,n+1);return r.decision}async runEnqueueTransaction(e,t,n){let r=await this.acquireWriteTransaction(e,t),i={prepared:!1},o=!1;try{let s=await this.decideEnqueue(r,e,()=>{i.prepared=!0});return o=!0,await r.commit(),{retry:!1,decision:s}}catch(s){let c=o&&this.isSerializationConflict(s)&&!r.closed,l=!0;if(!r.closed)try{await r.rollback()}catch(u){l=!1,this.logger.error("Failed to roll back atomic enqueue",{type:e.jobData.type,rollbackError:u})}if(i.prepared)e.onInsertRollback?.();if(!c||!l)throw s;return await this.waitForConflictRetry("commit",e,t,n,s),{retry:!0}}finally{r.close()}}async decideEnqueue(e,t,n){let{jobData:r,strategy:i,deduplicationKey:o,beforeInsert:s}=t,c=i??"none",l=async()=>{await s?.(),n()},u=async()=>{await l(),await this.insertJob(e,r)};if(c==="none")return await u(),{kind:"inserted",jobId:r.id};let p=await this.getActiveDeduplicationCandidates(e,r.type),m=this.deduplicator.findDuplicate(p,c,o);if(!m)return await u(),{kind:"inserted",jobId:r.id};if(c==="skip")return{kind:"skipped",jobId:m.id};if(c==="coalesce"){if((await e.execute({sql:"UPDATE `job_queue` SET `scheduledFor` = ? WHERE `id` = ? AND `status` = ?",args:[Date.now(),m.id,m.status]})).rowsAffected!==1)throw Error(`Atomic coalesce lost selected job ${m.id}`);return{kind:"coalesced",jobId:m.id}}await l();let g=Date.now();if((await e.execute({sql:"UPDATE `job_queue`\n SET `status` = ?,\n `lastError` = ?,\n `completedAt` = ?,\n `runtimeUpdatedAt` = max(?, coalesce((SELECT max(`runtimeUpdatedAt`) FROM `job_queue`), 0) + 1)\n WHERE `id` = ? AND `status` = ?",args:[ve.FAILED,"Replaced by newer job",g,g,m.id,ve.PENDING]})).rowsAffected!==1)throw Error(`Atomic replace lost selected job ${m.id}`);return await this.insertJob(e,r),{kind:"replaced",jobId:r.id,replacedJobId:m.id}}async getActiveDeduplicationCandidates(e,t){return(await e.execute({sql:"SELECT `id`, `status`, `createdAt`, `metadata`\n FROM `job_queue`\n WHERE `type` = ? AND `status` IN (?, ?)",args:[t,ve.PENDING,ve.PROCESSING]})).rows.map((r)=>this.parseDeduplicationCandidate(r))}parseDeduplicationCandidate(e){let{id:t,status:n,createdAt:r,metadata:i}=e;if(typeof t!=="string"||n!==ve.PENDING&&n!==ve.PROCESSING||typeof r!=="number"&&typeof r!=="bigint"||typeof i!=="string")throw Error("Invalid active job row returned during atomic enqueue");let o=JSON.parse(i);return{id:t,status:n,createdAt:Number(r),metadata:o}}async insertJob(e,t){if((await e.execute({sql:"INSERT INTO `job_queue` (\n `id`, `type`, `data`, `result`, `source`, `metadata`,\n `status`, `priority`, `retryCount`, `maxRetries`,\n `lastError`, `createdAt`, `scheduledFor`, `startedAt`,\n `completedAt`\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",args:[t.id,t.type,t.data,this.serializeJson(t.result),t.source,JSON.stringify(t.metadata),t.status,t.priority,t.retryCount,t.maxRetries,t.lastError,t.createdAt,t.scheduledFor,t.startedAt,t.completedAt]})).rowsAffected!==1)throw Error(`Atomic enqueue did not insert job ${t.id}`)}serializeJson(e){if(e===void 0||e===null)return null;return JSON.stringify(e)}acquireWriteTransaction(e,t){return this.retryOnConflict("acquire",e,()=>this.transactionClient.transaction("write"),(n)=>this.isSerializationConflict(n),t)}async waitForConflictRetry(e,t,n,r,i){let o=Math.min(l8*2**(r-1),u8),s=o/2+Math.random()*(o/2);if(Date.now()+s>=n)throw this.transactionConflictError(e,t,r,i);await new Promise((c)=>setTimeout(c,s))}async retryOnConflict(e,t,n,r,i=Date.now()+this.writeRetryBudgetMs,o=1){try{return await n()}catch(s){if(!r(s))throw s;return await this.waitForConflictRetry(e,t,i,o,s),this.retryOnConflict(e,t,n,r,i,o+1)}}transactionConflictError(e,t,n,r){if(typeof t==="string")return Error(`Failed job queue write "${t}" within ${this.writeRetryBudgetMs}ms after ${n} attempts`,{cause:r});let i=t.strategy??"none",o=t.deduplicationKey?"present":"absent";return Error(`Failed to ${e} atomic enqueue transaction for type "${t.jobData.type}" within ${this.writeRetryBudgetMs}ms after ${n} attempts (strategy: ${i}, key: ${o})`,{cause:r})}write(e,t){return this.retryOnConflict("write",e,t,(n)=>{let r=new Set;for(let i=n;i!==void 0&&!r.has(i);){if(r.add(i),typeof i==="object"&&i!==null&&"code"in i&&/^SQLITE_(?:BUSY|LOCKED)(?:_|$)/u.test(String(i.code)))return!0;i=i instanceof Error?i.cause:void 0}return!1})}isSerializationConflict(e){for(let t=e;t!==void 0;){let n=typeof t==="object"&&t!==null&&"code"in t?String(t.code):"",r=Be(t,"");if(/SQLITE_(?:BUSY|LOCKED)/u.test(n)||/SQLITE_(?:BUSY|LOCKED)|database is locked|transaction (?:busy|conflict)/iu.test(r))return!0;t=t instanceof Error?t.cause:void 0}return!1}async startWorkerSession(e,t,n=Date.now(),r=uo){let i=n+r;await this.write("start worker session",async()=>this.db.insert(ft).values({slotId:e,sessionId:t,startedAt:n,heartbeatAt:n,expiresAt:i}).onConflictDoUpdate({target:ft.slotId,set:{sessionId:t,startedAt:n,heartbeatAt:n,expiresAt:i}}))}async heartbeatWorkerSession(e,t,n=Date.now(),r=uo){return(await this.write("heartbeat worker session",async()=>this.db.update(ft).set({heartbeatAt:n,expiresAt:n+r}).where(H(A(ft.slotId,e),A(ft.sessionId,t))).returning({slotId:ft.slotId}))).length===1}async endWorkerSession(e,t){return(await this.write("end worker session",async()=>this.db.delete(ft).where(H(A(ft.slotId,e),A(ft.sessionId,t))).returning({slotId:ft.slotId}))).length===1}async complete(e,t,n){let r=Date.now(),o=(await this.write("complete",async()=>this.db.update(q).set({status:ve.COMPLETED,result:t,lastError:null,completedAt:r,runtimeUpdatedAt:this.nextRuntimeUpdatedAt(r)}).where(this.attemptWriteGuard(e,n)).returning({id:q.id}))).length===1;if(o)this.logger.debug("Job completed",{jobId:e,hasResult:t!==void 0});return o}async update(e,t,n){let i=(await this.write("update",async()=>this.db.update(q).set({data:JSON.stringify(t)}).where(this.attemptWriteGuard(e,n)).returning({id:q.id}))).length===1;if(i)this.logger.debug("Job data updated",{jobId:e});return i}async recordAttemptProgress(e,t,n,r=Date.now()){return(await this.write("record progress",async()=>this.db.update(q).set({attemptHeartbeatAt:r,runtimeUpdatedAt:this.nextRuntimeUpdatedAt(r),progress:n}).where(this.attemptWriteGuard(e,t)).returning({id:q.id}))).length===1}async renewAttemptLease(e,t,n,r){return(await this.write("renew attempt lease",async()=>this.db.update(q).set({attemptHeartbeatAt:n,leaseExpiresAt:n+r}).where(this.attemptWriteGuard(e,t)).returning({id:q.id}))).length===1}async fail(e,t,n,r=Date.now()){let o=(await this.db.select({retryCount:q.retryCount,maxRetries:q.maxRetries,type:q.type,scheduledFor:q.scheduledFor,startedAt:q.startedAt,runtimeUpdatedAt:q.runtimeUpdatedAt}).from(q).where(this.attemptWriteGuard(e,n)).limit(1))[0];if(!o)return!1;let s=o.retryCount<o.maxRetries,c=s?o.retryCount+1:o.retryCount,l=Math.min(1000*2**o.retryCount,60000),u=s?r+l:o.scheduledFor;if((await this.write("fail",async()=>this.db.update(q).set({status:s?ve.PENDING:ve.FAILED,retryCount:c,lastError:t.message,scheduledFor:u,completedAt:s?null:r,runtimeUpdatedAt:s?o.runtimeUpdatedAt:this.nextRuntimeUpdatedAt(r),startedAt:s?null:o.startedAt,attemptId:null,workerSlotId:null,workerSessionId:null,leaseExpiresAt:null,attemptHeartbeatAt:null}).where(H(this.attemptWriteGuard(e,n),A(q.retryCount,o.retryCount))).returning({id:q.id}))).length!==1)return!1;if(s)this.logger.debug("Job scheduled for retry",{jobId:e,retryCount:c,backoffMs:l,scheduledFor:new Date(u).toISOString()});else this.logger.error("Job failed after max retries",{jobId:e,type:o.type,retryCount:o.retryCount,error:t.message});return!0}async retireUnownedActiveJob(e){let t=e.reason.trim();if(t.length===0)throw Error("Retired job reason must not be empty");let r=(await this.write("retire unowned job",async()=>this.db.update(q).set({status:ve.FAILED,lastError:t,completedAt:e.now,runtimeUpdatedAt:this.nextRuntimeUpdatedAt(e.now)}).where(H(A(q.id,e.jobId),A(q.type,e.expectedType),cn(A(q.status,ve.PENDING),A(q.status,ve.PROCESSING)),Xt(q.attemptId),Xt(q.workerSlotId),Xt(q.workerSessionId),Xt(q.leaseExpiresAt),Xt(q.attemptHeartbeatAt),Xt(q.progress),Xt(q.result))).returning()))[0]??null;if(r)this.logger.warn("Retired unowned legacy job",{jobId:r.id,type:r.type,reason:t});return r}async getStatus(e){return(await this.db.select().from(q).where(A(q.id,e)).limit(1))[0]??null}async getJobsByRootJobId(e){return this.db.select().from(q).where(b`json_extract(${q.metadata}, '$.rootJobId') = ${e}`).orderBy(Ue(q.createdAt),Ue(q.id))}async getStatusByEntityId(e){return(await this.db.select().from(q).where(b`json_extract(${q.data}, '$.id') = ${e}`).orderBy(wt(q.createdAt)).limit(1))[0]??null}async getStats(){let e=await this.db.select({status:q.status,count:b`count(*)`}).from(q).groupBy(q.status),t={pending:0,processing:0,failed:0,completed:0,total:0};for(let n of e){let r=Number(n.count);t[n.status]=r,t.total+=r}return t}async getDiagnostics(e=Date.now()){let[t,n,r]=await Promise.all([this.db.select({type:q.type,status:q.status,count:b`count(*)`}).from(q).groupBy(q.type,q.status),this.db.select({oldestPendingAt:b`min(case when ${q.status} = ${ve.PENDING} then ${q.createdAt} end)`,duePending:b`coalesce(sum(case when ${q.status} = ${ve.PENDING} and ${q.scheduledFor} <= ${e} then 1 else 0 end), 0)`,oldestDuePendingAt:b`min(case when ${q.status} = ${ve.PENDING} and ${q.scheduledFor} <= ${e} then ${q.scheduledFor} end)`,latestClaimAt:b`max(${q.startedAt})`,oldestProcessingAt:b`min(case when ${q.status} = ${ve.PROCESSING} then ${q.startedAt} end)`,staleLeaseCount:b`coalesce(sum(case when ${q.status} = ${ve.PROCESSING} and ${q.leaseExpiresAt} is not null and ${q.leaseExpiresAt} <= ${e} then 1 else 0 end), 0)`}).from(q),this.db.select({total:b`count(*)`,active:b`coalesce(sum(case when ${ft.expiresAt} > ${e} then 1 else 0 end), 0)`,stale:b`coalesce(sum(case when ${ft.expiresAt} <= ${e} then 1 else 0 end), 0)`,latestHeartbeatAt:b`max(${ft.heartbeatAt})`}).from(ft)]),i={pending:0,processing:0,completed:0,failed:0},o=t.map((u)=>{let p=Number(u.count);return i[u.status]+=p,{type:u.type,status:u.status,count:p}}),s=n[0],c=r[0],l=(u)=>u===null||u===void 0?null:Math.max(0,e-Number(u));return{totals:i,byType:o,oldestPendingAgeMs:l(s?.oldestPendingAt),duePending:Number(s?.duePending??0),oldestDuePendingAgeMs:l(s?.oldestDuePendingAt),latestClaimAgeMs:l(s?.latestClaimAt),oldestProcessingAgeMs:l(s?.oldestProcessingAt),staleLeaseCount:Number(s?.staleLeaseCount??0),workerSessions:{total:Number(c?.total??0),active:Number(c?.active??0),stale:Number(c?.stale??0),latestHeartbeatAgeMs:l(c?.latestHeartbeatAt)}}}async getRuntimeUpdates(e,t){let n=p8.parse(t);if(n===0)return[];return(await this.db.select().from(q).where(b`(${q.runtimeUpdatedAt}, ${q.id}) > (${e.updatedAt}, ${e.jobId})`).orderBy(Ue(q.runtimeUpdatedAt),Ue(q.id)).limit(n)).map((i)=>({job:i,cursor:{updatedAt:i.runtimeUpdatedAt??0,jobId:i.id}}))}async cleanup(e){let t=Date.now()-e;return(await this.write("cleanup",async()=>this.db.delete(q).where(H(cn(A(q.status,ve.COMPLETED),A(q.status,ve.FAILED)),On(q.completedAt,t))))).rowsAffected}async getActiveJobs(e){let t=cn(A(q.status,ve.PENDING),A(q.status,ve.PROCESSING)),n=e&&e.length>0?H(t,Ke(q.type,e)):t;return this.db.select().from(q).where(n).orderBy(wt(q.createdAt))}async getRecentJobs(e,t=20){let n=e&&e.length>0?Ke(q.type,e):void 0;return this.db.select().from(q).where(n).orderBy(wt(q.createdAt)).limit(t)}async getFailedJobs(e){let t=A(q.status,ve.FAILED),n=e&&e.length>0?H(t,Ke(q.type,e)):t;return this.db.select().from(q).where(n).orderBy(wt(q.createdAt))}async claimNextReady(e){let{now:t,attemptId:n,workerSlotId:r,workerSessionId:i,leaseDurationMs:o,executableTypes:s}=e,c=this.db.select({slotId:ft.slotId}).from(ft).where(H(A(ft.slotId,r),A(ft.sessionId,i),Xi(ft.expiresAt,t))),l=this.db.select({slotId:ft.slotId}).from(ft).where(H(A(ft.slotId,q.workerSlotId),A(ft.sessionId,q.workerSessionId))),u=H(A(q.status,ve.PROCESSING),cn(Xt(q.attemptId),ef(l),On(q.leaseExpiresAt,t))),p=b`${q.status} = ${ve.PROCESSING} AND ${q.retryCount} + 1 > ${q.maxRetries}`,m=this.db.select({id:q.id}).from(q).where(H(Ke(q.type,s),cn(H(A(q.status,ve.PENDING),On(q.scheduledFor,t)),u))).orderBy(Ue(q.priority),Ue(q.createdAt)).limit(1),f=(await this.write("claim",async()=>this.db.update(q).set({status:b`CASE WHEN ${p} THEN ${ve.FAILED} ELSE ${ve.PROCESSING} END`,retryCount:b`CASE WHEN ${q.status} = ${ve.PROCESSING} THEN ${q.retryCount} + 1 ELSE ${q.retryCount} END`,lastError:b`CASE WHEN ${q.status} = ${ve.PROCESSING} THEN 'Attempt lease expired' ELSE ${q.lastError} END`,startedAt:b`CASE WHEN ${p} THEN ${q.startedAt} ELSE ${t} END`,completedAt:b`CASE WHEN ${p} THEN ${t} ELSE NULL END`,attemptId:b`CASE WHEN ${p} THEN ${q.attemptId} ELSE ${n} END`,workerSlotId:b`CASE WHEN ${p} THEN ${q.workerSlotId} ELSE ${r} END`,workerSessionId:b`CASE WHEN ${p} THEN ${q.workerSessionId} ELSE ${i} END`,leaseExpiresAt:b`CASE WHEN ${p} THEN ${q.leaseExpiresAt} ELSE ${t+o} END`,attemptHeartbeatAt:b`CASE WHEN ${p} THEN ${q.attemptHeartbeatAt} ELSE ${t} END`,runtimeUpdatedAt:b`CASE WHEN ${p} THEN ${this.nextRuntimeUpdatedAt(t)} ELSE ${q.runtimeUpdatedAt} END`}).where(H(Ke(q.id,m),na(c))).returning()))[0];if(f?.status!==ve.PROCESSING)return null;return this.logger.debug("Job claimed",{jobId:f.id,attemptId:f.attemptId,workerSlotId:r,workerSessionId:i}),f}nextRuntimeUpdatedAt(e){return b`max(${e}, coalesce((select max(${q.runtimeUpdatedAt}) from ${q}), 0) + 1)`}attemptWriteGuard(e,t){return t?H(A(q.id,e),A(q.status,ve.PROCESSING),A(q.attemptId,t)):H(A(q.id,e),Xt(q.attemptId),cn(A(q.status,ve.PENDING),A(q.status,ve.PROCESSING)))}}import{AsyncLocalStorage as m8}from"async_hooks";class is{storage=new m8;static createFresh(){return new is}constructor(){}current(){return this.storage.getStore()}run(e,t,n){if(t.length===0)throw Error("Operation ID must not be empty");let r=Di.parse(e),i=f8(r);return this.storage.run(Object.freeze({provenance:i,operationId:t}),n)}}function f8(e){if(Object.freeze(e.projectionLineage),e.sourceEntity)Object.freeze(e.sourceEntity);return Object.freeze(e)}class gT{client;logger;handlerRegistry;repository;walInitialization=null;walInitializationSettled=!1;closeRequested=!1;clientClosed=!1;inFlightEnqueues=0;databaseUrl;operationContext;projectionAdmission;directWorkerSlotId=`direct:${it()}`;directWorkerSessionId=it();directLeaseDurationMs;directSessionStart=null;close(){this.closeRequested=!0,this.closeClientWhenReady()}static createFresh(e,t,n){return new gT(e,t??kr.getInstance(),n)}constructor(e,t,n){let{db:r,client:i,url:o}=HN(e);this.client=i,this.databaseUrl=o,this.logger=t.child("JobQueueService"),this.operationContext=n?.operationContext??is.createFresh(),this.projectionAdmission=n?.projectionAdmission,this.handlerRegistry=new dT(this.logger,n?.handlerRegistrationMode??"combined"),this.repository=new fT(r,i,o,this.logger),this.directLeaseDurationMs=e.claimTimeoutMs??300000}initialize(){if(this.closeRequested)return Promise.resolve();return this.walInitialization??=this.initializeWALMode(),this.walInitialization}async initializeWALMode(){try{await ei(this.client,this.databaseUrl)}catch(e){this.logger.warn("Failed to enable WAL mode (non-fatal)",e)}finally{this.walInitializationSettled=!0,this.closeClientWhenReady()}}closeClientWhenReady(){if(!this.closeRequested||this.inFlightEnqueues>0||this.walInitialization!==null&&!this.walInitializationSettled)return;this.closeClient()}closeClient(){if(this.clientClosed)return;this.clientClosed=!0,this.client.close()}registerHandler(e,t,n){this.handlerRegistry.registerHandler(e,t,n)}unregisterHandler(e){this.handlerRegistry.unregisterHandler(e)}unregisterPluginHandlers(e){this.handlerRegistry.unregisterPluginHandlers(e)}getRegisteredTypes(){return this.handlerRegistry.getRegisteredTypes()}getHandler(e){return this.handlerRegistry.getHandler(e)}getValidator(e){return this.handlerRegistry.getValidator(e)}finalizeHandlerRegistrations(){return this.handlerRegistry.finalizeRegistrations()}getExecutionRegistrations(){return this.handlerRegistry.getExecutionRegistrations()}async enqueue(e){if(this.closeRequested)throw Error("Cannot enqueue a job after the queue service is closed");this.inFlightEnqueues++;try{return await this.enqueueValidated(e)}finally{this.inFlightEnqueues--,this.closeClientWhenReady()}}async enqueueValidated(e){let{type:t,data:n,options:r}=e,i=this.handlerRegistry.getValidator(t);if(!i)throw Error(`No job type declared: ${t}`);let o=i.validateAndParse(n);if(o===null)throw Error(`Invalid job data for type: ${t}`);let s=Date.now(),c=it(),l=r?.rootJobId??this.operationContext.current()?.provenance.rootJobId??c,u=this.createJobProvenance(c,l,r),p=r?.metadata??{operationType:"data_processing"},{provenance:m,...g}=p,f={id:c,type:t,data:JSON.stringify(o),status:ve.PENDING,priority:r?.priority??0,maxRetries:r?.maxRetries??3,retryCount:0,source:r?.source??null,metadata:{...g,...r?.deduplicationKey&&{deduplicationKey:r.deduplicationKey},rootJobId:l,provenance:u},createdAt:s,scheduledFor:r?.delayMs?s+r.delayMs:s,result:null,lastError:null,startedAt:null,completedAt:null},v,w=()=>{v?.rollback(),v=void 0};try{let k=await this.repository.enqueueAtomic({jobData:f,strategy:r?.deduplication,deduplicationKey:r?.deduplicationKey,beforeInsert:async()=>{v=await this.projectionAdmission?.reserveJobAdmission(u)},onInsertRollback:w});if(v?.commit(),v=void 0,k.kind==="skipped")this.logger.debug("Skipping duplicate job (already pending)",{type:t,existingJobId:k.jobId});else if(k.kind==="coalesced")this.logger.debug("Coalescing with existing job",{type:t,existingJobId:k.jobId});else{if(k.kind==="replaced")this.logger.debug("Replacing duplicate job",{type:t,oldJobId:k.replacedJobId});this.logger.debug("Job enqueued",{id:k.jobId,type:t,priority:f.priority,rootJobId:f.metadata.rootJobId})}return k.jobId}catch(k){throw w(),this.logger.error("Failed to enqueue job",{type:t,error:Be(k)}),k}}createJobProvenance(e,t,n){let r=this.operationContext.current(),i=n?.metadata.provenance??r?.provenance,o=i?.rootJobId===t?i:void 0,s=r?.provenance.rootJobId===t?r.operationId:void 0,c=n?.projection,l=c?[...o?.projectionLineage??[],c.id]:[...o?.projectionLineage??[]],u=c?.id??o?.projectionId;return Di.parse({rootJobId:t,causationId:s??o?.causationId??e,...u?{projectionId:u}:{},projectionLineage:l,...c?.sourceEntity?{sourceEntity:c.sourceEntity}:o?.sourceEntity?{sourceEntity:o.sourceEntity}:{},derivationDepth:l.length})}async dequeue(e){let t=this.handlerRegistry.getRegisteredTypes();if(t.length===0)return null;let n=e??await this.getDirectClaimOptions(),r=Date.now(),i=await this.repository.claimNextReady({...n,now:r,attemptId:it(),executableTypes:t});if(!i)return null;return this.logger.debug("Job dequeued",{id:i.id,type:i.type,priority:i.priority,retryCount:i.retryCount,attemptId:i.attemptId,workerSlotId:i.workerSlotId,workerSessionId:i.workerSessionId}),i}async startWorkerSession(e,t,n=uo){await this.repository.startWorkerSession(e,t,Date.now(),n)}heartbeatWorkerSession(e,t,n=uo){return this.repository.heartbeatWorkerSession(e,t,Date.now(),n)}endWorkerSession(e,t){return this.repository.endWorkerSession(e,t)}renewAttemptLease(e,t,n){return this.repository.renewAttemptLease(e,t,Date.now(),n)}recordAttemptProgress(e,t,n){return this.repository.recordAttemptProgress(e,t,n)}complete(e,t,n){return this.repository.complete(e,t,n)}update(e,t,n){return this.repository.update(e,t,n)}fail(e,t,n){return this.repository.fail(e,t,n)}retireUnownedActiveJob(e){return this.repository.retireUnownedActiveJob(e)}async getDirectClaimOptions(){return this.directSessionStart??=this.repository.startWorkerSession(this.directWorkerSlotId,this.directWorkerSessionId,Date.now(),this.directLeaseDurationMs),await this.directSessionStart,{workerSlotId:this.directWorkerSlotId,workerSessionId:this.directWorkerSessionId,leaseDurationMs:this.directLeaseDurationMs}}async getStatus(e){return this.repository.getStatus(e)}async getJobsByRootJobId(e){return this.repository.getJobsByRootJobId(e)}async getStatusByEntityId(e){return this.repository.getStatusByEntityId(e)}async getStats(){return this.repository.getStats()}getDiagnostics(e){return this.repository.getDiagnostics(e)}async waitForIdle(e={}){let t=e.quietMs??250,n=e.pollIntervalMs??25,r=Date.now()+(e.timeoutMs??30000),i=async(o)=>{e.signal?.throwIfAborted();let{totals:s}=await this.getDiagnostics(),l=s.pending===0&&s.processing===0?o??Date.now():null;if(l!==null&&Date.now()-l>=t)return;if(Date.now()>=r)throw Error(`Timed out waiting for the job queue to settle: ${s.pending} pending, ${s.processing} processing`);return await Bun.sleep(n),i(l)};return i(null)}getRuntimeUpdates(e,t=1000){return this.repository.getRuntimeUpdates(e,t)}async cleanup(e){let t=await this.repository.cleanup(e);if(t>0)this.logger.info("Cleaned up old jobs",{deletedCount:t,olderThanMs:e});return t}async getActiveJobs(e){return this.repository.getActiveJobs(e)}async getRecentJobs(e,t){return this.repository.getRecentJobs(e,t)}async getFailedJobs(e){return this.repository.getFailedJobs(e)}}function hT(e){let t,n=()=>{return},r=!1,i=new Promise((s)=>{n=()=>{r=!0,s({kind:"timeout"})}}),o=()=>{if(r)return;if(t)clearTimeout(t);t=setTimeout(n,Math.max(1,e))};return o(),{expired:i,renew:o,cancel:()=>{if(r=!0,t)clearTimeout(t)}}}function GN(e,t){let n,r=(o)=>{let s=JSON.stringify([o.progress,o.total,o.message]);if(s===n)return;n=s,t()},i=(o)=>({createSub:(s)=>i(o.createSub(s)),report:async(s)=>{r(s),await o.report(s)},startHeartbeat:(s,c)=>o.startHeartbeat(s,c),stopHeartbeat:()=>o.stopHeartbeat(),toCallback:()=>{let s=o.toCallback();return async(c)=>{r(c),await s(c)}}});return i(e)}class VN extends Error{constructor(e,t){super(`Job ${e} exceeded its ${t}ms execution deadline`);this.name="JobDeadlineExceededError"}}class yT{logger;jobQueueService;progressMonitor;config;isRunning=!1;shouldStop=!1;activeJobs=new Set;stats;startTime=0;pollFiber=null;currentPoll=null;workerScope=null;jobFibers=null;activeTransition=null;transitionQueue=[];clock;operationContext;projectionBatchScope;workerSessionId=null;workerHeartbeatStop=null;static createFresh(e,t,n,r,i){return new yT(e,t,n,r,i)}constructor(e,t,n,r,i){if(this.logger=n.child("JobQueueWorker"),this.jobQueueService=e,this.progressMonitor=t,this.clock=i?.clock,this.operationContext=i?.operationContext??is.createFresh(),this.projectionBatchScope=i?.projectionBatchScope,this.config={concurrency:r?.concurrency??1,pollInterval:r?.pollInterval??1000,maxJobs:r?.maxJobs??0,autoStart:r?.autoStart??!1,workerSlotId:r?.workerSlotId??process.env.BRAIN_JOB_WORKER_SLOT_ID??"default",defaultExecutionTimeoutMs:r?.defaultExecutionTimeoutMs??300000,cancellationGraceMs:r?.cancellationGraceMs??5000,errorCallbackTimeoutMs:r?.errorCallbackTimeoutMs??1e4,leaseDurationMs:r?.leaseDurationMs??30000,attemptHeartbeatIntervalMs:r?.attemptHeartbeatIntervalMs??1e4,workerHeartbeatIntervalMs:r?.workerHeartbeatIntervalMs??5000,workerSessionTimeoutMs:r?.workerSessionTimeoutMs??uo,onUnhealthy:r?.onUnhealthy??(()=>{return})},this.stats={processedJobs:0,failedJobs:0,activeJobs:0,uptime:0,isRunning:!1,isHealthy:!0},this.logger.debug("JobQueueWorker initialized",{concurrency:this.config.concurrency,pollInterval:this.config.pollInterval,maxJobs:this.config.maxJobs,autoStart:this.config.autoStart}),this.config.autoStart)this.start().catch((o)=>{this.logger.error("Failed to auto-start JobQueueWorker",{error:o})})}start(){return this.requestTransition("start",!0)}async startWorker(){if(this.isRunning){this.logger.warn("Worker is already running");return}this.logger.debug("Starting JobQueueWorker");let e=it();await this.jobQueueService.startWorkerSession(this.config.workerSlotId,e,this.config.workerSessionTimeoutMs),this.workerSessionId=e,this.isRunning=!0,this.shouldStop=!1,this.startTime=Date.now(),this.stats.isRunning=!0,this.stats.isHealthy=!0,delete this.stats.unhealthyReason,this.startWorkerHeartbeat(),this.workerScope=ne.runSync(vt.make()),this.jobFibers=ne.runSync(vt.provide(Pn.make(),this.workerScope)),this.pollFiber=ne.runFork(this.runPollingLoop())}stop(){return this.requestTransition("stop",!0)}async stopWorker(e){if(!this.isRunning){this.logger.warn("Worker is not running");return}if(this.logger.debug("Stopping JobQueueWorker"),this.shouldStop=!0,e.awaitInFlightPoll&&this.pollFiber){let n=this.pollFiber;await ne.runPromise(Qr.interrupt(n)),this.pollFiber=null}if(e.awaitInFlightPoll&&this.currentPoll)await this.currentPoll,this.currentPoll=null;if(this.jobFibers)this.logger.debug("Waiting for active jobs to complete",{activeJobs:this.activeJobs.size}),await ne.runPromise(Pn.awaitEmpty(this.jobFibers));await this.closeWorkerScope(),await this.stopWorkerHeartbeat();let t=this.workerSessionId;if(this.workerSessionId=null,t)await this.jobQueueService.endWorkerSession(this.config.workerSlotId,t);this.isRunning=!1,this.stats.isRunning=!1,this.logger.debug("JobQueueWorker stopped")}getStats(){return{...this.stats,activeJobs:this.activeJobs.size,uptime:this.isRunning?Date.now()-this.startTime:0}}isWorkerRunning(){return this.isRunning}isStopRequested(){return this.shouldStop}async processAvailableJobs(){if(!this.isRunning||this.shouldStop)return;try{let e=this.config.concurrency-this.activeJobs.size;if(e<=0)return;if(this.config.maxJobs>0){let n=this.stats.processedJobs+this.stats.failedJobs,r=this.config.maxJobs-n-this.activeJobs.size;if(r<=0){this.logger.debug("Maximum job limit reached, stopping worker",{maxJobs:this.config.maxJobs,processedJobs:this.stats.processedJobs,failedJobs:this.stats.failedJobs}),await this.requestTransition("stop",!1);return}e=Math.min(e,r)}let t=this.jobFibers;if(!t)throw Error("Worker job fiber scope is not available");for(let n=0;n<e;n++){if(this.isStopRequested())break;let r=this.workerSessionId;if(!r)throw Error("Worker session is not available");let i=await this.jobQueueService.dequeue({workerSlotId:this.config.workerSlotId,workerSessionId:r,leaseDurationMs:this.config.leaseDurationMs});if(!i)break;this.activeJobs.add(i.id),await ne.runPromise(Pn.run(t,i.id,ne.promise(()=>this.processJobWrapper(i))))}}catch(e){this.logger.error("Error processing available jobs",{error:e}),this.stats.lastError=Be(e)}}async processJobWrapper(e){let t=e.id;try{this.logger.debug("Processing job",{jobId:t,type:e.type,priority:e.priority,retryCount:e.retryCount});let n=await this.processJob(e);if(n.status==="completed")this.stats.processedJobs++,this.logger.debug("Job completed successfully",{jobId:t,type:n.type});else this.stats.failedJobs++,this.logger.warn("Job failed",{jobId:t,type:n.type,error:n.error})}catch(n){this.stats.failedJobs++,this.logger.error("Error processing job",{jobId:t,type:e.type,error:n}),this.stats.lastError=Be(n)}finally{this.activeJobs.delete(t)}}runPollingLoop(){let t=ne.suspend(()=>{if(!this.isWorkerRunning()||this.isStopRequested())return ne.interrupt;return this.currentPoll=this.processAvailableJobs(),ne.promise(()=>this.currentPoll??Promise.resolve()).pipe(ne.andThen(ne.suspend(()=>(this.currentPoll=null,!this.isWorkerRunning()||this.isStopRequested()?ne.interrupt:ne.void))))}).pipe(ne.schedule(wr.spaced(this.config.pollInterval)),ne.asVoid);return _o(t,this.clock).pipe(ne.ensuring(ne.sync(()=>{this.pollFiber=null})))}requestTransition(e,t){let n=this.transitionQueue.at(-1)??this.activeTransition;if(n?.kind===e)return n.promise;let r=()=>{return},i=()=>{return},o=new Promise((c,l)=>{r=c,i=l}),s={kind:e,awaitInFlightPoll:t,promise:o,resolve:r,reject:i};return this.transitionQueue.push(s),this.runNextTransition(),o}runNextTransition(){if(this.activeTransition)return;let e=this.transitionQueue.shift();if(!e)return;this.activeTransition=e,(e.kind==="start"?this.startWorker():this.stopWorker({awaitInFlightPoll:e.awaitInFlightPoll})).then(()=>this.completeTransition(e,!0),(n)=>this.completeTransition(e,!1,n))}completeTransition(e,t,n){if(this.activeTransition!==e)return;if(this.activeTransition=null,t)e.resolve();else e.reject(n);queueMicrotask(()=>this.runNextTransition())}async closeWorkerScope(){let e=this.workerScope;if(this.workerScope=null,this.jobFibers=null,e)await ne.runPromise(vt.close(e,bt.void))}startHeartbeatLoop(e){let t=null,n=!1,r=setInterval(()=>{if(n||t)return;t=e.beat().then((i)=>{if(!i)e.onStale()}).catch(e.onError).finally(()=>{t=null})},Math.max(1,e.intervalMs));return async()=>{if(n)return;n=!0,clearInterval(r),await t}}startWorkerHeartbeat(){this.workerHeartbeatStop=this.startHeartbeatLoop({intervalMs:this.config.workerHeartbeatIntervalMs,beat:async()=>{let e=this.workerSessionId;if(!e)return!0;return this.jobQueueService.heartbeatWorkerSession(this.config.workerSlotId,e,this.config.workerSessionTimeoutMs)},onStale:()=>this.markUnhealthy("Worker session was superseded"),onError:(e)=>this.markUnhealthy(`Worker session heartbeat failed: ${Be(e)}`)})}async stopWorkerHeartbeat(){await this.workerHeartbeatStop?.(),this.workerHeartbeatStop=null}startAttemptHeartbeat(e,t){let n=e.attemptId;if(!n)return async()=>{return};return this.startHeartbeatLoop({intervalMs:this.config.attemptHeartbeatIntervalMs,beat:()=>this.jobQueueService.renewAttemptLease(e.id,n,this.config.leaseDurationMs),onStale:()=>{let r=Error("Job attempt was superseded");t.abort(r),this.markUnhealthy(r.message)},onError:(r)=>{let i=sl(r);t.abort(i),this.markUnhealthy(`Attempt lease heartbeat failed: ${i.message}`)}})}markUnhealthy(e){if(!this.stats.isHealthy)return;this.stats.isHealthy=!1,this.stats.unhealthyReason=e,this.stats.lastError=e,this.shouldStop=!0,this.logger.error("Job queue worker is unhealthy",{reason:e});try{this.config.onUnhealthy(e)}catch(t){this.logger.error("Job queue worker unhealthy callback failed",{reason:e,error:Be(t)})}}async raceOutcome(e,t){let n,r=new Promise((i)=>{n=setTimeout(()=>i({kind:"timeout"}),Math.max(1,t))});try{return await Promise.race([e,r])}finally{if(n)clearTimeout(n)}}async executeWithDeadline(e,t,n,r,i=hT(t)){let o=Promise.resolve().then(r).then((u)=>({kind:"success",value:u}),(u)=>({kind:"failure",error:u})),s=await Promise.race([o,i.expired]).finally(()=>i.cancel());if(s.kind!=="timeout"){if(s.kind==="failure")throw s.error;return s.value}let c=new VN(e,t);if(n.abort(c),(await this.raceOutcome(o,this.config.cancellationGraceMs)).kind!=="timeout")throw c;throw this.markUnhealthy(`${c.message}; handler ignored cancellation grace`),await o,c}processJob(e){let t=e.metadata.provenance??{rootJobId:e.metadata.rootJobId,causationId:e.id,projectionLineage:[],derivationDepth:0};return this.operationContext.run(t,e.id,()=>{let n=this.projectionBatchScope;return n?n.runFreshBatchScope(()=>this.processJobWithinContext(e)):this.processJobWithinContext(e)})}async processJobWithinContext(e){let t=e.attemptId;if(!t){let c=Error(`Claimed job ${e.id} has no attempt fencing token`);return this.markUnhealthy(c.message),{jobId:e.id,type:e.type,status:ve.FAILED,error:c.message}}let n=this.jobQueueService.getHandler(e.type);if(!n){let c=Error(`No handler registered for job type: ${e.type}`);return await this.jobQueueService.fail(e.id,c,t),{jobId:e.id,type:e.type,status:ve.FAILED,error:c.message}}let r=new AbortController,i=this.startAttemptHeartbeat(e,r),o=!1,s=async()=>{if(o)return;o=!0,await i()};try{this.logger.debug("Processing job",{jobId:e.id,type:e.type,attemptId:t});let c=JSON.parse(e.data),l=n.validateAndParse(c);if(l===null)throw Error(`Invalid job data for type: ${e.type}`);let u=this.progressMonitor.createProgressReporter(e.id,t),p=n.executionTimeoutMs??this.config.defaultExecutionTimeoutMs,m=hT(p),g=await this.executeWithDeadline(e.type,p,r,()=>n.process(l,e.id,GN(u,m.renew),r.signal),m);await s();let f=pT.safeParse(g);if(f.success){let w=f.data.error??"Handler returned failure",k=Error(w);if(await this.jobQueueService.fail(e.id,k,t))await this.emitTerminalFailure(e,k,n,t);return{jobId:e.id,type:e.type,status:ve.FAILED,error:w}}if(!await this.jobQueueService.complete(e.id,g,t))return{jobId:e.id,type:e.type,status:ve.FAILED,error:"Job attempt no longer owns the claim"};return await this.runHandlerSuccessCallback(n,e,t),await this.progressMonitor.handleJobStatusChange(e.id,"completed",e.metadata),{jobId:e.id,type:e.type,status:ve.COMPLETED,result:g}}catch(c){let l=sl(c);if(await s(),await this.runHandlerErrorCallback("onError",n,e,l,t),await this.jobQueueService.fail(e.id,l,t))await this.emitTerminalFailure(e,l,n,t);return{jobId:e.id,type:e.type,status:ve.FAILED,error:l.message}}}async runHandlerSuccessCallback(e,t,n){let r=e.onTerminalSuccess;if(!r)return;try{let i=e.validateAndParse(JSON.parse(t.data));if(i===null)return;let o=this.progressMonitor.createProgressReporter(t.id,n),s=new AbortController;await this.executeWithDeadline(`${t.type}:onTerminalSuccess`,this.config.errorCallbackTimeoutMs,s,()=>r.call(e,i,t.id,o,s.signal))}catch(i){this.logger.error("Terminal job success callback failed",{jobId:t.id,type:t.type,error:i})}}async emitTerminalFailure(e,t,n,r){if((await this.jobQueueService.getStatus(e.id))?.status!==ve.FAILED)return;await this.runHandlerErrorCallback("onTerminalError",n,e,t,r),await this.progressMonitor.handleJobStatusChange(e.id,"failed",e.metadata)}async runHandlerErrorCallback(e,t,n,r,i){let o=t[e];if(!o)return;try{let s=t.validateAndParse(JSON.parse(n.data));if(s===null)return;let c=this.progressMonitor.createProgressReporter(n.id,i),l=new AbortController;await this.executeWithDeadline(`${n.type}:${e}`,this.config.errorCallbackTimeoutMs,l,()=>o.call(t,r,s,n.id,c,l.signal))}catch(s){this.logger.error(e==="onError"?"Job handler error callback failed":"Job handler terminal error callback failed",{jobId:n.id,error:s})}}}var g8=86400000,QN=3600000;class bT{jobQueue;logger;batches=new Map;cleanupFiber=null;cleanupSupervisor=null;inFlightCleanups=new Set;activeTransition=null;transitionQueue=[];acceptingCleanup=!0;clock;static createFresh(e,t,n){return new bT(e,t,n)}constructor(e,t,n){this.jobQueue=e,this.logger=t,this.clock=n?.clock}start(e=QN){return this.requestTransition("start",e)}stop(){return this.requestTransition("stop",QN)}async startCleanup(e){if(this.acceptingCleanup=!0,this.cleanupFiber)return;this.cleanupFiber=ne.runFork(this.runCleanupLoop(e))}runCleanupLoop(e){let t=this.cleanupTerminalBatchMetadata().pipe(ne.schedule(wr.spaced(e)),ne.asVoid);return _o(t,this.clock)}scheduleTerminalBatchCleanup(){if(!this.acceptingCleanup)return;this.cleanupSupervisor??=this.createCleanupSupervisor();let e=ne.runFork(this.cleanupTerminalBatchMetadata());Ys.addUnsafe(this.cleanupSupervisor.fibers,e)}async stopCleanup(){this.acceptingCleanup=!1;let e=this.cleanupFiber;if(this.cleanupFiber=null,e)await ne.runPromise(Qr.interrupt(e));let t=this.cleanupSupervisor;if(t)await ne.runPromise(Ys.awaitEmpty(t.fibers));while(this.inFlightCleanups.size>0)await Promise.allSettled(this.inFlightCleanups);if(t)await ne.runPromise(vt.close(t.scope,bt.void)),this.cleanupSupervisor=null}requestTransition(e,t){let n=this.transitionQueue.at(-1)??this.activeTransition;if(n?.kind===e)return n.promise;let r=()=>{return},i=()=>{return},o=new Promise((c,l)=>{r=c,i=l}),s={kind:e,intervalMs:t,promise:o,resolve:r,reject:i};return this.transitionQueue.push(s),this.runNextTransition(),o}runNextTransition(){if(this.activeTransition)return;let e=this.transitionQueue.shift();if(!e)return;this.activeTransition=e,(e.kind==="start"?this.startCleanup(e.intervalMs):this.stopCleanup()).then(()=>this.completeTransition(e,!0),(n)=>this.completeTransition(e,!1,n))}completeTransition(e,t,n){if(this.activeTransition!==e)return;if(this.activeTransition=null,t)e.resolve();else e.reject(n);queueMicrotask(()=>this.runNextTransition())}createCleanupSupervisor(){let e=ne.runSync(vt.make()),t=ne.runSync(vt.provide(Ys.make(),e));return{scope:e,fibers:t}}cleanupTerminalBatchMetadata(){return ne.tryPromise({try:()=>{let e=this.cleanup(g8);return this.inFlightCleanups.add(e),e.then(()=>this.inFlightCleanups.delete(e),()=>this.inFlightCleanups.delete(e)),e},catch:(e)=>e}).pipe(ne.asVoid,ne.catch((e)=>ne.sync(()=>{this.logger.warn("Failed to clean up terminal batch metadata",{error:e})})))}validateOperations(e){for(let t of e){let n=this.jobQueue.getValidator(t.type);if(!n)throw Error(`No job type declared: ${t.type}`);if(n.validateAndParse(t.data)===null)throw Error(`Invalid job data for type: ${t.type}`)}}async enqueueBatch(e,t,n,r){if(e.length===0)throw Error("Cannot enqueue empty batch");this.validateOperations(e);let i=[];this.batches.set(n,{jobIds:i,operations:e,source:t.source,startedAt:new Date().toISOString(),metadata:{...t.metadata,rootJobId:n}});try{for(let o of e){let s={...t,rootJobId:n,metadata:{...t.metadata,operationTarget:o.type}},c=await this.jobQueue.enqueue({type:o.type,data:o.data,options:s});i.push(c)}return this.logger.debug("Enqueued batch operations",{batchId:n,operationCount:e.length,jobIds:i,rootJobId:n}),this.scheduleTerminalBatchCleanup(),n}catch(o){throw this.batches.delete(n),this.logger.error("Failed to enqueue batch operations",{error:o,operationCount:e.length,enqueuedJobs:i.length}),o}}async getBatchStatus(e){let t=this.batches.get(e);if(!t)return null;try{let n=await Promise.all(t.jobIds.map((u)=>this.jobQueue.getStatus(u))),r=0,i=0,o=0,s=[];for(let[u,p]of n.entries()){if(!p){i++;let m=t.operations[u],g=t.jobIds[u]??"unknown";s.push(`Missing job ${g}${m?` for ${m.type}`:""}`);continue}switch(p.status){case"completed":r++;break;case"failed":if(i++,p.lastError)s.push(p.lastError);break;case"processing":case"pending":o++;break}}o+=t.operations.length-t.jobIds.length;let c;if(o>0)c=ve.PROCESSING;else if(i>0)c=ve.FAILED;else c=ve.COMPLETED;if(t.terminalAt===void 0&&(c===ve.COMPLETED||c===ve.FAILED))t.terminalAt=Date.now();let l;for(let u=0;u<t.jobIds.length;u++){let p=n[u];if(p&&p.status!=="completed"&&p.status!=="failed"){let m=t.operations[u];if(m)l=`Processing ${m.type}`;break}}return{batchId:e,totalOperations:t.operations.length,completedOperations:r,failedOperations:i,errors:s,status:c,currentOperation:l,metadata:t.metadata}}catch(n){throw this.logger.error("Failed to get batch status",{batchId:e,error:n}),n}}inspectRetention(e){let t=this.batches.get(e);return t?{terminalAt:t.terminalAt}:void 0}async cleanup(e){let t=Date.now()-e,n=0;for(let[r,i]of this.batches.entries()){if(i.terminalAt!==void 0){if(i.terminalAt<=t)this.batches.delete(r),n++;continue}if(new Date(i.startedAt).getTime()<=t){let s=await this.getBatchStatus(r);if(s&&(s.status===ve.COMPLETED||s.status===ve.FAILED))this.batches.delete(r),n++}}return this.logger.debug("Cleaned up batch metadata",{cleaned:n}),n}registerBatch(e,t,n,r,i){this.batches.set(e,{jobIds:t,operations:n,source:r,startedAt:new Date().toISOString(),metadata:i}),this.logger.debug("Registered batch metadata",{batchId:e,operationCount:n.length,jobIds:t})}async getActiveBatches(){let e=[];try{for(let[t,n]of this.batches){let r=await this.getBatchStatus(t);if(r&&(r.status==="pending"||r.status==="processing"))e.push({batchId:t,status:r,metadata:{operations:n.operations,source:n.source,startedAt:n.startedAt,metadata:n.metadata}})}return this.logger.debug("Retrieved active batches",{count:e.length}),e}catch(t){throw this.logger.error("Failed to get active batches",{error:t}),t}}}var h8=a.preprocess((e)=>{if(typeof e!=="string")return e;return JSON.parse(e)},a.record(a.string(),a.unknown()));class ST{jobQueueService;messageBus;batchJobManager;logger;mode;pollTimer;pollCursor={updatedAt:0,jobId:""};activePoll;stopPromise;stopped=!1;static createFresh(e,t,n,r,i="combined"){return new ST(e,t,n,r,i)}constructor(e,t,n,r,i){this.jobQueueService=e,this.messageBus=t,this.batchJobManager=n,this.logger=r,this.mode=i}start(){if(this.stopped)throw Error("Cannot start a stopped job progress monitor");if(this.mode==="durable-reader"&&!this.pollTimer){this.pollCursor={updatedAt:Date.now(),jobId:""},this.pollTimer=setInterval(()=>{this.pollDurableUpdates()},250),this.pollTimer.unref(),this.logger.debug("Job progress monitor ready (durable polling mode)");return}this.logger.debug("Job progress monitor ready (event-driven mode)")}stop(){return this.stopPromise??=this.stopMonitor(),this.stopPromise}async stopMonitor(){if(this.stopped=!0,this.pollTimer)clearInterval(this.pollTimer);this.pollTimer=void 0,await this.activePoll,this.logger.debug("Job progress monitor stopped")}pollDurableUpdates(){if(this.stopped)return Promise.resolve();if(this.activePoll)return this.activePoll;let e=Promise.resolve().then(()=>this.pollPage());this.activePoll=e;let t=()=>{this.activePoll=void 0};return e.then(t,t),e}async pollPage(){try{let e=await this.jobQueueService.getRuntimeUpdates(this.pollCursor,100);for(let t of e)if(this.pollCursor=t.cursor,t.job.status==="processing"&&t.job.progress)await this.publishJobProgress(t.job,t.job.progress);else if(t.job.status==="completed"||t.job.status==="failed")await this.handleJobStatusChange(t.job.id,t.job.status,t.job.metadata)}catch(e){this.logger.error("Failed to poll durable job progress",{error:e})}}createProgressReporter(e,t){let n=lo.from(async(r)=>{await this.emitJobProgress(e,r,t)});if(!n)throw Error("Failed to create ProgressReporter");return n}async emitBatchProgress(e,t,n){try{let r={totalOperations:t.totalOperations,completedOperations:t.completedOperations,failedOperations:t.failedOperations,currentOperation:t.currentOperation??"Processing batch...",errors:t.errors},i={id:e,type:"batch",status:t.status,metadata:n,batchDetails:r};if(t.totalOperations>0)i.progress={current:t.completedOperations,total:t.totalOperations,percentage:Math.round(t.completedOperations/t.totalOperations*100)};await this.messageBus.send({type:xp.progress,payload:i,sender:"job-progress-monitor",broadcast:!0}),this.logger.debug("Emitted batch progress update",{batchId:e,status:t.status,progress:`${t.completedOperations}/${t.totalOperations}`})}catch(r){this.logger.error("Error emitting batch progress update",{batchId:e,error:r})}}isBatchChild(e,t){return!!t&&t!==e}get publishesEvents(){return this.mode!=="durable-writer"}async broadcastEvent(e){await this.messageBus.send({type:xp.progress,payload:e,sender:"job-progress-monitor",broadcast:!0})}async emitJobProgress(e,t,n){try{if(n&&!await this.jobQueueService.recordAttemptProgress(e,n,t)){this.logger.debug("Discarding progress from obsolete job attempt",{jobId:e,attemptId:n});return}if(!this.publishesEvents)return;let r=await this.jobQueueService.getStatus(e);if(!r){this.logger.warn("Job not found for progress update",{jobId:e});return}await this.publishJobProgress(r,t)}catch(r){this.logger.error("Error emitting job progress",{jobId:e,error:r})}}async publishJobProgress(e,t){if(e.metadata.silent)return;if(this.isBatchChild(e.id,e.metadata.rootJobId))return;let n=t.total??0,r={id:e.id,type:"job",status:"processing",metadata:e.metadata,message:t.message};if(n>0)r.progress={current:t.progress,total:n,percentage:Math.round(t.progress/n*100)};await this.broadcastEvent(r)}async emitJobCompletion(e){await this.emitJobStatusEvent(e,"completed")}async emitJobFailure(e){await this.emitJobStatusEvent(e,"failed")}async emitJobStatusEvent(e,t){if(!this.publishesEvents)return;try{let n=await this.jobQueueService.getStatus(e);if(!n){this.logger.warn(`Cannot emit ${t} for unknown job`,{jobId:e});return}if(n.metadata.silent)return;if(this.isBatchChild(e,n.metadata.rootJobId)){this.logger.debug(`Skipping individual job ${t} for batch operation`,{jobId:e,rootJobId:n.metadata.rootJobId});return}let r={id:e,type:"job",status:t,message:this.extractStatusMessage(n,t),metadata:n.metadata,jobDetails:{jobType:n.type,priority:n.priority,retryCount:n.retryCount}};await this.broadcastEvent(r),this.logger.debug(`Emitted job ${t} event`,{jobId:e})}catch(n){this.logger.error(`Error emitting job ${t} event`,{jobId:e,error:n})}}extractStatusMessage(e,t){if(t==="failed")return e.lastError??void 0;if(!e.result)return;try{let n=h8.parse(e.result),r=n.message;if(r)return String(r);let i=n.routesBuilt;if(i!==void 0)return`${i} routes built`}catch{}return}getStats(){return{isRunning:!this.stopped&&(this.mode!=="durable-reader"||this.pollTimer!==void 0)}}async handleJobStatusChange(e,t,n){if(!this.publishesEvents)return;let r=n?xa.safeParse(n):void 0,i=r?.success?r.data:void 0;if(i?.silent)return;try{if(await this.emitJobStatusEvent(e,t),i&&this.isBatchChild(e,i.rootJobId))try{let o=i.rootJobId,s=await this.batchJobManager.getBatchStatus(o);if(s){let c=s.metadata??i;await this.emitBatchProgress(o,s,c)}}catch(o){this.logger.warn("Failed to emit batch progress",{jobId:e,rootJobId:i.rootJobId,error:o})}}catch(o){this.logger.error("Failed to handle job status change",{jobId:e,status:t,error:o})}}}var y8=a.record(a.string(),a.unknown());class vp{logger;schema;jobTypeName;executionTimeoutMs;constructor(e,t){this.logger=e,this.schema=t.schema,this.jobTypeName=t.jobTypeName,this.executionTimeoutMs=t.executionTimeoutMs}validateAndParse(e){if(!this.schema)throw Error(`${this.jobTypeName}: No schema provided. Override validateAndParse() or provide a schema.`);let t=this.schema.safeParse(e);if(!t.success)return this.logger.warn(`Invalid ${this.jobTypeName} job data`,{data:e,validationError:t.error.issues}),null;return this.logger.debug(`${this.jobTypeName} job data validation successful`,{data:this.summarizeDataForLog(t.data)}),t.data}async onError(e,t,n,r,i){this.logger.error(`${this.jobTypeName} job error handler triggered`,{jobId:n,errorMessage:e.message,errorStack:e.stack,data:this.summarizeDataForLog(t)})}async reportProgress(e,t){await e.report({progress:t.progress,total:t.total??100,message:t.message})}summarizeDataForLog(e){let t=y8.safeParse(e);return t.success?t.data:{}}}function wp(e,t,n){return async(r)=>{let{type:i,data:o,toolContext:s=null,options:c,projection:l}=r,u=s?KN(s):void 0,{metadata:p,...m}=c??{},g={operationType:"data_processing",pluginId:t,...p,...s&&{interfaceType:s.interfaceType,conversationId:s.conversationId,channelId:s.channelId,requestedByActor:s.actor,...u?{requestedByUserId:u}:{},requestedByInterface:s.interfaceType,...s.progressToken!==void 0&&{progressToken:s.progressToken}}};if(s&&!u)delete g.requestedByUserId;let f={...m,source:t,...c?.rootJobId&&{rootJobId:c.rootJobId},...l&&{projection:l},metadata:g},v=n&&!i.includes(":")?`${t}:${i}`:i;return e.enqueue({type:v,data:o,options:f})}}function xT(e,t){return async(n,r)=>{let i=r?.rootJobId??it(),o=n.map((c)=>({...c,type:c.type.includes(":")?c.type:`${t}:${c.type}`})),s={...r,source:t,rootJobId:i,metadata:{...r?.metadata,operationType:"batch_processing",pluginId:t}};return await e.enqueueBatch(o,s,i,t),i}}function vT(e,t){return(n,r)=>{let i=n.includes(":")?n:`${t}:${n}`;e.registerHandler(i,r,t)}}var b8=a.custom((e)=>typeof e==="object"&&e!==null&&("safeParse"in e)),S8=a.object({name:a.string(),schema:b8});function YN(e){return S8.safeParse(e).success}function x8(e){if(!e)return;return{status:e.status,message:e.message,lastCheck:e.lastCheck?.toISOString(),details:e.details}}function XN(e){return{model:e.model,version:e.version,uptime:e.uptime,entities:e.entities,entityCounts:e.entityCounts,embeddings:e.embeddings,ai:e.ai,daemons:e.daemons.map((t)=>({name:t.name,pluginId:t.pluginId,status:t.status,health:x8(t.health)})),endpoints:e.endpoints,interactions:e.interactions}}var eB={digest:"conversation:digest"};var v8="/api/chat",Hn="web-chat-guest",Cg=a.strictObject({idleSeconds:a.number().int().positive().max(Math.floor(Number.MAX_SAFE_INTEGER/1000)),maxAgeSeconds:a.number().int().positive().max(Math.floor(Number.MAX_SAFE_INTEGER/1000))}).refine((e)=>e.idleSeconds<=e.maxAgeSeconds,"Guest idle expiry must not exceed maximum age"),Eg=a.strictObject({visitorId:a.string().uuid(),retention:Cg}),Ce=a.string().trim().min(1).max(256),Aze="x-brain-conversation-id",Oze=a.strictObject({expiresAt:a.number().int().positive(),provider:a.string().min(1),notice:a.string().min(1),deletionLimitations:a.string().min(1),retention:Cg,messageCharacters:a.number().int().positive(),canSend:a.boolean(),presentation:rB.optional()}),w8=a.strictObject({conversationId:Ce,state:a.enum(["active","completed","failed","interrupted","uncertain"])}),sB=a.string().regex(/^upload-[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i),ET=a.string().trim().min(1).max(48),IT=a.string().datetime(),tB=a.string().regex(/^\/(?!\/)/).max(2048),al=a.string().regex(/^(?:\/(?!\/)|https?:\/\/)/).max(2048),T8=a.looseObject({kind:a.literal("tool-approval"),id:Ce,toolCallId:Ce.optional(),toolName:a.string().trim().min(1).max(256),input:a.record(a.string(),a.unknown()).optional(),summary:a.string().max(4096),completionSummary:a.string().max(4096).optional(),preview:a.string().max(1e5).optional(),state:a.enum(["approval-requested","approval-responded","output-available","output-denied","output-error"]),output:a.unknown().optional(),error:a.string().max(4096).optional()}),C8=a.looseObject({entityType:a.string().trim().min(1).max(128).optional(),entityId:Ce.optional(),attachmentType:a.string().trim().min(1).max(128).optional()}),E8=a.looseObject({mediaType:a.string().trim().min(1).max(255),url:al,downloadUrl:al.optional(),previewUrl:al.optional(),filename:a.string().trim().min(1).max(255).optional(),sizeBytes:a.number().int().nonnegative().optional(),source:C8.optional()}),aB=a.looseObject({kind:a.literal("attachment"),id:Ce,jobId:Ce.optional(),title:a.string().max(4096),description:a.string().max(20000).optional(),attachment:E8}),I8=a.looseObject({id:Ce,title:a.string().max(4096).optional(),source:a.string().trim().min(1).max(512),url:al.optional(),entityType:a.string().trim().min(1).max(128).optional(),entityId:Ce.optional(),excerpt:a.string().max(20000).optional(),provenance:a.record(a.string(),a.unknown()).optional(),brain:iB.optional()}),RT=a.looseObject({kind:a.literal("sources"),id:Ce,title:a.string().max(4096).optional(),sources:a.array(I8).min(1).max(100)}),R8=a.discriminatedUnion("type",[a.object({type:a.literal("prompt"),id:Ce,label:a.string().trim().min(1).max(256),prompt:a.string().min(1).max(1e5),description:a.string().max(4096).optional()}),a.object({type:a.literal("event"),id:Ce,label:a.string().trim().min(1).max(256),event:a.string().trim().min(1).max(256),fromState:a.string().trim().min(1).max(256).optional(),description:a.string().max(4096).optional()})]),cB=a.looseObject({kind:a.literal("actions"),id:Ce,title:a.string().max(4096).optional(),actions:a.array(R8).min(1).max(100)}),lB=a.discriminatedUnion("kind",[T8,aB,RT,cB]);function nB(e){if(!e||e.length>512)return;let t;try{t=new URL(e)}catch{return}return t.protocol==="https:"&&!t.username&&!t.password&&t.href.length<=512?t.href:void 0}function Dze(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e.slice(0,10)){let i=RT.safeParse(r);if(!i.success||i.data.id!=="sources:tool-results")continue;for(let o of i.data.sources){if(t.length>=15)break;if(!o.entityType||!o.entityId||o.entityId.length>256||o.source!==o.entityType||o.id!==`${o.entityType}:${o.entityId}`||n.has(o.id))continue;n.add(o.id);let s=nB(o.url),c=nB(o.brain?.url);t.push({id:o.id,source:o.entityType,entityType:o.entityType,entityId:o.entityId,title:(o.title??o.entityId).slice(0,160),...o.excerpt?{excerpt:o.excerpt.slice(0,280)}:{},...s?{url:s}:{},...o.brain?{brain:{name:o.brain.name.slice(0,120),...c?{url:c}:{}}}:{}})}}return t.length?[{kind:"sources",id:"sources:tool-results",title:"Retrieved sources",sources:t}]:[]}var k8=a.object({id:Ce,toolCallId:Ce.optional(),toolName:a.string().trim().min(1).max(256),summary:a.string().max(4096),completionSummary:a.string().max(4096).optional(),preview:a.string().max(1e5).optional(),args:a.unknown()}),uB=a.object({toolName:a.string().trim().min(1).max(256),args:a.record(a.string(),a.unknown()).optional(),jobId:Ce.optional(),data:a.unknown().optional(),error:a.object({message:a.string().max(4096),code:a.string().trim().min(1).max(256).optional()}).optional()}),zze=a.looseObject({text:a.string().max(1e6),toolResults:a.array(uB).max(100).optional(),cards:a.array(lB).max(100).optional(),pendingConfirmations:a.array(k8).max(100).optional(),usage:a.object({promptTokens:a.number().int().nonnegative(),completionTokens:a.number().int().nonnegative(),totalTokens:a.number().int().nonnegative()})});function Mze(e=v8){let t=P8(e);return{stream:t,actions:`${t}/actions`,sessions:`${t}/sessions`,sessionArchive:`${t}/sessions/archive`,messages:`${t}/messages`,uploads:`${t}/uploads`,contextSessions:`${t}/context-sessions`,documentAttachments:`${t}/attachments/document`,imageAttachments:`${t}/attachments/image`,jobStatus:`${t}/jobs/status`}}function P8(e){let t=e.trim();if(!t.startsWith("/")||t.startsWith("//")||t.length>512||/[\s"'<>\\]/u.test(t)||t.includes("?")||t.includes("#"))throw Error("Chat API path must be a same-origin absolute path without query or fragment");let n=t.replace(/\/+$/,"");if(n.length===0)throw Error("Chat API path must not be the site root");return n}var A8=a.strictObject({version:a.literal(1),sourceId:a.string().trim().regex(/^[a-z][a-z0-9-]*$/).max(64),itemId:a.string().trim().min(1).max(300),titleSeed:a.string().trim().min(1).max(160).refine((e)=>!/[\p{Cc}\p{Cf}]/u.test(e))}),jze=a.object({query:a.string().trim().max(200).default(""),archived:a.boolean().default(!1),offset:a.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).default(0),limit:a.number().int().min(1).max(100).default(25)}),O8=a.looseObject({id:Ce,title:ET,lastActiveAt:IT,archived:a.boolean().optional(),contextHandoff:A8.optional()}),Nze=a.looseObject({sessions:a.array(O8).max(100)}),D8=a.looseObject({kind:a.string().trim().min(1).max(64),id:Ce}),z8=a.looseObject({kind:a.literal("text"),filename:a.string().trim().min(1).max(255),mediaType:a.string().trim().min(1).max(255),sizeBytes:a.number().int().nonnegative(),createdAt:IT,source:D8.optional()}),pB=a.looseObject({id:Ce,role:a.enum(["user","assistant"]),content:a.string().max(1e6),attachments:a.array(z8).max(100).optional(),cards:a.array(lB).max(100).optional(),askedBefore:CT.optional()}),Bze=a.looseObject({messages:a.array(pB).max(100)}),_ze=a.string().min(1).max(256).refine((e)=>e.trim().length>0),Fze=a.strictObject({messages:a.array(pB).max(100),submission:w8.nullable()}),Lze=a.object({type:a.literal("text"),text:a.string().max(1e6)}),qze=a.object({type:a.literal("file"),mediaType:a.string().trim().min(1).max(255).optional(),filename:a.string().trim().min(1).max(255).optional(),url:a.string().min(1).max(2000000)}),dB=a.object({kind:a.literal("upload"),id:sB}),Zze=a.object({type:a.literal("data-upload"),data:a.looseObject({ref:dB})}),M8=a.object({id:Ce,approved:a.boolean(),toolCallId:Ce.optional(),toolName:a.string().trim().min(1).max(256).optional(),input:a.record(a.string(),a.unknown()).optional(),title:a.string().max(4096).optional()}),$ze=a.looseObject({state:a.literal("approval-responded"),toolCallId:Ce.optional(),toolName:a.string().trim().min(1).max(256).optional(),input:a.record(a.string(),a.unknown()).optional(),title:a.string().max(4096).optional(),approval:M8}),j8=a.object({id:Ce.optional(),role:a.enum(["user","assistant","system"]),parts:a.array(a.unknown()).max(1000).optional(),content:a.string().max(1e6).optional()}),Uze=a.object({id:Ce.optional(),messages:a.array(j8).min(1).max(200),trigger:a.string().trim().min(1).max(64).optional()}).strict(),Wze=a.strictObject({id:Ce.optional(),messages:a.array(a.strictObject({id:Ce,role:a.literal("user"),parts:a.array(a.strictObject({type:a.literal("text"),text:a.string()})).min(1).max(16)})).length(1)}),mB=a.enum(["pending","processing","completed","failed"]),N8=a.looseObject({type:a.enum(["job","batch"]),status:mB,operationType:a.enum(["file_operations","content_operations","data_processing","batch_processing"]),operationTarget:a.string().max(1024).optional(),message:a.string().max(4096).optional(),progress:a.object({current:a.number().nonnegative(),total:a.number().nonnegative(),percentage:a.number().min(0).max(100)}).optional()}),B8=a.looseObject({status:a.enum(["tool-running","tool-completed","tool-awaiting-approval","tool-failed"]),toolName:a.string().trim().min(1).max(256),error:a.string().max(4096).optional()}),Jze=a.discriminatedUnion("type",[a.looseObject({type:a.literal("start"),messageId:Ce.optional()}),a.looseObject({type:a.literal("start-step")}),a.looseObject({type:a.literal("finish-step")}),a.looseObject({type:a.literal("finish"),finishReason:a.enum(["length","error","stop","content-filter","tool-calls","other"]).optional()}),a.looseObject({type:a.literal("abort"),reason:a.string().max(4096).optional()}),a.looseObject({type:a.literal("error"),errorText:a.string().max(20000)}),a.looseObject({type:a.literal("text-start"),id:Ce}),a.looseObject({type:a.literal("text-delta"),id:Ce,delta:a.string().max(1e6)}),a.looseObject({type:a.literal("text-end"),id:Ce}),a.looseObject({type:a.literal("reasoning-start"),id:Ce}),a.looseObject({type:a.literal("reasoning-delta"),id:Ce,delta:a.string().max(1e6)}),a.looseObject({type:a.literal("reasoning-end"),id:Ce}),a.looseObject({type:a.literal("tool-input-start"),toolCallId:Ce,toolName:a.string().trim().min(1).max(256),title:a.string().max(4096).optional()}),a.looseObject({type:a.literal("tool-input-delta"),toolCallId:Ce,inputTextDelta:a.string().max(1e6)}),a.looseObject({type:a.literal("tool-input-available"),toolCallId:Ce,toolName:a.string().trim().min(1).max(256),input:a.unknown(),title:a.string().max(4096).optional()}),a.looseObject({type:a.literal("tool-input-error"),toolCallId:Ce,toolName:a.string().trim().min(1).max(256),input:a.unknown(),errorText:a.string().max(20000),title:a.string().max(4096).optional()}),a.looseObject({type:a.literal("tool-approval-request"),approvalId:Ce,toolCallId:Ce}),a.looseObject({type:a.literal("tool-output-available"),toolCallId:Ce,output:a.unknown(),preliminary:a.boolean().optional()}),a.looseObject({type:a.literal("tool-output-error"),toolCallId:Ce,errorText:a.string().max(20000)}),a.looseObject({type:a.literal("tool-output-denied"),toolCallId:Ce}),a.looseObject({type:a.literal("source-url"),sourceId:Ce,url:al,title:a.string().max(4096).optional()}),a.looseObject({type:a.literal("source-document"),sourceId:Ce,mediaType:a.string().trim().min(1).max(255),title:a.string().max(4096),filename:a.string().trim().min(1).max(255).optional()}),a.looseObject({type:a.literal("file"),url:al,mediaType:a.string().trim().min(1).max(255)}),a.looseObject({type:a.literal("data-progress"),id:Ce.optional(),data:N8,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-status"),id:Ce.optional(),data:B8,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-tool-result"),id:Ce.optional(),data:uB,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-actions"),id:Ce.optional(),data:cB,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-sources"),id:Ce.optional(),data:RT,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-asked-before"),id:Ce.optional(),data:CT,transient:a.boolean().optional()}),a.looseObject({type:a.literal("data-attachment"),id:Ce.optional(),data:aB,transient:a.boolean().optional()})]),Hze=a.strictObject({conversationId:Ce}),Gze=a.object({title:ET}).strict(),Vze=a.object({renamed:a.boolean(),title:ET}),Qze=a.object({archived:a.boolean()}),Kze=a.object({deleted:a.boolean()}),Yze=a.object({conversationId:Ce,action:oB}).strict(),Xze=a.looseObject({id:Ce,status:mB,message:a.string().max(4096).optional()}),e0e=a.looseObject({id:sB,ref:dB,filename:a.string().trim().min(1).max(255),mediaType:a.string().trim().min(1).max(255),sizeBytes:a.number().int().nonnegative(),createdAt:IT,url:tB,downloadUrl:tB}).refine((e)=>e.id===e.ref.id,{path:["ref","id"],message:"Upload response ids must match"});var le=ot("conversations",{id:V("id").primaryKey(),sessionId:V("session_id").notNull(),interfaceType:V("interface_type").notNull(),channelId:V("channel_id").notNull(),personId:V("person_id"),started:V("started").notNull(),lastActive:V("last_active").notNull(),metadata:V("metadata"),created:V("created").notNull(),updated:V("updated").notNull()},(e)=>({sessionIdx:ut("idx_conversations_session").on(e.sessionId),channelIdx:ut("idx_conversations_channel").on(e.channelId),personIdx:ut("idx_conversations_person").on(e.personId),interfaceSessionIdx:ut("idx_conversations_interface_session").on(e.interfaceType,e.sessionId),interfaceChannelIdx:ut("idx_conversations_interface_channel").on(e.interfaceType,e.channelId)})),$t=ot("messages",{id:V("id").primaryKey(),conversationId:V("conversation_id").notNull().references(()=>le.id,{onDelete:"cascade"}),role:V("role").notNull(),content:V("content").notNull(),timestamp:V("timestamp").notNull(),metadata:V("metadata")},(e)=>({conversationIdx:ut("idx_messages_conversation").on(e.conversationId),timestampIdx:ut("idx_messages_timestamp").on(e.timestamp)})),va=ot("summary_tracking",{conversationId:V("conversation_id").primaryKey().references(()=>le.id,{onDelete:"cascade"}),lastSummarizedAt:V("last_summarized_at"),lastMessageId:V("last_message_id"),messagesSinceSummary:xe("messages_since_summary").default(0),updated:V("updated").notNull()});function fB(e){return Xr({url:e.url,schema:{conversations:le,messages:$t,summaryTracking:va},authToken:e.authToken,authTokenEnv:"CONVERSATION_DATABASE_AUTH_TOKEN"})}var _8=a.preprocess((e)=>{if(typeof e!=="string")return e;try{return JSON.parse(e)}catch{return}},a.record(a.string(),a.unknown())).catch({});function po(e){return _8.parse(e)}var Ig="conversation:messageAdded",Rg="conversation:guestMessageAdded",kT="conversation:started",Tp=a.object({identity:Ai,interfaceType:a.string(),role:tl,displayName:a.string().optional(),username:a.string().optional(),isBot:a.boolean().optional()}),F8=a.preprocess(L8,Tp);function L8(e){if(!Rr(e)||"identity"in e)return e;let{actorId:t,interfaceType:n,role:r}=e;if(typeof t!=="string"||typeof n!=="string"||r!=="user"&&r!=="assistant")return e;let{userId:i,canonicalId:o}=e;return{identity:gB({actorId:t,interfaceType:n,role:r,...typeof i==="string"?{userId:i}:{},...typeof o==="string"?{canonicalId:o}:{}}),interfaceType:n,role:r,...typeof e.displayName==="string"?{displayName:e.displayName}:{},...typeof e.username==="string"?{username:e.username}:{},...typeof e.isBot==="boolean"?{isBot:e.isBot}:{}}}var Cp=a.object({messageId:a.string().optional(),channelId:a.string().optional(),channelName:a.string().optional(),threadId:a.string().optional(),metadata:a.record(a.string(),a.unknown()).optional()}),hB=a.looseObject({actor:F8.optional(),source:Cp.optional()});function yB(e){if(typeof e==="string")try{let t=JSON.parse(e);return Rr(t)?t:null}catch{return null}return Rr(e)?e:null}function q8(e){if(e.role!=="assistant")return!1;if(e.content.trim().length===0)return!1;let t=yB(e.metadata),n=t?.entityMemoryRefs;if(Array.isArray(n)&&n.length>0)return!1;let r=t?.cards;if(!Array.isArray(r))return!0;return!r.some((i)=>{if(!Rr(i))return!1;if(i.kind==="tool-approval")return!0;return i.kind==="actions"&&i.id==="actions:upload-intent"})}var Z8=a.object({id:a.string(),conversationId:a.string(),role:a.string(),content:a.string(),timestamp:a.string(),metadata:a.string().nullable()}),bB=a.object({conversationId:a.string(),messageCount:a.number(),messages:a.array(Z8),windowStart:a.number(),windowEnd:a.number(),windowSize:a.number(),timestamp:a.string()});var ri=b`strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;function PT(){return xB(!1)}function SB(){return xB(!0)}function xB(e){let t=Cg.shape.maxAgeSeconds.maxValue,n=b`(
156
156
  CAST(round((julianday(${ri}) - julianday(${le.started})) * 86400000) AS INTEGER) >= json_extract(${le.metadata}, '$.guest.retention.maxAgeSeconds') * 1000
157
157
  OR CAST(round((julianday(${ri}) - julianday(${le.lastActive})) * 86400000) AS INTEGER) >= json_extract(${le.metadata}, '$.guest.retention.idleSeconds') * 1000
158
158
  )`;return b`CASE WHEN json_valid(${le.metadata}) THEN coalesce(
@@ -177,10 +177,10 @@ Instructions:
177
177
  AND instr(lower(${$t.content}), ${r.trim().toLowerCase()}) > 0)
178
178
  )`:void 0].filter((g)=>g!==void 0),m=this.db.select().from(le).orderBy(wt(le.lastActive),wt(le.id)).limit(t).offset(n);if(p.length===0)return m;return m.where(H(...p))}async searchConversations(e,t){let n=`%${e.toLowerCase()}%`;return(await this.db.selectDistinct({conversation:le}).from(le).leftJoin($t,A($t.conversationId,le.id)).where(H(Zo(le.interfaceType,Hn),t?b`lower(${$t.content}) LIKE ${n} AND ${le.sessionId} = ${t}`:b`lower(${$t.content}) LIKE ${n}`)).orderBy(wt(le.lastActive))).map((i)=>i.conversation)}async countMessages(e){let t=await this.getConversation(e);if(!t)return 0;let[n]=await this.db.select({count:$D()}).from($t).where(H(A($t.conversationId,e),na(this.db.select({id:le.id}).from(le).where(this.accessCondition(t)))));return Number(n?.count??0)}async updateConversationMetadata(e){let t=await this.getConversation(e.conversationId);if(!t)return!1;if(t.interfaceType===Hn&&"guest"in e.metadata)throw Error("Guest ownership cannot be changed");let n=new Date().toISOString(),r={...po(t.metadata),...e.metadata},i=Promise.resolve().then(()=>this.db.update(le).set({metadata:JSON.stringify(r),updated:n}).where(this.accessCondition(t)).returning({id:le.id})),o=t.interfaceType===Hn?await i.catch(()=>null):await i;if(!o)throw Error("Guest conversation write unavailable");if(o.length!==1)return!1;if(t.interfaceType!==Hn)this.logger.debug("Updated conversation metadata",{conversationId:e.conversationId});return!0}async deleteExpiredGuestConversations(e=100){a.number().int().min(1).max(1000).parse(e);let t=this.db.select({id:le.id}).from(le).where(H(A(le.interfaceType,Hn),SB())).orderBy(Ue(le.lastActive)).limit(e);return(await this.db.delete(le).where(Ke(le.id,t)).returning({id:le.id})).length}async deleteConversation(e){let t=await this.findConversation(e);if(!t)return!1;if(await this.db.delete(le).where(A(le.id,e)),t.interfaceType!==Hn)this.logger.debug("Deleted conversation",{conversationId:e});return!0}async checkAndBroadcastDigest(e,t){let n=await this.countMessages(e),r=this.config.digestTriggerInterval??10;if(n>0&&n%r===0)await this.broadcastDigest(e,n,t)}async broadcastDigest(e,t,n){let r=this.config.digestWindowSize??20,i=Math.max(1,t-r+1),o=t,s=await this.getMessages(e,{range:{start:i,end:o}}),c={conversationId:e,messageCount:t,messages:s,windowStart:i,windowEnd:o,windowSize:s.length,timestamp:n};await this.messageBus.send({type:eB.digest,payload:c,sender:"conversation-service",broadcast:!0}),this.logger.debug("Broadcast conversation digest",{conversationId:e,messageCount:t,windowStart:i,windowEnd:o,windowSize:s.length})}}function U8(e){let t=tl.safeParse(e);return t.success?t.data:"user"}function Pg(e){let t=po(e.metadata),n=typeof t.channelName==="string"?t.channelName:void 0;return{id:e.id,sessionId:e.sessionId,interfaceType:e.interfaceType,channelId:e.channelId,...e.personId?{personId:e.personId}:{},channelName:n,startedAt:e.started,lastActiveAt:e.lastActive,createdAt:e.created,updatedAt:e.updated,metadata:t}}function vB(e){return{id:e.id,conversationId:e.conversationId,role:U8(e.role),content:e.content,timestamp:e.timestamp,metadata:po(e.metadata)}}function wB(e){return fw.parse(e)}function TB(e){return gw.parse(e)}function W8(e){return YN(e[0])}function CB(e){return async()=>XN(await e.getAppInfo())}function EB(e,t){return{get:()=>wB(e.getIdentity()),getProfile:()=>TB(e.getProfile()),getAppInfo:t}}function IB(e,t){let n=e.getProfileKindRegistry();return{register:(r)=>{n.register(t,r)},getResolved:()=>n.getResolved(),getSelectedDefinition:()=>n.getSelectedDefinition()}}function AT(e){let t=e.getChannelRegistry();return{listDescriptors:()=>t.listDescriptors(),getDescriptor:(n)=>t.getDescriptor(n),getDeliveryProvider:(n)=>t.getDeliveryProvider(n)}}function RB(e,t){let n=e.getOperationalHealthRegistry();return{register:(r,i)=>n.register(t,r,i)}}function kB(e,t){let n=e.getInboxRegistry();return{registerSource:(r)=>{n.registerSource(t,r)},listSources:()=>n.listSources(),getSource:(r)=>n.getSource(r)}}function PB(e,t){let n=e.getInboxFollowUpRegistry();return{registerKind:(r)=>{n.registerKind(t,r)},listKinds:()=>n.listKinds(),getKind:(r)=>n.getKind(r),resolve:(r)=>n.resolve(r),resolveUniversal:(r)=>n.resolveUniversal(r)}}function AB(e,t){let n=e.getChannelRegistry();return{...AT(e),registerDescriptor:(r)=>{n.registerDescriptor(t,r)},registerDeliveryProvider:(r)=>{n.registerDeliveryProvider(t,r)}}}function OB(e,t,n,r=!1){let i=e.getMessageBus();return{send:async(s)=>i.send({...s,sender:t}),subscribe:(...s)=>{if(r)return()=>{};if(W8(s)){let[u,p]=s,m=async(g)=>{let f=u.schema.safeParse(g.payload);if(!f.success)return n.warn(`Invalid payload for channel ${u.name}`,{error:f.error.message}),{noop:!0};let{payload:v,...w}=g;return p(f.data,w)};return i.subscribe(u.name,m)}let[c,l]=s;return i.subscribe(c,l)},subscribeExecution:(s,c)=>i.subscribe(s,c)}}function DB(e,t){let n=e.getJobQueueService();return{...e.jobs,enqueue:wp(n,t,!0),enqueueBatch:xT(e.jobs,t),registerHandler:vT(n,t)}}function zB(e){let t=e.getPermissionService();return{assertEntityActionAllowed:(n,r,i)=>{t.assertEntityActionAllowed(n,r,i.userPermissionLevel)}}}function MB(e){return{get:async(t)=>{let r=await e.getConversationService().getConversation(t);return r?Pg(r):null},search:async(t)=>(await e.getConversationService().searchConversations(t)).map(Pg),list:async(t)=>(await e.getConversationService().listConversations(t)).map(Pg),getMessages:async(t,n)=>(await e.getConversationService().getMessages(t,n)).map(vB),countMessages:async(t)=>e.getConversationService().countMessages(t)}}function jB(e,t){return{registerHandler:(n,r)=>{e.registerEvalHandler(t,n,r)}}}function NB(e){return{register:(t,n)=>{e.getInsightsRegistry().register(t,n)}}}function BB(e){return{has:(t)=>e.getPluginPackageName(t)!==void 0}}function _B(e,t){return{register:(n)=>{e.registerEndpoint({...n,pluginId:t})}}}function FB(e,t){return{register:(n)=>{e.registerInteraction({...n,pluginId:t})}}}var Ep="studio:register-workspace",Ag="studio:unregister-workspace",OT="DeclarativeOperatorWorkspace";function J8(e,t){if(e.userPermissionLevel!=="admin")throw Error(`${t} requires admin permission`)}function Og(e,t){return Error(`Studio workspace ${e} failed: ${t??"unknown host error"}`)}function LB(e,t,n){return{isAvailable:()=>n(Ep),async registerWorkspace(r){if(!n(Ep))return!1;let i=await e.send({type:Ep,payload:{...r,pluginId:t}});if("noop"in i)throw Og("register",void 0);if(!i.success||i.data===void 0)throw Og("register",i.error);return i.data},async unregisterWorkspace(r){if(!n(Ag))return!1;let i={pluginId:t,...r?{workspaceId:r}:{}},o=await e.send({type:Ag,payload:i});if("noop"in o)throw Og("unregister",void 0);if(!o.success)throw Og("unregister",o.error);return!0}}}var zT="DeclarativeOperatorWidget",zg="studio:register-overview-contribution",DT="studio:unregister-overview-contribution";function Dg(e,t){if("success"in t&&t.success)return!0;let n="error"in t?t.error:void 0;throw Error(`Dashboard widget ${e} failed: ${n??"unknown host error"}`)}function qB(e,t,n){return{isAvailable:()=>n(cl.registerWidget)||n(zg),registerWidget:async(r)=>{let i=!1;if(n(cl.registerWidget)){let s=await e.send({type:cl.registerWidget,payload:{...r,pluginId:t}});Dg("register",s),i=!0}let o=r.visibility??"public";if(o!=="public"&&n(zg)){let s={...r,pluginId:t,visibility:o},c=await e.send({type:zg,payload:s});Dg("register",c),i=!0}return i},unregisterWidget:async(r)=>{let i=!1;if(n(cl.unregisterWidget)){let o=await e.send({type:cl.unregisterWidget,payload:{pluginId:t,...r?{widgetId:r}:{}}});Dg("unregister",o),i=!0}if(n(DT)){let o={pluginId:t,...r?{contributionId:r}:{}},s=await e.send({type:DT,payload:o});Dg("unregister",s),i=!0}return i}}}var MT=a.object({name:a.string(),description:a.string(),tags:a.array(a.string()),examples:a.array(a.string())});var ZB=100;function H8(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,200);return t.length>0?t:"skill"}function $B(e){return{async list(){let t=e.getEntityService();if(t.hasEntityType("skill")){let n;try{n=await t.listEntities({entityType:"skill",options:{filter:{visibilityScope:"public"}}})}catch{n=void 0}if(n!==void 0){let r=n.map((i)=>MT.safeParse(i.metadata)).filter((i)=>i.success).map(({data:i})=>({id:H8(i.name),name:i.name,description:i.description,tags:i.tags,examples:i.examples}));if(r.length>0)return r.slice(0,ZB)}}return e.listToolsForPermissionLevel("public").map((n)=>({id:n.name,name:n.name,description:n.description,tags:[],examples:[]})).slice(0,ZB)}}}function wa(e,t,n){let r=e.getEntityService(),i=e.getLogger().child(t),o=e.getDomain(),s=e.getLocalSiteUrl(),c=e.shouldPreferLocalUrls(),l=e.getThemeCSS(),u=CB(e),p=e.getAttachmentRegistry(),m=e.getRuntimeUploadRegistry(),g=e.getRuntimeState(),f=e.getAccountSettingsRegistry(),v=n?.executionOnly===!0,w=OB(e,t,i,v);return{pluginId:t,executionOnly:v,logger:i,entityService:r,semantic:{project:(k)=>r.projectSemanticSpace(k)},identity:EB(e,u),profileKinds:IB(e,t),channels:AT(e),publicSkills:$B(e),inbox:kB(e,t),inboxFollowUps:PB(e,t),appInfo:u,readiness:()=>e.getRuntimeReadiness(),operationalHealth:RB(e,t),judge:(k)=>e.judge(k),domain:o,siteUrl:o?`https://${o}`:void 0,localSiteUrl:s,previewUrl:o?`https://${cT(o)}`:void 0,preferLocalUrls:c,themeCSS:l,entityDisplay:n?.entityDisplay,spaces:e.getSpaces(),permissions:zB(e),messaging:w,dashboard:qB(w,t,(k)=>e.getMessageBus().hasHandlers?.(k)??!1),studio:LB(w,t,(k)=>e.getMessageBus().hasHandlers?.(k)??!1),jobs:DB(e,t),attachments:p,uploads:m,accountSettings:f,runtimeState:g,recurringChecks:e.getRecurringChecks(t),conversations:MB(e),dataDir:e.getDataDir(),gitBrokerSocket:e.getGitBrokerSocket(),gitBrokerCheckout:e.getGitBrokerCheckout(),eval:v?{registerHandler:()=>{}}:jB(e,t),insights:v?{register:()=>{}}:NB(e),plugins:BB(e),endpoints:v?{register:()=>{}}:_B(e,t),interactions:v?{register:()=>{}}:FB(e,t)}}function UB(e){return e.replace(/:/g,"-")}function G8(e){return e.split(/[:.-]/).map((t)=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function WB(e){return Ut(e,a.record(a.string(),a.unknown())).content}async function V8(e,t,n){let r=await e("prompt",UB(t));return r?.content?WB(r.content):n}var jT=new Map;async function Mg(e,t,n){let r=jT.get(t);if(r!==void 0)return r;let i=UB(t),o;try{o=await e.getEntity({entityType:"prompt",id:i})}catch{return n}if(o?.content){let l=WB(o.content);return jT.set(t,l),l}let s=G8(t),c=Mi(n,{title:s,target:t});try{await e.createEntity({entity:{id:i,entityType:"prompt",content:c,metadata:{title:s,target:t,slug:i}}})}catch{}return jT.set(t,n),n}async function Q8(e,t){let n=e.list().filter((r)=>!!r.basePrompt);return await Promise.all(n.map((r)=>Mg(t,r.name,r.basePrompt))),n.length}function jg(e){let t=e.getEntityService(),n=e.getEntityRegistry(),r=e.getDataSourceRegistry();return{registerGroupingSource:(i)=>n.registerGroupingSource(i),ensureGroupingsCurrent:()=>n.ensureGroupingsCurrent(),validateGroupings:(i)=>n.validateGroupings(i),replaceGroupings:(i,o)=>n.replaceGroupings(i,o),registerGrouping:(i)=>n.registerGrouping(i),getGroupings:()=>n.getGroupings(),isGroupingContributor:(i)=>n.isGroupingContributor(i),register:(i,o,s,c)=>{n.registerEntityType(i,o,s,c)},getAdapter:(i)=>{try{return n.getAdapter(i)}catch{return}},extendFrontmatterSchema:(i,o)=>{n.extendFrontmatterSchema(i,o)},getEffectiveFrontmatterSchema:(i)=>n.getEffectiveFrontmatterSchema(i),registerPersistValidator:(i,o)=>{n.registerPersistValidator(i,o)},registerCreateInterceptor:(i,o)=>{n.registerCreateInterceptor(i,o)},registerUploadSaveHandler:(i)=>{n.registerUploadSaveHandler(i)},getUploadSaveHandler:(i)=>n.getUploadSaveHandler(i),update:async(i)=>t.updateEntity({entity:i}),registerDataSource:(i)=>{r.register(i)}}}function Ng(e){return{resolve:(t,n)=>Mg(e,t,n)}}function Bg(e){return{query:(t,n)=>e.query(t,n),generate:async(t,n,r)=>(r?.throwIfAborted(),n.parse(await e.generateContent(t,r))),generateObject:async(t,n,r)=>e.generateObject(t,n,r),generateImage:async(t,n)=>e.generateImage(t,n),canGenerateImages:()=>e.canGenerateImages()}}function NT(e,t,n){let r=wa(e,t,n),i=e.getEntityService();return{...r,entityService:i,entities:jg(e),ai:Bg(e),prompts:Ng(i),permissions:r.permissions}}var BT=a.object({});class Ip extends Sa{type="entity";entityActionPolicy;constructor(e,t,n,r,i){super(e,t,n,r);if(i!==void 0)this.entityActionPolicy=i}async register(e,t){let n=NT(e,this.id,t);this.context=n,this.setupMessageHandlers(n);let r=this.getProjectionRules(n),i=this.getEntityTypeConfig(),o=r.some((g)=>g.targetType===this.entityType),s=i?.projectionSource!==!1&&i?.projectionSourceRole!=="excluded"&&(i?.projectionSource===!0||i?.projectionSourceRole!==void 0),c=o&&!s?{...i,projectionSource:!1,projectionSourceRole:"excluded"}:i;if(n.entities.register(this.entityType,this.schema,this.adapter,c),this.interceptCreate!==Ip.prototype.interceptCreate)n.entities.registerCreateInterceptor(this.entityType,(g,f)=>this.interceptCreate(g,f,n));let l=this.createGenerationHandler(n);if(l)n.jobs.registerHandler(`${this.entityType}:generation`,l);let u=this.getTemplates();if(u&&Object.keys(u).length>0)e.registerTemplates(u,this.id);let p=this.getDataSources();for(let g of p)n.entities.registerDataSource(g);await this.onRegister(this.context);let m=await this.getInstructions();return{tools:[],resources:[],...m&&{instructions:m},...r.length>0&&{projectionRules:r}}}async interceptCreate(e,t,n){return{kind:"continue",input:e}}createGenerationHandler(e){return null}getTemplates(){return null}getDataSources(){return[]}getEntityTypeConfig(){return}getProjectionRules(e){return[]}}function FT(e){return JB(_T(e))}function _T(e,t=new Set){if(e===null)return"null";if(typeof e==="string"||typeof e==="boolean")return JSON.stringify(e);if(typeof e==="number"){if(!Number.isFinite(e))throw Error("Projection inputs cannot contain non-finite numbers");if(Number.isInteger(e)&&!Number.isSafeInteger(e))throw Error("Projection inputs cannot contain unsafe integers");return JSON.stringify(e)}if(typeof e!=="object")throw Error(`Projection inputs cannot contain ${typeof e} values`);if(t.has(e))throw Error("Projection inputs cannot contain circular values");let n=new Set(t).add(e);if(Array.isArray(e))return`[${e.map((i)=>_T(i,n)).join(",")}]`;let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)throw Error("Projection inputs must contain only plain JSON objects");return`{${Object.entries(e).filter(([,i])=>i!==void 0).sort(([i],[o])=>i.localeCompare(o)).map(([i,o])=>`${JSON.stringify(i)}:${_T(o,n)}`).join(",")}}`}function LT(e){if(e!==null&&typeof e==="object"){for(let t of Object.values(e))LT(t);Object.freeze(e)}return e}var K8=a.strictObject({id:a.string().trim().min(1),version:a.string().trim().min(1),sources:a.array(a.strictObject({kind:a.literal("entity"),types:a.array(a.string().trim().min(1)).min(1),excludeTypes:a.array(a.string().trim().min(1)).optional()})),targetType:a.string().trim().min(1),sourceChangeBatchDelayMs:a.number().int().nonnegative().default(0)});function qT(e){let t=K8.parse({id:e.id,version:e.version,sources:e.sources,targetType:e.targetType,sourceChangeBatchDelayMs:e.sourceChangeBatchDelayMs});if(typeof e.selectInput!=="function")throw Error(`Projection rule "${t.id}" must select input`);if(typeof e.derive!=="function")throw Error(`Projection rule "${t.id}" must derive output`);let n=t.sources.map((r)=>{let i=Object.freeze([...r.types]),o=r.excludeTypes?Object.freeze([...r.excludeTypes]):void 0,s={kind:"entity",types:i,...o?{excludeTypes:o}:{}};return Object.freeze(s)});return Object.freeze({id:t.id,version:t.version,sources:Object.freeze(n),targetType:t.targetType,sourceChangeBatchDelayMs:t.sourceChangeBatchDelayMs,inputSchema:e.inputSchema,selectInput:async(r,i,o)=>{let s=await e.selectInput(r,i,o),c=ti.parse(s);return LT(e.inputSchema.parse(c))},fingerprint:FT,derive:async(r,i,o)=>{let s=e.inputSchema.parse(r),c=a.array(Go).parse(await e.derive(s,i,o));for(let l of c){let u=l.operation==="upsert"?l.entity.entityType:l.entityType;if(u!==t.targetType)throw Error(`Projection rule "${t.id}" cannot write entity type "${u}"`)}return LT(c)}})}var Y8=a.record(a.string(),a.unknown()),X8=a.object({items:a.array(a.object({operation:a.enum(["upsert","delete"]),id:a.string(),source:ti.optional()}))}),HB=new WeakMap;function _g(e){let t=HB.get(e);if(!t)t=Cr.extend({entityType:a.literal(e.type),metadata:e.metadata}),HB.set(e,t);return t}function ll(e,t){let n=_g(e).parse(t);return{...n,entityType:e.type,metadata:co(e.metadata,n.metadata)}}function GB(e,t){return e.markdown?e.markdown.encode({content:t.content,metadata:e.metadata.parse(t.metadata)}):{content:t.content,frontmatter:t.metadata}}function VB(e,t){let n=GB(e,t);return Mi(n.content,n.frontmatter)}function eY(e){let t=_g(e);return{entityType:e.type,purpose:e.purpose,schema:t,frontmatterSchema:e.metadata,toMarkdown(n){return VB(e,n)},fromMarkdown(n){let r=Ut(n,Y8),i=e.markdown?e.markdown.decode({content:r.content,frontmatter:r.metadata}):{content:r.content,metadata:r.metadata};return{content:i.content,metadata:e.metadata.parse(i.metadata)}},extractMetadata:(n)=>n.metadata,parseFrontMatter:(n,r)=>Ut(n,r).metadata,generateFrontMatter(n){return wl(GB(e,n).frontmatter)},getBodyTemplate:()=>""}}async function tY(e,t,n){let r=_g(e.source).parse(t),i=[];return await e.project({source:r,signal:n,target:{async upsert(o){let s=ti.parse(e.target.metadata.parse(o.metadata)),c=o.visibility??"public";i.push({operation:"upsert",entity:{id:o.id,entityType:e.target.type,content:Da(VB(e.target,{content:o.content,metadata:s}),c),metadata:s,visibility:c}})}}}),i}function nY(e,t,n){return qT({id:n(e.id),version:t,sources:[{kind:"entity",types:[e.source.type]}],targetType:e.target.type,inputSchema:ti,async selectInput(r,i){let o=r.inputs.filter(({sourceType:c})=>c===e.source.type),s=await Promise.all(o.map(async(c)=>{if(c.operation==="delete")return{operation:"delete",id:c.sourceId};let l=await i.entities.getEntity({entityType:c.sourceType,id:c.sourceId,visibilityScope:"restricted"});if(!l)throw Error(`Projection "${e.id}" could not load ${c.sourceType}:${c.sourceId}`);return{operation:"upsert",id:c.sourceId,source:l}}));return ti.parse({items:s})},async derive(r,i,o){let s=X8.parse(r),c=[];for(let l of s.items){if(o.throwIfAborted(),l.operation==="delete"){c.push({operation:"delete",entityType:e.target.type,id:l.id});continue}if(!l.source)throw Error(`Projection "${e.id}" upsert item ${l.id} is missing its source`);c.push(...await tY(e,l.source,o))}return c}})}class QB extends Ip{classification;projections;scope;entityType;schema;adapter;constructor(e,t,n,r){super(r(e.type),n,{},BT);this.classification=e.classification,this.projections=t,this.scope=r,this.entityType=e.type,this.schema=_g(e),this.adapter=eY(e)}getEntityTypeConfig(){return{classification:this.classification}}getProjectionRules(){return this.projections.map((e)=>nY(e,this.version,this.scope))}}function KB(e,t,n,r){return e.map((i)=>new QB(i,t.filter(({source:o})=>o===i),n,r))}var YB=Symbol.for("rizom.plugin-package.runtime-factory");function ul(){return a.custom((e)=>e!==null&&typeof e==="object")}function nn(e,t){if(!/^[a-z][a-z0-9-]*$/u.test(e))throw Error(`${t} must start with a lowercase letter and contain only lowercase letters, numbers, and hyphens`)}function os(e){nn(e.id,"Plugin definition id");let t={kind:"rizom-plugin-package",family:e.family,id:e.id,config:e.config},n=Object.assign({},e.public,t);return Object.defineProperty(n,YB,{configurable:!1,enumerable:!1,value:e.instantiate,writable:!1}),Object.freeze(n)}function rY(e){if(e===null||typeof e!=="object")return!1;let t=Reflect.get(e,"config");return Reflect.get(e,"kind")==="rizom-plugin-package"&&typeof Reflect.get(e,"id")==="string"&&typeof Reflect.get(e,"family")==="string"&&t!==null&&typeof t==="object"&&typeof Reflect.get(t,"safeParse")==="function"&&typeof Reflect.get(e,YB)==="function"}function iY(e){if(nn(e.type,"Entity type"),!e.purpose.trim())throw Error(`Entity "${e.type}" purpose must not be empty`);return Object.freeze({kind:"rizom-entity",...e,classification:Oc.parse(e.classification)})}function oY(e){return nn(e.id,"Projection id"),Object.freeze({kind:"rizom-projection",...e})}var sY=a.object({});function aY(e){let t=Object.freeze([...e.entities]),n=Object.freeze([...e.projections??[]]),r=new Set(t),i=t.map(({type:l})=>l);if(new Set(i).size!==i.length)throw Error(`Entity package "${e.id}" contains duplicate entity types`);let o=n.map(({id:l})=>l);if(new Set(o).size!==o.length)throw Error(`Entity package "${e.id}" contains duplicate projection ids`);let s=n.find(({source:l,target:u})=>!r.has(l)||!r.has(u));if(s)throw Error(`Entity package "${e.id}" projection "${s.id}" references an entity outside its package`);let c={entities:t,projections:n};return os({family:"entity",id:e.id,config:sY,public:c,instantiate:({package:l,scope:u})=>KB(t,n,l,u)})}function ss(e){return Object.freeze(e),e}var cY=["public","trusted","admin"];function pr(e,t){if(!e.trim())throw Error(`${t} must not be empty`)}function Rp(e,t){if(e!==void 0)pr(e,t)}function ZT(e,t){if(e!==void 0&&!Number.isFinite(e))throw Error(`${t} priority must be finite`)}function kp(e,t){if(!cY.includes(e))throw Error(`${t} permission "${String(e)}" is unsupported`)}function mo(e,t){return ba.hasPermission(e,t)}function XB(e){if(typeof e.load!=="function")throw Error(`Dashboard widget "${e.definition.id}" was not bound by defineDashboardWidget().bind()`);return e.load}function e_(e){if(nn(e.id,"Dashboard widget id"),pr(e.title,`Dashboard widget "${e.id}" title`),pr(e.group,`Dashboard widget "${e.id}" group`),Rp(e.description,`Dashboard widget "${e.id}" description`),ZT(e.priority,`Dashboard widget "${e.id}"`),kp(e.permission,`Dashboard widget "${e.id}"`),!["primary","secondary","sidebar"].includes(e.placement))throw Error(`Dashboard widget "${e.id}" placement "${String(e.placement)}" is unsupported`);let t={kind:"rizom-dashboard-widget",...e,bind(n,r){return ss({kind:"rizom-dashboard-widget-binding",definition:t,load:r})}};return Object.freeze(t)}var t_=Symbol("rizom.studio-workspace-executor");function n_(e){let t=e[t_];if(!t)throw Error(`Studio workspace "${e.definition.id}" was not bound by defineStudioWorkspace().bind()`);return t}function r_(e){nn(e.id,"Studio workspace id"),pr(e.label,`Studio workspace "${e.id}" label`),Rp(e.description,`Studio workspace "${e.id}" description`),ZT(e.priority,`Studio workspace "${e.id}"`),kp(e.permission,`Studio workspace "${e.id}"`);let t=new Set;for(let r of e.actions){if(t.has(r.name))throw Error(`Studio workspace "${e.id}" declares action "${r.name}" more than once`);if(t.add(r.name),r.permission!==void 0&&!mo(r.permission,e.permission))throw Error(`Studio workspace "${e.id}" action "${r.name}" permission cannot be lower than the workspace permission`)}let n={kind:"rizom-studio-workspace",...e,...e.entities?{entities:Object.freeze([...e.entities])}:{},actions:ss(e.actions),bind(r,i){if(n.entityCatalog!==void 0!==(i.listEntityTypes!==void 0))throw Error(`Studio workspace "${n.id}" must bind one entity-type catalog callback exactly when it declares entityCatalog`);let o=new Set;for(let s of i.actions){if(!n.actions.includes(s.definition))throw Error(`Studio workspace "${n.id}" cannot bind undeclared action "${s.definition.name}"`);if(o.has(s.definition))throw Error(`Studio workspace "${n.id}" binds action "${s.definition.name}" more than once`);o.add(s.definition)}for(let s of n.actions)if(!o.has(s))throw Error(`Studio workspace "${n.id}" has no executor for action "${s.name}"`);return Object.freeze({kind:"rizom-studio-workspace-binding",definition:n,actions:Object.freeze([...i.actions]),[t_]:Object.freeze({...i.authorize?{authorize:i.authorize}:{},load:i.load,...i.listEntityTypes?{listEntityTypes:i.listEntityTypes}:{}})})}};return Object.freeze(n)}var pe=a.string().trim().min(1).max(120),Ta=a.string().trim().min(1).max(400),ye=a.string().trim().min(1).max(160),Tt=a.string().max(500),ii=a.string().max(4000),i_=a.string().max(1e5),as=a.number().finite().min(0).max(1),rn=a.enum(["good","warn","neutral","error"]),Pp=a.union([a.string().max(2000),a.number().finite(),a.boolean(),a.null()]),lY=a.object({label:ye,value:a.union([a.string().max(500),a.number().finite()]),caption:Tt.optional(),tone:rn.optional()}).strict(),$T=a.object({type:a.literal("stats"),id:pe.optional(),items:a.array(lY).max(20).readonly()}).strict(),uY=a.object({label:ye,value:Pp}).strict(),UT=a.object({type:a.literal("key-values"),id:pe.optional(),items:a.array(uY).max(40).readonly()}).strict(),WT=a.object({type:a.literal("notice"),id:pe.optional(),title:ye.optional(),text:ii,details:a.array(i_).max(50).readonly().optional(),tone:rn.optional()}).strict(),o_=a.object({type:a.literal("text"),id:pe.optional(),label:ye.optional(),text:i_,truncated:a.boolean().optional()}).strict(),pY=a.object({id:pe,label:ye,value:a.number().finite().nonnegative(),max:a.number().finite().positive().optional(),unit:ye.optional(),tone:rn.optional()}).strict().superRefine((e,t)=>{if(e.max!==void 0&&e.value>e.max)t.addIssue({code:"custom",message:"Meter value cannot exceed its maximum",path:["value"]})}),JT=a.object({type:a.literal("meters"),id:pe,items:a.array(pY).max(30).readonly()}).strict(),HT=a.object({type:a.literal("progress"),id:pe,label:ye,state:ye,detail:ii.optional(),startedAt:a.string().datetime().optional(),updatedAt:a.string().datetime().optional(),progress:as.optional(),tone:rn.optional()}).strict();function s_(e){return nn(e.id,"Entity catalog id"),pr(e.label,`Entity catalog "${e.id}" label`),Object.freeze({kind:"rizom-entity-catalog",...e})}var a_=Symbol("rizom.workspace-action-executor");function GT(e){let t=e[a_];if(!t)throw Error(`Workspace action "${e.definition.name}" was not bound by defineWorkspaceAction().bind()`);return t}function c_(e){if(nn(e.name,"Workspace action name"),pr(e.label,`Workspace action "${e.name}" label`),e.confirmation?.kind==="static")pr(e.confirmation.message,`Workspace action "${e.name}" confirmation`);if(e.permission!==void 0)kp(e.permission,`Workspace action "${e.name}"`);let t={kind:"rizom-workspace-action",...e,bind(n,r,i){if(t.confirmation?.kind==="prepared"&&!i)throw Error(`Workspace action "${t.name}" requires a prepared confirmation callback`);return Object.freeze({kind:"rizom-workspace-action-binding",definition:t,[a_]:Object.freeze({execute:r,...i?{prepare:i}:{}})})}};return Object.freeze(t)}var l_=new WeakMap;function u_(e){if(nn(e.name,"Job name"),e.retry&&(!Number.isInteger(e.retry.attempts)||e.retry.attempts<1))throw Error(`Job "${e.name}" retry attempts must be at least 1`);if(e.deadline)VT(e.deadline);let t={kind:"rizom-service-job",...e,handle(n){let r=Object.freeze({kind:"rizom-service-job-binding",definition:t});return l_.set(r,async(i)=>n({...i,input:co(t.input,i.input)})),r}};return Object.freeze(t)}function p_(e){let t=l_.get(e);if(!t)throw Error(`Job "${e.definition.name}" was not created by defineJob().handle()`);return t}function VT(e){let t=/^(\d+)(ms|s|m)$/u.exec(e);if(!t)throw Error(`Invalid job deadline "${e}"`);let n=Number(t[1]);if(!Number.isSafeInteger(n)||n<1)throw Error(`Job deadline "${e}" must be positive`);let r=t[2];return n*(r==="m"?60000:r==="s"?1000:1)}function d_(e){if(nn(e.name,"Tool name"),!e.description.trim())throw Error(`Tool "${e.name}" description must not be empty`);return Object.freeze({kind:"rizom-service-tool",...e})}var QT=a.enum(["text","url","number","checkbox","select"]),m_=QT.exclude(["select"]);function KT(e){pr(e.title,"Account settings title"),Rp(e.description,"Account settings description");let t=Object.keys(e.schema.shape),n=new Set(Object.keys(e.fields));for(let[i,o]of Object.entries(e.fields)){if(!t.includes(i))throw Error(`Account settings field "${i}" is not declared by the settings schema`);if(pr(o.label,`Account settings field "${i}" label`),o.control!==void 0&&!m_.safeParse(o.control).success)throw Error(`Account settings field "${i}" has unsupported control "${String(o.control)}"`);if(o.secret!==void 0&&typeof o.secret!=="boolean")throw Error(`Account settings field "${i}" secret must be boolean`)}for(let i of t)if(!n.has(i))throw Error(`Account settings schema field "${i}" has no field declaration; declare its label and whether it is secret`);let r=e.fields;for(let i of Object.values(r))Object.freeze(i);return Object.freeze(r),Object.freeze({kind:"rizom-account-settings",...e,fields:r})}import{AsyncLocalStorage as A7}from"async_hooks";var f_=Symbol("service-content-target");function g_(e,t){if(e.template.includes(":")||!t(e.template))throw Error(`Unknown or non-generatable service template: ${e.template}`);let n=bg.parse({templateName:e.template,context:e.context,destination:{entityType:e.destination.entity.type,idPath:e.destination.idPath,metadata:Ho.parse(e.destination.entity.metadata.parse(e.destination.metadata)),visibility:e.destination.visibility}});return Object.freeze({...n,[f_]:!0})}function Fg(){return Object.freeze({})}import{createHash as f7,randomUUID as g7}from"crypto";var Ap=new WeakMap;function h_(e,t){let n=Ap.get(e);if(n&&n!==t)throw Error(`Job "${e.name}" is registered as both "${n}" and "${t}"`);Ap.set(e,t)}function y_(e,t){if(Ap.get(e)===t)Ap.delete(e)}function Op(e){let t=Ap.get(e);if(!t)throw Error(`Job "${e.name}" is not registered by an active declarative service`);return t}function dY(e,t){let n={...t};for(let r in n)if(e.fields[r]?.secret===!0)delete n[r];return Object.freeze(n)}function mY(e,t){return e.parse(t)}function b_(e,t){let n=t.status==="completed"&&t.result!==void 0?mY(e.output,t.result):void 0;return Object.freeze({id:t.id,status:t.status,...n!==void 0?{result:n}:{},...t.lastError?{error:t.lastError}:{}})}function fY(e){return{async enqueue(t,n){let r=Op(t),i=await e.jobs.enqueue({type:r,data:t.input.parse(n),options:{source:e.pluginId,metadata:{operationType:"data_processing",pluginId:e.pluginId}}});return Object.freeze({id:i,status:async()=>{let o=await e.jobs.getStatus(i);return o?.type===r?b_(t,o):null}})},async status(t,n){let r=Op(t),i=await e.jobs.getStatus(n);return i?.type===r?b_(t,i):null}}}async function Lg(e){let{caller:t,signal:n}=e.provider;n.throwIfAborted();let r=t?.permission??"public",i=wi(r),o=t&&e.accountSettingsRegistration?await e.context.accountSettings.getForActor(e.accountSettingsRegistration,t.actor.id):null,s=o&&e.accountSettingsRegistration?dY(e.accountSettingsRegistration.definition,o):null;return{config:e.config,state:e.state,caller:t,settings:s,entities:{async get(c,l){n.throwIfAborted();let u=await e.context.entityService.getEntity({entityType:c.type,id:l,visibilityScope:i});return n.throwIfAborted(),u?ll(c,u):null},async list(c){n.throwIfAborted();let l=await e.context.entityService.listEntities({entityType:c.type,options:{filter:{visibilityScope:i}}});return n.throwIfAborted(),l.map((u)=>ll(c,u))},async search(c,l){n.throwIfAborted();let u=await e.context.entityService.search({query:l,options:{types:[c.type],visibilityScope:i}});return n.throwIfAborted(),u.map(({entity:p})=>ll(c,p))}},jobs:fY(e.context),permissions:{allows(c,l){try{return e.context.permissions.assertEntityActionAllowed(c.type,l,{userPermissionLevel:r}),!0}catch{return!1}}},signal:n}}function Dp(e){return e.issues.map((t)=>({path:t.path,message:t.message}))}function Dr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function qg(e,t,n,r,i=!1){if(!Dr(e))return;if(e.detail!==void 0&&!i){r.push({path:t,message:"A detail link is available only on rows of a detail block's master collection"});return}if(e.kind==="external"||e.kind==="entity"||e.kind==="launch"||e.kind==="detail"){r.push({path:t,message:"Author links must use a typed external, entity, catalog, or launch target rather than a normalized host target"});return}let o=e.launch;if(n==="dashboard"&&Dr(o)&&(o.target==="inbox-open-entity"||o.target==="inbox-capture-note"||o.target==="inbox-discuss-in-chat"))r.push({path:[...t,"launch","target"],message:`Launch intent "${o.target}" is available only in Studio workspaces`})}function S_(e,t,n,r,i=!1){if(!Array.isArray(e))return;for(let[o,s]of e.entries()){if(!Dr(s))continue;qg(s.target,[...t,o,"target"],n,r,i)}}function YT(e,t,n,r,i=!1){if(!Array.isArray(e))return;for(let[o,s]of e.entries()){if(!Dr(s))continue;qg(s.link,[...t,o,"link"],n,r,i),S_(s.links,[...t,o,"links"],n,r,i)}}function pl(e,t,n,r){if(!Array.isArray(e))return;for(let[i,o]of e.entries()){if(!Dr(o))continue;let s=[...t,i];switch(o.type){case"links":S_(o.items,[...s,"items"],n,r);break;case"list":YT(o.items,[...s,"items"],n,r);break;case"table":{let c=o.rows;if(Array.isArray(c))for(let[l,u]of c.entries()){if(!Dr(u))continue;qg(u.link,[...s,"rows",l,"link"],n,r)}break}case"matrix":{let c=o.cells;if(Array.isArray(c))for(let[l,u]of c.entries()){if(!Dr(u))continue;YT(u.items,[...s,"cells",l,"items"],n,r)}break}case"tabs":{let c=o.tabs;if(Array.isArray(c))for(let[l,u]of c.entries()){if(!Dr(u))continue;pl(u.blocks,[...s,"tabs",l,"blocks"],n,r)}break}case"card":pl(o.blocks,[...s,"blocks"],n,r);break;case"columns":pl(o.primary,[...s,"primary"],n,r),pl(o.aside,[...s,"aside"],n,r);break;case"detail":{let c=o.master;if(Dr(c)){let u=[...s,"master"];YT(c.items,[...u,"items"],n,r,!0);let p=c.rows;if(Array.isArray(p))for(let[m,g]of p.entries()){if(!Dr(g))continue;qg(g.link,[...u,"rows",m,"link"],n,r,!0)}}let l=o.open;if(Dr(l))pl(l.blocks,[...s,"open","blocks"],n,r);break}}}}function XT(e,t){if(!Dr(e))return[];let n=[];return pl(e.blocks,["blocks"],t,n),n}var x_=a.json();function gY(e){return e!==null&&typeof e==="object"&&!Array.isArray(e)}function hY(e,t){let n=dv(oo(t).inner);switch(e){case"checkbox":return n==="boolean";case"number":return n==="number";case"select":return n==="string"||n==="enum";case"text":case"url":return n==="string"}}function yY(e){let t=dv(oo(e).inner);return t==="string"||t==="number"||t==="boolean"||t==="enum"||t==="literal"}function bY(e,t){if(!e.form)return{issues:[]};let n=[],r=Vo(e.action.input);if(!r)return{issues:[{path:[...t,"form"],message:`Form action "${e.action.name}" requires an object input schema`}]};let i=e.input??{};if(!gY(i))return{issues:[{path:[...t,"input"],message:"Workspace action form initial input must be an object"}]};let o=x_.safeParse(i);if(!o.success)return{issues:[{path:[...t,"input"],message:"Workspace action form initial input must be JSON-native"}]};let s=Object.keys(r),c=Object.entries(e.form.fields);if(c.length>50)n.push({path:[...t,"form","fields"],message:"Workspace action forms support at most 50 fields"});for(let[p,m]of Object.entries(i)){let g=r[p];if(g===void 0)n.push({path:[...t,"input",p],message:`Form initial input "${p}" is not declared by the action schema`});else if(g instanceof a.ZodType&&!g.safeParse(m).success)n.push({path:[...t,"input",p],message:`Form initial input "${p}" does not satisfy the action schema`})}let l=[];for(let[p,m]of c){let g=r[p];if(g===void 0){n.push({path:[...t,"form","fields",p],message:`Form field "${p}" is not declared by the action schema`});continue}let f=oo(g),v=_f(f.inner);if(!hY(m.control,g))n.push({path:[...t,"form","fields",p,"control"],message:`Form control "${m.control}" is incompatible with schema field "${p}"`});if(m.control==="select"){if(!m.options||m.options.length===0)n.push({path:[...t,"form","fields",p,"options"],message:`Select field "${p}" requires options`});else if(v){if(m.options.some((w)=>!v.includes(w.value)))n.push({path:[...t,"form","fields",p,"options"],message:`Select field "${p}" options must use values from its enum schema`})}}else if(m.options!==void 0)n.push({path:[...t,"form","fields",p,"options"],message:`Non-select field "${p}" cannot declare options`});if(m.labelBy){let w=e.form.fields[m.labelBy.field],k=new Set(w?.options?.map((B)=>B.value)??[]),P=new Set(m.labelBy.values.map((B)=>B.value));if(w?.control!=="select")n.push({path:[...t,"form","fields",p,"labelBy","field"],message:`Dynamic label source "${m.labelBy.field}" must be a select form field`});else if(k.size!==P.size||Array.from(k).some((B)=>!P.has(B)))n.push({path:[...t,"form","fields",p,"labelBy","values"],message:`Dynamic labels for "${p}" must cover every option of "${m.labelBy.field}"`})}if(m.secret===!0&&p in i)n.push({path:[...t,"input",p],message:`Secret form field "${p}" cannot be pre-bound into browser data`});if(m.secret===!0&&m.control!=="text"&&m.control!=="url")n.push({path:[...t,"form","fields",p,"secret"],message:`Secret field "${p}" must use a text or URL control`});l.push({name:p,label:m.label,control:m.control,required:f.required,...m.secret?{secret:!0}:{},...m.options?{options:m.options}:{},...m.labelBy?{labelBy:m.labelBy}:{}})}let u=new Set(c.map(([p])=>p));for(let p of s)if(!u.has(p)&&!(p in i))n.push({path:[...t,"form","fields",p],message:`Action schema field "${p}" has no form declaration or pre-bound input`});return{input:o.data,form:{...e.form.presentation?{presentation:e.form.presentation}:{},...e.form.submitLabel?{submitLabel:e.form.submitLabel}:{},fields:l},issues:n}}function SY(e,t){if(!e.result)return{issues:[]};let n=Vo(e.action.output);if(!n)return{issues:[{path:[...t,"result"],message:`Presented result for "${e.action.name}" requires an object output schema`}]};let r=[],i=Object.entries(e.result.fields);if(i.length>50)r.push({path:[...t,"result","fields"],message:"Workspace action results support at most 50 fields"});let o=new Set(i.map(([s])=>s));for(let[s,c]of i){let l=n[s];if(l===void 0)r.push({path:[...t,"result","fields",s],message:`Result field "${s}" is not declared by the action output schema`});else if(!yY(l))r.push({path:[...t,"result","fields",s],message:`Result field "${s}" must use a scalar output schema`});if(c.sensitive===!0&&c.copyable!==!0)r.push({path:[...t,"result","fields",s,"copyable"],message:`Sensitive result field "${s}" must be explicitly copyable`})}for(let s of Object.keys(n))if(!o.has(s))r.push({path:[...t,"result","fields",s],message:`Action output field "${s}" has no result declaration`});return{result:{title:e.result.title,fields:i.map(([s,c])=>({name:s,label:c.label,...c.copyable?{copyable:!0}:{},...c.sensitive?{sensitive:!0}:{}}))},issues:r}}function cs(e,t,n,r,i){let o=[],s=[];for(let[c,l]of e.entries()){let u=[...r,i?.[c]??c];if(!t.includes(l.action)){s.push({path:[...u,"action"],message:`Action "${l.action.name}" is not declared by this workspace`});continue}if(l.action.permission!==void 0&&!mo(n,l.action.permission))continue;if(l.action.catalog===!0&&!l.capability){s.push({path:[...u,"capability"],message:`Catalog action "${l.action.name}" requires a typed capability definition`});continue}if(l.action.catalog!==!0&&l.capability){s.push({path:[...u,"capability"],message:`Action "${l.action.name}" is not a capability catalog`});continue}if(l.capability?.confirmation==="prepared"&&l.action.confirmation?.kind!=="prepared"){s.push({path:[...u,"capability","confirmation"],message:`Capability "${l.capability.id}" requires a prepared catalog action`});continue}let p=bY(l,u),m=SY(l,u);s.push(...p.issues,...m.issues);let g;if(l.form)g=p.input;else{let w=l.action.input.safeParse(l.input);if(!w.success)s.push(...w.error.issues.map((k)=>({path:[...u,"input",...k.path],message:k.message})));else{let k=x_.safeParse(w.data);if(!k.success)s.push({path:[...u,"input"],message:"Workspace action input must be JSON-native"});else g=k.data}}if(p.issues.length>0||m.issues.length>0||g===void 0)continue;let f=l.action.confirmation,v=f?.kind==="static"?f:f?.kind==="prepared"&&(f.conditional!==!0||l.capability?.confirmation==="prepared")?{kind:"prepared"}:void 0;o.push(Object.freeze({actionId:l.action.name,...l.capability?{capabilityId:l.capability.id}:{},label:l.label??l.capability?.label??l.action.label,input:g,...p.form?{form:p.form}:{},...m.result?{result:m.result}:{},...l.disabled?{disabled:!0}:{},...v?{confirmation:v}:{}}))}return{controls:o,issues:s}}function eC(e){return e.type!=="tabs"&&e.type!=="detail"&&e.type!=="columns"&&e.type!=="card"}function xY(e,t){return{type:"action",...t?{id:t}:{},...e}}function Ca(e,t,n,r){switch(e.type){case"list":{let i=[],o=e.items.map((s,c)=>{let l=cs(s.actions??[],n,r,["blocks",t,"items",c,"actions"]);return i.push(...l.issues),{id:s.id,title:s.title,...s.description?{description:s.description}:{},...s.meta?{meta:s.meta}:{},...s.metadata?{metadata:s.metadata}:{},...s.tags?{tags:s.tags}:{},...zi({count:s.count}),...s.badges?{badges:s.badges}:{},...s.filterValues?{filterValues:s.filterValues}:{},...s.links?{links:s.links}:{},...s.tone?{tone:s.tone}:{},...s.link?{link:s.link}:{},...l.controls.length>0?{actions:l.controls,...zi({actionsLabel:s.actionsLabel})}:{}}});return{block:{type:"list",id:e.id,empty:e.empty,...e.presentation?{presentation:e.presentation}:{},...e.filter?{filter:e.filter}:{},items:o},issues:i}}case"table":{let i=[],o=e.rows.map((s,c)=>{let l=cs(s.actions??[],n,r,["blocks",t,"rows",c,"actions"]);return i.push(...l.issues),{id:s.id,cells:s.cells,...s.compact?{compact:s.compact}:{},...s.link?{link:s.link}:{},...l.controls.length>0?{actions:l.controls}:{}}});return{block:{type:"table",id:e.id,empty:e.empty,...e.filters?{filters:e.filters}:{},...e.query?{query:e.query}:{},columns:e.columns,rows:o},issues:i}}case"matrix":{let i=[],o=e.cells.map((s,c)=>({id:s.id,label:s.label,...s.tone?{tone:s.tone}:{},empty:s.empty,items:s.items.map((l,u)=>{let p=cs(l.actions??[],n,r,["blocks",t,"cells",c,"items",u,"actions"]);return i.push(...p.issues),{id:l.id,title:l.title,...l.description?{description:l.description}:{},...l.meta?{meta:l.meta}:{},...l.metadata?{metadata:l.metadata}:{},...l.tags?{tags:l.tags}:{},...zi({count:l.count}),...l.badges?{badges:l.badges}:{},...l.filterValues?{filterValues:l.filterValues}:{},...l.links?{links:l.links}:{},...l.tone?{tone:l.tone}:{},...l.link?{link:l.link}:{},...p.controls.length>0?{actions:p.controls,...zi({actionsLabel:l.actionsLabel})}:{}}})}));return{block:{type:"matrix",id:e.id,...e.columns?{columns:e.columns}:{},cells:o},issues:i}}case"tabs":{let i=[],o=e.tabs.map((s)=>{let c=[];for(let[l,u]of s.blocks.entries()){let p=Ca(u,l,n,r);if(i.push(...p.issues),p.block&&p.block.type!=="tabs")c.push(p.block)}return{id:s.id,label:s.label,...zi({count:s.count}),blocks:c}});return{block:{type:"tabs",id:e.id,label:e.label,defaultTab:e.defaultTab,...e.queryKey?{queryKey:e.queryKey}:{},tabs:o},issues:i}}case"card":{let i=[],o=[];for(let[s,c]of e.blocks.entries()){let l=Ca(c,s,n,r);if(i.push(...l.issues),l.block&&eC(l.block))o.push(l.block)}return{block:{type:"card",id:e.id,label:e.label,...e.presentation?{presentation:e.presentation}:{},...zi({disclosureLabel:e.disclosureLabel}),...e.metadata?{metadata:e.metadata}:{},...e.tone?{tone:e.tone}:{},blocks:o},issues:i}}case"columns":{let i=[],o=(s)=>{let c=[];for(let[l,u]of s.entries()){let p=Ca(u,l,n,r);i.push(...p.issues);let m=p.block;if(m&&(eC(m)||m.type==="card"))c.push(m)}return c};return{block:{type:"columns",id:e.id,primary:o(e.primary),aside:o(e.aside)},issues:i}}case"detail":{let i=[],o=Ca(e.master,t,n,r);i.push(...o.issues);let s=o.block;if(!s||s.type!=="list"&&s.type!=="table")return{issues:i};let c=[];for(let[l,u]of(e.open?.blocks??[]).entries()){let p=Ca(u,l,n,r);i.push(...p.issues);let m=p.block;if(m&&(eC(m)||m.type==="card"))c.push(m)}return{block:{type:"detail",id:e.id,queryKey:e.queryKey,empty:e.empty,master:s,...e.open?{open:{forId:e.open.forId,title:e.open.title,blocks:c}}:{}},issues:i}}case"action":{let i=cs([e],n,r,["blocks"],[t]),o=i.controls[0];return{...o?{block:xY(o,e.id)}:{},issues:i.issues}}case"actions":{let i=cs(e.items,n,r,["blocks",t,"items"]);return{block:{type:"actions",...e.id?{id:e.id}:{},items:i.controls},issues:i.issues}}default:return{block:e,issues:[]}}}var v_=a.string().max(2048).refine((e)=>{try{let t=new URL(e);return t.protocol==="https:"||t.protocol==="http:"}catch{return!1}},{message:"External operator links must use http or https"});function vY(e){return e!==null&&typeof e==="object"&&"kind"in e&&e.kind==="rizom-entity"&&"type"in e&&typeof e.type==="string"&&e.type.length>0}var wY=a.custom(vY,{message:"Expected an imported entity definition"});function TY(e){return e!==null&&typeof e==="object"&&"kind"in e&&e.kind==="rizom-entity-catalog"&&"id"in e&&typeof e.id==="string"&&"label"in e&&typeof e.label==="string"}var CY=a.custom(TY,{message:"Expected an imported entity catalog definition"});function EY(e){return{kind:"external",href:e.external}}function IY(e){return{kind:"entity",entityType:e.entity.type,id:e.id}}var w_=a.union([a.object({target:a.literal("account-settings")}).strict(),a.object({target:a.literal("invitations")}).strict(),a.object({target:a.literal("admin-peer-invite"),peerId:pe,displayName:ye}).strict(),a.object({target:a.literal("inbox")}).strict(),a.object({target:a.literal("inbox"),source:a.literal("mail"),filter:a.enum(["high-priority","needs-reply","unclassified"]).optional()}).strict(),a.object({target:a.literal("publishing")}).strict(),a.object({target:a.literal("site")}).strict(),a.object({target:a.literal("inbox-open-entity"),entityType:pe,entityId:pe}).strict(),a.object({target:a.literal("inbox-capture-note"),title:Tt,summary:a.string().trim().min(1).max(1000).optional(),entityType:pe,entityId:pe}).strict(),a.object({target:a.literal("inbox-discuss-in-chat"),sourceId:pe,itemId:a.string().trim().min(1).max(300),label:a.string().trim().min(1).max(160)}).strict()]);function RY(e){return{kind:"entity",entityType:e.entityType,id:e.id}}function kY(e){return{kind:"launch",launch:e.launch}}function PY(e){return{kind:"detail",itemId:e.detail.itemId}}var zp=a.union([a.object({external:v_}).strict().transform(EY),a.object({entity:wY,id:pe}).strict().transform(IY),a.object({catalog:CY,entityType:pe,id:pe}).strict().transform(RY),a.object({launch:w_}).strict().transform(kY),a.object({detail:a.object({itemId:Ta}).strict()}).strict().transform(PY),a.object({kind:a.literal("external"),href:v_}).strict(),a.object({kind:a.literal("entity"),entityType:pe,id:pe}).strict(),a.object({kind:a.literal("launch"),launch:w_}).strict(),a.object({kind:a.literal("detail"),itemId:Ta}).strict()]);var T_=a.object({label:ye,tone:rn.optional()}).strict(),C_=a.object({sourceId:pe,targetId:pe,label:ye.optional(),tone:rn.optional()}).strict(),AY=a.object({id:pe,label:ye,category:ye,x:as,y:as,zoneId:pe.optional(),tone:rn.optional(),details:a.array(Tt).max(20).optional()}).strict(),OY=a.object({id:pe,label:ye,x:as,y:as,memberIds:a.array(pe).max(500)}).strict(),DY=a.object({type:a.literal("spatial"),layout:a.literal("cartesian"),id:pe,label:ye,description:ii,points:a.array(AY).max(500),zones:a.array(OY).max(100),relationships:a.array(C_).max(2000).optional(),legend:a.array(T_).max(20)}).strict().superRefine((e,t)=>{let n=new Set;for(let[o,s]of e.points.entries()){if(n.has(s.id))t.addIssue({code:"custom",message:`Spatial point id "${s.id}" is duplicated`,path:["points",o,"id"]});n.add(s.id)}let r=new Set;for(let[o,s]of e.zones.entries()){if(r.has(s.id)||n.has(s.id))t.addIssue({code:"custom",message:`Spatial zone id "${s.id}" is duplicated`,path:["zones",o,"id"]});r.add(s.id);for(let c of s.memberIds)if(!n.has(c))t.addIssue({code:"custom",message:`Spatial zone member "${c}" has no matching point`,path:["zones",o,"memberIds"]})}for(let[o,s]of e.points.entries())if(s.zoneId&&!r.has(s.zoneId))t.addIssue({code:"custom",message:`Spatial point zone "${s.zoneId}" has no matching zone`,path:["points",o,"zoneId"]});let i=new Set([...n,...r]);for(let[o,s]of(e.relationships??[]).entries())if(!i.has(s.sourceId)||!i.has(s.targetId))t.addIssue({code:"custom",message:"Spatial relationship endpoints must reference declared points or zones",path:["relationships",o]})}),zY=a.object({id:pe,label:ye,kind:ye,status:ye,tags:a.array(ye).max(30).optional(),distance:as,bearing:a.number().finite().min(0).lt(360),relatedIds:a.array(pe).max(100).optional(),tone:rn.optional(),details:a.array(Tt).max(20).optional()}).strict(),MY=a.object({id:pe,label:ye,memberIds:a.array(pe).min(2).max(500)}).strict(),jY=a.object({id:pe,label:ye,maxDistance:as}).strict(),NY=a.object({type:a.literal("spatial"),layout:a.literal("radial"),id:pe,label:ye,description:ii,centerLabel:ye,centerKind:a.enum(["identity","centroid"]),points:a.array(zY).max(500),clusters:a.array(MY).max(100).optional(),relationships:a.array(C_).max(2000).optional(),strata:a.array(jY).min(1).max(10),legend:a.array(T_).max(20)}).strict().superRefine((e,t)=>{let n=new Set;for(let[o,s]of e.points.entries()){if(n.has(s.id))t.addIssue({code:"custom",message:`Spatial point id "${s.id}" is duplicated`,path:["points",o,"id"]});n.add(s.id)}for(let[o,s]of e.points.entries())for(let c of s.relatedIds??[])if(!n.has(c))t.addIssue({code:"custom",message:`Related point "${c}" is not declared`,path:["points",o,"relatedIds"]});let r=new Set;for(let[o,s]of(e.clusters??[]).entries()){if(r.has(s.id))t.addIssue({code:"custom",message:`Spatial cluster id "${s.id}" is duplicated`,path:["clusters",o,"id"]});r.add(s.id);for(let c of s.memberIds)if(!n.has(c))t.addIssue({code:"custom",message:`Spatial cluster member "${c}" has no matching point`,path:["clusters",o,"memberIds"]})}for(let[o,s]of(e.relationships??[]).entries())if(!n.has(s.sourceId)||!n.has(s.targetId))t.addIssue({code:"custom",message:"Spatial relationship endpoints must reference declared points",path:["relationships",o]});let i=-1;for(let[o,s]of e.strata.entries()){if(s.maxDistance<=i)t.addIssue({code:"custom",message:"Radial strata must increase by maximum distance",path:["strata",o,"maxDistance"]});i=s.maxDistance}}),tC=a.discriminatedUnion("layout",[DY,NY]);var BY=a.object({id:pe,label:ye,value:Pp.optional(),description:ii.optional(),tone:rn.optional()}).strict(),I_=a.object({type:a.literal("group"),id:pe,label:ye,items:a.array(BY).max(50)}).strict(),_Y=a.object({id:pe,label:ye,status:a.enum(["idle","active","complete","failed"]),detail:Tt.optional()}).strict(),R_=a.object({type:a.literal("flow"),id:pe,label:ye,direction:a.enum(["forward","bidirectional"]).optional(),steps:a.array(_Y).min(2).max(20)}).strict(),FY=a.string().trim().min(1).max(120).regex(/^[a-z][a-zA-Z0-9_.-]*$/),LY=a.object({value:ye,label:ye,count:a.number().int().nonnegative().optional()}).strict(),qY=a.object({key:FY,label:ye,value:ye.optional(),allLabel:ye.optional(),options:a.array(LY).max(100)}).strict(),k_=a.object({controls:a.array(qY).max(20),pagination:a.object({offset:a.number().int().nonnegative(),limit:a.number().int().min(1).max(100),total:a.number().int().nonnegative(),label:ye.optional()}).strict().optional()}).strict(),ZY=k_.extend({type:a.literal("query"),id:pe}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.controls.entries()){if(n.has(i.key))t.addIssue({code:"custom",message:`Query key "${i.key}" is duplicated`,path:["controls",r,"key"]});n.add(i.key)}}),$Y=k_.superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.controls.entries()){if(n.has(i.key))t.addIssue({code:"custom",message:`Query key "${i.key}" is duplicated`,path:["controls",r,"key"]});n.add(i.key)}}),P_=a.object({type:a.literal("links"),id:pe.optional(),items:a.array(a.object({label:ye,target:zp}).strict()).max(30)}).strict(),A_=a.object({label:ye,tone:rn.optional()}).strict(),UY=a.object({value:pe,label:ye,count:a.number().int().nonnegative().optional(),emphasis:a.literal("gap").optional()}).strict(),nC=200,O_=50,WY=nC*O_+1,D_=a.object({label:ye,defaultValue:pe,allValue:pe.optional(),options:a.array(UY).min(1).max(WY)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.options.entries()){if(n.has(i.value))t.addIssue({code:"custom",message:`List filter value "${i.value}" is duplicated`,path:["options",r,"value"]});n.add(i.value)}if(!n.has(e.defaultValue))t.addIssue({code:"custom",message:`List filter default "${e.defaultValue}" has no matching option`,path:["defaultValue"]})}),rC=a.object({id:Ta,title:Tt,description:ii.optional(),meta:Tt.optional(),metadata:a.array(Tt).max(20).optional(),tags:a.array(ye).max(30).optional(),count:a.number().finite().optional(),badges:a.array(A_).max(10).optional(),filterValues:a.array(pe).max(O_).optional(),links:a.array(a.object({label:ye,target:zp}).strict()).max(10).optional(),tone:rn.optional(),link:zp.optional()}).strict(),z_=a.enum(["standard","editorial","attention","activity"]),JY=a.object({type:a.literal("list"),id:pe,empty:Tt,presentation:z_.optional(),filter:D_.optional(),items:a.array(rC).max(nC)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.items.entries()){if(n.has(i.id))t.addIssue({code:"custom",message:`List item id "${i.id}" is duplicated`,path:["items",r,"id"]});n.add(i.id)}if(e.filter){let r=new Set(e.filter.options.map((o)=>o.value)),i=e.filter.allValue??"all";for(let[o,s]of e.items.entries())for(let c of s.filterValues??[])if(c!==i&&!r.has(c))t.addIssue({code:"custom",message:`List item filter value "${c}" has no matching option`,path:["items",o,"filterValues"]})}}),M_=a.object({key:pe,label:ye,align:a.enum(["start","center","end"]).optional()}).strict(),j_=a.object({key:pe,label:ye,values:a.array(Pp).max(50)}).strict(),HY=a.union([Pp,a.array(a.string().max(500)).max(50)]),GY=a.object({title:Tt.trim().min(1),description:ii.optional(),metadata:a.array(Tt).max(20).optional(),badges:a.array(A_).max(10).optional(),count:a.number().finite().optional(),tone:rn.optional()}).strict(),N_=a.object({id:Ta,cells:a.record(a.string(),HY),link:zp.optional()}).strict(),VY=a.object({type:a.literal("table"),id:pe,empty:Tt,filters:a.array(j_).max(20).optional(),columns:a.array(M_).min(1).max(30),rows:a.array(N_).max(500)}).strict().superRefine((e,t)=>{let n=new Set;for(let[i,o]of e.columns.entries()){if(n.has(o.key))t.addIssue({code:"custom",message:`Table column key "${o.key}" is duplicated`,path:["columns",i,"key"]});n.add(o.key)}for(let[i,o]of(e.filters??[]).entries())if(!n.has(o.key))t.addIssue({code:"custom",message:`Table filter key "${o.key}" has no matching column`,path:["filters",i,"key"]});let r=new Set;for(let[i,o]of e.rows.entries()){if(r.has(o.id))t.addIssue({code:"custom",message:`Table row id "${o.id}" is duplicated`,path:["rows",i,"id"]});r.add(o.id);for(let s of Object.keys(o.cells))if(!n.has(s))t.addIssue({code:"custom",message:`Table cell key "${s}" has no matching column`,path:["rows",i,"cells",s]})}}),QY=a.object({id:pe,label:ye,tone:rn.optional(),empty:Tt,items:a.array(rC).max(100)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.items.entries()){if(n.has(i.id))t.addIssue({code:"custom",message:`Matrix item id "${i.id}" is duplicated`,path:["items",r,"id"]});n.add(i.id)}}),KY=a.object({type:a.literal("matrix"),id:pe,columns:a.union([a.literal(1),a.literal(2),a.literal(3),a.literal(4)]).optional(),cells:a.array(QY).min(1).max(12)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.cells.entries()){if(n.has(i.id))t.addIssue({code:"custom",message:`Matrix cell id "${i.id}" is duplicated`,path:["cells",r,"id"]});n.add(i.id)}}),B_=a.union([$T,UT,WT,I_,R_,JT,HT,P_,JY,VY,KY,tC]),YY=a.object({type:a.literal("tabs"),id:pe,label:ye,defaultTab:pe,tabs:a.array(a.object({id:pe,label:ye,count:a.number().int().nonnegative().optional(),blocks:a.array(B_).max(30)}).strict()).min(1).max(12)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.tabs.entries()){if(n.has(i.id))t.addIssue({code:"custom",message:`Tab id "${i.id}" is duplicated`,path:["tabs",r,"id"]});n.add(i.id)}if(!n.has(e.defaultTab))t.addIssue({code:"custom",message:`Default tab "${e.defaultTab}" has no matching tab`,path:["defaultTab"]})});function XY(e){return e!==null&&typeof e==="object"&&"kind"in e&&e.kind==="rizom-workspace-action"&&"name"in e&&typeof e.name==="string"&&"input"in e&&typeof e.input==="object"&&e.input!==null&&"safeParse"in e.input&&typeof e.input.safeParse==="function"}var e7=a.custom(XY,{message:"Expected a workspace action definition"}),t7=a.object({id:pe,label:ye,description:ii.optional(),confirmation:a.literal("prepared").optional()}).strict(),E_=a.object({value:a.string().trim().min(1).max(500),label:ye}).strict(),n7=a.object({label:ye,control:QT,secret:a.boolean().optional(),options:a.array(E_).min(1).max(100).optional(),labelBy:a.object({field:pe,values:a.array(E_).min(1).max(100)}).strict().optional()}).strict(),r7=a.object({presentation:a.enum(["inline","disclosure"]).optional(),submitLabel:ye.optional(),fields:a.record(pe,n7)}).strict(),i7=a.object({label:ye,copyable:a.boolean().optional(),sensitive:a.boolean().optional()}).strict(),o7=a.object({title:ye,fields:a.record(pe,i7)}).strict(),jp=a.object({action:e7,input:a.unknown().optional(),form:r7.optional(),result:o7.optional(),capability:t7.optional(),label:ye.optional(),disabled:a.boolean().optional()}).strict(),__=rC.extend({actionsLabel:ye.optional(),actions:a.array(jp).max(20).optional()}),F_=a.object({type:a.literal("list"),id:pe,empty:Tt,presentation:z_.optional(),filter:D_.optional(),items:a.array(__).max(nC)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.items.entries()){if(n.has(i.id))t.addIssue({code:"custom",message:`List item id "${i.id}" is duplicated`,path:["items",r,"id"]});n.add(i.id)}if(e.filter){let r=new Set(e.filter.options.map((o)=>o.value)),i=e.filter.allValue??"all";for(let[o,s]of e.items.entries())for(let c of s.filterValues??[])if(c!==i&&!r.has(c))t.addIssue({code:"custom",message:`List item filter value "${c}" has no matching option`,path:["items",o,"filterValues"]})}}),s7=N_.extend({compact:GY.optional(),actions:a.array(jp).max(20).optional()}),L_=a.object({type:a.literal("table"),id:pe,empty:Tt,filters:a.array(j_).max(20).optional(),query:$Y.optional(),columns:a.array(M_).min(1).max(30),rows:a.array(s7).max(500)}).strict().superRefine((e,t)=>{let n=new Set;for(let[i,o]of e.columns.entries()){if(n.has(o.key))t.addIssue({code:"custom",message:`Table column key "${o.key}" is duplicated`,path:["columns",i,"key"]});n.add(o.key)}for(let[i,o]of(e.filters??[]).entries())if(!n.has(o.key))t.addIssue({code:"custom",message:`Table filter key "${o.key}" has no matching column`,path:["filters",i,"key"]});let r=new Set;for(let[i,o]of e.rows.entries()){if(r.has(o.id))t.addIssue({code:"custom",message:`Table row id "${o.id}" is duplicated`,path:["rows",i,"id"]});r.add(o.id);for(let s of Object.keys(o.cells))if(!n.has(s))t.addIssue({code:"custom",message:`Table cell key "${s}" has no matching column`,path:["rows",i,"cells",s]})}}),a7=a.object({id:pe,label:ye,tone:rn.optional(),empty:Tt,items:a.array(__).max(100)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.items.entries()){if(n.has(i.id))t.addIssue({code:"custom",message:`Matrix item id "${i.id}" is duplicated`,path:["items",r,"id"]});n.add(i.id)}}),c7=a.object({type:a.literal("matrix"),id:pe,columns:a.union([a.literal(1),a.literal(2),a.literal(3),a.literal(4)]).optional(),cells:a.array(a7).min(1).max(12)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.cells.entries()){if(n.has(i.id))t.addIssue({code:"custom",message:`Matrix cell id "${i.id}" is duplicated`,path:["cells",r,"id"]});n.add(i.id)}}),l7=jp.extend({type:a.literal("action"),id:pe.optional()}),u7=a.object({type:a.literal("actions"),id:pe.optional(),items:a.array(jp).max(30)}).strict(),dl=a.union([$T,UT,WT,o_,I_,R_,JT,HT,ZY,P_,F_,L_,c7,tC,l7,u7]),p7=a.object({type:a.literal("tabs"),id:pe,label:ye,defaultTab:pe,queryKey:pe.optional(),tabs:a.array(a.object({id:pe,label:ye,count:a.number().int().nonnegative().optional(),blocks:a.array(a.lazy(()=>a.union([dl,Mp,q_,Z_]))).max(30)}).strict()).min(1).max(12)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.tabs.entries()){if(n.has(i.id))t.addIssue({code:"custom",message:`Tab id "${i.id}" is duplicated`,path:["tabs",r,"id"]});n.add(i.id)}if(!n.has(e.defaultTab))t.addIssue({code:"custom",message:`Default tab "${e.defaultTab}" has no matching tab`,path:["defaultTab"]})}),Mp=a.object({disclosureLabel:ye.optional(),type:a.literal("card"),id:pe,label:ye,presentation:a.enum(["section","disclosure","feature"]).optional(),metadata:a.array(Tt).max(20).optional(),tone:rn.optional(),blocks:a.array(dl).max(12)}).strict().refine((e)=>e.disclosureLabel===void 0||e.presentation==="disclosure",{message:"disclosureLabel requires disclosure presentation",path:["disclosureLabel"]}),q_=a.object({type:a.literal("detail"),id:pe,queryKey:pe,empty:Tt,master:a.union([F_,L_]),open:a.object({forId:Ta,title:ye,blocks:a.array(a.union([dl,Mp])).max(30)}).strict().optional()}).strict(),Z_=a.object({type:a.literal("columns"),id:pe,primary:a.array(a.union([dl,Mp])).max(20),aside:a.array(a.union([dl,Mp])).max(12)}).strict(),d7=a.object({kicker:ye.optional(),title:Tt.optional(),description:ii.optional(),status:a.object({label:ye,detail:Tt.optional(),tone:rn.optional()}).strict().optional(),primaryAction:jp.optional(),blocks:a.array(a.union([dl,p7,q_,Z_,Mp])).max(50)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.blocks.entries()){if(i.id===void 0)continue;if(n.has(i.id))t.addIssue({code:"custom",message:`Operator view block id "${i.id}" is duplicated`,path:["blocks",r,"id"]});n.add(i.id)}}),$_=a.object({title:Tt.optional(),blocks:a.array(a.union([B_,YY])).max(50)}).strict().superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.blocks.entries()){if(i.id===void 0)continue;if(n.has(i.id))t.addIssue({code:"custom",message:`Operator view block id "${i.id}" is duplicated`,path:["blocks",r,"id"]});n.add(i.id)}}),U_=a.object({items:a.array(a.object({label:ye,value:a.string().max(500),tone:a.enum(["good","warn"]).optional()}).strict()).max(4),attention:a.number().int().nonnegative().optional()}).strict(),m7=a.object({view:$_,digest:U_.optional()}).strict();function W_(e){let t=$_.safeParse(e);return t.success?{success:!0,data:t.data}:{success:!1,issues:Dp(t.error)}}function J_(e){let t=U_.safeParse(e);return t.success?{success:!0,data:t.data}:{success:!1,issues:Dp(t.error)}}function H_(e){let t=m7.safeParse(e);return t.success?{success:!0,data:t.data}:{success:!1,issues:Dp(t.error)}}function G_(e){let t=d7.safeParse(e);return t.success?{success:!0,data:t.data}:{success:!1,issues:Dp(t.error)}}function V_(e){let t=XT(e,"dashboard");if(t.length>0)return{success:!1,issues:t};return W_(e)}function iC(e,t){let n=XT(e,"studio");if(n.length>0)return{success:!1,issues:n};let r=G_(e);if(!r.success)return r;let i=[],o=[],s=r.data.primaryAction?cs([r.data.primaryAction],t.actions,t.permission,[],["primaryAction"]):{controls:[],issues:[]};o.push(...s.issues);for(let[c,l]of r.data.blocks.entries()){let u=Ca(l,c,t.actions,t.permission);if(o.push(...u.issues),u.block)i.push(u.block)}if(o.length>0)return{success:!1,issues:o};return{success:!0,data:Object.freeze({...r.data.kicker?{kicker:r.data.kicker}:{},...r.data.title?{title:r.data.title}:{},...r.data.description?{description:r.data.description}:{},...r.data.status?{status:r.data.status}:{},...s.controls[0]?{primaryAction:s.controls[0]}:{},blocks:Object.freeze(i)})}}function Q_(e){return J_(e)}function oC(e){return H_(e)}var h7=a.object({actionId:a.string().trim().min(1).max(120),input:a.unknown(),mode:a.enum(["prepare","execute"]).default("execute"),confirmationToken:a.string().uuid().optional()}).strict(),y7=a.object({capability:a.object({confirmation:a.literal("prepared").optional()})}).passthrough(),b7=a.array(a.string().trim().min(1).max(120)).max(200).transform((e)=>[...new Set(e)]),S7=a.object({summary:a.string().trim().min(1).max(500),revision:a.string().trim().min(1).max(500)}),x7=300000,v7=1000;function aC(e){if(e===null||typeof e!=="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(aC).join(",")}]`;return`{${Object.keys(e).sort().map((t)=>`${JSON.stringify(t)}:${aC(e[t]??null)}`).join(",")}}`}function K_(e){return f7("sha256").update(aC(e)).digest("hex")}var Zg=a.json();function w7(e,t,n){let r=e?.safeParse(t??{});if(r&&!r.success)throw gt(n,"received invalid query state",ml(r.error.issues));let i=r?.data;if(e&&!Zg.safeParse(i).success)throw gt(n,"query state must be JSON-native");return Object.freeze({get(o){if(o!==e)throw gt(n,"query reader was called with a schema not declared by the workspace");return o.parse(i)}})}function gt(e,t,n){return Error(`Service "${e.publicServiceId}" package "${e.packageName}" Studio workspace "${e.workspaceId}" ${t}${n?`: ${n}`:""}`)}function ml(e){return e.slice(0,5).map((t)=>`${t.path.length>0?t.path.join("."):"value"}: ${t.message}`).join("; ")}function T7(e){return Object.freeze({actor:Object.freeze({id:e.userId}),permission:e.userPermissionLevel,isAnchor:e.isAnchor})}function Y_(e,t){return t?AbortSignal.any([t,e]):e}function X_(e,t,n){let r=e.safeParse(t);if(!r.success)throw gt(n,"returned invalid data; return a value matching its data schema",ml(r.error.issues));return r.data}function tF(e,t){return e.parse(t)}async function eF(e,t,n){let r=tF(e.definition.input,n),i=GT(e).prepare;if(!i)throw Error("Prepared confirmation callback is unavailable");return S7.parse(await i({...t,input:r}))}async function C7(e,t,n){let r=tF(e.definition.input,n);return GT(e).execute({...t,input:r})}function cC(e){let t=e.binding.definition,n=n_(e.binding),r={publicServiceId:e.publicServiceId,packageName:e.packageName,workspaceId:t.id};if(t.query){let l=t.query.safeParse({});if(!l.success)throw gt(r,"declares a query schema without a valid empty/default state",ml(l.error.issues));if(!Zg.safeParse(l.data).success)throw gt(r,"query state must be JSON-native")}let i=new Map;async function o(l,u,p){let m=await Lg({config:e.config,state:e.state,...e.accountSettingsRegistration?{accountSettingsRegistration:e.accountSettingsRegistration}:{},provider:{caller:T7(l),signal:u},context:e.context});return Object.freeze({...m,query:w7(t.query,p,r)})}async function s(l,u){if(!mo(l.userPermissionLevel,t.permission))return!1;if(!n.authorize)return!0;let p=await n.authorize(await o(l,u,void 0));if(typeof p!=="boolean")throw gt(r,"authorization policy must return a boolean");return p}let c=n.listEntityTypes;return{id:e.runtimeWorkspaceId,label:t.label,rendererName:OT,priority:t.priority??50,permission:t.permission,...t.query?{urlQuery:!0}:{},...e.aliases?{aliases:e.aliases}:{},entityTypes:c?async(l)=>{if(!await s(l,e.runtimeSignal))return[];return b7.parse(await c(await o(l,e.runtimeSignal,void 0)))}:(t.entities??[]).map((l)=>l.type),accessHandler:(l)=>s(l,e.runtimeSignal),async dataProvider(l,u,p){let m=Y_(e.runtimeSignal,p);if(m.throwIfAborted(),!await s(l,m))throw gt(r,"was requested below its admission policy");let g=await o(l,m,u),f;try{f=await n.load(g)}catch(B){if(m.aborted)throw m.reason??B;throw gt(r,"data loader failed")}m.throwIfAborted();let v=X_(t.data,f,r),w;try{w=t.view({data:v})}catch(B){if(m.aborted)throw m.reason??B;throw gt(r,"view derivation failed")}let k=iC(w,{actions:t.actions,permission:l.userPermissionLevel});if(!k.success)throw gt(r,"returned an invalid view; use supported StudioWorkspaceView blocks and declared actions",ml(k.issues));let P=t.refresh?.({data:v});if(P!==void 0&&(!Number.isInteger(P)||P<500||P>60000))throw gt(r,"returned an invalid refresh interval; use 500-60000 milliseconds");return Object.freeze({view:k.data,...P===void 0?{}:{refreshAfterMs:P}})},async actionHandler(l,u,p){let m=Y_(e.runtimeSignal,p);if(m.throwIfAborted(),!await s(u,m))throw gt(r,"action was requested below its admission policy");let g=h7.safeParse(l);if(!g.success)throw gt(r,"received an invalid action request");let f=e.binding.actions.find((ee)=>ee.definition.name===g.data.actionId);if(!f)throw gt(r,`does not declare action "${g.data.actionId}"`);let v=f.definition;if(v.permission!==void 0&&!mo(u.userPermissionLevel,v.permission))throw gt(r,`action "${v.name}" was requested below its minimum permission`);let w=v.input.safeParse(g.data.input);if(!w.success)throw gt(r,`action "${v.name}" received invalid input`,ml(w.error.issues));let k=Zg.safeParse(w.data);if(!k.success)throw gt(r,`action "${v.name}" input must be JSON-native`);let P=await o(u,m,void 0),B=y7.safeParse(w.data),j=v.confirmation?.kind==="prepared"&&(v.confirmation.conditional!==!0||B.success&&B.data.capability.confirmation==="prepared");if(g.data.mode==="prepare"){if(!j)throw gt(r,`action "${v.name}" does not support prepared confirmation`);let ee=await eF(f,P,w.data),he=Date.now();for(let[Ye,Ie]of i)if(Ie.expiresAt<=he)i.delete(Ye);while(i.size>=v7){let Ye=i.keys().next();if(Ye.done)break;i.delete(Ye.value)}let Ee=g7(),We=he+x7;return i.set(Ee,{callerId:u.userId,actionId:v.name,inputDigest:K_(k.data),revision:ee.revision,expiresAt:We}),{kind:"prepared-confirmation",token:Ee,summary:ee.summary,expiresAt:new Date(We).toISOString()}}if(j){let ee=g.data.confirmationToken,he=ee?i.get(ee):void 0;if(ee)i.delete(ee);if(he===void 0||he.expiresAt<=Date.now()||he.callerId!==u.userId||he.actionId!==v.name||he.inputDigest!==K_(k.data))throw gt(r,`action "${v.name}" prepared confirmation is invalid or stale`);let Ee;try{Ee=await eF(f,P,w.data)}catch{throw gt(r,`action "${v.name}" prepared confirmation is invalid or stale`)}if(Ee.revision!==he.revision)throw gt(r,`action "${v.name}" prepared confirmation is invalid or stale`)}let Y;try{Y=await C7(f,P,w.data)}catch(ee){if(m.aborted)throw m.reason??ee;throw gt(r,`action "${v.name}" failed`)}let G=v.output.safeParse(Y);if(!G.success)throw gt(r,`action "${v.name}" returned invalid output`,ml(G.error.issues));let I=Zg.safeParse(G.data);if(!I.success)throw gt(r,`action "${v.name}" output must be JSON-native`);return I.data},...t.badge?{badgeProvider:async(l)=>{let u=e.runtimeSignal;if(!await s(l,u))return 0;let p=X_(t.data,await n.load(await o(l,u,void 0)),r),m=t.badge?.({data:p})??0;if(!Number.isInteger(m)||m<0||m>999999)throw gt(r,"returned an invalid badge; use an integer from 0 to 999999");return m}}:{}}}var sC=Object.freeze({config:Object.freeze({}),state:Object.freeze({}),accountSettings:void 0});function nF(e){let t=e.bind(sC);if(t.definition!==e.definition)throw Error(`Built-in Studio binding for "${e.definition.id}" returned a different definition`);let n=`${e.context.pluginId}:${e.definition.id}`;return cC({publicServiceId:e.context.pluginId,packageName:e.context.pluginId,runtimeWorkspaceId:n,...e.aliases?{aliases:e.aliases.map((i)=>({id:`${e.context.pluginId}:${i.id}`,query:i.query}))}:{},config:sC.config,state:sC.state,binding:t,context:e.context,runtimeSignal:e.runtimeSignal??new AbortController().signal})}async function E7(e){if(e.context.executionOnly||!e.context.studio.isAvailable())return!1;return e.context.studio.registerWorkspace(nF(e))}function Ea(e,t,n){return Error(`Service "${e.publicServiceId}" package "${e.packageName}" dashboard widget "${e.widgetId}" ${t}${n?`: ${n}`:""}`)}function uC(e){return e.slice(0,5).map((t)=>`${t.path.length>0?t.path.join("."):"value"}: ${t.message}`).join("; ")}function I7(e,t,n){let r=e.safeParse(t);if(!r.success)throw Ea(n,"returned invalid data; return a value matching its data schema",uC(r.error.issues));return r.data}function R7(e,t){let n=V_(e);if(!n.success)throw Ea(t,"returned an invalid view; use supported OperatorView blocks and safe links",uC(n.issues));return n.data}function k7(e,t){let n=Q_(e);if(!n.success)throw Ea(t,"returned an invalid digest; provide at most four bounded lines and a non-negative attention count",uC(n.issues));return n.data}function pC(e){let t=e.binding.definition,n={publicServiceId:e.publicServiceId,packageName:e.packageName,widgetId:t.id},r=XB(e.binding);return{id:t.id,title:t.title,...t.description?{description:t.description}:{},group:t.group,rendererName:zT,section:t.placement,priority:t.priority??50,visibility:t.permission,async dataProvider(i){let o={...i,signal:AbortSignal.any([i.signal,e.runtimeSignal])},s=o.caller?.permission??"public";if(!mo(s,t.permission))throw Ea(n,"was requested below its minimum permission");let c=await Lg({config:e.config,state:e.state,...e.accountSettingsRegistration?{accountSettingsRegistration:e.accountSettingsRegistration}:{},provider:o,context:e.context});o.signal.throwIfAborted();let l;try{l=await r(c)}catch(f){if(o.signal.aborted)throw o.signal.reason??f;throw Ea(n,"data loader failed")}o.signal.throwIfAborted();let u=I7(t.data,l,n),p;try{p=t.view({data:u})}catch(f){if(o.signal.aborted)throw o.signal.reason??f;throw Ea(n,"view derivation failed")}let m=R7(p,n),g;if(t.digest){let f;try{f=t.digest({data:u})}catch(v){if(o.signal.aborted)throw o.signal.reason??v;throw Ea(n,"digest derivation failed")}g=k7(f,n)}return Object.freeze({view:m,...g?{digest:g}:{},...e.includeSource?{source:u}:{}})},digestProvider(i){let o=oC(i);if(!o.success)return{};return{...o.data.digest?{digest:o.data.digest.items.map((s)=>({...s,tone:s.tone??"plain"}))}:{},...o.data.digest?.attention!==void 0?{needsAttention:o.data.digest.attention}:{}}}}}var lC=Object.freeze({config:Object.freeze({}),state:Object.freeze({}),accountSettings:void 0});async function P7(e){if(e.context.executionOnly||!e.context.dashboard.isAvailable())return!1;let t=e.definition.bind(lC,({caller:i,signal:o})=>e.load({caller:i,signal:o})),n=pC({publicServiceId:e.context.pluginId,packageName:e.context.pluginId,config:lC.config,state:lC.state,binding:t,context:e.context,runtimeSignal:e.runtimeSignal??new AbortController().signal,includeSource:e.render!==void 0}),r=e.render?{...n,renderer:e.render}:n;return e.context.dashboard.registerWidget(r)}function dC(e,t,n){let r=wa(e,t,n),i=e.getEntityService(),o=e.getRenderService(),s=e.getContentService(),c=e.getPermissionService();return{...r,permissions:{...r.permissions,getConfiguredPrincipalSeeds:()=>c.getConfiguredPrincipalSeeds(),replaceRuntimePrincipalState:(l)=>c.replaceRuntimePrincipalState(l)},entityService:i,bulkMutations:i,entities:jg(e),webRoutes:{getRoutes:()=>e.getPluginWebRoutes()},content:{generate:async({targets:l,toolContext:u,force:p,dryRun:m,signal:g})=>{g?.throwIfAborted();let f=u?{actor:u.actor,permissionLevel:u.userPermissionLevel??"public"}:{actor:{kind:"service",serviceId:t},permissionLevel:c.determineUserLevel("service",t)},v=wp(e.getJobQueueService(),t,!1);return s.submitGeneration({caller:f,targets:l,pluginId:t,options:{...p!==void 0&&{force:p},...m!==void 0&&{dryRun:m}}},{enqueue:(w,k)=>v({type:sr.contentGeneration,data:w,toolContext:u??null,options:{source:t,rootJobId:k,maxRetries:0,metadata:{operationType:"content_operations",pluginId:t}}})},g)}},templates:{register:(l,u)=>{e.registerTemplates(l,u??t)},format:(l,u)=>s.formatContent(l,u,{pluginId:t}),parse:(l,u)=>s.parseContent(l,u,t),resolve:async(l,u)=>s.resolveContent(l,u,t),getCapabilities:(l)=>{let u=e.getTemplate(Oi(l,t));if(!u)return null;let p=rl.getCapabilities(u);return{canGenerate:p.canGenerate,canFetch:p.canFetch,canRender:p.canRender,isStaticOnly:p.isStaticOnly}}},views:{get:(l)=>o.get(l)??void 0,list:()=>o.list(),hasRenderer:(l,u="web")=>o.hasRenderer(l,u),getRenderer:(l,u="web")=>o.getRenderer(l,u),validate:(l,u)=>o.validate(l,u)},prompts:Ng(i),ai:Bg(e),registerInstructions:(l)=>{e.registerInstructions(t,l)}}}class $g extends Sa{type="service";getApiRoutes(){return[]}getWebRoutes(){return[]}async register(e,t){let n=dC(e,this.id,t);return this.context=n,this.setupMessageHandlers(n),await this.onRegister(n),this.getCapabilities()}get entityService(){return this.getContext().entityService}registerEntityType(e,t,n,r){this.getContext().entities.register(e,t,n,r)}async enqueueJob(e){return this.getContext().jobs.enqueue(e)}async enqueueBatch(e,t){return this.getContext().jobs.enqueueBatch(e,t)}async registerEntityTypes(e){}async registerJobHandlers(e){}async onRegister(e){await this.registerEntityTypes(e),await this.registerJobHandlers(e)}}var mC="_rizomConfirmationToken";function O7(e){if(e===null||typeof e!=="object")return;let t=Reflect.get(e,mC);return typeof t==="string"?t:void 0}function D7(e){if(e===void 0)return{};try{return JSON.parse(e)}catch{return e}}function rF(e,t){let n=t.status==="completed"&&t.result!==void 0?co(e.output,t.result):void 0;return{id:t.id,status:t.status,progress:t.progress,...n!==void 0?{result:n}:{},...t.lastError?{error:t.lastError}:{}}}function z7(e,t,n){let r=e.definition,i=p_(e);return{...r.deadline?{executionTimeoutMs:VT(r.deadline)}:{},validateAndParse(o){let s=r.input.safeParse(o);return s.success?s.data:null},async process(o,s,c,l){let u=await i({input:o,signal:l,progress:c,templates:n,entities:{async get(p,m){let g=await t.entityService.getEntity({entityType:p.type,id:m,visibilityScope:"restricted"});return g?ll(p,g):null}},messaging:{async publish(p){await t.messaging.send({type:p.topic,payload:p.data})}}});return r.output.parse(u)}}}class oF extends $g{definition;publicId;toolContext=new A7;cleanups=[];registeredJobs=new Set;operatorAbortController=new AbortController;registeredStudioWorkspaceIds=[];registeredDashboardWidgetIds=[];accountSettingsRegistration;studioWorkspaceBindings=[];dashboardWidgetBindings=[];scopedShell;state;tools;resources;constructor(e,t,n,r){super(r,n,t,ul());this.definition=e,this.publicId=e.id}register(e,t){return this.scopedShell=e,super.register(e,t)}async onRegister(e){if(await super.onRegister(e),this.definition.accountSettings&&!e.executionOnly)this.accountSettingsRegistration=e.accountSettings.register({ownerPluginId:this.id,packageName:this.packageName,definitionId:this.definition.id,definition:this.definition.accountSettings});this.state=this.definition.setup?await this.definition.setup({config:this.config,lifecycle:{onCleanup:(i)=>{this.cleanups.push(i)}}}):Fg();let t=this.templateFormatter();e.templates.register(this.runtimeTemplates(),this.id),this.registerPrompts();let n=this.definition.jobs?.({config:this.config,state:this.state})??[],r=new Set;for(let i of n){let o=i.definition;if(r.has(o.name))throw Error(`Service "${this.publicId}" registers job "${o.name}" more than once`);r.add(o.name),this.registeredJobs.add(o),h_(o,`${this.id}:${o.name}`),e.jobs.registerHandler(o.name,z7(i,e,t))}}async onRegistrationComplete(e){if(this.definition.accountSettings&&!e.executionOnly&&!e.accountSettings.hasBackend())throw Error(`Service "${this.publicId}" account settings require auth-service and an account settings encryption key`);if(e.executionOnly)return;this.bindOperatorDefinitions(e);let t=[],n=[];try{for(let r of this.studioWorkspaceBindings){let i=`${this.id}:${r.definition.id}`,o=cC({publicServiceId:this.publicId,packageName:this.packageName,runtimeWorkspaceId:i,config:this.config,state:this.requireState(),...this.accountSettingsRegistration?{accountSettingsRegistration:this.accountSettingsRegistration}:{},binding:r,context:e,runtimeSignal:this.operatorAbortController.signal});try{if(await e.studio.registerWorkspace(o)===!1){await this.rollbackStudioWorkspaces(e,t),t.splice(0);break}}catch(s){throw Error(`Service "${this.publicId}" package "${this.packageName}" Studio workspace "${r.definition.id}" host registration failed; correct the declaration or Studio configuration: ${Be(s)}`,{cause:s})}t.push(i)}this.registeredStudioWorkspaceIds.push(...t);for(let r of this.dashboardWidgetBindings){let i=pC({publicServiceId:this.publicId,packageName:this.packageName,config:this.config,state:this.requireState(),...this.accountSettingsRegistration?{accountSettingsRegistration:this.accountSettingsRegistration}:{},binding:r,context:e,runtimeSignal:this.operatorAbortController.signal});try{if(!await e.dashboard.registerWidget(i)){await this.rollbackDashboardWidgets(e,n),n.splice(0);break}}catch(o){throw Error(`Service "${this.publicId}" package "${this.packageName}" dashboard widget "${r.definition.id}" host registration failed; correct the declaration or Dashboard configuration: ${Be(o)}`,{cause:o})}n.push(r.definition.id)}this.registeredDashboardWidgetIds.push(...n)}catch(r){throw await this.rollbackDashboardWidgets(e,n),await this.rollbackStudioWorkspaces(e,t),r}}async getTools(){if(this.tools)return this.tools;let e=this.requireState(),t=this.definition.tools?.({config:this.config,state:e,jobs:this.jobs(),templates:this.templateFormatter(),content:this.content()})??[],n=new Set;return this.tools=t.map((r)=>{if(n.has(r.name))throw Error(`Service "${this.publicId}" defines tool "${r.name}" more than once`);return n.add(r.name),this.runtimeTool(r)}),this.tools}async getResources(){if(this.resources)return this.resources;let e=this.definition.resources?.({config:this.config,state:this.requireState()})??{};return this.resources=Object.entries(e).map(([t,n])=>this.runtimeResource(t,n)),this.resources}async getInstructions(){return this.definition.instructions?.({config:this.config,state:this.requireState()})}async onShutdown(){this.operatorAbortController.abort(Error(`Service "${this.publicId}" is shutting down`)),await this.rollbackDashboardWidgets(this.getContext(),this.registeredDashboardWidgetIds.splice(0)),await this.rollbackStudioWorkspaces(this.getContext(),this.registeredStudioWorkspaceIds.splice(0)),this.studioWorkspaceBindings=[],this.dashboardWidgetBindings=[],this.tools=void 0,this.resources=void 0;for(let e of this.registeredJobs)y_(e,`${this.id}:${e.name}`);this.registeredJobs.clear();for(let e of this.cleanups.splice(0).reverse())await e()}bindOperatorDefinitions(e){if(this.definition.dashboardWidgets&&e.dashboard.isAvailable()){let t=this.definition.dashboardWidgets({config:this.config,state:this.requireState(),accountSettings:this.definition.accountSettings}),n=new Set;for(let r of t){let i=r.definition.id;if(n.has(i))throw Error(`Service "${this.publicId}" package "${this.packageName}" registers dashboard widget "${i}" more than once; return each local widget definition once`);n.add(i)}this.dashboardWidgetBindings=Object.freeze([...t])}if(this.definition.studioWorkspaces&&e.studio.isAvailable()){let t=this.definition.studioWorkspaces({config:this.config,state:this.requireState(),accountSettings:this.definition.accountSettings}),n=new Set;for(let r of t){let i=r.definition.id;if(n.has(i))throw Error(`Service "${this.publicId}" package "${this.packageName}" registers Studio workspace "${i}" more than once; return each local workspace definition once`);n.add(i)}this.studioWorkspaceBindings=Object.freeze([...t])}}async rollbackStudioWorkspaces(e,t){for(let n of[...t].reverse()){try{await e.studio.unregisterWorkspace(n)}catch(i){this.logger.error("Failed to unregister declarative Studio workspace",{serviceId:this.publicId,packageName:this.packageName,workspaceId:n,error:Be(i)})}let r=this.registeredStudioWorkspaceIds.lastIndexOf(n);if(r>=0)this.registeredStudioWorkspaceIds.splice(r,1)}}async rollbackDashboardWidgets(e,t){for(let n of[...t].reverse()){try{await e.dashboard.unregisterWidget(n)}catch(i){this.logger.error("Failed to unregister declarative dashboard widget",{serviceId:this.publicId,packageName:this.packageName,widgetId:n,error:Be(i)})}let r=this.registeredDashboardWidgetIds.lastIndexOf(n);if(r>=0)this.registeredDashboardWidgetIds.splice(r,1)}}requireState(){if(this.state===void 0)throw Error(`Service "${this.publicId}" has not completed setup`);return this.state}jobs(){let e=this.getContext();return{enqueue:async(t,n)=>{if(!this.registeredJobs.has(t))throw Error(`Service "${this.publicId}" cannot enqueue unregistered job "${t.name}"`);let r=t.input.parse(n),i=this.toolContext.getStore(),o=t.retry?t.retry.attempts-1:void 0,s=await e.jobs.enqueue({type:t.name,data:r,...i?{toolContext:i}:{},options:{source:this.id,metadata:{operationType:"data_processing",pluginId:this.id},...o!==void 0?{maxRetries:o}:{}}});return Object.freeze({id:s,status:async()=>{let c=await e.jobs.getStatus(s);return c?rF(t,c):null}})},async status(t,n){let r=await e.jobs.getStatus(n);return r?rF(t,r):null}}}content(){let e=this.getContext(),t=this.erasedTemplates(),n=(r)=>t.get(r)?.generation!==void 0;return{target:(r)=>g_(r,n),generate:async(r)=>{let i=this.toolContext.getStore(),o=await e.content.generate({targets:[...r.targets],toolContext:i,...r.force!==void 0&&{force:r.force},...r.dryRun!==void 0&&{dryRun:r.dryRun},...i?.signal&&{signal:i.signal}});return{...o,items:o.items.map(({destination:s,templateName:c,...l})=>({destination:{entityType:s.entityType,idPath:s.idPath,entityId:s.entityId},template:Rw(c,this.id),...l}))}}}}templateFormatter(){let e=this.erasedTemplates();return{format(t,n){let r=e.get(t);if(!r)throw Error(`Template not found: ${t}`);return r.format(n)}}}erasedTemplateCache;erasedTemplates(){return this.erasedTemplateCache??=new Map(Object.entries(this.definition.templates??{}).map(([e,t])=>[e,{schema:t.schema,generation:t.generation,format:(n)=>t.format({value:t.schema.parse(n)})}])),this.erasedTemplateCache}erasedViews(){return new Map(Object.entries(this.definition.views??{}).map(([e,t])=>[e,{schema:t.schema,description:t.description,component:(n)=>t.renderers.web(t.schema.parse(n))}]))}runtimeTemplates(){let e=this.erasedTemplates(),t=this.erasedViews(),n={},r=new Set([...e.keys(),...t.keys()]);for(let i of r){let o=e.get(i),s=t.get(i);if(o&&s&&o.schema!==s.schema)throw Error(`Service "${this.publicId}" template and view "${i}" must share one schema`);let c=o?.schema??s?.schema;if(!c)continue;if(o?.generation&&!o.generation.prompt.trim())throw Error(`Service "${this.publicId}" generation template "${i}" requires a non-empty prompt`);let l={name:i,description:s?.description??`${this.publicId} ${i}`,schema:c,requiredPermission:"admin",...o?{formatter:{format:(u)=>o.format(u),parse:()=>{throw Error(`Template "${i}" is format-only`)}},...o.generation?{basePrompt:o.generation.prompt,dataSourceId:"shell:ai-content",...o.generation.useKnowledgeContext!==void 0?{useKnowledgeContext:o.generation.useKnowledgeContext}:{}}:{}}:{}};if(!s){n[i]=Ug(l);continue}n[i]=Ug({...l,schema:s.schema,layout:{component:s.component}})}return n}registerPrompts(){let e=this.scopedShell;if(!e)throw Error(`Service "${this.publicId}" has no shell`);for(let[t,n]of Object.entries(this.definition.prompts??{})){let r={name:`${this.publicId}_${t}`,...n.description?{description:n.description}:{},args:{input:{description:"JSON input",required:!0}},handler:async(i)=>{let o=n.input.parse(D7(i.input));return{messages:[{role:"user",content:{type:"text",text:n.render({input:o})}}]}}};e.registerPrompt(this.id,r)}}runtimeResource(e,t){return{uri:t.uri,name:e,...t.description?{description:t.description}:{},mimeType:t.mimeType??"text/plain",handler:async()=>({contents:[{uri:t.uri,mimeType:t.mimeType??"text/plain",text:await t.read()}]})}}runtimeTool(e){let t=`${this.publicId}_${e.name}`,n=iF({label:e.name,requestNoun:"the operation"});return{name:t,description:e.description,inputSchema:e.input.shape,outputSchema:e.output,visibility:e.permission??"admin",sideEffects:e.sideEffects??(e.confirmation?"writes":"none"),handler:async(r,i)=>{try{let o=O7(r);if(o!==void 0){let l=n.validateConfirmed(o,r);if(l)return l;let u={...a.record(a.string(),a.unknown()).parse(r)};delete u[mC],r=u}let s=e.input.parse(r);if(o===void 0&&e.confirmation)return{needsConfirmation:!0,toolName:t,summary:e.confirmation,args:n.buildArgs((l)=>({...a.record(a.string(),a.unknown()).parse(s),[mC]:l}))};let c=await this.toolContext.run(i,()=>e.execute({input:s,signal:i.signal??new AbortController().signal}));return{success:!0,data:e.output.parse(c)}}catch(o){return{success:!1,error:Be(o)}}}}}}function sF(e,t,n,r){return new oF(e,t,n,r)}function aF(e){return os({family:"service",id:e.id,config:e.config,instantiate:({config:t,package:n,scope:r})=>sF(e,t,n,r(e.id))})}function M7(e){if(e.accountSettings!==void 0){let n={...e,accountSettings:e.accountSettings};return aF(n)}let t={...e,accountSettings:void 0};return aF(t)}var cF=30000,lF=1e4;function uF(e,t,n){let r,i=new Promise((o,s)=>{r=setTimeout(()=>s(Error(n)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))}function Wg(e,t,n){let r=!1,i=0,o,s,c=Promise.resolve(),l=new Map,u=()=>{let f=c.catch(()=>{return}).then(()=>p());return c=f.then(()=>{o=void 0},(v)=>{o="Account task reconciliation failed"}),f},p=async()=>{if(!r)return;let f=i,v=await n.listConfigured(t);if(f!==i)return;let w=new Map(v.map((k)=>[k.id,k.revision]));for(let[k,P]of l)if(w.get(k)!==P.revision)await g(k,P);if(f!==i)return;for(let k of v)if(!l.has(k.id))m(k)},m=(f)=>{let v=new AbortController,w,k,P=new Promise((Y,G)=>{w=Y,k=G}),B={controller:v,revision:f.revision,status:"starting",message:"Connecting",run:Promise.resolve()},j=Promise.resolve().then(()=>e.run({account:Object.freeze({id:f.id,settings:f.settings}),signal:v.signal,health:{ready(){B.status="ready",B.message="Ready",w?.()},warning(Y){B.status="warning",B.message=Y}}})).then(()=>{if(!v.signal.aborted)throw Error(`Account-bound daemon "${e.id}" stopped before it was aborted`)}).catch((Y)=>{if(v.signal.aborted)return;let G=Y instanceof Error?Y:Error(Be(Y));B.status="error",B.message="Account task failed",k?.(G)});B.run=j,l.set(f.id,B),uF(P,cF,`Account-bound daemon "${e.id}" did not report readiness within ${cF}ms`).catch(()=>{if(v.signal.aborted)return;B.status="error",B.message="Account task did not become ready",v.abort()})},g=async(f,v)=>{if(l.get(f)!==v)return;l.delete(f),v.controller.abort(),await uF(v.run,lF,`Account-bound daemon "${e.id}" task did not stop within ${lF}ms`).catch(()=>{return})};return{async start(){if(r)return;r=!0,i++,s=n.subscribe(t,()=>{u()}),await u()},async stop(){if(!r&&l.size===0)return;r=!1,i++,s?.(),s=void 0,await c.catch(()=>{return});let f=[...l.entries()];await Promise.all(f.map(([v,w])=>g(v,w)))},healthCheck(){let f={total:l.size,ready:0,warning:0,error:0};for(let w of l.values())if(w.status==="ready")f.ready++;else if(w.status==="warning")f.warning++;else if(w.status==="error")f.error++;let v=o||f.error>0?"error":f.warning>0?"warning":"healthy";return Promise.resolve({status:v,message:o??(f.total===0?"No configured accounts":`${f.ready} of ${f.total} account task(s) ready`),lastCheck:new Date,details:f})}}}var WNe=["GET","POST","PUT","DELETE","OPTIONS"],j7="data-site-slot";class pF extends Response{slot;constructor(e,t={}){let{slot:n,...r}=t;super(e,r);this.slot=n}}function Jg(e,t={}){return new Response(JSON.stringify(e),{status:t.status??200,headers:{"Content-Type":"application/json; charset=utf-8",...t.headers}})}function Np(e,t,n={}){return Jg({error:e},{status:t,...n})}function Bp(e){let t,n,r={status:"unknown",message:"Waiting for readiness",lastCheck:new Date};return{async start(){if(t)return;t=new AbortController;let i=t,o,s,c=new Promise((p,m)=>{o=p,s=m});n=Promise.resolve().then(()=>e.run({signal:i.signal,health:{ready(){r={status:"healthy",message:"Ready",lastCheck:new Date},o?.()},warning(p){r={status:"warning",message:p,lastCheck:new Date}}}})).then(()=>{if(!i.signal.aborted)throw Error(`Daemon "${e.id}" stopped before it was aborted`)}).catch((p)=>{let m=p instanceof Error?p:Error(String(p));throw r={status:"error",message:m.message,lastCheck:new Date},s?.(m),m}),n.catch(()=>{return});let l,u=new Promise((p,m)=>{l=setTimeout(()=>{let g=Error(`Daemon "${e.id}" did not report readiness within 30000ms`);r={status:"error",message:g.message,lastCheck:new Date},i.abort(),m(g)},30000)});try{await Promise.race([c,u])}finally{clearTimeout(l)}},async stop(){let i=t,o=n;t=void 0,n=void 0,i?.abort();let s,c=o?await Promise.race([o.then(()=>!0,()=>!0),new Promise((l)=>{s=setTimeout(()=>l(!1),1e4)})]):!0;if(clearTimeout(s),!c)r={status:"error",message:`Daemon "${e.id}" did not stop within 10000ms`,lastCheck:new Date};if(r.status!=="error")r={status:"unknown",message:"Stopped",lastCheck:new Date}},healthCheck(){return Promise.resolve({...r,lastCheck:new Date})}}}function dF(e){return fF(e)}function mF(e){if(!e)return;return{...e.userPermissionLevel&&{userPermissionLevel:e.userPermissionLevel},...e.isAnchor!==void 0&&{isAnchor:e.isAnchor},...e.interfaceType&&{interfaceType:e.interfaceType},...e.channelId&&{channelId:e.channelId},...e.channelName&&{channelName:e.channelName},...e.actor&&{actor:e.actor},...e.source&&{source:e.source},...e.attachments&&{attachments:e.attachments},...e.guestExecution&&{guestExecution:e.guestExecution},...e.guestScreening&&{guestScreening:e.guestScreening}}}function gF(e){return{get guestReady(){return e.guestReady===!0},chat:async(t,n,r,i)=>{let o=mF(r),s=i?await e.chat(t,n,o,i):await e.chat(t,n,o);return dF(s)},confirmPendingAction:async(t,n,r,i,o)=>{let s=mF(i);if(!s)throw Error("Confirmation requires caller context.");let c=o?await e.confirmPendingAction(t,n,r,s,o):await e.confirmPendingAction(t,n,r,s);return dF(c)},invalidate:()=>{e.invalidateAgent()}}}var hF=Symbol.for("brains.httpRouteSnapshotProvider");function Hg(e){let t=Reflect.get(e,hF);return typeof t==="function"?t:void 0}function N7(e,t){if(Hg(e))throw Error("HTTP route snapshot provider is already bound");Object.defineProperty(e,hF,{value:t,enumerable:!1,configurable:!0,writable:!1})}function yF(e,t){let n=Hg(e);if(!n)throw Error("HTTP route snapshot provider is not bound");if(Hg(t))return;N7(t,n)}function bF(e){let t=Hg(e);if(!t)throw Error("HTTP route snapshot provider is not bound");return t()}function Gg(e,t,n){let r=wa(e,t,n),i=e.getMCPService(),o=e.getPermissionService(),s=gF(e.getAgentService());return{...r,mcpTransport:i,agent:s,permissions:{...r.permissions,getUserLevel:(c,l,u)=>o.determineUserLevel(c,l,u),isAnchor:(c,l)=>o.isAnchor(c,l)},daemons:{register:(c,l)=>{let u=`${t}:${c}`;e.registerDaemon(u,l,t),r.logger.debug(`Registered daemon: ${u}`)}},conversations:{...r.conversations,start:async(c)=>e.getConversationService().startConversation(c),addMessage:async(c)=>{await e.getConversationService().addMessage(c)},updateMetadata:async(c)=>e.getConversationService().updateConversationMetadata(c),delete:async(c)=>e.getConversationService().deleteConversation(c)},tools:{listForPermissionLevel:(c)=>e.listToolsForPermissionLevel(c)},apiRoutes:{getRoutes:()=>e.getPluginApiRoutes(),getMessageBus:()=>e.getMessageBus()},webRoutes:{getRoutes:()=>e.getPluginWebRoutes()},httpRoutes:{getRoutes:()=>bF(e)},plugins:{has:(c)=>e.hasPlugin(c)}}}function fC(e,t,n){return{...Gg(e,t,n),channels:AB(e,t)}}var B7=3600000;class fl extends Sa{type="interface";daemon;jobTrackingEntries=new Map;jobTrackingTtlMs=B7;createContext(e,t){return Gg(e,this.id,t)}async register(e,t){let n=this.createContext(e,t);if(this.context=n,this.initializeDaemon(),this.daemon)await this.registerDaemon(n);return this.setupMessageHandlers(n),await this.onRegister(n),this.getCapabilities()}async onRegister(e){}async registerDaemon(e){if(!this.daemon)return;e.daemons.register(this.id,this.daemon),e.logger.debug(`Registered daemon for interface: ${this.id}`)}createDaemon(){return}requiresDaemonStartup(){return!1}getWebRoutes(){return[]}initializeDaemon(){let e=this.createDaemon();if(e)this.daemon=e}async handleProgressEvent(e,t){}cleanupExpiredEntries(){let e=Date.now(),t=[];for(let[n,r]of this.jobTrackingEntries)if(e-r.createdAt>this.jobTrackingTtlMs)t.push(n);for(let n of t)this.jobTrackingEntries.delete(n)}ownsJob(e,t){return this.jobTrackingEntries.has(e)||t!==void 0&&this.jobTrackingEntries.has(t)}getJobTracking(e,t){let n=this.jobTrackingEntries.get(e);if(n)return n.info;if(t){let r=this.jobTrackingEntries.get(t);if(r)return r.info}return}setJobTracking(e,t){this.cleanupExpiredEntries(),this.jobTrackingEntries.set(e,{info:t,createdAt:Date.now()})}removeJobTracking(e){this.jobTrackingEntries.delete(e)}async createJobWithTracking(e,t){let r=await this.getContext().jobs.enqueue(e);return this.setJobTracking(r,t),r}async createBatchWithTracking(e,t,n){let i=await this.getContext().jobs.enqueueBatch(e,n);return this.setJobTracking(i,t),i}}class SF extends fl{definition;accountSettingsRegistration;routes=[];hasRequiredDaemon=!1;constructor(e,t,n,r){super(r,n,t,ul());this.definition=e}async onRegister(e){if(await super.onRegister(e),this.definition.accountSettings)this.accountSettingsRegistration=e.accountSettings.register({ownerPluginId:this.id,packageName:this.packageName,definitionId:this.definition.id,definition:this.definition.accountSettings});let t=this.jobs(e),n=this.definition.routes?.({config:this.config,jobs:t})??[];this.routes=n.map((o)=>this.runtimeRoute(o,e));let r=this.definition.daemons?.({config:this.config,jobs:t})??[],i=new Set;for(let o of r){if(i.has(o.id))throw Error(`Interface "${this.definition.id}" defines daemon "${o.id}" more than once`);if(i.add(o.id),this.hasRequiredDaemon||=o.required,o.forAccounts){if(o.forAccounts!==this.definition.accountSettings)throw Error(`Interface "${this.definition.id}" account-bound daemon "${o.id}" must reference its attached account settings`);let s=this.accountSettingsRegistration;if(!s)throw Error(`Interface "${this.definition.id}" account-bound daemon "${o.id}" has no registered account settings`);e.daemons.register(o.id,Wg(o,s,e.accountSettings));continue}e.daemons.register(o.id,Bp(o))}}async onRegistrationComplete(e){if(this.accountSettingsRegistration&&!e.accountSettings.hasBackend())throw Error(`Interface "${this.definition.id}" account settings require auth-service and an account settings encryption key`)}getWebRoutes(){return[...this.routes]}requiresDaemonStartup(){return this.hasRequiredDaemon}async onShutdown(){this.accountSettingsRegistration=void 0,this.routes=[],this.hasRequiredDaemon=!1,await super.onShutdown()}jobs(e){return{enqueue:async(t,n)=>{let r=t.input.parse(n),i=await e.jobs.enqueue({type:Op(t),data:r});return Object.freeze({id:i})}}}runtimeRoute(e,t){return{method:e.method,path:e.path,public:!0,handler:async(n)=>{let r=await this.resolveCaller(e,n,t);if(e.security.kind==="protocol"&&!r)return Np("Unauthorized",401);let i;if(e.body){let s;try{s=await n.json()}catch{return Np("Request body must be valid JSON",400)}let c=e.body.safeParse(s);if(!c.success)return Np("Request body is invalid",400);i=c.data}let o=await e.handle({request:n,body:i,caller:r});return Jg(e.response.parse(o))}}}async resolveCaller(e,t,n){if(e.security.kind==="public")return null;let r=await e.security.authenticate({request:t});if(!r?.id.trim())return null;let i=n.permissions.getUserLevel(this.definition.id,r.id);return Object.freeze({actor:Object.freeze({...r}),permission:i,isAnchor:n.permissions.isAnchor(this.definition.id,r.id)})}}function xF(e,t,n,r){return new SF(e,t,n,r)}var vF=["GET","POST","PUT","DELETE","OPTIONS"];function gC(e,t){e.messaging.subscribe(xp.progress,async(n)=>{try{let r=Tg.safeParse(n.payload);if(!r.success)return t.onInvalidSchema(),{success:!1};let i=r.data;return await t.onProgress(i,i.metadata),{success:!0}}catch(r){return t.onError(r),{success:!1}}})}function hC(e){let t=e.status==="completed"?"\u2705":"\u274C",n=e.status==="completed"?"completed":"failed",r=e.metadata.operationType.replace(/_/g," "),i=e.metadata.operationTarget?`: ${e.metadata.operationTarget}`:"",o=`${t} **${r}${i}** ${n}`;if(e.message)o+=`
179
179
  ${e.message}`;return o}function yC(e){let t=e.metadata.operationType.replace(/_/g," "),n=e.metadata.operationTarget?`: ${e.metadata.operationTarget}`:"",r=`\uD83D\uDD04 **${t}${n}**`;if(e.progress&&e.progress.total>0)r+=` ${e.progress.current}/${e.progress.total} (${e.progress.percentage}%)`;if(e.message)r+=`
180
- ${e.message}`;return r}var _7=a.enum(["tool:invoking","tool:completed","tool:failed"]),F7=a.object({toolName:a.string().min(1),conversationId:a.string().min(1),interfaceType:a.string().min(1),channelId:a.string().min(1).optional(),channelName:a.string().min(1).optional(),toolCallId:a.string().min(1).optional(),error:a.string().optional()}),L7=["tool:invoking","tool:completed","tool:failed"];function bC(e,t){for(let n of L7)e.messaging.subscribe(n,async(r)=>{try{let i=_7.safeParse(r.type),o=F7.safeParse(r.payload);if(!i.success||!o.success)return t.onInvalidSchema(),{success:!1};return await t.onToolActivity({type:i.data,...o.data}),{success:!0}}catch(i){return t.onError(i),{success:!1}}})}class SC{scope;fibers;delayMs;clock;closePromise=null;closed=!1;constructor(e,t){this.delayMs=e,this.clock=t?.clock,this.scope=te.runSync(vt.make()),this.fibers=te.runSync(vt.provide(Pn.make(),this.scope))}schedule(e,t){if(this.closed)return;let n=te.sleep(this.delayMs).pipe(te.andThen(te.sync(t))),r=_o(n,this.clock),i=te.runFork(r);Pn.setUnsafe(this.fibers,e,i)}close(){return this.closed=!0,this.closePromise??=te.runPromise(vt.close(this.scope,bt.void)),this.closePromise}}function _p(e,t){return{state:t,toolName:e.toolName,conversationId:e.conversationId,interfaceType:e.interfaceType,...e.channelId!==void 0&&{channelId:e.channelId},...e.channelName!==void 0&&{channelName:e.channelName},...e.error!==void 0&&{error:e.error}}}function xC(e){return`${e.conversationId}:${e.toolName}`}function vC(e){if(e.startsWith("playbook_"))return"playbook";return(e.startsWith("system_")?e.slice(7):e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase()}function wF(e){switch(e){case"running":return"Tool running";case"completed":return"Tool completed";case"awaiting-approval":return"Approval required";case"failed":return"Tool failed"}}function TF(e){switch(e){case"running":return"Tool running";case"completed":return"Tool completed";case"awaiting-approval":return"Tool awaiting approval";case"failed":return"Tool failed"}}function CF(e){let t=xC(e),n=vC(e.toolName),r=wF(e.state),i=TF(e.state),o=`${i}: ${n}`;return{key:t,label:n,title:r,fallbackPrefix:i,fallback:e.error?`${o}: ${e.error}`:o}}function EF(e,t){return e.pendingConfirmations?.some((n)=>n.toolName===t)===!0||q7(e.cards).some((n)=>n.toolName===t)}function q7(e){return e?.filter((t)=>t.kind==="tool-approval"&&t.state==="approval-requested")??[]}var IF=500,Z7=500;class wC{transport;cleanupSupervisor=new SC(Z7);progressEvents=new Map;progressMessageTracking=new Map;agentResponseTracking=new Map;pendingToolCompletions=new Map;progressCallback;isProcessingInput=!1;currentChannelId=null;bufferedCompletionMessages=[];constructor(e){this.transport=e}hasProgressCallback(){return this.progressCallback!==void 0}registerProgressCallback(e){this.progressCallback=e,e(this.getActiveProgressEvents())}unregisterProgressCallback(){this.progressCallback=void 0}getProgressEvents(){return Array.from(this.progressEvents.values())}getActiveProgressEvents(){return Array.from(this.progressEvents.values()).filter((e)=>e.status==="processing")}trackAgentResponseForJob(e,t,n){this.agentResponseTracking.set(e,{messageId:t,channelId:n,lastUpdate:Date.now()}),this.transport.logger().debug("Tracking agent response for job",{jobId:e,messageId:t,channelId:n})}startProcessingInput(e=null){this.isProcessingInput=!0,this.currentChannelId=e}endProcessingInput(){this.isProcessingInput=!1;for(let{message:e,channelId:t}of this.bufferedCompletionMessages)this.transport.sendMessageToChannel({channelId:t,message:e});this.bufferedCompletionMessages=[],this.currentChannelId=null}getCurrentChannelId(){return this.currentChannelId}async close(){await this.cleanupSupervisor.close(),this.progressEvents.clear(),this.progressMessageTracking.clear(),this.agentResponseTracking.clear(),this.pendingToolCompletions.clear(),this.bufferedCompletionMessages=[],this.isProcessingInput=!1,this.currentChannelId=null,this.progressCallback=void 0}async handleProgressEvent(e){if(!this.shouldHandleProgressEvent(e))return;this.updateProgressState(e);let t=e.metadata.channelId??null,n=e.metadata.rootJobId;if(await this.handleProcessingProgress(e,t,n))return;if(e.status==="completed"||e.status==="failed")await this.handleTerminalProgress(e,t,n);await this.transport.onProgressUpdate(e),this.logProgressProcessed(e)}async handleToolActivityEvent(e){if(e.interfaceType!==this.transport.interfaceId())return;switch(e.type){case"tool:invoking":this.pendingToolCompletions.delete(this.getToolCompletionKey(e)),await this.transport.handleToolStatusUpdate(_p(e,"running"));return;case"tool:completed":if(this.isProcessingInput){this.pendingToolCompletions.set(this.getToolCompletionKey(e),e);return}await this.transport.handleToolStatusUpdate(_p(e,"completed"));return;case"tool:failed":this.pendingToolCompletions.delete(this.getToolCompletionKey(e)),await this.transport.handleToolStatusUpdate(_p(e,"failed"));return}}async handleAgentResponseToolStatuses(e,t){if(this.pendingToolCompletions.size===0)return;let n=this.transport.interfaceId(),r=Array.from(this.pendingToolCompletions.values()).filter((i)=>i.interfaceType===n&&i.conversationId===t);for(let i of r){this.pendingToolCompletions.delete(this.getToolCompletionKey(i));let o=EF(e,i.toolName)?"awaiting-approval":"completed";await this.transport.handleToolStatusUpdate(_p(i,o))}}shouldHandleProgressEvent(e){let t=e.metadata.interfaceType;return!t||t===this.transport.interfaceId()}updateProgressState(e){this.progressEvents.set(e.id,e),this.notifyProgressCallback()}async handleProcessingProgress(e,t,n){if(e.status!=="processing"||!this.transport.supportsMessageEditing())return!1;let r=this.agentResponseTracking.get(e.id);if(r)return await this.editTrackedProgressMessage(e,r),!0;let i=this.transport.formatProgressOutput(e),o=this.progressMessageTracking.get(n),s=Date.now();if(o){if(s-o.lastUpdate>=IF)await this.transport.editMessage({channelId:o.channelId,messageId:o.messageId,newMessage:i}),o.lastUpdate=s}else if(t&&!this.isProcessingInput)await this.sendInitialProgressMessage(n,t,i,s);return!1}async editTrackedProgressMessage(e,t){let n=Date.now();if(n-t.lastUpdate<IF)return;await this.transport.editMessage({channelId:t.channelId,messageId:t.messageId,newMessage:this.transport.formatProgressOutput(e)}),t.lastUpdate=n}async sendInitialProgressMessage(e,t,n,r){let i=await this.transport.sendMessageWithId({channelId:t,message:n});if(!i)return;this.progressMessageTracking.set(e,{messageId:i,channelId:t,lastUpdate:r}),this.transport.logger().debug("Tracking progress message",{rootJobId:e,messageId:i,channelId:t})}async handleTerminalProgress(e,t,n){let r=this.transport.formatCompletionOutput(e),i=this.progressMessageTracking.get(n),o=this.agentResponseTracking.get(e.id);if(this.transport.logger().debug("Completion event received",{eventId:e.id,rootJobId:n,hasProgressTracking:!!i,hasAgentTracking:!!o,supportsEditing:this.transport.supportsMessageEditing()}),this.transport.supportsMessageEditing())await this.updateTrackedCompletion(e,r,i,o,n);if(!i&&!o&&t)this.sendOrBufferCompletionMessage(r,t);this.scheduleProgressCleanup(e.id)}async updateTrackedCompletion(e,t,n,r,i){if(r){if(await this.transport.editMessage({channelId:r.channelId,messageId:r.messageId,newMessage:t}),this.agentResponseTracking.delete(e.id),n)this.progressMessageTracking.delete(i);return}if(n)await this.transport.editMessage({channelId:n.channelId,messageId:n.messageId,newMessage:t}),this.progressMessageTracking.delete(i)}sendOrBufferCompletionMessage(e,t){if(this.isProcessingInput){this.bufferedCompletionMessages.push({message:e,channelId:t});return}this.transport.sendMessageToChannel({channelId:t,message:e})}scheduleProgressCleanup(e){this.cleanupSupervisor.schedule(e,()=>{this.progressEvents.delete(e),this.notifyProgressCallback()})}logProgressProcessed(e){this.transport.logger().debug("Progress event processed",{eventId:e.id,status:e.status,operationType:e.metadata.operationType,targetChannel:e.metadata.channelId})}getToolCompletionKey(e){return`${e.interfaceType}:${e.conversationId}:${e.toolName}`}notifyProgressCallback(){this.progressCallback?.(this.getProgressEvents())}}var TC=1e5,$7=[".md",".txt",".markdown"],U7=["text/plain","text/markdown","text/x-markdown"],W7=/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi,J7=["meet.google.com","zoom.us","teams.microsoft.com","whereby.com","gather.town","calendly.com","cal.com","discord.com","discord.gg","cdn.discordapp.com","media.discordapp.net","giphy.com","tenor.com","wetransfer.com","file.io"],CC=a.object({captureUrls:a.boolean().default(!1),blockedUrlDomains:a.array(a.string()).default(J7)});function RF(e,t){if(t&&U7.some((n)=>t.startsWith(n)))return!0;return $7.some((n)=>e.toLowerCase().endsWith(n))}function kF(e){return e<=TC}function PF(e){if(e.includes(0))return!1;try{return new TextDecoder("utf-8",{fatal:!0}).decode(e),!0}catch{return!1}}function AF(e,t){return`User uploaded a file "${e}":
180
+ ${e.message}`;return r}var _7=a.enum(["tool:invoking","tool:completed","tool:failed"]),F7=a.object({toolName:a.string().min(1),conversationId:a.string().min(1),interfaceType:a.string().min(1),channelId:a.string().min(1).optional(),channelName:a.string().min(1).optional(),toolCallId:a.string().min(1).optional(),error:a.string().optional()}),L7=["tool:invoking","tool:completed","tool:failed"];function bC(e,t){for(let n of L7)e.messaging.subscribe(n,async(r)=>{try{let i=_7.safeParse(r.type),o=F7.safeParse(r.payload);if(!i.success||!o.success)return t.onInvalidSchema(),{success:!1};return await t.onToolActivity({type:i.data,...o.data}),{success:!0}}catch(i){return t.onError(i),{success:!1}}})}class SC{scope;fibers;delayMs;clock;closePromise=null;closed=!1;constructor(e,t){this.delayMs=e,this.clock=t?.clock,this.scope=ne.runSync(vt.make()),this.fibers=ne.runSync(vt.provide(Pn.make(),this.scope))}schedule(e,t){if(this.closed)return;let n=ne.sleep(this.delayMs).pipe(ne.andThen(ne.sync(t))),r=_o(n,this.clock),i=ne.runFork(r);Pn.setUnsafe(this.fibers,e,i)}close(){return this.closed=!0,this.closePromise??=ne.runPromise(vt.close(this.scope,bt.void)),this.closePromise}}function _p(e,t){return{state:t,toolName:e.toolName,conversationId:e.conversationId,interfaceType:e.interfaceType,...e.channelId!==void 0&&{channelId:e.channelId},...e.channelName!==void 0&&{channelName:e.channelName},...e.error!==void 0&&{error:e.error}}}function xC(e){return`${e.conversationId}:${e.toolName}`}function vC(e){if(e.startsWith("playbook_"))return"playbook";return(e.startsWith("system_")?e.slice(7):e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase()}function wF(e){switch(e){case"running":return"Tool running";case"completed":return"Tool completed";case"awaiting-approval":return"Approval required";case"failed":return"Tool failed"}}function TF(e){switch(e){case"running":return"Tool running";case"completed":return"Tool completed";case"awaiting-approval":return"Tool awaiting approval";case"failed":return"Tool failed"}}function CF(e){let t=xC(e),n=vC(e.toolName),r=wF(e.state),i=TF(e.state),o=`${i}: ${n}`;return{key:t,label:n,title:r,fallbackPrefix:i,fallback:e.error?`${o}: ${e.error}`:o}}function EF(e,t){return e.pendingConfirmations?.some((n)=>n.toolName===t)===!0||q7(e.cards).some((n)=>n.toolName===t)}function q7(e){return e?.filter((t)=>t.kind==="tool-approval"&&t.state==="approval-requested")??[]}var IF=500,Z7=500;class wC{transport;cleanupSupervisor=new SC(Z7);progressEvents=new Map;progressMessageTracking=new Map;agentResponseTracking=new Map;pendingToolCompletions=new Map;progressCallback;isProcessingInput=!1;currentChannelId=null;bufferedCompletionMessages=[];constructor(e){this.transport=e}hasProgressCallback(){return this.progressCallback!==void 0}registerProgressCallback(e){this.progressCallback=e,e(this.getActiveProgressEvents())}unregisterProgressCallback(){this.progressCallback=void 0}getProgressEvents(){return Array.from(this.progressEvents.values())}getActiveProgressEvents(){return Array.from(this.progressEvents.values()).filter((e)=>e.status==="processing")}trackAgentResponseForJob(e,t,n){this.agentResponseTracking.set(e,{messageId:t,channelId:n,lastUpdate:Date.now()}),this.transport.logger().debug("Tracking agent response for job",{jobId:e,messageId:t,channelId:n})}startProcessingInput(e=null){this.isProcessingInput=!0,this.currentChannelId=e}endProcessingInput(){this.isProcessingInput=!1;for(let{message:e,channelId:t}of this.bufferedCompletionMessages)this.transport.sendMessageToChannel({channelId:t,message:e});this.bufferedCompletionMessages=[],this.currentChannelId=null}getCurrentChannelId(){return this.currentChannelId}async close(){await this.cleanupSupervisor.close(),this.progressEvents.clear(),this.progressMessageTracking.clear(),this.agentResponseTracking.clear(),this.pendingToolCompletions.clear(),this.bufferedCompletionMessages=[],this.isProcessingInput=!1,this.currentChannelId=null,this.progressCallback=void 0}async handleProgressEvent(e){if(!this.shouldHandleProgressEvent(e))return;this.updateProgressState(e);let t=e.metadata.channelId??null,n=e.metadata.rootJobId;if(await this.handleProcessingProgress(e,t,n))return;if(e.status==="completed"||e.status==="failed")await this.handleTerminalProgress(e,t,n);await this.transport.onProgressUpdate(e),this.logProgressProcessed(e)}async handleToolActivityEvent(e){if(e.interfaceType!==this.transport.interfaceId())return;switch(e.type){case"tool:invoking":this.pendingToolCompletions.delete(this.getToolCompletionKey(e)),await this.transport.handleToolStatusUpdate(_p(e,"running"));return;case"tool:completed":if(this.isProcessingInput){this.pendingToolCompletions.set(this.getToolCompletionKey(e),e);return}await this.transport.handleToolStatusUpdate(_p(e,"completed"));return;case"tool:failed":this.pendingToolCompletions.delete(this.getToolCompletionKey(e)),await this.transport.handleToolStatusUpdate(_p(e,"failed"));return}}async handleAgentResponseToolStatuses(e,t){if(this.pendingToolCompletions.size===0)return;let n=this.transport.interfaceId(),r=Array.from(this.pendingToolCompletions.values()).filter((i)=>i.interfaceType===n&&i.conversationId===t);for(let i of r){this.pendingToolCompletions.delete(this.getToolCompletionKey(i));let o=EF(e,i.toolName)?"awaiting-approval":"completed";await this.transport.handleToolStatusUpdate(_p(i,o))}}shouldHandleProgressEvent(e){let t=e.metadata.interfaceType;return!t||t===this.transport.interfaceId()}updateProgressState(e){this.progressEvents.set(e.id,e),this.notifyProgressCallback()}async handleProcessingProgress(e,t,n){if(e.status!=="processing"||!this.transport.supportsMessageEditing())return!1;let r=this.agentResponseTracking.get(e.id);if(r)return await this.editTrackedProgressMessage(e,r),!0;let i=this.transport.formatProgressOutput(e),o=this.progressMessageTracking.get(n),s=Date.now();if(o){if(s-o.lastUpdate>=IF)await this.transport.editMessage({channelId:o.channelId,messageId:o.messageId,newMessage:i}),o.lastUpdate=s}else if(t&&!this.isProcessingInput)await this.sendInitialProgressMessage(n,t,i,s);return!1}async editTrackedProgressMessage(e,t){let n=Date.now();if(n-t.lastUpdate<IF)return;await this.transport.editMessage({channelId:t.channelId,messageId:t.messageId,newMessage:this.transport.formatProgressOutput(e)}),t.lastUpdate=n}async sendInitialProgressMessage(e,t,n,r){let i=await this.transport.sendMessageWithId({channelId:t,message:n});if(!i)return;this.progressMessageTracking.set(e,{messageId:i,channelId:t,lastUpdate:r}),this.transport.logger().debug("Tracking progress message",{rootJobId:e,messageId:i,channelId:t})}async handleTerminalProgress(e,t,n){let r=this.transport.formatCompletionOutput(e),i=this.progressMessageTracking.get(n),o=this.agentResponseTracking.get(e.id);if(this.transport.logger().debug("Completion event received",{eventId:e.id,rootJobId:n,hasProgressTracking:!!i,hasAgentTracking:!!o,supportsEditing:this.transport.supportsMessageEditing()}),this.transport.supportsMessageEditing())await this.updateTrackedCompletion(e,r,i,o,n);if(!i&&!o&&t)this.sendOrBufferCompletionMessage(r,t);this.scheduleProgressCleanup(e.id)}async updateTrackedCompletion(e,t,n,r,i){if(r){if(await this.transport.editMessage({channelId:r.channelId,messageId:r.messageId,newMessage:t}),this.agentResponseTracking.delete(e.id),n)this.progressMessageTracking.delete(i);return}if(n)await this.transport.editMessage({channelId:n.channelId,messageId:n.messageId,newMessage:t}),this.progressMessageTracking.delete(i)}sendOrBufferCompletionMessage(e,t){if(this.isProcessingInput){this.bufferedCompletionMessages.push({message:e,channelId:t});return}this.transport.sendMessageToChannel({channelId:t,message:e})}scheduleProgressCleanup(e){this.cleanupSupervisor.schedule(e,()=>{this.progressEvents.delete(e),this.notifyProgressCallback()})}logProgressProcessed(e){this.transport.logger().debug("Progress event processed",{eventId:e.id,status:e.status,operationType:e.metadata.operationType,targetChannel:e.metadata.channelId})}getToolCompletionKey(e){return`${e.interfaceType}:${e.conversationId}:${e.toolName}`}notifyProgressCallback(){this.progressCallback?.(this.getProgressEvents())}}var TC=1e5,$7=[".md",".txt",".markdown"],U7=["text/plain","text/markdown","text/x-markdown"],W7=/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi,J7=["meet.google.com","zoom.us","teams.microsoft.com","whereby.com","gather.town","calendly.com","cal.com","discord.com","discord.gg","cdn.discordapp.com","media.discordapp.net","giphy.com","tenor.com","wetransfer.com","file.io"],CC=a.object({captureUrls:a.boolean().default(!1),blockedUrlDomains:a.array(a.string()).default(J7)});function RF(e,t){if(t&&U7.some((n)=>t.startsWith(n)))return!0;return $7.some((n)=>e.toLowerCase().endsWith(n))}function kF(e){return e<=TC}function PF(e){if(e.includes(0))return!1;try{return new TextDecoder("utf-8",{fatal:!0}).decode(e),!0}catch{return!1}}function AF(e,t){return`User uploaded a file "${e}":
181
181
 
182
- ${t}`}function OF(e,t){let n=e.match(W7)??[];return[...new Set(n)].filter((r)=>{try{let{hostname:i}=new URL(r);return!t.some((o)=>i===o||i.endsWith(`.${o}`))}catch{return!1}})}function gl(e,t){let n=e.attachment.source;if((n?.entityType==="document"||n?.entityType==="image")&&n.entityId)return{entityType:n.entityType,id:n.entityId};return EC(e.attachment.downloadUrl??e.attachment.url,t)}function EC(e,t="http://local"){if(!e)return;let n;try{n=new URL(e,t)}catch{return}let r=n.searchParams.get("id")?.trim();if(!r)return;if(n.pathname==="/api/chat/attachments/document")return{entityType:"document",id:r};if(n.pathname==="/api/chat/attachments/image")return{entityType:"image",id:r};return}function Vg(e,t){let n=H7(t,e==="document"?/^application\/pdf$/i:/^image\/[a-z0-9.+-]+$/i);if(!n)return;if(e==="document"&&n.mimeType.toLowerCase()!=="application/pdf")return;return n}function Qg(e,t,n,r){let i=e?.filename;if(typeof i==="string"&&i.trim())return i;if(n==="document")return`${t}.pdf`;let o=e?.format;if(typeof o==="string"&&o.trim())return`${t}.${o==="jpeg"?"jpg":o}`;let s=r.split("/")[1]?.split("+")[0]??"png";return`${t}.${s}`}function H7(e,t){let n=e.match(/^data:([^;]+);base64,(.+)$/i),r=n?.[1],i=n?.[2];if(!r||!i||!t.test(r))return;let o=Buffer.from(i,"base64");return{mimeType:r,data:o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)}}async function Fp({entityRef:e,userLevel:t,getEntity:n,getVisibleEntity:r}){let i=wi(t),o=await r(e,i);if(o)return{status:"visible",entity:o};return Boolean(await n(e))?{status:"denied"}:{status:"missing"}}function Kg(e){return e==="admin"||e==="trusted"}async function DF(e){let t=new Set;for(let n of e.cards??[]){if(n.kind!=="attachment")continue;let r=gl(n,e.displayBaseUrl);if(!r)continue;if((await Fp({entityRef:r,userLevel:e.userLevel,getEntity:e.getEntity,getVisibleEntity:e.getVisibleEntity})).status==="denied")t.add(n.id)}return t}class Lp extends fl{createContext(e,t){return fC(e,this.id,t)}isUploadableTextFile(e,t){return RF(e,t)}isFileSizeAllowed(e){return kF(e)}formatFileUploadMessage(e,t){return AF(e,t)}getMaxFileUploadBytes(){return TC}isLikelyTextContent(e){return PF(e)}async resolveNativeArtifactDelivery(e){let t=[],n=new Set;if(!this.context||!e.cards)return{files:t,deniedCardIds:n};let r=this.context;for(let i of e.cards){if(i.kind!=="attachment")continue;let o=gl(i,e.displayBaseUrl);if(!o)continue;let s=await Fp({entityRef:o,userLevel:e.userPermissionLevel,getEntity:(l)=>r.entityService.getEntity(l),getVisibleEntity:(l,u)=>r.entityService.getEntity({...l,visibilityScope:u})});if(s.status==="denied"){n.add(i.id);continue}if(s.status!=="visible")continue;if(!Kg(e.userPermissionLevel))continue;if(typeof s.entity.content!=="string")continue;let c=Vg(o.entityType,s.entity.content);if(!c)continue;if(e.maxBytes!==void 0&&c.data.byteLength>e.maxBytes){this.logger.debug("Skipping oversized native artifact upload",{cardId:i.id,sizeBytes:c.data.byteLength});continue}t.push({cardId:i.id,data:new Uint8Array(c.data),filename:i.attachment.filename??Qg(s.entity.metadata,o.id,o.entityType,c.mimeType),mimeType:c.mimeType})}return{files:t,deniedCardIds:n}}extractCaptureableUrls(e,t){return OF(e,t)}async captureUrlViaAgent(e,t,n,r,i){if(!this.context)return;let o=this.context.permissions.getUserLevel(r,n,i);await this.context.agent.chat(`Save this link: ${e}`,`links-${t}`,{userPermissionLevel:o,interfaceType:r,channelId:t})}progress=new wC({interfaceId:()=>this.id,logger:()=>this.logger,sendMessageToChannel:(e)=>this.sendMessageToChannel(e),sendMessageWithId:(e)=>this.sendMessageWithId(e),editMessage:(e)=>this.editMessage(e),supportsMessageEditing:()=>this.supportsMessageEditing(),formatProgressOutput:(e)=>this.formatProgressOutput(e),formatCompletionOutput:(e)=>this.formatCompletionOutput(e),onProgressUpdate:(e)=>this.onProgressUpdate(e),handleToolStatusUpdate:(e)=>this.handleToolStatusUpdate(e)});sendMessageToChannel(e){return}sendMessageWithId(e){return Promise.resolve(void 0)}editMessage(e){return Promise.resolve(!1)}supportsMessageEditing(){return!1}registerProgressCallback(e){this.progress.registerProgressCallback(e)}unregisterProgressCallback(){this.progress.unregisterProgressCallback()}hasProgressCallback(){return this.progress.hasProgressCallback()}trackAgentResponseForJob(e,t,n){this.progress.trackAgentResponseForJob(e,t,n)}registerChannels(e){}async registerChannelsForExecution(e,t){let n=this.createContext(e,{...t,executionOnly:!0});this.context=n,await this.registerChannels(n)}async onRegister(e){await super.onRegister(e),await this.registerChannels(e),gC(e,{onProgress:async(t,n)=>{await this.handleProgressEvent(t,n)},onError:(t)=>{this.logger.error("Error handling progress event",{error:t,interfaceId:this.id})},onInvalidSchema:()=>{this.logger.warn("Invalid progress event schema",{interfaceId:this.id})}}),bC(e,{onToolActivity:async(t)=>{await this.handleToolActivityEvent(t)},onError:(t)=>{this.logger.error("Error handling tool activity event",{error:t,interfaceId:this.id})},onInvalidSchema:()=>{this.logger.warn("Invalid tool activity event schema",{interfaceId:this.id})}}),this.logger.debug("Message interface registered with progress and tool handlers",{id:this.id})}async onShutdown(){await this.progress.close(),await super.onShutdown()}async handleProgressEvent(e,t){await this.progress.handleProgressEvent(e)}formatProgressOutput(e){return yC(e)}formatCompletionOutput(e){return hC(e)}async onProgressUpdate(e){}async handleToolActivityEvent(e){await this.progress.handleToolActivityEvent(e)}async handleToolStatusUpdate(e){}async handleAgentResponseToolStatuses(e,t){await this.progress.handleAgentResponseToolStatuses(e,t)}getProgressEvents(){return this.progress.getProgressEvents()}getActiveProgressEvents(){return this.progress.getActiveProgressEvents()}startProcessingInput(e=null){this.progress.startProcessingInput(e)}endProcessingInput(){this.progress.endProcessingInput()}getCurrentChannelId(){return this.progress.getCurrentChannelId()}}function IC(e){if(typeof e==="string")return{text:e};return{text:e.fallbackText??"Message update"}}async function G7(e,t){let n=await fetch(e.url,{signal:t});if(!n.ok)throw Error(`Attachment "${e.name}" could not be downloaded (${n.status})`);let r=new Uint8Array(await n.arrayBuffer());if(e.mediaType.startsWith("text/"))return{kind:"text",filename:e.name,mediaType:e.mediaType,content:new TextDecoder().decode(r),sizeBytes:r.byteLength};return{kind:"file",filename:e.name,mediaType:e.mediaType,data:r,sizeBytes:r.byteLength}}class MF extends Lp{definition;accountSettingsRegistration;hasRequiredDaemon=!1;state;constructor(e,t,n,r){super(r,n,t,ul());this.definition=e}async registerChannels(e){if(this.state=this.definition.setup?await this.definition.setup({config:this.config}):Fg(),e.channels.registerDescriptor({type:this.definition.channel.type,displayName:this.definition.channel.displayName,subjectLabel:this.definition.channel.subjectLabel,...this.definition.deliver?{manualDelivery:!0}:{}}),this.definition.deliver)e.channels.registerDeliveryProvider({channelType:this.definition.channel.type,isAvailable:()=>Promise.resolve(this.state!==void 0),send:(t)=>this.deliver(t)})}async onRegister(e){if(await super.onRegister(e),this.definition.accountSettings)this.accountSettingsRegistration=e.accountSettings.register({ownerPluginId:this.id,packageName:this.packageName,definitionId:this.definition.id,definition:this.definition.accountSettings});let t=this.definition.daemons?.({config:this.config,state:this.requireState()})??[],n=new Set;for(let r of t){if(n.has(r.id)||r.id==="listener")throw Error(`Message interface "${this.definition.id}" defines daemon "${r.id}" more than once`);if(n.add(r.id),this.hasRequiredDaemon||=r.required,r.forAccounts){if(r.forAccounts!==this.definition.accountSettings)throw Error(`Message interface "${this.definition.id}" account-bound daemon "${r.id}" must reference its attached account settings`);let i=this.accountSettingsRegistration;if(!i)throw Error(`Message interface "${this.definition.id}" account-bound daemon "${r.id}" has no registered account settings`);e.daemons.register(r.id,Wg(r,i,e.accountSettings));continue}e.daemons.register(r.id,Bp(r))}if(this.definition.listen)e.daemons.register("listener",Bp({kind:"rizom-interface-daemon",id:"listener",required:!1,run:({signal:r,health:i})=>this.definition.listen?.({config:this.config,state:this.requireState(),signal:r,health:i,messages:{receiveAuthenticated:(o)=>this.receiveAuthenticated(o,r)}})??Promise.resolve()}))}async onRegistrationComplete(e){if(this.accountSettingsRegistration&&!e.accountSettings.hasBackend())throw Error(`Message interface "${this.definition.id}" account settings require auth-service and an account settings encryption key`)}requiresDaemonStartup(){return this.hasRequiredDaemon}sendMessageToChannel(e){let t=e.channelId,n=this.definition.send;if(!t||!n)return;Promise.resolve().then(()=>n({config:this.config,state:this.requireState(),channel:{id:t},message:IC(e.message)})).catch((r)=>{this.logger.error("Message delivery failed",{error:r})})}async sendMessageWithId(e){if(!e.channelId||!this.definition.send)return;let t=await this.definition.send({config:this.config,state:this.requireState(),channel:{id:e.channelId},message:IC(e.message)});return typeof t==="string"?t:void 0}async editMessage(e){if(!e.channelId||!this.definition.edit)return!1;return await this.definition.edit({config:this.config,state:this.requireState(),channel:{id:e.channelId},messageId:e.messageId,message:IC(e.newMessage)}),!0}supportsMessageEditing(){return this.definition.edit!==void 0}async onShutdown(){this.accountSettingsRegistration=void 0,this.hasRequiredDaemon=!1,this.state=void 0,await super.onShutdown()}requireState(){if(!this.state)throw Error(`Message interface "${this.definition.id}" has not completed setup`);return this.state}async deliver(e){if(!this.definition.deliver)return{status:"failed",failureCode:"delivery_not_supported"};try{let t=this.parseRecipient(e.recipient),n=await this.definition.deliver({config:this.config,state:this.requireState(),recipient:t,message:{text:e.text}});return{status:"sent",...typeof n==="string"?{providerDeliveryId:n}:{}}}catch(t){return this.logger.warn("Outbound channel delivery failed",{error:t}),{status:"failed",failureCode:"delivery_failed"}}}parseRecipient(e){let t=this.definition.channel.recipient.safeParse(e);if(t.success)return t.data;try{let o=this.definition.channel.recipient.safeParse(JSON.parse(e));if(o.success)return o.data}catch{}let n=Reflect.get(this.definition.channel.recipient,"shape"),r=n!==null&&typeof n==="object"?Object.keys(n):[],i=r.length===1?r[0]:void 0;if(i)return this.definition.channel.recipient.parse({[i]:e});return this.definition.channel.recipient.parse(e)}async receiveAuthenticated(e,t){if(!e.sender.id.trim()||!e.channel.id.trim())throw Error("Authenticated messages require sender and channel ids");let n=this.getContext(),r=this.definition.channel.type,i=n.permissions.getUserLevel(r,e.sender.id),o=n.permissions.isAnchor(r,e.sender.id),s=[r,e.channel.id,e.channel.threadId].filter((l)=>l!==void 0).join(":"),c=[];if(e.attachments){let l=await e.attachments();for(let u of l)c.push(await G7(u,t))}this.startProcessingInput(e.channel.id);try{let l=await n.agent.chat(e.text,s,{userPermissionLevel:i,isAnchor:o,interfaceType:r,channelId:e.channel.id,actor:{identity:{kind:"external",externalActorId:zF(r,e.sender.id)},interfaceType:r,role:"user",...e.sender.displayName?{displayName:e.sender.displayName}:{}},source:{channelId:e.channel.id,...e.channel.threadId?{threadId:e.channel.threadId}:{}},...c.length>0?{attachments:c}:{}},t),u=await this.sendMessageWithId({channelId:e.channel.id,message:l.text});if(u){for(let p of l.toolResults??[])if(p.jobId)this.trackAgentResponseForJob(p.jobId,u,e.channel.id)}await this.handleAgentResponseToolStatuses(l,s)}finally{this.endProcessingInput()}}}function jF(e,t,n,r){return new MF(e,t,n,r)}function V7(e){return Object.freeze({kind:"protocol",...e})}function Q7(e){if(!vF.includes(e.method))throw Error(`Unsupported interface route method "${e.method}"`);if(!e.path.startsWith("/"))throw Error(`Interface route path "${e.path}" must be absolute`);return Object.freeze({kind:"rizom-interface-route",...e})}function K7(e){nn(e.id,"Daemon id");let{required:t=!1,...n}=e,r={kind:"rizom-interface-daemon",...n,required:t};return ss(r)}function Y7(e){return os({family:"interface",id:e.id,config:e.config,instantiate:({config:t,package:n,scope:r})=>xF(e,t,n,r(e.id))})}function X7(e){if(nn(e.channel.type,"Channel type"),e.listen&&!e.send)throw Error(`Message interface "${e.id}" must define send when it defines listen`);if(e.edit&&!e.send)throw Error(`Message interface "${e.id}" must define send when it defines edit`);return os({family:"message-interface",id:e.id,config:e.config,instantiate:({config:t,package:n,scope:r})=>jF(e,t,n,r(e.id))})}var RC=a.object({kind:a.string().min(1),id:a.string().min(1)}),NF=a.object({kind:a.literal("text"),filename:a.string().min(1),mediaType:a.string().min(1),content:a.string(),sizeBytes:a.number().nonnegative().optional(),source:RC.optional()}),dX=a.custom((e)=>e instanceof Uint8Array),mX=a.object({kind:a.literal("file"),filename:a.string().min(1),mediaType:a.string().min(1),data:dX,sizeBytes:a.number().nonnegative().optional(),source:RC.optional()}),BF=a.discriminatedUnion("kind",[NF,mX]),fX=a.object({guestExecution:wT.optional(),guestScreening:TT.optional(),userPermissionLevel:a.enum(["admin","trusted","public"]).optional(),isAnchor:a.boolean().optional(),interfaceType:a.string().optional(),channelId:a.string().optional(),channelName:a.string().optional(),actor:Tp.optional(),source:Cp.optional(),attachments:a.array(BF).optional()});var gX=a.object({status:a.enum(["healthy","warning","error","unknown"]),message:a.string().optional(),lastCheck:a.date().optional(),details:a.record(a.string(),a.unknown()).optional()}),_F=a.object({name:a.string(),pluginId:a.string(),status:a.string(),health:gX.optional()});var FF=a.enum(["admin","trusted","public"]),qp=a.object({label:a.string(),url:a.string(),pluginId:a.string(),priority:a.number().default(100),visibility:FF.default("public"),requiresActiveSession:a.boolean().optional()}),kC=a.enum(["human","agent","admin","protocol"]),PC=a.enum(["available","coming-soon","disabled"]),Zp=a.object({id:a.string(),label:a.string(),description:a.string().optional(),href:a.string(),kind:kC,pluginId:a.string(),priority:a.number().default(100),visibility:FF.default("public"),requiresActiveSession:a.boolean().optional(),status:PC.default("available")}),th=a.object({entityType:a.string(),count:a.number()}),AC=a.object({status:a.enum(["operational","degraded"]),reasons:a.array(a.string()),worker:a.object({state:a.enum(["active","missing","stale"]),activeSessions:a.number().int().nonnegative(),staleSessions:a.number().int().nonnegative(),latestHeartbeatAgeMs:a.number().nonnegative().nullable()}),queue:a.object({duePending:a.number().int().nonnegative(),processing:a.number().int().nonnegative(),oldestDuePendingAgeMs:a.number().nonnegative().nullable(),latestClaimAgeMs:a.number().nonnegative().nullable(),stalled:a.boolean()})}),LF=a.object({model:a.string(),version:a.string(),uptime:a.number(),entities:a.number(),entityCounts:a.array(th),embeddings:a.number(),backgroundWork:AC,ai:a.object({model:a.string(),embeddingModel:a.string()}),daemons:a.array(_F),endpoints:a.array(qp),interactions:a.array(Zp)});var hX=a.object({status:a.enum(["healthy","warning","error","unknown"]),message:a.string().optional(),lastCheck:a.string().optional(),details:a.record(a.string(),a.unknown()).optional()}),yX=a.object({name:a.string(),pluginId:a.string(),status:a.string(),health:hX.optional()}),bX=a.object({model:a.string(),version:a.string(),uptime:a.number(),entities:a.number(),entityCounts:a.array(th),embeddings:a.number(),ai:a.object({model:a.string(),embeddingModel:a.string()}),daemons:a.array(yX),endpoints:a.array(qp),interactions:a.array(Zp)});var nh=a.object({name:a.string().min(1),status:a.enum(["healthy","degraded","unhealthy"]),message:a.string().optional(),details:a.record(a.string(),a.unknown()).optional()}),qF={total:a.number().int().nonnegative(),active:a.number().int().nonnegative(),stale:a.number().int().nonnegative(),latestHeartbeatAgeMs:a.number().nonnegative().nullable()},ZF=a.object({totals:a.object({pending:a.number().int().nonnegative(),processing:a.number().int().nonnegative(),completed:a.number().int().nonnegative(),failed:a.number().int().nonnegative()}),byType:a.array(a.object({type:a.string().min(1),status:a.enum(["pending","processing","completed","failed"]),count:a.number().int().nonnegative()})),oldestPendingAgeMs:a.number().nonnegative().nullable(),duePending:a.number().int().nonnegative(),oldestDuePendingAgeMs:a.number().nonnegative().nullable(),latestClaimAgeMs:a.number().nonnegative().nullable(),oldestProcessingAgeMs:a.number().nonnegative().nullable(),staleLeaseCount:a.number().int().nonnegative(),workerSessions:a.object(qF)}),$F=a.object({memory:a.object({rssBytes:a.number().int().nonnegative(),heapUsedBytes:a.number().int().nonnegative(),heapTotalBytes:a.number().int().nonnegative()}),fileDescriptors:a.number().int().nonnegative().nullable(),processes:a.object({total:a.number().int().nonnegative().nullable(),zombies:a.number().int().nonnegative().nullable()}),queue:ZF.nullable(),projection:a.object({initialized:a.boolean(),trackedRoots:a.number().int().nonnegative(),openCircuits:a.array(a.object({projectionId:a.string().min(1),reason:a.string().min(1),openedAt:a.number().int().nonnegative(),expiresAt:a.number().int().nonnegative()}))}),worker:a.object(qF)}),SX=a.object({status:a.enum(["ready","not_ready"]),operationalStatus:a.enum(["operational","degraded"]),checkedAt:a.iso.datetime(),checks:a.array(nh),resources:$F});var rh=a.object({success:a.boolean(),data:a.unknown().optional(),error:a.string().optional()}),ih=a.object({id:a.string().min(1),timestamp:a.string(),type:a.string().min(1),source:a.string().min(1),target:a.string().optional(),metadata:a.record(a.string(),a.unknown()).optional()});var vX=a.object({id:a.string().min(1),requestId:a.string().min(1),success:a.boolean(),data:a.unknown().optional(),error:a.object({message:a.string(),code:a.string().optional()}).optional(),timestamp:a.string().datetime()});function JF(e){return{...e,...e.source!==void 0&&{source:UF(e.source)},...e.target!==void 0&&{target:UF(e.target)}}}function UF(e){if(e instanceof RegExp)return e;if(!e.includes("*"))return e;let t=e.split("*").map((n)=>n.replace(/[.+?^${}()|[\]\\]/g,"\\$&")).join(".*");return new RegExp(`^${t}$`)}function HF(e,t){if(!t)return!0;if(!WF(e.source,t.source))return!1;if(!WF(e.target,t.target,!0))return!1;if(!wX(e.metadata,t.metadata))return!1;return t.predicate?t.predicate(e):!0}function WF(e,t,n=!1){if(!t)return!0;if(n&&!e)return!1;return TX(e,t)}function wX(e,t){if(!t)return!0;if(!e)return!1;return Object.entries(t).every(([n,r])=>e[n]===r)}function TX(e,t){if(!e)return!1;if(t instanceof RegExp){t.lastIndex=0;let n=t.test(e);return t.lastIndex=0,n}return e===t}var CX=a.union([a.object({noop:a.literal(!0)}),rh]);function GF(e){let t=CX.safeParse(e);if(!t.success)throw Error("Invalid message response format");return t.data}function QF(e,t,n,r,i){return{id:KF("msg"),type:e,timestamp:YF(),source:n,target:r,metadata:i,payload:t}}function oh(e,t){let n=GF(t);if("noop"in n)return VF(e,!0);return VF(e,n.success,n.data,n.error)}function OC(e,t){if(t?.success)return{success:!0,data:t.data};return{success:!1,error:t?.error?.message??`No handler found for message type: ${e}`}}function VF(e,t,n,r){return{id:KF("resp"),requestId:e,timestamp:YF(),success:t,data:n,error:r?{message:r}:void 0}}function KF(e){return`${e}-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}function YF(){return new Date().toISOString()}class DC{handlers=new Map;add(e,t,n){let r=this.createHandlerEntry(t,n);return this.getOrCreateHandlers(e).add(r),r}remove(e,t){let n=this.handlers.get(e);if(!n)return!1;let r=n.delete(t);return this.deleteEmptyHandlerSet(e,n),r}removeHandler(e,t){let n=this.handlers.get(e);if(!n)return;for(let r of Array.from(n))if(r.originalHandler===t)n.delete(r);this.deleteEmptyHandlerSet(e,n)}getMatchingHandlers(e,t){let n=this.handlers.get(e);if(!n||n.size===0)return;return{entries:Array.from(n).filter((r)=>HF(t,r.filter)),totalHandlers:n.size}}hasHandlers(e){let t=this.handlers.get(e);return t!==void 0&&t.size>0}clearHandlers(e){return this.handlers.delete(e)}clearAllHandlers(){this.handlers.clear()}getHandlerCount(e){return this.handlers.get(e)?.size??0}getTargetedHandlerCount(e,t){let n=this.handlers.get(e);if(!n)return 0;return Array.from(n).filter((r)=>r.filter?.target===t).length}createHandlerEntry(e,t){let n={handler:this.wrapHandler(e),originalHandler:e};return t?{...n,filter:JF(t)}:n}wrapHandler(e){return async(t)=>{let r=await e(t);return oh(t.id,r)}}getOrCreateHandlers(e){let t=this.handlers.get(e);if(!t)t=new Set,this.handlers.set(e,t);return t}deleteEmptyHandlerSet(e,t){if(t.size===0)this.handlers.delete(e)}}async function XF(e,t,n){return await Promise.all(t.map((r)=>zC(r,e,n))),null}async function eL(e,t,n){for(let r of t){let i=await zC(r,e,n);if(i)return i}return null}async function tL(e,t,n){return(await Promise.all(t.map((i)=>zC(i,e,n)))).map((i)=>i??oh(e.id,{success:!1,error:`Message handler failed for message type: ${e.type}`}))}async function zC(e,t,n){try{return await e.handler(t)}catch(r){return n.error(`Error in message handler for ${t.type}`,r),null}}class MC{registry;logger;constructor(e,t){this.registry=e,this.logger=t}async publish(e,t){let n=this.resolveMatchingHandlers(e);if(!n)return null;return t===!0?XF(e,n,this.logger):eL(e,n,this.logger)}async collect(e){let t=this.resolveMatchingHandlers(e);if(!t)return[];return tL(e,t,this.logger)}resolveMatchingHandlers(e){if(typeof e!=="object"||!e.type||!e.id){this.logger.error("Invalid message structure - missing required fields 'id' or 'type'");return}let{type:t}=e;this.logger.debug(`Publishing message of type: ${t}`,{source:e.source,target:e.target,hasMetadata:!!e.metadata});let n=this.registry.getMatchingHandlers(t,e);if(!n){this.logger.debug(`No handlers found for message type: ${t}`);return}if(n.entries.length===0){this.logger.debug(`No matching handlers for message type: ${t}`,{totalHandlers:n.totalHandlers,target:e.target});return}return n.entries}}var EX=a.looseObject({issues:a.array(a.looseObject({message:a.string()})).optional()});function jC(e,t){try{return{valid:!0,data:t.parse(e)}}catch(n){let r=EX.safeParse(n);if(r.success)return{valid:!1,error:r.data.issues?.[0]?.message??"Validation failed"};return{valid:!1,error:"Unknown validation error"}}}class NC{registry=new DC;publisher;logger;operationContext;static createFresh(e,t){return new NC(e,t)}constructor(e,t){this.logger=e,this.operationContext=t??is.createFresh(),this.publisher=new MC(this.registry,e)}subscribe(e,t,n){let r=this.registry.add(e,t,n);return this.logger.debug(`Registered handler for message type: ${e}`,{hasFilter:!!n,filterTarget:n?.target}),()=>{this.registry.remove(e,r)}}async send(e){let t=await this.dispatchWithProvenance(e,(n)=>this.publisher.publish(n,e.broadcast));return OC(e.type,t)}async collect(e){return(await this.dispatchWithProvenance(e,(n)=>this.publisher.collect(n))).map((n)=>OC(e.type,n))}dispatchWithProvenance(e,t){let{type:n,payload:r,sender:i,target:o,metadata:s}=e,c=QF(n,r,i,o,s),l=this.operationContext.current(),u=s?.provenance,p=u===void 0?l?.provenance:Di.parse(u),m=Di.parse(p?{...p,causationId:l?.operationId??p.causationId}:{rootJobId:c.id,causationId:c.id,projectionLineage:[],derivationDepth:0}),g={...c,metadata:{...s,provenance:m}};return this.operationContext.run(m,g.id,()=>t(g))}validateMessage(e,t){return jC(e,t)}hasHandlers(e){return this.registry.hasHandlers(e)}unsubscribe(e,t){this.registry.removeHandler(e,t)}clearHandlers(e){if(this.registry.clearHandlers(e))this.logger.info(`Cleared all handlers for message type: ${e}`)}clearAllHandlers(){this.registry.clearAllHandlers(),this.logger.info("Cleared all message handlers")}getHandlerCount(e){return this.registry.getHandlerCount(e)}getTargetedHandlerCount(e,t){return this.registry.getTargetedHandlerCount(e,t)}}var IX=a.union([a.object({success:a.boolean(),data:a.unknown().optional(),error:a.string().optional()}),a.object({noop:a.literal(!0)})]);async function RX(e,t){let n=await e.searchWithDistances({query:t.query,types:[t.entityType],maxDistance:t.maxDistance}),i=(await Promise.all(n.filter((c)=>c.entityType===t.entityType&&c.distance<=t.maxDistance&&!t.excludeIds?.includes(c.entityId)).map((c)=>e.getEntity({entityType:t.entityType,id:c.entityId,visibilityScope:t.visibility})))).filter((c)=>c?.visibility===t.visibility),o=t.confirm;if(!o)return i[0];let s=async(c)=>{let l=i[c];if(!l)return;return await o(l)?l:s(c+1)};return s(0)}async function kX(e,t={}){let n=t.pollMs??100,r=Date.now()+(t.timeoutMs??60000),i=async()=>{if((await e.getActiveJobs([sr.embedding])).length===0)return;if(Date.now()>=r)throw Error("Embeddings did not drain before the deadline");return await new Promise((s)=>setTimeout(s,n)),i()};return i()}async function PX({context:e,targetType:t,entitySchema:n,desired:r,getId:i,toEntityInput:o,equals:s,deleteStale:c=!1,outputVisibility:l="public",concurrency:u=1,logger:p}){let m=new Map;for(let j of r)m.set(i(j),j);let g=(await e.entityService.listEntities({entityType:t,options:{filter:{visibilityScope:l}}},n)).filter((j)=>j.visibility===l),f=new Map(g.map((j)=>[j.id,j])),v=0,w=0,k=0,P=0,B=Math.max(1,u);if(c){let j=g.filter((Y)=>!m.has(Y.id));await nL(j,B,async(Y)=>{await e.entityService.deleteEntity({entityType:t,id:Y.id}),k++})}return await nL(Array.from(m),B,async([j,Y])=>{let G=f.get(j),I={...o(Y,j),visibility:l};try{if(!G){await e.entityService.createEntity({entity:I}),v++;return}if(s?.(G,Y)??!1){P++;return}await e.entityService.updateEntity({entity:{...G,...I,id:j,entityType:t,visibility:l}}),w++}catch(ee){p?.error("Failed to reconcile entity",{targetType:t,id:j,error:Be(ee)})}}),{created:v,updated:w,deleted:k,skipped:P}}async function nL(e,t,n){let r=await te.runPromiseExit(te.forEach(e,(i)=>te.tryPromise({try:()=>n(i),catch:(o)=>o}),{concurrency:t,discard:!0}));if(bt.isFailure(r))throw Xn.squash(r.cause)}async function AX({entityService:e,entity:t,options:n}){let r=await e.getEntity({entityType:t.entityType,id:t.id,visibilityScope:Ii("pending entity identity check")});if(r)return{entityId:r.id,created:!1,existingEntity:r};let i=await e.createEntity({entity:t,...n?{options:n}:{}});return{entityId:i.entityId,created:!0,mutation:i}}async function OX({entityService:e,entity:t,expectedContentHash:n}){let r=await e.getEntity({entityType:t.entityType,id:t.id,visibilityScope:Ii("pending entity completion")});if(r){let o={...r,content:t.content,metadata:t.metadata,updated:t.updated??new Date().toISOString()},s=await e.updateEntity({entity:o,...n!==void 0?{options:{expectedContentHash:n}}:{}});return{entityId:s.entityId,updated:!0,mutation:s,previousEntity:r}}if(n!==void 0)return{entityId:t.id,updated:!1,mutation:{entityId:t.id,jobId:"",skipped:!0,skipReason:"content-conflict"}};let i=await e.createEntity({entity:t});return{entityId:i.entityId,updated:!1,mutation:i}}async function DX({entityService:e,entityType:t,id:n,error:r,content:i}){let o=await e.getEntity({entityType:t,id:n,visibilityScope:Ii("pending entity failure")});if(!o)return{found:!1};let s={...o,content:i??o.content,metadata:{...o.metadata,status:"failed",processingError:r},updated:new Date().toISOString()},c=await e.updateEntity({entity:s});return{found:!0,entityId:c.entityId,mutation:c,previousEntity:o}}var rL=a.union([a.string(),a.number().finite(),a.boolean(),a.null()]);function zX(e,t){return e.definition===t}function MX(e,t){return Buffer.from(JSON.stringify([e,t])).toString("base64url")}function sh(e,t){return{packageName:e.packageName,definitionId:e.definitionId,actorId:t}}function jX(e){let t=e.replaceAll(/([a-z0-9])([A-Z])/g,"$1 $2").replaceAll(/[-_]+/g," ").trim();return t?`${t[0]?.toUpperCase()??""}${t.slice(1)}`:e}function BC(e){return e.schema.shape}function iL(e){let t=e!==null&&typeof e==="object"?Reflect.get(e,"safeParse"):void 0;if(typeof t!=="function")return{success:!1};let n=t.call(e,void 0);if(n!==null&&typeof n==="object"&&Reflect.get(n,"success")===!0)return{success:!0,data:Reflect.get(n,"data")};return{success:!1}}function NX(e){let t=iL(e);if(!t.success)return;let n=rL.safeParse(t.data);return n.success?n.data:void 0}function BX(e,t){let n={};for(let r of Object.keys(BC(e))){let i=Reflect.get(t,r);if(i!==void 0)n[r]=rL.parse(i)}return Object.freeze(n)}function _X(e,t){let n=Object.entries(e),r=Object.entries(t);return n.length===r.length&&n.every(([i,o])=>Object.hasOwn(t,i)&&Object.is(o,t[i]))}class oL{registrations=new Map;listeners=new Map;mutationTails=new Map;backend;register(e){if(!e.ownerPluginId.trim())throw Error("Account settings owner plugin id must not be empty");if(!e.packageName.trim())throw Error("Account settings package name must not be empty");if(!e.definitionId.trim())throw Error("Account settings definition id must not be empty");let t=MX(e.packageName,e.definitionId),n=this.registrations.get(t);if(n){if(n.ownerPluginId===e.ownerPluginId&&zX(n,e.definition))return n;throw Error(`Account settings definition "${e.packageName}:${e.definitionId}" is already registered`)}let r=Object.freeze({id:t,...e});return this.registrations.set(t,r),r}unregister(e){if(this.registrations.get(e.id)!==e)return;this.registrations.delete(e.id),this.listeners.delete(e.id)}bindBackend(e){if(this.backend&&this.backend!==e)throw Error("Account settings backend is already bound");this.backend=e;for(let n of this.registrations.values())this.notify(n.id);let t=!0;return()=>{if(!t)return;if(t=!1,this.backend===e)this.backend=void 0}}hasRegistrations(){return this.registrations.size>0}hasBackend(){return this.backend!==void 0}listRegistrations(){return[...this.registrations.values()].sort((e,t)=>e.id.localeCompare(t.id))}async listForms(e){let t=[];for(let n of this.listRegistrations()){let r=await this.requireBackend(n).read(sh(n,e));t.push(this.formFor(n,r))}return t}async save(e,t,n){let r=this.requireRegistration(e);return this.serializeMutation(`${r.id}:${t}`,async()=>{let i=this.requireBackend(r),o=sh(r,t),s=await i.read(o),c=BC(r.definition),l=Object.keys(n).find((f)=>!Object.hasOwn(c,f));if(l)throw Error(`Account settings field "${l}" is not declared by "${r.packageName}:${r.definitionId}"`);let u={};for(let f of Object.keys(c)){let v=r.definition.fields[f]?.secret===!0;if(!Object.hasOwn(n,f)){if(v&&s?.values[f]!==void 0)u[f]=s.values[f];continue}let w=n[f];if(v&&(w===""||w===void 0)){if(s?.values[f]!==void 0)u[f]=s.values[f];continue}if(w!==void 0)u[f]=w}let p=r.definition.schema.parse(u),m=BX(r.definition,p),g=s&&_X(s.values,m)?s:await i.write(o,m);if(g!==s)this.notify(r.id);return this.formFor(r,g)})}async delete(e,t){let n=this.requireRegistration(e);return this.serializeMutation(`${n.id}:${t}`,async()=>{let r=await this.requireBackend(n).delete(sh(n,t));if(r)this.notify(n.id);return r})}async deleteActor(e){let t=this.backend,n=t?await t.deleteActor(e):0;return this.refreshActor(e),n}accountDeleted(e){this.refreshActor(e)}refreshActor(e){for(let t of this.registrations.values())this.notify(t.id)}async getForActor(e,t){this.requireAttached(e);let n=await this.requireBackend(e).read(sh(e,t));return n?ss(co(e.definition.schema,n.values)):null}async listConfigured(e){return this.requireAttached(e),(await this.requireBackend(e).list({packageName:e.packageName,definitionId:e.definitionId})).map((n)=>Object.freeze({id:n.actorId,settings:ss(co(e.definition.schema,n.values)),revision:n.revision}))}subscribe(e,t){this.requireAttached(e);let n=this.listeners.get(e.id)??new Set;return n.add(t),this.listeners.set(e.id,n),()=>{if(n.delete(t),n.size===0)this.listeners.delete(e.id)}}formFor(e,t){let n=Object.entries(BC(e.definition)).map(([r,i])=>{let o=e.definition.fields[r],s=o?.secret===!0,c=t?.values[r],l=c!==void 0?c:NX(i);return Object.freeze({name:r,label:o?.label??jX(r),control:o?.control??"text",secret:s,required:!iL(i).success,...s?{set:c!==void 0}:l!==void 0?{value:l}:{}})});return Object.freeze({id:e.id,title:e.definition.title,...e.definition.description?{description:e.definition.description}:{},configured:t!==null,revision:t?.revision??null,fields:Object.freeze(n)})}requireRegistration(e){let t=this.registrations.get(e);if(!t)throw Error("Account settings definition not found");return t}requireAttached(e){if(this.registrations.get(e.id)!==e)throw Error("Account settings definition is not registered")}requireBackend(e){if(!this.backend)throw Error(`Account settings runtime is unavailable for "${e.packageName}:${e.definitionId}"`);return this.backend}notify(e){for(let t of this.listeners.get(e)??[])t()}serializeMutation(e,t){let r=(this.mutationTails.get(e)??Promise.resolve()).catch(()=>{return}).then(t),i=r.then(()=>{return},()=>{return});return this.mutationTails.set(e,i),i.finally(()=>{if(this.mutationTails.get(e)===i)this.mutationTails.delete(e)}),r}}var cL=/^[a-z][a-z0-9-]*$/,FX=a.strictObject({source:a.string().min(1).max(500),flags:a.string().regex(/^[imu]*$/).optional()}),LX=a.strictObject({type:a.string().trim().regex(cL),displayName:a.string().trim().min(1).max(100),subjectLabel:a.string().trim().min(1).max(100),subjectPattern:FX.optional(),manualDelivery:a.boolean().optional()});class lL{descriptorRegistrations=new Map;providerRegistrations=new Map;activeDescriptors=new Map;activeProviders=new Map;finalized=!1;registerDescriptor(e,t){this.assertRegistrationOpen();let n=sL(e),r=LX.parse(t);if(r.subjectPattern)new RegExp(r.subjectPattern.source,r.subjectPattern.flags);let i=Object.freeze({type:r.type,displayName:r.displayName,subjectLabel:r.subjectLabel,...r.subjectPattern?{subjectPattern:Object.freeze({...r.subjectPattern})}:{},...r.manualDelivery!==void 0?{manualDelivery:r.manualDelivery}:{}}),o=this.descriptorRegistrations.get(r.type)??[];o.push({pluginId:n,descriptor:i}),this.descriptorRegistrations.set(r.type,o)}registerDeliveryProvider(e,t){this.assertRegistrationOpen();let n=sL(e),r=_C(t.channelType);if(typeof t.isAvailable!=="function"||typeof t.send!=="function")throw Error("Channel delivery provider operations are required");let i=Object.freeze({channelType:r,isAvailable:t.isAvailable.bind(t),send:t.send.bind(t)}),o=this.providerRegistrations.get(r)??[];o.push({pluginId:n,provider:i}),this.providerRegistrations.set(r,o)}unregisterPlugin(e){let t=e.trim();for(let[n,r]of this.descriptorRegistrations){let i=r.filter((o)=>o.pluginId!==t);if(i.length===0)this.descriptorRegistrations.delete(n);else this.descriptorRegistrations.set(n,i)}for(let[n,r]of this.providerRegistrations){let i=r.filter((o)=>o.pluginId!==t);if(i.length===0)this.providerRegistrations.delete(n);else this.providerRegistrations.set(n,i)}if(this.finalized)this.rebuildActiveState(!1)}finalize(){if(this.finalized)return;this.rebuildActiveState(!0),this.finalized=!0}listDescriptors(){return this.assertFinalized(),[...this.activeDescriptors.values()].sort((e,t)=>e.type.localeCompare(t.type))}getDescriptor(e){return this.assertFinalized(),this.activeDescriptors.get(_C(e))}getDeliveryProvider(e){return this.assertFinalized(),this.activeProviders.get(_C(e))}isFinalized(){return this.finalized}rebuildActiveState(e){let t=new Map,n=new Map;for(let[r,i]of this.descriptorRegistrations){if(i.length>1){if(!e)continue;throw aL("Channel",r,i)}let o=i[0]?.descriptor;if(o)t.set(r,o)}for(let[r,i]of this.providerRegistrations){if(i.length>1){if(!e)continue;throw aL("Delivery provider for channel",r,i)}if(!t.has(r)){if(e)throw Error(`Delivery provider for channel "${r}" has no descriptor`);continue}let o=this.descriptorRegistrations.get(r)?.[0]?.pluginId,s=i[0]?.pluginId;if(o!==s){if(e)throw Error(`Delivery provider for channel "${r}" must be registered by descriptor owner "${o??"unknown"}", not "${s??"unknown"}"`);continue}let c=i[0]?.provider;if(c)n.set(r,c)}this.activeDescriptors=t,this.activeProviders=n}assertRegistrationOpen(){if(this.finalized)throw Error("Channel registration is closed")}assertFinalized(){if(!this.finalized)throw Error("Channel registry is not finalized")}}function sL(e){let t=e.trim();if(!t)throw Error("Channel registration plugin id is required");return t}function _C(e){let t=e.trim();if(!cL.test(t))throw Error(`Invalid channel type: ${e}`);return t}function aL(e,t,n){let r=n.map((i)=>i.pluginId).sort().join(", ");return Error(`${e} "${t}" is registered by multiple plugins: ${r}`)}var uL=/[\s\\\p{Cc}\p{Cf}]/u;function FC(e){if(typeof e!=="string"||e!==e.trim()||e.length===0||e.length>2048||!e.startsWith("/")||e.startsWith("//")||uL.test(e))return;try{let t=new URL(e,"https://brains.invalid");if(t.origin!=="https://brains.invalid")return;let n=`${t.pathname}${t.search}${t.hash}`;return n.length>0&&n.length<=2048&&n.startsWith("/")&&!n.startsWith("//")&&!uL.test(n)?n:void 0}catch{return}}var qX=/^[a-z][a-z0-9-]*$/,Nn=a.string().trim().regex(qX),ah=a.string().trim().min(1).max(300),pL=a.enum(["high","normal"]),LC=Nn.max(40),qC=Nn.max(40),dL=a.strictObject({value:qC,label:a.string().trim().min(1).max(100)}),mL=a.strictObject({key:LC,label:a.string().trim().min(1).max(100),values:a.array(dL).min(1).max(20)}).superRefine((e,t)=>{let n=new Set;for(let r of e.values){if(n.has(r.value))t.addIssue({code:"custom",path:["values"],message:`Duplicate inbox facet value: ${r.value}`});n.add(r.value)}}),fL=a.array(mL).max(8).superRefine((e,t)=>{let n=new Set;for(let r of e){if(n.has(r.key))t.addIssue({code:"custom",path:[],message:`Duplicate inbox facet key: ${r.key}`});n.add(r.key)}}),ZC=a.record(LC,qC).refine((e)=>Object.keys(e).length<=8,{message:"Inbox items may declare at most eight facets"}),ZX=a.string().regex(/^[a-z][A-Za-z0-9]{0,39}$/),$X=a.string().min(1).max(300).refine((e)=>!/[\p{Cc}\p{Cf}]/u.test(e),{message:"Inbox follow-up context values cannot contain controls"}),UX=a.strictObject({kind:Nn,context:a.record(ZX,$X).refine((e)=>Object.keys(e).length<=8,{message:"Inbox follow-up context may contain at most eight entries"})}),WX=a.array(UX).max(8).superRefine((e,t)=>{let n=new Set;for(let r of e){if(n.has(r.kind))t.addIssue({code:"custom",path:[],message:`Duplicate inbox follow-up kind: ${r.kind}`});n.add(r.kind)}}),gL=a.strictObject({id:Nn,label:a.string().trim().min(1).max(100),confirm:a.boolean().optional()}),hL=a.strictObject({entityType:a.string().trim().min(1).max(100),entityId:a.string().trim().min(1).max(300)}),yL=a.strictObject({label:a.string().trim().min(1).max(300),personId:a.string().trim().min(1).max(200).optional()}),$p=a.strictObject({id:ah,title:a.string().trim().min(1).max(160),summary:a.string().trim().min(1).max(1000).optional(),contact:yL.optional(),threadOrdinal:a.number().int().positive().max(Number.MAX_SAFE_INTEGER).optional(),receivedAt:a.iso.datetime(),urgency:pL,entityRef:hL.optional(),facets:ZC.optional(),followUps:WX.optional(),actions:a.array(gL).max(10)}).superRefine((e,t)=>{let n=new Set;for(let r of e.actions){if(n.has(r.id))t.addIssue({code:"custom",path:["actions"],message:`Duplicate inbox action id: ${r.id}`});n.add(r.id)}}),bL=a.array($p).max(1000),hl=a.strictObject({permissionLevel:a.enum(["admin","trusted","public"])}),SL=a.strictObject({kind:a.literal("plain"),text:a.string().max(1e5),truncated:a.boolean()}),JX=a.strictObject({sourceId:Nn,displayName:a.string().trim().min(1).max(100)}),xL=a.strictObject({sourceId:Nn,displayName:a.string().trim().min(1).max(100),facets:fL.optional()});class vL{registrations=new Map;activeSources=new Map;finalized=!1;registerSource(e,t){this.assertRegistrationOpen();let n=KX(e),r=xL.parse({sourceId:t.sourceId,displayName:t.displayName,...t.facets?{facets:t.facets}:{}});if(typeof t.list!=="function"||typeof t.act!=="function")throw Error("Inbox source operations are required");let i=HX(r,r.facets??[],t),o=this.registrations.get(r.sourceId)??[];o.push({pluginId:n,source:i}),this.registrations.set(r.sourceId,o)}unregisterPlugin(e){let t=e.trim();for(let[n,r]of this.registrations){let i=r.filter((o)=>o.pluginId!==t);if(i.length===0)this.registrations.delete(n);else this.registrations.set(n,i)}if(this.finalized)this.rebuildActiveState(!1)}finalize(){if(this.finalized)return;this.rebuildActiveState(!0),this.finalized=!0}listSources(){return this.assertFinalized(),[...this.activeSources.values()].sort((e,t)=>e.sourceId.localeCompare(t.sourceId))}getSource(e){return this.assertFinalized(),this.activeSources.get(YX(e))}isFinalized(){return this.finalized}rebuildActiveState(e){let t=new Map;for(let[n,r]of this.registrations){if(r.length>1){if(!e)continue;let o=r.map((s)=>s.pluginId).sort().join(", ");throw Error(`Inbox source "${n}" is registered by multiple plugins: ${o}`)}let i=r[0]?.source;if(i)t.set(n,i)}this.activeSources=t}assertRegistrationOpen(){if(this.finalized)throw Error("Inbox registration is closed")}assertFinalized(){if(!this.finalized)throw Error("Inbox registry is not finalized")}}function HX(e,t,n){let r=VX(t),i=QX(r);return Object.freeze({...e,...r.length>0?{facets:r}:{},list:async()=>{let o=bL.parse(await n.list());for(let s of o)if(s.facets!==void 0)i.parse(s.facets);return o.map(GX)},...n.resolveDetail?{resolveDetail:async(o,s,c)=>{if(!(c instanceof AbortSignal))throw Error("Inbox detail signal is invalid");return SL.parse(await n.resolveDetail?.(ah.parse(o),hl.parse(s),c))}}:{},act:async(o,s,c)=>{let l=ah.parse(o),u=Nn.parse(s);await n.act(l,u,hl.parse(c))}})}function GX(e){let t=e.actions.map((r)=>Object.freeze({...r})),n=e.followUps?.map((r)=>Object.freeze({...r,context:Object.freeze({...r.context})}));if(Object.freeze(t),n)Object.freeze(n);return Object.freeze({...e,...e.contact?{contact:Object.freeze({...e.contact})}:{},...e.entityRef?{entityRef:Object.freeze({...e.entityRef})}:{},...e.facets?{facets:Object.freeze({...e.facets})}:{},...n?{followUps:n}:{},actions:t})}function VX(e){let t=e.map((n)=>{let r=n.values.map((i)=>Object.freeze({...i}));return Object.freeze(r),Object.freeze({...n,values:r})});return Object.freeze(t),t}function QX(e){let t=new Map(e.map((n)=>[n.key,new Set(n.values.map((r)=>r.value))]));return ZC.superRefine((n,r)=>{for(let[i,o]of Object.entries(n))if(!t.get(i)?.has(o))r.addIssue({code:"custom",path:[i],message:`Undeclared inbox facet value: ${i}=${o}`})})}function KX(e){let t=e.trim();if(!t)throw Error("Inbox registration plugin id is required");return t}function YX(e){return Nn.parse(e)}var XX=2048,eee=8192,tee=a.strictObject({kind:Nn,label:a.string().trim().min(1).max(100),priority:a.number().int().min(0).max(1000),mode:a.enum(["universal","declared"]),permissionLevel:nl,contextSchema:a.custom((e)=>typeof e==="object"&&e!==null&&("safeParse"in e)&&typeof e.safeParse==="function").optional(),applies:a.custom((e)=>typeof e==="function"),resolve:a.custom((e)=>typeof e==="function")}).superRefine((e,t)=>{if(e.mode==="declared"&&e.contextSchema===void 0)t.addIssue({code:"custom",path:["contextSchema"],message:"Declared inbox follow-up kinds require a context schema"});if(e.mode==="universal"&&e.contextSchema!==void 0)t.addIssue({code:"custom",path:["contextSchema"],message:"Universal inbox follow-up kinds cannot accept context"})});var nee=a.strictObject({href:a.string(),state:a.unknown().optional()}),wL=a.record(a.string(),a.json()).refine((e)=>new TextEncoder().encode(JSON.stringify(e)).byteLength<=eee,{message:"Inbox follow-up state is too large"}),ree=a.strictObject({kind:Nn,label:a.string().trim().min(1).max(100),href:a.string().min(1).max(XX).refine((e)=>FC(e)===e),state:wL.optional()});class TL{registrations=new Map;activeKinds=new Map;finalized=!1;logger;constructor(e){this.logger=e}registerKind(e,t){this.assertRegistrationOpen();let n=aee(e),r=Object.freeze(tee.parse(t)),i=this.registrations.get(r.kind)??[];i.push({pluginId:n,kind:r}),this.registrations.set(r.kind,i)}unregisterPlugin(e){let t=e.trim();for(let[n,r]of this.registrations){let i=r.filter((o)=>o.pluginId!==t);if(i.length===0)this.registrations.delete(n);else this.registrations.set(n,i)}if(this.finalized)this.rebuildActiveState(!1)}finalize(){if(this.finalized)return;this.rebuildActiveState(!0),this.finalized=!0}listKinds(){return this.assertFinalized(),[...this.activeKinds.values()].sort(see)}getKind(e){return this.assertFinalized(),this.activeKinds.get(Nn.parse(e))}async resolve(e){this.assertFinalized();let t=Object.freeze({sourceId:Nn.parse(e.sourceId),item:$p.parse(e.item),actor:hl.parse(e.actor)}),n=new Map((t.item.followUps??[]).map((s)=>[s.kind,s.context])),r=this.listKinds(),i=await Promise.all(r.filter((s)=>s.mode==="declared").map(async(s)=>{let c=n.get(s.kind);if(!c||!s.contextSchema)return;let l=s.contextSchema.safeParse(c);if(!l.success)return;return $C(s,Object.freeze({...t,context:l.data}),this.logger)})),o=await Promise.all(r.filter((s)=>s.mode==="universal").map(async(s)=>$C(s,t,this.logger)));return[...i,...o].filter((s)=>s!==void 0)}async resolveUniversal(e){this.assertFinalized();let t=Object.freeze({sourceId:Nn.parse(e.sourceId),item:$p.parse(e.item),actor:hl.parse(e.actor)});return(await Promise.all(this.listKinds().filter((r)=>r.mode==="universal").map(async(r)=>$C(r,t,this.logger)))).filter((r)=>r!==void 0)}isFinalized(){return this.finalized}rebuildActiveState(e){let t=new Map;for(let[n,r]of this.registrations){if(r.length>1){if(!e)continue;let o=r.map((s)=>s.pluginId).sort().join(", ");throw Error(`Inbox follow-up kind "${n}" is registered by multiple plugins: ${o}`)}let i=r[0]?.kind;if(i)t.set(n,i)}this.activeKinds=t}assertRegistrationOpen(){if(this.finalized)throw Error("Inbox follow-up registration is closed")}assertFinalized(){if(!this.finalized)throw Error("Inbox follow-up registry is not finalized")}}async function $C(e,t,n){if(!ba.hasPermission(t.actor.permissionLevel,e.permissionLevel))return;try{if(!await e.applies(t))return;let r=await e.resolve(t);if(!r)return;let i=iee(r);return Object.freeze({kind:e.kind,label:e.label,href:i.href,...i.state?{state:i.state}:{}})}catch(r){n?.debug("Inbox follow-up kind did not resolve",{kind:e.kind,sourceId:t.sourceId,error:r});return}}function iee(e){let t=nee.parse(e),n=FC(t.href);if(!n)throw Error("Invalid inbox follow-up target");let r=t.state===void 0?void 0:oee(t.state);return{href:n,...r?{state:r}:{}}}function oee(e){return Object.freeze(wL.parse(e))}function see(e,t){return e.priority-t.priority||e.kind.localeCompare(t.kind)}function aee(e){let t=e.trim();if(!t)throw Error("Inbox follow-up registration plugin id is required");return t}var cee={pluginsRegistered:"system:plugins:registered",initialSyncCompleted:"sync:initial:completed",startupContentSettled:"system:startup-content:settled",shellReady:"system:shell:ready",identityChanged:"system:identity:changed"},lee=a.object({initialSyncPending:a.boolean()});function uee(e){return a.discriminatedUnion("success",[a.strictObject({success:a.literal(!0),data:e}),a.strictObject({success:a.literal(!1),error:a.string().min(1)})])}function pee(e){return{name:e.name,description:e.description,inputSchema:e.inputSchema,outputSchema:e.outputSchema,visibility:"admin",sideEffects:"none",handler:async(t,n)=>{if(n.userPermissionLevel!=="admin")return{success:!1,error:e.errors.permission};let r=e.filterSchema.safeParse(t);if(!r.success)return{success:!1,error:e.errors.invalidFilter};try{return{success:!0,data:await e.list(r.data)}}catch{return{success:!1,error:e.errors.failed}}}}}function dee(e){return{register:(t,n,r)=>e.register(t,n,r),resolve:(t)=>e.resolve(t),hasProvider:(t,n)=>e.has(t,n),getProviderMetadata:(t,n)=>e.getMetadata(t,n)}}class UC{providers=new Map;static createFresh(){return new UC}constructor(){}register(e,t,n){let r=this.getOrCreateSourceProviders(e),i={provider:n};return r.set(t,i),()=>{if(this.providers.get(e)?.get(t)===i)this.unregister(e,t)}}async resolve(e){let t=this.get(e.sourceEntityType,e.attachmentType);if(!t)return;return t.resolve(e)}get(e,t){return this.providers.get(e)?.get(t)?.provider}has(e,t){return this.get(e,t)!==void 0}getMetadata(e,t){return this.get(e,t)?.metadata}unregister(e,t){let n=this.providers.get(e);if(!n)return;if(n.delete(t),n.size===0)this.providers.delete(e)}getRegisteredAttachmentTypes(e){return Array.from(this.providers.get(e)?.keys()??[])}clear(){this.providers.clear()}getOrCreateSourceProviders(e){let t=this.providers.get(e);if(t)return t;let n=new Map;return this.providers.set(e,n),n}}import{mkdir as mee,readdir as fee,readFile as CL,rm as EL,stat as gee,writeFile as IL}from"fs/promises";import{basename as hee,dirname as yee,join as fo}from"path";var lh=/^upload-[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,RL=86400000,kL=200;function ch(e){return typeof e==="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}class go extends Error{code;constructor(e,t){super(t);this.code=e,this.name="RuntimeUploadStoreError"}}var bee=a.object({id:a.string().regex(lh),ref:a.object({kind:a.string().min(1),id:a.string().regex(lh)}),filename:a.string().min(1),mediaType:a.string().min(1),sizeBytes:a.number().nonnegative(),createdAt:a.string().datetime(),metadata:a.record(a.string(),a.unknown()).optional()});function See(e){return{scoped:(t)=>e.scoped(t)}}function PL(e){return hee(e)==="brain-data"?fo(yee(e),"data"):e}class WC{dataDir;logger;constructor(e){this.dataDir=PL(e.dataDir),this.logger=e.logger}static createFresh(e){return new WC(e)}scoped(e){return new JC({...e,dataDir:this.dataDir,...this.logger!==void 0&&{logger:this.logger}})}}class JC{options;retentionMs;maxCount;createUploadId;getNow;logger;constructor(e){this.options=e,this.logger=e.logger,this.retentionMs=e.retentionMs??RL,this.maxCount=e.maxCount??kL,this.createUploadId=e.createId??(()=>`upload-${crypto.randomUUID()}`),this.getNow=e.now??(()=>new Date)}async save(e){let t=this.createUploadId();this.assertValidUploadId(t);let n={id:t,ref:{kind:this.options.refKind,id:t},filename:e.filename,mediaType:e.mediaType,sizeBytes:e.content.byteLength,createdAt:this.getNow().toISOString(),...e.metadata!==void 0&&{metadata:e.metadata}},r=this.getUploadDir(t);return await mee(r,{recursive:!0}),await IL(fo(r,"content"),e.content),await IL(fo(r,"metadata.json"),`${JSON.stringify(n,null,2)}
183
- `,"utf8"),await this.prune().catch((i)=>{this.logger?.warn("Failed to prune runtime uploads",{error:Be(i)})}),n}async remove(e){this.assertValidUploadId(e),await EL(this.getUploadDir(e),{recursive:!0,force:!0})}async read(e){let t=await this.readRecord(e);try{let n=await CL(fo(this.getUploadDir(e),"content"));return{record:t,content:n}}catch(n){if(ch(n))throw new go("not_found","Upload not found");throw new go("invalid_metadata","Upload content could not be read")}}async readRecord(e){this.assertValidUploadId(e);try{let t=await CL(fo(this.getUploadDir(e),"metadata.json"),"utf8"),n=bee.safeParse(JSON.parse(t));if(!n.success||n.data.id!==e||n.data.ref.id!==e||n.data.ref.kind!==this.options.refKind)throw new go("invalid_metadata","Invalid upload metadata");return n.data}catch(t){if(t instanceof go)throw t;if(ch(t))throw new go("not_found","Upload not found");throw new go("invalid_metadata","Upload metadata could not be read")}}toResponseBody(e){return{...e,url:this.getUploadUrl(e.id),downloadUrl:this.getUploadUrl(e.id,!0)}}async prune(){let e=this.getUploadsRoot(),t;try{t=await fee(e)}catch(s){if(ch(s))return;throw s}let r=(await Promise.all(t.map(async(s)=>{try{let c=await gee(fo(e,s));return c.isDirectory()?{entry:s,mtimeMs:c.mtimeMs}:null}catch(c){if(ch(c))return null;throw c}}))).filter((s)=>s!==null).sort((s,c)=>c.mtimeMs-s.mtimeMs),i=this.getNow().getTime()-this.retentionMs,o=r.filter((s,c)=>c>=this.maxCount||s.mtimeMs<i);await Promise.all(o.map((s)=>EL(fo(e,s.entry),{recursive:!0,force:!0})))}getUploadDir(e){return this.assertValidUploadId(e),fo(this.getUploadsRoot(),e)}getUploadsRoot(){return fo(this.options.dataDir,this.options.namespace,"uploads")}getUploadUrl(e,t=!1){this.assertValidUploadId(e);let n=encodeURIComponent(e);return`${this.options.routePath}?id=${n}${t?"&download=1":""}`}assertValidUploadId(e){if(!lh.test(e))throw new go("invalid_ref","Invalid upload ref")}}function HC(e,t,n){let r=Bun.cron.parse(e,t,n?{tz:n}:void 0);if(r===null)throw Error(`Cron expression ${JSON.stringify(e)} has no future occurrences`);return r}function AL(e){HC(e,Date.now())}class VC{options;nextJobId=0;constructor(e={}){this.options=e}scheduleCron(e,t,n={}){HC(e,Date.now(),n.timezone);let r=`cron:${this.nextJobId++}:${e}`,i={},o=new GC(r,t,this.options,()=>i.current?.stop());return i.current=Bun.cron(e,()=>{o.trigger()},n.timezone?{tz:n.timezone}:void 0),o}scheduleInterval(e,t){xee(e);let n=`interval:${this.nextJobId++}:${e}`,r=new GC(n,t,this.options);return r.startInterval(e),r}validateCron(e){AL(e)}}class GC{key;callback;options;stopTrigger;scope;cycles;intervalFiber=null;stopPromise=null;stopped=!1;constructor(e,t,n,r=()=>{}){this.key=e,this.callback=t,this.options=n,this.stopTrigger=r,this.scope=te.runSync(vt.make()),this.cycles=te.runSync(vt.provide(Pn.make(),this.scope))}startInterval(e){let t=te.sleep(e).pipe(te.andThen(te.sync(()=>{this.trigger()})),te.forever),n=_o(t,this.options.clock);this.intervalFiber=te.runFork(n)}trigger(){if(this.stopped)return;if(Pn.hasUnsafe(this.cycles,this.key)){this.options.onOverlapSkipped?.(this.key);return}let e=te.tryPromise({try:async()=>{await this.callback()},catch:(n)=>n}).pipe(te.catch((n)=>te.sync(()=>{this.options.onCallbackError?.(this.key,n)}))),t=te.runFork(e);Pn.setUnsafe(this.cycles,this.key,t,{onlyIfMissing:!0})}stop(){return this.stopPromise??=this.stopScheduledJob(),this.stopPromise}async stopScheduledJob(){this.stopped=!0,this.stopTrigger();let e=this.intervalFiber;if(this.intervalFiber=null,e)await te.runPromise(Qr.interrupt(e));await te.runPromise(Pn.awaitEmpty(this.cycles)),await te.runPromise(vt.close(this.scope,bt.void))}}function xee(e){if(!Number.isFinite(e)||e<=0)throw Error("Scheduler interval must be a positive finite number")}function vee(e){let t=e.scheduler??new VC,n=e.now??Date.now,r,i,o,s=!1,c=!1,l={status:"unknown"},u=0,p=0,m=async()=>{if(!s||c)return;c=!0,r=n();try{await e.run(),u++,l={status:"healthy",lastCheck:new Date(n()),details:{successes:u,failures:p}}}catch{p++,l={status:"warning",message:"Maintenance cycle failed",lastCheck:new Date(n()),details:{successes:u,failures:p}},e.logger.warn("Maintenance cycle failed",{successes:u,failures:p})}finally{c=!1}};return{start:async()=>{if(o)await o;if(i)return;l={status:"unknown"},r=n(),i=t.scheduleInterval(e.intervalMs,m),s=!0},stop:()=>{if(o)return o;if(s=!1,!i)return Promise.resolve();return o=i.stop().then(()=>{i=void 0,o=void 0}),o},healthCheck:async()=>{let g=n();if(!Number.isSafeInteger(g)||g<0||r!==void 0&&!Number.isSafeInteger(r))return{status:"warning",message:"Maintenance clock unavailable"};if(s&&r!==void 0&&(g<r||g-r>e.intervalMs*2))return{status:"warning",message:c?"Maintenance cycle is still running":"Maintenance cycle is overdue"};return{...l,...l.lastCheck?{lastCheck:new Date(l.lastCheck)}:{},...l.details?{details:{...l.details}}:{}}}}}var _Fe=a.object({id:a.string(),type:a.string(),version:a.string(),status:a.string()}),FFe=a.object({name:a.string(),description:a.string()});var Tee=a.object({id:a.string(),version:a.string(),type:a.enum(["core","entity","service","interface"]),description:a.string().optional(),dependencies:a.array(a.string()).optional(),packageName:a.string()});var OL=a.looseObject({id:a.string().optional(),limit:a.number().optional(),page:a.number().optional(),pageSize:a.number().optional(),baseUrl:a.string().optional()}),DL=a.looseObject({entityType:a.string().optional(),query:OL.optional()});class zL{logger;constructor(e){this.logger=e}buildDetailResult(e,t){throw Error(`${this.id}: buildDetailResult() not implemented. Override this method or override fetch() to handle detail views.`)}parseQuery(e){let t=DL.parse(e);return{entityType:t.entityType??this.config.entityType,query:t.query??{}}}async fetch(e,t,n){let r=this.parseQuery(e),i=n.entityService;if(r.query.id){let s=await this.fetchDetail(r.query.id,i);return t.parse(this.buildDetailResult(s.item,s.navigation))}let o=await this.fetchList(r.query,i);return t.parse(this.buildListResult(o.items,o.pagination,r.query))}async fetchDetail(e,t){let n=await this.lookupEntity(e,t),r=this.transformEntity(n),i=null;if(this.config.enableNavigation)i=await this.resolveNavigation(n,t);return{item:r,navigation:i}}async fetchList(e,t,n){let r=e.page??1,i=e.pageSize??e.limit??this.config.defaultLimit??100,o=(r-1)*i,s=e.page!==void 0,[c,l]=await Promise.all([t.listEntities({entityType:this.config.entityType,options:{limit:i,offset:o,sortFields:this.config.defaultSort,...n}},this.config.entitySchema),s?t.countEntities({entityType:this.config.entityType,options:n?.filter?{filter:n.filter}:void 0}):Promise.resolve(0)]),u=c.map((m)=>this.transformEntity(m)),p=s?pw(l,r,i):null;return{items:u,pagination:p}}async resolveNavigation(e,t,n){let r=this.config.navigationLimit??1000,i=await t.listEntities({entityType:this.config.entityType,options:{limit:r,sortFields:n??this.config.defaultSort}},this.config.entitySchema),o=i.findIndex((p)=>p.id===e.id),s=o>0?i[o-1]:void 0,c=o<i.length-1?i[o+1]:void 0,l=s?this.transformEntity(s):null,u=c?this.transformEntity(c):null;return{prev:l,next:u}}async lookupEntity(e,t){if(this.config.lookupField==="id"){let i=await t.getEntity({entityType:this.config.entityType,id:e},this.config.entitySchema);if(!i)throw Error(`${this.config.entityType} not found: ${e}`);return i}let r=(await t.listEntities({entityType:this.config.entityType,options:{filter:{metadata:{slug:e}},limit:1}},this.config.entitySchema))[0];if(!r)throw Error(`${this.config.entityType} not found with slug: ${e}`);return r}}function Cee(e){let t=e.metadata.slug;return typeof t==="string"?t:null}async function Eee(e,t){let n=await e.nearestToEntity({origin:t.origin,types:t.types,maxDistance:t.maxDistance,limit:t.limit}).catch(()=>[]);return(await Promise.all(n.map(async(i)=>{let o=await e.getEntity({entityType:i.entityType,id:i.entityId});return o?{entity:o,title:jh(o)??o.id,slug:Cee(o),distance:i.distance}:null}))).filter((i)=>i!==null)}function QC(e){if(typeof e!=="object"||e===null||!("entityId"in e))return;let t=e.entityId;return typeof t==="string"&&t.trim().length>0?t.trim():void 0}function ML(e){if(!oi(e)||!("coverImage"in e))return;let t=e.coverImage;if(t===void 0||t===!1)return;if(t===!0)return{generate:!0};if(!oi(t))return;if(t.generate===!1)return;let n=t.prompt,r=typeof n==="string"?n.trim():void 0;return{generate:!0,...r&&{prompt:r}}}function ph(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function jL(e){let t={...e};return delete t.status,delete t.error,ph(t)}class _L extends vp{context;entityType;constructor(e,t,n){super(e,{schema:n.schema,jobTypeName:n.jobTypeName});this.context=t,this.entityType=n.entityType}async afterCreate(e,t,n,r){}async onGenerationFailure(e,t){}validateAndParse(e){let t=super.validateAndParse(e);if(!t)return null;let n=ML(e);if(typeof t!=="object")return t;let r=QC(e);if(!n&&!r)return t;return Object.assign(t,{...n&&{coverImage:n},...r&&{entityId:r}}),t}async process(e,t,n){try{await this.reportProgress(n,{progress:uh.START,message:`Starting ${this.jobTypeName}`});let r=await this.generate(e,n),i=QC(e),o=i?this.applyPreallocatedEntityId(i,r):r;await this.reportProgress(n,{progress:uh.SAVE,message:`Saving ${this.entityType} to database`});let s=i?await this.updatePreallocatedStub(i,o):await this.context.entityService.createEntity({entity:{id:o.id,entityType:this.entityType,content:o.content,metadata:o.metadata},options:o.createOptions});return await this.afterCreate(e,s.entityId,n,o),await this.enqueueGenericCoverImageIfRequested(e,s.entityId,n,o),await this.reportProgress(n,{progress:uh.COMPLETE,message:`${o.title??this.entityType} created successfully`}),this.toResult({success:!0,entityId:s.entityId,...o.resultExtras})}catch(r){if(r instanceof KC)return await this.markPreallocatedStubFailed(e,r.message),await this.onGenerationFailure(e,r.message),this.toResult({success:!1,error:r.message});let i=Be(r);return this.logger.error(`${this.jobTypeName} job failed`,{error:r,jobId:t,data:this.summarizeDataForLog(e)}),await this.markPreallocatedStubFailed(e,i),await this.onGenerationFailure(e,i),this.toResult(NL.failure(r))}}toResult(e){return e}applyPreallocatedEntityId(e,t){let n={...t.metadata},r=t.content,i=t.resultExtras;if(typeof n.slug==="string")n.slug=e,r=pp(r,"slug",e),i={...i,slug:e};return{...t,id:e,content:r,metadata:n,...i&&{resultExtras:i}}}async updatePreallocatedStub(e,t){let n=await this.context.entityService.getEntity({entityType:this.entityType,id:e,visibilityScope:"restricted"});if(!n)throw Error(`Pre-allocated entity stub not found: ${this.entityType}/${e}`);let r=this.mergeStubWithGenerated(n,t);return this.context.entityService.updateEntity({entity:{...n,id:e,entityType:this.entityType,content:r.content,metadata:r.metadata}})}mergeStubWithGenerated(e,t){let n=jL(el(e.content).frontmatter),r=jL(e.metadata),i=ph(t.metadata),o=el(t.content),s=ph(o.frontmatter),c=ph({...n,...i,...s});return this.context.entities.getEffectiveFrontmatterSchema(this.entityType)?.parse(c),{content:cw(c,o.content),metadata:{...r,...i}}}async markPreallocatedStubFailed(e,t){let n=QC(e);if(!n)return;try{let r=await this.context.entityService.getEntity({entityType:this.entityType,id:n,visibilityScope:"restricted"});if(!r)return;await this.context.entityService.updateEntity({entity:{...r,content:pp(pp(r.content,"status","failed"),"error",t),metadata:{...r.metadata,status:"failed",error:t}}})}catch(r){this.logger.warn("Failed to mark generation stub as failed",{error:r,entityId:n,entityType:this.entityType})}}async enqueueGenericCoverImageIfRequested(e,t,n,r){let i=ML(e);if(!i)return;await this.reportProgress(n,{progress:90,message:"Queueing cover image generation"});let o=r.title??t;await this.context.jobs.enqueue({type:BL.generate,data:{prompt:i.prompt??`Editorial cover image for: ${o}. `,title:`${o} Cover`,aspectRatio:"16:9",targetEntityType:this.entityType,targetEntityId:t,entityTitle:o,entityContent:r.content},toolContext:{interfaceType:"job",actor:{kind:"service",serviceId:"generation-job-handler"}}})}failEarly(e){throw new KC(e)}}class KC extends Error{constructor(e){super(e);this.name="GenerationFailure"}}var Iee=a.string().trim().min(1).max(200),Ree=a.string().trim().min(1).max(100).regex(/^[a-z0-9][a-z0-9.-]*$/);class FL{registrations=new Map;register(e,t,n){let r=Iee.parse(e),i=Ree.parse(t),o=`${r}:${i}`;if(this.registrations.has(o))throw Error(`Operational health check already registered: ${o}`);return this.registrations.set(o,{pluginId:r,name:o,provider:n}),()=>this.registrations.delete(o)}unregisterPlugin(e){let t=e.trim();for(let[n,r]of this.registrations)if(r.pluginId===t)this.registrations.delete(n)}async getChecks(){let e=[...this.registrations.values()].sort((t,n)=>t.name.localeCompare(n.name));return Promise.all(e.map(async(t)=>{try{return nh.parse({name:t.name,...await t.provider()})}catch{return{name:t.name,status:"degraded",message:"Operational health check failed"}}}))}}function LL(e){let t=$L(e.status),n=qL(e),r=ZL(e),i=r?`${t}: ${n} ${r}`:`${t}: ${n}`;return{title:t,label:n,...r?{amount:r}:{},...e.message?{message:e.message}:{},fallback:e.message?`${i}
182
+ ${t}`}function OF(e,t){let n=e.match(W7)??[];return[...new Set(n)].filter((r)=>{try{let{hostname:i}=new URL(r);return!t.some((o)=>i===o||i.endsWith(`.${o}`))}catch{return!1}})}function gl(e,t){let n=e.attachment.source;if((n?.entityType==="document"||n?.entityType==="image")&&n.entityId)return{entityType:n.entityType,id:n.entityId};return EC(e.attachment.downloadUrl??e.attachment.url,t)}function EC(e,t="http://local"){if(!e)return;let n;try{n=new URL(e,t)}catch{return}let r=n.searchParams.get("id")?.trim();if(!r)return;if(n.pathname==="/api/chat/attachments/document")return{entityType:"document",id:r};if(n.pathname==="/api/chat/attachments/image")return{entityType:"image",id:r};return}function Vg(e,t){let n=H7(t,e==="document"?/^application\/pdf$/i:/^image\/[a-z0-9.+-]+$/i);if(!n)return;if(e==="document"&&n.mimeType.toLowerCase()!=="application/pdf")return;return n}function Qg(e,t,n,r){let i=e?.filename;if(typeof i==="string"&&i.trim())return i;if(n==="document")return`${t}.pdf`;let o=e?.format;if(typeof o==="string"&&o.trim())return`${t}.${o==="jpeg"?"jpg":o}`;let s=r.split("/")[1]?.split("+")[0]??"png";return`${t}.${s}`}function H7(e,t){let n=e.match(/^data:([^;]+);base64,(.+)$/i),r=n?.[1],i=n?.[2];if(!r||!i||!t.test(r))return;let o=Buffer.from(i,"base64");return{mimeType:r,data:o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)}}async function Fp({entityRef:e,userLevel:t,getEntity:n,getVisibleEntity:r}){let i=wi(t),o=await r(e,i);if(o)return{status:"visible",entity:o};return Boolean(await n(e))?{status:"denied"}:{status:"missing"}}function Kg(e){return e==="admin"||e==="trusted"}async function DF(e){let t=new Set;for(let n of e.cards??[]){if(n.kind!=="attachment")continue;let r=gl(n,e.displayBaseUrl);if(!r)continue;if((await Fp({entityRef:r,userLevel:e.userLevel,getEntity:e.getEntity,getVisibleEntity:e.getVisibleEntity})).status==="denied")t.add(n.id)}return t}class Lp extends fl{createContext(e,t){return fC(e,this.id,t)}isUploadableTextFile(e,t){return RF(e,t)}isFileSizeAllowed(e){return kF(e)}formatFileUploadMessage(e,t){return AF(e,t)}getMaxFileUploadBytes(){return TC}isLikelyTextContent(e){return PF(e)}async resolveNativeArtifactDelivery(e){let t=[],n=new Set;if(!this.context||!e.cards)return{files:t,deniedCardIds:n};let r=this.context;for(let i of e.cards){if(i.kind!=="attachment")continue;let o=gl(i,e.displayBaseUrl);if(!o)continue;let s=await Fp({entityRef:o,userLevel:e.userPermissionLevel,getEntity:(l)=>r.entityService.getEntity(l),getVisibleEntity:(l,u)=>r.entityService.getEntity({...l,visibilityScope:u})});if(s.status==="denied"){n.add(i.id);continue}if(s.status!=="visible")continue;if(!Kg(e.userPermissionLevel))continue;if(typeof s.entity.content!=="string")continue;let c=Vg(o.entityType,s.entity.content);if(!c)continue;if(e.maxBytes!==void 0&&c.data.byteLength>e.maxBytes){this.logger.debug("Skipping oversized native artifact upload",{cardId:i.id,sizeBytes:c.data.byteLength});continue}t.push({cardId:i.id,data:new Uint8Array(c.data),filename:i.attachment.filename??Qg(s.entity.metadata,o.id,o.entityType,c.mimeType),mimeType:c.mimeType})}return{files:t,deniedCardIds:n}}extractCaptureableUrls(e,t){return OF(e,t)}async captureUrlViaAgent(e,t,n,r,i){if(!this.context)return;let o=this.context.permissions.getUserLevel(r,n,i);await this.context.agent.chat(`Save this link: ${e}`,`links-${t}`,{userPermissionLevel:o,interfaceType:r,channelId:t})}progress=new wC({interfaceId:()=>this.id,logger:()=>this.logger,sendMessageToChannel:(e)=>this.sendMessageToChannel(e),sendMessageWithId:(e)=>this.sendMessageWithId(e),editMessage:(e)=>this.editMessage(e),supportsMessageEditing:()=>this.supportsMessageEditing(),formatProgressOutput:(e)=>this.formatProgressOutput(e),formatCompletionOutput:(e)=>this.formatCompletionOutput(e),onProgressUpdate:(e)=>this.onProgressUpdate(e),handleToolStatusUpdate:(e)=>this.handleToolStatusUpdate(e)});sendMessageToChannel(e){return}sendMessageWithId(e){return Promise.resolve(void 0)}editMessage(e){return Promise.resolve(!1)}supportsMessageEditing(){return!1}registerProgressCallback(e){this.progress.registerProgressCallback(e)}unregisterProgressCallback(){this.progress.unregisterProgressCallback()}hasProgressCallback(){return this.progress.hasProgressCallback()}trackAgentResponseForJob(e,t,n){this.progress.trackAgentResponseForJob(e,t,n)}registerChannels(e){}async registerChannelsForExecution(e,t){let n=this.createContext(e,{...t,executionOnly:!0});this.context=n,await this.registerChannels(n)}async onRegister(e){await super.onRegister(e),await this.registerChannels(e),gC(e,{onProgress:async(t,n)=>{await this.handleProgressEvent(t,n)},onError:(t)=>{this.logger.error("Error handling progress event",{error:t,interfaceId:this.id})},onInvalidSchema:()=>{this.logger.warn("Invalid progress event schema",{interfaceId:this.id})}}),bC(e,{onToolActivity:async(t)=>{await this.handleToolActivityEvent(t)},onError:(t)=>{this.logger.error("Error handling tool activity event",{error:t,interfaceId:this.id})},onInvalidSchema:()=>{this.logger.warn("Invalid tool activity event schema",{interfaceId:this.id})}}),this.logger.debug("Message interface registered with progress and tool handlers",{id:this.id})}async onShutdown(){await this.progress.close(),await super.onShutdown()}async handleProgressEvent(e,t){await this.progress.handleProgressEvent(e)}formatProgressOutput(e){return yC(e)}formatCompletionOutput(e){return hC(e)}async onProgressUpdate(e){}async handleToolActivityEvent(e){await this.progress.handleToolActivityEvent(e)}async handleToolStatusUpdate(e){}async handleAgentResponseToolStatuses(e,t){await this.progress.handleAgentResponseToolStatuses(e,t)}getProgressEvents(){return this.progress.getProgressEvents()}getActiveProgressEvents(){return this.progress.getActiveProgressEvents()}startProcessingInput(e=null){this.progress.startProcessingInput(e)}endProcessingInput(){this.progress.endProcessingInput()}getCurrentChannelId(){return this.progress.getCurrentChannelId()}}function IC(e){if(typeof e==="string")return{text:e};return{text:e.fallbackText??"Message update"}}async function G7(e,t){let n=await fetch(e.url,{signal:t});if(!n.ok)throw Error(`Attachment "${e.name}" could not be downloaded (${n.status})`);let r=new Uint8Array(await n.arrayBuffer());if(e.mediaType.startsWith("text/"))return{kind:"text",filename:e.name,mediaType:e.mediaType,content:new TextDecoder().decode(r),sizeBytes:r.byteLength};return{kind:"file",filename:e.name,mediaType:e.mediaType,data:r,sizeBytes:r.byteLength}}class MF extends Lp{definition;accountSettingsRegistration;hasRequiredDaemon=!1;state;constructor(e,t,n,r){super(r,n,t,ul());this.definition=e}async registerChannels(e){if(this.state=this.definition.setup?await this.definition.setup({config:this.config}):Fg(),e.channels.registerDescriptor({type:this.definition.channel.type,displayName:this.definition.channel.displayName,subjectLabel:this.definition.channel.subjectLabel,...this.definition.deliver?{manualDelivery:!0}:{}}),this.definition.deliver)e.channels.registerDeliveryProvider({channelType:this.definition.channel.type,isAvailable:()=>Promise.resolve(this.state!==void 0),send:(t)=>this.deliver(t)})}async onRegister(e){if(await super.onRegister(e),this.definition.accountSettings)this.accountSettingsRegistration=e.accountSettings.register({ownerPluginId:this.id,packageName:this.packageName,definitionId:this.definition.id,definition:this.definition.accountSettings});let t=this.definition.daemons?.({config:this.config,state:this.requireState()})??[],n=new Set;for(let r of t){if(n.has(r.id)||r.id==="listener")throw Error(`Message interface "${this.definition.id}" defines daemon "${r.id}" more than once`);if(n.add(r.id),this.hasRequiredDaemon||=r.required,r.forAccounts){if(r.forAccounts!==this.definition.accountSettings)throw Error(`Message interface "${this.definition.id}" account-bound daemon "${r.id}" must reference its attached account settings`);let i=this.accountSettingsRegistration;if(!i)throw Error(`Message interface "${this.definition.id}" account-bound daemon "${r.id}" has no registered account settings`);e.daemons.register(r.id,Wg(r,i,e.accountSettings));continue}e.daemons.register(r.id,Bp(r))}if(this.definition.listen)e.daemons.register("listener",Bp({kind:"rizom-interface-daemon",id:"listener",required:!1,run:({signal:r,health:i})=>this.definition.listen?.({config:this.config,state:this.requireState(),signal:r,health:i,messages:{receiveAuthenticated:(o)=>this.receiveAuthenticated(o,r)}})??Promise.resolve()}))}async onRegistrationComplete(e){if(this.accountSettingsRegistration&&!e.accountSettings.hasBackend())throw Error(`Message interface "${this.definition.id}" account settings require auth-service and an account settings encryption key`)}requiresDaemonStartup(){return this.hasRequiredDaemon}sendMessageToChannel(e){let t=e.channelId,n=this.definition.send;if(!t||!n)return;Promise.resolve().then(()=>n({config:this.config,state:this.requireState(),channel:{id:t},message:IC(e.message)})).catch((r)=>{this.logger.error("Message delivery failed",{error:r})})}async sendMessageWithId(e){if(!e.channelId||!this.definition.send)return;let t=await this.definition.send({config:this.config,state:this.requireState(),channel:{id:e.channelId},message:IC(e.message)});return typeof t==="string"?t:void 0}async editMessage(e){if(!e.channelId||!this.definition.edit)return!1;return await this.definition.edit({config:this.config,state:this.requireState(),channel:{id:e.channelId},messageId:e.messageId,message:IC(e.newMessage)}),!0}supportsMessageEditing(){return this.definition.edit!==void 0}async onShutdown(){this.accountSettingsRegistration=void 0,this.hasRequiredDaemon=!1,this.state=void 0,await super.onShutdown()}requireState(){if(!this.state)throw Error(`Message interface "${this.definition.id}" has not completed setup`);return this.state}async deliver(e){if(!this.definition.deliver)return{status:"failed",failureCode:"delivery_not_supported"};try{let t=this.parseRecipient(e.recipient),n=await this.definition.deliver({config:this.config,state:this.requireState(),recipient:t,message:{text:e.text}});return{status:"sent",...typeof n==="string"?{providerDeliveryId:n}:{}}}catch(t){return this.logger.warn("Outbound channel delivery failed",{error:t}),{status:"failed",failureCode:"delivery_failed"}}}parseRecipient(e){let t=this.definition.channel.recipient.safeParse(e);if(t.success)return t.data;try{let o=this.definition.channel.recipient.safeParse(JSON.parse(e));if(o.success)return o.data}catch{}let n=Reflect.get(this.definition.channel.recipient,"shape"),r=n!==null&&typeof n==="object"?Object.keys(n):[],i=r.length===1?r[0]:void 0;if(i)return this.definition.channel.recipient.parse({[i]:e});return this.definition.channel.recipient.parse(e)}async receiveAuthenticated(e,t){if(!e.sender.id.trim()||!e.channel.id.trim())throw Error("Authenticated messages require sender and channel ids");let n=this.getContext(),r=this.definition.channel.type,i=n.permissions.getUserLevel(r,e.sender.id),o=n.permissions.isAnchor(r,e.sender.id),s=[r,e.channel.id,e.channel.threadId].filter((l)=>l!==void 0).join(":"),c=[];if(e.attachments){let l=await e.attachments();for(let u of l)c.push(await G7(u,t))}this.startProcessingInput(e.channel.id);try{let l=await n.agent.chat(e.text,s,{userPermissionLevel:i,isAnchor:o,interfaceType:r,channelId:e.channel.id,actor:{identity:{kind:"external",externalActorId:zF(r,e.sender.id)},interfaceType:r,role:"user",...e.sender.displayName?{displayName:e.sender.displayName}:{}},source:{channelId:e.channel.id,...e.channel.threadId?{threadId:e.channel.threadId}:{}},...c.length>0?{attachments:c}:{}},t),u=await this.sendMessageWithId({channelId:e.channel.id,message:l.text});if(u){for(let p of l.toolResults??[])if(p.jobId)this.trackAgentResponseForJob(p.jobId,u,e.channel.id)}await this.handleAgentResponseToolStatuses(l,s)}finally{this.endProcessingInput()}}}function jF(e,t,n,r){return new MF(e,t,n,r)}function V7(e){return Object.freeze({kind:"protocol",...e})}function Q7(e){if(!vF.includes(e.method))throw Error(`Unsupported interface route method "${e.method}"`);if(!e.path.startsWith("/"))throw Error(`Interface route path "${e.path}" must be absolute`);return Object.freeze({kind:"rizom-interface-route",...e})}function K7(e){nn(e.id,"Daemon id");let{required:t=!1,...n}=e,r={kind:"rizom-interface-daemon",...n,required:t};return ss(r)}function Y7(e){return os({family:"interface",id:e.id,config:e.config,instantiate:({config:t,package:n,scope:r})=>xF(e,t,n,r(e.id))})}function X7(e){if(nn(e.channel.type,"Channel type"),e.listen&&!e.send)throw Error(`Message interface "${e.id}" must define send when it defines listen`);if(e.edit&&!e.send)throw Error(`Message interface "${e.id}" must define send when it defines edit`);return os({family:"message-interface",id:e.id,config:e.config,instantiate:({config:t,package:n,scope:r})=>jF(e,t,n,r(e.id))})}var RC=a.object({kind:a.string().min(1),id:a.string().min(1)}),NF=a.object({kind:a.literal("text"),filename:a.string().min(1),mediaType:a.string().min(1),content:a.string(),sizeBytes:a.number().nonnegative().optional(),source:RC.optional()}),dX=a.custom((e)=>e instanceof Uint8Array),mX=a.object({kind:a.literal("file"),filename:a.string().min(1),mediaType:a.string().min(1),data:dX,sizeBytes:a.number().nonnegative().optional(),source:RC.optional()}),BF=a.discriminatedUnion("kind",[NF,mX]),fX=a.object({guestExecution:wT.optional(),guestScreening:TT.optional(),userPermissionLevel:a.enum(["admin","trusted","public"]).optional(),isAnchor:a.boolean().optional(),interfaceType:a.string().optional(),channelId:a.string().optional(),channelName:a.string().optional(),actor:Tp.optional(),source:Cp.optional(),attachments:a.array(BF).optional()});var gX=a.object({status:a.enum(["healthy","warning","error","unknown"]),message:a.string().optional(),lastCheck:a.date().optional(),details:a.record(a.string(),a.unknown()).optional()}),_F=a.object({name:a.string(),pluginId:a.string(),status:a.string(),health:gX.optional()});var FF=a.enum(["admin","trusted","public"]),qp=a.object({label:a.string(),url:a.string(),pluginId:a.string(),priority:a.number().default(100),visibility:FF.default("public"),requiresActiveSession:a.boolean().optional()}),kC=a.enum(["human","agent","admin","protocol"]),PC=a.enum(["available","coming-soon","disabled"]),Zp=a.object({id:a.string(),label:a.string(),description:a.string().optional(),href:a.string(),kind:kC,pluginId:a.string(),priority:a.number().default(100),visibility:FF.default("public"),requiresActiveSession:a.boolean().optional(),status:PC.default("available")}),th=a.object({entityType:a.string(),count:a.number()}),AC=a.object({status:a.enum(["operational","degraded"]),reasons:a.array(a.string()),worker:a.object({state:a.enum(["active","missing","stale"]),activeSessions:a.number().int().nonnegative(),staleSessions:a.number().int().nonnegative(),latestHeartbeatAgeMs:a.number().nonnegative().nullable()}),queue:a.object({duePending:a.number().int().nonnegative(),processing:a.number().int().nonnegative(),oldestDuePendingAgeMs:a.number().nonnegative().nullable(),latestClaimAgeMs:a.number().nonnegative().nullable(),stalled:a.boolean()})}),LF=a.object({model:a.string(),version:a.string(),uptime:a.number(),entities:a.number(),entityCounts:a.array(th),embeddings:a.number(),backgroundWork:AC,ai:a.object({model:a.string(),embeddingModel:a.string()}),daemons:a.array(_F),endpoints:a.array(qp),interactions:a.array(Zp)});var hX=a.object({status:a.enum(["healthy","warning","error","unknown"]),message:a.string().optional(),lastCheck:a.string().optional(),details:a.record(a.string(),a.unknown()).optional()}),yX=a.object({name:a.string(),pluginId:a.string(),status:a.string(),health:hX.optional()}),bX=a.object({model:a.string(),version:a.string(),uptime:a.number(),entities:a.number(),entityCounts:a.array(th),embeddings:a.number(),ai:a.object({model:a.string(),embeddingModel:a.string()}),daemons:a.array(yX),endpoints:a.array(qp),interactions:a.array(Zp)});var nh=a.object({name:a.string().min(1),status:a.enum(["healthy","degraded","unhealthy"]),message:a.string().optional(),details:a.record(a.string(),a.unknown()).optional()}),qF={total:a.number().int().nonnegative(),active:a.number().int().nonnegative(),stale:a.number().int().nonnegative(),latestHeartbeatAgeMs:a.number().nonnegative().nullable()},ZF=a.object({totals:a.object({pending:a.number().int().nonnegative(),processing:a.number().int().nonnegative(),completed:a.number().int().nonnegative(),failed:a.number().int().nonnegative()}),byType:a.array(a.object({type:a.string().min(1),status:a.enum(["pending","processing","completed","failed"]),count:a.number().int().nonnegative()})),oldestPendingAgeMs:a.number().nonnegative().nullable(),duePending:a.number().int().nonnegative(),oldestDuePendingAgeMs:a.number().nonnegative().nullable(),latestClaimAgeMs:a.number().nonnegative().nullable(),oldestProcessingAgeMs:a.number().nonnegative().nullable(),staleLeaseCount:a.number().int().nonnegative(),workerSessions:a.object(qF)}),$F=a.object({memory:a.object({rssBytes:a.number().int().nonnegative(),heapUsedBytes:a.number().int().nonnegative(),heapTotalBytes:a.number().int().nonnegative()}),fileDescriptors:a.number().int().nonnegative().nullable(),processes:a.object({total:a.number().int().nonnegative().nullable(),zombies:a.number().int().nonnegative().nullable()}),queue:ZF.nullable(),projection:a.object({initialized:a.boolean(),trackedRoots:a.number().int().nonnegative(),openCircuits:a.array(a.object({projectionId:a.string().min(1),reason:a.string().min(1),openedAt:a.number().int().nonnegative(),expiresAt:a.number().int().nonnegative()}))}),worker:a.object(qF)}),SX=a.object({status:a.enum(["ready","not_ready"]),operationalStatus:a.enum(["operational","degraded"]),checkedAt:a.iso.datetime(),checks:a.array(nh),resources:$F});var rh=a.object({success:a.boolean(),data:a.unknown().optional(),error:a.string().optional()}),ih=a.object({id:a.string().min(1),timestamp:a.string(),type:a.string().min(1),source:a.string().min(1),target:a.string().optional(),metadata:a.record(a.string(),a.unknown()).optional()});var vX=a.object({id:a.string().min(1),requestId:a.string().min(1),success:a.boolean(),data:a.unknown().optional(),error:a.object({message:a.string(),code:a.string().optional()}).optional(),timestamp:a.string().datetime()});function JF(e){return{...e,...e.source!==void 0&&{source:UF(e.source)},...e.target!==void 0&&{target:UF(e.target)}}}function UF(e){if(e instanceof RegExp)return e;if(!e.includes("*"))return e;let t=e.split("*").map((n)=>n.replace(/[.+?^${}()|[\]\\]/g,"\\$&")).join(".*");return new RegExp(`^${t}$`)}function HF(e,t){if(!t)return!0;if(!WF(e.source,t.source))return!1;if(!WF(e.target,t.target,!0))return!1;if(!wX(e.metadata,t.metadata))return!1;return t.predicate?t.predicate(e):!0}function WF(e,t,n=!1){if(!t)return!0;if(n&&!e)return!1;return TX(e,t)}function wX(e,t){if(!t)return!0;if(!e)return!1;return Object.entries(t).every(([n,r])=>e[n]===r)}function TX(e,t){if(!e)return!1;if(t instanceof RegExp){t.lastIndex=0;let n=t.test(e);return t.lastIndex=0,n}return e===t}var CX=a.union([a.object({noop:a.literal(!0)}),rh]);function GF(e){let t=CX.safeParse(e);if(!t.success)throw Error("Invalid message response format");return t.data}function QF(e,t,n,r,i){return{id:KF("msg"),type:e,timestamp:YF(),source:n,target:r,metadata:i,payload:t}}function oh(e,t){let n=GF(t);if("noop"in n)return VF(e,!0);return VF(e,n.success,n.data,n.error)}function OC(e,t){if(t?.success)return{success:!0,data:t.data};return{success:!1,error:t?.error?.message??`No handler found for message type: ${e}`}}function VF(e,t,n,r){return{id:KF("resp"),requestId:e,timestamp:YF(),success:t,data:n,error:r?{message:r}:void 0}}function KF(e){return`${e}-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}function YF(){return new Date().toISOString()}class DC{handlers=new Map;add(e,t,n){let r=this.createHandlerEntry(t,n);return this.getOrCreateHandlers(e).add(r),r}remove(e,t){let n=this.handlers.get(e);if(!n)return!1;let r=n.delete(t);return this.deleteEmptyHandlerSet(e,n),r}removeHandler(e,t){let n=this.handlers.get(e);if(!n)return;for(let r of Array.from(n))if(r.originalHandler===t)n.delete(r);this.deleteEmptyHandlerSet(e,n)}getMatchingHandlers(e,t){let n=this.handlers.get(e);if(!n||n.size===0)return;return{entries:Array.from(n).filter((r)=>HF(t,r.filter)),totalHandlers:n.size}}hasHandlers(e){let t=this.handlers.get(e);return t!==void 0&&t.size>0}clearHandlers(e){return this.handlers.delete(e)}clearAllHandlers(){this.handlers.clear()}getHandlerCount(e){return this.handlers.get(e)?.size??0}getTargetedHandlerCount(e,t){let n=this.handlers.get(e);if(!n)return 0;return Array.from(n).filter((r)=>r.filter?.target===t).length}createHandlerEntry(e,t){let n={handler:this.wrapHandler(e),originalHandler:e};return t?{...n,filter:JF(t)}:n}wrapHandler(e){return async(t)=>{let r=await e(t);return oh(t.id,r)}}getOrCreateHandlers(e){let t=this.handlers.get(e);if(!t)t=new Set,this.handlers.set(e,t);return t}deleteEmptyHandlerSet(e,t){if(t.size===0)this.handlers.delete(e)}}async function XF(e,t,n){return await Promise.all(t.map((r)=>zC(r,e,n))),null}async function eL(e,t,n){for(let r of t){let i=await zC(r,e,n);if(i)return i}return null}async function tL(e,t,n){return(await Promise.all(t.map((i)=>zC(i,e,n)))).map((i)=>i??oh(e.id,{success:!1,error:`Message handler failed for message type: ${e.type}`}))}async function zC(e,t,n){try{return await e.handler(t)}catch(r){return n.error(`Error in message handler for ${t.type}`,r),null}}class MC{registry;logger;constructor(e,t){this.registry=e,this.logger=t}async publish(e,t){let n=this.resolveMatchingHandlers(e);if(!n)return null;return t===!0?XF(e,n,this.logger):eL(e,n,this.logger)}async collect(e){let t=this.resolveMatchingHandlers(e);if(!t)return[];return tL(e,t,this.logger)}resolveMatchingHandlers(e){if(typeof e!=="object"||!e.type||!e.id){this.logger.error("Invalid message structure - missing required fields 'id' or 'type'");return}let{type:t}=e;this.logger.debug(`Publishing message of type: ${t}`,{source:e.source,target:e.target,hasMetadata:!!e.metadata});let n=this.registry.getMatchingHandlers(t,e);if(!n){this.logger.debug(`No handlers found for message type: ${t}`);return}if(n.entries.length===0){this.logger.debug(`No matching handlers for message type: ${t}`,{totalHandlers:n.totalHandlers,target:e.target});return}return n.entries}}var EX=a.looseObject({issues:a.array(a.looseObject({message:a.string()})).optional()});function jC(e,t){try{return{valid:!0,data:t.parse(e)}}catch(n){let r=EX.safeParse(n);if(r.success)return{valid:!1,error:r.data.issues?.[0]?.message??"Validation failed"};return{valid:!1,error:"Unknown validation error"}}}class NC{registry=new DC;publisher;logger;operationContext;static createFresh(e,t){return new NC(e,t)}constructor(e,t){this.logger=e,this.operationContext=t??is.createFresh(),this.publisher=new MC(this.registry,e)}subscribe(e,t,n){let r=this.registry.add(e,t,n);return this.logger.debug(`Registered handler for message type: ${e}`,{hasFilter:!!n,filterTarget:n?.target}),()=>{this.registry.remove(e,r)}}async send(e){let t=await this.dispatchWithProvenance(e,(n)=>this.publisher.publish(n,e.broadcast));return OC(e.type,t)}async collect(e){return(await this.dispatchWithProvenance(e,(n)=>this.publisher.collect(n))).map((n)=>OC(e.type,n))}dispatchWithProvenance(e,t){let{type:n,payload:r,sender:i,target:o,metadata:s}=e,c=QF(n,r,i,o,s),l=this.operationContext.current(),u=s?.provenance,p=u===void 0?l?.provenance:Di.parse(u),m=Di.parse(p?{...p,causationId:l?.operationId??p.causationId}:{rootJobId:c.id,causationId:c.id,projectionLineage:[],derivationDepth:0}),g={...c,metadata:{...s,provenance:m}};return this.operationContext.run(m,g.id,()=>t(g))}validateMessage(e,t){return jC(e,t)}hasHandlers(e){return this.registry.hasHandlers(e)}unsubscribe(e,t){this.registry.removeHandler(e,t)}clearHandlers(e){if(this.registry.clearHandlers(e))this.logger.info(`Cleared all handlers for message type: ${e}`)}clearAllHandlers(){this.registry.clearAllHandlers(),this.logger.info("Cleared all message handlers")}getHandlerCount(e){return this.registry.getHandlerCount(e)}getTargetedHandlerCount(e,t){return this.registry.getTargetedHandlerCount(e,t)}}var IX=a.union([a.object({success:a.boolean(),data:a.unknown().optional(),error:a.string().optional()}),a.object({noop:a.literal(!0)})]);async function RX(e,t){let n=await e.searchWithDistances({query:t.query,types:[t.entityType],maxDistance:t.maxDistance}),i=(await Promise.all(n.filter((c)=>c.entityType===t.entityType&&c.distance<=t.maxDistance&&!t.excludeIds?.includes(c.entityId)).map((c)=>e.getEntity({entityType:t.entityType,id:c.entityId,visibilityScope:t.visibility})))).filter((c)=>c?.visibility===t.visibility),o=t.confirm;if(!o)return i[0];let s=async(c)=>{let l=i[c];if(!l)return;return await o(l)?l:s(c+1)};return s(0)}async function kX(e,t={}){let n=t.pollMs??100,r=Date.now()+(t.timeoutMs??60000),i=async()=>{if((await e.getActiveJobs([sr.embedding])).length===0)return;if(Date.now()>=r)throw Error("Embeddings did not drain before the deadline");return await new Promise((s)=>setTimeout(s,n)),i()};return i()}async function PX({context:e,targetType:t,entitySchema:n,desired:r,getId:i,toEntityInput:o,equals:s,deleteStale:c=!1,outputVisibility:l="public",concurrency:u=1,logger:p}){let m=new Map;for(let j of r)m.set(i(j),j);let g=(await e.entityService.listEntities({entityType:t,options:{filter:{visibilityScope:l}}},n)).filter((j)=>j.visibility===l),f=new Map(g.map((j)=>[j.id,j])),v=0,w=0,k=0,P=0,B=Math.max(1,u);if(c){let j=g.filter((Y)=>!m.has(Y.id));await nL(j,B,async(Y)=>{await e.entityService.deleteEntity({entityType:t,id:Y.id}),k++})}return await nL(Array.from(m),B,async([j,Y])=>{let G=f.get(j),I={...o(Y,j),visibility:l};try{if(!G){await e.entityService.createEntity({entity:I}),v++;return}if(s?.(G,Y)??!1){P++;return}await e.entityService.updateEntity({entity:{...G,...I,id:j,entityType:t,visibility:l}}),w++}catch(ee){p?.error("Failed to reconcile entity",{targetType:t,id:j,error:Be(ee)})}}),{created:v,updated:w,deleted:k,skipped:P}}async function nL(e,t,n){let r=await ne.runPromiseExit(ne.forEach(e,(i)=>ne.tryPromise({try:()=>n(i),catch:(o)=>o}),{concurrency:t,discard:!0}));if(bt.isFailure(r))throw Xn.squash(r.cause)}async function AX({entityService:e,entity:t,options:n}){let r=await e.getEntity({entityType:t.entityType,id:t.id,visibilityScope:Ii("pending entity identity check")});if(r)return{entityId:r.id,created:!1,existingEntity:r};let i=await e.createEntity({entity:t,...n?{options:n}:{}});return{entityId:i.entityId,created:!0,mutation:i}}async function OX({entityService:e,entity:t,expectedContentHash:n}){let r=await e.getEntity({entityType:t.entityType,id:t.id,visibilityScope:Ii("pending entity completion")});if(r){let o={...r,content:t.content,metadata:t.metadata,updated:t.updated??new Date().toISOString()},s=await e.updateEntity({entity:o,...n!==void 0?{options:{expectedContentHash:n}}:{}});return{entityId:s.entityId,updated:!0,mutation:s,previousEntity:r}}if(n!==void 0)return{entityId:t.id,updated:!1,mutation:{entityId:t.id,jobId:"",skipped:!0,skipReason:"content-conflict"}};let i=await e.createEntity({entity:t});return{entityId:i.entityId,updated:!1,mutation:i}}async function DX({entityService:e,entityType:t,id:n,error:r,content:i}){let o=await e.getEntity({entityType:t,id:n,visibilityScope:Ii("pending entity failure")});if(!o)return{found:!1};let s={...o,content:i??o.content,metadata:{...o.metadata,status:"failed",processingError:r},updated:new Date().toISOString()},c=await e.updateEntity({entity:s});return{found:!0,entityId:c.entityId,mutation:c,previousEntity:o}}var rL=a.union([a.string(),a.number().finite(),a.boolean(),a.null()]);function zX(e,t){return e.definition===t}function MX(e,t){return Buffer.from(JSON.stringify([e,t])).toString("base64url")}function sh(e,t){return{packageName:e.packageName,definitionId:e.definitionId,actorId:t}}function jX(e){let t=e.replaceAll(/([a-z0-9])([A-Z])/g,"$1 $2").replaceAll(/[-_]+/g," ").trim();return t?`${t[0]?.toUpperCase()??""}${t.slice(1)}`:e}function BC(e){return e.schema.shape}function iL(e){let t=e!==null&&typeof e==="object"?Reflect.get(e,"safeParse"):void 0;if(typeof t!=="function")return{success:!1};let n=t.call(e,void 0);if(n!==null&&typeof n==="object"&&Reflect.get(n,"success")===!0)return{success:!0,data:Reflect.get(n,"data")};return{success:!1}}function NX(e){let t=iL(e);if(!t.success)return;let n=rL.safeParse(t.data);return n.success?n.data:void 0}function BX(e,t){let n={};for(let r of Object.keys(BC(e))){let i=Reflect.get(t,r);if(i!==void 0)n[r]=rL.parse(i)}return Object.freeze(n)}function _X(e,t){let n=Object.entries(e),r=Object.entries(t);return n.length===r.length&&n.every(([i,o])=>Object.hasOwn(t,i)&&Object.is(o,t[i]))}class oL{registrations=new Map;listeners=new Map;mutationTails=new Map;backend;register(e){if(!e.ownerPluginId.trim())throw Error("Account settings owner plugin id must not be empty");if(!e.packageName.trim())throw Error("Account settings package name must not be empty");if(!e.definitionId.trim())throw Error("Account settings definition id must not be empty");let t=MX(e.packageName,e.definitionId),n=this.registrations.get(t);if(n){if(n.ownerPluginId===e.ownerPluginId&&zX(n,e.definition))return n;throw Error(`Account settings definition "${e.packageName}:${e.definitionId}" is already registered`)}let r=Object.freeze({id:t,...e});return this.registrations.set(t,r),r}unregister(e){if(this.registrations.get(e.id)!==e)return;this.registrations.delete(e.id),this.listeners.delete(e.id)}bindBackend(e){if(this.backend&&this.backend!==e)throw Error("Account settings backend is already bound");this.backend=e;for(let n of this.registrations.values())this.notify(n.id);let t=!0;return()=>{if(!t)return;if(t=!1,this.backend===e)this.backend=void 0}}hasRegistrations(){return this.registrations.size>0}hasBackend(){return this.backend!==void 0}listRegistrations(){return[...this.registrations.values()].sort((e,t)=>e.id.localeCompare(t.id))}async listForms(e){let t=[];for(let n of this.listRegistrations()){let r=await this.requireBackend(n).read(sh(n,e));t.push(this.formFor(n,r))}return t}async save(e,t,n){let r=this.requireRegistration(e);return this.serializeMutation(`${r.id}:${t}`,async()=>{let i=this.requireBackend(r),o=sh(r,t),s=await i.read(o),c=BC(r.definition),l=Object.keys(n).find((f)=>!Object.hasOwn(c,f));if(l)throw Error(`Account settings field "${l}" is not declared by "${r.packageName}:${r.definitionId}"`);let u={};for(let f of Object.keys(c)){let v=r.definition.fields[f]?.secret===!0;if(!Object.hasOwn(n,f)){if(v&&s?.values[f]!==void 0)u[f]=s.values[f];continue}let w=n[f];if(v&&(w===""||w===void 0)){if(s?.values[f]!==void 0)u[f]=s.values[f];continue}if(w!==void 0)u[f]=w}let p=r.definition.schema.parse(u),m=BX(r.definition,p),g=s&&_X(s.values,m)?s:await i.write(o,m);if(g!==s)this.notify(r.id);return this.formFor(r,g)})}async delete(e,t){let n=this.requireRegistration(e);return this.serializeMutation(`${n.id}:${t}`,async()=>{let r=await this.requireBackend(n).delete(sh(n,t));if(r)this.notify(n.id);return r})}async deleteActor(e){let t=this.backend,n=t?await t.deleteActor(e):0;return this.refreshActor(e),n}accountDeleted(e){this.refreshActor(e)}refreshActor(e){for(let t of this.registrations.values())this.notify(t.id)}async getForActor(e,t){this.requireAttached(e);let n=await this.requireBackend(e).read(sh(e,t));return n?ss(co(e.definition.schema,n.values)):null}async listConfigured(e){return this.requireAttached(e),(await this.requireBackend(e).list({packageName:e.packageName,definitionId:e.definitionId})).map((n)=>Object.freeze({id:n.actorId,settings:ss(co(e.definition.schema,n.values)),revision:n.revision}))}subscribe(e,t){this.requireAttached(e);let n=this.listeners.get(e.id)??new Set;return n.add(t),this.listeners.set(e.id,n),()=>{if(n.delete(t),n.size===0)this.listeners.delete(e.id)}}formFor(e,t){let n=Object.entries(BC(e.definition)).map(([r,i])=>{let o=e.definition.fields[r],s=o?.secret===!0,c=t?.values[r],l=c!==void 0?c:NX(i);return Object.freeze({name:r,label:o?.label??jX(r),control:o?.control??"text",secret:s,required:!iL(i).success,...s?{set:c!==void 0}:l!==void 0?{value:l}:{}})});return Object.freeze({id:e.id,title:e.definition.title,...e.definition.description?{description:e.definition.description}:{},configured:t!==null,revision:t?.revision??null,fields:Object.freeze(n)})}requireRegistration(e){let t=this.registrations.get(e);if(!t)throw Error("Account settings definition not found");return t}requireAttached(e){if(this.registrations.get(e.id)!==e)throw Error("Account settings definition is not registered")}requireBackend(e){if(!this.backend)throw Error(`Account settings runtime is unavailable for "${e.packageName}:${e.definitionId}"`);return this.backend}notify(e){for(let t of this.listeners.get(e)??[])t()}serializeMutation(e,t){let r=(this.mutationTails.get(e)??Promise.resolve()).catch(()=>{return}).then(t),i=r.then(()=>{return},()=>{return});return this.mutationTails.set(e,i),i.finally(()=>{if(this.mutationTails.get(e)===i)this.mutationTails.delete(e)}),r}}var cL=/^[a-z][a-z0-9-]*$/,FX=a.strictObject({source:a.string().min(1).max(500),flags:a.string().regex(/^[imu]*$/).optional()}),LX=a.strictObject({type:a.string().trim().regex(cL),displayName:a.string().trim().min(1).max(100),subjectLabel:a.string().trim().min(1).max(100),subjectPattern:FX.optional(),manualDelivery:a.boolean().optional()});class lL{descriptorRegistrations=new Map;providerRegistrations=new Map;activeDescriptors=new Map;activeProviders=new Map;finalized=!1;registerDescriptor(e,t){this.assertRegistrationOpen();let n=sL(e),r=LX.parse(t);if(r.subjectPattern)new RegExp(r.subjectPattern.source,r.subjectPattern.flags);let i=Object.freeze({type:r.type,displayName:r.displayName,subjectLabel:r.subjectLabel,...r.subjectPattern?{subjectPattern:Object.freeze({...r.subjectPattern})}:{},...r.manualDelivery!==void 0?{manualDelivery:r.manualDelivery}:{}}),o=this.descriptorRegistrations.get(r.type)??[];o.push({pluginId:n,descriptor:i}),this.descriptorRegistrations.set(r.type,o)}registerDeliveryProvider(e,t){this.assertRegistrationOpen();let n=sL(e),r=_C(t.channelType);if(typeof t.isAvailable!=="function"||typeof t.send!=="function")throw Error("Channel delivery provider operations are required");let i=Object.freeze({channelType:r,isAvailable:t.isAvailable.bind(t),send:t.send.bind(t)}),o=this.providerRegistrations.get(r)??[];o.push({pluginId:n,provider:i}),this.providerRegistrations.set(r,o)}unregisterPlugin(e){let t=e.trim();for(let[n,r]of this.descriptorRegistrations){let i=r.filter((o)=>o.pluginId!==t);if(i.length===0)this.descriptorRegistrations.delete(n);else this.descriptorRegistrations.set(n,i)}for(let[n,r]of this.providerRegistrations){let i=r.filter((o)=>o.pluginId!==t);if(i.length===0)this.providerRegistrations.delete(n);else this.providerRegistrations.set(n,i)}if(this.finalized)this.rebuildActiveState(!1)}finalize(){if(this.finalized)return;this.rebuildActiveState(!0),this.finalized=!0}listDescriptors(){return this.assertFinalized(),[...this.activeDescriptors.values()].sort((e,t)=>e.type.localeCompare(t.type))}getDescriptor(e){return this.assertFinalized(),this.activeDescriptors.get(_C(e))}getDeliveryProvider(e){return this.assertFinalized(),this.activeProviders.get(_C(e))}isFinalized(){return this.finalized}rebuildActiveState(e){let t=new Map,n=new Map;for(let[r,i]of this.descriptorRegistrations){if(i.length>1){if(!e)continue;throw aL("Channel",r,i)}let o=i[0]?.descriptor;if(o)t.set(r,o)}for(let[r,i]of this.providerRegistrations){if(i.length>1){if(!e)continue;throw aL("Delivery provider for channel",r,i)}if(!t.has(r)){if(e)throw Error(`Delivery provider for channel "${r}" has no descriptor`);continue}let o=this.descriptorRegistrations.get(r)?.[0]?.pluginId,s=i[0]?.pluginId;if(o!==s){if(e)throw Error(`Delivery provider for channel "${r}" must be registered by descriptor owner "${o??"unknown"}", not "${s??"unknown"}"`);continue}let c=i[0]?.provider;if(c)n.set(r,c)}this.activeDescriptors=t,this.activeProviders=n}assertRegistrationOpen(){if(this.finalized)throw Error("Channel registration is closed")}assertFinalized(){if(!this.finalized)throw Error("Channel registry is not finalized")}}function sL(e){let t=e.trim();if(!t)throw Error("Channel registration plugin id is required");return t}function _C(e){let t=e.trim();if(!cL.test(t))throw Error(`Invalid channel type: ${e}`);return t}function aL(e,t,n){let r=n.map((i)=>i.pluginId).sort().join(", ");return Error(`${e} "${t}" is registered by multiple plugins: ${r}`)}var uL=/[\s\\\p{Cc}\p{Cf}]/u;function FC(e){if(typeof e!=="string"||e!==e.trim()||e.length===0||e.length>2048||!e.startsWith("/")||e.startsWith("//")||uL.test(e))return;try{let t=new URL(e,"https://brains.invalid");if(t.origin!=="https://brains.invalid")return;let n=`${t.pathname}${t.search}${t.hash}`;return n.length>0&&n.length<=2048&&n.startsWith("/")&&!n.startsWith("//")&&!uL.test(n)?n:void 0}catch{return}}var qX=/^[a-z][a-z0-9-]*$/,Nn=a.string().trim().regex(qX),ah=a.string().trim().min(1).max(300),pL=a.enum(["high","normal"]),LC=Nn.max(40),qC=Nn.max(40),dL=a.strictObject({value:qC,label:a.string().trim().min(1).max(100)}),mL=a.strictObject({key:LC,label:a.string().trim().min(1).max(100),values:a.array(dL).min(1).max(20)}).superRefine((e,t)=>{let n=new Set;for(let r of e.values){if(n.has(r.value))t.addIssue({code:"custom",path:["values"],message:`Duplicate inbox facet value: ${r.value}`});n.add(r.value)}}),fL=a.array(mL).max(8).superRefine((e,t)=>{let n=new Set;for(let r of e){if(n.has(r.key))t.addIssue({code:"custom",path:[],message:`Duplicate inbox facet key: ${r.key}`});n.add(r.key)}}),ZC=a.record(LC,qC).refine((e)=>Object.keys(e).length<=8,{message:"Inbox items may declare at most eight facets"}),ZX=a.string().regex(/^[a-z][A-Za-z0-9]{0,39}$/),$X=a.string().min(1).max(300).refine((e)=>!/[\p{Cc}\p{Cf}]/u.test(e),{message:"Inbox follow-up context values cannot contain controls"}),UX=a.strictObject({kind:Nn,context:a.record(ZX,$X).refine((e)=>Object.keys(e).length<=8,{message:"Inbox follow-up context may contain at most eight entries"})}),WX=a.array(UX).max(8).superRefine((e,t)=>{let n=new Set;for(let r of e){if(n.has(r.kind))t.addIssue({code:"custom",path:[],message:`Duplicate inbox follow-up kind: ${r.kind}`});n.add(r.kind)}}),gL=a.strictObject({id:Nn,label:a.string().trim().min(1).max(100),confirm:a.boolean().optional()}),hL=a.strictObject({entityType:a.string().trim().min(1).max(100),entityId:a.string().trim().min(1).max(300)}),yL=a.strictObject({label:a.string().trim().min(1).max(300),personId:a.string().trim().min(1).max(200).optional()}),$p=a.strictObject({id:ah,title:a.string().trim().min(1).max(160),summary:a.string().trim().min(1).max(1000).optional(),contact:yL.optional(),threadOrdinal:a.number().int().positive().max(Number.MAX_SAFE_INTEGER).optional(),receivedAt:a.iso.datetime(),urgency:pL,entityRef:hL.optional(),facets:ZC.optional(),followUps:WX.optional(),actions:a.array(gL).max(10)}).superRefine((e,t)=>{let n=new Set;for(let r of e.actions){if(n.has(r.id))t.addIssue({code:"custom",path:["actions"],message:`Duplicate inbox action id: ${r.id}`});n.add(r.id)}}),bL=a.array($p).max(1000),hl=a.strictObject({permissionLevel:a.enum(["admin","trusted","public"])}),SL=a.strictObject({kind:a.literal("plain"),text:a.string().max(1e5),truncated:a.boolean()}),JX=a.strictObject({sourceId:Nn,displayName:a.string().trim().min(1).max(100)}),xL=a.strictObject({sourceId:Nn,displayName:a.string().trim().min(1).max(100),facets:fL.optional()});class vL{registrations=new Map;activeSources=new Map;finalized=!1;registerSource(e,t){this.assertRegistrationOpen();let n=KX(e),r=xL.parse({sourceId:t.sourceId,displayName:t.displayName,...t.facets?{facets:t.facets}:{}});if(typeof t.list!=="function"||typeof t.act!=="function")throw Error("Inbox source operations are required");let i=HX(r,r.facets??[],t),o=this.registrations.get(r.sourceId)??[];o.push({pluginId:n,source:i}),this.registrations.set(r.sourceId,o)}unregisterPlugin(e){let t=e.trim();for(let[n,r]of this.registrations){let i=r.filter((o)=>o.pluginId!==t);if(i.length===0)this.registrations.delete(n);else this.registrations.set(n,i)}if(this.finalized)this.rebuildActiveState(!1)}finalize(){if(this.finalized)return;this.rebuildActiveState(!0),this.finalized=!0}listSources(){return this.assertFinalized(),[...this.activeSources.values()].sort((e,t)=>e.sourceId.localeCompare(t.sourceId))}getSource(e){return this.assertFinalized(),this.activeSources.get(YX(e))}isFinalized(){return this.finalized}rebuildActiveState(e){let t=new Map;for(let[n,r]of this.registrations){if(r.length>1){if(!e)continue;let o=r.map((s)=>s.pluginId).sort().join(", ");throw Error(`Inbox source "${n}" is registered by multiple plugins: ${o}`)}let i=r[0]?.source;if(i)t.set(n,i)}this.activeSources=t}assertRegistrationOpen(){if(this.finalized)throw Error("Inbox registration is closed")}assertFinalized(){if(!this.finalized)throw Error("Inbox registry is not finalized")}}function HX(e,t,n){let r=VX(t),i=QX(r);return Object.freeze({...e,...r.length>0?{facets:r}:{},list:async()=>{let o=bL.parse(await n.list());for(let s of o)if(s.facets!==void 0)i.parse(s.facets);return o.map(GX)},...n.resolveDetail?{resolveDetail:async(o,s,c)=>{if(!(c instanceof AbortSignal))throw Error("Inbox detail signal is invalid");return SL.parse(await n.resolveDetail?.(ah.parse(o),hl.parse(s),c))}}:{},act:async(o,s,c)=>{let l=ah.parse(o),u=Nn.parse(s);await n.act(l,u,hl.parse(c))}})}function GX(e){let t=e.actions.map((r)=>Object.freeze({...r})),n=e.followUps?.map((r)=>Object.freeze({...r,context:Object.freeze({...r.context})}));if(Object.freeze(t),n)Object.freeze(n);return Object.freeze({...e,...e.contact?{contact:Object.freeze({...e.contact})}:{},...e.entityRef?{entityRef:Object.freeze({...e.entityRef})}:{},...e.facets?{facets:Object.freeze({...e.facets})}:{},...n?{followUps:n}:{},actions:t})}function VX(e){let t=e.map((n)=>{let r=n.values.map((i)=>Object.freeze({...i}));return Object.freeze(r),Object.freeze({...n,values:r})});return Object.freeze(t),t}function QX(e){let t=new Map(e.map((n)=>[n.key,new Set(n.values.map((r)=>r.value))]));return ZC.superRefine((n,r)=>{for(let[i,o]of Object.entries(n))if(!t.get(i)?.has(o))r.addIssue({code:"custom",path:[i],message:`Undeclared inbox facet value: ${i}=${o}`})})}function KX(e){let t=e.trim();if(!t)throw Error("Inbox registration plugin id is required");return t}function YX(e){return Nn.parse(e)}var XX=2048,eee=8192,tee=a.strictObject({kind:Nn,label:a.string().trim().min(1).max(100),priority:a.number().int().min(0).max(1000),mode:a.enum(["universal","declared"]),permissionLevel:nl,contextSchema:a.custom((e)=>typeof e==="object"&&e!==null&&("safeParse"in e)&&typeof e.safeParse==="function").optional(),applies:a.custom((e)=>typeof e==="function"),resolve:a.custom((e)=>typeof e==="function")}).superRefine((e,t)=>{if(e.mode==="declared"&&e.contextSchema===void 0)t.addIssue({code:"custom",path:["contextSchema"],message:"Declared inbox follow-up kinds require a context schema"});if(e.mode==="universal"&&e.contextSchema!==void 0)t.addIssue({code:"custom",path:["contextSchema"],message:"Universal inbox follow-up kinds cannot accept context"})});var nee=a.strictObject({href:a.string(),state:a.unknown().optional()}),wL=a.record(a.string(),a.json()).refine((e)=>new TextEncoder().encode(JSON.stringify(e)).byteLength<=eee,{message:"Inbox follow-up state is too large"}),ree=a.strictObject({kind:Nn,label:a.string().trim().min(1).max(100),href:a.string().min(1).max(XX).refine((e)=>FC(e)===e),state:wL.optional()});class TL{registrations=new Map;activeKinds=new Map;finalized=!1;logger;constructor(e){this.logger=e}registerKind(e,t){this.assertRegistrationOpen();let n=aee(e),r=Object.freeze(tee.parse(t)),i=this.registrations.get(r.kind)??[];i.push({pluginId:n,kind:r}),this.registrations.set(r.kind,i)}unregisterPlugin(e){let t=e.trim();for(let[n,r]of this.registrations){let i=r.filter((o)=>o.pluginId!==t);if(i.length===0)this.registrations.delete(n);else this.registrations.set(n,i)}if(this.finalized)this.rebuildActiveState(!1)}finalize(){if(this.finalized)return;this.rebuildActiveState(!0),this.finalized=!0}listKinds(){return this.assertFinalized(),[...this.activeKinds.values()].sort(see)}getKind(e){return this.assertFinalized(),this.activeKinds.get(Nn.parse(e))}async resolve(e){this.assertFinalized();let t=Object.freeze({sourceId:Nn.parse(e.sourceId),item:$p.parse(e.item),actor:hl.parse(e.actor)}),n=new Map((t.item.followUps??[]).map((s)=>[s.kind,s.context])),r=this.listKinds(),i=await Promise.all(r.filter((s)=>s.mode==="declared").map(async(s)=>{let c=n.get(s.kind);if(!c||!s.contextSchema)return;let l=s.contextSchema.safeParse(c);if(!l.success)return;return $C(s,Object.freeze({...t,context:l.data}),this.logger)})),o=await Promise.all(r.filter((s)=>s.mode==="universal").map(async(s)=>$C(s,t,this.logger)));return[...i,...o].filter((s)=>s!==void 0)}async resolveUniversal(e){this.assertFinalized();let t=Object.freeze({sourceId:Nn.parse(e.sourceId),item:$p.parse(e.item),actor:hl.parse(e.actor)});return(await Promise.all(this.listKinds().filter((r)=>r.mode==="universal").map(async(r)=>$C(r,t,this.logger)))).filter((r)=>r!==void 0)}isFinalized(){return this.finalized}rebuildActiveState(e){let t=new Map;for(let[n,r]of this.registrations){if(r.length>1){if(!e)continue;let o=r.map((s)=>s.pluginId).sort().join(", ");throw Error(`Inbox follow-up kind "${n}" is registered by multiple plugins: ${o}`)}let i=r[0]?.kind;if(i)t.set(n,i)}this.activeKinds=t}assertRegistrationOpen(){if(this.finalized)throw Error("Inbox follow-up registration is closed")}assertFinalized(){if(!this.finalized)throw Error("Inbox follow-up registry is not finalized")}}async function $C(e,t,n){if(!ba.hasPermission(t.actor.permissionLevel,e.permissionLevel))return;try{if(!await e.applies(t))return;let r=await e.resolve(t);if(!r)return;let i=iee(r);return Object.freeze({kind:e.kind,label:e.label,href:i.href,...i.state?{state:i.state}:{}})}catch(r){n?.debug("Inbox follow-up kind did not resolve",{kind:e.kind,sourceId:t.sourceId,error:r});return}}function iee(e){let t=nee.parse(e),n=FC(t.href);if(!n)throw Error("Invalid inbox follow-up target");let r=t.state===void 0?void 0:oee(t.state);return{href:n,...r?{state:r}:{}}}function oee(e){return Object.freeze(wL.parse(e))}function see(e,t){return e.priority-t.priority||e.kind.localeCompare(t.kind)}function aee(e){let t=e.trim();if(!t)throw Error("Inbox follow-up registration plugin id is required");return t}var cee={pluginsRegistered:"system:plugins:registered",initialSyncCompleted:"sync:initial:completed",startupContentSettled:"system:startup-content:settled",shellReady:"system:shell:ready",identityChanged:"system:identity:changed"},lee=a.object({initialSyncPending:a.boolean()});function uee(e){return a.discriminatedUnion("success",[a.strictObject({success:a.literal(!0),data:e}),a.strictObject({success:a.literal(!1),error:a.string().min(1)})])}function pee(e){return{name:e.name,description:e.description,inputSchema:e.inputSchema,outputSchema:e.outputSchema,visibility:"admin",sideEffects:"none",handler:async(t,n)=>{if(n.userPermissionLevel!=="admin")return{success:!1,error:e.errors.permission};let r=e.filterSchema.safeParse(t);if(!r.success)return{success:!1,error:e.errors.invalidFilter};try{return{success:!0,data:await e.list(r.data)}}catch{return{success:!1,error:e.errors.failed}}}}}function dee(e){return{register:(t,n,r)=>e.register(t,n,r),resolve:(t)=>e.resolve(t),hasProvider:(t,n)=>e.has(t,n),getProviderMetadata:(t,n)=>e.getMetadata(t,n)}}class UC{providers=new Map;static createFresh(){return new UC}constructor(){}register(e,t,n){let r=this.getOrCreateSourceProviders(e),i={provider:n};return r.set(t,i),()=>{if(this.providers.get(e)?.get(t)===i)this.unregister(e,t)}}async resolve(e){let t=this.get(e.sourceEntityType,e.attachmentType);if(!t)return;return t.resolve(e)}get(e,t){return this.providers.get(e)?.get(t)?.provider}has(e,t){return this.get(e,t)!==void 0}getMetadata(e,t){return this.get(e,t)?.metadata}unregister(e,t){let n=this.providers.get(e);if(!n)return;if(n.delete(t),n.size===0)this.providers.delete(e)}getRegisteredAttachmentTypes(e){return Array.from(this.providers.get(e)?.keys()??[])}clear(){this.providers.clear()}getOrCreateSourceProviders(e){let t=this.providers.get(e);if(t)return t;let n=new Map;return this.providers.set(e,n),n}}import{mkdir as mee,readdir as fee,readFile as CL,rm as EL,stat as gee,writeFile as IL}from"fs/promises";import{basename as hee,dirname as yee,join as fo}from"path";var lh=/^upload-[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,RL=86400000,kL=200;function ch(e){return typeof e==="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}class go extends Error{code;constructor(e,t){super(t);this.code=e,this.name="RuntimeUploadStoreError"}}var bee=a.object({id:a.string().regex(lh),ref:a.object({kind:a.string().min(1),id:a.string().regex(lh)}),filename:a.string().min(1),mediaType:a.string().min(1),sizeBytes:a.number().nonnegative(),createdAt:a.string().datetime(),metadata:a.record(a.string(),a.unknown()).optional()});function See(e){return{scoped:(t)=>e.scoped(t)}}function PL(e){return hee(e)==="brain-data"?fo(yee(e),"data"):e}class WC{dataDir;logger;constructor(e){this.dataDir=PL(e.dataDir),this.logger=e.logger}static createFresh(e){return new WC(e)}scoped(e){return new JC({...e,dataDir:this.dataDir,...this.logger!==void 0&&{logger:this.logger}})}}class JC{options;retentionMs;maxCount;createUploadId;getNow;logger;constructor(e){this.options=e,this.logger=e.logger,this.retentionMs=e.retentionMs??RL,this.maxCount=e.maxCount??kL,this.createUploadId=e.createId??(()=>`upload-${crypto.randomUUID()}`),this.getNow=e.now??(()=>new Date)}async save(e){let t=this.createUploadId();this.assertValidUploadId(t);let n={id:t,ref:{kind:this.options.refKind,id:t},filename:e.filename,mediaType:e.mediaType,sizeBytes:e.content.byteLength,createdAt:this.getNow().toISOString(),...e.metadata!==void 0&&{metadata:e.metadata}},r=this.getUploadDir(t);return await mee(r,{recursive:!0}),await IL(fo(r,"content"),e.content),await IL(fo(r,"metadata.json"),`${JSON.stringify(n,null,2)}
183
+ `,"utf8"),await this.prune().catch((i)=>{this.logger?.warn("Failed to prune runtime uploads",{error:Be(i)})}),n}async remove(e){this.assertValidUploadId(e),await EL(this.getUploadDir(e),{recursive:!0,force:!0})}async read(e){let t=await this.readRecord(e);try{let n=await CL(fo(this.getUploadDir(e),"content"));return{record:t,content:n}}catch(n){if(ch(n))throw new go("not_found","Upload not found");throw new go("invalid_metadata","Upload content could not be read")}}async readRecord(e){this.assertValidUploadId(e);try{let t=await CL(fo(this.getUploadDir(e),"metadata.json"),"utf8"),n=bee.safeParse(JSON.parse(t));if(!n.success||n.data.id!==e||n.data.ref.id!==e||n.data.ref.kind!==this.options.refKind)throw new go("invalid_metadata","Invalid upload metadata");return n.data}catch(t){if(t instanceof go)throw t;if(ch(t))throw new go("not_found","Upload not found");throw new go("invalid_metadata","Upload metadata could not be read")}}toResponseBody(e){return{...e,url:this.getUploadUrl(e.id),downloadUrl:this.getUploadUrl(e.id,!0)}}async prune(){let e=this.getUploadsRoot(),t;try{t=await fee(e)}catch(s){if(ch(s))return;throw s}let r=(await Promise.all(t.map(async(s)=>{try{let c=await gee(fo(e,s));return c.isDirectory()?{entry:s,mtimeMs:c.mtimeMs}:null}catch(c){if(ch(c))return null;throw c}}))).filter((s)=>s!==null).sort((s,c)=>c.mtimeMs-s.mtimeMs),i=this.getNow().getTime()-this.retentionMs,o=r.filter((s,c)=>c>=this.maxCount||s.mtimeMs<i);await Promise.all(o.map((s)=>EL(fo(e,s.entry),{recursive:!0,force:!0})))}getUploadDir(e){return this.assertValidUploadId(e),fo(this.getUploadsRoot(),e)}getUploadsRoot(){return fo(this.options.dataDir,this.options.namespace,"uploads")}getUploadUrl(e,t=!1){this.assertValidUploadId(e);let n=encodeURIComponent(e);return`${this.options.routePath}?id=${n}${t?"&download=1":""}`}assertValidUploadId(e){if(!lh.test(e))throw new go("invalid_ref","Invalid upload ref")}}function HC(e,t,n){let r=Bun.cron.parse(e,t,n?{tz:n}:void 0);if(r===null)throw Error(`Cron expression ${JSON.stringify(e)} has no future occurrences`);return r}function AL(e){HC(e,Date.now())}class VC{options;nextJobId=0;constructor(e={}){this.options=e}scheduleCron(e,t,n={}){HC(e,Date.now(),n.timezone);let r=`cron:${this.nextJobId++}:${e}`,i={},o=new GC(r,t,this.options,()=>i.current?.stop());return i.current=Bun.cron(e,()=>{o.trigger()},n.timezone?{tz:n.timezone}:void 0),o}scheduleInterval(e,t){xee(e);let n=`interval:${this.nextJobId++}:${e}`,r=new GC(n,t,this.options);return r.startInterval(e),r}validateCron(e){AL(e)}}class GC{key;callback;options;stopTrigger;scope;cycles;intervalFiber=null;stopPromise=null;stopped=!1;constructor(e,t,n,r=()=>{}){this.key=e,this.callback=t,this.options=n,this.stopTrigger=r,this.scope=ne.runSync(vt.make()),this.cycles=ne.runSync(vt.provide(Pn.make(),this.scope))}startInterval(e){let t=ne.sleep(e).pipe(ne.andThen(ne.sync(()=>{this.trigger()})),ne.forever),n=_o(t,this.options.clock);this.intervalFiber=ne.runFork(n)}trigger(){if(this.stopped)return;if(Pn.hasUnsafe(this.cycles,this.key)){this.options.onOverlapSkipped?.(this.key);return}let e=ne.tryPromise({try:async()=>{await this.callback()},catch:(n)=>n}).pipe(ne.catch((n)=>ne.sync(()=>{this.options.onCallbackError?.(this.key,n)}))),t=ne.runFork(e);Pn.setUnsafe(this.cycles,this.key,t,{onlyIfMissing:!0})}stop(){return this.stopPromise??=this.stopScheduledJob(),this.stopPromise}async stopScheduledJob(){this.stopped=!0;let e=[];try{this.stopTrigger()}catch(r){e.push(r)}let t=this.intervalFiber;this.intervalFiber=null;let n=[...t?[Qr.interrupt(t)]:[],Pn.awaitEmpty(this.cycles),vt.close(this.scope,bt.void)];for(let r of n)try{await ne.runPromise(r)}catch(i){e.push(i)}if(e.length===1)throw e[0];if(e.length>1)throw AggregateError(e,"Scheduled job cleanup failed")}}function xee(e){if(!Number.isFinite(e)||e<=0)throw Error("Scheduler interval must be a positive finite number")}function vee(e){let t=e.scheduler??new VC,n=e.now??Date.now,r,i,o,s=!1,c=!1,l={status:"unknown"},u=0,p=0,m=async()=>{if(!s||c)return;c=!0,r=n();try{await e.run(),u++,l={status:"healthy",lastCheck:new Date(n()),details:{successes:u,failures:p}}}catch{p++,l={status:"warning",message:"Maintenance cycle failed",lastCheck:new Date(n()),details:{successes:u,failures:p}},e.logger.warn("Maintenance cycle failed",{successes:u,failures:p})}finally{c=!1}};return{start:async()=>{if(o)await o;if(i)return;l={status:"unknown"},r=n(),i=t.scheduleInterval(e.intervalMs,m),s=!0},stop:()=>{if(o)return o;if(s=!1,!i)return Promise.resolve();return o=i.stop().then(()=>{i=void 0,o=void 0}),o},healthCheck:async()=>{let g=n();if(!Number.isSafeInteger(g)||g<0||r!==void 0&&!Number.isSafeInteger(r))return{status:"warning",message:"Maintenance clock unavailable"};if(s&&r!==void 0&&(g<r||g-r>e.intervalMs*2))return{status:"warning",message:c?"Maintenance cycle is still running":"Maintenance cycle is overdue"};return{...l,...l.lastCheck?{lastCheck:new Date(l.lastCheck)}:{},...l.details?{details:{...l.details}}:{}}}}}var _Fe=a.object({id:a.string(),type:a.string(),version:a.string(),status:a.string()}),FFe=a.object({name:a.string(),description:a.string()});var Tee=a.object({id:a.string(),version:a.string(),type:a.enum(["core","entity","service","interface"]),description:a.string().optional(),dependencies:a.array(a.string()).optional(),packageName:a.string()});var OL=a.looseObject({id:a.string().optional(),limit:a.number().optional(),page:a.number().optional(),pageSize:a.number().optional(),baseUrl:a.string().optional()}),DL=a.looseObject({entityType:a.string().optional(),query:OL.optional()});class zL{logger;constructor(e){this.logger=e}buildDetailResult(e,t){throw Error(`${this.id}: buildDetailResult() not implemented. Override this method or override fetch() to handle detail views.`)}parseQuery(e){let t=DL.parse(e);return{entityType:t.entityType??this.config.entityType,query:t.query??{}}}async fetch(e,t,n){let r=this.parseQuery(e),i=n.entityService;if(r.query.id){let s=await this.fetchDetail(r.query.id,i);return t.parse(this.buildDetailResult(s.item,s.navigation))}let o=await this.fetchList(r.query,i);return t.parse(this.buildListResult(o.items,o.pagination,r.query))}async fetchDetail(e,t){let n=await this.lookupEntity(e,t),r=this.transformEntity(n),i=null;if(this.config.enableNavigation)i=await this.resolveNavigation(n,t);return{item:r,navigation:i}}async fetchList(e,t,n){let r=e.page??1,i=e.pageSize??e.limit??this.config.defaultLimit??100,o=(r-1)*i,s=e.page!==void 0,[c,l]=await Promise.all([t.listEntities({entityType:this.config.entityType,options:{limit:i,offset:o,sortFields:this.config.defaultSort,...n}},this.config.entitySchema),s?t.countEntities({entityType:this.config.entityType,options:n?.filter?{filter:n.filter}:void 0}):Promise.resolve(0)]),u=c.map((m)=>this.transformEntity(m)),p=s?pw(l,r,i):null;return{items:u,pagination:p}}async resolveNavigation(e,t,n){let r=this.config.navigationLimit??1000,i=await t.listEntities({entityType:this.config.entityType,options:{limit:r,sortFields:n??this.config.defaultSort}},this.config.entitySchema),o=i.findIndex((p)=>p.id===e.id),s=o>0?i[o-1]:void 0,c=o<i.length-1?i[o+1]:void 0,l=s?this.transformEntity(s):null,u=c?this.transformEntity(c):null;return{prev:l,next:u}}async lookupEntity(e,t){if(this.config.lookupField==="id"){let i=await t.getEntity({entityType:this.config.entityType,id:e},this.config.entitySchema);if(!i)throw Error(`${this.config.entityType} not found: ${e}`);return i}let r=(await t.listEntities({entityType:this.config.entityType,options:{filter:{metadata:{slug:e}},limit:1}},this.config.entitySchema))[0];if(!r)throw Error(`${this.config.entityType} not found with slug: ${e}`);return r}}function Cee(e){let t=e.metadata.slug;return typeof t==="string"?t:null}async function Eee(e,t){let n=await e.nearestToEntity({origin:t.origin,types:t.types,maxDistance:t.maxDistance,limit:t.limit}).catch(()=>[]);return(await Promise.all(n.map(async(i)=>{let o=await e.getEntity({entityType:i.entityType,id:i.entityId});return o?{entity:o,title:jh(o)??o.id,slug:Cee(o),distance:i.distance}:null}))).filter((i)=>i!==null)}function QC(e){if(typeof e!=="object"||e===null||!("entityId"in e))return;let t=e.entityId;return typeof t==="string"&&t.trim().length>0?t.trim():void 0}function ML(e){if(!oi(e)||!("coverImage"in e))return;let t=e.coverImage;if(t===void 0||t===!1)return;if(t===!0)return{generate:!0};if(!oi(t))return;if(t.generate===!1)return;let n=t.prompt,r=typeof n==="string"?n.trim():void 0;return{generate:!0,...r&&{prompt:r}}}function ph(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function jL(e){let t={...e};return delete t.status,delete t.error,ph(t)}class _L extends vp{context;entityType;constructor(e,t,n){super(e,{schema:n.schema,jobTypeName:n.jobTypeName});this.context=t,this.entityType=n.entityType}async afterCreate(e,t,n,r){}async onGenerationFailure(e,t){}validateAndParse(e){let t=super.validateAndParse(e);if(!t)return null;let n=ML(e);if(typeof t!=="object")return t;let r=QC(e);if(!n&&!r)return t;return Object.assign(t,{...n&&{coverImage:n},...r&&{entityId:r}}),t}async process(e,t,n){try{await this.reportProgress(n,{progress:uh.START,message:`Starting ${this.jobTypeName}`});let r=await this.generate(e,n),i=QC(e),o=i?this.applyPreallocatedEntityId(i,r):r;await this.reportProgress(n,{progress:uh.SAVE,message:`Saving ${this.entityType} to database`});let s=i?await this.updatePreallocatedStub(i,o):await this.context.entityService.createEntity({entity:{id:o.id,entityType:this.entityType,content:o.content,metadata:o.metadata},options:o.createOptions});return await this.afterCreate(e,s.entityId,n,o),await this.enqueueGenericCoverImageIfRequested(e,s.entityId,n,o),await this.reportProgress(n,{progress:uh.COMPLETE,message:`${o.title??this.entityType} created successfully`}),this.toResult({success:!0,entityId:s.entityId,...o.resultExtras})}catch(r){if(r instanceof KC)return await this.markPreallocatedStubFailed(e,r.message),await this.onGenerationFailure(e,r.message),this.toResult({success:!1,error:r.message});let i=Be(r);return this.logger.error(`${this.jobTypeName} job failed`,{error:r,jobId:t,data:this.summarizeDataForLog(e)}),await this.markPreallocatedStubFailed(e,i),await this.onGenerationFailure(e,i),this.toResult(NL.failure(r))}}toResult(e){return e}applyPreallocatedEntityId(e,t){let n={...t.metadata},r=t.content,i=t.resultExtras;if(typeof n.slug==="string")n.slug=e,r=pp(r,"slug",e),i={...i,slug:e};return{...t,id:e,content:r,metadata:n,...i&&{resultExtras:i}}}async updatePreallocatedStub(e,t){let n=await this.context.entityService.getEntity({entityType:this.entityType,id:e,visibilityScope:"restricted"});if(!n)throw Error(`Pre-allocated entity stub not found: ${this.entityType}/${e}`);let r=this.mergeStubWithGenerated(n,t);return this.context.entityService.updateEntity({entity:{...n,id:e,entityType:this.entityType,content:r.content,metadata:r.metadata}})}mergeStubWithGenerated(e,t){let n=jL(el(e.content).frontmatter),r=jL(e.metadata),i=ph(t.metadata),o=el(t.content),s=ph(o.frontmatter),c=ph({...n,...i,...s});return this.context.entities.getEffectiveFrontmatterSchema(this.entityType)?.parse(c),{content:cw(c,o.content),metadata:{...r,...i}}}async markPreallocatedStubFailed(e,t){let n=QC(e);if(!n)return;try{let r=await this.context.entityService.getEntity({entityType:this.entityType,id:n,visibilityScope:"restricted"});if(!r)return;await this.context.entityService.updateEntity({entity:{...r,content:pp(pp(r.content,"status","failed"),"error",t),metadata:{...r.metadata,status:"failed",error:t}}})}catch(r){this.logger.warn("Failed to mark generation stub as failed",{error:r,entityId:n,entityType:this.entityType})}}async enqueueGenericCoverImageIfRequested(e,t,n,r){let i=ML(e);if(!i)return;await this.reportProgress(n,{progress:90,message:"Queueing cover image generation"});let o=r.title??t;await this.context.jobs.enqueue({type:BL.generate,data:{prompt:i.prompt??`Editorial cover image for: ${o}. `,title:`${o} Cover`,aspectRatio:"16:9",targetEntityType:this.entityType,targetEntityId:t,entityTitle:o,entityContent:r.content},toolContext:{interfaceType:"job",actor:{kind:"service",serviceId:"generation-job-handler"}}})}failEarly(e){throw new KC(e)}}class KC extends Error{constructor(e){super(e);this.name="GenerationFailure"}}var Iee=a.string().trim().min(1).max(200),Ree=a.string().trim().min(1).max(100).regex(/^[a-z0-9][a-z0-9.-]*$/);class FL{registrations=new Map;register(e,t,n){let r=Iee.parse(e),i=Ree.parse(t),o=`${r}:${i}`;if(this.registrations.has(o))throw Error(`Operational health check already registered: ${o}`);return this.registrations.set(o,{pluginId:r,name:o,provider:n}),()=>this.registrations.delete(o)}unregisterPlugin(e){let t=e.trim();for(let[n,r]of this.registrations)if(r.pluginId===t)this.registrations.delete(n)}async getChecks(){let e=[...this.registrations.values()].sort((t,n)=>t.name.localeCompare(n.name));return Promise.all(e.map(async(t)=>{try{return nh.parse({name:t.name,...await t.provider()})}catch{return{name:t.name,status:"degraded",message:"Operational health check failed"}}}))}}function LL(e){let t=$L(e.status),n=qL(e),r=ZL(e),i=r?`${t}: ${n} ${r}`:`${t}: ${n}`;return{title:t,label:n,...r?{amount:r}:{},...e.message?{message:e.message}:{},fallback:e.message?`${i}
184
184
  ${e.message}`:i}}function qL(e){let t=e.metadata.operationType.replace(/_/g," ");return e.metadata.operationTarget?`${t}: ${e.metadata.operationTarget}`:t}function ZL(e){if(!e.progress||e.progress.total<=0)return;return`${e.progress.current}/${e.progress.total} (${e.progress.percentage}%)`}function $L(e){switch(e){case"pending":return"Job queued";case"processing":return"Job processing";case"completed":return"Job completed";case"failed":return"Job failed"}}var kee=new Set(["yes","y","ok","sure","proceed","confirm","go"]),Pee=new Set(["no","n","cancel","abort","stop","nope"]);function yl(e){let t=e.toLowerCase().trim();if(t==="")return;if(kee.has(t))return{confirmed:!0};if(Pee.has(t))return{confirmed:!1};return}function UL(e){return e?.filter((t)=>t.kind==="tool-approval"&&t.state==="approval-requested")??[]}function WL(e){return e?.find((t)=>t.kind==="tool-approval"&&(t.state==="output-available"||t.state==="output-error"||t.state==="output-denied"))}function JL(e,t){if(t.length===0)return e;if(e.trim().length>0)return e;if(t.length===1)return t[0]?.summary??e;return"Multiple approvals required."}function HL(e){let t=e.state==="output-error"?"failed":e.state==="output-denied"?"declined":"completed";return{resolution:t,summary:e.summary,toolName:e.toolName,error:t==="failed"?e.error:void 0}}function VL({message:e,approvalIds:t}){if(t.size===0)return{kind:"not-confirmation"};let n=YC(e,t);if(!n)return{kind:"notice",message:"Please reply with yes to confirm or no/cancel to abort."};if(!n.approvalId&&YL(e))return{kind:"notice",message:`No matching pending approval id. Pending approval ids: ${GL(t)}.`};if(t.size>1&&!n.approvalId)return{kind:"notice",message:`Multiple approvals are pending; include one approval id with yes or no/cancel: ${GL(t)}.`};let r=n.approvalId??Aee(t);if(!r)return{kind:"notice",message:"No pending approval to resolve."};return{kind:"confirm",approvalId:r,confirmed:n.confirmed}}function YC(e,t){let n=yl(e),r=QL(e,t);if(n)return{...n,...r?{approvalId:r}:{}};let i=e.split(/\s+/).map((o)=>yl(o)).find((o)=>o!==void 0);if(!i)return;return{...i,...r?{approvalId:r}:{}}}function QL(e,t){if(!t||t.size===0)return;let n=e.toLowerCase();return[...t].sort((r,i)=>i.length-r.length).find((r)=>KL(n,r.toLowerCase()))}function KL(e,t){let n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`(^|[^a-z0-9_-])${n}($|[^a-z0-9_-])`).test(e)}function YL(e){return/(^|[^a-z0-9_-])approval[:-][a-z0-9_-]+/i.test(e)}function Aee(e){for(let t of e)return t;return}function GL(e){return[...e].join(", ")}var Oee=a.object({kind:a.string().min(1),id:a.string().min(1)}),Dee=a.object({kind:a.string().min(1),filename:a.string().min(1),mediaType:a.string().min(1),sizeBytes:a.number().nonnegative().optional(),source:Oee.optional()}),zee=a.array(Dee),dLe=a.array(Xg),Mee=a.array(Yg),jee=a.record(a.string(),a.unknown());function Wp(e){if(typeof e==="string")try{return Up(JSON.parse(e))}catch{return null}return Up(e)}function XC(e){let t=Wp(e),n=zee.safeParse(t?.attachments);return n.success?n.data:[]}function XL(e){let n=Wp(e)?.cards;if(!Array.isArray(n))return[];return n.map((r)=>eh.safeParse(r)).filter((r)=>r.success).map((r)=>r.data)}function dh(e,t){let n=[],r=new Set;for(let i of e){let o=Up(i);if(!o)continue;if(t.role&&o.role!==t.role)continue;for(let s of XC(o.metadata)){if(s.source?.kind!==t.sourceKind)continue;if(r.has(s.source.id))continue;r.add(s.source.id),n.push(s.source.id)}}return n}function mh(e){let t=new Set;for(let n of e){let r=Up(n);if(!r)continue;let o=Wp(r.metadata)?.cards;if(!Array.isArray(o))continue;let s=o.filter((l)=>Up(l)?.kind==="tool-approval"),c=Mee.safeParse(s);if(!c.success)continue;for(let l of c.data)if(l.state==="approval-requested")t.add(l.id);else t.delete(l.id)}return t}function Up(e){let t=jee.safeParse(e);return t.success?t.data:null}class eE{options;pendingByConversation=new Map;constructor(e){this.options=e}rememberFromResponse(e,t){if(!t.pendingConfirmations||t.pendingConfirmations.length===0)return;this.pendingByConversation.set(e,new Set(t.pendingConfirmations.map((n)=>n.id)))}replaceApprovals(e,t){if(t.length===0){this.pendingByConversation.delete(e);return}this.pendingByConversation.set(e,new Set(t))}async getApprovalIds(e){let t=this.pendingByConversation.get(e);if(t&&t.size>0)return new Set(t);let n=await this.restoreApprovalIds(e);if(n.size>0)this.pendingByConversation.set(e,n);return new Set(n)}removeApproval(e,t){let n=this.pendingByConversation.get(e);if(!n)return;if(n.delete(t),n.size===0)this.pendingByConversation.delete(e)}deleteConversation(e){this.pendingByConversation.delete(e)}syncFromResponse(e,t,n){if(t.pendingConfirmations===void 0)return;let r=new Set(t.pendingConfirmations.map((i)=>i.id).filter((i)=>i!==n));if(r.size===0){this.pendingByConversation.delete(e);return}this.pendingByConversation.set(e,r)}formatRemainingApprovalHelp(e,t){if(t.pendingConfirmations!==void 0)return;let n=this.pendingByConversation.get(e);if(!n||n.size===0)return;return`Remaining pending approval ids: ${[...n].map((r)=>`\`${r}\``).join(", ")}.`}async restoreApprovalIds(e){try{let t=await this.options.loadMessages(e);return mh(t)}catch(t){return this.options.onRestoreError?.(t,e),new Set}}}var Nee=a.record(a.string(),a.unknown());function e1(e){let t=Nee.safeParse(e);return t.success?t.data:null}function fh(e,t){return e1(e)?.[t]}function ho(e,t){let n=fh(e,t);return typeof n==="string"?n:void 0}function t1(e,t){let n=fh(e,t);return typeof n==="boolean"?n:void 0}function Bee(e){return Array.isArray(e.toolResults)?e.toolResults[0]:void 0}function _ee(e){if(!Array.isArray(e.cards))return;return e.cards.find((t)=>ho(t,"kind")==="tool-approval")}function Fee(e){return fh(e,"data")}function Lee(e){let n=e.indexOf(`
185
185
 
186
186
  Result:`);if(n===-1)return;let r=e.slice(n+9).trim();if(!r)return;try{return JSON.parse(r)}catch{return}}function qee(e){if(!e)return;let t=e.replace(/^system[_-]/,"").split(/[_-]+/).filter(Boolean);if(t.length===0)return;let n=t.join(" ");return`${n.charAt(0).toUpperCase()}${n.slice(1)}`}function gh(e,t){if(t==="declined")return{label:"Declined",variant:"declined"};let n=_ee(e),r=Bee(e),i=qee(ho(n,"toolName")??ho(r,"toolName")),o=fh(n,"output")??Fee(r)??Lee(e.text),s=ho(n,"state"),c=t1(o,"success"),l=ho(n,"error")??ho(o,"error")??ho(o,"message");if(s==="output-error")return{label:`${i?`${i} failed`:"Action failed"}${l?` \xB7 ${l}`:""}`,variant:"error"};if(s==="output-available")return{label:i?`${i} completed`:"Action completed",variant:"success"};if(s==="output-denied")return{label:i?`${i} denied`:"Action denied",variant:"declined"};if(c===!1)return{label:`${i?`${i} failed`:"Action failed"}${l?` \xB7 ${l}`:""}`,variant:"error"};if(e.text.startsWith("Error:"))return{label:`Action failed \xB7 ${e.text.replace(/^Error:\s*/,"")}`,variant:"error"};if(e.text.startsWith("Failed:"))return{label:`${i?`${i} failed`:"Action failed"}${l?` \xB7 ${l}`:""}`,variant:"error"};if(c===!0)return{label:i?`${i} completed`:"Action completed",variant:"success"};if(e.text.startsWith("Completed:"))return{label:i?`${i} completed`:"Action completed",variant:"success"};return{label:e.text?`Approved \xB7 ${e.text}`:"Approved",variant:"success"}}function n1(e){switch(e){case"success":return"Approval confirmed";case"declined":return"Approval declined";case"error":return"Action failed"}}function hh(e){if(typeof e==="string")return e;if(typeof e==="number"||typeof e==="boolean")return String(e);let t=e1(e);if(!t)return;let n=ho(t,"error")??ho(t,"message");if(t1(t,"success")===!1)return n?`Failed \xB7 ${n}`:"Failed";return}function tE(e){return["Approvals pending:",...e.map((t)=>`${t.id}: ${t.summary}`),"Reply yes <approval-id> to confirm one item, or no <approval-id> to abort it."].join(`
@@ -192,7 +192,7 @@ Result:`);if(n===-1)return;let r=e.slice(n+9).trim();if(!r)return;try{return JSO
192
192
  `)}function b1(e){return{identity:e.identity,interfaceType:e.interfaceType,role:e.role??"user",...e.displayName?{displayName:e.displayName}:{},...e.username?{username:e.username}:{},...e.isBot!==void 0?{isBot:ste(e.isBot)}:{}}}function ste(e){if(typeof e==="boolean")return e;return e.toLowerCase()==="true"}function S1(e){return{...e.messageId?{messageId:e.messageId}:{},...e.channelId?{channelId:e.channelId}:{},...e.channelName?{channelName:e.channelName}:{},...e.threadId?{threadId:e.threadId}:{},...e.metadata?{metadata:e.metadata}:{}}}function x1(e){if(e.skippedMessages.length===0)return{message:e.message};return{message:["Messages received while the previous response was still running (oldest first, for context only):",...e.skippedMessages.map(ate),"","Latest message to answer:",e.message].join(`
193
193
  `),metadata:{supersededMessageCount:e.skippedMessages.length,supersededMessageIds:e.skippedMessages.map((r)=>r.id).filter((r)=>r!==void 0)}}}function ate(e){let t=e.text.trim(),n=e.authorName?.trim();return n?`- ${n}: ${t}`:`- ${t}`}async function hte(e){let{entityType:t,title:n,deriveId:r,regeneratePrompt:i,context:o}=e,s=r(n),c=await o.entityService.getEntity({entityType:t,id:s});if(!c||c.metadata.status==="generating")return n;o.logger.debug(`Entity ID collision: ${t}/${s}, asking AI for a new title`);let l=a.object({title:a.string().max(80).describe("A short, unique title (2-6 words)")}),{object:u}=await o.ai.generateObject(`The title "${n}" is already taken. ${i}`,l),p=u.title;return o.logger.debug(`AI suggested new title: "${p}"`),p}class Eh{tail=Promise.resolve();run(e){let t=this.tail.then(()=>e());return this.tail=t.then(()=>{return},()=>{return}),t}async settle(){await this.tail}}var yte="current";class v1{store;schema;createEmpty;key;queue=new Eh;statePromise;constructor(e){this.store=e.runtimeState.scoped({namespace:e.namespace,schema:e.schema}),this.schema=e.schema,this.createEmpty=e.createEmpty,this.key=e.key??yte}mutate(e){return this.queue.run(async()=>{let t=await this.load(),n=await e(t);return await this.persist(t),n})}async snapshot(){return await this.settle(),structuredClone(await this.load())}settle(){return this.queue.settle()}load(){return this.statePromise??=this.store.get(this.key).then((e)=>e??this.createEmpty()),this.statePromise}async persist(e){await this.store.set(this.key,this.schema.parse(e))}}var cE=Cr.extend({id:a.literal("brain-character"),entityType:a.literal("brain-character")}),Ih=a.object({name:a.string().describe("The brain's friendly display name"),role:a.string().describe("The brain's primary role"),purpose:a.string().describe("The brain's purpose and goals"),values:a.array(a.string()).describe("Core values that guide behavior")});var bte=a.record(a.string(),a.unknown());class Vp extends Fo{generateFrontMatter(e){let t=this.parseFrontmatter(e.content);return this.buildMarkdown("",bte.parse(t))}}class Rh extends Vp{constructor(){super({entityType:"brain-character",purpose:"The brain's own identity, character, and purpose (singleton).",schema:cE,frontmatterSchema:Ih,isSingleton:!0,hasBody:!1})}createCharacterContent(e){return this.buildMarkdown("",e)}parseCharacterBody(e){return this.parseFrontmatter(e)}toMarkdown(e){return this.generateFrontMatter(e)}fromMarkdown(e){return{content:e,entityType:"brain-character"}}extractMetadata(e){let t=this.parseFrontmatter(e.content);return{role:t.role,values:t.values}}}class Qp extends hg{codec;constructor(e,t,n,r,i,o){super(e,t,n,r,Ii(i));this.codec=o}parseBody(e){return this.codec.parse(e)}createContent(e){return this.codec.create(e)}}class kh extends Qp{static getDefaultCharacter(){return{name:"Brain",role:"Knowledge assistant",purpose:"Help organize, understand, and retrieve information from your knowledge base",values:["clarity","accuracy","helpfulness"]}}static createFresh(e,t,n){return new kh(e,t,n)}constructor(e,t,n){let r=new Rh;super(e,t,"brain-character",n??kh.getDefaultCharacter(),"brain character is loaded at bootstrap before any user is in scope",{parse:(i)=>r.parseCharacterBody(i),create:(i)=>r.createCharacterContent(i)})}getCharacter(){return this.get()}getCharacterContent(){return this.getContent()}}var lE=Cr.extend({id:a.literal("anchor-profile"),entityType:a.literal("anchor-profile")}),w1=a.enum(["person","team","organization"]),Ia=a.object({name:a.string().describe("Name of the anchor"),organization:a.string().optional().describe("Organization the anchor belongs to"),description:a.string().optional().describe("Short description or biography"),avatar:a.string().optional().describe("URL or asset path to avatar/logo"),website:a.string().optional().describe("Primary website URL"),email:a.string().optional().describe("Contact email"),socialLinks:a.array(a.object({platform:a.enum(["github","instagram","linkedin","email","website"]).describe("Social media platform"),url:a.string().describe("Profile or contact URL"),label:a.string().optional().describe("Optional display label")})).optional().describe("Social media and contact links")});class Ph extends Vp{constructor(){super({entityType:"anchor-profile",purpose:"The profile of the brain's Anchor (singleton).",schema:lE,frontmatterSchema:Ia,isSingleton:!0,hasBody:!0})}createProfileContent(e){let t=Ia.parse(e);return this.buildMarkdown("",t)}parseProfileBody(e,t){if(t){let{metadata:n,content:r}=Ut(e,t);return r?{...n,story:r}:n}return this.parseFrontmatter(e)}fromMarkdown(e){return{content:e,entityType:"anchor-profile"}}extractMetadata(e){let t=this.parseFrontmatter(e.content);return{name:t.name,email:t.email,website:t.website}}}class Kp extends Qp{static getDefaultProfile(){return{name:"Unknown"}}static createFresh(e,t,n){return new Kp(e,t,n)}constructor(e,t,n){let r=new Ph;super(e,t,"anchor-profile",n??Kp.getDefaultProfile(),"anchor profile is loaded at bootstrap before any user is in scope",{parse:(i)=>r.parseProfileBody(i),create:(i)=>r.createProfileContent(i)})}getProfile(){return this.get()}getProfileContent(){return this.getContent()}}var Ah=a.enum(["person","team","organization"]),Ste=a.object({kind:a.string().trim().min(1),category:Ah,labels:a.object({singular:a.string().trim().min(1),plural:a.string().trim().min(1)})});function xte(e){if(typeof e!=="object"||e===null||!("shape"in e)||!("safeParse"in e)||typeof e.safeParse!=="function")throw Error("Profile kind fields must be a Zod object schema")}class T1{selectedKind;registrations=new Map;finalized=!1;resolved=null;selectedDefinition;constructor(e){let t=e?.trim();this.selectedKind=t===""?void 0:t}register(e,t){if(this.finalized)throw Error("Profile kind registration is closed");let n=Ste.parse(t);xte(t.fields);let r=Object.freeze({...t,kind:n.kind,category:n.category,labels:Object.freeze({...n.labels})}),i=this.registrations.get(n.kind)??[];i.push({pluginId:e,definition:r}),this.registrations.set(n.kind,i)}unregisterPlugin(e){for(let[t,n]of this.registrations){let r=n.filter((i)=>i.pluginId!==e);if(r.length===0)this.registrations.delete(t);else this.registrations.set(t,r)}}finalize(){if(this.finalized)return this.resolved;let t=[...this.registrations.entries()].filter(([,r])=>r.length>1).sort(([r],[i])=>r.localeCompare(i))[0];if(t){let[r,i]=t,o=i.map((s)=>s.pluginId).sort().join(", ");throw Error(`Profile kind "${r}" is registered by multiple plugins: ${o}`)}if(!this.selectedKind)return this.finalized=!0,this.resolved=null,null;let n=this.registrations.get(this.selectedKind)?.[0];if(!n)throw Error(`Selected profile kind "${this.selectedKind}" is not registered`);return this.selectedDefinition=n.definition,this.resolved=Object.freeze({kind:n.definition.kind,category:n.definition.category,labels:Object.freeze({...n.definition.labels})}),this.finalized=!0,this.resolved}getResolved(){return this.assertFinalized(),this.resolved}getSelectedDefinition(){return this.assertFinalized(),this.selectedDefinition}isFinalized(){return this.finalized}assertFinalized(){if(!this.finalized)throw Error("Profile kind selection has not been finalized")}}var C1=30000;class pE{logger;resolver;links=[];actorIndex=new Map;negativeActorIndex=new Map;static createFresh(e,t){return new pE(e,t)}constructor(e,t){this.logger=e.child("CanonicalIdentityService"),this.resolver=t}async refreshCache(){this.links=[],this.actorIndex=new Map,this.negativeActorIndex=new Map,this.logger.debug("Canonical identity links refreshed",{linkCount:0,actorCount:0})}getLinks(){return this.links}resolveActor(e){let t=uE(e),n=this.actorIndex.get(t);if(!n)return null;if(n.expiresAt<=Date.now())return this.actorIndex.delete(t),null;return n.resolution}async enrichActor(e){if(e.identity.kind==="user"&&e.identity.canonicalId||e.role!=="user")return e;let t=this.resolveActor(e.identity);if(t)return this.enrichedActor(e,t);let n=uE(e.identity),r=this.negativeActorIndex.get(n);if(r&&r>Date.now())return e;this.negativeActorIndex.delete(n);let i=await this.resolver?.(e.identity);if(!i)return this.negativeActorIndex.set(n,Date.now()+C1),e;let o={identity:e.identity,...e.displayName?{label:e.displayName}:{}},s={...i,actors:[o],matchedActor:o};return this.actorIndex.set(n,{resolution:s,expiresAt:Date.now()+C1}),this.links=[...this.links.filter((c)=>c.userId!==s.userId),s],this.enrichedActor(e,s)}enrichedActor(e,t){return{...e,identity:{kind:"user",userId:t.userId,canonicalId:t.canonicalId},...t.displayName?{displayName:t.displayName}:{}}}}var E1="https://rizom.ai/ext/anchor-profile/v1",I1=a.looseObject({id:a.string(),description:a.string(),name:a.string().optional(),tags:a.array(a.string()).optional().default([])}),R1=Ia.extend({kind:a.string().trim().min(1).optional(),category:Ah.optional()}).superRefine((e,t)=>{if(e.kind===void 0!==(e.category===void 0))t.addIssue({code:"custom",message:"Anchor kind and category must be provided together"})}),vte=a.looseObject({uri:a.string(),params:a.record(a.string(),a.unknown()).optional()}),k1=a.looseObject({name:a.string(),url:a.string(),description:a.string().optional(),skills:a.array(I1).optional().default([]),capabilities:a.looseObject({extensions:a.array(vte).optional().default([])}).optional()});function wte(e){let t=k1.safeParse(e);if(!t.success)return null;let n=t.data,i=(n.capabilities?.extensions??[]).find((s)=>s.uri===E1),o=null;if(i?.params){let s=R1.safeParse(i.params);if(s.success)o=s.data}return{brainName:n.name,url:n.url,description:n.description??"",skills:n.skills.map((s)=>({id:s.id,name:s.name??s.id,description:s.description,tags:s.tags})),anchor:o}}var dE=a.object({name:a.string(),description:a.string(),tags:a.array(a.string())}),Oh=a.object({about:a.string().default(""),skills:a.array(dE).default([]),notes:a.string().default("")}),Tte=/^- (.+?): (.+?)(?:\s+\[(.+?)\])?$/;function Cte(e){let t=a.array(dE).safeParse(e);if(!t.success)return"";return t.data.map((n)=>{let r=n.tags.length>0?` [${n.tags.join(", ")}]`:"";return`- ${n.name}: ${n.description}${r}`}).join(`
194
194
  `)}function Ete(e){return e.split(`
195
- `).flatMap((t)=>{let n=t.match(Tte);if(!n)return[];let r=(n[3]??"").split(",").map((i)=>i.trim()).filter(Boolean);return[{name:n[1]??"",description:n[2]??"",tags:r}]})}var P1=new ns(Oh,{title:"Agent",mappings:[{key:"about",label:"About",type:"string"},{key:"skills",label:"Skills",type:"custom",formatter:Cte,parser:Ete},{key:"notes",label:"Notes",type:"string"}]});function Ite(e){return P1.format(e)}function Rte(e){if(!e.trim())return Oh.parse({});try{return P1.parse(e)}catch{return Oh.parse({})}}import{EventEmitter as M1}from"events";var Ct={REGISTERED:"registered",INITIALIZED:"initialized",ERROR:"error",DISABLED:"disabled"},zr={REGISTERED:"plugin:registered",BEFORE_INITIALIZE:"plugin:before_initialize",INITIALIZED:"plugin:initialized",ERROR:"plugin:error",DISABLED:"plugin:disabled"};class Mr extends Error{pluginId;constructor(e,t){super(`Plugin ${e}: ${t}`);this.name="PluginError",this.pluginId=e}}function A1(e,t){return Reflect.get(e,t,e)}function O1(e,t,n){if(typeof e!=="function")throw TypeError("Cannot apply a non-callable trapped member");return Reflect.apply(e,t,n)}class mE{scope;ingress=new Set;closePromise=null;closed=!1;constructor(){this.scope=te.runSync(vt.make())}assertOpen(){if(this.closed)throw Error("Cannot register a resource after plugin teardown")}acquire(e,t){this.assertOpen();let n=e();try{this.addFinalizer(()=>t(n))}catch(r){try{t(n)}catch(i){throw AggregateError([r,i],"Plugin acquisition rollback failed",{cause:i})}throw r}return n}addFinalizer(e){this.assertOpen(),te.runSync(vt.addFinalizer(this.scope,te.promise(async()=>{await e()})))}addIngress(e){this.assertOpen(),this.ingress.add(e)}close(e=bt.void){return this.closed=!0,this.closePromise??=this.closeScope(e),this.closePromise}async closeScope(e){let t,n=!1,r=[...this.ingress].reverse();for(let c of r)try{c.stopAdmission()}catch(l){if(!n)t=l;n=!0}let i=await Promise.allSettled(r.map((c)=>Promise.resolve().then(()=>c.drain())));this.ingress.clear();let o=i.find((c)=>c.status==="rejected");if(!n&&o)t=o.reason,n=!0;let s=await te.runPromiseExit(vt.close(this.scope,e));if(!n&&bt.isFailure(s))t=Xn.squash(s.cause),n=!0;if(n)throw t}}function Xp(e,t,n,r){return new Proxy(e,{get(i,o){let s=A1(i,o);if(typeof o==="string"&&t.some((c)=>c===o)&&typeof s==="function")return(...c)=>n.acquire(()=>O1(s,i,c),(l)=>r(c,l));return typeof s==="function"?s.bind(i):s}})}function Yp(e,t,n){return Xp(e,t,n,(r)=>{let i=r[0];if(typeof i==="string")e.unregisterPlugin(i)})}function D1(e,t){let n=e.getMessageBus(),r=new Set,i={send:(G)=>n.send(G),hasHandlers:(G)=>n.hasHandlers?.(G)??!1,subscribe:(G,I,ee)=>{t.assertOpen();let he=!0,Ee=new Set,We=(se)=>{if(!he)return{noop:!0};let ue,Ae=new Promise((rt)=>{ue=rt});Ee.add(Ae);let ie=()=>{Ee.delete(Ae),ue()},Xe;try{Xe=Promise.resolve(I(se))}catch(rt){throw ie(),rt}return Xe.then((rt)=>(ie(),rt),(rt)=>{throw ie(),rt})},Ye=n.subscribe(G,We,ee),Ie={type:G,originalHandler:I,stopAdmission:()=>{if(!he)return;he=!1,Ye(),r.delete(Ie)}};r.add(Ie);try{t.addIngress({stopAdmission:Ie.stopAdmission,drain:async()=>{await Promise.all(Ee)}})}catch(se){throw Ie.stopAdmission(),se}return Ie.stopAdmission},unsubscribe:(G,I)=>{let ee=[...r].filter((he)=>he.type===G&&he.originalHandler===I);if(ee.length===0){n.unsubscribe(G,I);return}for(let he of ee)he.stopAdmission()},collect:(G)=>n.collect(G),validateMessage:(G,I)=>n.validateMessage(G,I),getHandlerCount:(G)=>n.getHandlerCount(G),getTargetedHandlerCount:(G,I)=>n.getTargetedHandlerCount(G,I),clearHandlers:(G)=>n.clearHandlers(G),clearAllHandlers:()=>n.clearAllHandlers()},o=e.getAttachmentRegistry(),s={...o,register:(G,I,ee)=>t.acquire(()=>o.register(G,I,ee),(he)=>he())},c=e.getEntityRegistry(),l=Xp(c,["registerEntityType"],t,(G)=>{let I=G[0];if(typeof I==="string")c.unregisterEntityType(I)}),u=Yp(e.getProfileKindRegistry(),["register"],t),p=Yp(e.getChannelRegistry(),["registerDescriptor","registerDeliveryProvider"],t),m=Yp(e.getInboxRegistry(),["registerSource"],t),g=Yp(e.getInboxFollowUpRegistry(),["registerKind"],t),f=e.getAccountSettingsRegistry(),v=Xp(f,["register"],t,(G,I)=>{O1(f.unregister,f,[I])}),w=Yp(e.getOperationalHealthRegistry(),["register"],t),k=e.getDataSourceRegistry(),P=Xp(k,["register"],t,(G)=>{let I=G[0];if(typeof I==="object"&&I!==null&&"id"in I&&typeof I.id==="string"){let ee=I.id.includes(":")?I.id:`shell:${I.id}`;k.unregister(ee)}}),B=e.getInsightsRegistry(),j=Xp(B,["register"],t,(G)=>{let I=G[0];if(typeof I==="string")B.unregister(I)}),Y=new Proxy(e,{get(G,I){if(I==="getMessageBus")return()=>i;if(I==="getAttachmentRegistry")return()=>s;if(I==="getEntityRegistry")return()=>l;if(I==="getDataSourceRegistry")return()=>P;if(I==="getProfileKindRegistry")return()=>u;if(I==="getChannelRegistry")return()=>p;if(I==="getInboxRegistry")return()=>m;if(I==="getInboxFollowUpRegistry")return()=>g;if(I==="getOperationalHealthRegistry")return()=>w;if(I==="getAccountSettingsRegistry")return()=>v;if(I==="getInsightsRegistry")return()=>j;let ee=A1(G,I);return typeof ee==="function"?ee.bind(G):ee}});return yF(e,Y),Y}class fE{plugins;events;daemonRegistry;logger;projectionRegistry;resourceScopes=new Map;releasePromises=new Map;constructor(e,t,n,r,i){this.plugins=e,this.events=t,this.daemonRegistry=n,this.projectionRegistry=r,this.logger=i.child("PluginLifecycle")}async initializePlugin(e,t,n){let r=this.plugins.get(e);if(!r)throw new Mr(e,"Registration failed: Plugin is not registered");let i=r.plugin,o=new mE;o.addFinalizer(()=>t.unregisterPluginCapabilities?.(e)),o.addFinalizer(()=>t.getJobQueueService().unregisterPluginHandlers(e)),o.addFinalizer(()=>this.projectionRegistry.unregisterPlugin(e)),this.resourceScopes.set(e,o),this.releasePromises.delete(e),this.logger.debug(`Initializing plugin: ${e}`);try{this.events.emit(zr.BEFORE_INITIALIZE,e,i);let s=await i.register(D1(t,o),n);return r.status=Ct.INITIALIZED,this.logger.debug(`Initialized plugin: ${e}`),this.events.emit(zr.INITIALIZED,e,i),s}catch(s){throw this.logger.error(`Error initializing plugin ${e}: ${Be(s)}`),await this.failPluginInitialization(e,s),s}}async finalizePluginRegistration(e){let t=this.plugins.get(e);if(!t)throw new Mr(e,"Registration finalization failed: Plugin is not registered");if(t.status!==Ct.INITIALIZED)return;try{await t.plugin.finalizeRegistration?.(),this.logger.debug(`Registration finalized for plugin: ${e}`)}catch(n){throw await this.failPluginInitialization(e,n),n}}async readyPlugin(e){let t=this.plugins.get(e);if(!t)throw new Mr(e,"Ready failed: Plugin is not registered");if(t.status!==Ct.INITIALIZED){this.logger.debug(`Skipping ready hook for non-initialized plugin: ${e}`);return}try{await t.plugin.ready?.(),this.logger.debug(`Ready hook completed for plugin: ${e}`)}catch(n){let r=sl(n);t.status=Ct.ERROR,t.error=r;try{this.events.emit(zr.ERROR,e,r)}catch(i){this.logger.error(`Plugin error listener failed for ${e}`,i)}throw r}}async startPluginDaemons(e){let t=this.plugins.get(e);if(t?.status!==Ct.INITIALIZED)return;try{await this.daemonRegistry.startPlugin(e),this.logger.debug(`Started daemons for plugin: ${e}`)}catch(n){if(t.plugin.requiresDaemonStartup?.())throw n;this.logger.warn(`Daemon ${e} failed to start: ${Be(n)}`)}}async failPluginInitialization(e,t){let n=this.plugins.get(e);if(!n)return;let r=n.status!==Ct.ERROR,i=sl(t);if(n.status=Ct.ERROR,n.error=i,await this.releasePluginResources(e,bt.fail(t)),r)try{this.events.emit(zr.ERROR,e,i)}catch(o){this.logger.error(`Plugin error listener failed for ${e}`,o)}}async disablePlugin(e){let t=this.plugins.get(e);if(!t){this.logger.warn(`Cannot disable plugin ${e}: not registered`);return}if(t.status===Ct.DISABLED)return;this.logger.debug(`Disabling plugin: ${e}`);let n=t.status===Ct.ERROR;await this.releasePluginResources(e,bt.void);let r=this.plugins.get(e);if(!n&&r&&r.status!==Ct.DISABLED)r.status=Ct.DISABLED,this.events.emit(zr.DISABLED,e,r.plugin);this.logger.debug(`Disabled plugin: ${e}`)}releasePluginResources(e,t){let n=this.releasePromises.get(e);if(n)return n;let r=this.releasePluginResourcesOnce(e,t);return this.releasePromises.set(e,r),r}async releasePluginResourcesOnce(e,t){let n=this.plugins.get(e);if(!n)return;try{await this.daemonRegistry.stopPlugin(e),this.logger.debug(`Stopped daemons for plugin: ${e}`)}catch(i){this.logger.error(`Failed to stop daemons for plugin: ${e}`,i)}let r=this.resourceScopes.get(e);if(this.resourceScopes.delete(e),r)try{await r.close(t)}catch(i){this.logger.error(`Failed to close resources for plugin ${e}`,i)}if(n.plugin.shutdown)try{await n.plugin.shutdown(),this.logger.debug(`Shutdown completed for plugin: ${e}`)}catch(i){this.logger.error(`Plugin shutdown failed for ${e}:`,i)}for(let i of this.daemonRegistry.getByPlugin(e))try{await this.daemonRegistry.unregister(i.name)}catch(o){this.logger.error(`Failed to unregister daemon ${i.name} for plugin ${e}`,o)}}}class gE{plugins;events;logger;constructor(e,t,n){this.plugins=e,this.events=t,this.logger=n.child("DependencyResolver")}async resolveInitializationOrder(e){this.logger.debug("Resolving plugin initialization order...");let t=Array.from(this.plugins.keys()),n=new Set,r=!0;while(r&&n.size<t.length){r=!1;for(let s of t){if(n.has(s))continue;if(!this.plugins.get(s))continue;if(this.getUnmetDependencies(s).length===0)try{await e(s),n.add(s),r=!0}catch(u){let p=Be(u);this.logger.error(`Failed to initialize plugin ${s}: ${p}`),n.add(s),r=!0}}}let i=t.filter((s)=>!n.has(s));if(i.length>0){let s=i.join(", ");this.logger.error(`Failed to initialize plugins due to dependency issues: ${s}`);for(let c of i){let l=this.getUnmetDependencies(c);this.logger.error(`Plugin ${c} has unmet dependencies: ${l.join(", ")}`);let u=this.plugins.get(c);if(u)u.status=Ct.ERROR,u.error=new Mr(c,`Unmet dependencies: ${l.join(", ")}`);this.events.emit(zr.ERROR,c,u?.error)}}let o=new Set;for(let[s,c]of this.plugins)if(c.status===Ct.INITIALIZED)o.add(s);return this.logger.debug(`Resolved ${o.size} of ${t.length} plugins`),{initialized:o,failed:i}}getUnmetDependencies(e){let t=this.plugins.get(e);if(!t)return[];let{dependencies:n}=t,r=[];for(let i of n){let o=this.plugins.get(i);if(!o){r.push(i);continue}if(o.status!==Ct.INITIALIZED)r.push(i)}return r}}class hE{logger;projectionRegistry;constructor(e,t){this.logger=e.child("CapabilityRegistrar"),this.projectionRegistry=t}async registerCapabilities(e,t,n,r){if(!r?.executionOnly&&n.tools.length>0)e.registerTools(t,n.tools),this.logger.debug(`Registered ${n.tools.length} tools from ${t}`);if(!r?.executionOnly&&n.resources.length>0)e.registerResources(t,n.resources),this.logger.debug(`Registered ${n.resources.length} resources from ${t}`);if(!r?.executionOnly&&n.instructions)e.registerInstructions(t,n.instructions),this.logger.debug(`Registered instructions from ${t}`);let i=n.projectionRules??[];try{for(let o of i)this.projectionRegistry.registerRule(t,o)}catch(o){throw this.projectionRegistry.unregisterPlugin(t),o}if(i.length>0)this.logger.debug(`Registered ${i.length} projection rules from ${t}`)}}class Dh{projections=new Map;rules=new Map;static createFresh(){return new Dh}constructor(){}registerRule(e,t){if(!Object.isFrozen(t))throw Error(`Projection rule "${t.id}" must be created with defineProjectionRule`);let n=this.projections.get(t.id);if(n)throw Error(`Projection "${t.id}" is already registered by "${n.pluginId}"`);let r={id:t.id,pluginId:e,targetType:t.targetType,sources:t.sources.map((o)=>({kind:o.kind,types:[...o.types],...o.excludeTypes?{excludeTypes:[...o.excludeTypes]}:{}}))};this.projections.set(t.id,r),this.rules.set(t.id,t);let i=!0;return()=>{if(!i)return;if(i=!1,this.rules.get(t.id)===t)this.rules.delete(t.id);if(this.projections.get(t.id)===r)this.projections.delete(t.id)}}unregisterPlugin(e){for(let[t,n]of this.projections)if(n.pluginId===e)this.projections.delete(t),this.rules.delete(t)}list(){return Array.from(this.projections.values()).sort((e,t)=>e.id.localeCompare(t.id)).map(Ate)}listRules(){return[...this.rules.values()].sort((e,t)=>e.id.localeCompare(t.id))}validate(e){let t=this.list(),n=new Set(e.map(({type:s})=>s));for(let s of t)if(!n.has(s.targetType))throw Error(`Projection "${s.id}" targets unregistered entity type "${s.targetType}"`);let r=e.filter(({projectionSource:s})=>s).map(({type:s})=>s).sort(),i=Ote(t,r),o=zte(t,i)[0];if(o){let s=Mte(o,i);throw Error(`Projection cycle is not supported: ${[...s,s[0]].join(" -> ")}`)}return Pte({projections:t,edges:i,unknownSourceTypes:kte(t,n)})}}function kte(e,t){let n=[];for(let r of e){let i=[...new Set(r.sources.flatMap((o)=>[...o.types,...o.excludeTypes??[]]).filter((o)=>o!=="*"&&!t.has(o)))].sort();if(i.length>0)n.push({projectionId:r.id,types:i})}return n}function Pte(e){for(let t of e.projections){for(let n of t.sources){if(Object.freeze(n.types),n.excludeTypes)Object.freeze(n.excludeTypes);Object.freeze(n)}Object.freeze(t.sources),Object.freeze(t)}for(let t of e.edges)Object.freeze(t.causes),Object.freeze(t);for(let t of e.unknownSourceTypes)Object.freeze(t.types),Object.freeze(t);return Object.freeze(e.unknownSourceTypes),Object.freeze(e.projections),Object.freeze(e.edges),Object.freeze(e)}function Ate(e){return{...e,sources:e.sources.map((t)=>({...t,types:[...t.types],...t.excludeTypes?{excludeTypes:[...t.excludeTypes]}:{}}))}}function Ote(e,t){let n=new Map;for(let r of e)for(let i of e){let o=Dte(r,i,t);if(o.length===0)continue;n.set(`${r.id}\x00${i.id}`,new Set(o))}return Array.from(n,([r,i])=>{let[o="",s=""]=r.split("\x00");return{from:o,to:s,causes:[...i].sort()}}).sort((r,i)=>r.from.localeCompare(i.from)||r.to.localeCompare(i.to))}function Dte(e,t,n){let r=[];for(let i of t.sources){let o=new Set(i.excludeTypes??[]);if((i.types.includes("*")?[...i.types.filter((c)=>c!=="*"),...n]:i.types).includes(e.targetType)&&!o.has(e.targetType))r.push(`entity:${e.targetType}`)}return[...new Set(r)]}function zte(e,t){let n=e.map(({id:m})=>m).sort(),r=z1(n,t),i=new Map,o=new Map,s=[],c=new Set,l=[],u=0,p=(m)=>{i.set(m,u),o.set(m,u),u++,s.push(m),c.add(m);for(let w of r.get(m)??[])if(!i.has(w))p(w),o.set(m,Math.min(o.get(m)??0,o.get(w)??0));else if(c.has(w))o.set(m,Math.min(o.get(m)??0,i.get(w)??0));if(o.get(m)!==i.get(m))return;let g=[],f;do{if(f=s.pop(),!f)break;c.delete(f),g.push(f)}while(f!==m);let v=r.get(m)?.includes(m)??!1;if(g.length>1||v)l.push(g.sort())};for(let m of n)if(!i.has(m))p(m);return l.sort((m,g)=>(m[0]??"").localeCompare(g[0]??""))}function Mte(e,t){let n=new Set(e),r=z1(e,t),i=[...e].sort()[0];if(!i)return[];if(r.get(i)?.includes(i))return[i];let o=(s,c)=>{for(let l of r.get(s)??[]){if(!n.has(l))continue;if(l===i)return c;if(c.includes(l))continue;let u=o(l,[...c,l]);if(u)return u}return};return o(i,[i])??[...e].sort()}function z1(e,t){let n=new Map;for(let r of e)n.set(r,[]);for(let r of t){let i=n.get(r.from);if(i&&!i.includes(r.to))i.push(r.to)}for(let r of n.values())r.sort();return n}async function j1(e){let n=(await te.runPromise(te.all(e.map((r)=>te.result(te.tryPromise({try:r,catch:(i)=>i}))),{concurrency:"unbounded"}))).find(Kn.isFailure);if(n)throw n.failure}class zh{plugins=new Map;logger;events=new M1;daemonRegistry;shell=null;initializedPluginIds=[];pluginLifecycle;dependencyResolver;capabilityRegistrar;projectionRegistry=Dh.createFresh();projectionGraph;static createFresh(e,t){return new zh(e,t)}setShell(e){this.shell=e}constructor(e,t){this.logger=e.child("PluginManager"),this.events=new M1,this.daemonRegistry=t,this.pluginLifecycle=new fE(this.plugins,this.events,this.daemonRegistry,this.projectionRegistry,e),this.dependencyResolver=new gE(this.plugins,this.events,e),this.capabilityRegistrar=new hE(e,this.projectionRegistry)}registerPlugin(e){if(!e.id)throw new Mr("unknown","Registration failed: Plugin must have an id");if(this.logger.debug(`Registering plugin: ${e.id} (${e.version})`),this.plugins.has(e.id)){let i=this.plugins.get(e.id)?.plugin.version;throw new Mr(e.id,`Registration failed: Plugin is already registered with version ${i}`)}let t=e.dependencies??[],n={plugin:e,status:Ct.REGISTERED,dependencies:t};this.plugins.set(e.id,n),this.logger.debug(`Registered plugin: ${e.id} (${e.version})`),this.events.emit(zr.REGISTERED,e.id,e)}async initializePlugins(e){this.logger.debug("Initializing plugins..."),this.initializedPluginIds=[];let t=await this.dependencyResolver.resolveInitializationOrder(async(n)=>{await this.initializePlugin(n,e)});this.logger.debug(`Initialized ${t.initialized.size} of ${this.plugins.size} plugins`)}async registerInterfaceChannels(e,t){let n=this.shell;if(!n)throw Error("Cannot register interface channels: Shell not set. Call setShell() first.");for(let r of e)try{await r.registerChannelsForExecution?.(n,t)}catch(i){this.logger.error(`Channel registration failed for interface ${r.id}: ${Be(i)}`)}}async initializePlugin(e,t){if(!this.shell)throw new Mr(e,"Cannot initialize plugin: Shell not set. Call setShell() first.");let n=this.shell;try{let r=await this.pluginLifecycle.initializePlugin(e,n,t);await this.capabilityRegistrar.registerCapabilities(n,e,r,{executionOnly:t?.executionOnly}),this.initializedPluginIds.push(e)}catch(r){throw await this.pluginLifecycle.failPluginInitialization(e,r),r}}async finalizePluginRegistrations(){this.logger.debug("Finalizing plugin registrations...");for(let n of this.initializedPluginIds)await this.pluginLifecycle.finalizePluginRegistration(n);if(!this.shell)throw Error("Cannot validate projections before the shell is set");let e=this.shell.getEntityRegistry(),t=this.projectionRegistry.validate(e.getAllEntityTypes().map((n)=>{let r=e.getEntityTypeConfig(n);return{type:n,projectionSource:r.projectionSource!==!1&&r.projectionSourceRole!=="excluded"}}));this.projectionGraph=t;for(let n of t.unknownSourceTypes)this.logger.warn("Projection declares entity source types no installed plugin registers",{projectionId:n.projectionId,types:n.types});this.logger.debug("Validated projection graph",{projections:t.projections.length,edges:t.edges.length})}getProjectionGraphSnapshot(){if(!this.projectionGraph)throw Error("Projection graph has not been finalized");return this.projectionGraph}getProjectionRulesSnapshot(){if(!this.projectionGraph)throw Error("Projection graph has not been finalized");return Object.freeze(this.projectionRegistry.listRules())}async readyPlugins(){this.logger.debug("Dispatching plugin ready hooks...");try{await j1(this.initializedPluginIds.map((e)=>()=>this.pluginLifecycle.readyPlugin(e)))}catch(e){for(let t of this.initializedPluginIds){let n=this.plugins.get(t);if(n?.status===Ct.ERROR)await this.pluginLifecycle.failPluginInitialization(t,n.error??e)}throw e}}async startPluginDaemons(){this.logger.debug("Starting plugin daemons..."),await j1(this.initializedPluginIds.map((e)=>()=>this.pluginLifecycle.startPluginDaemons(e)))}getPlugin(e){return this.plugins.get(e)?.plugin}getPluginStatus(e){return this.plugins.get(e)?.status}hasPlugin(e){return this.plugins.has(e)}isPluginInitialized(e){return this.plugins.get(e)?.status===Ct.INITIALIZED}getAllPluginIds(){return Array.from(this.plugins.keys())}getAllPlugins(){return new Map(this.plugins)}getFailedPlugins(){return Array.from(this.plugins.entries()).filter((e)=>e[1].status===Ct.ERROR&&e[1].error!==void 0).map(([e,t])=>({id:e,error:t.error}))}getPluginPackageName(e){return this.plugins.get(e)?.plugin.packageName}async disablePlugin(e){await this.pluginLifecycle.disablePlugin(e)}async shutdownPlugins(){let e=new Set;for(let t of[...this.initializedPluginIds].reverse())await this.disablePlugin(t),e.add(t);for(let t of[...this.plugins.keys()].reverse())if(!e.has(t))await this.disablePlugin(t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}getEventEmitter(){return this.events}}var N1={public:0,trusted:1,admin:2},jte=[{id:"dashboard",pluginId:"dashboard",label:"Dashboard",visibility:"public",requiresActiveSession:!1},{id:"web-chat",pluginId:"web-chat",label:"Chat",visibility:"trusted",requiresActiveSession:!0},{id:"studio",pluginId:"studio",label:"Studio",visibility:"public",requiresActiveSession:!0}];function Nte(e,t){let n=N1[t.permissionLevel??"public"],r=[];for(let{id:i,pluginId:o,label:s,visibility:c,requiresActiveSession:l}of jte){let u=t.self?.id===i;if(!u&&(n<N1[c]||l&&t.hasActiveSession!==!0))continue;let p=e.filter((f)=>f.pluginId===o&&!(i==="studio"&&f.fullPath==="/chat")).map((f)=>f.fullPath).sort((f,v)=>f.length-v.length),m=i==="web-chat"&&p.length>0?e.find((f)=>f.pluginId==="studio"&&f.fullPath==="/chat")?.fullPath:void 0,g=u?t.self?.href:m??p[0];if(g!==void 0)r.push({id:i,label:s,href:g,isActive:i===t.activeId,...l?{requiresActiveSession:!0}:{}})}return r}export{Oc as va,Hm as wa,b as xa,Fu as ya,jc as za,A as Aa,Zo as Ba,H as Ca,cn as Da,Xi as Ea,PD as Fa,On as Ga,Ke as Ha,Xt as Ia,eo as Ja,na as Ka,ef as La,Ue as Ma,wt as Na,$D as Oa,Uo as Pa,xe as Qa,V as Ra,ot as Sa,ut as Ta,fx as Ua,Dn as Va,O as Wa,Rr as Xa,gf as Ya,Dx as Za,Xr as _a,ei as $a,$z as ab,C3 as bb,E3 as cb,Zt as db,Wo as eb,zt as fb,kt as gb,or as hb,to as ib,Qe as jb,Pr as kb,Uz as lb,Ii as mb,Si as nb,xi as ob,Wm as pb,wi as qb,Ac as rb,Cr as sb,YO as tb,Bte as ub,_te as vb,Mi as wb,Ut as xb,jh as yb,td as zb,Da as Ab,nr as Bb,QO as Cb,Sf as Db,xf as Eb,qx as Fb,Zx as Gb,vf as Hb,wf as Ib,Ux as Jb,Cf as Kb,qc as Lb,no as Mb,Jx as Nb,it as Ob,Zge as Pb,ar as Qb,ti as Rb,iv as Sb,ov as Tb,o5 as Ub,s5 as Vb,et as Wb,F1 as Xb,vE as Yb,x as Zb,Fe as _b,Pt as $b,ji as ac,Fn as bc,Br as cc,wE as dc,Jte as ec,Hte as fc,Gte as gc,id as hc,fs as ic,Nh as jc,CE as kc,Xte as lc,q1 as mc,ene as nc,bo as oc,IE as pc,tne as qc,nne as rc,rne as sc,ine as tc,one as uc,sne as vc,Z1 as wc,be as xc,So as yc,ane as zc,pt as Ac,$e as Bc,at as Cc,xo as Dc,vo as Ec,Qt as Fc,qh as Gc,_r as Hc,dt as Ic,ct as Jc,mne as Kc,Y1 as Lc,El as Mc,Ma as Nc,Nt as Oc,Jh as Pc,bne as Qc,nq as Rc,Il as Sc,wn as Tc,si as Uc,wne as Vc,iq as Wc,ai as Xc,Gn as Yc,sn as Zc,tt as _c,Lr as $c,Vh as ad,yt as bd,mn as cd,qr as dd,ze as ed,Yh as fd,Xh as gd,pi as hd,JE as id,dd as jd,Io as kd,Wne as ld,Ml as md,Jne as nd,Hne as od,oI as pd,bd as qd,ay as rd,sI as sd,Se as td,Pe as ud,xd as vd,Je as wd,an as xd,Cq as yd,uy as zd,py as Ad,dy as Bd,zq as Cd,jq as Dd,Is as Ed,Ro as Fd,Nq as Gd,di as Hd,qq as Id,Kq as Jd,qn as Kd,Zn as Ld,Zi as Md,kd as Nd,fn as Od,fi as Pd,Cn as Qd,Bl as Rd,Ha as Sd,gi as Td,At as Ud,Ga as Vd,He as Wd,gn as Xd,ny as Yd,md as Zd,je as _d,Me as $d,fZ as ae,fI as be,Ze as ce,gr as de,gI as ee,mi as fe,vd as ge,gy as he,yI as ie,wd as je,Kn as ke,Yne as le,nre as me,Td as ne,ire as oe,ore as pe,cre as qe,Et as re,lre as se,ure as te,pre as ue,dre as ve,vI as we,mre as xe,fre as ye,gre as ze,hre as Ae,yre as Be,jl as Ce,bre as De,Sre as Ee,xre as Fe,vre as Ge,wre as He,Ot as Ie,Ore as Je,u$ as Ke,Dre as Le,p$ as Me,Kt as Ne,Va as Oe,Fl as Pe,ks as Qe,hr as Re,f$ as Se,Zr as Te,zre as Ue,Mre as Ve,Ld as We,Nre as Xe,Bre as Ye,qd as Ze,Zd as _e,qre as $e,R$ as af,Zre as bf,As as cf,Ure as df,ko as ef,js as ff,Xa as gf,oe as hf,Oe as if,De as jf,Yl as kf,Le as lf,hn as mf,yn as nf,rm as of,hi as pf,ge as qf,$n as rf,im as sf,Yn as tf,iie as uf,Ui as vf,ac as wf,cc as xf,ru as yf,Mo as zf,uc as Af,zb as Bf,oP as Cf,jo as Df,Gi as Ef,fU as Ff,oie as Gf,sie as Hf,hU as If,aie as Jf,GP as Kf,yr as Lf,zU as Mf,UW as Nf,WW as Of,JW as Pf,sS as Qf,KW as Rf,XW as Sf,eJ as Tf,tJ as Uf,pu as Vf,nJ as Wf,du as Xf,iJ as Yf,sJ as Zf,cJ as _f,uJ as $f,pJ as ag,mJ as bg,gJ as cg,aS as dg,xJ as eg,Hr as fg,kJ as gg,jA as hg,Xn as ig,_J as jg,gu as kg,MU as lg,Hb as mg,Gb as ng,jU as og,NU as pg,BU as qg,_U as rg,Fs as sg,cu as tg,qU as ug,GU as vg,bt as wg,die as xg,Ls as yg,mie as zg,mc as Ag,fie as Bg,gie as Cg,qs as Dg,hie as Eg,yie as Fg,Vb as Gg,rW as Hg,Qb as Ig,dc as Jg,iW as Kg,oW as Lg,sW as Mg,lu as Ng,wm as Og,aW as Pg,vt as Qg,gc as Rg,Zs as Sg,uu as Tg,iS as Ug,RA as Vg,$s as Wg,yW as Xg,Rm as Yg,oS as Zg,bW as _g,fc as $g,vW as ah,Ws as bh,MA as ch,bu as dh,Js as eh,Pie as fh,ZA as gh,Aie as hh,GJ as ih,Oie as jh,$A as kh,Am as lh,Die as mh,zie as nh,Mie as oh,tH as ph,uS as qh,nH as rh,dS as sh,jie as th,hc as uh,oH as vh,Nie as wh,cH as xh,Fie as yh,Lie as zh,$ie as Ah,Uie as Bh,zm as Ch,Yie as Dh,SS as Eh,Xie as Fh,eoe as Gh,Su as Hh,Bo as Ih,bi as Jh,Tc as Kh,DH as Lh,LH as Mh,ZH as Nh,lO as Oh,Bm as Ph,wr as Qh,tG as Rh,fO as Sh,Vr as Th,wG as Uh,Ec as Vh,CG as Wh,EG as Xh,Vs as Yh,IG as Zh,RG as _h,Qi as $h,tr as ai,Tr as bi,kG as ci,ES as di,PG as ei,MG as fi,CS as gi,jG as hi,NG as ii,BG as ji,IO as ki,_G as li,FG as mi,Ic as ni,ZG as oi,Ki as pi,JG as qi,HG as ri,RO as si,kO as ti,Qs as ui,QG as vi,KG as wi,YG as xi,eV as yi,nV as zi,rV as Ai,oV as Bi,cV as Ci,lV as Di,mV as Ei,fV as Fi,gV as Gi,yV as Hi,PO as Ii,AO as Ji,wV as Ki,TV as Li,CV as Mi,EV as Ni,IV as Oi,OV as Pi,zV as Qi,MV as Ri,jV as Si,BV as Ti,LV as Ui,qV as Vi,$V as Wi,GV as Xi,VV as Yi,e2 as Zi,t2 as _i,Cu as $i,i2 as aj,o2 as bj,s2 as cj,c2 as dj,l2 as ej,u2 as fj,p2 as gj,DO as hj,f2 as ij,g2 as jj,h2 as kj,Eu as lj,x2 as mj,v2 as nj,C2 as oj,IS as pj,R2 as qj,Ks as rj,A2 as sj,O2 as tj,D2 as uj,zO as vj,j2 as wj,F2 as xj,Y2 as yj,X2 as zj,eQ as Aj,tQ as Bj,rQ as Cj,sQ as Dj,aQ as Ej,cQ as Fj,lQ as Gj,Iu as Hj,Ru as Ij,gQ as Jj,hQ as Kj,yQ as Lj,SQ as Mj,vQ as Nj,TQ as Oj,jO as Pj,EQ as Qj,RQ as Rj,PQ as Sj,OQ as Tj,MQ as Uj,QQ as Vj,KQ as Wj,YQ as Xj,XQ as Yj,eK as Zj,tK as _j,te as $j,ku as ak,rK as bk,iK as ck,oK as dk,aK as ek,cK as fk,Qr as gk,_O as hk,Rc as ik,LO as jk,qO as kk,Ioe as lk,AS as mk,Pn as nk,Ys as ok,rce as pk,_o as qk,uv as rk,dv as sk,oo as tk,_f as uk,P0 as vk,Vo as wk,A0 as xk,nbe as yk,rbe as zk,Ff as Ak,T as Bk,so as Ck,y as Dk,ne as Ek,h as Fk,ln as Gk,j0 as Hk,ao as Ik,lr as Jk,Mn as Kk,np as Lk,ce as Mk,_t as Nk,_e as Ok,F0 as Pk,L0 as Qk,qe as Rk,Wc as Sk,Jc as Tk,Ko as Uk,fM as Vk,ng as Wk,Yc as Xk,Fv as Yk,Lv as Zk,Qv as _k,lg as $k,aw as al,gg as bl,Sj as cl,xj as dl,Fo as el,ZS as fl,t4 as gl,lw as hl,vj as il,yg as jl,uw as kl,wj as ll,Ou as ml,Ece as nl,Ice as ol,$S as pl,Rce as ql,kce as rl,Pce as sl,Ace as tl,Oce as ul,Dce as vl,zce as wl,Mce as xl,dw as yl,Tj as zl,lo as Al,ol as Bl,_Ae as Cl,rT as Dl,iT as El,NN as Fl,BN as Gl,_N as Hl,FN as Il,H4 as Jl,G4 as Kl,wg as Ll,Q4 as Ml,il as Nl,ns as Ol,T4 as Pl,C4 as Ql,Y4 as Rl,ZN as Sl,e8 as Tl,WN as Ul,n8 as Vl,Tg as Wl,q as Xl,ft as Yl,is as Zl,gT as _l,yT as $l,bT as am,ST as bm,vp as cm,wp as dm,xT as em,vT as fm,v8 as gm,Hn as hm,Cg as im,Eg as jm,Aze as km,Oze as lm,w8 as mm,Dze as nm,Mze as om,A8 as pm,jze as qm,Nze as rm,Bze as sm,_ze as tm,Fze as um,Lze as vm,qze as wm,Zze as xm,$ze as ym,Uze as zm,Wze as Am,N8 as Bm,B8 as Cm,Hze as Dm,Gze as Em,Vze as Fm,Qze as Gm,Kze as Hm,Yze as Im,Xze as Jm,e0e as Km,le as Lm,$t as Mm,va as Nm,po as Om,Ig as Pm,Rg as Qm,hB as Rm,yB as Sm,q8 as Tm,kg as Um,mw as Vm,n4 as Wm,r4 as Xm,fw as Ym,gw as Zm,Ep as _m,Ag as $m,OT as an,J8 as bn,zT as cn,zg as dn,DT as en,MT as fn,V8 as gn,Mg as hn,Q8 as in,Bg as jn,Aj as kn,Bj as ln,Ew as mn,Ow as nn,kN as on,$g as pn,BT as qn,Ip as rn,FT as sn,RX as tn,kX as un,PX as vn,qT as wn,AX as xn,OX as yn,DX as zn,N7 as An,fl as Bn,oL as Cn,lL as Dn,FC as En,Nn as Fn,ah as Gn,pL as Hn,ZC as In,yL as Jn,$p as Kn,bL as Ln,hl as Mn,SL as Nn,JX as On,xL as Pn,vL as Qn,ree as Rn,TL as Sn,cee as Tn,lee as Un,uee as Vn,pee as Wn,dee as Xn,UC as Yn,go as Zn,See as _n,WC as $n,VC as ao,vee as bo,nn as co,rY as do,iY as eo,oY as fo,aY as go,e_ as ho,r_ as io,s_ as jo,oC as ko,c_ as lo,nF as mo,E7 as no,P7 as oo,u_ as po,d_ as qo,KT as ro,M7 as so,WNe as to,j7 as uo,pF as vo,Jg as wo,xC as xo,vC as yo,CF as zo,gl as Ao,Vg as Bo,Qg as Co,Fp as Do,Kg as Eo,DF as Fo,Lp as Go,V7 as Ho,Q7 as Io,K7 as Jo,Y7 as Ko,X7 as Lo,qp as Mo,Zp as No,Tee as Oo,zL as Po,Eee as Qo,_L as Ro,fX as So,bX as To,nh as Uo,ZF as Vo,$F as Wo,SX as Xo,FL as Yo,ih as Zo,NC as _o,IX as $o,LL as ap,yl as bp,UL as cp,WL as dp,JL as ep,HL as fp,VL as gp,YC as hp,XC as ip,XL as jp,eE as kp,gh as lp,n1 as mp,hh as np,tE as op,r1 as pp,i1 as qp,s1 as rp,a1 as sp,yh as tp,u1 as up,p1 as vp,Sh as wp,Jp as xp,Hp as yp,d1 as zp,m1 as Ap,f1 as Bp,aE as Cp,Gp as Dp,h1 as Ep,y1 as Fp,b1 as Gp,S1 as Hp,x1 as Ip,hte as Jp,Eh as Kp,v1 as Lp,Ih as Mp,Rh as Np,kh as Op,w1 as Pp,Ia as Qp,Ph as Rp,Kp as Sp,T1 as Tp,pE as Up,E1 as Vp,wte as Wp,dE as Xp,Ite as Yp,Rte as Zp,Mr as _p,zh as $p,Nte as aq};
195
+ `).flatMap((t)=>{let n=t.match(Tte);if(!n)return[];let r=(n[3]??"").split(",").map((i)=>i.trim()).filter(Boolean);return[{name:n[1]??"",description:n[2]??"",tags:r}]})}var P1=new ns(Oh,{title:"Agent",mappings:[{key:"about",label:"About",type:"string"},{key:"skills",label:"Skills",type:"custom",formatter:Cte,parser:Ete},{key:"notes",label:"Notes",type:"string"}]});function Ite(e){return P1.format(e)}function Rte(e){if(!e.trim())return Oh.parse({});try{return P1.parse(e)}catch{return Oh.parse({})}}import{EventEmitter as M1}from"events";var Ct={REGISTERED:"registered",INITIALIZED:"initialized",ERROR:"error",DISABLED:"disabled"},zr={REGISTERED:"plugin:registered",BEFORE_INITIALIZE:"plugin:before_initialize",INITIALIZED:"plugin:initialized",ERROR:"plugin:error",DISABLED:"plugin:disabled"};class Mr extends Error{pluginId;constructor(e,t){super(`Plugin ${e}: ${t}`);this.name="PluginError",this.pluginId=e}}function A1(e,t){return Reflect.get(e,t,e)}function O1(e,t,n){if(typeof e!=="function")throw TypeError("Cannot apply a non-callable trapped member");return Reflect.apply(e,t,n)}class mE{scope;ingress=new Set;closePromise=null;closed=!1;constructor(){this.scope=ne.runSync(vt.make())}assertOpen(){if(this.closed)throw Error("Cannot register a resource after plugin teardown")}acquire(e,t){this.assertOpen();let n=e();try{this.addFinalizer(()=>t(n))}catch(r){try{t(n)}catch(i){throw AggregateError([r,i],"Plugin acquisition rollback failed",{cause:i})}throw r}return n}addFinalizer(e){this.assertOpen(),ne.runSync(vt.addFinalizer(this.scope,ne.promise(async()=>{await e()})))}addIngress(e){this.assertOpen(),this.ingress.add(e)}close(e=bt.void){return this.closed=!0,this.closePromise??=this.closeScope(e),this.closePromise}async closeScope(e){let t,n=!1,r=[...this.ingress].reverse();for(let c of r)try{c.stopAdmission()}catch(l){if(!n)t=l;n=!0}let i=await Promise.allSettled(r.map((c)=>Promise.resolve().then(()=>c.drain())));this.ingress.clear();let o=i.find((c)=>c.status==="rejected");if(!n&&o)t=o.reason,n=!0;let s=await ne.runPromiseExit(vt.close(this.scope,e));if(!n&&bt.isFailure(s))t=Xn.squash(s.cause),n=!0;if(n)throw t}}function Xp(e,t,n,r){return new Proxy(e,{get(i,o){let s=A1(i,o);if(typeof o==="string"&&t.some((c)=>c===o)&&typeof s==="function")return(...c)=>n.acquire(()=>O1(s,i,c),(l)=>r(c,l));return typeof s==="function"?s.bind(i):s}})}function Yp(e,t,n){return Xp(e,t,n,(r)=>{let i=r[0];if(typeof i==="string")e.unregisterPlugin(i)})}function D1(e,t){let n=e.getMessageBus(),r=new Set,i={send:(G)=>n.send(G),hasHandlers:(G)=>n.hasHandlers?.(G)??!1,subscribe:(G,I,ee)=>{t.assertOpen();let he=!0,Ee=new Set,We=(se)=>{if(!he)return{noop:!0};let ue,Ae=new Promise((rt)=>{ue=rt});Ee.add(Ae);let ie=()=>{Ee.delete(Ae),ue()},Xe;try{Xe=Promise.resolve(I(se))}catch(rt){throw ie(),rt}return Xe.then((rt)=>(ie(),rt),(rt)=>{throw ie(),rt})},Ye=n.subscribe(G,We,ee),Ie={type:G,originalHandler:I,stopAdmission:()=>{if(!he)return;he=!1,Ye(),r.delete(Ie)}};r.add(Ie);try{t.addIngress({stopAdmission:Ie.stopAdmission,drain:async()=>{await Promise.all(Ee)}})}catch(se){throw Ie.stopAdmission(),se}return Ie.stopAdmission},unsubscribe:(G,I)=>{let ee=[...r].filter((he)=>he.type===G&&he.originalHandler===I);if(ee.length===0){n.unsubscribe(G,I);return}for(let he of ee)he.stopAdmission()},collect:(G)=>n.collect(G),validateMessage:(G,I)=>n.validateMessage(G,I),getHandlerCount:(G)=>n.getHandlerCount(G),getTargetedHandlerCount:(G,I)=>n.getTargetedHandlerCount(G,I),clearHandlers:(G)=>n.clearHandlers(G),clearAllHandlers:()=>n.clearAllHandlers()},o=e.getAttachmentRegistry(),s={...o,register:(G,I,ee)=>t.acquire(()=>o.register(G,I,ee),(he)=>he())},c=e.getEntityRegistry(),l=Xp(c,["registerEntityType"],t,(G)=>{let I=G[0];if(typeof I==="string")c.unregisterEntityType(I)}),u=Yp(e.getProfileKindRegistry(),["register"],t),p=Yp(e.getChannelRegistry(),["registerDescriptor","registerDeliveryProvider"],t),m=Yp(e.getInboxRegistry(),["registerSource"],t),g=Yp(e.getInboxFollowUpRegistry(),["registerKind"],t),f=e.getAccountSettingsRegistry(),v=Xp(f,["register"],t,(G,I)=>{O1(f.unregister,f,[I])}),w=Yp(e.getOperationalHealthRegistry(),["register"],t),k=e.getDataSourceRegistry(),P=Xp(k,["register"],t,(G)=>{let I=G[0];if(typeof I==="object"&&I!==null&&"id"in I&&typeof I.id==="string"){let ee=I.id.includes(":")?I.id:`shell:${I.id}`;k.unregister(ee)}}),B=e.getInsightsRegistry(),j=Xp(B,["register"],t,(G)=>{let I=G[0];if(typeof I==="string")B.unregister(I)}),Y=new Proxy(e,{get(G,I){if(I==="getMessageBus")return()=>i;if(I==="getAttachmentRegistry")return()=>s;if(I==="getEntityRegistry")return()=>l;if(I==="getDataSourceRegistry")return()=>P;if(I==="getProfileKindRegistry")return()=>u;if(I==="getChannelRegistry")return()=>p;if(I==="getInboxRegistry")return()=>m;if(I==="getInboxFollowUpRegistry")return()=>g;if(I==="getOperationalHealthRegistry")return()=>w;if(I==="getAccountSettingsRegistry")return()=>v;if(I==="getInsightsRegistry")return()=>j;let ee=A1(G,I);return typeof ee==="function"?ee.bind(G):ee}});return yF(e,Y),Y}class fE{plugins;events;daemonRegistry;logger;projectionRegistry;resourceScopes=new Map;releasePromises=new Map;constructor(e,t,n,r,i){this.plugins=e,this.events=t,this.daemonRegistry=n,this.projectionRegistry=r,this.logger=i.child("PluginLifecycle")}async initializePlugin(e,t,n){let r=this.plugins.get(e);if(!r)throw new Mr(e,"Registration failed: Plugin is not registered");let i=r.plugin,o=new mE;o.addFinalizer(()=>t.unregisterPluginCapabilities?.(e)),o.addFinalizer(()=>t.getJobQueueService().unregisterPluginHandlers(e)),o.addFinalizer(()=>this.projectionRegistry.unregisterPlugin(e)),this.resourceScopes.set(e,o),this.releasePromises.delete(e),this.logger.debug(`Initializing plugin: ${e}`);try{this.events.emit(zr.BEFORE_INITIALIZE,e,i);let s=await i.register(D1(t,o),n);return r.status=Ct.INITIALIZED,this.logger.debug(`Initialized plugin: ${e}`),this.events.emit(zr.INITIALIZED,e,i),s}catch(s){throw this.logger.error(`Error initializing plugin ${e}: ${Be(s)}`),await this.failPluginInitialization(e,s),s}}async finalizePluginRegistration(e){let t=this.plugins.get(e);if(!t)throw new Mr(e,"Registration finalization failed: Plugin is not registered");if(t.status!==Ct.INITIALIZED)return;try{await t.plugin.finalizeRegistration?.(),this.logger.debug(`Registration finalized for plugin: ${e}`)}catch(n){throw await this.failPluginInitialization(e,n),n}}async readyPlugin(e){let t=this.plugins.get(e);if(!t)throw new Mr(e,"Ready failed: Plugin is not registered");if(t.status!==Ct.INITIALIZED){this.logger.debug(`Skipping ready hook for non-initialized plugin: ${e}`);return}try{await t.plugin.ready?.(),this.logger.debug(`Ready hook completed for plugin: ${e}`)}catch(n){let r=sl(n);t.status=Ct.ERROR,t.error=r;try{this.events.emit(zr.ERROR,e,r)}catch(i){this.logger.error(`Plugin error listener failed for ${e}`,i)}throw r}}async startPluginDaemons(e){let t=this.plugins.get(e);if(t?.status!==Ct.INITIALIZED)return;try{await this.daemonRegistry.startPlugin(e),this.logger.debug(`Started daemons for plugin: ${e}`)}catch(n){if(t.plugin.requiresDaemonStartup?.())throw n;this.logger.warn(`Daemon ${e} failed to start: ${Be(n)}`)}}async failPluginInitialization(e,t){let n=this.plugins.get(e);if(!n)return;let r=n.status!==Ct.ERROR,i=sl(t);if(n.status=Ct.ERROR,n.error=i,await this.releasePluginResources(e,bt.fail(t)),r)try{this.events.emit(zr.ERROR,e,i)}catch(o){this.logger.error(`Plugin error listener failed for ${e}`,o)}}async disablePlugin(e){let t=this.plugins.get(e);if(!t){this.logger.warn(`Cannot disable plugin ${e}: not registered`);return}if(t.status===Ct.DISABLED)return;this.logger.debug(`Disabling plugin: ${e}`);let n=t.status===Ct.ERROR;await this.releasePluginResources(e,bt.void);let r=this.plugins.get(e);if(!n&&r&&r.status!==Ct.DISABLED)r.status=Ct.DISABLED,this.events.emit(zr.DISABLED,e,r.plugin);this.logger.debug(`Disabled plugin: ${e}`)}releasePluginResources(e,t){let n=this.releasePromises.get(e);if(n)return n;let r=this.releasePluginResourcesOnce(e,t);return this.releasePromises.set(e,r),r}async releasePluginResourcesOnce(e,t){let n=this.plugins.get(e);if(!n)return;try{await this.daemonRegistry.stopPlugin(e),this.logger.debug(`Stopped daemons for plugin: ${e}`)}catch(i){this.logger.error(`Failed to stop daemons for plugin: ${e}`,i)}let r=this.resourceScopes.get(e);if(this.resourceScopes.delete(e),r)try{await r.close(t)}catch(i){this.logger.error(`Failed to close resources for plugin ${e}`,i)}if(n.plugin.shutdown)try{await n.plugin.shutdown(),this.logger.debug(`Shutdown completed for plugin: ${e}`)}catch(i){this.logger.error(`Plugin shutdown failed for ${e}:`,i)}for(let i of this.daemonRegistry.getByPlugin(e))try{await this.daemonRegistry.unregister(i.name)}catch(o){this.logger.error(`Failed to unregister daemon ${i.name} for plugin ${e}`,o)}}}class gE{plugins;events;logger;constructor(e,t,n){this.plugins=e,this.events=t,this.logger=n.child("DependencyResolver")}async resolveInitializationOrder(e){this.logger.debug("Resolving plugin initialization order...");let t=Array.from(this.plugins.keys()),n=new Set,r=!0;while(r&&n.size<t.length){r=!1;for(let s of t){if(n.has(s))continue;if(!this.plugins.get(s))continue;if(this.getUnmetDependencies(s).length===0)try{await e(s),n.add(s),r=!0}catch(u){let p=Be(u);this.logger.error(`Failed to initialize plugin ${s}: ${p}`),n.add(s),r=!0}}}let i=t.filter((s)=>!n.has(s));if(i.length>0){let s=i.join(", ");this.logger.error(`Failed to initialize plugins due to dependency issues: ${s}`);for(let c of i){let l=this.getUnmetDependencies(c);this.logger.error(`Plugin ${c} has unmet dependencies: ${l.join(", ")}`);let u=this.plugins.get(c);if(u)u.status=Ct.ERROR,u.error=new Mr(c,`Unmet dependencies: ${l.join(", ")}`);this.events.emit(zr.ERROR,c,u?.error)}}let o=new Set;for(let[s,c]of this.plugins)if(c.status===Ct.INITIALIZED)o.add(s);return this.logger.debug(`Resolved ${o.size} of ${t.length} plugins`),{initialized:o,failed:i}}getUnmetDependencies(e){let t=this.plugins.get(e);if(!t)return[];let{dependencies:n}=t,r=[];for(let i of n){let o=this.plugins.get(i);if(!o){r.push(i);continue}if(o.status!==Ct.INITIALIZED)r.push(i)}return r}}class hE{logger;projectionRegistry;constructor(e,t){this.logger=e.child("CapabilityRegistrar"),this.projectionRegistry=t}async registerCapabilities(e,t,n,r){if(!r?.executionOnly&&n.tools.length>0)e.registerTools(t,n.tools),this.logger.debug(`Registered ${n.tools.length} tools from ${t}`);if(!r?.executionOnly&&n.resources.length>0)e.registerResources(t,n.resources),this.logger.debug(`Registered ${n.resources.length} resources from ${t}`);if(!r?.executionOnly&&n.instructions)e.registerInstructions(t,n.instructions),this.logger.debug(`Registered instructions from ${t}`);let i=n.projectionRules??[];try{for(let o of i)this.projectionRegistry.registerRule(t,o)}catch(o){throw this.projectionRegistry.unregisterPlugin(t),o}if(i.length>0)this.logger.debug(`Registered ${i.length} projection rules from ${t}`)}}class Dh{projections=new Map;rules=new Map;static createFresh(){return new Dh}constructor(){}registerRule(e,t){if(!Object.isFrozen(t))throw Error(`Projection rule "${t.id}" must be created with defineProjectionRule`);let n=this.projections.get(t.id);if(n)throw Error(`Projection "${t.id}" is already registered by "${n.pluginId}"`);let r={id:t.id,pluginId:e,targetType:t.targetType,sources:t.sources.map((o)=>({kind:o.kind,types:[...o.types],...o.excludeTypes?{excludeTypes:[...o.excludeTypes]}:{}}))};this.projections.set(t.id,r),this.rules.set(t.id,t);let i=!0;return()=>{if(!i)return;if(i=!1,this.rules.get(t.id)===t)this.rules.delete(t.id);if(this.projections.get(t.id)===r)this.projections.delete(t.id)}}unregisterPlugin(e){for(let[t,n]of this.projections)if(n.pluginId===e)this.projections.delete(t),this.rules.delete(t)}list(){return Array.from(this.projections.values()).sort((e,t)=>e.id.localeCompare(t.id)).map(Ate)}listRules(){return[...this.rules.values()].sort((e,t)=>e.id.localeCompare(t.id))}validate(e){let t=this.list(),n=new Set(e.map(({type:s})=>s));for(let s of t)if(!n.has(s.targetType))throw Error(`Projection "${s.id}" targets unregistered entity type "${s.targetType}"`);let r=e.filter(({projectionSource:s})=>s).map(({type:s})=>s).sort(),i=Ote(t,r),o=zte(t,i)[0];if(o){let s=Mte(o,i);throw Error(`Projection cycle is not supported: ${[...s,s[0]].join(" -> ")}`)}return Pte({projections:t,edges:i,unknownSourceTypes:kte(t,n)})}}function kte(e,t){let n=[];for(let r of e){let i=[...new Set(r.sources.flatMap((o)=>[...o.types,...o.excludeTypes??[]]).filter((o)=>o!=="*"&&!t.has(o)))].sort();if(i.length>0)n.push({projectionId:r.id,types:i})}return n}function Pte(e){for(let t of e.projections){for(let n of t.sources){if(Object.freeze(n.types),n.excludeTypes)Object.freeze(n.excludeTypes);Object.freeze(n)}Object.freeze(t.sources),Object.freeze(t)}for(let t of e.edges)Object.freeze(t.causes),Object.freeze(t);for(let t of e.unknownSourceTypes)Object.freeze(t.types),Object.freeze(t);return Object.freeze(e.unknownSourceTypes),Object.freeze(e.projections),Object.freeze(e.edges),Object.freeze(e)}function Ate(e){return{...e,sources:e.sources.map((t)=>({...t,types:[...t.types],...t.excludeTypes?{excludeTypes:[...t.excludeTypes]}:{}}))}}function Ote(e,t){let n=new Map;for(let r of e)for(let i of e){let o=Dte(r,i,t);if(o.length===0)continue;n.set(`${r.id}\x00${i.id}`,new Set(o))}return Array.from(n,([r,i])=>{let[o="",s=""]=r.split("\x00");return{from:o,to:s,causes:[...i].sort()}}).sort((r,i)=>r.from.localeCompare(i.from)||r.to.localeCompare(i.to))}function Dte(e,t,n){let r=[];for(let i of t.sources){let o=new Set(i.excludeTypes??[]);if((i.types.includes("*")?[...i.types.filter((c)=>c!=="*"),...n]:i.types).includes(e.targetType)&&!o.has(e.targetType))r.push(`entity:${e.targetType}`)}return[...new Set(r)]}function zte(e,t){let n=e.map(({id:m})=>m).sort(),r=z1(n,t),i=new Map,o=new Map,s=[],c=new Set,l=[],u=0,p=(m)=>{i.set(m,u),o.set(m,u),u++,s.push(m),c.add(m);for(let w of r.get(m)??[])if(!i.has(w))p(w),o.set(m,Math.min(o.get(m)??0,o.get(w)??0));else if(c.has(w))o.set(m,Math.min(o.get(m)??0,i.get(w)??0));if(o.get(m)!==i.get(m))return;let g=[],f;do{if(f=s.pop(),!f)break;c.delete(f),g.push(f)}while(f!==m);let v=r.get(m)?.includes(m)??!1;if(g.length>1||v)l.push(g.sort())};for(let m of n)if(!i.has(m))p(m);return l.sort((m,g)=>(m[0]??"").localeCompare(g[0]??""))}function Mte(e,t){let n=new Set(e),r=z1(e,t),i=[...e].sort()[0];if(!i)return[];if(r.get(i)?.includes(i))return[i];let o=(s,c)=>{for(let l of r.get(s)??[]){if(!n.has(l))continue;if(l===i)return c;if(c.includes(l))continue;let u=o(l,[...c,l]);if(u)return u}return};return o(i,[i])??[...e].sort()}function z1(e,t){let n=new Map;for(let r of e)n.set(r,[]);for(let r of t){let i=n.get(r.from);if(i&&!i.includes(r.to))i.push(r.to)}for(let r of n.values())r.sort();return n}async function j1(e){let n=(await ne.runPromise(ne.all(e.map((r)=>ne.result(ne.tryPromise({try:r,catch:(i)=>i}))),{concurrency:"unbounded"}))).find(Kn.isFailure);if(n)throw n.failure}class zh{plugins=new Map;logger;events=new M1;daemonRegistry;shell=null;initializedPluginIds=[];pluginLifecycle;dependencyResolver;capabilityRegistrar;projectionRegistry=Dh.createFresh();projectionGraph;static createFresh(e,t){return new zh(e,t)}setShell(e){this.shell=e}constructor(e,t){this.logger=e.child("PluginManager"),this.events=new M1,this.daemonRegistry=t,this.pluginLifecycle=new fE(this.plugins,this.events,this.daemonRegistry,this.projectionRegistry,e),this.dependencyResolver=new gE(this.plugins,this.events,e),this.capabilityRegistrar=new hE(e,this.projectionRegistry)}registerPlugin(e){if(!e.id)throw new Mr("unknown","Registration failed: Plugin must have an id");if(this.logger.debug(`Registering plugin: ${e.id} (${e.version})`),this.plugins.has(e.id)){let i=this.plugins.get(e.id)?.plugin.version;throw new Mr(e.id,`Registration failed: Plugin is already registered with version ${i}`)}let t=e.dependencies??[],n={plugin:e,status:Ct.REGISTERED,dependencies:t};this.plugins.set(e.id,n),this.logger.debug(`Registered plugin: ${e.id} (${e.version})`),this.events.emit(zr.REGISTERED,e.id,e)}async initializePlugins(e){this.logger.debug("Initializing plugins..."),this.initializedPluginIds=[];let t=await this.dependencyResolver.resolveInitializationOrder(async(n)=>{await this.initializePlugin(n,e)});this.logger.debug(`Initialized ${t.initialized.size} of ${this.plugins.size} plugins`)}async registerInterfaceChannels(e,t){let n=this.shell;if(!n)throw Error("Cannot register interface channels: Shell not set. Call setShell() first.");for(let r of e)try{await r.registerChannelsForExecution?.(n,t)}catch(i){this.logger.error(`Channel registration failed for interface ${r.id}: ${Be(i)}`)}}async initializePlugin(e,t){if(!this.shell)throw new Mr(e,"Cannot initialize plugin: Shell not set. Call setShell() first.");let n=this.shell;try{let r=await this.pluginLifecycle.initializePlugin(e,n,t);await this.capabilityRegistrar.registerCapabilities(n,e,r,{executionOnly:t?.executionOnly}),this.initializedPluginIds.push(e)}catch(r){throw await this.pluginLifecycle.failPluginInitialization(e,r),r}}async finalizePluginRegistrations(){this.logger.debug("Finalizing plugin registrations...");for(let n of this.initializedPluginIds)await this.pluginLifecycle.finalizePluginRegistration(n);if(!this.shell)throw Error("Cannot validate projections before the shell is set");let e=this.shell.getEntityRegistry(),t=this.projectionRegistry.validate(e.getAllEntityTypes().map((n)=>{let r=e.getEntityTypeConfig(n);return{type:n,projectionSource:r.projectionSource!==!1&&r.projectionSourceRole!=="excluded"}}));this.projectionGraph=t;for(let n of t.unknownSourceTypes)this.logger.warn("Projection declares entity source types no installed plugin registers",{projectionId:n.projectionId,types:n.types});this.logger.debug("Validated projection graph",{projections:t.projections.length,edges:t.edges.length})}getProjectionGraphSnapshot(){if(!this.projectionGraph)throw Error("Projection graph has not been finalized");return this.projectionGraph}getProjectionRulesSnapshot(){if(!this.projectionGraph)throw Error("Projection graph has not been finalized");return Object.freeze(this.projectionRegistry.listRules())}async readyPlugins(){this.logger.debug("Dispatching plugin ready hooks...");try{await j1(this.initializedPluginIds.map((e)=>()=>this.pluginLifecycle.readyPlugin(e)))}catch(e){for(let t of this.initializedPluginIds){let n=this.plugins.get(t);if(n?.status===Ct.ERROR)await this.pluginLifecycle.failPluginInitialization(t,n.error??e)}throw e}}async startPluginDaemons(){this.logger.debug("Starting plugin daemons..."),await j1(this.initializedPluginIds.map((e)=>()=>this.pluginLifecycle.startPluginDaemons(e)))}getPlugin(e){return this.plugins.get(e)?.plugin}getPluginStatus(e){return this.plugins.get(e)?.status}hasPlugin(e){return this.plugins.has(e)}isPluginInitialized(e){return this.plugins.get(e)?.status===Ct.INITIALIZED}getAllPluginIds(){return Array.from(this.plugins.keys())}getAllPlugins(){return new Map(this.plugins)}getFailedPlugins(){return Array.from(this.plugins.entries()).filter((e)=>e[1].status===Ct.ERROR&&e[1].error!==void 0).map(([e,t])=>({id:e,error:t.error}))}getPluginPackageName(e){return this.plugins.get(e)?.plugin.packageName}async disablePlugin(e){await this.pluginLifecycle.disablePlugin(e)}async shutdownPlugins(){let e=new Set;for(let t of[...this.initializedPluginIds].reverse())await this.disablePlugin(t),e.add(t);for(let t of[...this.plugins.keys()].reverse())if(!e.has(t))await this.disablePlugin(t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}getEventEmitter(){return this.events}}var N1={public:0,trusted:1,admin:2},jte=[{id:"dashboard",pluginId:"dashboard",label:"Dashboard",visibility:"public",requiresActiveSession:!1},{id:"web-chat",pluginId:"web-chat",label:"Chat",visibility:"trusted",requiresActiveSession:!0},{id:"studio",pluginId:"studio",label:"Studio",visibility:"public",requiresActiveSession:!0}];function Nte(e,t){let n=N1[t.permissionLevel??"public"],r=[];for(let{id:i,pluginId:o,label:s,visibility:c,requiresActiveSession:l}of jte){let u=t.self?.id===i;if(!u&&(n<N1[c]||l&&t.hasActiveSession!==!0))continue;let p=e.filter((f)=>f.pluginId===o&&!(i==="studio"&&f.fullPath==="/chat")).map((f)=>f.fullPath).sort((f,v)=>f.length-v.length),m=i==="web-chat"&&p.length>0?e.find((f)=>f.pluginId==="studio"&&f.fullPath==="/chat")?.fullPath:void 0,g=u?t.self?.href:m??p[0];if(g!==void 0)r.push({id:i,label:s,href:g,isActive:i===t.activeId,...l?{requiresActiveSession:!0}:{}})}return r}export{Oc as va,Hm as wa,b as xa,Fu as ya,jc as za,A as Aa,Zo as Ba,H as Ca,cn as Da,Xi as Ea,PD as Fa,On as Ga,Ke as Ha,Xt as Ia,eo as Ja,na as Ka,ef as La,Ue as Ma,wt as Na,$D as Oa,Uo as Pa,xe as Qa,V as Ra,ot as Sa,ut as Ta,fx as Ua,Dn as Va,O as Wa,Rr as Xa,gf as Ya,Dx as Za,Xr as _a,ei as $a,$z as ab,C3 as bb,E3 as cb,Zt as db,Wo as eb,zt as fb,kt as gb,or as hb,to as ib,Qe as jb,Pr as kb,Uz as lb,Ii as mb,Si as nb,xi as ob,Wm as pb,wi as qb,Ac as rb,Cr as sb,YO as tb,Bte as ub,_te as vb,Mi as wb,Ut as xb,jh as yb,td as zb,Da as Ab,nr as Bb,QO as Cb,Sf as Db,xf as Eb,qx as Fb,Zx as Gb,vf as Hb,wf as Ib,Ux as Jb,Cf as Kb,qc as Lb,no as Mb,Jx as Nb,it as Ob,Zge as Pb,ar as Qb,ti as Rb,iv as Sb,ov as Tb,o5 as Ub,s5 as Vb,et as Wb,F1 as Xb,vE as Yb,x as Zb,Fe as _b,Pt as $b,ji as ac,Fn as bc,Br as cc,wE as dc,Jte as ec,Hte as fc,Gte as gc,id as hc,fs as ic,Nh as jc,CE as kc,Xte as lc,q1 as mc,ene as nc,bo as oc,IE as pc,tne as qc,nne as rc,rne as sc,ine as tc,one as uc,sne as vc,Z1 as wc,be as xc,So as yc,ane as zc,pt as Ac,$e as Bc,at as Cc,xo as Dc,vo as Ec,Qt as Fc,qh as Gc,_r as Hc,dt as Ic,ct as Jc,mne as Kc,Y1 as Lc,El as Mc,Ma as Nc,Nt as Oc,Jh as Pc,bne as Qc,nq as Rc,Il as Sc,wn as Tc,si as Uc,wne as Vc,iq as Wc,ai as Xc,Gn as Yc,sn as Zc,tt as _c,Lr as $c,Vh as ad,yt as bd,mn as cd,qr as dd,ze as ed,Yh as fd,Xh as gd,pi as hd,JE as id,dd as jd,Io as kd,Wne as ld,Ml as md,Jne as nd,Hne as od,oI as pd,bd as qd,ay as rd,sI as sd,Se as td,Pe as ud,xd as vd,Je as wd,an as xd,Cq as yd,uy as zd,py as Ad,dy as Bd,zq as Cd,jq as Dd,Is as Ed,Ro as Fd,Nq as Gd,di as Hd,qq as Id,Kq as Jd,qn as Kd,Zn as Ld,Zi as Md,kd as Nd,fn as Od,fi as Pd,Cn as Qd,Bl as Rd,Ha as Sd,gi as Td,At as Ud,Ga as Vd,He as Wd,gn as Xd,ny as Yd,md as Zd,je as _d,Me as $d,fZ as ae,fI as be,Ze as ce,gr as de,gI as ee,mi as fe,vd as ge,gy as he,yI as ie,wd as je,Kn as ke,Yne as le,nre as me,Td as ne,ire as oe,ore as pe,cre as qe,Et as re,lre as se,ure as te,pre as ue,dre as ve,vI as we,mre as xe,fre as ye,gre as ze,hre as Ae,yre as Be,jl as Ce,bre as De,Sre as Ee,xre as Fe,vre as Ge,wre as He,Ot as Ie,Ore as Je,u$ as Ke,Dre as Le,p$ as Me,Kt as Ne,Va as Oe,Fl as Pe,ks as Qe,hr as Re,f$ as Se,Zr as Te,zre as Ue,Mre as Ve,Ld as We,Nre as Xe,Bre as Ye,qd as Ze,Zd as _e,qre as $e,R$ as af,Zre as bf,As as cf,Ure as df,ko as ef,js as ff,Xa as gf,oe as hf,Oe as if,De as jf,Yl as kf,Le as lf,hn as mf,yn as nf,rm as of,hi as pf,ge as qf,$n as rf,im as sf,Yn as tf,iie as uf,Ui as vf,ac as wf,cc as xf,ru as yf,Mo as zf,uc as Af,zb as Bf,oP as Cf,jo as Df,Gi as Ef,fU as Ff,oie as Gf,sie as Hf,hU as If,aie as Jf,GP as Kf,yr as Lf,zU as Mf,UW as Nf,WW as Of,JW as Pf,sS as Qf,KW as Rf,XW as Sf,eJ as Tf,tJ as Uf,pu as Vf,nJ as Wf,du as Xf,iJ as Yf,sJ as Zf,cJ as _f,uJ as $f,pJ as ag,mJ as bg,gJ as cg,aS as dg,xJ as eg,Hr as fg,kJ as gg,jA as hg,Xn as ig,_J as jg,gu as kg,MU as lg,Hb as mg,Gb as ng,jU as og,NU as pg,BU as qg,_U as rg,Fs as sg,cu as tg,qU as ug,GU as vg,bt as wg,die as xg,Ls as yg,mie as zg,mc as Ag,fie as Bg,gie as Cg,qs as Dg,hie as Eg,yie as Fg,Vb as Gg,rW as Hg,Qb as Ig,dc as Jg,iW as Kg,oW as Lg,sW as Mg,lu as Ng,wm as Og,aW as Pg,vt as Qg,gc as Rg,Zs as Sg,uu as Tg,iS as Ug,RA as Vg,$s as Wg,yW as Xg,Rm as Yg,oS as Zg,bW as _g,fc as $g,vW as ah,Ws as bh,MA as ch,bu as dh,Js as eh,Pie as fh,ZA as gh,Aie as hh,GJ as ih,Oie as jh,$A as kh,Am as lh,Die as mh,zie as nh,Mie as oh,tH as ph,uS as qh,nH as rh,dS as sh,jie as th,hc as uh,oH as vh,Nie as wh,cH as xh,Fie as yh,Lie as zh,$ie as Ah,Uie as Bh,zm as Ch,Yie as Dh,SS as Eh,Xie as Fh,eoe as Gh,Su as Hh,Bo as Ih,bi as Jh,Tc as Kh,DH as Lh,LH as Mh,ZH as Nh,lO as Oh,Bm as Ph,wr as Qh,tG as Rh,fO as Sh,Vr as Th,wG as Uh,Ec as Vh,CG as Wh,EG as Xh,Vs as Yh,IG as Zh,RG as _h,Qi as $h,tr as ai,Tr as bi,kG as ci,ES as di,PG as ei,MG as fi,CS as gi,jG as hi,NG as ii,BG as ji,IO as ki,_G as li,FG as mi,Ic as ni,ZG as oi,Ki as pi,JG as qi,HG as ri,RO as si,kO as ti,Qs as ui,QG as vi,KG as wi,YG as xi,eV as yi,nV as zi,rV as Ai,oV as Bi,cV as Ci,lV as Di,mV as Ei,fV as Fi,gV as Gi,yV as Hi,PO as Ii,AO as Ji,wV as Ki,TV as Li,CV as Mi,EV as Ni,IV as Oi,OV as Pi,zV as Qi,MV as Ri,jV as Si,BV as Ti,LV as Ui,qV as Vi,$V as Wi,GV as Xi,VV as Yi,e2 as Zi,t2 as _i,Cu as $i,i2 as aj,o2 as bj,s2 as cj,c2 as dj,l2 as ej,u2 as fj,p2 as gj,DO as hj,f2 as ij,g2 as jj,h2 as kj,Eu as lj,x2 as mj,v2 as nj,C2 as oj,IS as pj,R2 as qj,Ks as rj,A2 as sj,O2 as tj,D2 as uj,zO as vj,j2 as wj,F2 as xj,Y2 as yj,X2 as zj,eQ as Aj,tQ as Bj,rQ as Cj,sQ as Dj,aQ as Ej,cQ as Fj,lQ as Gj,Iu as Hj,Ru as Ij,gQ as Jj,hQ as Kj,yQ as Lj,SQ as Mj,vQ as Nj,TQ as Oj,jO as Pj,EQ as Qj,RQ as Rj,PQ as Sj,OQ as Tj,MQ as Uj,QQ as Vj,KQ as Wj,YQ as Xj,XQ as Yj,eK as Zj,tK as _j,ne as $j,ku as ak,rK as bk,iK as ck,oK as dk,aK as ek,cK as fk,Qr as gk,_O as hk,Rc as ik,LO as jk,qO as kk,Ioe as lk,AS as mk,Pn as nk,Ys as ok,rce as pk,_o as qk,uv as rk,dv as sk,oo as tk,_f as uk,P0 as vk,Vo as wk,A0 as xk,nbe as yk,rbe as zk,Ff as Ak,T as Bk,so as Ck,y as Dk,te as Ek,h as Fk,ln as Gk,j0 as Hk,ao as Ik,lr as Jk,Mn as Kk,np as Lk,ce as Mk,_t as Nk,_e as Ok,F0 as Pk,L0 as Qk,qe as Rk,Wc as Sk,Jc as Tk,Ko as Uk,fM as Vk,ng as Wk,Yc as Xk,Fv as Yk,Lv as Zk,Qv as _k,lg as $k,aw as al,gg as bl,Sj as cl,xj as dl,Fo as el,ZS as fl,t4 as gl,lw as hl,vj as il,yg as jl,uw as kl,wj as ll,Ou as ml,Ece as nl,Ice as ol,$S as pl,Rce as ql,kce as rl,Pce as sl,Ace as tl,Oce as ul,Dce as vl,zce as wl,Mce as xl,dw as yl,Tj as zl,lo as Al,ol as Bl,_Ae as Cl,rT as Dl,iT as El,NN as Fl,BN as Gl,_N as Hl,FN as Il,H4 as Jl,G4 as Kl,wg as Ll,Q4 as Ml,il as Nl,ns as Ol,T4 as Pl,C4 as Ql,Y4 as Rl,ZN as Sl,e8 as Tl,WN as Ul,n8 as Vl,Tg as Wl,q as Xl,ft as Yl,is as Zl,gT as _l,yT as $l,bT as am,ST as bm,vp as cm,wp as dm,xT as em,vT as fm,v8 as gm,Hn as hm,Cg as im,Eg as jm,Aze as km,Oze as lm,w8 as mm,Dze as nm,Mze as om,A8 as pm,jze as qm,Nze as rm,Bze as sm,_ze as tm,Fze as um,Lze as vm,qze as wm,Zze as xm,$ze as ym,Uze as zm,Wze as Am,N8 as Bm,B8 as Cm,Hze as Dm,Gze as Em,Vze as Fm,Qze as Gm,Kze as Hm,Yze as Im,Xze as Jm,e0e as Km,le as Lm,$t as Mm,va as Nm,po as Om,Ig as Pm,Rg as Qm,hB as Rm,yB as Sm,q8 as Tm,kg as Um,mw as Vm,n4 as Wm,r4 as Xm,fw as Ym,gw as Zm,Ep as _m,Ag as $m,OT as an,J8 as bn,zT as cn,zg as dn,DT as en,MT as fn,V8 as gn,Mg as hn,Q8 as in,Bg as jn,Aj as kn,Bj as ln,Ew as mn,Ow as nn,kN as on,$g as pn,BT as qn,Ip as rn,FT as sn,RX as tn,kX as un,PX as vn,qT as wn,AX as xn,OX as yn,DX as zn,N7 as An,fl as Bn,oL as Cn,lL as Dn,FC as En,Nn as Fn,ah as Gn,pL as Hn,ZC as In,yL as Jn,$p as Kn,bL as Ln,hl as Mn,SL as Nn,JX as On,xL as Pn,vL as Qn,ree as Rn,TL as Sn,cee as Tn,lee as Un,uee as Vn,pee as Wn,dee as Xn,UC as Yn,go as Zn,See as _n,WC as $n,VC as ao,vee as bo,nn as co,rY as do,iY as eo,oY as fo,aY as go,e_ as ho,r_ as io,s_ as jo,oC as ko,c_ as lo,nF as mo,E7 as no,P7 as oo,u_ as po,d_ as qo,KT as ro,M7 as so,WNe as to,j7 as uo,pF as vo,Jg as wo,xC as xo,vC as yo,CF as zo,gl as Ao,Vg as Bo,Qg as Co,Fp as Do,Kg as Eo,DF as Fo,Lp as Go,V7 as Ho,Q7 as Io,K7 as Jo,Y7 as Ko,X7 as Lo,qp as Mo,Zp as No,Tee as Oo,zL as Po,Eee as Qo,_L as Ro,fX as So,bX as To,nh as Uo,ZF as Vo,$F as Wo,SX as Xo,FL as Yo,ih as Zo,NC as _o,IX as $o,LL as ap,yl as bp,UL as cp,WL as dp,JL as ep,HL as fp,VL as gp,YC as hp,XC as ip,XL as jp,eE as kp,gh as lp,n1 as mp,hh as np,tE as op,r1 as pp,i1 as qp,s1 as rp,a1 as sp,yh as tp,u1 as up,p1 as vp,Sh as wp,Jp as xp,Hp as yp,d1 as zp,m1 as Ap,f1 as Bp,aE as Cp,Gp as Dp,h1 as Ep,y1 as Fp,b1 as Gp,S1 as Hp,x1 as Ip,hte as Jp,Eh as Kp,v1 as Lp,Ih as Mp,Rh as Np,kh as Op,w1 as Pp,Ia as Qp,Ph as Rp,Kp as Sp,T1 as Tp,pE as Up,E1 as Vp,wte as Wp,dE as Xp,Ite as Yp,Rte as Zp,Mr as _p,zh as $p,Nte as aq};
196
196
 
197
- //# debugId=3C9E87665A4413F564756E2164756E21
198
- //# sourceMappingURL=index-r714prkq.js.map
197
+ //# debugId=6E43C1B51A2E71DD64756E2164756E21
198
+ //# sourceMappingURL=index-zthgv4br.js.map