Files
oikos/web/dist/assets/KnowledgeBase-BNxdKIZ7.js
dtoro d4d99a7473
Some checks failed
ci / build-test (push) Has been cancelled
ci / docker-build (push) Has been cancelled
feat: Phase 1 — extract the client (web SPA + desktop) to dtoro/oikos-web
Problem: the hexagonal refactor churns the backend tree for nine more
phases; the UI delivery stack (web/ SPA, cmd/desktop Wails wrapper,
compose/web image) must move to its own repo first so doc/layout
rewrites land once on a backend-only tree.

Change:
- New repo git.hubris.network/dtoro/oikos-web (v0.33.0): web/, desktop/
  (updateURL repointed to oikos-web releases), compose/, own CI (web +
  desktop jobs), own deploy script (CI-green gate, TOCTOU guard,
  version-tagged images, prune-to-3), own webhook receiver on :9798 +
  launchd unit, own compose project publishing the same 8091:80.
- Cutover executed on mac-mini in order: oikos stack's web service
  stopped+removed, oikos-web project brought up on 8091; outer Caddy
  untouched (targets the published port) — serving + Authentik flow +
  /wails 404 quirk verified post-cutover.
- Stripped from oikos: web/, cmd/desktop/, compose/web/, desktop CI
  workflow, ci.yml web job, Makefile ui/desktop/desktop-package/install
  targets, the compose web service, oikos-web from deploy.sh's fallback
  prune list; wails + go-keyring dropped from go.mod, vendor synced.
- README / CONTRIBUTING / AGENTS.md / .agents dev+operations docs now
  point at the new repo; mbse + mascot design docs carry a path note.

Risk: production SPA serving depends on the new pipeline now; rollback
is versioned-image re-up of the old web service from a pre-split
checkout (port 8091). Desktop builds installed before the split still
check dtoro/oikos releases — one manual reinstall, noted in the
oikos-web release notes.

Verification: go vet, make test (race), make generate-check, golangci
(no new findings; baseline down 400→365); post-cutover curls —
localhost:8091 200, /wails/runtime.js 404, outer Caddy 302 Authentik.
2026-08-15 22:27:52 +02:00

5 lines
41 KiB
JavaScript

var ea=Object.defineProperty;var Ss=v=>{throw TypeError(v)};var ta=(v,s,d)=>s in v?ea(v,s,{enumerable:!0,configurable:!0,writable:!0,value:d}):v[s]=d;var Ct=(v,s,d)=>ta(v,typeof s!="symbol"?s+"":s,d),Ps=(v,s,d)=>s.has(v)||Ss("Cannot "+d);var We=(v,s,d)=>(Ps(v,s,"read from private field"),d?d.call(v):s.get(v)),_t=(v,s,d)=>s.has(v)?Ss("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(v):s.set(v,d);var cs=(v,s,d)=>(Ps(v,s,"access private method"),d);import{G as sa,H as Ls,u as m,g as e,D as L,I as aa,S as ra,J as Ms,K as na,L as la,M as oa,N as ia,O as ca,p as Qe,P as da,Q as Ie,j as K,R as ee,a as o,b as Ze,U as At,V as Ns,W as ve,X as Rs,Y as ua,Z as yt,s as l,_ as ht,$ as kt,a0 as ot,f as b,a1 as Os,c as r,a2 as et,a3 as os,a4 as Ht,a5 as qt,x as Bs,y as Ve,a6 as us,a7 as D,a8 as xt,i as Fe,a9 as Et,E as at,t as q,aa as Je,e as _,ab as va,ac as Dt,C as vt,ad as ha,ae as fa,o as zs,v as Ds,af as vs,ag as As,ah as qs,ai as pa,aj as Ws,ak as ga,z as hs,w as Fs,m as Is,al as Vs,d as as,B as ls,am as wa,an as Bt,ao as _a,ap as ya,aq as ma,ar as ba,as as $a,at as xa,au as ka,av as Sa,aw as Pa,ax as Ma}from"./index-B5w8gw75.js";import{S as Vt,E as Ta,a as Ca,H as Ea}from"./StatusBadgeRenderer-BEdJTFrn.js";import{H as Ha}from"./hidden-input-CbX2doyK.js";const Gs=ca({component:"switch",parts:["root","thumb"]}),_s=new sa("Switch.Root");var Gt,ps,Ut,jt,Kt;const ys=class ys{constructor(s){_t(this,Gt);Ct(this,"opts");Ct(this,"attachment");_t(this,Ut,m(()=>({"data-disabled":Ms(this.opts.disabled.current),"data-state":na(this.opts.checked.current),"data-required":Ms(this.opts.required.current)})));_t(this,jt,m(()=>({checked:this.opts.checked.current})));_t(this,Kt,m(()=>({...this.sharedProps,id:this.opts.id.current,role:"switch",disabled:ia(this.opts.disabled.current),"aria-checked":oa(this.opts.checked.current,!1),"aria-required":la(this.opts.required.current),[Gs.root]:"",onclick:this.onclick,onkeydown:this.onkeydown,...this.attachment})));this.opts=s,this.attachment=Ls(s.ref),this.onkeydown=this.onkeydown.bind(this),this.onclick=this.onclick.bind(this)}static create(s){return _s.set(new ys(s))}onkeydown(s){!(s.key===aa||s.key===ra)||this.opts.disabled.current||(s.preventDefault(),cs(this,Gt,ps).call(this))}onclick(s){this.opts.disabled.current||cs(this,Gt,ps).call(this)}get sharedProps(){return e(We(this,Ut))}set sharedProps(s){L(We(this,Ut),s)}get snippetProps(){return e(We(this,jt))}set snippetProps(s){L(We(this,jt),s)}get props(){return e(We(this,Kt))}set props(s){L(We(this,Kt),s)}};Gt=new WeakSet,ps=function(){this.opts.checked.current=!this.opts.checked.current},Ut=new WeakMap,jt=new WeakMap,Kt=new WeakMap;let fs=ys;var Xt,Yt;const ms=class ms{constructor(s){Ct(this,"root");_t(this,Xt,m(()=>this.root.opts.name.current!==void 0));_t(this,Yt,m(()=>({type:"checkbox",name:this.root.opts.name.current,value:this.root.opts.value.current,checked:this.root.opts.checked.current,disabled:this.root.opts.disabled.current,required:this.root.opts.required.current})));this.root=s}static create(){return new ms(_s.get())}get shouldRender(){return e(We(this,Xt))}set shouldRender(s){L(We(this,Xt),s)}get props(){return e(We(this,Yt))}set props(s){L(We(this,Yt),s)}};Xt=new WeakMap,Yt=new WeakMap;let gs=ms;var Jt,Qt;const bs=class bs{constructor(s,d){Ct(this,"opts");Ct(this,"root");Ct(this,"attachment");_t(this,Jt,m(()=>({checked:this.root.opts.checked.current})));_t(this,Qt,m(()=>({...this.root.sharedProps,id:this.opts.id.current,[Gs.thumb]:"",...this.attachment})));this.opts=s,this.root=d,this.attachment=Ls(s.ref)}static create(s){return new bs(s,_s.get())}get snippetProps(){return e(We(this,Jt))}set snippetProps(s){L(We(this,Jt),s)}get props(){return e(We(this,Qt))}set props(s){L(We(this,Qt),s)}};Jt=new WeakMap,Qt=new WeakMap;let ws=bs;function La(v,s){Qe(s,!1);const d=gs.create();da();var S=Ie(),w=K(S);{var O=y=>{Ha(y,At(()=>d.props))};ee(w,y=>{d.shouldRender&&y(O)})}o(v,S),Ze()}var Na=new Set(["$$slots","$$events","$$legacy","child","children","ref","id","disabled","required","checked","value","name","type","onCheckedChange"]),Ra=b("<button><!></button>"),Oa=b("<!> <!>",1);function Ba(v,s){const d=Ns();Qe(s,!0);let S=ve(s,"ref",15,null),w=ve(s,"id",19,()=>Rs(d)),O=ve(s,"disabled",3,!1),y=ve(s,"required",3,!1),W=ve(s,"checked",15,!1),ae=ve(s,"value",3,"on"),he=ve(s,"name",3,void 0),ne=ve(s,"type",3,"button"),Ge=ve(s,"onCheckedChange",3,ua),X=et(s,Na);const F=fs.create({checked:yt(()=>W(),Pe=>{var me;W(Pe),(me=Ge())==null||me(Pe)}),disabled:yt(()=>O()??!1),required:yt(()=>y()),value:yt(()=>ae()),name:yt(()=>he()),id:yt(()=>w()),ref:yt(()=>S(),Pe=>S(Pe))}),le=m(()=>Os(X,F.props,{type:ne()}));var te=Oa(),oe=K(te);{var ft=Pe=>{var me=Ie(),x=K(me);{let ie=m(()=>({props:e(le),...F.snippetProps}));ht(x,()=>s.child,()=>e(ie))}o(Pe,me)},mt=Pe=>{var me=Ra();kt(me,()=>({...e(le)}));var x=r(me);ht(x,()=>s.children??ot,()=>F.snippetProps),o(Pe,me)};ee(oe,Pe=>{s.child?Pe(ft):Pe(mt,-1)})}var pt=l(oe,2);La(pt,{}),o(v,te),Ze()}var za=new Set(["$$slots","$$events","$$legacy","child","children","ref","id"]),Da=b("<span><!></span>");function Aa(v,s){const d=Ns();Qe(s,!0);let S=ve(s,"ref",15,null),w=ve(s,"id",19,()=>Rs(d)),O=et(s,za);const y=ws.create({id:yt(()=>w()),ref:yt(()=>S(),X=>S(X))}),W=m(()=>Os(O,y.props));var ae=Ie(),he=K(ae);{var ne=X=>{var F=Ie(),le=K(F);{let te=m(()=>({props:e(W),...y.snippetProps}));ht(le,()=>s.child,()=>e(te))}o(X,F)},Ge=X=>{var F=Da();kt(F,()=>({...e(W)}));var le=r(F);ht(le,()=>s.children??ot,()=>y.snippetProps),o(X,F)};ee(he,X=>{s.child?X(ne):X(Ge,-1)})}o(v,ae),Ze()}var qa=new Set(["$$slots","$$events","$$legacy"]);function Wa(v,s){let d=et(s,qa);const S=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"}],["path",{d:"M2 12h20"}]];os(v,At({name:"globe"},()=>d,{get iconNode(){return S}}))}var Fa=new Set(["$$slots","$$events","$$legacy"]);function Ia(v,s){let d=et(s,Fa);const S=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1"}]];os(v,At({name:"lock-open"},()=>d,{get iconNode(){return S}}))}var Va=new Set(["$$slots","$$events","$$legacy"]);function Ga(v,s){let d=et(s,Va);const S=[["circle",{cx:"18",cy:"5",r:"3"}],["circle",{cx:"6",cy:"12",r:"3"}],["circle",{cx:"18",cy:"19",r:"3"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49"}]];os(v,At({name:"share-2"},()=>d,{get iconNode(){return S}}))}var Ua=new Set(["$$slots","$$events","$$legacy"]);function ja(v,s){let d=et(s,Ua);const S=[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18"}]];os(v,At({name:"table-2"},()=>d,{get iconNode(){return S}}))}var Ka=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),Xa=b('<div data-slot="table-container" class="relative w-full overflow-x-auto"><table><!></table></div>');function Ts(v,s){Qe(s,!0);let d=ve(s,"ref",15,null),S=et(s,Ka);var w=Xa(),O=r(w);kt(O,W=>({"data-slot":"table",class:W,...S}),[()=>Ht("w-full caption-bottom text-sm",s.class)]);var y=r(O);ht(y,()=>s.children??ot),qt(O,W=>d(W),()=>d()),o(v,w),Ze()}var Ya=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),Ja=b("<tbody><!></tbody>");function Cs(v,s){Qe(s,!0);let d=ve(s,"ref",15,null),S=et(s,Ya);var w=Ja();kt(w,y=>({"data-slot":"table-body",class:y,...S}),[()=>Ht("[&_tr:last-child]:border-0",s.class)]);var O=r(w);ht(O,()=>s.children??ot),qt(w,y=>d(y),()=>d()),o(v,w),Ze()}var Qa=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),Za=b("<td><!></td>");function dt(v,s){Qe(s,!0);let d=ve(s,"ref",15,null),S=et(s,Qa);var w=Za();kt(w,y=>({"data-slot":"table-cell",class:y,...S}),[()=>Ht("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",s.class)]);var O=r(w);ht(O,()=>s.children??ot),qt(w,y=>d(y),()=>d()),o(v,w),Ze()}var er=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),tr=b("<th><!></th>");function ut(v,s){Qe(s,!0);let d=ve(s,"ref",15,null),S=et(s,er);var w=tr();kt(w,y=>({"data-slot":"table-head",class:y,...S}),[()=>Ht("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",s.class)]);var O=r(w);ht(O,()=>s.children??ot),qt(w,y=>d(y),()=>d()),o(v,w),Ze()}var sr=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),ar=b("<thead><!></thead>");function Es(v,s){Qe(s,!0);let d=ve(s,"ref",15,null),S=et(s,sr);var w=ar();kt(w,y=>({"data-slot":"table-header",class:y,...S}),[()=>Ht("[&_tr]:border-b",s.class)]);var O=r(w);ht(O,()=>s.children??ot),qt(w,y=>d(y),()=>d()),o(v,w),Ze()}var rr=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),nr=b("<tr><!></tr>");function rs(v,s){Qe(s,!0);let d=ve(s,"ref",15,null),S=et(s,rr);var w=nr();kt(w,y=>({"data-slot":"table-row",class:y,...S}),[()=>Ht("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",s.class)]);var O=r(w);ht(O,()=>s.children??ot),qt(w,y=>d(y),()=>d()),o(v,w),Ze()}var ns=b("<!> <!> <!> <!> <!>",1),lr=b('<div class="flex items-center gap-1.5"><!> <!></div>'),ds=b("<!> <!>",1),or=b('<div class="h-full min-h-0 overflow-hidden rounded-md border"><!></div>'),ir=b('<button type="button" class="rounded text-muted-foreground hover:text-foreground"><!></button>'),cr=b('<span class="text-muted-foreground"> </span>'),dr=b('<span class="flex items-center gap-1"><span class="inline-flex size-3.5 shrink-0 items-center justify-center"><!></span> <!></span>'),ur=b('<div class="h-full min-h-0 overflow-auto rounded-md border"><!></div>');function vr(v,s){Qe(s,!0);let d=ve(s,"selectedSlug",3,null),S=ve(s,"childToParent",3,null),w=Ve("slug"),O=Ve("asc"),y=Ve(us(new Set));function W(x,ie){ie.stopPropagation();const Y=new Set(e(y));Y.has(x)?Y.delete(x):Y.add(x),L(y,Y,!0)}function ae(x){e(w)===x?L(O,e(O)==="asc"?"desc":"asc",!0):(L(w,x,!0),L(O,"asc"))}function he(x){return e(w)!==x?{sorted:!1,direction:"asc"}:{sorted:!0,direction:e(O)}}const ne={down:0,degraded:1,stale:2,unknown:3,healthy:4};function Ge(x,ie){return ie==="health"?x.health?ne[x.health]??-1:-1:(x[ie]??"").toString().toLowerCase()}const X=m(()=>{const x=[...s.entities].sort((ie,Y)=>{const be=Ge(ie,e(w)),Oe=Ge(Y,e(w));return be<Oe?-1:be>Oe?1:0});return e(O)==="desc"&&x.reverse(),x}),F=m(()=>{const x=new Map;if(!S())return x;const ie=new Set(s.entities.map(Y=>Y.slug));for(const Y of e(X)){const be=S().get(Y.slug);be&&ie.has(be)&&(x.has(be)||x.set(be,[]),x.get(be).push(Y))}return x}),le=m(()=>{const x=new Set;for(const ie of e(F).values())for(const Y of ie)x.add(Y.slug);return x}),te=m(()=>S()?e(X).filter(x=>!e(le).has(x.slug)):e(X)),oe=["w-24","w-20","w-28","w-16","w-24","w-20","w-28","w-16"],ft=["w-32","w-40","w-24","w-36","w-28","w-40","w-24","w-32"];var mt=Ie(),pt=K(mt);{var Pe=x=>{var ie=or(),Y=r(ie);D(Y,()=>Ts,(be,Oe)=>{Oe(be,{children:(I,rt)=>{var He=ds(),it=K(He);D(it,()=>Es,(Xe,tt)=>{tt(Xe,{children:(Be,u)=>{var H=Ie(),C=K(H);D(C,()=>rs,(E,$e)=>{$e(E,{children:(ce,fe)=>{var we=ns(),ze=K(we);D(ze,()=>ut,(J,N)=>{N(J,{children:(A,pe)=>{var de=xt("Slug");o(A,de)},$$slots:{default:!0}})});var Me=l(ze,2);D(Me,()=>ut,(J,N)=>{N(J,{children:(A,pe)=>{var de=xt("Type");o(A,de)},$$slots:{default:!0}})});var Ue=l(Me,2);D(Ue,()=>ut,(J,N)=>{N(J,{children:(A,pe)=>{var de=xt("Name");o(A,de)},$$slots:{default:!0}})});var p=l(Ue,2);D(p,()=>ut,(J,N)=>{N(J,{children:(A,pe)=>{var de=xt("State");o(A,de)},$$slots:{default:!0}})});var g=l(p,2);D(g,()=>ut,(J,N)=>{N(J,{children:(A,pe)=>{var de=xt("Health");o(A,de)},$$slots:{default:!0}})}),o(ce,we)},$$slots:{default:!0}})}),o(Be,H)},$$slots:{default:!0}})});var P=l(it,2);D(P,()=>Cs,(Xe,tt)=>{tt(Xe,{children:(Be,u)=>{var H=Ie(),C=K(H);Fe(C,17,()=>oe,at,(E,$e,ce)=>{var fe=Ie(),we=K(fe);D(we,()=>rs,(ze,Me)=>{Me(ze,{class:"hover:bg-transparent",children:(Ue,p)=>{var g=ns(),J=K(g);D(J,()=>dt,(Q,Te)=>{Te(Q,{children:(Z,Ce)=>{Et(Z,{get class(){return`h-4 ${e($e)??""}`}})},$$slots:{default:!0}})});var N=l(J,2);D(N,()=>dt,(Q,Te)=>{Te(Q,{children:(Z,Ce)=>{Et(Z,{class:"h-5 w-16 rounded-full"})},$$slots:{default:!0}})});var A=l(N,2);D(A,()=>dt,(Q,Te)=>{Te(Q,{children:(Z,Ce)=>{Et(Z,{get class(){return`h-4 ${ft[ce]??""}`}})},$$slots:{default:!0}})});var pe=l(A,2);D(pe,()=>dt,(Q,Te)=>{Te(Q,{children:(Z,Ce)=>{Et(Z,{class:"h-5 w-14 rounded-full"})},$$slots:{default:!0}})});var de=l(pe,2);D(de,()=>dt,(Q,Te)=>{Te(Q,{children:(Z,Ce)=>{var Le=lr(),nt=r(Le);Et(nt,{class:"size-2 shrink-0 rounded-full"});var a=l(nt,2);Et(a,{class:"h-4 w-12"}),o(Z,Le)},$$slots:{default:!0}})}),o(Ue,g)},$$slots:{default:!0}})}),o(E,fe)}),o(Be,H)},$$slots:{default:!0}})}),o(I,He)},$$slots:{default:!0}})}),o(x,ie)},me=x=>{const ie=(Oe,I=ot,rt=ot,He=ot)=>{const it=m(()=>new Set(He()).add(I().slug)),P=m(()=>(e(F).get(I().slug)??[]).filter(C=>!e(it).has(C.slug)));var Xe=ds(),tt=K(Xe);{let C=m(()=>I().slug===d()?"bg-muted":""),E=m(()=>e(P).length>0?!e(y).has(I().slug):void 0);D(tt,()=>rs,($e,ce)=>{ce($e,{get class(){return`cursor-pointer ${e(C)??""}`},role:"row",get"aria-level"(){return rt()},get"aria-expanded"(){return e(E)},tabindex:0,onclick:()=>s.onSelect(I().slug),onkeydown:fe=>{(fe.key==="Enter"||fe.key===" ")&&(fe.preventDefault(),s.onSelect(I().slug))},children:(fe,we)=>{var ze=ns(),Me=K(ze);D(Me,()=>dt,(N,A)=>{A(N,{class:"font-mono text-xs",children:(pe,de)=>{var Q=dr(),Te=r(Q),Z=r(Te);{var Ce=n=>{var c=ir(),f=r(c);{var G=Ne=>{ha(Ne,{class:"size-3.5"})},ge=m(()=>e(y).has(I().slug)),De=Ne=>{fa(Ne,{class:"size-3.5"})};ee(f,Ne=>{e(ge)?Ne(G):Ne(De,-1)})}q(Ne=>Dt(c,"aria-label",Ne),[()=>e(y).has(I().slug)?`Expand ${I().slug}`:`Collapse ${I().slug}`]),vt("click",c,Ne=>W(I().slug,Ne)),o(n,c)};ee(Z,n=>{e(P).length>0&&n(Ce)})}var Le=l(Te),nt=l(Le);{var a=n=>{var c=cr(),f=r(c);q(()=>_(f,`(${e(P).length??""})`)),o(n,c)};ee(nt,n=>{e(P).length>0&&n(a)})}q(()=>{Je(Q,`padding-left: ${(rt()-1)*1.25}rem`),_(Le,` ${I().slug??""} `)}),o(pe,Q)},$$slots:{default:!0}})});var Ue=l(Me,2);D(Ue,()=>dt,(N,A)=>{A(N,{children:(pe,de)=>{va(pe,{variant:"outline",children:(Q,Te)=>{var Z=xt();q(()=>_(Z,I().type)),o(Q,Z)},$$slots:{default:!0}})},$$slots:{default:!0}})});var p=l(Ue,2);D(p,()=>dt,(N,A)=>{A(N,{children:(pe,de)=>{var Q=xt();q(()=>_(Q,I().name)),o(pe,Q)},$$slots:{default:!0}})});var g=l(p,2);D(g,()=>dt,(N,A)=>{A(N,{children:(pe,de)=>{{let Q=m(()=>I().state??"");Ca(pe,{get value(){return e(Q)},kind:"state"})}},$$slots:{default:!0}})});var J=l(g,2);D(J,()=>dt,(N,A)=>{A(N,{children:(pe,de)=>{Ea(pe,{get row(){return I()},value:null})},$$slots:{default:!0}})}),o(fe,ze)},$$slots:{default:!0}})})}var Be=l(tt,2);{var u=C=>{var E=Ie(),$e=K(E);Fe($e,17,()=>e(P),ce=>ce.id,(ce,fe)=>{ie(ce,()=>e(fe),()=>rt()+1,()=>e(it))}),o(C,E)},H=m(()=>e(P).length>0&&!e(y).has(I().slug));ee(Be,C=>{e(H)&&C(u)})}o(Oe,Xe)};var Y=ur(),be=r(Y);{let Oe=m(()=>S()?"treegrid":void 0);D(be,()=>Ts,(I,rt)=>{rt(I,{get role(){return e(Oe)},children:(He,it)=>{var P=ds(),Xe=K(P);D(Xe,()=>Es,(Be,u)=>{u(Be,{children:(H,C)=>{var E=Ie(),$e=K(E);D($e,()=>rs,(ce,fe)=>{fe(ce,{children:(we,ze)=>{const Me=m(()=>he("slug")),Ue=m(()=>he("type")),p=m(()=>he("name")),g=m(()=>he("state")),J=m(()=>he("health"));var N=ns(),A=K(N);D(A,()=>ut,(Z,Ce)=>{Ce(Z,{children:(Le,nt)=>{Vt(Le,{label:"Slug",get sorted(){return e(Me).sorted},get direction(){return e(Me).direction},onclick:()=>ae("slug")})},$$slots:{default:!0}})});var pe=l(A,2);D(pe,()=>ut,(Z,Ce)=>{Ce(Z,{children:(Le,nt)=>{Vt(Le,{label:"Type",get sorted(){return e(Ue).sorted},get direction(){return e(Ue).direction},onclick:()=>ae("type")})},$$slots:{default:!0}})});var de=l(pe,2);D(de,()=>ut,(Z,Ce)=>{Ce(Z,{children:(Le,nt)=>{Vt(Le,{label:"Name",get sorted(){return e(p).sorted},get direction(){return e(p).direction},onclick:()=>ae("name")})},$$slots:{default:!0}})});var Q=l(de,2);D(Q,()=>ut,(Z,Ce)=>{Ce(Z,{children:(Le,nt)=>{Vt(Le,{label:"State",get sorted(){return e(g).sorted},get direction(){return e(g).direction},onclick:()=>ae("state")})},$$slots:{default:!0}})});var Te=l(Q,2);D(Te,()=>ut,(Z,Ce)=>{Ce(Z,{children:(Le,nt)=>{Vt(Le,{label:"Health",get sorted(){return e(J).sorted},get direction(){return e(J).direction},onclick:()=>ae("health")})},$$slots:{default:!0}})}),o(we,N)},$$slots:{default:!0}})}),o(H,E)},$$slots:{default:!0}})});var tt=l(Xe,2);D(tt,()=>Cs,(Be,u)=>{u(Be,{children:(H,C)=>{var E=Ie(),$e=K(E);Fe($e,17,()=>e(te),ce=>ce.id,(ce,fe)=>{ie(ce,()=>e(fe),()=>1,()=>new Set)},ce=>{Ta(ce,{message:"No entities in this layer match the filter.",colspan:5})}),o(H,E)},$$slots:{default:!0}})}),o(He,P)},$$slots:{default:!0}})})}o(x,Y)};ee(pt,x=>{s.loading?x(Pe):x(me,-1)})}o(v,mt),Ze()}Bs(["click"]);var hr=b('<button type="button"><span class="dot svelte-ywuw22"></span> <b class="svelte-ywuw22"> </b> </button>'),fr=b("<!> Show problems",1),pr=b("<!> Reset",1),gr=b('<div class="lane-head svelte-ywuw22"> <b class="svelte-ywuw22"> </b></div>'),wr=ya("<path></path>"),_r=b('<span class="badge svelte-ywuw22"><!></span>'),yr=b('<button type="button"><!> <span class="nm svelte-ywuw22"> </span> <span class="meta svelte-ywuw22"> </span></button>'),zt=b('<button type="button" class="link svelte-ywuw22"><span class="d svelte-ywuw22"></span> <span class="t svelte-ywuw22"> </span> <span class="sub svelte-ywuw22"> </span></button>'),Hs=b('<div class="det-sec svelte-ywuw22"><h4 class="svelte-ywuw22"> </h4> <!></div>'),mr=b('<div class="p-4 svelte-ywuw22"><div class="det-kind svelte-ywuw22">status</div> <div class="det-name svelte-ywuw22">Problems</div> <div class="blast svelte-ywuw22"><div class="n warn svelte-ywuw22"> </div> <div class="lbl svelte-ywuw22"> </div></div> <!></div>'),br=b('<div class="p-4 svelte-ywuw22"><div class="det-kind svelte-ywuw22">status</div> <div class="det-name svelte-ywuw22"> </div> <div class="blast svelte-ywuw22"><div class="n svelte-ywuw22"> </div> <div class="lbl svelte-ywuw22"> </div></div> <div class="det-sec svelte-ywuw22"><h4 class="svelte-ywuw22"> </h4> <!></div></div>'),$r=b('<div class="row svelte-ywuw22"><span class="k svelte-ywuw22">type</span><span class="v svelte-ywuw22"> </span></div>'),xr=b('<div class="row svelte-ywuw22"><span class="k svelte-ywuw22">role</span><span class="v svelte-ywuw22"> </span></div>'),kr=b('<div class="row svelte-ywuw22"><span class="k svelte-ywuw22">ip</span><span class="v svelte-ywuw22"> </span></div>'),Sr=b('<div class="row svelte-ywuw22"><span class="k svelte-ywuw22">url</span><span class="v svelte-ywuw22"> </span></div> <div class="row svelte-ywuw22"><span class="k svelte-ywuw22">exposure</span><span class="v svelte-ywuw22"> </span></div>',1),Pr=b('<div class="row svelte-ywuw22"><span class="k svelte-ywuw22">url</span><span class="v svelte-ywuw22"> </span></div>'),Mr=b('<div class="row svelte-ywuw22"><span class="k svelte-ywuw22">mounts</span><span class="v svelte-ywuw22"> </span></div>'),Tr=b('<div class="row svelte-ywuw22"><span class="k svelte-ywuw22">config</span><span class="v svelte-ywuw22"> </span></div>'),Cr=b('<div class="det-sec svelte-ywuw22"><h4 class="svelte-ywuw22">Runs on</h4> <!></div>'),Er=b('<div class="det-sec svelte-ywuw22"><h4 class="svelte-ywuw22">Depends on</h4> <!></div>'),Hr=b('<div class="det-sec svelte-ywuw22"><h4 class="svelte-ywuw22">Depended on by</h4> <!></div>'),Lr=b('<div class="p-4 svelte-ywuw22"><div class="det-kind svelte-ywuw22"> </div> <div class="det-name svelte-ywuw22"> </div> <span class="det-health svelte-ywuw22"><span class="d svelte-ywuw22"></span> </span> <div class="blast svelte-ywuw22"><div> </div> <div class="lbl svelte-ywuw22"> </div></div> <div class="det-sec svelte-ywuw22"><h4 class="svelte-ywuw22">Attributes</h4> <!> <!> <!> <!> <!> <!></div> <!> <!> <!> <!></div>'),Nr=b('<div class="legend-row svelte-ywuw22"><span class="sw svelte-ywuw22"></span> </div>'),Rr=b(`<div class="p-4 svelte-ywuw22"><h3 class="legend-h svelte-ywuw22">Health</h3> <!> <div class="sep svelte-ywuw22"></div> <h3 class="legend-h svelte-ywuw22">Lanes</h3> <div class="legend-row svelte-ywuw22"><span class="lane-swatch svelte-ywuw22"></span>Hosts — physical machines</div> <div class="legend-row svelte-ywuw22"><span class="lane-swatch svelte-ywuw22"></span>Containers — LXCs &amp; VMs</div> <div class="legend-row svelte-ywuw22"><span class="lane-swatch svelte-ywuw22"></span>Services — what you actually use</div> <div class="sep svelte-ywuw22"></div> <p class="hint svelte-ywuw22">Every service flows right from the machine that runs it. Hover any node to trace its
chain and blast radius — what breaks if it goes down. Click to open it in a window.
Dashed arcs are service-to-service dependencies.</p></div>`),Or=b('<div class="fleet flex h-full min-h-0 flex-col overflow-hidden rounded-lg border svelte-ywuw22"><div class="flex shrink-0 flex-wrap items-center gap-2 border-b bg-card/60 px-3 py-2 svelte-ywuw22"><!> <div class="ml-auto flex items-center gap-2 svelte-ywuw22"><!> <!></div></div> <div class="flex min-h-0 flex-1 svelte-ywuw22"><div class="stage relative min-w-0 flex-1 overflow-auto svelte-ywuw22"><div class="relative svelte-ywuw22"><button type="button" class="reset-layer svelte-ywuw22" aria-label="Clear selection"></button> <div class="pointer-events-none absolute inset-x-0 top-0 z-10 svelte-ywuw22"></div> <svg class="pointer-events-none absolute inset-0 svelte-ywuw22"></svg> <!></div></div> <div class="panel shrink-0 overflow-auto border-l bg-card/40 svelte-ywuw22"><!></div></div></div>'),Br=b('<div class="flex h-full items-center justify-center text-xs text-muted-foreground svelte-ywuw22">Failed to load graph</div>');function zr(v,s){Qe(s,!0);const d=()=>hs(Fs,"$liveEvents",S),[S,w]=Is();let O=ve(s,"search",3,""),y=ve(s,"selectedSlug",3,null);const W={healthy:"#3fb950",degraded:"#d29922",down:"#f85149",unknown:"#8b949e"},ae={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},he=["healthy","degraded","down","unknown"];let ne=Ve(null),Ge=Ve(!0);async function X(){L(Ge,!0),L(ne,await Vs({includeStatus:!0}),!0),L(Ge,!1)}zs(()=>(X(),Ds())),vs(()=>{const a=d()[0];a&&As(()=>{if(a.type.startsWith("entity.")||a.type.startsWith("relationship.")){X();return}if(qs(a)&&e(ne)){const n=pa(a);if(!n||!a.entity_id)return;const c=Ws(e(ne).nodes,a);L(ne,{...e(ne),nodes:c,health:{...e(ne).health??{},[a.entity_id]:n}},!0)}})});let F=Ve(null),le=Ve(!1),te=Ve(null),oe=null;function ft(a){oe&&(clearTimeout(oe),oe=null),L(F,a,!0)}function mt(){oe&&(clearTimeout(oe),oe=null)}function pt(){oe&&clearTimeout(oe),oe=setTimeout(()=>{L(F,null),oe=null},90)}function Pe(){oe&&(clearTimeout(oe),oe=null),L(F,null)}ga(()=>{oe&&clearTimeout(oe)});function me(a,n){var f;const c=(f=a==null?void 0:a.attributes)==null?void 0:f[n];return typeof c=="string"?c:typeof c=="number"?String(c):void 0}function x(a,n){var f;const c=(f=a==null?void 0:a.attributes)==null?void 0:f[n];return typeof c=="boolean"?c:void 0}function ie(a){var c,f;const n=((f=(c=e(ne))==null?void 0:c.health)==null?void 0:f[a.id])??a.health??"unknown";return n==="stale"?"degraded":he.includes(n)?n:"unknown"}function Y(a){return!a.state||a.state==="active"}const be=[16,214,470],Oe=[150,176,214],I=52,rt=42,He=40,it=40,P=m(()=>{const a=e(ne);if(!a)return null;const n=new Map;for(const t of a.nodes)Y(t)&&n.set(t.slug,t);const c=t=>{var i;return(i=n.get(t))==null?void 0:i.type},f=t=>{const i=c(t);return i==="lxc"||i==="vm"},G=t=>c(t)==="service",ge=new Map,De=new Map,Ne=new Map,Zt=new Map,Wt=new Map,Ft=new Map,Lt=new Map,Nt=new Set,ct=(t,i,M)=>{const B=t.get(i);B?B.push(M):t.set(i,[M])};for(const t of a.edges)switch(t.type){case"hosts":n.has(t.source)&&n.has(t.target)&&(ge.set(t.target,t.source),Nt.add(t.source));break;case"provides":n.has(t.source)&&n.has(t.target)&&(De.set(t.target,t.source),!f(t.source)&&!G(t.source)&&Nt.add(t.source));break;case"depends-on":n.has(t.source)&&n.has(t.target)&&(ct(Ne,t.source,t.target),ct(Zt,t.target,t.source));break;case"routes-to":n.has(t.target)&&Wt.set(t.target,t.source);break;case"configured-by":n.has(t.source)&&Ft.set(t.source,t.target);break;case"mounts":n.has(t.source)&&ct(Lt,t.source,t.target);break}const st=a.nodes.filter(t=>Y(t)&&t.type==="service"),Ye=a.nodes.filter(t=>Y(t)&&(t.type==="lxc"||t.type==="vm")),St=a.nodes.filter(t=>Y(t)&&Nt.has(t.slug)&&!f(t.slug)&&!G(t.slug)),es=t=>Ye.filter(i=>ge.get(i.slug)===t).length+st.filter(i=>De.get(i.slug)===t).length;St.sort((t,i)=>es(i.slug)-es(t.slug)||t.name.localeCompare(i.name));const ts=new Map(St.map((t,i)=>[t.slug,i]));Ye.sort((t,i)=>{const M=ts.get(ge.get(t.slug)??"")??999,B=ts.get(ge.get(i.slug)??"")??999;return M-B||t.name.localeCompare(i.name)});const je=new Map;Ye.forEach((t,i)=>je.set(t.slug,He+i*I));for(const t of St){const i=Ye.filter(M=>ge.get(M.slug)===t.slug);i.length&&je.set(t.slug,i.reduce((M,B)=>M+(je.get(B.slug)??0),0)/i.length)}const Rt=new Map;for(const t of st){const i=De.get(t.slug);Rt.set(t.slug,i&&je.has(i)?je.get(i):He)}st.sort((t,i)=>Rt.get(t.slug)-Rt.get(i.slug)||t.name.localeCompare(i.name));let T=He-I;for(const t of st){const i=Math.max(Rt.get(t.slug),T+I);je.set(t.slug,i),T=i}for(const t of St){if(je.has(t.slug))continue;const i=st.filter(M=>De.get(M.slug)===t.slug);je.set(t.slug,i.length?i.reduce((M,B)=>M+(je.get(B.slug)??He),0)/i.length:He)}const h=[],$=new Map,j={healthy:0,degraded:0,down:0,unknown:0},se=(t,i,M)=>{const B=ie(t);j[B]++;const U=Wt.get(t.slug),R=U?n.get(U):void 0,_e=U?(R==null?void 0:R.name)??U.replace(/^ingress:/,""):void 0,lt=R?x(R,"forward_auth"):void 0,gt=i==="service"?De.get(t.slug):ge.get(t.slug),Pt=(i==="container"?Lt.get(t.slug):Lt.get(gt??""))??[],wt=me(t,"role"),It=me(t,"lan_ip")??me(t,"public_ipv4"),is=me(t,"url");let Mt;if(i==="container"){const ss=me(t,"pve_id");Mt=`${t.type.toUpperCase()}${ss?" "+ss:""}${wt?" · "+wt:""}`}else i==="service"?Mt=_e??wt??t.slug:Mt=`${t.type}${It?" · "+It:""}`;const Ot={slug:t.slug,id:t.id,name:t.name,type:t.type,kind:i,health:B,lane:M,x:be[M],y:je.get(t.slug)??He,w:Oe[M],h:rt,meta:Mt,publicHost:_e,fauth:lt,role:wt,ip:It,url:is,provider:gt,deps:Ne.get(t.slug)??[],mounts:Pt,repo:Ft.get(t.slug)};return h.push(Ot),$.set(Ot.slug,Ot),Ot};St.forEach(t=>se(t,"host",0)),Ye.forEach(t=>se(t,"container",1)),st.forEach(t=>se(t,"service",2));const re=(t,i)=>{const M=$.get(t);return be[M.lane]+(i==="r"?Oe[M.lane]:0)},V=t=>$.get(t).y+rt/2,xe=[],Re=new Map;for(const t of Ye){const i=ge.get(t.slug);if(i&&$.has(i)){const M=re(i,"r"),B=V(i),U=re(t.slug,"l"),R=V(t.slug),_e=(M+U)/2;xe.push({d:`M${M},${B} C${_e},${B} ${_e},${R} ${U},${R}`,kind:"prov",s:i,t:t.slug}),ct(Re,i,t.slug)}}for(const t of st){const i=De.get(t.slug);if(i&&$.has(i)){const M=re(i,"r"),B=V(i),U=re(t.slug,"l"),R=V(t.slug),_e=(M+U)/2;xe.push({d:`M${M},${B} C${_e},${B} ${_e},${R} ${U},${R}`,kind:"prov",s:i,t:t.slug}),ct(Re,i,t.slug)}}for(const[t,i]of Ne)if($.has(t))for(const M of i){if(!$.has(M))continue;const B=re(t,"r"),U=V(t),R=re(M,"r"),_e=V(M),lt=Math.max(B,R)+34+Math.min(70,Math.abs(U-_e)*.32);xe.push({d:`M${B},${U} C${lt},${U} ${lt},${_e} ${R},${_e}`,kind:"dep",s:t,t:M})}const Ee=Math.max(Ye.length?(je.get(Ye[Ye.length-1].slug)??0)+I:0,st.length?(je.get(st[st.length-1].slug)??0)+I:0,He+I)+it,ke=be[2]+Oe[2]+84;return{nodes:h,bySlug:$,edges:xe,width:ke,height:Ee,counts:j,providesMap:Re,providedBy:new Map([...ge.entries(),...De.entries()].filter(([,t])=>$.has(t))),dependents:Zt,depsOf:Ne}});function Xe(a,n){var G;const c=new Set,f=[n];for(;f.length;){const ge=f.pop();for(const De of a.providesMap.get(ge)??[])((G=a.bySlug.get(De))==null?void 0:G.kind)==="service"&&c.add(De),f.push(De)}return c}function tt(a,n){const c=new Set,f=[...n];for(;f.length;){const G=f.pop();for(const ge of a.dependents.get(G)??[])c.has(ge)||(c.add(ge),f.push(ge))}return c}function Be(a,n){const c=a.bySlug.get(n),f=(c==null?void 0:c.kind)==="service"?new Set([n]):Xe(a,n),G=new Set([...f,...tt(a,f)]);return(c==null?void 0:c.kind)==="service"&&G.delete(n),G}function u(a,n){const c=[];let f=a.providedBy.get(n),G=0;for(;f&&G++<8;)c.push(f),f=a.providedBy.get(f);return c}function H(a,n){const c=new Set([n]);for(const G of u(a,n))c.add(G);const f=a.bySlug.get(n);if(f)for(const G of f.deps)c.add(G);for(const G of Be(a,n)){c.add(G);const ge=a.providedBy.get(G);ge&&c.add(ge)}return c}function C(a){const n=new Set;for(const c of a.nodes)if(c.health!=="healthy"){n.add(c.slug);for(const f of u(a,c.slug))n.add(f);for(const f of Be(a,c.slug)){n.add(f);const G=a.providedBy.get(f);G&&n.add(G)}}return n}function E(a,n){const c=new Set;for(const f of a.nodes)if(f.health===n){c.add(f.slug);for(const G of u(a,f.slug))c.add(G)}return c}const $e=m(()=>{const a=e(P);if(!a)return null;if(e(F)&&a.bySlug.has(e(F)))return H(a,e(F));if(e(le))return C(a);if(e(te))return E(a,e(te));const n=O().trim().toLowerCase();if(n){const c=new Set;for(const f of a.nodes)(f.slug.toLowerCase().includes(n)||f.name.toLowerCase().includes(n))&&c.add(f.slug);return c}return null});function ce(a){if(e(F)===a)return"sel";const n=e($e);return n?n.has(a)?"hl":"dim":""}function fe(a){const n=e($e);return n?n.has(a.s)&&n.has(a.t)?"hl":"dim":""}function we(a){s.onSelect(a)}function ze(){Pe(),L(le,!1),L(te,null),s.onSelect(null)}function Me(){Pe(),L(te,null),L(le,!e(le))}function Ue(a){Pe(),L(le,!1),L(te,e(te)===a?null:a,!0)}const p=m(()=>{var a;return e(F)&&((a=e(P))!=null&&a.bySlug.get(e(F)))?e(P).bySlug.get(e(F)):null}),g=m(()=>{const a=e(P);return!a||!e(p)?[]:[...Be(a,e(p).slug)].map(n=>a.bySlug.get(n)).filter(n=>!!n)}),J=m(()=>{const a=e(P);return!a||!e(p)?[]:u(a,e(p).slug).map(n=>a.bySlug.get(n)).filter(n=>!!n)}),N=m(()=>{const a=e(P);return!a||!e(p)?[]:(a.providesMap.get(e(p).slug)??[]).map(n=>a.bySlug.get(n)).filter(n=>!!n)}),A=m(()=>{const a=e(P);return!a||!e(p)?[]:e(p).deps.map(n=>a.bySlug.get(n)).filter(n=>!!n)}),pe=m(()=>{const a=e(P);return a?["down","degraded","unknown"].map(n=>({h:n,items:a.nodes.filter(c=>c.health===n)})).filter(n=>n.items.length):[]}),de=m(()=>{const a=e(P);return!a||!e(te)?[]:a.nodes.filter(n=>n.health===e(te))}),Q=m(()=>e(P)?e(P).nodes.filter(a=>a.health!=="healthy").length:0);var Te=Ie(),Z=K(Te);{var Ce=a=>{Et(a,{class:"h-full min-h-0"})},Le=a=>{var n=Or(),c=r(n),f=r(c);Fe(f,17,()=>he,at,(T,h)=>{var $=Ie(),j=K($);{var se=re=>{var V=hr();let xe;var Re=r(V),Ee=l(Re,2),ke=r(Ee),t=l(Ee);q(i=>{xe=as(V,1,"chip svelte-ywuw22",null,xe,{on:e(te)===e(h)}),Je(Re,`background:${W[e(h)]??""}`),_(ke,e(P).counts[e(h)]),_(t,` ${i??""}`)},[()=>ae[e(h)].toLowerCase()]),vt("click",V,()=>Ue(e(h))),o(re,V)};ee(j,re=>{e(P).counts[e(h)]&&re(se)})}o(T,$)});var G=l(f,2),ge=r(G);{let T=m(()=>e(le)?"default":"outline");ls(ge,{get variant(){return e(T)},size:"sm",class:"h-7 text-xs",onclick:Me,children:(h,$)=>{var j=fr(),se=K(j);wa(se,{class:"mr-1 size-3.5"}),o(h,j)},$$slots:{default:!0}})}var De=l(ge,2);{var Ne=T=>{ls(T,{variant:"ghost",size:"sm",class:"h-7 text-xs",onclick:ze,children:(h,$)=>{var j=pr(),se=K(j);ma(se,{class:"mr-1 size-3.5"}),o(h,j)},$$slots:{default:!0}})};ee(De,T=>{(e(le)||e(te))&&T(Ne)})}var Zt=l(c,2),Wt=r(Zt),Ft=r(Wt),Lt=r(Ft),Nt=l(Lt,2);Fe(Nt,21,()=>[["Hosts",e(P).nodes.filter(T=>T.kind==="host").length],["Containers",e(P).nodes.filter(T=>T.kind==="container").length],["Services",e(P).nodes.filter(T=>T.kind==="service").length]],at,(T,h,$)=>{var j=m(()=>_a(e(h),2));let se=()=>e(j)[0],re=()=>e(j)[1];var V=gr(),xe=r(V),Re=l(xe),Ee=r(Re);q(()=>{Je(V,`left:${be[$]??""}px;width:${Oe[$]??""}px`),_(xe,`${se()??""} · `),_(Ee,re())}),o(T,V)});var ct=l(Nt,2);Fe(ct,21,()=>e(P).edges,at,(T,h)=>{var $=wr();q(j=>{Dt($,"d",e(h).d),as($,0,`edge ${e(h).kind??""} ${j??""}`,"svelte-ywuw22")},[()=>fe(e(h))]),o(T,$)});var st=l(ct,2);Fe(st,17,()=>e(P).nodes,T=>T.slug,(T,h)=>{var $=yr();let j;var se=r($);{var re=ke=>{var t=_r(),i=r(t);{var M=R=>{ba(R,{class:"size-3"})},B=R=>{Ia(R,{class:"size-3"})},U=R=>{Wa(R,{class:"size-3"})};ee(i,R=>{e(h).fauth?R(M):e(h).fauth===!1?R(B,1):R(U,-1)})}q(()=>Dt(t,"title",e(h).publicHost+(e(h).fauth?" · forward-auth":e(h).fauth===!1?" · no auth gate":""))),o(ke,t)};ee(se,ke=>{e(h).publicHost&&ke(re)})}var V=l(se,2),xe=r(V),Re=l(V,2),Ee=r(Re);q(ke=>{j=as($,1,`node ${ke??""}`,"svelte-ywuw22",j,{svc:e(h).kind==="service","is-open":y()===e(h).slug,pulse:e(h).health==="down"}),Je($,`left:${e(h).x??""}px;top:${e(h).y??""}px;width:${e(h).w??""}px;height:${e(h).h??""}px;--nc:${W[e(h).health]??""}`),Dt($,"title",e(h).slug),_(xe,e(h).name),_(Ee,e(h).meta)},[()=>ce(e(h).slug)]),Bt("mouseenter",$,()=>ft(e(h).slug)),Bt("mouseleave",$,pt),Bt("focus",$,()=>ft(e(h).slug)),Bt("blur",$,pt),vt("click",$,ke=>{ke.stopPropagation(),we(e(h).slug)}),o(T,$)});var Ye=l(Wt,2),St=r(Ye);{var es=T=>{var h=mr(),$=l(r(h),4),j=r($),se=r(j),re=l(j,2),V=r(re),xe=l($,2);Fe(xe,17,()=>e(pe),at,(Re,Ee)=>{var ke=Hs(),t=r(ke),i=r(t),M=l(t,2);Fe(M,17,()=>e(Ee).items,at,(B,U)=>{var R=zt(),_e=r(R),lt=l(_e,2),gt=r(lt),Pt=l(lt,2),wt=r(Pt);q(()=>{Je(_e,`background:${W[e(U).health]??""}`),_(gt,e(U).name),_(wt,e(U).kind)}),vt("click",R,()=>we(e(U).slug)),o(B,R)}),q(()=>_(i,`${ae[e(Ee).h]??""} · ${e(Ee).items.length??""}`)),o(Re,ke)}),q(()=>{_(se,e(Q)),_(V,`${e(Q)===1?"entity":"entities"} not healthy`)}),o(T,h)},ts=T=>{var h=br(),$=l(r(h),2),j=r($),se=l($,2),re=r(se),V=r(re),xe=l(re,2),Re=r(xe),Ee=l(se,2),ke=r(Ee),t=r(ke),i=l(ke,2);Fe(i,17,()=>e(de),at,(M,B)=>{var U=zt(),R=r(U),_e=l(R,2),lt=r(_e),gt=l(_e,2),Pt=r(gt);q(()=>{Je(R,`background:${W[e(B).health]??""}`),_(lt,e(B).name),_(Pt,e(B).kind)}),vt("click",U,()=>we(e(B).slug)),o(M,U)}),q(()=>{_(j,ae[e(te)]),_(V,e(de).length),_(Re,e(de).length===1?"entity":"entities"),_(t,ae[e(te)])}),o(T,h)},je=T=>{var h=Lr(),$=r(h),j=r($),se=l($,2),re=r(se),V=l(se,2),xe=l(r(V),1,!0),Re=l(V,2),Ee=r(Re);let ke;var t=r(Ee),i=l(Ee,2),M=r(i),B=l(Re,2),U=l(r(B),2);{var R=k=>{var z=$r(),ue=l(r(z)),ye=r(ue);q(()=>_(ye,e(p).type)),o(k,z)};ee(U,k=>{e(p).kind==="container"&&k(R)})}var _e=l(U,2);{var lt=k=>{var z=xr(),ue=l(r(z)),ye=r(ue);q(()=>_(ye,e(p).role)),o(k,z)};ee(_e,k=>{e(p).role&&k(lt)})}var gt=l(_e,2);{var Pt=k=>{var z=kr(),ue=l(r(z)),ye=r(ue);q(()=>_(ye,e(p).ip)),o(k,z)};ee(gt,k=>{e(p).ip&&k(Pt)})}var wt=l(gt,2);{var It=k=>{var z=Sr(),ue=K(z),ye=l(r(ue)),Se=r(ye),Ae=l(ue,2),qe=l(r(Ae)),Ke=r(qe);q(()=>{_(Se,e(p).publicHost),_(Ke,e(p).fauth?"forward-auth gated":e(p).fauth===!1?"no auth gate":"public")}),o(k,z)},is=k=>{var z=Pr(),ue=l(r(z)),ye=r(ue);q(()=>_(ye,e(p).url)),o(k,z)};ee(wt,k=>{e(p).publicHost?k(It):e(p).url&&k(is,1)})}var Mt=l(wt,2);{var Ot=k=>{var z=Mr(),ue=l(r(z)),ye=r(ue);q(Se=>_(ye,Se),[()=>e(p).mounts.join(", ")]),o(k,z)};ee(Mt,k=>{e(p).mounts.length&&k(Ot)})}var ss=l(Mt,2);{var Us=k=>{var z=Tr(),ue=l(r(z)),ye=r(ue);q(()=>_(ye,e(p).repo)),o(k,z)};ee(ss,k=>{e(p).repo&&k(Us)})}var $s=l(B,2);{var js=k=>{var z=Cr(),ue=l(r(z),2);Fe(ue,17,()=>e(J),at,(ye,Se)=>{var Ae=zt(),qe=r(Ae),Ke=l(qe,2),bt=r(Ke),$t=l(Ke,2),Tt=r($t);q(()=>{Je(qe,`background:${W[e(Se).health]??""}`),_(bt,e(Se).name),_(Tt,e(Se).kind)}),vt("click",Ae,()=>we(e(Se).slug)),o(ye,Ae)}),o(k,z)};ee($s,k=>{e(J).length&&k(js)})}var xs=l($s,2);{var Ks=k=>{var z=Er(),ue=l(r(z),2);Fe(ue,17,()=>e(A),at,(ye,Se)=>{var Ae=zt(),qe=r(Ae),Ke=l(qe,2),bt=r(Ke),$t=l(Ke,2),Tt=r($t);q(()=>{Je(qe,`background:${W[e(Se).health]??""}`),_(bt,e(Se).name),_(Tt,e(Se).kind)}),vt("click",Ae,()=>we(e(Se).slug)),o(ye,Ae)}),o(k,z)};ee(xs,k=>{e(A).length&&k(Ks)})}var ks=l(xs,2);{var Xs=k=>{var z=Hs(),ue=r(z),ye=r(ue),Se=l(ue,2);Fe(Se,17,()=>e(N),at,(Ae,qe)=>{var Ke=zt(),bt=r(Ke),$t=l(bt,2),Tt=r($t),Qs=l($t,2),Zs=r(Qs);q(()=>{Je(bt,`background:${W[e(qe).health]??""}`),_(Tt,e(qe).name),_(Zs,e(qe).kind)}),vt("click",Ke,()=>we(e(qe).slug)),o(Ae,Ke)}),q(()=>_(ye,e(p).kind==="host"?"Hosts":"Provides")),o(k,z)};ee(ks,k=>{e(N).length&&k(Xs)})}var Ys=l(ks,2);{var Js=k=>{var z=Hr(),ue=l(r(z),2);Fe(ue,17,()=>e(g),at,(ye,Se)=>{var Ae=zt(),qe=r(Ae),Ke=l(qe,2),bt=r(Ke),$t=l(Ke,2),Tt=r($t);q(()=>{Je(qe,`background:${W[e(Se).health]??""}`),_(bt,e(Se).name),_(Tt,e(Se).kind)}),vt("click",Ae,()=>we(e(Se).slug)),o(ye,Ae)}),o(k,z)};ee(Ys,k=>{e(p).kind==="service"&&e(g).length&&k(Js)})}q(()=>{_(j,e(p).slug),_(re,e(p).name),Je(V,`--hc:${W[e(p).health]??""}`),_(xe,ae[e(p).health]),ke=as(Ee,1,"n svelte-ywuw22",null,ke,{warn:e(g).length>0}),_(t,e(g).length),_(M,`${e(p).kind==="service"?"downstream service":"service"}${e(g).length===1?"":"s"}
affected if this goes down`)}),o(T,h)},Rt=T=>{var h=Rr(),$=l(r(h),2);Fe($,17,()=>he,at,(j,se)=>{var re=Nr(),V=r(re),xe=l(V,1,!0);q(()=>{Je(V,`background:${W[e(se)]??""}`),_(xe,ae[e(se)])}),o(j,re)}),o(T,h)};ee(St,T=>{!e(p)&&e(le)?T(es):!e(p)&&e(te)?T(ts,1):e(p)?T(je,2):T(Rt,-1)})}q(()=>{Je(Ft,`width:${e(P).width??""}px;height:${e(P).height??""}px`),Dt(ct,"width",e(P).width),Dt(ct,"height",e(P).height)}),vt("click",Lt,ze),Bt("mouseenter",Ye,mt),Bt("mouseleave",Ye,pt),o(a,n)},nt=a=>{var n=Br();o(a,n)};ee(Z,a=>{e(Ge)&&!e(P)?a(Ce):e(P)?a(Le,1):a(nt,-1)})}o(v,Te),Ze(),w()}Bs(["click"]);var Dr=new Set(["$$slots","$$events","$$legacy","ref","checked","class"]);function Ar(v,s){Qe(s,!0);let d=ve(s,"ref",15,null),S=ve(s,"checked",15,!1),w=et(s,Dr);var O=Ie(),y=K(O);{let W=m(()=>Ht("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50",s.class));D(y,()=>Ba,(ae,he)=>{he(ae,At({"data-slot":"switch",get class(){return e(W)}},()=>w,{get ref(){return d()},set ref(ne){d(ne)},get checked(){return S()},set checked(ne){S(ne)},children:(ne,Ge)=>{var X=Ie(),F=K(X);D(F,()=>Aa,(le,te)=>{te(le,{"data-slot":"switch-thumb",class:"bg-background pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"})}),o(ne,X)},$$slots:{default:!0}}))})}o(v,O),Ze()}var qr=b('<div class="flex items-center gap-1.5"><!> <!></div> <span class="text-xs text-muted-foreground"> </span>',1),Wr=b('<div class="flex h-full flex-col gap-3 p-2"><div class="flex flex-wrap items-center gap-2"><!> <!> <div class="ml-auto inline-flex overflow-hidden rounded-md border"><!> <!></div></div> <div class="flex min-h-0 min-w-0 flex-1 flex-col"><!></div></div>');function Ur(v,s){Qe(s,!0);const d=()=>hs(Sa,"$wmState",w),S=()=>hs(Fs,"$liveEvents",w),[w,O]=Is();function y(){return typeof localStorage>"u"?"graph":localStorage.getItem("oikos-kb-view")==="table"?"table":"graph"}let W=Ve(us(y())),ae=Ve(""),he=Ve(null);function ne(u){L(W,u,!0),typeof localStorage<"u"&&localStorage.setItem("oikos-kb-view",u)}function Ge(u){L(he,u,!0),Ma(u)}vs(()=>{e(he)&&!d().windows[e(he)]&&L(he,null)});let X=Ve(us([])),F=Ve(!0),le=Ve(!1),te=Ve(null),oe=null;function ft(){return oe??(oe=ka()),oe}function mt(u,H){if(H==="service")return!0;let C=u.get(H);for(let E=0;C&&E<10;E++){if(C.name==="compute-entity")return!0;C=C.parent_type?u.get(C.parent_type):void 0}return!1}function pt(u,H){let C=0,E=u.get(H);for(;E!=null&&E.parent_type&&C<10;C++)E=u.get(E.parent_type);return C}async function Pe(u){const{entityTypes:H,relationshipTypes:C}=await ft(),E=new Map(H.map(g=>[g.name,g])),$e=C.filter(g=>g.cardinality!=="many-to-many"),ce=$e.map(g=>g.name),fe=new Map($e.map(g=>[g.name,g.cardinality])),we=new Map($e.map(g=>[g.name,pt(E,g.source_type)])),ze=new Set(u.map(g=>g.slug)),Me=await Vs({relType:ce}),Ue=((Me==null?void 0:Me.edges)??[]).filter(g=>fe.has(g.type)&&ze.has(g.source)&&ze.has(g.target)).map(g=>{const[J,N]=fe.get(g.type)==="many-to-one"?[g.source,g.target]:[g.target,g.source];return{child:J,parent:N,weight:we.get(g.type)??0}}),p=new Map;for(const{child:g,parent:J,weight:N}of Ue){const A=p.get(g);(!A||N>A.weight)&&p.set(g,{parent:J,weight:N})}return new Map([...p].map(([g,{parent:J}])=>[g,J]))}async function me(){L(F,!0);const{entityTypes:u}=await ft(),H=new Map(u.map(E=>[E.name,E])),C=(await xa()).filter(E=>mt(H,E.type));L(te,await Pe(C),!0),L(X,C,!0),L(F,!1)}zs(()=>(me(),Ds())),vs(()=>{const u=S()[0];if(u){if(u.type.startsWith("entity.")){me();return}qs(u)&&As(()=>L(X,Ws(e(X),u),!0))}});const x=m(()=>{const u=e(ae).trim().toLowerCase();return e(X).filter(H=>!(u&&!H.slug.toLowerCase().includes(u)&&!H.name.toLowerCase().includes(u)||!e(le)&&H.state&&H.state!=="active"))});var ie=Wr(),Y=r(ie),be=r(Y);$a(be,{placeholder:"Filter / highlight by slug or name…",class:"h-8 max-w-xs text-xs",get value(){return e(ae)},set value(u){L(ae,u,!0)}});var Oe=l(be,2);{var I=u=>{var H=qr(),C=K(H),E=r(C);Ar(E,{id:"show-inactive",get checked(){return e(le)},set checked(we){L(le,we,!0)}});var $e=l(E,2);Pa($e,{for:"show-inactive",class:"text-xs font-normal text-muted-foreground",children:(we,ze)=>{var Me=xt("Inactive");o(we,Me)},$$slots:{default:!0}});var ce=l(C,2),fe=r(ce);q(()=>_(fe,`${e(x).length??""} of ${e(X).length??""}`)),o(u,H)};ee(Oe,u=>{e(W)==="table"&&u(I)})}var rt=l(Oe,2),He=r(rt);{let u=m(()=>e(W)==="graph"?"secondary":"ghost");ls(He,{get variant(){return e(u)},size:"sm",class:"h-8 rounded-none border-0 px-2",onclick:()=>ne("graph"),title:"Graph view","aria-label":"Graph view",children:(H,C)=>{Ga(H,{class:"size-3.5"})},$$slots:{default:!0}})}var it=l(He,2);{let u=m(()=>e(W)==="table"?"secondary":"ghost");ls(it,{get variant(){return e(u)},size:"sm",class:"h-8 rounded-none border-0 px-2",onclick:()=>ne("table"),title:"Table view","aria-label":"Table view",children:(H,C)=>{ja(H,{class:"size-3.5"})},$$slots:{default:!0}})}var P=l(Y,2),Xe=r(P);{var tt=u=>{zr(u,{get selectedSlug(){return e(he)},onSelect:Ge,get search(){return e(ae)}})},Be=u=>{vr(u,{get entities(){return e(x)},get loading(){return e(F)},get selectedSlug(){return e(he)},onSelect:Ge,get childToParent(){return e(te)}})};ee(Xe,u=>{e(W)==="graph"?u(tt):u(Be,-1)})}o(v,ie),Ze(),O()}export{Ur as default};